From: Eugene Crosser Date: Thu, 10 Dec 2015 20:27:26 +0000 (+0300) Subject: pass its id to the handler X-Git-Url: http://www.average.org/gitweb/?p=pulsecounter.git;a=commitdiff_plain;h=4868ec0934cb78bf2349296ec33401cf9ce4a953;hp=4639a1ba298618c2a617ca4428cae14c6a531ae3 pass its id to the handler --- diff --git a/Hal/Hal.c b/Hal/Hal.c index ef498ba..b4944e2 100644 --- a/Hal/Hal.c +++ b/Hal/Hal.c @@ -86,16 +86,18 @@ #define WAKEUP() (__bic_SR_register_on_exit(LPM3_bits)) #endif -#define NUM_HANDLERS 3 +#define NUM_HANDLERS 5 #define BUTTON_HANDLER_ID 0 -#define TICK_HANDLER_ID 1 -#define DISPATCH_HANDLER_ID 2 +#define EVENT4_HANDLER_ID 1 +#define EVENT5_HANDLER_ID 2 +#define TICK_HANDLER_ID 3 +#define DISPATCH_HANDLER_ID 4 -static void buttonHandler(void); +static void buttonHandler(uint8_t id); static void postEvent(uint8_t handlerId); -static Hal_Handler appButtonHandler; +static void (*appButtonHandler)(void); static volatile uint16_t handlerEvents = 0; static uint16_t clockTick = 0; static Hal_Handler handlerTab[NUM_HANDLERS]; @@ -103,7 +105,7 @@ static Hal_Handler handlerTab[NUM_HANDLERS]; /* -------- APP-HAL INTERFACE -------- */ -void Hal_buttonEnable(Hal_Handler handler) { +void Hal_buttonEnable(void (*handler)(void)) { handlerTab[BUTTON_HANDLER_ID] = buttonHandler; appButtonHandler = handler; BUTTON_CONFIG(); @@ -226,7 +228,7 @@ void Hal_idleLoop(void) { uint8_t id; for (id = 0, mask = 0x1; id < NUM_HANDLERS; id++, mask <<= 1) { if ((events & mask) && handlerTab[id]) { - handlerTab[id](); + handlerTab[id](id); } } } @@ -326,7 +328,7 @@ void Em_Hal_watchOn(void) { /* -------- INTERNAL FUNCTIONS -------- */ -static void buttonHandler(void) { +static void buttonHandler(uint8_t id) { Hal_delay(BUTTON_DEBOUNCE_MSECS); if (BUTTON_PRESSED() && appButtonHandler) { appButtonHandler(); diff --git a/Hal/Hal.h b/Hal/Hal.h index 8ec28c9..9af8ec8 100644 --- a/Hal/Hal.h +++ b/Hal/Hal.h @@ -26,7 +26,7 @@ extern "C" { #endif -typedef void (*Hal_Handler)(void); +typedef void (*Hal_Handler)(uint8_t id); /** * --------- Hal_buttonEnable --------- @@ -47,7 +47,7 @@ typedef void (*Hal_Handler)(void); * BUTTON interrupt enabled * **/ -extern void Hal_buttonEnable(Hal_Handler handler); +extern void Hal_buttonEnable(void (*handler)(void)); /** * --------- Hal_connected --------- *