diff --git a/src/lib.rs b/src/lib.rs index dba2f3f..1617f7b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2,6 +2,7 @@ pub mod asynchronous; pub mod pdo; +pub mod type_c; /// Port ID new type #[derive(Copy, Clone, Debug, PartialEq, Eq)] diff --git a/src/type_c.rs b/src/type_c.rs new file mode 100644 index 0000000..f65b6f0 --- /dev/null +++ b/src/type_c.rs @@ -0,0 +1,29 @@ +/// Type-C current +#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)] +#[cfg_attr(feature = "defmt", derive(defmt::Format))] +pub enum Current { + /// Default USB current + #[default] + UsbDefault, + /// 1.5A + Current1A5, + /// 3A0 + Current3A0, +} + +impl Current { + /// Returns the current in mA + pub fn to_ma(self, is_usb2: bool) -> u16 { + match self { + Current::UsbDefault => { + if is_usb2 { + 500 + } else { + 900 + } + } + Current::Current1A5 => 1500, + Current::Current3A0 => 3000, + } + } +}