aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrant Miller <[email protected]>2021-12-06 14:47:50 -0600
committerGrant Miller <[email protected]>2021-12-06 14:47:50 -0600
commite1cccc83912b1139738300690fbf82f44341f456 (patch)
treeec93fceea768a917dd16f906630a3152da7fb862
parentaeb69a76651b2a06cc74b15ee926a0797a3536f4 (diff)
Move Spi to mod (without NoDma defaults)
-rw-r--r--embassy-stm32/src/spi/mod.rs21
-rw-r--r--embassy-stm32/src/spi/v1.rs11
-rw-r--r--embassy-stm32/src/spi/v2.rs11
-rw-r--r--embassy-stm32/src/spi/v3.rs20
4 files changed, 24 insertions, 39 deletions
diff --git a/embassy-stm32/src/spi/mod.rs b/embassy-stm32/src/spi/mod.rs
index a0bb66eb0..4899676eb 100644
--- a/embassy-stm32/src/spi/mod.rs
+++ b/embassy-stm32/src/spi/mod.rs
@@ -1,16 +1,19 @@
1#![macro_use] 1#![macro_use]
2 2
3use crate::dma;
4use crate::gpio::{AnyPin, NoPin, OptionalPin};
5use crate::pac::spi::vals;
6use crate::peripherals;
7use crate::rcc::RccPeripheral;
8use core::marker::PhantomData;
9
3#[cfg_attr(spi_v1, path = "v1.rs")] 10#[cfg_attr(spi_v1, path = "v1.rs")]
4#[cfg_attr(spi_f1, path = "v1.rs")] 11#[cfg_attr(spi_f1, path = "v1.rs")]
5#[cfg_attr(spi_v2, path = "v2.rs")] 12#[cfg_attr(spi_v2, path = "v2.rs")]
6#[cfg_attr(spi_v3, path = "v3.rs")] 13#[cfg_attr(spi_v3, path = "v3.rs")]
7mod _version; 14mod _version;
8use crate::pac::spi::vals;
9use crate::{dma, peripherals, rcc::RccPeripheral};
10pub use _version::*; 15pub use _version::*;
11 16
12use crate::gpio::{NoPin, OptionalPin};
13
14#[derive(Debug)] 17#[derive(Debug)]
15#[cfg_attr(feature = "defmt", derive(defmt::Format))] 18#[cfg_attr(feature = "defmt", derive(defmt::Format))]
16pub enum Error { 19pub enum Error {
@@ -89,6 +92,16 @@ impl Default for Config {
89 } 92 }
90} 93}
91 94
95pub struct Spi<'d, T: Instance, Tx, Rx> {
96 sck: Option<AnyPin>,
97 mosi: Option<AnyPin>,
98 miso: Option<AnyPin>,
99 txdma: Tx,
100 rxdma: Rx,
101 current_word_size: WordSize,
102 phantom: PhantomData<&'d mut T>,
103}
104
92pub(crate) mod sealed { 105pub(crate) mod sealed {
93 use super::*; 106 use super::*;
94 107
diff --git a/embassy-stm32/src/spi/v1.rs b/embassy-stm32/src/spi/v1.rs
index a41c79913..d7075dc43 100644
--- a/embassy-stm32/src/spi/v1.rs
+++ b/embassy-stm32/src/spi/v1.rs
@@ -3,7 +3,6 @@
3use crate::dma::NoDma; 3use crate::dma::NoDma;
4use crate::gpio::sealed::AFType; 4use crate::gpio::sealed::AFType;
5use crate::gpio::sealed::Pin; 5use crate::gpio::sealed::Pin;
6use crate::gpio::AnyPin;
7use crate::pac::spi; 6use crate::pac::spi;
8use crate::spi::{ 7use crate::spi::{
9 ByteOrder, Config, Error, Instance, MisoPin, MosiPin, RxDmaChannel, SckPin, TxDmaChannel, 8 ByteOrder, Config, Error, Instance, MisoPin, MosiPin, RxDmaChannel, SckPin, TxDmaChannel,
@@ -20,15 +19,7 @@ pub use embedded_hal::blocking;
20pub use embedded_hal::spi::{Mode, Phase, Polarity, MODE_0, MODE_1, MODE_2, MODE_3}; 19pub use embedded_hal::spi::{Mode, Phase, Polarity, MODE_0, MODE_1, MODE_2, MODE_3};
21use futures::future::join3; 20use futures::future::join3;
22 21
23pub struct Spi<'d, T: Instance, Tx, Rx> { 22use super::Spi;
24 sck: Option<AnyPin>,
25 mosi: Option<AnyPin>,
26 miso: Option<AnyPin>,
27 txdma: Tx,
28 rxdma: Rx,
29 current_word_size: WordSize,
30 phantom: PhantomData<&'d mut T>,
31}
32 23
33impl<'d, T: Instance, Tx, Rx> Spi<'d, T, Tx, Rx> { 24impl<'d, T: Instance, Tx, Rx> Spi<'d, T, Tx, Rx> {
34 pub fn new<F>( 25 pub fn new<F>(
diff --git a/embassy-stm32/src/spi/v2.rs b/embassy-stm32/src/spi/v2.rs
index 0c0d24ce9..94e5ca087 100644
--- a/embassy-stm32/src/spi/v2.rs
+++ b/embassy-stm32/src/spi/v2.rs
@@ -2,7 +2,6 @@
2 2
3use crate::dma::NoDma; 3use crate::dma::NoDma;
4use crate::gpio::sealed::Pin; 4use crate::gpio::sealed::Pin;
5use crate::gpio::AnyPin;
6use crate::pac::spi; 5use crate::pac::spi;
7use crate::spi::{ 6use crate::spi::{
8 ByteOrder, Config, Error, Instance, MisoPin, MosiPin, RxDmaChannel, SckPin, TxDmaChannel, 7 ByteOrder, Config, Error, Instance, MisoPin, MosiPin, RxDmaChannel, SckPin, TxDmaChannel,
@@ -18,15 +17,7 @@ use embassy_traits::spi as traits;
18pub use embedded_hal::spi::{Mode, Phase, Polarity, MODE_0, MODE_1, MODE_2, MODE_3}; 17pub use embedded_hal::spi::{Mode, Phase, Polarity, MODE_0, MODE_1, MODE_2, MODE_3};
19use futures::future::{join, join3}; 18use futures::future::{join, join3};
20 19
21pub struct Spi<'d, T: Instance, Tx, Rx> { 20use super::Spi;
22 sck: Option<AnyPin>,
23 mosi: Option<AnyPin>,
24 miso: Option<AnyPin>,
25 txdma: Tx,
26 rxdma: Rx,
27 current_word_size: WordSize,
28 phantom: PhantomData<&'d mut T>,
29}
30 21
31impl<'d, T: Instance, Tx, Rx> Spi<'d, T, Tx, Rx> { 22impl<'d, T: Instance, Tx, Rx> Spi<'d, T, Tx, Rx> {
32 pub fn new<F>( 23 pub fn new<F>(
diff --git a/embassy-stm32/src/spi/v3.rs b/embassy-stm32/src/spi/v3.rs
index e2751ce20..99c3eac10 100644
--- a/embassy-stm32/src/spi/v3.rs
+++ b/embassy-stm32/src/spi/v3.rs
@@ -2,7 +2,6 @@
2 2
3use crate::dma::NoDma; 3use crate::dma::NoDma;
4use crate::gpio::sealed::Pin; 4use crate::gpio::sealed::Pin;
5use crate::gpio::AnyPin;
6use crate::pac::spi; 5use crate::pac::spi;
7use crate::spi::{ 6use crate::spi::{
8 ByteOrder, Config, Error, Instance, MisoPin, MosiPin, RxDmaChannel, SckPin, TxDmaChannel, 7 ByteOrder, Config, Error, Instance, MisoPin, MosiPin, RxDmaChannel, SckPin, TxDmaChannel,
@@ -19,16 +18,7 @@ pub use embedded_hal::spi::{Mode, Phase, Polarity, MODE_0, MODE_1, MODE_2, MODE_
19 18
20use futures::future::join3; 19use futures::future::join3;
21 20
22#[allow(unused)] 21use super::Spi;
23pub struct Spi<'d, T: Instance, Tx = NoDma, Rx = NoDma> {
24 sck: Option<AnyPin>,
25 mosi: Option<AnyPin>,
26 miso: Option<AnyPin>,
27 txdma: Tx,
28 rxdma: Rx,
29 current_word_size: WordSize,
30 phantom: PhantomData<&'d mut T>,
31}
32 22
33impl<'d, T: Instance, Tx, Rx> Spi<'d, T, Tx, Rx> { 23impl<'d, T: Instance, Tx, Rx> Spi<'d, T, Tx, Rx> {
34 pub fn new<F>( 24 pub fn new<F>(
@@ -338,7 +328,7 @@ impl<'d, T: Instance, Tx, Rx> Drop for Spi<'d, T, Tx, Rx> {
338 } 328 }
339} 329}
340 330
341impl<'d, T: Instance> embedded_hal::blocking::spi::Write<u8> for Spi<'d, T, NoDma> { 331impl<'d, T: Instance> embedded_hal::blocking::spi::Write<u8> for Spi<'d, T, NoDma, NoDma> {
342 type Error = Error; 332 type Error = Error;
343 333
344 fn write(&mut self, words: &[u8]) -> Result<(), Self::Error> { 334 fn write(&mut self, words: &[u8]) -> Result<(), Self::Error> {
@@ -386,7 +376,7 @@ impl<'d, T: Instance> embedded_hal::blocking::spi::Write<u8> for Spi<'d, T, NoDm
386 } 376 }
387} 377}
388 378
389impl<'d, T: Instance> embedded_hal::blocking::spi::Transfer<u8> for Spi<'d, T, NoDma> { 379impl<'d, T: Instance> embedded_hal::blocking::spi::Transfer<u8> for Spi<'d, T, NoDma, NoDma> {
390 type Error = Error; 380 type Error = Error;
391 381
392 fn transfer<'w>(&mut self, words: &'w mut [u8]) -> Result<&'w [u8], Self::Error> { 382 fn transfer<'w>(&mut self, words: &'w mut [u8]) -> Result<&'w [u8], Self::Error> {
@@ -443,7 +433,7 @@ impl<'d, T: Instance> embedded_hal::blocking::spi::Transfer<u8> for Spi<'d, T, N
443 } 433 }
444} 434}
445 435
446impl<'d, T: Instance> embedded_hal::blocking::spi::Write<u16> for Spi<'d, T, NoDma> { 436impl<'d, T: Instance> embedded_hal::blocking::spi::Write<u16> for Spi<'d, T, NoDma, NoDma> {
447 type Error = Error; 437 type Error = Error;
448 438
449 fn write(&mut self, words: &[u16]) -> Result<(), Self::Error> { 439 fn write(&mut self, words: &[u16]) -> Result<(), Self::Error> {
@@ -492,7 +482,7 @@ impl<'d, T: Instance> embedded_hal::blocking::spi::Write<u16> for Spi<'d, T, NoD
492 } 482 }
493} 483}
494 484
495impl<'d, T: Instance> embedded_hal::blocking::spi::Transfer<u16> for Spi<'d, T, NoDma> { 485impl<'d, T: Instance> embedded_hal::blocking::spi::Transfer<u16> for Spi<'d, T, NoDma, NoDma> {
496 type Error = Error; 486 type Error = Error;
497 487
498 fn transfer<'w>(&mut self, words: &'w mut [u16]) -> Result<&'w [u16], Self::Error> { 488 fn transfer<'w>(&mut self, words: &'w mut [u16]) -> Result<&'w [u16], Self::Error> {