aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embassy-stm32/src/usart/mod.rs14
-rw-r--r--embassy/src/io/util/split.rs3
2 files changed, 17 insertions, 0 deletions
diff --git a/embassy-stm32/src/usart/mod.rs b/embassy-stm32/src/usart/mod.rs
index a835093c5..a87b7c020 100644
--- a/embassy-stm32/src/usart/mod.rs
+++ b/embassy-stm32/src/usart/mod.rs
@@ -449,6 +449,20 @@ mod buffered {
449 } 449 }
450 poll 450 poll
451 } 451 }
452
453 fn poll_flush(
454 mut self: Pin<&mut Self>,
455 cx: &mut Context<'_>,
456 ) -> Poll<Result<(), embassy::io::Error>> {
457 self.inner.with(|state| {
458 if !state.tx.is_empty() {
459 state.tx_waker.register(cx.waker());
460 return Poll::Pending;
461 }
462
463 Poll::Ready(Ok(()))
464 })
465 }
452 } 466 }
453} 467}
454 468
diff --git a/embassy/src/io/util/split.rs b/embassy/src/io/util/split.rs
index 0cebb5cbd..cc029aa53 100644
--- a/embassy/src/io/util/split.rs
+++ b/embassy/src/io/util/split.rs
@@ -32,6 +32,9 @@ impl<T: AsyncWrite + Unpin> AsyncWrite for WriteHalf<T> {
32 fn poll_write(self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8]) -> Poll<Result<usize>> { 32 fn poll_write(self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &[u8]) -> Poll<Result<usize>> {
33 Pin::new(unsafe { &mut *self.handle.get() }).poll_write(cx, buf) 33 Pin::new(unsafe { &mut *self.handle.get() }).poll_write(cx, buf)
34 } 34 }
35 fn poll_flush(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Result<()>> {
36 Pin::new(unsafe { &mut *self.handle.get() }).poll_flush(cx)
37 }
35} 38}
36 39
37pub fn split<T: AsyncBufRead + AsyncWrite>(t: T) -> (ReadHalf<T>, WriteHalf<T>) { 40pub fn split<T: AsyncBufRead + AsyncWrite>(t: T) -> (ReadHalf<T>, WriteHalf<T>) {