aboutsummaryrefslogtreecommitdiff
path: root/examples/nrf/src/bin
diff options
context:
space:
mode:
authorhuntc <[email protected]>2021-07-06 23:20:47 +1000
committerhuntc <[email protected]>2021-07-15 12:31:52 +1000
commit816b78c0d9733362d8653eb2032f126e6a710030 (patch)
tree5748746b9f292d8f383e30ecf48a82bc916862e7 /examples/nrf/src/bin
parent1b9d5e50710cefde4bd1e234695783d62e824c68 (diff)
Reduces the types on sender and receiver
In exchange for an UnsafeCell being passed into split
Diffstat (limited to 'examples/nrf/src/bin')
-rw-r--r--examples/nrf/src/bin/mpsc.rs8
1 files changed, 5 insertions, 3 deletions
diff --git a/examples/nrf/src/bin/mpsc.rs b/examples/nrf/src/bin/mpsc.rs
index 6a0f8f471..d692abee2 100644
--- a/examples/nrf/src/bin/mpsc.rs
+++ b/examples/nrf/src/bin/mpsc.rs
@@ -8,6 +8,8 @@
8#[path = "../example_common.rs"] 8#[path = "../example_common.rs"]
9mod example_common; 9mod example_common;
10 10
11use core::cell::UnsafeCell;
12
11use defmt::panic; 13use defmt::panic;
12use embassy::executor::Spawner; 14use embassy::executor::Spawner;
13use embassy::time::{Duration, Timer}; 15use embassy::time::{Duration, Timer};
@@ -23,10 +25,10 @@ enum LedState {
23 Off, 25 Off,
24} 26}
25 27
26static CHANNEL: Forever<Channel<WithThreadModeOnly, LedState, 1>> = Forever::new(); 28static CHANNEL: Forever<UnsafeCell<Channel<WithThreadModeOnly, LedState, 1>>> = Forever::new();
27 29
28#[embassy::task(pool_size = 1)] 30#[embassy::task(pool_size = 1)]
29async fn my_task(sender: Sender<'static, WithThreadModeOnly, LedState, 1>) { 31async fn my_task(sender: Sender<'static, LedState>) {
30 loop { 32 loop {
31 let _ = sender.send(LedState::On).await; 33 let _ = sender.send(LedState::On).await;
32 Timer::after(Duration::from_secs(1)).await; 34 Timer::after(Duration::from_secs(1)).await;
@@ -39,7 +41,7 @@ async fn my_task(sender: Sender<'static, WithThreadModeOnly, LedState, 1>) {
39async fn main(spawner: Spawner, p: Peripherals) { 41async fn main(spawner: Spawner, p: Peripherals) {
40 let mut led = Output::new(p.P0_13, Level::Low, OutputDrive::Standard); 42 let mut led = Output::new(p.P0_13, Level::Low, OutputDrive::Standard);
41 43
42 let channel = CHANNEL.put(Channel::with_thread_mode_only()); 44 let channel = CHANNEL.put(UnsafeCell::new(Channel::with_thread_mode_only()));
43 let (sender, mut receiver) = mpsc::split(channel); 45 let (sender, mut receiver) = mpsc::split(channel);
44 46
45 spawner.spawn(my_task(sender)).unwrap(); 47 spawner.spawn(my_task(sender)).unwrap();