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
36
src/main.cpp
36
src/main.cpp
|
|
@ -1178,8 +1178,13 @@ indexY += 65;
|
||||||
}
|
}
|
||||||
lcd.drawString("WiFi: " + wifiStatus, 20, SCREEN_HEIGHT - 20);
|
lcd.drawString("WiFi: " + wifiStatus, 20, SCREEN_HEIGHT - 20);
|
||||||
|
|
||||||
int secondsLeft = (REFRESH_INTERVAL - (millis() - lastRefresh)) / 1000;
|
unsigned long elapsed = millis() - lastRefresh;
|
||||||
if (secondsLeft < 0) secondsLeft = 0;
|
int secondsLeft;
|
||||||
|
if (lastRefresh == 0) {
|
||||||
|
secondsLeft = 0;
|
||||||
|
} else {
|
||||||
|
secondsLeft = (REFRESH_INTERVAL - (elapsed % REFRESH_INTERVAL)) / 1000;
|
||||||
|
}
|
||||||
int mins = secondsLeft / 60;
|
int mins = secondsLeft / 60;
|
||||||
int secs = secondsLeft % 60;
|
int secs = secondsLeft % 60;
|
||||||
char timeStr[8];
|
char timeStr[8];
|
||||||
|
|
@ -1862,8 +1867,13 @@ void drawHardMoneyDetailScreen() {
|
||||||
lcd.drawString("WiFi: " + wifiStatus, 20, SCREEN_HEIGHT - 20);
|
lcd.drawString("WiFi: " + wifiStatus, 20, SCREEN_HEIGHT - 20);
|
||||||
|
|
||||||
lcd.setTextDatum(textdatum_t::middle_center);
|
lcd.setTextDatum(textdatum_t::middle_center);
|
||||||
int secondsLeft = (REFRESH_INTERVAL - (millis() - lastRefresh)) / 1000;
|
unsigned long elapsed = millis() - lastRefresh;
|
||||||
if (secondsLeft < 0) secondsLeft = 0;
|
int secondsLeft;
|
||||||
|
if (lastRefresh == 0) {
|
||||||
|
secondsLeft = 0;
|
||||||
|
} else {
|
||||||
|
secondsLeft = (REFRESH_INTERVAL - (elapsed % REFRESH_INTERVAL)) / 1000;
|
||||||
|
}
|
||||||
int mins = secondsLeft / 60;
|
int mins = secondsLeft / 60;
|
||||||
int secs = secondsLeft % 60;
|
int secs = secondsLeft % 60;
|
||||||
char timeStr[8];
|
char timeStr[8];
|
||||||
|
|
@ -2064,8 +2074,13 @@ void setup() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void drawFooterCountdown() {
|
void drawFooterCountdown() {
|
||||||
int secondsLeft = (REFRESH_INTERVAL - (millis() - lastRefresh)) / 1000;
|
unsigned long elapsed = millis() - lastRefresh;
|
||||||
if (secondsLeft < 0) secondsLeft = 0;
|
int secondsLeft;
|
||||||
|
if (lastRefresh == 0) {
|
||||||
|
secondsLeft = 0;
|
||||||
|
} else {
|
||||||
|
secondsLeft = (REFRESH_INTERVAL - (elapsed % REFRESH_INTERVAL)) / 1000;
|
||||||
|
}
|
||||||
int mins = secondsLeft / 60;
|
int mins = secondsLeft / 60;
|
||||||
int secs = secondsLeft % 60;
|
int secs = secondsLeft % 60;
|
||||||
char timeStr[8];
|
char timeStr[8];
|
||||||
|
|
@ -2146,8 +2161,13 @@ if (currentScreen == SCREEN_HARD_MONEY_DETAIL && millis() - lastCountdownUpdate
|
||||||
lcd.setFont(&fonts::DejaVu18);
|
lcd.setFont(&fonts::DejaVu18);
|
||||||
lcd.setTextColor(TFT_WHITE, TFT_ORANGE);
|
lcd.setTextColor(TFT_WHITE, TFT_ORANGE);
|
||||||
lcd.setTextDatum(textdatum_t::middle_center);
|
lcd.setTextDatum(textdatum_t::middle_center);
|
||||||
int secondsLeft = (REFRESH_INTERVAL - (millis() - lastRefresh)) / 1000;
|
unsigned long elapsed = millis() - lastRefresh;
|
||||||
if (secondsLeft < 0) secondsLeft = 0;
|
int secondsLeft;
|
||||||
|
if (lastRefresh == 0) {
|
||||||
|
secondsLeft = 0;
|
||||||
|
} else {
|
||||||
|
secondsLeft = (REFRESH_INTERVAL - (elapsed % REFRESH_INTERVAL)) / 1000;
|
||||||
|
}
|
||||||
int mins = secondsLeft / 60;
|
int mins = secondsLeft / 60;
|
||||||
int secs = secondsLeft % 60;
|
int secs = secondsLeft % 60;
|
||||||
char timeStr[8];
|
char timeStr[8];
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue