Senstools provides a small set of MAC layers implementations, as described below. They are designed OS-free, executing mainly on interrupt routines for timing purpose, but may be integrated in C-based OSes (e.g. FreeRTOS).
So far, these implementations are designed for the CC1100 radio chip, whose driver is provided in the wsn430-drivers package (see the drivers page), and they use the DS2411 for address generation and the timerB of the MSP430 for the timings.
The Carrier-Sense Multiple Access (CSMA) MAC implementation is a general-purpose low-latency non-energy-optimized MAC layer.
All the nodes in the network always have their radio chip in reception mode. When a node wants to send a data packet, it will check if the radio channel is active (i.e. data is being transmitted by another node), if it is a random backoff is waited before repeating the same procedure, if the channel is detected as free, the node effectively sends the packet on the air.
The implementation provides user-defined number of send retries before dropping packet, acknowledgment of the receiver upon packet reception.
The XMAX protocol is a preamble-sampling low-power duty-cycled MAC protocol.
When using this MAC implementation, the nodes in the network spend only a small part of their time listening to the radio channel. If they detect some activity they wake up, otherwise the go back to sleep. When a node wants to send a data packet to another node, it will repeatedly send a preamble frame and listen for a preamble acknowledgment, until an acknowledgment is received.
The destination node, during its periodic wake up, should receive one preamble frame, recognize its address in the destination field, and send an acknowledgment frame.
The sending node, upon reception of the preamble ACK, sends the data packet. The destination node after receiving the data packet, sends a data ACK, to tell the sender the transaction is successful.
In order to send broadcast messages, a node sends the preamble frames during a complete listening period, in order to wake all the neighbor nodes, then sends the data packet. No ACK is transmitted after the broadcast.
Here you can find the archives history and download them: