diff options
| author | Alpha3__0 <Alpha3.0gmail.com> | 2023-05-25 11:33:29 -0700 |
|---|---|---|
| committer | Alpha3__0 <Alpha3.0gmail.com> | 2023-05-25 11:33:29 -0700 |
| commit | 0d80a95e5415d9baf5a25fa6f7cb04b4d5d89827 (patch) | |
| tree | e7bd547a2e2dc66375ba3305b532b1b3eaf0e612 | |
| parent | 6efcc9acaa15c6fa696c67b224297f9086732a75 (diff) | |
Implement eh 0.2.* serial::Write for Uart/UartTx
| -rw-r--r-- | embassy-rp/src/uart/mod.rs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/embassy-rp/src/uart/mod.rs b/embassy-rp/src/uart/mod.rs index 7234336b4..7bd7be41d 100644 --- a/embassy-rp/src/uart/mod.rs +++ b/embassy-rp/src/uart/mod.rs | |||
| @@ -755,6 +755,32 @@ mod eh02 { | |||
| 755 | } | 755 | } |
| 756 | } | 756 | } |
| 757 | 757 | ||
| 758 | impl<'d, T: Instance, M: Mode> embedded_hal_02::serial::Write<u8> for UartTx<'d, T, M> { | ||
| 759 | type Error = Error; | ||
| 760 | |||
| 761 | fn write(&mut self, word: u8) -> nb::Result<(), Self::Error> { | ||
| 762 | let r = T::regs(); | ||
| 763 | unsafe { | ||
| 764 | if r.uartfr().read().txff() { | ||
| 765 | return Err(nb::Error::WouldBlock); | ||
| 766 | } | ||
| 767 | |||
| 768 | r.uartdr().write(|w| w.set_data(word)); | ||
| 769 | } | ||
| 770 | Ok(()) | ||
| 771 | } | ||
| 772 | |||
| 773 | fn flush(&mut self) -> nb::Result<(), Self::Error> { | ||
| 774 | let r = T::regs(); | ||
| 775 | unsafe { | ||
| 776 | if !r.uartfr().read().txfe() { | ||
| 777 | return Err(nb::Error::WouldBlock); | ||
| 778 | } | ||
| 779 | } | ||
| 780 | Ok(()) | ||
| 781 | } | ||
| 782 | } | ||
| 783 | |||
| 758 | impl<'d, T: Instance, M: Mode> embedded_hal_02::blocking::serial::Write<u8> for UartTx<'d, T, M> { | 784 | impl<'d, T: Instance, M: Mode> embedded_hal_02::blocking::serial::Write<u8> for UartTx<'d, T, M> { |
| 759 | type Error = Error; | 785 | type Error = Error; |
| 760 | 786 | ||
| @@ -775,6 +801,18 @@ mod eh02 { | |||
| 775 | } | 801 | } |
| 776 | } | 802 | } |
| 777 | 803 | ||
| 804 | impl<'d, T: Instance, M: Mode> embedded_hal_02::serial::Write<u8> for Uart<'d, T, M> { | ||
| 805 | type Error = Error; | ||
| 806 | |||
| 807 | fn write(&mut self, word: u8) -> Result<(), nb::Error<Self::Error>> { | ||
| 808 | embedded_hal_02::serial::Write::write(&mut self.tx, word) | ||
| 809 | } | ||
| 810 | |||
| 811 | fn flush(&mut self) -> Result<(), nb::Error<Self::Error>> { | ||
| 812 | embedded_hal_02::serial::Write::flush(&mut self.tx) | ||
| 813 | } | ||
| 814 | } | ||
| 815 | |||
| 778 | impl<'d, T: Instance, M: Mode> embedded_hal_02::blocking::serial::Write<u8> for Uart<'d, T, M> { | 816 | impl<'d, T: Instance, M: Mode> embedded_hal_02::blocking::serial::Write<u8> for Uart<'d, T, M> { |
| 779 | type Error = Error; | 817 | type Error = Error; |
| 780 | 818 | ||
