README for Pampa ------------------------------------------------------------------------------- Description: ------------------------------------------------------------------------------- - PAMPA (Power-Aware Message Propagation Algorithm) is a Power-Aware Broadcasting Algorithm, that aims to reduce the overhead imposed by flooding operations. The PAMPA prevents the nodes located closer to the sender of a message to relay the message, because their contribution to the dissemination of the message would be reduced when compared to a node that is farther from the sender. To achieve this goal, the nodes that are further away from the sender relay first, preventing those who are closer to relay the message. For details of operation of the algorithm please refer to: http://ieeexplore.ieee.org/search/wrapper.jsp?arnumber=4022385 ------------------------------------------------------------------------------- Notes: ------------------------------------------------------------------------------- - Each mote should have a separate id,because it is one of the fields that is used to uniquely identify the messages on the network. - The constants in file PampaMsg.h affect the behavior of the algorithm. They must be carefully defined according to different user needs. ------------------------------------------------------------------------------- Contents of directory: ------------------------------------------------------------------------------- PampaLinkedList: The PampaLinkedList.nc is the interface of data structure that the PAMPA uses to store incoming messages to be relayed, and PampaLinkedListC.nc is its implementation. Pampa: The Pampa.nc is the interface of the PAMPA algorithm, PampaC.nc is its configuration, and PampaP.nc is its implementation. TestPampa: The TestPampaAppC.nc is the configuration of an application that illustrates a basic use of the algorithm PAMPA. The TestPampaC.nc is the implementation of the application. ------------------------------------------------------------------------------- TODO: ------------------------------------------------------------------------------- - The data structure "PampaLinkedList" is implemented using dynamic memory, which is aimed to reduce the work of configuring sensors. However, to improve performance is recommended the use of a data structure that uses static memory. - The current interface requires the application/user to know the structure of the messages. This information should be hidden in the PAMPA implementation. We should consider for example, an interface for send/receive that uses something like (uint8_t *msg, uint8_t size). - The transformation from RSSI value to time uses double values which is using a lot of performance. - We don't use 'zero copy', but should be used as much as possible to save time and memory (see retransmitMessage, sendMessage). - The tasks that receive and treat the received messages may be reduced to one, to reduce the redundancy of source code, but should maintain functionality provided by the three.