#include #include #include "app_state.h" #include "config.h" #include "display.h" #include "hardware.h" #include "network.h" #include "web.h" void setup() { Serial.begin(115200); uint32_t serialWaitStart = millis(); while (!Serial && (millis() - serialWaitStart) < 1500) { delay(10); } Serial.println("Boot"); delay(200); initDisplay(); initAnalog(); int batteryPercent = readBatteryPercent(); time_t now = time(nullptr); bool timeValid = now >= kMinValidEpoch; bool needNetSync = !timeValid || gLastNetSyncEpoch == 0 || (timeValid && (now - gLastNetSyncEpoch) >= gNetSyncSec); int wifiLevel = 0; if (needNetSync) { performNetSync(batteryPercent, &wifiLevel); } gShowTable = false; renderClock(wifiLevel, batteryPercent); gLastScreenSwitchMs = millis(); if (kDeepSleepEnabled) { esp_sleep_enable_timer_wakeup(static_cast(kWakeIntervalSec) * 1000000ULL); esp_deep_sleep_start(); } } void loop() { delay(1000); if (kDeepSleepEnabled) { return; } webLoop(); uint32_t nowMs = millis(); uint32_t currentScreenSec = gShowTable ? gTableScreenSec : gClockScreenSec; if ((nowMs - gLastScreenSwitchMs) < (currentScreenSec * 1000UL)) { return; } gLastScreenSwitchMs = nowMs; time_t now = time(nullptr); bool timeValid = now >= kMinValidEpoch; bool needNetSync = !timeValid || gLastNetSyncEpoch == 0 || (timeValid && (now - gLastNetSyncEpoch) >= gNetSyncSec); int batteryPercent = readBatteryPercent(); int wifiLevel = 0; if (needNetSync) { performNetSync(batteryPercent, &wifiLevel); } if (gNotionCount <= 0) { gShowTable = false; } else { gShowTable = !gShowTable; } if (gShowTable) { renderTable(wifiLevel, batteryPercent); } else { renderClock(wifiLevel, batteryPercent); } }