diff options
| author | Ulf Lilleengen <[email protected]> | 2021-05-10 20:16:13 +0200 |
|---|---|---|
| committer | Dario Nieuwenhuis <[email protected]> | 2021-05-10 23:06:25 +0200 |
| commit | 687dda106f5090a3c056f503827d0fec3b8b2fa5 (patch) | |
| tree | 6fcd1eac4130eaee0a1fe66853e3e6c23e4540e5 | |
| parent | 5afe01617a8fe9e46b4bde47a3dfa24e737ae9fa (diff) | |
Read rx amount outside of poll_fn
| -rw-r--r-- | embassy-nrf/src/uarte.rs | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/embassy-nrf/src/uarte.rs b/embassy-nrf/src/uarte.rs index 7172f5033..36c9e6b23 100644 --- a/embassy-nrf/src/uarte.rs +++ b/embassy-nrf/src/uarte.rs | |||
| @@ -400,11 +400,10 @@ impl<'d, U: Instance, T: TimerInstance> ReadUntilIdle for UarteWithIdle<'d, U, T | |||
| 400 | trace!("startrx"); | 400 | trace!("startrx"); |
| 401 | r.tasks_startrx.write(|w| unsafe { w.bits(1) }); | 401 | r.tasks_startrx.write(|w| unsafe { w.bits(1) }); |
| 402 | 402 | ||
| 403 | let n: usize = poll_fn(|cx| { | 403 | poll_fn(|cx| { |
| 404 | s.endrx_waker.register(cx.waker()); | 404 | s.endrx_waker.register(cx.waker()); |
| 405 | if r.events_endrx.read().bits() != 0 { | 405 | if r.events_endrx.read().bits() != 0 { |
| 406 | let n: usize = r.rxd.amount.read().amount().bits() as usize; | 406 | return Poll::Ready(()); |
| 407 | return Poll::Ready(n); | ||
| 408 | } | 407 | } |
| 409 | Poll::Pending | 408 | Poll::Pending |
| 410 | }) | 409 | }) |
| @@ -412,6 +411,8 @@ impl<'d, U: Instance, T: TimerInstance> ReadUntilIdle for UarteWithIdle<'d, U, T | |||
| 412 | 411 | ||
| 413 | compiler_fence(Ordering::SeqCst); | 412 | compiler_fence(Ordering::SeqCst); |
| 414 | r.events_rxstarted.reset(); | 413 | r.events_rxstarted.reset(); |
| 414 | let n = r.rxd.amount.read().amount().bits() as usize; | ||
| 415 | |||
| 415 | // Stop timer | 416 | // Stop timer |
| 416 | rt.tasks_stop.write(|w| unsafe { w.bits(1) }); | 417 | rt.tasks_stop.write(|w| unsafe { w.bits(1) }); |
| 417 | drop.defuse(); | 418 | drop.defuse(); |
