From fe6e747aa47065fdd1938f9006b59d120ddab82e Mon Sep 17 00:00:00 2001
From: me-no-dev <hristo@espressif.com>
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;
   }