aboutsummaryrefslogtreecommitdiff
path: root/examples/stm32l5/src
diff options
context:
space:
mode:
authorDario Nieuwenhuis <[email protected]>2023-06-01 01:32:11 +0200
committerDario Nieuwenhuis <[email protected]>2023-06-01 01:42:34 +0200
commit1d8321b821d114b369d5a087a1a7a6600228b032 (patch)
tree605b3eb96ea10120f7e8bf0741bcc34daab8e9ec /examples/stm32l5/src
parentd7d66bd74f2ef1bc8903b15df630ddbb8fe97df4 (diff)
Use make_static! from static-cell v1.1
Diffstat (limited to 'examples/stm32l5/src')
-rw-r--r--examples/stm32l5/src/bin/usb_ethernet.rs30
1 files changed, 13 insertions, 17 deletions
diff --git a/examples/stm32l5/src/bin/usb_ethernet.rs b/examples/stm32l5/src/bin/usb_ethernet.rs
index b84e53d3a..6163e0709 100644
--- a/examples/stm32l5/src/bin/usb_ethernet.rs
+++ b/examples/stm32l5/src/bin/usb_ethernet.rs
@@ -15,20 +15,11 @@ use embassy_usb::class::cdc_ncm::{CdcNcmClass, State};
15use embassy_usb::{Builder, UsbDevice}; 15use embassy_usb::{Builder, UsbDevice};
16use embedded_io::asynch::Write; 16use embedded_io::asynch::Write;
17use rand_core::RngCore; 17use rand_core::RngCore;
18use static_cell::StaticCell; 18use static_cell::make_static;
19use {defmt_rtt as _, panic_probe as _}; 19use {defmt_rtt as _, panic_probe as _};
20 20
21type MyDriver = Driver<'static, embassy_stm32::peripherals::USB>; 21type MyDriver = Driver<'static, embassy_stm32::peripherals::USB>;
22 22
23macro_rules! singleton {
24 ($val:expr) => {{
25 type T = impl Sized;
26 static STATIC_CELL: StaticCell<T> = StaticCell::new();
27 let (x,) = STATIC_CELL.init(($val,));
28 x
29 }};
30}
31
32const MTU: usize = 1514; 23const MTU: usize = 1514;
33 24
34bind_interrupts!(struct Irqs { 25bind_interrupts!(struct Irqs {
@@ -78,10 +69,10 @@ async fn main(spawner: Spawner) {
78 let mut builder = Builder::new( 69 let mut builder = Builder::new(
79 driver, 70 driver,
80 config, 71 config,
81 &mut singleton!([0; 256])[..], 72 &mut make_static!([0; 256])[..],
82 &mut singleton!([0; 256])[..], 73 &mut make_static!([0; 256])[..],
83 &mut singleton!([0; 256])[..], 74 &mut make_static!([0; 256])[..],
84 &mut singleton!([0; 128])[..], 75 &mut make_static!([0; 128])[..],
85 ); 76 );
86 77
87 // Our MAC addr. 78 // Our MAC addr.
@@ -90,14 +81,14 @@ async fn main(spawner: Spawner) {
90 let host_mac_addr = [0x88, 0x88, 0x88, 0x88, 0x88, 0x88]; 81 let host_mac_addr = [0x88, 0x88, 0x88, 0x88, 0x88, 0x88];
91 82
92 // Create classes on the builder. 83 // Create classes on the builder.
93 let class = CdcNcmClass::new(&mut builder, singleton!(State::new()), host_mac_addr, 64); 84 let class = CdcNcmClass::new(&mut builder, make_static!(State::new()), host_mac_addr, 64);
94 85
95 // Build the builder. 86 // Build the builder.
96 let usb = builder.build(); 87 let usb = builder.build();
97 88
98 unwrap!(spawner.spawn(usb_task(usb))); 89 unwrap!(spawner.spawn(usb_task(usb)));
99 90
100 let (runner, device) = class.into_embassy_net_device::<MTU, 4, 4>(singleton!(NetState::new()), our_mac_addr); 91 let (runner, device) = class.into_embassy_net_device::<MTU, 4, 4>(make_static!(NetState::new()), our_mac_addr);
101 unwrap!(spawner.spawn(usb_ncm_task(runner))); 92 unwrap!(spawner.spawn(usb_ncm_task(runner)));
102 93
103 let config = embassy_net::Config::Dhcp(Default::default()); 94 let config = embassy_net::Config::Dhcp(Default::default());
@@ -112,7 +103,12 @@ async fn main(spawner: Spawner) {
112 let seed = rng.next_u64(); 103 let seed = rng.next_u64();
113 104
114 // Init network stack 105 // Init network stack
115 let stack = &*singleton!(Stack::new(device, config, singleton!(StackResources::<2>::new()), seed)); 106 let stack = &*make_static!(Stack::new(
107 device,
108 config,
109 make_static!(StackResources::<2>::new()),
110 seed
111 ));
116 112
117 unwrap!(spawner.spawn(net_task(stack))); 113 unwrap!(spawner.spawn(net_task(stack)));
118 114