Delta / Mbed OS Delta_BLE_LEDBlinker

Fork of BLE_LEDBlinker by Bluetooth Low Energy

Revision:
12:f0ffc006e62d
diff -r 023d96b0e427 -r f0ffc006e62d mbed-events/EventLoop.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-events/EventLoop.cpp	Fri Dec 09 09:12:57 2016 +0000
@@ -0,0 +1,50 @@
+#ifdef MBED_CONF_RTOS_PRESENT
+#include "EventLoop.h"
+
+#include "events.h"
+#include "rtos.h"
+#include "mbed.h"
+
+
+EventLoop::EventLoop(
+        osPriority priority,
+        unsigned event_size,
+        unsigned char *event_pointer,
+        uint32_t stack_size,
+        unsigned char *stack_pointer)
+    : EventQueue(event_size, event_pointer)
+    , _thread(priority, stack_size, stack_pointer)
+    , _running(false) {
+}
+
+EventLoop::~EventLoop() {
+    stop();
+}
+
+static void run(EventLoop *loop) {
+    loop->dispatch();
+}
+
+osStatus EventLoop::start() {
+    if (_running) {
+        return osOK;
+    }
+
+    osStatus status = _thread.start(this, run);
+    _running = (status == osOK);
+    return status;
+}
+
+osStatus EventLoop::stop() {
+    if (!_running) {
+        return osOK;
+    }
+
+    break_();
+    osStatus status = _thread.join();
+    _running = false;
+    return status;
+}
+
+#endif
+