From b0aee467c6cb053f9ad754e93b349e4e45cc0860 Mon Sep 17 00:00:00 2001 From: Eugene Crosser Date: Wed, 9 Dec 2015 21:20:00 +0300 Subject: [PATCH] add some timer --- Hal/Hal.c | 5 ++ Hal/Hal.h | 1 + Pulsecounter-Prog.c | 128 +++++++++++++++++++++++++++++--------------- 3 files changed, 92 insertions(+), 42 deletions(-) diff --git a/Hal/Hal.c b/Hal/Hal.c index bb05cd4..00b8c6b 100644 --- a/Hal/Hal.c +++ b/Hal/Hal.c @@ -275,6 +275,11 @@ void Hal_tickStart(uint16_t msecs, Hal_Handler handler) { TA1CCTL0 = CCIE; // Enable the CCR0 interrupt } +void Hal_tickStop(void) { + handlerTab[TICK_HANDLER_ID] = 0; + TA1CCR0 = 0; + TA1CCTL0 = 0; +} /* -------- SRT-HAL INTERFACE -------- */ diff --git a/Hal/Hal.h b/Hal/Hal.h index cee0483..374daf5 100644 --- a/Hal/Hal.h +++ b/Hal/Hal.h @@ -294,6 +294,7 @@ extern void Hal_redLedToggle(void); * **/ extern void Hal_tickStart(uint16_t msecs, Hal_Handler Handler); +extern void Hal_tickStop(void); #ifdef __cplusplus } diff --git a/Pulsecounter-Prog.c b/Pulsecounter-Prog.c index 62efd73..2c3256d 100644 --- a/Pulsecounter-Prog.c +++ b/Pulsecounter-Prog.c @@ -1,42 +1,86 @@ -#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_greenLedOn(); - Hal_redLedOn(); - Hal_delay(500); - Hal_greenLedOff(); - Hal_redLedOff(); - 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 = buttonCnt; -} - -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; + +void main() { + Hal_init(); + Hal_buttonEnable(buttonHandler); + Pulsecounter_setDeviceName("PULS-CNTR"); + Pulsecounter_start(); + Hal_idleLoop(); +} + +static void buttonHandler(void) { + uint8_t i; + + if (connected) + Pulsecounter_event3_indicate(); + else + Pulsecounter_accept(true); + for (i = 0; i < 3; i++) { + Hal_greenLedOn(); + Hal_redLedOn(); + Hal_delay(100); + 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_event3_fetch(Pulsecounter_event3_t* const output) { + *output = buttonCnt; +} + +void Pulsecounter_event4_fetch(Pulsecounter_event4_t* const output) { + *output = 4; +} + +void Pulsecounter_event5_fetch(Pulsecounter_event5_t* const output) { + *output = 5; +} -- 2.39.2