PowWow Software Stack

PowWow distribution includes a generic software architecture using event-driven programming and organized into protocol layers (PHY, MAC, LINK, NET and APP). The software is based on Contiki, and more precisely on the Protothread library which provides a sequential control flow without complex state machines or full multi-threading.

RICER Media Access (MAC) Protocol
As listening radio channel was identified as the highest battery consumption function, PowWow uses RICER protocol proposed by UC Berkeley to reduce the time spent in radio reception (RX) mode.

This protocol consists in cycled rendez-vous initiated by a wake-up beacon from potential receivers. Thanks to this method, nodes are sleeping most of the time, hence saving energy.

RICER protocol
A transmission cycle using RICER protocol

Multi-Hop Transmissions
Multi-Hop transmission principle
In radio transmission, the transmission (TX) power increases exponentially with the distance between source and destination nodes. A multi-hop strategy coupled with an adaptive transmit power increases transmit efficiency reducing long range communications. All nodes in network are both sensors (information sinks) and routing devices.

Geographical routing
For multi-hop transmissions, PowWow uses a geographical routing protocol. This protocol was chosen because it is very simple and does not need extra-communications to route a message (except an initial neighborhood  searching).
Protothread library

#include "pt.h"

struct pt pt;
struct timer timer;

PT_THREAD(example(struct pt *pt))

while(1) {
if(initiate_io()) {
io_completed() ||

Protothreads are lightweight stack-less threads designed for severely memory constrained systems, such as small embedded systems. Protothreads provide linear code execution for event-driven systems implemented in C. They provide sequential flow of control without complex state machines or full multi-threading.

Applications Example 1: Temperature Monitoring
A temperature monitoring application is provided for demonstration purpose. It consists in periodic temperature reports routed from each node to the base station. The latter prints all received reports on serial link to PC. Then a Matlab application generates temperature curves and statistics for a user-friendly graphical view.

temperature monitoring

Applications Example 2: Motion Tracking of Mobile Nodes