Sensor network clustering and data aggregation (iHEED) ------------------------------------------------------ Author: Ossama M. Younis (oyounis@cs.purdue.edu). Affiliation: Purdue University, Department of Computer Science. First release: January 10, 2005. --------------------------------------------------------------------------- The provided code extends TinyOS v.1.1 (http://www.tinyos.net). Below is a description of the modified files and a description of the modifications. 1) tos/interfaces/RouteControl.nc: defines new functions for declaring if the node is a cluster head or is currently in a clustering process. 2) tos/interfaces/EnergyControl.nc: defines functions for for tracking energy consumption of the mote. 3) tos/lib/Route/MultiHop.h: defines CLUSTERING_ON to enable node clustering 4) tos/lib/Route/MultiHopRouter.nc: binds the energy controller and clustering timers to their corresponding components. 5) tos/lib/Route/MultiHopEngineM.nc: energy control and packet capture if the node is a cluster head 6) tos/lib/Route/MultiHopLEPSM.nc: link estimation and parent selection for tree routing. Implements the main clustering process of the HEED algorithm. 7) apps/surge.h: extends the SurgeMsg fields to include the node remaining power, overhead, and the neighboring nodes that are still alive 8) apps/Surge.nc: for energy control and packet interception 9) apps/SurgeM.nc: the main application that uses multi-hop routing and data aggregation. A cluster head aggregates the data it receives before forwarding it on the routing tree. The routing tree is constructed only on the cluster head overlay