aboutsummaryrefslogtreecommitdiff
path: root/embassy-net-enc28j60/src/traits.rs
diff options
context:
space:
mode:
Diffstat (limited to 'embassy-net-enc28j60/src/traits.rs')
-rw-r--r--embassy-net-enc28j60/src/traits.rs57
1 files changed, 57 insertions, 0 deletions
diff --git a/embassy-net-enc28j60/src/traits.rs b/embassy-net-enc28j60/src/traits.rs
new file mode 100644
index 000000000..08f94045a
--- /dev/null
+++ b/embassy-net-enc28j60/src/traits.rs
@@ -0,0 +1,57 @@
1use core::ops::Range;
2
3pub(crate) trait OffsetSize {
4 fn offset(self) -> u8;
5 fn size(self) -> u8;
6}
7
8impl OffsetSize for u8 {
9 fn offset(self) -> u8 {
10 self
11 }
12
13 fn size(self) -> u8 {
14 1
15 }
16}
17
18impl OffsetSize for Range<u8> {
19 fn offset(self) -> u8 {
20 self.start
21 }
22
23 fn size(self) -> u8 {
24 self.end - self.start
25 }
26}
27
28pub(crate) trait U16Ext {
29 fn from_parts(low: u8, high: u8) -> Self;
30
31 fn low(self) -> u8;
32
33 fn high(self) -> u8;
34}
35
36impl U16Ext for u16 {
37 fn from_parts(low: u8, high: u8) -> u16 {
38 ((high as u16) << 8) + low as u16
39 }
40
41 fn low(self) -> u8 {
42 (self & 0xff) as u8
43 }
44
45 fn high(self) -> u8 {
46 (self >> 8) as u8
47 }
48}
49
50#[derive(Clone, Copy)]
51pub struct Mask;
52
53#[derive(Clone, Copy)]
54pub struct R;
55
56#[derive(Clone, Copy)]
57pub struct W;