prevent time jumps in NTP client
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user