ebyte_e32/parameters/option/
transmission_power.rs1use crate::parameters::error::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 TransmissionPower {
10 #[default]
11 Dbm30,
12 Dbm27,
13 Dbm24,
14 Dbm21,
15}
16
17impl TryFrom<u8> for TransmissionPower {
18 type Error = Error;
19
20 fn try_from(value: u8) -> Result<Self, Self::Error> {
21 match value {
22 0 => Ok(Self::Dbm30),
23 1 => Ok(Self::Dbm27),
24 2 => Ok(Self::Dbm24),
25 3 => Ok(Self::Dbm21),
26 _ => Err(Error::InvalidTransmissionPower { value }),
27 }
28 }
29}
30
31impl From<TransmissionPower> for u8 {
32 fn from(power: TransmissionPower) -> Self {
33 match power {
34 TransmissionPower::Dbm30 => 0,
35 TransmissionPower::Dbm27 => 1,
36 TransmissionPower::Dbm24 => 2,
37 TransmissionPower::Dbm21 => 3,
38 }
39 }
40}