aboutsummaryrefslogtreecommitdiff
path: root/embassy-embedded-hal/src/adapter
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2023-07-04 19:53:06 +0200
committerDario Nieuwenhuis <[email protected]>2023-07-04 19:59:36 +0200
commita101d9078deb3ad576a40b6d5f4d6e81dcfd528e (patch)
tree98deed296973aa29dc1701f69ecbe342d2a2c7c5 /embassy-embedded-hal/src/adapter
parentb2f843a4ce2dc9114a135f612e1a408a8fe02fab (diff)
update embedded-hal crates.
Diffstat (limited to 'embassy-embedded-hal/src/adapter')
-rw-r--r--embassy-embedded-hal/src/adapter/blocking_async.rs43
-rw-r--r--embassy-embedded-hal/src/adapter/yielding_async.rs39
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
91impl<T, E> embedded_hal_async::spi::SpiBusFlush for BlockingAsync<T> 86 async fn read(&mut self, data: &mut [u8]) -> Result<(), Self::Error> {
92where 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
101impl<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> {
102where 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
112impl<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> {
113where
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
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 }