use crate::binrw_util;
use binrw::binrw;
use super::pvt_geodetic::{PvtError, PvtMode, PvtModeFlags};
#[binrw]
#[derive(Clone, Debug)]
pub struct PosCovGeodetic {
#[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>,
mode_raw: u8,
error_raw: u8,
#[br(map = binrw_util::map_f4)]
#[bw(map = binrw_util::unmap_f4)]
pub cov_latlat: Option<f32>,
#[br(map = binrw_util::map_f4)]
#[bw(map = binrw_util::unmap_f4)]
pub cov_lonlon: Option<f32>,
#[br(map = binrw_util::map_f4)]
#[bw(map = binrw_util::unmap_f4)]
pub cov_hgthgt: Option<f32>,
#[br(map = binrw_util::map_f4)]
#[bw(map = binrw_util::unmap_f4)]
pub cov_bb: Option<f32>,
#[br(map = binrw_util::map_f4)]
#[bw(map = binrw_util::unmap_f4)]
pub cov_latlon: Option<f32>,
#[br(map = binrw_util::map_f4)]
#[bw(map = binrw_util::unmap_f4)]
pub cov_lathgt: Option<f32>,
#[br(map = binrw_util::map_f4)]
#[bw(map = binrw_util::unmap_f4)]
pub cov_latb: Option<f32>,
#[br(map = binrw_util::map_f4)]
#[bw(map = binrw_util::unmap_f4)]
pub cov_lonhgt: Option<f32>,
#[br(map = binrw_util::map_f4)]
#[bw(map = binrw_util::unmap_f4)]
pub cov_lonb: Option<f32>,
#[br(map = binrw_util::map_f4)]
#[bw(map = binrw_util::unmap_f4)]
pub cov_hb: Option<f32>,
}
impl PosCovGeodetic {
pub fn pvt_mode(&self) -> PvtMode {
PvtMode::from(self.mode_raw)
}
pub fn mode_flags(&self) -> PvtModeFlags {
PvtModeFlags::from_bits_truncate(self.mode_raw)
}
pub fn error(&self) -> PvtError {
PvtError::from(self.error_raw)
}
}