diff options
| author | huntc <[email protected]> | 2021-12-10 15:11:41 +1100 |
|---|---|---|
| committer | huntc <[email protected]> | 2021-12-10 15:11:41 +1100 |
| commit | 45ef9444579c8d7af72fc2d42093f26ef6f6ac3c (patch) | |
| tree | 3750233f3e99bfce6c0c20c162c2694e653dc916 | |
| parent | 5d502ec0af15dd98696abe3835c52583766afb33 (diff) | |
Stm flush required implementing also, along with std alloc split
| -rw-r--r-- | embassy-stm32/src/usart/mod.rs | 14 | ||||
| -rw-r--r-- | embassy/src/io/util/split.rs | 3 |
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 | ||
| 37 | pub fn split<T: AsyncBufRead + AsyncWrite>(t: T) -> (ReadHalf<T>, WriteHalf<T>) { | 40 | pub fn split<T: AsyncBufRead + AsyncWrite>(t: T) -> (ReadHalf<T>, WriteHalf<T>) { |
