example firmware for nRF51-Dongle to use with Opentrigger
Dependencies: BLE_API mbed nRF51822
Fork of BLE_Button by
Diff: main.cpp
- Revision:
- 9:0f6951db24f1
- Parent:
- 8:a7ba7aaba460
- Child:
- 10:7943b5c1117a
--- a/main.cpp Tue Sep 29 09:58:02 2015 +0000 +++ b/main.cpp Fri Oct 09 13:37:52 2015 +0000 @@ -25,16 +25,27 @@ const static char DEVICE_NAME[] = "Button"; static const uint16_t uuid16_list[] = {ButtonService::BUTTON_SERVICE_UUID}; +enum { + RELEASED = 0, + PRESSED, + IDLE +}; +static uint8_t buttonState = IDLE; + ButtonService *buttonServicePtr; void buttonPressedCallback(void) { - buttonServicePtr->updateButtonState(true); + /* Note that the buttonPressedCallback() executes in interrupt context, so it is safer to access + * BLE device API from the main thread. */ + buttonState = PRESSED; } void buttonReleasedCallback(void) { - buttonServicePtr->updateButtonState(false); + /* Note that the buttonReleasedCallback() executes in interrupt context, so it is safer to access + * BLE device API from the main thread. */ + buttonState = RELEASED; } void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *params) @@ -70,6 +81,11 @@ ble.gap().startAdvertising(); while (true) { + if (buttonState!=IDLE) { + buttonServicePtr->updateButtonState(buttonState); + buttonState = IDLE; + } + ble.waitForEvent(); } }