@@ -619,8 +619,13 @@ static std::vector<WiFiEventCbList_t> cbEventList;
619
619
bool WiFiGenericClass::_persistent = true ;
620
620
bool WiFiGenericClass::_long_range = false ;
621
621
wifi_mode_t WiFiGenericClass::_forceSleepLastMode = WIFI_MODE_NULL;
622
+ #if CONFIG_IDF_TARGET_ESP32S2
623
+ wifi_ps_type_t WiFiGenericClass::_sleepEnabled = WIFI_PS_NONE;
624
+ #else
625
+ wifi_ps_type_t WiFiGenericClass::_sleepEnabled = WIFI_PS_MIN_MODEM;
626
+ #endif
622
627
623
- WiFiGenericClass::WiFiGenericClass ()
628
+ WiFiGenericClass::WiFiGenericClass ()
624
629
{
625
630
626
631
}
@@ -789,6 +794,9 @@ esp_err_t WiFiGenericClass::_eventCallback(arduino_event_t *event)
789
794
} else if (event->event_id == ARDUINO_EVENT_WIFI_STA_START) {
790
795
WiFiSTAClass::_setStatus (WL_DISCONNECTED);
791
796
setStatusBits (STA_STARTED_BIT);
797
+ if (esp_wifi_set_ps (_sleepEnabled) != ESP_OK){
798
+ log_e (" esp_wifi_set_ps failed" );
799
+ }
792
800
} else if (event->event_id == ARDUINO_EVENT_WIFI_STA_STOP) {
793
801
WiFiSTAClass::_setStatus (WL_NO_SHIELD);
794
802
clearStatusBits (STA_STARTED_BIT | STA_CONNECTED_BIT | STA_HAS_IP_BIT | STA_HAS_IP6_BIT);
@@ -1053,30 +1061,31 @@ bool WiFiGenericClass::enableAP(bool enable)
1053
1061
* @param enable bool
1054
1062
* @return ok
1055
1063
*/
1056
- bool WiFiGenericClass::setSleep (bool enable)
1064
+ bool WiFiGenericClass::setSleep (bool enabled){
1065
+ return setSleep (enabled?WIFI_PS_MIN_MODEM:WIFI_PS_NONE);
1066
+ }
1067
+
1068
+ bool WiFiGenericClass::setSleep (wifi_ps_type_t sleepType)
1057
1069
{
1058
- if ((getMode () & WIFI_MODE_STA) == 0 ){
1059
- log_w (" STA has not been started" );
1060
- return false ;
1070
+ if (sleepType != _sleepEnabled){
1071
+ _sleepEnabled = sleepType;
1072
+ if ((getMode () & WIFI_MODE_STA) != 0 ){
1073
+ if (esp_wifi_set_ps (_sleepEnabled) != ESP_OK){
1074
+ log_e (" esp_wifi_set_ps failed!" );
1075
+ }
1076
+ }
1077
+ return true ;
1061
1078
}
1062
- return esp_wifi_set_ps (enable?WIFI_PS_MIN_MODEM:WIFI_PS_NONE) == ESP_OK ;
1079
+ return false ;
1063
1080
}
1064
1081
1065
1082
/* *
1066
1083
* get modem sleep enabled
1067
1084
* @return true if modem sleep is enabled
1068
1085
*/
1069
- bool WiFiGenericClass::getSleep ()
1086
+ wifi_ps_type_t WiFiGenericClass::getSleep ()
1070
1087
{
1071
- wifi_ps_type_t ps;
1072
- if ((getMode () & WIFI_MODE_STA) == 0 ){
1073
- log_w (" STA has not been started" );
1074
- return false ;
1075
- }
1076
- if (esp_wifi_get_ps (&ps) == ESP_OK){
1077
- return ps == WIFI_PS_MIN_MODEM;
1078
- }
1079
- return false ;
1088
+ return _sleepEnabled;
1080
1089
}
1081
1090
1082
1091
/* *
0 commit comments