aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRasmus Melchior Jacobsen <[email protected]>2023-01-06 14:24:29 +0100
committerRasmus Melchior Jacobsen <[email protected]>2023-01-06 14:24:29 +0100
commit4c4b47f78a57e5bf3d05b319759351a005e69206 (patch)
tree00f57792af7fcaf1a3808a6a90fba71f2f4302dd
parent5aa59e97372e2efed4e35625b754364b1b4839a3 (diff)
feat(stm32): Add embedded-io traits for UartRx and UartTx
-rw-r--r--embassy-stm32/src/usart/mod.rs39
1 files changed, 39 insertions, 0 deletions
diff --git a/embassy-stm32/src/usart/mod.rs b/embassy-stm32/src/usart/mod.rs
index 233b56baa..1c13d9eca 100644
--- a/embassy-stm32/src/usart/mod.rs
+++ b/embassy-stm32/src/usart/mod.rs
@@ -948,6 +948,45 @@ mod eio {
948 self.blocking_flush() 948 self.blocking_flush()
949 } 949 }
950 } 950 }
951
952 impl<T, RxDma> Io for UartRx<'_, T, RxDma>
953 where
954 T: BasicInstance,
955 {
956 type Error = Error;
957 }
958
959 impl<T, RxDma> Read for UartRx<'_, T, RxDma>
960 where
961 T: BasicInstance,
962 RxDma: super::RxDma<T>,
963 {
964 async fn read(&mut self, buf: &mut [u8]) -> Result<usize, Self::Error> {
965 self.read_until_idle(buf).await
966 }
967 }
968
969 impl<T, TxDma> Io for UartTx<'_, T, TxDma>
970 where
971 T: BasicInstance,
972 {
973 type Error = Error;
974 }
975
976 impl<T, TxDma> Write for UartTx<'_, T, TxDma>
977 where
978 T: BasicInstance,
979 TxDma: super::TxDma<T>,
980 {
981 async fn write(&mut self, buf: &[u8]) -> Result<usize, Self::Error> {
982 self.write(buf).await?;
983 Ok(buf.len())
984 }
985
986 async fn flush(&mut self) -> Result<(), Self::Error> {
987 self.blocking_flush()
988 }
989 }
951} 990}
952 991
953#[cfg(all( 992#[cfg(all(