diff --git a/components/esp_event/esp_event.c b/components/esp_event/esp_event.c index 4edb3ff2da..3925787b2b 100644 --- a/components/esp_event/esp_event.c +++ b/components/esp_event/esp_event.c @@ -137,7 +137,7 @@ static void handler_execute(esp_event_loop_instance_t* loop, esp_event_handler_n (*(handler->handler_ctx->handler))(handler->handler_ctx->arg, post.base, post.id, data_ptr); #else - (*(handler->handler_ctx->handler))(handler->handler_ctx->arg, post.base, post.id, post.data); + (*(handler->handler_ctx->handler))(handler->handler_ctx->arg, post.base, post.id, post.data.ptr); #endif #ifdef CONFIG_ESP_EVENT_LOOP_PROFILING @@ -438,14 +438,11 @@ static void loop_node_remove_all_handler(esp_event_loop_node_t* loop_node) static void inline __attribute__((always_inline)) post_instance_delete(esp_event_post_instance_t* post) { #if CONFIG_ESP_EVENT_POST_FROM_ISR - if (post->data_allocated && post->data.ptr) { + if (post->data_allocated) +#endif + { free(post->data.ptr); } -#else - if (post->data) { - free(post->data); - } -#endif memset(post, 0, sizeof(*post)); } @@ -944,12 +941,10 @@ esp_err_t esp_event_post_to(esp_event_loop_handle_t event_loop, esp_event_base_t } memcpy(event_data_copy, event_data, event_data_size); -#if CONFIG_ESP_EVENT_POST_FROM_ISR post.data.ptr = event_data_copy; +#if CONFIG_ESP_EVENT_POST_FROM_ISR post.data_allocated = true; post.data_set = true; -#else - post.data = event_data_copy; #endif } post.base = event_base; diff --git a/components/esp_event/private_include/esp_event_internal.h b/components/esp_event/private_include/esp_event_internal.h index f7b1612996..76304c689c 100644 --- a/components/esp_event/private_include/esp_event_internal.h +++ b/components/esp_event/private_include/esp_event_internal.h @@ -91,14 +91,10 @@ typedef struct esp_event_remove_handler_context_t { bool legacy; /**< Set to true when the handler unregistration request was made from legacy code */ } esp_event_remove_handler_context_t; -#if CONFIG_ESP_EVENT_POST_FROM_ISR typedef union esp_event_post_data { uint32_t val; void *ptr; } esp_event_post_data_t; -#else -typedef void* esp_event_post_data_t; -#endif /// Event posted to the event queue typedef struct esp_event_post_instance { diff --git a/components/esp_event/test_apps/main/test_event_common.cpp b/components/esp_event/test_apps/main/test_event_common.cpp index 569b97902e..37b656275b 100644 --- a/components/esp_event/test_apps/main/test_event_common.cpp +++ b/components/esp_event/test_apps/main/test_event_common.cpp @@ -8,6 +8,7 @@ #include #include +#include "inttypes.h" #include "sdkconfig.h" #include "freertos/FreeRTOS.h" #include "freertos/task.h" diff --git a/components/esp_event/test_apps/sdkconfig.ci.no_isr_post b/components/esp_event/test_apps/sdkconfig.ci.no_isr_post new file mode 100644 index 0000000000..1b0464b258 --- /dev/null +++ b/components/esp_event/test_apps/sdkconfig.ci.no_isr_post @@ -0,0 +1,3 @@ +# This configuration checks the event loop if posting from ISR is disabled +CONFIG_ESP_TASK_WDT_INIT=n +CONFIG_POST_EVENTS_FROM_ISR=n