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