From 0036b11f48f224e40a49f239d38a00f3e599b3b2 Mon Sep 17 00:00:00 2001 From: Robert Zieba Date: Fri, 21 Feb 2025 11:11:03 -0700 Subject: [PATCH] Add type-C current definition --- src/lib.rs | 1 + src/type_c.rs | 29 +++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+) create mode 100644 src/type_c.rs 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, + } + } +}