UserAllocatedEvent class example to manually instantiate, configure and post events onto the static EventQueue.

main.cpp

Committer:
macboc01@E110593.Arm.com
Date:
2019-09-04
Revision:
0:c7b889925ac6

File content as of revision 0:c7b889925ac6:

#include "mbed.h"


// Creates static event queue
static EventQueue queue(0);
void handler(int count);
// Creates an event for later bound
auto event1 = make_user_allocated_event(handler, 1);
auto event2 = make_user_allocated_event(handler, 2);
// Creates an event bound to the specified event queue
auto event3 = queue.make_user_allocated_event(handler, 3);
 
void handler(int count) {
    printf("UserAllocatedEvent = %d \n\r", count);
    return;
}
 
void post_events(void) 
{ 
    // Events can be posted multiple times and enqueue gracefully until
    // the dispatch function is called.
    event1.call_on(&queue);
    event2.call_on(&queue);
    event3.call();
}

int main() 
{
    Thread event_thread;

    // The event can be manually configured for special timing requirements
    // specified in milliseconds
    // Starting delay - 100 msec
    // Delay between each event - 200msec
    event1.delay(100);
    event1.period(200);
    event2.delay(100);
    event2.period(200);
    event3.delay(100);
    event3.period(200);

    event_thread.start(callback(post_events));

    // Posted events are dispatched in the context of the queue's
    // dispatch function 
    queue.dispatch(400);        // Dispatch time - 400msec
    // 400 msec - Only 2 set of events will be dispatched as period is 200 msec

    event_thread.join();
}