1 /* Copyright 2002-2024 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.propagation.analytical.gnss.data;
18
19 import org.orekit.gnss.Frequency;
20
21 /**
22 * Container for data contained in a Beidou civilian navigation message.
23 * @author Luc Maisonobe
24 * @since 12.0
25 */
26 public class BeidouCivilianNavigationMessage extends AbstractNavigationMessage {
27
28 /** Identifier for Beidou-3 B1C message type. */
29 public static final String CNV1 = "CNV1";
30
31 /** Identifier for Beidou-3 B2A message type. */
32 public static final String CNV2 = "CNV2";
33
34 /** Identifier for Beidou-3 B2B message type. */
35 public static final String CNV3 = "CNV3";
36
37 /** Signal on which navigation signal is sent. */
38 private final Frequency signal;
39
40 /** Change rate in semi-major axis (m/s). */
41 private double aDot;
42
43 /** Change rate in Δn₀. */
44 private double deltaN0Dot;
45
46 /** Issue of Data, Ephemeris. */
47 private int iode;
48
49 /** Issue of Data, Clock. */
50 private int iodc;
51
52 /** Inter Signal Delay for B1 CD. */
53 private double iscB1CD;
54
55 /** Inter Signal Delay for B1 CP. */
56 private double iscB1CP;
57
58 /** Inter Signal Delay for B2 AD. */
59 private double iscB2AD;
60
61 /** Signal In Space Accuracy Index (along track and across track). */
62 private int sisaiOe;
63
64 /** Signal In Space Accuracy Index (radial and clock). */
65 private int sisaiOcb;
66
67 /** Signal In Space Accuracy Index (clock drift accuracy). */
68 private int sisaiOc1;
69
70 /** Signal In Space Accuracy Index (clock drift rate accuracy). */
71 private int sisaiOc2;
72
73 /** Signal In Space Monitoring Accuracy Index. */
74 private int sismai;
75
76 /** Health. */
77 private int health;
78
79 /** Integrity flags. */
80 private int integrityFlags;
81
82 /** B1/B3 Group Delay Differential (s). */
83 private double tgdB1Cp;
84
85 /** B2 AP Group Delay Differential (s). */
86 private double tgdB2ap;
87
88 /** B2B_i / B3I Group Delay Differential (s). */
89 private double tgdB2bI;
90
91 /** Satellite type. */
92 private BeidouSatelliteType satelliteType;
93
94 /**
95 * Constructor.
96 * @param signal signal on which navigation signal is sent
97 */
98 public BeidouCivilianNavigationMessage(final Frequency signal) {
99 super(GNSSConstants.BEIDOU_MU, GNSSConstants.BEIDOU_AV, GNSSConstants.BEIDOU_WEEK_NB);
100 this.signal = signal;
101 }
102
103 /**
104 * Getter for signal.
105 * @return signal on which navigation signal is sent
106 */
107 public Frequency getSignal() {
108 return signal;
109 }
110
111 /**
112 * Getter for the change rate in semi-major axis.
113 * @return the change rate in semi-major axis
114 */
115 public double getADot() {
116 return aDot;
117 }
118
119 /**
120 * Setter for the change rate in semi-major axis.
121 * @param value the change rate in semi-major axis
122 */
123 public void setADot(final double value) {
124 this.aDot = value;
125 }
126
127 /**
128 * Getter for change rate in Δn₀.
129 * @return change rate in Δn₀
130 */
131 public double getDeltaN0Dot() {
132 return deltaN0Dot;
133 }
134
135 /**
136 * Setter for change rate in Δn₀.
137 * @param deltaN0Dot change rate in Δn₀
138 */
139 public void setDeltaN0Dot(final double deltaN0Dot) {
140 this.deltaN0Dot = deltaN0Dot;
141 }
142
143 /**
144 * Getter for the Issue Of Data Ephemeris (IODE).
145 * @return the Issue Of Data Ephemeris (IODE)
146 */
147 public int getIODE() {
148 return iode;
149 }
150
151 /**
152 * Setter for the Issue of Data Ephemeris.
153 * @param value the IODE to set
154 */
155 public void setIODE(final int value) {
156 this.iode = value;
157 }
158
159 /**
160 * Getter for the Issue Of Data Clock (IODC).
161 * @return the Issue Of Data Clock (IODC)
162 */
163 public int getIODC() {
164 return iodc;
165 }
166
167 /**
168 * Setter for the Issue of Data Clock.
169 * @param value the IODC to set
170 */
171 public void setIODC(final int value) {
172 this.iodc = value;
173 }
174
175 /**
176 * Getter for inter Signal Delay for B1 CD.
177 * @return inter signal delay
178 */
179 public double getIscB1CD() {
180 return iscB1CD;
181 }
182
183 /**
184 * Setter for inter Signal Delay for B1 CD.
185 * @param delay delay to set
186 */
187 public void setIscB1CD(final double delay) {
188 this.iscB1CD = delay;
189 }
190
191 /**
192 * Getter for inter Signal Delay for B2 AD.
193 * @return inter signal delay
194 */
195 public double getIscB2AD() {
196 return iscB2AD;
197 }
198
199 /**
200 * Setter for inter Signal Delay for B2 AD.
201 * @param delay delay to set
202 */
203 public void setIscB2AD(final double delay) {
204 this.iscB2AD = delay;
205 }
206
207 /**
208 * Getter for inter Signal Delay for B1 CP.
209 * @return inter signal delay
210 */
211 public double getIscB1CP() {
212 return iscB1CP;
213 }
214
215 /**
216 * Setter for inter Signal Delay for B1 CP.
217 * @param delay delay to set
218 */
219 public void setIscB1CP(final double delay) {
220 this.iscB1CP = delay;
221 }
222
223 /**
224 * Getter for Signal In Space Accuracy Index (along track and across track).
225 * @return Signal In Space Accuracy Index (along track and across track)
226 */
227 public int getSisaiOe() {
228 return sisaiOe;
229 }
230
231 /**
232 * Setter for Signal In Space Accuracy Index (along track and across track).
233 * @param sisaiOe Signal In Space Accuracy Index (along track and across track)
234 */
235 public void setSisaiOe(final int sisaiOe) {
236 this.sisaiOe = sisaiOe;
237 }
238
239 /**
240 * Getter for Signal In Space Accuracy Index (radial and clock).
241 * @return Signal In Space Accuracy Index (radial and clock)
242 */
243 public int getSisaiOcb() {
244 return sisaiOcb;
245 }
246
247 /**
248 * Setter for Signal In Space Accuracy Index (radial and clock).
249 * @param sisaiOcb Signal In Space Accuracy Index (radial and clock)
250 */
251 public void setSisaiOcb(final int sisaiOcb) {
252 this.sisaiOcb = sisaiOcb;
253 }
254
255 /**
256 * Getter for Signal In Space Accuracy Index (clock drift accuracy).
257 * @return Signal In Space Accuracy Index (clock drift accuracy)
258 */
259 public int getSisaiOc1() {
260 return sisaiOc1;
261 }
262
263 /**
264 * Setter for Signal In Space Accuracy Index (clock drift accuracy).
265 * @param sisaiOc1 Signal In Space Accuracy Index (clock drift accuracy)
266 */
267 public void setSisaiOc1(final int sisaiOc1) {
268 this.sisaiOc1 = sisaiOc1;
269 }
270
271 /**
272 * Getter for Signal In Space Accuracy Index (clock drift rate accuracy).
273 * @return Signal In Space Accuracy Index (clock drift rate accuracy)
274 */
275 public int getSisaiOc2() {
276 return sisaiOc2;
277 }
278
279 /**
280 * Setter for Signal In Space Accuracy Index (clock drift rate accuracy).
281 * @param sisaiOc2 Signal In Space Accuracy Index (clock drift rate accuracy)
282 */
283 public void setSisaiOc2(final int sisaiOc2) {
284 this.sisaiOc2 = sisaiOc2;
285 }
286
287 /**
288 * Getter for Signal In Space Monitoring Accuracy Index.
289 * @return Signal In Space Monitoring Accuracy Index
290 */
291 public int getSismai() {
292 return sismai;
293 }
294
295 /**
296 * Setter for Signal In Space Monitoring Accuracy Index.
297 * @param sismai Signal In Space Monitoring Accuracy Index
298 */
299 public void setSismai(final int sismai) {
300 this.sismai = sismai;
301 }
302
303 /**
304 * Getter for health.
305 * @return health
306 */
307 public int getHealth() {
308 return health;
309 }
310
311 /**
312 * Setter for health.
313 * @param health health
314 */
315 public void setHealth(final int health) {
316 this.health = health;
317 }
318
319 /**
320 * Getter for B1C integrity flags.
321 * @return B1C integrity flags
322 */
323 public int getIntegrityFlags() {
324 return integrityFlags;
325 }
326
327 /**
328 * Setter for B1C integrity flags.
329 * @param integrityFlags integrity flags
330 */
331 public void setIntegrityFlags(final int integrityFlags) {
332 this.integrityFlags = integrityFlags;
333 }
334
335 /**
336 * Getter for B1/B3 Group Delay Differential (s).
337 * @return B1/B3 Group Delay Differential (s)
338 */
339 public double getTgdB1Cp() {
340 return tgdB1Cp;
341 }
342
343 /**
344 * Setter for B1/B3 Group Delay Differential (s).
345 * @param tgdB1Cp B1/B3 Group Delay Differential (s)
346 */
347 public void setTgdB1Cp(final double tgdB1Cp) {
348 this.tgdB1Cp = tgdB1Cp;
349 }
350
351 /**
352 * Getter for B2 AP Group Delay Differential (s).
353 * @return B2 AP Group Delay Differential (s)
354 */
355 public double getTgdB2ap() {
356 return tgdB2ap;
357 }
358
359 /**
360 * Setter for B2 AP Group Delay Differential (s).
361 * @param tgdB2ap B2 AP Group Delay Differential (s)
362 */
363 public void setTgdB2ap(final double tgdB2ap) {
364 this.tgdB2ap = tgdB2ap;
365 }
366
367 /**
368 * Getter for B2B_i / B3I Group Delay Differential (s).
369 * @return B2B_i / B3I Group Delay Differential (s)
370 */
371 public double getTgdB2bI() {
372 return tgdB2bI;
373 }
374
375 /**
376 * Setter for B2B_i / B3I Group Delay Differential (s).
377 * @param tgdB2bI B2B_i / B3I Group Delay Differential (s)
378 */
379 public void setTgdB2bI(final double tgdB2bI) {
380 this.tgdB2bI = tgdB2bI;
381 }
382
383 /**
384 * Getter for satellite type.
385 * @return satellite type
386 */
387 public BeidouSatelliteType getSatelliteType() {
388 return satelliteType;
389 }
390
391 /**
392 * Setter for satellite type.
393 * @param satelliteType satellite type
394 */
395 public void setSatelliteType(final BeidouSatelliteType satelliteType) {
396 this.satelliteType = satelliteType;
397 }
398
399 }