aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authormaor1993 <[email protected]>2025-08-29 16:35:21 +0300
committerGitHub <[email protected]>2025-08-29 16:35:21 +0300
commitacc3c4b98c5238950640409d6a8ab6029edda3c9 (patch)
tree9153c39153c3dbd2af49a0ff6fce46f7d5d8d3e2 /examples
parent1db247f5a493f178751ba083483009bfa31c7899 (diff)
parentf86cf87f2f20f723e2ba2fe7d83908a2b3bac2d1 (diff)
Merge branch 'main' into main
Diffstat (limited to 'examples')
-rw-r--r--examples/mimxrt6/src/bin/uart-async.rs4
-rw-r--r--examples/mimxrt6/src/bin/uart.rs4
-rw-r--r--examples/nrf-rtos-trace/src/bin/rtos_trace.rs6
-rw-r--r--examples/nrf52840/src/bin/channel.rs2
-rw-r--r--examples/nrf52840/src/bin/channel_sender_receiver.rs4
-rw-r--r--examples/nrf52840/src/bin/ethernet_enc28j60.rs2
-rw-r--r--examples/nrf52840/src/bin/executor_fairness_test.rs6
-rw-r--r--examples/nrf52840/src/bin/gpiote_port.rs8
-rw-r--r--examples/nrf52840/src/bin/manually_create_executor.rs4
-rw-r--r--examples/nrf52840/src/bin/multiprio.rs6
-rw-r--r--examples/nrf52840/src/bin/mutex.rs2
-rw-r--r--examples/nrf52840/src/bin/pubsub.rs6
-rw-r--r--examples/nrf52840/src/bin/raw_spawn.rs4
-rw-r--r--examples/nrf52840/src/bin/self_spawn.rs4
-rw-r--r--examples/nrf52840/src/bin/self_spawn_current_executor.rs4
-rw-r--r--examples/nrf52840/src/bin/timer.rs4
-rw-r--r--examples/nrf52840/src/bin/uart_split.rs2
-rw-r--r--examples/nrf52840/src/bin/usb_ethernet.rs6
-rw-r--r--examples/nrf52840/src/bin/usb_serial_multitask.rs4
-rw-r--r--examples/nrf52840/src/bin/wifi_esp_hosted.rs4
-rw-r--r--examples/nrf9160/src/bin/modem_tcp_client.rs10
-rw-r--r--examples/rp/src/bin/assign_resources.rs6
-rw-r--r--examples/rp/src/bin/blinky_two_channels.rs4
-rw-r--r--examples/rp/src/bin/blinky_two_tasks.rs4
-rw-r--r--examples/rp/src/bin/ethernet_w5500_icmp.rs4
-rw-r--r--examples/rp/src/bin/ethernet_w5500_icmp_ping.rs4
-rw-r--r--examples/rp/src/bin/ethernet_w5500_multisocket.rs8
-rw-r--r--examples/rp/src/bin/ethernet_w5500_tcp_client.rs4
-rw-r--r--examples/rp/src/bin/ethernet_w5500_tcp_server.rs4
-rw-r--r--examples/rp/src/bin/ethernet_w5500_udp.rs4
-rw-r--r--examples/rp/src/bin/i2c_slave.rs4
-rw-r--r--examples/rp/src/bin/interrupt.rs2
-rw-r--r--examples/rp/src/bin/multicore.rs4
-rw-r--r--examples/rp/src/bin/multiprio.rs6
-rw-r--r--examples/rp/src/bin/orchestrate_tasks.rs14
-rw-r--r--examples/rp/src/bin/pio_async.rs6
-rw-r--r--examples/rp/src/bin/pio_rotary_encoder.rs4
-rw-r--r--examples/rp/src/bin/pwm.rs4
-rw-r--r--examples/rp/src/bin/shared_bus.rs8
-rw-r--r--examples/rp/src/bin/sharing.rs6
-rw-r--r--examples/rp/src/bin/uart_buffered_split.rs2
-rw-r--r--examples/rp/src/bin/uart_unidir.rs2
-rw-r--r--examples/rp/src/bin/usb_ethernet.rs6
-rw-r--r--examples/rp/src/bin/usb_logger.rs2
-rw-r--r--examples/rp/src/bin/usb_serial.rs2
-rw-r--r--examples/rp/src/bin/usb_serial_with_handler.rs2
-rw-r--r--examples/rp/src/bin/wifi_ap_tcp_server.rs4
-rw-r--r--examples/rp/src/bin/wifi_blinky.rs2
-rw-r--r--examples/rp/src/bin/wifi_scan.rs2
-rw-r--r--examples/rp/src/bin/wifi_tcp_server.rs4
-rw-r--r--examples/rp/src/bin/wifi_webrequest.rs4
-rw-r--r--examples/rp/src/bin/zerocopy.rs4
-rw-r--r--examples/rp235x/src/bin/assign_resources.rs6
-rw-r--r--examples/rp235x/src/bin/blinky_two_channels.rs4
-rw-r--r--examples/rp235x/src/bin/blinky_two_tasks.rs4
-rw-r--r--examples/rp235x/src/bin/blinky_wifi.rs2
-rw-r--r--examples/rp235x/src/bin/blinky_wifi_pico_plus_2.rs2
-rw-r--r--examples/rp235x/src/bin/ethernet_w5500_icmp.rs4
-rw-r--r--examples/rp235x/src/bin/ethernet_w5500_icmp_ping.rs4
-rw-r--r--examples/rp235x/src/bin/ethernet_w5500_multisocket.rs8
-rw-r--r--examples/rp235x/src/bin/ethernet_w5500_tcp_client.rs4
-rw-r--r--examples/rp235x/src/bin/ethernet_w5500_tcp_server.rs4
-rw-r--r--examples/rp235x/src/bin/ethernet_w5500_udp.rs4
-rw-r--r--examples/rp235x/src/bin/i2c_slave.rs4
-rw-r--r--examples/rp235x/src/bin/interrupt.rs2
-rw-r--r--examples/rp235x/src/bin/multicore.rs4
-rw-r--r--examples/rp235x/src/bin/multiprio.rs6
-rw-r--r--examples/rp235x/src/bin/pio_async.rs6
-rw-r--r--examples/rp235x/src/bin/pio_rotary_encoder.rs4
-rw-r--r--examples/rp235x/src/bin/pwm.rs4
-rw-r--r--examples/rp235x/src/bin/shared_bus.rs8
-rw-r--r--examples/rp235x/src/bin/sharing.rs6
-rw-r--r--examples/rp235x/src/bin/uart_buffered_split.rs2
-rw-r--r--examples/rp235x/src/bin/uart_unidir.rs2
-rw-r--r--examples/rp235x/src/bin/zerocopy.rs4
-rw-r--r--examples/std/src/bin/net.rs4
-rw-r--r--examples/std/src/bin/net_dns.rs4
-rw-r--r--examples/std/src/bin/net_ppp.rs6
-rw-r--r--examples/std/src/bin/net_udp.rs4
-rw-r--r--examples/std/src/bin/serial.rs2
-rw-r--r--examples/std/src/bin/tcp_accept.rs4
-rw-r--r--examples/std/src/bin/tick.rs2
-rw-r--r--examples/stm32f0/src/bin/button_controlled_blink.rs2
-rw-r--r--examples/stm32f0/src/bin/multiprio.rs6
-rw-r--r--examples/stm32f1/src/bin/input_capture.rs2
-rw-r--r--examples/stm32f1/src/bin/pwm_input.rs2
-rw-r--r--examples/stm32f3/src/bin/button_events.rs4
-rw-r--r--examples/stm32f3/src/bin/multiprio.rs6
-rw-r--r--examples/stm32f4/src/bin/adc_dma.rs2
-rw-r--r--examples/stm32f4/src/bin/eth.rs2
-rw-r--r--examples/stm32f4/src/bin/eth_w5500.rs4
-rw-r--r--examples/stm32f4/src/bin/flash_async.rs2
-rw-r--r--examples/stm32f4/src/bin/input_capture.rs2
-rw-r--r--examples/stm32f4/src/bin/multiprio.rs6
-rw-r--r--examples/stm32f4/src/bin/pwm_input.rs2
-rw-r--r--examples/stm32f4/src/bin/usb_ethernet.rs6
-rw-r--r--examples/stm32f4/src/bin/usb_uac_speaker.rs10
-rw-r--r--examples/stm32f7/src/bin/can.rs2
-rw-r--r--examples/stm32f7/src/bin/eth.rs2
-rw-r--r--examples/stm32g0/src/bin/input_capture.rs2
-rw-r--r--examples/stm32g0/src/bin/pwm_input.rs2
-rw-r--r--examples/stm32g4/src/bin/i2c_slave.rs4
-rw-r--r--examples/stm32h5/src/bin/adc_dma.rs4
-rw-r--r--examples/stm32h5/src/bin/eth.rs2
-rw-r--r--examples/stm32h5/src/bin/stop.rs6
-rw-r--r--examples/stm32h5/src/bin/usart.rs2
-rw-r--r--examples/stm32h5/src/bin/usart_dma.rs2
-rw-r--r--examples/stm32h5/src/bin/usart_split.rs2
-rw-r--r--examples/stm32h5/src/bin/usb_uac_speaker.rs10
-rw-r--r--examples/stm32h7/src/bin/dac_dma.rs4
-rw-r--r--examples/stm32h7/src/bin/eth.rs2
-rw-r--r--examples/stm32h7/src/bin/eth_client.rs2
-rw-r--r--examples/stm32h7/src/bin/eth_client_mii.rs2
-rw-r--r--examples/stm32h7/src/bin/i2c_shared.rs4
-rw-r--r--examples/stm32h7/src/bin/multiprio.rs6
-rw-r--r--examples/stm32h7/src/bin/signal.rs2
-rw-r--r--examples/stm32h7/src/bin/spi.rs2
-rw-r--r--examples/stm32h7/src/bin/spi_bdma.rs2
-rw-r--r--examples/stm32h7/src/bin/spi_dma.rs2
-rw-r--r--examples/stm32h7/src/bin/usart.rs2
-rw-r--r--examples/stm32h7/src/bin/usart_dma.rs2
-rw-r--r--examples/stm32h7/src/bin/usart_split.rs2
-rw-r--r--examples/stm32h735/src/bin/ltdc.rs2
-rw-r--r--examples/stm32h755cm4/src/bin/intercore.rs2
-rw-r--r--examples/stm32h7rs/src/bin/eth.rs2
-rw-r--r--examples/stm32h7rs/src/bin/multiprio.rs6
-rw-r--r--examples/stm32h7rs/src/bin/signal.rs2
-rw-r--r--examples/stm32h7rs/src/bin/spi.rs2
-rw-r--r--examples/stm32h7rs/src/bin/spi_dma.rs2
-rw-r--r--examples/stm32h7rs/src/bin/usart.rs2
-rw-r--r--examples/stm32h7rs/src/bin/usart_dma.rs2
-rw-r--r--examples/stm32h7rs/src/bin/usart_split.rs2
-rw-r--r--examples/stm32l0/src/bin/raw_spawn.rs4
-rw-r--r--examples/stm32l4/src/bin/dac_dma.rs4
-rw-r--r--examples/stm32l4/src/bin/spe_adin1110_http_server.rs8
-rw-r--r--examples/stm32l5/src/bin/stop.rs6
-rw-r--r--examples/stm32l5/src/bin/usb_ethernet.rs6
-rw-r--r--examples/stm32u5/src/bin/ltdc.rs2
-rw-r--r--examples/stm32wb/src/bin/gatt_server.rs2
-rw-r--r--examples/stm32wb/src/bin/mac_ffd.rs2
-rw-r--r--examples/stm32wb/src/bin/mac_ffd_net.rs4
-rw-r--r--examples/stm32wb/src/bin/mac_rfd.rs2
-rw-r--r--examples/stm32wb/src/bin/tl_mbox_mac.rs2
-rw-r--r--examples/wasm/src/lib.rs2
144 files changed, 276 insertions, 280 deletions
diff --git a/examples/mimxrt6/src/bin/uart-async.rs b/examples/mimxrt6/src/bin/uart-async.rs
index 58e31f379..d808d755c 100644
--- a/examples/mimxrt6/src/bin/uart-async.rs
+++ b/examples/mimxrt6/src/bin/uart-async.rs
@@ -69,7 +69,7 @@ async fn main(spawner: Spawner) {
69 Default::default(), 69 Default::default(),
70 ) 70 )
71 .unwrap(); 71 .unwrap();
72 spawner.must_spawn(usart4_task(usart4)); 72 spawner.spawn(usart4_task(usart4).unwrap());
73 73
74 let usart2 = Uart::new_with_rtscts( 74 let usart2 = Uart::new_with_rtscts(
75 p.FLEXCOMM2, 75 p.FLEXCOMM2,
@@ -83,5 +83,5 @@ async fn main(spawner: Spawner) {
83 Default::default(), 83 Default::default(),
84 ) 84 )
85 .unwrap(); 85 .unwrap();
86 spawner.must_spawn(usart2_task(usart2)); 86 spawner.spawn(usart2_task(usart2).unwrap());
87} 87}
diff --git a/examples/mimxrt6/src/bin/uart.rs b/examples/mimxrt6/src/bin/uart.rs
index d6a75f85d..1636c958f 100644
--- a/examples/mimxrt6/src/bin/uart.rs
+++ b/examples/mimxrt6/src/bin/uart.rs
@@ -48,8 +48,8 @@ async fn main(spawner: Spawner) {
48 let usart4 = Uart::new_blocking(p.FLEXCOMM4, p.PIO0_29, p.PIO0_30, Default::default()).unwrap(); 48 let usart4 = Uart::new_blocking(p.FLEXCOMM4, p.PIO0_29, p.PIO0_30, Default::default()).unwrap();
49 49
50 let (_, usart4) = usart4.split(); 50 let (_, usart4) = usart4.split();
51 spawner.must_spawn(usart4_task(usart4)); 51 spawner.spawn(usart4_task(usart4).unwrap());
52 52
53 let usart2 = UartTx::new_blocking(p.FLEXCOMM2, p.PIO0_15, Default::default()).unwrap(); 53 let usart2 = UartTx::new_blocking(p.FLEXCOMM2, p.PIO0_15, Default::default()).unwrap();
54 spawner.must_spawn(usart2_task(usart2)); 54 spawner.spawn(usart2_task(usart2).unwrap());
55} 55}
diff --git a/examples/nrf-rtos-trace/src/bin/rtos_trace.rs b/examples/nrf-rtos-trace/src/bin/rtos_trace.rs
index 41cc06417..c1e7f8f58 100644
--- a/examples/nrf-rtos-trace/src/bin/rtos_trace.rs
+++ b/examples/nrf-rtos-trace/src/bin/rtos_trace.rs
@@ -63,7 +63,7 @@ async fn main(spawner: Spawner) {
63 ::log::set_max_level(::log::LevelFilter::Trace); 63 ::log::set_max_level(::log::LevelFilter::Trace);
64 } 64 }
65 65
66 spawner.spawn(run1()).unwrap(); 66 spawner.spawn(run1().unwrap());
67 spawner.spawn(run2()).unwrap(); 67 spawner.spawn(run2().unwrap());
68 spawner.spawn(run3()).unwrap(); 68 spawner.spawn(run3().unwrap());
69} 69}
diff --git a/examples/nrf52840/src/bin/channel.rs b/examples/nrf52840/src/bin/channel.rs
index e06ba1c73..ffa539808 100644
--- a/examples/nrf52840/src/bin/channel.rs
+++ b/examples/nrf52840/src/bin/channel.rs
@@ -31,7 +31,7 @@ async fn main(spawner: Spawner) {
31 let p = embassy_nrf::init(Default::default()); 31 let p = embassy_nrf::init(Default::default());
32 let mut led = Output::new(p.P0_13, Level::Low, OutputDrive::Standard); 32 let mut led = Output::new(p.P0_13, Level::Low, OutputDrive::Standard);
33 33
34 unwrap!(spawner.spawn(my_task())); 34 spawner.spawn(unwrap!(my_task()));
35 35
36 loop { 36 loop {
37 match CHANNEL.receive().await { 37 match CHANNEL.receive().await {
diff --git a/examples/nrf52840/src/bin/channel_sender_receiver.rs b/examples/nrf52840/src/bin/channel_sender_receiver.rs
index 74c62ca20..09050db68 100644
--- a/examples/nrf52840/src/bin/channel_sender_receiver.rs
+++ b/examples/nrf52840/src/bin/channel_sender_receiver.rs
@@ -45,6 +45,6 @@ async fn main(spawner: Spawner) {
45 let p = embassy_nrf::init(Default::default()); 45 let p = embassy_nrf::init(Default::default());
46 let channel = CHANNEL.init(Channel::new()); 46 let channel = CHANNEL.init(Channel::new());
47 47
48 unwrap!(spawner.spawn(send_task(channel.sender()))); 48 spawner.spawn(unwrap!(send_task(channel.sender())));
49 unwrap!(spawner.spawn(recv_task(p.P0_13.into(), channel.receiver()))); 49 spawner.spawn(unwrap!(recv_task(p.P0_13.into(), channel.receiver())));
50} 50}
diff --git a/examples/nrf52840/src/bin/ethernet_enc28j60.rs b/examples/nrf52840/src/bin/ethernet_enc28j60.rs
index 0946492fe..3bb255a72 100644
--- a/examples/nrf52840/src/bin/ethernet_enc28j60.rs
+++ b/examples/nrf52840/src/bin/ethernet_enc28j60.rs
@@ -70,7 +70,7 @@ async fn main(spawner: Spawner) {
70 static RESOURCES: StaticCell<StackResources<3>> = StaticCell::new(); 70 static RESOURCES: StaticCell<StackResources<3>> = StaticCell::new();
71 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed); 71 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed);
72 72
73 unwrap!(spawner.spawn(net_task(runner))); 73 spawner.spawn(unwrap!(net_task(runner)));
74 74
75 // And now we can use it! 75 // And now we can use it!
76 76
diff --git a/examples/nrf52840/src/bin/executor_fairness_test.rs b/examples/nrf52840/src/bin/executor_fairness_test.rs
index df6e7af3f..70c9405f0 100644
--- a/examples/nrf52840/src/bin/executor_fairness_test.rs
+++ b/examples/nrf52840/src/bin/executor_fairness_test.rs
@@ -36,7 +36,7 @@ async fn run3() {
36#[embassy_executor::main] 36#[embassy_executor::main]
37async fn main(spawner: Spawner) { 37async fn main(spawner: Spawner) {
38 let _p = embassy_nrf::init(Default::default()); 38 let _p = embassy_nrf::init(Default::default());
39 unwrap!(spawner.spawn(run1())); 39 spawner.spawn(unwrap!(run1()));
40 unwrap!(spawner.spawn(run2())); 40 spawner.spawn(unwrap!(run2()));
41 unwrap!(spawner.spawn(run3())); 41 spawner.spawn(unwrap!(run3()));
42} 42}
diff --git a/examples/nrf52840/src/bin/gpiote_port.rs b/examples/nrf52840/src/bin/gpiote_port.rs
index 0dddb1a97..66dbd32dc 100644
--- a/examples/nrf52840/src/bin/gpiote_port.rs
+++ b/examples/nrf52840/src/bin/gpiote_port.rs
@@ -26,8 +26,8 @@ async fn main(spawner: Spawner) {
26 let btn3 = Input::new(p.P0_24, Pull::Up); 26 let btn3 = Input::new(p.P0_24, Pull::Up);
27 let btn4 = Input::new(p.P0_25, Pull::Up); 27 let btn4 = Input::new(p.P0_25, Pull::Up);
28 28
29 unwrap!(spawner.spawn(button_task(1, btn1))); 29 spawner.spawn(unwrap!(button_task(1, btn1)));
30 unwrap!(spawner.spawn(button_task(2, btn2))); 30 spawner.spawn(unwrap!(button_task(2, btn2)));
31 unwrap!(spawner.spawn(button_task(3, btn3))); 31 spawner.spawn(unwrap!(button_task(3, btn3)));
32 unwrap!(spawner.spawn(button_task(4, btn4))); 32 spawner.spawn(unwrap!(button_task(4, btn4)));
33} 33}
diff --git a/examples/nrf52840/src/bin/manually_create_executor.rs b/examples/nrf52840/src/bin/manually_create_executor.rs
index 7ca39348e..f0639eb23 100644
--- a/examples/nrf52840/src/bin/manually_create_executor.rs
+++ b/examples/nrf52840/src/bin/manually_create_executor.rs
@@ -42,7 +42,7 @@ fn main() -> ! {
42 // `run` calls the closure then runs the executor forever. It never returns. 42 // `run` calls the closure then runs the executor forever. It never returns.
43 executor.run(|spawner| { 43 executor.run(|spawner| {
44 // Here we get access to a spawner to spawn the initial tasks. 44 // Here we get access to a spawner to spawn the initial tasks.
45 unwrap!(spawner.spawn(run1())); 45 spawner.spawn(unwrap!(run1()));
46 unwrap!(spawner.spawn(run2())); 46 spawner.spawn(unwrap!(run2()));
47 }); 47 });
48} 48}
diff --git a/examples/nrf52840/src/bin/multiprio.rs b/examples/nrf52840/src/bin/multiprio.rs
index d58613da4..4d9b986d4 100644
--- a/examples/nrf52840/src/bin/multiprio.rs
+++ b/examples/nrf52840/src/bin/multiprio.rs
@@ -130,16 +130,16 @@ fn main() -> ! {
130 // High-priority executor: EGU1_SWI1, priority level 6 130 // High-priority executor: EGU1_SWI1, priority level 6
131 interrupt::EGU1_SWI1.set_priority(Priority::P6); 131 interrupt::EGU1_SWI1.set_priority(Priority::P6);
132 let spawner = EXECUTOR_HIGH.start(interrupt::EGU1_SWI1); 132 let spawner = EXECUTOR_HIGH.start(interrupt::EGU1_SWI1);
133 unwrap!(spawner.spawn(run_high())); 133 spawner.spawn(unwrap!(run_high()));
134 134
135 // Medium-priority executor: EGU0_SWI0, priority level 7 135 // Medium-priority executor: EGU0_SWI0, priority level 7
136 interrupt::EGU0_SWI0.set_priority(Priority::P7); 136 interrupt::EGU0_SWI0.set_priority(Priority::P7);
137 let spawner = EXECUTOR_MED.start(interrupt::EGU0_SWI0); 137 let spawner = EXECUTOR_MED.start(interrupt::EGU0_SWI0);
138 unwrap!(spawner.spawn(run_med())); 138 spawner.spawn(unwrap!(run_med()));
139 139
140 // Low priority executor: runs in thread mode, using WFE/SEV 140 // Low priority executor: runs in thread mode, using WFE/SEV
141 let executor = EXECUTOR_LOW.init(Executor::new()); 141 let executor = EXECUTOR_LOW.init(Executor::new());
142 executor.run(|spawner| { 142 executor.run(|spawner| {
143 unwrap!(spawner.spawn(run_low())); 143 spawner.spawn(unwrap!(run_low()));
144 }); 144 });
145} 145}
diff --git a/examples/nrf52840/src/bin/mutex.rs b/examples/nrf52840/src/bin/mutex.rs
index 5c22279b5..a8e9a82cc 100644
--- a/examples/nrf52840/src/bin/mutex.rs
+++ b/examples/nrf52840/src/bin/mutex.rs
@@ -30,7 +30,7 @@ async fn my_task() {
30#[embassy_executor::main] 30#[embassy_executor::main]
31async fn main(spawner: Spawner) { 31async fn main(spawner: Spawner) {
32 let _p = embassy_nrf::init(Default::default()); 32 let _p = embassy_nrf::init(Default::default());
33 unwrap!(spawner.spawn(my_task())); 33 spawner.spawn(unwrap!(my_task()));
34 34
35 loop { 35 loop {
36 Timer::after_millis(300).await; 36 Timer::after_millis(300).await;
diff --git a/examples/nrf52840/src/bin/pubsub.rs b/examples/nrf52840/src/bin/pubsub.rs
index 5ebea9220..c0392b18c 100644
--- a/examples/nrf52840/src/bin/pubsub.rs
+++ b/examples/nrf52840/src/bin/pubsub.rs
@@ -26,9 +26,9 @@ async fn main(spawner: Spawner) {
26 // It's good to set up the subscribers before publishing anything. 26 // It's good to set up the subscribers before publishing anything.
27 // A subscriber will only yield messages that have been published after its creation. 27 // A subscriber will only yield messages that have been published after its creation.
28 28
29 spawner.must_spawn(fast_logger(unwrap!(MESSAGE_BUS.subscriber()))); 29 spawner.spawn(fast_logger(unwrap!(MESSAGE_BUS.subscriber())).unwrap());
30 spawner.must_spawn(slow_logger(unwrap!(MESSAGE_BUS.dyn_subscriber()))); 30 spawner.spawn(slow_logger(unwrap!(MESSAGE_BUS.dyn_subscriber())).unwrap());
31 spawner.must_spawn(slow_logger_pure(unwrap!(MESSAGE_BUS.dyn_subscriber()))); 31 spawner.spawn(slow_logger_pure(unwrap!(MESSAGE_BUS.dyn_subscriber())).unwrap());
32 32
33 // Get a publisher 33 // Get a publisher
34 let message_publisher = unwrap!(MESSAGE_BUS.publisher()); 34 let message_publisher = unwrap!(MESSAGE_BUS.publisher());
diff --git a/examples/nrf52840/src/bin/raw_spawn.rs b/examples/nrf52840/src/bin/raw_spawn.rs
index 717b0faa6..b80954408 100644
--- a/examples/nrf52840/src/bin/raw_spawn.rs
+++ b/examples/nrf52840/src/bin/raw_spawn.rs
@@ -42,8 +42,8 @@ fn main() -> ! {
42 let run2_task = unsafe { make_static(&run2_task) }; 42 let run2_task = unsafe { make_static(&run2_task) };
43 43
44 executor.run(|spawner| { 44 executor.run(|spawner| {
45 unwrap!(spawner.spawn(run1_task.spawn(|| run1()))); 45 spawner.spawn(unwrap!(run1_task.spawn(|| run1())));
46 unwrap!(spawner.spawn(run2_task.spawn(|| run2()))); 46 spawner.spawn(unwrap!(run2_task.spawn(|| run2())));
47 }); 47 });
48} 48}
49 49
diff --git a/examples/nrf52840/src/bin/self_spawn.rs b/examples/nrf52840/src/bin/self_spawn.rs
index 5bfefc2af..acb44f98b 100644
--- a/examples/nrf52840/src/bin/self_spawn.rs
+++ b/examples/nrf52840/src/bin/self_spawn.rs
@@ -14,12 +14,12 @@ mod config {
14async fn my_task(spawner: Spawner, n: u32) { 14async fn my_task(spawner: Spawner, n: u32) {
15 Timer::after_secs(1).await; 15 Timer::after_secs(1).await;
16 info!("Spawning self! {}", n); 16 info!("Spawning self! {}", n);
17 unwrap!(spawner.spawn(my_task(spawner, n + 1))); 17 spawner.spawn(unwrap!(my_task(spawner, n + 1)));
18} 18}
19 19
20#[embassy_executor::main] 20#[embassy_executor::main]
21async fn main(spawner: Spawner) { 21async fn main(spawner: Spawner) {
22 let _p = embassy_nrf::init(Default::default()); 22 let _p = embassy_nrf::init(Default::default());
23 info!("Hello World!"); 23 info!("Hello World!");
24 unwrap!(spawner.spawn(my_task(spawner, 0))); 24 spawner.spawn(unwrap!(my_task(spawner, 0)));
25} 25}
diff --git a/examples/nrf52840/src/bin/self_spawn_current_executor.rs b/examples/nrf52840/src/bin/self_spawn_current_executor.rs
index ddb40dc53..d93067592 100644
--- a/examples/nrf52840/src/bin/self_spawn_current_executor.rs
+++ b/examples/nrf52840/src/bin/self_spawn_current_executor.rs
@@ -11,12 +11,12 @@ async fn my_task(n: u32) {
11 Timer::after_secs(1).await; 11 Timer::after_secs(1).await;
12 info!("Spawning self! {}", n); 12 info!("Spawning self! {}", n);
13 let spawner = unsafe { Spawner::for_current_executor().await }; 13 let spawner = unsafe { Spawner::for_current_executor().await };
14 unwrap!(spawner.spawn(my_task(n + 1))); 14 spawner.spawn(unwrap!(my_task(n + 1)));
15} 15}
16 16
17#[embassy_executor::main] 17#[embassy_executor::main]
18async fn main(spawner: Spawner) { 18async fn main(spawner: Spawner) {
19 let _p = embassy_nrf::init(Default::default()); 19 let _p = embassy_nrf::init(Default::default());
20 info!("Hello World!"); 20 info!("Hello World!");
21 unwrap!(spawner.spawn(my_task(0))); 21 spawner.spawn(unwrap!(my_task(0)));
22} 22}
diff --git a/examples/nrf52840/src/bin/timer.rs b/examples/nrf52840/src/bin/timer.rs
index 365695a20..5331ac246 100644
--- a/examples/nrf52840/src/bin/timer.rs
+++ b/examples/nrf52840/src/bin/timer.rs
@@ -25,6 +25,6 @@ async fn run2() {
25#[embassy_executor::main] 25#[embassy_executor::main]
26async fn main(spawner: Spawner) { 26async fn main(spawner: Spawner) {
27 let _p = embassy_nrf::init(Default::default()); 27 let _p = embassy_nrf::init(Default::default());
28 unwrap!(spawner.spawn(run1())); 28 spawner.spawn(unwrap!(run1()));
29 unwrap!(spawner.spawn(run2())); 29 spawner.spawn(unwrap!(run2()));
30} 30}
diff --git a/examples/nrf52840/src/bin/uart_split.rs b/examples/nrf52840/src/bin/uart_split.rs
index 46be8f636..51af90727 100644
--- a/examples/nrf52840/src/bin/uart_split.rs
+++ b/examples/nrf52840/src/bin/uart_split.rs
@@ -30,7 +30,7 @@ async fn main(spawner: Spawner) {
30 30
31 // Spawn a task responsible purely for reading 31 // Spawn a task responsible purely for reading
32 32
33 unwrap!(spawner.spawn(reader(rx))); 33 spawner.spawn(unwrap!(reader(rx)));
34 34
35 // Message must be in SRAM 35 // Message must be in SRAM
36 { 36 {
diff --git a/examples/nrf52840/src/bin/usb_ethernet.rs b/examples/nrf52840/src/bin/usb_ethernet.rs
index 49856012d..87aa4c6c5 100644
--- a/examples/nrf52840/src/bin/usb_ethernet.rs
+++ b/examples/nrf52840/src/bin/usb_ethernet.rs
@@ -86,11 +86,11 @@ async fn main(spawner: Spawner) {
86 // Build the builder. 86 // Build the builder.
87 let usb = builder.build(); 87 let usb = builder.build();
88 88
89 unwrap!(spawner.spawn(usb_task(usb))); 89 spawner.spawn(unwrap!(usb_task(usb)));
90 90
91 static NET_STATE: StaticCell<NetState<MTU, 4, 4>> = StaticCell::new(); 91 static NET_STATE: StaticCell<NetState<MTU, 4, 4>> = StaticCell::new();
92 let (runner, device) = class.into_embassy_net_device::<MTU, 4, 4>(NET_STATE.init(NetState::new()), our_mac_addr); 92 let (runner, device) = class.into_embassy_net_device::<MTU, 4, 4>(NET_STATE.init(NetState::new()), our_mac_addr);
93 unwrap!(spawner.spawn(usb_ncm_task(runner))); 93 spawner.spawn(unwrap!(usb_ncm_task(runner)));
94 94
95 let config = embassy_net::Config::dhcpv4(Default::default()); 95 let config = embassy_net::Config::dhcpv4(Default::default());
96 // let config = embassy_net::Config::ipv4_static(embassy_net::StaticConfigV4 { 96 // let config = embassy_net::Config::ipv4_static(embassy_net::StaticConfigV4 {
@@ -109,7 +109,7 @@ async fn main(spawner: Spawner) {
109 static RESOURCES: StaticCell<StackResources<3>> = StaticCell::new(); 109 static RESOURCES: StaticCell<StackResources<3>> = StaticCell::new();
110 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed); 110 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed);
111 111
112 unwrap!(spawner.spawn(net_task(runner))); 112 spawner.spawn(unwrap!(net_task(runner)));
113 113
114 // And now we can use it! 114 // And now we can use it!
115 115
diff --git a/examples/nrf52840/src/bin/usb_serial_multitask.rs b/examples/nrf52840/src/bin/usb_serial_multitask.rs
index 5e5b4de35..00a91a233 100644
--- a/examples/nrf52840/src/bin/usb_serial_multitask.rs
+++ b/examples/nrf52840/src/bin/usb_serial_multitask.rs
@@ -76,8 +76,8 @@ async fn main(spawner: Spawner) {
76 // Build the builder. 76 // Build the builder.
77 let usb = builder.build(); 77 let usb = builder.build();
78 78
79 unwrap!(spawner.spawn(usb_task(usb))); 79 spawner.spawn(unwrap!(usb_task(usb)));
80 unwrap!(spawner.spawn(echo_task(class))); 80 spawner.spawn(unwrap!(echo_task(class)));
81} 81}
82 82
83struct Disconnected {} 83struct Disconnected {}
diff --git a/examples/nrf52840/src/bin/wifi_esp_hosted.rs b/examples/nrf52840/src/bin/wifi_esp_hosted.rs
index 26eaf485e..2dd9abfaa 100644
--- a/examples/nrf52840/src/bin/wifi_esp_hosted.rs
+++ b/examples/nrf52840/src/bin/wifi_esp_hosted.rs
@@ -70,7 +70,7 @@ async fn main(spawner: Spawner) {
70 ) 70 )
71 .await; 71 .await;
72 72
73 unwrap!(spawner.spawn(wifi_task(runner))); 73 spawner.spawn(unwrap!(wifi_task(runner)));
74 74
75 unwrap!(control.init().await); 75 unwrap!(control.init().await);
76 unwrap!(control.connect(WIFI_NETWORK, WIFI_PASSWORD).await); 76 unwrap!(control.connect(WIFI_NETWORK, WIFI_PASSWORD).await);
@@ -92,7 +92,7 @@ async fn main(spawner: Spawner) {
92 static RESOURCES: StaticCell<StackResources<3>> = StaticCell::new(); 92 static RESOURCES: StaticCell<StackResources<3>> = StaticCell::new();
93 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed); 93 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed);
94 94
95 unwrap!(spawner.spawn(net_task(runner))); 95 spawner.spawn(unwrap!(net_task(runner)));
96 96
97 // And now we can use it! 97 // And now we can use it!
98 98
diff --git a/examples/nrf9160/src/bin/modem_tcp_client.rs b/examples/nrf9160/src/bin/modem_tcp_client.rs
index a36b14626..7d4815699 100644
--- a/examples/nrf9160/src/bin/modem_tcp_client.rs
+++ b/examples/nrf9160/src/bin/modem_tcp_client.rs
@@ -112,7 +112,7 @@ async fn main(spawner: Spawner) {
112 112
113 info!("Hello World!"); 113 info!("Hello World!");
114 114
115 unwrap!(spawner.spawn(blink_task(p.P0_02.into()))); 115 spawner.spawn(unwrap!(blink_task(p.P0_02.into())));
116 116
117 let ipc_mem = unsafe { 117 let ipc_mem = unsafe {
118 let ipc_start = &__start_ipc as *const u8 as *mut MaybeUninit<u8>; 118 let ipc_start = &__start_ipc as *const u8 as *mut MaybeUninit<u8>;
@@ -138,8 +138,8 @@ async fn main(spawner: Spawner) {
138 static TRACE: StaticCell<TraceBuffer> = StaticCell::new(); 138 static TRACE: StaticCell<TraceBuffer> = StaticCell::new();
139 let (device, control, runner, tracer) = 139 let (device, control, runner, tracer) =
140 embassy_net_nrf91::new_with_trace(STATE.init(State::new()), ipc_mem, TRACE.init(TraceBuffer::new())).await; 140 embassy_net_nrf91::new_with_trace(STATE.init(State::new()), ipc_mem, TRACE.init(TraceBuffer::new())).await;
141 unwrap!(spawner.spawn(modem_task(runner))); 141 spawner.spawn(unwrap!(modem_task(runner)));
142 unwrap!(spawner.spawn(trace_task(uart, tracer))); 142 spawner.spawn(unwrap!(trace_task(uart, tracer)));
143 143
144 let config = embassy_net::Config::default(); 144 let config = embassy_net::Config::default();
145 145
@@ -150,12 +150,12 @@ async fn main(spawner: Spawner) {
150 static RESOURCES: StaticCell<StackResources<2>> = StaticCell::new(); 150 static RESOURCES: StaticCell<StackResources<2>> = StaticCell::new();
151 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::<2>::new()), seed); 151 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::<2>::new()), seed);
152 152
153 unwrap!(spawner.spawn(net_task(runner))); 153 spawner.spawn(unwrap!(net_task(runner)));
154 154
155 static CONTROL: StaticCell<context::Control<'static>> = StaticCell::new(); 155 static CONTROL: StaticCell<context::Control<'static>> = StaticCell::new();
156 let control = CONTROL.init(context::Control::new(control, 0).await); 156 let control = CONTROL.init(context::Control::new(control, 0).await);
157 157
158 unwrap!(spawner.spawn(control_task( 158 spawner.spawn(unwrap!(control_task(
159 control, 159 control,
160 context::Config { 160 context::Config {
161 apn: b"iot.nat.es", 161 apn: b"iot.nat.es",
diff --git a/examples/rp/src/bin/assign_resources.rs b/examples/rp/src/bin/assign_resources.rs
index 341f54d22..4ee4278b5 100644
--- a/examples/rp/src/bin/assign_resources.rs
+++ b/examples/rp/src/bin/assign_resources.rs
@@ -26,15 +26,13 @@ async fn main(spawner: Spawner) {
26 let p = embassy_rp::init(Default::default()); 26 let p = embassy_rp::init(Default::default());
27 27
28 // 1) Assigning a resource to a task by passing parts of the peripherals. 28 // 1) Assigning a resource to a task by passing parts of the peripherals.
29 spawner 29 spawner.spawn(double_blinky_manually_assigned(spawner, p.PIN_20, p.PIN_21).unwrap());
30 .spawn(double_blinky_manually_assigned(spawner, p.PIN_20, p.PIN_21))
31 .unwrap();
32 30
33 // 2) Using the assign-resources macro to assign resources to a task. 31 // 2) Using the assign-resources macro to assign resources to a task.
34 // we perform the split, see further below for the definition of the resources struct 32 // we perform the split, see further below for the definition of the resources struct
35 let r = split_resources!(p); 33 let r = split_resources!(p);
36 // and then we can use them 34 // and then we can use them
37 spawner.spawn(double_blinky_macro_assigned(spawner, r.leds)).unwrap(); 35 spawner.spawn(double_blinky_macro_assigned(spawner, r.leds).unwrap());
38} 36}
39 37
40// 1) Assigning a resource to a task by passing parts of the peripherals. 38// 1) Assigning a resource to a task by passing parts of the peripherals.
diff --git a/examples/rp/src/bin/blinky_two_channels.rs b/examples/rp/src/bin/blinky_two_channels.rs
index 51e139e94..87f3a3545 100644
--- a/examples/rp/src/bin/blinky_two_channels.rs
+++ b/examples/rp/src/bin/blinky_two_channels.rs
@@ -27,8 +27,8 @@ async fn main(spawner: Spawner) {
27 let dt = 100 * 1_000_000; 27 let dt = 100 * 1_000_000;
28 let k = 1.003; 28 let k = 1.003;
29 29
30 unwrap!(spawner.spawn(toggle_led(CHANNEL.sender(), Duration::from_nanos(dt)))); 30 spawner.spawn(unwrap!(toggle_led(CHANNEL.sender(), Duration::from_nanos(dt))));
31 unwrap!(spawner.spawn(toggle_led( 31 spawner.spawn(unwrap!(toggle_led(
32 CHANNEL.sender(), 32 CHANNEL.sender(),
33 Duration::from_nanos((dt as f64 * k) as u64) 33 Duration::from_nanos((dt as f64 * k) as u64)
34 ))); 34 )));
diff --git a/examples/rp/src/bin/blinky_two_tasks.rs b/examples/rp/src/bin/blinky_two_tasks.rs
index 67a9108c0..aac7d928b 100644
--- a/examples/rp/src/bin/blinky_two_tasks.rs
+++ b/examples/rp/src/bin/blinky_two_tasks.rs
@@ -30,8 +30,8 @@ async fn main(spawner: Spawner) {
30 let dt = 100 * 1_000_000; 30 let dt = 100 * 1_000_000;
31 let k = 1.003; 31 let k = 1.003;
32 32
33 unwrap!(spawner.spawn(toggle_led(&LED, Duration::from_nanos(dt)))); 33 spawner.spawn(unwrap!(toggle_led(&LED, Duration::from_nanos(dt))));
34 unwrap!(spawner.spawn(toggle_led(&LED, Duration::from_nanos((dt as f64 * k) as u64)))); 34 spawner.spawn(unwrap!(toggle_led(&LED, Duration::from_nanos((dt as f64 * k) as u64))));
35} 35}
36 36
37#[embassy_executor::task(pool_size = 2)] 37#[embassy_executor::task(pool_size = 2)]
diff --git a/examples/rp/src/bin/ethernet_w5500_icmp.rs b/examples/rp/src/bin/ethernet_w5500_icmp.rs
index e434b3bbc..8c684a791 100644
--- a/examples/rp/src/bin/ethernet_w5500_icmp.rs
+++ b/examples/rp/src/bin/ethernet_w5500_icmp.rs
@@ -61,7 +61,7 @@ async fn main(spawner: Spawner) {
61 ) 61 )
62 .await 62 .await
63 .unwrap(); 63 .unwrap();
64 unwrap!(spawner.spawn(ethernet_task(runner))); 64 spawner.spawn(unwrap!(ethernet_task(runner)));
65 65
66 // Generate random seed 66 // Generate random seed
67 let seed = rng.next_u64(); 67 let seed = rng.next_u64();
@@ -76,7 +76,7 @@ async fn main(spawner: Spawner) {
76 ); 76 );
77 77
78 // Launch network task 78 // Launch network task
79 unwrap!(spawner.spawn(net_task(runner))); 79 spawner.spawn(unwrap!(net_task(runner)));
80 80
81 info!("Waiting for DHCP..."); 81 info!("Waiting for DHCP...");
82 let cfg = wait_for_config(stack).await; 82 let cfg = wait_for_config(stack).await;
diff --git a/examples/rp/src/bin/ethernet_w5500_icmp_ping.rs b/examples/rp/src/bin/ethernet_w5500_icmp_ping.rs
index 0ec594fd5..49d28071a 100644
--- a/examples/rp/src/bin/ethernet_w5500_icmp_ping.rs
+++ b/examples/rp/src/bin/ethernet_w5500_icmp_ping.rs
@@ -63,7 +63,7 @@ async fn main(spawner: Spawner) {
63 ) 63 )
64 .await 64 .await
65 .unwrap(); 65 .unwrap();
66 unwrap!(spawner.spawn(ethernet_task(runner))); 66 spawner.spawn(unwrap!(ethernet_task(runner)));
67 67
68 // Generate random seed 68 // Generate random seed
69 let seed = rng.next_u64(); 69 let seed = rng.next_u64();
@@ -78,7 +78,7 @@ async fn main(spawner: Spawner) {
78 ); 78 );
79 79
80 // Launch network task 80 // Launch network task
81 unwrap!(spawner.spawn(net_task(runner))); 81 spawner.spawn(unwrap!(net_task(runner)));
82 82
83 info!("Waiting for DHCP..."); 83 info!("Waiting for DHCP...");
84 let cfg = wait_for_config(stack).await; 84 let cfg = wait_for_config(stack).await;
diff --git a/examples/rp/src/bin/ethernet_w5500_multisocket.rs b/examples/rp/src/bin/ethernet_w5500_multisocket.rs
index 27e2f3c30..5c049ddca 100644
--- a/examples/rp/src/bin/ethernet_w5500_multisocket.rs
+++ b/examples/rp/src/bin/ethernet_w5500_multisocket.rs
@@ -64,7 +64,7 @@ async fn main(spawner: Spawner) {
64 ) 64 )
65 .await 65 .await
66 .unwrap(); 66 .unwrap();
67 unwrap!(spawner.spawn(ethernet_task(runner))); 67 spawner.spawn(unwrap!(ethernet_task(runner)));
68 68
69 // Generate random seed 69 // Generate random seed
70 let seed = rng.next_u64(); 70 let seed = rng.next_u64();
@@ -79,7 +79,7 @@ async fn main(spawner: Spawner) {
79 ); 79 );
80 80
81 // Launch network task 81 // Launch network task
82 unwrap!(spawner.spawn(net_task(runner))); 82 spawner.spawn(unwrap!(net_task(runner)));
83 83
84 info!("Waiting for DHCP..."); 84 info!("Waiting for DHCP...");
85 let cfg = wait_for_config(stack).await; 85 let cfg = wait_for_config(stack).await;
@@ -87,8 +87,8 @@ async fn main(spawner: Spawner) {
87 info!("IP address: {:?}", local_addr); 87 info!("IP address: {:?}", local_addr);
88 88
89 // Create two sockets listening to the same port, to handle simultaneous connections 89 // Create two sockets listening to the same port, to handle simultaneous connections
90 unwrap!(spawner.spawn(listen_task(stack, 0, 1234))); 90 spawner.spawn(unwrap!(listen_task(stack, 0, 1234)));
91 unwrap!(spawner.spawn(listen_task(stack, 1, 1234))); 91 spawner.spawn(unwrap!(listen_task(stack, 1, 1234)));
92} 92}
93 93
94#[embassy_executor::task(pool_size = 2)] 94#[embassy_executor::task(pool_size = 2)]
diff --git a/examples/rp/src/bin/ethernet_w5500_tcp_client.rs b/examples/rp/src/bin/ethernet_w5500_tcp_client.rs
index ba82f2a60..7552e4f9b 100644
--- a/examples/rp/src/bin/ethernet_w5500_tcp_client.rs
+++ b/examples/rp/src/bin/ethernet_w5500_tcp_client.rs
@@ -67,7 +67,7 @@ async fn main(spawner: Spawner) {
67 ) 67 )
68 .await 68 .await
69 .unwrap(); 69 .unwrap();
70 unwrap!(spawner.spawn(ethernet_task(runner))); 70 spawner.spawn(unwrap!(ethernet_task(runner)));
71 71
72 // Generate random seed 72 // Generate random seed
73 let seed = rng.next_u64(); 73 let seed = rng.next_u64();
@@ -82,7 +82,7 @@ async fn main(spawner: Spawner) {
82 ); 82 );
83 83
84 // Launch network task 84 // Launch network task
85 unwrap!(spawner.spawn(net_task(runner))); 85 spawner.spawn(unwrap!(net_task(runner)));
86 86
87 info!("Waiting for DHCP..."); 87 info!("Waiting for DHCP...");
88 let cfg = wait_for_config(stack).await; 88 let cfg = wait_for_config(stack).await;
diff --git a/examples/rp/src/bin/ethernet_w5500_tcp_server.rs b/examples/rp/src/bin/ethernet_w5500_tcp_server.rs
index 5c56dcafa..7b6fecad4 100644
--- a/examples/rp/src/bin/ethernet_w5500_tcp_server.rs
+++ b/examples/rp/src/bin/ethernet_w5500_tcp_server.rs
@@ -66,7 +66,7 @@ async fn main(spawner: Spawner) {
66 ) 66 )
67 .await 67 .await
68 .unwrap(); 68 .unwrap();
69 unwrap!(spawner.spawn(ethernet_task(runner))); 69 spawner.spawn(unwrap!(ethernet_task(runner)));
70 70
71 // Generate random seed 71 // Generate random seed
72 let seed = rng.next_u64(); 72 let seed = rng.next_u64();
@@ -81,7 +81,7 @@ async fn main(spawner: Spawner) {
81 ); 81 );
82 82
83 // Launch network task 83 // Launch network task
84 unwrap!(spawner.spawn(net_task(runner))); 84 spawner.spawn(unwrap!(net_task(runner)));
85 85
86 info!("Waiting for DHCP..."); 86 info!("Waiting for DHCP...");
87 let cfg = wait_for_config(stack).await; 87 let cfg = wait_for_config(stack).await;
diff --git a/examples/rp/src/bin/ethernet_w5500_udp.rs b/examples/rp/src/bin/ethernet_w5500_udp.rs
index c5fc8de1d..f099490f5 100644
--- a/examples/rp/src/bin/ethernet_w5500_udp.rs
+++ b/examples/rp/src/bin/ethernet_w5500_udp.rs
@@ -64,7 +64,7 @@ async fn main(spawner: Spawner) {
64 ) 64 )
65 .await 65 .await
66 .unwrap(); 66 .unwrap();
67 unwrap!(spawner.spawn(ethernet_task(runner))); 67 spawner.spawn(unwrap!(ethernet_task(runner)));
68 68
69 // Generate random seed 69 // Generate random seed
70 let seed = rng.next_u64(); 70 let seed = rng.next_u64();
@@ -79,7 +79,7 @@ async fn main(spawner: Spawner) {
79 ); 79 );
80 80
81 // Launch network task 81 // Launch network task
82 unwrap!(spawner.spawn(net_task(runner))); 82 spawner.spawn(unwrap!(net_task(runner)));
83 83
84 info!("Waiting for DHCP..."); 84 info!("Waiting for DHCP...");
85 let cfg = wait_for_config(stack).await; 85 let cfg = wait_for_config(stack).await;
diff --git a/examples/rp/src/bin/i2c_slave.rs b/examples/rp/src/bin/i2c_slave.rs
index 08f31001b..e2b8b0d06 100644
--- a/examples/rp/src/bin/i2c_slave.rs
+++ b/examples/rp/src/bin/i2c_slave.rs
@@ -105,7 +105,7 @@ async fn main(spawner: Spawner) {
105 config.addr = DEV_ADDR as u16; 105 config.addr = DEV_ADDR as u16;
106 let device = i2c_slave::I2cSlave::new(p.I2C1, d_scl, d_sda, Irqs, config); 106 let device = i2c_slave::I2cSlave::new(p.I2C1, d_scl, d_sda, Irqs, config);
107 107
108 unwrap!(spawner.spawn(device_task(device))); 108 spawner.spawn(unwrap!(device_task(device)));
109 109
110 let c_sda = p.PIN_0; 110 let c_sda = p.PIN_0;
111 let c_scl = p.PIN_1; 111 let c_scl = p.PIN_1;
@@ -113,5 +113,5 @@ async fn main(spawner: Spawner) {
113 config.frequency = 1_000_000; 113 config.frequency = 1_000_000;
114 let controller = i2c::I2c::new_async(p.I2C0, c_scl, c_sda, Irqs, config); 114 let controller = i2c::I2c::new_async(p.I2C0, c_scl, c_sda, Irqs, config);
115 115
116 unwrap!(spawner.spawn(controller_task(controller))); 116 spawner.spawn(unwrap!(controller_task(controller)));
117} 117}
diff --git a/examples/rp/src/bin/interrupt.rs b/examples/rp/src/bin/interrupt.rs
index 787cdc112..2748f778a 100644
--- a/examples/rp/src/bin/interrupt.rs
+++ b/examples/rp/src/bin/interrupt.rs
@@ -51,7 +51,7 @@ async fn main(spawner: Spawner) {
51 // No Mutex needed when sharing within the same executor/prio level 51 // No Mutex needed when sharing within the same executor/prio level
52 static AVG: StaticCell<Cell<u32>> = StaticCell::new(); 52 static AVG: StaticCell<Cell<u32>> = StaticCell::new();
53 let avg = AVG.init(Default::default()); 53 let avg = AVG.init(Default::default());
54 spawner.must_spawn(processing(avg)); 54 spawner.spawn(processing(avg).unwrap());
55 55
56 let mut ticker = Ticker::every(Duration::from_secs(1)); 56 let mut ticker = Ticker::every(Duration::from_secs(1));
57 loop { 57 loop {
diff --git a/examples/rp/src/bin/multicore.rs b/examples/rp/src/bin/multicore.rs
index 7cb546c91..3a6367420 100644
--- a/examples/rp/src/bin/multicore.rs
+++ b/examples/rp/src/bin/multicore.rs
@@ -35,12 +35,12 @@ fn main() -> ! {
35 unsafe { &mut *core::ptr::addr_of_mut!(CORE1_STACK) }, 35 unsafe { &mut *core::ptr::addr_of_mut!(CORE1_STACK) },
36 move || { 36 move || {
37 let executor1 = EXECUTOR1.init(Executor::new()); 37 let executor1 = EXECUTOR1.init(Executor::new());
38 executor1.run(|spawner| unwrap!(spawner.spawn(core1_task(led)))); 38 executor1.run(|spawner| spawner.spawn(unwrap!(core1_task(led))));
39 }, 39 },
40 ); 40 );
41 41
42 let executor0 = EXECUTOR0.init(Executor::new()); 42 let executor0 = EXECUTOR0.init(Executor::new());
43 executor0.run(|spawner| unwrap!(spawner.spawn(core0_task()))); 43 executor0.run(|spawner| spawner.spawn(unwrap!(core0_task())));
44} 44}
45 45
46#[embassy_executor::task] 46#[embassy_executor::task]
diff --git a/examples/rp/src/bin/multiprio.rs b/examples/rp/src/bin/multiprio.rs
index 2b397f97d..96cdf8fb1 100644
--- a/examples/rp/src/bin/multiprio.rs
+++ b/examples/rp/src/bin/multiprio.rs
@@ -130,16 +130,16 @@ fn main() -> ! {
130 // High-priority executor: SWI_IRQ_1, priority level 2 130 // High-priority executor: SWI_IRQ_1, priority level 2
131 interrupt::SWI_IRQ_1.set_priority(Priority::P2); 131 interrupt::SWI_IRQ_1.set_priority(Priority::P2);
132 let spawner = EXECUTOR_HIGH.start(interrupt::SWI_IRQ_1); 132 let spawner = EXECUTOR_HIGH.start(interrupt::SWI_IRQ_1);
133 unwrap!(spawner.spawn(run_high())); 133 spawner.spawn(unwrap!(run_high()));
134 134
135 // Medium-priority executor: SWI_IRQ_0, priority level 3 135 // Medium-priority executor: SWI_IRQ_0, priority level 3
136 interrupt::SWI_IRQ_0.set_priority(Priority::P3); 136 interrupt::SWI_IRQ_0.set_priority(Priority::P3);
137 let spawner = EXECUTOR_MED.start(interrupt::SWI_IRQ_0); 137 let spawner = EXECUTOR_MED.start(interrupt::SWI_IRQ_0);
138 unwrap!(spawner.spawn(run_med())); 138 spawner.spawn(unwrap!(run_med()));
139 139
140 // Low priority executor: runs in thread mode, using WFE/SEV 140 // Low priority executor: runs in thread mode, using WFE/SEV
141 let executor = EXECUTOR_LOW.init(Executor::new()); 141 let executor = EXECUTOR_LOW.init(Executor::new());
142 executor.run(|spawner| { 142 executor.run(|spawner| {
143 unwrap!(spawner.spawn(run_low())); 143 spawner.spawn(unwrap!(run_low()));
144 }); 144 });
145} 145}
diff --git a/examples/rp/src/bin/orchestrate_tasks.rs b/examples/rp/src/bin/orchestrate_tasks.rs
index c35679251..9f25e1087 100644
--- a/examples/rp/src/bin/orchestrate_tasks.rs
+++ b/examples/rp/src/bin/orchestrate_tasks.rs
@@ -129,13 +129,13 @@ async fn main(spawner: Spawner) {
129 let p = embassy_rp::init(Default::default()); 129 let p = embassy_rp::init(Default::default());
130 let r = split_resources! {p}; 130 let r = split_resources! {p};
131 131
132 spawner.spawn(orchestrate(spawner)).unwrap(); 132 spawner.spawn(orchestrate(spawner).unwrap());
133 spawner.spawn(random_60s(spawner)).unwrap(); 133 spawner.spawn(random_60s(spawner).unwrap());
134 spawner.spawn(random_90s(spawner)).unwrap(); 134 spawner.spawn(random_90s(spawner).unwrap());
135 // `random_30s` is not spawned here, butin the orchestrate task depending on state 135 // `random_30s` is not spawned here, butin the orchestrate task depending on state
136 spawner.spawn(usb_power(spawner, r.vbus)).unwrap(); 136 spawner.spawn(usb_power(spawner, r.vbus).unwrap());
137 spawner.spawn(vsys_voltage(spawner, r.vsys)).unwrap(); 137 spawner.spawn(vsys_voltage(spawner, r.vsys).unwrap());
138 spawner.spawn(consumer(spawner)).unwrap(); 138 spawner.spawn(consumer(spawner).unwrap());
139} 139}
140 140
141/// Main task that processes all events and updates system state. 141/// Main task that processes all events and updates system state.
@@ -198,7 +198,7 @@ async fn orchestrate(spawner: Spawner) {
198 drop(state); 198 drop(state);
199 if respawn_first_random_seed_task { 199 if respawn_first_random_seed_task {
200 info!("(Re)-Starting the first random signal task"); 200 info!("(Re)-Starting the first random signal task");
201 spawner.spawn(random_30s(spawner)).unwrap(); 201 spawner.spawn(random_30s(spawner).unwrap());
202 } 202 }
203 } 203 }
204 _ => {} 204 _ => {}
diff --git a/examples/rp/src/bin/pio_async.rs b/examples/rp/src/bin/pio_async.rs
index bf6dbee69..1743a417e 100644
--- a/examples/rp/src/bin/pio_async.rs
+++ b/examples/rp/src/bin/pio_async.rs
@@ -125,7 +125,7 @@ async fn main(spawner: Spawner) {
125 setup_pio_task_sm0(&mut common, &mut sm0, p.PIN_0); 125 setup_pio_task_sm0(&mut common, &mut sm0, p.PIN_0);
126 setup_pio_task_sm1(&mut common, &mut sm1); 126 setup_pio_task_sm1(&mut common, &mut sm1);
127 setup_pio_task_sm2(&mut common, &mut sm2); 127 setup_pio_task_sm2(&mut common, &mut sm2);
128 spawner.spawn(pio_task_sm0(sm0)).unwrap(); 128 spawner.spawn(pio_task_sm0(sm0).unwrap());
129 spawner.spawn(pio_task_sm1(sm1)).unwrap(); 129 spawner.spawn(pio_task_sm1(sm1).unwrap());
130 spawner.spawn(pio_task_sm2(irq3, sm2)).unwrap(); 130 spawner.spawn(pio_task_sm2(irq3, sm2).unwrap());
131} 131}
diff --git a/examples/rp/src/bin/pio_rotary_encoder.rs b/examples/rp/src/bin/pio_rotary_encoder.rs
index 2750f61ae..2fc19970b 100644
--- a/examples/rp/src/bin/pio_rotary_encoder.rs
+++ b/examples/rp/src/bin/pio_rotary_encoder.rs
@@ -50,6 +50,6 @@ async fn main(spawner: Spawner) {
50 let encoder0 = PioEncoder::new(&mut common, sm0, p.PIN_4, p.PIN_5, &prg); 50 let encoder0 = PioEncoder::new(&mut common, sm0, p.PIN_4, p.PIN_5, &prg);
51 let encoder1 = PioEncoder::new(&mut common, sm1, p.PIN_6, p.PIN_7, &prg); 51 let encoder1 = PioEncoder::new(&mut common, sm1, p.PIN_6, p.PIN_7, &prg);
52 52
53 spawner.must_spawn(encoder_0(encoder0)); 53 spawner.spawn(encoder_0(encoder0).unwrap());
54 spawner.must_spawn(encoder_1(encoder1)); 54 spawner.spawn(encoder_1(encoder1).unwrap());
55} 55}
diff --git a/examples/rp/src/bin/pwm.rs b/examples/rp/src/bin/pwm.rs
index 04374323d..9dd07ab6e 100644
--- a/examples/rp/src/bin/pwm.rs
+++ b/examples/rp/src/bin/pwm.rs
@@ -18,8 +18,8 @@ use {defmt_rtt as _, panic_probe as _};
18#[embassy_executor::main] 18#[embassy_executor::main]
19async fn main(spawner: Spawner) { 19async fn main(spawner: Spawner) {
20 let p = embassy_rp::init(Default::default()); 20 let p = embassy_rp::init(Default::default());
21 spawner.spawn(pwm_set_config(p.PWM_SLICE4, p.PIN_25)).unwrap(); 21 spawner.spawn(pwm_set_config(p.PWM_SLICE4, p.PIN_25).unwrap());
22 spawner.spawn(pwm_set_dutycycle(p.PWM_SLICE2, p.PIN_4)).unwrap(); 22 spawner.spawn(pwm_set_dutycycle(p.PWM_SLICE2, p.PIN_4).unwrap());
23} 23}
24 24
25/// Demonstrate PWM by modifying & applying the config 25/// Demonstrate PWM by modifying & applying the config
diff --git a/examples/rp/src/bin/shared_bus.rs b/examples/rp/src/bin/shared_bus.rs
index 9267dfccb..db7566b1a 100644
--- a/examples/rp/src/bin/shared_bus.rs
+++ b/examples/rp/src/bin/shared_bus.rs
@@ -35,8 +35,8 @@ async fn main(spawner: Spawner) {
35 static I2C_BUS: StaticCell<I2c1Bus> = StaticCell::new(); 35 static I2C_BUS: StaticCell<I2c1Bus> = StaticCell::new();
36 let i2c_bus = I2C_BUS.init(Mutex::new(i2c)); 36 let i2c_bus = I2C_BUS.init(Mutex::new(i2c));
37 37
38 spawner.must_spawn(i2c_task_a(i2c_bus)); 38 spawner.spawn(i2c_task_a(i2c_bus).unwrap());
39 spawner.must_spawn(i2c_task_b(i2c_bus)); 39 spawner.spawn(i2c_task_b(i2c_bus).unwrap());
40 40
41 // Shared SPI bus 41 // Shared SPI bus
42 let spi_cfg = spi::Config::default(); 42 let spi_cfg = spi::Config::default();
@@ -48,8 +48,8 @@ async fn main(spawner: Spawner) {
48 let cs_a = Output::new(p.PIN_0, Level::High); 48 let cs_a = Output::new(p.PIN_0, Level::High);
49 let cs_b = Output::new(p.PIN_1, Level::High); 49 let cs_b = Output::new(p.PIN_1, Level::High);
50 50
51 spawner.must_spawn(spi_task_a(spi_bus, cs_a)); 51 spawner.spawn(spi_task_a(spi_bus, cs_a).unwrap());
52 spawner.must_spawn(spi_task_b(spi_bus, cs_b)); 52 spawner.spawn(spi_task_b(spi_bus, cs_b).unwrap());
53} 53}
54 54
55#[embassy_executor::task] 55#[embassy_executor::task]
diff --git a/examples/rp/src/bin/sharing.rs b/examples/rp/src/bin/sharing.rs
index 856be6ace..d4c89946b 100644
--- a/examples/rp/src/bin/sharing.rs
+++ b/examples/rp/src/bin/sharing.rs
@@ -68,7 +68,7 @@ fn main() -> ! {
68 // High-priority executor: runs in interrupt mode 68 // High-priority executor: runs in interrupt mode
69 interrupt::SWI_IRQ_0.set_priority(Priority::P3); 69 interrupt::SWI_IRQ_0.set_priority(Priority::P3);
70 let spawner = EXECUTOR_HI.start(interrupt::SWI_IRQ_0); 70 let spawner = EXECUTOR_HI.start(interrupt::SWI_IRQ_0);
71 spawner.must_spawn(task_a(uart)); 71 spawner.spawn(task_a(uart).unwrap());
72 72
73 // Low priority executor: runs in thread mode 73 // Low priority executor: runs in thread mode
74 let executor = EXECUTOR_LOW.init(Executor::new()); 74 let executor = EXECUTOR_LOW.init(Executor::new());
@@ -83,8 +83,8 @@ fn main() -> ! {
83 static REF_CELL: ConstStaticCell<RefCell<MyType>> = ConstStaticCell::new(RefCell::new(MyType { inner: 0 })); 83 static REF_CELL: ConstStaticCell<RefCell<MyType>> = ConstStaticCell::new(RefCell::new(MyType { inner: 0 }));
84 let ref_cell = REF_CELL.take(); 84 let ref_cell = REF_CELL.take();
85 85
86 spawner.must_spawn(task_b(uart, cell, ref_cell)); 86 spawner.spawn(task_b(uart, cell, ref_cell).unwrap());
87 spawner.must_spawn(task_c(cell, ref_cell)); 87 spawner.spawn(task_c(cell, ref_cell).unwrap());
88 }); 88 });
89} 89}
90 90
diff --git a/examples/rp/src/bin/uart_buffered_split.rs b/examples/rp/src/bin/uart_buffered_split.rs
index 3adbc18ab..820daed96 100644
--- a/examples/rp/src/bin/uart_buffered_split.rs
+++ b/examples/rp/src/bin/uart_buffered_split.rs
@@ -33,7 +33,7 @@ async fn main(spawner: Spawner) {
33 let uart = BufferedUart::new(uart, tx_pin, rx_pin, Irqs, tx_buf, rx_buf, Config::default()); 33 let uart = BufferedUart::new(uart, tx_pin, rx_pin, Irqs, tx_buf, rx_buf, Config::default());
34 let (mut tx, rx) = uart.split(); 34 let (mut tx, rx) = uart.split();
35 35
36 unwrap!(spawner.spawn(reader(rx))); 36 spawner.spawn(unwrap!(reader(rx)));
37 37
38 info!("Writing..."); 38 info!("Writing...");
39 loop { 39 loop {
diff --git a/examples/rp/src/bin/uart_unidir.rs b/examples/rp/src/bin/uart_unidir.rs
index c2c8dfad8..573b45b51 100644
--- a/examples/rp/src/bin/uart_unidir.rs
+++ b/examples/rp/src/bin/uart_unidir.rs
@@ -27,7 +27,7 @@ async fn main(spawner: Spawner) {
27 let mut uart_tx = UartTx::new(p.UART0, p.PIN_0, p.DMA_CH0, Config::default()); 27 let mut uart_tx = UartTx::new(p.UART0, p.PIN_0, p.DMA_CH0, Config::default());
28 let uart_rx = UartRx::new(p.UART1, p.PIN_5, Irqs, p.DMA_CH1, Config::default()); 28 let uart_rx = UartRx::new(p.UART1, p.PIN_5, Irqs, p.DMA_CH1, Config::default());
29 29
30 unwrap!(spawner.spawn(reader(uart_rx))); 30 spawner.spawn(unwrap!(reader(uart_rx)));
31 31
32 info!("Writing..."); 32 info!("Writing...");
33 loop { 33 loop {
diff --git a/examples/rp/src/bin/usb_ethernet.rs b/examples/rp/src/bin/usb_ethernet.rs
index 171f21a75..912e52e96 100644
--- a/examples/rp/src/bin/usb_ethernet.rs
+++ b/examples/rp/src/bin/usb_ethernet.rs
@@ -84,11 +84,11 @@ async fn main(spawner: Spawner) {
84 // Build the builder. 84 // Build the builder.
85 let usb = builder.build(); 85 let usb = builder.build();
86 86
87 unwrap!(spawner.spawn(usb_task(usb))); 87 spawner.spawn(unwrap!(usb_task(usb)));
88 88
89 static NET_STATE: StaticCell<NetState<MTU, 4, 4>> = StaticCell::new(); 89 static NET_STATE: StaticCell<NetState<MTU, 4, 4>> = StaticCell::new();
90 let (runner, device) = class.into_embassy_net_device::<MTU, 4, 4>(NET_STATE.init(NetState::new()), our_mac_addr); 90 let (runner, device) = class.into_embassy_net_device::<MTU, 4, 4>(NET_STATE.init(NetState::new()), our_mac_addr);
91 unwrap!(spawner.spawn(usb_ncm_task(runner))); 91 spawner.spawn(unwrap!(usb_ncm_task(runner)));
92 92
93 let config = embassy_net::Config::dhcpv4(Default::default()); 93 let config = embassy_net::Config::dhcpv4(Default::default());
94 //let config = embassy_net::Config::ipv4_static(embassy_net::StaticConfigV4 { 94 //let config = embassy_net::Config::ipv4_static(embassy_net::StaticConfigV4 {
@@ -104,7 +104,7 @@ async fn main(spawner: Spawner) {
104 static RESOURCES: StaticCell<StackResources<3>> = StaticCell::new(); 104 static RESOURCES: StaticCell<StackResources<3>> = StaticCell::new();
105 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed); 105 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed);
106 106
107 unwrap!(spawner.spawn(net_task(runner))); 107 spawner.spawn(unwrap!(net_task(runner)));
108 108
109 // And now we can use it! 109 // And now we can use it!
110 110
diff --git a/examples/rp/src/bin/usb_logger.rs b/examples/rp/src/bin/usb_logger.rs
index af401ed63..ed2333efc 100644
--- a/examples/rp/src/bin/usb_logger.rs
+++ b/examples/rp/src/bin/usb_logger.rs
@@ -25,7 +25,7 @@ async fn logger_task(driver: Driver<'static, USB>) {
25async fn main(spawner: Spawner) { 25async fn main(spawner: Spawner) {
26 let p = embassy_rp::init(Default::default()); 26 let p = embassy_rp::init(Default::default());
27 let driver = Driver::new(p.USB, Irqs); 27 let driver = Driver::new(p.USB, Irqs);
28 spawner.spawn(logger_task(driver)).unwrap(); 28 spawner.spawn(logger_task(driver).unwrap());
29 29
30 let mut counter = 0; 30 let mut counter = 0;
31 loop { 31 loop {
diff --git a/examples/rp/src/bin/usb_serial.rs b/examples/rp/src/bin/usb_serial.rs
index 5e3f0f378..b79012acb 100644
--- a/examples/rp/src/bin/usb_serial.rs
+++ b/examples/rp/src/bin/usb_serial.rs
@@ -69,7 +69,7 @@ async fn main(spawner: Spawner) {
69 let usb = builder.build(); 69 let usb = builder.build();
70 70
71 // Run the USB device. 71 // Run the USB device.
72 unwrap!(spawner.spawn(usb_task(usb))); 72 spawner.spawn(unwrap!(usb_task(usb)));
73 73
74 // Do stuff with the class! 74 // Do stuff with the class!
75 loop { 75 loop {
diff --git a/examples/rp/src/bin/usb_serial_with_handler.rs b/examples/rp/src/bin/usb_serial_with_handler.rs
index a9e65be70..b85c9029b 100644
--- a/examples/rp/src/bin/usb_serial_with_handler.rs
+++ b/examples/rp/src/bin/usb_serial_with_handler.rs
@@ -53,7 +53,7 @@ async fn logger_task(driver: Driver<'static, USB>) {
53async fn main(spawner: Spawner) { 53async fn main(spawner: Spawner) {
54 let p = embassy_rp::init(Default::default()); 54 let p = embassy_rp::init(Default::default());
55 let driver = Driver::new(p.USB, Irqs); 55 let driver = Driver::new(p.USB, Irqs);
56 spawner.spawn(logger_task(driver)).unwrap(); 56 spawner.spawn(logger_task(driver).unwrap());
57 57
58 let mut counter = 0; 58 let mut counter = 0;
59 loop { 59 loop {
diff --git a/examples/rp/src/bin/wifi_ap_tcp_server.rs b/examples/rp/src/bin/wifi_ap_tcp_server.rs
index 856838a8c..128599e0d 100644
--- a/examples/rp/src/bin/wifi_ap_tcp_server.rs
+++ b/examples/rp/src/bin/wifi_ap_tcp_server.rs
@@ -70,7 +70,7 @@ async fn main(spawner: Spawner) {
70 static STATE: StaticCell<cyw43::State> = StaticCell::new(); 70 static STATE: StaticCell<cyw43::State> = StaticCell::new();
71 let state = STATE.init(cyw43::State::new()); 71 let state = STATE.init(cyw43::State::new());
72 let (net_device, mut control, runner) = cyw43::new(state, pwr, spi, fw).await; 72 let (net_device, mut control, runner) = cyw43::new(state, pwr, spi, fw).await;
73 unwrap!(spawner.spawn(cyw43_task(runner))); 73 spawner.spawn(unwrap!(cyw43_task(runner)));
74 74
75 control.init(clm).await; 75 control.init(clm).await;
76 control 76 control
@@ -91,7 +91,7 @@ async fn main(spawner: Spawner) {
91 static RESOURCES: StaticCell<StackResources<3>> = StaticCell::new(); 91 static RESOURCES: StaticCell<StackResources<3>> = StaticCell::new();
92 let (stack, runner) = embassy_net::new(net_device, config, RESOURCES.init(StackResources::new()), seed); 92 let (stack, runner) = embassy_net::new(net_device, config, RESOURCES.init(StackResources::new()), seed);
93 93
94 unwrap!(spawner.spawn(net_task(runner))); 94 spawner.spawn(unwrap!(net_task(runner)));
95 95
96 //control.start_ap_open("cyw43", 5).await; 96 //control.start_ap_open("cyw43", 5).await;
97 control.start_ap_wpa2("cyw43", "password", 5).await; 97 control.start_ap_wpa2("cyw43", "password", 5).await;
diff --git a/examples/rp/src/bin/wifi_blinky.rs b/examples/rp/src/bin/wifi_blinky.rs
index 6e91ce167..b2e08c517 100644
--- a/examples/rp/src/bin/wifi_blinky.rs
+++ b/examples/rp/src/bin/wifi_blinky.rs
@@ -55,7 +55,7 @@ async fn main(spawner: Spawner) {
55 static STATE: StaticCell<cyw43::State> = StaticCell::new(); 55 static STATE: StaticCell<cyw43::State> = StaticCell::new();
56 let state = STATE.init(cyw43::State::new()); 56 let state = STATE.init(cyw43::State::new());
57 let (_net_device, mut control, runner) = cyw43::new(state, pwr, spi, fw).await; 57 let (_net_device, mut control, runner) = cyw43::new(state, pwr, spi, fw).await;
58 unwrap!(spawner.spawn(cyw43_task(runner))); 58 spawner.spawn(unwrap!(cyw43_task(runner)));
59 59
60 control.init(clm).await; 60 control.init(clm).await;
61 control 61 control
diff --git a/examples/rp/src/bin/wifi_scan.rs b/examples/rp/src/bin/wifi_scan.rs
index fe9c363d9..c884aa2ba 100644
--- a/examples/rp/src/bin/wifi_scan.rs
+++ b/examples/rp/src/bin/wifi_scan.rs
@@ -59,7 +59,7 @@ async fn main(spawner: Spawner) {
59 static STATE: StaticCell<cyw43::State> = StaticCell::new(); 59 static STATE: StaticCell<cyw43::State> = StaticCell::new();
60 let state = STATE.init(cyw43::State::new()); 60 let state = STATE.init(cyw43::State::new());
61 let (_net_device, mut control, runner) = cyw43::new(state, pwr, spi, fw).await; 61 let (_net_device, mut control, runner) = cyw43::new(state, pwr, spi, fw).await;
62 unwrap!(spawner.spawn(cyw43_task(runner))); 62 spawner.spawn(unwrap!(cyw43_task(runner)));
63 63
64 control.init(clm).await; 64 control.init(clm).await;
65 control 65 control
diff --git a/examples/rp/src/bin/wifi_tcp_server.rs b/examples/rp/src/bin/wifi_tcp_server.rs
index ed1a03fcf..126475779 100644
--- a/examples/rp/src/bin/wifi_tcp_server.rs
+++ b/examples/rp/src/bin/wifi_tcp_server.rs
@@ -74,7 +74,7 @@ async fn main(spawner: Spawner) {
74 static STATE: StaticCell<cyw43::State> = StaticCell::new(); 74 static STATE: StaticCell<cyw43::State> = StaticCell::new();
75 let state = STATE.init(cyw43::State::new()); 75 let state = STATE.init(cyw43::State::new());
76 let (net_device, mut control, runner) = cyw43::new(state, pwr, spi, fw).await; 76 let (net_device, mut control, runner) = cyw43::new(state, pwr, spi, fw).await;
77 unwrap!(spawner.spawn(cyw43_task(runner))); 77 spawner.spawn(unwrap!(cyw43_task(runner)));
78 78
79 control.init(clm).await; 79 control.init(clm).await;
80 control 80 control
@@ -95,7 +95,7 @@ async fn main(spawner: Spawner) {
95 static RESOURCES: StaticCell<StackResources<3>> = StaticCell::new(); 95 static RESOURCES: StaticCell<StackResources<3>> = StaticCell::new();
96 let (stack, runner) = embassy_net::new(net_device, config, RESOURCES.init(StackResources::new()), seed); 96 let (stack, runner) = embassy_net::new(net_device, config, RESOURCES.init(StackResources::new()), seed);
97 97
98 unwrap!(spawner.spawn(net_task(runner))); 98 spawner.spawn(unwrap!(net_task(runner)));
99 99
100 while let Err(err) = control 100 while let Err(err) = control
101 .join(WIFI_NETWORK, JoinOptions::new(WIFI_PASSWORD.as_bytes())) 101 .join(WIFI_NETWORK, JoinOptions::new(WIFI_PASSWORD.as_bytes()))
diff --git a/examples/rp/src/bin/wifi_webrequest.rs b/examples/rp/src/bin/wifi_webrequest.rs
index a75253bb0..079def370 100644
--- a/examples/rp/src/bin/wifi_webrequest.rs
+++ b/examples/rp/src/bin/wifi_webrequest.rs
@@ -76,7 +76,7 @@ async fn main(spawner: Spawner) {
76 static STATE: StaticCell<cyw43::State> = StaticCell::new(); 76 static STATE: StaticCell<cyw43::State> = StaticCell::new();
77 let state = STATE.init(cyw43::State::new()); 77 let state = STATE.init(cyw43::State::new());
78 let (net_device, mut control, runner) = cyw43::new(state, pwr, spi, fw).await; 78 let (net_device, mut control, runner) = cyw43::new(state, pwr, spi, fw).await;
79 unwrap!(spawner.spawn(cyw43_task(runner))); 79 spawner.spawn(unwrap!(cyw43_task(runner)));
80 80
81 control.init(clm).await; 81 control.init(clm).await;
82 control 82 control
@@ -98,7 +98,7 @@ async fn main(spawner: Spawner) {
98 static RESOURCES: StaticCell<StackResources<5>> = StaticCell::new(); 98 static RESOURCES: StaticCell<StackResources<5>> = StaticCell::new();
99 let (stack, runner) = embassy_net::new(net_device, config, RESOURCES.init(StackResources::new()), seed); 99 let (stack, runner) = embassy_net::new(net_device, config, RESOURCES.init(StackResources::new()), seed);
100 100
101 unwrap!(spawner.spawn(net_task(runner))); 101 spawner.spawn(unwrap!(net_task(runner)));
102 102
103 while let Err(err) = control 103 while let Err(err) = control
104 .join(WIFI_NETWORK, JoinOptions::new(WIFI_PASSWORD.as_bytes())) 104 .join(WIFI_NETWORK, JoinOptions::new(WIFI_PASSWORD.as_bytes()))
diff --git a/examples/rp/src/bin/zerocopy.rs b/examples/rp/src/bin/zerocopy.rs
index d1fb0eb00..d603e1ed3 100644
--- a/examples/rp/src/bin/zerocopy.rs
+++ b/examples/rp/src/bin/zerocopy.rs
@@ -52,8 +52,8 @@ async fn main(spawner: Spawner) {
52 let channel = CHANNEL.init(Channel::new(buf)); 52 let channel = CHANNEL.init(Channel::new(buf));
53 let (sender, receiver) = channel.split(); 53 let (sender, receiver) = channel.split();
54 54
55 spawner.must_spawn(consumer(receiver)); 55 spawner.spawn(consumer(receiver).unwrap());
56 spawner.must_spawn(producer(sender, adc_parts)); 56 spawner.spawn(producer(sender, adc_parts).unwrap());
57 57
58 let mut ticker = Ticker::every(Duration::from_secs(1)); 58 let mut ticker = Ticker::every(Duration::from_secs(1));
59 loop { 59 loop {
diff --git a/examples/rp235x/src/bin/assign_resources.rs b/examples/rp235x/src/bin/assign_resources.rs
index 341f54d22..4ee4278b5 100644
--- a/examples/rp235x/src/bin/assign_resources.rs
+++ b/examples/rp235x/src/bin/assign_resources.rs
@@ -26,15 +26,13 @@ async fn main(spawner: Spawner) {
26 let p = embassy_rp::init(Default::default()); 26 let p = embassy_rp::init(Default::default());
27 27
28 // 1) Assigning a resource to a task by passing parts of the peripherals. 28 // 1) Assigning a resource to a task by passing parts of the peripherals.
29 spawner 29 spawner.spawn(double_blinky_manually_assigned(spawner, p.PIN_20, p.PIN_21).unwrap());
30 .spawn(double_blinky_manually_assigned(spawner, p.PIN_20, p.PIN_21))
31 .unwrap();
32 30
33 // 2) Using the assign-resources macro to assign resources to a task. 31 // 2) Using the assign-resources macro to assign resources to a task.
34 // we perform the split, see further below for the definition of the resources struct 32 // we perform the split, see further below for the definition of the resources struct
35 let r = split_resources!(p); 33 let r = split_resources!(p);
36 // and then we can use them 34 // and then we can use them
37 spawner.spawn(double_blinky_macro_assigned(spawner, r.leds)).unwrap(); 35 spawner.spawn(double_blinky_macro_assigned(spawner, r.leds).unwrap());
38} 36}
39 37
40// 1) Assigning a resource to a task by passing parts of the peripherals. 38// 1) Assigning a resource to a task by passing parts of the peripherals.
diff --git a/examples/rp235x/src/bin/blinky_two_channels.rs b/examples/rp235x/src/bin/blinky_two_channels.rs
index 51e139e94..87f3a3545 100644
--- a/examples/rp235x/src/bin/blinky_two_channels.rs
+++ b/examples/rp235x/src/bin/blinky_two_channels.rs
@@ -27,8 +27,8 @@ async fn main(spawner: Spawner) {
27 let dt = 100 * 1_000_000; 27 let dt = 100 * 1_000_000;
28 let k = 1.003; 28 let k = 1.003;
29 29
30 unwrap!(spawner.spawn(toggle_led(CHANNEL.sender(), Duration::from_nanos(dt)))); 30 spawner.spawn(unwrap!(toggle_led(CHANNEL.sender(), Duration::from_nanos(dt))));
31 unwrap!(spawner.spawn(toggle_led( 31 spawner.spawn(unwrap!(toggle_led(
32 CHANNEL.sender(), 32 CHANNEL.sender(),
33 Duration::from_nanos((dt as f64 * k) as u64) 33 Duration::from_nanos((dt as f64 * k) as u64)
34 ))); 34 )));
diff --git a/examples/rp235x/src/bin/blinky_two_tasks.rs b/examples/rp235x/src/bin/blinky_two_tasks.rs
index 67a9108c0..aac7d928b 100644
--- a/examples/rp235x/src/bin/blinky_two_tasks.rs
+++ b/examples/rp235x/src/bin/blinky_two_tasks.rs
@@ -30,8 +30,8 @@ async fn main(spawner: Spawner) {
30 let dt = 100 * 1_000_000; 30 let dt = 100 * 1_000_000;
31 let k = 1.003; 31 let k = 1.003;
32 32
33 unwrap!(spawner.spawn(toggle_led(&LED, Duration::from_nanos(dt)))); 33 spawner.spawn(unwrap!(toggle_led(&LED, Duration::from_nanos(dt))));
34 unwrap!(spawner.spawn(toggle_led(&LED, Duration::from_nanos((dt as f64 * k) as u64)))); 34 spawner.spawn(unwrap!(toggle_led(&LED, Duration::from_nanos((dt as f64 * k) as u64))));
35} 35}
36 36
37#[embassy_executor::task(pool_size = 2)] 37#[embassy_executor::task(pool_size = 2)]
diff --git a/examples/rp235x/src/bin/blinky_wifi.rs b/examples/rp235x/src/bin/blinky_wifi.rs
index ef6057a1c..b2201f0ae 100644
--- a/examples/rp235x/src/bin/blinky_wifi.rs
+++ b/examples/rp235x/src/bin/blinky_wifi.rs
@@ -71,7 +71,7 @@ async fn main(spawner: Spawner) {
71 static STATE: StaticCell<cyw43::State> = StaticCell::new(); 71 static STATE: StaticCell<cyw43::State> = StaticCell::new();
72 let state = STATE.init(cyw43::State::new()); 72 let state = STATE.init(cyw43::State::new());
73 let (_net_device, mut control, runner) = cyw43::new(state, pwr, spi, fw).await; 73 let (_net_device, mut control, runner) = cyw43::new(state, pwr, spi, fw).await;
74 unwrap!(spawner.spawn(cyw43_task(runner))); 74 spawner.spawn(unwrap!(cyw43_task(runner)));
75 75
76 control.init(clm).await; 76 control.init(clm).await;
77 control 77 control
diff --git a/examples/rp235x/src/bin/blinky_wifi_pico_plus_2.rs b/examples/rp235x/src/bin/blinky_wifi_pico_plus_2.rs
index 0a5bccfb3..e6d6f687b 100644
--- a/examples/rp235x/src/bin/blinky_wifi_pico_plus_2.rs
+++ b/examples/rp235x/src/bin/blinky_wifi_pico_plus_2.rs
@@ -68,7 +68,7 @@ async fn main(spawner: Spawner) {
68 static STATE: StaticCell<cyw43::State> = StaticCell::new(); 68 static STATE: StaticCell<cyw43::State> = StaticCell::new();
69 let state = STATE.init(cyw43::State::new()); 69 let state = STATE.init(cyw43::State::new());
70 let (_net_device, mut control, runner) = cyw43::new(state, pwr, spi, fw).await; 70 let (_net_device, mut control, runner) = cyw43::new(state, pwr, spi, fw).await;
71 unwrap!(spawner.spawn(cyw43_task(runner))); 71 spawner.spawn(unwrap!(cyw43_task(runner)));
72 72
73 control.init(clm).await; 73 control.init(clm).await;
74 control 74 control
diff --git a/examples/rp235x/src/bin/ethernet_w5500_icmp.rs b/examples/rp235x/src/bin/ethernet_w5500_icmp.rs
index f1abd311c..f012c9589 100644
--- a/examples/rp235x/src/bin/ethernet_w5500_icmp.rs
+++ b/examples/rp235x/src/bin/ethernet_w5500_icmp.rs
@@ -61,7 +61,7 @@ async fn main(spawner: Spawner) {
61 ) 61 )
62 .await 62 .await
63 .unwrap(); 63 .unwrap();
64 unwrap!(spawner.spawn(ethernet_task(runner))); 64 spawner.spawn(unwrap!(ethernet_task(runner)));
65 65
66 // Generate random seed 66 // Generate random seed
67 let seed = rng.next_u64(); 67 let seed = rng.next_u64();
@@ -76,7 +76,7 @@ async fn main(spawner: Spawner) {
76 ); 76 );
77 77
78 // Launch network task 78 // Launch network task
79 unwrap!(spawner.spawn(net_task(runner))); 79 spawner.spawn(unwrap!(net_task(runner)));
80 80
81 info!("Waiting for DHCP..."); 81 info!("Waiting for DHCP...");
82 let cfg = wait_for_config(stack).await; 82 let cfg = wait_for_config(stack).await;
diff --git a/examples/rp235x/src/bin/ethernet_w5500_icmp_ping.rs b/examples/rp235x/src/bin/ethernet_w5500_icmp_ping.rs
index 1f799a6b0..309d3e4f7 100644
--- a/examples/rp235x/src/bin/ethernet_w5500_icmp_ping.rs
+++ b/examples/rp235x/src/bin/ethernet_w5500_icmp_ping.rs
@@ -63,7 +63,7 @@ async fn main(spawner: Spawner) {
63 ) 63 )
64 .await 64 .await
65 .unwrap(); 65 .unwrap();
66 unwrap!(spawner.spawn(ethernet_task(runner))); 66 spawner.spawn(unwrap!(ethernet_task(runner)));
67 67
68 // Generate random seed 68 // Generate random seed
69 let seed = rng.next_u64(); 69 let seed = rng.next_u64();
@@ -78,7 +78,7 @@ async fn main(spawner: Spawner) {
78 ); 78 );
79 79
80 // Launch network task 80 // Launch network task
81 unwrap!(spawner.spawn(net_task(runner))); 81 spawner.spawn(unwrap!(net_task(runner)));
82 82
83 info!("Waiting for DHCP..."); 83 info!("Waiting for DHCP...");
84 let cfg = wait_for_config(stack).await; 84 let cfg = wait_for_config(stack).await;
diff --git a/examples/rp235x/src/bin/ethernet_w5500_multisocket.rs b/examples/rp235x/src/bin/ethernet_w5500_multisocket.rs
index fd8bc5c7a..7cfc00776 100644
--- a/examples/rp235x/src/bin/ethernet_w5500_multisocket.rs
+++ b/examples/rp235x/src/bin/ethernet_w5500_multisocket.rs
@@ -64,7 +64,7 @@ async fn main(spawner: Spawner) {
64 ) 64 )
65 .await 65 .await
66 .unwrap(); 66 .unwrap();
67 unwrap!(spawner.spawn(ethernet_task(runner))); 67 spawner.spawn(unwrap!(ethernet_task(runner)));
68 68
69 // Generate random seed 69 // Generate random seed
70 let seed = rng.next_u64(); 70 let seed = rng.next_u64();
@@ -79,7 +79,7 @@ async fn main(spawner: Spawner) {
79 ); 79 );
80 80
81 // Launch network task 81 // Launch network task
82 unwrap!(spawner.spawn(net_task(runner))); 82 spawner.spawn(unwrap!(net_task(runner)));
83 83
84 info!("Waiting for DHCP..."); 84 info!("Waiting for DHCP...");
85 let cfg = wait_for_config(stack).await; 85 let cfg = wait_for_config(stack).await;
@@ -87,8 +87,8 @@ async fn main(spawner: Spawner) {
87 info!("IP address: {:?}", local_addr); 87 info!("IP address: {:?}", local_addr);
88 88
89 // Create two sockets listening to the same port, to handle simultaneous connections 89 // Create two sockets listening to the same port, to handle simultaneous connections
90 unwrap!(spawner.spawn(listen_task(stack, 0, 1234))); 90 spawner.spawn(unwrap!(listen_task(stack, 0, 1234)));
91 unwrap!(spawner.spawn(listen_task(stack, 1, 1234))); 91 spawner.spawn(unwrap!(listen_task(stack, 1, 1234)));
92} 92}
93 93
94#[embassy_executor::task(pool_size = 2)] 94#[embassy_executor::task(pool_size = 2)]
diff --git a/examples/rp235x/src/bin/ethernet_w5500_tcp_client.rs b/examples/rp235x/src/bin/ethernet_w5500_tcp_client.rs
index b726b9cc6..254aada9a 100644
--- a/examples/rp235x/src/bin/ethernet_w5500_tcp_client.rs
+++ b/examples/rp235x/src/bin/ethernet_w5500_tcp_client.rs
@@ -67,7 +67,7 @@ async fn main(spawner: Spawner) {
67 ) 67 )
68 .await 68 .await
69 .unwrap(); 69 .unwrap();
70 unwrap!(spawner.spawn(ethernet_task(runner))); 70 spawner.spawn(unwrap!(ethernet_task(runner)));
71 71
72 // Generate random seed 72 // Generate random seed
73 let seed = rng.next_u64(); 73 let seed = rng.next_u64();
@@ -82,7 +82,7 @@ async fn main(spawner: Spawner) {
82 ); 82 );
83 83
84 // Launch network task 84 // Launch network task
85 unwrap!(spawner.spawn(net_task(runner))); 85 spawner.spawn(unwrap!(net_task(runner)));
86 86
87 info!("Waiting for DHCP..."); 87 info!("Waiting for DHCP...");
88 let cfg = wait_for_config(stack).await; 88 let cfg = wait_for_config(stack).await;
diff --git a/examples/rp235x/src/bin/ethernet_w5500_tcp_server.rs b/examples/rp235x/src/bin/ethernet_w5500_tcp_server.rs
index 32b3880f6..ba812f4fd 100644
--- a/examples/rp235x/src/bin/ethernet_w5500_tcp_server.rs
+++ b/examples/rp235x/src/bin/ethernet_w5500_tcp_server.rs
@@ -66,7 +66,7 @@ async fn main(spawner: Spawner) {
66 ) 66 )
67 .await 67 .await
68 .unwrap(); 68 .unwrap();
69 unwrap!(spawner.spawn(ethernet_task(runner))); 69 spawner.spawn(unwrap!(ethernet_task(runner)));
70 70
71 // Generate random seed 71 // Generate random seed
72 let seed = rng.next_u64(); 72 let seed = rng.next_u64();
@@ -81,7 +81,7 @@ async fn main(spawner: Spawner) {
81 ); 81 );
82 82
83 // Launch network task 83 // Launch network task
84 unwrap!(spawner.spawn(net_task(runner))); 84 spawner.spawn(unwrap!(net_task(runner)));
85 85
86 info!("Waiting for DHCP..."); 86 info!("Waiting for DHCP...");
87 let cfg = wait_for_config(stack).await; 87 let cfg = wait_for_config(stack).await;
diff --git a/examples/rp235x/src/bin/ethernet_w5500_udp.rs b/examples/rp235x/src/bin/ethernet_w5500_udp.rs
index cd0824df1..ae74ad518 100644
--- a/examples/rp235x/src/bin/ethernet_w5500_udp.rs
+++ b/examples/rp235x/src/bin/ethernet_w5500_udp.rs
@@ -64,7 +64,7 @@ async fn main(spawner: Spawner) {
64 ) 64 )
65 .await 65 .await
66 .unwrap(); 66 .unwrap();
67 unwrap!(spawner.spawn(ethernet_task(runner))); 67 spawner.spawn(unwrap!(ethernet_task(runner)));
68 68
69 // Generate random seed 69 // Generate random seed
70 let seed = rng.next_u64(); 70 let seed = rng.next_u64();
@@ -79,7 +79,7 @@ async fn main(spawner: Spawner) {
79 ); 79 );
80 80
81 // Launch network task 81 // Launch network task
82 unwrap!(spawner.spawn(net_task(runner))); 82 spawner.spawn(unwrap!(net_task(runner)));
83 83
84 info!("Waiting for DHCP..."); 84 info!("Waiting for DHCP...");
85 let cfg = wait_for_config(stack).await; 85 let cfg = wait_for_config(stack).await;
diff --git a/examples/rp235x/src/bin/i2c_slave.rs b/examples/rp235x/src/bin/i2c_slave.rs
index 9fffb4646..02ad9a003 100644
--- a/examples/rp235x/src/bin/i2c_slave.rs
+++ b/examples/rp235x/src/bin/i2c_slave.rs
@@ -105,7 +105,7 @@ async fn main(spawner: Spawner) {
105 config.addr = DEV_ADDR as u16; 105 config.addr = DEV_ADDR as u16;
106 let device = i2c_slave::I2cSlave::new(p.I2C1, d_sda, d_scl, Irqs, config); 106 let device = i2c_slave::I2cSlave::new(p.I2C1, d_sda, d_scl, Irqs, config);
107 107
108 unwrap!(spawner.spawn(device_task(device))); 108 spawner.spawn(unwrap!(device_task(device)));
109 109
110 let c_sda = p.PIN_1; 110 let c_sda = p.PIN_1;
111 let c_scl = p.PIN_0; 111 let c_scl = p.PIN_0;
@@ -113,5 +113,5 @@ async fn main(spawner: Spawner) {
113 config.frequency = 1_000_000; 113 config.frequency = 1_000_000;
114 let controller = i2c::I2c::new_async(p.I2C0, c_sda, c_scl, Irqs, config); 114 let controller = i2c::I2c::new_async(p.I2C0, c_sda, c_scl, Irqs, config);
115 115
116 unwrap!(spawner.spawn(controller_task(controller))); 116 spawner.spawn(unwrap!(controller_task(controller)));
117} 117}
diff --git a/examples/rp235x/src/bin/interrupt.rs b/examples/rp235x/src/bin/interrupt.rs
index e9ac76486..88513180c 100644
--- a/examples/rp235x/src/bin/interrupt.rs
+++ b/examples/rp235x/src/bin/interrupt.rs
@@ -51,7 +51,7 @@ async fn main(spawner: Spawner) {
51 // No Mutex needed when sharing within the same executor/prio level 51 // No Mutex needed when sharing within the same executor/prio level
52 static AVG: StaticCell<Cell<u32>> = StaticCell::new(); 52 static AVG: StaticCell<Cell<u32>> = StaticCell::new();
53 let avg = AVG.init(Default::default()); 53 let avg = AVG.init(Default::default());
54 spawner.must_spawn(processing(avg)); 54 spawner.spawn(processing(avg).unwrap());
55 55
56 let mut ticker = Ticker::every(Duration::from_secs(1)); 56 let mut ticker = Ticker::every(Duration::from_secs(1));
57 loop { 57 loop {
diff --git a/examples/rp235x/src/bin/multicore.rs b/examples/rp235x/src/bin/multicore.rs
index f02dc3876..4f82801d6 100644
--- a/examples/rp235x/src/bin/multicore.rs
+++ b/examples/rp235x/src/bin/multicore.rs
@@ -35,12 +35,12 @@ fn main() -> ! {
35 unsafe { &mut *core::ptr::addr_of_mut!(CORE1_STACK) }, 35 unsafe { &mut *core::ptr::addr_of_mut!(CORE1_STACK) },
36 move || { 36 move || {
37 let executor1 = EXECUTOR1.init(Executor::new()); 37 let executor1 = EXECUTOR1.init(Executor::new());
38 executor1.run(|spawner| unwrap!(spawner.spawn(core1_task(led)))); 38 executor1.run(|spawner| spawner.spawn(unwrap!(core1_task(led))));
39 }, 39 },
40 ); 40 );
41 41
42 let executor0 = EXECUTOR0.init(Executor::new()); 42 let executor0 = EXECUTOR0.init(Executor::new());
43 executor0.run(|spawner| unwrap!(spawner.spawn(core0_task()))); 43 executor0.run(|spawner| spawner.spawn(unwrap!(core0_task())));
44} 44}
45 45
46#[embassy_executor::task] 46#[embassy_executor::task]
diff --git a/examples/rp235x/src/bin/multiprio.rs b/examples/rp235x/src/bin/multiprio.rs
index 2b397f97d..96cdf8fb1 100644
--- a/examples/rp235x/src/bin/multiprio.rs
+++ b/examples/rp235x/src/bin/multiprio.rs
@@ -130,16 +130,16 @@ fn main() -> ! {
130 // High-priority executor: SWI_IRQ_1, priority level 2 130 // High-priority executor: SWI_IRQ_1, priority level 2
131 interrupt::SWI_IRQ_1.set_priority(Priority::P2); 131 interrupt::SWI_IRQ_1.set_priority(Priority::P2);
132 let spawner = EXECUTOR_HIGH.start(interrupt::SWI_IRQ_1); 132 let spawner = EXECUTOR_HIGH.start(interrupt::SWI_IRQ_1);
133 unwrap!(spawner.spawn(run_high())); 133 spawner.spawn(unwrap!(run_high()));
134 134
135 // Medium-priority executor: SWI_IRQ_0, priority level 3 135 // Medium-priority executor: SWI_IRQ_0, priority level 3
136 interrupt::SWI_IRQ_0.set_priority(Priority::P3); 136 interrupt::SWI_IRQ_0.set_priority(Priority::P3);
137 let spawner = EXECUTOR_MED.start(interrupt::SWI_IRQ_0); 137 let spawner = EXECUTOR_MED.start(interrupt::SWI_IRQ_0);
138 unwrap!(spawner.spawn(run_med())); 138 spawner.spawn(unwrap!(run_med()));
139 139
140 // Low priority executor: runs in thread mode, using WFE/SEV 140 // Low priority executor: runs in thread mode, using WFE/SEV
141 let executor = EXECUTOR_LOW.init(Executor::new()); 141 let executor = EXECUTOR_LOW.init(Executor::new());
142 executor.run(|spawner| { 142 executor.run(|spawner| {
143 unwrap!(spawner.spawn(run_low())); 143 spawner.spawn(unwrap!(run_low()));
144 }); 144 });
145} 145}
diff --git a/examples/rp235x/src/bin/pio_async.rs b/examples/rp235x/src/bin/pio_async.rs
index a519b8a50..d76930f5c 100644
--- a/examples/rp235x/src/bin/pio_async.rs
+++ b/examples/rp235x/src/bin/pio_async.rs
@@ -125,7 +125,7 @@ async fn main(spawner: Spawner) {
125 setup_pio_task_sm0(&mut common, &mut sm0, p.PIN_0); 125 setup_pio_task_sm0(&mut common, &mut sm0, p.PIN_0);
126 setup_pio_task_sm1(&mut common, &mut sm1); 126 setup_pio_task_sm1(&mut common, &mut sm1);
127 setup_pio_task_sm2(&mut common, &mut sm2); 127 setup_pio_task_sm2(&mut common, &mut sm2);
128 spawner.spawn(pio_task_sm0(sm0)).unwrap(); 128 spawner.spawn(pio_task_sm0(sm0).unwrap());
129 spawner.spawn(pio_task_sm1(sm1)).unwrap(); 129 spawner.spawn(pio_task_sm1(sm1).unwrap());
130 spawner.spawn(pio_task_sm2(irq3, sm2)).unwrap(); 130 spawner.spawn(pio_task_sm2(irq3, sm2).unwrap());
131} 131}
diff --git a/examples/rp235x/src/bin/pio_rotary_encoder.rs b/examples/rp235x/src/bin/pio_rotary_encoder.rs
index e820d316d..610d1a40b 100644
--- a/examples/rp235x/src/bin/pio_rotary_encoder.rs
+++ b/examples/rp235x/src/bin/pio_rotary_encoder.rs
@@ -50,6 +50,6 @@ async fn main(spawner: Spawner) {
50 let encoder0 = PioEncoder::new(&mut common, sm0, p.PIN_4, p.PIN_5, &prg); 50 let encoder0 = PioEncoder::new(&mut common, sm0, p.PIN_4, p.PIN_5, &prg);
51 let encoder1 = PioEncoder::new(&mut common, sm1, p.PIN_6, p.PIN_7, &prg); 51 let encoder1 = PioEncoder::new(&mut common, sm1, p.PIN_6, p.PIN_7, &prg);
52 52
53 spawner.must_spawn(encoder_0(encoder0)); 53 spawner.spawn(encoder_0(encoder0).unwrap());
54 spawner.must_spawn(encoder_1(encoder1)); 54 spawner.spawn(encoder_1(encoder1).unwrap());
55} 55}
diff --git a/examples/rp235x/src/bin/pwm.rs b/examples/rp235x/src/bin/pwm.rs
index da1acc18a..289480c85 100644
--- a/examples/rp235x/src/bin/pwm.rs
+++ b/examples/rp235x/src/bin/pwm.rs
@@ -18,8 +18,8 @@ use {defmt_rtt as _, panic_probe as _};
18#[embassy_executor::main] 18#[embassy_executor::main]
19async fn main(spawner: Spawner) { 19async fn main(spawner: Spawner) {
20 let p = embassy_rp::init(Default::default()); 20 let p = embassy_rp::init(Default::default());
21 spawner.spawn(pwm_set_config(p.PWM_SLICE4, p.PIN_25)).unwrap(); 21 spawner.spawn(pwm_set_config(p.PWM_SLICE4, p.PIN_25).unwrap());
22 spawner.spawn(pwm_set_dutycycle(p.PWM_SLICE2, p.PIN_4)).unwrap(); 22 spawner.spawn(pwm_set_dutycycle(p.PWM_SLICE2, p.PIN_4).unwrap());
23} 23}
24 24
25/// Demonstrate PWM by modifying & applying the config 25/// Demonstrate PWM by modifying & applying the config
diff --git a/examples/rp235x/src/bin/shared_bus.rs b/examples/rp235x/src/bin/shared_bus.rs
index 9267dfccb..db7566b1a 100644
--- a/examples/rp235x/src/bin/shared_bus.rs
+++ b/examples/rp235x/src/bin/shared_bus.rs
@@ -35,8 +35,8 @@ async fn main(spawner: Spawner) {
35 static I2C_BUS: StaticCell<I2c1Bus> = StaticCell::new(); 35 static I2C_BUS: StaticCell<I2c1Bus> = StaticCell::new();
36 let i2c_bus = I2C_BUS.init(Mutex::new(i2c)); 36 let i2c_bus = I2C_BUS.init(Mutex::new(i2c));
37 37
38 spawner.must_spawn(i2c_task_a(i2c_bus)); 38 spawner.spawn(i2c_task_a(i2c_bus).unwrap());
39 spawner.must_spawn(i2c_task_b(i2c_bus)); 39 spawner.spawn(i2c_task_b(i2c_bus).unwrap());
40 40
41 // Shared SPI bus 41 // Shared SPI bus
42 let spi_cfg = spi::Config::default(); 42 let spi_cfg = spi::Config::default();
@@ -48,8 +48,8 @@ async fn main(spawner: Spawner) {
48 let cs_a = Output::new(p.PIN_0, Level::High); 48 let cs_a = Output::new(p.PIN_0, Level::High);
49 let cs_b = Output::new(p.PIN_1, Level::High); 49 let cs_b = Output::new(p.PIN_1, Level::High);
50 50
51 spawner.must_spawn(spi_task_a(spi_bus, cs_a)); 51 spawner.spawn(spi_task_a(spi_bus, cs_a).unwrap());
52 spawner.must_spawn(spi_task_b(spi_bus, cs_b)); 52 spawner.spawn(spi_task_b(spi_bus, cs_b).unwrap());
53} 53}
54 54
55#[embassy_executor::task] 55#[embassy_executor::task]
diff --git a/examples/rp235x/src/bin/sharing.rs b/examples/rp235x/src/bin/sharing.rs
index 856be6ace..d4c89946b 100644
--- a/examples/rp235x/src/bin/sharing.rs
+++ b/examples/rp235x/src/bin/sharing.rs
@@ -68,7 +68,7 @@ fn main() -> ! {
68 // High-priority executor: runs in interrupt mode 68 // High-priority executor: runs in interrupt mode
69 interrupt::SWI_IRQ_0.set_priority(Priority::P3); 69 interrupt::SWI_IRQ_0.set_priority(Priority::P3);
70 let spawner = EXECUTOR_HI.start(interrupt::SWI_IRQ_0); 70 let spawner = EXECUTOR_HI.start(interrupt::SWI_IRQ_0);
71 spawner.must_spawn(task_a(uart)); 71 spawner.spawn(task_a(uart).unwrap());
72 72
73 // Low priority executor: runs in thread mode 73 // Low priority executor: runs in thread mode
74 let executor = EXECUTOR_LOW.init(Executor::new()); 74 let executor = EXECUTOR_LOW.init(Executor::new());
@@ -83,8 +83,8 @@ fn main() -> ! {
83 static REF_CELL: ConstStaticCell<RefCell<MyType>> = ConstStaticCell::new(RefCell::new(MyType { inner: 0 })); 83 static REF_CELL: ConstStaticCell<RefCell<MyType>> = ConstStaticCell::new(RefCell::new(MyType { inner: 0 }));
84 let ref_cell = REF_CELL.take(); 84 let ref_cell = REF_CELL.take();
85 85
86 spawner.must_spawn(task_b(uart, cell, ref_cell)); 86 spawner.spawn(task_b(uart, cell, ref_cell).unwrap());
87 spawner.must_spawn(task_c(cell, ref_cell)); 87 spawner.spawn(task_c(cell, ref_cell).unwrap());
88 }); 88 });
89} 89}
90 90
diff --git a/examples/rp235x/src/bin/uart_buffered_split.rs b/examples/rp235x/src/bin/uart_buffered_split.rs
index 7cad09f9b..061be873d 100644
--- a/examples/rp235x/src/bin/uart_buffered_split.rs
+++ b/examples/rp235x/src/bin/uart_buffered_split.rs
@@ -33,7 +33,7 @@ async fn main(spawner: Spawner) {
33 let uart = BufferedUart::new(uart, tx_pin, rx_pin, Irqs, tx_buf, rx_buf, Config::default()); 33 let uart = BufferedUart::new(uart, tx_pin, rx_pin, Irqs, tx_buf, rx_buf, Config::default());
34 let (mut tx, rx) = uart.split(); 34 let (mut tx, rx) = uart.split();
35 35
36 unwrap!(spawner.spawn(reader(rx))); 36 spawner.spawn(unwrap!(reader(rx)));
37 37
38 info!("Writing..."); 38 info!("Writing...");
39 loop { 39 loop {
diff --git a/examples/rp235x/src/bin/uart_unidir.rs b/examples/rp235x/src/bin/uart_unidir.rs
index 45c9c8407..0c80d24c9 100644
--- a/examples/rp235x/src/bin/uart_unidir.rs
+++ b/examples/rp235x/src/bin/uart_unidir.rs
@@ -27,7 +27,7 @@ async fn main(spawner: Spawner) {
27 let mut uart_tx = UartTx::new(p.UART0, p.PIN_0, p.DMA_CH0, Config::default()); 27 let mut uart_tx = UartTx::new(p.UART0, p.PIN_0, p.DMA_CH0, Config::default());
28 let uart_rx = UartRx::new(p.UART1, p.PIN_5, Irqs, p.DMA_CH1, Config::default()); 28 let uart_rx = UartRx::new(p.UART1, p.PIN_5, Irqs, p.DMA_CH1, Config::default());
29 29
30 unwrap!(spawner.spawn(reader(uart_rx))); 30 spawner.spawn(unwrap!(reader(uart_rx)));
31 31
32 info!("Writing..."); 32 info!("Writing...");
33 loop { 33 loop {
diff --git a/examples/rp235x/src/bin/zerocopy.rs b/examples/rp235x/src/bin/zerocopy.rs
index 086c86cac..62ba4cfb8 100644
--- a/examples/rp235x/src/bin/zerocopy.rs
+++ b/examples/rp235x/src/bin/zerocopy.rs
@@ -52,8 +52,8 @@ async fn main(spawner: Spawner) {
52 let channel = CHANNEL.init(Channel::new(buf)); 52 let channel = CHANNEL.init(Channel::new(buf));
53 let (sender, receiver) = channel.split(); 53 let (sender, receiver) = channel.split();
54 54
55 spawner.must_spawn(consumer(receiver)); 55 spawner.spawn(consumer(receiver).unwrap());
56 spawner.must_spawn(producer(sender, adc_parts)); 56 spawner.spawn(producer(sender, adc_parts).unwrap());
57 57
58 let mut ticker = Ticker::every(Duration::from_secs(1)); 58 let mut ticker = Ticker::every(Duration::from_secs(1));
59 loop { 59 loop {
diff --git a/examples/std/src/bin/net.rs b/examples/std/src/bin/net.rs
index 232cf494b..fd7b6c930 100644
--- a/examples/std/src/bin/net.rs
+++ b/examples/std/src/bin/net.rs
@@ -56,7 +56,7 @@ async fn main_task(spawner: Spawner) {
56 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed); 56 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed);
57 57
58 // Launch network task 58 // Launch network task
59 spawner.spawn(net_task(runner)).unwrap(); 59 spawner.spawn(net_task(runner).unwrap());
60 60
61 // Then we can use it! 61 // Then we can use it!
62 let mut rx_buffer = [0; 4096]; 62 let mut rx_buffer = [0; 4096];
@@ -95,6 +95,6 @@ fn main() {
95 95
96 let executor = EXECUTOR.init(Executor::new()); 96 let executor = EXECUTOR.init(Executor::new());
97 executor.run(|spawner| { 97 executor.run(|spawner| {
98 spawner.spawn(main_task(spawner)).unwrap(); 98 spawner.spawn(main_task(spawner).unwrap());
99 }); 99 });
100} 100}
diff --git a/examples/std/src/bin/net_dns.rs b/examples/std/src/bin/net_dns.rs
index cf90731dd..dff704b86 100644
--- a/examples/std/src/bin/net_dns.rs
+++ b/examples/std/src/bin/net_dns.rs
@@ -53,7 +53,7 @@ async fn main_task(spawner: Spawner) {
53 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed); 53 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed);
54 54
55 // Launch network task 55 // Launch network task
56 spawner.spawn(net_task(runner)).unwrap(); 56 spawner.spawn(net_task(runner).unwrap());
57 57
58 let host = "example.com"; 58 let host = "example.com";
59 info!("querying host {:?}...", host); 59 info!("querying host {:?}...", host);
@@ -78,6 +78,6 @@ fn main() {
78 78
79 let executor = EXECUTOR.init(Executor::new()); 79 let executor = EXECUTOR.init(Executor::new());
80 executor.run(|spawner| { 80 executor.run(|spawner| {
81 spawner.spawn(main_task(spawner)).unwrap(); 81 spawner.spawn(main_task(spawner).unwrap());
82 }); 82 });
83} 83}
diff --git a/examples/std/src/bin/net_ppp.rs b/examples/std/src/bin/net_ppp.rs
index ac3aea6ff..82272c798 100644
--- a/examples/std/src/bin/net_ppp.rs
+++ b/examples/std/src/bin/net_ppp.rs
@@ -102,8 +102,8 @@ async fn main_task(spawner: Spawner) {
102 ); 102 );
103 103
104 // Launch network task 104 // Launch network task
105 spawner.spawn(net_task(net_runner)).unwrap(); 105 spawner.spawn(net_task(net_runner).unwrap());
106 spawner.spawn(ppp_task(stack, runner, port)).unwrap(); 106 spawner.spawn(ppp_task(stack, runner, port).unwrap());
107 107
108 // Then we can use it! 108 // Then we can use it!
109 let mut rx_buffer = [0; 4096]; 109 let mut rx_buffer = [0; 4096];
@@ -160,6 +160,6 @@ fn main() {
160 160
161 let executor = EXECUTOR.init(Executor::new()); 161 let executor = EXECUTOR.init(Executor::new());
162 executor.run(|spawner| { 162 executor.run(|spawner| {
163 spawner.spawn(main_task(spawner)).unwrap(); 163 spawner.spawn(main_task(spawner).unwrap());
164 }); 164 });
165} 165}
diff --git a/examples/std/src/bin/net_udp.rs b/examples/std/src/bin/net_udp.rs
index 53632a5b4..c5c4da65f 100644
--- a/examples/std/src/bin/net_udp.rs
+++ b/examples/std/src/bin/net_udp.rs
@@ -52,7 +52,7 @@ async fn main_task(spawner: Spawner) {
52 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed); 52 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed);
53 53
54 // Launch network task 54 // Launch network task
55 spawner.spawn(net_task(runner)).unwrap(); 55 spawner.spawn(net_task(runner).unwrap());
56 56
57 // Then we can use it! 57 // Then we can use it!
58 let mut rx_meta = [PacketMetadata::EMPTY; 16]; 58 let mut rx_meta = [PacketMetadata::EMPTY; 16];
@@ -86,6 +86,6 @@ fn main() {
86 86
87 let executor = EXECUTOR.init(Executor::new()); 87 let executor = EXECUTOR.init(Executor::new());
88 executor.run(|spawner| { 88 executor.run(|spawner| {
89 spawner.spawn(main_task(spawner)).unwrap(); 89 spawner.spawn(main_task(spawner).unwrap());
90 }); 90 });
91} 91}
diff --git a/examples/std/src/bin/serial.rs b/examples/std/src/bin/serial.rs
index 10c85511d..1ed9997c4 100644
--- a/examples/std/src/bin/serial.rs
+++ b/examples/std/src/bin/serial.rs
@@ -50,6 +50,6 @@ fn main() {
50 50
51 let executor = EXECUTOR.init(Executor::new()); 51 let executor = EXECUTOR.init(Executor::new());
52 executor.run(|spawner| { 52 executor.run(|spawner| {
53 spawner.spawn(run()).unwrap(); 53 spawner.spawn(run().unwrap());
54 }); 54 });
55} 55}
diff --git a/examples/std/src/bin/tcp_accept.rs b/examples/std/src/bin/tcp_accept.rs
index 961c20e2d..77886f471 100644
--- a/examples/std/src/bin/tcp_accept.rs
+++ b/examples/std/src/bin/tcp_accept.rs
@@ -54,7 +54,7 @@ async fn main_task(spawner: Spawner) {
54 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed); 54 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed);
55 55
56 // Launch network task 56 // Launch network task
57 spawner.spawn(net_task(runner)).unwrap(); 57 spawner.spawn(net_task(runner).unwrap());
58 58
59 // Then we can use it! 59 // Then we can use it!
60 let mut rx_buffer = [0; 4096]; 60 let mut rx_buffer = [0; 4096];
@@ -101,6 +101,6 @@ fn main() {
101 101
102 let executor = EXECUTOR.init(Executor::new()); 102 let executor = EXECUTOR.init(Executor::new());
103 executor.run(|spawner| { 103 executor.run(|spawner| {
104 spawner.spawn(main_task(spawner)).unwrap(); 104 spawner.spawn(main_task(spawner).unwrap());
105 }); 105 });
106} 106}
diff --git a/examples/std/src/bin/tick.rs b/examples/std/src/bin/tick.rs
index f23cf3549..16b82c82b 100644
--- a/examples/std/src/bin/tick.rs
+++ b/examples/std/src/bin/tick.rs
@@ -17,5 +17,5 @@ async fn main(spawner: Spawner) {
17 .format_timestamp_nanos() 17 .format_timestamp_nanos()
18 .init(); 18 .init();
19 19
20 spawner.spawn(run()).unwrap(); 20 spawner.spawn(run().unwrap());
21} 21}
diff --git a/examples/stm32f0/src/bin/button_controlled_blink.rs b/examples/stm32f0/src/bin/button_controlled_blink.rs
index 744df3e3b..f232e3290 100644
--- a/examples/stm32f0/src/bin/button_controlled_blink.rs
+++ b/examples/stm32f0/src/bin/button_controlled_blink.rs
@@ -46,7 +46,7 @@ async fn main(spawner: Spawner) {
46 BLINK_MS.store(del_var, Ordering::Relaxed); 46 BLINK_MS.store(del_var, Ordering::Relaxed);
47 47
48 // Spawn LED blinking task 48 // Spawn LED blinking task
49 spawner.spawn(led_task(p.PA5.into())).unwrap(); 49 spawner.spawn(led_task(p.PA5.into()).unwrap());
50 50
51 loop { 51 loop {
52 // Check if button got pressed 52 // Check if button got pressed
diff --git a/examples/stm32f0/src/bin/multiprio.rs b/examples/stm32f0/src/bin/multiprio.rs
index 84e4077ef..b5244afc8 100644
--- a/examples/stm32f0/src/bin/multiprio.rs
+++ b/examples/stm32f0/src/bin/multiprio.rs
@@ -134,16 +134,16 @@ fn main() -> ! {
134 // High-priority executor: USART1, priority level 6 134 // High-priority executor: USART1, priority level 6
135 interrupt::USART1.set_priority(Priority::P6); 135 interrupt::USART1.set_priority(Priority::P6);
136 let spawner = EXECUTOR_HIGH.start(interrupt::USART1); 136 let spawner = EXECUTOR_HIGH.start(interrupt::USART1);
137 unwrap!(spawner.spawn(run_high())); 137 spawner.spawn(unwrap!(run_high()));
138 138
139 // Medium-priority executor: USART2, priority level 7 139 // Medium-priority executor: USART2, priority level 7
140 interrupt::USART2.set_priority(Priority::P7); 140 interrupt::USART2.set_priority(Priority::P7);
141 let spawner = EXECUTOR_MED.start(interrupt::USART2); 141 let spawner = EXECUTOR_MED.start(interrupt::USART2);
142 unwrap!(spawner.spawn(run_med())); 142 spawner.spawn(unwrap!(run_med()));
143 143
144 // Low priority executor: runs in thread mode, using WFE/SEV 144 // Low priority executor: runs in thread mode, using WFE/SEV
145 let executor = EXECUTOR_LOW.init(Executor::new()); 145 let executor = EXECUTOR_LOW.init(Executor::new());
146 executor.run(|spawner| { 146 executor.run(|spawner| {
147 unwrap!(spawner.spawn(run_low())); 147 spawner.spawn(unwrap!(run_low()));
148 }); 148 });
149} 149}
diff --git a/examples/stm32f1/src/bin/input_capture.rs b/examples/stm32f1/src/bin/input_capture.rs
index 84811fb95..d747a43c2 100644
--- a/examples/stm32f1/src/bin/input_capture.rs
+++ b/examples/stm32f1/src/bin/input_capture.rs
@@ -37,7 +37,7 @@ async fn main(spawner: Spawner) {
37 let p = embassy_stm32::init(Default::default()); 37 let p = embassy_stm32::init(Default::default());
38 info!("Hello World!"); 38 info!("Hello World!");
39 39
40 unwrap!(spawner.spawn(blinky(p.PC13))); 40 spawner.spawn(unwrap!(blinky(p.PC13)));
41 41
42 let ch3 = CapturePin::new(p.PA2, Pull::None); 42 let ch3 = CapturePin::new(p.PA2, Pull::None);
43 let mut ic = InputCapture::new(p.TIM2, None, None, Some(ch3), None, Irqs, khz(1000), Default::default()); 43 let mut ic = InputCapture::new(p.TIM2, None, None, Some(ch3), None, Irqs, khz(1000), Default::default());
diff --git a/examples/stm32f1/src/bin/pwm_input.rs b/examples/stm32f1/src/bin/pwm_input.rs
index aa6a11ff8..63b899767 100644
--- a/examples/stm32f1/src/bin/pwm_input.rs
+++ b/examples/stm32f1/src/bin/pwm_input.rs
@@ -36,7 +36,7 @@ async fn main(spawner: Spawner) {
36 let p = embassy_stm32::init(Default::default()); 36 let p = embassy_stm32::init(Default::default());
37 info!("Hello World!"); 37 info!("Hello World!");
38 38
39 unwrap!(spawner.spawn(blinky(p.PC13))); 39 spawner.spawn(unwrap!(blinky(p.PC13)));
40 40
41 let mut pwm_input = PwmInput::new_ch1(p.TIM2, p.PA0, Pull::None, khz(10)); 41 let mut pwm_input = PwmInput::new_ch1(p.TIM2, p.PA0, Pull::None, khz(10));
42 pwm_input.enable(); 42 pwm_input.enable();
diff --git a/examples/stm32f3/src/bin/button_events.rs b/examples/stm32f3/src/bin/button_events.rs
index f5ed5d2c9..a54d03212 100644
--- a/examples/stm32f3/src/bin/button_events.rs
+++ b/examples/stm32f3/src/bin/button_events.rs
@@ -113,8 +113,8 @@ async fn main(spawner: Spawner) {
113 ]; 113 ];
114 let leds = Leds::new(leds); 114 let leds = Leds::new(leds);
115 115
116 spawner.spawn(button_waiter(button)).unwrap(); 116 spawner.spawn(button_waiter(button).unwrap());
117 spawner.spawn(led_blinker(leds)).unwrap(); 117 spawner.spawn(led_blinker(leds).unwrap());
118} 118}
119 119
120#[embassy_executor::task] 120#[embassy_executor::task]
diff --git a/examples/stm32f3/src/bin/multiprio.rs b/examples/stm32f3/src/bin/multiprio.rs
index b4620888f..2f2ffdea2 100644
--- a/examples/stm32f3/src/bin/multiprio.rs
+++ b/examples/stm32f3/src/bin/multiprio.rs
@@ -135,16 +135,16 @@ fn main() -> ! {
135 // High-priority executor: UART4, priority level 6 135 // High-priority executor: UART4, priority level 6
136 interrupt::UART4.set_priority(Priority::P6); 136 interrupt::UART4.set_priority(Priority::P6);
137 let spawner = EXECUTOR_HIGH.start(interrupt::UART4); 137 let spawner = EXECUTOR_HIGH.start(interrupt::UART4);
138 unwrap!(spawner.spawn(run_high())); 138 spawner.spawn(unwrap!(run_high()));
139 139
140 // Medium-priority executor: UART5, priority level 7 140 // Medium-priority executor: UART5, priority level 7
141 interrupt::UART5.set_priority(Priority::P7); 141 interrupt::UART5.set_priority(Priority::P7);
142 let spawner = EXECUTOR_MED.start(interrupt::UART5); 142 let spawner = EXECUTOR_MED.start(interrupt::UART5);
143 unwrap!(spawner.spawn(run_med())); 143 spawner.spawn(unwrap!(run_med()));
144 144
145 // Low priority executor: runs in thread mode, using WFE/SEV 145 // Low priority executor: runs in thread mode, using WFE/SEV
146 let executor = EXECUTOR_LOW.init(Executor::new()); 146 let executor = EXECUTOR_LOW.init(Executor::new());
147 executor.run(|spawner| { 147 executor.run(|spawner| {
148 unwrap!(spawner.spawn(run_low())); 148 spawner.spawn(unwrap!(run_low()));
149 }); 149 });
150} 150}
diff --git a/examples/stm32f4/src/bin/adc_dma.rs b/examples/stm32f4/src/bin/adc_dma.rs
index 43a761e6d..2ec48640e 100644
--- a/examples/stm32f4/src/bin/adc_dma.rs
+++ b/examples/stm32f4/src/bin/adc_dma.rs
@@ -11,7 +11,7 @@ use {defmt_rtt as _, panic_probe as _};
11#[embassy_executor::main] 11#[embassy_executor::main]
12async fn main(spawner: Spawner) { 12async fn main(spawner: Spawner) {
13 let p = embassy_stm32::init(Default::default()); 13 let p = embassy_stm32::init(Default::default());
14 spawner.must_spawn(adc_task(p)); 14 spawner.spawn(adc_task(p).unwrap());
15} 15}
16 16
17#[embassy_executor::task] 17#[embassy_executor::task]
diff --git a/examples/stm32f4/src/bin/eth.rs b/examples/stm32f4/src/bin/eth.rs
index 634d8e2c6..f41a60529 100644
--- a/examples/stm32f4/src/bin/eth.rs
+++ b/examples/stm32f4/src/bin/eth.rs
@@ -91,7 +91,7 @@ async fn main(spawner: Spawner) -> ! {
91 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed); 91 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed);
92 92
93 // Launch network task 93 // Launch network task
94 unwrap!(spawner.spawn(net_task(runner))); 94 spawner.spawn(unwrap!(net_task(runner)));
95 95
96 // Ensure DHCP configuration is up before trying connect 96 // Ensure DHCP configuration is up before trying connect
97 stack.wait_config_up().await; 97 stack.wait_config_up().await;
diff --git a/examples/stm32f4/src/bin/eth_w5500.rs b/examples/stm32f4/src/bin/eth_w5500.rs
index 6e6bef08c..7ce3bfe75 100644
--- a/examples/stm32f4/src/bin/eth_w5500.rs
+++ b/examples/stm32f4/src/bin/eth_w5500.rs
@@ -83,7 +83,7 @@ async fn main(spawner: Spawner) -> ! {
83 let (device, runner) = embassy_net_wiznet::new(mac_addr, state, spi, w5500_int, w5500_reset) 83 let (device, runner) = embassy_net_wiznet::new(mac_addr, state, spi, w5500_int, w5500_reset)
84 .await 84 .await
85 .unwrap(); 85 .unwrap();
86 unwrap!(spawner.spawn(ethernet_task(runner))); 86 spawner.spawn(unwrap!(ethernet_task(runner)));
87 87
88 let config = embassy_net::Config::dhcpv4(Default::default()); 88 let config = embassy_net::Config::dhcpv4(Default::default());
89 //let config = embassy_net::Config::ipv4_static(embassy_net::StaticConfigV4 { 89 //let config = embassy_net::Config::ipv4_static(embassy_net::StaticConfigV4 {
@@ -96,7 +96,7 @@ async fn main(spawner: Spawner) -> ! {
96 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed); 96 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed);
97 97
98 // Launch network task 98 // Launch network task
99 unwrap!(spawner.spawn(net_task(runner))); 99 spawner.spawn(unwrap!(net_task(runner)));
100 100
101 // Ensure DHCP configuration is up before trying connect 101 // Ensure DHCP configuration is up before trying connect
102 stack.wait_config_up().await; 102 stack.wait_config_up().await;
diff --git a/examples/stm32f4/src/bin/flash_async.rs b/examples/stm32f4/src/bin/flash_async.rs
index 755713542..2feb9de09 100644
--- a/examples/stm32f4/src/bin/flash_async.rs
+++ b/examples/stm32f4/src/bin/flash_async.rs
@@ -21,7 +21,7 @@ async fn main(spawner: Spawner) {
21 let mut f = Flash::new(p.FLASH, Irqs); 21 let mut f = Flash::new(p.FLASH, Irqs);
22 22
23 // Led should blink uninterrupted during ~2sec erase operation 23 // Led should blink uninterrupted during ~2sec erase operation
24 spawner.spawn(blinky(p.PB7.into())).unwrap(); 24 spawner.spawn(blinky(p.PB7.into()).unwrap());
25 25
26 // Test on bank 2 in order not to stall CPU. 26 // Test on bank 2 in order not to stall CPU.
27 test_flash(&mut f, 1024 * 1024, 128 * 1024).await; 27 test_flash(&mut f, 1024 * 1024, 128 * 1024).await;
diff --git a/examples/stm32f4/src/bin/input_capture.rs b/examples/stm32f4/src/bin/input_capture.rs
index e15b4d26e..9998c4733 100644
--- a/examples/stm32f4/src/bin/input_capture.rs
+++ b/examples/stm32f4/src/bin/input_capture.rs
@@ -37,7 +37,7 @@ async fn main(spawner: Spawner) {
37 let p = embassy_stm32::init(Default::default()); 37 let p = embassy_stm32::init(Default::default());
38 info!("Hello World!"); 38 info!("Hello World!");
39 39
40 unwrap!(spawner.spawn(blinky(p.PB2))); 40 spawner.spawn(unwrap!(blinky(p.PB2)));
41 41
42 let ch3 = CapturePin::new(p.PB10, Pull::None); 42 let ch3 = CapturePin::new(p.PB10, Pull::None);
43 let mut ic = InputCapture::new(p.TIM2, None, None, Some(ch3), None, Irqs, khz(1000), Default::default()); 43 let mut ic = InputCapture::new(p.TIM2, None, None, Some(ch3), None, Irqs, khz(1000), Default::default());
diff --git a/examples/stm32f4/src/bin/multiprio.rs b/examples/stm32f4/src/bin/multiprio.rs
index b4620888f..2f2ffdea2 100644
--- a/examples/stm32f4/src/bin/multiprio.rs
+++ b/examples/stm32f4/src/bin/multiprio.rs
@@ -135,16 +135,16 @@ fn main() -> ! {
135 // High-priority executor: UART4, priority level 6 135 // High-priority executor: UART4, priority level 6
136 interrupt::UART4.set_priority(Priority::P6); 136 interrupt::UART4.set_priority(Priority::P6);
137 let spawner = EXECUTOR_HIGH.start(interrupt::UART4); 137 let spawner = EXECUTOR_HIGH.start(interrupt::UART4);
138 unwrap!(spawner.spawn(run_high())); 138 spawner.spawn(unwrap!(run_high()));
139 139
140 // Medium-priority executor: UART5, priority level 7 140 // Medium-priority executor: UART5, priority level 7
141 interrupt::UART5.set_priority(Priority::P7); 141 interrupt::UART5.set_priority(Priority::P7);
142 let spawner = EXECUTOR_MED.start(interrupt::UART5); 142 let spawner = EXECUTOR_MED.start(interrupt::UART5);
143 unwrap!(spawner.spawn(run_med())); 143 spawner.spawn(unwrap!(run_med()));
144 144
145 // Low priority executor: runs in thread mode, using WFE/SEV 145 // Low priority executor: runs in thread mode, using WFE/SEV
146 let executor = EXECUTOR_LOW.init(Executor::new()); 146 let executor = EXECUTOR_LOW.init(Executor::new());
147 executor.run(|spawner| { 147 executor.run(|spawner| {
148 unwrap!(spawner.spawn(run_low())); 148 spawner.spawn(unwrap!(run_low()));
149 }); 149 });
150} 150}
diff --git a/examples/stm32f4/src/bin/pwm_input.rs b/examples/stm32f4/src/bin/pwm_input.rs
index 74167cbf2..e8bfa524f 100644
--- a/examples/stm32f4/src/bin/pwm_input.rs
+++ b/examples/stm32f4/src/bin/pwm_input.rs
@@ -36,7 +36,7 @@ async fn main(spawner: Spawner) {
36 let p = embassy_stm32::init(Default::default()); 36 let p = embassy_stm32::init(Default::default());
37 info!("Hello World!"); 37 info!("Hello World!");
38 38
39 unwrap!(spawner.spawn(blinky(p.PB2))); 39 spawner.spawn(unwrap!(blinky(p.PB2)));
40 40
41 let mut pwm_input = PwmInput::new_ch1(p.TIM3, p.PA6, Pull::None, khz(10)); 41 let mut pwm_input = PwmInput::new_ch1(p.TIM3, p.PA6, Pull::None, khz(10));
42 pwm_input.enable(); 42 pwm_input.enable();
diff --git a/examples/stm32f4/src/bin/usb_ethernet.rs b/examples/stm32f4/src/bin/usb_ethernet.rs
index 322cb90c7..7abbe8719 100644
--- a/examples/stm32f4/src/bin/usb_ethernet.rs
+++ b/examples/stm32f4/src/bin/usb_ethernet.rs
@@ -118,11 +118,11 @@ async fn main(spawner: Spawner) {
118 // Build the builder. 118 // Build the builder.
119 let usb = builder.build(); 119 let usb = builder.build();
120 120
121 unwrap!(spawner.spawn(usb_task(usb))); 121 spawner.spawn(unwrap!(usb_task(usb)));
122 122
123 static NET_STATE: StaticCell<NetState<MTU, 4, 4>> = StaticCell::new(); 123 static NET_STATE: StaticCell<NetState<MTU, 4, 4>> = StaticCell::new();
124 let (runner, device) = class.into_embassy_net_device::<MTU, 4, 4>(NET_STATE.init(NetState::new()), our_mac_addr); 124 let (runner, device) = class.into_embassy_net_device::<MTU, 4, 4>(NET_STATE.init(NetState::new()), our_mac_addr);
125 unwrap!(spawner.spawn(usb_ncm_task(runner))); 125 spawner.spawn(unwrap!(usb_ncm_task(runner)));
126 126
127 let config = embassy_net::Config::dhcpv4(Default::default()); 127 let config = embassy_net::Config::dhcpv4(Default::default());
128 //let config = embassy_net::Config::ipv4_static(embassy_net::StaticConfigV4 { 128 //let config = embassy_net::Config::ipv4_static(embassy_net::StaticConfigV4 {
@@ -141,7 +141,7 @@ async fn main(spawner: Spawner) {
141 static RESOURCES: StaticCell<StackResources<3>> = StaticCell::new(); 141 static RESOURCES: StaticCell<StackResources<3>> = StaticCell::new();
142 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed); 142 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed);
143 143
144 unwrap!(spawner.spawn(net_task(runner))); 144 spawner.spawn(unwrap!(net_task(runner)));
145 145
146 // And now we can use it! 146 // And now we can use it!
147 147
diff --git a/examples/stm32f4/src/bin/usb_uac_speaker.rs b/examples/stm32f4/src/bin/usb_uac_speaker.rs
index 654bec498..79bd2d914 100644
--- a/examples/stm32f4/src/bin/usb_uac_speaker.rs
+++ b/examples/stm32f4/src/bin/usb_uac_speaker.rs
@@ -375,9 +375,9 @@ async fn main(spawner: Spawner) {
375 } 375 }
376 376
377 // Launch USB audio tasks. 377 // Launch USB audio tasks.
378 unwrap!(spawner.spawn(usb_control_task(control_monitor))); 378 spawner.spawn(unwrap!(usb_control_task(control_monitor)));
379 unwrap!(spawner.spawn(usb_streaming_task(stream, sender))); 379 spawner.spawn(unwrap!(usb_streaming_task(stream, sender)));
380 unwrap!(spawner.spawn(usb_feedback_task(feedback))); 380 spawner.spawn(unwrap!(usb_feedback_task(feedback)));
381 unwrap!(spawner.spawn(usb_task(usb_device))); 381 spawner.spawn(unwrap!(usb_task(usb_device)));
382 unwrap!(spawner.spawn(audio_receiver_task(receiver))); 382 spawner.spawn(unwrap!(audio_receiver_task(receiver)));
383} 383}
diff --git a/examples/stm32f7/src/bin/can.rs b/examples/stm32f7/src/bin/can.rs
index 58ba940a8..9a91ac814 100644
--- a/examples/stm32f7/src/bin/can.rs
+++ b/examples/stm32f7/src/bin/can.rs
@@ -64,7 +64,7 @@ async fn main(spawner: Spawner) {
64 64
65 static CAN_TX: StaticCell<CanTx<'static>> = StaticCell::new(); 65 static CAN_TX: StaticCell<CanTx<'static>> = StaticCell::new();
66 let tx = CAN_TX.init(tx); 66 let tx = CAN_TX.init(tx);
67 spawner.spawn(send_can_message(tx)).unwrap(); 67 spawner.spawn(send_can_message(tx).unwrap());
68 68
69 loop { 69 loop {
70 let envelope = rx.read().await.unwrap(); 70 let envelope = rx.read().await.unwrap();
diff --git a/examples/stm32f7/src/bin/eth.rs b/examples/stm32f7/src/bin/eth.rs
index 67a2b34bb..b13b7bdda 100644
--- a/examples/stm32f7/src/bin/eth.rs
+++ b/examples/stm32f7/src/bin/eth.rs
@@ -91,7 +91,7 @@ async fn main(spawner: Spawner) -> ! {
91 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed); 91 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed);
92 92
93 // Launch network task 93 // Launch network task
94 unwrap!(spawner.spawn(net_task(runner))); 94 spawner.spawn(unwrap!(net_task(runner)));
95 95
96 // Ensure DHCP configuration is up before trying connect 96 // Ensure DHCP configuration is up before trying connect
97 stack.wait_config_up().await; 97 stack.wait_config_up().await;
diff --git a/examples/stm32g0/src/bin/input_capture.rs b/examples/stm32g0/src/bin/input_capture.rs
index df339d541..5501a6941 100644
--- a/examples/stm32g0/src/bin/input_capture.rs
+++ b/examples/stm32g0/src/bin/input_capture.rs
@@ -44,7 +44,7 @@ async fn main(spawner: Spawner) {
44 let p = embassy_stm32::init(Default::default()); 44 let p = embassy_stm32::init(Default::default());
45 info!("Hello World!"); 45 info!("Hello World!");
46 46
47 unwrap!(spawner.spawn(blinky(p.PB1))); 47 spawner.spawn(unwrap!(blinky(p.PB1)));
48 48
49 // Connect PB1 and PA8 with a 1k Ohm resistor 49 // Connect PB1 and PA8 with a 1k Ohm resistor
50 let ch1_pin = PwmPin::new(p.PA8, OutputType::PushPull); 50 let ch1_pin = PwmPin::new(p.PA8, OutputType::PushPull);
diff --git a/examples/stm32g0/src/bin/pwm_input.rs b/examples/stm32g0/src/bin/pwm_input.rs
index fd4f53f1e..72aa07c03 100644
--- a/examples/stm32g0/src/bin/pwm_input.rs
+++ b/examples/stm32g0/src/bin/pwm_input.rs
@@ -40,7 +40,7 @@ bind_interrupts!(struct Irqs {
40async fn main(spawner: Spawner) { 40async fn main(spawner: Spawner) {
41 let p = embassy_stm32::init(Default::default()); 41 let p = embassy_stm32::init(Default::default());
42 42
43 unwrap!(spawner.spawn(blinky(p.PB1))); 43 spawner.spawn(unwrap!(blinky(p.PB1)));
44 // Connect PA8 and PA6 with a 1k Ohm resistor 44 // Connect PA8 and PA6 with a 1k Ohm resistor
45 let ch1_pin = PwmPin::new(p.PA8, OutputType::PushPull); 45 let ch1_pin = PwmPin::new(p.PA8, OutputType::PushPull);
46 let mut pwm = SimplePwm::new(p.TIM1, Some(ch1_pin), None, None, None, khz(1), Default::default()); 46 let mut pwm = SimplePwm::new(p.TIM1, Some(ch1_pin), None, None, None, khz(1), Default::default());
diff --git a/examples/stm32g4/src/bin/i2c_slave.rs b/examples/stm32g4/src/bin/i2c_slave.rs
index 8b255b0e6..65aca1c1b 100644
--- a/examples/stm32g4/src/bin/i2c_slave.rs
+++ b/examples/stm32g4/src/bin/i2c_slave.rs
@@ -139,11 +139,11 @@ async fn main(spawner: Spawner) {
139 let device = 139 let device =
140 i2c::I2c::new(p.I2C2, d_scl, d_sda, Irqs, p.DMA1_CH1, p.DMA1_CH2, config).into_slave_multimaster(d_addr_config); 140 i2c::I2c::new(p.I2C2, d_scl, d_sda, Irqs, p.DMA1_CH1, p.DMA1_CH2, config).into_slave_multimaster(d_addr_config);
141 141
142 unwrap!(spawner.spawn(device_task(device))); 142 spawner.spawn(unwrap!(device_task(device)));
143 143
144 let c_sda = p.PB8; 144 let c_sda = p.PB8;
145 let c_scl = p.PB7; 145 let c_scl = p.PB7;
146 let controller = i2c::I2c::new(p.I2C1, c_sda, c_scl, Irqs, p.DMA1_CH3, p.DMA1_CH4, config); 146 let controller = i2c::I2c::new(p.I2C1, c_sda, c_scl, Irqs, p.DMA1_CH3, p.DMA1_CH4, config);
147 147
148 unwrap!(spawner.spawn(controller_task(controller))); 148 spawner.spawn(unwrap!(controller_task(controller)));
149} 149}
diff --git a/examples/stm32h5/src/bin/adc_dma.rs b/examples/stm32h5/src/bin/adc_dma.rs
index 20073e22f..fb9fcbc5c 100644
--- a/examples/stm32h5/src/bin/adc_dma.rs
+++ b/examples/stm32h5/src/bin/adc_dma.rs
@@ -42,8 +42,8 @@ async fn main(spawner: Spawner) {
42 } 42 }
43 let p = embassy_stm32::init(config); 43 let p = embassy_stm32::init(config);
44 44
45 spawner.must_spawn(adc1_task(p.ADC1, p.GPDMA1_CH0, p.PA0, p.PA2)); 45 spawner.spawn(unwrap!(adc1_task(p.ADC1, p.GPDMA1_CH0, p.PA0, p.PA2)));
46 spawner.must_spawn(adc2_task(p.ADC2, p.GPDMA1_CH1, p.PA1, p.PA3)); 46 spawner.spawn(unwrap!(adc2_task(p.ADC2, p.GPDMA1_CH1, p.PA1, p.PA3)));
47} 47}
48 48
49#[embassy_executor::task] 49#[embassy_executor::task]
diff --git a/examples/stm32h5/src/bin/eth.rs b/examples/stm32h5/src/bin/eth.rs
index 1d85cc1e7..a84fe358b 100644
--- a/examples/stm32h5/src/bin/eth.rs
+++ b/examples/stm32h5/src/bin/eth.rs
@@ -94,7 +94,7 @@ async fn main(spawner: Spawner) -> ! {
94 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed); 94 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed);
95 95
96 // Launch network task 96 // Launch network task
97 unwrap!(spawner.spawn(net_task(runner))); 97 spawner.spawn(unwrap!(net_task(runner)));
98 98
99 // Ensure DHCP configuration is up before trying connect 99 // Ensure DHCP configuration is up before trying connect
100 stack.wait_config_up().await; 100 stack.wait_config_up().await;
diff --git a/examples/stm32h5/src/bin/stop.rs b/examples/stm32h5/src/bin/stop.rs
index e650791c5..3c4f49f64 100644
--- a/examples/stm32h5/src/bin/stop.rs
+++ b/examples/stm32h5/src/bin/stop.rs
@@ -18,7 +18,7 @@ use {defmt_rtt as _, panic_probe as _};
18#[cortex_m_rt::entry] 18#[cortex_m_rt::entry]
19fn main() -> ! { 19fn main() -> ! {
20 Executor::take().run(|spawner| { 20 Executor::take().run(|spawner| {
21 unwrap!(spawner.spawn(async_main(spawner))); 21 spawner.spawn(unwrap!(async_main(spawner)));
22 }) 22 })
23} 23}
24 24
@@ -43,8 +43,8 @@ async fn async_main(spawner: Spawner) {
43 let rtc = RTC.init(rtc); 43 let rtc = RTC.init(rtc);
44 embassy_stm32::low_power::stop_with_rtc(rtc); 44 embassy_stm32::low_power::stop_with_rtc(rtc);
45 45
46 unwrap!(spawner.spawn(blinky(p.PB4.into()))); 46 spawner.spawn(unwrap!(blinky(p.PB4.into())));
47 unwrap!(spawner.spawn(timeout())); 47 spawner.spawn(unwrap!(timeout()));
48} 48}
49 49
50#[embassy_executor::task] 50#[embassy_executor::task]
diff --git a/examples/stm32h5/src/bin/usart.rs b/examples/stm32h5/src/bin/usart.rs
index cc49c2fdb..264e7d582 100644
--- a/examples/stm32h5/src/bin/usart.rs
+++ b/examples/stm32h5/src/bin/usart.rs
@@ -34,6 +34,6 @@ fn main() -> ! {
34 let executor = EXECUTOR.init(Executor::new()); 34 let executor = EXECUTOR.init(Executor::new());
35 35
36 executor.run(|spawner| { 36 executor.run(|spawner| {
37 unwrap!(spawner.spawn(main_task())); 37 spawner.spawn(unwrap!(main_task()));
38 }) 38 })
39} 39}
diff --git a/examples/stm32h5/src/bin/usart_dma.rs b/examples/stm32h5/src/bin/usart_dma.rs
index c644e84bd..ea48515d7 100644
--- a/examples/stm32h5/src/bin/usart_dma.rs
+++ b/examples/stm32h5/src/bin/usart_dma.rs
@@ -42,6 +42,6 @@ fn main() -> ! {
42 let executor = EXECUTOR.init(Executor::new()); 42 let executor = EXECUTOR.init(Executor::new());
43 43
44 executor.run(|spawner| { 44 executor.run(|spawner| {
45 unwrap!(spawner.spawn(main_task())); 45 spawner.spawn(unwrap!(main_task()));
46 }) 46 })
47} 47}
diff --git a/examples/stm32h5/src/bin/usart_split.rs b/examples/stm32h5/src/bin/usart_split.rs
index d26c5003c..f56c1c57d 100644
--- a/examples/stm32h5/src/bin/usart_split.rs
+++ b/examples/stm32h5/src/bin/usart_split.rs
@@ -27,7 +27,7 @@ async fn main(spawner: Spawner) -> ! {
27 27
28 let (mut tx, rx) = usart.split(); 28 let (mut tx, rx) = usart.split();
29 29
30 unwrap!(spawner.spawn(reader(rx))); 30 spawner.spawn(unwrap!(reader(rx)));
31 31
32 loop { 32 loop {
33 let buf = CHANNEL.receive().await; 33 let buf = CHANNEL.receive().await;
diff --git a/examples/stm32h5/src/bin/usb_uac_speaker.rs b/examples/stm32h5/src/bin/usb_uac_speaker.rs
index 5d007261c..86873cabd 100644
--- a/examples/stm32h5/src/bin/usb_uac_speaker.rs
+++ b/examples/stm32h5/src/bin/usb_uac_speaker.rs
@@ -366,9 +366,9 @@ async fn main(spawner: Spawner) {
366 } 366 }
367 367
368 // Launch USB audio tasks. 368 // Launch USB audio tasks.
369 unwrap!(spawner.spawn(usb_control_task(control_monitor))); 369 spawner.spawn(unwrap!(usb_control_task(control_monitor)));
370 unwrap!(spawner.spawn(usb_streaming_task(stream, sender))); 370 spawner.spawn(unwrap!(usb_streaming_task(stream, sender)));
371 unwrap!(spawner.spawn(usb_feedback_task(feedback))); 371 spawner.spawn(unwrap!(usb_feedback_task(feedback)));
372 unwrap!(spawner.spawn(usb_task(usb_device))); 372 spawner.spawn(unwrap!(usb_task(usb_device)));
373 unwrap!(spawner.spawn(audio_receiver_task(receiver))); 373 spawner.spawn(unwrap!(audio_receiver_task(receiver)));
374} 374}
diff --git a/examples/stm32h7/src/bin/dac_dma.rs b/examples/stm32h7/src/bin/dac_dma.rs
index 8314754bc..df37e9d78 100644
--- a/examples/stm32h7/src/bin/dac_dma.rs
+++ b/examples/stm32h7/src/bin/dac_dma.rs
@@ -53,8 +53,8 @@ async fn main(spawner: Spawner) {
53 // Obtain two independent channels (p.DAC1 can only be consumed once, though!) 53 // Obtain two independent channels (p.DAC1 can only be consumed once, though!)
54 let (dac_ch1, dac_ch2) = embassy_stm32::dac::Dac::new(p.DAC1, p.DMA1_CH3, p.DMA1_CH4, p.PA4, p.PA5).split(); 54 let (dac_ch1, dac_ch2) = embassy_stm32::dac::Dac::new(p.DAC1, p.DMA1_CH3, p.DMA1_CH4, p.PA4, p.PA5).split();
55 55
56 spawner.spawn(dac_task1(p.TIM6, dac_ch1)).ok(); 56 spawner.spawn(dac_task1(p.TIM6, dac_ch1).unwrap());
57 spawner.spawn(dac_task2(p.TIM7, dac_ch2)).ok(); 57 spawner.spawn(dac_task2(p.TIM7, dac_ch2).unwrap());
58} 58}
59 59
60#[embassy_executor::task] 60#[embassy_executor::task]
diff --git a/examples/stm32h7/src/bin/eth.rs b/examples/stm32h7/src/bin/eth.rs
index fc14c1a70..6c215362d 100644
--- a/examples/stm32h7/src/bin/eth.rs
+++ b/examples/stm32h7/src/bin/eth.rs
@@ -93,7 +93,7 @@ async fn main(spawner: Spawner) -> ! {
93 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed); 93 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed);
94 94
95 // Launch network task 95 // Launch network task
96 unwrap!(spawner.spawn(net_task(runner))); 96 spawner.spawn(unwrap!(net_task(runner)));
97 97
98 // Ensure DHCP configuration is up before trying connect 98 // Ensure DHCP configuration is up before trying connect
99 stack.wait_config_up().await; 99 stack.wait_config_up().await;
diff --git a/examples/stm32h7/src/bin/eth_client.rs b/examples/stm32h7/src/bin/eth_client.rs
index 46301a478..10ac57fc9 100644
--- a/examples/stm32h7/src/bin/eth_client.rs
+++ b/examples/stm32h7/src/bin/eth_client.rs
@@ -95,7 +95,7 @@ async fn main(spawner: Spawner) -> ! {
95 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed); 95 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed);
96 96
97 // Launch network task 97 // Launch network task
98 unwrap!(spawner.spawn(net_task(runner))); 98 spawner.spawn(unwrap!(net_task(runner)));
99 99
100 // Ensure DHCP configuration is up before trying connect 100 // Ensure DHCP configuration is up before trying connect
101 stack.wait_config_up().await; 101 stack.wait_config_up().await;
diff --git a/examples/stm32h7/src/bin/eth_client_mii.rs b/examples/stm32h7/src/bin/eth_client_mii.rs
index 99cd1a158..c6a108471 100644
--- a/examples/stm32h7/src/bin/eth_client_mii.rs
+++ b/examples/stm32h7/src/bin/eth_client_mii.rs
@@ -101,7 +101,7 @@ async fn main(spawner: Spawner) -> ! {
101 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed); 101 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed);
102 102
103 // Launch network task 103 // Launch network task
104 unwrap!(spawner.spawn(net_task(runner))); 104 spawner.spawn(unwrap!(net_task(runner)));
105 105
106 // Ensure DHCP configuration is up before trying connect 106 // Ensure DHCP configuration is up before trying connect
107 stack.wait_config_up().await; 107 stack.wait_config_up().await;
diff --git a/examples/stm32h7/src/bin/i2c_shared.rs b/examples/stm32h7/src/bin/i2c_shared.rs
index 560f97aa3..9e45d845f 100644
--- a/examples/stm32h7/src/bin/i2c_shared.rs
+++ b/examples/stm32h7/src/bin/i2c_shared.rs
@@ -95,9 +95,9 @@ async fn main(spawner: Spawner) {
95 95
96 // Device 1, using embedded-hal-async compatible driver for TMP117 96 // Device 1, using embedded-hal-async compatible driver for TMP117
97 let i2c_dev1 = I2cDevice::new(i2c_bus); 97 let i2c_dev1 = I2cDevice::new(i2c_bus);
98 spawner.spawn(temperature(i2c_dev1)).unwrap(); 98 spawner.spawn(temperature(i2c_dev1).unwrap());
99 99
100 // Device 2, using embedded-hal-async compatible driver for SHTC3 100 // Device 2, using embedded-hal-async compatible driver for SHTC3
101 let i2c_dev2 = I2cDevice::new(i2c_bus); 101 let i2c_dev2 = I2cDevice::new(i2c_bus);
102 spawner.spawn(humidity(i2c_dev2)).unwrap(); 102 spawner.spawn(humidity(i2c_dev2).unwrap());
103} 103}
diff --git a/examples/stm32h7/src/bin/multiprio.rs b/examples/stm32h7/src/bin/multiprio.rs
index b4620888f..2f2ffdea2 100644
--- a/examples/stm32h7/src/bin/multiprio.rs
+++ b/examples/stm32h7/src/bin/multiprio.rs
@@ -135,16 +135,16 @@ fn main() -> ! {
135 // High-priority executor: UART4, priority level 6 135 // High-priority executor: UART4, priority level 6
136 interrupt::UART4.set_priority(Priority::P6); 136 interrupt::UART4.set_priority(Priority::P6);
137 let spawner = EXECUTOR_HIGH.start(interrupt::UART4); 137 let spawner = EXECUTOR_HIGH.start(interrupt::UART4);
138 unwrap!(spawner.spawn(run_high())); 138 spawner.spawn(unwrap!(run_high()));
139 139
140 // Medium-priority executor: UART5, priority level 7 140 // Medium-priority executor: UART5, priority level 7
141 interrupt::UART5.set_priority(Priority::P7); 141 interrupt::UART5.set_priority(Priority::P7);
142 let spawner = EXECUTOR_MED.start(interrupt::UART5); 142 let spawner = EXECUTOR_MED.start(interrupt::UART5);
143 unwrap!(spawner.spawn(run_med())); 143 spawner.spawn(unwrap!(run_med()));
144 144
145 // Low priority executor: runs in thread mode, using WFE/SEV 145 // Low priority executor: runs in thread mode, using WFE/SEV
146 let executor = EXECUTOR_LOW.init(Executor::new()); 146 let executor = EXECUTOR_LOW.init(Executor::new());
147 executor.run(|spawner| { 147 executor.run(|spawner| {
148 unwrap!(spawner.spawn(run_low())); 148 spawner.spawn(unwrap!(run_low()));
149 }); 149 });
150} 150}
diff --git a/examples/stm32h7/src/bin/signal.rs b/examples/stm32h7/src/bin/signal.rs
index b73360f32..97309798e 100644
--- a/examples/stm32h7/src/bin/signal.rs
+++ b/examples/stm32h7/src/bin/signal.rs
@@ -26,7 +26,7 @@ async fn my_sending_task() {
26#[embassy_executor::main] 26#[embassy_executor::main]
27async fn main(spawner: Spawner) { 27async fn main(spawner: Spawner) {
28 let _p = embassy_stm32::init(Default::default()); 28 let _p = embassy_stm32::init(Default::default());
29 unwrap!(spawner.spawn(my_sending_task())); 29 spawner.spawn(unwrap!(my_sending_task()));
30 30
31 loop { 31 loop {
32 let received_counter = SIGNAL.wait().await; 32 let received_counter = SIGNAL.wait().await;
diff --git a/examples/stm32h7/src/bin/spi.rs b/examples/stm32h7/src/bin/spi.rs
index ad4a8aaf7..dce30a4a7 100644
--- a/examples/stm32h7/src/bin/spi.rs
+++ b/examples/stm32h7/src/bin/spi.rs
@@ -66,6 +66,6 @@ fn main() -> ! {
66 let executor = EXECUTOR.init(Executor::new()); 66 let executor = EXECUTOR.init(Executor::new());
67 67
68 executor.run(|spawner| { 68 executor.run(|spawner| {
69 unwrap!(spawner.spawn(main_task(spi))); 69 spawner.spawn(unwrap!(main_task(spi)));
70 }) 70 })
71} 71}
diff --git a/examples/stm32h7/src/bin/spi_bdma.rs b/examples/stm32h7/src/bin/spi_bdma.rs
index 5a7dff572..828f687b8 100644
--- a/examples/stm32h7/src/bin/spi_bdma.rs
+++ b/examples/stm32h7/src/bin/spi_bdma.rs
@@ -80,6 +80,6 @@ fn main() -> ! {
80 let executor = EXECUTOR.init(Executor::new()); 80 let executor = EXECUTOR.init(Executor::new());
81 81
82 executor.run(|spawner| { 82 executor.run(|spawner| {
83 unwrap!(spawner.spawn(main_task(spi))); 83 spawner.spawn(unwrap!(main_task(spi)));
84 }) 84 })
85} 85}
diff --git a/examples/stm32h7/src/bin/spi_dma.rs b/examples/stm32h7/src/bin/spi_dma.rs
index 731c7fef5..2197fabce 100644
--- a/examples/stm32h7/src/bin/spi_dma.rs
+++ b/examples/stm32h7/src/bin/spi_dma.rs
@@ -63,6 +63,6 @@ fn main() -> ! {
63 let executor = EXECUTOR.init(Executor::new()); 63 let executor = EXECUTOR.init(Executor::new());
64 64
65 executor.run(|spawner| { 65 executor.run(|spawner| {
66 unwrap!(spawner.spawn(main_task(spi))); 66 spawner.spawn(unwrap!(main_task(spi)));
67 }) 67 })
68} 68}
diff --git a/examples/stm32h7/src/bin/usart.rs b/examples/stm32h7/src/bin/usart.rs
index cc49c2fdb..264e7d582 100644
--- a/examples/stm32h7/src/bin/usart.rs
+++ b/examples/stm32h7/src/bin/usart.rs
@@ -34,6 +34,6 @@ fn main() -> ! {
34 let executor = EXECUTOR.init(Executor::new()); 34 let executor = EXECUTOR.init(Executor::new());
35 35
36 executor.run(|spawner| { 36 executor.run(|spawner| {
37 unwrap!(spawner.spawn(main_task())); 37 spawner.spawn(unwrap!(main_task()));
38 }) 38 })
39} 39}
diff --git a/examples/stm32h7/src/bin/usart_dma.rs b/examples/stm32h7/src/bin/usart_dma.rs
index 6f340d40a..23d7f193a 100644
--- a/examples/stm32h7/src/bin/usart_dma.rs
+++ b/examples/stm32h7/src/bin/usart_dma.rs
@@ -42,6 +42,6 @@ fn main() -> ! {
42 let executor = EXECUTOR.init(Executor::new()); 42 let executor = EXECUTOR.init(Executor::new());
43 43
44 executor.run(|spawner| { 44 executor.run(|spawner| {
45 unwrap!(spawner.spawn(main_task())); 45 spawner.spawn(unwrap!(main_task()));
46 }) 46 })
47} 47}
diff --git a/examples/stm32h7/src/bin/usart_split.rs b/examples/stm32h7/src/bin/usart_split.rs
index 2bb58be5e..464ce8d72 100644
--- a/examples/stm32h7/src/bin/usart_split.rs
+++ b/examples/stm32h7/src/bin/usart_split.rs
@@ -27,7 +27,7 @@ async fn main(spawner: Spawner) -> ! {
27 27
28 let (mut tx, rx) = usart.split(); 28 let (mut tx, rx) = usart.split();
29 29
30 unwrap!(spawner.spawn(reader(rx))); 30 spawner.spawn(unwrap!(reader(rx)));
31 31
32 loop { 32 loop {
33 let buf = CHANNEL.receive().await; 33 let buf = CHANNEL.receive().await;
diff --git a/examples/stm32h735/src/bin/ltdc.rs b/examples/stm32h735/src/bin/ltdc.rs
index a36fdef2c..8a99f745d 100644
--- a/examples/stm32h735/src/bin/ltdc.rs
+++ b/examples/stm32h735/src/bin/ltdc.rs
@@ -47,7 +47,7 @@ async fn main(spawner: Spawner) {
47 47
48 // blink the led on another task 48 // blink the led on another task
49 let led = Output::new(p.PC3, Level::High, Speed::Low); 49 let led = Output::new(p.PC3, Level::High, Speed::Low);
50 unwrap!(spawner.spawn(led_task(led))); 50 spawner.spawn(unwrap!(led_task(led)));
51 51
52 // numbers from STMicroelectronics/STM32CubeH7 STM32H735G-DK C-based example 52 // numbers from STMicroelectronics/STM32CubeH7 STM32H735G-DK C-based example
53 const RK043FN48H_HSYNC: u16 = 41; // Horizontal synchronization 53 const RK043FN48H_HSYNC: u16 = 41; // Horizontal synchronization
diff --git a/examples/stm32h755cm4/src/bin/intercore.rs b/examples/stm32h755cm4/src/bin/intercore.rs
index d5e3e7648..f584e31e9 100644
--- a/examples/stm32h755cm4/src/bin/intercore.rs
+++ b/examples/stm32h755cm4/src/bin/intercore.rs
@@ -128,7 +128,7 @@ async fn main(spawner: Spawner) -> ! {
128 let red_led = Output::new(p.PB14, Level::Low, Speed::Low); // LD3 (heartbeat) 128 let red_led = Output::new(p.PB14, Level::Low, Speed::Low); // LD3 (heartbeat)
129 129
130 // Start heartbeat task 130 // Start heartbeat task
131 unwrap!(spawner.spawn(blink_heartbeat(red_led))); 131 spawner.spawn(unwrap!(blink_heartbeat(red_led)));
132 132
133 // Track previous values to detect changes 133 // Track previous values to detect changes
134 let mut prev_green = false; 134 let mut prev_green = false;
diff --git a/examples/stm32h7rs/src/bin/eth.rs b/examples/stm32h7rs/src/bin/eth.rs
index d8002e9ba..67f541564 100644
--- a/examples/stm32h7rs/src/bin/eth.rs
+++ b/examples/stm32h7rs/src/bin/eth.rs
@@ -94,7 +94,7 @@ async fn main(spawner: Spawner) -> ! {
94 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed); 94 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed);
95 95
96 // Launch network task 96 // Launch network task
97 unwrap!(spawner.spawn(net_task(runner))); 97 spawner.spawn(unwrap!(net_task(runner)));
98 98
99 // Ensure DHCP configuration is up before trying connect 99 // Ensure DHCP configuration is up before trying connect
100 //stack.wait_config_up().await; 100 //stack.wait_config_up().await;
diff --git a/examples/stm32h7rs/src/bin/multiprio.rs b/examples/stm32h7rs/src/bin/multiprio.rs
index b4620888f..2f2ffdea2 100644
--- a/examples/stm32h7rs/src/bin/multiprio.rs
+++ b/examples/stm32h7rs/src/bin/multiprio.rs
@@ -135,16 +135,16 @@ fn main() -> ! {
135 // High-priority executor: UART4, priority level 6 135 // High-priority executor: UART4, priority level 6
136 interrupt::UART4.set_priority(Priority::P6); 136 interrupt::UART4.set_priority(Priority::P6);
137 let spawner = EXECUTOR_HIGH.start(interrupt::UART4); 137 let spawner = EXECUTOR_HIGH.start(interrupt::UART4);
138 unwrap!(spawner.spawn(run_high())); 138 spawner.spawn(unwrap!(run_high()));
139 139
140 // Medium-priority executor: UART5, priority level 7 140 // Medium-priority executor: UART5, priority level 7
141 interrupt::UART5.set_priority(Priority::P7); 141 interrupt::UART5.set_priority(Priority::P7);
142 let spawner = EXECUTOR_MED.start(interrupt::UART5); 142 let spawner = EXECUTOR_MED.start(interrupt::UART5);
143 unwrap!(spawner.spawn(run_med())); 143 spawner.spawn(unwrap!(run_med()));
144 144
145 // Low priority executor: runs in thread mode, using WFE/SEV 145 // Low priority executor: runs in thread mode, using WFE/SEV
146 let executor = EXECUTOR_LOW.init(Executor::new()); 146 let executor = EXECUTOR_LOW.init(Executor::new());
147 executor.run(|spawner| { 147 executor.run(|spawner| {
148 unwrap!(spawner.spawn(run_low())); 148 spawner.spawn(unwrap!(run_low()));
149 }); 149 });
150} 150}
diff --git a/examples/stm32h7rs/src/bin/signal.rs b/examples/stm32h7rs/src/bin/signal.rs
index b73360f32..97309798e 100644
--- a/examples/stm32h7rs/src/bin/signal.rs
+++ b/examples/stm32h7rs/src/bin/signal.rs
@@ -26,7 +26,7 @@ async fn my_sending_task() {
26#[embassy_executor::main] 26#[embassy_executor::main]
27async fn main(spawner: Spawner) { 27async fn main(spawner: Spawner) {
28 let _p = embassy_stm32::init(Default::default()); 28 let _p = embassy_stm32::init(Default::default());
29 unwrap!(spawner.spawn(my_sending_task())); 29 spawner.spawn(unwrap!(my_sending_task()));
30 30
31 loop { 31 loop {
32 let received_counter = SIGNAL.wait().await; 32 let received_counter = SIGNAL.wait().await;
diff --git a/examples/stm32h7rs/src/bin/spi.rs b/examples/stm32h7rs/src/bin/spi.rs
index 8d6ccc58b..8c280fdae 100644
--- a/examples/stm32h7rs/src/bin/spi.rs
+++ b/examples/stm32h7rs/src/bin/spi.rs
@@ -44,6 +44,6 @@ fn main() -> ! {
44 let executor = EXECUTOR.init(Executor::new()); 44 let executor = EXECUTOR.init(Executor::new());
45 45
46 executor.run(|spawner| { 46 executor.run(|spawner| {
47 unwrap!(spawner.spawn(main_task(spi))); 47 spawner.spawn(unwrap!(main_task(spi)));
48 }) 48 })
49} 49}
diff --git a/examples/stm32h7rs/src/bin/spi_dma.rs b/examples/stm32h7rs/src/bin/spi_dma.rs
index cb305351b..3fa69fd15 100644
--- a/examples/stm32h7rs/src/bin/spi_dma.rs
+++ b/examples/stm32h7rs/src/bin/spi_dma.rs
@@ -41,6 +41,6 @@ fn main() -> ! {
41 let executor = EXECUTOR.init(Executor::new()); 41 let executor = EXECUTOR.init(Executor::new());
42 42
43 executor.run(|spawner| { 43 executor.run(|spawner| {
44 unwrap!(spawner.spawn(main_task(spi))); 44 spawner.spawn(unwrap!(main_task(spi)));
45 }) 45 })
46} 46}
diff --git a/examples/stm32h7rs/src/bin/usart.rs b/examples/stm32h7rs/src/bin/usart.rs
index cc49c2fdb..264e7d582 100644
--- a/examples/stm32h7rs/src/bin/usart.rs
+++ b/examples/stm32h7rs/src/bin/usart.rs
@@ -34,6 +34,6 @@ fn main() -> ! {
34 let executor = EXECUTOR.init(Executor::new()); 34 let executor = EXECUTOR.init(Executor::new());
35 35
36 executor.run(|spawner| { 36 executor.run(|spawner| {
37 unwrap!(spawner.spawn(main_task())); 37 spawner.spawn(unwrap!(main_task()));
38 }) 38 })
39} 39}
diff --git a/examples/stm32h7rs/src/bin/usart_dma.rs b/examples/stm32h7rs/src/bin/usart_dma.rs
index c644e84bd..ea48515d7 100644
--- a/examples/stm32h7rs/src/bin/usart_dma.rs
+++ b/examples/stm32h7rs/src/bin/usart_dma.rs
@@ -42,6 +42,6 @@ fn main() -> ! {
42 let executor = EXECUTOR.init(Executor::new()); 42 let executor = EXECUTOR.init(Executor::new());
43 43
44 executor.run(|spawner| { 44 executor.run(|spawner| {
45 unwrap!(spawner.spawn(main_task())); 45 spawner.spawn(unwrap!(main_task()));
46 }) 46 })
47} 47}
diff --git a/examples/stm32h7rs/src/bin/usart_split.rs b/examples/stm32h7rs/src/bin/usart_split.rs
index d26c5003c..f56c1c57d 100644
--- a/examples/stm32h7rs/src/bin/usart_split.rs
+++ b/examples/stm32h7rs/src/bin/usart_split.rs
@@ -27,7 +27,7 @@ async fn main(spawner: Spawner) -> ! {
27 27
28 let (mut tx, rx) = usart.split(); 28 let (mut tx, rx) = usart.split();
29 29
30 unwrap!(spawner.spawn(reader(rx))); 30 spawner.spawn(unwrap!(reader(rx)));
31 31
32 loop { 32 loop {
33 let buf = CHANNEL.receive().await; 33 let buf = CHANNEL.receive().await;
diff --git a/examples/stm32l0/src/bin/raw_spawn.rs b/examples/stm32l0/src/bin/raw_spawn.rs
index 29c7e0dc7..6385e3c8f 100644
--- a/examples/stm32l0/src/bin/raw_spawn.rs
+++ b/examples/stm32l0/src/bin/raw_spawn.rs
@@ -42,8 +42,8 @@ fn main() -> ! {
42 let run2_task = unsafe { make_static(&run2_task) }; 42 let run2_task = unsafe { make_static(&run2_task) };
43 43
44 executor.run(|spawner| { 44 executor.run(|spawner| {
45 unwrap!(spawner.spawn(run1_task.spawn(|| run1()))); 45 spawner.spawn(unwrap!(run1_task.spawn(|| run1())));
46 unwrap!(spawner.spawn(run2_task.spawn(|| run2()))); 46 spawner.spawn(unwrap!(run2_task.spawn(|| run2())));
47 }); 47 });
48} 48}
49 49
diff --git a/examples/stm32l4/src/bin/dac_dma.rs b/examples/stm32l4/src/bin/dac_dma.rs
index cde24f411..44edec728 100644
--- a/examples/stm32l4/src/bin/dac_dma.rs
+++ b/examples/stm32l4/src/bin/dac_dma.rs
@@ -24,8 +24,8 @@ async fn main(spawner: Spawner) {
24 // Obtain two independent channels (p.DAC1 can only be consumed once, though!) 24 // Obtain two independent channels (p.DAC1 can only be consumed once, though!)
25 let (dac_ch1, dac_ch2) = embassy_stm32::dac::Dac::new(p.DAC1, p.DMA1_CH3, p.DMA1_CH4, p.PA4, p.PA5).split(); 25 let (dac_ch1, dac_ch2) = embassy_stm32::dac::Dac::new(p.DAC1, p.DMA1_CH3, p.DMA1_CH4, p.PA4, p.PA5).split();
26 26
27 spawner.spawn(dac_task1(p.TIM6, dac_ch1)).ok(); 27 spawner.spawn(dac_task1(p.TIM6, dac_ch1).unwrap());
28 spawner.spawn(dac_task2(p.TIM7, dac_ch2)).ok(); 28 spawner.spawn(dac_task2(p.TIM7, dac_ch2).unwrap());
29} 29}
30 30
31#[embassy_executor::task] 31#[embassy_executor::task]
diff --git a/examples/stm32l4/src/bin/spe_adin1110_http_server.rs b/examples/stm32l4/src/bin/spe_adin1110_http_server.rs
index 516badcb2..24efe526f 100644
--- a/examples/stm32l4/src/bin/spe_adin1110_http_server.rs
+++ b/examples/stm32l4/src/bin/spe_adin1110_http_server.rs
@@ -181,11 +181,11 @@ async fn main(spawner: Spawner) {
181 .await; 181 .await;
182 182
183 // Start task blink_led 183 // Start task blink_led
184 unwrap!(spawner.spawn(heartbeat_led(led_uc3_yellow))); 184 spawner.spawn(unwrap!(heartbeat_led(led_uc3_yellow)));
185 // Start task temperature measurement 185 // Start task temperature measurement
186 unwrap!(spawner.spawn(temp_task(temp_sens_i2c, led_uc4_blue))); 186 spawner.spawn(unwrap!(temp_task(temp_sens_i2c, led_uc4_blue)));
187 // Start ethernet task 187 // Start ethernet task
188 unwrap!(spawner.spawn(ethernet_task(runner))); 188 spawner.spawn(unwrap!(ethernet_task(runner)));
189 189
190 let mut rng = Rng::new(dp.RNG, Irqs); 190 let mut rng = Rng::new(dp.RNG, Irqs);
191 // Generate random seed 191 // Generate random seed
@@ -208,7 +208,7 @@ async fn main(spawner: Spawner) {
208 let (stack, runner) = embassy_net::new(device, ip_cfg, RESOURCES.init(StackResources::new()), seed); 208 let (stack, runner) = embassy_net::new(device, ip_cfg, RESOURCES.init(StackResources::new()), seed);
209 209
210 // Launch network task 210 // Launch network task
211 unwrap!(spawner.spawn(net_task(runner))); 211 spawner.spawn(unwrap!(net_task(runner)));
212 212
213 let cfg = wait_for_config(stack).await; 213 let cfg = wait_for_config(stack).await;
214 let local_addr = cfg.address.address(); 214 let local_addr = cfg.address.address();
diff --git a/examples/stm32l5/src/bin/stop.rs b/examples/stm32l5/src/bin/stop.rs
index d7a1efea9..c34053190 100644
--- a/examples/stm32l5/src/bin/stop.rs
+++ b/examples/stm32l5/src/bin/stop.rs
@@ -15,7 +15,7 @@ use {defmt_rtt as _, panic_probe as _};
15#[cortex_m_rt::entry] 15#[cortex_m_rt::entry]
16fn main() -> ! { 16fn main() -> ! {
17 Executor::take().run(|spawner| { 17 Executor::take().run(|spawner| {
18 unwrap!(spawner.spawn(async_main(spawner))); 18 spawner.spawn(unwrap!(async_main(spawner)));
19 }) 19 })
20} 20}
21 21
@@ -34,8 +34,8 @@ async fn async_main(spawner: Spawner) {
34 let rtc = RTC.init(rtc); 34 let rtc = RTC.init(rtc);
35 embassy_stm32::low_power::stop_with_rtc(rtc); 35 embassy_stm32::low_power::stop_with_rtc(rtc);
36 36
37 unwrap!(spawner.spawn(blinky(p.PC7.into()))); 37 spawner.spawn(unwrap!(blinky(p.PC7.into())));
38 unwrap!(spawner.spawn(timeout())); 38 spawner.spawn(unwrap!(timeout()));
39} 39}
40 40
41#[embassy_executor::task] 41#[embassy_executor::task]
diff --git a/examples/stm32l5/src/bin/usb_ethernet.rs b/examples/stm32l5/src/bin/usb_ethernet.rs
index 6c72132c6..25aa9ef69 100644
--- a/examples/stm32l5/src/bin/usb_ethernet.rs
+++ b/examples/stm32l5/src/bin/usb_ethernet.rs
@@ -96,11 +96,11 @@ async fn main(spawner: Spawner) {
96 // Build the builder. 96 // Build the builder.
97 let usb = builder.build(); 97 let usb = builder.build();
98 98
99 unwrap!(spawner.spawn(usb_task(usb))); 99 spawner.spawn(unwrap!(usb_task(usb)));
100 100
101 static NET_STATE: StaticCell<NetState<MTU, 4, 4>> = StaticCell::new(); 101 static NET_STATE: StaticCell<NetState<MTU, 4, 4>> = StaticCell::new();
102 let (runner, device) = class.into_embassy_net_device::<MTU, 4, 4>(NET_STATE.init(NetState::new()), our_mac_addr); 102 let (runner, device) = class.into_embassy_net_device::<MTU, 4, 4>(NET_STATE.init(NetState::new()), our_mac_addr);
103 unwrap!(spawner.spawn(usb_ncm_task(runner))); 103 spawner.spawn(unwrap!(usb_ncm_task(runner)));
104 104
105 let config = embassy_net::Config::dhcpv4(Default::default()); 105 let config = embassy_net::Config::dhcpv4(Default::default());
106 //let config = embassy_net::Config::ipv4_static(embassy_net::StaticConfigV4 { 106 //let config = embassy_net::Config::ipv4_static(embassy_net::StaticConfigV4 {
@@ -117,7 +117,7 @@ async fn main(spawner: Spawner) {
117 static RESOURCES: StaticCell<StackResources<3>> = StaticCell::new(); 117 static RESOURCES: StaticCell<StackResources<3>> = StaticCell::new();
118 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed); 118 let (stack, runner) = embassy_net::new(device, config, RESOURCES.init(StackResources::new()), seed);
119 119
120 unwrap!(spawner.spawn(net_task(runner))); 120 spawner.spawn(unwrap!(net_task(runner)));
121 121
122 // And now we can use it! 122 // And now we can use it!
123 123
diff --git a/examples/stm32u5/src/bin/ltdc.rs b/examples/stm32u5/src/bin/ltdc.rs
index bd59a9148..46d1c120f 100644
--- a/examples/stm32u5/src/bin/ltdc.rs
+++ b/examples/stm32u5/src/bin/ltdc.rs
@@ -50,7 +50,7 @@ async fn main(spawner: Spawner) {
50 50
51 // blink the led on another task 51 // blink the led on another task
52 let led = Output::new(p.PD2, Level::High, Speed::Low); 52 let led = Output::new(p.PD2, Level::High, Speed::Low);
53 unwrap!(spawner.spawn(led_task(led))); 53 spawner.spawn(unwrap!(led_task(led)));
54 54
55 // numbers from STM32U5G9J-DK2.ioc 55 // numbers from STM32U5G9J-DK2.ioc
56 const RK050HR18H_HSYNC: u16 = 5; // Horizontal synchronization 56 const RK050HR18H_HSYNC: u16 = 5; // Horizontal synchronization
diff --git a/examples/stm32wb/src/bin/gatt_server.rs b/examples/stm32wb/src/bin/gatt_server.rs
index 9864fa026..5d927bc00 100644
--- a/examples/stm32wb/src/bin/gatt_server.rs
+++ b/examples/stm32wb/src/bin/gatt_server.rs
@@ -71,7 +71,7 @@ async fn main(spawner: Spawner) {
71 let config = Config::default(); 71 let config = Config::default();
72 let mut mbox = TlMbox::init(p.IPCC, Irqs, config); 72 let mut mbox = TlMbox::init(p.IPCC, Irqs, config);
73 73
74 spawner.spawn(run_mm_queue(mbox.mm_subsystem)).unwrap(); 74 spawner.spawn(run_mm_queue(mbox.mm_subsystem).unwrap());
75 let sys_event = mbox.sys_subsystem.read().await; 75 let sys_event = mbox.sys_subsystem.read().await;
76 info!("sys event: {}", sys_event.payload()); 76 info!("sys event: {}", sys_event.payload());
77 77
diff --git a/examples/stm32wb/src/bin/mac_ffd.rs b/examples/stm32wb/src/bin/mac_ffd.rs
index d139aa61b..ede6cf4b9 100644
--- a/examples/stm32wb/src/bin/mac_ffd.rs
+++ b/examples/stm32wb/src/bin/mac_ffd.rs
@@ -56,7 +56,7 @@ async fn main(spawner: Spawner) {
56 let config = Config::default(); 56 let config = Config::default();
57 let mbox = TlMbox::init(p.IPCC, Irqs, config); 57 let mbox = TlMbox::init(p.IPCC, Irqs, config);
58 58
59 spawner.spawn(run_mm_queue(mbox.mm_subsystem)).unwrap(); 59 spawner.spawn(run_mm_queue(mbox.mm_subsystem).unwrap());
60 60
61 let sys_event = mbox.sys_subsystem.read().await; 61 let sys_event = mbox.sys_subsystem.read().await;
62 info!("sys event: {}", sys_event.payload()); 62 info!("sys event: {}", sys_event.payload());
diff --git a/examples/stm32wb/src/bin/mac_ffd_net.rs b/examples/stm32wb/src/bin/mac_ffd_net.rs
index 6a97daf4d..cc3b21e2e 100644
--- a/examples/stm32wb/src/bin/mac_ffd_net.rs
+++ b/examples/stm32wb/src/bin/mac_ffd_net.rs
@@ -62,7 +62,7 @@ async fn main(spawner: Spawner) {
62 let config = Config::default(); 62 let config = Config::default();
63 let mbox = TlMbox::init(p.IPCC, Irqs, config); 63 let mbox = TlMbox::init(p.IPCC, Irqs, config);
64 64
65 spawner.spawn(run_mm_queue(mbox.mm_subsystem)).unwrap(); 65 spawner.spawn(run_mm_queue(mbox.mm_subsystem).unwrap());
66 66
67 let sys_event = mbox.sys_subsystem.read().await; 67 let sys_event = mbox.sys_subsystem.read().await;
68 info!("sys event: {}", sys_event.payload()); 68 info!("sys event: {}", sys_event.payload());
@@ -168,7 +168,7 @@ async fn main(spawner: Spawner) {
168 static RUNNER: StaticCell<Runner> = StaticCell::new(); 168 static RUNNER: StaticCell<Runner> = StaticCell::new();
169 let runner = RUNNER.init(Runner::new(mbox.mac_subsystem, tx_queue)); 169 let runner = RUNNER.init(Runner::new(mbox.mac_subsystem, tx_queue));
170 170
171 spawner.spawn(run_mac(runner)).unwrap(); 171 spawner.spawn(run_mac(runner).unwrap());
172 172
173 let (driver, control) = mac::new(runner).await; 173 let (driver, control) = mac::new(runner).await;
174 174
diff --git a/examples/stm32wb/src/bin/mac_rfd.rs b/examples/stm32wb/src/bin/mac_rfd.rs
index 9062bdcd2..d872104a8 100644
--- a/examples/stm32wb/src/bin/mac_rfd.rs
+++ b/examples/stm32wb/src/bin/mac_rfd.rs
@@ -58,7 +58,7 @@ async fn main(spawner: Spawner) {
58 let config = Config::default(); 58 let config = Config::default();
59 let mbox = TlMbox::init(p.IPCC, Irqs, config); 59 let mbox = TlMbox::init(p.IPCC, Irqs, config);
60 60
61 spawner.spawn(run_mm_queue(mbox.mm_subsystem)).unwrap(); 61 spawner.spawn(run_mm_queue(mbox.mm_subsystem).unwrap());
62 62
63 let sys_event = mbox.sys_subsystem.read().await; 63 let sys_event = mbox.sys_subsystem.read().await;
64 info!("sys event: {}", sys_event.payload()); 64 info!("sys event: {}", sys_event.payload());
diff --git a/examples/stm32wb/src/bin/tl_mbox_mac.rs b/examples/stm32wb/src/bin/tl_mbox_mac.rs
index 9224e626d..95c73872b 100644
--- a/examples/stm32wb/src/bin/tl_mbox_mac.rs
+++ b/examples/stm32wb/src/bin/tl_mbox_mac.rs
@@ -53,7 +53,7 @@ async fn main(spawner: Spawner) {
53 let config = Config::default(); 53 let config = Config::default();
54 let mbox = TlMbox::init(p.IPCC, Irqs, config); 54 let mbox = TlMbox::init(p.IPCC, Irqs, config);
55 55
56 spawner.spawn(run_mm_queue(mbox.mm_subsystem)).unwrap(); 56 spawner.spawn(run_mm_queue(mbox.mm_subsystem).unwrap());
57 57
58 let sys_event = mbox.sys_subsystem.read().await; 58 let sys_event = mbox.sys_subsystem.read().await;
59 info!("sys event: {}", sys_event.payload()); 59 info!("sys event: {}", sys_event.payload());
diff --git a/examples/wasm/src/lib.rs b/examples/wasm/src/lib.rs
index 71cf980dd..170c97fb7 100644
--- a/examples/wasm/src/lib.rs
+++ b/examples/wasm/src/lib.rs
@@ -24,5 +24,5 @@ async fn ticker() {
24#[embassy_executor::main] 24#[embassy_executor::main]
25async fn main(spawner: Spawner) { 25async fn main(spawner: Spawner) {
26 wasm_logger::init(wasm_logger::Config::default()); 26 wasm_logger::init(wasm_logger::Config::default());
27 spawner.spawn(ticker()).unwrap(); 27 spawner.spawn(ticker().unwrap());
28} 28}