1use fidl_fuchsia_bluetooth_hfp as fidl;
6
7#[derive(Clone, Copy, Debug, PartialEq)]
10pub enum Code {
11 One,
12 Two,
13 Three,
14 Four,
15 Five,
16 Six,
17 Seven,
18 Eight,
19 Nine,
20 NumberSign,
21 Zero,
22 Asterisk,
23 A,
24 B,
25 C,
26 D,
27}
28
29impl TryFrom<&str> for Code {
30 type Error = ();
31 fn try_from(x: &str) -> Result<Self, Self::Error> {
32 match x {
33 "1" => Ok(Self::One),
34 "2" => Ok(Self::Two),
35 "3" => Ok(Self::Three),
36 "4" => Ok(Self::Four),
37 "5" => Ok(Self::Five),
38 "6" => Ok(Self::Six),
39 "7" => Ok(Self::Seven),
40 "8" => Ok(Self::Eight),
41 "9" => Ok(Self::Nine),
42 "#" => Ok(Self::NumberSign),
43 "0" => Ok(Self::Zero),
44 "*" => Ok(Self::Asterisk),
45 "A" => Ok(Self::A),
46 "B" => Ok(Self::B),
47 "C" => Ok(Self::C),
48 "D" => Ok(Self::D),
49 _ => Err(()),
50 }
51 }
52}
53
54impl From<Code> for String {
55 fn from(x: Code) -> Self {
56 match x {
57 Code::One => String::from("1"),
58 Code::Two => String::from("2"),
59 Code::Three => String::from("3"),
60 Code::Four => String::from("4"),
61 Code::Five => String::from("5"),
62 Code::Six => String::from("6"),
63 Code::Seven => String::from("7"),
64 Code::Eight => String::from("8"),
65 Code::Nine => String::from("9"),
66 Code::NumberSign => String::from("#"),
67 Code::Zero => String::from("0"),
68 Code::Asterisk => String::from("*"),
69 Code::A => String::from("A"),
70 Code::B => String::from("B"),
71 Code::C => String::from("C"),
72 Code::D => String::from("D"),
73 }
74 }
75}
76
77impl From<fidl::DtmfCode> for Code {
78 fn from(x: fidl::DtmfCode) -> Self {
79 match x {
80 fidl::DtmfCode::One => Self::One,
81 fidl::DtmfCode::Two => Self::Two,
82 fidl::DtmfCode::Three => Self::Three,
83 fidl::DtmfCode::Four => Self::Four,
84 fidl::DtmfCode::Five => Self::Five,
85 fidl::DtmfCode::Six => Self::Six,
86 fidl::DtmfCode::Seven => Self::Seven,
87 fidl::DtmfCode::Eight => Self::Eight,
88 fidl::DtmfCode::Nine => Self::Nine,
89 fidl::DtmfCode::NumberSign => Self::NumberSign,
90 fidl::DtmfCode::Zero => Self::Zero,
91 fidl::DtmfCode::Asterisk => Self::Asterisk,
92 fidl::DtmfCode::A => Self::A,
93 fidl::DtmfCode::B => Self::B,
94 fidl::DtmfCode::C => Self::C,
95 fidl::DtmfCode::D => Self::D,
96 }
97 }
98}
99
100impl From<Code> for fidl::DtmfCode {
101 fn from(x: Code) -> Self {
102 match x {
103 Code::One => Self::One,
104 Code::Two => Self::Two,
105 Code::Three => Self::Three,
106 Code::Four => Self::Four,
107 Code::Five => Self::Five,
108 Code::Six => Self::Six,
109 Code::Seven => Self::Seven,
110 Code::Eight => Self::Eight,
111 Code::Nine => Self::Nine,
112 Code::NumberSign => Self::NumberSign,
113 Code::Zero => Self::Zero,
114 Code::Asterisk => Self::Asterisk,
115 Code::A => Self::A,
116 Code::B => Self::B,
117 Code::C => Self::C,
118 Code::D => Self::D,
119 }
120 }
121}