diff options
author | Mike Fiore <mfiore@multitech.com> | 2015-11-17 13:04:00 -0600 |
---|---|---|
committer | Mike Fiore <mfiore@multitech.com> | 2015-11-17 13:04:00 -0600 |
commit | 11ac166f3476116b08eeaffc25d80b163573089b (patch) | |
tree | 0675e50c2377dbffc37ce3906967b17478f225c0 /ButtonHandler | |
parent | b86c62d46385ff454a939f23277761b8ee6b8a0d (diff) | |
download | mtdot-box-evb-factory-firmware-11ac166f3476116b08eeaffc25d80b163573089b.tar.gz mtdot-box-evb-factory-firmware-11ac166f3476116b08eeaffc25d80b163573089b.tar.bz2 mtdot-box-evb-factory-firmware-11ac166f3476116b08eeaffc25d80b163573089b.zip |
join works, but only once - added object for running LoRa operations in a thread, lots of misc updates
Diffstat (limited to 'ButtonHandler')
-rw-r--r-- | ButtonHandler/ButtonHandler.cpp | 12 | ||||
-rw-r--r-- | ButtonHandler/ButtonHandler.h | 2 |
2 files changed, 10 insertions, 4 deletions
diff --git a/ButtonHandler/ButtonHandler.cpp b/ButtonHandler/ButtonHandler.cpp index e32cb42..25cf08e 100644 --- a/ButtonHandler/ButtonHandler.cpp +++ b/ButtonHandler/ButtonHandler.cpp @@ -1,6 +1,7 @@ #include "ButtonHandler.h" +#include "MTSLog.h" -#define signal (uint32_t)0xFF +#define signal (int32_t)0xA0 typedef enum { b_none = 0, @@ -13,13 +14,14 @@ typedef enum { InternalButtonEvent event = b_none; bool check_sw1 = false; -void worker(void const* argument) { +void b_worker(void const* argument) { ButtonHandler* b = (ButtonHandler*)argument; osEvent e; while (true) { e = Thread::signal_wait(signal, 250); if (e.status == osEventSignal) { + logInfo("button worker received signal"); switch (event) { case b_sw1_fall: if (! b->_sw1_running) { @@ -84,7 +86,7 @@ void worker(void const* argument) { ButtonHandler::ButtonHandler(osThreadId main) : _main(main), - _thread(worker, (void*)this), + _thread(b_worker, (void*)this), _sw1(PA_12), _sw2(PA_11), _sw1_time(0), @@ -113,20 +115,24 @@ ButtonHandler::ButtonEvent ButtonHandler::getButtonEvent() { void ButtonHandler::sw1_fall() { event = b_sw1_fall; _thread.signal_set(signal); + _thread.signal_clr(signal); } void ButtonHandler::sw1_rise() { event = b_sw1_rise; _thread.signal_set(signal); + _thread.signal_clr(signal); } void ButtonHandler::sw2_fall() { event = b_sw2_fall; _thread.signal_set(signal); + _thread.signal_clr(signal); } void ButtonHandler::sw2_rise() { event = b_sw2_rise; _thread.signal_set(signal); + _thread.signal_clr(signal); } diff --git a/ButtonHandler/ButtonHandler.h b/ButtonHandler/ButtonHandler.h index 00898c6..e99c767 100644 --- a/ButtonHandler/ButtonHandler.h +++ b/ButtonHandler/ButtonHandler.h @@ -4,7 +4,7 @@ #include "mbed.h" #include "rtos.h" -#define buttonSignal (uint32_t)0x01 +#define buttonSignal (int32_t)0x01 class ButtonHandler { public: |