Blame reference.h

Packit Service 623930
/*
Packit Service 623930
  chronyd/chronyc - Programs for keeping computer clocks accurate.
Packit Service 623930
Packit Service 623930
 **********************************************************************
Packit Service 623930
 * Copyright (C) Richard P. Curnow  1997-2002
Packit Service 623930
 * Copyright (C) Miroslav Lichvar  2014
Packit Service 623930
 * 
Packit Service 623930
 * This program is free software; you can redistribute it and/or modify
Packit Service 623930
 * it under the terms of version 2 of the GNU General Public License as
Packit Service 623930
 * published by the Free Software Foundation.
Packit Service 623930
 * 
Packit Service 623930
 * This program is distributed in the hope that it will be useful, but
Packit Service 623930
 * WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 623930
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service 623930
 * General Public License for more details.
Packit Service 623930
 * 
Packit Service 623930
 * You should have received a copy of the GNU General Public License along
Packit Service 623930
 * with this program; if not, write to the Free Software Foundation, Inc.,
Packit Service 623930
 * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
Packit Service 623930
 * 
Packit Service 623930
 **********************************************************************
Packit Service 623930
Packit Service 623930
  =======================================================================
Packit Service 623930
Packit Service 623930
  This is the header file for the module that keeps track of the current
Packit Service 623930
  reference.
Packit Service 623930
Packit Service 623930
  */
Packit Service 623930
Packit Service 623930
#ifndef GOT_REFERENCE_H
Packit Service 623930
#define GOT_REFERENCE_H
Packit Service 623930
Packit Service 623930
#include "sysincl.h"
Packit Service 623930
Packit Service 623930
#include "ntp.h"
Packit Service 623930
#include "reports.h"
Packit Service 623930
Packit Service 623930
/* Leap second handling modes */
Packit Service 623930
typedef enum {
Packit Service 623930
  REF_LeapModeSystem,
Packit Service 623930
  REF_LeapModeSlew,
Packit Service 623930
  REF_LeapModeStep,
Packit Service 623930
  REF_LeapModeIgnore,
Packit Service 623930
} REF_LeapMode;
Packit Service 623930
Packit Service 623930
/* Init function */
Packit Service 623930
extern void REF_Initialise(void);
Packit Service 623930
Packit Service 623930
/* Fini function */
Packit Service 623930
extern void REF_Finalise(void);
Packit Service 623930
Packit Service 623930
typedef enum {
Packit Service 623930
  REF_ModeNormal,
Packit Service 623930
  REF_ModeInitStepSlew,
Packit Service 623930
  REF_ModeUpdateOnce,
Packit Service 623930
  REF_ModePrintOnce,
Packit Service 623930
  REF_ModeIgnore,
Packit Service 623930
} REF_Mode;
Packit Service 623930
Packit Service 623930
/* Set reference update mode */
Packit Service 623930
extern void REF_SetMode(REF_Mode mode);
Packit Service 623930
Packit Service 623930
/* Get reference update mode */
Packit Service 623930
extern REF_Mode REF_GetMode(void);
Packit Service 623930
Packit Service 623930
/* Function type for handlers to be called back when mode ends */
Packit Service 623930
typedef void (*REF_ModeEndHandler)(int result);
Packit Service 623930
Packit Service 623930
/* Set the handler for being notified of mode ending */
Packit Service 623930
extern void REF_SetModeEndHandler(REF_ModeEndHandler handler);
Packit Service 623930
Packit Service 623930
/* Get leap second handling mode */
Packit Service 623930
extern REF_LeapMode REF_GetLeapMode(void);
Packit Service 623930
Packit Service 623930
/* Function which takes a local cooked time and returns the estimated
Packit Service 623930
   time of the reference.  It also returns the other parameters
Packit Service 623930
   required for forming the outgoing NTP packet.
Packit Service 623930
Packit Service 623930
   local_time is the cooked local time returned by the LCL module
Packit Service 623930
Packit Service 623930
   is_synchronised indicates whether we are synchronised to anything
Packit Service 623930
   at the moment.
Packit Service 623930
Packit Service 623930
   leap indicates the current leap status
Packit Service 623930
Packit Service 623930
   stratum is the stratum of this machine, when considered to be sync'd to the
Packit Service 623930
   reference
Packit Service 623930
   
Packit Service 623930
   ref_id is the reference_id of the source
Packit Service 623930
Packit Service 623930
   ref_time is the time at which the we last set the reference source up
Packit Service 623930
Packit Service 623930
   root_delay is the root delay of the sample we are using
Packit Service 623930
Packit Service 623930
   root_dispersion is the root dispersion of the sample we are using, with all the
Packit Service 623930
   skew etc added on.
Packit Service 623930
Packit Service 623930
   */
