refclock_phc: add nocrossts option

This commit is contained in:
Miroslav Lichvar 2017-01-19 16:28:49 +01:00
parent 50f99ec5f4
commit a60fc73e7b
2 changed files with 8 additions and 5 deletions

View file

@ -402,9 +402,10 @@ refclock SOCK /var/run/chrony.ttyS0.sock
*PHC*:::
PTP hardware clock (PHC) driver. The parameter is the path to the device of
the PTP clock, which for example can be synchronised by *ptp4l* from
http://linuxptp.sourceforge.net[*linuxptp*]. PTP clocks are typically kept in
TAI instead of UTC, so the *offset* option should be used to compensate for the
current UTC-TAI offset. For example:
http://linuxptp.sourceforge.net[*linuxptp*]. String *:nocrossts* can be
appended to the path to disable use of precise cross timestamping. PTP clocks
are typically kept in TAI instead of UTC, so the *offset* option should be used
to compensate for the current UTC-TAI offset. For example:
+
----
refclock PHC /dev/ptp0 poll 3 dpoll -2 offset -36

View file

@ -42,6 +42,7 @@
struct phc_instance {
int fd;
int mode;
int nocrossts;
};
static int phc_initialise(RCL_Instance instance)
@ -61,6 +62,7 @@ static int phc_initialise(RCL_Instance instance)
phc = MallocNew(struct phc_instance);
phc->fd = phc_fd;
phc->mode = 0;
phc->nocrossts = RCL_GetDriverOption(instance, "nocrossts") ? 1 : 0;
RCL_SetDriverData(instance, phc);
return 1;
@ -83,8 +85,8 @@ static int phc_poll(RCL_Instance instance)
phc = (struct phc_instance *)RCL_GetDriverData(instance);
if (!SYS_Linux_GetPHCSample(phc->fd, 0, RCL_GetPrecision(instance), &phc->mode,
&phc_ts, &sys_ts, &err))
if (!SYS_Linux_GetPHCSample(phc->fd, phc->nocrossts, RCL_GetPrecision(instance),
&phc->mode, &phc_ts, &sys_ts, &err))
return 0;
offset = UTI_DiffTimespecsToDouble(&phc_ts, &sys_ts);