return 1;
}
-static double
-poll_interval(int poll)
-{
- if (poll >= 0)
- return 1 << poll;
- else
- return 1.0 / (1 << -poll);
-}
-
static int
valid_sample_time(RCL_Instance instance, struct timeval *tv)
{
LCL_ReadRawTime(&raw_time);
UTI_DiffTimevalsToDouble(&diff, &raw_time, tv);
- if (diff < 0.0 || diff > poll_interval(instance->poll + 1)) {
+ if (diff < 0.0 || diff > UTI_Log2ToDouble(instance->poll + 1)) {
DEBUG_LOG(LOGF_Refclock, "%s refclock sample not valid age=%.6f tv=%s",
UTI_RefidToString(instance->ref_id), diff, UTI_TimevalToString(tv));
return 0;
}
}
- inst->timeout_id = SCH_AddTimeoutByDelay(poll_interval(poll), poll_timeout, arg);
+ inst->timeout_id = SCH_AddTimeoutByDelay(UTI_Log2ToDouble(poll), poll_timeout, arg);
}
static void
/* ================================================== */
+double
+UTI_Log2ToDouble(int l)
+{
+ if (l >= 0) {
+ if (l > 31)
+ l = 31;
+ return 1 << l;
+ } else {
+ if (l < -31)
+ l = -31;
+ return 1.0 / (1 << -l);
+ }
+}
+
+/* ================================================== */
+
void
UTI_TimevalNetworkToHost(Timeval *src, struct timeval *dest)
{
/* Check if time + offset is sane */
extern int UTI_IsTimeOffsetSane(struct timeval *tv, double offset);
+/* Get 2 raised to power of a signed integer */
+extern double UTI_Log2ToDouble(int l);
+
extern void UTI_TimevalNetworkToHost(Timeval *src, struct timeval *dest);
extern void UTI_TimevalHostToNetwork(struct timeval *src, Timeval *dest);