pub struct RefclockSample {
pub local_s: f64,
pub offset_s: f64,
pub precision_log2: i8,
pub leap: LeapWarning,
}Expand description
One reading from a reference clock.
The offset is the stored quantity, not the reference time. Storing a
reference timestamp and recovering the offset by subtraction loses about
100 ns: an f64 holding a Unix-epoch value (~1.76e9) has only ~1e-7 s of
resolution left below the decimal point, so local + offset - local does
not return offset. That silently caps every refclock at roughly 100 ns
however precise the hardware is — fatal for a PPS source, and it was found
by a round-trip test asserting exactness rather than “close enough”.
Fields§
§local_s: f64Our own clock when the reading was taken, Unix seconds.
offset_s: f64Seconds to ADD to our clock to match the reference. Authoritative.
precision_log2: i8The reference’s own claim about its precision, log2 seconds.
leap: LeapWarningImplementations§
Source§impl RefclockSample
impl RefclockSample
Sourcepub fn reference_s(&self) -> f64
pub fn reference_s(&self) -> f64
What the reference says our local_s instant actually was.
Derived, and therefore subject to the same epoch-magnitude rounding the struct exists to avoid — use it for display, never to recompute the offset.
Sourcepub fn validate(&self, last_local_s: Option<f64>) -> Result<(), RefclockError>
pub fn validate(&self, last_local_s: Option<f64>) -> Result<(), RefclockError>
Is this reading usable? last_local_s is the previous accepted
reading’s local timestamp, if any.
Sourcepub fn dispersion_s(&self) -> f64
pub fn dispersion_s(&self) -> f64
The dispersion this sample implies, from the reference’s own precision claim.
Trait Implementations§
Source§impl Clone for RefclockSample
impl Clone for RefclockSample
Source§fn clone(&self) -> RefclockSample
fn clone(&self) -> RefclockSample
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more