Geoffrey Mainland: TinyOS
Much of my past research dealt with sensor networks, so I spent a great deal of time working with TinyOS. I no longer work with TinyOS, so the software here is becoming increasingly out of date. You're welcome to use it as you see fit (and in accordance with the included license), but I'm afraid I can't offer active technical support.
Flows
Flows is the multi-hop publish/subscribe routing protocol for sensor networks that is used in Flask. The goal of the Flows protocol was not to come up with a new protocol per se, but to provide a specific application interface to help support macroprogramming systems. A visualization application is included that allows interactive control of applications using the Flows protocol as they are run on real hardware. This tools is written in Python and requires py-gtk.
This code requires NesC 1.2 and a version of TinyOS that supports NesC 1.2 (currently it is built with TinyOS 1.1.15).
The flow code is available via subversion from:
Fibers
Fibers allow a limited form of cooperative multi-threading on the TinyOS platform in which there can be a single blocking task. BlinkFiber is a version of Blink adapted to use fibers.
Abstract Regions
My implementation of abstract regions from our NSDI '04 paper includes a version of GPSR built on abstract regions, and is available here. Matt Welsh has a separate implementation.
TinyOS on FreeBSD
Because my operating system of choice is FreeBSD, I've collected some hints on
using TinyOS under FreeBSD. I'd aslso like to enter my own personal plea
to PLEASE use $(MAKE) in makefiles instead of
invoking make directly! Remember, GNU make is not always
named make!
FreeBSD ports for TinyOS Tools
I've made FreeBSD ports of most of the TinyOS tools for both the AVR and
MSP430 platforms. They are available here:
FTDI on FreeBSD
The Telos motes have given me a lot of trouble. FreeBSD has an FTDI driver,
but it consistently dropped bytes for me so I couldn't reprogram any
devices. The ucom.c patch below mostly fixes the problem for me,
but undoubtedly breaks other things (just not anything I care about
yet). Telos motes will still sometimes wedge, but unplugging them and plugging
them back in usually gets them to work again. Sometimes manually resetting the
motes is also required.
Note: FreeBSD 8.0 has a new USB stack. Hopefully this has corrected
the ucom issue, but I have not checked. In any event, the patch
here will not work with FreeBSD 8.0 or later.