Add option to disable 802.11b data rates

This commit is contained in:
david-beinder
2023-05-01 17:47:46 +02:00
parent 84fe477783
commit 7c5a1b1fb8
8 changed files with 48 additions and 20 deletions

View File

@@ -30,6 +30,7 @@ ADC_MODE(ADC_VCC);
#endif
#if defined(ESP32)
#include <esp_wifi.h>
#include <esp_task_wdt.h>
#include <lwip/dns.h>
#endif
@@ -125,6 +126,7 @@ AmsDataStorage ds(&Debug);
EnergyAccounting ea(&Debug);
uint8_t wifiReconnectCount = 0;
bool wifiDisable11b = false;
HDLCParser *hdlcParser = NULL;
MBUSParser *mbusParser = NULL;
@@ -167,6 +169,14 @@ uint8_t dnsState = 0;
ip_addr_t dns0;
void WiFiEvent(WiFiEvent_t event, WiFiEventInfo_t info) {
switch(event) {
#if defined(ESP32)
case ARDUINO_EVENT_WIFI_READY:
if (wifiDisable11b) {
esp_wifi_config_11b_rate(WIFI_IF_AP, true);
esp_wifi_config_11b_rate(WIFI_IF_STA, true);
}
break;
#endif
case ARDUINO_EVENT_WIFI_STA_GOT_IP: {
const ip_addr_t* dns = dns_getserver(0);
memcpy(&dns0, dns, sizeof(dns0));
@@ -315,6 +325,12 @@ void setup() {
WiFi.softAPdisconnect(true);
WiFi.mode(WIFI_OFF);
WiFiConfig wifiConf;
if(config.getWiFiConfig(wifiConf)) {
wifiDisable11b = !wifiConf.use11b;
}
WiFi.onEvent(WiFiEvent);
bool hasFs = false;
#if defined(ESP32)
debugD_P(PSTR("ESP32 LittleFS"));
@@ -1381,8 +1397,7 @@ void WiFi_connect() {
#if defined(ESP32)
if(strlen(wifi.hostname) > 0) {
WiFi.setHostname(wifi.hostname);
}
WiFi.onEvent(WiFiEvent);
}
#endif
WiFi.mode(WIFI_STA);
@@ -1899,6 +1914,9 @@ void configFileParse() {
} else if(strncmp_P(buf, PSTR("hostname "), 9) == 0) {
if(!lWiFi) { config.getWiFiConfig(wifi); lWiFi = true; };
strcpy(wifi.hostname, buf+9);
} else if(strncmp_P(buf, PSTR("use11b "), 7) == 0) {
if(!lWiFi) { config.getWiFiConfig(wifi); lWiFi = true; };
wifi.use11b = String(buf+7).toInt() == 1;
} else if(strncmp_P(buf, PSTR("mdns "), 5) == 0) {
if(!lWiFi) { config.getWiFiConfig(wifi); lWiFi = true; };
wifi.mdns = String(buf+5).toInt() == 1;;