diff options
| author | Grant Miller <[email protected]> | 2021-12-06 14:47:50 -0600 |
|---|---|---|
| committer | Grant Miller <[email protected]> | 2021-12-06 14:47:50 -0600 |
| commit | e1cccc83912b1139738300690fbf82f44341f456 (patch) | |
| tree | ec93fceea768a917dd16f906630a3152da7fb862 | |
| parent | aeb69a76651b2a06cc74b15ee926a0797a3536f4 (diff) | |
Move Spi to mod (without NoDma defaults)
| -rw-r--r-- | embassy-stm32/src/spi/mod.rs | 21 | ||||
| -rw-r--r-- | embassy-stm32/src/spi/v1.rs | 11 | ||||
| -rw-r--r-- | embassy-stm32/src/spi/v2.rs | 11 | ||||
| -rw-r--r-- | embassy-stm32/src/spi/v3.rs | 20 |
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 | ||
| 3 | use crate::dma; | ||
| 4 | use crate::gpio::{AnyPin, NoPin, OptionalPin}; | ||
| 5 | use crate::pac::spi::vals; | ||
| 6 | use crate::peripherals; | ||
| 7 | use crate::rcc::RccPeripheral; | ||
| 8 | use 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")] |
| 7 | mod _version; | 14 | mod _version; |
| 8 | use crate::pac::spi::vals; | ||
| 9 | use crate::{dma, peripherals, rcc::RccPeripheral}; | ||
| 10 | pub use _version::*; | 15 | pub use _version::*; |
| 11 | 16 | ||
| 12 | use 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))] |
| 16 | pub enum Error { | 19 | pub enum Error { |
| @@ -89,6 +92,16 @@ impl Default for Config { | |||
| 89 | } | 92 | } |
| 90 | } | 93 | } |
| 91 | 94 | ||
| 95 | pub 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 | |||
| 92 | pub(crate) mod sealed { | 105 | pub(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 @@ | |||
| 3 | use crate::dma::NoDma; | 3 | use crate::dma::NoDma; |
| 4 | use crate::gpio::sealed::AFType; | 4 | use crate::gpio::sealed::AFType; |
| 5 | use crate::gpio::sealed::Pin; | 5 | use crate::gpio::sealed::Pin; |
| 6 | use crate::gpio::AnyPin; | ||
| 7 | use crate::pac::spi; | 6 | use crate::pac::spi; |
| 8 | use crate::spi::{ | 7 | use 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; | |||
| 20 | pub use embedded_hal::spi::{Mode, Phase, Polarity, MODE_0, MODE_1, MODE_2, MODE_3}; | 19 | pub use embedded_hal::spi::{Mode, Phase, Polarity, MODE_0, MODE_1, MODE_2, MODE_3}; |
| 21 | use futures::future::join3; | 20 | use futures::future::join3; |
| 22 | 21 | ||
| 23 | pub struct Spi<'d, T: Instance, Tx, Rx> { | 22 | use 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 | ||
| 33 | impl<'d, T: Instance, Tx, Rx> Spi<'d, T, Tx, Rx> { | 24 | impl<'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 | ||
| 3 | use crate::dma::NoDma; | 3 | use crate::dma::NoDma; |
| 4 | use crate::gpio::sealed::Pin; | 4 | use crate::gpio::sealed::Pin; |
| 5 | use crate::gpio::AnyPin; | ||
| 6 | use crate::pac::spi; | 5 | use crate::pac::spi; |
| 7 | use crate::spi::{ | 6 | use 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; | |||
| 18 | pub use embedded_hal::spi::{Mode, Phase, Polarity, MODE_0, MODE_1, MODE_2, MODE_3}; | 17 | pub use embedded_hal::spi::{Mode, Phase, Polarity, MODE_0, MODE_1, MODE_2, MODE_3}; |
| 19 | use futures::future::{join, join3}; | 18 | use futures::future::{join, join3}; |
| 20 | 19 | ||
| 21 | pub struct Spi<'d, T: Instance, Tx, Rx> { | 20 | use 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 | ||
| 31 | impl<'d, T: Instance, Tx, Rx> Spi<'d, T, Tx, Rx> { | 22 | impl<'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 | ||
| 3 | use crate::dma::NoDma; | 3 | use crate::dma::NoDma; |
| 4 | use crate::gpio::sealed::Pin; | 4 | use crate::gpio::sealed::Pin; |
| 5 | use crate::gpio::AnyPin; | ||
| 6 | use crate::pac::spi; | 5 | use crate::pac::spi; |
| 7 | use crate::spi::{ | 6 | use 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 | ||
| 20 | use futures::future::join3; | 19 | use futures::future::join3; |
| 21 | 20 | ||
| 22 | #[allow(unused)] | 21 | use super::Spi; |
| 23 | pub 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 | ||
| 33 | impl<'d, T: Instance, Tx, Rx> Spi<'d, T, Tx, Rx> { | 23 | impl<'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 | ||
| 341 | impl<'d, T: Instance> embedded_hal::blocking::spi::Write<u8> for Spi<'d, T, NoDma> { | 331 | impl<'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 | ||
| 389 | impl<'d, T: Instance> embedded_hal::blocking::spi::Transfer<u8> for Spi<'d, T, NoDma> { | 379 | impl<'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 | ||
| 446 | impl<'d, T: Instance> embedded_hal::blocking::spi::Write<u16> for Spi<'d, T, NoDma> { | 436 | impl<'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 | ||
| 495 | impl<'d, T: Instance> embedded_hal::blocking::spi::Transfer<u16> for Spi<'d, T, NoDma> { | 485 | impl<'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> { |
