A simple wireless protocol to let my examples communicate each other. ssWi stands for Shared Slotted Wireless protocol

Dependents:   rover_car rover_pc supervisor watering_unit ... more

This library aims at implementing a simple communication protocol among nodes, abstracting from the hardware. The name ssWi stands for Shared Slotted Wireless. Wireless is part of the name, even though the library abstracts from the hardware, as the first version was entirely focused on the XBee modules and then the name has not been changed.

The communication channel is represented by ssWiChannel, an abstract class which models the channel that the transceivers access to. The concrete classes must implement the functions: init, read and write. The protocol automatically sends and receives data through the selected channel, exploiting the operting system timers. Addresses are not considered as the communication lays on broadcast transmissions.

The protocol provides the ssWiPort abstraction which is like memory areas shared among all the connected nodes. Reading from one port lets the node retrieve the last written value from the other nodes. Writing on one port means sending such value to other nodes.

Objects instantiated from ssWiSocket are the interface for allowing nodes to access the protocol ports.

/media/uploads/mariob/scheme.png

TODO:

  • improve the parsing of the received messages
  • communication tests with many nodes (so far, only 2 nodes have been tested)
Committer:
mariob
Date:
Fri Sep 07 23:41:49 2012 +0000
Revision:
6:f98855efa37e
Parent:
5:0b0ca40aeb81
Child:
13:69ff47a83260
ssWi

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mariob 4:dbbf82c966c2 1 /** \file ssWiChannel.hpp
mariob 4:dbbf82c966c2 2 * \brief Abstract class for the communication channel
mariob 4:dbbf82c966c2 3 *
mariob 4:dbbf82c966c2 4 */
mariob 5:0b0ca40aeb81 5
mariob 0:cc7218c5e5f7 6 #ifndef __SHARED_SLOTTED_WIRELESS_CHANNEL_HPP__
mariob 0:cc7218c5e5f7 7 #define __SHARED_SLOTTED_WIRELESS_CHANNEL_HPP__
mariob 0:cc7218c5e5f7 8
mariob 4:dbbf82c966c2 9
mariob 4:dbbf82c966c2 10 #include "ssWi.hpp"
mariob 4:dbbf82c966c2 11
mariob 4:dbbf82c966c2 12
mariob 4:dbbf82c966c2 13 /** \brief Abstract class for a communication channel
mariob 4:dbbf82c966c2 14 *
mariob 4:dbbf82c966c2 15 */
mariob 0:cc7218c5e5f7 16 class ssWiChannel
mariob 0:cc7218c5e5f7 17 {
mariob 4:dbbf82c966c2 18
mariob 4:dbbf82c966c2 19 protected:
mariob 4:dbbf82c966c2 20
mariob 4:dbbf82c966c2 21 /** \brief Initialize the protocol
mariob 4:dbbf82c966c2 22 */
mariob 4:dbbf82c966c2 23 bool _init (ssWiChannel* c, int TXRate, int RXRate) {
mariob 4:dbbf82c966c2 24 return ssWi_init(c, TXRate, RXRate);
mariob 4:dbbf82c966c2 25 }
mariob 4:dbbf82c966c2 26
mariob 0:cc7218c5e5f7 27 public:
mariob 4:dbbf82c966c2 28
mariob 4:dbbf82c966c2 29 /** \brief Initialize ssWi on this channel
mariob 4:dbbf82c966c2 30 *
mariob 4:dbbf82c966c2 31 * \param TXRate number of transmissions per second
mariob 4:dbbf82c966c2 32 * \param RXRate number of receptions per second
mariob 4:dbbf82c966c2 33 * \return true if ssWi has been initialized succefully
mariob 4:dbbf82c966c2 34 */
mariob 4:dbbf82c966c2 35 virtual bool init (int TXRate, int RXRate) = 0;
mariob 4:dbbf82c966c2 36
mariob 4:dbbf82c966c2 37 /** \brief read from the socket
mariob 4:dbbf82c966c2 38 *
mariob 4:dbbf82c966c2 39 * \param msg buffer where to write the read message
mariob 4:dbbf82c966c2 40 * \return the number of read bytes
mariob 4:dbbf82c966c2 41 */
mariob 0:cc7218c5e5f7 42 virtual int read (char* msg) = 0;
mariob 4:dbbf82c966c2 43
mariob 4:dbbf82c966c2 44 /** \brief write to the socket
mariob 4:dbbf82c966c2 45 *
mariob 4:dbbf82c966c2 46 * \param msg buffer with the message to send
mariob 4:dbbf82c966c2 47 * \n number of bytes to send
mariob 4:dbbf82c966c2 48 */
mariob 0:cc7218c5e5f7 49 virtual void write (const char* msg, int n) = 0;
mariob 5:0b0ca40aeb81 50
mariob 0:cc7218c5e5f7 51 };
mariob 0:cc7218c5e5f7 52
mariob 0:cc7218c5e5f7 53 #endif //__SHARED_SLOTTED_WIRELESS_CHANNEL_HPP__