Millisecond interval event timers

Provides timers for events up to $2^{32}$ milliseconds in the future.

Note

Experimental and likely to replaced with unified timer API

RIOT’s main timer subsystem is xtimer, but for many applications xtimer’s 64-bit absolute time values are wasteful or clumsy to use.

Compared to xtimer, evtimer offers:

  • only relative 32-bit millisecond timer values Events can be scheduled with a relative offset of up to ~49.7 days in the future. **For time-critical stuff, use xtimer!**
  • more flexible, “intrusive” timer type evtimer.h::evtimer_event_t only contains the necessary fields, which can be extended as needed, and handlers define actions taken on timer triggers. Check out evtimer_msg_event_t as example.
  • uses xtimer as backend

struct evtimer_event evtimer_event_t

Generic event.

void(* evtimer_callback_t()

Event timer callback type.

evtimer_t evtimer_msg_t

IPC-message event timer.

void evtimer_init(evtimer_t * evtimer, evtimer.h::evtimer_callback_t handler)

Initializes an event timer.

Parameters

evtimer:An event timer
handler:An event handler function

void evtimer_add(evtimer_t * evtimer, evtimer.h::evtimer_event_t * event)

Adds event to an event timer.

Parameters

evtimer:An event timer
event:An event

void evtimer_del(evtimer_t * evtimer, evtimer.h::evtimer_event_t * event)

Removes an event from an event timer.

Parameters

evtimer:An event timer
event:An event

void evtimer_print(const evtimer_t * evtimer)

Print overview of current state of an event timer.

Parameters

evtimer:An event timer

void evtimer_add_msg(evtimer_msg.h::evtimer_msg_t * evtimer, evtimer_msg_event_t * event, kernel_types.h::kernel_pid_t target_pid)

Adds event to an event timer that handles events via IPC.

Parameters

evtimer:An event timer
event:An event
target_pid:The PID of the thread that should receive the IPC message

void _evtimer_msg_handler(evtimer.h::evtimer_event_t * event)

Event handler for IPC messages.

Parameters

event:The event to handle

void evtimer_init_msg(evtimer_t * evtimer)

Initializes event timer to handle events via IPC.

Parameters

evtimer:An event timer

struct evtimer_event

Generic event.

struct evtimer_event * next

the next event in the queue

uint32_t offset

offset in milliseconds from previous event

struct evtimer_t

Event timer.

xtimer.h::xtimer_t timer

Timer.

evtimer.h::evtimer_callback_t callback

Handler function for this evtimer’s event type.

evtimer.h::evtimer_event_t * events

Event queue.

struct evtimer_msg_event_t

IPC-message event.

evtimer.h::evtimer_event_t event

base class

msg_t msg

the IPC message to generate on event