Tree routing implementation of Routing Concept.
More...
#include <tree_routing.h>
Inherits wiselib::RoutingBase< OsModel_P, Radio_P >.
List of all members.
Public Types |
enum | ErrorCodes { SUCCESS = OsModel::SUCCESS,
ERR_UNSPEC = OsModel::ERR_UNSPEC,
ERR_NOTIMPL = OsModel::ERR_NOTIMPL,
ERR_NETDOWN = OsModel::ERR_NETDOWN
} |
enum | SpecialNodeIds { BROADCAST_ADDRESS = Radio_P::BROADCAST_ADDRESS,
NULL_NODE_ID = Radio_P::NULL_NODE_ID
} |
enum | Restrictions { MAX_MESSAGE_LENGTH = Radio_P::MAX_MESSAGE_LENGTH - RoutingMessage::PAYLOAD_POS
} |
typedef OsModel_P | OsModel |
typedef Radio_P | Radio |
typedef Timer_P | Timer |
typedef Debug_P | Debug |
typedef TreeRouting< OsModel,
Radio, Timer, Debug > | self_type |
typedef self_type * | self_pointer_t |
typedef Radio::node_id_t | node_id_t |
typedef Radio::size_t | size_t |
typedef Radio::block_data_t | block_data_t |
typedef Radio::message_id_t | message_id_t |
typedef Timer::millis_t | millis_t |
typedef TreeBroadcastMessage
< OsModel, Radio > | BroadcastMessage |
typedef TreeRoutingMessage
< OsModel, Radio > | RoutingMessage |
enum | ReturnValues |
typedef delegate3< void,
node_id_t, size_t,
block_data_t * > | radio_delegate_t |
typedef vector_static< OsModel,
radio_delegate_t,
MAX_RECEIVERS > | CallbackVector |
typedef CallbackVector::iterator | CallbackVectorIterator |
Public Member Functions |
int | init (Radio &radio, Timer &timer, Debug &debug) |
int | init () |
int | destruct () |
uint8_t | hops () |
node_id_t | parent () |
int | reg_recv_callback (T *obj_pnt) |
int | unreg_recv_callback (int idx) |
void | notify_receivers (node_id_t from, size_t len, block_data_t *data) |
|
| TreeRouting () |
| ~TreeRouting () |
|
int | enable_radio (void) |
| Initialization/Start Routing.
|
int | disable_radio (void) |
| Stop Routing.
|
void | set_sink (bool sink) |
| Set State.
|
|
int | send (node_id_t receiver, size_t len, block_data_t *data) |
void | receive (node_id_t from, size_t len, block_data_t *data) |
| Callback on Received Messages.
|
Radio::node_id_t | id () |
|
void | timer_elapsed (void *userdata) |
| Periodic Tasks.
|
Detailed Description
template<typename OsModel_P, typename Radio_P = typename OsModel_P::Radio, typename Timer_P = typename OsModel_P::Timer, typename Debug_P = typename OsModel_P::Debug>
class wiselib::TreeRouting< OsModel_P, Radio_P, Timer_P, Debug_P >
Tree routing implementation of Routing Concept.
Tree routing implementation of Routing Concept ...
Member Typedef Documentation
template<typename OsModel_P , typename Radio_P = typename OsModel_P::Radio, typename Timer_P = typename OsModel_P::Timer, typename Debug_P = typename OsModel_P::Debug>
template<typename OsModel_P , typename Radio_P = typename OsModel_P::Radio, typename Timer_P = typename OsModel_P::Timer, typename Debug_P = typename OsModel_P::Debug>
template<typename OsModel_P , typename Radio_P = typename OsModel_P::Radio, typename Timer_P = typename OsModel_P::Timer, typename Debug_P = typename OsModel_P::Debug>
template<typename OsModel_P , typename Radio_P = typename OsModel_P::Radio, typename Timer_P = typename OsModel_P::Timer, typename Debug_P = typename OsModel_P::Debug>
template<typename OsModel_P , typename Radio_P = typename OsModel_P::Radio, typename Timer_P = typename OsModel_P::Timer, typename Debug_P = typename OsModel_P::Debug>
template<typename OsModel_P , typename Radio_P = typename OsModel_P::Radio, typename Timer_P = typename OsModel_P::Timer, typename Debug_P = typename OsModel_P::Debug>
template<typename OsModel_P , typename Radio_P = typename OsModel_P::Radio, typename Timer_P = typename OsModel_P::Timer, typename Debug_P = typename OsModel_P::Debug>
template<typename OsModel_P , typename Radio_P = typename OsModel_P::Radio, typename Timer_P = typename OsModel_P::Timer, typename Debug_P = typename OsModel_P::Debug>
template<typename OsModel_P , typename Radio_P = typename OsModel_P::Radio, typename Timer_P = typename OsModel_P::Timer, typename Debug_P = typename OsModel_P::Debug>
template<typename OsModel_P , typename Radio_P = typename OsModel_P::Radio, typename Timer_P = typename OsModel_P::Timer, typename Debug_P = typename OsModel_P::Debug>
template<typename OsModel_P , typename Radio_P = typename OsModel_P::Radio, typename Timer_P = typename OsModel_P::Timer, typename Debug_P = typename OsModel_P::Debug>
template<typename OsModel_P , typename Radio_P = typename OsModel_P::Radio, typename Timer_P = typename OsModel_P::Timer, typename Debug_P = typename OsModel_P::Debug>
template<typename OsModel_P , typename Radio_P = typename OsModel_P::Radio, typename Timer_P = typename OsModel_P::Timer, typename Debug_P = typename OsModel_P::Debug>
Member Enumeration Documentation
template<typename OsModel_P , typename Radio_P = typename OsModel_P::Radio, typename Timer_P = typename OsModel_P::Timer, typename Debug_P = typename OsModel_P::Debug>
- Enumerator:
SUCCESS |
|
ERR_UNSPEC |
|
ERR_NOTIMPL |
|
ERR_NETDOWN |
|
template<typename OsModel_P , typename Radio_P = typename OsModel_P::Radio, typename Timer_P = typename OsModel_P::Timer, typename Debug_P = typename OsModel_P::Debug>
- Enumerator:
MAX_MESSAGE_LENGTH |
Maximal number of bytes in payload.
|
template<typename OsModel_P , typename Radio_P = typename OsModel_P::Radio, typename Timer_P = typename OsModel_P::Timer, typename Debug_P = typename OsModel_P::Debug>
- Enumerator:
BROADCAST_ADDRESS |
All nodes in communication range.
|
NULL_NODE_ID |
Unknown/No node id.
|
Constructor & Destructor Documentation
template<typename OsModel_P , typename Radio_P , typename Timer_P , typename Debug_P >
template<typename OsModel_P , typename Radio_P , typename Timer_P , typename Debug_P >
Member Function Documentation
template<typename OsModel_P , typename Radio_P , typename Timer_P , typename Debug_P >
template<typename OsModel_P , typename Radio_P , typename Timer_P , typename Debug_P >
template<typename OsModel_P , typename Radio_P , typename Timer_P , typename Debug_P >
Initialization/Start Routing.
This methods does the initilaization that requires access to the OS (and thus can not be done in the constructor). E.g., callbacks in task manager and radio are registered, and state variables regarding acting as gateway or ordinary node are set.
At last, the network begins to build the routing tree. The gateway periodically sends out flooding messages. Every node that receives such a message updates its parent (if the received hop-distance to the gate is smaller than the known one), and then begins to send own flooding messages.
Flooding messages in this context does not mean flooding the whole network. Instead, they are just local broadcast messages, but since every node with a parent broadcasts such messages, the whole network is covere
- Parameters:
-
os | Reference to operating system |
template<typename OsModel_P , typename Radio_P = typename OsModel_P::Radio, typename Timer_P = typename OsModel_P::Timer, typename Debug_P = typename OsModel_P::Debug>
template<typename OsModel_P , typename Radio_P = typename OsModel_P::Radio, typename Timer_P = typename OsModel_P::Timer, typename Debug_P = typename OsModel_P::Debug>
template<typename OsModel_P , typename Radio_P , typename Timer_P , typename Debug_P >
template<typename OsModel_P , typename Radio_P = typename OsModel_P::Radio, typename Timer_P = typename OsModel_P::Timer, typename Debug_P = typename OsModel_P::Debug>
template<typename OsModel_P , typename Radio_P = typename OsModel_P::Radio, typename Timer_P = typename OsModel_P::Timer, typename Debug_P = typename OsModel_P::Debug>
template<typename OsModel_P , typename Radio_P , typename Timer_P , typename Debug_P >
Callback on Received Messages.
Called if a message is received via the radio interface.
- See also:
- Radio concept
template<typename OsModel_P , typename Radio_P , typename Timer_P , typename Debug_P >
template<typename OsModel_P , typename Radio_P , typename Timer_P , typename Debug_P >
template<typename OsModel_P , typename Radio_P , typename Timer_P , typename Debug_P >
Periodic Tasks.
This method is called periodically with intervals defined by ::work_period_. Each connected node (the gateway and nodes that have a parent) broadcast a message with their current hopcount, so that newly installed nodes can connect to the tree. If a node is not yet connected, it prints out an appropriate debug message.
The documentation for this class was generated from the following file: