Event class example to manually instantiate, configure and post events.

Committer:
deepikabhavnani
Date:
Thu Nov 30 21:50:58 2017 +0000
Revision:
0:86c4bf2d90fa
Initial Draft

Who changed what in which revision?

UserRevisionLine numberNew 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 }