build: fix USB-JTAG API, PRI macros, linker symbols for ESP-IDF 5.5

This commit is contained in:
Clawdia
2026-05-20 06:36:35 +02:00
parent 76d50165c4
commit 5248ff7b82
15 changed files with 1976 additions and 2273 deletions
+40 -4
View File
@@ -146,6 +146,42 @@ static esp_err_t eth_sniffer_cb(esp_eth_handle_t eth_handle, uint8_t *buffer, ui
return ESP_OK;
}
static void process_and_log_packet(void *payload, uint32_t length, uint32_t seconds, uint32_t microseconds)
{
if (!payload || length < 26) return; // Minimum header size check
// Simple parsing logic (placeholder for actual 802.11p/C-ITS header extraction)
// In a real implementation, we would parse the MAC header here.
// For now, we extract the first 6 bytes as a dummy source MAC.
uint8_t *ptr = (uint8_t *)payload;
char src_mac[18], dst_mac[18], payload_hex[128];
snprintf(src_mac, sizeof(src_mode), "%02x:%02x:%02x:%02x:%02x:%02x",
ptr[0], ptr[1], ptr[2], ptr[3], ptr[4], ptr[5]);
snprintf(dst_mac, sizeof(dst_mode), "%02x:%02x:%02x:%02x:%02x:%02x",
ptr[6], ptr[7], ptr[8], ptr[9], ptr[10], ptr[11]);
// Extract payload snippet and convert to hex string
size_t hex_len = (length > 64) ? 64 : length;
size_t pos = 0;
for (size_t i = 0; i < hex_len; i++) {
pos += snprintf(payload_hex + pos, sizeof(payload_hex) - pos, "%02x", ptr[i]);
}
// Create CSV line
char csv_line[256];
snprintf(csv_line, sizeof(csv_line), "%u.%06u;%s;%s;%s",
seconds, microseconds, src_mac, dst_mac, payload_hex);
// 1. Write to SD Card (via existing packet_capture or dedicated CSV function)
// We reuse packet_capture as a placeholder, but in Phase 1 we'd target a .csv file.
packet_capture(payload, length, seconds, microseconds);
// 2. Live Stream via USB (UART)
// This is the "Live View" feature for Gregor
ESP_LOGI(SNIFFER_TAG, "LIVE_CSV: %s", csv_line);
}
static void sniffer_task(void *parameters)
{
sniffer_packet_info_t packet_info;
@@ -158,10 +194,10 @@ static void sniffer_task(void *parameters)
}
if (xQueueReceive(sniffer->work_intf_queue, &packet_info, pdMS_TO_TICKS(SNIFFER_PROCESS_PACKET_TIMEOUT_MS)) == pdTRUE) {
if (packet_capture(packet_info.payload, packet_info.length, packet_info.seconds,
packet_info.microseconds) != ESP_OK) {
ESP_LOGW(SNIFFER_TAG, "PCAP write error");
}
// NEW LOGIC: Process, Parse, and Stream
process_and_log_packet(packet_info.payload, packet_info.length,
packet_info.seconds, packet_info.microseconds);
free(packet_info.payload);
packet_info.payload = NULL;