diff options
| author | Dario Nieuwenhuis <[email protected]> | 2023-07-04 19:53:06 +0200 |
|---|---|---|
| committer | Dario Nieuwenhuis <[email protected]> | 2023-07-04 19:59:36 +0200 |
| commit | a101d9078deb3ad576a40b6d5f4d6e81dcfd528e (patch) | |
| tree | 98deed296973aa29dc1701f69ecbe342d2a2c7c5 /embassy-embedded-hal/src/adapter | |
| parent | b2f843a4ce2dc9114a135f612e1a408a8fe02fab (diff) | |
update embedded-hal crates.
Diffstat (limited to 'embassy-embedded-hal/src/adapter')
| -rw-r--r-- | embassy-embedded-hal/src/adapter/blocking_async.rs | 43 | ||||
| -rw-r--r-- | embassy-embedded-hal/src/adapter/yielding_async.rs | 39 |
2 files changed, 25 insertions, 57 deletions
diff --git a/embassy-embedded-hal/src/adapter/blocking_async.rs b/embassy-embedded-hal/src/adapter/blocking_async.rs index b996d6a75..98ae2b02c 100644 --- a/embassy-embedded-hal/src/adapter/blocking_async.rs +++ b/embassy-embedded-hal/src/adapter/blocking_async.rs | |||
| @@ -74,47 +74,30 @@ where | |||
| 74 | E: embedded_hal_1::spi::Error + 'static, | 74 | E: embedded_hal_1::spi::Error + 'static, |
| 75 | T: blocking::spi::Transfer<u8, Error = E> + blocking::spi::Write<u8, Error = E>, | 75 | T: blocking::spi::Transfer<u8, Error = E> + blocking::spi::Write<u8, Error = E>, |
| 76 | { | 76 | { |
| 77 | async fn transfer<'a>(&'a mut self, read: &'a mut [u8], write: &'a [u8]) -> Result<(), Self::Error> { | 77 | async fn flush(&mut self) -> Result<(), Self::Error> { |
| 78 | // Ensure we write the expected bytes | ||
| 79 | for i in 0..core::cmp::min(read.len(), write.len()) { | ||
| 80 | read[i] = write[i].clone(); | ||
| 81 | } | ||
| 82 | self.wrapped.transfer(read)?; | ||
| 83 | Ok(()) | 78 | Ok(()) |
| 84 | } | 79 | } |
| 85 | 80 | ||
| 86 | async fn transfer_in_place<'a>(&'a mut self, _: &'a mut [u8]) -> Result<(), Self::Error> { | 81 | async fn write(&mut self, data: &[u8]) -> Result<(), Self::Error> { |
| 87 | todo!() | 82 | self.wrapped.write(data)?; |
| 83 | Ok(()) | ||
| 88 | } | 84 | } |
| 89 | } | ||
| 90 | 85 | ||
| 91 | impl<T, E> embedded_hal_async::spi::SpiBusFlush for BlockingAsync<T> | 86 | async fn read(&mut self, data: &mut [u8]) -> Result<(), Self::Error> { |
| 92 | where | 87 | self.wrapped.transfer(data)?; |
| 93 | E: embedded_hal_1::spi::Error + 'static, | ||
| 94 | T: blocking::spi::Transfer<u8, Error = E> + blocking::spi::Write<u8, Error = E>, | ||
| 95 | { | ||
| 96 | async fn flush(&mut self) -> Result<(), Self::Error> { | ||
| 97 | Ok(()) | 88 | Ok(()) |
| 98 | } | 89 | } |
| 99 | } | ||
| 100 | 90 | ||
| 101 | impl<T, E> embedded_hal_async::spi::SpiBusWrite<u8> for BlockingAsync<T> | 91 | async fn transfer(&mut self, read: &mut [u8], write: &[u8]) -> Result<(), Self::Error> { |
| 102 | where | 92 | // Ensure we write the expected bytes |
| 103 | E: embedded_hal_1::spi::Error + 'static, | 93 | for i in 0..core::cmp::min(read.len(), write.len()) { |
| 104 | T: blocking::spi::Transfer<u8, Error = E> + blocking::spi::Write<u8, Error = E>, | 94 | read[i] = write[i].clone(); |
| 105 | { | 95 | } |
| 106 | async fn write(&mut self, data: &[u8]) -> Result<(), Self::Error> { | 96 | self.wrapped.transfer(read)?; |
| 107 | self.wrapped.write(data)?; | ||
| 108 | Ok(()) | 97 | Ok(()) |
| 109 | } | 98 | } |
| 110 | } | ||
| 111 | 99 | ||
| 112 | impl<T, E> embedded_hal_async::spi::SpiBusRead<u8> for BlockingAsync<T> | 100 | async fn transfer_in_place(&mut self, data: &mut [u8]) -> Result<(), Self::Error> { |
| 113 | where | ||
| 114 | E: embedded_hal_1::spi::Error + 'static, | ||
| 115 | T: blocking::spi::Transfer<u8, Error = E> + blocking::spi::Write<u8, Error = E>, | ||
| 116 | { | ||
| 117 | async fn read(&mut self, data: &mut [u8]) -> Result<(), Self::Error> { | ||
| 118 | self.wrapped.transfer(data)?; | 101 | self.wrapped.transfer(data)?; |
| 119 | Ok(()) | 102 | Ok(()) |
| 120 | } | 103 | } |
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 | } |
