|
PPS-Client
1.4.0
Client for synchronizing the system clock to a GPS PPS source
|
The pps-client.h 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 <math.h>#include <sys/types.h>#include <errno.h>#include <poll.h>#include <sys/mman.h>Go to the source code of this file.
Data Structures | |
| struct | timeCheckParams |
| Struct for passing arguments to and from threads querying SNTP time servers or GPS receivers. More... | |
| struct | G |
| Struct for program-wide global variables showing those important to the controller. More... | |
Macros | |
| #define | PTHREAD_STACK_REQUIRED 16384 |
| Stack space requirements for threads. More... | |
| #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) |
| Inverse seconds per minute. More... | |
| #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 | SHOW_INTRPT_DATA_INTVL 6 |
| The number of seconds between displays of interrupt delay in the PPS-Client status line. More... | |
| #define | INV_DELAY_SAMPLES_PER_MIN (1.0 / (double)SECS_PER_MINUTE) |
| Constant for calculating G.sysDelay. More... | |
| #define | FREQDIFF_INTRVL 5 |
| The number of minutes between Allan deviation samples of system clock frequency correction. More... | |
| #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 | INTERRUPT_LATENCY 6 |
| Default interrupt latency assigned to sysDelay (microseconds). More... | |
| #define | RAW_ERROR_ZERO 20 |
| Index corresponding to rawError == 0 in detectDelayPeak(). More... | |
| #define | MIN_PEAK_RATIO 0.05 |
| Minimum ratio to detect a second peak in detectDelayPeak(). More... | |
| #define | MAX_VALLEY_RATIO 0.99 |
| Maximum ratio to detect a valley before the second peak in detectDelayPeak(). 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 SNTP 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 600 |
| Interval between serial port time checks (about 10 minutes) More... | |
| #define | MAX_SPIKES 30 |
| Maximum microseconds to suppress a burst of continuous positive jitter. More... | |
| #define | NOISE_FACTOR 0.354 |
| Adjusts G.noiseLevel to track G.sysDelay. 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 65 |
| Jitter slew value below which the controller will begin to frequency lock. More... | |
| #define | MAX_LINE_LEN 50 |
| #define | STRBUF_SZ 500 |
| #define | LOGBUF_SZ 500 |
| #define | MSGBUF_SZ 500 |
| #define | SNTP_MSG_SZ 200 |
| #define | CONFIG_FILE_SZ 10000 |
| #define | NUM_PARAMS 5 |
| #define | ERROR_DISTRIB_LEN 121 |
| #define | JITTER_DISTRIB_LEN 121 |
| #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 | HARD_LIMIT_05 0.5 |
| #define | HIGH 1 |
| #define | LOW 0 |
| #define | MAX_CONFIGS 32 |
| #define | ERROR_DISTRIB 1 |
| #define | ALERT_PPS_LOST 2 |
| #define | JITTER_DISTRIB 4 |
| #define | CALIBRATE 8 |
| #define | INTERRUPT_DISTRIB 16 |
| #define | SYSDELAY_DISTRIB 32 |
| #define | EXIT_LOST_PPS 64 |
| #define | PPS_GPIO 128 |
| #define | OUTPUT_GPIO 256 |
| #define | INTRPT_GPIO 512 |
| #define | SNTP 1024 |
| #define | SERIAL 2048 |
| #define | SERIAL_PORT 4096 |
The pps-client.h file contains includes, defines and structures for PPS-Client.
Copyright (C) 2016-2018 Raymond S. Connell
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Definition in file pps-client.h.
| #define ADJTIMEX_SCALE 65536.0 |
Frequency scaling required by adjtimex().
Definition at line 63 of file pps-client.h.
| #define ALERT_PPS_LOST 2 |
Definition at line 111 of file pps-client.h.
| #define BLOCK_FOR_10 10 |
Blocks detection of external system clock changes for 10 seconds.
Definition at line 76 of file pps-client.h.
| #define BLOCK_FOR_3 3 |
Blocks detection of external system clock changes for 3 seconds.
Definition at line 77 of file pps-client.h.
| #define CALIBRATE 8 |
Definition at line 113 of file pps-client.h.
| #define CHECK_TIME 1024 |
Interval between Internet time checks (about 17 minutes)
Definition at line 75 of file pps-client.h.
| #define CHECK_TIME_SERIAL 600 |
Interval between serial port time checks (about 10 minutes)
Definition at line 78 of file pps-client.h.
| #define CONFIG_FILE_SZ 10000 |
Definition at line 92 of file pps-client.h.
| #define ERROR_DISTRIB 1 |
Definition at line 110 of file pps-client.h.
| #define ERROR_DISTRIB_LEN 121 |
Definition at line 95 of file pps-client.h.
| #define EXIT_LOST_PPS 64 |
Definition at line 116 of file pps-client.h.
| #define FIVE_MINUTES 5 |
Definition at line 49 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 57 of file pps-client.h.
| #define HARD_LIMIT_05 0.5 |
Definition at line 103 of file pps-client.h.
| #define HARD_LIMIT_1 1 |
Definition at line 102 of file pps-client.h.
| #define HARD_LIMIT_1024 1024 |
Definition at line 100 of file pps-client.h.
| #define HARD_LIMIT_4 4 |
Definition at line 101 of file pps-client.h.
| #define HARD_LIMIT_NONE 32768 |
Definition at line 99 of file pps-client.h.
| #define HIGH 1 |
Definition at line 105 of file pps-client.h.
| #define INTEGRAL_GAIN 0.63212 |
Controller integral gain constant in active controller operation.
Definition at line 54 of file pps-client.h.
| #define INTERRUPT_DISTRIB 16 |
Definition at line 114 of file pps-client.h.
| #define INTERRUPT_LATENCY 6 |
Default interrupt latency assigned to sysDelay (microseconds).
Definition at line 65 of file pps-client.h.
| #define INTERRUPT_LOST 15 |
Number of consecutive lost interrupts at which a warning starts.
Definition at line 72 of file pps-client.h.
| #define INTRPT_DISTRIB_LEN 121 |
Definition at line 97 of file pps-client.h.
| #define INTRPT_GPIO 512 |
Definition at line 119 of file pps-client.h.
| #define INV_DELAY_SAMPLES_PER_MIN (1.0 / (double)SECS_PER_MINUTE) |
Constant for calculating G.sysDelay.
Definition at line 56 of file pps-client.h.
| #define INV_GAIN_0 4 |
Controller inverse proportional gain constant at startup.
Definition at line 53 of file pps-client.h.
| #define INV_GAIN_1 1 |
Controller inverse proportional gain constant during active controller operation.
Definition at line 52 of file pps-client.h.
| #define JITTER_DISTRIB 4 |
Definition at line 112 of file pps-client.h.
| #define JITTER_DISTRIB_LEN 121 |
Definition at line 96 of file pps-client.h.
| #define LOGBUF_SZ 500 |
Definition at line 89 of file pps-client.h.
| #define LOW 0 |
Definition at line 106 of file pps-client.h.
| #define MAX_CONFIGS 32 |
Definition at line 108 of file pps-client.h.
| #define MAX_LINE_LEN 50 |
Definition at line 87 of file pps-client.h.
| #define MAX_SERVERS 4 |
Maximum number of SNTP time servers to use.
Definition at line 74 of file pps-client.h.
| #define MAX_SPIKES 30 |
Maximum microseconds to suppress a burst of continuous positive jitter.
Definition at line 80 of file pps-client.h.
| #define MAX_VALLEY_RATIO 0.99 |
Maximum ratio to detect a valley before the second peak in detectDelayPeak().
Definition at line 69 of file pps-client.h.
| #define MIN_PEAK_RATIO 0.05 |
Minimum ratio to detect a second peak in detectDelayPeak().
Definition at line 68 of file pps-client.h.
| #define MSGBUF_SZ 500 |
Definition at line 90 of file pps-client.h.
| #define NOISE_FACTOR 0.354 |
Adjusts G.noiseLevel to track G.sysDelay.
Definition at line 82 of file pps-client.h.
| #define NOISE_LEVEL_MIN 4 |
The minimum level at which interrupt delays are delay spikes.
Definition at line 83 of file pps-client.h.
| #define NUM_5_MIN_INTERVALS 288 |
Number of five minute intervals in 24 hours.
Definition at line 48 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 60 of file pps-client.h.
| #define NUM_PARAMS 5 |
Definition at line 94 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 59 of file pps-client.h.
| #define OUTPUT_GPIO 256 |
Definition at line 118 of file pps-client.h.
| #define PER_MINUTE (1.0 / (double)SECS_PER_MINUTE) |
Inverse seconds per minute.
Definition at line 50 of file pps-client.h.
| #define PER_NUM_INTEGRALS (1.0 / (double)NUM_INTEGRALS) |
Inverse of NUM_INTEGRALS.
Definition at line 61 of file pps-client.h.
| #define PPS_GPIO 128 |
Definition at line 117 of file pps-client.h.
| #define PTHREAD_STACK_REQUIRED 16384 |
Stack space requirements for threads.
Definition at line 41 of file pps-client.h.
| #define RAW_ERROR_DECAY 0.98851 |
Decay rate for G.rawError samples (1 hour half life)
Definition at line 70 of file pps-client.h.
| #define RAW_ERROR_ZERO 20 |
Index corresponding to rawError == 0 in detectDelayPeak().
Definition at line 67 of file pps-client.h.
| #define SECS_PER_10_MIN 600 |
Definition at line 45 of file pps-client.h.
| #define SECS_PER_5_MIN 300 |
Definition at line 44 of file pps-client.h.
| #define SECS_PER_DAY 86400 |
Definition at line 47 of file pps-client.h.
| #define SECS_PER_HOUR 3600 |
Definition at line 46 of file pps-client.h.
| #define SECS_PER_MINUTE 60 |
Definition at line 43 of file pps-client.h.
| #define SERIAL 2048 |
Definition at line 121 of file pps-client.h.
| #define SERIAL_PORT 4096 |
Definition at line 122 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 51 of file pps-client.h.
| #define SHOW_INTRPT_DATA_INTVL 6 |
The number of seconds between displays of interrupt delay in the PPS-Client status line.
Definition at line 55 of file pps-client.h.
| #define SLEW_LEN 10 |
The slew accumulator (slewAccum) update interval.
Definition at line 84 of file pps-client.h.
| #define SLEW_MAX 65 |
Jitter slew value below which the controller will begin to frequency lock.
Definition at line 85 of file pps-client.h.
| #define SNTP 1024 |
Definition at line 120 of file pps-client.h.
| #define SNTP_MSG_SZ 200 |
Definition at line 91 of file pps-client.h.
| #define STRBUF_SZ 500 |
Definition at line 88 of file pps-client.h.
| #define SYSDELAY_DISTRIB 32 |
Definition at line 115 of file pps-client.h.
| #define USECS_PER_SEC 1000000 |
Definition at line 42 of file pps-client.h.
1.8.14