feat: log the error with the wifi config
This commit is contained in:
+16
-9
@@ -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<CriticalSectionRawMutex, WifiCommand, 4> = 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));
|
||||
|
||||
Reference in New Issue
Block a user