Loading...
Searching...
No Matches
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
38
39#include "event.h"
40#include "ztimer.h"
41
42#ifdef __cplusplus
43extern "C" {
44#endif
45
55
65 event_queue_t *queue, event_t *event);
66
67#if IS_USED(MODULE_EVENT_TIMEOUT) || DOXYGEN
78 event_t *event);
79#endif
80
95void event_timeout_set(event_timeout_t *event_timeout, uint32_t timeout);
96
108
115static 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.
struct PTRTAG event_queue_t
event queue structure
struct event event_t
event structure forward declaration
Definition event.h:135
bool event_is_queued(const event_queue_t *queue, const event_t *event)
Check if an event is already queued.
struct ztimer_clock ztimer_clock_t
ztimer_clock_t forward declaration
Definition ztimer.h:290
unsigned ztimer_is_set(const ztimer_clock_t *clock, const ztimer_t *timer)
Check if a timer is currently active.
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 structure
Definition ztimer.h:319
ztimer API