timeout.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2017 Inria
3  * 2017 Freie Universität Berlin
4  * 2017 Kaspar Schleiser <kaspar@schleiser.de>
5  *
6  * This file is subject to the terms and conditions of the GNU Lesser
7  * General Public License v2.1. See the file LICENSE in the top level
8  * directory for more details.
9  */
10 
11 #pragma once
12 
39 #include "event.h"
40 #include "ztimer.h"
41 
42 #ifdef __cplusplus
43 extern "C" {
44 #endif
45 
49 typedef struct {
55 
65  event_queue_t *queue, event_t *event);
66 
67 #if IS_USED(MODULE_EVENT_TIMEOUT) || DOXYGEN
77 void event_timeout_init(event_timeout_t *event_timeout, event_queue_t *queue,
78  event_t *event);
79 #endif
80 
95 void event_timeout_set(event_timeout_t *event_timeout, uint32_t timeout);
96 
108 
115 static inline bool event_timeout_is_pending(const event_timeout_t *event_timeout)
116 {
117  if (event_timeout->clock == NULL || event_timeout->queue == NULL ||
118  event_timeout->event == NULL) {
119  return false;
120  }
121 
122  return ztimer_is_set(event_timeout->clock, &event_timeout->timer)
123  || event_is_queued(event_timeout->queue, event_timeout->event);
124 }
125 
126 #ifdef __cplusplus
127 }
128 #endif
void event_timeout_set(event_timeout_t *event_timeout, uint32_t timeout)
Set a timeout.
static bool event_timeout_is_pending(const event_timeout_t *event_timeout)
Check if a timeout event is scheduled to be executed in the future.
Definition: timeout.h:115
void event_timeout_init(event_timeout_t *event_timeout, event_queue_t *queue, event_t *event)
Initialize timeout event object.
void event_timeout_ztimer_init(event_timeout_t *event_timeout, ztimer_clock_t *clock, event_queue_t *queue, event_t *event)
Initialize timeout event object.
void event_timeout_clear(event_timeout_t *event_timeout)
Clear a timeout event.
bool event_is_queued(const event_queue_t *queue, const event_t *event)
Check if an event is already queued.
unsigned ztimer_is_set(const ztimer_clock_t *clock, const ztimer_t *timer)
Check if a timer is currently active.
event queue structure
Definition: event.h:153
Timeout Event structure.
Definition: timeout.h:49
ztimer_t timer
ztimer object used for timeout
Definition: timeout.h:51
event_t * event
event to post after timeout
Definition: timeout.h:53
event_queue_t * queue
event queue to post event to
Definition: timeout.h:52
ztimer_clock_t * clock
ztimer clock to use
Definition: timeout.h:50
event structure
Definition: event.h:145
ztimer device structure
Definition: ztimer.h:370
ztimer structure
Definition: ztimer.h:319
ztimer API