diff options
author | Mike Fiore <mfiore@multitech.com> | 2015-12-07 11:20:24 -0600 |
---|---|---|
committer | Mike Fiore <mfiore@multitech.com> | 2015-12-07 11:20:24 -0600 |
commit | bbcc246e8e52b946f7813d0e209ca10161794e00 (patch) | |
tree | 4ab0877174389e753bfa2040f470ac2dcbfc5217 /LoRaHandler | |
parent | 7e1f994816b7baa71167fd9a04421cdf9cb37424 (diff) | |
download | mtdot-box-evb-factory-firmware-bbcc246e8e52b946f7813d0e209ca10161794e00.tar.gz mtdot-box-evb-factory-firmware-bbcc246e8e52b946f7813d0e209ca10161794e00.tar.bz2 mtdot-box-evb-factory-firmware-bbcc246e8e52b946f7813d0e209ca10161794e00.zip |
LED1 is red when not joined, green when joined, and blinks when communicating with gateway
Diffstat (limited to 'LoRaHandler')
-rw-r--r-- | LoRaHandler/LoRaHandler.cpp | 15 | ||||
-rw-r--r-- | LoRaHandler/LoRaHandler.h | 9 |
2 files changed, 22 insertions, 2 deletions
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 |