dpl_eventq.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2020 Inria
3  *
4  * This file is subject to the terms and conditions of the GNU Lesser
5  * General Public License v2.1. See the file LICENSE in the top level
6  * directory for more details.
7  */
8 
20 #ifndef DPL_DPL_EVENTQ_H
21 #define DPL_DPL_EVENTQ_H
22 
23 #include <dpl/dpl_types.h>
24 
25 #include "os/os_eventq.h"
26 #include "uwb_core.h"
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
35 struct dpl_event {
36  struct os_event ev;
37 };
38 
42 struct dpl_eventq {
43  struct os_eventq evq;
44 };
45 
49 typedef void dpl_event_fn(struct dpl_event *ev);
50 
58 static inline void dpl_event_init(struct dpl_event *ev, dpl_event_fn * fn,
59  void *arg)
60 {
61  os_event_init(&ev->ev, (os_event_fn*) fn, arg);
62 }
63 
71 static inline bool dpl_event_is_queued(struct dpl_event *ev)
72 {
73  return os_event_is_queued(&ev->ev);
74 }
75 
81 static inline void *dpl_event_get_arg(struct dpl_event *ev)
82 {
83  return os_event_get_arg(&ev->ev);
84 }
85 
92 static inline void dpl_event_set_arg(struct dpl_event *ev, void *arg)
93 {
94  os_event_set_arg(&ev->ev, arg);
95 }
96 
102 static inline void dpl_event_run(struct dpl_event *ev)
103 {
104  os_event_run(&ev->ev);
105 }
106 
112 static inline void dpl_eventq_init(struct dpl_eventq *evq)
113 {
114  os_eventq_init(&evq->evq);
115 }
116 
122 static inline int dpl_eventq_inited(struct dpl_eventq *evq)
123 {
124  return os_eventq_inited(&evq->evq);
125 }
126 
134 static inline void dpl_eventq_deinit(struct dpl_eventq *evq)
135 {
136  (void) evq;
137  /* Can't deinit an eventq in RIOT */
138 }
139 
147 static inline struct dpl_event * dpl_eventq_get(struct dpl_eventq *evq)
148 {
149  return (struct dpl_event *) os_eventq_get(&evq->evq, DPL_WAIT_FOREVER);
150 }
151 
157 static inline struct dpl_event * dpl_eventq_get_no_wait(struct dpl_eventq *evq)
158 {
159  return (struct dpl_event *) os_eventq_get_no_wait(&evq->evq);
160 }
161 
168 static inline void dpl_eventq_put(struct dpl_eventq *evq, struct dpl_event *ev)
169 {
170  os_eventq_put(&evq->evq, &ev->ev);
171 }
172 
179 static inline void dpl_eventq_remove(struct dpl_eventq *evq, struct dpl_event *ev)
180 {
181  os_eventq_remove(&evq->evq, &ev->ev);
182 }
183 
189 static inline void dpl_eventq_run(struct dpl_eventq *evq)
190 {
191  os_eventq_run(&evq->evq);
192 }
193 
201 static inline bool dpl_eventq_is_empty(struct dpl_eventq *evq)
202 {
203  return os_eventq_is_empty(&evq->evq);
204 }
205 
214 static inline struct dpl_eventq * dpl_eventq_dflt_get(void)
215 {
216  return (struct dpl_eventq *) uwb_core_get_eventq();
217 }
218 
219 #ifdef __cplusplus
220 }
221 #endif
222 
223 #endif /* DPL_DPL_EVENTQ_H */
static struct dpl_event * dpl_eventq_get(struct dpl_eventq *evq)
Get next event from event queue, blocking.
Definition: dpl_eventq.h:147
static void dpl_event_run(struct dpl_event *ev)
Runs an event.
Definition: dpl_eventq.h:102
static bool dpl_eventq_is_empty(struct dpl_eventq *evq)
Check if queue is empty.
Definition: dpl_eventq.h:201
static void * dpl_event_get_arg(struct dpl_event *ev)
Runs an event.
Definition: dpl_eventq.h:81
static void dpl_eventq_remove(struct dpl_eventq *evq, struct dpl_event *ev)
Remove an event from the queue.
Definition: dpl_eventq.h:179
static int dpl_eventq_inited(struct dpl_eventq *evq)
Check whether the event queue is initialized.
Definition: dpl_eventq.h:122
static void dpl_eventq_run(struct dpl_eventq *evq)
Gets and runs an event from the queue callback.
Definition: dpl_eventq.h:189
static struct dpl_eventq * dpl_eventq_dflt_get(void)
Retrieves the default event queue.
Definition: dpl_eventq.h:214
void dpl_event_fn(struct dpl_event *ev)
dpl event callback function
Definition: dpl_eventq.h:49
static void dpl_event_set_arg(struct dpl_event *ev, void *arg)
Set the vent arg.
Definition: dpl_eventq.h:92
static void dpl_event_init(struct dpl_event *ev, dpl_event_fn *fn, void *arg)
Init a event.
Definition: dpl_eventq.h:58
static void dpl_eventq_put(struct dpl_eventq *evq, struct dpl_event *ev)
Put an event on the event queue.
Definition: dpl_eventq.h:168
static struct dpl_event * dpl_eventq_get_no_wait(struct dpl_eventq *evq)
Get next event from event queue, non-blocking.
Definition: dpl_eventq.h:157
static void dpl_eventq_deinit(struct dpl_eventq *evq)
Deinitialize an event queue.
Definition: dpl_eventq.h:134
static void dpl_eventq_init(struct dpl_eventq *evq)
Initialize the event queue.
Definition: dpl_eventq.h:112
static bool dpl_event_is_queued(struct dpl_event *ev)
Check if event is in queue.
Definition: dpl_eventq.h:71
uwb-core DPL (Decawave Porting Layer) types
mynewt-core event and event queue abstraction
static bool os_eventq_is_empty(struct os_eventq *evq)
Check if queue is empty.
Definition: os_eventq.h:227
static void os_event_init(struct os_event *ev, os_event_fn *fn, void *arg)
Init a event.
Definition: os_eventq.h:60
static void os_event_set_arg(struct os_event *ev, void *arg)
Set the event argument.
Definition: os_eventq.h:100
static int os_eventq_inited(struct os_eventq *evq)
Check whether the event queue is initialized.
Definition: os_eventq.h:130
static void * os_event_get_arg(struct os_event *ev)
Returns event argument.
Definition: os_eventq.h:89
static void os_eventq_remove(struct os_eventq *evq, struct os_event *ev)
Remove an event from the queue.
Definition: os_eventq.h:204
static bool os_event_is_queued(struct os_event *ev)
Check if event is in queue.
Definition: os_eventq.h:79
void os_event_fn(struct os_event *ev)
Event callback function.
Definition: os_eventq.h:51
static void os_event_run(struct os_event *ev)
Runs an event.
Definition: os_eventq.h:110
static void os_eventq_init(struct os_eventq *evq)
Initialize the event queue.
Definition: os_eventq.h:120
static struct os_event * os_eventq_get_no_wait(struct os_eventq *evq)
Get next event from event queue, non-blocking.
Definition: os_eventq.h:178
static struct os_event * os_eventq_get(struct os_eventq *evq, os_time_t tmo)
Get next event from event queue.
Definition: os_eventq.h:156
static void os_eventq_put(struct os_eventq *evq, struct os_event *ev)
Put an event on the event queue.
Definition: os_eventq.h:193
static void os_eventq_run(struct os_eventq *evq)
Gets and runs an event from the queue callback.
Definition: os_eventq.h:214
dpl event wrapper
Definition: dpl_eventq.h:35
struct os_event ev
the event
Definition: dpl_eventq.h:36
dpl event queue wrapper
Definition: dpl_eventq.h:42
struct os_eventq evq
the event queue
Definition: dpl_eventq.h:43
Event wrapper.
Definition: os_eventq.h:35
Event queue wrapper.
Definition: os_eventq.h:44
event_queue_t * uwb_core_get_eventq(void)
Retrieves the default event queue.