use crate::binrw_util;
use alloc::vec::Vec;
use binrw::binrw;
#[binrw]
#[derive(Clone, Debug)]
pub struct MeasExtra {
#[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>,
pub n: u8,
pub sb_length: u8,
pub doppler_var_factor: f32,
#[br(args { count: usize::from(n), inner: (usize::from(sb_length),) }, map = binrw_util::unwrap_subblocks)]
#[bw(args_raw = (usize::from(*sb_length),), map = binrw_util::wrap_subblocks)]
pub channel_sub: Vec<MeasExtraChannelSub>,
}
#[binrw]
#[derive(Clone, Debug)]
pub struct MeasExtraChannelSub {
pub rx_channel: u8,
pub type_field: u8,
pub mp_correction: i16,
pub smoothing_corr: i16,
#[br(map = binrw_util::map_u2)]
#[bw(map = binrw_util::unmap_u2)]
pub code_var: Option<u16>,
#[br(map = binrw_util::map_u2)]
#[bw(map = binrw_util::unmap_u2)]
pub carrier_var: Option<u16>,
#[br(map = binrw_util::map_u2)]
#[bw(map = binrw_util::unmap_u2)]
pub lock_time: Option<u16>,
pub cum_loss_cont: u8,
pub car_mp_corr: i8,
pub info: u8,
pub misc: u8,
}