PPS-Client
2.0.0
Client for synchronizing the system clock to a GPS PPS source
|
This file contains includes, defines and structures for PPS-Client. More...
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#include <pthread.h>
#include <signal.h>
#include <string.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/timex.h>
#include <sys/time.h>
#include <math.h>
#include <sys/types.h>
#include <errno.h>
#include <poll.h>
#include <sys/mman.h>
#include "timepps.h"
#include <inttypes.h>
Go to the source code of this file.
Classes | |
struct | timeCheckParams |
struct | G |
Struct for program-wide global variables showing those important to the controller. More... | |
Macros | |
#define | USECS_PER_SEC 1000000 |
#define | SECS_PER_MINUTE 60 |
#define | SECS_PER_5_MIN 300 |
#define | SECS_PER_10_MIN 600 |
#define | SECS_PER_HOUR 3600 |
#define | SECS_PER_DAY 86400 |
#define | NUM_5_MIN_INTERVALS 288 |
Number of five minute intervals in 24 hours. More... | |
#define | FIVE_MINUTES 5 |
#define | PER_MINUTE (1.0 / (double)SECS_PER_MINUTE) |
#define | SETTLE_TIME (2 * SECS_PER_10_MIN) |
The PPS-Client up time required before saving performance data. More... | |
#define | INV_GAIN_1 1 |
Controller inverse proportional gain constant during active controller operation. More... | |
#define | INV_GAIN_0 4 |
Controller inverse proportional gain constant at startup. More... | |
#define | INTEGRAL_GAIN 0.63212 |
Controller integral gain constant in active controller operation. More... | |
#define | FREQDIFF_INTRVL 5 |
The number of minutes between Allan deviation samples of system clock frequency correction. More... | |
#define | PPS_WINDOW 500 |
WaitForPPS delay loop time window in which to look for a PPS. More... | |
#define | PTHREAD_STACK_REQUIRED 16384 |
Stack space requirements for threads. More... | |
#define | ZERO_OFFSET_RPI3 8 |
#define | ZERO_OFFSET_RPI4 4 |
#define | OFFSETFIFO_LEN 80 |
Length of G.correctionFifo which contains the data used to generate G.avgCorrection. More... | |
#define | NUM_INTEGRALS 10 |
Number of integrals used by makeAverageIntegral() to calculate the one minute clock frequency correction. More... | |
#define | PER_NUM_INTEGRALS (1.0 / (double)NUM_INTEGRALS) |
Inverse of NUM_INTEGRALS. More... | |
#define | ADJTIMEX_SCALE 65536.0 |
Frequency scaling required by adjtimex(). More... | |
#define | RAW_ERROR_ZERO 20 |
Index corresponding to rawError == 0 in buildRawErrorDistrib(). More... | |
#define | RAW_ERROR_DECAY 0.98851 |
Decay rate for G.rawError samples (1 hour half life) More... | |
#define | INTERRUPT_LOST 15 |
Number of consecutive lost interrupts at which a warning starts. More... | |
#define | MAX_SERVERS 4 |
Maximum number of NIST time servers to use. More... | |
#define | CHECK_TIME 1024 |
Interval between Internet time checks (about 17 minutes) More... | |
#define | BLOCK_FOR_10 10 |
Blocks detection of external system clock changes for 10 seconds. More... | |
#define | BLOCK_FOR_3 3 |
Blocks detection of external system clock changes for 3 seconds. More... | |
#define | CHECK_TIME_SERIAL 10 |
Interval between serial port time checks (10 seconds) More... | |
#define | MAX_SPIKES 60 |
Maximum microseconds to suppress a burst of continuous positive jitter. More... | |
#define | MAX_SPIKE_LEVEL 1000000 |
An initialization value for G.minSustainedDelay. More... | |
#define | CLK_CHANGED_LEVEL 1000 |
#define | LARGE_SPIKE 80 |
Level above which spikes are are disruptive. More... | |
#define | NOISE_ACCUM_RATE 0.1 |
Sets the rate at which G.noiseLevel adjusts to G.rawError. More... | |
#define | NOISE_LEVEL_MIN 4 |
The minimum level at which interrupt delays are delay spikes. More... | |
#define | SLEW_LEN 10 |
The slew accumulator (slewAccum) update interval. More... | |
#define | SLEW_MAX 300 |
Jitter slew value below which the controller will begin to frequency lock. More... | |
#define | MAX_LINE_LEN 50 |
#define | STRBUF_SZ 1000 |
#define | LOGBUF_SZ 1000 |
#define | MSGBUF_SZ 1000 |
#define | NIST_MSG_SZ 200 |
#define | CONFIG_FILE_SZ 10000 |
#define | NUM_PARAMS 5 |
#define | ERROR_DISTRIB_LEN 121 |
#define | JITTER_DISTRIB_LEN 181 |
#define | INTRPT_DISTRIB_LEN 121 |
#define | HARD_LIMIT_NONE 32768 |
#define | HARD_LIMIT_1024 1024 |
#define | HARD_LIMIT_4 4 |
#define | HARD_LIMIT_1 1 |
#define | HIGH 1 |
#define | LOW 0 |
#define | MAX_CONFIGS 32 |
#define | ERROR_DISTRIB 1 |
#define | ALERT_PPS_LOST 2 |
#define | JITTER_DISTRIB 4 |
#define | EXIT_LOST_PPS 8 |
#define | PPS_GPIO 16 |
#define | OUTPUT_GPIO 32 |
#define | INTRPT_GPIO 64 |
#define | NIST 128 |
#define | SERIAL 256 |
#define | SERIAL_PORT 512 |
#define | EXECDIR 1024 |
#define | SERVICEDIR 2048 |
#define | CONFIGDIR 4096 |
#define | DOCDIR 8192 |
#define | RUNDIR 16384 |
#define | SHMDIR 32768 |
#define | TSTDIR 65536 |
#define | LOGDIR 131072 |
#define | PPSDELAY 262144 |
#define | MODULEDIR 524288 |
#define | PPSDEVICE 1048576 |
#define | PPSPHASE 2097152 |
#define | PROCDIR 4194304 |
#define | SEGREGATE 8388608 |
This file contains includes, defines and structures for PPS-Client.
v2.0.0 updated on 27 Mar 2020
Definition in file pps-client.h.
#define ADJTIMEX_SCALE 65536.0 |
Frequency scaling required by adjtimex().
Definition at line 72 of file pps-client.h.
#define ALERT_PPS_LOST 2 |
Definition at line 118 of file pps-client.h.
#define BLOCK_FOR_10 10 |
Blocks detection of external system clock changes for 10 seconds.
Definition at line 81 of file pps-client.h.
#define BLOCK_FOR_3 3 |
Blocks detection of external system clock changes for 3 seconds.
Definition at line 82 of file pps-client.h.
#define CHECK_TIME 1024 |
Interval between Internet time checks (about 17 minutes)
Definition at line 80 of file pps-client.h.
#define CHECK_TIME_SERIAL 10 |
Interval between serial port time checks (10 seconds)
Definition at line 83 of file pps-client.h.
#define CLK_CHANGED_LEVEL 1000 |
Definition at line 87 of file pps-client.h.
#define CONFIG_FILE_SZ 10000 |
Definition at line 100 of file pps-client.h.
#define CONFIGDIR 4096 |
Definition at line 129 of file pps-client.h.
#define DOCDIR 8192 |
Definition at line 130 of file pps-client.h.
#define ERROR_DISTRIB 1 |
Definition at line 117 of file pps-client.h.
#define ERROR_DISTRIB_LEN 121 |
Definition at line 103 of file pps-client.h.
#define EXECDIR 1024 |
Definition at line 127 of file pps-client.h.
#define EXIT_LOST_PPS 8 |
Definition at line 120 of file pps-client.h.
#define FIVE_MINUTES 5 |
Definition at line 55 of file pps-client.h.
#define FREQDIFF_INTRVL 5 |
The number of minutes between Allan deviation samples of system clock frequency correction.
Definition at line 61 of file pps-client.h.
#define HARD_LIMIT_1 1 |
Definition at line 110 of file pps-client.h.
#define HARD_LIMIT_1024 1024 |
Definition at line 108 of file pps-client.h.
#define HARD_LIMIT_4 4 |
Definition at line 109 of file pps-client.h.
#define HARD_LIMIT_NONE 32768 |
Definition at line 107 of file pps-client.h.
#define HIGH 1 |
Definition at line 112 of file pps-client.h.
#define INTEGRAL_GAIN 0.63212 |
Controller integral gain constant in active controller operation.
Definition at line 60 of file pps-client.h.
#define INTERRUPT_LOST 15 |
Number of consecutive lost interrupts at which a warning starts.
Definition at line 77 of file pps-client.h.
#define INTRPT_DISTRIB_LEN 121 |
Definition at line 105 of file pps-client.h.
#define INTRPT_GPIO 64 |
Definition at line 123 of file pps-client.h.
#define INV_GAIN_0 4 |
Controller inverse proportional gain constant at startup.
Definition at line 59 of file pps-client.h.
#define INV_GAIN_1 1 |
Controller inverse proportional gain constant during active controller operation.
Definition at line 58 of file pps-client.h.
#define JITTER_DISTRIB 4 |
Definition at line 119 of file pps-client.h.
#define JITTER_DISTRIB_LEN 181 |
Definition at line 104 of file pps-client.h.
#define LARGE_SPIKE 80 |
Level above which spikes are are disruptive.
Definition at line 89 of file pps-client.h.
#define LOGBUF_SZ 1000 |
Definition at line 97 of file pps-client.h.
#define LOGDIR 131072 |
Definition at line 134 of file pps-client.h.
#define LOW 0 |
Definition at line 113 of file pps-client.h.
#define MAX_CONFIGS 32 |
Definition at line 115 of file pps-client.h.
#define MAX_LINE_LEN 50 |
Definition at line 95 of file pps-client.h.
#define MAX_SERVERS 4 |
Maximum number of NIST time servers to use.
Definition at line 79 of file pps-client.h.
#define MAX_SPIKE_LEVEL 1000000 |
An initialization value for G.minSustainedDelay.
Definition at line 86 of file pps-client.h.
#define MAX_SPIKES 60 |
Maximum microseconds to suppress a burst of continuous positive jitter.
Definition at line 85 of file pps-client.h.
#define MODULEDIR 524288 |
Definition at line 136 of file pps-client.h.
#define MSGBUF_SZ 1000 |
Definition at line 98 of file pps-client.h.
#define NIST 128 |
Definition at line 124 of file pps-client.h.
#define NIST_MSG_SZ 200 |
Definition at line 99 of file pps-client.h.
#define NOISE_ACCUM_RATE 0.1 |
Sets the rate at which G.noiseLevel adjusts to G.rawError.
Definition at line 90 of file pps-client.h.
#define NOISE_LEVEL_MIN 4 |
The minimum level at which interrupt delays are delay spikes.
Definition at line 91 of file pps-client.h.
#define NUM_5_MIN_INTERVALS 288 |
Number of five minute intervals in 24 hours.
Definition at line 54 of file pps-client.h.
#define NUM_INTEGRALS 10 |
Number of integrals used by makeAverageIntegral() to calculate the one minute clock frequency correction.
Definition at line 69 of file pps-client.h.
#define NUM_PARAMS 5 |
Definition at line 102 of file pps-client.h.
#define OFFSETFIFO_LEN 80 |
Length of G.correctionFifo which contains the data used to generate G.avgCorrection.
Definition at line 68 of file pps-client.h.
#define OUTPUT_GPIO 32 |
Definition at line 122 of file pps-client.h.
#define PER_MINUTE (1.0 / (double)SECS_PER_MINUTE) |
Definition at line 56 of file pps-client.h.
#define PER_NUM_INTEGRALS (1.0 / (double)NUM_INTEGRALS) |
Inverse of NUM_INTEGRALS.
Definition at line 70 of file pps-client.h.
#define PPS_GPIO 16 |
Definition at line 121 of file pps-client.h.
#define PPS_WINDOW 500 |
WaitForPPS delay loop time window in which to look for a PPS.
Definition at line 62 of file pps-client.h.
#define PPSDELAY 262144 |
Definition at line 135 of file pps-client.h.
#define PPSDEVICE 1048576 |
Definition at line 137 of file pps-client.h.
#define PPSPHASE 2097152 |
Definition at line 138 of file pps-client.h.
#define PROCDIR 4194304 |
Definition at line 139 of file pps-client.h.
#define PTHREAD_STACK_REQUIRED 16384 |
Stack space requirements for threads.
Definition at line 63 of file pps-client.h.
#define RAW_ERROR_DECAY 0.98851 |
Decay rate for G.rawError samples (1 hour half life)
Definition at line 75 of file pps-client.h.
#define RAW_ERROR_ZERO 20 |
Index corresponding to rawError == 0 in buildRawErrorDistrib().
Definition at line 74 of file pps-client.h.
#define RUNDIR 16384 |
Definition at line 131 of file pps-client.h.
#define SECS_PER_10_MIN 600 |
Definition at line 51 of file pps-client.h.
#define SECS_PER_5_MIN 300 |
Definition at line 50 of file pps-client.h.
#define SECS_PER_DAY 86400 |
Definition at line 53 of file pps-client.h.
#define SECS_PER_HOUR 3600 |
Definition at line 52 of file pps-client.h.
#define SECS_PER_MINUTE 60 |
Definition at line 49 of file pps-client.h.
#define SEGREGATE 8388608 |
Definition at line 140 of file pps-client.h.
#define SERIAL 256 |
Definition at line 125 of file pps-client.h.
#define SERIAL_PORT 512 |
Definition at line 126 of file pps-client.h.
#define SERVICEDIR 2048 |
Definition at line 128 of file pps-client.h.
#define SETTLE_TIME (2 * SECS_PER_10_MIN) |
The PPS-Client up time required before saving performance data.
Definition at line 57 of file pps-client.h.
#define SHMDIR 32768 |
Definition at line 132 of file pps-client.h.
#define SLEW_LEN 10 |
The slew accumulator (slewAccum) update interval.
Definition at line 92 of file pps-client.h.
#define SLEW_MAX 300 |
Jitter slew value below which the controller will begin to frequency lock.
Definition at line 93 of file pps-client.h.
#define STRBUF_SZ 1000 |
Definition at line 96 of file pps-client.h.
#define TSTDIR 65536 |
Definition at line 133 of file pps-client.h.
#define USECS_PER_SEC 1000000 |
Definition at line 48 of file pps-client.h.
#define ZERO_OFFSET_RPI3 8 |
Definition at line 65 of file pps-client.h.
#define ZERO_OFFSET_RPI4 4 |
Definition at line 66 of file pps-client.h.