From fe5b5ac81377bd1c7d7fc5114c863157889c5c29 Mon Sep 17 00:00:00 2001 From: r-downing <26515643+r-downing@users.noreply.github.com> Date: Thu, 2 Nov 2017 19:51:34 -0400 Subject: [PATCH] cleaned up and commented --- PersWiFiManager.cpp | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/PersWiFiManager.cpp b/PersWiFiManager.cpp index 416eff8..a412b1b 100644 --- a/PersWiFiManager.cpp +++ b/PersWiFiManager.cpp @@ -1,5 +1,8 @@ #include "PersWiFiManager.h" +//uncomment next line to serve wifi settings page from progmem instead of SPIFFS (uses ~2kb) +//#define WIFI_HTM_PROGMEM + #ifdef WIFI_HTM_PROGMEM const char wifi_htm[] PROGMEM = R"=====(ESP WiFi








Back |Home
)====="; #endif @@ -8,22 +11,25 @@ PersWiFiManager::PersWiFiManager(ESP8266WebServer& s, DNSServer& d, const String _server = &s; _dnsServer = &d; _apSSID = apSSID; -} +}//PersWiFiManager void PersWiFiManager::attemptConnection(const String& ssid, const String& pass) { IPAddress apIP(192, 168, 1, 1); //attempt to connect to wifi WiFi.mode(WIFI_STA); if (ssid.length()) { - if (pass.length()) WiFi.begin(ssid.c_str(), pass.c_str()); - else WiFi.begin(ssid.c_str()); - } else { + if (pass.length()) { //encrypted wifi + WiFi.begin(ssid.c_str(), pass.c_str()); + } else { //unencrypted + WiFi.begin(ssid.c_str()); + } + } else { //blank ssid, attempt autoconnect to last network WiFi.begin(); } + + //attempt to connect for up to 30 seconds unsigned long connectTime = millis(); - //while ((millis() - connectTime) < 1000 * WIFI_CONNECT_TIMEOUT && WiFi.status() != WL_CONNECTED) - while (WiFi.status() != WL_CONNECT_FAILED && WiFi.status() != WL_CONNECTED && (millis() - connectTime) < 1000 * WIFI_CONNECT_TIMEOUT) - delay(10); + while (WiFi.status() != WL_CONNECT_FAILED && WiFi.status() != WL_CONNECTED && (millis() - connectTime) < 1000 * WIFI_CONNECT_TIMEOUT){} if (WiFi.status() != WL_CONNECTED) { //if timed out, switch to AP mode WiFi.mode(WIFI_AP); WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0)); @@ -31,13 +37,15 @@ void PersWiFiManager::attemptConnection(const String& ssid, const String& pass) } //if _dnsServer->setErrorReplyCode(DNSReplyCode::NoError); _dnsServer->start((byte)53, "*", apIP); //used for captive portal in AP mode -} +}//attemptConnection void PersWiFiManager::attemptConnection() { PersWiFiManager::attemptConnection("", ""); -} +}//attemptConnection void PersWiFiManager::setupWiFiHandlers() { + + //sends csv style list of wifi networks _server->on("/wifi/list", [&] () { //scan for wifi networks int n = WiFi.scanNetworks(); @@ -66,6 +74,7 @@ void PersWiFiManager::setupWiFiHandlers() { _server->send(200, "text/plain", s); }); //_server->on /wifi/list + //activates wps setup _server->on("/wifi/wps", [&]() { _server->send(200, "text/html", "attempting WPS"); WiFi.mode(WIFI_STA); @@ -76,17 +85,20 @@ void PersWiFiManager::setupWiFiHandlers() { } }); //_server->on /wifi/wps + //connects to specified ssid (and password) _server->on("/wifi/connect", [&]() { _server->send(200, "text/html", "connecting..."); attemptConnection(_server->arg("n"), _server->arg("p")); }); //_server->on /wifi/connect + //reboots device _server->on("/wifi/rst", [&]() { _server->send(200, "text/html", "Rebooting..."); delay(100); ESP.restart(); }); + //optional progmem-served page, if not using SPIFFS #ifdef WIFI_HTM_PROGMEM _server->on("/wifi.htm", [&]() { _server->send(200, "text/html", wifi_htm);