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

TMP: Show common screens at startup

This commit is contained in:
Jannik Beyerstedt 2026-09-07 12:36:25 +02:00 • committed by Jannik Beyerstedt
commit 83e572614d
3 changed files with 125 additions and 3 deletions

18
Cargo.lock generated
View file

@ -218,6 +218,20 @@ name = "c-its-parser"
version = "2.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7e94d9990b20498f621f164f23ae198c4365115eb4191ae106352ec74d4a4110"
dependencies = [
"chrono",
"etherparse",
"geo-types",
"geonetworking",
"nom",
"num-traits",
"wasm-bindgen",
]
[[package]]
name = "c-its-parser"
version = "2.4.1"
source = "git+https://github.com/consider-it/c-its-parser.git?branch=feat%2Fdenm-cc-from-u8#01fbf45932a8e276e1df4ba8cbf5bb29f8749786"
dependencies = [
"chrono",
"etherparse",
@ -1186,7 +1200,7 @@ version = "0.1.0"
dependencies = [
"assert_float_eq",
"bt-hci",
"c-its-parser",
"c-its-parser 2.4.1 (git+https://github.com/consider-it/c-its-parser.git?branch=feat%2Fdenm-cc-from-u8)",
"chrono",
"critical-section",
"crossbeam-queue",
@ -1226,7 +1240,7 @@ name = "esp32-cits-core"
version = "0.1.0"
source = "git+https://git.hamburg.ccc.de/jtbx/esp32-cits-core?branch=main#a6d0ea6ca2da130fde2b84060a34ef45e772a459"
dependencies = [
"c-its-parser",
"c-its-parser 2.4.1 (registry+https://github.com/rust-lang/crates.io-index)",
"chrono",
"esp-hal",
"esp-radio",

View file

@ -110,7 +110,7 @@ esp32-cits-core = { version = "0.1.0", default-features = false, git = "https://
embedded-hal-bus = { version = "0.3.0", optional = true }
embedded-graphics = { version = "0.8.2", optional = true }
# needs newer GN with removed bitvec dependency
c-its-parser = { version = "2.4.0", default-features = false, features = [
c-its-parser = { version = "2.4.0", git = "https://github.com/consider-it/c-its-parser.git", branch = "feat/denm-cc-from-u8", default-features = false, features = [
"time",
"geo",
"libm",

View file

@ -177,6 +177,114 @@ 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;
#[cfg(feature = "spat")]
{
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
},
timing: Some(applogic::TimingData {
min_end_sec: 23,
likely_end_sec: None,
max_end_sec: None
}),
usages: alloc::vec![applogic::v2x::map::UsageType::Vehicle]
},
applogic::SignalGroupData {
phase: applogic::SignalPhase::Red,
maneuver: applogic::v2x::map::Maneuvers {
left_allowed: true,
staight_allowed: false,
right_allowed: false
},
timing: Some(applogic::TimingData {
min_end_sec: 23,
likely_end_sec: None,
max_end_sec: None
}),
usages: alloc::vec![applogic::v2x::map::UsageType::Vehicle]
}
],
},
))
.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
},
timing: Some(applogic::TimingData {
min_end_sec: 23,
likely_end_sec: Some(24),
max_end_sec: Some(42)
}),
usages: alloc::vec![
applogic::v2x::map::UsageType::Vehicle,
applogic::v2x::map::UsageType::Bike,
]
}],
},
))
.inspect_err(log_screen_error);
embassy_time::Timer::after(embassy_time::Duration::from_secs(2)).await;
}
#[cfg(feature = "denm")]
{
let _ = screen
.update(screen::ScreenState::DenmWarning(
c_its_parser::standards::cdd_2_2_1::etsi_its_cdd::CauseCodeChoice::emergencyVehicleApproaching95(0.into()),
))
.inspect_err(log_screen_error);
embassy_time::Timer::after(embassy_time::Duration::from_secs(2)).await;
// try to reset screen for 4 more seconds
for _ in 0..4 {
let _ = screen
.update(screen::ScreenState::Initial)
.inspect_err(log_screen_error);
embassy_time::Timer::after(embassy_time::Duration::from_secs(1)).await;
}
}
}
// Setup UART I/O channel
#[cfg(feature = "uart")]
setup_uart0(