#README file for Seda Seda - Datalink layer protocol source code README ------------------------------------------------- Seda is a datalink layer protocol that enables increasing the packet size used by TinyOS, at the same time providing increased throughput. Seda achieves this by decoupling the communication unit (a frame) from the error recovery unit (a block in the case of Seda). For further details, please refer the paper "Datalink Streaming in Wireless Sensor Networks" in ACM SenSys 2006. INSTALLATION: ------------ 1. Unzip the tar ball onto the application folder of TinyOS. 2. Run 'javac Configure.java' 3. Run 'java Configure' - this changes the AM.h file for the corresponding platform (as mentioned in the configuration file 'seda.conf') CONFIGURATION PARAMETERS: ------------------------ 1. BLOCK_SIZE - block size used by Seda 2. PLATFORM - platform on which Seda is going to be used To use the code: --------------- The 'seda.conf' file allows the user to change the block size used by Seda. This in turn causes a change in the frame size used by TinyOS, specified in the 'AM.h' file. After unzipping the Seda files into the application folder, the user should run 'javac Configure.java; java Configure'. The configuration uses the files 'AM.h.conf' and 'Seda.h.conf'. It sets the block size to the value specified in 'seda.conf'. Based on this value, it calculates the number of blocks in a frame and the frame size (TOSH_DATA_LENGTH). The value MY_DATA_LENGTH is the maximum application payload that can be fit within a packet (this is the maximum value of the length field of any call to Seda's send command). Details of the specification for the 'seda.conf' file can be found in the example configuration file provided. The interface that Seda exports to the application layer is provided in the file 'Seda.nc'. The interface consists of a command 'send' to send a packet, and signals two events 'sendDone' and 'receive' (these need to be implemented by the application programmer). The 'sendDone' event indicates the completion of sending of a packet (with either a success or a failure), and the receive event indicates the reception of a packet from the MAC layer. The application programmer also needs to call the Seda commands 'init' and 'start', from the application's main 'init' and 'start' commmand implementations, respectively. For details of the arguments to the above mentioned commands and signals, please refer the 'Seda.nc' file. The file 'SedaM.nc' contains the main Seda implementation. The file 'SedaC.nc' contains the wiring to the interfaces of other components provided by TinyOS. Seda limitation: --------------- Due to the small RAM of 4k bytes provided by MicaZ motes, the current implementation of Seda is limited in its buffer size. A receiver using Seda, can buffer packets of only one sender at any given time. When multiple senders transmit simultaneously to the same receiver, only the packets of the last sender will be stored, and those of earlier senders will be lost and these packets will not be forwarded to the application. In case the application requires that multiple senders communicate with a receiver simulataneously, the application programmer can modify Seda by tuning two parameters in 'Seda.h'. The BURST_SIZE can be set to 1, and the SENDER_LIST_SIZE can be increased to the number of simulataneous senders required (make sure that the total code size is lesser than the total available RAM). The user should be warned that this could result in decreased throughput. We plan to port Seda's implementation to Telos motes that provides a larger RAM of 10k bytes, in the near future.