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;
18
19 /**
20 * Enumerate for GNSS predefined signals.
21 *
22 * @author Luc Maisonobe
23 * @since 9.2
24 */
25 public enum PredefinedGnssSignal implements GnssSignal {
26
27 // CHECKSTYLE: stop MultipleStringLiterals check
28 /** GPS L1 (1575.42 MHz). */
29 G01(SatelliteSystem.GPS, "L1", 154),
30
31 /** GPS L2 (1227.6 MHz). */
32 G02(SatelliteSystem.GPS, "L2", 120),
33
34 /** GPS L5 (1176.45 MHz). */
35 G05(SatelliteSystem.GPS, "L5", 115),
36
37 /** GLONASS, "G1" (1602 MHZ). */
38 R01(SatelliteSystem.GLONASS, "G1", 1602.0 / 10.23),
39
40 /** GLONASS, "G2" (1246 MHz). */
41 R02(SatelliteSystem.GLONASS, "G2", 1246.0 / 10.23),
42
43 /** GLONASS, "G3" (1202.025 MHz). */
44 R03(SatelliteSystem.GLONASS, "G3", 117.5),
45
46 /** GLONASS, "G1a" (1600.995 MHZ). */
47 R04(SatelliteSystem.GLONASS, "G1a", 156.5),
48
49 /** GLONASS, "G2a" (1248.06 MHz). */
50 R06(SatelliteSystem.GLONASS, "G2a", 122),
51
52 /** Galileo, "E1" (1575.42 MHz). */
53 E01(SatelliteSystem.GALILEO, "E1", 154),
54
55 /** Galileo E5a (1176.45 MHz). */
56 E05(SatelliteSystem.GALILEO, "E5a", 115),
57
58 /** Galileo E5b (1207.14 MHz). */
59 E07(SatelliteSystem.GALILEO, "E5b", 118),
60
61 /** Galileo E5 (E5a + E5b) (1191.795MHz). */
62 E08(SatelliteSystem.GALILEO, "E5 (E5a+E5b)", 116.5),
63
64 /** Galileo E6 (1278.75 MHz). */
65 E06(SatelliteSystem.GALILEO, "E6", 125),
66
67 /** In the ANTEX files, both C01 and C02 refer to Beidou B1 signal (1561.098 MHz). */
68 C01(SatelliteSystem.BEIDOU, "B1", 152.6),
69
70 /** In the ANTEX files, both C01 and C02 refer to Beidou B1 signal (1561.098 MHz). */
71 C02(SatelliteSystem.BEIDOU, "B1", 152.6),
72
73 /** In the ANTEX files, C05 appears without much reference
74 * for consistency with Rinex 4 tables, we assume it is B2a (1176.45 MHz).
75 */
76 C05(SatelliteSystem.BEIDOU, "B2a", 115),
77
78 /** In the ANTEX files, C06 appears without much reference, we assume it is B2 (1207.14 MHz). */
79 C06(SatelliteSystem.BEIDOU, "B2", 118),
80
81 /** In the ANTEX files, C07 seems to refer to a signal close to E06, probably B3... (1268.52 MHz). */
82 C07(SatelliteSystem.BEIDOU, "B3", 124),
83
84 /** In the ANTEX files, C08 appears without much reference
85 * for consistency with Rinex 4 tables, we assume it is B2 (B2a+B2b) (1191.795 MHz).
86 */
87 C08(SatelliteSystem.BEIDOU, "B2 (B2a+B2b)", 116.5),
88
89 /** Beidou B1 (1561.098 MHz). */
90 B01(SatelliteSystem.BEIDOU, "B1", 152.6),
91
92 /** Beidou B2 (1207.14 MHz). */
93 B02(SatelliteSystem.BEIDOU, "B2", 118),
94
95 /** Beidou B3 (1268.52 MHz). */
96 B03(SatelliteSystem.BEIDOU, "B3", 124),
97
98 /** Beidou B1C (1575.42 MHz). */
99 B1C(SatelliteSystem.BEIDOU, "B1C", 154),
100
101 /** Beidou B1A (1575.42 MHz). */
102 B1A(SatelliteSystem.BEIDOU, "B1A", 154),
103
104 /** Beidou B2a (1176.45 MHz). */
105 B2A(SatelliteSystem.BEIDOU, "B2a", 115),
106
107 /** Beidou B2b (1207.14 MHz). */
108 B2B(SatelliteSystem.BEIDOU, "B2b", 118),
109
110 /** Beidou B2 (B2a + B2b) (1191.795MHz). */
111 B08(SatelliteSystem.BEIDOU, "B2 (B2a+B2b)", 116.5),
112
113 /** Beidou B3A (1268.52 MHz). */
114 B3A(SatelliteSystem.BEIDOU, "B3A", 124),
115
116 /** QZSS L1 (1575.42 MHz). */
117 J01(SatelliteSystem.QZSS, "L1", 154),
118
119 /** QZSS L2 (1227.6 MHz). */
120 J02(SatelliteSystem.QZSS, "L2", 120),
121
122 /** QZSS L5 (1176.45 MHz). */
123 J05(SatelliteSystem.QZSS, "L5", 115),
124
125 /** QZSS LEX (1278.75 MHz). */
126 J06(SatelliteSystem.QZSS, "LEX", 125),
127
128 /** NavIC L1. (1575.42 MHz)
129 * @since 13.0
130 */
131 I01(SatelliteSystem.NAVIC, "L1", 154),
132
133 /** NavIC L5. (1176.45 MHz) */
134 I05(SatelliteSystem.NAVIC, "L5", 115),
135
136 /** NavIC S (2492.028 MHz). */
137 I09(SatelliteSystem.NAVIC, "S", 243.6),
138
139 /** SBAS L1 (1575.42 MHz). */
140 S01(SatelliteSystem.SBAS, "L1", 154),
141
142 /** SBAS L5 (1176.45 MHz). */
143 S05(SatelliteSystem.SBAS, "L5", 115);
144 // CHECKSTYLE: resume MultipleStringLiterals check
145
146 /** Satellite system. */
147 private final SatelliteSystem satelliteSystem;
148
149 /** RINEX name for the frequency. */
150 private final String name;
151
152 /** Ratio f/f0, where {@link GnssSignal#F0 f0} is the common frequency. */
153 private final double ratio;
154
155 /** Simple constructor.
156 * @param name for the frequency
157 * @param satelliteSystem satellite system for which this frequency is defined
158 * @param ratio ratio f/f0, where {@link GnssSignal#F0 f0} is the common frequency
159 */
160 PredefinedGnssSignal(final SatelliteSystem satelliteSystem, final String name, final double ratio) {
161 this.satelliteSystem = satelliteSystem;
162 this.name = name;
163 this.ratio = ratio;
164 }
165
166 /** {@inheritDoc} */
167 @Override
168 public String getName() {
169 return name;
170 }
171
172 /** {@inheritDoc} */
173 @Override
174 public SatelliteSystem getSatelliteSystem() {
175 return satelliteSystem;
176 }
177
178 /** {@inheritDoc} */
179 @Override
180 public double getRatio() {
181 return ratio;
182 }
183
184 /** {@inheritDoc} */
185 @Override
186 public double getFrequency() {
187 return ratio * GnssSignal.F0;
188 }
189
190 }