diff options
| author | Mathias <[email protected]> | 2023-09-14 10:09:09 +0200 |
|---|---|---|
| committer | Mathias <[email protected]> | 2023-09-14 10:09:09 +0200 |
| commit | 49847ff4320daaae16a7e46c43bfb70f9ea3e3d6 (patch) | |
| tree | c5251a695bda99e8de4a0384bd2633065bceabad | |
| parent | 9c647dd0e8af6ab832133a7d91765a30a9386e5e (diff) | |
Implement blocking embedded-io::Write for Uart & UartTx
| -rw-r--r-- | embassy-stm32/src/usart/buffered.rs | 6 | ||||
| -rw-r--r-- | embassy-stm32/src/usart/mod.rs | 70 |
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 | ||
| 413 | impl embedded_io_async::Error for Error { | ||
| 414 | fn kind(&self) -> embedded_io_async::ErrorKind { | ||
| 415 | embedded_io_async::ErrorKind::Other | ||
| 416 | } | ||
| 417 | } | ||
| 418 | |||
| 419 | impl<'d, T: BasicInstance> embedded_io_async::ErrorType for BufferedUart<'d, T> { | 413 | impl<'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"))] | 1040 | impl embedded_io::Error for Error { |
| 1041 | mod 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::*; | 1046 | impl<T, TxDma, RxDma> embedded_io::ErrorType for Uart<'_, T, TxDma, RxDma> |
| 1047 | where | ||
| 1048 | T: BasicInstance, | ||
| 1049 | { | ||
| 1050 | type Error = Error; | ||
| 1051 | } | ||
| 1045 | 1052 | ||
| 1046 | impl<T, TxDma, RxDma> ErrorType for Uart<'_, T, TxDma, RxDma> | 1053 | impl<T, TxDma> embedded_io::ErrorType for UartTx<'_, T, TxDma> |
| 1047 | where | 1054 | where |
| 1048 | T: BasicInstance, | 1055 | T: BasicInstance, |
| 1049 | { | 1056 | { |
| 1050 | type Error = Error; | 1057 | type Error = Error; |
| 1058 | } | ||
| 1059 | |||
| 1060 | impl<T, TxDma, RxDma> embedded_io::Write for Uart<'_, T, TxDma, RxDma> | ||
| 1061 | where | ||
| 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 | |||
| 1075 | impl<T, TxDma> embedded_io::Write for UartTx<'_, T, TxDma> | ||
| 1076 | where | ||
| 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"))] |
| 1091 | mod 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>, |
