#include "esp_log.h" #include "shutdown_handlers.h" static const char *TAG = "shutdown_hdl"; #define MAX_SHUTDOWN_HANDLERS 10 static int shutdown_handlers_next = 0; static shutdown_handler_t shutdown_handlers[MAX_SHUTDOWN_HANDLERS]; // --------------------------- esp_err_t cspemu_add_shutdown_handler(shutdown_handler_t handler) { ESP_LOGI(TAG, "+ new shutdown handler %p", handler); if (shutdown_handlers_next < MAX_SHUTDOWN_HANDLERS) { shutdown_handlers[shutdown_handlers_next++] = handler; return ESP_OK; } else { return ESP_FAIL; } } void cspemu_run_shutdown_handlers(void) { ESP_LOGI(TAG, "Running shutdown handlers"); for (int i = 0; i < shutdown_handlers_next; i++) { shutdown_handlers[i](); } // prevent them being run multiple times shutdown_handlers_next = 0; }