@@ -375,7 +375,6 @@ static bool espWiFiStop() {
375375
376376bool WiFiGenericClass::_persistent = true ;
377377bool WiFiGenericClass::_long_range = false ;
378- wifi_mode_t WiFiGenericClass::_forceSleepLastMode = WIFI_MODE_NULL;
379378#if CONFIG_IDF_TARGET_ESP32S2
380379wifi_ps_type_t WiFiGenericClass::_sleepEnabled = WIFI_PS_NONE;
381380#else
@@ -666,7 +665,7 @@ bool WiFiGenericClass::enableAP(bool enable) {
666665}
667666
668667/* *
669- * control modem sleep when only in STA mode
668+ * Enable or disable WiFi modem power save mode
670669 * @param enable bool
671670 * @return ok
672671 */
@@ -675,28 +674,33 @@ bool WiFiGenericClass::setSleep(bool enabled) {
675674}
676675
677676/* *
678- * control modem sleep when only in STA mode
677+ * Set WiFi modem power save mode
679678 * @param mode wifi_ps_type_t
680679 * @return ok
681680 */
682681bool WiFiGenericClass::setSleep (wifi_ps_type_t sleepType) {
683- if (sleepType != _sleepEnabled) {
682+ if (sleepType > WIFI_PS_MAX_MODEM) {
683+ return false ;
684+ }
685+
686+ if (!WiFi.STA .started ()) {
684687 _sleepEnabled = sleepType;
685- if (WiFi.STA .started ()) {
686- esp_err_t err = esp_wifi_set_ps (_sleepEnabled);
687- if (err != ESP_OK) {
688- log_e (" esp_wifi_set_ps failed!: 0x%x: %s" , err, esp_err_to_name (err));
689- return false ;
690- }
691- }
692688 return true ;
693689 }
694- return false ;
690+
691+ esp_err_t err = esp_wifi_set_ps (_sleepEnabled);
692+ if (err != ESP_OK) {
693+ log_e (" esp_wifi_set_ps failed!: 0x%x: %s" , err, esp_err_to_name (err));
694+ return false ;
695+ }
696+
697+ _sleepEnabled = sleepType;
698+ return true ;
695699}
696700
697701/* *
698- * get modem sleep enabled
699- * @return true if modem sleep is enabled
702+ * Get WiFi modem power save mode
703+ * @return wifi_ps_type_t
700704 */
701705wifi_ps_type_t WiFiGenericClass::getSleep () {
702706 return _sleepEnabled;
0 commit comments