aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlf Lilleengen <[email protected]>2024-07-03 07:45:14 +0000
committerGitHub <[email protected]>2024-07-03 07:45:14 +0000
commit8c54df10422e2bbcd1bae1f2cd0f282d31ef1851 (patch)
tree01ab92d391af5af44d2ad07d3c5ff0143c4e4a21
parentef78e3283b4a4efe213681351a8345b7439425a4 (diff)
parentb07570fce5341b2b16aaa77ab1b1043362ed2e2c (diff)
Merge pull request #3145 from embassy-rs/nrf-radio-fixes
fix cancellation hanging on event never occuring
-rw-r--r--embassy-nrf/src/radio/ble.rs9
1 files changed, 2 insertions, 7 deletions
diff --git a/embassy-nrf/src/radio/ble.rs b/embassy-nrf/src/radio/ble.rs
index 93003fb19..4f0b0641f 100644
--- a/embassy-nrf/src/radio/ble.rs
+++ b/embassy-nrf/src/radio/ble.rs
@@ -335,8 +335,6 @@ impl<'d, T: Instance> Radio<'d, T> {
335 } 335 }
336 336
337 async fn trigger_and_wait_end(&mut self, trigger: impl FnOnce()) { 337 async fn trigger_and_wait_end(&mut self, trigger: impl FnOnce()) {
338 //self.trace_state();
339
340 let r = T::regs(); 338 let r = T::regs();
341 let s = T::state(); 339 let s = T::state();
342 340
@@ -347,12 +345,10 @@ impl<'d, T: Instance> Radio<'d, T> {
347 trace!("radio drop: stopping"); 345 trace!("radio drop: stopping");
348 346
349 r.intenclr.write(|w| w.end().clear()); 347 r.intenclr.write(|w| w.end().clear());
350 r.events_end.reset();
351 348
352 r.tasks_stop.write(|w| unsafe { w.bits(1) }); 349 r.tasks_stop.write(|w| unsafe { w.bits(1) });
353 350
354 // The docs don't explicitly mention any event to acknowledge the stop task 351 r.events_end.reset();
355 while r.events_end.read().bits() == 0 {}
356 352
357 trace!("radio drop: stopped"); 353 trace!("radio drop: stopped");
358 }); 354 });
@@ -368,7 +364,6 @@ impl<'d, T: Instance> Radio<'d, T> {
368 364
369 // Trigger the transmission 365 // Trigger the transmission
370 trigger(); 366 trigger();
371 // self.trace_state();
372 367
373 // On poll check if interrupt happen 368 // On poll check if interrupt happen
374 poll_fn(|cx| { 369 poll_fn(|cx| {
@@ -382,7 +377,7 @@ impl<'d, T: Instance> Radio<'d, T> {
382 .await; 377 .await;
383 378
384 compiler_fence(Ordering::SeqCst); 379 compiler_fence(Ordering::SeqCst);
385 r.events_disabled.reset(); // ACK 380 r.events_end.reset(); // ACK
386 381
387 // Everthing ends fine, so it disable the drop 382 // Everthing ends fine, so it disable the drop
388 drop.defuse(); 383 drop.defuse();