aboutsummaryrefslogtreecommitdiff
path: root/embassy-embedded-hal/src/adapter/yielding_async.rs
diff options
context:
space:
mode:
Diffstat (limited to 'embassy-embedded-hal/src/adapter/yielding_async.rs')
-rw-r--r--embassy-embedded-hal/src/adapter/yielding_async.rs39
1 files changed, 12 insertions, 27 deletions
diff --git a/embassy-embedded-hal/src/adapter/yielding_async.rs b/embassy-embedded-hal/src/adapter/yielding_async.rs
index f51e4076f..fe9c9c341 100644
--- a/embassy-embedded-hal/src/adapter/yielding_async.rs
+++ b/embassy-embedded-hal/src/adapter/yielding_async.rs
@@ -69,51 +69,36 @@ where
69 type Error = T::Error; 69 type Error = T::Error;
70} 70}
71 71
72impl<T> embedded_hal_async::spi::SpiBus<u8> for YieldingAsync<T> 72impl<T, Word: 'static + Copy> embedded_hal_async::spi::SpiBus<Word> for YieldingAsync<T>
73where 73where
74 T: embedded_hal_async::spi::SpiBus, 74 T: embedded_hal_async::spi::SpiBus<Word>,
75{ 75{
76 async fn transfer<'a>(&'a mut self, read: &'a mut [u8], write: &'a [u8]) -> Result<(), Self::Error> { 76 async fn flush(&mut self) -> Result<(), Self::Error> {
77 self.wrapped.transfer(read, write).await?; 77 self.wrapped.flush().await?;
78 yield_now().await; 78 yield_now().await;
79 Ok(()) 79 Ok(())
80 } 80 }
81 81
82 async fn transfer_in_place<'a>(&'a mut self, words: &'a mut [u8]) -> Result<(), Self::Error> { 82 async fn write(&mut self, data: &[Word]) -> Result<(), Self::Error> {
83 self.wrapped.transfer_in_place(words).await?; 83 self.wrapped.write(data).await?;
84 yield_now().await; 84 yield_now().await;
85 Ok(()) 85 Ok(())
86 } 86 }
87}
88 87
89impl<T> embedded_hal_async::spi::SpiBusFlush for YieldingAsync<T> 88 async fn read(&mut self, data: &mut [Word]) -> Result<(), Self::Error> {
90where 89 self.wrapped.read(data).await?;
91 T: embedded_hal_async::spi::SpiBusFlush,
92{
93 async fn flush(&mut self) -> Result<(), Self::Error> {
94 self.wrapped.flush().await?;
95 yield_now().await; 90 yield_now().await;
96 Ok(()) 91 Ok(())
97 } 92 }
98}
99 93
100impl<T> embedded_hal_async::spi::SpiBusWrite<u8> for YieldingAsync<T> 94 async fn transfer(&mut self, read: &mut [Word], write: &[Word]) -> Result<(), Self::Error> {
101where 95 self.wrapped.transfer(read, write).await?;
102 T: embedded_hal_async::spi::SpiBusWrite<u8>,
103{
104 async fn write(&mut self, data: &[u8]) -> Result<(), Self::Error> {
105 self.wrapped.write(data).await?;
106 yield_now().await; 96 yield_now().await;
107 Ok(()) 97 Ok(())
108 } 98 }
109}
110 99
111impl<T> embedded_hal_async::spi::SpiBusRead<u8> for YieldingAsync<T> 100 async fn transfer_in_place(&mut self, words: &mut [Word]) -> Result<(), Self::Error> {
112where 101 self.wrapped.transfer_in_place(words).await?;
113 T: embedded_hal_async::spi::SpiBusRead<u8>,
114{
115 async fn read(&mut self, data: &mut [u8]) -> Result<(), Self::Error> {
116 self.wrapped.read(data).await?;
117 yield_now().await; 102 yield_now().await;
118 Ok(()) 103 Ok(())
119 } 104 }