3 #include <ESP8266WiFi.h>
4 #include <PolledTimeout.h>
6 #include <include/WiFiState.h>
7 #include "LowPowerCommon.h"
36 case sleep_mode_enum_t::modemSleep:
39 case sleep_mode_enum_t::noSleep:
42 case sleep_mode_enum_t::lightSleep:
45 case sleep_mode_enum_t::deepSleep:
58 case sleep_mode_enum_t::modemSleep:
59 rc = wifi_set_sleep_type(MODEM_SLEEP_T);
63 case sleep_mode_enum_t::lightSleep:
64 if (sleep_time_us != 0 || gpio_count == 0)
return false;
65 rc = wifi_set_sleep_type(LIGHT_SLEEP_T);
69 case sleep_mode_enum_t::deepSleep: {
70 if (gpio_count != 0 || sleep_time_us == 0)
return false;
71 system_deep_sleep_set_option(sleep_option);
73 system_deep_sleep(sleep_time_us);
75 system_deep_sleep_instant(sleep_time_us);
80 case sleep_mode_enum_t::noSleep:
88 bool setSleepTime(uint32_t time, time_unit_t time_unit_type)
override {
89 if (sleep_mode == sleep_mode_enum_t::modemSleep)
return false;
91 sleep_time_us = (toUs(time, time_unit_type));
92 return gpio_count == 0;
96 if (sleep_mode == sleep_mode_enum_t::modemSleep)
return false;
98 GPIO_INT_TYPE int_type = (change_type == pin_change_t::on_high)
99 ? GPIO_PIN_INTR_HILEVEL
100 : GPIO_PIN_INTR_LOLEVEL;
101 gpio_pin_wakeup_enable(digitalPinToInterrupt(pin), int_type);
103 return sleep_time_us == 0;
130 uint64_t sleep_time_us = 0;
131 uint8_t sleep_option = 1;
132 bool is_instant =
false;
133 uint16_t gpio_count = 0;
136 static ArduinoLowPowerESP8266 LowPower;
Common API for power saving modes for different processor architectures.
Definition: LowPowerCommon.h:33
virtual void clear()
reset the processing
Definition: LowPowerCommon.h:117
virtual bool setSleepMode(sleep_mode_enum_t mode)
Defines the sleep mode.
Definition: LowPowerCommon.h:72
Low Power Management for ESP8266.
Definition: LowPowerESP8266.h:30
void setDeepSleepOption(uint8_t option)
Deep sleep options: values from 0 to 4 1: RF calibration: Power consumption is high 2: No RF calibrat...
Definition: LowPowerESP8266.h:112
bool isModeSupported(sleep_mode_enum_t sleep_mode) override
Provides information if the indicated mode is supported.
Definition: LowPowerESP8266.h:117
bool isProcessingOnSleep(sleep_mode_enum_t sleep_mode)
Returns true if processing is possible in the current sleep mode.
Definition: LowPowerESP8266.h:33
void setInstant(bool instant)
if instant == true -> instantly deep sleep w/o delay
Definition: LowPowerESP8266.h:115
void clear()
reset the processing
Definition: LowPowerESP8266.h:121
bool setSleepTime(uint32_t time, time_unit_t time_unit_type) override
Defines the sleep time.
Definition: LowPowerESP8266.h:88
bool sleep(void) override
sets processor into sleep mode
Definition: LowPowerESP8266.h:53
bool addWakeupPin(int pin, pin_change_t change_type) override
Defines the wakup pin.
Definition: LowPowerESP8266.h:95