diff --git a/src/wifi.rs b/src/wifi.rs index 404ceb2..1d45add 100644 --- a/src/wifi.rs +++ b/src/wifi.rs @@ -4,20 +4,25 @@ use embassy_futures::select::Either::First; use embassy_futures::select::select; use embassy_net::{Runner, Stack}; use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex; -use embassy_sync::channel::{Channel, Sender}; +use embassy_sync::{channel::Channel}; use embassy_time::{Duration, Timer}; use esp_hal::peripherals::WIFI; use esp_radio::wifi::sta::StationConfig; -use esp_radio::wifi::{ControllerConfig, Interface, WifiController, WifiError}; +use esp_radio::wifi::{ControllerConfig, Interface, WifiController}; -pub enum WifiCommand<'a> { - SetStationConfig( - esp_radio::wifi::Config, - Sender<'a, CriticalSectionRawMutex, Result<(), WifiError>, 1>, - ), +pub enum WifiCommand { + SetStationConfig(esp_radio::wifi::Config), SetDhcpConfig(embassy_net::DhcpConfig), } +impl WifiCommand { + pub async fn set_station_config(config: esp_radio::wifi::Config) { + WIFI_CH + .send(WifiCommand::SetStationConfig(config)) + .await; + } +} + pub static WIFI_CH: Channel = Channel::new(); pub fn start_wifi(spawner: Spawner, wifi: WIFI<'static>) -> Stack<'static> { @@ -57,8 +62,10 @@ async fn handler(mut controller: WifiController<'static>, net_stack: Stack<'stat let receiver = WIFI_CH.receiver(); loop { match select(receiver.receive(), connection(&mut controller, net_stack)).await { - First(WifiCommand::SetStationConfig(config, res)) => { - res.send(controller.set_config(&config)).await; + First(WifiCommand::SetStationConfig(config)) => { + if controller.set_config(&config).is_err() { + error!("Set WiFi config failed: {:?}", config); + }; } First(WifiCommand::SetDhcpConfig(dhcp_config)) => { net_stack.set_config_v4(embassy_net::ConfigV4::Dhcp(dhcp_config));