Merge branch 'bugfix/examples_disconnect_before_restart' into 'master'
examples: disconnect from Wi-Fi before restart (and don't try to reconnect!) See merge request espressif/esp-idf!6267
This commit is contained in:
commit
b61c3d5d0f
|
@ -230,12 +230,11 @@ void esp_restart_noos(void) __attribute__ ((noreturn));
|
|||
|
||||
void IRAM_ATTR esp_restart(void)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < SHUTDOWN_HANDLERS_NO; i++) {
|
||||
if (shutdown_handlers[i]) {
|
||||
shutdown_handlers[i]();
|
||||
}
|
||||
}
|
||||
for (int i = SHUTDOWN_HANDLERS_NO - 1; i >= 0; i--) {
|
||||
if (shutdown_handlers[i]) {
|
||||
shutdown_handlers[i]();
|
||||
}
|
||||
}
|
||||
|
||||
// Disable scheduler on this core.
|
||||
vTaskSuspendAll();
|
||||
|
|
|
@ -330,7 +330,7 @@ esp_err_t esp_wifi_restore(void);
|
|||
* @return
|
||||
* - ESP_OK: succeed
|
||||
* - ESP_ERR_WIFI_NOT_INIT: WiFi is not initialized by esp_wifi_init
|
||||
* - ESP_ERR_WIFI_NOT_START: WiFi is not started by esp_wifi_start
|
||||
* - ESP_ERR_WIFI_NOT_STARTED: WiFi is not started by esp_wifi_start
|
||||
* - ESP_ERR_WIFI_CONN: WiFi internal error, station or soft-AP control block wrong
|
||||
* - ESP_ERR_WIFI_SSID: SSID of AP which station connects is invalid
|
||||
*/
|
||||
|
|
|
@ -73,6 +73,7 @@ esp_err_t example_connect(void)
|
|||
}
|
||||
s_connect_event_group = xEventGroupCreate();
|
||||
start();
|
||||
ESP_ERROR_CHECK(esp_register_shutdown_handler(&stop));
|
||||
xEventGroupWaitBits(s_connect_event_group, CONNECTED_BITS, true, true, portMAX_DELAY);
|
||||
ESP_LOGI(TAG, "Connected to %s", s_connection_name);
|
||||
ESP_LOGI(TAG, "IPv4 address: " IPSTR, IP2STR(&s_ip_addr));
|
||||
|
@ -101,7 +102,11 @@ static void on_wifi_disconnect(void *arg, esp_event_base_t event_base,
|
|||
int32_t event_id, void *event_data)
|
||||
{
|
||||
ESP_LOGI(TAG, "Wi-Fi disconnected, trying to reconnect...");
|
||||
ESP_ERROR_CHECK(esp_wifi_connect());
|
||||
esp_err_t err = esp_wifi_connect();
|
||||
if (err == ESP_ERR_WIFI_NOT_STARTED) {
|
||||
return;
|
||||
}
|
||||
ESP_ERROR_CHECK(err);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_EXAMPLE_CONNECT_IPV6
|
||||
|
@ -149,7 +154,11 @@ static void stop(void)
|
|||
ESP_ERROR_CHECK(esp_event_handler_unregister(IP_EVENT, IP_EVENT_GOT_IP6, &on_got_ipv6));
|
||||
ESP_ERROR_CHECK(esp_event_handler_unregister(WIFI_EVENT, WIFI_EVENT_STA_CONNECTED, &on_wifi_connect));
|
||||
#endif
|
||||
ESP_ERROR_CHECK(esp_wifi_stop());
|
||||
esp_err_t err = esp_wifi_stop();
|
||||
if (err == ESP_ERR_WIFI_NOT_INIT) {
|
||||
return;
|
||||
}
|
||||
ESP_ERROR_CHECK(err);
|
||||
ESP_ERROR_CHECK(esp_wifi_deinit());
|
||||
}
|
||||
#endif // CONFIG_EXAMPLE_CONNECT_WIFI
|
||||
|
|
Loading…
Reference in a new issue