use crate::{Error, FixedField};
#[derive(Clone, Copy, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub enum NameInd {
AbeamFix,
BearingDistanceFix,
AirportNameAsFix,
FIRFix,
PhoneticLetterNameFix,
AirportIdentFix,
LatitudeLongitudeFix,
MultipleWordNameFix,
NavaidIdentFix,
PublishedFiveLetterNameFix,
PublishedNameFixLessThanFiveLetters,
PublishedNameFixMoreThanFiveLetters,
AirportRwyRelatedFix,
UIRFix,
VFRReportingPointFix,
LocalizerMarkerWithPublishedFiveLetter,
LocalizerMarkerWithoutPublishedFiveLetter,
}
impl FixedField<'_> for NameInd {
const LENGTH: usize = 3;
fn from_bytes(bytes: &'_ [u8]) -> Result<Self, Error> {
match &bytes[0..3] {
b"A " => Ok(Self::AbeamFix),
b"B " => Ok(Self::BearingDistanceFix),
b"D " => Ok(Self::AirportNameAsFix),
b"F " => Ok(Self::FIRFix),
b"H " => Ok(Self::PhoneticLetterNameFix),
b"I " => Ok(Self::AirportIdentFix),
b"L " => Ok(Self::LatitudeLongitudeFix),
b"M " => Ok(Self::MultipleWordNameFix),
b"N " => Ok(Self::NavaidIdentFix),
b"P " => Ok(Self::PublishedFiveLetterNameFix),
b"Q " => Ok(Self::PublishedNameFixLessThanFiveLetters),
b"R " => Ok(Self::PublishedNameFixMoreThanFiveLetters),
b"T " => Ok(Self::AirportRwyRelatedFix),
b"U " => Ok(Self::UIRFix),
b"V " => Ok(Self::VFRReportingPointFix),
b" O " => Ok(Self::LocalizerMarkerWithPublishedFiveLetter),
b" M " => Ok(Self::LocalizerMarkerWithoutPublishedFiveLetter),
_ => Err(Error::InvalidVariant {
field: "Name Format Indicator",
bytes: Vec::from(bytes),
expected: "according to ARINC 424-17 5.196",
}),
}
}
}