diff --git a/embassy/src/util/signal.rs b/embassy/src/util/signal.rs index bde10c56..cb641061 100644 --- a/embassy/src/util/signal.rs +++ b/embassy/src/util/signal.rs @@ -62,4 +62,13 @@ impl Signal { pub fn wait(&self) -> impl Future + '_ { futures::future::poll_fn(move |cx| self.poll_wait(cx)) } + + /// Blocks until the signal has been received. + /// + /// Returns immediately when [`poll_wait()`] has not been called before. + pub fn blocking_wait(&self) { + while cortex_m::interrupt::free(|_| { + matches!(unsafe { &*self.state.get() }, State::Waiting(_)) + }) {} + } }