#[non_exhaustive]pub struct PropagationHealth {
pub coasted: u32,
pub refused_too_long: u32,
pub refused_invalid: u32,
pub refused_not_finite: u32,
pub refused_state_not_finite: u32,
pub longest_gap: Option<Seconds>,
}Expand description
What propagation refused or coasted across, and the longest gap.
Not per source — Eskf::predict is the one path that is not a
sensor — and the only record that a step was ever turned away. The state stops advancing
while Status goes on reporting on the aiding, so without this a filter running on refused
steps looks healthy.
#[non_exhaustive]; see SourceHealth.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.coasted: u32Gaps longer than Config::max_predict_dt coasted
across, Propagation::Coasted.
refused_too_long: u32Steps refused as longer than
Config::max_predict_dt, with
Config::coast off.
refused_invalid: u32Steps refused for their timing: a sample not after the last,
Propagation::InvalidStep, or an integration interval under a microsecond or past
Config::max_predict_dt,
Propagation::InvalidInterval.
refused_not_finite: u32Steps refused because the ImuSample carried a NaN or an
infinity.
Counted apart from refused_invalid because the two name
different faults: that one is the caller’s timing, this one is the sensor. A count
climbing here is a miswired or failed IMU, and there is no other record of it —
the state simply stops advancing while the aiding timers run on.
refused_state_not_finite: u32Steps whose propagated state or covariance carried a NaN or an infinity, discarded together.
Counted apart from refused_not_finite for the reason
that one is counted apart from refused_invalid: a
different fault. That one is a sensor emitting a NaN; this one is arithmetic
overflowing on values it accepted, which is a magnitude problem rather than a
validity one and is read at a different place in a bring-up.
longest_gap: Option<Seconds>The longest dt past Config::max_predict_dt,
coasted or refused, or None if there has been none.
How far past the limit the worst gap ran, which separates a scheduler that overran by a
millisecond from a logger that dropped a second of data. The filter reads no clock, so
it holds the size of the gap and not when it happened; a caller that needs the moment
timestamps it from Propagation::Coasted or Propagation::StepTooLong.
Trait Implementations§
Source§impl Clone for PropagationHealth
impl Clone for PropagationHealth
impl Copy for PropagationHealth
Source§impl Debug for PropagationHealth
impl Debug for PropagationHealth
Source§impl Default for PropagationHealth
impl Default for PropagationHealth
Source§impl Format for PropagationHealth
Available on crate feature defmt only.
impl Format for PropagationHealth
defmt only.Source§impl PartialEq for PropagationHealth
impl PartialEq for PropagationHealth
impl StructuralPartialEq for PropagationHealth
Auto Trait Implementations§
impl Freeze for PropagationHealth
impl RefUnwindSafe for PropagationHealth
impl Send for PropagationHealth
impl Sync for PropagationHealth
impl Unpin for PropagationHealth
impl UnsafeUnpin for PropagationHealth
impl UnwindSafe for PropagationHealth
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> Scalar for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.