Add timeout to menu so you don't accidentally drain your battery by entering the menu before going to sleep.
This commit is contained in:
parent
93d7bde7dc
commit
39a2432410
2 changed files with 20 additions and 0 deletions
|
@ -45,9 +45,11 @@ void WatchFace::HandleButtonPress(uint64_t buttonMask)
|
||||||
|
|
||||||
const std::vector<int> buttons = {MENU_BTN_PIN, UP_BTN_PIN, DOWN_BTN_PIN, BACK_BTN_PIN};
|
const std::vector<int> buttons = {MENU_BTN_PIN, UP_BTN_PIN, DOWN_BTN_PIN, BACK_BTN_PIN};
|
||||||
|
|
||||||
|
uint64_t lastPressTime = m_features.rtc.GetTimestamp();
|
||||||
while (m_inMenu) {
|
while (m_inMenu) {
|
||||||
for (int button : buttons) {
|
for (int button : buttons) {
|
||||||
if (digitalRead(button) == HIGH) {
|
if (digitalRead(button) == HIGH) {
|
||||||
|
lastPressTime = m_features.rtc.GetTimestamp();
|
||||||
switch (button) {
|
switch (button) {
|
||||||
case MENU_BTN_PIN:
|
case MENU_BTN_PIN:
|
||||||
m_menu.HandleButtonPress(MENU_BTN_MASK);
|
m_menu.HandleButtonPress(MENU_BTN_MASK);
|
||||||
|
@ -65,14 +67,31 @@ void WatchFace::HandleButtonPress(uint64_t buttonMask)
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
if (digitalRead(button) == LOW) {
|
if (digitalRead(button) == LOW) {
|
||||||
|
lastPressTime = m_features.rtc.GetTimestamp();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if MENU_TIMEOUT > 0
|
||||||
|
if (m_features.rtc.GetTimestamp() - lastPressTime > 60) {
|
||||||
|
m_inMenu = false;
|
||||||
|
ShowWatchFace(true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
delay(10);
|
delay(10);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if MENU_TIMEOUT > 0
|
||||||
|
if (m_features.rtc.GetTimestamp() - lastPressTime > 60) {
|
||||||
|
m_inMenu = false;
|
||||||
|
ShowWatchFace(true);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
delay(10);
|
delay(10);
|
||||||
}
|
}
|
||||||
} else if (buttonMask & UP_BTN_MASK) {
|
} else if (buttonMask & UP_BTN_MASK) {
|
||||||
|
|
|
@ -40,6 +40,7 @@
|
||||||
|
|
||||||
#define UPDATE_INTERVAL 60 // seconds
|
#define UPDATE_INTERVAL 60 // seconds
|
||||||
#define WAKE_ON_ACCEL_EVENTS false // useful if saving battery by not updating every minute
|
#define WAKE_ON_ACCEL_EVENTS false // useful if saving battery by not updating every minute
|
||||||
|
#define MENU_TIMEOUT 60 // seconds
|
||||||
|
|
||||||
#define WEATHER_UPDATE_INTERVAL 3600 // seconds
|
#define WEATHER_UPDATE_INTERVAL 3600 // seconds
|
||||||
#define WEATHER_UPDATE_BACKOFF 900 // If weather update fails, how long to wait before trying again
|
#define WEATHER_UPDATE_BACKOFF 900 // If weather update fails, how long to wait before trying again
|
||||||
|
|
Loading…
Reference in a new issue