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!");
return false;
}
if (!waitStatusBits(ESP_NETIF_STARTED_BIT, 1000)) {
log_e("Failed to start AP!");
return false;
}
return true;
}

View File

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

View File

@ -639,7 +639,11 @@ bool WiFiGenericClass::setTxPower(wifi_power_t power) {
log_w("Neither AP or STA has been started");
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() {
@ -648,7 +652,9 @@ wifi_power_t WiFiGenericClass::getTxPower() {
log_w("Neither AP or STA has been started");
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_t)power;

View File

@ -44,6 +44,9 @@
#define wifi_event_id_t network_event_handle_t
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_19dBm = 76, // 19dBm
WIFI_POWER_18_5dBm = 74, // 18.5dBm