1
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
25
26
27
36
37
38
39
40
46
47
48
49
56
57
58
59
66
67
68
69
70
71
72
73
74
76
77
79
80
83
84
85
86
93
94
98
99
100
101
102
104
105
106
107
108
109
110
111
112
113
114
/* ... */
#ifndef ESP_EVENT_INTERNAL_H_
#define ESP_EVENT_INTERNAL_H_
#include "sys/queue.h"
#include <stdbool.h>
#include "esp_event.h"
#include "stdatomic.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef SLIST_HEAD(base_nodes, base_node) base_nodes_t;
typedef struct esp_event_handler_context {
esp_event_handler_t handler;
void* arg;
}{ ... } esp_event_handler_instance_context_t;
typedef struct esp_event_handler_node {
esp_event_handler_instance_context_t* handler_ctx;
#ifdef CONFIG_ESP_EVENT_LOOP_PROFILING
uint32_t invoked;
int64_t time; /* ... */
#endif
SLIST_ENTRY(esp_event_handler_node) next;
bool unregistered;
}{ ... } esp_event_handler_node_t;
typedef SLIST_HEAD(esp_event_handler_instances, esp_event_handler_node) esp_event_handler_nodes_t;
typedef struct esp_event_id_node {
int32_t id;
esp_event_handler_nodes_t handlers;
/* ... */
SLIST_ENTRY(esp_event_id_node) next;
}{ ... } esp_event_id_node_t;
typedef SLIST_HEAD(esp_event_id_nodes, esp_event_id_node) esp_event_id_nodes_t;
typedef struct esp_event_base_node {
esp_event_base_t base;
esp_event_handler_nodes_t handlers;
/* ... */
esp_event_id_nodes_t id_nodes;
SLIST_ENTRY(esp_event_base_node) next;
}{ ... } esp_event_base_node_t;
typedef SLIST_HEAD(esp_event_base_nodes, esp_event_base_node) esp_event_base_nodes_t;
typedef struct esp_event_loop_node {
esp_event_handler_nodes_t handlers;
esp_event_base_nodes_t base_nodes;
SLIST_ENTRY(esp_event_loop_node) next;
/* ... */
}{ ... } esp_event_loop_node_t;
typedef SLIST_HEAD(esp_event_loop_nodes, esp_event_loop_node) esp_event_loop_nodes_t;
typedef struct esp_event_loop_instance {
const char* name;
QueueHandle_t queue;
TaskHandle_t task;
TaskHandle_t running_task;
/* ... */
SemaphoreHandle_t mutex;
esp_event_loop_nodes_t loop_nodes;
/* ... */
#ifdef CONFIG_ESP_EVENT_LOOP_PROFILING
atomic_uint_least32_t events_received;
atomic_uint_least32_t events_dropped;
SLIST_ENTRY(esp_event_loop_instance) next; /* ... */
#endif
}{ ... } esp_event_loop_instance_t;
typedef struct esp_event_remove_handler_context_t {
esp_event_loop_instance_t* loop;
esp_event_base_t event_base;
int32_t event_id;
esp_event_handler_instance_context_t* handler_ctx;
bool legacy;
}{ ... } esp_event_remove_handler_context_t;
typedef union esp_event_post_data {
uint32_t val;
void *ptr;
}{ ... } esp_event_post_data_t;
typedef struct esp_event_post_instance {
#if CONFIG_ESP_EVENT_POST_FROM_ISR
bool data_allocated;
bool data_set; /* ... */
#endif
esp_event_base_t base;
int32_t id;
esp_event_post_data_t data;
}{ ... } esp_event_post_instance_t;
#ifdef __cplusplus
}{...}
#endif
/* ... */
#endif