Remove comment

This commit is contained in:
Ben Meadors
2025-09-14 05:44:56 -05:00
parent 68d6a2a827
commit ad1f339151

View File

@@ -9,7 +9,6 @@
static RTCQuality currentQuality = RTCQualityNone; static RTCQuality currentQuality = RTCQualityNone;
uint32_t lastSetFromPhoneNtpOrGps = 0; uint32_t lastSetFromPhoneNtpOrGps = 0;
// Rate limiting for GPS time validation warnings
static uint32_t lastTimeValidationWarning = 0; static uint32_t lastTimeValidationWarning = 0;
static const uint32_t TIME_VALIDATION_WARNING_INTERVAL_MS = 15000; // 15 seconds static const uint32_t TIME_VALIDATION_WARNING_INTERVAL_MS = 15000; // 15 seconds
@@ -31,8 +30,7 @@ RTCSetResult readFromRTC()
{ {
struct timeval tv; /* btw settimeofday() is helpful here too*/ struct timeval tv; /* btw settimeofday() is helpful here too*/
#ifdef RV3028_RTC #ifdef RV3028_RTC
if (rtc_found.address == RV3028_RTC) if (rtc_found.address == RV3028_RTC) {
{
uint32_t now = millis(); uint32_t now = millis();
Melopero_RV3028 rtc; Melopero_RV3028 rtc;
#if WIRE_INTERFACES_COUNT == 2 #if WIRE_INTERFACES_COUNT == 2
@@ -52,8 +50,7 @@ RTCSetResult readFromRTC()
uint32_t printableEpoch = tv.tv_sec; // Print lib only supports 32 bit but time_t can be 64 bit on some platforms uint32_t printableEpoch = tv.tv_sec; // Print lib only supports 32 bit but time_t can be 64 bit on some platforms
#ifdef BUILD_EPOCH #ifdef BUILD_EPOCH
if (tv.tv_sec < BUILD_EPOCH) if (tv.tv_sec < BUILD_EPOCH) {
{
LOG_WARN("Ignore time (%ld) before build epoch (%ld)!", printableEpoch, BUILD_EPOCH); LOG_WARN("Ignore time (%ld) before build epoch (%ld)!", printableEpoch, BUILD_EPOCH);
return RTCSetResultInvalidTime; return RTCSetResultInvalidTime;
} }
@@ -61,8 +58,7 @@ RTCSetResult readFromRTC()
LOG_DEBUG("Read RTC time from RV3028 getTime as %02d-%02d-%02d %02d:%02d:%02d (%ld)", t.tm_year + 1900, t.tm_mon + 1, LOG_DEBUG("Read RTC time from RV3028 getTime as %02d-%02d-%02d %02d:%02d:%02d (%ld)", t.tm_year + 1900, t.tm_mon + 1,
t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec, printableEpoch); t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec, printableEpoch);
if (currentQuality == RTCQualityNone) if (currentQuality == RTCQualityNone) {
{
timeStartMsec = now; timeStartMsec = now;
zeroOffsetSecs = tv.tv_sec; zeroOffsetSecs = tv.tv_sec;
currentQuality = RTCQualityDevice; currentQuality = RTCQualityDevice;
@@ -70,8 +66,7 @@ RTCSetResult readFromRTC()
return RTCSetResultSuccess; return RTCSetResultSuccess;
} }
#elif defined(PCF8563_RTC) #elif defined(PCF8563_RTC)
if (rtc_found.address == PCF8563_RTC) if (rtc_found.address == PCF8563_RTC) {
{
uint32_t now = millis(); uint32_t now = millis();
PCF8563_Class rtc; PCF8563_Class rtc;
@@ -94,8 +89,7 @@ RTCSetResult readFromRTC()
uint32_t printableEpoch = tv.tv_sec; // Print lib only supports 32 bit but time_t can be 64 bit on some platforms uint32_t printableEpoch = tv.tv_sec; // Print lib only supports 32 bit but time_t can be 64 bit on some platforms
#ifdef BUILD_EPOCH #ifdef BUILD_EPOCH
if (tv.tv_sec < BUILD_EPOCH) if (tv.tv_sec < BUILD_EPOCH) {
{
LOG_WARN("Ignore time (%ld) before build epoch (%ld)!", printableEpoch, BUILD_EPOCH); LOG_WARN("Ignore time (%ld) before build epoch (%ld)!", printableEpoch, BUILD_EPOCH);
return RTCSetResultInvalidTime; return RTCSetResultInvalidTime;
} }
@@ -103,8 +97,7 @@ RTCSetResult readFromRTC()
LOG_DEBUG("Read RTC time from PCF8563 getDateTime as %02d-%02d-%02d %02d:%02d:%02d (%ld)", t.tm_year + 1900, t.tm_mon + 1, LOG_DEBUG("Read RTC time from PCF8563 getDateTime as %02d-%02d-%02d %02d:%02d:%02d (%ld)", t.tm_year + 1900, t.tm_mon + 1,
t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec, printableEpoch); t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec, printableEpoch);
if (currentQuality == RTCQualityNone) if (currentQuality == RTCQualityNone) {
{
timeStartMsec = now; timeStartMsec = now;
zeroOffsetSecs = tv.tv_sec; zeroOffsetSecs = tv.tv_sec;
currentQuality = RTCQualityDevice; currentQuality = RTCQualityDevice;
@@ -112,8 +105,7 @@ RTCSetResult readFromRTC()
return RTCSetResultSuccess; return RTCSetResultSuccess;
} }
#else #else
if (!gettimeofday(&tv, NULL)) if (!gettimeofday(&tv, NULL)) {
{
uint32_t now = millis(); uint32_t now = millis();
uint32_t printableEpoch = tv.tv_sec; // Print lib only supports 32 bit but time_t can be 64 bit on some platforms uint32_t printableEpoch = tv.tv_sec; // Print lib only supports 32 bit but time_t can be 64 bit on some platforms
LOG_DEBUG("Read RTC time as %ld", printableEpoch); LOG_DEBUG("Read RTC time as %ld", printableEpoch);
@@ -140,19 +132,14 @@ RTCSetResult perhapsSetRTC(RTCQuality q, const struct timeval *tv, bool forceUpd
uint32_t now = millis(); uint32_t now = millis();
uint32_t printableEpoch = tv->tv_sec; // Print lib only supports 32 bit but time_t can be 64 bit on some platforms uint32_t printableEpoch = tv->tv_sec; // Print lib only supports 32 bit but time_t can be 64 bit on some platforms
#ifdef BUILD_EPOCH #ifdef BUILD_EPOCH
if (tv->tv_sec < BUILD_EPOCH) if (tv->tv_sec < BUILD_EPOCH) {
{ if (Throttle::isWithinTimespanMs(lastTimeValidationWarning, TIME_VALIDATION_WARNING_INTERVAL_MS) == false) {
if (Throttle::isWithinTimespanMs(lastTimeValidationWarning, TIME_VALIDATION_WARNING_INTERVAL_MS) == false)
{
LOG_WARN("Ignore time (%ld) before build epoch (%ld)!", printableEpoch, BUILD_EPOCH); LOG_WARN("Ignore time (%ld) before build epoch (%ld)!", printableEpoch, BUILD_EPOCH);
lastTimeValidationWarning = millis(); lastTimeValidationWarning = millis();
} }
return RTCSetResultInvalidTime; return RTCSetResultInvalidTime;
} } else if (tv->tv_sec > (time_t)(BUILD_EPOCH + FORTY_YEARS)) {
else if (tv->tv_sec > (time_t)(BUILD_EPOCH + FORTY_YEARS)) if (Throttle::isWithinTimespanMs(lastTimeValidationWarning, TIME_VALIDATION_WARNING_INTERVAL_MS) == false) {
{
if (Throttle::isWithinTimespanMs(lastTimeValidationWarning, TIME_VALIDATION_WARNING_INTERVAL_MS) == false)
{
// Calculate max allowed time safely to avoid overflow in logging // Calculate max allowed time safely to avoid overflow in logging
uint64_t maxAllowedTime = (uint64_t)BUILD_EPOCH + FORTY_YEARS; uint64_t maxAllowedTime = (uint64_t)BUILD_EPOCH + FORTY_YEARS;
uint32_t maxAllowedPrintable = (maxAllowedTime > UINT32_MAX) ? UINT32_MAX : (uint32_t)maxAllowedTime; uint32_t maxAllowedPrintable = (maxAllowedTime > UINT32_MAX) ? UINT32_MAX : (uint32_t)maxAllowedTime;
@@ -165,40 +152,29 @@ RTCSetResult perhapsSetRTC(RTCQuality q, const struct timeval *tv, bool forceUpd
#endif #endif
bool shouldSet; bool shouldSet;
if (forceUpdate) if (forceUpdate) {
{
shouldSet = true; shouldSet = true;
LOG_DEBUG("Override current RTC quality (%s) with incoming time of RTC quality of %s", RtcName(currentQuality), LOG_DEBUG("Override current RTC quality (%s) with incoming time of RTC quality of %s", RtcName(currentQuality),
RtcName(q)); RtcName(q));
} } else if (q > currentQuality) {
else if (q > currentQuality)
{
shouldSet = true; shouldSet = true;
LOG_DEBUG("Upgrade time to quality %s", RtcName(q)); LOG_DEBUG("Upgrade time to quality %s", RtcName(q));
} } else if (q == RTCQualityGPS) {
else if (q == RTCQualityGPS)
{
shouldSet = true; shouldSet = true;
LOG_DEBUG("Reapply GPS time: %ld secs", printableEpoch); LOG_DEBUG("Reapply GPS time: %ld secs", printableEpoch);
} } else if (q == RTCQualityNTP && !Throttle::isWithinTimespanMs(lastSetMsec, (12 * 60 * 60 * 1000UL))) {
else if (q == RTCQualityNTP && !Throttle::isWithinTimespanMs(lastSetMsec, (12 * 60 * 60 * 1000UL)))
{
// Every 12 hrs we will slam in a new NTP or Phone GPS / NTP time, to correct for local RTC clock drift // Every 12 hrs we will slam in a new NTP or Phone GPS / NTP time, to correct for local RTC clock drift
shouldSet = true; shouldSet = true;
LOG_DEBUG("Reapply external time to correct clock drift %ld secs", printableEpoch); LOG_DEBUG("Reapply external time to correct clock drift %ld secs", printableEpoch);
} } else {
else
{
shouldSet = false; shouldSet = false;
LOG_DEBUG("Current RTC quality: %s. Ignore time of RTC quality of %s", RtcName(currentQuality), RtcName(q)); LOG_DEBUG("Current RTC quality: %s. Ignore time of RTC quality of %s", RtcName(currentQuality), RtcName(q));
} }
if (shouldSet) if (shouldSet) {
{
currentQuality = q; currentQuality = q;
lastSetMsec = now; lastSetMsec = now;
if (currentQuality >= RTCQualityNTP) if (currentQuality >= RTCQualityNTP) {
{
lastSetFromPhoneNtpOrGps = now; lastSetFromPhoneNtpOrGps = now;
} }
@@ -207,8 +183,7 @@ RTCSetResult perhapsSetRTC(RTCQuality q, const struct timeval *tv, bool forceUpd
zeroOffsetSecs = tv->tv_sec; zeroOffsetSecs = tv->tv_sec;
// If this platform has a setable RTC, set it // If this platform has a setable RTC, set it
#ifdef RV3028_RTC #ifdef RV3028_RTC
if (rtc_found.address == RV3028_RTC) if (rtc_found.address == RV3028_RTC) {
{
Melopero_RV3028 rtc; Melopero_RV3028 rtc;
#if WIRE_INTERFACES_COUNT == 2 #if WIRE_INTERFACES_COUNT == 2
rtc.initI2C(rtc_found.port == ScanI2C::I2CPort::WIRE1 ? Wire1 : Wire); rtc.initI2C(rtc_found.port == ScanI2C::I2CPort::WIRE1 ? Wire1 : Wire);
@@ -221,8 +196,7 @@ RTCSetResult perhapsSetRTC(RTCQuality q, const struct timeval *tv, bool forceUpd
t->tm_hour, t->tm_min, t->tm_sec, printableEpoch); t->tm_hour, t->tm_min, t->tm_sec, printableEpoch);
} }
#elif defined(PCF8563_RTC) #elif defined(PCF8563_RTC)
if (rtc_found.address == PCF8563_RTC) if (rtc_found.address == PCF8563_RTC) {
{
PCF8563_Class rtc; PCF8563_Class rtc;
#if WIRE_INTERFACES_COUNT == 2 #if WIRE_INTERFACES_COUNT == 2
@@ -245,17 +219,14 @@ RTCSetResult perhapsSetRTC(RTCQuality q, const struct timeval *tv, bool forceUpd
#endif #endif
return RTCSetResultSuccess; return RTCSetResultSuccess;
} } else {
else
{
return RTCSetResultNotSet; // RTC was already set with a higher quality time return RTCSetResultNotSet; // RTC was already set with a higher quality time
} }
} }
const char *RtcName(RTCQuality quality) const char *RtcName(RTCQuality quality)
{ {
switch (quality) switch (quality) {
{
case RTCQualityNone: case RTCQualityNone:
return "None"; return "None";
case RTCQualityDevice: case RTCQualityDevice:
@@ -292,13 +263,10 @@ RTCSetResult perhapsSetRTC(RTCQuality q, struct tm &t)
tv.tv_usec = 0; // time.centisecond() * (10 / 1000); tv.tv_usec = 0; // time.centisecond() * (10 / 1000);
uint32_t printableEpoch = tv.tv_sec; // Print lib only supports 32 bit but time_t can be 64 bit on some platforms uint32_t printableEpoch = tv.tv_sec; // Print lib only supports 32 bit but time_t can be 64 bit on some platforms
#ifdef BUILD_EPOCH #ifdef BUILD_EPOCH
if (tv.tv_sec < BUILD_EPOCH) if (tv.tv_sec < BUILD_EPOCH) {
{
LOG_WARN("Ignore time (%ld) before build epoch (%ld)!", printableEpoch, BUILD_EPOCH); LOG_WARN("Ignore time (%ld) before build epoch (%ld)!", printableEpoch, BUILD_EPOCH);
return RTCSetResultInvalidTime; return RTCSetResultInvalidTime;
} } else if (tv.tv_sec > (BUILD_EPOCH + FORTY_YEARS)) {
else if (tv.tv_sec > (BUILD_EPOCH + FORTY_YEARS))
{
LOG_WARN("Ignore time (%ld) too far in the future (build epoch: %ld, max allowed: %ld)!", printableEpoch, BUILD_EPOCH, LOG_WARN("Ignore time (%ld) too far in the future (build epoch: %ld, max allowed: %ld)!", printableEpoch, BUILD_EPOCH,
BUILD_EPOCH + FORTY_YEARS); BUILD_EPOCH + FORTY_YEARS);
return RTCSetResultInvalidTime; return RTCSetResultInvalidTime;
@@ -306,13 +274,10 @@ RTCSetResult perhapsSetRTC(RTCQuality q, struct tm &t)
#endif #endif
// LOG_DEBUG("Got time from GPS month=%d, year=%d, unixtime=%ld", t.tm_mon, t.tm_year, tv.tv_sec); // LOG_DEBUG("Got time from GPS month=%d, year=%d, unixtime=%ld", t.tm_mon, t.tm_year, tv.tv_sec);
if (t.tm_year < 0 || t.tm_year >= 300) if (t.tm_year < 0 || t.tm_year >= 300) {
{
// LOG_DEBUG("Ignore invalid GPS month=%d, year=%d, unixtime=%ld", t.tm_mon, t.tm_year, tv.tv_sec); // LOG_DEBUG("Ignore invalid GPS month=%d, year=%d, unixtime=%ld", t.tm_mon, t.tm_year, tv.tv_sec);
return RTCSetResultInvalidTime; return RTCSetResultInvalidTime;
} } else {
else
{
return perhapsSetRTC(q, &tv); return perhapsSetRTC(q, &tv);
} }
} }
@@ -342,12 +307,9 @@ int32_t getTZOffset()
*/ */
uint32_t getTime(bool local) uint32_t getTime(bool local)
{ {
if (local) if (local) {
{
return (((uint32_t)millis() - timeStartMsec) / 1000) + zeroOffsetSecs + getTZOffset(); return (((uint32_t)millis() - timeStartMsec) / 1000) + zeroOffsetSecs + getTZOffset();
} } else {
else
{
return (((uint32_t)millis() - timeStartMsec) / 1000) + zeroOffsetSecs; return (((uint32_t)millis() - timeStartMsec) / 1000) + zeroOffsetSecs;
} }
} }
@@ -368,12 +330,9 @@ time_t gm_mktime(struct tm *tm)
#if !MESHTASTIC_EXCLUDE_TZ #if !MESHTASTIC_EXCLUDE_TZ
setenv("TZ", "GMT0", 1); setenv("TZ", "GMT0", 1);
time_t res = mktime(tm); time_t res = mktime(tm);
if (*config.device.tzdef) if (*config.device.tzdef) {
{
setenv("TZ", config.device.tzdef, 1); setenv("TZ", config.device.tzdef, 1);
} } else {
else
{
setenv("TZ", "UTC0", 1); setenv("TZ", "UTC0", 1);
} }
return res; return res;