Fabio Stano

6LowPan  over mc1322x

Discussion created by Fabio Stano on Jul 4, 2011
Latest reply on Jul 20, 2011 by Fabio Stano

I am trying to use a 6lowpan protocol over the ieee 802.15.4.

With the dongle sniffer and WireShark i saw the packet "in the air" but the coordinator doesn't receive it correctly.

It receive the first part of the packet that is the header of 802.15.4 correctly but the 6lowpan header and the payload(sensor data)  are random value. Also after the first 5 packet the end device stop transmitting data.


My question is simple, witch is the problem?


If the packet is longer than the standard the coordinator's buffer is not enough?


This is my code, we fill the packet with a function that return the pointer to the 6lowpan struct. I fill the fields with default value. But I think that the error is in the coordinator source code because the packet is correctly formed.



typedef struct pkt_6LowPan_t


/*Header Ipv6*/
 uint8_t   dispatch;                    /*Byte iniziale 6LP normalmente vale 01000001 per uncompressed ipv6*/
 uint8_t   version_traffic_flow[4];     /*Version traffic e flow label*/
 uint8_t   payload_len[2];              /*lunghezza pacchetto*/
 uint8_t   next_header;                 /*tipo header successivo*/
 uint8_t   hop_limit;                   /*numero di hop massimi (serve nel routing)*/

 long int   srcdestaddress[8];

 //uint8_t p6Msdu[8];

} pkt6LowPan_t;            /*definizione del puntatore all'inizio del pacchetto, inizializzato a null*/


 // Type: gMcpsDataInd_c,
typedef struct mcpsDataInd_tag {
  uint8_t  dstAddr[8];    // First 0/2/8 bytes is the address as defined by dstAddrMode
  uint8_t  dstPanId[2];   // 16 bit word converted to little endian byte array
  uint8_t  dstAddrMode;
  uint8_t  srcAddr[8];    // First 0/2/8 bytes is the address as defined by srcAddrMode
  uint8_t  srcPanId[2];   // 16 bit word converted to little endian byte array
  uint8_t  srcAddrMode;
  uint8_t  msduLength;    // 0-102 (101?)
  uint8_t  mpduLinkQuality;
  bool_t   securityUse;
  uint8_t  aclEntry;
  pkt6LowPan_t p6LowPan;
  uint8_t  *pMsdu;        // Data will start at this address inside the message.
} mcpsDataInd_t;




Thanks to all.