#pragma once #include #include "esp_err.h" #include "wifi_store.h" typedef esp_err_t (*web_provisioning_apply_cb_t)(const wifi_store_credentials_t *credentials); typedef void (*web_provisioning_expired_cb_t)(void); typedef enum { WEB_PROV_IDLE, WEB_PROV_SCANNING, WEB_PROV_CONNECTING, WEB_PROV_CONNECTED, WEB_PROV_FAILED, } web_provisioning_state_t; typedef struct { const char *service_name; uint32_t timeout_seconds; web_provisioning_apply_cb_t apply_credentials; web_provisioning_expired_cb_t expired; } web_provisioning_config_t; esp_err_t web_provisioning_start(const web_provisioning_config_t *config); void web_provisioning_stop(void); bool web_provisioning_is_active(void); bool web_provisioning_is_connecting(void); void web_provisioning_report_connected(const char *ip_address); void web_provisioning_report_failure(const char *reason);