Go to the documentation of this file.
31 #if (CH_CFG_USE_EVENTS == TRUE) || defined(__DOXYGEN__)
89 #define ALL_EVENTS ((eventmask_t)-1)
94 #define EVENT_MASK(eid) ((eventmask_t)1 << (eventmask_t)(eid))
102 #define _EVENTSOURCE_DATA(name) {(event_listener_t *)(&name)}
111 #define EVENTSOURCE_DECL(name) event_source_t name = _EVENTSOURCE_DATA(name)
126 #define chEvtObjectInit(esp) do { \
127 (esp)->next = (event_listener_t *)(esp); \
144 #define chEvtRegisterMask(esp, elp, events) \
145 chEvtRegisterMaskWithFlags(esp, elp, events, (eventflags_t)-1)
160 #define chEvtRegister(esp, elp, event) \
161 chEvtRegisterMask(esp, elp, EVENT_MASK(event))
171 #define chEvtIsListeningI(esp) (bool)((esp) != (event_source_t *)(esp)->next)
181 #define chEvtBroadcast(esp) chEvtBroadcastFlags(esp, (eventflags_t)0)
195 #define chEvtBroadcastI(esp) chEvtBroadcastFlagsI(esp, (eventflags_t)0)
206 #define chEvtAddEventsI(events) (nil.current->epmask |= events)
216 #define chEvtGetEventsX(void) (nil.current->epmask)
235 #define chEvtWaitOne(events) chEvtWaitOneTimeout(events, TIME_INFINITE)
250 #define chEvtWaitAny(events) chEvtWaitAnyTimeout(events, TIME_INFINITE)
264 #define chEvtWaitAll(events) chEvtWaitAllTimeout(events, TIME_INFINITE)
eventmask_t chEvtGetAndClearEvents(eventmask_t events)
Clears the pending events specified in the events mask.
eventmask_t chEvtAddEvents(eventmask_t events)
Adds (OR) a set of events to the current thread, this is much faster than using chEvtBroadcast() or c...
void chEvtSignalI(thread_t *tp, eventmask_t events)
Adds a set of event flags directly to the specified thread_t.
void chEvtSignal(thread_t *tp, eventmask_t events)
Adds a set of event flags directly to the specified thread_t.
void(* evhandler_t)(eventid_t id)
Event Handler callback function.
struct event_source event_source_t
Event Source structure.
eventflags_t chEvtGetAndClearFlags(event_listener_t *elp)
Returns the flags associated to an event_listener_t.
void chEvtBroadcastFlags(event_source_t *esp, eventflags_t flags)
Signals all the Event Listeners registered on the specified Event Source.
eventmask_t chEvtWaitAllTimeout(eventmask_t events, sysinterval_t timeout)
Waits for all the specified events.
eventmask_t chEvtGetAndClearEventsI(eventmask_t events)
Clears the pending events specified in the events mask.
eventflags_t flags
Flags added to the listener by the event source.
thread_t * listener
Thread interested in the event source.
Event Listener structure.
Structure representing a thread.
void chEvtUnregister(event_source_t *esp, event_listener_t *elp)
Unregisters an Event Listener from its Event Source.
eventmask_t chEvtWaitAnyTimeout(eventmask_t events, sysinterval_t timeout)
Waits for any of the specified events.
eventflags_t wflags
Flags that this listener interested in.
eventmask_t events
Events to be set in the listening thread.
uint64_t sysinterval_t
Type of time interval.
void chEvtBroadcastFlagsI(event_source_t *esp, eventflags_t flags)
Signals all the Event Listeners registered on the specified Event Source.
event_listener_t * next
Next Event Listener registered on the event source.
void chEvtRegisterMaskWithFlags(event_source_t *esp, event_listener_t *elp, eventmask_t events, eventflags_t wflags)
Registers an Event Listener on an Event Source.
eventflags_t chEvtGetAndClearFlagsI(event_listener_t *elp)
Returns the unmasked flags associated to an event_listener_t.
event_listener_t * next
First Event Listener registered on the Event Source.
void chEvtDispatch(const evhandler_t *handlers, eventmask_t events)
Invokes the event handlers associated to an event flags mask.
eventmask_t chEvtWaitOneTimeout(eventmask_t events, sysinterval_t timeout)
Waits for exactly one of the specified events.