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>
This commit is contained in:
Me No Dev 2024-06-17 22:47:12 +03:00 committed by GitHub
parent 5c22402025
commit c43187a386
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 19 additions and 2 deletions

View File

@ -187,6 +187,10 @@ bool APClass::begin() {
log_e("AP enable failed!"); log_e("AP enable failed!");
return false; return false;
} }
if (!waitStatusBits(ESP_NETIF_STARTED_BIT, 1000)) {
log_e("Failed to start AP!");
return false;
}
return true; return true;
} }

View File

@ -298,6 +298,10 @@ bool STAClass::begin(bool tryConnect) {
log_e("STA enable failed!"); log_e("STA enable failed!");
return false; return false;
} }
if (!waitStatusBits(ESP_NETIF_STARTED_BIT, 1000)) {
log_e("Failed to start STA!");
return false;
}
if (tryConnect) { if (tryConnect) {
return connect(); return connect();
} }

View File

@ -639,7 +639,11 @@ bool WiFiGenericClass::setTxPower(wifi_power_t power) {
log_w("Neither AP or STA has been started"); log_w("Neither AP or STA has been started");
return false; return false;
} }
return esp_wifi_set_max_tx_power(power) == ESP_OK; esp_err_t err = esp_wifi_set_max_tx_power(power);
if (err != ESP_OK) {
log_e("Failed to set TX Power: 0x%x: %s", err, esp_err_to_name(err));
}
return err == ESP_OK;
} }
wifi_power_t WiFiGenericClass::getTxPower() { wifi_power_t WiFiGenericClass::getTxPower() {
@ -648,7 +652,9 @@ wifi_power_t WiFiGenericClass::getTxPower() {
log_w("Neither AP or STA has been started"); log_w("Neither AP or STA has been started");
return WIFI_POWER_19_5dBm; return WIFI_POWER_19_5dBm;
} }
if (esp_wifi_get_max_tx_power(&power)) { esp_err_t err = esp_wifi_get_max_tx_power(&power);
if (err != ESP_OK) {
log_e("Failed to get TX Power: 0x%x: %s", err, esp_err_to_name(err));
return WIFI_POWER_19_5dBm; return WIFI_POWER_19_5dBm;
} }
return (wifi_power_t)power; return (wifi_power_t)power;

View File

@ -44,6 +44,9 @@
#define wifi_event_id_t network_event_handle_t #define wifi_event_id_t network_event_handle_t
typedef enum { typedef enum {
WIFI_POWER_21dBm = 84, // 21dBm
WIFI_POWER_20_5dBm = 82, // 20.5dBm
WIFI_POWER_20dBm = 80, // 20dBm
WIFI_POWER_19_5dBm = 78, // 19.5dBm WIFI_POWER_19_5dBm = 78, // 19.5dBm
WIFI_POWER_19dBm = 76, // 19dBm WIFI_POWER_19dBm = 76, // 19dBm
WIFI_POWER_18_5dBm = 74, // 18.5dBm WIFI_POWER_18_5dBm = 74, // 18.5dBm