RUI3 (RAK Unified Interface 3) - RAK4631
fund_event_queue.h
Go to the documentation of this file.
1 
9 #ifndef _FUND_EVENT_QUEUE_H_
10 #define _FUND_EVENT_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 void (*fund_event_queue_handler_t)(void * p_event_data, uint16_t event_size);
21 
22 typedef struct
23 {
25  uint16_t event_data_size;
27 
28 #define FUND_EVENT_QUEUE_HEADER_SIZE sizeof(event_header_t)
29 
30 #define FUND_EVENT_QUEUE_BUF_SIZE(EVENT_SIZE, QUEUE_SIZE) \
31  (((EVENT_SIZE) + FUND_EVENT_QUEUE_HEADER_SIZE) * ((QUEUE_SIZE) + 1))
32 
33 #define CEIL_DIV(A, B) \
34  (((A) + (B) - 1) / (B))
35 
36 #define FUND_EVENT_QUEUE_INIT(EVENT_SIZE, QUEUE_SIZE) \
37  do \
38  { \
39  static uint32_t FUND_EVENT_QUEUE_BUF[CEIL_DIV(FUND_EVENT_QUEUE_BUF_SIZE((EVENT_SIZE), (QUEUE_SIZE)), \
40  sizeof(uint32_t))]; \
41  fund_event_queue_init((EVENT_SIZE), (QUEUE_SIZE), FUND_EVENT_QUEUE_BUF); \
42  } while (0)
43 
44 int32_t fund_event_queue_init(uint16_t event_size, uint16_t queue_size, void * p_evt_buffer);
45 
46 void fund_event_queue_execute(void);
47 
48 uint32_t fund_event_queue_put(void const * p_event_data,
49  uint16_t event_data_size,
51 
52 uint16_t fund_event_queue_space_get(void);
53 
54 #ifdef __cplusplus
55 }
56 #endif
57 
58 #endif //_FUND_EVENT_QUEUE_H_
void(* fund_event_queue_handler_t)(void *p_event_data, uint16_t event_size)
Definition: fund_event_queue.h:20
uint16_t event_data_size
Definition: fund_event_queue.h:25
uint16_t fund_event_queue_space_get(void)
Definition: fund_event_queue.h:22
fund_event_queue_handler_t handler
Definition: fund_event_queue.h:24
uint32_t fund_event_queue_put(void const *p_event_data, uint16_t event_data_size, fund_event_queue_handler_t handler)
int32_t fund_event_queue_init(uint16_t event_size, uint16_t queue_size, void *p_evt_buffer)
void fund_event_queue_execute(void)