aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlf Lilleengen <[email protected]>2021-06-08 13:10:58 +0200
committerUlf Lilleengen <[email protected]>2021-06-08 17:20:29 +0200
commit939ea3bbd0bb41a1deed3ac27ca3974db0f7d043 (patch)
tree856e10ec68e28b3e53376418bf5ac1ba0066b81e
parented29d820719a18afd708e2a54585425ab70db82e (diff)
Reduce generics noise
-rw-r--r--embassy-stm32/src/spi/mod.rs4
-rw-r--r--embassy-stm32/src/spi/v1.rs15
-rw-r--r--embassy-stm32/src/spi/v2.rs15
-rw-r--r--embassy-stm32/src/spi/v3.rs15
4 files changed, 23 insertions, 26 deletions
diff --git a/embassy-stm32/src/spi/mod.rs b/embassy-stm32/src/spi/mod.rs
index 730169ec0..9b04c03aa 100644
--- a/embassy-stm32/src/spi/mod.rs
+++ b/embassy-stm32/src/spi/mod.rs
@@ -4,7 +4,7 @@
4#[cfg_attr(spi_v2, path = "v2.rs")] 4#[cfg_attr(spi_v2, path = "v2.rs")]
5#[cfg_attr(spi_v3, path = "v3.rs")] 5#[cfg_attr(spi_v3, path = "v3.rs")]
6mod _version; 6mod _version;
7use crate::peripherals; 7use crate::{peripherals, rcc::RccPeripheral};
8pub use _version::*; 8pub use _version::*;
9 9
10use crate::gpio::Pin; 10use crate::gpio::Pin;
@@ -64,7 +64,7 @@ pub(crate) mod sealed {
64 } 64 }
65} 65}
66 66
67pub trait Instance: sealed::Instance + 'static {} 67pub trait Instance: sealed::Instance + RccPeripheral + 'static {}
68 68
69pub trait SckPin<T: Instance>: sealed::SckPin<T> + 'static {} 69pub trait SckPin<T: Instance>: sealed::SckPin<T> + 'static {}
70 70
diff --git a/embassy-stm32/src/spi/v1.rs b/embassy-stm32/src/spi/v1.rs
index a4e4c0ba1..227a36a89 100644
--- a/embassy-stm32/src/spi/v1.rs
+++ b/embassy-stm32/src/spi/v1.rs
@@ -2,7 +2,6 @@
2 2
3use crate::gpio::{sealed::Pin, AnyPin}; 3use crate::gpio::{sealed::Pin, AnyPin};
4use crate::pac::spi; 4use crate::pac::spi;
5use crate::rcc::RccPeripheral;
6use crate::spi::{ByteOrder, Config, Error, Instance, MisoPin, MosiPin, SckPin, WordSize}; 5use crate::spi::{ByteOrder, Config, Error, Instance, MisoPin, MosiPin, SckPin, WordSize};
7use crate::time::Hertz; 6use crate::time::Hertz;
8use core::marker::PhantomData; 7use core::marker::PhantomData;
@@ -20,7 +19,7 @@ impl WordSize {
20 } 19 }
21} 20}
22 21
23pub struct Spi<'d, T: Instance + RccPeripheral> { 22pub struct Spi<'d, T: Instance> {
24 sck: AnyPin, 23 sck: AnyPin,
25 mosi: AnyPin, 24 mosi: AnyPin,
26 miso: AnyPin, 25 miso: AnyPin,
@@ -28,7 +27,7 @@ pub struct Spi<'d, T: Instance + RccPeripheral> {
28 phantom: PhantomData<&'d mut T>, 27 phantom: PhantomData<&'d mut T>,
29} 28}
30 29
31impl<'d, T: Instance + RccPeripheral> Spi<'d, T> { 30impl<'d, T: Instance> Spi<'d, T> {
32 pub fn new<F>( 31 pub fn new<F>(
33 pclk: Hertz, 32 pclk: Hertz,
34 _peri: impl Unborrow<Target = T> + 'd, 33 _peri: impl Unborrow<Target = T> + 'd,
@@ -131,7 +130,7 @@ impl<'d, T: Instance + RccPeripheral> Spi<'d, T> {
131 } 130 }
132} 131}
133 132
134impl<'d, T: Instance + RccPeripheral> Drop for Spi<'d, T> { 133impl<'d, T: Instance> Drop for Spi<'d, T> {
135 fn drop(&mut self) { 134 fn drop(&mut self) {
136 unsafe { 135 unsafe {
137 self.sck.set_as_analog(); 136 self.sck.set_as_analog();
@@ -141,7 +140,7 @@ impl<'d, T: Instance + RccPeripheral> Drop for Spi<'d, T> {
141 } 140 }
142} 141}
143 142
144impl<'d, T: Instance + RccPeripheral> embedded_hal::blocking::spi::Write<u8> for Spi<'d, T> { 143impl<'d, T: Instance> embedded_hal::blocking::spi::Write<u8> for Spi<'d, T> {
145 type Error = Error; 144 type Error = Error;
146 145
147 fn write(&mut self, words: &[u8]) -> Result<(), Self::Error> { 146 fn write(&mut self, words: &[u8]) -> Result<(), Self::Error> {
@@ -177,7 +176,7 @@ impl<'d, T: Instance + RccPeripheral> embedded_hal::blocking::spi::Write<u8> for
177 } 176 }
178} 177}
179 178
180impl<'d, T: Instance + RccPeripheral> embedded_hal::blocking::spi::Transfer<u8> for Spi<'d, T> { 179impl<'d, T: Instance> embedded_hal::blocking::spi::Transfer<u8> for Spi<'d, T> {
181 type Error = Error; 180 type Error = Error;
182 181
183 fn transfer<'w>(&mut self, words: &'w mut [u8]) -> Result<&'w [u8], Self::Error> { 182 fn transfer<'w>(&mut self, words: &'w mut [u8]) -> Result<&'w [u8], Self::Error> {
@@ -218,7 +217,7 @@ impl<'d, T: Instance + RccPeripheral> embedded_hal::blocking::spi::Transfer<u8>
218 } 217 }
219} 218}
220 219
221impl<'d, T: Instance + RccPeripheral> embedded_hal::blocking::spi::Write<u16> for Spi<'d, T> { 220impl<'d, T: Instance> embedded_hal::blocking::spi::Write<u16> for Spi<'d, T> {
222 type Error = Error; 221 type Error = Error;
223 222
224 fn write(&mut self, words: &[u16]) -> Result<(), Self::Error> { 223 fn write(&mut self, words: &[u16]) -> Result<(), Self::Error> {
@@ -254,7 +253,7 @@ impl<'d, T: Instance + RccPeripheral> embedded_hal::blocking::spi::Write<u16> fo
254 } 253 }
255} 254}
256 255
257impl<'d, T: Instance + RccPeripheral> embedded_hal::blocking::spi::Transfer<u16> for Spi<'d, T> { 256impl<'d, T: Instance> embedded_hal::blocking::spi::Transfer<u16> for Spi<'d, T> {
258 type Error = Error; 257 type Error = Error;
259 258
260 fn transfer<'w>(&mut self, words: &'w mut [u16]) -> Result<&'w [u16], Self::Error> { 259 fn transfer<'w>(&mut self, words: &'w mut [u16]) -> Result<&'w [u16], Self::Error> {
diff --git a/embassy-stm32/src/spi/v2.rs b/embassy-stm32/src/spi/v2.rs
index 8f91ca5a7..a7ac54cdd 100644
--- a/embassy-stm32/src/spi/v2.rs
+++ b/embassy-stm32/src/spi/v2.rs
@@ -4,7 +4,6 @@ use crate::gpio::{AnyPin, Pin};
4use crate::pac::gpio::vals::{Afr, Moder}; 4use crate::pac::gpio::vals::{Afr, Moder};
5use crate::pac::gpio::Gpio; 5use crate::pac::gpio::Gpio;
6use crate::pac::spi; 6use crate::pac::spi;
7use crate::rcc::RccPeripheral;
8use crate::spi::{ByteOrder, Config, Error, Instance, MisoPin, MosiPin, SckPin, WordSize}; 7use crate::spi::{ByteOrder, Config, Error, Instance, MisoPin, MosiPin, SckPin, WordSize};
9use crate::time::Hertz; 8use crate::time::Hertz;
10use core::marker::PhantomData; 9use core::marker::PhantomData;
@@ -29,14 +28,14 @@ impl WordSize {
29 } 28 }
30} 29}
31 30
32pub struct Spi<'d, T: Instance + RccPeripheral> { 31pub struct Spi<'d, T: Instance> {
33 sck: AnyPin, 32 sck: AnyPin,
34 mosi: AnyPin, 33 mosi: AnyPin,
35 miso: AnyPin, 34 miso: AnyPin,
36 phantom: PhantomData<&'d mut T>, 35 phantom: PhantomData<&'d mut T>,
37} 36}
38 37
39impl<'d, T: Instance + RccPeripheral> Spi<'d, T> { 38impl<'d, T: Instance> Spi<'d, T> {
40 pub fn new<F>( 39 pub fn new<F>(
41 pclk: Hertz, 40 pclk: Hertz,
42 _peri: impl Unborrow<Target = T> + 'd, 41 _peri: impl Unborrow<Target = T> + 'd,
@@ -143,7 +142,7 @@ impl<'d, T: Instance + RccPeripheral> Spi<'d, T> {
143 } 142 }
144} 143}
145 144
146impl<'d, T: Instance + RccPeripheral> Drop for Spi<'d, T> { 145impl<'d, T: Instance> Drop for Spi<'d, T> {
147 fn drop(&mut self) { 146 fn drop(&mut self) {
148 unsafe { 147 unsafe {
149 Self::unconfigure_pin(self.sck.block(), self.sck.pin() as _); 148 Self::unconfigure_pin(self.sck.block(), self.sck.pin() as _);
@@ -201,7 +200,7 @@ fn read_word<W: Word>(regs: &'static crate::pac::spi::Spi) -> Result<W, Error> {
201 } 200 }
202} 201}
203 202
204impl<'d, T: Instance + RccPeripheral> embedded_hal::blocking::spi::Write<u8> for Spi<'d, T> { 203impl<'d, T: Instance> embedded_hal::blocking::spi::Write<u8> for Spi<'d, T> {
205 type Error = Error; 204 type Error = Error;
206 205
207 fn write(&mut self, words: &[u8]) -> Result<(), Self::Error> { 206 fn write(&mut self, words: &[u8]) -> Result<(), Self::Error> {
@@ -217,7 +216,7 @@ impl<'d, T: Instance + RccPeripheral> embedded_hal::blocking::spi::Write<u8> for
217 } 216 }
218} 217}
219 218
220impl<'d, T: Instance + RccPeripheral> embedded_hal::blocking::spi::Transfer<u8> for Spi<'d, T> { 219impl<'d, T: Instance> embedded_hal::blocking::spi::Transfer<u8> for Spi<'d, T> {
221 type Error = Error; 220 type Error = Error;
222 221
223 fn transfer<'w>(&mut self, words: &'w mut [u8]) -> Result<&'w [u8], Self::Error> { 222 fn transfer<'w>(&mut self, words: &'w mut [u8]) -> Result<&'w [u8], Self::Error> {
@@ -233,7 +232,7 @@ impl<'d, T: Instance + RccPeripheral> embedded_hal::blocking::spi::Transfer<u8>
233 } 232 }
234} 233}
235 234
236impl<'d, T: Instance + RccPeripheral> embedded_hal::blocking::spi::Write<u16> for Spi<'d, T> { 235impl<'d, T: Instance> embedded_hal::blocking::spi::Write<u16> for Spi<'d, T> {
237 type Error = Error; 236 type Error = Error;
238 237
239 fn write(&mut self, words: &[u16]) -> Result<(), Self::Error> { 238 fn write(&mut self, words: &[u16]) -> Result<(), Self::Error> {
@@ -249,7 +248,7 @@ impl<'d, T: Instance + RccPeripheral> embedded_hal::blocking::spi::Write<u16> fo
249 } 248 }
250} 249}
251 250
252impl<'d, T: Instance + RccPeripheral> embedded_hal::blocking::spi::Transfer<u16> for Spi<'d, T> { 251impl<'d, T: Instance> embedded_hal::blocking::spi::Transfer<u16> for Spi<'d, T> {
253 type Error = Error; 252 type Error = Error;
254 253
255 fn transfer<'w>(&mut self, words: &'w mut [u16]) -> Result<&'w [u16], Self::Error> { 254 fn transfer<'w>(&mut self, words: &'w mut [u16]) -> Result<&'w [u16], Self::Error> {
diff --git a/embassy-stm32/src/spi/v3.rs b/embassy-stm32/src/spi/v3.rs
index 3b768751d..6073616bd 100644
--- a/embassy-stm32/src/spi/v3.rs
+++ b/embassy-stm32/src/spi/v3.rs
@@ -4,7 +4,6 @@ use crate::gpio::{AnyPin, Pin};
4use crate::pac::gpio::vals::{Afr, Moder}; 4use crate::pac::gpio::vals::{Afr, Moder};
5use crate::pac::gpio::Gpio; 5use crate::pac::gpio::Gpio;
6use crate::pac::spi; 6use crate::pac::spi;
7use crate::rcc::RccPeripheral;
8use crate::spi::{ByteOrder, Config, Error, Instance, MisoPin, MosiPin, SckPin, WordSize}; 7use crate::spi::{ByteOrder, Config, Error, Instance, MisoPin, MosiPin, SckPin, WordSize};
9use crate::time::Hertz; 8use crate::time::Hertz;
10use core::marker::PhantomData; 9use core::marker::PhantomData;
@@ -29,14 +28,14 @@ impl WordSize {
29 } 28 }
30} 29}
31 30
32pub struct Spi<'d, T: Instance + RccPeripheral> { 31pub struct Spi<'d, T: Instance> {
33 sck: AnyPin, 32 sck: AnyPin,
34 mosi: AnyPin, 33 mosi: AnyPin,
35 miso: AnyPin, 34 miso: AnyPin,
36 phantom: PhantomData<&'d mut T>, 35 phantom: PhantomData<&'d mut T>,
37} 36}
38 37
39impl<'d, T: Instance + RccPeripheral> Spi<'d, T> { 38impl<'d, T: Instance> Spi<'d, T> {
40 pub fn new<F>( 39 pub fn new<F>(
41 pclk: Hertz, 40 pclk: Hertz,
42 _peri: impl Unborrow<Target = T> + 'd, 41 _peri: impl Unborrow<Target = T> + 'd,
@@ -164,7 +163,7 @@ impl<'d, T: Instance + RccPeripheral> Spi<'d, T> {
164 } 163 }
165} 164}
166 165
167impl<'d, T: Instance + RccPeripheral> Drop for Spi<'d, T> { 166impl<'d, T: Instance> Drop for Spi<'d, T> {
168 fn drop(&mut self) { 167 fn drop(&mut self) {
169 unsafe { 168 unsafe {
170 Self::unconfigure_pin(self.sck.block(), self.sck.pin() as _); 169 Self::unconfigure_pin(self.sck.block(), self.sck.pin() as _);
@@ -174,7 +173,7 @@ impl<'d, T: Instance + RccPeripheral> Drop for Spi<'d, T> {
174 } 173 }
175} 174}
176 175
177impl<'d, T: Instance + RccPeripheral> embedded_hal::blocking::spi::Write<u8> for Spi<'d, T> { 176impl<'d, T: Instance> embedded_hal::blocking::spi::Write<u8> for Spi<'d, T> {
178 type Error = Error; 177 type Error = Error;
179 178
180 fn write(&mut self, words: &[u8]) -> Result<(), Self::Error> { 179 fn write(&mut self, words: &[u8]) -> Result<(), Self::Error> {
@@ -211,7 +210,7 @@ impl<'d, T: Instance + RccPeripheral> embedded_hal::blocking::spi::Write<u8> for
211 } 210 }
212} 211}
213 212
214impl<'d, T: Instance + RccPeripheral> embedded_hal::blocking::spi::Transfer<u8> for Spi<'d, T> { 213impl<'d, T: Instance> embedded_hal::blocking::spi::Transfer<u8> for Spi<'d, T> {
215 type Error = Error; 214 type Error = Error;
216 215
217 fn transfer<'w>(&mut self, words: &'w mut [u8]) -> Result<&'w [u8], Self::Error> { 216 fn transfer<'w>(&mut self, words: &'w mut [u8]) -> Result<&'w [u8], Self::Error> {
@@ -268,7 +267,7 @@ impl<'d, T: Instance + RccPeripheral> embedded_hal::blocking::spi::Transfer<u8>
268 } 267 }
269} 268}
270 269
271impl<'d, T: Instance + RccPeripheral> embedded_hal::blocking::spi::Write<u16> for Spi<'d, T> { 270impl<'d, T: Instance> embedded_hal::blocking::spi::Write<u16> for Spi<'d, T> {
272 type Error = Error; 271 type Error = Error;
273 272
274 fn write(&mut self, words: &[u16]) -> Result<(), Self::Error> { 273 fn write(&mut self, words: &[u16]) -> Result<(), Self::Error> {
@@ -305,7 +304,7 @@ impl<'d, T: Instance + RccPeripheral> embedded_hal::blocking::spi::Write<u16> fo
305 } 304 }
306} 305}
307 306
308impl<'d, T: Instance + RccPeripheral> embedded_hal::blocking::spi::Transfer<u16> for Spi<'d, T> { 307impl<'d, T: Instance> embedded_hal::blocking::spi::Transfer<u16> for Spi<'d, T> {
309 type Error = Error; 308 type Error = Error;
310 309
311 fn transfer<'w>(&mut self, words: &'w mut [u16]) -> Result<&'w [u16], Self::Error> { 310 fn transfer<'w>(&mut self, words: &'w mut [u16]) -> Result<&'w [u16], Self::Error> {