use crate::{Error, FixedField};
#[derive(Clone, Copy, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub enum ArspType {
ClassC,
ControlArea,
TerminalControlArea,
RadarZone,
ClassB,
RadioMandatoryZone,
TransponderMandatoryZone,
ControlZone,
}
impl FixedField<'_> for ArspType {
const LENGTH: usize = 1;
fn from_bytes(bytes: &'_ [u8]) -> Result<Self, Error> {
match bytes[0] {
b'A' => Ok(Self::ClassC),
b'C' => Ok(Self::ControlArea),
b'M' => Ok(Self::TerminalControlArea),
b'R' => Ok(Self::RadarZone),
b'T' => Ok(Self::ClassB),
b'U' => Ok(Self::RadioMandatoryZone),
b'V' => Ok(Self::TransponderMandatoryZone),
b'Z' => Ok(Self::ControlZone),
b'K' => Ok(Self::ControlArea),
byte => Err(Error::InvalidCharacter {
field: "Controlled Airspace Type",
byte,
expected: "ARSP TYPE according to ARINC 424-23 5.213",
}),
}
}
}