|
Written by Adam Dunkels,
Monday, 25 February 2008 |
|
Many have asked for it, and here it is: the code for the Chameleon architecture of the Rime stack, Contiki's communication stack for low-power radios. The purpose of Chameleon is to separate the header processing from the Rime protocol logic. This makes it possible to have packet headers that are independent of the specific protocols and the protocol layering. The Chameleon code is a rewrite of the code for our SenSys 2007 paper and as I committed it only last night, it currently (a few hours after the commit) is not particularly well-tested.
Chameleon breaks out packet header construction and parsing from the Rime protocols into separate header processing modules. Instead of having each protocol create its own part of the packet header, protocols use so-called packet attributes. Packet attributes are abstract representations of the information found in packet headers: addresses, packet types, sequence numbers, etc. Before sending a packet, a Chameleon header processing module creates a packet header from the packet attributes. The same Chameleon module parses incoming packets and creates packet attributes from the header.
The details are in our SenSys 2007 paper:
Adam Dunkels, Fredrik Osterlind, Zhitao He. An Adaptive Communication Architecture for Wireless Sensor Networks. In Proceedings of the Fifth ACM Conference on Networked Embedded Sensor Systems (SenSys 2007), Sydney, Australia, November 2007.
Slides from a presentation based on the above paper.
The code is in the core/net/rime/ directory: http://contiki.cvs.sourceforge.net/contiki/contiki-2.x/core/net/rime/
|