Announcements
[The Rime communication stack]

The Announcement primitive does local area announcements. More...

Data Structures

struct  announcement
 Representation of an announcement. More...

Files

file  announcement.c
 

Implementation of the announcement primitive.


file  announcement.h
 

Header file for the announcement primitive.


System API



enum  
typedef void(* announcement_observer )(uint16_t id, uint8_t has_value, uint16_t newvalue, uint16_t oldvalue, uint8_t bump)
void announcement_init (void)
 Initialize the announcement module.
void announcement_register_listen_callback (void(*callback)(int time))
 Register a listen callback with the announcement module.
void announcement_register_observer_callback (announcement_observer observer)
 Register an observer callback with the announcement module.
struct announcementannouncement_list (void)
 Get the list of registered announcements.
void announcement_heard (const rimeaddr_t *from, uint16_t id, uint16_t value)
 Inform the announcement module of an incoming announcement.

Application API



void announcement_register (struct announcement *a, uint16_t id, announcement_callback_t callback)
 Register an announcement.
void announcement_remove (struct announcement *a)
 Remove a previously registered announcement.
void announcement_remove_value (struct announcement *a)
 Remove the value of an announcement.
void announcement_set_value (struct announcement *a, uint16_t value)
 Set the value of an announcement.
void announcement_bump (struct announcement *a)
 Bump an announcement.
void announcement_listen (int periods)
 Listen for announcements for a specific amount of announcement periods.

Detailed Description

The Announcement primitive does local area announcements.

An announcement is an (ID, value) tuple that is disseminated to local area neighbors. An application or protocol can explicitly listen to announcements from neighbors. When an announcement is heard, a callback is invoked.

Announcements can be used for a variety of network mechanisms such as neighbor discovery, node-level service discovery, or routing metric dissemination.

Application programs and protocols register announcements with the announcement module. An announcement back-end, implemented by the system, takes care of sending out announcements over the radio, as well as collecting announcements heard from neighbors.


Function Documentation

void announcement_bump ( struct announcement a  ) 

Bump an announcement.

Parameters:
a A pointer to a struct announcement that has previously been registered

This function is called to inform the announcement module that a particular announcement has changed in a way that it should be bumped. When an announcement is bumped, the announcement back-end may send out a new announcement to neighbors.

void announcement_heard ( const rimeaddr_t *  from,
uint16_t  id,
uint16_t  value 
)

Inform the announcement module of an incoming announcement.

Parameters:
from The address of the sender of the announcement
id The identifier of the announcement
value The value of the announcement

This function is called by the back-end to inform the announcement module that an announcement from a neighbor has been heard.

void announcement_init ( void   ) 

Initialize the announcement module.

This function initializes the announcement module, and is called by the system at boot up.

struct announcement * announcement_list ( void   )  [read]

Get the list of registered announcements.

Returns:
The list of registered announcements

This function returns the list of registered announcements. This function is used by the back-end to compile announcement packets from the registered announcements.

The announcement list is an ordinary Contiki list, as defined by the list module.

void announcement_listen ( int  periods  ) 

Listen for announcements for a specific amount of announcement periods.

Parameters:
periods The number of periods to listen for announcement

This function starts to listen for announcements for the specified amount of announcement periods. This function is called to ensure that the announcement module hears announcements from neighbors. The announcement module may hear announcements even if listening is not explicitly enabled, but with listening enabled, more announcements will be heard.

Examples:
example-announcement.c.
void announcement_register ( struct announcement a,
uint16_t  id,
announcement_callback_t  callback 
)

Register an announcement.

Parameters:
a A pointer to a struct announcement
id The identifying number of the announcement
callback A pointer to a callback function that is called when an announcement is heard

This function registers an announcement with the announcement module. The state of the announcement is held in a struct announcement variable, which is passed as an argument to this function. This variable must be allocated by the caller. An announcement is identified with a 16-bit number, which is passed as a parameter to the function. The announcement also has an initial value, that can later be changed with announcement_set_value().

Examples:
example-announcement.c, and example-multihop.c.
void announcement_register_listen_callback ( void(*)(int time)  callback  ) 

Register a listen callback with the announcement module.

Parameters:
callback A pointer to a callback function

This function is called by the back-end to register a listen callback with the announcement module. The listen callback function is called by the announcement module as part of the announcement_listen() function.

void announcement_register_observer_callback ( announcement_observer  observer  ) 

Register an observer callback with the announcement module.

Parameters:
observer A pointer to an observer function

This function is callback by the back-end to register an observer callback with the announcement module. The observer callback is called by the announcement module when an announcement is registered, removed, or have its identifier or value updated.

The back-end may chose to send out a new announcement message with the updated values.

void announcement_remove ( struct announcement a  ) 

Remove a previously registered announcement.

Parameters:
a A pointer to a struct announcement that has previously been registered

This function removes an announcement that has previously been registered with announcement_register().

Examples:
example-announcement.c.
void announcement_remove_value ( struct announcement a  ) 

Remove the value of an announcement.

Parameters:
a A pointer to a struct announcement that has previously been registered

This function removes the value of an announcement that has previously been registered with announcement_register().

void announcement_set_value ( struct announcement a,
uint16_t  value 
)

Set the value of an announcement.

Parameters:
a A pointer to a struct announcement that has previously been registered

This function sets the value of an announcement that has previously been registered with announcement_register().

Examples:
example-announcement.c.

Generated on Mon Apr 11 14:23:52 2011 for Contiki 2.5 by  doxygen 1.6.1