Hallo,
ich bin gerade an der Portierung von uIP auf einen LPC2387 und stehe vor
einem Problem.
uIP kopiert empfangene Daten in einem Array uint8_t uip_buf[LEN]. In der
main-Schleife wird dann folgendermaßen auf dieses Array zugegriffen, um
die Art des empfangenen Pakets zu bestimmen:
1 | if((uint16_t)BUF->type == htons(UIP_ETHTYPE_IP))
|
wobei BUF so definiert ist:
1 | #define BUF ((struct uip_eth_hdr *)&uip_buf[0])
|
Schließlich noch uip_eth_hdr:
1 | struct uip_eth_hdr {
|
2 | struct uip_eth_addr dest;
|
3 | struct uip_eth_addr src;
|
4 | u16_t type;
|
5 | };
|
uip_eth_addr sind jeweils 6 uint6_t Werte für die MAC-Adressen.
Wenn im uip_buf folgendes enthalten ist:
1 | 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
|
2 | 0xAA,0xAA,0xAA,0xAA,0xAA,0xAA,
|
3 | 0x08,0x06
|
Dann gehe ich davon aus, dass BUF->type mir 0x0806 liefert. Das tut es
aber nicht, BUF->type gibt mir nur 0x08 zurück, das zweite byte wird
anscheinend nicht gelesen.
Kommt jemand dieses Problem bekannt vor?
Vielen Dank,
Laurenz