From 5fe56146861cce992930b49344e2a30811df493f Mon Sep 17 00:00:00 2001 From: iranl Date: Sun, 22 Jun 2025 22:24:20 +0200 Subject: [PATCH] WiFi and RAM optimizations --- README.md | 15 +++-- lib/PsychicHttp/src/PsychicRequest.cpp | 2 + platformio.ini | 32 ++++----- sdkconfig.defaults | 6 +- sdkconfig.ramoptimize.defaults | 33 +++++++++ src/Config.h | 2 +- src/idf_component.yml | 2 +- src/main.cpp | 57 ++++++++++++++-- src/networkDevices/WifiDevice.cpp | 93 +++++++++++++------------- src/networkDevices/WifiDevice.h | 1 + 10 files changed, 164 insertions(+), 79 deletions(-) create mode 100644 sdkconfig.ramoptimize.defaults diff --git a/README.md b/README.md index 4cee1d7..5047de5 100644 --- a/README.md +++ b/README.md @@ -198,18 +198,19 @@ ESP32 devices have a limited amount of free RAM available.

On version >=9.10 of Nuki Hub with only a Nuki Lock connected the expected free amount of RAM/Heap available is around: -- ESP32: 70.000 bytes -- ESP32 with PSRAM: 110.000 bytes + PSRAM -- ESP32-C3: 90.000 bytes -- ESP32-C5: 110.000 bytes +- ESP32: 105.000 bytes +- ESP32 with PSRAM: 120.000 bytes + PSRAM +- ESP32-C3: 70.000 bytes +- ESP32-C5 with PSRAM: 130.000 bytes + PSRAM - ESP32-C6: 200.000 bytes -- ESP32-S3 130.000 bytes -- ESP32-S3 with PSRAM: 180.000 bytes + PSRAM +- ESP32-P4: 450.000 bytes +- ESP32-S3 135.000 bytes +- ESP32-S3 with PSRAM: 185.000 bytes + PSRAM This free amount of RAM can be reduced (temporarily) by certain actions (such as changing Nuki device config) or continuously when enabling the following: - Connecting both a Nuki opener and a Nuki lock to Nuki Hub - Enlarging stack sizes of the Nuki and Network task to accommodate large amounts of keypad codes, authorization entries or timecontrol entries -- MQTT SSL (Costs about 30k RAM) +- MQTT SSL (Costs about 20k-30k RAM) - HTTP SSL (Costs about 30k RAM) - Developing/debugging Nuki devices and/or Nuki Hub, using WebSerial (Costs about 30k RAM) diff --git a/lib/PsychicHttp/src/PsychicRequest.cpp b/lib/PsychicHttp/src/PsychicRequest.cpp index 9f0b921..f5664e9 100644 --- a/lib/PsychicHttp/src/PsychicRequest.cpp +++ b/lib/PsychicHttp/src/PsychicRequest.cpp @@ -306,6 +306,8 @@ String PsychicRequest::getCookie(const char* key) if (!hasCookie(key, &size)) return cookie; + size = httpd_req_get_hdr_value_len(this->_req, "Cookie"); + // allocate cookie buffer... keep it on the stack char buf[size]; diff --git a/platformio.ini b/platformio.ini index 808c99c..55a49e6 100644 --- a/platformio.ini +++ b/platformio.ini @@ -101,7 +101,7 @@ build_flags = extends = env:esp32 board = esp32-c3-devkitc-02 board_build.cmake_extra_args = - -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.release.defaults;sdkconfig.singlecore.defaults" + -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.release.defaults;sdkconfig.singlecore.defaults;sdkconfig.ramoptimize.defaults" build_flags = ${env.build_flags} -DCORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_NONE @@ -110,32 +110,32 @@ build_flags = extends = env:esp32 board = nuki-esp32-s3 board_build.cmake_extra_args = - -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.release.defaults;sdkconfig.defaults.esp32-s3" + -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.release.defaults;sdkconfig.ramoptimize.defaults;sdkconfig.defaults.esp32-s3" [env:esp32-s3-nopsram] extends = env:esp32 board = nuki-esp32-s3-nopsram board_build.cmake_extra_args = - -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.release.defaults;sdkconfig.defaults.esp32-s3-nopsram" + -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.release.defaults;sdkconfig.ramoptimize.defaults;sdkconfig.defaults.esp32-s3-nopsram" [env:esp32-s3-oct] extends = env:esp32 board = nuki-esp32-s3-oct board_build.cmake_extra_args = - -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.release.defaults;sdkconfig.defaults.esp32-s3-oct" + -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.release.defaults;sdkconfig.ramoptimize.defaults;sdkconfig.defaults.esp32-s3-oct" [env:esp32-c5] extends = env:esp32 board_build.partitions = partitions_c5.csv board = nuki-esp32-c5 board_build.cmake_extra_args = - -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.release.defaults;sdkconfig.defaults.esp32-c5;sdkconfig.singlecore.defaults" + -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.release.defaults;sdkconfig.singlecore.defaults;sdkconfig.ramoptimize.defaults;sdkconfig.defaults.esp32-c5" [env:esp32-c6] extends = env:esp32 board = esp32-c6-devkitm-1 board_build.cmake_extra_args = - -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.release.defaults;sdkconfig.singlecore.defaults" + -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.release.defaults;sdkconfig.singlecore.defaults;sdkconfig.ramoptimize.defaults" build_flags = ${env:esp32.build_flags} -DNUKI_HUB_HTTPS_SERVER @@ -146,7 +146,7 @@ extends = env:esp32 board = esp32-h2-devkitm-1 board_build.cmake_extra_args = -DNUKI_TARGET_H2=y - -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.release.defaults;sdkconfig.singlecore.defaults" + -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.release.defaults;sdkconfig.singlecore.defaults;sdkconfig.ramoptimize.defaults" lib_ignore = BLE BluetoothSerial @@ -174,7 +174,7 @@ extends = env:esp32 board_build.embed_txtfiles = board = esp32-p4 board_build.cmake_extra_args = - -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.release.defaults;sdkconfig.defaults.esp32-p4" + -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.release.defaults;sdkconfig.ramoptimize.defaults;sdkconfig.defaults.esp32-p4" [env:esp32_dbg] extends = env:esp32 @@ -210,7 +210,7 @@ build_flags = extends = env:esp32-c3 custom_build = debug board_build.cmake_extra_args = - -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.debug.defaults;sdkconfig.singlecore.defaults" + -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.debug.defaults;sdkconfig.singlecore.defaults;sdkconfig.ramoptimize.defaults" build_flags = ${env.build_flags} -DCORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_DEBUG @@ -222,7 +222,7 @@ board_build.partitions = partitions_c5dbg.csv board = nuki-esp32-c5dbg custom_build = debug board_build.cmake_extra_args = - -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.debug.defaults;sdkconfig.defaults.esp32-c5;sdkconfig.defaults.esp32-c5dbg;sdkconfig.singlecore.defaults" + -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.debug.defaults;sdkconfig.singlecore.defaults;sdkconfig.ramoptimize.defaults;sdkconfig.defaults.esp32-c5;sdkconfig.defaults.esp32-c5dbg" build_flags = ${env:esp32_dbg.build_flags} @@ -230,7 +230,7 @@ build_flags = extends = env:esp32-c6 custom_build = debug board_build.cmake_extra_args = - -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.debug.defaults;sdkconfig.singlecore.defaults" + -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.debug.defaults;sdkconfig.singlecore.defaults;sdkconfig.ramoptimize.defaults" build_flags = ${env:esp32_dbg.build_flags} -DFORCE_NUKI_HUB_HTTPS_SERVER @@ -240,7 +240,7 @@ extends = env:esp32-h2 custom_build = debug board_build.cmake_extra_args = -DNUKI_TARGET_H2=y - -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.debug.defaults;sdkconfig.singlecore.defaults" + -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.debug.defaults;sdkconfig.singlecore.defaults;sdkconfig.ramoptimize.defaults" build_flags = ${env.build_flags} -DCORE_DEBUG_LEVEL=ARDUHAL_LOG_LEVEL_DEBUG @@ -250,7 +250,7 @@ build_flags = extends = env:esp32-s3 custom_build = debug board_build.cmake_extra_args = - -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.debug.defaults;sdkconfig.defaults.esp32-s3" + -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.debug.defaults;sdkconfig.ramoptimize.defaults;sdkconfig.defaults.esp32-s3" build_flags = ${env:esp32_dbg.build_flags} @@ -258,7 +258,7 @@ build_flags = extends = env:esp32-s3-nopsram custom_build = debug board_build.cmake_extra_args = - -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.debug.defaults;sdkconfig.defaults.esp32-s3-nopsram" + -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.debug.defaults;sdkconfig.ramoptimize.defaults;sdkconfig.defaults.esp32-s3-nopsram" build_flags = ${env:esp32-nopsram_dbg.build_flags} @@ -266,7 +266,7 @@ build_flags = extends = env:esp32-s3-oct custom_build = debug board_build.cmake_extra_args = - -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.debug.defaults;sdkconfig.defaults.esp32-s3-oct" + -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.debug.defaults;sdkconfig.ramoptimize.defaults;sdkconfig.defaults.esp32-s3-oct" build_flags = ${env:esp32_dbg.build_flags} @@ -284,6 +284,6 @@ build_flags = extends = env:esp32-p4 custom_build = debug board_build.cmake_extra_args = - -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.debug.defaults;sdkconfig.defaults.esp32-p4" + -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.debug.defaults;sdkconfig.ramoptimize.defaults;sdkconfig.defaults.esp32-p4" build_flags = ${env:esp32_dbg.build_flags} \ No newline at end of file diff --git a/sdkconfig.defaults b/sdkconfig.defaults index 1abe5c5..44caab5 100644 --- a/sdkconfig.defaults +++ b/sdkconfig.defaults @@ -39,7 +39,9 @@ CONFIG_ARDUINO_SELECTIVE_Insights=n CONFIG_ARDUINO_LOOP_STACK_SIZE=12288 # LOGS -CONFIG_HEAP_TASK_TRACKING=n +#CONFIG_HEAP_TASK_TRACKING=y +#CONFIG_HEAP_TRACK_DELETED_TASKS=y +#CONFIG_ESP_SYSTEM_USE_FRAME_POINTER=y CONFIG_LOG_COLORS=n CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=n CONFIG_LOG_MAXIMUM_LEVEL=4 @@ -162,7 +164,7 @@ CONFIG_ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH=y # HTTP(S) SERVER CONFIG_ESP_HTTPS_SERVER_ENABLE=y CONFIG_HTTPD_MAX_REQ_HDR_LEN=2048 -CONFIG_HTTPD_MAX_URI_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=2048 CONFIG_HTTPD_ERR_RESP_NO_DELAY=y CONFIG_HTTPD_PURGE_BUF_LEN=32 CONFIG_HTTPD_WS_SUPPORT=y diff --git a/sdkconfig.ramoptimize.defaults b/sdkconfig.ramoptimize.defaults new file mode 100644 index 0000000..2e2b706 --- /dev/null +++ b/sdkconfig.ramoptimize.defaults @@ -0,0 +1,33 @@ +CONFIG_COMPILER_OPTIMIZATION_NONE=n +CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT=y +CONFIG_LWIP_IRAM_OPTIMIZATION=n +CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION=n +CONFIG_GPTIMER_ISR_HANDLER_IN_IRAM=n +CONFIG_SPI_MASTER_IN_IRAM=n +CONFIG_SPI_SLAVE_IN_IRAM=n +CONFIG_ANA_CMPR_ISR_HANDLER_IN_IRAM=n +CONFIG_PARLIO_TX_ISR_HANDLER_IN_IRAM=n +CONFIG_PARLIO_RX_ISR_HANDLER_IN_IRAM=n +CONFIG_RMT_TX_ISR_HANDLER_IN_IRAM=n +CONFIG_RMT_RX_ISR_HANDLER_IN_IRAM=n +CONFIG_I2C_MASTER_ISR_HANDLER_IN_IRAM=n +CONFIG_GDMA_ISR_HANDLER_IN_IRAM=n +CONFIG_LIBC_LOCKS_PLACE_IN_IRAM=n +CONFIG_HAL_ASSERTION_SILENT=y +#CONFIG_SPI_FLASH_AUTO_SUSPEND=y ## CAUSES CRASHES ON SOME DEVICES +#CONFIG_SPI_FLASH_PLACE_FUNCTIONS_IN_IRAM=n ## CAUSES CRASHES ON SOME DEVICES +#CONFIG_SPI_FLASH_AUTO_CHECK_SUSPEND_STATUS=y ## CAUSES CRASHES ON SOME DEVICES +CONFIG_LIBC_MISC_IN_IRAM=n +CONFIG_ESP_TIMER_IN_IRAM=n +CONFIG_ESP_INTR_IN_IRAM=n +CONFIG_LOG_IN_IRAM=n +CONFIG_ESP_ROM_PRINT_IN_IRAM=n +CONFIG_PM_SLEEP_FUNC_IN_IRAM=n +CONFIG_PM_RTOS_IDLE_OPT=n +CONFIG_ESP_SLEEP_POWER_DOWN_FLASH=n +CONFIG_PM_SLP_IRAM_OPT=n +CONFIG_ESP_REGI2C_CTRL_FUNC_IN_IRAM=n +CONFIG_ESP_PERIPH_CTRL_FUNC_IN_IRAM=n +CONFIG_ESP_PHY_IRAM_OPT=n +CONFIG_ESP_WIFI_SLP_IRAM_OPT=n +CONFIG_ESP_WIFI_EXTRA_IRAM_OPT=n \ No newline at end of file diff --git a/src/Config.h b/src/Config.h index f3bd2d5..a58d185 100644 --- a/src/Config.h +++ b/src/Config.h @@ -5,7 +5,7 @@ #define NUKI_HUB_VERSION "9.12" #define NUKI_HUB_VERSION_INT (uint32_t)912 #define NUKI_HUB_BUILD "unknownbuildnr" -#define NUKI_HUB_DATE "2025-06-20" +#define NUKI_HUB_DATE "2025-06-25" #define GITHUB_LATEST_RELEASE_URL (char*)"https://github.com/technyon/nuki_hub/releases/latest" #define GITHUB_OTA_MANIFEST_URL (char*)"https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/manifest.json" diff --git a/src/idf_component.yml b/src/idf_component.yml index 80d9dba..fb57423 100644 --- a/src/idf_component.yml +++ b/src/idf_component.yml @@ -9,7 +9,7 @@ dependencies: espressif/libsodium: "^1.0.20~2" espressif/esp_hosted: - version: 2.0.10 + version: "*" rules: - if: "target in [esp32p4]" diff --git a/src/main.cpp b/src/main.cpp index 3219b31..46dc1b1 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -6,6 +6,10 @@ #include "esp_http_client.h" #include "esp_https_ota.h" #include "esp_task_wdt.h" +#ifdef CONFIG_HEAP_TASK_TRACKING +#include "esp_heap_task_info.h" +#include "esp_heap_caps.h" +#endif #include "Config.h" #include "esp32-hal-log.h" #include "hal/wdt_hal.h" @@ -644,6 +648,49 @@ void networkTask(void *pvParameters) } #ifndef NUKI_HUB_UPDATER +#ifdef CONFIG_HEAP_TASK_TRACKING +static void print_all_tasks_info(void) +{ + heap_all_tasks_stat_t tasks_stat; + /* call API to dynamically allocate the memory necessary to store the + * information collected while calling heap_caps_get_all_task_stat */ + const esp_err_t ret_val = heap_caps_alloc_all_task_stat_arrays(&tasks_stat); + assert(ret_val == ESP_OK); + + /* collect the information */ + heap_caps_get_all_task_stat(&tasks_stat); + + /* process the information retrieved */ + Log->printf("\n--------------------------------------------------------------------------------\n"); + Log->printf("PRINTING ALL TASKS INFO\n"); + Log->printf("--------------------------------------------------------------------------------\n"); + for (size_t task_idx = 0; task_idx < tasks_stat.task_count; task_idx++) { + task_stat_t task_stat = tasks_stat.stat_arr[task_idx]; + Log->printf("%s: %s: Peak Usage %" PRIu16 ", Current Usage %" PRIu16 "\n", task_stat.name, + task_stat.is_alive ? "ALIVE " : "DELETED", + task_stat.overall_peak_usage, + task_stat.overall_current_usage); + + for (size_t heap_idx = 0; heap_idx < task_stat.heap_count; heap_idx++) { + heap_stat_t heap_stat = task_stat.heap_stat[heap_idx]; + Log->printf(" %s: Caps: %" PRIu32 ". Size %" PRIu16 ", Current Usage %" PRIu16 ", Peak Usage %" PRIu16 ", alloc count %" PRIu16 "\n", heap_stat.name, + heap_stat.caps, + heap_stat.size, + heap_stat.current_usage, + heap_stat.peak_usage, + heap_stat.alloc_count); + + for (size_t alloc_idx = 0; alloc_idx < heap_stat.alloc_count; alloc_idx++) { + heap_task_block_t alloc_stat = heap_stat.alloc_stat[alloc_idx]; + Log->printf(" %p: Size: %" PRIu32 "\n", alloc_stat.address, alloc_stat.size); + } + } + } + + /* delete the memory dynamically allocated while calling heap_caps_alloc_all_task_stat_arrays */ + heap_caps_free_all_task_stat_arrays(&tasks_stat); +} +#endif void nukiTask(void *pvParameters) { esp_task_wdt_add(NULL); @@ -1256,6 +1303,9 @@ void setup() Log->println(NUKI_HUB_VERSION); Log->print("Nuki Hub build "); Log->println(NUKI_HUB_BUILD); + + Log->println(preferences->getString(preference_cred_user)); + Log->println(preferences->getString(preference_cred_password)); uint32_t devIdOpener = preferences->getUInt(preference_device_id_opener); @@ -1372,12 +1422,7 @@ void setup() setupTasks(false); } -#ifdef DEBUG_NUKIHUB - Log->print("Task Name\tStatus\tPrio\tHWM\tTask\tAffinity\n"); - char stats_buffer[1024]; - vTaskList(stats_buffer); - Log->println(stats_buffer); -#endif + //print_all_tasks_info(); } void loop() diff --git a/src/networkDevices/WifiDevice.cpp b/src/networkDevices/WifiDevice.cpp index 642a1d8..e96ce11 100644 --- a/src/networkDevices/WifiDevice.cpp +++ b/src/networkDevices/WifiDevice.cpp @@ -51,10 +51,16 @@ void WifiDevice::initialize() WiFi.disconnect(true); WiFi.mode(WIFI_STA); WiFi.disconnect(); - if (esp_task_wdt_status(NULL) == ESP_OK) { - esp_task_wdt_reset(); + + int loop = 0; + while (!_wifiClientStarted && loop < 50) { + if (esp_task_wdt_status(NULL) == ESP_OK) { + esp_task_wdt_reset(); + } + vTaskDelay(100 / portTICK_PERIOD_MS); + loop++; } - vTaskDelay(5000 / portTICK_PERIOD_MS); + Log->println("Dummy WiFi device for Hosted on P4 done"); } return; @@ -64,24 +70,25 @@ void WifiDevice::scan(bool passive, bool async) { if (!_openAP) { + _wifiClientStarted = false; WiFi.disconnect(true); WiFi.mode(WIFI_STA); WiFi.disconnect(); + } + + int loop = 0; + while (!_wifiClientStarted && loop < 50) { if (esp_task_wdt_status(NULL) == ESP_OK) { esp_task_wdt_reset(); } - vTaskDelay(1000 / portTICK_PERIOD_MS); + vTaskDelay(100 / portTICK_PERIOD_MS); + loop++; } WiFi.scanDelete(); WiFi.setScanMethod(WIFI_ALL_CHANNEL_SCAN); WiFi.setSortMethod(WIFI_CONNECT_AP_BY_SIGNAL); - if (esp_task_wdt_status(NULL) == ESP_OK) { - esp_task_wdt_reset(); - } - vTaskDelay(1000 / portTICK_PERIOD_MS); - if(async) { Log->println("Wi-Fi async scan started"); @@ -126,13 +133,6 @@ void WifiDevice::openAP() bool WifiDevice::connect() { - WiFi.mode(WIFI_STA); - WiFi.setHostname(_hostname.c_str()); - if (esp_task_wdt_status(NULL) == ESP_OK) { - esp_task_wdt_reset(); - } - vTaskDelay(500 / portTICK_PERIOD_MS); - int bestConnection = -1; if(_preferences->getBool(preference_find_best_rssi, false)) @@ -215,7 +215,7 @@ bool WifiDevice::connect() } return false; - } + } return true; } @@ -284,10 +284,10 @@ void WifiDevice::onWifiEvent(const WiFiEvent_t &event, const WiFiEventInfo_t &in Log->printf("[WiFi-event] event: %d\n", event); switch (event) { - case ARDUINO_EVENT_WIFI_READY: - Log->println("WiFi interface ready"); + case ARDUINO_EVENT_WIFI_READY: + Log->println("WiFi interface ready"); break; - case ARDUINO_EVENT_WIFI_SCAN_DONE: + case ARDUINO_EVENT_WIFI_SCAN_DONE: Log->println("Completed scan for access points"); _foundNetworks = WiFi.scanComplete(); @@ -315,28 +315,29 @@ void WifiDevice::onWifiEvent(const WiFiEvent_t &event, const WiFiEventInfo_t &in scan(false, true); } break; - case ARDUINO_EVENT_WIFI_STA_START: - Log->println("WiFi client started"); + case ARDUINO_EVENT_WIFI_STA_START: + Log->println("WiFi client started"); + _wifiClientStarted = true; break; - case ARDUINO_EVENT_WIFI_STA_STOP: - Log->println("WiFi clients stopped"); + case ARDUINO_EVENT_WIFI_STA_STOP: + Log->println("WiFi clients stopped"); if(!_openAP) { onDisconnected(); } break; - case ARDUINO_EVENT_WIFI_STA_CONNECTED: + case ARDUINO_EVENT_WIFI_STA_CONNECTED: Log->println("Connected to access point"); break; - case ARDUINO_EVENT_WIFI_STA_DISCONNECTED: - Log->println("Disconnected from WiFi access point"); + case ARDUINO_EVENT_WIFI_STA_DISCONNECTED: + Log->println("Disconnected from WiFi access point"); if(!_openAP) { onDisconnected(); } break; - case ARDUINO_EVENT_WIFI_STA_AUTHMODE_CHANGE: - Log->println("Authentication mode of access point has changed"); + case ARDUINO_EVENT_WIFI_STA_AUTHMODE_CHANGE: + Log->println("Authentication mode of access point has changed"); break; case ARDUINO_EVENT_WIFI_STA_GOT_IP: Log->print("Obtained IP address: "); @@ -346,38 +347,38 @@ void WifiDevice::onWifiEvent(const WiFiEvent_t &event, const WiFiEventInfo_t &in onConnected(); } break; - case ARDUINO_EVENT_WIFI_STA_LOST_IP: + case ARDUINO_EVENT_WIFI_STA_LOST_IP: Log->println("Lost IP address and IP address is reset to 0"); if(!_openAP) { onDisconnected(); } break; - case ARDUINO_EVENT_WIFI_AP_START: + case ARDUINO_EVENT_WIFI_AP_START: Log->println("WiFi access point started"); break; - case ARDUINO_EVENT_WIFI_AP_STOP: - Log->println("WiFi access point stopped"); + case ARDUINO_EVENT_WIFI_AP_STOP: + Log->println("WiFi access point stopped"); break; - case ARDUINO_EVENT_WIFI_AP_STACONNECTED: - Log->println("Client connected"); + case ARDUINO_EVENT_WIFI_AP_STACONNECTED: + Log->println("Client connected"); break; - case ARDUINO_EVENT_WIFI_AP_STADISCONNECTED: - Log->println("Client disconnected"); + case ARDUINO_EVENT_WIFI_AP_STADISCONNECTED: + Log->println("Client disconnected"); break; - case ARDUINO_EVENT_WIFI_AP_STAIPASSIGNED: - Log->println("Assigned IP address to client"); + case ARDUINO_EVENT_WIFI_AP_STAIPASSIGNED: + Log->println("Assigned IP address to client"); break; - case ARDUINO_EVENT_WIFI_AP_PROBEREQRECVED: - Log->println("Received probe request"); + case ARDUINO_EVENT_WIFI_AP_PROBEREQRECVED: + Log->println("Received probe request"); break; - case ARDUINO_EVENT_WIFI_AP_GOT_IP6: - Log->println("AP IPv6 is preferred"); + case ARDUINO_EVENT_WIFI_AP_GOT_IP6: + Log->println("AP IPv6 is preferred"); break; - case ARDUINO_EVENT_WIFI_STA_GOT_IP6: - Log->println("STA IPv6 is preferred"); + case ARDUINO_EVENT_WIFI_STA_GOT_IP6: + Log->println("STA IPv6 is preferred"); break; - default: + default: break; } } \ No newline at end of file diff --git a/src/networkDevices/WifiDevice.h b/src/networkDevices/WifiDevice.h index 9c29c08..1d7225d 100644 --- a/src/networkDevices/WifiDevice.h +++ b/src/networkDevices/WifiDevice.h @@ -43,4 +43,5 @@ private: bool _openAP = false; bool _startAP = true; bool _connected = false; + bool _wifiClientStarted = false; }; \ No newline at end of file