use crate::{Error, FixedField};
#[derive(Clone, Copy, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub enum WaypointUsage {
HiLoAltitude,
HiAltitude,
LoAltitude,
TerminalOnly,
}
impl FixedField<'_> for WaypointUsage {
const LENGTH: usize = 1;
fn from_bytes(bytes: &[u8]) -> Result<Self, Error> {
match &bytes[0] {
b'B' => Ok(Self::HiLoAltitude),
b'H' => Ok(Self::HiAltitude),
b'L' => Ok(Self::LoAltitude),
b' ' => Ok(Self::TerminalOnly),
_ => Err(Error::InvalidVariant {
field: "Waypoint Usage",
bytes: Vec::from(bytes),
expected: "according to ARINC 424-17 5.82",
}),
}
}
}