use crate::datastructures::common::{LeapIndicator, TimeSource};
#[derive(Default, Copy, Clone, Debug, Eq, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct TimePropertiesDS {
pub current_utc_offset: Option<i16>,
pub leap_indicator: LeapIndicator,
pub time_traceable: bool,
pub frequency_traceable: bool,
pub ptp_timescale: bool,
pub time_source: TimeSource,
}
impl TimePropertiesDS {
pub fn new_ptp_time(
current_utc_offset: Option<i16>,
leap_indicator: LeapIndicator,
time_traceable: bool,
frequency_traceable: bool,
time_source: TimeSource,
) -> Self {
TimePropertiesDS {
current_utc_offset,
leap_indicator,
time_traceable,
frequency_traceable,
ptp_timescale: true,
time_source,
}
}
pub fn new_arbitrary_time(
time_traceable: bool,
frequency_traceable: bool,
time_source: TimeSource,
) -> Self {
TimePropertiesDS {
current_utc_offset: None,
leap_indicator: LeapIndicator::NoLeap,
time_traceable,
frequency_traceable,
ptp_timescale: false,
time_source,
}
}
pub fn is_ptp(&self) -> bool {
self.ptp_timescale
}
pub fn leap_indicator(&self) -> LeapIndicator {
self.leap_indicator
}
pub fn utc_offset(&self) -> Option<i16> {
self.current_utc_offset
}
}