[Tinyos Core WG] TKN15.4

Jan Hauer jan.hauer at gmail.com
Wed May 21 07:56:27 PDT 2008


As discussed in the last conference call, here is an update on our
802.15.4 implementation, on how the code is structured and how it
could be integrated into the T2 core.

The main part is a platform-independent 802.15.4-2006 MAC
implementation, structured into a set of about 20 components (a total
of 5k lines of code), providing the standard 15.4 interfaces slightly
adapted to the T2 design philosophy (e.g. using message_t and buffer
swapping). The implementation currently includes the beacon-enabled
mode (I'm working on the non-beacon-enabled mode) and almost all of
the functionality described in the standard, except GTS and security.
I have developed it on telosb and plan to port it to tossim soon.

The MAC has some requirements (uses a set of interfaces) that I found
"problematic" to implement with the current T2 codebase, at least on
the telosb platform which I used for development: it requires
Alarm/Timer interfaces with a precision of a 15.4 symbol (62.500Hz in
the 2.4 GHz band) and it requires radio interfaces that allow to
precisely control when a packet is transmitted. These requirements are
caused by the fact that the 15.4 standard expresses backoffs in symbol
times and in the slotted CSMA-CA (beacon-enabled mode) packets must be
sent exactly on backoff boundaries defined through the previous
beacon. For telosb we have developed a small 62.5Khz timer-board that
can be attached to the telosb expansion header, but I have not yet
checked whether other T2 platforms might be able to generate 62.5Khz
Alarms (+-40ppm accuracy) without additional hardware. As for the
radio interfaces: basically these are async interfaces for Tx/Rx/Off,
where the Tx interface allows to specify the absolute time (t0+dt)
when the packet is to be transmitted.

Ideally a radio driver providing these Tx/Rx/Off interfaces to the
15.4 MAC should just be a wrapper that sits on top of an existing T2
radio stack. For the CC2420, however, I had to slightly modify the
current CC2420 radio stack/interfaces to achieve the necessary timing
- maybe a future radio TEP could define interfaces (or guidelines) for
structuring radio stacks, so that implementation of
platform-independent MACs can be made easier and we can avoid code
duplication.

Finally, in order to use the MAC there needs to be some
platform-specific glue code (a configuration) to wire the MAC
implementation to the particular radio driver and to the Alarm/Timer
interfaces (and also to define some constants like guard times, etc.).

I have successfully done some basic interoperability tests of our 15.4
implementation (we call it "TKN15.4") running on a telosb with TIMAC
running on a CC2430DB (TIMAC is a commercial 15.4 implementation by
Texas Instruments). It will probably take me another 2 weeks to finish
the implementation/tossim port and perform some more evaluation;
meanwhile I plan to write a TEP on TKN15.4.

However, I think we have not yet established rules on how a
platform-independent MAC would be put into T2 core. I would suggest
the following:

+ the platform-independet MAC implementation/interfaces go into
tos/lib/mac/tkn154/
+ the platform-specific glue code goes into tos/platforms/<platform>/tkn154/
+ test apps go into apps/tests/tkn154
+ I'm not sure, however, where the modified CC2420 radio driver would go...

Jan


More information about the Tinyos-2.0wg mailing list