diff --git a/components/wifi_provisioning/include/wifi_provisioning/manager.h b/components/wifi_provisioning/include/wifi_provisioning/manager.h index 2edd43fee9..e1b978162a 100644 --- a/components/wifi_provisioning/include/wifi_provisioning/manager.h +++ b/components/wifi_provisioning/include/wifi_provisioning/manager.h @@ -553,6 +553,16 @@ esp_err_t wifi_prov_mgr_get_wifi_disconnect_reason(wifi_prov_sta_fail_reason_t * */ esp_err_t wifi_prov_mgr_configure_sta(wifi_config_t *wifi_cfg); +/** + * @brief Reset Wi-Fi provisioning config + * + * Calling this API will restore WiFi stack persistent settings to default values. + * + * @return + * - ESP_OK : Reset provisioning config successfully + * - ESP_FAIL : Failed to reset provisioning config + */ +esp_err_t wifi_prov_mgr_reset_provisioning(void); #ifdef __cplusplus } #endif diff --git a/components/wifi_provisioning/src/manager.c b/components/wifi_provisioning/src/manager.c index e3977cd6e7..a9431eedb7 100644 --- a/components/wifi_provisioning/src/manager.c +++ b/components/wifi_provisioning/src/manager.c @@ -1553,3 +1553,15 @@ void wifi_prov_mgr_stop_provisioning(void) RELEASE_LOCK(prov_ctx_lock); } + +esp_err_t wifi_prov_mgr_reset_provisioning(void) +{ + esp_err_t ret = esp_wifi_restore(); + + if (ret != ESP_OK) { + ESP_LOGE(TAG, "esp_wifi_restore fail, ret is %d", ret); + ret = ESP_FAIL; + } + + return ret; +} diff --git a/examples/provisioning/wifi_prov_mgr/main/Kconfig.projbuild b/examples/provisioning/wifi_prov_mgr/main/Kconfig.projbuild index 3c27774a93..4c6b4d94db 100644 --- a/examples/provisioning/wifi_prov_mgr/main/Kconfig.projbuild +++ b/examples/provisioning/wifi_prov_mgr/main/Kconfig.projbuild @@ -20,4 +20,11 @@ menu "Example Configuration" default 1 if EXAMPLE_PROV_TRANSPORT_BLE default 2 if EXAMPLE_PROV_TRANSPORT_SOFTAP + config EXAMPLE_RESET_PROVISIONED + bool + default n + prompt "Reset provisioned status of the device" + help + This erases the NVS to reset provisioned status of the device on every reboot. + Provisioned status is determined by the Wi-Fi STA configuration, saved on the NVS. endmenu diff --git a/examples/provisioning/wifi_prov_mgr/main/app_main.c b/examples/provisioning/wifi_prov_mgr/main/app_main.c index 4180731b39..b2d57a3fe8 100644 --- a/examples/provisioning/wifi_prov_mgr/main/app_main.c +++ b/examples/provisioning/wifi_prov_mgr/main/app_main.c @@ -185,9 +185,13 @@ void app_main(void) ESP_ERROR_CHECK(wifi_prov_mgr_init(config)); bool provisioned = false; +#ifdef CONFIG_EXAMPLE_RESET_PROVISIONED + wifi_prov_mgr_reset_provisioning(); +#else /* Let's find out if the device is provisioned */ ESP_ERROR_CHECK(wifi_prov_mgr_is_provisioned(&provisioned)); +#endif /* If device is not yet provisioned start provisioning service */ if (!provisioned) { ESP_LOGI(TAG, "Starting provisioning");