feat(rtc): add syncFromNTP wrapper that persists to RTC
This commit is contained in:
@@ -68,3 +68,27 @@ void persistSystemTimeToRTC(time_t t) {
|
||||
extern "C" void onSystemTimeSet(time_t t) {
|
||||
persistSystemTimeToRTC(t);
|
||||
}
|
||||
|
||||
// Versucht NTP-Sync via timesync.h. Bei Erfolg: schreibt UTC in RTC,
|
||||
// setzt ntpEverSynced=true, aktualisiert lastNtpSyncEpoch.
|
||||
// Returns true bei Erfolg.
|
||||
bool syncFromNTP() {
|
||||
// Snapshot vor dem Sync — wenn die Zeit hinterher >= 2025 und neuer als vorher,
|
||||
// werten wir den Sync als erfolgreich.
|
||||
time_t before = time(NULL);
|
||||
syncTimeWithNTP(); // benutzt Defaults aus timesync.h: pool.ntp.org, +1h, kein DST
|
||||
time_t after = time(NULL);
|
||||
|
||||
bool ok = ((uint32_t)after >= RTC_MIN_EPOCH) && (after >= before);
|
||||
if (!ok) {
|
||||
Serial.println("[RTC] NTP-Sync fehlgeschlagen — RTC unverändert");
|
||||
return false;
|
||||
}
|
||||
|
||||
// setSystemTime() wird intern von syncTimeWithNTP NICHT aufgerufen,
|
||||
// also den Weak-Hook-Pfad hier umgehen und direkt schreiben.
|
||||
persistSystemTimeToRTC(after);
|
||||
ntpEverSynced = true;
|
||||
lastNtpSyncEpoch = after;
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user