51 static void (* listen_callback)(
int time);
52 static announcement_observer observer_callback;
63 announcement_callback_t callback)
67 a->callback = callback;
69 if(observer_callback) {
70 observer_callback(a->id, a->has_value,
71 a->value, 0, ANNOUNCEMENT_BUMP);
85 if(observer_callback) {
86 observer_callback(a->id, 0, 0, 0, ANNOUNCEMENT_NOBUMP);
94 uint16_t oldvalue = a->value;
98 if(observer_callback) {
99 observer_callback(a->id, a->has_value,
100 value, oldvalue, ANNOUNCEMENT_NOBUMP);
107 if(observer_callback) {
108 observer_callback(a->id, a->has_value,
109 a->value, a->value, ANNOUNCEMENT_BUMP);
116 if(listen_callback) {
117 listen_callback(time);
124 listen_callback = callback;
130 observer_callback = callback;
145 if(a->callback !=
NULL) {
146 a->callback(a, from,
id, value);
void announcement_remove(struct announcement *a)
Remove a previously registered announcement.
Linked list manipulation routines.
void announcement_register(struct announcement *a, uint16_t id, announcement_callback_t callback)
Register an announcement.
void announcement_register_observer_callback(announcement_observer callback)
Register an observer callback with the announcement module.
void * list_item_next(void *item)
Get the next item following this item.
void announcement_remove_value(struct announcement *a)
Remove the value of an announcement.
void announcement_heard(const linkaddr_t *from, uint16_t id, uint16_t value)
Inform the announcement module of an incoming announcement.
#define NULL
The null pointer.
Default definitions of C compiler quirk work-arounds.
void list_remove(list_t list, void *item)
Remove a specific element from a list.
struct announcement * announcement_list(void)
Get the list of registered announcements.
Header file for the announcement primitive
void list_init(list_t list)
Initialize a list.
void * list_head(list_t list)
Get a pointer to the first element of a list.
void list_add(list_t list, void *item)
Add an item at the end of a list.
void announcement_listen(int time)
Listen for announcements for a specific amount of announcement periods.
void announcement_register_listen_callback(void(*callback)(int time))
Register a listen callback with the announcement module.
void announcement_init(void)
Initialize the announcement module.
#define LIST(name)
Declare a linked list.
Representation of an announcement.
void announcement_bump(struct announcement *a)
Bump an announcement.
void announcement_set_value(struct announcement *a, uint16_t value)
Set the value of an announcement.