gnss-rtk 0.8.0

GNSS position solver
Documentation
/// [MeasurementSystem]s provide [Measurement]s that GNSS-RTK will
/// process to resolve P.V.T solutions.
pub struct Measurement {
    /// Satellite (signal source) as [SV]
    pub satellite: SV,

    /// [Carrier] is the sampled signal
    pub carrier: Carrier,

    /// Decoded pseudo-range, in meters.
    pub pseudo_range_m: Option<f64>,

    /// Phse range in meters.
    pub phase_range_m: Option<f64>,

    /// Doppler observation
    pub doppler: Option<f64>,
}

/// [MeasurementSystem] must be implemented by all measurement systems
/// forwarding measurements (oftentimes referred to as "observations").
/// When using differential navigation techniques, a minimum of two [MeasurementSystem]s are
/// required.
pub trait MeasurentSystem {
    /// Update your system and prepare for a new sampling [Epoch].
    /// GNSS-RTK follows the Timeserie you described
    fn new_epoch(&mut self, epoch: Epoch);

    /// Provide the solver with new measurements. 
    /// Return None when you cannot propose any more measurements for ongoing [Epoch].
    fn measure(&self) -> Option<Measurement>;
}