The following text is taken from "FACILITATING THE INTERNET OF THINGS WITH POLICY PROGRAMMING NSERC USRA SUMMER 2013 RESEARCH & DEVELOPMENT SUMMATIVE REPORT" by Daniel Smullen.
Policy Discovery Component for Autonomic Distributed Systems on the TinyOS Platform
A new application concept (dubbed SupportDiscovery) would incorporate a policy discovery component that enables the Finger2 engine to perform reflection and report on what device components, events, and tasks are available for policy programming. The basic functionality would take stock of what events and actions are wired into Finger2, and report on these to developers through the existing UDP shell. The result is the capability of building systems that use policies for better self-managing autonomic systems, as devices are aware of the capabilities of the other devices on the same network.
Early iterations of the SupportDiscovery concept need not incorporate reflection. Simply allowing policy developers who write the tinyOS binaries access to a file stored in memory would give them the ability to convey what events and actions they decide to make available. The component would simply relay this data to the UDP shell via Finger2.
One possible methodology enabling reflection to take place would include code annotations that indicate which components, events, and actions are to be wired into the policy programming core. Subsequently, these events and actions would be collected and written into the internal storage at compile time, allowing the policy programming that works on top of this underlying nesC code to augment it with certain Object Oriented Programming concepts like information hiding. While information hiding would not exist within the underlying application binary, policy programming that uses this underlying codebase would fully implement information hiding, allowing policies to be retrofitted with a privileged operation aspect.
Implementing these code annotations would likely require an intermediary step to occur in the make tool chain which occurs in the normal tinyOS application build process. Parsing and removing the annotations prior to code compilation would be necessary in order to preserve the existing chain’s architecture. This parsing and removal process would then need to add new nesC code which contains the required data structures for safe storage in internal memory.
Toward an Interoperable Policy Definition Language (PDL)
A major advancement in Finger2IPv6 is the ability to interoperate with desktop programming environments. The creation of a standard for policy programming languages that use the existing functioning template for policies inside Finger2IPv6 could enable a new programming language of sorts, a Policy Definition Language, to be created. By augmenting the Policy IDE with the ability to read from the SupportDiscovery component, policies which are created could be validated against the hidden/authorized events and tasks that a mote has. This would result in a fully-fledged policy creation, debugging, and validation chain which could spur the advancement of better policy programming applications.