From 759e6e0d044bea280c420ac056816f4297d7e3a8 Mon Sep 17 00:00:00 2001 From: Jannik Beyerstedt Date: Mon, 22 Jun 2026 22:57:48 +0200 Subject: [PATCH 1/3] WIP: try to debug V2X rx dropouts --- src/main.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main.rs b/src/main.rs index 67e181c..d9d77f8 100644 --- a/src/main.rs +++ b/src/main.rs @@ -531,6 +531,8 @@ fn handle_frame(frame: esp_radio::wifi::sniffer::PromiscuousPkt<'_>) { .naive_utc() }; + esp_println::print!("."); // TODO: debug only! + match esp32_cits_core::rx::is_broadcast_frame(&frame) { Err(err) => { warn!("{err}"); From 105d3123f4b63a61609a3bf42acf0f9d53bffd0f Mon Sep 17 00:00:00 2001 From: Jannik Beyerstedt Date: Mon, 3 Aug 2026 11:45:28 +0200 Subject: [PATCH 2/3] FIXUP: use user LED --- src/main.rs | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index d9d77f8..154082a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -76,6 +76,7 @@ esp_bootloader_esp_idf::esp_app_desc!(); #[cfg(feature = "_gnss")] static GNSS_UPDATE: Mutex>> = Mutex::new(RefCell::new(None)); static WIFI_RX_QUEUE: Mutex>>>> = Mutex::new(RefCell::new(None)); +static mut USER_LED: Option> = None; #[cfg(feature = "_uart")] static UART_RX_BUF: Mutex>>> = Mutex::new(RefCell::new(None)); #[cfg(feature = "_uart")] @@ -176,6 +177,13 @@ async fn main(spawner: Spawner) -> ! { error!("Failed to set WiFi TX power: {err}"); } + unsafe { + USER_LED = Some(esp_hal::gpio::Output::new( + peripherals.GPIO27, + esp_hal::gpio::Level::Low, + esp_hal::gpio::OutputConfig::default(), + )); + } critical_section::with(|cs| { WIFI_RX_QUEUE.borrow(cs).replace(Some(ArrayQueue::new(2))); }); @@ -531,8 +539,6 @@ fn handle_frame(frame: esp_radio::wifi::sniffer::PromiscuousPkt<'_>) { .naive_utc() }; - esp_println::print!("."); // TODO: debug only! - match esp32_cits_core::rx::is_broadcast_frame(&frame) { Err(err) => { warn!("{err}"); @@ -548,6 +554,13 @@ fn handle_frame(frame: esp_radio::wifi::sniffer::PromiscuousPkt<'_>) { } // info!("Received frame with {} bytes", frame.len); + esp_println::print!("."); // TODO: debug only! + unsafe { + #[allow(static_mut_refs)] + if let Some(ref mut led) = USER_LED.as_mut() { + led.toggle(); + } + } // parse GN headers match c_its_parser::pcap::remove_wlan_headers(frame.data) From 00b78e59cb83fa0e30abf8497e622d5f35c0b245 Mon Sep 17 00:00:00 2001 From: Jannik Beyerstedt Date: Wed, 5 Aug 2026 11:43:04 +0200 Subject: [PATCH 3/3] FIXUP: more detailed printf logging --- src/main.rs | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/src/main.rs b/src/main.rs index 154082a..9717ebc 100644 --- a/src/main.rs +++ b/src/main.rs @@ -554,7 +554,6 @@ fn handle_frame(frame: esp_radio::wifi::sniffer::PromiscuousPkt<'_>) { } // info!("Received frame with {} bytes", frame.len); - esp_println::print!("."); // TODO: debug only! unsafe { #[allow(static_mut_refs)] if let Some(ref mut led) = USER_LED.as_mut() { @@ -575,6 +574,7 @@ fn handle_frame(frame: esp_radio::wifi::sniffer::PromiscuousPkt<'_>) { Ok(packet) => { // drop hopped (for now) if packet.decoded.is_hopped() { + esp_println::print!("."); // TODO: debug only! return; } @@ -583,9 +583,15 @@ fn handle_frame(frame: esp_radio::wifi::sniffer::PromiscuousPkt<'_>) { // drop all unsupported message IDs and rate-limit SPATEMs if match message_id { #[cfg(feature = "denm")] - c_its_parser::standards::extensions::ItsMessageId::Denm => false, + c_its_parser::standards::extensions::ItsMessageId::Denm => { + esp_println::print!("D"); // TODO: debug only! + false + } #[cfg(feature = "cam")] - c_its_parser::standards::extensions::ItsMessageId::Cam => false, + c_its_parser::standards::extensions::ItsMessageId::Cam => { + esp_println::print!("C"); // TODO: debug only! + false + } #[cfg(feature = "spat")] c_its_parser::standards::extensions::ItsMessageId::Spatem => { // reduce SPAT rate per station ID @@ -601,7 +607,10 @@ fn handle_frame(frame: esp_radio::wifi::sniffer::PromiscuousPkt<'_>) { i.msg_count = i.msg_count.wrapping_add(1); if (i.msg_count % SPAT_RATE_LIMIT) > 0 { + esp_println::print!("s"); // TODO: debug only! drop_msg = true; + } else { + esp_println::print!("S"); // TODO: debug only! } }); } @@ -609,8 +618,14 @@ fn handle_frame(frame: esp_radio::wifi::sniffer::PromiscuousPkt<'_>) { drop_msg } #[cfg(feature = "spat")] - c_its_parser::standards::extensions::ItsMessageId::Mapem => false, - _ => true, + c_its_parser::standards::extensions::ItsMessageId::Mapem => { + esp_println::print!("M"); // TODO: debug only! + false + } + _ => { + esp_println::print!("?"); // TODO: debug only! + true + } } { return; }