1 /* Copyright 2022-2025 Luc Maisonobe
2 * Licensed to CS GROUP (CS) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * CS licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 package org.orekit.files.rinex.navigation;
18
19 import org.orekit.gnss.SatelliteSystem;
20 import org.orekit.time.AbsoluteDate;
21
22 /** Container for data contained in a Earth Orientation Parameter navigation message.
23 * @author Luc Maisonobe
24 * @since 12.0
25 */
26 public class EarthOrientationParameterMessage extends TypeSvMessage {
27
28 /** Reference epoch. */
29 private AbsoluteDate referenceEpoch;
30
31 /** X component of the pole (rad). */
32 private double xp;
33
34 /** X component of the pole first derivative (rad/s). */
35 private double xpDot;
36
37 /** X component of the pole second derivative (rad/s²). */
38 private double xpDotDot;
39
40 /** Y component of the pole (rad). */
41 private double yp;
42
43 /** Y component of the pole first derivative (rad/s). */
44 private double ypDot;
45
46 /** Y component of the pole second derivative (rad/s²). */
47 private double ypDotDot;
48
49 /** ΔUT₁ (s).
50 * According to Rinex 4.00 table A31, this may be either UT₁-UTC or UT₁-GPST
51 * depending on constellation and applicable Interface Control Document).
52 */
53 private double dUt1;
54
55 /** ΔUT₁ first derivative (s/s). */
56 private double dUt1Dot;
57
58 /** ΔUT₁ second derivative (s/s²). */
59 private double dUt1DotDot;
60
61 /** Transmission time. */
62 private double transmissionTime;
63
64 /** Simple constructor.
65 * @param system satellite system
66 * @param prn satellite number
67 * @param type navigation message type
68 * @param subType navigation message subtype
69 */
70 public EarthOrientationParameterMessage(final SatelliteSystem system, final int prn,
71 final String type, final String subType) {
72 super(system, prn, type, subType);
73 }
74
75 /** {@inheritDoc} */
76 @Override
77 public AbsoluteDate getDate() {
78 return referenceEpoch;
79 }
80
81 /** Get the reference epoch.
82 * @return the reference epoch
83 */
84 public AbsoluteDate getReferenceEpoch() {
85 return referenceEpoch;
86 }
87
88 /** Set the reference epoch.
89 * @param referenceEpoch the reference epoch to set
90 */
91 public void setReferenceEpoch(final AbsoluteDate referenceEpoch) {
92 this.referenceEpoch = referenceEpoch;
93 }
94
95 /** Get the X component of the pole.
96 * @return the X component of the pole (rad)
97 */
98 public double getXp() {
99 return xp;
100 }
101
102 /** Set the X component of the pole.
103 * @param xp X component of the pole (rad)
104 */
105 public void setXp(final double xp) {
106 this.xp = xp;
107 }
108
109 /** Get the X component of the pole first derivative.
110 * @return the X component of the pole first derivative (rad/s)
111 */
112 public double getXpDot() {
113 return xpDot;
114 }
115
116 /** Set the X component of the pole first derivative.
117 * @param xpDot X component of the pole first derivative (rad/s)
118 */
119 public void setXpDot(final double xpDot) {
120 this.xpDot = xpDot;
121 }
122
123 /** Get the X component of the pole second derivative.
124 * @return the X component of the pole second derivative (rad/s²)
125 */
126 public double getXpDotDot() {
127 return xpDotDot;
128 }
129
130 /** Set the X component of the pole second derivative.
131 * @param xpDotDot X component of the pole second derivative (rad/s²)
132 */
133 public void setXpDotDot(final double xpDotDot) {
134 this.xpDotDot = xpDotDot;
135 }
136
137 /** Get the Y component of the pole.
138 * @return the Y component of the pole (rad)
139 */
140 public double getYp() {
141 return yp;
142 }
143
144 /** Set the Y component of the pole.
145 * @param yp Y component of the pole (rad)
146 */
147 public void setYp(final double yp) {
148 this.yp = yp;
149 }
150
151 /** Get the Y component of the pole first derivative.
152 * @return the Y component of the pole first derivative (rad/s)
153 */
154 public double getYpDot() {
155 return ypDot;
156 }
157
158 /** Set the Y component of the pole first derivative.
159 * @param ypDot Y component of the pole first derivative (rad/s)
160 */
161 public void setYpDot(final double ypDot) {
162 this.ypDot = ypDot;
163 }
164
165 /** Get the Y component of the pole second derivative.
166 * @return the Y component of the pole second derivative (rad/s²)
167 */
168 public double getYpDotDot() {
169 return ypDotDot;
170 }
171
172 /** Set the Y component of the pole second derivative.
173 * @param ypDotDot Y component of the pole second derivative (rad/s²)
174 */
175 public void setYpDotDot(final double ypDotDot) {
176 this.ypDotDot = ypDotDot;
177 }
178
179 /** Get the ΔUT₁.
180 * @return the ΔUT₁ (s)
181 */
182 public double getDut1() {
183 return dUt1;
184 }
185
186 /** Set the ΔUT₁.
187 * @param dUT1 ΔUT₁ (s)
188 */
189 public void setDut1(final double dUT1) {
190 this.dUt1 = dUT1;
191 }
192
193 /** Get the ΔUT₁ first derivative.
194 * @return the ΔUT₁ first derivative (s/s)
195 */
196 public double getDut1Dot() {
197 return dUt1Dot;
198 }
199
200 /** Set the ΔUT₁ first derivative.
201 * @param dUT1Dot ΔUT₁ first derivative (s/s)
202 */
203 public void setDut1Dot(final double dUT1Dot) {
204 this.dUt1Dot = dUT1Dot;
205 }
206
207 /** Get the ΔUT₁ second derivative.
208 * @return the ΔUT₁ second derivative (s/s²)
209 */
210 public double getDut1DotDot() {
211 return dUt1DotDot;
212 }
213
214 /** Set the ΔUT₁ second derivative.
215 * @param dUT1DotDot ΔUT₁ second derivative (s/s²)
216 */
217 public void setDut1DotDot(final double dUT1DotDot) {
218 this.dUt1DotDot = dUT1DotDot;
219 }
220
221 /** Get the message transmission time.
222 * @return message transmission time
223 */
224 public double getTransmissionTime() {
225 return transmissionTime;
226 }
227
228 /** Set the message transmission time.
229 * @param transmissionTime the message transmission time
230 */
231 public void setTransmissionTime(final double transmissionTime) {
232 this.transmissionTime = transmissionTime;
233 }
234
235 }