aboutsummaryrefslogtreecommitdiff
path: root/examples/rp/src/bin
diff options
context:
space:
mode:
authorUlf Lilleengen <[email protected]>2023-12-21 10:02:11 +0000
committerGitHub <[email protected]>2023-12-21 10:02:11 +0000
commit530ead5fdeba97dd7d84798463436d1c75bbe96e (patch)
tree40c027b0f69efe9a9edb9913c0c1122a9b608318 /examples/rp/src/bin
parent8442e72589f47182f8ca1c979c668afc800e5d1e (diff)
parent0acf7b09c3bc9176d00479d601356d8df2537a9b (diff)
Merge pull request #2339 from embassy-rs/make-static-remove
Replace make_static! macro usage with non-macro version
Diffstat (limited to 'examples/rp/src/bin')
-rw-r--r--examples/rp/src/bin/ethernet_w5500_multisocket.rs13
-rw-r--r--examples/rp/src/bin/ethernet_w5500_tcp_client.rs13
-rw-r--r--examples/rp/src/bin/ethernet_w5500_tcp_server.rs13
-rw-r--r--examples/rp/src/bin/ethernet_w5500_udp.rs13
-rw-r--r--examples/rp/src/bin/uart_buffered_split.rs8
-rw-r--r--examples/rp/src/bin/usb_ethernet.rs28
-rw-r--r--examples/rp/src/bin/wifi_ap_tcp_server.rs13
-rw-r--r--examples/rp/src/bin/wifi_blinky.rs5
-rw-r--r--examples/rp/src/bin/wifi_scan.rs5
-rw-r--r--examples/rp/src/bin/wifi_tcp_server.rs13
10 files changed, 77 insertions, 47 deletions
diff --git a/examples/rp/src/bin/ethernet_w5500_multisocket.rs b/examples/rp/src/bin/ethernet_w5500_multisocket.rs
index c0fde62ab..b9dba0f1d 100644
--- a/examples/rp/src/bin/ethernet_w5500_multisocket.rs
+++ b/examples/rp/src/bin/ethernet_w5500_multisocket.rs
@@ -20,7 +20,7 @@ use embassy_time::{Delay, Duration};
20use embedded_hal_bus::spi::ExclusiveDevice; 20use embedded_hal_bus::spi::ExclusiveDevice;
21use embedded_io_async::Write; 21use embedded_io_async::Write;
22use rand::RngCore; 22use rand::RngCore;
23use static_cell::make_static; 23use static_cell::StaticCell;
24use {defmt_rtt as _, panic_probe as _}; 24use {defmt_rtt as _, panic_probe as _};
25 25
26#[embassy_executor::task] 26#[embassy_executor::task]
@@ -55,7 +55,8 @@ async fn main(spawner: Spawner) {
55 let w5500_reset = Output::new(p.PIN_20, Level::High); 55 let w5500_reset = Output::new(p.PIN_20, Level::High);
56 56
57 let mac_addr = [0x02, 0x00, 0x00, 0x00, 0x00, 0x00]; 57 let mac_addr = [0x02, 0x00, 0x00, 0x00, 0x00, 0x00];
58 let state = make_static!(State::<8, 8>::new()); 58 static STATE: StaticCell<State<8, 8>> = StaticCell::new();
59 let state = STATE.init(State::<8, 8>::new());
59 let (device, runner) = embassy_net_wiznet::new( 60 let (device, runner) = embassy_net_wiznet::new(
60 mac_addr, 61 mac_addr,
61 state, 62 state,
@@ -70,11 +71,13 @@ async fn main(spawner: Spawner) {
70 let seed = rng.next_u64(); 71 let seed = rng.next_u64();
71 72
72 // Init network stack 73 // Init network stack
73 let stack = &*make_static!(Stack::new( 74 static STACK: StaticCell<Stack<Device<'static>>> = StaticCell::new();
75 static RESOURCES: StaticCell<StackResources<3>> = StaticCell::new();
76 let stack = &*STACK.init(Stack::new(
74 device, 77 device,
75 embassy_net::Config::dhcpv4(Default::default()), 78 embassy_net::Config::dhcpv4(Default::default()),
76 make_static!(StackResources::<3>::new()), 79 RESOURCES.init(StackResources::<3>::new()),
77 seed 80 seed,
78 )); 81 ));
79 82
80 // Launch network task 83 // Launch network task
diff --git a/examples/rp/src/bin/ethernet_w5500_tcp_client.rs b/examples/rp/src/bin/ethernet_w5500_tcp_client.rs
index b19362fc1..36073f20b 100644
--- a/examples/rp/src/bin/ethernet_w5500_tcp_client.rs
+++ b/examples/rp/src/bin/ethernet_w5500_tcp_client.rs
@@ -22,7 +22,7 @@ use embassy_time::{Delay, Duration, Timer};
22use embedded_hal_bus::spi::ExclusiveDevice; 22use embedded_hal_bus::spi::ExclusiveDevice;
23use embedded_io_async::Write; 23use embedded_io_async::Write;
24use rand::RngCore; 24use rand::RngCore;
25use static_cell::make_static; 25use static_cell::StaticCell;
26use {defmt_rtt as _, panic_probe as _}; 26use {defmt_rtt as _, panic_probe as _};
27 27
28#[embassy_executor::task] 28#[embassy_executor::task]
@@ -58,7 +58,8 @@ async fn main(spawner: Spawner) {
58 let w5500_reset = Output::new(p.PIN_20, Level::High); 58 let w5500_reset = Output::new(p.PIN_20, Level::High);
59 59
60 let mac_addr = [0x02, 0x00, 0x00, 0x00, 0x00, 0x00]; 60 let mac_addr = [0x02, 0x00, 0x00, 0x00, 0x00, 0x00];
61 let state = make_static!(State::<8, 8>::new()); 61 static STATE: StaticCell<State<8, 8>> = StaticCell::new();
62 let state = STATE.init(State::<8, 8>::new());
62 let (device, runner) = embassy_net_wiznet::new( 63 let (device, runner) = embassy_net_wiznet::new(
63 mac_addr, 64 mac_addr,
64 state, 65 state,
@@ -73,11 +74,13 @@ async fn main(spawner: Spawner) {
73 let seed = rng.next_u64(); 74 let seed = rng.next_u64();
74 75
75 // Init network stack 76 // Init network stack
76 let stack = &*make_static!(Stack::new( 77 static STACK: StaticCell<Stack<Device<'static>>> = StaticCell::new();
78 static RESOURCES: StaticCell<StackResources<2>> = StaticCell::new();
79 let stack = &*STACK.init(Stack::new(
77 device, 80 device,
78 embassy_net::Config::dhcpv4(Default::default()), 81 embassy_net::Config::dhcpv4(Default::default()),
79 make_static!(StackResources::<2>::new()), 82 RESOURCES.init(StackResources::<2>::new()),
80 seed 83 seed,
81 )); 84 ));
82 85
83 // Launch network task 86 // Launch network task
diff --git a/examples/rp/src/bin/ethernet_w5500_tcp_server.rs b/examples/rp/src/bin/ethernet_w5500_tcp_server.rs
index c62caed7a..d523a8772 100644
--- a/examples/rp/src/bin/ethernet_w5500_tcp_server.rs
+++ b/examples/rp/src/bin/ethernet_w5500_tcp_server.rs
@@ -21,7 +21,7 @@ use embassy_time::{Delay, Duration};
21use embedded_hal_bus::spi::ExclusiveDevice; 21use embedded_hal_bus::spi::ExclusiveDevice;
22use embedded_io_async::Write; 22use embedded_io_async::Write;
23use rand::RngCore; 23use rand::RngCore;
24use static_cell::make_static; 24use static_cell::StaticCell;
25use {defmt_rtt as _, panic_probe as _}; 25use {defmt_rtt as _, panic_probe as _};
26 26
27#[embassy_executor::task] 27#[embassy_executor::task]
@@ -57,7 +57,8 @@ async fn main(spawner: Spawner) {
57 let w5500_reset = Output::new(p.PIN_20, Level::High); 57 let w5500_reset = Output::new(p.PIN_20, Level::High);
58 58
59 let mac_addr = [0x02, 0x00, 0x00, 0x00, 0x00, 0x00]; 59 let mac_addr = [0x02, 0x00, 0x00, 0x00, 0x00, 0x00];
60 let state = make_static!(State::<8, 8>::new()); 60 static STATE: StaticCell<State<8, 8>> = StaticCell::new();
61 let state = STATE.init(State::<8, 8>::new());
61 let (device, runner) = embassy_net_wiznet::new( 62 let (device, runner) = embassy_net_wiznet::new(
62 mac_addr, 63 mac_addr,
63 state, 64 state,
@@ -72,11 +73,13 @@ async fn main(spawner: Spawner) {
72 let seed = rng.next_u64(); 73 let seed = rng.next_u64();
73 74
74 // Init network stack 75 // Init network stack
75 let stack = &*make_static!(Stack::new( 76 static STACK: StaticCell<Stack<Device<'static>>> = StaticCell::new();
77 static RESOURCES: StaticCell<StackResources<2>> = StaticCell::new();
78 let stack = &*STACK.init(Stack::new(
76 device, 79 device,
77 embassy_net::Config::dhcpv4(Default::default()), 80 embassy_net::Config::dhcpv4(Default::default()),
78 make_static!(StackResources::<2>::new()), 81 RESOURCES.init(StackResources::<2>::new()),
79 seed 82 seed,
80 )); 83 ));
81 84
82 // Launch network task 85 // Launch network task
diff --git a/examples/rp/src/bin/ethernet_w5500_udp.rs b/examples/rp/src/bin/ethernet_w5500_udp.rs
index 76dabce1c..0cc47cb56 100644
--- a/examples/rp/src/bin/ethernet_w5500_udp.rs
+++ b/examples/rp/src/bin/ethernet_w5500_udp.rs
@@ -20,7 +20,7 @@ use embassy_rp::spi::{Async, Config as SpiConfig, Spi};
20use embassy_time::Delay; 20use embassy_time::Delay;
21use embedded_hal_bus::spi::ExclusiveDevice; 21use embedded_hal_bus::spi::ExclusiveDevice;
22use rand::RngCore; 22use rand::RngCore;
23use static_cell::make_static; 23use static_cell::StaticCell;
24use {defmt_rtt as _, panic_probe as _}; 24use {defmt_rtt as _, panic_probe as _};
25 25
26#[embassy_executor::task] 26#[embassy_executor::task]
@@ -55,7 +55,8 @@ async fn main(spawner: Spawner) {
55 let w5500_reset = Output::new(p.PIN_20, Level::High); 55 let w5500_reset = Output::new(p.PIN_20, Level::High);
56 56
57 let mac_addr = [0x02, 0x00, 0x00, 0x00, 0x00, 0x00]; 57 let mac_addr = [0x02, 0x00, 0x00, 0x00, 0x00, 0x00];
58 let state = make_static!(State::<8, 8>::new()); 58 static STATE: StaticCell<State<8, 8>> = StaticCell::new();
59 let state = STATE.init(State::<8, 8>::new());
59 let (device, runner) = embassy_net_wiznet::new( 60 let (device, runner) = embassy_net_wiznet::new(
60 mac_addr, 61 mac_addr,
61 state, 62 state,
@@ -70,11 +71,13 @@ async fn main(spawner: Spawner) {
70 let seed = rng.next_u64(); 71 let seed = rng.next_u64();
71 72
72 // Init network stack 73 // Init network stack
73 let stack = &*make_static!(Stack::new( 74 static STACK: StaticCell<Stack<Device<'static>>> = StaticCell::new();
75 static RESOURCES: StaticCell<StackResources<2>> = StaticCell::new();
76 let stack = &*STACK.init(Stack::new(
74 device, 77 device,
75 embassy_net::Config::dhcpv4(Default::default()), 78 embassy_net::Config::dhcpv4(Default::default()),
76 make_static!(StackResources::<2>::new()), 79 RESOURCES.init(StackResources::<2>::new()),
77 seed 80 seed,
78 )); 81 ));
79 82
80 // Launch network task 83 // Launch network task
diff --git a/examples/rp/src/bin/uart_buffered_split.rs b/examples/rp/src/bin/uart_buffered_split.rs
index 14e8810a4..dc57d89c7 100644
--- a/examples/rp/src/bin/uart_buffered_split.rs
+++ b/examples/rp/src/bin/uart_buffered_split.rs
@@ -15,7 +15,7 @@ use embassy_rp::peripherals::UART0;
15use embassy_rp::uart::{BufferedInterruptHandler, BufferedUart, BufferedUartRx, Config}; 15use embassy_rp::uart::{BufferedInterruptHandler, BufferedUart, BufferedUartRx, Config};
16use embassy_time::Timer; 16use embassy_time::Timer;
17use embedded_io_async::{Read, Write}; 17use embedded_io_async::{Read, Write};
18use static_cell::make_static; 18use static_cell::StaticCell;
19use {defmt_rtt as _, panic_probe as _}; 19use {defmt_rtt as _, panic_probe as _};
20 20
21bind_interrupts!(struct Irqs { 21bind_interrupts!(struct Irqs {
@@ -27,8 +27,10 @@ async fn main(spawner: Spawner) {
27 let p = embassy_rp::init(Default::default()); 27 let p = embassy_rp::init(Default::default());
28 let (tx_pin, rx_pin, uart) = (p.PIN_0, p.PIN_1, p.UART0); 28 let (tx_pin, rx_pin, uart) = (p.PIN_0, p.PIN_1, p.UART0);
29 29
30 let tx_buf = &mut make_static!([0u8; 16])[..]; 30 static TX_BUF: StaticCell<[u8; 16]> = StaticCell::new();
31 let rx_buf = &mut make_static!([0u8; 16])[..]; 31 let tx_buf = &mut TX_BUF.init([0; 16])[..];
32 static RX_BUF: StaticCell<[u8; 16]> = StaticCell::new();
33 let rx_buf = &mut RX_BUF.init([0; 16])[..];
32 let uart = BufferedUart::new(uart, Irqs, tx_pin, rx_pin, tx_buf, rx_buf, Config::default()); 34 let uart = BufferedUart::new(uart, Irqs, tx_pin, rx_pin, tx_buf, rx_buf, Config::default());
33 let (rx, mut tx) = uart.split(); 35 let (rx, mut tx) = uart.split();
34 36
diff --git a/examples/rp/src/bin/usb_ethernet.rs b/examples/rp/src/bin/usb_ethernet.rs
index cc63029fb..674b83f5d 100644
--- a/examples/rp/src/bin/usb_ethernet.rs
+++ b/examples/rp/src/bin/usb_ethernet.rs
@@ -17,7 +17,7 @@ use embassy_usb::class::cdc_ncm::embassy_net::{Device, Runner, State as NetState
17use embassy_usb::class::cdc_ncm::{CdcNcmClass, State}; 17use embassy_usb::class::cdc_ncm::{CdcNcmClass, State};
18use embassy_usb::{Builder, Config, UsbDevice}; 18use embassy_usb::{Builder, Config, UsbDevice};
19use embedded_io_async::Write; 19use embedded_io_async::Write;
20use static_cell::make_static; 20use static_cell::StaticCell;
21use {defmt_rtt as _, panic_probe as _}; 21use {defmt_rtt as _, panic_probe as _};
22 22
23bind_interrupts!(struct Irqs { 23bind_interrupts!(struct Irqs {
@@ -65,14 +65,18 @@ async fn main(spawner: Spawner) {
65 config.device_protocol = 0x01; 65 config.device_protocol = 0x01;
66 66
67 // Create embassy-usb DeviceBuilder using the driver and config. 67 // Create embassy-usb DeviceBuilder using the driver and config.
68 static DEVICE_DESC: StaticCell<[u8; 256]> = StaticCell::new();
69 static CONFIG_DESC: StaticCell<[u8; 256]> = StaticCell::new();
70 static BOS_DESC: StaticCell<[u8; 256]> = StaticCell::new();
71 static CONTROL_BUF: StaticCell<[u8; 128]> = StaticCell::new();
68 let mut builder = Builder::new( 72 let mut builder = Builder::new(
69 driver, 73 driver,
70 config, 74 config,
71 &mut make_static!([0; 256])[..], 75 &mut DEVICE_DESC.init([0; 256])[..],
72 &mut make_static!([0; 256])[..], 76 &mut CONFIG_DESC.init([0; 256])[..],
73 &mut make_static!([0; 256])[..], 77 &mut BOS_DESC.init([0; 256])[..],
74 &mut [], // no msos descriptors 78 &mut [], // no msos descriptors
75 &mut make_static!([0; 128])[..], 79 &mut CONTROL_BUF.init([0; 128])[..],
76 ); 80 );
77 81
78 // Our MAC addr. 82 // Our MAC addr.
@@ -81,14 +85,16 @@ async fn main(spawner: Spawner) {
81 let host_mac_addr = [0x88, 0x88, 0x88, 0x88, 0x88, 0x88]; 85 let host_mac_addr = [0x88, 0x88, 0x88, 0x88, 0x88, 0x88];
82 86
83 // Create classes on the builder. 87 // Create classes on the builder.
84 let class = CdcNcmClass::new(&mut builder, make_static!(State::new()), host_mac_addr, 64); 88 static STATE: StaticCell<State> = StaticCell::new();
89 let class = CdcNcmClass::new(&mut builder, STATE.init(State::new()), host_mac_addr, 64);
85 90
86 // Build the builder. 91 // Build the builder.
87 let usb = builder.build(); 92 let usb = builder.build();
88 93
89 unwrap!(spawner.spawn(usb_task(usb))); 94 unwrap!(spawner.spawn(usb_task(usb)));
90 95
91 let (runner, device) = class.into_embassy_net_device::<MTU, 4, 4>(make_static!(NetState::new()), our_mac_addr); 96 static NET_STATE: StaticCell<NetState<MTU, 4, 4>> = StaticCell::new();
97 let (runner, device) = class.into_embassy_net_device::<MTU, 4, 4>(NET_STATE.init(NetState::new()), our_mac_addr);
92 unwrap!(spawner.spawn(usb_ncm_task(runner))); 98 unwrap!(spawner.spawn(usb_ncm_task(runner)));
93 99
94 let config = embassy_net::Config::dhcpv4(Default::default()); 100 let config = embassy_net::Config::dhcpv4(Default::default());
@@ -102,11 +108,13 @@ async fn main(spawner: Spawner) {
102 let seed = 1234; // guaranteed random, chosen by a fair dice roll 108 let seed = 1234; // guaranteed random, chosen by a fair dice roll
103 109
104 // Init network stack 110 // Init network stack
105 let stack = &*make_static!(Stack::new( 111 static STACK: StaticCell<Stack<Device<'static, MTU>>> = StaticCell::new();
112 static RESOURCES: StaticCell<StackResources<2>> = StaticCell::new();
113 let stack = &*STACK.init(Stack::new(
106 device, 114 device,
107 config, 115 config,
108 make_static!(StackResources::<2>::new()), 116 RESOURCES.init(StackResources::<2>::new()),
109 seed 117 seed,
110 )); 118 ));
111 119
112 unwrap!(spawner.spawn(net_task(stack))); 120 unwrap!(spawner.spawn(net_task(stack)));
diff --git a/examples/rp/src/bin/wifi_ap_tcp_server.rs b/examples/rp/src/bin/wifi_ap_tcp_server.rs
index ad1fa6462..20b8aad15 100644
--- a/examples/rp/src/bin/wifi_ap_tcp_server.rs
+++ b/examples/rp/src/bin/wifi_ap_tcp_server.rs
@@ -19,7 +19,7 @@ use embassy_rp::peripherals::{DMA_CH0, PIN_23, PIN_25, PIO0};
19use embassy_rp::pio::{InterruptHandler, Pio}; 19use embassy_rp::pio::{InterruptHandler, Pio};
20use embassy_time::Duration; 20use embassy_time::Duration;
21use embedded_io_async::Write; 21use embedded_io_async::Write;
22use static_cell::make_static; 22use static_cell::StaticCell;
23use {defmt_rtt as _, panic_probe as _}; 23use {defmt_rtt as _, panic_probe as _};
24 24
25bind_interrupts!(struct Irqs { 25bind_interrupts!(struct Irqs {
@@ -59,7 +59,8 @@ async fn main(spawner: Spawner) {
59 let mut pio = Pio::new(p.PIO0, Irqs); 59 let mut pio = Pio::new(p.PIO0, Irqs);
60 let spi = PioSpi::new(&mut pio.common, pio.sm0, pio.irq0, cs, p.PIN_24, p.PIN_29, p.DMA_CH0); 60 let spi = PioSpi::new(&mut pio.common, pio.sm0, pio.irq0, cs, p.PIN_24, p.PIN_29, p.DMA_CH0);
61 61
62 let state = make_static!(cyw43::State::new()); 62 static STATE: StaticCell<cyw43::State> = StaticCell::new();
63 let state = STATE.init(cyw43::State::new());
63 let (net_device, mut control, runner) = cyw43::new(state, pwr, spi, fw).await; 64 let (net_device, mut control, runner) = cyw43::new(state, pwr, spi, fw).await;
64 unwrap!(spawner.spawn(wifi_task(runner))); 65 unwrap!(spawner.spawn(wifi_task(runner)));
65 66
@@ -79,11 +80,13 @@ async fn main(spawner: Spawner) {
79 let seed = 0x0123_4567_89ab_cdef; // chosen by fair dice roll. guarenteed to be random. 80 let seed = 0x0123_4567_89ab_cdef; // chosen by fair dice roll. guarenteed to be random.
80 81
81 // Init network stack 82 // Init network stack
82 let stack = &*make_static!(Stack::new( 83 static STACK: StaticCell<Stack<cyw43::NetDriver<'static>>> = StaticCell::new();
84 static RESOURCES: StaticCell<StackResources<2>> = StaticCell::new();
85 let stack = &*STACK.init(Stack::new(
83 net_device, 86 net_device,
84 config, 87 config,
85 make_static!(StackResources::<2>::new()), 88 RESOURCES.init(StackResources::<2>::new()),
86 seed 89 seed,
87 )); 90 ));
88 91
89 unwrap!(spawner.spawn(net_task(stack))); 92 unwrap!(spawner.spawn(net_task(stack)));
diff --git a/examples/rp/src/bin/wifi_blinky.rs b/examples/rp/src/bin/wifi_blinky.rs
index 14ace74e9..b89447b7d 100644
--- a/examples/rp/src/bin/wifi_blinky.rs
+++ b/examples/rp/src/bin/wifi_blinky.rs
@@ -14,7 +14,7 @@ use embassy_rp::gpio::{Level, Output};
14use embassy_rp::peripherals::{DMA_CH0, PIN_23, PIN_25, PIO0}; 14use embassy_rp::peripherals::{DMA_CH0, PIN_23, PIN_25, PIO0};
15use embassy_rp::pio::{InterruptHandler, Pio}; 15use embassy_rp::pio::{InterruptHandler, Pio};
16use embassy_time::{Duration, Timer}; 16use embassy_time::{Duration, Timer};
17use static_cell::make_static; 17use static_cell::StaticCell;
18use {defmt_rtt as _, panic_probe as _}; 18use {defmt_rtt as _, panic_probe as _};
19 19
20bind_interrupts!(struct Irqs { 20bind_interrupts!(struct Irqs {
@@ -46,7 +46,8 @@ async fn main(spawner: Spawner) {
46 let mut pio = Pio::new(p.PIO0, Irqs); 46 let mut pio = Pio::new(p.PIO0, Irqs);
47 let spi = PioSpi::new(&mut pio.common, pio.sm0, pio.irq0, cs, p.PIN_24, p.PIN_29, p.DMA_CH0); 47 let spi = PioSpi::new(&mut pio.common, pio.sm0, pio.irq0, cs, p.PIN_24, p.PIN_29, p.DMA_CH0);
48 48
49 let state = make_static!(cyw43::State::new()); 49 static STATE: StaticCell<cyw43::State> = StaticCell::new();
50 let state = STATE.init(cyw43::State::new());
50 let (_net_device, mut control, runner) = cyw43::new(state, pwr, spi, fw).await; 51 let (_net_device, mut control, runner) = cyw43::new(state, pwr, spi, fw).await;
51 unwrap!(spawner.spawn(wifi_task(runner))); 52 unwrap!(spawner.spawn(wifi_task(runner)));
52 53
diff --git a/examples/rp/src/bin/wifi_scan.rs b/examples/rp/src/bin/wifi_scan.rs
index 7adf52b88..0f7ad27dd 100644
--- a/examples/rp/src/bin/wifi_scan.rs
+++ b/examples/rp/src/bin/wifi_scan.rs
@@ -16,7 +16,7 @@ use embassy_rp::bind_interrupts;
16use embassy_rp::gpio::{Level, Output}; 16use embassy_rp::gpio::{Level, Output};
17use embassy_rp::peripherals::{DMA_CH0, PIN_23, PIN_25, PIO0}; 17use embassy_rp::peripherals::{DMA_CH0, PIN_23, PIN_25, PIO0};
18use embassy_rp::pio::{InterruptHandler, Pio}; 18use embassy_rp::pio::{InterruptHandler, Pio};
19use static_cell::make_static; 19use static_cell::StaticCell;
20use {defmt_rtt as _, panic_probe as _}; 20use {defmt_rtt as _, panic_probe as _};
21 21
22bind_interrupts!(struct Irqs { 22bind_interrupts!(struct Irqs {
@@ -56,7 +56,8 @@ async fn main(spawner: Spawner) {
56 let mut pio = Pio::new(p.PIO0, Irqs); 56 let mut pio = Pio::new(p.PIO0, Irqs);
57 let spi = PioSpi::new(&mut pio.common, pio.sm0, pio.irq0, cs, p.PIN_24, p.PIN_29, p.DMA_CH0); 57 let spi = PioSpi::new(&mut pio.common, pio.sm0, pio.irq0, cs, p.PIN_24, p.PIN_29, p.DMA_CH0);
58 58
59 let state = make_static!(cyw43::State::new()); 59 static STATE: StaticCell<cyw43::State> = StaticCell::new();
60 let state = STATE.init(cyw43::State::new());
60 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;
61 unwrap!(spawner.spawn(wifi_task(runner))); 62 unwrap!(spawner.spawn(wifi_task(runner)));
62 63
diff --git a/examples/rp/src/bin/wifi_tcp_server.rs b/examples/rp/src/bin/wifi_tcp_server.rs
index ec6b4ee74..f6cc48d8f 100644
--- a/examples/rp/src/bin/wifi_tcp_server.rs
+++ b/examples/rp/src/bin/wifi_tcp_server.rs
@@ -19,7 +19,7 @@ use embassy_rp::peripherals::{DMA_CH0, PIN_23, PIN_25, PIO0};
19use embassy_rp::pio::{InterruptHandler, Pio}; 19use embassy_rp::pio::{InterruptHandler, Pio};
20use embassy_time::{Duration, Timer}; 20use embassy_time::{Duration, Timer};
21use embedded_io_async::Write; 21use embedded_io_async::Write;
22use static_cell::make_static; 22use static_cell::StaticCell;
23use {defmt_rtt as _, panic_probe as _}; 23use {defmt_rtt as _, panic_probe as _};
24 24
25bind_interrupts!(struct Irqs { 25bind_interrupts!(struct Irqs {
@@ -62,7 +62,8 @@ async fn main(spawner: Spawner) {
62 let mut pio = Pio::new(p.PIO0, Irqs); 62 let mut pio = Pio::new(p.PIO0, Irqs);
63 let spi = PioSpi::new(&mut pio.common, pio.sm0, pio.irq0, cs, p.PIN_24, p.PIN_29, p.DMA_CH0); 63 let spi = PioSpi::new(&mut pio.common, pio.sm0, pio.irq0, cs, p.PIN_24, p.PIN_29, p.DMA_CH0);
64 64
65 let state = make_static!(cyw43::State::new()); 65 static STATE: StaticCell<cyw43::State> = StaticCell::new();
66 let state = STATE.init(cyw43::State::new());
66 let (net_device, mut control, runner) = cyw43::new(state, pwr, spi, fw).await; 67 let (net_device, mut control, runner) = cyw43::new(state, pwr, spi, fw).await;
67 unwrap!(spawner.spawn(wifi_task(runner))); 68 unwrap!(spawner.spawn(wifi_task(runner)));
68 69
@@ -82,11 +83,13 @@ async fn main(spawner: Spawner) {
82 let seed = 0x0123_4567_89ab_cdef; // chosen by fair dice roll. guarenteed to be random. 83 let seed = 0x0123_4567_89ab_cdef; // chosen by fair dice roll. guarenteed to be random.
83 84
84 // Init network stack 85 // Init network stack
85 let stack = &*make_static!(Stack::new( 86 static STACK: StaticCell<Stack<cyw43::NetDriver<'static>>> = StaticCell::new();
87 static RESOURCES: StaticCell<StackResources<2>> = StaticCell::new();
88 let stack = &*STACK.init(Stack::new(
86 net_device, 89 net_device,
87 config, 90 config,
88 make_static!(StackResources::<2>::new()), 91 RESOURCES.init(StackResources::<2>::new()),
89 seed 92 seed,
90 )); 93 ));
91 94
92 unwrap!(spawner.spawn(net_task(stack))); 95 unwrap!(spawner.spawn(net_task(stack)));