use crate::binrw_util;
use binrw::binrw;
#[binrw]
#[derive(Clone, Debug)]
pub struct DOP {
#[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_u1_zero)]
#[bw(map = binrw_util::unmap_u1_zero)]
pub nr_sv: Option<u8>,
pub reserved: u8,
#[br(map = binrw_util::map_u2_zero)]
#[bw(map = binrw_util::unmap_u2_zero)]
pub pdop: Option<u16>,
#[br(map = binrw_util::map_u2_zero)]
#[bw(map = binrw_util::unmap_u2_zero)]
pub tdop: Option<u16>,
#[br(map = binrw_util::map_u2_zero)]
#[bw(map = binrw_util::unmap_u2_zero)]
pub hdop: Option<u16>,
#[br(map = binrw_util::map_u2_zero)]
#[bw(map = binrw_util::unmap_u2_zero)]
pub vdop: Option<u16>,
#[br(map = binrw_util::map_f4)]
#[bw(map = binrw_util::unmap_f4)]
pub hpl: Option<f32>,
#[br(map = binrw_util::map_f4)]
#[bw(map = binrw_util::unmap_f4)]
pub vpl: Option<f32>,
}
impl DOP {
pub fn pdop_value(&self) -> Option<f64> {
self.pdop.map(|v| f64::from(v) / 100.0)
}
pub fn tdop_value(&self) -> Option<f64> {
self.tdop.map(|v| f64::from(v) / 100.0)
}
pub fn hdop_value(&self) -> Option<f64> {
self.hdop.map(|v| f64::from(v) / 100.0)
}
pub fn vdop_value(&self) -> Option<f64> {
self.vdop.map(|v| f64::from(v) / 100.0)
}
}