source selection or to make it prefer other sources. The default is 1e-9 (1
nanosecond).
*precision* _precision_:::
-This option sets the refclock precision (in seconds). The default is 1e-6 (1
-microsecond) for SHM refclock, and 1e-9 (1 nanosecond) for SOCK, PPS and PHC
-refclocks.
+This option sets the precision of the reference clock (in seconds). The default
+value is the estimated precision of the system clock.
*maxdispersion* _dispersion_:::
Maximum allowed dispersion for filtered samples (in seconds). Samples with
larger estimated dispersion are ignored. By default, this limit is disabled.
if (strcmp(params->driver_name, "SHM") == 0) {
inst->driver = &RCL_SHM_driver;
- inst->precision = 1e-6;
} else if (strcmp(params->driver_name, "SOCK") == 0) {
inst->driver = &RCL_SOCK_driver;
- inst->precision = 1e-9;
} else if (strcmp(params->driver_name, "PPS") == 0) {
inst->driver = &RCL_PPS_driver;
- inst->precision = 1e-9;
} else if (strcmp(params->driver_name, "PHC") == 0) {
inst->driver = &RCL_PHC_driver;
- inst->precision = 1e-9;
} else {
LOG_FATAL("unknown refclock driver %s", params->driver_name);
return 0;
inst->lock_ref = params->lock_ref_id;
inst->offset = params->offset;
inst->delay = params->delay;
- if (params->precision > 0.0)
- inst->precision = params->precision;
+ inst->precision = LCL_GetSysPrecisionAsQuantum();
+ inst->precision = MAX(inst->precision, params->precision);
inst->pulse_width = params->pulse_width;
inst->timeout_id = -1;
inst->source = NULL;