use binrw::binrw;
#[binrw]
#[derive(Debug)]
pub struct DOP {
#[br(map = |x: u32| if x == crate::DO_NOT_USE_U4 { None } else { Some(x) })]
pub tow: Option<u32>,
#[br(map = |x: u16| if x == crate::DO_NOT_USE_U2 { None } else { Some(x) })]
pub wnc: Option<u16>,
#[br(map = |x: u8| if x == 0 { None } else { Some(x) })]
pub nr_sv: Option<u8>,
pub reserved: u8,
#[br(map = |x: u16| if x == 0 { None } else { Some(x) })]
pub pdop: Option<u16>,
#[br(map = |x: u16| if x == 0 { None } else { Some(x) })]
pub tdop: Option<u16>,
#[br(map = |x: u16| if x == 0 { None } else { Some(x) })]
pub hdop: Option<u16>,
#[br(map = |x: u16| if x == 0 { None } else { Some(x) })]
pub vdop: Option<u16>,
#[br(map = |x: f32| if x == crate::DO_NOT_USE_F4 { None } else { Some(x) })]
pub hpl: Option<f32>,
#[br(map = |x: f32| if x == crate::DO_NOT_USE_F4 { None } else { Some(x) })]
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)
}
}