@@ -3206,18 +3206,32 @@ static void wifiTask(void*) {
32063206 // == 0) { continue; }
32073207 // }
32083208
3209+ const bool wifi_requested = (bool )draw_param.request_wifi_state ;
3210+ const bool ap_setup_active =
3211+ draw_param.net_setup_mode ==
3212+ draw_param.net_setup_mode_accesspoint ;
3213+ const bool sta_enabled = WiFi.getMode () & WIFI_MODE_STA ;
32093214 if (!need_wifi_reconnect &&
3210- (((bool )draw_param.request_wifi_state ) == WiFi.isConnected ())) {
3215+ (wifi_requested ? WiFi.isConnected ()
3216+ : (ap_setup_active ? !WiFi.isConnected ()
3217+ : !sta_enabled))) {
32113218 continue ;
32123219 }
32133220
3214- if ((need_wifi_reconnect || !((bool )draw_param.request_wifi_state ))) {
3215- WiFi.disconnect (need_wifi_reconnect ||
3216- draw_param.net_setup_mode ==
3217- draw_param.net_setup_mode_off );
3221+ if (need_wifi_reconnect || !wifi_requested) {
3222+ if (!wifi_requested && !ap_setup_active) {
3223+ releaseWiFiScan ();
3224+ WiFi.disconnect (false );
3225+ WiFi.mode (WIFI_MODE_NULL );
3226+ ESP_EARLY_LOGD (" DEBUG" , " WiFi radio off mode:%u" ,
3227+ WiFi.getMode ());
3228+ } else {
3229+ WiFi.disconnect (need_wifi_reconnect ||
3230+ draw_param.net_setup_mode ==
3231+ draw_param.net_setup_mode_off );
3232+ }
32183233 need_wifi_reconnect = false ;
32193234 connect_retry_at = millis ();
3220- // WiFi.mode(WIFI_MODE_NULL);
32213235 } else {
32223236 if (int32_t (millis () - connect_retry_at) >= 0 ) {
32233237 if (!draw_param.net_tmp_ssid .empty ()) {
0 commit comments