use crate::{Error, FixedField};
#[derive(Clone, Copy, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub enum RestrictiveType {
Alert,
Caution,
Danger,
LongTermTFR,
MOA,
NationalSecurityArea,
Prohibited,
Restricted,
Training,
Warning,
UnspecifiedOrUnknown,
}
impl FixedField<'_> for RestrictiveType {
const LENGTH: usize = 1;
fn from_bytes(bytes: &'_ [u8]) -> Result<Self, Error> {
match bytes[0] {
b'A' => Ok(Self::Alert),
b'C' => Ok(Self::Caution),
b'D' => Ok(Self::Danger),
b'L' => Ok(Self::LongTermTFR),
b'M' => Ok(Self::MOA),
b'N' => Ok(Self::NationalSecurityArea),
b'P' => Ok(Self::Prohibited),
b'R' => Ok(Self::Restricted),
b'T' => Ok(Self::Training),
b'W' => Ok(Self::Warning),
b'U' => Ok(Self::UnspecifiedOrUnknown),
b'G' => Ok(Self::Restricted),
byte => Err(Error::InvalidCharacter {
field: "Restrictive Airspace Type",
byte,
expected: "RESTRICTIVE TYPE according to ARINC 424-23 5.128",
}),
}
}
}