@@ -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
}
@@ -790,6 +795,9 @@ esp_err_t WiFiGenericClass::_eventCallback(arduino_event_t *event)
790
795
WiFiSTAClass::_setStatus (WL_DISCONNECTED);
791
796
setStatusBits (STA_STARTED_BIT);
792
797
tcpip_adapter_set_hostname (TCPIP_ADAPTER_IF_STA, WiFiSTAClass::_hostname.c_str ());
798
+ if (esp_wifi_set_ps (_sleepEnabled) != ESP_OK){
799
+ log_e (" esp_wifi_set_ps failed" );
800
+ }
793
801
} else if (event->event_id == ARDUINO_EVENT_WIFI_STA_STOP) {
794
802
WiFiSTAClass::_setStatus (WL_NO_SHIELD);
795
803
clearStatusBits (STA_STARTED_BIT | STA_CONNECTED_BIT | STA_HAS_IP_BIT | STA_HAS_IP6_BIT);
@@ -1054,13 +1062,22 @@ bool WiFiGenericClass::enableAP(bool enable)
1054
1062
* @param enable bool
1055
1063
* @return ok
1056
1064
*/
1057
- bool WiFiGenericClass::setSleep (bool enable)
1065
+ bool WiFiGenericClass::setSleep (bool enabled){
1066
+ return setSleep (enabled?WIFI_PS_MIN_MODEM:WIFI_PS_NONE);
1067
+ }
1068
+
1069
+ bool WiFiGenericClass::setSleep (wifi_ps_type_t sleepType)
1058
1070
{
1059
- if ((getMode () & WIFI_MODE_STA) == 0 ){
1060
- log_w (" STA has not been started" );
1061
- return false ;
1071
+ if (sleepType != _sleepEnabled){
1072
+ _sleepEnabled = sleepType;
1073
+ if ((getMode () & WIFI_MODE_STA) != 0 ){
1074
+ if (esp_wifi_set_ps (_sleepEnabled) != ESP_OK){
1075
+ log_e (" esp_wifi_set_ps failed!" );
1076
+ }
1077
+ }
1078
+ return true ;
1062
1079
}
1063
- return esp_wifi_set_ps (enable?WIFI_PS_MIN_MODEM:WIFI_PS_NONE) == ESP_OK ;
1080
+ return false ;
1064
1081
}
1065
1082
1066
1083
/* *
@@ -1081,17 +1098,9 @@ bool WiFiGenericClass::setSleep(wifi_ps_type_t mode)
1081
1098
* get modem sleep enabled
1082
1099
* @return true if modem sleep is enabled
1083
1100
*/
1084
- bool WiFiGenericClass::getSleep ()
1101
+ wifi_ps_type_t WiFiGenericClass::getSleep ()
1085
1102
{
1086
- wifi_ps_type_t ps;
1087
- if ((getMode () & WIFI_MODE_STA) == 0 ){
1088
- log_w (" STA has not been started" );
1089
- return false ;
1090
- }
1091
- if (esp_wifi_get_ps (&ps) == ESP_OK){
1092
- return ps == WIFI_PS_MIN_MODEM;
1093
- }
1094
- return false ;
1103
+ return _sleepEnabled;
1095
1104
}
1096
1105
1097
1106
/* *
0 commit comments