Struct embassy_sync::signal::Signal
source · pub struct Signal<M, T>where
M: RawMutex,{ /* private fields */ }
Expand description
Single-slot signaling primitive.
This is similar to a Channel
with a buffer size of 1, except
“sending” to it (calling Signal::signal
) when full will overwrite the previous value instead
of waiting for the receiver to pop the previous value.
It is useful for sending data between tasks when the receiver only cares about the latest data, and therefore it’s fine to “lose” messages. This is often the case for “state” updates.
For more advanced use cases, you might want to use Channel
instead.
Signals are generally declared as static
s and then borrowed as required.
use embassy_sync::signal::Signal;
use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex;
enum SomeCommand {
On,
Off,
}
static SOME_SIGNAL: Signal<CriticalSectionRawMutex, SomeCommand> = Signal::new();