Skip to content

Commit 9cbc87c

Browse files
committed
Turn off WiFi radio in offline mode
1 parent 3456311 commit 9cbc87c

1 file changed

Lines changed: 20 additions & 6 deletions

File tree

src/main.cpp

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)