Skip to content

Commit eeb6a26

Browse files
fix(wifi): Disable properly LR mode if it was enabled before (espressif#11052)
* fix(wifi): Disable properly LR mode if it was enabled before * ci(pre-commit): Apply automatic fixes --------- Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
1 parent 8575d04 commit eeb6a26

File tree

1 file changed

+51
-19
lines changed

1 file changed

+51
-19
lines changed

libraries/WiFi/src/WiFiGeneric.cpp

+51-19
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ bool wifiLowLevelInit(bool persistent) {
308308

309309
esp_err_t err = esp_wifi_init(&cfg);
310310
if (err) {
311-
log_e("esp_wifi_init %d", err);
311+
log_e("esp_wifi_init 0x%x: %s", err, esp_err_to_name(err));
312312
lowLevelInitDone = false;
313313
return lowLevelInitDone;
314314
}
@@ -375,7 +375,7 @@ static bool espWiFiStart() {
375375
esp_err_t err = esp_wifi_start();
376376
if (err != ESP_OK) {
377377
_esp_wifi_started = false;
378-
log_e("esp_wifi_start %d", err);
378+
log_e("esp_wifi_start 0x%x: %s", err, esp_err_to_name(err));
379379
return _esp_wifi_started;
380380
}
381381
return _esp_wifi_started;
@@ -389,7 +389,7 @@ static bool espWiFiStop() {
389389
_esp_wifi_started = false;
390390
err = esp_wifi_stop();
391391
if (err) {
392-
log_e("Could not stop WiFi! %d", err);
392+
log_e("Could not stop WiFi! 0x%x: %s", err, esp_err_to_name(err));
393393
_esp_wifi_started = true;
394394
return false;
395395
}
@@ -478,7 +478,7 @@ int WiFiGenericClass::setChannel(uint8_t primary, wifi_second_chan_t secondary)
478478

479479
ret = esp_wifi_get_country(&country);
480480
if (ret != ESP_OK) {
481-
log_e("Failed to get country info");
481+
log_e("Failed to get country info 0x%x: %s", ret, esp_err_to_name(ret));
482482
return ret;
483483
}
484484

@@ -492,7 +492,7 @@ int WiFiGenericClass::setChannel(uint8_t primary, wifi_second_chan_t secondary)
492492

493493
ret = esp_wifi_set_channel(primary, secondary);
494494
if (ret != ESP_OK) {
495-
log_e("Failed to set channel");
495+
log_e("Failed to set channel 0x%x: %s", ret, esp_err_to_name(ret));
496496
return ret;
497497
}
498498

@@ -562,13 +562,13 @@ bool WiFiGenericClass::mode(wifi_mode_t m) {
562562
if (((m & WIFI_MODE_STA) != 0) && ((cm & WIFI_MODE_STA) == 0)) {
563563
err = esp_netif_set_hostname(esp_netifs[ESP_IF_WIFI_STA], NetworkManager::getHostname());
564564
if (err) {
565-
log_e("Could not set hostname! %d", err);
565+
log_e("Could not set hostname! 0x%x: %s", err, esp_err_to_name(err));
566566
return false;
567567
}
568568
}
569569
err = esp_wifi_set_mode(m);
570570
if (err) {
571-
log_e("Could not set mode! %d", err);
571+
log_e("Could not set mode! 0x%x: %s", err, esp_err_to_name(err));
572572
return false;
573573
}
574574

@@ -585,17 +585,44 @@ bool WiFiGenericClass::mode(wifi_mode_t m) {
585585
if (m & WIFI_MODE_STA) {
586586
err = esp_wifi_set_protocol(WIFI_IF_STA, WIFI_PROTOCOL_LR);
587587
if (err != ESP_OK) {
588-
log_e("Could not enable long range on STA! %d", err);
588+
log_e("Could not enable long range on STA! 0x%x: %s", err, esp_err_to_name(err));
589589
return false;
590590
}
591591
}
592592
if (m & WIFI_MODE_AP) {
593593
err = esp_wifi_set_protocol(WIFI_IF_AP, WIFI_PROTOCOL_LR);
594594
if (err != ESP_OK) {
595-
log_e("Could not enable long range on AP! %d", err);
595+
log_e("Could not enable long range on AP! 0x%x: %s", err, esp_err_to_name(err));
596596
return false;
597597
}
598598
}
599+
} else {
600+
#if CONFIG_SOC_WIFI_HE_SUPPORT
601+
#define WIFI_PROTOCOL_DEFAULT (WIFI_PROTOCOL_11B | WIFI_PROTOCOL_11G | WIFI_PROTOCOL_11N | WIFI_PROTOCOL_11AX)
602+
#else
603+
#define WIFI_PROTOCOL_DEFAULT (WIFI_PROTOCOL_11B | WIFI_PROTOCOL_11G | WIFI_PROTOCOL_11N)
604+
#endif
605+
uint8_t current_protocol = 0;
606+
if (m & WIFI_MODE_STA) {
607+
err = esp_wifi_get_protocol(WIFI_IF_STA, &current_protocol);
608+
if (err == ESP_OK && current_protocol == WIFI_PROTOCOL_LR) {
609+
log_v("Disabling long range on STA");
610+
err = esp_wifi_set_protocol(WIFI_IF_STA, WIFI_PROTOCOL_DEFAULT);
611+
if (err != ESP_OK) {
612+
log_e("Could not disable long range on STA! 0x%x: %s", err, esp_err_to_name(err));
613+
}
614+
}
615+
}
616+
if (m & WIFI_MODE_AP) {
617+
err = esp_wifi_get_protocol(WIFI_IF_AP, &current_protocol);
618+
if (err == ESP_OK && current_protocol == WIFI_PROTOCOL_LR) {
619+
log_v("Disabling long range on AP");
620+
err = esp_wifi_set_protocol(WIFI_IF_AP, WIFI_PROTOCOL_DEFAULT);
621+
if (err != ESP_OK) {
622+
log_e("Could not disable long range on AP! 0x%x: %s", err, esp_err_to_name(err));
623+
}
624+
}
625+
}
599626
}
600627
if (!espWiFiStart()) {
601628
return false;
@@ -683,8 +710,9 @@ bool WiFiGenericClass::setSleep(wifi_ps_type_t sleepType) {
683710
if (sleepType != _sleepEnabled) {
684711
_sleepEnabled = sleepType;
685712
if (WiFi.STA.started()) {
686-
if (esp_wifi_set_ps(_sleepEnabled) != ESP_OK) {
687-
log_e("esp_wifi_set_ps failed!");
713+
esp_err_t err = esp_wifi_set_ps(_sleepEnabled);
714+
if (err != ESP_OK) {
715+
log_e("esp_wifi_set_ps failed!: 0x%x: %s", err, esp_err_to_name(err));
688716
return false;
689717
}
690718
}
@@ -748,8 +776,9 @@ bool WiFiGenericClass::initiateFTM(uint8_t frm_count, uint16_t burst_period, uin
748776
memcpy(ftmi_cfg.resp_mac, mac, 6);
749777
}
750778
// Request FTM session with the Responder
751-
if (ESP_OK != esp_wifi_ftm_initiate_session(&ftmi_cfg)) {
752-
log_e("Failed to initiate FTM session");
779+
esp_err_t err = esp_wifi_ftm_initiate_session(&ftmi_cfg);
780+
if (ESP_OK != err) {
781+
log_e("Failed to initiate FTM session: 0x%x: %s", err, esp_err_to_name(err));
753782
return false;
754783
}
755784
return true;
@@ -768,8 +797,9 @@ bool WiFiGenericClass::setDualAntennaConfig(uint8_t gpio_ant1, uint8_t gpio_ant2
768797

769798
esp_phy_ant_gpio_config_t wifi_ant_io;
770799

771-
if (ESP_OK != esp_phy_get_ant_gpio(&wifi_ant_io)) {
772-
log_e("Failed to get antenna configuration");
800+
esp_err_t err = esp_phy_get_ant_gpio(&wifi_ant_io);
801+
if (ESP_OK != err) {
802+
log_e("Failed to get antenna configuration: 0x%x: %s", err, esp_err_to_name(err));
773803
return false;
774804
}
775805

@@ -778,8 +808,9 @@ bool WiFiGenericClass::setDualAntennaConfig(uint8_t gpio_ant1, uint8_t gpio_ant2
778808
wifi_ant_io.gpio_cfg[1].gpio_num = gpio_ant2;
779809
wifi_ant_io.gpio_cfg[1].gpio_select = 1;
780810

781-
if (ESP_OK != esp_phy_set_ant_gpio(&wifi_ant_io)) {
782-
log_e("Failed to set antenna GPIO configuration");
811+
err = esp_phy_set_ant_gpio(&wifi_ant_io);
812+
if (ESP_OK != err) {
813+
log_e("Failed to set antenna GPIO configuration: 0x%x: %s", err, esp_err_to_name(err));
783814
return false;
784815
}
785816

@@ -827,8 +858,9 @@ bool WiFiGenericClass::setDualAntennaConfig(uint8_t gpio_ant1, uint8_t gpio_ant2
827858
}
828859

829860
set_ant:
830-
if (ESP_OK != esp_phy_set_ant(&ant_config)) {
831-
log_e("Failed to set antenna configuration");
861+
err = esp_phy_set_ant(&ant_config);
862+
if (ESP_OK != err) {
863+
log_e("Failed to set antenna configuration: 0x%x: %s", err, esp_err_to_name(err));
832864
return false;
833865
}
834866
#endif

0 commit comments

Comments
 (0)