#[derive(Debug)]
pub enum GpsDataByte {
MsbPadded(u8),
LsbPadded(u8),
Byte(u8),
}
impl core::fmt::LowerExp for GpsDataByte {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::MsbPadded(value) => write!(f, "0x{:02}X", value),
Self::LsbPadded(value) => write!(f, "0x{:02}X", (value << 2)),
Self::Byte(value) => write!(f, "0x{:02}X", value),
}
}
}
impl GpsDataByte {
pub fn msb_padded(byte: u8) -> Self {
Self::MsbPadded(byte & 0x3f)
}
pub fn lsb_padded(byte: u8) -> Self {
Self::LsbPadded((byte & 0xfc) >> 2)
}
}