The ability to incorporate low-power, wireless communication into embedded devices gives rise to a new genre of embedded software
that is distributed, dynamic, and adaptive. This paper describes the network-centric approach to designing software for highly
constrained devices embodied in TinyOS. It develops a tiny Active Message communication model and shows how it is used to
build non-blocking applications and higher level networking capabilities, such as multihop ad hoc routing. It shows how the
TinyOS event-driven approach is used to tackle challenges in implementing the communication model with very limited storage
and the radio channel modulated directly in software in an energy efficient manner. The open, component-based design allows
many novel relationships between system and application.1