Skip to content

Commit 0531915

Browse files
committed
Fix: The argument to LowPower.idle(millis) has absolutely no effect. arduino-libraries#39
1 parent d701922 commit 0531915

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

src/samd/ArduinoLowPower.cpp

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,20 @@ void ArduinoLowPowerClass::idle() {
3030
__WFI();
3131
}
3232

33-
void ArduinoLowPowerClass::idle(uint32_t millis) {
34-
setAlarmIn(millis);
35-
idle();
33+
void ArduinoLowPowerClass::idle(uint32_t delay)
34+
{
35+
uint32_t ticks = delay;
36+
while (ticks > 0)
37+
{
38+
uint32_t lastMillis = millis();
39+
idle();
40+
uint32_t delta = millis() - lastMillis;
41+
if (delta > ticks) {
42+
ticks = 0;
43+
} else {
44+
ticks -= delta;
45+
}
46+
}
3647
}
3748

3849
void ArduinoLowPowerClass::sleep() {

0 commit comments

Comments
 (0)