summaryrefslogtreecommitdiff
path: root/LoRaHandler
diff options
context:
space:
mode:
authorMike Fiore <mfiore@multitech.com>2015-12-07 11:20:24 -0600
committerMike Fiore <mfiore@multitech.com>2015-12-07 11:20:24 -0600
commitbbcc246e8e52b946f7813d0e209ca10161794e00 (patch)
tree4ab0877174389e753bfa2040f470ac2dcbfc5217 /LoRaHandler
parent7e1f994816b7baa71167fd9a04421cdf9cb37424 (diff)
downloadmtdot-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.cpp15
-rw-r--r--LoRaHandler/LoRaHandler.h9
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