1use nom;
16
17#[derive(Eq, PartialEq, Copy, Clone, Debug)]
18pub enum Copy {
19 ToPrimary,
20 FromPrimary,
21 ToSecondary,
22 FromSecondary,
23 StopPrimary,
24 StartPrimary,
25 StopSecondary,
26 StartSecondary,
27}
28
29impl Copy {
30 #[inline]
31 pub fn parse<'a>(value: u32) -> Result<Self, nom::ErrorKind> {
32 match value {
33 0 => Ok(Copy::ToPrimary),
34 1 => Ok(Copy::FromPrimary),
35 2 => Ok(Copy::ToSecondary),
36 3 => Ok(Copy::FromSecondary),
37 4 => Ok(Copy::StopPrimary),
38 5 => Ok(Copy::StartPrimary),
39 6 => Ok(Copy::StopSecondary),
40 7 => Ok(Copy::StartSecondary),
41 _ => Err(nom::ErrorKind::Custom(9005)),
42 }
43 }
44}
45
46impl Into<u32> for Copy {
47 #[inline]
48 fn into(self) -> u32 {
49 match self {
50 Copy::ToPrimary => 0,
51 Copy::FromPrimary => 1,
52 Copy::ToSecondary => 2,
53 Copy::FromSecondary => 3,
54 Copy::StopPrimary => 4,
55 Copy::StartPrimary => 5,
56 Copy::StopSecondary => 6,
57 Copy::StartSecondary => 7,
58 }
59 }
60}