ebyte_e32/parameters/
air_baudrate.rs1use super::Error;
2
3#[cfg(feature = "value_enum")]
4use clap::ValueEnum;
5
6#[derive(Copy, Clone, Debug, PartialEq, Eq, Default)]
7#[cfg_attr(test, derive(proptest_derive::Arbitrary))]
8#[cfg_attr(feature = "value_enum", derive(ValueEnum))]
9pub enum AirBaudRate {
10 Bps300,
11 Bps1200,
12 #[default]
13 Bps2400,
14 Bps4800,
15 Bps9600,
16 Bps19200,
17}
18
19impl TryFrom<u8> for AirBaudRate {
20 type Error = super::Error;
21
22 fn try_from(value: u8) -> Result<Self, Self::Error> {
23 match value {
24 0 => Ok(Self::Bps300),
25 1 => Ok(Self::Bps1200),
26 2 => Ok(Self::Bps2400),
27 3 => Ok(Self::Bps4800),
28 4 => Ok(Self::Bps9600),
29 5 | 6 | 7 => Ok(Self::Bps19200),
30 _ => Err(Error::InvalidBaudrate { rate: value }),
31 }
32 }
33}
34
35impl From<AirBaudRate> for u8 {
36 fn from(rate: AirBaudRate) -> Self {
37 match rate {
38 AirBaudRate::Bps300 => 0,
39 AirBaudRate::Bps1200 => 1,
40 AirBaudRate::Bps2400 => 2,
41 AirBaudRate::Bps4800 => 3,
42 AirBaudRate::Bps9600 => 4,
43 AirBaudRate::Bps19200 => 5,
44 }
45 }
46}