From ddbb08a49257fb5e12c51e1f3a0361c7eb67c8ca Mon Sep 17 00:00:00 2001 From: Ryan McCahan Date: Sun, 31 Mar 2024 16:24:41 -0600 Subject: [PATCH] Unique SSIDs --- src/Improv.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/Improv.cpp b/src/Improv.cpp index 4f767e0..632f34d 100644 --- a/src/Improv.cpp +++ b/src/Improv.cpp @@ -5,6 +5,7 @@ ********************************************************************************/ #include "Improv.h" #include "HomeSpan.h" +#include using namespace Utils; using namespace improv; @@ -136,12 +137,18 @@ bool connectWifi(const char *ssid, const char *pwd) { void getAvailableWifiNetworks() { int networkNum = WiFi.scanNetworks(); + std::set ssidSet; // Store unique SSIDs + // Send one RPC response for each network we found for(int id = 0; id < networkNum; ++id) { - std::vector data = improv::buildRPCResponse( - improv::GET_WIFI_NETWORKS, {WiFi.SSID(id), String(WiFi.RSSI(id)), (WiFi.encryptionType(id) == WIFI_AUTH_OPEN ? "NO" : "YES")}, false); - improv::sendImprovResponse(data); - delay(1); + String ssid = WiFi.SSID(id); + if (ssidSet.count(ssid) == 0) { // Check if SSID is already sent + std::vector data = improv::buildRPCResponse( + improv::GET_WIFI_NETWORKS, {ssid, String(WiFi.RSSI(id)), (WiFi.encryptionType(id) == WIFI_AUTH_OPEN ? "NO" : "YES")}, false); + improv::sendImprovResponse(data); + ssidSet.insert(ssid); // Add SSID to the set + delay(1); + } } // Send a blank response to signal the end of the list std::vector data =