diff --git a/chrony.texi b/chrony.texi index 3629d35..90bb260 100644 --- a/chrony.texi +++ b/chrony.texi @@ -2176,9 +2176,10 @@ Software that can be used as a source of timestamps includes @item SOCK Unix domain socket driver. The parameter is a path to the socket which is used as the source of timestamps. This is as a better -alternative to SHM, it does not require polling and the offset -resolution is not limited to microsecond. The format for messages -sent over the socket is declared in file @code{refclock_sock.c}. +alternative to SHM, it does not require polling, the offset +resolution is not limited to microsecond and it supports PPS. +The format for messages sent over the socket is declared in file +@code{refclock_sock.c}. @end table The @code{refclock} command also supports a number of subfields (which diff --git a/refclock_sock.c b/refclock_sock.c index c141010..91dbbc9 100644 --- a/refclock_sock.c +++ b/refclock_sock.c @@ -38,6 +38,7 @@ struct sock_sample { struct timeval tv; double offset; + int pulse; int leap; }; @@ -53,7 +54,11 @@ static void read_sample(void *anything) if (recv(sockfd, &sample, sizeof (sample), 0) != sizeof (sample)) return; - RCL_AddSample(instance, &sample.tv, sample.offset, sample.leap); + if (sample.pulse) { + RCL_AddPulse(instance, &sample.tv, sample.offset); + } else { + RCL_AddSample(instance, &sample.tv, sample.offset, sample.leap); + } } static int sock_initialise(RCL_Instance instance)