control_code/csi/
disposition.rs1use nom;
16
17#[derive(Eq, PartialEq, Copy, Clone, Debug)]
18pub enum Disposition {
19 ToHome,
20 ToHomeWithLeader,
21 Center,
22 CenterWithLeader,
23 ToLimit,
24 ToLimitWithLeader,
25 ToBoth,
26}
27
28impl Disposition {
29 #[inline]
30 pub fn parse<'a>(value: u32) -> Result<Self, nom::ErrorKind> {
31 match value {
32 0 => Ok(Disposition::ToHome),
33 1 => Ok(Disposition::ToHomeWithLeader),
34 2 => Ok(Disposition::Center),
35 3 => Ok(Disposition::CenterWithLeader),
36 4 => Ok(Disposition::ToLimit),
37 5 => Ok(Disposition::ToLimitWithLeader),
38 6 => Ok(Disposition::ToBoth),
39 _ => Err(nom::ErrorKind::Custom(9002)),
40 }
41 }
42}
43
44impl Into<u32> for Disposition {
45 #[inline]
46 fn into(self) -> u32 {
47 match self {
48 Disposition::ToHome => 0,
49 Disposition::ToHomeWithLeader => 1,
50 Disposition::Center => 2,
51 Disposition::CenterWithLeader => 3,
52 Disposition::ToLimit => 4,
53 Disposition::ToLimitWithLeader => 5,
54 Disposition::ToBoth => 6,
55 }
56 }
57}