Blame clknetsim-3f5ef9eb72d2182fab4ea06ad42f6f3e9dc802f5/clock.h

Packit Service 623930
/*
Packit Service 623930
 * Copyright (C) 2010  Miroslav Lichvar <mlichvar@redhat.com>
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 the GNU General Public License as published by
Packit Service 623930
 * the Free Software Foundation; either version 2 of the License, or
Packit Service 623930
 * (at your option) any later version.
Packit Service 623930
 * 
Packit Service 623930
 * This program is distributed in the hope that it will be useful,
Packit Service 623930
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 623930
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service 623930
 * GNU General Public License for more details.
Packit Service 623930
 * 
Packit Service 623930
 * You should have received a copy of the GNU General Public License
Packit Service 623930
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
Packit Service 623930
 */
Packit Service 623930
Packit Service 623930
#ifndef CLOCK_H
Packit Service 623930
#define CLOCK_H
Packit Service 623930
Packit Service 623930
#include "sysheaders.h"
Packit Service 623930
Packit Service 623930
#include "generator.h"
Packit Service 623930
Packit Service 623930
#define CLOCK_NTP_FLL_MODE2 0x1
Packit Service 623930
#define CLOCK_NTP_PLL_CLAMP 0x2
Packit Service 623930
Packit Service 623930
class Clock {
Packit Service 623930
	double time;
Packit Service 623930
	double mono_time;
Packit Service 623930
	double freq;
Packit Service 623930
Packit Service 623930
	Generator *freq_generator;
Packit Service 623930
	Generator *step_generator;
Packit Service 623930
Packit Service 623930
	long base_tick;
Packit Service 623930
Packit Service 623930
	struct timex ntp_timex;
Packit Service 623930
	int ntp_state;
Packit Service 623930
	int ntp_shift_pll;
Packit Service 623930
	int ntp_flags;
Packit Service 623930
	long ntp_update_interval;
Packit Service 623930
	double ntp_offset;
Packit Service 623930
	double ntp_slew;
Packit Service 623930
Packit Service 623930
	long ss_offset;
Packit Service 623930
	long ss_slew;
Packit Service 623930
Packit Service 623930
public:
Packit Service 623930
	Clock();
Packit Service 623930
	~Clock();
Packit Service 623930
	double get_real_time() const;
Packit Service 623930
	double get_monotonic_time() const;
Packit Service 623930
	double get_total_freq() const;
Packit Service 623930
	double get_raw_freq() const;
Packit Service 623930
	double get_true_interval(double local_interval) const;
Packit Service 623930
	double get_local_interval(double true_interval) const;
Packit Service 623930
Packit Service 623930
	void set_freq_generator(Generator *gen);
Packit Service 623930
	void set_step_generator(Generator *gen);
Packit Service 623930
	void set_freq(double freq);
Packit Service 623930
	void set_time(double time);
Packit Service 623930
	void step_time(double step);
Packit Service 623930
	void set_ntp_shift_pll(int shift);
Packit Service 623930
	void set_ntp_flag(int enable, int flag);
Packit Service 623930
Packit Service 623930
	void advance(double real_interval);
Packit Service 623930
	void update(bool second);
Packit Service 623930
Packit Service 623930
	void update_ntp_offset(long offset);
Packit Service 623930
	int adjtimex(struct timex *buf);
Packit Service 623930
	int adjtime(const struct timeval *delta, struct timeval *olddelta);
Packit Service 623930
};
Packit Service 623930
Packit Service 623930
class Refclock {
Packit Service 623930
	double time;
Packit Service 623930
	double offset;
Packit Service 623930
	bool generate;
Packit Service 623930
	bool valid;
Packit Service 623930
Packit Service 623930
	Generator *offset_generator;
Packit Service 623930
public:
Packit Service 623930
	Refclock();
Packit Service 623930
	~Refclock();
Packit Service 623930
	void set_offset_generator(Generator *gen);
Packit Service 623930
	void update(double time, const Clock *clock);
Packit Service 623930
	void set_generation(bool enable);
Packit Service 623930
	bool get_sample(double *time, double *offset) const;
Packit Service 623930
	void get_offsets(double *offsets, int size);
Packit Service 623930
};
Packit Service 623930
Packit Service 623930
#endif