diff options
Diffstat (limited to 'embassy-embedded-hal/src/adapter/yielding_async.rs')
| -rw-r--r-- | embassy-embedded-hal/src/adapter/yielding_async.rs | 39 |
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 | ||
| 72 | impl<T> embedded_hal_async::spi::SpiBus<u8> for YieldingAsync<T> | 72 | impl<T, Word: 'static + Copy> embedded_hal_async::spi::SpiBus<Word> for YieldingAsync<T> |
| 73 | where | 73 | where |
| 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 | ||
| 89 | impl<T> embedded_hal_async::spi::SpiBusFlush for YieldingAsync<T> | 88 | async fn read(&mut self, data: &mut [Word]) -> Result<(), Self::Error> { |
| 90 | where | 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 | ||
| 100 | impl<T> embedded_hal_async::spi::SpiBusWrite<u8> for YieldingAsync<T> | 94 | async fn transfer(&mut self, read: &mut [Word], write: &[Word]) -> Result<(), Self::Error> { |
| 101 | where | 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 | ||
| 111 | impl<T> embedded_hal_async::spi::SpiBusRead<u8> for YieldingAsync<T> | 100 | async fn transfer_in_place(&mut self, words: &mut [Word]) -> Result<(), Self::Error> { |
| 112 | where | 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 | } |
