1 /* Copyright 2022-2026 Thales Alenia Space
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
18 package org.orekit.gnss.metric.messages.rtcm.msm;
19
20 import org.orekit.gnss.metric.messages.rtcm.msm.headers.RtcmMsmSignalId;
21
22 /**
23 * Container for RTCM MSM signal-specific data fields.
24 * @author Nathan Schiffmacher
25 * @since 14.0
26 */
27 public class RtcmMsmSignalData {
28
29 /** MSM signal identifier. */
30 private RtcmMsmSignalId signalId;
31
32 /** GNSS signal fine Pseudoranges (DF400, DF405). */
33 private double finePseudorange;
34
35 /** GNSS signal fine Phaserange data (DF401, DF406). */
36 private double finePhaserange;
37
38 /** GNSS Phaserange Lock Time Indicator (DF402, DF407). */
39 private int lockTimeIndicator;
40
41 /** Half-cycle ambiguity indicator (DF420). */
42 private boolean halfCycleAmbiguityIndicator;
43
44 /** GNSS signal CNRs (DF403, DF408). */
45 private double cnr;
46
47 /** GNSS signal fine Phaserange Rates (DF404). */
48 private double finePhaserangeRate;
49
50 /**
51 * Get the MSM signal identifier.
52 * @return MSM signal identifier
53 */
54 public RtcmMsmSignalId getSignalId() {
55 return signalId;
56 }
57
58 /**
59 * Set the MSM signal identifier.
60 * @param signalId MSM signal identifier
61 */
62 public void setSignalId(final RtcmMsmSignalId signalId) {
63 this.signalId = signalId;
64 }
65
66 /**
67 * Get the fine pseudorange.
68 * @return fine pseudorange in meters
69 */
70 public double getFinePseudorange() {
71 return finePseudorange;
72 }
73
74 /**
75 * Set the fine pseudorange.
76 * @param finePseudorange fine pseudorange in meters
77 */
78 public void setFinePseudorange(final double finePseudorange) {
79 this.finePseudorange = finePseudorange;
80 }
81
82 /**
83 * Get the fine phaserange.
84 * @return fine phaserange in meters
85 */
86 public double getFinePhaserange() {
87 return finePhaserange;
88 }
89
90 /**
91 * Set the fine phaserange.
92 * @param finePhaserange fine phaserange in meters
93 */
94 public void setFinePhaserange(final double finePhaserange) {
95 this.finePhaserange = finePhaserange;
96 }
97
98 /**
99 * Get the phaserange lock time indicator.
100 * @return lock time indicator value
101 */
102 public int getLockTimeIndicator() {
103 return lockTimeIndicator;
104 }
105
106 /**
107 * Set the phaserange lock time indicator.
108 * @param lockTimeIndicator lock time indicator value
109 */
110 public void setLockTimeIndicator(final int lockTimeIndicator) {
111 this.lockTimeIndicator = lockTimeIndicator;
112 }
113
114 /**
115 * Get the half-cycle ambiguity indicator.
116 * @return true if half-cycle ambiguity is present, false otherwise
117 */
118 public boolean getHalfCycleAmbiguityIndicator() {
119 return halfCycleAmbiguityIndicator;
120 }
121
122 /**
123 * Set the half-cycle ambiguity indicator.
124 * @param halfCycleAmbiguityIndicator true if half-cycle ambiguity is present, false otherwise
125 */
126 public void setHalfCycleAmbiguityIndicator(final boolean halfCycleAmbiguityIndicator) {
127 this.halfCycleAmbiguityIndicator = halfCycleAmbiguityIndicator;
128 }
129
130 /**
131 * Get the carrier-to-noise ratio.
132 * @return CNR in dB-Hz
133 */
134 public double getCnr() {
135 return cnr;
136 }
137
138 /**
139 * Set the carrier-to-noise ratio.
140 * @param cnr CNR in dB-Hz
141 */
142 public void setCnr(final double cnr) {
143 this.cnr = cnr;
144 }
145
146 /**
147 * Get the fine phaserange rate.
148 * @return fine phaserange rate in meters per second
149 */
150 public double getFinePhaserangeRate() {
151 return finePhaserangeRate;
152 }
153
154 /**
155 * Set the fine phaserange rate.
156 * @param finePhaserangeRate fine phaserange rate in meters per second
157 */
158 public void setFinePhaserangeRate(final double finePhaserangeRate) {
159 this.finePhaserangeRate = finePhaserangeRate;
160 }
161 }