Just Call Me Koko 5 лет назад
Родитель
Сommit
7c137a84af
3 измененных файлов с 54 добавлено и 9 удалено
  1. 2 1
      esp32_marauder/MenuFunctions.cpp
  2. 48 6
      esp32_marauder/WiFiScan.cpp
  3. 4 2
      esp32_marauder/WiFiScan.h

+ 2 - 1
esp32_marauder/MenuFunctions.cpp

@@ -167,7 +167,7 @@ void join_wifi_keyboard_event_cb(lv_obj_t * keyboard, lv_event_t event){
     printf("LV_EVENT_CANCEL\n");
     //lv_textarea_set_text(lv_keyboard_get_textarea(kb), "");
     menu_function_obj.deinitLVGL();
-    wifi_scan_obj.StartScan(WIFI_SCAN_OFF);
+    //wifi_scan_obj.StartScan(WIFI_SCAN_OFF);
     display_obj.exit_draw = true; // set everything back to normal
   }
 }
@@ -757,6 +757,7 @@ void MenuFunctions::RunSetup()
   });
   addNodes(&wifiGeneralMenu, "Shutdown WiFi", TFT_ORANGE, NULL, SCANNERS, [this]() {
     changeMenu(&shutdownWiFiMenu);
+    wifi_scan_obj.RunShutdownWiFi();
   });
 
   // Build shutdown wifi menu

+ 48 - 6
esp32_marauder/WiFiScan.cpp

@@ -151,8 +151,15 @@ void WiFiScan::joinWiFi(String ssid, String password)
     this->wifi_initialized = true;
     return;
   }
-  else if (WiFi.status() == WL_CONNECTED)
+  else if (WiFi.status() == WL_CONNECTED) {
+    Serial.println("Already connected. Disconnecting...");
     WiFi.disconnect();
+  }
+
+  esp_wifi_init(&cfg);
+  esp_wifi_set_storage(WIFI_STORAGE_RAM);
+  esp_wifi_set_mode(WIFI_MODE_NULL);
+  esp_wifi_start();
     
   WiFi.begin(ssid.c_str(), password.c_str());
 
@@ -224,12 +231,12 @@ void WiFiScan::StartScan(uint8_t scan_mode, uint16_t color)
   WiFiScan::currentScanMode = scan_mode;
 }
 
-void WiFiScan::shutdownWiFi() {
+bool WiFiScan::shutdownWiFi() {
   if (this->wifi_initialized) {
     Serial.println("Ahhh yes...promiscuity will end");
     esp_wifi_set_promiscuous(false);
     //WiFi.persistent(false);
-    WiFi.disconnect(true);
+    WiFi.disconnect();
     WiFi.mode(WIFI_OFF);
   
     esp_wifi_set_mode(WIFI_MODE_NULL);
@@ -237,12 +244,15 @@ void WiFiScan::shutdownWiFi() {
     esp_wifi_deinit();
   
     this->wifi_initialized = false;
+    return true;
   }
-  else
+  else {
     Serial.println(F("WiFi is not currently running"));
+    return false;
+  }
 }
 
-void WiFiScan::shutdownBLE() {
+bool WiFiScan::shutdownBLE() {
   if (this->ble_initialized) {
     Serial.println("Stopping BLE scan...");
     pBLEScan->stop();
@@ -261,9 +271,12 @@ void WiFiScan::shutdownBLE() {
     //Serial.println("BT Controller Status: " + (String)esp_bt_controller_get_status());
   
     this->ble_initialized = false;
+    return true;
   }
-  else
+  else {
     Serial.println(F("BLE is not currently running"));
+    return false;
+  }
 }
 
 // Function to stop all wifi scans
@@ -393,6 +406,35 @@ void WiFiScan::RunLvJoinWiFi(uint8_t scan_mode, uint16_t color) {
   //display_obj.joinWiFiGFX();
 }
 
+void WiFiScan::RunShutdownWiFi() {
+  display_obj.tft.setTextWrap(false);
+  display_obj.tft.setFreeFont(NULL);
+  display_obj.tft.setCursor(0, 100);
+  display_obj.tft.setTextSize(1);
+  display_obj.tft.setTextColor(TFT_CYAN);
+
+  display_obj.tft.print(F("Shutting down WiFi..."));
+
+  if (this->wifi_initialized) {
+    this->shutdownWiFi();
+    display_obj.tft.setTextColor(TFT_GREEN);
+    display_obj.tft.println(F("OK"));
+  }
+  else {
+    display_obj.tft.setTextColor(TFT_RED);
+    display_obj.tft.println(F("FAIL"));
+    display_obj.tft.println(F("WiFi not currently initialized"));
+  }
+}
+
+void WiFiScan::RunShutdownBLE() {
+  display_obj.tft.setTextWrap(false);
+  display_obj.tft.setFreeFont(NULL);
+  display_obj.tft.setCursor(0, 100);
+  display_obj.tft.setTextSize(1);
+  display_obj.tft.setTextColor(TFT_CYAN);
+}
+
 void WiFiScan::RunInfo()
 {
   String sta_mac = this->getStaMAC();

+ 4 - 2
esp32_marauder/WiFiScan.h

@@ -171,13 +171,15 @@ class WiFiScan
     wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();    
 
     void RunSetup();
-    void shutdownWiFi();
-    void shutdownBLE();
+    bool shutdownWiFi();
+    bool shutdownBLE();
     void joinWiFi(String ssid, String password);
     String getStaMAC();
     String getApMAC();
     String freeRAM();
     void RunInfo();
+    void RunShutdownWiFi();
+    void RunShutdownBLE();
     void channelHop();
     uint8_t currentScanMode = 0;
     void main(uint32_t currentTime);