Add separate function to set power management mode.
This commit is contained in:
parent
001610f0d0
commit
a2bae33d84
@ -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;
|
||||
|
29
src/lib.rs
29
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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user