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)=====";
#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);