Actor-Oriented Programming for Wireless Sensor Networks


Elaine Cheong and Edward A. Lee

In this project, we are investigating an actor-oriented approach to programming wireless sensor network applications with complex event sequences. Existing approaches to programming wireless sensor networks can be divided into four layers. The bottom-most layer is the operating system approach. Examples include TinyOS, SOS, Linux, .NET, and BTNut. In this layer, the focus is to provide basic programming abstractions to allow the program to run on the sensor node hardware. The next layer up is the node-centric approach, examples of which include Maté, SNACK, Token Machine Language, and the Object State Model. Software in this layer runs on a single node on top of the operating system, and more abstract programming models are used, which makes programming easier for the user. The third layer is the middleware approach, including examples such as directed diffusion, abstract regions, Hood, and IDSQ. The middleware layer starts to include programming abstractions that allow the user to address multiple nodes. The top-most layer, called macroprogramming, allows the user to create an application by programming the wireless sensor network as a whole, rather than programming individual nodes separately. Examples include TinyDB (database), Agilla (mobile agent), and Regiment (stream operator/functional language). Current macroprogramming approaches are insufficient for wireless sensor network applications with complex event sequences. With TinyDB, the database view only gives the programmer data collection operators. With Agilla, the mobile agent approach degenerates to a node-centric program for static problems. With Regiment, the purely functional approach makes it difficult to store state. Our hypothesis is that an actor-oriented programming model will easily allow a user to compose a set of actors to react to complex event sequences. We can choose the communication model between actors to best fit the target application. We propose a four layer approach, using the terminology introduced above. In the top-most layer, we are investigating developing an actor-oriented macroprogramming language using a visual programming environment like Viptos. Implementations of the actors in this language can then be integrated with existing middleware such as Hood to form the middleware layer. The macroprogramming language will eventually be compiled down to run on individual nodes. We plan to use galsC, an actor-oriented node-centric programming language, as the target language [1]. galsC essentially runs on top of TinyOS, which forms the bottom-most layer.

E. Cheong and J. Liu, " galsC: A Language for Event-Driven Embedded Systems," Proc. Design, Automation and Test in Europe (DATE), Munich, Germany, March 7-11, 2005.