Watch
0
0
Fork
You've already forked esp32-c_its-companion
0

WIP FIXUP

This commit is contained in:
Jannik Beyerstedt 2026-08-13 13:22:13 +02:00
commit ba344f5e22
2 changed files with 75 additions and 0 deletions

View file

@ -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:?}");

View file

@ -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<Color = pixelcolor::Rgb565>,