@@ -27,6 +27,8 @@ constexpr auto ACCESS_POINT_TIMEOUT_SEC = MIN_TO_SEC(30);
2727const IPAddress AccessPoint::IP (8 , 8 , 4 , 4 );
2828const IPAddress AccessPoint::Netmask (255 , 255 , 255 , 0 );
2929
30+ static int networkScanCount = 0 ;
31+
3032AccessPoint::AccessPoint (SubmissionHandler func):
3133 timeout(ACCESS_POINT_TIMEOUT_SEC ),
3234 server(80 ),
@@ -50,6 +52,8 @@ String AccessPoint::htmlFromMsg(const char *msg, const char *extra)
5052
5153void AccessPoint::run ()
5254{
55+ networkScanCount = WiFi.scanNetworks ();
56+
5357 WiFi.mode (WIFI_AP );
5458 WiFi.softAPConfig (IP , IP , Netmask);
5559 WiFi.softAP (SSID , Passkey);
@@ -157,9 +161,32 @@ bool AccessPoint::handle(WebServer& server, HTTPMethod method, String uri)
157161 response.reserve (2048 );
158162 response += HTML_HEADER ;
159163 response += HTML_CONTAINER ;
160- response += HTML_BODY_FORM ;
164+ response += HTML_BODY_FORM_HEADER ;
165+
166+ for (int i = 0 ; i < networkScanCount; ++i) {
167+ const auto ssid = WiFi.SSID (i);
168+
169+ response += " <option value=\" " ;
170+ response += ssid;
171+ response += " \" >" ;
172+ response += ssid;
173+ if (WiFi.encryptionType (i) != WIFI_AUTH_OPEN )
174+ response += " 🔒" ;
175+ response += " </option>" ;
176+ }
177+
178+ response += HTML_BODY_FORM_FOOTER ;
161179 response += HTML_FOOTER ;
162180
181+ timeout = DAY_TO_SEC (30 );
182+ server.send_P (200 , PSTR (" text/html" ), response.c_str ());
183+ } else if (uri == " /manual" ) {
184+ String response;
185+ response.reserve (2048 );
186+ response += HTML_HEADER ;
187+ response += HTML_CONTAINER ;
188+ response += HTML_BODY_FORM_MANUAL ;
189+ response += HTML_FOOTER ;
163190 timeout = DAY_TO_SEC (30 );
164191 server.send_P (200 , PSTR (" text/html" ), response.c_str ());
165192 } else if (uri == " /connecttest.txt" ) {
0 commit comments