From 2582dd8735a6e9f517deb0e334bfe15771b97394 Mon Sep 17 00:00:00 2001 From: Alex Tudorache Date: Tue, 16 Feb 2016 18:24:12 +0200 Subject: [PATCH] version 0.10 ordered networks based on signal quality --- README.md | 6 +++--- WiFiManager.cpp | 35 ++++++++++++++++++++++++++--------- keywords.txt | 5 ++--- library.json | 2 +- library.properties | 2 +- 5 files changed, 33 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 8303df5..62707b1 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ First attempt at a library. Lots more changes and fixes to do. Contributions are - [Documentation](#documentation) - [Access Point Password](#password-protect-the-configuration-access-point) - [Callbacks](#callbacks) - - [Timeout](#timeout) + - [Configuration Portal Timeout](#configuration-portal-timeout) - [On Demand Configuration](#on-demand-configuration-portal) - [Custom Parameters](#custom-parameters) - [Custom IP Configuration](#custom-ip-configuration) @@ -149,10 +149,10 @@ void saveConfigCallback () { } ``` -#### Timeout +#### Configuration Portal Timeout If you need to set a timeout so the ESP doesn't hang waiting to be configured, for instance after a power failure, you can add ```cpp -wifiManager.setTimeout(180); +wifiManager.setConfigPortalTimeout(180); ``` which will wait 3 minutes (180 seconds). When the time passes, the autoConnect function will return, no matter the outcome. Check for connection and if it's still not established do whatever is needed (on some modules I restart them to retry, on others I enter deep sleep) diff --git a/WiFiManager.cpp b/WiFiManager.cpp index 10b8dc0..45ffb9f 100644 --- a/WiFiManager.cpp +++ b/WiFiManager.cpp @@ -352,21 +352,38 @@ void WiFiManager::handleWifi(boolean scan) { if (n == 0) { DEBUG_WM(F("No networks found")); page += F("No networks found. Refresh to scan again."); - } - else { - for (int i = 0; i < n; ++i) - { - DEBUG_WM(WiFi.SSID(i)); - DEBUG_WM(WiFi.RSSI(i)); - int quality = getRSSIasQuality(WiFi.RSSI(i)); + } else { + //sort networks + int indices[n]; + + for (int i = 0; i < n; i++) { + indices[i] = i; + } + + for (int i = 0; i < n; i++) { + for (int j = i + 1; j < n; j++) { + if (WiFi.RSSI(indices[j]) > WiFi.RSSI(indices[i])) { + //int temp = indices[j]; + //indices[j] = indices[i]; + //indices[i] = temp; + std::swap(indices[i], indices[j]); + } + } + } + + //display networks in page + for (int i = 0; i < n; i++) { + DEBUG_WM(WiFi.SSID(indices[i])); + DEBUG_WM(WiFi.RSSI(indices[i])); + int quality = getRSSIasQuality(WiFi.RSSI(indices[i])); if (_minimumQuality == -1 || _minimumQuality < quality) { String item = FPSTR(HTTP_ITEM); String rssiQ; rssiQ += quality; - item.replace("{v}", WiFi.SSID(i)); + item.replace("{v}", WiFi.SSID(indices[i])); item.replace("{r}", rssiQ); - if (WiFi.encryptionType(i) != ENC_TYPE_NONE) { + if (WiFi.encryptionType(indices[i]) != ENC_TYPE_NONE) { item.replace("{i}", "l"); } else { item.replace("{i}", ""); diff --git a/keywords.txt b/keywords.txt index 4a5d552..7159e74 100644 --- a/keywords.txt +++ b/keywords.txt @@ -18,8 +18,8 @@ getSSID KEYWORD2 getPassword KEYWORD2 getConfigPortalSSID KEYWORD2 resetSettings KEYWORD2 -urldecode KEYWORD2 -setTimeout KEYWORD2 +setConfigPortalTimeout KEYWORD2 +setConnectTimeout KEYWORD2 setDebugOutput KEYWORD2 setMinimumSignalQuality KEYWORD2 setAPStaticIPConfig KEYWORD2 @@ -27,7 +27,6 @@ setSTAStaticIPConfig KEYWORD2 setAPCallback KEYWORD2 setSaveConfigCallback KEYWORD2 addParameter KEYWORD2 - getID KEYWORD2 getValue KEYWORD2 getPlaceholder KEYWORD2 diff --git a/library.json b/library.json index 8f8b24d..5c36330 100644 --- a/library.json +++ b/library.json @@ -9,5 +9,5 @@ }, "frameworks": "arduino", "platforms": "espressif", - "version": "0.9" + "version": "0.10" } diff --git a/library.properties b/library.properties index e656e67..d22ee1d 100644 --- a/library.properties +++ b/library.properties @@ -1,5 +1,5 @@ name=WiFiManager -version=0.9 +version=0.10 author=tzapu maintainer=tzapu sentence=ESP8266 WiFi Connection manager with fallback web configuration portal