From 092577179bbc54e8db575b72830864e665647aa9 Mon Sep 17 00:00:00 2001 From: Rodrigo Garcia Date: Wed, 20 Oct 2021 23:49:01 -0300 Subject: [PATCH 1/3] wifi dynamic buffers tweak --- libraries/WiFi/src/WiFiGeneric.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/libraries/WiFi/src/WiFiGeneric.cpp b/libraries/WiFi/src/WiFiGeneric.cpp index 0c3acc28688..6909b41e134 100644 --- a/libraries/WiFi/src/WiFiGeneric.cpp +++ b/libraries/WiFi/src/WiFiGeneric.cpp @@ -557,6 +557,16 @@ bool wifiLowLevelInit(bool persistent){ } wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); + + // this code forces WiFi to go with Dynamic Buffers + // it bypasses sdkconfig definitions! + cfg.static_tx_buf_num = 0; + cfg.dynamic_tx_buf_num = 32; + cfg.tx_buf_type = 1; + cfg.cache_tx_buf_num = 1; // can't be zero! + cfg.static_rx_buf_num = 4; + cfg.dynamic_rx_buf_num = 32; + esp_err_t err = esp_wifi_init(&cfg); if(err){ log_e("esp_wifi_init %d", err); From c070dbee80ae3b5193952fa998b921311998741f Mon Sep 17 00:00:00 2001 From: Rodrigo Garcia Date: Thu, 21 Oct 2021 11:31:38 -0300 Subject: [PATCH 2/3] adds WiFiGeneric::useStaticBuffers(bool) --- libraries/WiFi/src/WiFiGeneric.cpp | 32 +++++++++++++++++++++--------- libraries/WiFi/src/WiFiGeneric.h | 4 ++++ 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/libraries/WiFi/src/WiFiGeneric.cpp b/libraries/WiFi/src/WiFiGeneric.cpp index 6909b41e134..33db12bfea7 100644 --- a/libraries/WiFi/src/WiFiGeneric.cpp +++ b/libraries/WiFi/src/WiFiGeneric.cpp @@ -542,6 +542,21 @@ bool tcpipInit(){ * */ static bool lowLevelInitDone = false; +bool WiFiGenericClass::_wifiUseStaticBuffers = false; + +bool WiFiGenericClass::useStaticBuffers(){ + return _wifiUseStaticBuffers; +} + +void WiFiGenericClass::useStaticBuffers(bool bufferMode){ + if (lowLevelInitDone) { + log_w("WiFi already started. Call espWiFiStop() before setting Static Buffer Mode."); + } else { + _wifiUseStaticBuffers = bufferMode; + } +} + + bool wifiLowLevelInit(bool persistent){ if(!lowLevelInitDone){ lowLevelInitDone = true; @@ -558,14 +573,14 @@ bool wifiLowLevelInit(bool persistent){ wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); - // this code forces WiFi to go with Dynamic Buffers - // it bypasses sdkconfig definitions! - cfg.static_tx_buf_num = 0; - cfg.dynamic_tx_buf_num = 32; - cfg.tx_buf_type = 1; - cfg.cache_tx_buf_num = 1; // can't be zero! - cfg.static_rx_buf_num = 4; - cfg.dynamic_rx_buf_num = 32; + if(!WiFiGenericClass::useStaticBuffers()) { + cfg.static_tx_buf_num = 0; + cfg.dynamic_tx_buf_num = 32; + cfg.tx_buf_type = 1; + cfg.cache_tx_buf_num = 1; // can't be zero! + cfg.static_rx_buf_num = 4; + cfg.dynamic_rx_buf_num = 32; + } esp_err_t err = esp_wifi_init(&cfg); if(err){ @@ -654,7 +669,6 @@ wifi_ps_type_t WiFiGenericClass::_sleepEnabled = WIFI_PS_MIN_MODEM; WiFiGenericClass::WiFiGenericClass() { - } const char * WiFiGenericClass::getHostname() diff --git a/libraries/WiFi/src/WiFiGeneric.h b/libraries/WiFi/src/WiFiGeneric.h index 0d07d1ed29e..e3fd62689ad 100644 --- a/libraries/WiFi/src/WiFiGeneric.h +++ b/libraries/WiFi/src/WiFiGeneric.h @@ -179,12 +179,16 @@ class WiFiGenericClass static bool hostname(const String& aHostname) { return setHostname(aHostname.c_str()); } static esp_err_t _eventCallback(arduino_event_t *event); + + static void useStaticBuffers(bool bufferMode); + static bool useStaticBuffers(); protected: static bool _persistent; static bool _long_range; static wifi_mode_t _forceSleepLastMode; static wifi_ps_type_t _sleepEnabled; + static bool _wifiUseStaticBuffers; static int setStatusBits(int bits); static int clearStatusBits(int bits); From 0db173844fe47f4ba7986102285a0c3b63187736 Mon Sep 17 00:00:00 2001 From: Rodrigo Garcia Date: Thu, 21 Oct 2021 17:57:45 -0300 Subject: [PATCH 3/3] adds WiFiGeneric::useStaticBuffers(bool) --- libraries/WiFi/src/WiFiGeneric.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/libraries/WiFi/src/WiFiGeneric.cpp b/libraries/WiFi/src/WiFiGeneric.cpp index 33db12bfea7..838c23bf5cd 100644 --- a/libraries/WiFi/src/WiFiGeneric.cpp +++ b/libraries/WiFi/src/WiFiGeneric.cpp @@ -550,10 +550,9 @@ bool WiFiGenericClass::useStaticBuffers(){ void WiFiGenericClass::useStaticBuffers(bool bufferMode){ if (lowLevelInitDone) { - log_w("WiFi already started. Call espWiFiStop() before setting Static Buffer Mode."); - } else { - _wifiUseStaticBuffers = bufferMode; - } + log_w("WiFi already started. Call WiFi.mode(WIFI_MODE_NULL) before setting Static Buffer Mode."); + } + _wifiUseStaticBuffers = bufferMode; }