Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
7 years, 9 months ago.
BLE::waitForEvent()
Hello.
I'm using mbed board Ty51822r3 with nRF51822. In this environment, BLE::waitforEvent is transported to nRF5xn::waitForEvent().
nRF5xn.cpp
void nRF5xn::waitForEvent(void) { processEvents(); sd_app_evt_wait(); }
I developed my BLE peripheral application with BLE API. Busy-loop in main method like below.
my code
while (true) { ProcessMyEvent(); ble.waitForEvent(); }
This code does not work well. ble.waitForEvent() call processEvents(), and BLE callbacks enqueue my events.
But after that, Call sd_app_evt_wait() and go into sleep. Therefore, I can not process my events.
I exchange the order of processEvent() & sd_app_evt_wait() in ble.waitForEvent() for this problem. It seems well. Is there any problem for this solution?
Question relating to:
1 Answer
7 years, 9 months ago.
waitForEvent() puts the processor to sleep until a hardware interrupt occurs. Try setting up a ticker to wake up the processor periodically.
... Ticker ticker; ticker.attach(wakeup_event_cb, 0.1); while (true) { ProcessMyEvent(); ble.waitForEvent(); } ...
The callback doesn't have to do anything, just be there.
void wakeup_event_cb() { //nothing to do };