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.gnss.metric.messages.common;
18  
19  
20  /**
21   * Container for phase bias data.
22   * @author Bryan Cazabonne
23   * @since 11.0
24   */
25  public class PhaseBias {
26  
27      /** GNSS signal and tracking mode identifier. */
28      private final int signalID;
29  
30      /** Signal integer property. */
31      private final boolean isSignalInteger;
32  
33      /** Signal Wide-Lane integer indicator. */
34      private final int signalWideLaneIntegerIndicator;
35  
36      /** Signal discontinuity counter. */
37      private final int discontinuityCounter;
38  
39      /** Phase bias for the corresponding signal identifier. */
40      private final double phaseBias;
41  
42      /**
43       * Constructor.
44       * @param signalID GNSS signal and tracking mode identifier
45       * @param isSignalInteger true if signal has integer property
46       * @param signalWideLaneIntegerIndicator signal Wide-Lane integer indicator
47       * @param discontinuityCounter signal discontinuity counter
48       * @param phaseBias phase bias associated to the signal ID in meters
49       */
50      public PhaseBias(final int signalID, final boolean isSignalInteger,
51                       final int signalWideLaneIntegerIndicator,
52                       final int discontinuityCounter, final double phaseBias) {
53          // Initialize fields
54          this.signalID                       = signalID;
55          this.isSignalInteger                = isSignalInteger;
56          this.signalWideLaneIntegerIndicator = signalWideLaneIntegerIndicator;
57          this.discontinuityCounter           = discontinuityCounter;
58          this.phaseBias                      = phaseBias;
59      }
60  
61      /**
62       * Get the GNSS signal and tracking mode identifier.
63       * @return the GNSS signal and tracking mode identifier
64       */
65      public int getSignalID() {
66          return signalID;
67      }
68  
69      /**
70       * Get the flag indicating is signal has integer property.
71       * @return true is signal has integer property
72       */
73      public boolean isSignalInteger() {
74          return isSignalInteger;
75      }
76  
77      /**
78       * Get the signal Wide-Lane integer indicator.
79       * <ul>
80       *   <li>0: No wide-lane with integer property for this signal or satellite</li>
81       *   <li>1: Signal belongs to group two of wide-lanes with integer property</li>
82       *   <li>2: Signal belongs to group one of wide-lanes with integer property</li>
83       *   <li>3: Signal belongs to group one of wide-lanes with integer property</li>
84       * </ul>
85       * @return the signal Wide-Lane indicator
86       */
87      public int getSignalWideLaneIntegerIndicator() {
88          return signalWideLaneIntegerIndicator;
89      }
90  
91      /**
92       * Get the signal phase discontinuity counter.
93       * <p>
94       * Increased for every discontinuity in phase
95       * </p>
96       * @return the signal phase discontinuity counter
97       */
98      public int getDiscontinuityCounter() {
99          return discontinuityCounter;
100     }
101 
102     /**
103      * Get the phase bias associated to the signal ID.
104      * @return the phase bias in meters
105      */
106     public double getPhaseBias() {
107         return phaseBias;
108     }
109 
110 }