From a07702ba7bde8410b224e80afb6aa7a93f1fb375 Mon Sep 17 00:00:00 2001 From: Ulf Lilleengen <ulf.lilleengen@gmail.com> Date: Wed, 3 Jul 2024 09:03:25 +0200 Subject: [PATCH 1/2] fix cancellation hanging on event never occuring - The end event is not triggered by stop and might therefor never occur - Clear the end_event after operation is done instead of disabled --- embassy-nrf/src/radio/ble.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/embassy-nrf/src/radio/ble.rs b/embassy-nrf/src/radio/ble.rs index 93003fb19..0fae54f52 100644 --- a/embassy-nrf/src/radio/ble.rs +++ b/embassy-nrf/src/radio/ble.rs @@ -347,12 +347,10 @@ impl<'d, T: Instance> Radio<'d, T> { trace!("radio drop: stopping"); r.intenclr.write(|w| w.end().clear()); - r.events_end.reset(); r.tasks_stop.write(|w| unsafe { w.bits(1) }); - // The docs don't explicitly mention any event to acknowledge the stop task - while r.events_end.read().bits() == 0 {} + r.events_end.reset(); trace!("radio drop: stopped"); }); @@ -382,7 +380,7 @@ impl<'d, T: Instance> Radio<'d, T> { .await; compiler_fence(Ordering::SeqCst); - r.events_disabled.reset(); // ACK + r.events_end.reset(); // ACK // Everthing ends fine, so it disable the drop drop.defuse(); From b07570fce5341b2b16aaa77ab1b1043362ed2e2c Mon Sep 17 00:00:00 2001 From: Ulf Lilleengen <ulf.lilleengen@gmail.com> Date: Wed, 3 Jul 2024 09:04:47 +0200 Subject: [PATCH 2/2] remove unused logging --- embassy-nrf/src/radio/ble.rs | 3 --- 1 file changed, 3 deletions(-) diff --git a/embassy-nrf/src/radio/ble.rs b/embassy-nrf/src/radio/ble.rs index 0fae54f52..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> { } async fn trigger_and_wait_end(&mut self, trigger: impl FnOnce()) { - //self.trace_state(); - let r = T::regs(); let s = T::state(); @@ -366,7 +364,6 @@ impl<'d, T: Instance> Radio<'d, T> { // Trigger the transmission trigger(); - // self.trace_state(); // On poll check if interrupt happen poll_fn(|cx| {