use embassy_executor::Spawner; #[cfg(not(feature = "wokwi"))] pub async fn setup_wifi( wifi: esp_hal::peripherals::WIFI<'static>, flash: esp_hal::peripherals::FLASH<'static>, spawner: &Spawner, ) { let nvs = esp_hal_wifimanager::Nvs::new(0x9000, 0x6000, flash).unwrap(); let mut wm_settings = esp_hal_wifimanager::WmSettings::default(); wm_settings.ssid.clear(); _ = core::fmt::write( &mut wm_settings.ssid, format_args!("CreatureDex-{:X}", esp_hal_wifimanager::get_efuse_mac()), ); wm_settings.wifi_conn_timeout = 30000; wm_settings.esp_reset_timeout = Some(300000); // 5min let wifi_res = esp_hal_wifimanager::init_wm(wm_settings, spawner, Some(&nvs), wifi, None).await; log::info!("wifi_res: {wifi_res:?}"); } #[cfg(feature = "wokwi")] pub async fn setup_wifi( wifi: esp_hal::peripherals::WIFI<'static>, flash: esp_hal::peripherals::FLASH<'static>, spawner: &Spawner, ) { log::info!("Wokwi mode active: pre-seeding WiFi Manager with Wokwi credentials"); // Preload connection data so init_wm can connect immediately without AP setup. let nvs = match esp_hal_wifimanager::Nvs::new(0x9000, 0x6000, flash) { Ok(nvs) => nvs, Err(e) => { log::error!("Failed to initialize NVS for Wokwi: {e:?}"); return; } }; if let Err(e) = nvs .set( esp_hal_wifimanager::WIFI_NVS_KEY, "{\"ssid\":\"Wokwi-GUEST\",\"psk\":\"\",\"data\":{}}", ) .await { log::error!("Failed to store Wokwi WiFi config in NVS: {e:?}"); return; } let mut wm_settings = esp_hal_wifimanager::WmSettings::default(); // Wokwi simulation uses a default open network called "Wokwi-GUEST" wm_settings.ssid.clear(); _ = core::fmt::write(&mut wm_settings.ssid, format_args!("Wokwi-GUEST")); wm_settings.wifi_conn_timeout = 30000; // Initialize Wi-Fi connection through WiFi Manager using the pre-seeded NVS data. let wifi_res = esp_hal_wifimanager::init_wm(wm_settings, spawner, Some(&nvs), wifi, None).await; log::info!("Wokwi wifi_res: {wifi_res:?}"); }