  We propose a simple and effective tool for the expression of tasks such as
cross-layer optimization strategies or sensors-related applications. The
approach is based on what we refer to as "reflective and refractive variables".
Both types of variables are associated with external entities, e.g. sensors or
actuators. A reflective variable is a volatile variable, that is, a variable
that might be concurrently modified by multiple threads. A library of threads
is made available, each of which interfaces a set of sensors and continuously
update the value of a corresponding set of sensors. One such thread is "cpu",
which exports the current level of usage of the local CPU as an integer between
0 and 100. This integer is reflected into the integer reflective variable cpu.
A refractive variable is a reflective variable that can be modified. Each
modification is caught and interpreted as a request to change the value of an
actuator. For instance, setting variable "tcp_sendrate" would request a
cross-layer adjustment to the thread interfacing the local TCP layer entity.
This allows express in an easy way complex operations in the application layer
of any programming language, e.g. plain old C. We describe our translator and
the work we are carrying out within PATS to build simple and powerful libraries
of scripts based on reflective and refractive variables, including robotics
applications and RFID tags processing.
