use crate::binrw_util;
use binrw::binrw;
#[binrw]
#[derive(Clone, Debug)]
pub struct ReceiverTime {
#[br(map = binrw_util::map_u4)]
#[bw(map = binrw_util::unmap_u4)]
pub tow: Option<u32>,
#[br(map = binrw_util::map_u2)]
#[bw(map = binrw_util::unmap_u2)]
pub wnc: Option<u16>,
#[br(map = binrw_util::map_i1)]
#[bw(map = binrw_util::unmap_i1)]
pub utc_year: Option<i8>,
#[br(map = binrw_util::map_i1)]
#[bw(map = binrw_util::unmap_i1)]
pub utc_month: Option<i8>,
#[br(map = binrw_util::map_i1)]
#[bw(map = binrw_util::unmap_i1)]
pub utc_day: Option<i8>,
#[br(map = binrw_util::map_i1)]
#[bw(map = binrw_util::unmap_i1)]
pub utc_hour: Option<i8>,
#[br(map = binrw_util::map_i1)]
#[bw(map = binrw_util::unmap_i1)]
pub utc_min: Option<i8>,
#[br(map = binrw_util::map_i1)]
#[bw(map = binrw_util::unmap_i1)]
pub utc_sec: Option<i8>,
#[br(map = binrw_util::map_i1)]
#[bw(map = binrw_util::unmap_i1)]
pub delta_ls: Option<i8>,
pub sync_level: u8,
}
impl ReceiverTime {
pub fn wn_set(&self) -> bool {
self.sync_level & 1 != 0
}
pub fn tow_set(&self) -> bool {
self.sync_level & (1 << 1) != 0
}
pub fn fine_time(&self) -> bool {
self.sync_level & (1 << 2) != 0
}
}