doris_rs/record/
clock.rs

1#[cfg(doc)]
2use crate::prelude::{GroundStation, TimeScale, DORIS};
3
4use crate::{
5    error::ParsingError,
6    prelude::{Duration, Observable, Observation},
7};
8
9#[cfg(feature = "serde")]
10use serde::{Deserialize, Serialize};
11
12use itertools::Itertools;
13use std::collections::HashMap;
14
15#[derive(Clone, Copy, Debug, Default, PartialEq, PartialOrd, Eq, Ord, Hash)]
16#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
17pub struct ClockOffset {
18    /// True if this [ClockOffset] is actually extrapolated
19    /// and not actually measured.
20    pub extrapolated: bool,
21
22    /// Offset to [TimeScale::TAI] timescale, as [Duration]
23    pub offset: Duration,
24}
25
26impl ClockOffset {
27    /// Creates new [ClockOffset] from measured offset.
28    pub fn from_measured_offset(offset: Duration) -> Self {
29        Self {
30            offset,
31            extrapolated: false,
32        }
33    }
34
35    /// Creates new [ClockOffset] from extrapolated offset
36    /// (not actually measured).
37    pub fn from_extrapolated_offset(offset: Duration) -> Self {
38        Self {
39            offset,
40            extrapolated: true,
41        }
42    }
43}