X-Git-Url: http://www.average.org/gitweb/?p=pulsecounter.git;a=blobdiff_plain;f=Pulsecounter-Prog.c;h=d5170af1a5adc722a38b1d86ef05883570e6ac85;hp=1507b24fea482d97b2a56ddee915e754b90a8f79;hb=4639a1ba298618c2a617ca4428cae14c6a531ae3;hpb=a210dfa3087cdca2393e7a4f3611e654f4724b53 diff --git a/Pulsecounter-Prog.c b/Pulsecounter-Prog.c index 1507b24..d5170af 100644 --- a/Pulsecounter-Prog.c +++ b/Pulsecounter-Prog.c @@ -1,40 +1,113 @@ -#include "Pulsecounter.h" -#include "Hal.h" - -static void buttonHandler(void); - -void main() { - Hal_init(); - Hal_buttonEnable(buttonHandler); - Pulsecounter_start(); - Hal_idleLoop(); -} - -static void buttonHandler(void) { - Hal_ledOn(); - Hal_delay(500); - Hal_ledOff(); - Pulsecounter_event3_indicate(); -} - -/* -------- SCHEMA CALLBACKS -------- */ - -void Pulsecounter_connectHandler(void) { - Hal_connected(); -} - -void Pulsecounter_disconnectHandler(void) { - Hal_disconnected(); -} - -void Pulsecounter_event3_fetch(Pulsecounter_event3_t* const output) { - *output = 3; -} - -void Pulsecounter_event4_fetch(Pulsecounter_event4_t* const output) { - *output = 4; -} - -void Pulsecounter_event5_fetch(Pulsecounter_event5_t* const output) { - *output = 5; -} +#include "Pulsecounter.h" +#include "Hal.h" + +static void buttonHandler(void); +static void tickHandler(void); +static bool connected = false; +static int32_t base4 = 0; +static int32_t base5 = 1000; +static int32_t event4 = 0; +static int32_t event5 = 0; + +static bool cold = true; + +void main() { + Hal_init(); + Hal_buttonEnable(buttonHandler); + Pulsecounter_setDeviceName("PULS-CNTR"); + Pulsecounter_start(); + Hal_idleLoop(); +} + +static void buttonHandler(void) { + uint8_t i; + + cold = !cold; + if (cold) + event4++; + else + event5++; + if (connected) { + if (cold) + Pulsecounter_event4_indicate(); + else + Pulsecounter_event5_indicate(); + } + else + Pulsecounter_accept(true); + for (i = 0; i < 3; i++) { + Hal_greenLedOn(); + Hal_redLedOn(); + Hal_delay(10); + Hal_greenLedOff(); + Hal_redLedOff(); + } + Hal_tickStart(5000, tickHandler); +} + +static void tickHandler(void) { + uint8_t i; + + Hal_tickStop(); + if (connected) + return; + for (i = 0; i < 3; i++) { + Hal_greenLedOn(); + Hal_delay(50); + Hal_redLedOn(); + Hal_delay(50); + Hal_redLedOff(); + Hal_delay(50); + Hal_greenLedOff(); + } + Pulsecounter_accept(false); +} + +/* -------- SCHEMA CALLBACKS -------- */ + +void Pulsecounter_connectHandler(void) { + connected = true; + Hal_connected(); + Hal_redLedOn(); + Hal_delay(100); + Hal_redLedOff(); + Hal_greenLedOn(); + Hal_delay(100); + Hal_greenLedOff(); +} + +void Pulsecounter_disconnectHandler(void) { + connected = false; + Hal_greenLedOn(); + Hal_delay(100); + Hal_greenLedOff(); + Hal_redLedOn(); + Hal_delay(100); + Hal_redLedOff(); + Hal_tickStart(5000, tickHandler); + Hal_disconnected(); +} + +void Pulsecounter_event4_fetch(Pulsecounter_event4_t* const output) { + *output = base4 + event4; +} + +void Pulsecounter_event5_fetch(Pulsecounter_event5_t* const output) { + *output = base5 + event5; +} + +void Pulsecounter_base4_fetch(Pulsecounter_base4_t* const output) { + *output = base4; +} + +void Pulsecounter_base4_store(Pulsecounter_base4_t* const input) { + base4 = *input - event4; +} + +void Pulsecounter_base5_fetch(Pulsecounter_base5_t* const output) { + *output = base5; +} + +void Pulsecounter_base5_store(Pulsecounter_base5_t* const input) { + base5 = *input - event5; +}