Add memory usage limit

This commit is contained in:
Just Call Me Koko
2025-03-23 15:45:31 -04:00
parent 7efa7c8a12
commit 7fd64995bb
2 changed files with 83 additions and 63 deletions

View File

@@ -3135,7 +3135,12 @@ void WiFiScan::apSnifferCallbackFull(void* buf, wifi_promiscuous_pkt_type_t type
//if (display_obj.display_buffer->size() == 0)
//{
//display_obj.loading = true;
display_obj.display_buffer->add(display_string);
if (wifi_scan_obj.checkMem())
display_obj.display_buffer->add(display_string);
else {
String warning_str = "Mem limit reached " + display_string;
display_obj.display_buffer->add(warning_str);
}
//display_obj.loading = false;
//}
#endif
@@ -3158,48 +3163,51 @@ void WiFiScan::apSnifferCallbackFull(void* buf, wifi_promiscuous_pkt_type_t type
false,
NULL};*/
AccessPoint ap;
ap.essid = essid;
ap.channel = snifferPacket->rx_ctrl.channel;
ap.bssid[0] = snifferPacket->payload[10];
ap.bssid[1] = snifferPacket->payload[11];
ap.bssid[2] = snifferPacket->payload[12];
ap.bssid[3] = snifferPacket->payload[13];
ap.bssid[4] = snifferPacket->payload[14];
ap.bssid[5] = snifferPacket->payload[15];
ap.selected = false;
ap.stations = new LinkedList<uint8_t>();
ap.beacon = new LinkedList<char>();
if (wifi_scan_obj.checkMem()) {
//for (int i = 0; i < len; i++) {
// ap.beacon->add(snifferPacket->payload[i]);
//}
ap.beacon->add(snifferPacket->payload[34]);
ap.beacon->add(snifferPacket->payload[35]);
AccessPoint ap;
ap.essid = essid;
ap.channel = snifferPacket->rx_ctrl.channel;
ap.bssid[0] = snifferPacket->payload[10];
ap.bssid[1] = snifferPacket->payload[11];
ap.bssid[2] = snifferPacket->payload[12];
ap.bssid[3] = snifferPacket->payload[13];
ap.bssid[4] = snifferPacket->payload[14];
ap.bssid[5] = snifferPacket->payload[15];
ap.selected = false;
ap.stations = new LinkedList<uint8_t>();
ap.beacon = new LinkedList<char>();
Serial.print("\nBeacon: ");
//for (int i = 0; i < len; i++) {
// ap.beacon->add(snifferPacket->payload[i]);
//}
ap.beacon->add(snifferPacket->payload[34]);
ap.beacon->add(snifferPacket->payload[35]);
for (int i = 0; i < ap.beacon->size(); i++) {
char hexCar[4];
sprintf(hexCar, "%02X", ap.beacon->get(i));
Serial.print(hexCar);
if ((i + 1) % 16 == 0)
Serial.print("\n");
else
Serial.print(" ");
Serial.print("\nBeacon: ");
for (int i = 0; i < ap.beacon->size(); i++) {
char hexCar[4];
sprintf(hexCar, "%02X", ap.beacon->get(i));
Serial.print(hexCar);
if ((i + 1) % 16 == 0)
Serial.print("\n");
else
Serial.print(" ");
}
ap.rssi = snifferPacket->rx_ctrl.rssi;
access_points->add(ap);
Serial.print(access_points->size());
Serial.print(" ");
Serial.print(esp_get_free_heap_size());
Serial.println();
}
ap.rssi = snifferPacket->rx_ctrl.rssi;
access_points->add(ap);
Serial.print(access_points->size());
Serial.print(" ");
Serial.print(esp_get_free_heap_size());
Serial.println();
buffer_obj.append(snifferPacket, len);
}
}
@@ -3635,11 +3643,14 @@ void WiFiScan::beaconSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type
}
void WiFiScan::stationSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t type) {
extern WiFiScan wifi_scan_obj;
wifi_promiscuous_pkt_t *snifferPacket = (wifi_promiscuous_pkt_t*)buf;
WifiMgmtHdr *frameControl = (WifiMgmtHdr*)snifferPacket->payload;
wifi_pkt_rx_ctrl_t ctrl = (wifi_pkt_rx_ctrl_t)snifferPacket->rx_ctrl;
int len = snifferPacket->rx_ctrl.sig_len;
bool mem_check = wifi_scan_obj.checkMem();
String display_string = "";
String mac = "";
@@ -3729,16 +3740,18 @@ void WiFiScan::stationSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t typ
return;
// Add to list of stations
Station sta = {
{snifferPacket->payload[frame_offset],
snifferPacket->payload[frame_offset + 1],
snifferPacket->payload[frame_offset + 2],
snifferPacket->payload[frame_offset + 3],
snifferPacket->payload[frame_offset + 4],
snifferPacket->payload[frame_offset + 5]},
false};
if (mem_check) {
Station sta = {
{snifferPacket->payload[frame_offset],
snifferPacket->payload[frame_offset + 1],
snifferPacket->payload[frame_offset + 2],
snifferPacket->payload[frame_offset + 3],
snifferPacket->payload[frame_offset + 4],
snifferPacket->payload[frame_offset + 5]},
false};
stations->add(sta);
stations->add(sta);
}
// Print findings to serial
Serial.print((String)stations->size() + ": ");
@@ -3776,7 +3789,12 @@ void WiFiScan::stationSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t typ
if (display_obj.display_buffer->size() == 0)
{
display_obj.loading = true;
display_obj.display_buffer->add(display_string);
if (mem_check)
display_obj.display_buffer->add(display_string);
else {
String warning_str = "Memory lim reached " + display_string;
display_obj.display_buffer->add(warning_str);
}
display_obj.loading = false;
}
#endif
@@ -3784,10 +3802,12 @@ void WiFiScan::stationSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t typ
// Add station index to AP in list
//access_points->get(ap_index).stations->add(stations->size() - 1);
AccessPoint ap = access_points->get(ap_index);
ap.stations->add(stations->size() - 1);
if (mem_check) {
AccessPoint ap = access_points->get(ap_index);
ap.stations->add(stations->size() - 1);
access_points->set(ap_index, ap);
access_points->set(ap_index, ap);
}
buffer_obj.append(snifferPacket, len);
}

