diff options
| author | Dario Nieuwenhuis <[email protected]> | 2023-06-01 01:32:11 +0200 |
|---|---|---|
| committer | Dario Nieuwenhuis <[email protected]> | 2023-06-01 01:42:34 +0200 |
| commit | 1d8321b821d114b369d5a087a1a7a6600228b032 (patch) | |
| tree | 605b3eb96ea10120f7e8bf0741bcc34daab8e9ec /examples/stm32l5/src | |
| parent | d7d66bd74f2ef1bc8903b15df630ddbb8fe97df4 (diff) | |
Use make_static! from static-cell v1.1
Diffstat (limited to 'examples/stm32l5/src')
| -rw-r--r-- | examples/stm32l5/src/bin/usb_ethernet.rs | 30 |
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}; | |||
| 15 | use embassy_usb::{Builder, UsbDevice}; | 15 | use embassy_usb::{Builder, UsbDevice}; |
| 16 | use embedded_io::asynch::Write; | 16 | use embedded_io::asynch::Write; |
| 17 | use rand_core::RngCore; | 17 | use rand_core::RngCore; |
| 18 | use static_cell::StaticCell; | 18 | use static_cell::make_static; |
| 19 | use {defmt_rtt as _, panic_probe as _}; | 19 | use {defmt_rtt as _, panic_probe as _}; |
| 20 | 20 | ||
| 21 | type MyDriver = Driver<'static, embassy_stm32::peripherals::USB>; | 21 | type MyDriver = Driver<'static, embassy_stm32::peripherals::USB>; |
| 22 | 22 | ||
| 23 | macro_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 | |||
| 32 | const MTU: usize = 1514; | 23 | const MTU: usize = 1514; |
| 33 | 24 | ||
| 34 | bind_interrupts!(struct Irqs { | 25 | bind_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 | ||
