feat(esp_system): add esp_sys_event framework

Introduce a shared esp system event framework and use it
for system init and shutdown.
This commit is contained in:
Marius Vikhammer
2026-06-03 15:02:43 +08:00
parent bd4ab32f73
commit be36c20503
27 changed files with 1244 additions and 140 deletions
@@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: 2022-2024 Espressif Systems (Shanghai) CO LTD
* SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD
*
* SPDX-License-Identifier: Apache-2.0
*/
@@ -49,17 +49,15 @@ TEST_CASE("reset_reason", "[esp_system]")
TEST_CASE("unregister_handler_works", "[esp_system]")
{
token = 0;
// for some reason, the handlers are executed in reverse order of adding handlers, so we always
// register the jumping handler at first to make it execute last
TEST_ASSERT_EQUAL(ESP_OK, esp_register_shutdown_handler(jump_back_shutdown_handler));
TEST_ASSERT_EQUAL(ESP_OK, esp_register_shutdown_handler(action));
TEST_ASSERT_EQUAL(ESP_OK, esp_register_shutdown_handler(jump_back_shutdown_handler));
TEST_ASSERT_EQUAL(ESP_OK, esp_unregister_shutdown_handler(action));
if (setjmp(env) == 0) {
esp_restart();
}
// fist unregister before any assert to avoid skipping by assert's longjmp
// first unregister before any assert to avoid skipping by assert's longjmp
cleanup();
TEST_ASSERT_EQUAL(0, token);
@@ -76,8 +74,8 @@ TEST_CASE("register_shutdown_handler_twice_fails", "[esp_system]")
TEST_CASE("register_shutdown_handler_works", "[esp_system]")
{
token = 0;
TEST_ASSERT_EQUAL(esp_register_shutdown_handler(jump_back_shutdown_handler), ESP_OK);
TEST_ASSERT_EQUAL(esp_register_shutdown_handler(action), ESP_OK);
TEST_ASSERT_EQUAL(ESP_OK, esp_register_shutdown_handler(action));
TEST_ASSERT_EQUAL(ESP_OK, esp_register_shutdown_handler(jump_back_shutdown_handler));
if (setjmp(env) == 0) {
esp_restart();
@@ -88,15 +86,14 @@ TEST_CASE("register_shutdown_handler_works", "[esp_system]")
TEST_ASSERT_EQUAL(1, token);
}
TEST_CASE("register_too_many_shutdown_handler_fails", "[esp_system]")
TEST_CASE("register_many_shutdown_handlers_succeeds", "[esp_system]")
{
TEST_ASSERT_EQUAL(ESP_OK, esp_register_shutdown_handler(dummy_shutdown_handler_0));
TEST_ASSERT_EQUAL(ESP_OK, esp_register_shutdown_handler(dummy_shutdown_handler_1));
TEST_ASSERT_EQUAL(ESP_OK, esp_register_shutdown_handler(dummy_shutdown_handler_2));
TEST_ASSERT_EQUAL(ESP_OK, esp_register_shutdown_handler(dummy_shutdown_handler_3));
TEST_ASSERT_EQUAL(ESP_OK, esp_register_shutdown_handler(dummy_shutdown_handler_4));
TEST_ASSERT_EQUAL(esp_register_shutdown_handler(jump_back_shutdown_handler), ESP_ERR_NO_MEM);
TEST_ASSERT_EQUAL(ESP_OK, esp_register_shutdown_handler(jump_back_shutdown_handler));
cleanup();
}