[Tinyos-help] Documentation regarding exact contents of the MAC
Protocol Data Unit frame
Pedro Almeida
pedralm at gmail.com
Tue Jun 12 17:22:41 PDT 2007
Thank you, Steve McKown and Alexander Becher for your replies.
Thanks to your help I more or less figured out how many bytes there were
from the Address Information to be included in the MAC Header.
According to:
typedef nx_struct cc2420_header_t {
nxle_uint8_t length;
nxle_uint16_t fcf;
nxle_uint8_t dsn;
nxle_uint16_t destpan;
nxle_uint16_t dest;
nxle_uint16_t src;
/** I-Frame 6LowPAN interoperability byte */
#ifdef CC2420_IFRAME_TYPE
nxle_uint8_t network;
#endif
nxle_uint8_t type;
} cc2420_header_t;
I then have 9 bytes from the MHR, adding to 1 from length (PHR) and
the 5 from the Synchronization Header
(SHR), assuming (I don't think I'm mistaken here) the I-frame is not in use,
giving a total of 15 bytes. The type byte is include in the payload
(according to Steve).
The payload, from the TestNetwork application, is
typedef nx_struct TestNetworkMsg {
nx_am_addr_t source;
nx_uint16_t seqno;
nx_am_addr_t parent;
nx_uint16_t metric;
nx_uint16_t data;
nx_uint8_t hopcount;
nx_uint16_t sendCount;
nx_uint16_t sendSuccessCount;
} TestNetworkMsg;
since nx_am_addr_t is 2 bytes, this struct is 15 bytes. Adding the 1 from
the type (as seen above), there's 16 bytes in payload.
Since
typedef nx_struct cc2420_footer_t {
} cc2420_footer_t;
and according to Steve, "The current radio stack has the cc2420 generate the
FCS (crc) automatically", so I presume it's not included.
This totals 31 bytes, and I read 32! If FCS was indeed included (2 bytes),
i'd get 33 bytes!!
Please notice i'm using a representation such as this
http://www.eng.yale.edu/enalab/courses/eeng460a/homeworks/hw1_results/dataframe.gifto
try and figure it out.
This application uses CTP. Can it have anything to do with it? According to
TEP-123 (http://www.tinyos.net/tinyos-2.x/doc/html/tep123.html),
The CTP data frame format is as follows (check the URL for correct
formatting):
1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|P|C| reserved | THL |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ETX |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| origin |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| seqno | collect_id |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| data ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
But I don't know how to understand that, so it doesnt help me much.
Also, I don't understand why the frame starts and ends with 0x7E. Is 7E both
preamble and last byte in payload?
Here's one example sequence again:
7E 45 00 FF FF 00 00 13 00 EE 00 01 00 00 00 07 80 EE 00 07 00 80 00 00 00
00 20 00 00 53 63 7E
I believe the EE is the Collection ID, as seen from TestNetworkC.h,
which might relate to the CTP frame
(http://www.tinyos.net/tinyos-2.x/apps/tests/TestNetwork/TestNetworkC.h), but
I'm not sure that helps. The FF FF could also be from, but I can't be sure:
call UARTSend.send(0xFFFF, recvPtr, call Receive.payloadLength(msg) + 4) ==
SUCCESS)
Many thanks and sorry for the confusing posts!
Hope you help me figure this out byte by byte and make sense out of it.
Very best regards,
Pedro
/**
* CC2420 Packet Footer
*/
typedef nx_struct cc2420_footer_t {
} cc2420_footer_t;
On 6/11/07, Steve McKown <rsmckown at yahoo.com> wrote:
>
> On Friday 08 June 2007 13:21, Pedro Almeida wrote:
> > Hello;
> >
> > I'm trying to look for documentation where I can understand the exact
> > contents, byte by byte, of the MPDU. I've looked into the TEPs and the
> > source files themselves, butI wasn't completely clear.
> >
> > I'm using now the TestNetwork demo, where I receive 32 bytes per
> message,
> > of which I know little about, except for the contents of the message_t
> > itself:
> >
> > typedef nx_struct TestNetworkMsg {
> > nx_am_addr_t source;
> > nx_uint16_t seqno;
> > nx_am_addr_t parent;
> > nx_uint16_t metric;
> > nx_uint16_t data;
> > nx_uint8_t hopcount;
> > nx_uint16_t sendCount;
> > nx_uint16_t sendSuccessCount;
> > } TestNetworkMsg;
> >
> > That are not, by far, 32 bytes.
> > So far I understood the MPDU is made of
> >
> > 2 bytes - Frame Control
> > 1 byte - Data Sequence Number
> > 4 to 20 bytes - Address Information
> > n bytes - Data Payload
> > 2 bytes - Frame Check Sequence
> >
> > which adds 5 bytes of the SHR and 1 byte of the PHR. So what exactly are
> > those 32 bytes??? Which ones are the payload (MSDU) and which ones are
> not
> > (and what are they?)?
> >
> > An example of the 32 bytes is as follows:
> >
> > 7E 45 00 FF FF 00 00 13 00 EE 00 01 00 00 00 07 80 EE 00 07 00 80 00 00
> 00
> > 00 20 00 00 53 63 7E
>
> The data above looks like an active message (AM) delivered via a serial
> physical layer. The hint are the 0x7E bytes, which are sync bytes. If
> this
> output came from the PC, then you should be able to map it to the
> serial_packet_t in $TOSDIR/lib/serial/Serial.h. The payload are delivered
> within the frame appropriate for the link on which the data is
> sent. Hence,
> one sees the serial headers and not the radio headers.
>
> I haven't played with Collection or the TestNetwork app, so I can't help
> out
> there. But I can provide some info on how the CC2420 component populates
> the
> 802.15.4 compatible frame. You can see the mapping in the cc2420_header_t
> structure in $TOSDIR/chips/cc2420/CC2420.h. The physical radio frame
> looks
> like this:
>
> preamble + sfd + cc2420_header_t + app_data + FCS (crc)
>
> In terms of 802.15.4, the second field of cc2420_header_t, fcf, is the
> first
> field of the MAC header. The last field of cc2420_header_t, type, is
> actually part of the MAC payload. The current radio stack has the cc2420
> generate the FCS (crc) automatically.
>
> In terms of addressing, short addresses with the 802.15.4 PAN ID
> Compression
> is set, so the address info consists of pan_id + dest_addr + source_addr.
> You can see these fields in the cc2420_header_t structure. The fcf is set
> in
> CC2420CsmaP.nc's Send.send() implementation, where length, dsn and source
> are
> also set (destination has already been set in the header by this time).
>
> All the best,
> Steve
>
> >
> > Help!
> >
> > Thank you!!!
> >
> > Pedro
> >
> >
> > !DSPAM:4669af84166828120612385!
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.millennium.berkeley.edu/pipermail/tinyos-help/attachments/20070613/b9ee1e64/attachment.htm
More information about the Tinyos-help
mailing list