summaryrefslogtreecommitdiff
path: root/ButtonHandler
diff options
context:
space:
mode:
authorMike Fiore <mfiore@multitech.com>2015-11-17 13:04:00 -0600
committerMike Fiore <mfiore@multitech.com>2015-11-17 13:04:00 -0600
commit11ac166f3476116b08eeaffc25d80b163573089b (patch)
tree0675e50c2377dbffc37ce3906967b17478f225c0 /ButtonHandler
parentb86c62d46385ff454a939f23277761b8ee6b8a0d (diff)
downloadmtdot-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.cpp12
-rw-r--r--ButtonHandler/ButtonHandler.h2
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: