1#![no_std]
2
3use core::ops::Not;
4
5pub mod callback;
6pub mod header;
7pub mod message;
8pub mod pdo;
9pub mod sink;
10pub mod source;
11pub mod token;
12
13pub type Instant = fugit::Instant<u64, 1, 1000>;
14pub type Duration = fugit::Duration<u64, 1, 1000>;
15
16#[derive(Clone, Copy, PartialEq, Eq)]
17pub enum CcPin {
18 CC1,
19 CC2,
20}
21
22impl Not for CcPin {
23 type Output = CcPin;
24
25 fn not(self) -> Self::Output {
26 match self {
27 CcPin::CC1 => CcPin::CC2,
28 CcPin::CC2 => CcPin::CC1,
29 }
30 }
31}
32
33#[derive(Clone, Copy)]
34pub enum PowerRole {
35 Source,
36 Sink,
37}
38
39impl From<bool> for PowerRole {
40 fn from(value: bool) -> Self {
41 match value {
42 false => Self::Sink,
43 true => Self::Source,
44 }
45 }
46}
47
48impl From<PowerRole> for bool {
49 fn from(role: PowerRole) -> bool {
50 match role {
51 PowerRole::Sink => false,
52 PowerRole::Source => true,
53 }
54 }
55}
56
57#[derive(Clone, Copy)]
58pub enum DataRole {
59 Ufp,
60 Dfp,
61}
62
63impl From<bool> for DataRole {
64 fn from(value: bool) -> Self {
65 match value {
66 false => Self::Ufp,
67 true => Self::Dfp,
68 }
69 }
70}
71
72impl From<DataRole> for bool {
73 fn from(role: DataRole) -> bool {
74 match role {
75 DataRole::Ufp => false,
76 DataRole::Dfp => true,
77 }
78 }
79}