forked from richardcochran/linuxptp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ds.h
147 lines (131 loc) · 4.05 KB
/
ds.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
/**
* @file ds.h
* @brief Data sets
* @note Copyright (C) 2011 Richard Cochran <[email protected]>
*
* 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.
*/
#ifndef HAVE_DS_H
#define HAVE_DS_H
#include "ddt.h"
#include "fault.h"
#include "filter.h"
#include "tsproc.h"
/* clock data sets */
#define DDS_TWO_STEP_FLAG (1<<0)
#define DDS_SLAVE_ONLY (1<<1)
struct defaultDS {
UInteger8 flags;
UInteger8 reserved1;
UInteger16 numberPorts;
UInteger8 priority1;
struct ClockQuality clockQuality;
UInteger8 priority2;
struct ClockIdentity clockIdentity;
UInteger8 domainNumber;
UInteger8 reserved2;
} PACKED;
#define OUI_LEN 3
struct clock_description {
struct static_ptp_text productDescription;
struct static_ptp_text revisionData;
struct static_ptp_text userDescription;
Octet manufacturerIdentity[OUI_LEN];
};
struct default_ds {
struct defaultDS dds;
int free_running;
int freq_est_interval; /*log seconds*/
int grand_master_capable; /*802.1AS only*/
int stats_interval; /*log seconds*/
int kernel_leap;
int sanity_freq_limit;
int time_source;
struct clock_description clock_desc;
enum tsproc_mode tsproc_mode;
enum filter_type delay_filter;
int delay_filter_length;
int boundary_clock_jbod;
};
struct dataset {
UInteger8 priority1;
struct ClockIdentity identity;
struct ClockQuality quality;
UInteger8 priority2;
UInteger16 stepsRemoved;
struct PortIdentity sender;
struct PortIdentity receiver;
};
struct currentDS {
UInteger16 stepsRemoved;
TimeInterval offsetFromMaster;
TimeInterval meanPathDelay;
} PACKED;
struct parentDS {
struct PortIdentity parentPortIdentity;
UInteger8 parentStats;
UInteger8 reserved;
UInteger16 observedParentOffsetScaledLogVariance;
Integer32 observedParentClockPhaseChangeRate;
UInteger8 grandmasterPriority1;
struct ClockQuality grandmasterClockQuality;
UInteger8 grandmasterPriority2;
struct ClockIdentity grandmasterIdentity;
} PACKED;
struct parent_ds {
struct parentDS pds;
struct ClockIdentity *ptl;
unsigned int path_length;
};
#define CURRENT_UTC_OFFSET 35 /* 1 Jul 2012 */
#define INTERNAL_OSCILLATOR 0xA0
struct timePropertiesDS {
Integer16 currentUtcOffset;
UInteger8 flags;
Enumeration8 timeSource;
} PACKED;
struct portDS {
struct PortIdentity portIdentity;
Enumeration8 portState;
Integer8 logMinDelayReqInterval;
TimeInterval peerMeanPathDelay;
Integer8 logAnnounceInterval;
UInteger8 announceReceiptTimeout;
Integer8 logSyncInterval;
Enumeration8 delayMechanism;
Integer8 logMinPdelayReqInterval;
UInteger8 versionNumber;
} PACKED;
#define FRI_ASAP (-128)
struct port_defaults {
Integer64 asymmetry;
Integer8 logAnnounceInterval;
Integer8 logSyncInterval;
Integer8 logMinDelayReqInterval;
Integer8 logMinPdelayReqInterval;
UInteger8 announceReceiptTimeout;
UInteger8 syncReceiptTimeout;
UInteger8 transportSpecific;
int announce_span;
int path_trace_enabled;
int follow_up_info;
int freq_est_interval; /*log seconds*/
struct fault_interval flt_interval_pertype[FT_CNT];
UInteger32 neighborPropDelayThresh; /*nanoseconds*/
int min_neighbor_prop_delay; /*nanoseconds*/
int tx_timestamp_offset; /*nanoseconds*/
int rx_timestamp_offset; /*nanoseconds*/
};
#endif