aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embassy-stm32/src/usart/buffered.rs6
-rw-r--r--embassy-stm32/src/usart/mod.rs70
2 files changed, 52 insertions, 24 deletions
diff --git a/embassy-stm32/src/usart/buffered.rs b/embassy-stm32/src/usart/buffered.rs
index 989c88205..b88eebc79 100644
--- a/embassy-stm32/src/usart/buffered.rs
+++ b/embassy-stm32/src/usart/buffered.rs
@@ -410,12 +410,6 @@ impl<'d, T: BasicInstance> Drop for BufferedUartTx<'d, T> {
410 } 410 }
411} 411}
412 412
413impl embedded_io_async::Error for Error {
414 fn kind(&self) -> embedded_io_async::ErrorKind {
415 embedded_io_async::ErrorKind::Other
416 }
417}
418
419impl<'d, T: BasicInstance> embedded_io_async::ErrorType for BufferedUart<'d, T> { 413impl<'d, T: BasicInstance> embedded_io_async::ErrorType for BufferedUart<'d, T> {
420 type Error = Error; 414 type Error = Error;
421} 415}
diff --git a/embassy-stm32/src/usart/mod.rs b/embassy-stm32/src/usart/mod.rs
index 2d7443221..c6d6cc59c 100644
--- a/embassy-stm32/src/usart/mod.rs
+++ b/embassy-stm32/src/usart/mod.rs
@@ -1037,20 +1037,61 @@ mod eh1 {
1037 } 1037 }
1038} 1038}
1039 1039
1040#[cfg(all(feature = "unstable-traits", feature = "nightly"))] 1040impl embedded_io::Error for Error {
1041mod eio { 1041 fn kind(&self) -> embedded_io::ErrorKind {
1042 use embedded_io_async::{ErrorType, Write}; 1042 embedded_io::ErrorKind::Other
1043 }
1044}
1043 1045
1044 use super::*; 1046impl<T, TxDma, RxDma> embedded_io::ErrorType for Uart<'_, T, TxDma, RxDma>
1047where
1048 T: BasicInstance,
1049{
1050 type Error = Error;
1051}
1045 1052
1046 impl<T, TxDma, RxDma> ErrorType for Uart<'_, T, TxDma, RxDma> 1053impl<T, TxDma> embedded_io::ErrorType for UartTx<'_, T, TxDma>
1047 where 1054where
1048 T: BasicInstance, 1055 T: BasicInstance,
1049 { 1056{
1050 type Error = Error; 1057 type Error = Error;
1058}
1059
1060impl<T, TxDma, RxDma> embedded_io::Write for Uart<'_, T, TxDma, RxDma>
1061where
1062 T: BasicInstance,
1063 TxDma: crate::usart::TxDma<T>,
1064{
1065 fn write(&mut self, buf: &[u8]) -> Result<usize, Self::Error> {
1066 self.blocking_write(buf)?;
1067 Ok(buf.len())
1068 }
1069
1070 fn flush(&mut self) -> Result<(), Self::Error> {
1071 self.blocking_flush()
1072 }
1073}
1074
1075impl<T, TxDma> embedded_io::Write for UartTx<'_, T, TxDma>
1076where
1077 T: BasicInstance,
1078 TxDma: crate::usart::TxDma<T>,
1079{
1080 fn write(&mut self, buf: &[u8]) -> Result<usize, Self::Error> {
1081 self.blocking_write(buf)?;
1082 Ok(buf.len())
1083 }
1084
1085 fn flush(&mut self) -> Result<(), Self::Error> {
1086 self.blocking_flush()
1051 } 1087 }
1088}
1052 1089
1053 impl<T, TxDma, RxDma> Write for Uart<'_, T, TxDma, RxDma> 1090#[cfg(all(feature = "unstable-traits", feature = "nightly"))]
1091mod eio {
1092 use super::*;
1093
1094 impl<T, TxDma, RxDma> embedded_io_async::Write for Uart<'_, T, TxDma, RxDma>
1054 where 1095 where
1055 T: BasicInstance, 1096 T: BasicInstance,
1056 TxDma: super::TxDma<T>, 1097 TxDma: super::TxDma<T>,
@@ -1065,14 +1106,7 @@ mod eio {
1065 } 1106 }
1066 } 1107 }
1067 1108
1068 impl<T, TxDma> ErrorType for UartTx<'_, T, TxDma> 1109 impl<T, TxDma> embedded_io_async::Write for UartTx<'_, T, TxDma>
1069 where
1070 T: BasicInstance,
1071 {
1072 type Error = Error;
1073 }
1074
1075 impl<T, TxDma> Write for UartTx<'_, T, TxDma>
1076 where 1110 where
1077 T: BasicInstance, 1111 T: BasicInstance,
1078 TxDma: super::TxDma<T>, 1112 TxDma: super::TxDma<T>,