From 1bc2b36c9cab4661e5a26f1a605551fd24e34cc3 Mon Sep 17 00:00:00 2001 From: Just Call Me Koko Date: Tue, 1 Apr 2025 18:13:02 -0400 Subject: [PATCH] Add AP info and reduce button array size --- esp32_marauder/Display.cpp | 9 +++++-- esp32_marauder/MenuFunctions.cpp | 34 +++++++++++++++++++------ esp32_marauder/MenuFunctions.h | 1 + esp32_marauder/WiFiScan.cpp | 43 ++++++++++++++++++++++++-------- esp32_marauder/WiFiScan.h | 1 + esp32_marauder/configs.h | 16 ++++++------ 6 files changed, 76 insertions(+), 28 deletions(-) diff --git a/esp32_marauder/Display.cpp b/esp32_marauder/Display.cpp index 119a8bf..7091501 100644 --- a/esp32_marauder/Display.cpp +++ b/esp32_marauder/Display.cpp @@ -270,8 +270,13 @@ void Display::touchToExit() void Display::clearScreen() { //Serial.println(F("clearScreen()")); - tft.fillScreen(TFT_BLACK); - tft.setCursor(0, 0); + #ifndef MARAUDER_V7 + tft.fillScreen(TFT_BLACK); + tft.setCursor(0, 0); + #else + tft.fillRect(0, 0, TFT_WIDTH, TFT_HEIGHT, TFT_BLACK); + tft.setCursor(0, 0); + #endif } #ifdef SCREEN_BUFFER diff --git a/esp32_marauder/MenuFunctions.cpp b/esp32_marauder/MenuFunctions.cpp index 476e879..70cb417 100644 --- a/esp32_marauder/MenuFunctions.cpp +++ b/esp32_marauder/MenuFunctions.cpp @@ -1451,6 +1451,7 @@ void MenuFunctions::RunSetup() #endif wifiGeneralMenu.list = new LinkedList(); wifiAPMenu.list = new LinkedList(); + apInfoMenu.list = new LinkedList(); #ifdef HAS_BT airtagMenu.list = new LinkedList(); #endif @@ -1517,6 +1518,7 @@ void MenuFunctions::RunSetup() clearSSIDsMenu.name = text_table1[28]; clearAPsMenu.name = text_table1[29]; wifiAPMenu.name = "Access Points"; + apInfoMenu.name = "AP Info"; #ifdef HAS_BT airtagMenu.name = "Select Airtag"; #endif @@ -1839,15 +1841,8 @@ void MenuFunctions::RunSetup() this->changeMenu(wifiAPMenu.parentMenu); }); - // Determine how big the whole menu is going to be - int menu_limit = access_points->size(); - /*if (access_points->size() <= BUTTON_ARRAY_LEN) - menu_limit = access_points->size(); - else - menu_limit = BUTTON_ARRAY_LEN;*/ - // Populate the menu with buttons - for (int i = 0; i < menu_limit; i++) { + for (int i = 0; i < access_points->size(); i++) { // This is the menu node this->addNodes(&wifiAPMenu, access_points->get(i).essid, TFTCYAN, NULL, 255, [this, i](){ AccessPoint new_ap = access_points->get(i); @@ -1864,6 +1859,29 @@ void MenuFunctions::RunSetup() this->changeMenu(&wifiAPMenu); }); + this->addNodes(&wifiGeneralMenu, "View AP Info", TFTCYAN, NULL, KEYBOARD_ICO, [this](){ + // Add the back button + wifiAPMenu.list->clear(); + this->addNodes(&wifiAPMenu, text09, TFTLIGHTGREY, NULL, 0, [this]() { + this->changeMenu(wifiAPMenu.parentMenu); + }); + + // Populate the menu with buttons + for (int i = 0; i < access_points->size(); i++) { + // This is the menu node + this->addNodes(&wifiAPMenu, access_points->get(i).essid, TFTCYAN, NULL, 255, [this, i](){ + this->changeMenu(&apInfoMenu); + wifi_scan_obj.RunAPInfo(i); + }); + } + this->changeMenu(&wifiAPMenu); + }); + + apInfoMenu.parentMenu = &wifiAPMenu; + this->addNodes(&apInfoMenu, text09, TFTLIGHTGREY, NULL, 0, [this]() { + this->changeMenu(apInfoMenu.parentMenu); + }); + wifiAPMenu.parentMenu = &wifiGeneralMenu; this->addNodes(&wifiAPMenu, text09, TFTLIGHTGREY, NULL, 0, [this]() { this->changeMenu(wifiAPMenu.parentMenu); diff --git a/esp32_marauder/MenuFunctions.h b/esp32_marauder/MenuFunctions.h index 05c40b3..b7ac31e 100644 --- a/esp32_marauder/MenuFunctions.h +++ b/esp32_marauder/MenuFunctions.h @@ -178,6 +178,7 @@ class MenuFunctions Menu htmlMenu; Menu miniKbMenu; Menu saveFileMenu; + Menu apInfoMenu; // Bluetooth menu stuff Menu bluetoothSnifferMenu; diff --git a/esp32_marauder/WiFiScan.cpp b/esp32_marauder/WiFiScan.cpp index 89bfc6b..5e4524d 100644 --- a/esp32_marauder/WiFiScan.cpp +++ b/esp32_marauder/WiFiScan.cpp @@ -1918,6 +1918,36 @@ void WiFiScan::RunGPSNmea() { #endif } +void WiFiScan::RunAPInfo(uint16_t index) { + display_obj.tft.setCursor(0, (STATUS_BAR_WIDTH * 2) + CHAR_WIDTH + KEY_H); + display_obj.tft.setTextSize(1); + display_obj.tft.setTextColor(TFT_WHITE, TFT_BLACK); + + Serial.println(" ESSID: " + (String)access_points->get(index).essid); + Serial.println(" BSSID: " + (String)macToString(access_points->get(index).bssid)); + Serial.println(" Channel: " + (String)access_points->get(index).channel); + Serial.println(" RSSI: " + (String)access_points->get(index).rssi); + Serial.println(" Frames: " + (String)access_points->get(index).packets); + Serial.println("Stations: " + (String)access_points->get(index).stations->size()); + + display_obj.tft.println(" ESSID: " + (String)access_points->get(index).essid); + display_obj.tft.println(" BSSID: " + (String)macToString(access_points->get(index).bssid)); + display_obj.tft.println(" Channel: " + (String)access_points->get(index).channel); + display_obj.tft.println(" RSSI: " + (String)access_points->get(index).rssi); + display_obj.tft.println(" Frames: " + (String)access_points->get(index).packets); + display_obj.tft.println("Stations: " + (String)access_points->get(index).stations->size()); + + if (!access_points->get(index).selected) { + Serial.println("Selected: false"); + display_obj.tft.println("Selected: false"); + } + else { + Serial.println("Selected: true"); + display_obj.tft.println("Selected: true"); + } + +} + void WiFiScan::RunInfo() { String sta_mac = this->getStaMAC(); @@ -3147,28 +3177,21 @@ void WiFiScan::apSnifferCallbackFull(void* buf, wifi_promiscuous_pkt_type_t type } if (mac_match) { in_list = true; + AccessPoint ap = access_points->get(i); + ap.packets = ap.packets + 1; + access_points->set(i, ap); break; } } if (!in_list) { - //delay(random(0, 10)); Serial.print("RSSI: "); Serial.print(snifferPacket->rx_ctrl.rssi); Serial.print(" Ch: "); Serial.print(snifferPacket->rx_ctrl.channel); Serial.print(" BSSID: "); Serial.print(addr); - //display_string.concat(addr); - //Serial.print(" ESSID: "); - //display_string.concat(" -> "); - //for (int i = 0; i < snifferPacket->payload[37]; i++) - //{ - // Serial.print((char)snifferPacket->payload[i + 38]); - // display_string.concat((char)snifferPacket->payload[i + 38]); - // essid.concat((char)snifferPacket->payload[i + 38]); - //} #ifdef HAS_SCREEN display_string.concat("#"); display_string.concat(access_points->size()); diff --git a/esp32_marauder/WiFiScan.h b/esp32_marauder/WiFiScan.h index f0fbb6e..7e3d3b8 100644 --- a/esp32_marauder/WiFiScan.h +++ b/esp32_marauder/WiFiScan.h @@ -455,6 +455,7 @@ class WiFiScan String freeRAM(); void changeChannel(); void changeChannel(int chan); + void RunAPInfo(uint16_t index); void RunInfo(); //void RunShutdownBLE(); void RunGenerateSSIDs(int count = 20); diff --git a/esp32_marauder/configs.h b/esp32_marauder/configs.h index f9fb264..534c5db 100644 --- a/esp32_marauder/configs.h +++ b/esp32_marauder/configs.h @@ -430,7 +430,7 @@ //#define MENU_FONT &FreeSans9pt7b //#define MENU_FONT &FreeSansBold9pt7b #define BUTTON_SCREEN_LIMIT 6 - #define BUTTON_ARRAY_LEN 100 + #define BUTTON_ARRAY_LEN BUTTON_SCREEN_LIMIT #define STATUS_BAR_WIDTH (TFT_HEIGHT/16) #define LVGL_TICK_PERIOD 6 @@ -500,7 +500,7 @@ //#define MENU_FONT &FreeSans9pt7b //#define MENU_FONT &FreeSansBold9pt7b #define BUTTON_SCREEN_LIMIT 6 - #define BUTTON_ARRAY_LEN 13 + #define BUTTON_ARRAY_LEN BUTTON_SCREEN_LIMIT #define STATUS_BAR_WIDTH (TFT_HEIGHT/16) #define LVGL_TICK_PERIOD 6 @@ -560,7 +560,7 @@ //#define MENU_FONT &FreeSans9pt7b //#define MENU_FONT &FreeSansBold9pt7b #define BUTTON_SCREEN_LIMIT 12 - #define BUTTON_ARRAY_LEN 12 + #define BUTTON_ARRAY_LEN BUTTON_SCREEN_LIMIT #define STATUS_BAR_WIDTH 16 #define LVGL_TICK_PERIOD 6 @@ -621,7 +621,7 @@ //#define MENU_FONT &FreeSans9pt7b //#define MENU_FONT &FreeSansBold9pt7b #define BUTTON_SCREEN_LIMIT 12 - #define BUTTON_ARRAY_LEN 12 + #define BUTTON_ARRAY_LEN BUTTON_SCREEN_LIMIT #define STATUS_BAR_WIDTH 16 #define LVGL_TICK_PERIOD 6 @@ -686,7 +686,7 @@ //#define MENU_FONT &FreeSans9pt7b //#define MENU_FONT &FreeSansBold9pt7b #define BUTTON_SCREEN_LIMIT 12 - #define BUTTON_ARRAY_LEN 100 + #define BUTTON_ARRAY_LEN BUTTON_SCREEN_LIMIT #define STATUS_BAR_WIDTH 16 #define LVGL_TICK_PERIOD 6 @@ -748,7 +748,7 @@ //#define MENU_FONT &FreeSans9pt7b //#define MENU_FONT &FreeSansBold9pt7b #define BUTTON_SCREEN_LIMIT 12 - #define BUTTON_ARRAY_LEN 12 + #define BUTTON_ARRAY_LEN BUTTON_SCREEN_LIMIT #define STATUS_BAR_WIDTH 16 #define LVGL_TICK_PERIOD 6 @@ -819,7 +819,7 @@ //#define MENU_FONT &FreeSans9pt7b //#define MENU_FONT &FreeSansBold9pt7b #define BUTTON_SCREEN_LIMIT 10 - #define BUTTON_ARRAY_LEN 100 + #define BUTTON_ARRAY_LEN BUTTON_SCREEN_LIMIT #define STATUS_BAR_WIDTH (TFT_HEIGHT/16) #define LVGL_TICK_PERIOD 6 @@ -888,7 +888,7 @@ //#define MENU_FONT &FreeSans9pt7b //#define MENU_FONT &FreeSansBold9pt7b #define BUTTON_SCREEN_LIMIT 5 - #define BUTTON_ARRAY_LEN 100 + #define BUTTON_ARRAY_LEN BUTTON_SCREEN_LIMIT #define STATUS_BAR_WIDTH (TFT_HEIGHT/16) #define LVGL_TICK_PERIOD 6