Mistake on this page?
Report an issue in GitHub or email us

Event

The Event class provides APIs to configure events delay and period timings. You can use post API to post an event to the underlying EventQueue, and you can use cancel to cancel the most recently posted event.

The Event class is thread safe. The post and cancel APIs are IRQ safe.

Event class reference

EventQueue example: posting events to the queue

The code below demonstrates how you can instantiate, configure and post events.

/*
 * Copyright (c) 2020 Arm Limited and affiliates.
 * SPDX-License-Identifier: Apache-2.0
 */
#include "mbed.h"

// Creates an event bound to the specified event queue
EventQueue queue;
void handler(int count);
Event<void(int)> event(&queue, handler);

void handler(int count)
{
    printf("Event = %d \n", count);
    return;
}

void post_events(void)
{

    // Events can be posted multiple times and enqueue gracefully until
    // the dispatch function is called.
    event.post(1);
    event.post(2);
    event.post(3);
}

int main()
{

    Thread event_thread;

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

    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();
}

Important Information for this Arm website

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn how they can be disabled. By disabling cookies, some features of the site will not work.