diff options
| -rw-r--r-- | embassy-sync/src/signal.rs | 19 | ||||
| -rw-r--r-- | examples/nrf/src/bin/usb_hid_keyboard.rs | 3 | ||||
| -rw-r--r-- | examples/stm32h7/src/bin/signal.rs | 3 | ||||
| -rw-r--r-- | examples/stm32wl/src/bin/subghz.rs | 3 |
4 files changed, 16 insertions, 12 deletions
diff --git a/embassy-sync/src/signal.rs b/embassy-sync/src/signal.rs index 8cb832a2b..c3c10a8af 100644 --- a/embassy-sync/src/signal.rs +++ b/embassy-sync/src/signal.rs | |||
| @@ -3,7 +3,7 @@ use core::cell::Cell; | |||
| 3 | use core::future::{poll_fn, Future}; | 3 | use core::future::{poll_fn, Future}; |
| 4 | use core::task::{Context, Poll, Waker}; | 4 | use core::task::{Context, Poll, Waker}; |
| 5 | 5 | ||
| 6 | use crate::blocking_mutex::raw::{CriticalSectionRawMutex, RawMutex}; | 6 | use crate::blocking_mutex::raw::RawMutex; |
| 7 | use crate::blocking_mutex::Mutex; | 7 | use crate::blocking_mutex::Mutex; |
| 8 | 8 | ||
| 9 | /// Single-slot signaling primitive. | 9 | /// Single-slot signaling primitive. |
| @@ -22,19 +22,20 @@ use crate::blocking_mutex::Mutex; | |||
| 22 | /// | 22 | /// |
| 23 | /// ``` | 23 | /// ``` |
| 24 | /// use embassy_sync::signal::Signal; | 24 | /// use embassy_sync::signal::Signal; |
| 25 | /// use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex; | ||
| 25 | /// | 26 | /// |
| 26 | /// enum SomeCommand { | 27 | /// enum SomeCommand { |
| 27 | /// On, | 28 | /// On, |
| 28 | /// Off, | 29 | /// Off, |
| 29 | /// } | 30 | /// } |
| 30 | /// | 31 | /// |
| 31 | /// static SOME_SIGNAL: Signal<SomeCommand> = Signal::new(); | 32 | /// static SOME_SIGNAL: Signal<CriticalSectionRawMutex, SomeCommand> = Signal::new(); |
| 32 | /// ``` | 33 | /// ``` |
| 33 | pub struct Signal<T, R = CriticalSectionRawMutex> | 34 | pub struct Signal<M, T> |
| 34 | where | 35 | where |
| 35 | R: RawMutex, | 36 | M: RawMutex, |
| 36 | { | 37 | { |
| 37 | state: Mutex<R, Cell<State<T>>>, | 38 | state: Mutex<M, Cell<State<T>>>, |
| 38 | } | 39 | } |
| 39 | 40 | ||
| 40 | enum State<T> { | 41 | enum State<T> { |
| @@ -43,9 +44,9 @@ enum State<T> { | |||
| 43 | Signaled(T), | 44 | Signaled(T), |
| 44 | } | 45 | } |
| 45 | 46 | ||
| 46 | impl<T, R> Signal<T, R> | 47 | impl<M, T> Signal<M, T> |
| 47 | where | 48 | where |
| 48 | R: RawMutex, | 49 | M: RawMutex, |
| 49 | { | 50 | { |
| 50 | /// Create a new `Signal`. | 51 | /// Create a new `Signal`. |
| 51 | pub const fn new() -> Self { | 52 | pub const fn new() -> Self { |
| @@ -55,9 +56,9 @@ where | |||
| 55 | } | 56 | } |
| 56 | } | 57 | } |
| 57 | 58 | ||
| 58 | impl<R, T: Send> Signal<T, R> | 59 | impl<M, T: Send> Signal<M, T> |
| 59 | where | 60 | where |
| 60 | R: RawMutex, | 61 | M: RawMutex, |
| 61 | { | 62 | { |
| 62 | /// Mark this Signal as signaled. | 63 | /// Mark this Signal as signaled. |
| 63 | pub fn signal(&self, val: T) { | 64 | pub fn signal(&self, val: T) { |
diff --git a/examples/nrf/src/bin/usb_hid_keyboard.rs b/examples/nrf/src/bin/usb_hid_keyboard.rs index 980bc1038..4eb7d37c9 100644 --- a/examples/nrf/src/bin/usb_hid_keyboard.rs +++ b/examples/nrf/src/bin/usb_hid_keyboard.rs | |||
| @@ -12,6 +12,7 @@ use embassy_futures::select::{select, Either}; | |||
| 12 | use embassy_nrf::gpio::{Input, Pin, Pull}; | 12 | use embassy_nrf::gpio::{Input, Pin, Pull}; |
| 13 | use embassy_nrf::usb::{Driver, PowerUsb}; | 13 | use embassy_nrf::usb::{Driver, PowerUsb}; |
| 14 | use embassy_nrf::{interrupt, pac}; | 14 | use embassy_nrf::{interrupt, pac}; |
| 15 | use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex; | ||
| 15 | use embassy_sync::signal::Signal; | 16 | use embassy_sync::signal::Signal; |
| 16 | use embassy_usb::control::OutResponse; | 17 | use embassy_usb::control::OutResponse; |
| 17 | use embassy_usb::{Builder, Config, DeviceStateHandler}; | 18 | use embassy_usb::{Builder, Config, DeviceStateHandler}; |
| @@ -77,7 +78,7 @@ async fn main(_spawner: Spawner) { | |||
| 77 | // Build the builder. | 78 | // Build the builder. |
| 78 | let mut usb = builder.build(); | 79 | let mut usb = builder.build(); |
| 79 | 80 | ||
| 80 | let remote_wakeup: Signal<_> = Signal::new(); | 81 | let remote_wakeup: Signal<CriticalSectionRawMutex, _> = Signal::new(); |
| 81 | 82 | ||
| 82 | // Run the USB device. | 83 | // Run the USB device. |
| 83 | let usb_fut = async { | 84 | let usb_fut = async { |
diff --git a/examples/stm32h7/src/bin/signal.rs b/examples/stm32h7/src/bin/signal.rs index cc3e4e3ca..6d7c168d5 100644 --- a/examples/stm32h7/src/bin/signal.rs +++ b/examples/stm32h7/src/bin/signal.rs | |||
| @@ -4,11 +4,12 @@ | |||
| 4 | 4 | ||
| 5 | use defmt::{info, unwrap}; | 5 | use defmt::{info, unwrap}; |
| 6 | use embassy_executor::Spawner; | 6 | use embassy_executor::Spawner; |
| 7 | use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex; | ||
| 7 | use embassy_sync::signal::Signal; | 8 | use embassy_sync::signal::Signal; |
| 8 | use embassy_time::{Duration, Timer}; | 9 | use embassy_time::{Duration, Timer}; |
| 9 | use {defmt_rtt as _, panic_probe as _}; | 10 | use {defmt_rtt as _, panic_probe as _}; |
| 10 | 11 | ||
| 11 | static SIGNAL: Signal<u32> = Signal::new(); | 12 | static SIGNAL: Signal<CriticalSectionRawMutex, u32> = Signal::new(); |
| 12 | 13 | ||
| 13 | #[embassy_executor::task] | 14 | #[embassy_executor::task] |
| 14 | async fn my_sending_task() { | 15 | async fn my_sending_task() { |
diff --git a/examples/stm32wl/src/bin/subghz.rs b/examples/stm32wl/src/bin/subghz.rs index 3c60a8de4..32c8b5515 100644 --- a/examples/stm32wl/src/bin/subghz.rs +++ b/examples/stm32wl/src/bin/subghz.rs | |||
| @@ -12,6 +12,7 @@ use embassy_stm32::gpio::{Input, Level, Output, Pull, Speed}; | |||
| 12 | use embassy_stm32::interrupt; | 12 | use embassy_stm32::interrupt; |
| 13 | use embassy_stm32::interrupt::{Interrupt, InterruptExt}; | 13 | use embassy_stm32::interrupt::{Interrupt, InterruptExt}; |
| 14 | use embassy_stm32::subghz::*; | 14 | use embassy_stm32::subghz::*; |
| 15 | use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex; | ||
| 15 | use embassy_sync::signal::Signal; | 16 | use embassy_sync::signal::Signal; |
| 16 | use {defmt_rtt as _, panic_probe as _}; | 17 | use {defmt_rtt as _, panic_probe as _}; |
| 17 | 18 | ||
| @@ -64,7 +65,7 @@ async fn main(_spawner: Spawner) { | |||
| 64 | let button = Input::new(p.PA0, Pull::Up); | 65 | let button = Input::new(p.PA0, Pull::Up); |
| 65 | let mut pin = ExtiInput::new(button, p.EXTI0); | 66 | let mut pin = ExtiInput::new(button, p.EXTI0); |
| 66 | 67 | ||
| 67 | static IRQ_SIGNAL: Signal<()> = Signal::new(); | 68 | static IRQ_SIGNAL: Signal<CriticalSectionRawMutex, ()> = Signal::new(); |
| 68 | let radio_irq = interrupt::take!(SUBGHZ_RADIO); | 69 | let radio_irq = interrupt::take!(SUBGHZ_RADIO); |
| 69 | radio_irq.set_handler(|_| { | 70 | radio_irq.set_handler(|_| { |
| 70 | IRQ_SIGNAL.signal(()); | 71 | IRQ_SIGNAL.signal(()); |
