5 #include "LowPowerCommon.h"
9 enum class sleep_mode_enum_t {
16 enum class time_unit_t {
22 enum class pin_change_t {
39 virtual bool setSleepTime(uint32_t time, time_unit_t time_unit_type) = 0;
45 virtual bool sleepFor(uint32_t time, time_unit_t time_unit_type) {
52 virtual void setActive(
bool flag) { is_active =
false; }
56 uint32_t timeout_us = toUs(time, time_unit_type);
57 timeout_end = millis() + timeout_us / 1000;
63 if (timeout_end > 0 && timeout_end > millis())
return false;
64 if (!is_active)
return false;
75 if (result && mode == sleep_mode_enum_t::modemSleep)
sleep();
100 case sleep_mode_enum_t::noSleep:
103 case sleep_mode_enum_t::lightSleep:
106 case sleep_mode_enum_t::deepSleep:
109 case sleep_mode_enum_t::modemSleep:
118 sleep_mode = sleep_mode_enum_t::deepSleep;
119 time_unit = time_unit_t::ms;
126 bool is_active =
true;
127 uint32_t timeout_end = 0;
128 uint32_t timeout_us = 0;
129 time_unit_t time_unit = time_unit_t::ms;
130 sleep_mode_enum_t sleep_mode = sleep_mode_enum_t::deepSleep;
132 uint64_t toUs(uint64_t time, time_unit_t time_unit) {
134 case time_unit_t::sec:
135 return time * 1000000;
136 case time_unit_t::ms:
138 case time_unit_t::us:
Common API for power saving modes for different processor architectures.
Definition: LowPowerCommon.h:33
virtual void setActiveTime(uint32_t time, time_unit_t time_unit_type)
Defiles the active time.
Definition: LowPowerCommon.h:55
virtual bool sleep(void)=0
Sets processor into sleep mode.
virtual bool isActive()
Checks if we are active (not sleeping)
Definition: LowPowerCommon.h:62
virtual void process()
Triggers the processing to be active or sleeping based on the set definitions.
Definition: LowPowerCommon.h:81
virtual bool sleepFor(uint32_t time, time_unit_t time_unit_type)
sets mc into sleep mode to sleep for indicated millis
Definition: LowPowerCommon.h:45
virtual bool setSleepTime(uint32_t time, time_unit_t time_unit_type)=0
Defines the sleep time.
virtual void setActive(bool flag)
sets the flag to be active
Definition: LowPowerCommon.h:52
virtual bool isProcessingOnSleep(sleep_mode_enum_t sleep_mode)=0
Returns true if processing is possible in the current sleep mode.
virtual void clear()
reset the processing
Definition: LowPowerCommon.h:117
virtual bool addWakeupPin(int pin, pin_change_t change_type)=0
Defines the wakup pin.
virtual bool setSleepMode(sleep_mode_enum_t mode)
Defines the sleep mode.
Definition: LowPowerCommon.h:72
virtual bool isModeSupported(sleep_mode_enum_t sleep_mode)
Provides information if the indicated mode is supported.
Definition: LowPowerCommon.h:97
virtual bool isProcessingOnSleep()
Returns true if processing is possible in the current sleep mode.
Definition: LowPowerCommon.h:92