Packit Service 623930
Packit Service 623930
extern void REF_GetReferenceParams
Packit Service 623930
(
Packit Service 623930
 struct timespec *local_time,
Packit Service 623930
 int *is_synchronised,
Packit Service 623930
 NTP_Leap *leap,
Packit Service 623930
 int *stratum,
Packit Service 623930
 uint32_t *ref_id,
Packit Service 623930
 struct timespec *ref_time,
Packit Service 623930
 double *root_delay,
Packit Service 623930
 double *root_dispersion
Packit Service 623930
);
Packit Service 623930
Packit Service 623930
/* Function called by the clock selection process to register a new
Packit Service 623930
   reference source and its parameters
Packit Service 623930
Packit Service 623930
   stratum is the stratum of the reference
Packit Service 623930
Packit Service 623930
   leap is the leap status read from the source
Packit Service 623930
Packit Service 623930
   ref_id is the reference id of the reference
Packit Service 623930
Packit Service 623930
   ref_time is the time at which the parameters are assumed to be
Packit Service 623930
   correct, in terms of local time
Packit Service 623930
Packit Service 623930
   frequency is the amount of local clock gain relative to the
Packit Service 623930
   reference per unit time interval of the local clock
Packit Service 623930
Packit Service 623930
   skew is the maximum estimated frequency error (so we are within
Packit Service 623930
   [frequency+-skew])
Packit Service 623930
Packit Service 623930
   root_delay is the root delay of the sample we are using
Packit Service 623930
Packit Service 623930
   root_dispersion is the root dispersion of the sample we are using
Packit Service 623930
Packit Service 623930
   */
Packit Service 623930
Packit Service 623930
extern void REF_SetReference
Packit Service 623930
(
Packit Service 623930
 int stratum,
Packit Service 623930
 NTP_Leap leap,
Packit Service 623930
 int combined_sources,
Packit Service 623930
 uint32_t ref_id,
Packit Service 623930
 IPAddr *ref_ip,
Packit Service 623930
 struct timespec *ref_time,
Packit Service 623930
 double offset,
Packit Service 623930
 double offset_sd,
Packit Service 623930
 double frequency,
Packit Service 623930
 double frequency_sd,
Packit Service 623930
 double skew,
Packit Service 623930
 double root_delay,
Packit Service 623930
 double root_dispersion
Packit Service 623930
);
Packit Service 623930
Packit Service 623930
extern void REF_SetManualReference
Packit Service 623930
(
Packit Service 623930
 struct timespec *ref_time,
Packit Service 623930
 double offset,
Packit Service 623930
 double frequency,
Packit Service 623930
 double skew
Packit Service 623930
);
Packit Service 623930
Packit Service 623930
/* Mark the local clock as unsynchronised */
Packit Service 623930
extern void
Packit Service 623930
REF_SetUnsynchronised(void);
Packit Service 623930
Packit Service 623930
/* Return the current stratum of this host or 16 if the host is not
Packit Service 623930
   synchronised */
Packit Service 623930
extern int REF_GetOurStratum(void);
Packit Service 623930
Packit Service 623930
/* Return stratum of the local reference if orphan mode is enabled */
Packit Service 623930
extern int REF_GetOrphanStratum(void);
Packit Service 623930
Packit Service 623930
/* Return the current skew */
Packit Service 623930
extern double REF_GetSkew(void);
Packit Service 623930
Packit Service 623930
/* Modify the setting for the maximum skew we are prepared to allow updates on (in ppm). */
Packit Service 623930
extern void REF_ModifyMaxupdateskew(double new_max_update_skew);
Packit Service 623930
Packit Service 623930
/* Modify makestep settings */
Packit Service 623930
extern void REF_ModifyMakestep(int limit, double threshold);
Packit Service 623930
Packit Service 623930
extern void REF_EnableLocal(int stratum, double distance, int orphan);
Packit Service 623930
extern void REF_DisableLocal(void);
Packit Service 623930
Packit Service 623930
/* Check if current raw or cooked time is close to a leap second
Packit Service 623930
   and is better to discard any measurements */
Packit Service 623930
extern int REF_IsLeapSecondClose(void);
Packit Service 623930
Packit Service 623930
/* Return TAI-UTC offset corresponding to a time in UTC if available */
Packit Service 623930
extern int REF_GetTaiOffset(struct timespec *ts);
Packit Service 623930
Packit Service 623930
extern void REF_GetTrackingReport(RPT_TrackingReport *rep);
Packit Service 623930
Packit Service 623930
#endif /* GOT_REFERENCE_H */