Fix countdown timer overflow using modulo arithmetic
This commit is contained in:
parent
62e5882d1f
commit
b557d9f0df
1 changed files with 39 additions and 19 deletions
38
src/main.cpp
38
src/main.cpp
|
|
@ -1178,8 +1178,13 @@ indexY += 65;
|
|||
}
|
||||
lcd.drawString("WiFi: " + wifiStatus, 20, SCREEN_HEIGHT - 20);
|
||||
|
||||
int secondsLeft = (REFRESH_INTERVAL - (millis() - lastRefresh)) / 1000;
|
||||
if (secondsLeft < 0) secondsLeft = 0;
|
||||
unsigned long elapsed = millis() - lastRefresh;
|
||||
int secondsLeft;
|
||||
if (lastRefresh == 0) {
|
||||
secondsLeft = 0;
|
||||
} else {
|
||||
secondsLeft = (REFRESH_INTERVAL - (elapsed % REFRESH_INTERVAL)) / 1000;
|
||||
}
|
||||
int mins = secondsLeft / 60;
|
||||
int secs = secondsLeft % 60;
|
||||
char timeStr[8];
|
||||
|
|
@ -1862,8 +1867,13 @@ void drawHardMoneyDetailScreen() {
|
|||
lcd.drawString("WiFi: " + wifiStatus, 20, SCREEN_HEIGHT - 20);
|
||||
|
||||
lcd.setTextDatum(textdatum_t::middle_center);
|
||||
int secondsLeft = (REFRESH_INTERVAL - (millis() - lastRefresh)) / 1000;
|
||||
if (secondsLeft < 0) secondsLeft = 0;
|
||||
unsigned long elapsed = millis() - lastRefresh;
|
||||
int secondsLeft;
|
||||
if (lastRefresh == 0) {
|
||||
secondsLeft = 0;
|
||||
} else {
|
||||
secondsLeft = (REFRESH_INTERVAL - (elapsed % REFRESH_INTERVAL)) / 1000;
|
||||
}
|
||||
int mins = secondsLeft / 60;
|
||||
int secs = secondsLeft % 60;
|
||||
char timeStr[8];
|
||||
|
|
@ -2064,8 +2074,13 @@ void setup() {
|
|||
}
|
||||
|
||||
void drawFooterCountdown() {
|
||||
int secondsLeft = (REFRESH_INTERVAL - (millis() - lastRefresh)) / 1000;
|
||||
if (secondsLeft < 0) secondsLeft = 0;
|
||||
unsigned long elapsed = millis() - lastRefresh;
|
||||
int secondsLeft;
|
||||
if (lastRefresh == 0) {
|
||||
secondsLeft = 0;
|
||||
} else {
|
||||
secondsLeft = (REFRESH_INTERVAL - (elapsed % REFRESH_INTERVAL)) / 1000;
|
||||
}
|
||||
int mins = secondsLeft / 60;
|
||||
int secs = secondsLeft % 60;
|
||||
char timeStr[8];
|
||||
|
|
@ -2146,14 +2161,19 @@ if (currentScreen == SCREEN_HARD_MONEY_DETAIL && millis() - lastCountdownUpdate
|
|||
lcd.setFont(&fonts::DejaVu18);
|
||||
lcd.setTextColor(TFT_WHITE, TFT_ORANGE);
|
||||
lcd.setTextDatum(textdatum_t::middle_center);
|
||||
int secondsLeft = (REFRESH_INTERVAL - (millis() - lastRefresh)) / 1000;
|
||||
if (secondsLeft < 0) secondsLeft = 0;
|
||||
unsigned long elapsed = millis() - lastRefresh;
|
||||
int secondsLeft;
|
||||
if (lastRefresh == 0) {
|
||||
secondsLeft = 0;
|
||||
} else {
|
||||
secondsLeft = (REFRESH_INTERVAL - (elapsed % REFRESH_INTERVAL)) / 1000;
|
||||
}
|
||||
int mins = secondsLeft / 60;
|
||||
int secs = secondsLeft % 60;
|
||||
char timeStr[8];
|
||||
sprintf(timeStr, "%d:%02d", mins, secs);
|
||||
lcd.drawString(String(timeStr), SCREEN_WIDTH / 2, SCREEN_HEIGHT - 20);
|
||||
}
|
||||
}
|
||||
|
||||
if (currentScreen == SCREEN_HARD_MONEY_DETAIL) {
|
||||
if (hmNeedsRefresh || !btcHmLoaded || !goldHmLoaded || !silverHmLoaded) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue