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) //if (display_obj.display_buffer->size() == 0)
//{ //{
//display_obj.loading = true; //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; //display_obj.loading = false;
//} //}
#endif #endif
@@ -3158,48 +3163,51 @@ void WiFiScan::apSnifferCallbackFull(void* buf, wifi_promiscuous_pkt_type_t type
false, false,
NULL};*/ NULL};*/
AccessPoint ap; if (wifi_scan_obj.checkMem()) {
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>(); 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>();
//for (int i = 0; i < len; i++) { ap.beacon = new LinkedList<char>();
// ap.beacon->add(snifferPacket->payload[i]);
//}
ap.beacon->add(snifferPacket->payload[34]);
ap.beacon->add(snifferPacket->payload[35]);
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++) { Serial.print("\nBeacon: ");
char hexCar[4];
sprintf(hexCar, "%02X", ap.beacon->get(i)); for (int i = 0; i < ap.beacon->size(); i++) {
Serial.print(hexCar); char hexCar[4];
if ((i + 1) % 16 == 0) sprintf(hexCar, "%02X", ap.beacon->get(i));
Serial.print("\n"); Serial.print(hexCar);
else if ((i + 1) % 16 == 0)
Serial.print(" "); 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); 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) { 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; wifi_promiscuous_pkt_t *snifferPacket = (wifi_promiscuous_pkt_t*)buf;
WifiMgmtHdr *frameControl = (WifiMgmtHdr*)snifferPacket->payload; WifiMgmtHdr *frameControl = (WifiMgmtHdr*)snifferPacket->payload;
wifi_pkt_rx_ctrl_t ctrl = (wifi_pkt_rx_ctrl_t)snifferPacket->rx_ctrl; wifi_pkt_rx_ctrl_t ctrl = (wifi_pkt_rx_ctrl_t)snifferPacket->rx_ctrl;
int len = snifferPacket->rx_ctrl.sig_len; int len = snifferPacket->rx_ctrl.sig_len;
bool mem_check = wifi_scan_obj.checkMem();
String display_string = ""; String display_string = "";
String mac = ""; String mac = "";
@@ -3729,16 +3740,18 @@ void WiFiScan::stationSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t typ
return; return;
// Add to list of stations // Add to list of stations
Station sta = { if (mem_check) {
{snifferPacket->payload[frame_offset], Station sta = {
snifferPacket->payload[frame_offset + 1], {snifferPacket->payload[frame_offset],
snifferPacket->payload[frame_offset + 2], snifferPacket->payload[frame_offset + 1],
snifferPacket->payload[frame_offset + 3], snifferPacket->payload[frame_offset + 2],
snifferPacket->payload[frame_offset + 4], snifferPacket->payload[frame_offset + 3],
snifferPacket->payload[frame_offset + 5]}, snifferPacket->payload[frame_offset + 4],
false}; snifferPacket->payload[frame_offset + 5]},
false};
stations->add(sta); stations->add(sta);
}
// Print findings to serial // Print findings to serial
Serial.print((String)stations->size() + ": "); 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) if (display_obj.display_buffer->size() == 0)
{ {
display_obj.loading = true; 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; display_obj.loading = false;
} }
#endif #endif
@@ -3784,10 +3802,12 @@ void WiFiScan::stationSnifferCallback(void* buf, wifi_promiscuous_pkt_type_t typ
// Add station index to AP in list // Add station index to AP in list
//access_points->get(ap_index).stations->add(stations->size() - 1); //access_points->get(ap_index).stations->add(stations->size() - 1);
AccessPoint ap = access_points->get(ap_index); if (mem_check) {
ap.stations->add(stations->size() - 1); 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); buffer_obj.append(snifferPacket, len);
} }

View File

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