diff options
Diffstat (limited to 'embassy-embedded-hal/src/adapter/blocking_async.rs')
| -rw-r--r-- | embassy-embedded-hal/src/adapter/blocking_async.rs | 43 |
1 files changed, 13 insertions, 30 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 | } |
