Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: nrf51-sdk-bluetooth-mdw
Fork of nRF51822 by
Diff: source/btle/btle.cpp
- Revision:
- 431:95158d6d493f
- Parent:
- 430:db7edc9ad0bc
- Child:
- 434:95f196557042
--- a/source/btle/btle.cpp Fri Sep 25 15:26:40 2015 +0100
+++ b/source/btle/btle.cpp Fri Sep 25 15:26:40 2015 +0100
@@ -50,6 +50,30 @@
pstorage_sys_event_handler(sys_evt);
}
+/**
+ * This function is called in interrupt context to handle BLE events; i.e. pull
+ * system and user events out of the pending events-queue of the BLE stack. The
+ * BLE stack signals the availability of events by the triggering the SWI2
+ * interrupt, which forwards the handling to this function.
+ *
+ * The event processing loop is implemented in intern_softdevice_events_execute().
+ *
+ * In mbed OS, a callback for intern_softdevice_events_execute() is posted
+ * to the scheduler, which then executes in thread mode. In mbed-classic,
+ * event processing happens right-away in interrupt context (which is more
+ * risk-prone). In either case, the logic of event processing is identical.
+ */
+static uint32_t eventHandler()
+{
+#ifdef YOTTA_CFG_MBED_OS
+ minar::Scheduler::postCallback(intern_softdevice_events_execute);
+#else
+ intern_softdevice_events_execute();
+#endif
+
+ return NRF_SUCCESS;
+}
+
error_t btle_init(void)
{
nrf_clock_lfclksrc_t clockSource;
@@ -58,7 +82,7 @@
} else {
clockSource = NRF_CLOCK_LFCLKSRC_RC_250_PPM_4000MS_CALIBRATION;
}
- SOFTDEVICE_HANDLER_INIT(clockSource, NULL);
+ SOFTDEVICE_HANDLER_INIT(clockSource, eventHandler);
// Enable BLE stack
/**
