Wiselib
Public Types | Public Member Functions
wiselib::TreeRouting< OsModel_P, Radio_P, Timer_P, Debug_P > Class Template Reference

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_typeself_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)
Construction / Destruction
 TreeRouting ()
 ~TreeRouting ()
Routing Control
int enable_radio (void)
 Initialization/Start Routing.
int disable_radio (void)
 Stop Routing.
void set_sink (bool sink)
 Set State.
Radio Concept
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 ()
Methods called by Timer
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>
typedef Radio::block_data_t wiselib::TreeRouting< OsModel_P, Radio_P, Timer_P, Debug_P >::block_data_t
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>
typedef TreeBroadcastMessage<OsModel, Radio> wiselib::TreeRouting< OsModel_P, Radio_P, Timer_P, Debug_P >::BroadcastMessage
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>
typedef Debug_P wiselib::TreeRouting< OsModel_P, Radio_P, Timer_P, Debug_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>
typedef Radio::message_id_t wiselib::TreeRouting< OsModel_P, Radio_P, Timer_P, Debug_P >::message_id_t
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>
typedef Timer::millis_t wiselib::TreeRouting< OsModel_P, Radio_P, Timer_P, Debug_P >::millis_t
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>
typedef Radio::node_id_t wiselib::TreeRouting< OsModel_P, Radio_P, Timer_P, Debug_P >::node_id_t
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>
typedef OsModel_P wiselib::TreeRouting< OsModel_P, Radio_P, Timer_P, Debug_P >::OsModel
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>
typedef Radio_P wiselib::TreeRouting< OsModel_P, Radio_P, Timer_P, Debug_P >::Radio
typedef delegate3<void, node_id_t, size_t, block_data_t*> wiselib::RadioBase< OsModel_P, Radio_P::node_id_t , Radio_P::size_t , Radio_P::block_data_t , MAX_RECEIVERS >::radio_delegate_t [inherited]
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>
typedef TreeRoutingMessage<OsModel, Radio> wiselib::TreeRouting< OsModel_P, Radio_P, Timer_P, Debug_P >::RoutingMessage
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>
typedef self_type* wiselib::TreeRouting< OsModel_P, Radio_P, Timer_P, Debug_P >::self_pointer_t
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>
typedef TreeRouting<OsModel, Radio, Timer, Debug> wiselib::TreeRouting< OsModel_P, Radio_P, Timer_P, Debug_P >::self_type
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>
typedef Radio::size_t wiselib::TreeRouting< OsModel_P, Radio_P, Timer_P, Debug_P >::size_t
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>
typedef Timer_P wiselib::TreeRouting< OsModel_P, Radio_P, Timer_P, Debug_P >::Timer

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>
enum wiselib::TreeRouting::ErrorCodes
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>
enum wiselib::TreeRouting::Restrictions
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>
enum wiselib::TreeRouting::SpecialNodeIds
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 >
wiselib::TreeRouting< OsModel_P, Radio_P, Timer_P, Debug_P >::TreeRouting ( )
template<typename OsModel_P , typename Radio_P , typename Timer_P , typename Debug_P >
wiselib::TreeRouting< OsModel_P, Radio_P, Timer_P, Debug_P >::~TreeRouting ( )

Member Function Documentation

template<typename OsModel_P , typename Radio_P , typename Timer_P , typename Debug_P >
int wiselib::TreeRouting< OsModel_P, Radio_P, Timer_P, Debug_P >::destruct ( void  ) [inline]
template<typename OsModel_P , typename Radio_P , typename Timer_P , typename Debug_P >
int wiselib::TreeRouting< OsModel_P, Radio_P, Timer_P, Debug_P >::disable_radio ( void  )

Stop Routing.

...

template<typename OsModel_P , typename Radio_P , typename Timer_P , typename Debug_P >
int wiselib::TreeRouting< OsModel_P, Radio_P, Timer_P, Debug_P >::enable_radio ( void  )

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:
osReference 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>
uint8_t wiselib::TreeRouting< OsModel_P, Radio_P, Timer_P, Debug_P >::hops ( ) [inline]
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>
Radio::node_id_t wiselib::TreeRouting< OsModel_P, Radio_P, Timer_P, Debug_P >::id ( ) [inline]
template<typename OsModel_P , typename Radio_P , typename Timer_P , typename Debug_P >
int wiselib::TreeRouting< OsModel_P, Radio_P, Timer_P, Debug_P >::init ( void  ) [inline]
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>
int wiselib::TreeRouting< OsModel_P, Radio_P, Timer_P, Debug_P >::init ( Radio radio,
Timer timer,
Debug debug 
) [inline]
void wiselib::RadioBase< OsModel_P, Radio_P::node_id_t , Radio_P::size_t , Radio_P::block_data_t , MAX_RECEIVERS >::notify_receivers ( node_id_t  from,
size_t  len,
block_data_t data 
) [inline, inherited]
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>
node_id_t wiselib::TreeRouting< OsModel_P, Radio_P, Timer_P, Debug_P >::parent ( ) [inline]
template<typename OsModel_P , typename Radio_P , typename Timer_P , typename Debug_P >
void wiselib::TreeRouting< OsModel_P, Radio_P, Timer_P, Debug_P >::receive ( node_id_t  from,
size_t  len,
block_data_t data 
)

Callback on Received Messages.

Called if a message is received via the radio interface.

See also:
Radio concept
int wiselib::RadioBase< OsModel_P, Radio_P::node_id_t , Radio_P::size_t , Radio_P::block_data_t , MAX_RECEIVERS >::reg_recv_callback ( T *  obj_pnt) [inline, inherited]
template<typename OsModel_P , typename Radio_P , typename Timer_P , typename Debug_P >
int wiselib::TreeRouting< OsModel_P, Radio_P, Timer_P, Debug_P >::send ( node_id_t  receiver,
size_t  len,
block_data_t data 
)
template<typename OsModel_P , typename Radio_P , typename Timer_P , typename Debug_P >
void wiselib::TreeRouting< OsModel_P, Radio_P, Timer_P, Debug_P >::set_sink ( bool  sink) [inline]

Set State.

...

template<typename OsModel_P , typename Radio_P , typename Timer_P , typename Debug_P >
void wiselib::TreeRouting< OsModel_P, Radio_P, Timer_P, Debug_P >::timer_elapsed ( void *  userdata)

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.

int wiselib::RadioBase< OsModel_P, Radio_P::node_id_t , Radio_P::size_t , Radio_P::block_data_t , MAX_RECEIVERS >::unreg_recv_callback ( int  idx) [inline, inherited]

The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines