diff --git a/src/graphics/Screen.cpp b/src/graphics/Screen.cpp index 0f6c96f0f..4ddbe10d4 100644 --- a/src/graphics/Screen.cpp +++ b/src/graphics/Screen.cpp @@ -1390,7 +1390,6 @@ void DebugInfo::drawFrameWiFi(OLEDDisplay *display, OLEDDisplayUiState *state, i { #if HAS_WIFI const char *wifiName = config.network.wifi_ssid; - const char *wifiPsw = config.network.wifi_psk; displayedNodeNum = 0; // Not currently showing a node pane @@ -1399,11 +1398,7 @@ void DebugInfo::drawFrameWiFi(OLEDDisplay *display, OLEDDisplayUiState *state, i // The coordinates define the left starting point of the text display->setTextAlignment(TEXT_ALIGN_LEFT); - if (isSoftAPForced()) { - display->drawString(x, y, String("WiFi: Software AP (Admin)")); - } else if (config.network.wifi_mode == Config_NetworkConfig_WiFiMode_ACCESS_POINT || config.network.wifi_mode == Config_NetworkConfig_WiFiMode_ACCESS_POINT_HIDDEN) { - display->drawString(x, y, String("WiFi: Software AP")); - } else if (WiFi.status() != WL_CONNECTED) { + if (WiFi.status() != WL_CONNECTED) { display->drawString(x, y, String("WiFi: Not Connected")); } else { display->drawString(x, y, String("WiFi: Connected")); @@ -1424,25 +1419,14 @@ void DebugInfo::drawFrameWiFi(OLEDDisplay *display, OLEDDisplayUiState *state, i - WL_NO_SHIELD: assigned when no WiFi shield is present; */ - if (WiFi.status() == WL_CONNECTED || isSoftAPForced() || config.network.wifi_mode == Config_NetworkConfig_WiFiMode_ACCESS_POINT || config.network.wifi_mode == Config_NetworkConfig_WiFiMode_ACCESS_POINT_HIDDEN) { - if (config.network.wifi_mode == Config_NetworkConfig_WiFiMode_ACCESS_POINT || config.network.wifi_mode == Config_NetworkConfig_WiFiMode_ACCESS_POINT_HIDDEN || isSoftAPForced()) { - display->drawString(x, y + FONT_HEIGHT_SMALL * 1, "IP: " + String(WiFi.softAPIP().toString().c_str())); - - // Number of connections to the AP. Default max for the esp32 is 4 - display->drawString(x + SCREEN_WIDTH - display->getStringWidth("(" + String(WiFi.softAPgetStationNum()) + "/4)"), - y + FONT_HEIGHT_SMALL * 1, "(" + String(WiFi.softAPgetStationNum()) + "/4)"); - } else { - display->drawString(x, y + FONT_HEIGHT_SMALL * 1, "IP: " + String(WiFi.localIP().toString().c_str())); - } - + if (WiFi.status() == WL_CONNECTED) { + display->drawString(x, y + FONT_HEIGHT_SMALL * 1, "IP: " + String(WiFi.localIP().toString().c_str())); } else if (WiFi.status() == WL_NO_SSID_AVAIL) { display->drawString(x, y + FONT_HEIGHT_SMALL * 1, "SSID Not Found"); } else if (WiFi.status() == WL_CONNECTION_LOST) { display->drawString(x, y + FONT_HEIGHT_SMALL * 1, "Connection Lost"); } else if (WiFi.status() == WL_CONNECT_FAILED) { display->drawString(x, y + FONT_HEIGHT_SMALL * 1, "Connection Failed"); - //} else if (WiFi.status() == WL_DISCONNECTED) { - // display->drawString(x, y + FONT_HEIGHT_SMALL * 1, "Disconnected"); } else if (WiFi.status() == WL_IDLE_STATUS) { display->drawString(x, y + FONT_HEIGHT_SMALL * 1, "Idle ... Reconnecting"); } else { @@ -1509,24 +1493,8 @@ void DebugInfo::drawFrameWiFi(OLEDDisplay *display, OLEDDisplayUiState *state, i } } - if (isSoftAPForced()) { - if ((millis() / 10000) % 2) { - display->drawString(x, y + FONT_HEIGHT_SMALL * 2, "SSID: meshtasticAdmin"); - } else { - display->drawString(x, y + FONT_HEIGHT_SMALL * 2, "PWD: 12345678"); - } + display->drawString(x, y + FONT_HEIGHT_SMALL * 2, "SSID: " + String(wifiName)); - } else { - if (config.network.wifi_mode== Config_NetworkConfig_WiFiMode_ACCESS_POINT || config.network.wifi_mode == Config_NetworkConfig_WiFiMode_ACCESS_POINT_HIDDEN) { - if ((millis() / 10000) % 2) { - display->drawString(x, y + FONT_HEIGHT_SMALL * 2, "SSID: " + String(wifiName)); - } else { - display->drawString(x, y + FONT_HEIGHT_SMALL * 2, "PWD: " + String(wifiPsw)); - } - } else { - display->drawString(x, y + FONT_HEIGHT_SMALL * 2, "SSID: " + String(wifiName)); - } - } display->drawString(x, y + FONT_HEIGHT_SMALL * 3, "http://meshtastic.local"); /* Display a heartbeat pixel that blinks every time the frame is redrawn */ diff --git a/src/main.cpp b/src/main.cpp index d40a1bdf0..69c880e70 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -191,8 +191,6 @@ void setup() digitalWrite(RESET_OLED, 1); #endif - bool forceSoftAP = 0; - #ifdef BUTTON_PIN #ifdef ARCH_ESP32 @@ -205,12 +203,6 @@ void setup() delay(10); #endif - // BUTTON_PIN is pulled high by a 12k resistor. - if (!digitalRead(BUTTON_PIN)) { - forceSoftAP = 1; - DEBUG_MSG("Setting forceSoftAP = 1\n"); - } - #endif #endif @@ -444,7 +436,7 @@ void setup() #endif // Initialize Wifi - initWifi(forceSoftAP); + initWifi(); #ifdef ARCH_ESP32 // Start web server thread. diff --git a/src/mesh/http/ContentHandler.cpp b/src/mesh/http/ContentHandler.cpp index 50e82f58f..ddc67e16d 100644 --- a/src/mesh/http/ContentHandler.cpp +++ b/src/mesh/http/ContentHandler.cpp @@ -75,8 +75,8 @@ void registerHandlers(HTTPServer *insecureServer, HTTPSServer *secureServer) ResourceNode *nodeAPIv1ToRadio = new ResourceNode("/api/v1/toradio", "PUT", &handleAPIv1ToRadio); ResourceNode *nodeAPIv1FromRadio = new ResourceNode("/api/v1/fromradio", "GET", &handleAPIv1FromRadio); - ResourceNode *nodeHotspotApple = new ResourceNode("/hotspot-detect.html", "GET", &handleHotspot); - ResourceNode *nodeHotspotAndroid = new ResourceNode("/generate_204", "GET", &handleHotspot); +// ResourceNode *nodeHotspotApple = new ResourceNode("/hotspot-detect.html", "GET", &handleHotspot); +// ResourceNode *nodeHotspotAndroid = new ResourceNode("/generate_204", "GET", &handleHotspot); ResourceNode *nodeAdmin = new ResourceNode("/admin", "GET", &handleAdmin); // ResourceNode *nodeAdminSettings = new ResourceNode("/admin/settings", "GET", &handleAdminSettings); @@ -100,8 +100,8 @@ void registerHandlers(HTTPServer *insecureServer, HTTPSServer *secureServer) secureServer->registerNode(nodeAPIv1ToRadioOptions); secureServer->registerNode(nodeAPIv1ToRadio); secureServer->registerNode(nodeAPIv1FromRadio); - secureServer->registerNode(nodeHotspotApple); - secureServer->registerNode(nodeHotspotAndroid); + // secureServer->registerNode(nodeHotspotApple); + // secureServer->registerNode(nodeHotspotAndroid); secureServer->registerNode(nodeRestart); secureServer->registerNode(nodeFormUpload); secureServer->registerNode(nodeJsonScanNetworks); @@ -121,8 +121,8 @@ void registerHandlers(HTTPServer *insecureServer, HTTPSServer *secureServer) insecureServer->registerNode(nodeAPIv1ToRadioOptions); insecureServer->registerNode(nodeAPIv1ToRadio); insecureServer->registerNode(nodeAPIv1FromRadio); - insecureServer->registerNode(nodeHotspotApple); - insecureServer->registerNode(nodeHotspotAndroid); + // insecureServer->registerNode(nodeHotspotApple); + // insecureServer->registerNode(nodeHotspotAndroid); insecureServer->registerNode(nodeRestart); insecureServer->registerNode(nodeFormUpload); insecureServer->registerNode(nodeJsonScanNetworks); @@ -620,12 +620,8 @@ void handleReport(HTTPRequest *req, HTTPResponse *res) }; // data->wifi - String ipStr; - if (config.network.wifi_mode == Config_NetworkConfig_WiFiMode_ACCESS_POINT || config.network.wifi_mode == Config_NetworkConfig_WiFiMode_ACCESS_POINT_HIDDEN || isSoftAPForced()) { - ipStr = String(WiFi.softAPIP().toString()); - } else { - ipStr = String(WiFi.localIP().toString()); - } + String ipStr = String(WiFi.localIP().toString()); + Json jsonObjWifi = Json::object{{"rssi", String(WiFi.RSSI())}, {"ip", ipStr.c_str()}}; // data->memory diff --git a/src/mesh/http/WebServer.cpp b/src/mesh/http/WebServer.cpp index 48e084ed2..c1844b0cb 100644 --- a/src/mesh/http/WebServer.cpp +++ b/src/mesh/http/WebServer.cpp @@ -55,10 +55,6 @@ static void handleWebResponse() if (isWifiAvailable()) { if (isWebServerReady) { - // We're going to handle the DNS responder here so it - // will be ignored by the NRF boards. - handleDNSResponse(); - if (secureServer) secureServer->loop(); insecureServer->loop(); diff --git a/src/mesh/http/WiFiAPClient.cpp b/src/mesh/http/WiFiAPClient.cpp index 4a4ac05a9..a031414e3 100644 --- a/src/mesh/http/WiFiAPClient.cpp +++ b/src/mesh/http/WiFiAPClient.cpp @@ -8,7 +8,6 @@ #include "mesh/wifi/WiFiServerAPI.h" #include "mqtt/MQTT.h" #include "target_specific.h" -#include #include #include #include @@ -22,9 +21,6 @@ using namespace concurrency; static void WiFiEvent(WiFiEvent_t event); -// DNS Server for the Captive Portal -DNSServer dnsServer; - // NTP WiFiUDP ntpUDP; @@ -37,8 +33,6 @@ uint8_t wifiDisconnectReason = 0; // Stores our hostname char ourHost[16]; -bool forcedSoftAP = 0; - bool APStartupComplete = 0; static bool needReconnect = true; // If we create our reconnector, run it once at the beginning @@ -88,16 +82,10 @@ static int32_t reconnectWiFi() static Periodic *wifiReconnect; -bool isSoftAPForced() -{ - return forcedSoftAP; -} - bool isWifiAvailable() { - if (config.network.wifi_enabled && ((config.network.wifi_ssid[0]) || forcedSoftAP)) { - + if (config.network.wifi_enabled && (config.network.wifi_ssid[0])) { return true; } else { return false; @@ -161,100 +149,48 @@ static void onNetworkConnected() } // Startup WiFi -bool initWifi(bool forceSoftAP) +bool initWifi() { - forcedSoftAP = forceSoftAP; + if (config.network.wifi_enabled && config.network.wifi_ssid[0]) { - if (config.network.wifi_enabled && ((config.network.wifi_ssid[0]) || forceSoftAP)) { - // if ((radioConfig.has_preferences && config.wifi.ssid[0]) || forceSoftAP) { const char *wifiName = config.network.wifi_ssid; const char *wifiPsw = config.network.wifi_psk; - if (forceSoftAP) { - DEBUG_MSG("WiFi ... Forced AP Mode\n"); - } else if (config.network.wifi_mode == Config_NetworkConfig_WiFiMode_ACCESS_POINT) { - DEBUG_MSG("WiFi ... AP Mode\n"); - } else if (config.network.wifi_mode == Config_NetworkConfig_WiFiMode_ACCESS_POINT_HIDDEN) { - DEBUG_MSG("WiFi ... Hidden AP Mode\n"); - } else if (config.network.wifi_mode == Config_NetworkConfig_WiFiMode_CLIENT) { - DEBUG_MSG("WiFi ... Client Mode\n"); - } else { - DEBUG_MSG("WiFi ... WiFi Disabled\n"); - } - createSSLCert(); if (!*wifiPsw) // Treat empty password as no password wifiPsw = NULL; - if (*wifiName || forceSoftAP) { - if (config.network.wifi_mode == Config_NetworkConfig_WiFiMode_ACCESS_POINT || config.network.wifi_mode == Config_NetworkConfig_WiFiMode_ACCESS_POINT_HIDDEN || forceSoftAP) { + if (*wifiName) { + uint8_t dmac[6]; + getMacAddr(dmac); + sprintf(ourHost, "Meshtastic-%02x%02x", dmac[4], dmac[5]); - IPAddress apIP(192, 168, 42, 1); - WiFi.onEvent(WiFiEvent); - WiFi.mode(WIFI_AP); + WiFi.mode(WIFI_MODE_STA); + WiFi.setHostname(ourHost); + WiFi.onEvent(WiFiEvent); - if (forcedSoftAP) { - const char *softAPssid = "meshtasticAdmin"; - const char *softAPpasswd = "12345678"; - int ok = WiFi.softAP(softAPssid, softAPpasswd); - DEBUG_MSG("Starting (Forced) WIFI AP: ssid=%s, ok=%d\n", softAPssid, ok); + // This is needed to improve performance. + esp_wifi_set_ps(WIFI_PS_NONE); // Disable radio power saving - } else { + WiFi.onEvent( + [](WiFiEvent_t event, WiFiEventInfo_t info) { + Serial.print("\nWiFi lost connection. Reason: "); + Serial.println(info.wifi_sta_disconnected.reason); - // If AP is configured to be hidden hidden - if (config.network.wifi_mode == Config_NetworkConfig_WiFiMode_ACCESS_POINT_HIDDEN) { + /* + If we are disconnected from the AP for some reason, + save the error code. - // The configurations on softAP are from the espresif library - int ok = WiFi.softAP(wifiName, wifiPsw, 1, 1, 4); - DEBUG_MSG("Starting hidden WIFI AP: ssid=%s, ok=%d\n", wifiName, ok); - } else { - int ok = WiFi.softAP(wifiName, wifiPsw); - DEBUG_MSG("Starting WIFI AP: ssid=%s, ok=%d\n", wifiName, ok); - } - int ok = WiFi.softAP(wifiName, wifiPsw); - DEBUG_MSG("Starting WIFI AP: ssid=%s, ok=%d\n", wifiName, ok); - } + For a reference to the codes: + https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/wifi.html#wi-fi-reason-code + */ + wifiDisconnectReason = info.wifi_sta_disconnected.reason; + }, + WiFiEvent_t::ARDUINO_EVENT_WIFI_STA_DISCONNECTED); - WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0)); - DEBUG_MSG("MY IP AP ADDRESS: %s\n", WiFi.softAPIP().toString().c_str()); - - // This is needed to improve performance. - esp_wifi_set_ps(WIFI_PS_NONE); // Disable radio power saving - - dnsServer.start(53, "*", apIP); - - } else { - uint8_t dmac[6]; - getMacAddr(dmac); - sprintf(ourHost, "Meshtastic-%02x%02x", dmac[4], dmac[5]); - - WiFi.mode(WIFI_MODE_STA); - WiFi.setHostname(ourHost); - WiFi.onEvent(WiFiEvent); - - // This is needed to improve performance. - esp_wifi_set_ps(WIFI_PS_NONE); // Disable radio power saving - - WiFi.onEvent( - [](WiFiEvent_t event, WiFiEventInfo_t info) { - Serial.print("\nWiFi lost connection. Reason: "); - Serial.println(info.wifi_sta_disconnected.reason); - - /* - If we are disconnected from the AP for some reason, - save the error code. - - For a reference to the codes: - https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/wifi.html#wi-fi-reason-code - */ - wifiDisconnectReason = info.wifi_sta_disconnected.reason; - }, - WiFiEvent_t::ARDUINO_EVENT_WIFI_STA_DISCONNECTED); - - DEBUG_MSG("JOINING WIFI soon: ssid=%s\n", wifiName); - wifiReconnect = new Periodic("WifiConnect", reconnectWiFi); - } + DEBUG_MSG("JOINING WIFI soon: ssid=%s\n", wifiName); + wifiReconnect = new Periodic("WifiConnect", reconnectWiFi); } return true; } else { @@ -356,13 +292,6 @@ static void WiFiEvent(WiFiEvent_t event) } } -void handleDNSResponse() -{ - if (config.network.wifi_mode == Config_NetworkConfig_WiFiMode_ACCESS_POINT || config.network.wifi_mode == Config_NetworkConfig_WiFiMode_ACCESS_POINT_HIDDEN || isSoftAPForced()) { - dnsServer.processNextRequest(); - } -} - uint8_t getWifiDisconnectReason() { return wifiDisconnectReason; diff --git a/src/mesh/http/WiFiAPClient.h b/src/mesh/http/WiFiAPClient.h index 2c6bc912c..9729c24b5 100644 --- a/src/mesh/http/WiFiAPClient.h +++ b/src/mesh/http/WiFiAPClient.h @@ -5,19 +5,14 @@ #include #ifdef ARCH_ESP32 -#include #include #endif /// @return true if wifi is now in use -bool initWifi(bool forceSoftAP); +bool initWifi(); void deinitWifi(); bool isWifiAvailable(); -void handleDNSResponse(); - -bool isSoftAPForced(); - uint8_t getWifiDisconnectReason();