hardware_registers/
spi.rs1pub use crate::register_address::{RegisterAddress, RegisterAddress16, RegisterAddress8};
4use crate::sizes::{RegisterSizeInformation, R1, R2};
5use crate::{FromBits, HardwareRegister, ToBits, WritableHardwareRegister};
6
7pub trait SPIRegister<R, Size>:
9 HardwareRegister<Size> + ToBits<Target = Self::Backing> + FromBits<Self::Backing>
10where
11 R: RegisterAddress,
12 Size: RegisterSizeInformation,
13{
14 const REGISTER_ADDRESS: R;
16
17 type Backing;
19}
20
21pub trait WritableSPIRegister<R, Size>:
23 SPIRegister<R, Size> + WritableHardwareRegister<Size>
24where
25 R: RegisterAddress,
26 Size: RegisterSizeInformation,
27{
28}
29
30impl<I, R, Size> WritableSPIRegister<R, Size> for I
32where
33 I: SPIRegister<R, Size> + WritableHardwareRegister<Size>,
34 R: RegisterAddress,
35 Size: RegisterSizeInformation,
36{
37}
38
39pub trait SPIRegister8:
41 SPIRegister<RegisterAddress8, R1, Backing = u8>
42 + HardwareRegister<R1>
43 + Copy
44 + Clone
45 + ToBits<Target = u8>
46 + FromBits<u8>
47{
48}
49
50pub trait WritableSPIRegister8:
52 WritableSPIRegister<RegisterAddress8, R1> + WritableHardwareRegister<R1> + Copy + Clone
53{
54}
55
56pub trait SPIRegister16:
58 SPIRegister<RegisterAddress16, R2> + HardwareRegister<R2> + Copy + Clone
59{
60}
61
62pub trait WritableSPIRegister16:
64 WritableSPIRegister<RegisterAddress16, R2> + WritableHardwareRegister<R2> + Copy + Clone
65{
66}
67
68impl<I> SPIRegister8 for I where
70 I: SPIRegister<RegisterAddress8, R1, Backing = u8>
71 + HardwareRegister<R1>
72 + Copy
73 + Clone
74 + ToBits<Target = u8>
75 + FromBits<u8>
76{
77}
78
79impl<I> WritableSPIRegister8 for I where
81 I: WritableSPIRegister<RegisterAddress8, R1> + WritableHardwareRegister<R1> + Copy + Clone
82{
83}
84
85impl<I> SPIRegister16 for I where
87 I: SPIRegister<RegisterAddress16, R2> + HardwareRegister<R2> + Copy + Clone
88{
89}
90
91impl<I> WritableSPIRegister16 for I where
93 I: WritableSPIRegister<RegisterAddress16, R2> + WritableHardwareRegister<R2> + Copy + Clone
94{
95}