Fix WiFi phy modes due to recent IDF update
This commit is contained in:
parent
54519dccbf
commit
5bffce9297
@ -156,8 +156,8 @@ void WiFiHelper::setSleepMode(int iSleepMode) {
|
||||
|
||||
int WiFiHelper::getPhyMode() {
|
||||
/*
|
||||
typedef enum
|
||||
{
|
||||
// IDF v5.2.6
|
||||
typedef enum {
|
||||
WIFI_PHY_MODE_LR, // PHY mode for Low Rate
|
||||
WIFI_PHY_MODE_11B, // PHY mode for 11b
|
||||
WIFI_PHY_MODE_11G, // PHY mode for 11g
|
||||
@ -165,19 +165,35 @@ int WiFiHelper::getPhyMode() {
|
||||
WIFI_PHY_MODE_HT40, // PHY mode for Bandwidth HT40 (11n)
|
||||
WIFI_PHY_MODE_HE20, // PHY mode for Bandwidth HE20 (11ax)
|
||||
} wifi_phy_mode_t;
|
||||
|
||||
// IDF v5.3.4
|
||||
typedef enum {
|
||||
WIFI_PHY_MODE_LR, // PHY mode for Low Rate
|
||||
WIFI_PHY_MODE_11B, // PHY mode for 11b
|
||||
WIFI_PHY_MODE_11G, // PHY mode for 11g
|
||||
WIFI_PHY_MODE_11A, // PHY mode for 11a
|
||||
WIFI_PHY_MODE_HT20, // PHY mode for Bandwidth HT20
|
||||
WIFI_PHY_MODE_HT40, // PHY mode for Bandwidth HT40
|
||||
WIFI_PHY_MODE_HE20, // PHY mode for Bandwidth HE20
|
||||
WIFI_PHY_MODE_VHT20,// PHY mode for Bandwidth VHT20
|
||||
} wifi_phy_mode_t;
|
||||
*/
|
||||
int phy_mode = 0; // "low rate|11b|11g|HT20|HT40|HE20"
|
||||
int phy_mode = 0; // "low rate|11b|11g|11a|HT20|HT40|HE20|VHT20"
|
||||
wifi_phy_mode_t WiFiMode;
|
||||
if (esp_wifi_sta_get_negotiated_phymode(&WiFiMode) == ESP_OK) {
|
||||
phy_mode = (int)WiFiMode;
|
||||
if (phy_mode > 5) {
|
||||
phy_mode = 5;
|
||||
if (phy_mode > 7) {
|
||||
phy_mode = 7;
|
||||
}
|
||||
}
|
||||
return phy_mode;
|
||||
}
|
||||
|
||||
bool WiFiHelper::setPhyMode(WiFiPhyMode_t mode) {
|
||||
// 1 = B
|
||||
// 2 = BG
|
||||
// 3 = BGN
|
||||
// 4 = BGNAX
|
||||
uint8_t protocol_bitmap = WIFI_PROTOCOL_11B; // 1
|
||||
switch (mode) {
|
||||
case 4: protocol_bitmap |= WIFI_PROTOCOL_11AX; // 16
|
||||
|
||||
@ -11,8 +11,8 @@
|
||||
* ESP32, ESP32-C2, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-H2, ESP32-P4, ESP32-S2 and ESP32-S3 Support
|
||||
\*********************************************************************************************/
|
||||
|
||||
// 11b 11g 11n 11n 11ax
|
||||
const static char kWifiPhyMode[] PROGMEM = "low rate|11b|11g|HT20|HT40|HE20"; // Wi-Fi Modes
|
||||
// 11b 11g 11a 11n 11n 11ax 11ac
|
||||
const static char kWifiPhyMode[] PROGMEM = "low rate|11b|11g|11a|HT20|HT40|HE20|VHT20"; // Wi-Fi Modes
|
||||
|
||||
#include "soc/soc.h"
|
||||
#include "soc/spi_reg.h"
|
||||
|
||||
@ -1352,17 +1352,19 @@ void WiFiSetTXpowerBasedOnRssi(void) {
|
||||
int threshold = WIFI_SENSITIVITY_n;
|
||||
int phy_mode = WiFiHelper::getPhyMode();
|
||||
switch (phy_mode) {
|
||||
case 1: // 11b (WIFI_PHY_MODE_11B)
|
||||
case 1: // 1: 11b (WIFI_PHY_MODE_11B)
|
||||
threshold = WIFI_SENSITIVITY_11b;
|
||||
if (max_tx_pwr > MAX_TX_PWR_DBM_11b) max_tx_pwr = MAX_TX_PWR_DBM_11b;
|
||||
break;
|
||||
case 2: // 11bg (WIFI_PHY_MODE_11G)
|
||||
case 2: // 2: 11bg (WIFI_PHY_MODE_11G)
|
||||
threshold = WIFI_SENSITIVITY_54g;
|
||||
if (max_tx_pwr > MAX_TX_PWR_DBM_54g) max_tx_pwr = MAX_TX_PWR_DBM_54g;
|
||||
break;
|
||||
case 3: // 11bgn (WIFI_PHY_MODE_HT20 = WIFI_PHY_MODE_11N)
|
||||
case 4: // 11bgn (WIFI_PHY_MODE_HT40)
|
||||
case 5: // 11ax (WIFI_PHY_MODE_HE20)
|
||||
default: // 3: 11bgn (WIFI_PHY_MODE_11A)
|
||||
// 4: 11n (WIFI_PHY_MODE_HT20)
|
||||
// 5: 11n (WIFI_PHY_MODE_HT40)
|
||||
// 6: 11ax (WIFI_PHY_MODE_HE20)
|
||||
// 7: 11ax (WIFI_PHY_MODE_VHT20)
|
||||
threshold = WIFI_SENSITIVITY_n;
|
||||
if (max_tx_pwr > MAX_TX_PWR_DBM_n) max_tx_pwr = MAX_TX_PWR_DBM_n;
|
||||
break;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user