View File

@@ -1147,29 +1147,29 @@
//// MEMORY LOWER LIMIT STUFF
// These values are in bytes
#ifdef MARAUDER_M5STICKC
#define MEM_LOWER_LIM 20000
#define MEM_LOWER_LIM 5000
#elif defined(MARAUDER_MINI)
#define MEM_LOWER_LIM 20000
#define MEM_LOWER_LIM 5000
#elif defined(MARAUDER_V7)
#define MEM_LOWER_LIM 20000
#define MEM_LOWER_LIM 5000
#elif defined(MARAUDER_REV_FEATHER)
#define MEM_LOWER_LIM 20000
#define MEM_LOWER_LIM 5000
#elif defined(MARAUDER_V4)
#define MEM_LOWER_LIM 20000
#define MEM_LOWER_LIM 8500
#elif defined(MARAUDER_V6) || defined(MARAUDER_V6_1)
#define MEM_LOWER_LIM 20000
#define MEM_LOWER_LIM 8500
#elif defined(MARAUDER_KIT)
#define MEM_LOWER_LIM 20000
#define MEM_LOWER_LIM 8500
#elif defined(GENERIC_ESP32)
#define MEM_LOWER_LIM 20000
#define MEM_LOWER_LIM 5000
#elif defined(MARAUDER_FLIPPER)
#define MEM_LOWER_LIM 20000
#define MEM_LOWER_LIM 5000
#elif defined(ESP32_LDDB)
#define MEM_LOWER_LIM 20000
#define MEM_LOWER_LIM 5000
#elif defined(MARAUDER_DEV_BOARD_PRO)
#define MEM_LOWER_LIM 20000
#define MEM_LOWER_LIM 5000
#elif defined(XIAO_ESP32_S3)
#define MEM_LOWER_LIM 20000
#define MEM_LOWER_LIM 5000
#endif
//// END MEMORY LOWER LIMIT STUFF