Blame refclock.h

Packit 96c956
/*
Packit 96c956
  chronyd/chronyc - Programs for keeping computer clocks accurate.
Packit 96c956
Packit 96c956
 **********************************************************************
Packit 96c956
 * Copyright (C) Miroslav Lichvar  2009
Packit 96c956
 * 
Packit 96c956
 * This program is free software; you can redistribute it and/or modify
Packit 96c956
 * it under the terms of version 2 of the GNU General Public License as
Packit 96c956
 * published by the Free Software Foundation.
Packit 96c956
 * 
Packit 96c956
 * This program is distributed in the hope that it will be useful, but
Packit 96c956
 * WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 96c956
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit 96c956
 * General Public License for more details.
Packit 96c956
 * 
Packit 96c956
 * You should have received a copy of the GNU General Public License along
Packit 96c956
 * with this program; if not, write to the Free Software Foundation, Inc.,
Packit 96c956
 * 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
Packit 96c956
 * 
Packit 96c956
 **********************************************************************
Packit 96c956
Packit 96c956
  =======================================================================
Packit 96c956
Packit 96c956
  Header file for refclocks.
Packit 96c956
Packit 96c956
  */
Packit 96c956
Packit 96c956
#ifndef GOT_REFCLOCK_H
Packit 96c956
#define GOT_REFCLOCK_H
Packit 96c956
Packit 96c956
#include "srcparams.h"
Packit 96c956
#include "sources.h"
Packit 96c956
Packit 96c956
typedef struct {
Packit 96c956
  char *driver_name;
Packit 96c956
  char *driver_parameter;
Packit 96c956
  int driver_poll;
Packit 96c956
  int poll;
Packit 96c956
  int filter_length;
Packit 96c956
  int pps_forced;
Packit 96c956
  int pps_rate;
Packit 96c956
  int min_samples;
Packit 96c956
  int max_samples;
Packit 96c956
  int sel_options;
Packit 96c956
  int max_lock_age;
Packit 96c956
  int stratum;
Packit 96c956
  int tai;
Packit 96c956
  uint32_t ref_id;
Packit 96c956
  uint32_t lock_ref_id;
Packit 96c956
  double offset;
Packit 96c956
  double delay;
Packit 96c956
  double precision;
Packit 96c956
  double max_dispersion;
Packit 96c956
  double pulse_width;
Packit 96c956
} RefclockParameters;
Packit 96c956
Packit 96c956
typedef struct RCL_Instance_Record *RCL_Instance;
Packit 96c956
Packit 96c956
typedef struct {
Packit 96c956
  int (*init)(RCL_Instance instance);
Packit 96c956
  void (*fini)(RCL_Instance instance);
Packit 96c956
  int (*poll)(RCL_Instance instance);
Packit 96c956
} RefclockDriver;
Packit 96c956
Packit 96c956
extern void RCL_Initialise(void);
Packit 96c956
extern void RCL_Finalise(void);
Packit 96c956
extern int RCL_AddRefclock(RefclockParameters *params);
Packit 96c956
extern void RCL_StartRefclocks(void);
Packit 96c956
extern void RCL_ReportSource(RPT_SourceReport *report, struct timespec *now);
Packit 96c956
Packit 96c956
/* functions used by drivers */
Packit 96c956
extern void RCL_SetDriverData(RCL_Instance instance, void *data);
Packit 96c956
extern void *RCL_GetDriverData(RCL_Instance instance);
Packit 96c956
extern char *RCL_GetDriverParameter(RCL_Instance instance);
Packit 96c956
extern void RCL_CheckDriverOptions(RCL_Instance instance, const char **options);
Packit 96c956
extern char *RCL_GetDriverOption(RCL_Instance instance, char *name);
Packit 96c956
extern int RCL_AddSample(RCL_Instance instance, struct timespec *sample_time, double offset, int leap);
Packit 96c956
extern int RCL_AddPulse(RCL_Instance instance, struct timespec *pulse_time, double second);
Packit 96c956
extern int RCL_AddCookedPulse(RCL_Instance instance, struct timespec *cooked_time,
Packit 96c956
                              double second, double dispersion, double raw_correction);
Packit 96c956
extern double RCL_GetPrecision(RCL_Instance instance);
Packit 96c956
extern int RCL_GetDriverPoll(RCL_Instance instance);
Packit 96c956
Packit 96c956
#endif