aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embassy-embedded-hal/src/adapter/blocking_async.rs18
1 files changed, 7 insertions, 11 deletions
diff --git a/embassy-embedded-hal/src/adapter/blocking_async.rs b/embassy-embedded-hal/src/adapter/blocking_async.rs
index bafc31583..bc965fbdd 100644
--- a/embassy-embedded-hal/src/adapter/blocking_async.rs
+++ b/embassy-embedded-hal/src/adapter/blocking_async.rs
@@ -63,16 +63,16 @@ where
63 63
64impl<T, E> embedded_hal_async::spi::ErrorType for BlockingAsync<T> 64impl<T, E> embedded_hal_async::spi::ErrorType for BlockingAsync<T>
65where 65where
66 E: embedded_hal_1::spi::Error, 66 E: embedded_hal_async::spi::Error,
67 T: blocking::spi::Transfer<u8, Error = E> + blocking::spi::Write<u8, Error = E>, 67 T: embedded_hal_1::spi::SpiBus<Error = E>,
68{ 68{
69 type Error = E; 69 type Error = E;
70} 70}
71 71
72impl<T, E> embedded_hal_async::spi::SpiBus<u8> for BlockingAsync<T> 72impl<T, E> embedded_hal_async::spi::SpiBus<u8> for BlockingAsync<T>
73where 73where
74 E: embedded_hal_1::spi::Error + 'static, 74 E: embedded_hal_async::spi::Error,
75 T: blocking::spi::Transfer<u8, Error = E> + blocking::spi::Write<u8, Error = E>, 75 T: embedded_hal_1::spi::SpiBus<Error = E>,
76{ 76{
77 async fn flush(&mut self) -> Result<(), Self::Error> { 77 async fn flush(&mut self) -> Result<(), Self::Error> {
78 Ok(()) 78 Ok(())
@@ -84,21 +84,17 @@ where
84 } 84 }
85 85
86 async fn read(&mut self, data: &mut [u8]) -> Result<(), Self::Error> { 86 async fn read(&mut self, data: &mut [u8]) -> Result<(), Self::Error> {
87 self.wrapped.transfer(data)?; 87 self.wrapped.read(data)?;
88 Ok(()) 88 Ok(())
89 } 89 }
90 90
91 async fn transfer(&mut self, read: &mut [u8], write: &[u8]) -> Result<(), Self::Error> { 91 async fn transfer(&mut self, read: &mut [u8], write: &[u8]) -> Result<(), Self::Error> {
92 // Ensure we write the expected bytes 92 self.wrapped.transfer(read, write)?;
93 for i in 0..core::cmp::min(read.len(), write.len()) {
94 read[i] = write[i].clone();
95 }
96 self.wrapped.transfer(read)?;
97 Ok(()) 93 Ok(())
98 } 94 }
99 95
100 async fn transfer_in_place(&mut self, data: &mut [u8]) -> Result<(), Self::Error> { 96 async fn transfer_in_place(&mut self, data: &mut [u8]) -> Result<(), Self::Error> {
101 self.wrapped.transfer(data)?; 97 self.wrapped.transfer_in_place(data)?;
102 Ok(()) 98 Ok(())
103 } 99 }
104} 100}