1 /* Copyright 2002-2025 CS GROUP
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.observation;
18
19 import java.util.ArrayList;
20 import java.util.Collections;
21 import java.util.HashMap;
22 import java.util.List;
23 import java.util.Map;
24
25 import org.hipparchus.geometry.euclidean.threed.Vector3D;
26 import org.hipparchus.geometry.euclidean.twod.Vector2D;
27 import org.orekit.files.rinex.AppliedDCBS;
28 import org.orekit.files.rinex.AppliedPCVS;
29 import org.orekit.files.rinex.section.RinexBaseHeader;
30 import org.orekit.files.rinex.utils.RinexFileType;
31 import org.orekit.gnss.ObservationType;
32 import org.orekit.gnss.SatInSystem;
33 import org.orekit.gnss.SatelliteSystem;
34 import org.orekit.time.AbsoluteDate;
35
36 /** Container for Rinex observation file header.
37 * @since 9.2
38 */
39 public class RinexObservationHeader extends RinexBaseHeader {
40
41 /** Name of the Antenna Marker. */
42 private String markerName;
43
44 /** Number of Antenna marker. */
45 private String markerNumber;
46
47 /** Type of Antenna marker. */
48 private String markerType;
49
50 /** Name of Observer. */
51 private String observerName;
52
53 /** Name of Agency. */
54 private String agencyName;
55
56 /** Receiver Number. */
57 private String receiverNumber;
58
59 /** Receiver Type. */
60 private String receiverType;
61
62 /** Receiver version. */
63 private String receiverVersion;
64
65 /** Antenna Number. */
66 private String antennaNumber;
67
68 /** Antenna Type. */
69 private String antennaType;
70
71 /** Approximate Marker Position (WGS84). */
72 private Vector3D approxPos;
73
74 /** Antenna Height. */
75 private double antennaHeight;
76
77 /** Eccentricities of antenna center. */
78 private Vector2D eccentricities;
79
80 /** Position of antenna reference point for antenna on vehicle. */
81 private Vector3D antRefPoint;
82
83 /** Satellite system for average phasecenter position.
84 * @since 12.0
85 */
86 private SatelliteSystem phaseCenterSystem;
87
88 /** Observation code of the average phasecenter position w/r to antenna reference point. */
89 private String observationCode;
90
91 /** Antenna phasecenter.
92 * North/East/Up (fixed station) or X/Y/Z in body fixed system (vehicle). */
93 private Vector3D antennaPhaseCenter;
94
95 /** Antenna B.Sight.
96 * Direction of the “vertical” antenna axis towards the GNSS satellites. */
97 private Vector3D antennaBSight;
98
99 /** Azimuth of the zero direction of a fixed antenna (degrees, from north). */
100 private double antennaAzimuth;
101
102 /** Zero direction of antenna. */
103 private Vector3D antennaZeroDirection;
104
105 /** Current center of mass (X,Y,Z, meters) of vehicle in body fixed coordinate system. */
106 private Vector3D centerMass;
107
108 /** Unit of the carrier to noise ratio observables Snn (if present) DBHZ: S/N given in dbHz. */
109 private String signalStrengthUnit;
110
111 /** Observation interval in seconds. */
112 private double interval;
113
114 /** Time of First observation record. */
115 private AbsoluteDate tFirstObs;
116
117 /** Time of last observation record. */
118 private AbsoluteDate tLastObs;
119
120 /** Flag for application of real time-derived receiver clock offset.
121 * @since 12.1
122 */
123 private boolean clockOffsetApplied;
124
125 /** List of applied differential code bias corrections. */
126 private final List<AppliedDCBS> listAppliedDCBS;
127
128 /** List of antenna center variation corrections. */
129 private final List<AppliedPCVS> listAppliedPCVS;
130
131 /** List of phase shift correction used to generate phases consistent w/r to cycle shifts. */
132 private final List<PhaseShiftCorrection> phaseShiftCorrections;
133
134 /** List of scale factor corrections. */
135 private final Map<SatelliteSystem, List<ScaleFactorCorrection>> scaleFactorCorrections;
136
137 /** List of GLONASS satellite-channel associations.
138 * @since 12.0
139 */
140 private final List<GlonassSatelliteChannel> glonassChannels;
141
142 /** Number of satellites.
143 * @since 12.0
144 */
145 private int nbSat;
146
147 /** Number of observations per satellite.
148 * @since 12.0
149 */
150 private final Map<SatInSystem, Map<ObservationType, Integer>> nbObsPerSat;
151
152 /** Observation types for each satellite systems.
153 * @since 12.0
154 */
155 private final Map<SatelliteSystem, List<ObservationType>> mapTypeObs;
156
157 /** Number of leap seconds since 6-Jan-1980. */
158 private int leapSeconds;
159
160 /** Future or past leap seconds ΔtLSF (BNK).
161 * i.e. future leap second if the week and day number are in the future.
162 */
163 private int leapSecondsFuture;
164
165 /** Respective leap second week number.
166 * For GPS, GAL, QZS and IRN, weeks since 6-Jan-1980.
167 * When BDS only file leap seconds specified, weeks since 1-Jan-2006
168 */
169 private int leapSecondsWeekNum;
170
171 /** Respective leap second day number. */
172 private int leapSecondsDayNum;
173
174 /** Code phase bias correction for GLONASS C1C signal.
175 * @since 12.0
176 */
177 private double c1cCodePhaseBias;
178
179 /** Code phase bias correction for GLONASS C1P signal.
180 * @since 12.0
181 */
182 private double c1pCodePhaseBias;
183
184 /** Code phase bias correction for GLONASS C2C signal.
185 * @since 12.0
186 */
187 private double c2cCodePhaseBias;
188
189 /** Code phase bias correction for GLONASS C2P signal.
190 * @since 12.0
191 */
192 private double c2pCodePhaseBias;
193
194 /** Simple constructor.
195 */
196 public RinexObservationHeader() {
197 super(RinexFileType.OBSERVATION);
198 antennaAzimuth = Double.NaN;
199 antennaHeight = Double.NaN;
200 eccentricities = Vector2D.ZERO;
201 clockOffsetApplied = false;
202 nbSat = -1;
203 interval = Double.NaN;
204 leapSeconds = 0;
205 listAppliedDCBS = new ArrayList<>();
206 listAppliedPCVS = new ArrayList<>();
207 phaseShiftCorrections = new ArrayList<>();
208 scaleFactorCorrections = new HashMap<>();
209 glonassChannels = new ArrayList<>();
210 nbObsPerSat = new HashMap<>();
211 mapTypeObs = new HashMap<>();
212 tLastObs = AbsoluteDate.FUTURE_INFINITY;
213 c1cCodePhaseBias = Double.NaN;
214 c1pCodePhaseBias = Double.NaN;
215 c2cCodePhaseBias = Double.NaN;
216 c2pCodePhaseBias = Double.NaN;
217 }
218
219 /** Set name of the antenna marker.
220 * @param markerName name of the antenna marker
221 */
222 public void setMarkerName(final String markerName) {
223 this.markerName = markerName;
224 }
225
226 /** Get name of the antenna marker.
227 * @return name of the antenna marker
228 */
229 public String getMarkerName() {
230 return markerName;
231 }
232
233 /** Set number of the antenna marker.
234 * @param markerNumber number of the antenna marker
235 */
236 public void setMarkerNumber(final String markerNumber) {
237 this.markerNumber = markerNumber;
238 }
239
240 /** Get number of the antenna marker.
241 * @return number of the antenna marker
242 */
243 public String getMarkerNumber() {
244 return markerNumber;
245 }
246
247 /** Set name of the observer.
248 * @param observerName name of the observer
249 */
250 public void setObserverName(final String observerName) {
251 this.observerName = observerName;
252 }
253
254 /** Get name of the observer.
255 * @return name of the observer
256 */
257 public String getObserverName() {
258 return observerName;
259 }
260
261 /**
262 * Setter for the agency name.
263 * @param agencyName the agency name to set
264 */
265 public void setAgencyName(final String agencyName) {
266 this.agencyName = agencyName;
267 }
268
269 /** Get name of the agency.
270 * @return name of the agency
271 */
272 public String getAgencyName() {
273 return agencyName;
274 }
275
276 /** Set the number of the receiver.
277 * @param receiverNumber number of the receiver
278 */
279 public void setReceiverNumber(final String receiverNumber) {
280 this.receiverNumber = receiverNumber;
281 }
282
283 /** Get the number of the receiver.
284 * @return number of the receiver
285 */
286 public String getReceiverNumber() {
287 return receiverNumber;
288 }
289
290 /** Set the type of the receiver.
291 * @param receiverType type of the receiver
292 */
293 public void setReceiverType(final String receiverType) {
294 this.receiverType = receiverType;
295 }
296
297 /** Get the type of the receiver.
298 * @return type of the receiver
299 */
300 public String getReceiverType() {
301 return receiverType;
302 }
303
304 /** Set the version of the receiver.
305 * @param receiverVersion version of the receiver
306 */
307 public void setReceiverVersion(final String receiverVersion) {
308 this.receiverVersion = receiverVersion;
309 }
310
311 /** Get the version of the receiver.
312 * @return version of the receiver
313 */
314 public String getReceiverVersion() {
315 return receiverVersion;
316 }
317
318 /** Set the number of the antenna.
319 * @param antennaNumber number of the antenna
320 */
321 public void setAntennaNumber(final String antennaNumber) {
322 this.antennaNumber = antennaNumber;
323 }
324
325 /** Get the number of the antenna.
326 * @return number of the antenna
327 */
328 public String getAntennaNumber() {
329 return antennaNumber;
330 }
331
332 /** Set the type of the antenna.
333 * @param antennaType type of the antenna
334 */
335 public void setAntennaType(final String antennaType) {
336 this.antennaType = antennaType;
337 }
338
339 /** Get the type of the antenna.
340 * @return type of the antenna
341 */
342 public String getAntennaType() {
343 return antennaType;
344 }
345
346 /** Set the Approximate Marker Position.
347 * @param approxPos Approximate Marker Position
348 */
349 public void setApproxPos(final Vector3D approxPos) {
350 this.approxPos = approxPos;
351 }
352
353 /** Get the Approximate Marker Position.
354 * @return Approximate Marker Position
355 */
356 public Vector3D getApproxPos() {
357 return approxPos;
358 }
359
360 /** Set the antenna height.
361 * @param antennaHeight height of the antenna
362 */
363 public void setAntennaHeight(final double antennaHeight) {
364 this.antennaHeight = antennaHeight;
365 }
366
367 /** Get the antenna height.
368 * @return height of the antenna
369 */
370 public double getAntennaHeight() {
371 return antennaHeight;
372 }
373
374 /** Set the eccentricities of antenna center.
375 * @param eccentricities Eccentricities of antenna center
376 */
377 public void setEccentricities(final Vector2D eccentricities) {
378 this.eccentricities = eccentricities;
379 }
380
381 /** Get the eccentricities of antenna center.
382 * @return Eccentricities of antenna center
383 */
384 public Vector2D getEccentricities() {
385 return eccentricities;
386 }
387
388 /** Set the application flag for realtime-derived receiver clock offset.
389 * @param clockOffsetApplied application flag for realtime-derived receiver clock offset
390 * @since 12.1
391 */
392 public void setClockOffsetApplied(final boolean clockOffsetApplied) {
393 this.clockOffsetApplied = clockOffsetApplied;
394 }
395
396 /** Get the application flag for realtime-derived receiver clock offset.
397 * @return application flag for realtime-derived receiver clock offset
398 * @since 12.1
399 */
400 public boolean getClockOffsetApplied() {
401 return clockOffsetApplied;
402 }
403
404 /** Set the observation interval in seconds.
405 * @param interval Observation interval in seconds
406 */
407 public void setInterval(final double interval) {
408 this.interval = interval;
409 }
410
411 /** Get the observation interval in seconds.
412 * @return Observation interval in seconds
413 */
414 public double getInterval() {
415 return interval;
416 }
417
418 /** Set the time of First observation record.
419 * @param firstObs Time of First observation record
420 */
421 public void setTFirstObs(final AbsoluteDate firstObs) {
422 this.tFirstObs = firstObs;
423 }
424
425 /** Get the time of First observation record.
426 * @return Time of First observation record
427 */
428 public AbsoluteDate getTFirstObs() {
429 return tFirstObs;
430 }
431
432 /** Set the time of last observation record.
433 * @param lastObs Time of last observation record
434 */
435 public void setTLastObs(final AbsoluteDate lastObs) {
436 this.tLastObs = lastObs;
437 }
438
439 /** Get the time of last observation record.
440 * @return Time of last observation record
441 */
442 public AbsoluteDate getTLastObs() {
443 return tLastObs;
444 }
445
446 /** Set the Number of leap seconds since 6-Jan-1980.
447 * @param leapSeconds Number of leap seconds since 6-Jan-1980
448 */
449 public void setLeapSeconds(final int leapSeconds) {
450 this.leapSeconds = leapSeconds;
451 }
452
453 /** Get the Number of leap seconds since 6-Jan-1980.
454 * @return Number of leap seconds since 6-Jan-1980
455 */
456 public int getLeapSeconds() {
457 return leapSeconds;
458 }
459
460 /** Set type of the antenna marker.
461 * @param markerType type of the antenna marker
462 */
463 public void setMarkerType(final String markerType) {
464 this.markerType = markerType;
465 }
466
467 /** Get type of the antenna marker.
468 * @return type of the antenna marker
469 */
470 public String getMarkerType() {
471 return markerType;
472 }
473
474 /** Set the position of antenna reference point for antenna on vehicle.
475 * @param refPoint Position of antenna reference point for antenna on vehicle
476 */
477 public void setAntennaReferencePoint(final Vector3D refPoint) {
478 this.antRefPoint = refPoint;
479 }
480
481 /** Get the position of antenna reference point for antenna on vehicle.
482 * @return Position of antenna reference point for antenna on vehicle
483 */
484 public Vector3D getAntennaReferencePoint() {
485 return antRefPoint;
486 }
487
488 /** Set satellite system for average phase center.
489 * @param phaseCenterSystem satellite system for average phase center
490 * @since 12.0
491 */
492 public void setPhaseCenterSystem(final SatelliteSystem phaseCenterSystem) {
493 this.phaseCenterSystem = phaseCenterSystem;
494 }
495
496 /** Get satellite system for average phase center.
497 * @return satellite system for average phase center
498 * @since 12.0
499 */
500 public SatelliteSystem getPhaseCenterSystem() {
501 return phaseCenterSystem;
502 }
503
504 /** Set the observation code of the average phasecenter position w/r to antenna reference point.
505 * @param observationCode Observation code of the average phasecenter position w/r to antenna reference point
506 */
507 public void setObservationCode(final String observationCode) {
508 this.observationCode = observationCode;
509 }
510
511 /** Get the observation code of the average phasecenter position w/r to antenna reference point.
512 * @return Observation code of the average phasecenter position w/r to antenna reference point
513 */
514 public String getObservationCode() {
515 return observationCode;
516 }
517
518 /** Set the antenna phasecenter.
519 * @param antennaPhaseCenter Antenna phasecenter
520 */
521 public void setAntennaPhaseCenter(final Vector3D antennaPhaseCenter) {
522 this.antennaPhaseCenter = antennaPhaseCenter;
523 }
524
525 /** Get the antenna phasecenter.
526 * @return Antenna phasecenter
527 */
528 public Vector3D getAntennaPhaseCenter() {
529 return antennaPhaseCenter;
530 }
531
532 /** Set the antenna B.Sight.
533 * @param antennaBSight Antenna B.Sight
534 */
535 public void setAntennaBSight(final Vector3D antennaBSight) {
536 this.antennaBSight = antennaBSight;
537 }
538
539 /** Get the antenna B.Sight.
540 * @return Antenna B.Sight
541 */
542 public Vector3D getAntennaBSight() {
543 return antennaBSight;
544 }
545
546 /** Set the azimuth of the zero direction of a fixed antenna.
547 * @param antennaAzimuth Azimuth of the zero direction of a fixed antenna
548 */
549 public void setAntennaAzimuth(final double antennaAzimuth) {
550 this.antennaAzimuth = antennaAzimuth;
551 }
552
553 /** Get the azimuth of the zero direction of a fixed antenna.
554 * @return Azimuth of the zero direction of a fixed antenna
555 */
556 public double getAntennaAzimuth() {
557 return antennaAzimuth;
558 }
559
560 /** Set the zero direction of antenna.
561 * @param antennaZeroDirection Zero direction of antenna
562 */
563 public void setAntennaZeroDirection(final Vector3D antennaZeroDirection) {
564 this.antennaZeroDirection = antennaZeroDirection;
565 }
566
567 /** Get the zero direction of antenna.
568 * @return Zero direction of antenna
569 */
570 public Vector3D getAntennaZeroDirection() {
571 return antennaZeroDirection;
572 }
573
574 /** Set the current center of mass of vehicle in body fixed coordinate system.
575 * @param centerMass Current center of mass of vehicle in body fixed coordinate system
576 */
577 public void setCenterMass(final Vector3D centerMass) {
578 this.centerMass = centerMass;
579 }
580
581 /** Get the current center of mass of vehicle in body fixed coordinate system.
582 * @return Current center of mass of vehicle in body fixed coordinate system
583 */
584 public Vector3D getCenterMass() {
585 return centerMass;
586 }
587
588 /** Set the unit of the carrier to noise ratio observables.
589 * @param signalStrengthUnit Unit of the carrier to noise ratio observables
590 */
591 public void setSignalStrengthUnit(final String signalStrengthUnit) {
592 this.signalStrengthUnit = signalStrengthUnit;
593 }
594
595 /** Get the unit of the carrier to noise ratio observables.
596 * @return Unit of the carrier to noise ratio observables
597 */
598 public String getSignalStrengthUnit() {
599 return signalStrengthUnit;
600 }
601
602 /** Set the future or past leap seconds.
603 * @param leapSecondsFuture Future or past leap seconds
604 */
605 public void setLeapSecondsFuture(final int leapSecondsFuture) {
606 this.leapSecondsFuture = leapSecondsFuture;
607 }
608
609 /** Get the future or past leap seconds.
610 * @return Future or past leap seconds
611 */
612 public int getLeapSecondsFuture() {
613 return leapSecondsFuture;
614 }
615
616 /** Set the respective leap second week number.
617 * @param leapSecondsWeekNum Respective leap second week number
618 */
619 public void setLeapSecondsWeekNum(final int leapSecondsWeekNum) {
620 this.leapSecondsWeekNum = leapSecondsWeekNum;
621 }
622
623 /** Get the respective leap second week number.
624 * @return Respective leap second week number
625 */
626 public int getLeapSecondsWeekNum() {
627 return leapSecondsWeekNum;
628 }
629
630 /** Set the respective leap second day number.
631 * @param leapSecondsDayNum Respective leap second day number
632 */
633 public void setLeapSecondsDayNum(final int leapSecondsDayNum) {
634 this.leapSecondsDayNum = leapSecondsDayNum;
635 }
636
637 /** Get the respective leap second day number.
638 * @return Respective leap second day number
639 */
640 public int getLeapSecondsDayNum() {
641 return leapSecondsDayNum;
642 }
643
644 /** Add applied differential code bias corrections.
645 * @param appliedDCBS applied differential code bias corrections to add
646 */
647 public void addAppliedDCBS(final AppliedDCBS appliedDCBS) {
648 listAppliedDCBS.add(appliedDCBS);
649 }
650
651 /** Get the list of applied differential code bias corrections.
652 * @return list of applied differential code bias corrections
653 */
654 public List<AppliedDCBS> getListAppliedDCBS() {
655 return Collections.unmodifiableList(listAppliedDCBS);
656 }
657
658 /** Add antenna center variation corrections.
659 * @param appliedPCVS antenna center variation corrections
660 */
661 public void addAppliedPCVS(final AppliedPCVS appliedPCVS) {
662 listAppliedPCVS.add(appliedPCVS);
663 }
664
665 /** Get the list of antenna center variation corrections.
666 * @return List of antenna center variation corrections
667 */
668 public List<AppliedPCVS> getListAppliedPCVS() {
669 return Collections.unmodifiableList(listAppliedPCVS);
670 }
671
672 /** Add phase shift correction used to generate phases consistent w/r to cycle shifts.
673 * @param phaseShiftCorrection phase shift correction used to generate phases consistent w/r to cycle shifts
674 */
675 public void addPhaseShiftCorrection(final PhaseShiftCorrection phaseShiftCorrection) {
676 phaseShiftCorrections.add(phaseShiftCorrection);
677 }
678
679 /** Get the list of phase shift correction used to generate phases consistent w/r to cycle shifts.
680 * @return List of phase shift correction used to generate phases consistent w/r to cycle shifts
681 */
682 public List<PhaseShiftCorrection> getPhaseShiftCorrections() {
683 return Collections.unmodifiableList(phaseShiftCorrections);
684 }
685
686 /** Add scale factor correction.
687 * @param satelliteSystem system to which this scaling factor applies
688 * @param scaleFactorCorrection scale factor correction
689 */
690 public void addScaleFactorCorrection(final SatelliteSystem satelliteSystem, final ScaleFactorCorrection scaleFactorCorrection) {
691 final List<ScaleFactorCorrection> sfc;
692 synchronized (scaleFactorCorrections) {
693 sfc = scaleFactorCorrections.computeIfAbsent(satelliteSystem, k -> new ArrayList<>());
694 }
695 sfc.add(scaleFactorCorrection);
696 }
697
698 /** Get the list of scale factor correction.
699 * @param satelliteSystem system to which this scaling factor applies
700 * @return List of scale factor correction
701 */
702 public List<ScaleFactorCorrection> getScaleFactorCorrections(final SatelliteSystem satelliteSystem) {
703 final List<ScaleFactorCorrection> sfc = scaleFactorCorrections.get(satelliteSystem);
704 return sfc == null ? Collections.emptyList() : Collections.unmodifiableList(sfc);
705 }
706
707 /** Add GLONASS satellite/channel association.
708 * @param glonassChannel GLONASS satellite/channel association
709 * @since 12.0
710 */
711 public void addGlonassChannel(final GlonassSatelliteChannel glonassChannel) {
712 glonassChannels.add(glonassChannel);
713 }
714
715 /** Get the list of GLONASS satellite/channel associations.
716 * @return List of GLONASS satellite/channel associations
717 * @since 12.0
718 */
719 public List<GlonassSatelliteChannel> getGlonassChannels() {
720 return Collections.unmodifiableList(glonassChannels);
721 }
722
723 /** Set number of satellites.
724 * @param nbSat number of satellites
725 * @since 12.0
726 */
727 public void setNbSat(final int nbSat) {
728 this.nbSat = nbSat;
729 }
730
731 /** Get number of satellites.
732 * @return number of satellites
733 * @since 12.0
734 */
735 public int getNbSat() {
736 return nbSat;
737 }
738
739 /** Set number of observations for a satellite.
740 * @param sat satellite
741 * @param type observation type
742 * @param nbObs number of observations of this type for this satellite
743 * @since 12.0
744 */
745 public void setNbObsPerSatellite(final SatInSystem sat, final ObservationType type, final int nbObs) {
746 final Map<ObservationType, Integer> satNbObs;
747 synchronized (nbObsPerSat) {
748 satNbObs = nbObsPerSat.computeIfAbsent(sat, k -> new HashMap<>());
749 }
750 satNbObs.put(type, nbObs);
751 }
752
753 /** Get an unmodifiable view of the map of number of observations per satellites.
754 * @return unmodifiable view of the map of number of observations per satellites
755 * @since 12.0
756 */
757 public Map<SatInSystem, Map<ObservationType, Integer>> getNbObsPerSat() {
758 return Collections.unmodifiableMap(nbObsPerSat);
759 }
760
761 /** Set number of observations for a satellite.
762 * @param system satellite system
763 * @param types observation types
764 * @since 12.0
765 */
766 public void setTypeObs(final SatelliteSystem system, final List<ObservationType> types) {
767 mapTypeObs.put(system, new ArrayList<>(types));
768 }
769
770 /** Get an unmodifiable view of the map of observation types.
771 * @return unmodifiable view of the map of observation types
772 * @since 12.0
773 */
774 public Map<SatelliteSystem, List<ObservationType>> getTypeObs() {
775 return Collections.unmodifiableMap(mapTypeObs);
776 }
777
778 /** Set the code phase bias correction for GLONASS {@link org.orekit.gnss.PredefinedObservationType#C1C} signal.
779 * @param c1cCodePhaseBias code phase bias correction for GLONASS {@link org.orekit.gnss.PredefinedObservationType#C1C} signal
780 * @since 12.0
781 */
782 public void setC1cCodePhaseBias(final double c1cCodePhaseBias) {
783 this.c1cCodePhaseBias = c1cCodePhaseBias;
784 }
785
786 /** Get the code phase bias correction for GLONASS {@link org.orekit.gnss.PredefinedObservationType#C1C} signal.
787 * @return code phase bias correction for GLONASS {@link org.orekit.gnss.PredefinedObservationType#C1C} signal
788 * @since 12.0
789 */
790 public double getC1cCodePhaseBias() {
791 return c1cCodePhaseBias;
792 }
793
794 /** Set the code phase bias correction for GLONASS {@link org.orekit.gnss.PredefinedObservationType#C1P} signal.
795 * @param c1pCodePhaseBias code phase bias correction for GLONASS {@link org.orekit.gnss.PredefinedObservationType#C1P} signal
796 * @since 12.0
797 */
798 public void setC1pCodePhaseBias(final double c1pCodePhaseBias) {
799 this.c1pCodePhaseBias = c1pCodePhaseBias;
800 }
801
802 /** Get the code phase bias correction for GLONASS {@link org.orekit.gnss.PredefinedObservationType#C1P} signal.
803 * @return code phase bias correction for GLONASS {@link org.orekit.gnss.PredefinedObservationType#C1P} signal
804 * @since 12.0
805 */
806 public double getC1pCodePhaseBias() {
807 return c1pCodePhaseBias;
808 }
809
810 /** Set the code phase bias correction for GLONASS {@link org.orekit.gnss.PredefinedObservationType#C2C} signal.
811 * @param c2cCodePhaseBias code phase bias correction for GLONASS {@link org.orekit.gnss.PredefinedObservationType#C2C} signal
812 * @since 12.0
813 */
814 public void setC2cCodePhaseBias(final double c2cCodePhaseBias) {
815 this.c2cCodePhaseBias = c2cCodePhaseBias;
816 }
817
818 /** Get the code phase bias correction for GLONASS {@link org.orekit.gnss.PredefinedObservationType#C2C} signal.
819 * @return code phase bias correction for GLONASS {@link org.orekit.gnss.PredefinedObservationType#C2C} signal
820 * @since 12.0
821 */
822 public double getC2cCodePhaseBias() {
823 return c2cCodePhaseBias;
824 }
825
826 /** Set the code phase bias correction for GLONASS {@link org.orekit.gnss.PredefinedObservationType#C2P} signal.
827 * @param c2pCodePhaseBias code phase bias correction for GLONASS {@link org.orekit.gnss.PredefinedObservationType#C2P} signal
828 * @since 12.0
829 */
830 public void setC2pCodePhaseBias(final double c2pCodePhaseBias) {
831 this.c2pCodePhaseBias = c2pCodePhaseBias;
832 }
833
834 /** Get the code phase bias correction for GLONASS {@link org.orekit.gnss.PredefinedObservationType#C2P} signal.
835 * @return code phase bias correction for GLONASS {@link org.orekit.gnss.PredefinedObservationType#C2P} signal
836 * @since 12.0
837 */
838 public double getC2pCodePhaseBias() {
839 return c2pCodePhaseBias;
840 }
841
842 }