Add command ``Wifi 5`` to enable 11ax on ESP32 Core3

This commit is contained in:
Theo Arends 2024-04-03 14:36:52 +02:00
parent fe89774fe0
commit 7c36029ec2
6 changed files with 26 additions and 8 deletions

View File

@ -6,6 +6,7 @@ All notable changes to this project will be documented in this file.
## [13.4.0.4]
### Added
- Command ``PowerLock`` to disable power control of selected outputs (#21081)
- Command ``Wifi 5`` to enable 11ax on ESP32 Core3
### Breaking Changed

View File

@ -118,6 +118,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm
## Changelog v13.4.0.4
### Added
- Command ``Wifi 5`` to enable 11ax on ESP32 Core3
- Command ``PowerLock`` to disable power control of selected outputs [#21081](https://github.com/arendst/Tasmota/issues/21081)
- Support for calculated heat index if temperature and humidity is available with ``#define USE_HEAT_INDEX`` [#4771](https://github.com/arendst/Tasmota/issues/4771)
- Support for LoRa and single channel EU863-870 LoRaWanBridge [#17790](https://github.com/arendst/Tasmota/issues/17790)

View File

@ -147,10 +147,13 @@ int WiFiClass32::getPhyMode() {
}
bool WiFiClass32::setPhyMode(WiFiPhyMode_t mode) {
uint8_t protocol_bitmap = WIFI_PROTOCOL_11B; // 1
uint8_t protocol_bitmap = WIFI_PROTOCOL_11B; // 1
switch (mode) {
case 3: protocol_bitmap |= WIFI_PROTOCOL_11N; // 4
case 2: protocol_bitmap |= WIFI_PROTOCOL_11G; // 2
#if ESP_IDF_VERSION_MAJOR >= 5
case 4: protocol_bitmap |= WIFI_PROTOCOL_11AX; // 16
#endif
case 3: protocol_bitmap |= WIFI_PROTOCOL_11N; // 4
case 2: protocol_bitmap |= WIFI_PROTOCOL_11G; // 2
}
return (ESP_OK == esp_wifi_set_protocol(WIFI_IF_STA, protocol_bitmap));
}

View File

@ -33,6 +33,9 @@
typedef enum WiFiPhyMode
{
TAS_WIFI_PHY_MODE_LR = 0, TAS_WIFI_PHY_MODE_11B = 1, TAS_WIFI_PHY_MODE_11G = 2, TAS_WIFI_PHY_MODE_11N = 3
#if ESP_IDF_VERSION_MAJOR >= 5
, TAS_WIFI_PHY_MODE_11AX = 4
#endif
} WiFiPhyMode_t;
/*

View File

@ -2686,8 +2686,7 @@ void CmndWifiPower(void) {
ResponseCmndFloat(WifiGetOutputPower(), 1);
}
void CmndWifi(void)
{
void CmndWifi(void) {
if ((XdrvMailbox.payload >= 0) && (XdrvMailbox.payload <= 1)) {
Settings->flag4.network_wifi = XdrvMailbox.payload;
if (Settings->flag4.network_wifi) {
@ -2697,14 +2696,25 @@ void CmndWifi(void)
WifiEnable();
#endif
}
} else if ((XdrvMailbox.payload >= 2) && (XdrvMailbox.payload <= 4)) {
} else if ((XdrvMailbox.payload >= 2) &&
#ifdef ESP32
#if ESP_IDF_VERSION_MAJOR >= 5
(XdrvMailbox.payload <= 5)
#else // ESP_IDF_VERSION_MAJOR < 5
(XdrvMailbox.payload <= 4)
#endif // ESP_IDF_VERSION_MAJOR
#else // ESP8266
(XdrvMailbox.payload <= 4)
#endif // ESP32/ESP8266
) {
// Wifi 2 = B
// Wifi 3 = BG
// Wifi 4 = BGN
// Wifi 5 = BGNAX
#ifdef ESP32
Wifi.phy_mode = XdrvMailbox.payload - 1;
#endif
WiFi.setPhyMode(WiFiPhyMode_t(XdrvMailbox.payload - 1)); // 1-B/2-BG/3-BGN
WiFi.setPhyMode(WiFiPhyMode_t(XdrvMailbox.payload - 1)); // 1-B/2-BG/3-BGN/4-BGNAX
}
Response_P(PSTR("{\"" D_JSON_WIFI "\":\"%s\",\"" D_JSON_WIFI_MODE "\":\"%s\"}"),
GetStateText(Settings->flag4.network_wifi), WifiGetPhyMode().c_str());

View File

@ -228,7 +228,7 @@ void WifiBegin(uint8_t flag, uint8_t channel) {
// if (WiFi.getPhyMode() != WIFI_PHY_MODE_11G) { WiFi.setPhyMode(WIFI_PHY_MODE_11G); } // B/G
#ifdef ESP32
if (Wifi.phy_mode) {
WiFi.setPhyMode(WiFiPhyMode_t(Wifi.phy_mode)); // 1-B/2-BG/3-BGN
WiFi.setPhyMode(WiFiPhyMode_t(Wifi.phy_mode)); // 1-B/2-BG/3-BGN/4-BGNAX
}
#endif
if (!WiFi.getAutoConnect()) { WiFi.setAutoConnect(true); }