From bbcc246e8e52b946f7813d0e209ca10161794e00 Mon Sep 17 00:00:00 2001 From: Mike Fiore Date: Mon, 7 Dec 2015 11:20:24 -0600 Subject: LED1 is red when not joined, green when joined, and blinks when communicating with gateway --- LoRaHandler/LoRaHandler.cpp | 15 ++++++++++++++- LoRaHandler/LoRaHandler.h | 9 ++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) (limited to 'LoRaHandler') diff --git a/LoRaHandler/LoRaHandler.cpp b/LoRaHandler/LoRaHandler.cpp index 47b0e01..94f02a8 100644 --- a/LoRaHandler/LoRaHandler.cpp +++ b/LoRaHandler/LoRaHandler.cpp @@ -26,6 +26,7 @@ void l_worker(void const* argument) { e = Thread::signal_wait(signal); if (e.status == osEventSignal) { l->_status = LoRaHandler::busy; + l->_tick.attach(l, &LoRaHandler::blinker, 0.05); switch (cmd) { case l_ping: l->_mutex.lock(); @@ -44,6 +45,8 @@ void l_worker(void const* argument) { l->_status = LoRaHandler::ping_failure; } osSignalSet(l->_main, loraSignal); + l->_tick.detach(); + l->_activity_led = LoRaHandler::green; break; case l_send: @@ -55,6 +58,8 @@ void l_worker(void const* argument) { else l->_status = LoRaHandler::send_failure; osSignalSet(l->_main, loraSignal); + l->_tick.detach(); + l->_activity_led = LoRaHandler::green; break; case l_join: @@ -68,6 +73,8 @@ void l_worker(void const* argument) { l->_status = LoRaHandler::join_failure; } osSignalSet(l->_main, loraSignal); + l->_tick.detach(); + l->_activity_led = LoRaHandler::green; break; default: @@ -82,9 +89,11 @@ LoRaHandler::LoRaHandler(osThreadId main) : _main(main), _thread(l_worker, (void*)this), _status(none), - _join_attempts(1) + _join_attempts(1), + _activity_led(XBEE_DIO1, PIN_OUTPUT, PullNone, red) { _ping.status = false; + _activity_led = red; } bool LoRaHandler::ping() { @@ -145,3 +154,7 @@ void LoRaHandler::resetJoinAttempts() { _mutex.unlock(); } +void LoRaHandler::blinker() { + _activity_led = !_activity_led; +} + diff --git a/LoRaHandler/LoRaHandler.h b/LoRaHandler/LoRaHandler.h index a715d03..8a4816a 100644 --- a/LoRaHandler/LoRaHandler.h +++ b/LoRaHandler/LoRaHandler.h @@ -24,6 +24,11 @@ class LoRaHandler { mDot::ping_response down; } LoRaPing; + typedef enum { + green = 0, + red + } LedColor; + LoRaHandler(osThreadId main); ~LoRaHandler(); @@ -35,7 +40,7 @@ class LoRaHandler { LoRaPing getPingResults(); uint32_t getJoinAttempts(); void resetJoinAttempts(); - + void blinker(); osThreadId _main; Thread _thread; @@ -44,6 +49,8 @@ class LoRaHandler { mDot* _dot; Mutex _mutex; uint32_t _join_attempts; + DigitalInOut _activity_led; + Ticker _tick; }; #endif -- cgit v1.2.3