diff --git a/src/main.rs b/src/main.rs index 67e181c..9717ebc 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))); }); @@ -546,6 +554,12 @@ fn handle_frame(frame: esp_radio::wifi::sniffer::PromiscuousPkt<'_>) { } // info!("Received frame with {} bytes", frame.len); + 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) @@ -560,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; } @@ -568,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 @@ -586,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! } }); } @@ -594,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; }