#include "ao.h" #include "ao_led.h" // ...... typedef struct { ao_t base; ao_led_color color; } ao_led_s; static void event_handler(ao_event_t event, ao_privData_t privData); ao_led_t ao_led_init() { ao_led_t ao_led_h= allocate(sizeof(struct ao_led_s)); ao_led_h->base = ao_init(event_handler, (ao_privData_t) &(ao_led_h->color)); return ao_led_h; } bool ao_led_send(ao_led_t ao_led_h, ao_led_event_t event) { return ao_send(ao_led_h->base, (ao_event_t)event); } void ao_led_color(ao_led_t ao_led_h, ao_led_color color) { ao_led_h->color = color; // ToDo: defensive programming } static void event_handler(ao_event_t event, ao_privData_t privData) { ao_led_event_t event_ = (ao_led_event_t) event; ao_led_color *color = (ao_led_color *) privData; switch (event_) { // ...... } }