From fe6e747aa47065fdd1938f9006b59d120ddab82e Mon Sep 17 00:00:00 2001 From: me-no-dev Date: Fri, 14 Jun 2024 09:46:09 +0300 Subject: [PATCH 1/2] 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. --- libraries/WiFi/src/AP.cpp | 4 ++++ libraries/WiFi/src/STA.cpp | 4 ++++ libraries/WiFi/src/WiFiGeneric.cpp | 10 ++++++++-- libraries/WiFi/src/WiFiGeneric.h | 3 +++ 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/libraries/WiFi/src/AP.cpp b/libraries/WiFi/src/AP.cpp index db61c2f0ff1..92d5f4eb61e 100644 --- a/libraries/WiFi/src/AP.cpp +++ b/libraries/WiFi/src/AP.cpp @@ -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; } diff --git a/libraries/WiFi/src/STA.cpp b/libraries/WiFi/src/STA.cpp index dacb0cae2d4..776dd081983 100644 --- a/libraries/WiFi/src/STA.cpp +++ b/libraries/WiFi/src/STA.cpp @@ -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(); } diff --git a/libraries/WiFi/src/WiFiGeneric.cpp b/libraries/WiFi/src/WiFiGeneric.cpp index 1903a5c9c41..75a01d1362f 100644 --- a/libraries/WiFi/src/WiFiGeneric.cpp +++ b/libraries/WiFi/src/WiFiGeneric.cpp @@ -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; diff --git a/libraries/WiFi/src/WiFiGeneric.h b/libraries/WiFi/src/WiFiGeneric.h index 6ed74dfed84..3cb1515b324 100644 --- a/libraries/WiFi/src/WiFiGeneric.h +++ b/libraries/WiFi/src/WiFiGeneric.h @@ -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 From 0f15260d07148312fd133ba7bee1229dc888b40e Mon Sep 17 00:00:00 2001 From: "pre-commit-ci-lite[bot]" <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com> Date: Mon, 17 Jun 2024 19:32:44 +0000 Subject: [PATCH 2/2] ci(pre-commit): Apply automatic fixes --- libraries/WiFi/src/AP.cpp | 2 +- libraries/WiFi/src/STA.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libraries/WiFi/src/AP.cpp b/libraries/WiFi/src/AP.cpp index 92d5f4eb61e..a61be662495 100644 --- a/libraries/WiFi/src/AP.cpp +++ b/libraries/WiFi/src/AP.cpp @@ -187,7 +187,7 @@ bool APClass::begin() { log_e("AP enable failed!"); return false; } - if(!waitStatusBits(ESP_NETIF_STARTED_BIT, 1000)){ + if (!waitStatusBits(ESP_NETIF_STARTED_BIT, 1000)) { log_e("Failed to start AP!"); return false; } diff --git a/libraries/WiFi/src/STA.cpp b/libraries/WiFi/src/STA.cpp index 776dd081983..443d2621957 100644 --- a/libraries/WiFi/src/STA.cpp +++ b/libraries/WiFi/src/STA.cpp @@ -298,7 +298,7 @@ bool STAClass::begin(bool tryConnect) { log_e("STA enable failed!"); return false; } - if(!waitStatusBits(ESP_NETIF_STARTED_BIT, 1000)){ + if (!waitStatusBits(ESP_NETIF_STARTED_BIT, 1000)) { log_e("Failed to start STA!"); return false; }