Skip to content

Commit c43187a

Browse files
fix(wifi): Fix WiFi setTxPower and getTxPower (#9862)
* fix(wifi): Fix WiFi setTxPower and getTxPower We need to wait for the interface to be started in order to be able to set/get TX Power. Code was returning too early, so calling the functions after `begin()` resulted in failure. * 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 5c22402 commit c43187a

File tree

4 files changed

+19
-2
lines changed

4 files changed

+19
-2
lines changed

Diff for: libraries/WiFi/src/AP.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,10 @@ bool APClass::begin() {
187187
log_e("AP enable failed!");
188188
return false;
189189
}
190+
if (!waitStatusBits(ESP_NETIF_STARTED_BIT, 1000)) {
191+
log_e("Failed to start AP!");
192+
return false;
193+
}
190194
return true;
191195
}
192196

Diff for: libraries/WiFi/src/STA.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -298,6 +298,10 @@ bool STAClass::begin(bool tryConnect) {
298298
log_e("STA enable failed!");
299299
return false;
300300
}
301+
if (!waitStatusBits(ESP_NETIF_STARTED_BIT, 1000)) {
302+
log_e("Failed to start STA!");
303+
return false;
304+
}
301305
if (tryConnect) {
302306
return connect();
303307
}

Diff for: libraries/WiFi/src/WiFiGeneric.cpp

+8-2
Original file line numberDiff line numberDiff line change
@@ -639,7 +639,11 @@ bool WiFiGenericClass::setTxPower(wifi_power_t power) {
639639
log_w("Neither AP or STA has been started");
640640
return false;
641641
}
642-
return esp_wifi_set_max_tx_power(power) == ESP_OK;
642+
esp_err_t err = esp_wifi_set_max_tx_power(power);
643+
if (err != ESP_OK) {
644+
log_e("Failed to set TX Power: 0x%x: %s", err, esp_err_to_name(err));
645+
}
646+
return err == ESP_OK;
643647
}
644648

645649
wifi_power_t WiFiGenericClass::getTxPower() {
@@ -648,7 +652,9 @@ wifi_power_t WiFiGenericClass::getTxPower() {
648652
log_w("Neither AP or STA has been started");
649653
return WIFI_POWER_19_5dBm;
650654
}
651-
if (esp_wifi_get_max_tx_power(&power)) {
655+
esp_err_t err = esp_wifi_get_max_tx_power(&power);
656+
if (err != ESP_OK) {
657+
log_e("Failed to get TX Power: 0x%x: %s", err, esp_err_to_name(err));
652658
return WIFI_POWER_19_5dBm;
653659
}
654660
return (wifi_power_t)power;

Diff for: libraries/WiFi/src/WiFiGeneric.h

+3
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@
4444
#define wifi_event_id_t network_event_handle_t
4545

4646
typedef enum {
47+
WIFI_POWER_21dBm = 84, // 21dBm
48+
WIFI_POWER_20_5dBm = 82, // 20.5dBm
49+
WIFI_POWER_20dBm = 80, // 20dBm
4750
WIFI_POWER_19_5dBm = 78, // 19.5dBm
4851
WIFI_POWER_19dBm = 76, // 19dBm
4952
WIFI_POWER_18_5dBm = 74, // 18.5dBm

0 commit comments

Comments
 (0)