mbed_example
/
mbed-os-example-events
Event class example to manually instantiate, configure and post events.
main.cpp@0:86c4bf2d90fa, 2017-11-30 (annotated)
- Committer:
- deepikabhavnani
- Date:
- Thu Nov 30 21:50:58 2017 +0000
- Revision:
- 0:86c4bf2d90fa
Initial Draft
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
deepikabhavnani | 0:86c4bf2d90fa | 1 | #include "mbed.h" |
deepikabhavnani | 0:86c4bf2d90fa | 2 | // Creates an event bound to the specified event queue |
deepikabhavnani | 0:86c4bf2d90fa | 3 | EventQueue queue; |
deepikabhavnani | 0:86c4bf2d90fa | 4 | void handler(int count); |
deepikabhavnani | 0:86c4bf2d90fa | 5 | Event<void(int)> event(&queue, handler); |
deepikabhavnani | 0:86c4bf2d90fa | 6 | |
deepikabhavnani | 0:86c4bf2d90fa | 7 | void handler(int count) { |
deepikabhavnani | 0:86c4bf2d90fa | 8 | printf("Event = %d \n", count); |
deepikabhavnani | 0:86c4bf2d90fa | 9 | return; |
deepikabhavnani | 0:86c4bf2d90fa | 10 | } |
deepikabhavnani | 0:86c4bf2d90fa | 11 | |
deepikabhavnani | 0:86c4bf2d90fa | 12 | void post_events(void) { |
deepikabhavnani | 0:86c4bf2d90fa | 13 | |
deepikabhavnani | 0:86c4bf2d90fa | 14 | // Events can be posted multiple times and enqueue gracefully until |
deepikabhavnani | 0:86c4bf2d90fa | 15 | // the dispatch function is called. |
deepikabhavnani | 0:86c4bf2d90fa | 16 | event.post(1); |
deepikabhavnani | 0:86c4bf2d90fa | 17 | event.post(2); |
deepikabhavnani | 0:86c4bf2d90fa | 18 | event.post(3); |
deepikabhavnani | 0:86c4bf2d90fa | 19 | } |
deepikabhavnani | 0:86c4bf2d90fa | 20 | |
deepikabhavnani | 0:86c4bf2d90fa | 21 | int main() { |
deepikabhavnani | 0:86c4bf2d90fa | 22 | |
deepikabhavnani | 0:86c4bf2d90fa | 23 | Thread event_thread; |
deepikabhavnani | 0:86c4bf2d90fa | 24 | |
deepikabhavnani | 0:86c4bf2d90fa | 25 | // The event can be manually configured for special timing requirements |
deepikabhavnani | 0:86c4bf2d90fa | 26 | // specified in milliseconds |
deepikabhavnani | 0:86c4bf2d90fa | 27 | event.delay(100); // Starting delay - 100 msec |
deepikabhavnani | 0:86c4bf2d90fa | 28 | event.period(200); // Delay between each evet - 200msec |
deepikabhavnani | 0:86c4bf2d90fa | 29 | |
deepikabhavnani | 0:86c4bf2d90fa | 30 | event_thread.start(callback(post_events)); |
deepikabhavnani | 0:86c4bf2d90fa | 31 | |
deepikabhavnani | 0:86c4bf2d90fa | 32 | // Posted events are dispatched in the context of the queue's |
deepikabhavnani | 0:86c4bf2d90fa | 33 | // dispatch function |
deepikabhavnani | 0:86c4bf2d90fa | 34 | queue.dispatch(400); // Dispatch time - 400msec |
deepikabhavnani | 0:86c4bf2d90fa | 35 | // 400 msec - Only 2 set of events will be dispatched as period is 200 msec |
deepikabhavnani | 0:86c4bf2d90fa | 36 | |
deepikabhavnani | 0:86c4bf2d90fa | 37 | event_thread.join(); |
deepikabhavnani | 0:86c4bf2d90fa | 38 | } |