From af87031d62ca9ee5e7dd44cba297f3d171ec0708 Mon Sep 17 00:00:00 2001 From: Dario Nieuwenhuis Date: Thu, 29 Jul 2021 14:08:32 +0200 Subject: hal-common: remove Pin in PeripheralMutex --- examples/nrf/src/bin/buffered_uart.rs | 3 +++ examples/stm32h7/src/bin/eth.rs | 18 +++++++----------- 2 files changed, 10 insertions(+), 11 deletions(-) (limited to 'examples') diff --git a/examples/nrf/src/bin/buffered_uart.rs b/examples/nrf/src/bin/buffered_uart.rs index c800e64fc..a78d2df44 100644 --- a/examples/nrf/src/bin/buffered_uart.rs +++ b/examples/nrf/src/bin/buffered_uart.rs @@ -11,6 +11,7 @@ mod example_common; use defmt::panic; use embassy::executor::Spawner; use embassy::io::{AsyncBufReadExt, AsyncWriteExt}; +use embassy_nrf::buffered_uarte::State; use embassy_nrf::gpio::NoPin; use embassy_nrf::{buffered_uarte::BufferedUarte, interrupt, uarte, Peripherals}; use example_common::*; @@ -26,8 +27,10 @@ async fn main(_spawner: Spawner, p: Peripherals) { let mut rx_buffer = [0u8; 4096]; let irq = interrupt::take!(UARTE0_UART0); + let mut state = State::new(); let u = unsafe { BufferedUarte::new( + &mut state, p.UARTE0, p.TIMER0, p.PPI_CH0, diff --git a/examples/stm32h7/src/bin/eth.rs b/examples/stm32h7/src/bin/eth.rs index 7ae80d6e3..5cf49e82f 100644 --- a/examples/stm32h7/src/bin/eth.rs +++ b/examples/stm32h7/src/bin/eth.rs @@ -6,7 +6,6 @@ #![feature(impl_trait_in_bindings)] #![feature(type_alias_impl_trait)] -use core::pin::Pin; use core::sync::atomic::{AtomicUsize, Ordering}; use cortex_m_rt::entry; @@ -22,7 +21,7 @@ use embassy_net::{ }; use embassy_stm32::clock::{Alarm, Clock}; use embassy_stm32::eth::lan8742a::LAN8742A; -use embassy_stm32::eth::Ethernet; +use embassy_stm32::eth::{Ethernet, State}; use embassy_stm32::rcc::{Config as RccConfig, Rcc}; use embassy_stm32::rng::Random; use embassy_stm32::time::Hertz; @@ -42,7 +41,7 @@ defmt::timestamp! {"{=u64}", { #[embassy::task] async fn main_task( - device: &'static mut Pin<&'static mut Ethernet<'static, LAN8742A, 4, 4>>, + device: &'static mut Ethernet<'static, LAN8742A, 4, 4>, config: &'static mut StaticConfigurator, spawner: Spawner, ) { @@ -99,8 +98,8 @@ static mut RNG_INST: Option> = None; static EXECUTOR: Forever = Forever::new(); static TIMER_RTC: Forever> = Forever::new(); static ALARM: Forever> = Forever::new(); +static STATE: Forever> = Forever::new(); static ETH: Forever> = Forever::new(); -static DEVICE: Forever>> = Forever::new(); static CONFIG: Forever = Forever::new(); static NET_RESOURCES: Forever> = Forever::new(); @@ -135,15 +134,12 @@ fn main() -> ! { let eth_int = interrupt_take!(ETH); let mac_addr = [0x10; 6]; + let state = STATE.put(State::new()); let eth = ETH.put(Ethernet::new( - p.ETH, eth_int, p.PA1, p.PA2, p.PC1, p.PA7, p.PC4, p.PC5, p.PB12, p.PB13, p.PB11, LAN8742A, - mac_addr, 1, + state, p.ETH, eth_int, p.PA1, p.PA2, p.PC1, p.PA7, p.PC4, p.PC5, p.PB12, p.PB13, p.PB11, + LAN8742A, mac_addr, 1, )); - // NOTE(unsafe) This thing is a &'static - let net_device = DEVICE.put(unsafe { Pin::new_unchecked(eth) }); - net_device.as_mut().init(); - let config = StaticConfigurator::new(NetConfig { address: Ipv4Cidr::new(Ipv4Address::new(192, 168, 0, 61), 24), dns_servers: Vec::new(), @@ -156,6 +152,6 @@ fn main() -> ! { executor.set_alarm(alarm); executor.run(move |spawner| { - unwrap!(spawner.spawn(main_task(net_device, config, spawner))); + unwrap!(spawner.spawn(main_task(eth, config, spawner))); }) } -- cgit