We are pursuing a new approach to programming sensor networks that significantly raises the level of abstraction over today's practice. The critical change is one of perspective: rather than writing programs from the point of view of an individual node in the network, programmers implement a central program that conceptually has access to the entire network. This pushes to the compiler the task of producing equivalent node-local programs that implement this behavior.In this poster, we outline the design of the Kairos programming language, its compiler, and its runtime system. The Kairos language extends the C language, and it includes new language constructs that allow programmers to declaratively access node-local state within the network and to specify simple forms of concurrent execution. The Kairos compiler employs a novel program analysis to automatically compile Kairos programs to node-local programs written in nesC. Finally, the runtime system executes these node-local programs in an energy-efficient manner on top of TinyOS on the Berkeley motes. It also employs novel locking and deadlock-detection algorithms to ensure serializability in the presence of concurrency.
document