From ff1e9bb4d59b1b9a048b403add628df4c4a1f4c1 Mon Sep 17 00:00:00 2001 From: Thomas Peterson Date: Mon, 19 Jan 2026 11:14:35 +0100 Subject: [PATCH] Wifi --- main/Wifi.cpp | 34 ++++++++++++++++++++++------------ main/Wifi.hpp | 2 ++ 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/main/Wifi.cpp b/main/Wifi.cpp index 6cae024..0be16e1 100644 --- a/main/Wifi.cpp +++ b/main/Wifi.cpp @@ -267,19 +267,29 @@ std::vector Wifi::getSavedNetworks() { size_t required_size = 0; err = nvs_get_str(handle, "networks", nullptr, &required_size); - if (err == ESP_OK && required_size > 0) { - std::string networkList(required_size, '\0'); - nvs_get_str(handle, "networks", &networkList[0], &required_size); + if (err == ESP_OK && required_size > 1) { + char* buf = new char[required_size]; + nvs_get_str(handle, "networks", buf, &required_size); + std::string networkList(buf); + delete[] buf; - size_t start = 0; - size_t end = networkList.find(';'); - while (end != std::string::npos) { - networks.push_back(networkList.substr(start, end - start)); - start = end + 1; - end = networkList.find(';', start); - } - if (start < networkList.size() - 1) { - networks.push_back(networkList.substr(start)); + if (!networkList.empty()) { + size_t start = 0; + size_t end = networkList.find(';'); + while (end != std::string::npos) { + std::string net = networkList.substr(start, end - start); + if (!net.empty()) { + networks.push_back(net); + } + start = end + 1; + end = networkList.find(';', start); + } + if (start < networkList.size()) { + std::string net = networkList.substr(start); + if (!net.empty()) { + networks.push_back(net); + } + } } } diff --git a/main/Wifi.hpp b/main/Wifi.hpp index 1eedc6d..10d9590 100644 --- a/main/Wifi.hpp +++ b/main/Wifi.hpp @@ -18,6 +18,8 @@ public: void disconnect(); bool isConnected(); std::string getCurrentSSID(); + std::string getIPAddress(); + int8_t getRSSI(); void saveNetwork(const char* ssid, const char* password); void removeNetwork(const char* ssid);