Block 1-4: Debugging Logging, C-ITS Parser, CSV Writer, Integration
This commit is contained in:
+37
-17
@@ -134,6 +134,8 @@ static const char* get_message_type(uint8_t msgId)
|
||||
/**
|
||||
* C-ITS Nachricht verarbeiten
|
||||
*/
|
||||
static uint32_t packet_count = 0;
|
||||
|
||||
static void process_cits_packet(const uint8_t *packet, uint32_t length,
|
||||
uint32_t timestamp_sec, uint32_t timestamp_usec)
|
||||
{
|
||||
@@ -144,32 +146,50 @@ static void process_cits_packet(const uint8_t *packet, uint32_t length,
|
||||
wave_header_t wave_hdr;
|
||||
esp_err_t ret = parse_wave_header(packet, &wave_hdr);
|
||||
if (ret != ESP_OK) {
|
||||
ESP_LOGD(TAG, "Failed to parse WAVE header");
|
||||
return;
|
||||
}
|
||||
|
||||
char mac_str[18];
|
||||
format_mac(wave_hdr.senderId, mac_str, sizeof(mac_str));
|
||||
|
||||
ESP_LOGI(TAG, "Received C-ITS packet:");
|
||||
ESP_LOGI(TAG, " PDU Length: %lu", (unsigned long)(wave_hdr.pduLength[0] | wave_hdr.pduLength[1] << 8 | wave_hdr.pduLength[2] << 16));
|
||||
ESP_LOGI(TAG, " Sender MAC: %s", mac_str);
|
||||
ESP_LOGI(TAG, " Timestamp: %u.%06u", timestamp_sec, timestamp_usec);
|
||||
ESP_LOGI(TAG, " Priority: %d", wave_hdr.priority);
|
||||
ESP_LOGI(TAG, " PDU Type: %d", wave_hdr.pduType);
|
||||
packet_count++;
|
||||
|
||||
// C-ITS BSI Header parsen
|
||||
cits_bsi_header_t bsi_hdr;
|
||||
ret = parse_cits_bsi(packet + 15, &bsi_hdr);
|
||||
if (ret == ESP_OK) {
|
||||
ESP_LOGI(TAG, " Message ID: %d (%s)", bsi_hdr.msgId, get_message_type(bsi_hdr.msgId));
|
||||
ESP_LOGI(TAG, " Message Count: %d", bsi_hdr.msgCnt);
|
||||
ESP_LOGI(TAG, " Section Num: %d", bsi_hdr.sectionNum);
|
||||
ESP_LOGI(TAG, " Part ID: %d", bsi_hdr.partId);
|
||||
// Wichtige C-ITS Message Types sofort loggen
|
||||
uint8_t msgId = 0;
|
||||
if (length >= 23) {
|
||||
msgId = packet[15]; // BSI Message ID
|
||||
}
|
||||
|
||||
// TODO: C-ITS spezifische Payload parsen
|
||||
// Hier können die spezifischen C-ITS Nachrichteninhalt extrahiert werden
|
||||
const char* msg_type = get_message_type(msgId);
|
||||
|
||||
ESP_LOGI(TAG, "[PACKET #%lu] C-ITS %s Nachricht empfangen!",
|
||||
(unsigned long)packet_count, msg_type);
|
||||
ESP_LOGI(TAG, " MAC: %s | PDU: %lu B | Kanal: %u MHz",
|
||||
mac_str,
|
||||
(unsigned long)(wave_hdr.pduLength[0] | wave_hdr.pduLength[1] << 8 | wave_hdr.pduLength[2] << 16),
|
||||
CITS_CHANNEL_0_MHZ);
|
||||
ESP_LOGI(TAG, " Zeit: %u.%06u | Priorität: %d",
|
||||
timestamp_sec, timestamp_usec, wave_hdr.priority);
|
||||
|
||||
if (length >= 23) {
|
||||
cits_bsi_header_t bsi_hdr;
|
||||
if (parse_cits_bsi(packet + 15, &bsi_hdr) == ESP_OK) {
|
||||
ESP_LOGI(TAG, " BSI: MsgID=%d | Count=%d | Section=%d | Part=%d",
|
||||
bsi_hdr.msgId, bsi_hdr.msgCnt, bsi_hdr.sectionNum, bsi_hdr.partId);
|
||||
}
|
||||
}
|
||||
|
||||
// Speichere für CSV
|
||||
cits_message_t csv_msg;
|
||||
csv_msg.timestamp_sec = timestamp_sec;
|
||||
csv_msg.timestamp_usec = timestamp_usec;
|
||||
csv_msg.length = length;
|
||||
memcpy(csv_msg.sender_id, wave_hdr.senderId, 6);
|
||||
csv_msg.message_type = msgId;
|
||||
csv_msg.channel = CITS_CHANNEL_0_MHZ;
|
||||
csv_msg.rssi = 0; // Wird vom WiFi Layer bereitgestellt
|
||||
|
||||
csv_store_cits_message(&csv_msg);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user