aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlf Lilleengen <[email protected]>2021-05-10 20:16:13 +0200
committerDario Nieuwenhuis <[email protected]>2021-05-10 23:06:25 +0200
commit687dda106f5090a3c056f503827d0fec3b8b2fa5 (patch)
tree6fcd1eac4130eaee0a1fe66853e3e6c23e4540e5
parent5afe01617a8fe9e46b4bde47a3dfa24e737ae9fa (diff)
Read rx amount outside of poll_fn
-rw-r--r--embassy-nrf/src/uarte.rs7
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();