Shared event example. Instead of creating special thread user can use shared event queue i.e. sharing it with other system components and saving RAM. As the event queue is shared, you should limit the execution time of your event functions to avoid delaying other users’ events excessively.

Files at this revision

API Documentation at this revision

Comitter:
deepikabhavnani
Date:
Mon Dec 18 16:50:19 2017 +0000
Commit message:
Shared event example: deferring from interrupt context

Changed in this revision

.gitignore Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed-os.lib Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 7c7d5b625e59 .gitignore
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/.gitignore	Mon Dec 18 16:50:19 2017 +0000
@@ -0,0 +1,4 @@
+.build
+.mbed
+projectfiles
+*.py*
diff -r 000000000000 -r 7c7d5b625e59 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Dec 18 16:50:19 2017 +0000
@@ -0,0 +1,26 @@
+#include "mbed.h"
+#include "mbed_events.h"
+ 
+DigitalOut led1(LED1);
+InterruptIn sw(SW2);
+ 
+void rise_handler(void) {
+    // Toggle LED
+    led1 = !led1;
+}
+ 
+void fall_handler(void) {
+    printf("fall_handler in context %p\r\n", Thread::gettid());
+    // Toggle LED
+    led1 = !led1;
+}
+ 
+int main() {
+    // Request the shared queue
+    EventQueue *queue = mbed_event_queue();
+    printf("Starting in context %p\r\n", Thread::gettid());
+    // The 'rise' handler will execute in IRQ context
+    sw.rise(rise_handler);
+    // The 'fall' handler will execute in the context of the shared queue thread
+    sw.fall(queue->event(fall_handler));
+}
diff -r 000000000000 -r 7c7d5b625e59 mbed-os.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed-os.lib	Mon Dec 18 16:50:19 2017 +0000
@@ -0,0 +1,1 @@
+https://github.com/ARMmbed/mbed-os/#5f6572179d66ce4c09d6517b659ac51133cc980d