Merge branch 'support/improve_wifi_prov_cli' into 'master'

wifi-prov cli: Set Wi-Fi creds directly for already provisioned devices

See merge request app-frameworks/esp-rainmaker!387
This commit is contained in:
Piyush Shah
2023-10-27 21:21:30 +08:00
2 changed files with 30 additions and 2 deletions

View File

@@ -82,7 +82,35 @@ static int wifi_prov_handler(int argc, char** argv)
if (argc == 3) {
memcpy(wifi_config.sta.password, argv[2], strlen(argv[2]));
}
wifi_prov_mgr_configure_sta(&wifi_config);
/* If device is still provisioning, use wifi_prov_mgr_configure_sta */
bool provisioned = false;
wifi_prov_mgr_is_provisioned(&provisioned);
if (!provisioned) { // provisioning in progress
wifi_prov_mgr_configure_sta(&wifi_config);
return ESP_OK;
}
/* If already provisioned, just set the new credentials */
/* Stop the Wi-Fi */
if (esp_wifi_stop() != ESP_OK) {
printf("%s: Failed to stop wifi\n", TAG);
}
/* Configure Wi-Fi station with provided host credentials */
if (esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config) != ESP_OK) {
printf("%s: Failed to set WiFi configuration\n", TAG);
return ESP_FAIL;
}
/* (Re)Start Wi-Fi */
if (esp_wifi_start() != ESP_OK) {
printf("%s: Failed to start WiFi\n", TAG);
return ESP_FAIL;
}
/* Connect to AP */
if (esp_wifi_connect() != ESP_OK) {
printf("%s: Failed to connect WiFi\n", TAG);
return ESP_FAIL;
}
return ESP_OK;
}

View File

@@ -413,7 +413,7 @@ esp_err_t app_wifi_start(app_wifi_pop_type_t pop_type)
bool provisioned = false;
/* Let's find out if the device is provisioned */
ESP_ERROR_CHECK(wifi_prov_mgr_is_provisioned(&provisioned));
wifi_prov_mgr_is_provisioned(&provisioned);
/* If device is not yet provisioned start provisioning service */
if (!provisioned) {
ESP_LOGI(TAG, "Starting provisioning");