RUI3 (RAK Unified Interface 3) - RAK4631
fund_circular_queue.h
Go to the documentation of this file.
1 
9 #ifndef _FUND_CIRCULAR_QUEUE_H_
10 #define _FUND_CIRCULAR_QUEUE_H_
11 
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 
16 #include <stdint.h>
17 #include <stddef.h>
18 #include <stdbool.h>
19 
20 typedef struct
21 {
22  void *p_buffer;
23  size_t size;
24  size_t element_size;
25  volatile size_t start;
26  volatile size_t end;
28 
29 #define FUND_CIRCULAR_QUEUE_INIT(_type, _name, _size) \
30  static _type _name##_buffer[(_size) + 1]; \
31  static fund_circular_queue_t _name = \
32  { \
33  .p_buffer = _name##_buffer, \
34  .size = (_size), \
35  .element_size = sizeof(_type), \
36  }; \
37 
40 size_t fund_circular_queue_in(fund_circular_queue_t const *p_queue, void const *p_data, size_t element_count);
41 size_t fund_circular_queue_out(fund_circular_queue_t const *p_queue, void *p_data, size_t element_count);
45 int32_t fund_circular_queue_peek(fund_circular_queue_t const *p_queue, void *p_element);
46 
47 #ifdef __cplusplus
48 }
49 #endif
50 
51 #endif //_FUND_EVENT_QUEUE_H_
size_t element_size
Definition: fund_circular_queue.h:24
size_t fund_circular_queue_available_get(fund_circular_queue_t const *p_queue)
Definition: fund_circular_queue.h:20
void fund_circular_queue_reset(fund_circular_queue_t const *p_queue)
size_t fund_circular_queue_in(fund_circular_queue_t const *p_queue, void const *p_data, size_t element_count)
size_t size
Definition: fund_circular_queue.h:23
bool fund_circular_queue_is_full(fund_circular_queue_t const *p_queue)
int32_t fund_circular_queue_peek(fund_circular_queue_t const *p_queue, void *p_element)
size_t fund_circular_queue_utilization_get(fund_circular_queue_t const *p_queue)
volatile size_t start
Definition: fund_circular_queue.h:25
volatile size_t end
Definition: fund_circular_queue.h:26
void * p_buffer
Definition: fund_circular_queue.h:22
size_t fund_circular_queue_out(fund_circular_queue_t const *p_queue, void *p_data, size_t element_count)
bool fund_circular_queue_is_empty(fund_circular_queue_t const *p_queue)