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 }