prevent time jumps in NTP client

This commit is contained in:
2018-05-03 09:55:29 +02:00
parent ccbaf557a0
commit 06a330ccf8

View File

@@ -177,6 +177,19 @@ static void NTPTimeSync(void *dummy)
continue;
}
if (ntpDelta > 3600 && NTPTimePvt.synchronized) {
char nowTimeText[32];
char ntpTimeText[32];
epicsTimeToStrftime(ntpTimeText,sizeof(nowTimeText),"%Y-%m-%d %H:%M:%S.%09f",
&NTPTimePvt.syncTime);
epicsTimeToStrftime(ntpTimeText,sizeof(ntpTimeText),"%Y-%m-%d %H:%M:%S.%09f",
&timeNow);
errlogPrintf("NTPTimeSync: refuse to jump from %s to future %s (timespec: %li.%09li)\n",
nowTimeText, ntpTimeText, timespecNow.tv_sec, timespecNow.tv_nsec);
NTPTimePvt.synchronized = 0;
continue;
}
NTPTimePvt.syncsFailed = 0;
if (!NTPTimePvt.synchronized) {
errlogPrintf("NTPTimeSync: Sync recovered.\n");
@@ -274,6 +287,8 @@ int NTPTime_Report(int level)
osdTickRateGet());
printf("Measured tick rate = %.3f Hz\n",
NTPTimePvt.tickRate);
printf("Ticks to skip = %d ticks\n",
NTPTimePvt.ticksToSkip);
osdNTPReport();
}
} else {