aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorivmarkov <[email protected]>2022-09-24 12:08:46 +0300
committerivmarkov <[email protected]>2022-09-25 09:40:36 +0300
commitc5ce02b30e488aade19f9f859425aa127d085b92 (patch)
treed5795a6d01b6125c50a6010a850f4c0a8da55040
parent85366661489c09fa8dec1375e9b9beee522e5e9f (diff)
Remove default, reorder generic params
-rw-r--r--embassy-sync/src/signal.rs19
-rw-r--r--examples/nrf/src/bin/usb_hid_keyboard.rs3
-rw-r--r--examples/stm32h7/src/bin/signal.rs3
-rw-r--r--examples/stm32wl/src/bin/subghz.rs3
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;
3use core::future::{poll_fn, Future}; 3use core::future::{poll_fn, Future};
4use core::task::{Context, Poll, Waker}; 4use core::task::{Context, Poll, Waker};
5 5
6use crate::blocking_mutex::raw::{CriticalSectionRawMutex, RawMutex}; 6use crate::blocking_mutex::raw::RawMutex;
7use crate::blocking_mutex::Mutex; 7use 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/// ```
33pub struct Signal<T, R = CriticalSectionRawMutex> 34pub struct Signal<M, T>
34where 35where
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
40enum State<T> { 41enum State<T> {
@@ -43,9 +44,9 @@ enum State<T> {
43 Signaled(T), 44 Signaled(T),
44} 45}
45 46
46impl<T, R> Signal<T, R> 47impl<M, T> Signal<M, T>
47where 48where
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
58impl<R, T: Send> Signal<T, R> 59impl<M, T: Send> Signal<M, T>
59where 60where
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};
12use embassy_nrf::gpio::{Input, Pin, Pull}; 12use embassy_nrf::gpio::{Input, Pin, Pull};
13use embassy_nrf::usb::{Driver, PowerUsb}; 13use embassy_nrf::usb::{Driver, PowerUsb};
14use embassy_nrf::{interrupt, pac}; 14use embassy_nrf::{interrupt, pac};
15use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex;
15use embassy_sync::signal::Signal; 16use embassy_sync::signal::Signal;
16use embassy_usb::control::OutResponse; 17use embassy_usb::control::OutResponse;
17use embassy_usb::{Builder, Config, DeviceStateHandler}; 18use 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
5use defmt::{info, unwrap}; 5use defmt::{info, unwrap};
6use embassy_executor::Spawner; 6use embassy_executor::Spawner;
7use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex;
7use embassy_sync::signal::Signal; 8use embassy_sync::signal::Signal;
8use embassy_time::{Duration, Timer}; 9use embassy_time::{Duration, Timer};
9use {defmt_rtt as _, panic_probe as _}; 10use {defmt_rtt as _, panic_probe as _};
10 11
11static SIGNAL: Signal<u32> = Signal::new(); 12static SIGNAL: Signal<CriticalSectionRawMutex, u32> = Signal::new();
12 13
13#[embassy_executor::task] 14#[embassy_executor::task]
14async fn my_sending_task() { 15async 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};
12use embassy_stm32::interrupt; 12use embassy_stm32::interrupt;
13use embassy_stm32::interrupt::{Interrupt, InterruptExt}; 13use embassy_stm32::interrupt::{Interrupt, InterruptExt};
14use embassy_stm32::subghz::*; 14use embassy_stm32::subghz::*;
15use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex;
15use embassy_sync::signal::Signal; 16use embassy_sync::signal::Signal;
16use {defmt_rtt as _, panic_probe as _}; 17use {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(());