72 lines
2.2 KiB
Rust
72 lines
2.2 KiB
Rust
use crate::navigation::navigation::Mutex;
|
|
use crate::peripherals::storage::Nvs;
|
|
use alloc::sync::Arc;
|
|
use embassy_executor::Spawner;
|
|
|
|
#[cfg(not(feature = "wokwi"))]
|
|
pub async fn setup_wifi(
|
|
wifi: esp_hal::peripherals::WIFI<'static>,
|
|
nvs: Arc<Mutex<Nvs>>,
|
|
spawner: &Spawner,
|
|
) {
|
|
let espnvs = esp_hal_wifimanager::Nvs::new_from_nvs(nvs, 0, 0);
|
|
|
|
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(&espnvs), 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:?}");
|
|
}
|