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.
typedef void(* announcement_observer)(uint16_t id, uint8_t has_value, uint16_t newvalue, uint16_t oldvalue, uint8_t bump) |
Enumerator |
---|
ANNOUNCEMENT_NOBUMP |
|
ANNOUNCEMENT_BUMP |
|
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 linkaddr_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.
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 \ref list "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. |
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().
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. |
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. |
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().
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().