3 #include "LowPowerCommon.h"
4 #include "drivers/samd/samd.h"
20 case sleep_mode_enum_t::modemSleep:
23 case sleep_mode_enum_t::noSleep:
26 case sleep_mode_enum_t::lightSleep:
29 case sleep_mode_enum_t::deepSleep:
40 case sleep_mode_enum_t::lightSleep:
41 samd.sleep(sleep_time_us / 1000);
45 case sleep_mode_enum_t::deepSleep:
46 samd.deepSleep(sleep_time_us / 1000);
50 case sleep_mode_enum_t::modemSleep:
51 case sleep_mode_enum_t::noSleep:
52 delay(sleep_time_us / 1000);
60 bool setSleepTime(uint32_t time, time_unit_t time_unit_type)
override {
61 sleep_time_us = (toUs(time, time_unit_type));
66 samd.attachInterruptWakeup(pin, callback, toMode(change_type));
72 samd.detachAdcInterrupt();
79 case sleep_mode_enum_t::modemSleep:
82 case sleep_mode_enum_t::noSleep:
85 case sleep_mode_enum_t::lightSleep:
88 case sleep_mode_enum_t::deepSleep:
95 uint32_t sleep_time_us = 0;
96 ArduinoLowPowerClass samd;
98 static void callback() {}
100 PinStatus toMode(pin_change_t ct) {
102 case pin_change_t::on_high:
104 case pin_change_t::on_low:
112 static ArduinoLowPowerSAMD 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
Low Power Management for SAMD. Depends on RTCZero!
Definition: LowPowerSAMD.h:15
bool setSleepMode(sleep_mode_enum_t sleep_mode)
Defines the sleep mode.
Definition: LowPowerSAMD.h:17
bool isProcessingOnSleep(sleep_mode_enum_t sleep_mode)
Returns true if processing is possible in the current sleep mode.
Definition: LowPowerSAMD.h:76
bool sleep(void) override
sets processor into sleep mode
Definition: LowPowerSAMD.h:37
bool setSleepTime(uint32_t time, time_unit_t time_unit_type) override
Defines the sleep time.
Definition: LowPowerSAMD.h:60
void clear()
reset the processing
Definition: LowPowerSAMD.h:70
bool addWakeupPin(int pin, pin_change_t change_type) override
Defines the wakup pin.
Definition: LowPowerSAMD.h:65