Add AP info and reduce button array size

This commit is contained in:
Just Call Me Koko
2025-04-01 18:13:02 -04:00
parent f4634638a9
commit 1bc2b36c9c
6 changed files with 76 additions and 28 deletions

View File

@@ -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

View File

@@ -1451,6 +1451,7 @@ void MenuFunctions::RunSetup()
#endif
wifiGeneralMenu.list = new LinkedList<MenuNode>();
wifiAPMenu.list = new LinkedList<MenuNode>();
apInfoMenu.list = new LinkedList<MenuNode>();
#ifdef HAS_BT
airtagMenu.list = new LinkedList<MenuNode>();
#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);

View File

@@ -178,6 +178,7 @@ class MenuFunctions
Menu htmlMenu;
Menu miniKbMenu;
Menu saveFileMenu;
Menu apInfoMenu;
// Bluetooth menu stuff
Menu bluetoothSnifferMenu;

View File

@@ -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());

View File

@@ -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);

View File

@@ -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