From ba344f5e2286990ccc020dc2a8b750aef2a2d839 Mon Sep 17 00:00:00 2001 From: Jannik Beyerstedt Date: Thu, 13 Aug 2026 13:22:13 +0200 Subject: [PATCH] WIP FIXUP --- src/main.rs | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ src/screen.rs | 27 +++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) diff --git a/src/main.rs b/src/main.rs index 996965c..3e5ee4a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -176,6 +176,45 @@ async fn main(spawner: Spawner) -> ! { screen }; + { + let _ = screen + .update(screen::ScreenState::Initial) + .inspect_err(log_screen_error); + embassy_time::Timer::after(embassy_time::Duration::from_secs(2)).await; + let _ = screen + .update(screen::ScreenState::GlosaSearching( + applogic::GlosaSearching { + known_intersection_ids: alloc::vec![123], + }, + )) + .inspect_err(log_screen_error); + embassy_time::Timer::after(embassy_time::Duration::from_secs(2)).await; + let _ = screen + .update(screen::ScreenState::GlosaFound(applogic::GlosaFound { + intersection_id: 1234, + approach_id: Some(42), + })) + .inspect_err(log_screen_error); + embassy_time::Timer::after(embassy_time::Duration::from_secs(2)).await; + let _ = screen + .update(screen::ScreenState::GlosaLocked( + applogic::GlosaSignalInfo { + intersection_id: 1234, + signal_groups: alloc::vec![applogic::SignalGroupData { + phase: applogic::SignalPhase::Red, + maneuver: applogic::v2x::map::Maneuvers { + left_allowed: true, + staight_allowed: false, + right_allowed: false + }, + end_sec: Some(23) + }], + }, + )) + .inspect_err(log_screen_error); + embassy_time::Timer::after(embassy_time::Duration::from_secs(2)).await; + } + // Setup UART I/O channel #[cfg(feature = "uart")] setup_uart0( @@ -381,6 +420,15 @@ async fn main(spawner: Spawner) -> ! { } Err(err) => warn!("{err}"), } + + // TODO: update GNSS HB on screen + let _ = screen.update_gnss(pvt); + } + ublox::proto27::PacketRef::AckNak(nak) => { + error!("UBX: {nak:?}"); + } + ublox::proto27::PacketRef::AckAck(ack) => { + info!("UBX: {ack:?}"); } _ => { println!("UBX: {packet_ref:?}"); diff --git a/src/screen.rs b/src/screen.rs index a0968f7..3895e57 100644 --- a/src/screen.rs +++ b/src/screen.rs @@ -22,6 +22,7 @@ where // internal state prev_state: ScreenState, hb_state: bool, + gnss_hb_state: bool, } #[derive(Debug, Default, PartialEq, Eq)] @@ -94,6 +95,7 @@ where size: display_size, prev_state: ScreenState::Uninitialized, hb_state: false, + gnss_hb_state: false, } } @@ -149,6 +151,31 @@ where Ok(()) } + pub fn update_gnss( + &mut self, + pvt: &ublox::nav_pvt::proto27::NavPvtRef, + ) -> Result<(), D::Error> { + let num_sat = pvt.num_satellites(); + let fix_str = match pvt.fix_type() { + ublox::GnssFixType::NoFix | ublox::GnssFixType::DeadReckoningOnly => "no", + ublox::GnssFixType::Fix2D => "2D", + ublox::GnssFixType::Fix3D | ublox::GnssFixType::GPSPlusDeadReckoning => "3D", + ublox::GnssFixType::TimeOnlyFix => "tm", + _ => " ", + }; + + esp_println::println!( + "TODO: GNSS {fix_str} {num_sat:2} sat {}", + self.gnss_hb_state + ); + + // TODO: print on screen! + + self.gnss_hb_state = !self.gnss_hb_state; + + Ok(()) + } + fn clear(&mut self) -> Result<(), D::Error> where D: DrawTarget,