VSF Documented
esp_event.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2026 by VSF Team *
3 * *
4 * Licensed under the Apache License, Version 2.0 (the "License"); *
5 * you may not use this file except in compliance with the License. *
6 * You may obtain a copy of the License at *
7 * *
8 * http://www.apache.org/licenses/LICENSE-2.0 *
9 * *
10 * Unless required by applicable law or agreed to in writing, software *
11 * distributed under the License is distributed on an "AS IS" BASIS, *
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13 * See the License for the specific language governing permissions and *
14 * limitations under the License. *
15 * *
16 ****************************************************************************/
17
18/*
19 * Clean-room re-implementation of ESP-IDF public API "esp_event.h".
20 *
21 * Authored from ESP-IDF v5.x public API only. No code copied from the
22 * ESP-IDF source tree. The VSF port drives the event loop with the VSF
23 * FreeRTOS shim (xQueue + xTaskCreate).
24 */
25
26#ifndef __VSF_ESPIDF_ESP_EVENT_H__
27#define __VSF_ESPIDF_ESP_EVENT_H__
28
29#include <stdint.h>
30#include <stdbool.h>
31#include <stddef.h>
32
33#include "esp_err.h"
34#include "esp_event_base.h"
35
36/* FreeRTOS typedefs required by the loop arguments / ticks-to-wait parms. */
37#include "FreeRTOS.h"
38#include "task.h"
39
40#ifdef __cplusplus
41extern "C" {
42#endif
43
44/*============================ TYPES =========================================*/
45
46/* Arguments for esp_event_loop_create(). Mirrors ESP-IDF v5.x layout so that
47 * user code can be dropped in as-is. Unknown fields (queue size too small,
48 * zero stack, etc.) return ESP_ERR_INVALID_ARG. */
49typedef struct {
51 const char * task_name;
56
57/*============================ PROTOTYPES ====================================*/
58
59/* Lifecycle -------------------------------------------------------------- */
60
61/* Create / delete the process-wide default loop. All _default APIs target it. */
64
65/* Create / delete a user-owned loop with an explicit dispatcher task. */
67 esp_event_loop_handle_t *event_loop);
69
70/* Run a user-owned loop's dispatcher inline for up to ticks_to_run. Only
71 * meaningful for loops created with task_name==NULL (no background task).
72 * Returns ESP_OK when time budget elapsed, ESP_ERR_TIMEOUT immediately when
73 * ticks_to_run is 0 and the queue is empty. */
75 TickType_t ticks_to_run);
76
77/* Register / unregister handlers on the default loop -------------------- */
78
80 int32_t event_id,
81 esp_event_handler_t event_handler,
82 void *event_handler_arg);
83
85 int32_t event_id,
86 esp_event_handler_t event_handler);
87
88/* Register / unregister handlers on a specific loop --------------------- */
89
91 esp_event_base_t event_base,
92 int32_t event_id,
93 esp_event_handler_t event_handler,
94 void *event_handler_arg);
95
97 esp_event_base_t event_base,
98 int32_t event_id,
99 esp_event_handler_t event_handler);
100
101/* Handler instance registration (returns an opaque handle used to unregister
102 * when multiple instances of the same handler fn/arg share a base+id). */
104 int32_t event_id,
105 esp_event_handler_t event_handler,
106 void *event_handler_arg,
108
110 esp_event_base_t event_base,
111 int32_t event_id,
112 esp_event_handler_t event_handler,
113 void *event_handler_arg,
115
117 int32_t event_id,
119
121 esp_event_base_t event_base,
122 int32_t event_id,
124
125/* Post events ------------------------------------------------------------ */
126
127/* Post to the default loop. event_data is copied into an internally-owned
128 * buffer (size event_data_size); the handler receives a pointer to that
129 * copy. ticks_to_wait bounds the enqueue wait on a full queue. */
131 int32_t event_id,
132 const void *event_data,
133 size_t event_data_size,
134 TickType_t ticks_to_wait);
135
137 esp_event_base_t event_base,
138 int32_t event_id,
139 const void *event_data,
140 size_t event_data_size,
141 TickType_t ticks_to_wait);
142
143#ifdef __cplusplus
144}
145#endif
146
147#endif // __VSF_ESPIDF_ESP_EVENT_H__
int esp_err_t
Definition esp_err.h:41
esp_err_t esp_event_handler_register_with(esp_event_loop_handle_t event_loop, esp_event_base_t event_base, int32_t event_id, esp_event_handler_t event_handler, void *event_handler_arg)
Definition esp_event_port.c:474
esp_err_t esp_event_handler_instance_register_with(esp_event_loop_handle_t event_loop, esp_event_base_t event_base, int32_t event_id, esp_event_handler_t event_handler, void *event_handler_arg, esp_event_handler_instance_t *instance)
Definition esp_event_port.c:508
esp_err_t esp_event_handler_unregister(esp_event_base_t event_base, int32_t event_id, esp_event_handler_t event_handler)
Definition esp_event_port.c:466
esp_err_t esp_event_loop_delete(esp_event_loop_handle_t event_loop)
Definition esp_event_port.c:435
esp_err_t esp_event_loop_run(esp_event_loop_handle_t event_loop, TickType_t ticks_to_run)
Definition esp_event_port.c:440
esp_err_t esp_event_handler_register(esp_event_base_t event_base, int32_t event_id, esp_event_handler_t event_handler, void *event_handler_arg)
Definition esp_event_port.c:456
esp_err_t esp_event_handler_instance_unregister_with(esp_event_loop_handle_t event_loop, esp_event_base_t event_base, int32_t event_id, esp_event_handler_instance_t instance)
Definition esp_event_port.c:531
esp_err_t esp_event_handler_unregister_with(esp_event_loop_handle_t event_loop, esp_event_base_t event_base, int32_t event_id, esp_event_handler_t event_handler)
Definition esp_event_port.c:485
esp_err_t esp_event_loop_create_default(void)
Definition esp_event_port.c:396
esp_err_t esp_event_loop_create(const esp_event_loop_args_t *event_loop_args, esp_event_loop_handle_t *event_loop)
Definition esp_event_port.c:421
esp_err_t esp_event_post(esp_event_base_t event_base, int32_t event_id, const void *event_data, size_t event_data_size, TickType_t ticks_to_wait)
Definition esp_event_port.c:540
esp_err_t esp_event_loop_delete_default(void)
Definition esp_event_port.c:411
esp_err_t esp_event_handler_instance_unregister(esp_event_base_t event_base, int32_t event_id, esp_event_handler_instance_t instance)
Definition esp_event_port.c:523
esp_err_t esp_event_post_to(esp_event_loop_handle_t event_loop, esp_event_base_t event_base, int32_t event_id, const void *event_data, size_t event_data_size, TickType_t ticks_to_wait)
Definition esp_event_port.c:551
esp_err_t esp_event_handler_instance_register(esp_event_base_t event_base, int32_t event_id, esp_event_handler_t event_handler, void *event_handler_arg, esp_event_handler_instance_t *instance)
Definition esp_event_port.c:494
void * esp_event_loop_handle_t
Definition esp_event_base.h:44
void(* esp_event_handler_t)(void *event_handler_arg, esp_event_base_t event_base, int32_t event_id, void *event_data)
Definition esp_event_base.h:52
const char * esp_event_base_t
Definition esp_event_base.h:41
void * esp_event_handler_instance_t
Definition esp_event_base.h:47
long BaseType_t
Definition esp_ringbuf.h:50
uint32_t TickType_t
Definition rtos_al.h:59
uint32_t UBaseType_t
Definition rtos_al.h:60
unsigned uint32_t
Definition stdint.h:9
int int32_t
Definition stdint.h:8
Definition esp_event.h:49
int32_t queue_size
Definition esp_event.h:50
UBaseType_t task_priority
Definition esp_event.h:52
const char * task_name
Definition esp_event.h:51
BaseType_t task_core_id
Definition esp_event.h:54
uint32_t task_stack_size
Definition esp_event.h:53
Generated from commit: vsfteam/vsf@015f4d1