1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
/// SMPS maximum drive capability.
///
/// Argument of [`set_smps_drv`](super::SubGhz::set_smps_drv).
#[derive(Debug, Default, PartialEq, Eq, Ord, PartialOrd, Clone, Copy)]
#[cfg_attr(feature = "defmt", derive(defmt::Format))]
#[repr(u8)]
pub enum SmpsDrv {
    /// 20 mA
    Milli20 = 0x0,
    /// 40 mA
    Milli40 = 0x1,
    /// 60 mA
    Milli60 = 0x2,
    /// 100 mA (default)
    #[default]
    Milli100 = 0x3,
}

impl SmpsDrv {
    /// Get the SMPS drive value as milliamps.
    ///
    /// # Example
    ///
    /// ```
    /// use stm32wlxx_hal::subghz::SmpsDrv;
    ///
    /// assert_eq!(SmpsDrv::Milli20.as_milliamps(), 20);
    /// assert_eq!(SmpsDrv::Milli40.as_milliamps(), 40);
    /// assert_eq!(SmpsDrv::Milli60.as_milliamps(), 60);
    /// assert_eq!(SmpsDrv::Milli100.as_milliamps(), 100);
    /// ```
    pub const fn as_milliamps(&self) -> u8 {
        match self {
            SmpsDrv::Milli20 => 20,
            SmpsDrv::Milli40 => 40,
            SmpsDrv::Milli60 => 60,
            SmpsDrv::Milli100 => 100,
        }
    }
}