pub enum GnssScheduler {
PassThrough,
FixedInterval {
interval_s: f64,
phase_s: f64,
},
DutyCycle {
on_s: f64,
off_s: f64,
start_phase_s: f64,
},
}
Expand description
Scheduler for controlling when GNSS measurements are emitted into the simulation.
This models denial- or jamming-like effects that reduce the rate of
available GNSS updates, independent of their content (which is handled by
GnssFaultModel
).
By separating scheduling from corruption, you can experiment with outages, degraded update rates, or duty-cycled availability while keeping the measurement noise model orthogonal.
§Usage
PassThrough
→ GNSS data is delivered at its native logging rate.FixedInterval
→ Downsample the GNSS stream to a constant interval, simulating jamming that allows only low-rate fixes.DutyCycle
→ Alternate between ON and OFF windows of fixed length, simulating periodic outages.
See also GnssDegradationConfig
for how this is combined with a
GnssFaultModel
and a random seed.
§Examples
use strapdown::messages::GnssScheduler;
// Keep all GNSS fixes (no scheduling)
let sched = GnssScheduler::PassThrough;
// Deliver a GNSS fix every 10 seconds, starting at t=0
let sched = GnssScheduler::FixedInterval { interval_s: 10.0, phase_s: 0.0 };
// Alternate 5 s ON, 15 s OFF, starting in ON state at t=0
let sched = GnssScheduler::DutyCycle { on_s: 5.0, off_s: 15.0, start_phase_s: 0.0 };
Variants§
PassThrough
Pass every GNSS fix through to the filter with no rate reduction.
Useful as a baseline when you want to test only fault injection without simulating outages or reduced update rates.
FixedInterval
Emit GNSS measurements at a fixed interval, discarding those in between.
This simulates reduced-rate operation under jamming or low-power conditions.
interval_s
— Desired interval between emitted GNSS fixes, in seconds.phase_s
— Initial time offset before the first emission, in seconds.
Fields
DutyCycle
Alternate between ON and OFF windows to create duty-cycled outages.
This simulates conditions like periodic GNSS denial or environments where reception is available only intermittently (e.g., urban canyon).
on_s
— Duration of each ON window (seconds).off_s
— Duration of each OFF window (seconds).start_phase_s
— Initial time offset before the first toggle (seconds).
Trait Implementations§
Source§impl Clone for GnssScheduler
impl Clone for GnssScheduler
Source§fn clone(&self) -> GnssScheduler
fn clone(&self) -> GnssScheduler
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreAuto Trait Implementations§
impl Freeze for GnssScheduler
impl RefUnwindSafe for GnssScheduler
impl Send for GnssScheduler
impl Sync for GnssScheduler
impl Unpin for GnssScheduler
impl UnwindSafe for GnssScheduler
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,
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.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.