diff options
| author | Rogan Morrow <[email protected]> | 2025-02-28 12:30:23 +1100 |
|---|---|---|
| committer | Rogan Morrow <[email protected]> | 2025-02-28 12:30:23 +1100 |
| commit | 065071b4672e1223be22c5c746b5d97856ba8079 (patch) | |
| tree | 380a3dc4bd9e5420d15bbe21e78b0bddb232625a | |
| parent | 3b37c79331c191a5153bbe4ac7e464150c714f13 (diff) | |
add separate tx waker
| -rw-r--r-- | embassy-stm32/src/usart/mod.rs | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/embassy-stm32/src/usart/mod.rs b/embassy-stm32/src/usart/mod.rs index de7b3c8df..568067360 100644 --- a/embassy-stm32/src/usart/mod.rs +++ b/embassy-stm32/src/usart/mod.rs | |||
| @@ -85,6 +85,7 @@ unsafe fn on_interrupt(r: Regs, s: &'static State) { | |||
| 85 | 85 | ||
| 86 | compiler_fence(Ordering::SeqCst); | 86 | compiler_fence(Ordering::SeqCst); |
| 87 | s.rx_waker.wake(); | 87 | s.rx_waker.wake(); |
| 88 | s.tx_waker.wake(); | ||
| 88 | } | 89 | } |
| 89 | 90 | ||
| 90 | #[derive(Clone, Copy, PartialEq, Eq, Debug)] | 91 | #[derive(Clone, Copy, PartialEq, Eq, Debug)] |
| @@ -592,7 +593,7 @@ async fn flush(info: &Info, state: &State) -> Result<(), Error> { | |||
| 592 | 593 | ||
| 593 | // future which completes when Transmission complete is detected | 594 | // future which completes when Transmission complete is detected |
| 594 | let abort = poll_fn(move |cx| { | 595 | let abort = poll_fn(move |cx| { |
| 595 | state.rx_waker.register(cx.waker()); | 596 | state.tx_waker.register(cx.waker()); |
| 596 | 597 | ||
| 597 | let sr = sr(r).read(); | 598 | let sr = sr(r).read(); |
| 598 | if sr.tc() { | 599 | if sr.tc() { |
| @@ -2019,6 +2020,7 @@ enum Kind { | |||
| 2019 | 2020 | ||
| 2020 | struct State { | 2021 | struct State { |
| 2021 | rx_waker: AtomicWaker, | 2022 | rx_waker: AtomicWaker, |
| 2023 | tx_waker: AtomicWaker, | ||
| 2022 | tx_rx_refcount: AtomicU8, | 2024 | tx_rx_refcount: AtomicU8, |
| 2023 | } | 2025 | } |
| 2024 | 2026 | ||
| @@ -2026,6 +2028,7 @@ impl State { | |||
| 2026 | const fn new() -> Self { | 2028 | const fn new() -> Self { |
| 2027 | Self { | 2029 | Self { |
| 2028 | rx_waker: AtomicWaker::new(), | 2030 | rx_waker: AtomicWaker::new(), |
| 2031 | tx_waker: AtomicWaker::new(), | ||
| 2029 | tx_rx_refcount: AtomicU8::new(0), | 2032 | tx_rx_refcount: AtomicU8::new(0), |
| 2030 | } | 2033 | } |
| 2031 | } | 2034 | } |
