[beken-72xx] Implement WiFi powersave (#111)

* Rebase

* Clang-format
This commit is contained in:
Péter Sárközi
2023-04-28 17:21:49 +02:00
committed by GitHub
parent 2c86a36fe0
commit 882f58bae4
2 changed files with 19 additions and 0 deletions

View File

@@ -84,3 +84,20 @@ IPAddress WiFiClass::hostByName(const char *hostname) {
}
return IPAddress();
}
bool WiFiClass::setSleep(bool enable) {
LT_DM(WIFI, "WiFi sleep mode %u", enable);
if (enable) {
// Replicating OpenBeken PowerSave feature
// https://github.com/openshwprojects/OpenBK7231T_App/blob/567c5756b489f0670988fad1c2742a19f0f217ea/src/cmnds/cmd_main.c#L58
bk_wlan_power_save_set_level((BK_PS_LEVEL)(PS_RF_SLEEP_BIT | PS_MCU_SLEEP_BIT));
} else {
bk_wlan_power_save_set_level((BK_PS_LEVEL)0);
}
data.sleep = enable;
return true;
}
bool WiFiClass::getSleep() {
return data.sleep;
}

View File

@@ -31,6 +31,7 @@ extern "C" {
extern void func_init_extended();
extern void app_pre_start();
extern void bk_wlan_ap_init(network_InitTypeDef_st *inNetworkInitPara);
extern int bk_wlan_power_save_set_level(BK_PS_LEVEL level);
// func/hostapd-2.5/wpa_supplicant/main_supplicant.c
extern struct wpa_ssid_value *wpas_connect_ssid;
@@ -64,6 +65,7 @@ typedef struct {
rw_evt_type lastStaEvent;
rw_evt_type lastApEvent;
bool apEnabled;
bool sleep;
} WiFiData;
#define DATA ((WiFiData *)data)