From 063212bcd3ceba319990915c20f16ada2aea53c3 Mon Sep 17 00:00:00 2001 From: GuruSR Date: Thu, 23 Dec 2021 00:24:38 -0500 Subject: [PATCH] Put the 2000 flag back in and added the new function. --- src/WatchyRTC.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/WatchyRTC.cpp b/src/WatchyRTC.cpp index 32a1757..0beb167 100644 --- a/src/WatchyRTC.cpp +++ b/src/WatchyRTC.cpp @@ -63,7 +63,7 @@ void WatchyRTC::set(tmElements_t tm){ if(rtcType == DS3231){ rtc_ds.set(makeTime(tm)); }else{ - rtc_pcf.setDate(tm.Day, _getDayOfWeek(tm.Day, tm.Month, tm.Year), tm.Month, 1, tm.Year); + rtc_pcf.setDate(tm.Day, _getDayOfWeek(tm.Day, tm.Month, tm.Year), tm.Month, 0, tm.Year); rtc_pcf.setTime(tm.Hour, tm.Minute, tm.Second); clearAlarm(); } @@ -105,7 +105,7 @@ void WatchyRTC::_PCFConfig(String datetime){ int Minute = _getValue(datetime, ':', 4).toInt(); int Second = _getValue(datetime, ':', 5).toInt(); //day, weekday, month, century(1=1900, 0=2000), year(0-99) - rtc_pcf.setDate(Day, _getDayOfWeek(Day, Month, Year), Month, 1, Year);//offset from 1900 + rtc_pcf.setDate(Day, _getDayOfWeek(Day, Month, Year), Month, 0, Year);//offset from 2000 //hr, min, sec rtc_pcf.setTime(Hour, Minute, Second); } @@ -137,3 +137,6 @@ String WatchyRTC::_getValue(String data, char separator, int index) return found>index ? data.substring(strIndex[0], strIndex[1]) : ""; } + +// Correct time from 1970 to 2000 when recieved from an NTP server, so the PCF8563 isn't 30 years off. +time_t NTPCorrection(time_t FromNTP) { return FromNTP + (rtcType == PCF8563 ? 946684800UL : 0UL); }