feat: log the error with the wifi config

This commit is contained in:
2026-08-17 17:37:59 -05:00
parent 02a4559268
commit 8695d0abfa
+16 -9
View File
@@ -4,20 +4,25 @@ use embassy_futures::select::Either::First;
use embassy_futures::select::select; use embassy_futures::select::select;
use embassy_net::{Runner, Stack}; use embassy_net::{Runner, Stack};
use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex; use embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex;
use embassy_sync::channel::{Channel, Sender}; use embassy_sync::{channel::Channel};
use embassy_time::{Duration, Timer}; use embassy_time::{Duration, Timer};
use esp_hal::peripherals::WIFI; use esp_hal::peripherals::WIFI;
use esp_radio::wifi::sta::StationConfig; 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> { pub enum WifiCommand {
SetStationConfig( SetStationConfig(esp_radio::wifi::Config),
esp_radio::wifi::Config,
Sender<'a, CriticalSectionRawMutex, Result<(), WifiError>, 1>,
),
SetDhcpConfig(embassy_net::DhcpConfig), 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<CriticalSectionRawMutex, WifiCommand, 4> = Channel::new(); pub static WIFI_CH: Channel<CriticalSectionRawMutex, WifiCommand, 4> = Channel::new();
pub fn start_wifi(spawner: Spawner, wifi: WIFI<'static>) -> Stack<'static> { 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(); let receiver = WIFI_CH.receiver();
loop { loop {
match select(receiver.receive(), connection(&mut controller, net_stack)).await { match select(receiver.receive(), connection(&mut controller, net_stack)).await {
First(WifiCommand::SetStationConfig(config, res)) => { First(WifiCommand::SetStationConfig(config)) => {
res.send(controller.set_config(&config)).await; if controller.set_config(&config).is_err() {
error!("Set WiFi config failed: {:?}", config);
};
} }
First(WifiCommand::SetDhcpConfig(dhcp_config)) => { First(WifiCommand::SetDhcpConfig(dhcp_config)) => {
net_stack.set_config_v4(embassy_net::ConfigV4::Dhcp(dhcp_config)); net_stack.set_config_v4(embassy_net::ConfigV4::Dhcp(dhcp_config));