
Shared event example. Instead of creating special thread user can use shared event queue and dispatch the global event queue from main thread.
Fork of Shared_Events_1 by
main.cpp@0:7c7d5b625e59, 2017-12-18 (annotated)
- Committer:
- deepikabhavnani
- Date:
- Mon Dec 18 16:50:19 2017 +0000
- Revision:
- 0:7c7d5b625e59
- Child:
- 1:154179bdc39d
Shared event example: deferring from interrupt context
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
deepikabhavnani | 0:7c7d5b625e59 | 1 | #include "mbed.h" |
deepikabhavnani | 0:7c7d5b625e59 | 2 | #include "mbed_events.h" |
deepikabhavnani | 0:7c7d5b625e59 | 3 | |
deepikabhavnani | 0:7c7d5b625e59 | 4 | DigitalOut led1(LED1); |
deepikabhavnani | 0:7c7d5b625e59 | 5 | InterruptIn sw(SW2); |
deepikabhavnani | 0:7c7d5b625e59 | 6 | |
deepikabhavnani | 0:7c7d5b625e59 | 7 | void rise_handler(void) { |
deepikabhavnani | 0:7c7d5b625e59 | 8 | // Toggle LED |
deepikabhavnani | 0:7c7d5b625e59 | 9 | led1 = !led1; |
deepikabhavnani | 0:7c7d5b625e59 | 10 | } |
deepikabhavnani | 0:7c7d5b625e59 | 11 | |
deepikabhavnani | 0:7c7d5b625e59 | 12 | void fall_handler(void) { |
deepikabhavnani | 0:7c7d5b625e59 | 13 | printf("fall_handler in context %p\r\n", Thread::gettid()); |
deepikabhavnani | 0:7c7d5b625e59 | 14 | // Toggle LED |
deepikabhavnani | 0:7c7d5b625e59 | 15 | led1 = !led1; |
deepikabhavnani | 0:7c7d5b625e59 | 16 | } |
deepikabhavnani | 0:7c7d5b625e59 | 17 | |
deepikabhavnani | 0:7c7d5b625e59 | 18 | int main() { |
deepikabhavnani | 0:7c7d5b625e59 | 19 | // Request the shared queue |
deepikabhavnani | 0:7c7d5b625e59 | 20 | EventQueue *queue = mbed_event_queue(); |
deepikabhavnani | 0:7c7d5b625e59 | 21 | printf("Starting in context %p\r\n", Thread::gettid()); |
deepikabhavnani | 0:7c7d5b625e59 | 22 | // The 'rise' handler will execute in IRQ context |
deepikabhavnani | 0:7c7d5b625e59 | 23 | sw.rise(rise_handler); |
deepikabhavnani | 0:7c7d5b625e59 | 24 | // The 'fall' handler will execute in the context of the shared queue thread |
deepikabhavnani | 0:7c7d5b625e59 | 25 | sw.fall(queue->event(fall_handler)); |
deepikabhavnani | 0:7c7d5b625e59 | 26 | } |