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

spat: Show signal groups without timing information

This commit is contained in:
Jannik Beyerstedt 2026-06-19 22:03:59 +02:00
commit ff45df8204
4 changed files with 35 additions and 24 deletions

View file

@ -154,15 +154,19 @@ impl Intersection {
for state in &value.states.0 {
let sig_grp = state.signal_group.0;
if let Some(event) = state.state_time_speed.0.first()
&& let Some(timing) = &event.timing
{
if let Some(event) = state.state_time_speed.0.first() {
// get write access to SignalGroup item
if let Some(idx) = self.signal_groups.iter().position(|i| i.id == sig_grp)
&& let Some(sig_grp) = self.signal_groups.get_mut(idx)
{
sig_grp.phase = Some(event.event_state);
sig_grp.min_end_time = timing.min_end_time.to_datetime_from_moy(moy, year);
if let Some(timing) = &event.timing
&& !timing.min_end_time.is_out_of_range()
&& !timing.min_end_time.is_unknown()
{
sig_grp.min_end_time =
Some(timing.min_end_time.to_datetime_from_moy(moy, year));
}
}
} else {
// warn!("SPAT: SG {sig_grp:03} has no timing in first event");
@ -211,7 +215,7 @@ impl Intersection {
maneuvers,
target_lanes,
phase: None,
min_end_time: chrono::DateTime::default(),
min_end_time: None,
}
})
.collect()
@ -397,7 +401,7 @@ pub struct SignalGroup {
// SPAT data
/// current signal phase
phase: Option<etsi_its_dsrc::MovementPhaseState>,
min_end_time: chrono::DateTime<chrono::Utc>,
min_end_time: Option<chrono::DateTime<chrono::Utc>>,
// max_end_time: Option<chrono::DateTime<chrono::Utc>>,
// likely_time: Option<chrono::DateTime<chrono::Utc>>,
}
@ -425,7 +429,7 @@ impl SignalGroup {
pub fn phase(&self) -> Option<etsi_its_dsrc::MovementPhaseState> {
self.phase
}
pub fn min_end_time(&self) -> chrono::prelude::DateTime<chrono::prelude::Utc> {
pub fn min_end_time(&self) -> Option<chrono::prelude::DateTime<chrono::prelude::Utc>> {
self.min_end_time
}