diff --git a/examples/rpi-pico-w/src/main.rs b/examples/rpi-pico-w/src/main.rs index 73cfdf42..d2f47fd6 100644 --- a/examples/rpi-pico-w/src/main.rs +++ b/examples/rpi-pico-w/src/main.rs @@ -70,7 +70,10 @@ async fn main(spawner: Spawner) { spawner.spawn(wifi_task(runner)).unwrap(); - control.init(clm, cyw43::PowerManagementMode::PowerSave).await; + control.init(clm).await; + control + .set_power_management(cyw43::PowerManagementMode::PowerSave) + .await; //control.join_open(env!("WIFI_NETWORK")).await; control.join_wpa2(env!("WIFI_NETWORK"), env!("WIFI_PASSWORD")).await; diff --git a/src/lib.rs b/src/lib.rs index 884cb082..5733506a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -228,7 +228,7 @@ impl PowerManagementMode { } impl<'a> Control<'a> { - pub async fn init(&mut self, clm: &[u8], power_save_mode: PowerManagementMode) { + pub async fn init(&mut self, clm: &[u8]) { const CHUNK_SIZE: usize = 1024; info!("Downloading CLM..."); @@ -323,21 +323,6 @@ impl<'a> Control<'a> { Timer::after(Duration::from_millis(100)).await; - // power save mode - if power_save_mode != PowerManagementMode::None { - let mode = power_save_mode.mode(); - if mode == 2 { - self.set_iovar_u32("pm2_sleep_ret", power_save_mode.sleep_ret_ms() as u32) - .await; - self.set_iovar_u32("bcn_li_bcn", power_save_mode.beacon_period() as u32) - .await; - self.set_iovar_u32("bcn_li_dtim", power_save_mode.dtim_period() as u32) - .await; - self.set_iovar_u32("assoc_listen", power_save_mode.assoc() as u32).await; - } - self.ioctl_set_u32(86, 0, mode).await; - } - self.ioctl_set_u32(110, 0, 1).await; // SET_GMODE = auto self.ioctl_set_u32(142, 0, 0).await; // SET_BAND = any @@ -349,6 +334,18 @@ impl<'a> Control<'a> { info!("INIT DONE"); } + pub async fn set_power_management(&mut self, mode: PowerManagementMode) { + // power save mode + let mode_num = mode.mode(); + if mode_num == 2 { + self.set_iovar_u32("pm2_sleep_ret", mode.sleep_ret_ms() as u32).await; + self.set_iovar_u32("bcn_li_bcn", mode.beacon_period() as u32).await; + self.set_iovar_u32("bcn_li_dtim", mode.dtim_period() as u32).await; + self.set_iovar_u32("assoc_listen", mode.assoc() as u32).await; + } + self.ioctl_set_u32(86, 0, mode_num).await; + } + pub async fn join_open(&mut self, ssid: &str) { self.set_iovar_u32("ampdu_ba_wsize", 8).await;