diff --git a/esp32_marauder/MenuFunctions.cpp b/esp32_marauder/MenuFunctions.cpp index afc21f7..b167000 100644 --- a/esp32_marauder/MenuFunctions.cpp +++ b/esp32_marauder/MenuFunctions.cpp @@ -627,6 +627,8 @@ void MenuFunctions::RunSetup() // Settings stuff shutdownWiFiMenu.list = new LinkedList(); shutdownBLEMenu.list = new LinkedList(); + generateSSIDsMenu.list = new LinkedList(); + clearSSIDsMenu.list = new LinkedList(); // Work menu names mainMenu.name = " ESP32 Marauder "; @@ -648,6 +650,9 @@ void MenuFunctions::RunSetup() bluetoothGeneralMenu.name = " Bluetooth General "; shutdownWiFiMenu.name = " Shutdown WiFi "; shutdownBLEMenu.name = " Shutdown BLE "; + generateSSIDsMenu.name = " Generate SSIDs "; + clearSSIDsMenu.name = " Clear SSIDs "; + // Build Main Menu mainMenu.parentMenu = NULL; @@ -755,10 +760,18 @@ void MenuFunctions::RunSetup() wifi_scan_obj.StartScan(LV_JOIN_WIFI, TFT_YELLOW); joinWiFiGFX(); }); - addNodes(&wifiGeneralMenu, "Shutdown WiFi", TFT_ORANGE, NULL, SHUTDOWN, [this]() { + addNodes(&wifiGeneralMenu, "Shutdown WiFi", TFT_CYAN, NULL, SHUTDOWN, [this]() { changeMenu(&shutdownWiFiMenu); wifi_scan_obj.RunShutdownWiFi(); }); + addNodes(&wifiGeneralMenu, "Generate SSIDs", TFT_SKYBLUE, NULL, GENERAL_APPS, [this]() { + changeMenu(&generateSSIDsMenu); + wifi_scan_obj.RunGenerateSSIDs(); + }); + addNodes(&wifiGeneralMenu, "Clear SSIDs", TFT_SILVER, NULL, GENERAL_APPS, [this]() { + changeMenu(&clearSSIDsMenu); + wifi_scan_obj.RunClearSSIDs(); + }); // Build shutdown wifi menu shutdownWiFiMenu.parentMenu = &wifiGeneralMenu; @@ -766,6 +779,18 @@ void MenuFunctions::RunSetup() changeMenu(shutdownWiFiMenu.parentMenu); }); + // Build generate ssids menu + generateSSIDsMenu.parentMenu = &wifiGeneralMenu; + addNodes(&generateSSIDsMenu, "Back", TFT_LIGHTGREY, NULL, 0, [this]() { + changeMenu(generateSSIDsMenu.parentMenu); + }); + + // Build clear ssids menu + clearSSIDsMenu.parentMenu = &wifiGeneralMenu; + addNodes(&clearSSIDsMenu, "Back", TFT_LIGHTGREY, NULL, 0, [this]() { + changeMenu(clearSSIDsMenu.parentMenu); + }); + // Build Bluetooth Menu bluetoothMenu.parentMenu = &mainMenu; // Second Menu is third menu parent diff --git a/esp32_marauder/MenuFunctions.h b/esp32_marauder/MenuFunctions.h index 37c08ab..0ff8b33 100644 --- a/esp32_marauder/MenuFunctions.h +++ b/esp32_marauder/MenuFunctions.h @@ -138,6 +138,8 @@ class MenuFunctions // Settings things menus Menu shutdownWiFiMenu; Menu shutdownBLEMenu; + Menu generateSSIDsMenu; + Menu clearSSIDsMenu; static void lv_tick_handler(); diff --git a/esp32_marauder/WiFiScan.cpp b/esp32_marauder/WiFiScan.cpp index b9694ab..4da01ab 100644 --- a/esp32_marauder/WiFiScan.cpp +++ b/esp32_marauder/WiFiScan.cpp @@ -129,6 +129,7 @@ WiFiScan::WiFiScan() } void WiFiScan::RunSetup() { + ssids = new LinkedList(); BLEDevice::init(""); pBLEScan = BLEDevice::getScan(); //create new scan this->ble_initialized = true; @@ -136,6 +137,29 @@ void WiFiScan::RunSetup() { this->shutdownBLE(); } +int WiFiScan::clearSSIDs() { + int num_cleared = this->ssids->size(); + this->ssids->clear(); + Serial.println("ssids: " + (String)this->ssids->size()); + return num_cleared; +} + +int WiFiScan::generateSSIDs() { + uint8_t num_gen = 20; + for (uint8_t x = 0; x < num_gen; x++) { + String essid = ""; + + for (uint8_t i = 0; i < 6; i++) + essid.concat(alfa[random(65)]); + + ssid s = {essid, {random(256), random(256), random(256), random(256), random(256), random(256)}}; + this->ssids->add(s); + Serial.println(this->ssids->get(this->ssids->size() - 1).essid); + } + + return num_gen; +} + void WiFiScan::joinWiFi(String ssid, String password) { static const char * btns[] ={"Close", ""}; @@ -406,6 +430,30 @@ void WiFiScan::RunLvJoinWiFi(uint8_t scan_mode, uint16_t color) { //display_obj.joinWiFiGFX(); } +void WiFiScan::RunClearSSIDs() { + 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.println(F("Clearing SSIDs...")); + display_obj.tft.println("SSIDs Cleared: " + (String)this->clearSSIDs()); +} + +void WiFiScan::RunGenerateSSIDs() { + 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.println(F("Generating SSIDs...")); + + display_obj.tft.println("SSIDs Generated: " + (String)this->generateSSIDs()); + display_obj.tft.println(" Total SSIDs: " + (String)this->ssids->size()); +} + void WiFiScan::RunShutdownWiFi() { display_obj.tft.setTextWrap(false); display_obj.tft.setFreeFont(NULL); diff --git a/esp32_marauder/WiFiScan.h b/esp32_marauder/WiFiScan.h index e93ba31..f89a98d 100644 --- a/esp32_marauder/WiFiScan.h +++ b/esp32_marauder/WiFiScan.h @@ -55,6 +55,11 @@ extern TemperatureInterface temp_obj; esp_err_t esp_wifi_80211_tx(wifi_interface_t ifx, const void *buffer, int len, bool en_sys_seq); +struct ssid { + String essid; + int bssid[6]; +}; + class WiFiScan { private: @@ -154,6 +159,8 @@ class WiFiScan public: WiFiScan(); + LinkedList* ssids; + int set_channel = 1; int old_channel = 0; @@ -171,6 +178,8 @@ class WiFiScan wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); void RunSetup(); + int clearSSIDs(); + int generateSSIDs(); bool shutdownWiFi(); bool shutdownBLE(); void joinWiFi(String ssid, String password); @@ -180,6 +189,8 @@ class WiFiScan void RunInfo(); void RunShutdownWiFi(); void RunShutdownBLE(); + void RunGenerateSSIDs(); + void RunClearSSIDs(); void channelHop(); uint8_t currentScanMode = 0; void main(uint32_t currentTime);