Loading...
Searching...
No Matches
periodic_callback.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2022 ML!PA Consulting GmbH
3 * SPDX-License-Identifier: LGPL-2.1-only
4 */
5
6#pragma once
7
23
24#include <assert.h>
25#include "event/callback.h"
26#include "event/periodic.h"
27
28#ifdef __cplusplus
29extern "C" {
30#endif
31
39
47{
48 return event->event.arg;
49}
50
63 ztimer_clock_t *clock, event_queue_t *queue,
64 void (*callback)(void *), void *arg)
65{
66 memset(&event->event, 0, sizeof(event->event));
67 event->event.super.handler = _event_callback_handler;
68 event->event.callback = callback;
69 event->event.arg = arg;
70
71 event_periodic_init(&event->periodic, clock, queue, &event->event.super);
72}
73
92 uint32_t interval)
93{
94 assert(event->event.callback);
95 event_periodic_start(&event->periodic, interval);
96}
97
118 uint32_t interval)
119{
120 assert(event->event.callback);
121 event_periodic_start_now(&event->periodic, interval);
122}
123
141 ztimer_clock_t *clock, uint32_t interval,
142 event_queue_t *queue,
143 void (*callback)(void *), void *arg)
144{
145 event_periodic_callback_init(event, clock, queue, callback, arg);
147}
148
157{
158 return event->periodic.timer.interval;
159}
160
169 uint32_t count)
170{
171 event_periodic_set_count(&event->periodic, count);
172}
173
182{
183 return event->periodic.count;
184}
185
204
205#ifdef __cplusplus
206}
207#endif
POSIX.1-2008 compliant version of the assert macro.
#define assert(cond)
abort the program if assertion is false
Definition assert.h:143
Provides a callback-with-argument event type.
void _event_callback_handler(event_t *event)
event callback handler function (used internally)
Provides functionality to trigger periodic events.
static void event_periodic_stop(event_periodic_t *event_periodic)
Stop a periodic timeout event.
Definition periodic.h:142
static void event_periodic_start_now(event_periodic_t *event_periodic, uint32_t interval)
Starts a periodic timeout without delay for the first occurrence.
Definition periodic.h:87
static void event_periodic_set_count(event_periodic_t *event_periodic, uint32_t count)
Set the amount of times the periodic event should repeat itself.
Definition periodic.h:120
static void event_periodic_start(event_periodic_t *event_periodic, uint32_t interval)
Starts a periodic timeout.
Definition periodic.h:107
void event_periodic_init(event_periodic_t *event_periodic, ztimer_clock_t *clock, event_queue_t *queue, event_t *event)
Initialize a periodic event timeout.
struct PTRTAG event_queue_t
event queue structure
struct ztimer_clock ztimer_clock_t
ztimer_clock_t forward declaration
Definition ztimer.h:287
static void event_periodic_callback_init(event_periodic_callback_t *event, ztimer_clock_t *clock, event_queue_t *queue, void(*callback)(void *), void *arg)
Initialize a periodic callback event.
static void * event_periodic_callback_get_arg(event_periodic_callback_t *event)
Get user context from Periodic Callback Event.
static void event_periodic_callback_stop(event_periodic_callback_t *event)
Stop a periodic callback event.
static uint32_t event_periodic_callback_get_interval(const event_periodic_callback_t *event)
Get the interval in which the periodic callback event repeats.
static uint32_t event_periodic_callback_get_count(const event_periodic_callback_t *event)
Get the amount of times the periodic callback event should repeat itself.
static void event_periodic_callback_start(event_periodic_callback_t *event, uint32_t interval)
Starts a periodic callback event.
static void event_periodic_callback_set_count(event_periodic_callback_t *event, uint32_t count)
Set the amount of times the periodic callback event should repeat itself.
static void event_periodic_callback_start_now(event_periodic_callback_t *event, uint32_t interval)
Starts a periodic callback event without delay for the first occurrence.
static void event_periodic_callback_create(event_periodic_callback_t *event, ztimer_clock_t *clock, uint32_t interval, event_queue_t *queue, void(*callback)(void *), void *arg)
Initialize and start a periodic callback event.
Callback Event structure definition.
Definition callback.h:45
void * arg
callback function argument
Definition callback.h:48
Periodic Callback Event structure.
event_callback_t event
callback event portion
event_periodic_t periodic
periodic event portion
Timeout Event structure.
Definition periodic.h:50
event structure
Definition event.h:142