use bitflags::bitflags;
#[cfg(feature = "serde")]
use super::SerializeUbxPacketFields;
#[cfg(feature = "serde")]
use crate::serde::ser::SerializeMap;
use crate::{
error::ParserError, ubx_checksum, ubx_packets::packets::ScaleBack, MemWriter, MemWriterError,
UbxPacketCreator, UbxPacketMeta,
};
use ublox_derive::{ubx_extend, ubx_extend_bitflags, ubx_packet_recv_send};
#[ubx_packet_recv_send]
#[ubx(
class = 0x06,
id = 0x3d,
fixed_payload_len = 28,
flags = "default_for_builder"
)]
struct CfgTmode2 {
#[ubx(map_type = CfgTModeModes, may_fail)]
time_transfer_mode: u8,
reserved1: u8,
#[ubx(map_type = CfgTmode2Flags)]
flags: u16,
#[ubx(map_type = f64, scale = 1e-2)]
ecef_x_or_lat: i32,
#[ubx(map_type = f64, scale = 1e-2)]
ecef_y_or_lon: i32,
#[ubx(map_type = f64, scale = 1e-2)]
ecef_z_or_alt: i32,
#[ubx(map_type = f64, scale = 1e-3)]
fixed_pos_acc: u32,
survey_in_min_duration: u32,
#[ubx(map_type = f64, scale = 1e-3)]
survey_in_accur_limit: u32,
}
#[derive(Default)]
#[ubx_extend]
#[ubx(from_unchecked, into_raw, rest_error)]
#[repr(u8)]
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
#[cfg_attr(feature = "serde", derive(serde::Deserialize))]
pub enum CfgTModeModes {
#[default]
Disabled = 0,
SurveyIn = 1,
Fixed = 2,
}
#[ubx_extend_bitflags]
#[ubx(from, into_raw, rest_reserved)]
bitflags! {
#[derive(Default, Debug)]
pub struct CfgTmode2Flags :u16 {
const LLA = 0x01;
const ALT_INVALID = 0x02;
}
}