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.headers;
19  
20  import org.orekit.gnss.PredefinedObservationType;
21  
22  /**
23   * Enumeration of RTCM MSM signal identifiers and their associated observation types.
24   * @author Nathan Schiffmacher
25   * @since 14.0
26   */
27  public enum RtcmMsmSignalId {
28      /** As per DF395 definition, if an ID is noted as Reserved, the decoding software should decode the observables, but refrain from using them. */
29      RESERVED(null, null, null, null),
30  
31      /** GPS L1 C/A MSM signal (code C1C, phase L1C, Doppler D1C, SNR S1C). */
32      GPS_1C(PredefinedObservationType.C1C, PredefinedObservationType.L1C, PredefinedObservationType.D1C, PredefinedObservationType.S1C),
33      /** GPS L1 P(Y) MSM signal (code C1P, phase L1P, Doppler D1P, SNR S1P). */
34      GPS_1P(PredefinedObservationType.C1P, PredefinedObservationType.L1P, PredefinedObservationType.D1P, PredefinedObservationType.S1P),
35      /** GPS L1 W (P(Y) encrypted) MSM signal (code C1W, phase L1W, Doppler D1W, SNR S1W). */
36      GPS_1W(PredefinedObservationType.C1W, PredefinedObservationType.L1W, PredefinedObservationType.D1W, PredefinedObservationType.S1W),
37      /** GPS L2 C/A MSM signal (code C2C, phase L2C, Doppler D2C, SNR S2C). */
38      GPS_2C(PredefinedObservationType.C2C, PredefinedObservationType.L2C, PredefinedObservationType.D2C, PredefinedObservationType.S2C),
39      /** GPS L2 P(Y) MSM signal (code C2P, phase L2P, Doppler D2P, SNR S2P). */
40      GPS_2P(PredefinedObservationType.C2P, PredefinedObservationType.L2P, PredefinedObservationType.D2P, PredefinedObservationType.S2P),
41      /** GPS L2 W (P(Y) encrypted) MSM signal (code C2W, phase L2W, Doppler D2W, SNR S2W). */
42      GPS_2W(PredefinedObservationType.C2W, PredefinedObservationType.L2W, PredefinedObservationType.D2W, PredefinedObservationType.S2W),
43      /** GPS L2C(M) MSM signal (code C2S, phase L2S, Doppler D2S, SNR S2S). */
44      GPS_2S(PredefinedObservationType.C2S, PredefinedObservationType.L2S, PredefinedObservationType.D2S, PredefinedObservationType.S2S),
45      /** GPS L2C(L) MSM signal (code C2L, phase L2L, Doppler D2L, SNR S2L). */
46      GPS_2L(PredefinedObservationType.C2L, PredefinedObservationType.L2L, PredefinedObservationType.D2L, PredefinedObservationType.S2L),
47      /** GPS L2C(M+L) MSM signal (code C2X, phase L2X, Doppler D2X, SNR S2X). */
48      GPS_2X(PredefinedObservationType.C2X, PredefinedObservationType.L2X, PredefinedObservationType.D2X, PredefinedObservationType.S2X),
49      /** GPS L5 I MSM signal (code C5I, phase L5I, Doppler D5I, SNR S5I). */
50      GPS_5I(PredefinedObservationType.C5I, PredefinedObservationType.L5I, PredefinedObservationType.D5I, PredefinedObservationType.S5I),
51      /** GPS L5 Q MSM signal (code C5Q, phase L5Q, Doppler D5Q, SNR S5Q). */
52      GPS_5Q(PredefinedObservationType.C5Q, PredefinedObservationType.L5Q, PredefinedObservationType.D5Q, PredefinedObservationType.S5Q),
53      /** GPS L5 I+Q MSM signal (code C5X, phase L5X, Doppler D5X, SNR S5X). */
54      GPS_5X(PredefinedObservationType.C5X, PredefinedObservationType.L5X, PredefinedObservationType.D5X, PredefinedObservationType.S5X),
55      /** GPS L1C(D) MSM signal (code C1S, phase L1S, Doppler D1S, SNR S1S). */
56      GPS_1S(PredefinedObservationType.C1S, PredefinedObservationType.L1S, PredefinedObservationType.D1S, PredefinedObservationType.S1S),
57      /** GPS L1C(P) MSM signal (code C1L, phase L1L, Doppler D1L, SNR S1L). */
58      GPS_1L(PredefinedObservationType.C1L, PredefinedObservationType.L1L, PredefinedObservationType.D1L, PredefinedObservationType.S1L),
59      /** GPS L1C(D+P) MSM signal (code C1X, phase L1X, Doppler D1X, SNR S1X). */
60      GPS_1X(PredefinedObservationType.C1X, PredefinedObservationType.L1X, PredefinedObservationType.D1X, PredefinedObservationType.S1X),
61  
62      /** Galileo E1 C/A MSM signal (code C1C, phase L1C, Doppler D1C, SNR S1C). */
63      GAL_1C(PredefinedObservationType.C1C, PredefinedObservationType.L1C, PredefinedObservationType.D1C, PredefinedObservationType.S1C),
64      /** Galileo E1 A PRS MSM signal (code C1A, phase L1A, Doppler D1A, SNR S1A). */
65      GAL_1A(PredefinedObservationType.C1A, PredefinedObservationType.L1A, PredefinedObservationType.D1A, PredefinedObservationType.S1A),
66      /** Galileo E1 B I/NAV MSM signal (code C1B, phase L1B, Doppler D1B, SNR S1B). */
67      GAL_1B(PredefinedObservationType.C1B, PredefinedObservationType.L1B, PredefinedObservationType.D1B, PredefinedObservationType.S1B),
68      /** Galileo E1 B+C MSM signal (code C1X, phase L1X, Doppler D1X, SNR S1X). */
69      GAL_1X(PredefinedObservationType.C1X, PredefinedObservationType.L1X, PredefinedObservationType.D1X, PredefinedObservationType.S1X),
70      /** Galileo E1 A+B+C MSM signal (code C1Z, phase L1Z, Doppler D1Z, SNR S1Z). */
71      GAL_1Z(PredefinedObservationType.C1Z, PredefinedObservationType.L1Z, PredefinedObservationType.D1Z, PredefinedObservationType.S1Z),
72      /** Galileo E6 C MSM signal (code C6C, phase L6C, Doppler D6C, SNR S6C). */
73      GAL_6C(PredefinedObservationType.C6C, PredefinedObservationType.L6C, PredefinedObservationType.D6C, PredefinedObservationType.S6C),
74      /** Galileo E6 A PRS MSM signal (code C6A, phase L6A, Doppler D6A, SNR S6A). */
75      GAL_6A(PredefinedObservationType.C6A, PredefinedObservationType.L6A, PredefinedObservationType.D6A, PredefinedObservationType.S6A),
76      /** Galileo E6 B MSM signal (code C6B, phase L6B, Doppler D6B, SNR S6B). */
77      GAL_6B(PredefinedObservationType.C6B, PredefinedObservationType.L6B, PredefinedObservationType.D6B, PredefinedObservationType.S6B),
78      /** Galileo E6 B+C MSM signal (code C6X, phase L6X, Doppler D6X, SNR S6X). */
79      GAL_6X(PredefinedObservationType.C6X, PredefinedObservationType.L6X, PredefinedObservationType.D6X, PredefinedObservationType.S6X),
80      /** Galileo E6 A+B+C MSM signal (code C6Z, phase L6Z, Doppler D6Z, SNR S6Z). */
81      GAL_6Z(PredefinedObservationType.C6Z, PredefinedObservationType.L6Z, PredefinedObservationType.D6Z, PredefinedObservationType.S6Z),
82      /** Galileo E5b I MSM signal (code C7I, phase L7I, Doppler D7I, SNR S7I). */
83      GAL_7I(PredefinedObservationType.C7I, PredefinedObservationType.L7I, PredefinedObservationType.D7I, PredefinedObservationType.S7I),
84      /** Galileo E5b Q MSM signal (code C7Q, phase L7Q, Doppler D7Q, SNR S7Q). */
85      GAL_7Q(PredefinedObservationType.C7Q, PredefinedObservationType.L7Q, PredefinedObservationType.D7Q, PredefinedObservationType.S7Q),
86      /** Galileo E5b I+Q MSM signal (code C7X, phase L7X, Doppler D7X, SNR S7X). */
87      GAL_7X(PredefinedObservationType.C7X, PredefinedObservationType.L7X, PredefinedObservationType.D7X, PredefinedObservationType.S7X),
88      /** Galileo E5(E5a+E5b) I MSM signal (code C8I, phase L8I, Doppler D8I, SNR S8I). */
89      GAL_8I(PredefinedObservationType.C8I, PredefinedObservationType.L8I, PredefinedObservationType.D8I, PredefinedObservationType.S8I),
90      /** Galileo E5(E5a+E5b) Q MSM signal (code C8Q, phase L8Q, Doppler D8Q, SNR S8Q). */
91      GAL_8Q(PredefinedObservationType.C8Q, PredefinedObservationType.L8Q, PredefinedObservationType.D8Q, PredefinedObservationType.S8Q),
92      /** Galileo E5(E5a+E5b) I+Q MSM signal (code C8X, phase L8X, Doppler D8X, SNR S8X). */
93      GAL_8X(PredefinedObservationType.C8X, PredefinedObservationType.L8X, PredefinedObservationType.D8X, PredefinedObservationType.S8X),
94      /** Galileo E5a I MSM signal (code C5I, phase L5I, Doppler D5I, SNR S5I). */
95      GAL_5I(PredefinedObservationType.C5I, PredefinedObservationType.L5I, PredefinedObservationType.D5I, PredefinedObservationType.S5I),
96      /** Galileo E5a Q MSM signal (code C5Q, phase L5Q, Doppler D5Q, SNR S5Q). */
97      GAL_5Q(PredefinedObservationType.C5Q, PredefinedObservationType.L5Q, PredefinedObservationType.D5Q, PredefinedObservationType.S5Q),
98      /** Galileo E5a I+Q MSM signal (code C5X, phase L5X, Doppler D5X, SNR S5X). */
99      GAL_5X(PredefinedObservationType.C5X, PredefinedObservationType.L5X, PredefinedObservationType.D5X, PredefinedObservationType.S5X),
100 
101     /** GLONASS G1 C/A MSM signal (code C1C, phase L1C, Doppler D1C, SNR S1C). */
102     GLO_1C(PredefinedObservationType.C1C, PredefinedObservationType.L1C, PredefinedObservationType.D1C, PredefinedObservationType.S1C),
103     /** GLONASS G1 P MSM signal (code C1P, phase L1P, Doppler D1P, SNR S1P). */
104     GLO_1P(PredefinedObservationType.C1P, PredefinedObservationType.L1P, PredefinedObservationType.D1P, PredefinedObservationType.S1P),
105     /** GLONASS G2 C/A MSM signal (code C2C, phase L2C, Doppler D2C, SNR S2C). */
106     GLO_2C(PredefinedObservationType.C2C, PredefinedObservationType.L2C, PredefinedObservationType.D2C, PredefinedObservationType.S2C),
107     /** GLONASS G2 P MSM signal (code C2P, phase L2P, Doppler D2P, SNR S2P). */
108     GLO_2P(PredefinedObservationType.C2P, PredefinedObservationType.L2P, PredefinedObservationType.D2P, PredefinedObservationType.S2P),
109 
110     /** SBAS L1 C/A MSM signal (code C1C, phase L1C, Doppler D1C, SNR S1C). */
111     SBAS_1C(PredefinedObservationType.C1C, PredefinedObservationType.L1C, PredefinedObservationType.D1C, PredefinedObservationType.S1C),
112     /** SBAS L5 I MSM signal (code C5I, phase L5I, Doppler D5I, SNR S5I). */
113     SBAS_5I(PredefinedObservationType.C5I, PredefinedObservationType.L5I, PredefinedObservationType.D5I, PredefinedObservationType.S5I),
114     /** SBAS L5 Q MSM signal (code C5Q, phase L5Q, Doppler D5Q, SNR S5Q). */
115     SBAS_5Q(PredefinedObservationType.C5Q, PredefinedObservationType.L5Q, PredefinedObservationType.D5Q, PredefinedObservationType.S5Q),
116     /** SBAS L5 I+Q MSM signal (code C5X, phase L5X, Doppler D5X, SNR S5X). */
117     SBAS_5X(PredefinedObservationType.C5X, PredefinedObservationType.L5X, PredefinedObservationType.D5X, PredefinedObservationType.S5X),
118 
119     /** QZSS L1 C/A MSM signal (code C1C, phase L1C, Doppler D1C, SNR S1C). */
120     QZSS_1C(PredefinedObservationType.C1C, PredefinedObservationType.L1C, PredefinedObservationType.D1C, PredefinedObservationType.S1C),
121     /** QZSS L1 L1C(D) MSM signal (code C1S, phase L1S, Doppler D1S, SNR S1S). */
122     QZSS_1S(PredefinedObservationType.C1S, PredefinedObservationType.L1S, PredefinedObservationType.D1S, PredefinedObservationType.S1S),
123     /** QZSS L1 L1C(P) MSM signal (code C1L, phase L1L, Doppler D1L, SNR S1L). */
124     QZSS_1L(PredefinedObservationType.C1L, PredefinedObservationType.L1L, PredefinedObservationType.D1L, PredefinedObservationType.S1L),
125     /** QZSS L1 L1C(D+P) MSM signal (code C1X, phase L1X, Doppler D1X, SNR S1X). */
126     QZSS_1X(PredefinedObservationType.C1X, PredefinedObservationType.L1X, PredefinedObservationType.D1X, PredefinedObservationType.S1X),
127     /** QZSS L2 L2C(M) MSM signal (code C2S, phase L2S, Doppler D2S, SNR S2S). */
128     QZSS_2S(PredefinedObservationType.C2S, PredefinedObservationType.L2S, PredefinedObservationType.D2S, PredefinedObservationType.S2S),
129     /** QZSS L2 L2C(L) MSM signal (code C2L, phase L2L, Doppler D2L, SNR S2L). */
130     QZSS_2L(PredefinedObservationType.C2L, PredefinedObservationType.L2L, PredefinedObservationType.D2L, PredefinedObservationType.S2L),
131     /** QZSS L2 L2C(M+L) MSM signal (code C2X, phase L2X, Doppler D2X, SNR S2X). */
132     QZSS_2X(PredefinedObservationType.C2X, PredefinedObservationType.L2X, PredefinedObservationType.D2X, PredefinedObservationType.S2X),
133     /** QZSS L5 I MSM signal (code C5I, phase L5I, Doppler D5I, SNR S5I). */
134     QZSS_5I(PredefinedObservationType.C5I, PredefinedObservationType.L5I, PredefinedObservationType.D5I, PredefinedObservationType.S5I),
135     /** QZSS L5 Q MSM signal (code C5Q, phase L5Q, Doppler D5Q, SNR S5Q). */
136     QZSS_5Q(PredefinedObservationType.C5Q, PredefinedObservationType.L5Q, PredefinedObservationType.D5Q, PredefinedObservationType.S5Q),
137     /** QZSS L5 I+Q MSM signal (code C5X, phase L5X, Doppler D5X, SNR S5X). */
138     QZSS_5X(PredefinedObservationType.C5X, PredefinedObservationType.L5X, PredefinedObservationType.D5X, PredefinedObservationType.S5X),
139     /** QZSS L6 S MSM signal (code C6S, phase L6S, Doppler D6S, SNR S6S). */
140     QZSS_6S(PredefinedObservationType.C6S, PredefinedObservationType.L6S, PredefinedObservationType.D6S, PredefinedObservationType.S6S),
141     /** QZSS L6 L MSM signal (code C6L, phase L6L, Doppler D6L, SNR S6L). */
142     QZSS_6L(PredefinedObservationType.C6L, PredefinedObservationType.L6L, PredefinedObservationType.D6L, PredefinedObservationType.S6L),
143     /** QZSS L6 S+L MSM signal (code C6X, phase L6X, Doppler D6X, SNR S6X). */
144     QZSS_6X(PredefinedObservationType.C6X, PredefinedObservationType.L6X, PredefinedObservationType.D6X, PredefinedObservationType.S6X),
145 
146     /** BeiDou B1 I MSM signal (code C2I, phase L2I, Doppler D2I, SNR S2I). */
147     BDS_2I(PredefinedObservationType.C2I, PredefinedObservationType.L2I, PredefinedObservationType.D2I, PredefinedObservationType.S2I),
148     /** BeiDou B1 Q MSM signal (code C2Q, phase L2Q, Doppler D2Q, SNR S2Q). */
149     BDS_2Q(PredefinedObservationType.C2Q, PredefinedObservationType.L2Q, PredefinedObservationType.D2Q, PredefinedObservationType.S2Q),
150     /** BeiDou B1 I+Q MSM signal (code C2X, phase L2X, Doppler D2X, SNR S2X). */
151     BDS_2X(PredefinedObservationType.C2X, PredefinedObservationType.L2X, PredefinedObservationType.D2X, PredefinedObservationType.S2X),
152     /** BeiDou B3 I MSM signal (code C6I, phase L6I, Doppler D6I, SNR S6I). */
153     BDS_6I(PredefinedObservationType.C6I, PredefinedObservationType.L6I, PredefinedObservationType.D6I, PredefinedObservationType.S6I),
154     /** BeiDou B3 Q MSM signal (code C6Q, phase L6Q, Doppler D6Q, SNR S6Q). */
155     BDS_6Q(PredefinedObservationType.C6Q, PredefinedObservationType.L6Q, PredefinedObservationType.D6Q, PredefinedObservationType.S6Q),
156     /** BeiDou B3 I+Q MSM signal (code C6X, phase L6X, Doppler D6X, SNR S6X). */
157     BDS_6X(PredefinedObservationType.C6X, PredefinedObservationType.L6X, PredefinedObservationType.D6X, PredefinedObservationType.S6X),
158     /** BeiDou B2 I MSM signal (code C7I, phase L7I, Doppler D7I, SNR S7I). */
159     BDS_7I(PredefinedObservationType.C7I, PredefinedObservationType.L7I, PredefinedObservationType.D7I, PredefinedObservationType.S7I),
160     /** BeiDou B2 Q MSM signal (code C7Q, phase L7Q, Doppler D7Q, SNR S7Q). */
161     BDS_7Q(PredefinedObservationType.C7Q, PredefinedObservationType.L7Q, PredefinedObservationType.D7Q, PredefinedObservationType.S7Q),
162     /** BeiDou B2 I+Q MSM signal (code C7X, phase L7X, Doppler D7X, SNR S7X). */
163     BDS_7X(PredefinedObservationType.C7X, PredefinedObservationType.L7X, PredefinedObservationType.D7X, PredefinedObservationType.S7X);
164 
165     /** Observation type for code measurements. */
166     private final PredefinedObservationType codeType;
167 
168     /** Observation type for carrier phase measurements. */
169     private final PredefinedObservationType phaseType;
170 
171     /** Observation type for Doppler measurements. */
172     private final PredefinedObservationType dopplerType;
173 
174     /** Observation type for signal strength measurements. */
175     private final PredefinedObservationType signalStrengthType;
176 
177     /**
178      * Simple constructor.
179      * @param codeType observation type for code measurements
180      * @param phaseType observation type for carrier phase measurements
181      * @param dopplerType observation type for Doppler measurements
182      * @param signalStrengthType observation type for signal strength measurements
183      */
184     RtcmMsmSignalId(final PredefinedObservationType codeType, final PredefinedObservationType phaseType,
185             final PredefinedObservationType dopplerType, final PredefinedObservationType signalStrengthType) {
186         this.codeType = codeType;
187         this.phaseType = phaseType;
188         this.dopplerType = dopplerType;
189         this.signalStrengthType = signalStrengthType;
190     }
191 
192     /**
193      * Get the observation type for code measurements.
194      * @return observation type for code measurements
195      */
196     public PredefinedObservationType getCodeType() {
197         return codeType;
198     }
199 
200     /**
201      * Get the observation type for carrier phase measurements.
202      * @return observation type for carrier phase measurements
203      */
204     public PredefinedObservationType getPhaseType() {
205         return phaseType;
206     }
207 
208     /**
209      * Get the observation type for Doppler measurements.
210      * @return observation type for Doppler measurements
211      */
212     public PredefinedObservationType getDopplerType() {
213         return dopplerType;
214     }
215 
216     /**
217      * Get the observation type for signal strength measurements.
218      * @return observation type for signal strength measurements
219      */
220     public PredefinedObservationType getSignalStrengthType() {
221         return signalStrengthType;
222     }
223 }