62Code::operator std::string()
const
64 const std::string filler =
" | ";
67 if (*
this &
G1C) {
str += (!
str.empty() ? filler :
"") +
"G1C"; }
68 if (*
this &
G1S) {
str += (!
str.empty() ? filler :
"") +
"G1S"; }
69 if (*
this &
G1L) {
str += (!
str.empty() ? filler :
"") +
"G1L"; }
70 if (*
this &
G1X) {
str += (!
str.empty() ? filler :
"") +
"G1X"; }
71 if (*
this &
G1P) {
str += (!
str.empty() ? filler :
"") +
"G1P"; }
72 if (*
this &
G1W) {
str += (!
str.empty() ? filler :
"") +
"G1W"; }
73 if (*
this &
G1Y) {
str += (!
str.empty() ? filler :
"") +
"G1Y"; }
74 if (*
this &
G1M) {
str += (!
str.empty() ? filler :
"") +
"G1M"; }
75 if (*
this &
G1N) {
str += (!
str.empty() ? filler :
"") +
"G1N"; }
76 if (*
this &
G2C) {
str += (!
str.empty() ? filler :
"") +
"G2C"; }
77 if (*
this &
G2D) {
str += (!
str.empty() ? filler :
"") +
"G2D"; }
78 if (*
this &
G2S) {
str += (!
str.empty() ? filler :
"") +
"G2S"; }
79 if (*
this &
G2L) {
str += (!
str.empty() ? filler :
"") +
"G2L"; }
80 if (*
this &
G2X) {
str += (!
str.empty() ? filler :
"") +
"G2X"; }
81 if (*
this &
G2P) {
str += (!
str.empty() ? filler :
"") +
"G2P"; }
82 if (*
this &
G2W) {
str += (!
str.empty() ? filler :
"") +
"G2W"; }
83 if (*
this &
G2Y) {
str += (!
str.empty() ? filler :
"") +
"G2Y"; }
84 if (*
this &
G2M) {
str += (!
str.empty() ? filler :
"") +
"G2M"; }
85 if (*
this &
G2N) {
str += (!
str.empty() ? filler :
"") +
"G2N"; }
86 if (*
this &
G5I) {
str += (!
str.empty() ? filler :
"") +
"G5I"; }
87 if (*
this &
G5Q) {
str += (!
str.empty() ? filler :
"") +
"G5Q"; }
88 if (*
this &
G5X) {
str += (!
str.empty() ? filler :
"") +
"G5X"; }
90 if (*
this &
E1A) {
str += (!
str.empty() ? filler :
"") +
"E1A"; }
91 if (*
this &
E1B) {
str += (!
str.empty() ? filler :
"") +
"E1B"; }
92 if (*
this &
E1C) {
str += (!
str.empty() ? filler :
"") +
"E1C"; }
93 if (*
this &
E1X) {
str += (!
str.empty() ? filler :
"") +
"E1X"; }
94 if (*
this &
E1Z) {
str += (!
str.empty() ? filler :
"") +
"E1Z"; }
95 if (*
this &
E5I) {
str += (!
str.empty() ? filler :
"") +
"E5I"; }
96 if (*
this &
E5Q) {
str += (!
str.empty() ? filler :
"") +
"E5Q"; }
97 if (*
this &
E5X) {
str += (!
str.empty() ? filler :
"") +
"E5X"; }
98 if (*
this &
E6A) {
str += (!
str.empty() ? filler :
"") +
"E6A"; }
99 if (*
this &
E6B) {
str += (!
str.empty() ? filler :
"") +
"E6B"; }
100 if (*
this &
E6C) {
str += (!
str.empty() ? filler :
"") +
"E6C"; }
101 if (*
this &
E6X) {
str += (!
str.empty() ? filler :
"") +
"E6X"; }
102 if (*
this &
E6Z) {
str += (!
str.empty() ? filler :
"") +
"E6Z"; }
103 if (*
this &
E7I) {
str += (!
str.empty() ? filler :
"") +
"E7I"; }
104 if (*
this &
E7Q) {
str += (!
str.empty() ? filler :
"") +
"E7Q"; }
105 if (*
this &
E7X) {
str += (!
str.empty() ? filler :
"") +
"E7X"; }
106 if (*
this &
E8I) {
str += (!
str.empty() ? filler :
"") +
"E8I"; }
107 if (*
this &
E8Q) {
str += (!
str.empty() ? filler :
"") +
"E8Q"; }
108 if (*
this &
E8X) {
str += (!
str.empty() ? filler :
"") +
"E8X"; }
110 if (*
this &
R1C) {
str += (!
str.empty() ? filler :
"") +
"R1C"; }
111 if (*
this &
R1P) {
str += (!
str.empty() ? filler :
"") +
"R1P"; }
112 if (*
this &
R2C) {
str += (!
str.empty() ? filler :
"") +
"R2C"; }
113 if (*
this &
R2P) {
str += (!
str.empty() ? filler :
"") +
"R2P"; }
114 if (*
this &
R3I) {
str += (!
str.empty() ? filler :
"") +
"R3I"; }
115 if (*
this &
R3Q) {
str += (!
str.empty() ? filler :
"") +
"R3Q"; }
116 if (*
this &
R3X) {
str += (!
str.empty() ? filler :
"") +
"R3X"; }
117 if (*
this &
R4A) {
str += (!
str.empty() ? filler :
"") +
"R4A"; }
118 if (*
this &
R4B) {
str += (!
str.empty() ? filler :
"") +
"R4B"; }
119 if (*
this &
R4X) {
str += (!
str.empty() ? filler :
"") +
"R4X"; }
120 if (*
this &
R6A) {
str += (!
str.empty() ? filler :
"") +
"R6A"; }
121 if (*
this &
R6B) {
str += (!
str.empty() ? filler :
"") +
"R6B"; }
122 if (*
this &
R6X) {
str += (!
str.empty() ? filler :
"") +
"R6X"; }
124 if (*
this &
B1D) {
str += (!
str.empty() ? filler :
"") +
"B1D"; }
125 if (*
this &
B1P) {
str += (!
str.empty() ? filler :
"") +
"B1P"; }
126 if (*
this &
B1X) {
str += (!
str.empty() ? filler :
"") +
"B1X"; }
127 if (*
this &
B2I) {
str += (!
str.empty() ? filler :
"") +
"B2I"; }
128 if (*
this &
B2Q) {
str += (!
str.empty() ? filler :
"") +
"B2Q"; }
129 if (*
this &
B2X) {
str += (!
str.empty() ? filler :
"") +
"B2X"; }
130 if (*
this &
B5D) {
str += (!
str.empty() ? filler :
"") +
"B5D"; }
131 if (*
this &
B5P) {
str += (!
str.empty() ? filler :
"") +
"B5P"; }
132 if (*
this &
B5X) {
str += (!
str.empty() ? filler :
"") +
"B5X"; }
133 if (*
this &
B6I) {
str += (!
str.empty() ? filler :
"") +
"B6I"; }
134 if (*
this &
B6Q) {
str += (!
str.empty() ? filler :
"") +
"B6Q"; }
135 if (*
this &
B6X) {
str += (!
str.empty() ? filler :
"") +
"B6X"; }
136 if (*
this &
B6A) {
str += (!
str.empty() ? filler :
"") +
"B6A"; }
137 if (*
this &
B7I) {
str += (!
str.empty() ? filler :
"") +
"B7I"; }
138 if (*
this &
B7Q) {
str += (!
str.empty() ? filler :
"") +
"B7Q"; }
139 if (*
this &
B7X) {
str += (!
str.empty() ? filler :
"") +
"B7X"; }
140 if (*
this &
B7D) {
str += (!
str.empty() ? filler :
"") +
"B7D"; }
141 if (*
this &
B7P) {
str += (!
str.empty() ? filler :
"") +
"B7P"; }
142 if (*
this &
B7Z) {
str += (!
str.empty() ? filler :
"") +
"B7Z"; }
143 if (*
this &
B8D) {
str += (!
str.empty() ? filler :
"") +
"B8D"; }
144 if (*
this &
B8P) {
str += (!
str.empty() ? filler :
"") +
"B8P"; }
145 if (*
this &
B8X) {
str += (!
str.empty() ? filler :
"") +
"B8X"; }
147 if (*
this &
J1C) {
str += (!
str.empty() ? filler :
"") +
"J1C"; }
148 if (*
this &
J1S) {
str += (!
str.empty() ? filler :
"") +
"J1S"; }
149 if (*
this &
J1L) {
str += (!
str.empty() ? filler :
"") +
"J1L"; }
150 if (*
this &
J1X) {
str += (!
str.empty() ? filler :
"") +
"J1X"; }
151 if (*
this &
J1Z) {
str += (!
str.empty() ? filler :
"") +
"J1Z"; }
152 if (*
this &
J2S) {
str += (!
str.empty() ? filler :
"") +
"J2S"; }
153 if (*
this &
J2L) {
str += (!
str.empty() ? filler :
"") +
"J2L"; }
154 if (*
this &
J2X) {
str += (!
str.empty() ? filler :
"") +
"J2X"; }
155 if (*
this &
J5I) {
str += (!
str.empty() ? filler :
"") +
"J5I"; }
156 if (*
this &
J5Q) {
str += (!
str.empty() ? filler :
"") +
"J5Q"; }
157 if (*
this &
J5X) {
str += (!
str.empty() ? filler :
"") +
"J5X"; }
158 if (*
this &
J5D) {
str += (!
str.empty() ? filler :
"") +
"J5D"; }
159 if (*
this &
J5P) {
str += (!
str.empty() ? filler :
"") +
"J5P"; }
160 if (*
this &
J5Z) {
str += (!
str.empty() ? filler :
"") +
"J5Z"; }
161 if (*
this &
J6S) {
str += (!
str.empty() ? filler :
"") +
"J6S"; }
162 if (*
this &
J6L) {
str += (!
str.empty() ? filler :
"") +
"J6L"; }
163 if (*
this &
J6X) {
str += (!
str.empty() ? filler :
"") +
"J6X"; }
164 if (*
this &
J6E) {
str += (!
str.empty() ? filler :
"") +
"J6E"; }
165 if (*
this &
J6Z) {
str += (!
str.empty() ? filler :
"") +
"J6Z"; }
167 if (*
this &
I5A) {
str += (!
str.empty() ? filler :
"") +
"I5A"; }
168 if (*
this &
I5B) {
str += (!
str.empty() ? filler :
"") +
"I5B"; }
169 if (*
this &
I5C) {
str += (!
str.empty() ? filler :
"") +
"I5C"; }
170 if (*
this &
I5X) {
str += (!
str.empty() ? filler :
"") +
"I5X"; }
171 if (*
this &
I9A) {
str += (!
str.empty() ? filler :
"") +
"I9A"; }
172 if (*
this &
I9B) {
str += (!
str.empty() ? filler :
"") +
"I9B"; }
173 if (*
this &
I9C) {
str += (!
str.empty() ? filler :
"") +
"I9C"; }
174 if (*
this &
I9X) {
str += (!
str.empty() ? filler :
"") +
"I9X"; }
176 if (*
this &
S1C) {
str += (!
str.empty() ? filler :
"") +
"S1C"; }
177 if (*
this &
S5I) {
str += (!
str.empty() ? filler :
"") +
"S5I"; }
178 if (*
this &
S5Q) {
str += (!
str.empty() ? filler :
"") +
"S5Q"; }
179 if (*
this &
S5X) {
str += (!
str.empty() ? filler :
"") +
"S5X"; }
193 if (attribute ==
'C') {
return G1C; }
194 if (attribute ==
'S') {
return G1S; }
195 if (attribute ==
'L') {
return G1L; }
196 if (attribute ==
'X') {
return G1X; }
197 if (attribute ==
'P') {
return G1P; }
198 if (attribute ==
'W') {
return G1W; }
199 if (attribute ==
'Y') {
return G1Y; }
200 if (attribute ==
'M') {
return G1M; }
201 if (attribute ==
'N') {
return G1N; }
204 if (attribute ==
'C') {
return G2C; }
205 if (attribute ==
'D') {
return G2D; }
206 if (attribute ==
'S') {
return G2S; }
207 if (attribute ==
'L') {
return G2L; }
208 if (attribute ==
'X') {
return G2X; }
209 if (attribute ==
'P') {
return G2P; }
210 if (attribute ==
'W') {
return G2W; }
211 if (attribute ==
'Y') {
return G2Y; }
212 if (attribute ==
'M') {
return G2M; }
213 if (attribute ==
'N') {
return G2N; }
216 if (attribute ==
'I') {
return G5I; }
217 if (attribute ==
'Q') {
return G5Q; }
218 if (attribute ==
'X') {
return G5X; }
221 if (attribute ==
'A') {
return E1A; }
222 if (attribute ==
'B') {
return E1B; }
223 if (attribute ==
'C') {
return E1C; }
224 if (attribute ==
'X') {
return E1X; }
225 if (attribute ==
'Z') {
return E1Z; }
228 if (attribute ==
'I') {
return E5I; }
229 if (attribute ==
'Q') {
return E5Q; }
230 if (attribute ==
'X') {
return E5X; }
233 if (attribute ==
'A') {
return E6A; }
234 if (attribute ==
'B') {
return E6B; }
235 if (attribute ==
'C') {
return E6C; }
236 if (attribute ==
'X') {
return E6X; }
237 if (attribute ==
'Z') {
return E6Z; }
240 if (attribute ==
'I') {
return E7I; }
241 if (attribute ==
'Q') {
return E7Q; }
242 if (attribute ==
'X') {
return E7X; }
245 if (attribute ==
'I') {
return E8I; }
246 if (attribute ==
'Q') {
return E8Q; }
247 if (attribute ==
'X') {
return E8X; }
251 if (attribute ==
'C') {
return R1C; }
252 if (attribute ==
'P') {
return R1P; }
255 if (attribute ==
'C') {
return R2C; }
256 if (attribute ==
'P') {
return R2P; }
259 if (attribute ==
'I') {
return R3I; }
260 if (attribute ==
'Q') {
return R3Q; }
261 if (attribute ==
'X') {
return R3X; }
264 if (attribute ==
'A') {
return R4A; }
265 if (attribute ==
'B') {
return R4B; }
266 if (attribute ==
'X') {
return R4X; }
269 if (attribute ==
'A') {
return R6A; }
270 if (attribute ==
'B') {
return R6B; }
271 if (attribute ==
'X') {
return R6X; }
275 if (attribute ==
'D') {
return B1D; }
276 if (attribute ==
'P') {
return B1P; }
277 if (attribute ==
'X') {
return B1X; }
280 if (attribute ==
'I') {
return B2I; }
281 if (attribute ==
'Q') {
return B2Q; }
282 if (attribute ==
'X') {
return B2X; }
285 if (attribute ==
'D') {
return B5D; }
286 if (attribute ==
'P') {
return B5P; }
287 if (attribute ==
'X') {
return B5X; }
290 if (attribute ==
'I') {
return B6I; }
291 if (attribute ==
'Q') {
return B6Q; }
292 if (attribute ==
'X') {
return B6X; }
293 if (attribute ==
'A') {
return B6A; }
296 if (attribute ==
'I') {
return B7I; }
297 if (attribute ==
'Q') {
return B7Q; }
298 if (attribute ==
'X') {
return B7X; }
299 if (attribute ==
'D') {
return B7D; }
300 if (attribute ==
'P') {
return B7P; }
301 if (attribute ==
'Z') {
return B7Z; }
304 if (attribute ==
'D') {
return B8D; }
305 if (attribute ==
'P') {
return B8P; }
306 if (attribute ==
'X') {
return B8X; }
310 if (attribute ==
'C') {
return J1C; }
311 if (attribute ==
'S') {
return J1S; }
312 if (attribute ==
'L') {
return J1L; }
313 if (attribute ==
'X') {
return J1X; }
314 if (attribute ==
'Z') {
return J1Z; }
317 if (attribute ==
'S') {
return J2S; }
318 if (attribute ==
'L') {
return J2L; }
319 if (attribute ==
'X') {
return J2X; }
322 if (attribute ==
'I') {
return J5I; }
323 if (attribute ==
'Q') {
return J5Q; }
324 if (attribute ==
'X') {
return J5X; }
325 if (attribute ==
'D') {
return J5D; }
326 if (attribute ==
'P') {
return J5P; }
327 if (attribute ==
'Z') {
return J5Z; }
330 if (attribute ==
'S') {
return J6S; }
331 if (attribute ==
'L') {
return J6L; }
332 if (attribute ==
'X') {
return J6X; }
333 if (attribute ==
'E') {
return J6E; }
334 if (attribute ==
'Z') {
return J6Z; }
338 if (attribute ==
'A') {
return I5A; }
339 if (attribute ==
'B') {
return I5B; }
340 if (attribute ==
'C') {
return I5C; }
341 if (attribute ==
'X') {
return I5X; }
344 if (attribute ==
'A') {
return I9A; }
345 if (attribute ==
'B') {
return I9B; }
346 if (attribute ==
'C') {
return I9C; }
347 if (attribute ==
'X') {
return I9X; }
351 if (attribute ==
'C') {
return S1C; }
354 if (attribute ==
'I') {
return S5I; }
355 if (attribute ==
'Q') {
return S5Q; }
356 if (attribute ==
'X') {
return S5X; }
363 LOG_WARN(
"Can't convert frequency '{}' and attribute '{}'. Unkown code.", freq, attribute);
370 if (code ==
G1C) {
return "GPS L1 - C/A-code"; }
371 if (code ==
G1S) {
return "GPS L1 - L1C-D (data)"; }
372 if (code ==
G1L) {
return "GPS L1 - L1C-P (pilot)"; }
373 if (code ==
G1X) {
return "GPS L1 - L1C-(D+P) (combined)"; }
374 if (code ==
G1P) {
return "GPS L1 - P-code (unencrypted)"; }
375 if (code ==
G1W) {
return "GPS L1 - Semicodeless P(Y) tracking (Z-tracking)"; }
376 if (code ==
G1Y) {
return "GPS L1 - Y-code (with decryption)"; }
377 if (code ==
G1M) {
return "GPS L1 - M-code"; }
378 if (code ==
G1N) {
return "GPS L1 - codeless"; }
379 if (code ==
G2C) {
return "GPS L2 - C/A-code"; }
380 if (code ==
G2D) {
return "GPS L2 - Semi-codeless P(Y) tracking (L1 C/A + (P2-P1))"; }
381 if (code ==
G2S) {
return "GPS L2 - L2C(M) (medium)"; }
382 if (code ==
G2L) {
return "GPS L2 - L2C(L) (long)"; }
383 if (code ==
G2X) {
return "GPS L2 - L2C(M+L) (combined)"; }
384 if (code ==
G2P) {
return "GPS L2 - P-code (unencrypted)"; }
385 if (code ==
G2W) {
return "GPS L2 - Semicodeless P(Y) tracking (Z-tracking)"; }
386 if (code ==
G2Y) {
return "GPS L2 - Y-code (with decryption)"; }
387 if (code ==
G2M) {
return "GPS L2 - M-code"; }
388 if (code ==
G2N) {
return "GPS L2 - codeless"; }
389 if (code ==
G5I) {
return "GPS L5 - Data"; }
390 if (code ==
G5Q) {
return "GPS L5 - Pilot"; }
391 if (code ==
G5X) {
return "GPS L5 - Combined"; }
393 if (code ==
E1A) {
return "GAL E1 - PRS signal"; }
394 if (code ==
E1B) {
return "GAL E1 - OS (data)"; }
395 if (code ==
E1C) {
return "GAL E1 - OS (pilot)"; }
396 if (code ==
E1X) {
return "GAL E1 - OS(B+C) (combined)"; }
397 if (code ==
E1Z) {
return "GAL E1 - PRS + OS (data + pilot)"; }
398 if (code ==
E5I) {
return "GAL E5a - Data"; }
399 if (code ==
E5Q) {
return "GAL E5a - Pilot"; }
400 if (code ==
E5X) {
return "GAL E5a - Combined"; }
401 if (code ==
E6A) {
return "GAL E6 - PRS signal"; }
402 if (code ==
E6B) {
return "GAL E6 - Data"; }
403 if (code ==
E6C) {
return "GAL E6 - Pilot"; }
404 if (code ==
E6X) {
return "GAL E6 - Combined (B+C)"; }
405 if (code ==
E6Z) {
return "GAL E6 - PRS + OS (A+B+C)"; }
406 if (code ==
E7I) {
return "GAL E5b - Data"; }
407 if (code ==
E7Q) {
return "GAL E5b - Pilot"; }
408 if (code ==
E7X) {
return "GAL E5b - Combined"; }
409 if (code ==
E8I) {
return "GAL E5(a+b) - AltBOC (data)"; }
410 if (code ==
E8Q) {
return "GAL E5(a+b) - AltBOC (pilot)"; }
411 if (code ==
E8X) {
return "GAL E5(a+b) - AltBOC (combined)"; }
413 if (code ==
R1C) {
return "GLO L1 - C/A-code"; }
414 if (code ==
R1P) {
return "GLO L1 - P-code"; }
415 if (code ==
R2C) {
return "GLO L2 - C/A-code"; }
416 if (code ==
R2P) {
return "GLO L2 - P-code"; }
417 if (code ==
R3I) {
return "GLO L3 - Data"; }
418 if (code ==
R3Q) {
return "GLO L3 - Pilot"; }
419 if (code ==
R3X) {
return "GLO L3 - Combined"; }
420 if (code ==
R4A) {
return "GLO G1a - L1OCd (data)"; }
421 if (code ==
R4B) {
return "GLO G1a - L1OCp (pilot)"; }
422 if (code ==
R4X) {
return "GLO G1a - L1OCd+L1OCp (combined)"; }
423 if (code ==
R6A) {
return "GLO G2a - L2CSI (data)"; }
424 if (code ==
R6B) {
return "GLO G2a - L2OCp (pilot)"; }
425 if (code ==
R6X) {
return "GLO G2a - L2CSI+L2OCp (combined)"; }
427 if (code ==
B1D) {
return "BeiDou B1 - Data (D)"; }
428 if (code ==
B1P) {
return "BeiDou B1 - Pilot(P)"; }
429 if (code ==
B1X) {
return "BeiDou B1 - D+P"; }
430 if (code ==
B2I) {
return "BeiDou B1-2 - B1I(OS)"; }
431 if (code ==
B2Q) {
return "BeiDou B1-2 - B1Q"; }
432 if (code ==
B2X) {
return "BeiDou B1-2 - B1I(OS), B1Q, combined"; }
433 if (code ==
B5D) {
return "BeiDou B2a - Data (D)"; }
434 if (code ==
B5P) {
return "BeiDou B2a - Pilot(P)"; }
435 if (code ==
B5X) {
return "BeiDou B2a - D+P"; }
436 if (code ==
B6I) {
return "BeiDou B3 - B3I"; }
437 if (code ==
B6Q) {
return "BeiDou B3 - B3Q"; }
438 if (code ==
B6X) {
return "BeiDou B3 - B3I, B3Q, combined"; }
439 if (code ==
B6A) {
return "BeiDou B3 - B3A"; }
440 if (code ==
B7I) {
return "BeiDou B2b (BDS-2) - B2I(OS)"; }
441 if (code ==
B7Q) {
return "BeiDou B2b (BDS-2) - B2Q"; }
442 if (code ==
B7X) {
return "BeiDou B2b (BDS-2) - B2I(OS), B2Q, combined"; }
443 if (code ==
B7D) {
return "BeiDou B2b (BDS-3) - Data (D)"; }
444 if (code ==
B7P) {
return "BeiDou B2b (BDS-3) - Pilot(P)"; }
445 if (code ==
B7Z) {
return "BeiDou B2b (BDS-3) - D+P"; }
446 if (code ==
B8D) {
return "BeiDou B2 (B2a+B2b) - Data (D)"; }
447 if (code ==
B8P) {
return "BeiDou B2 (B2a+B2b) - Pilot(P)"; }
448 if (code ==
B8X) {
return "BeiDou B2 (B2a+B2b) - D+P"; }
450 if (code ==
J1C) {
return "QZSS L1 - C/A-code"; }
451 if (code ==
J1S) {
return "QZSS L1 - L1C (data)"; }
452 if (code ==
J1L) {
return "QZSS L1 - L1C (pilot)"; }
453 if (code ==
J1X) {
return "QZSS L1 - L1C (combined)"; }
454 if (code ==
J1Z) {
return "QZSS L1 - L1-SAIF signal"; }
455 if (code ==
J2S) {
return "QZSS L2 - L2C-code (medium)"; }
456 if (code ==
J2L) {
return "QZSS L2 - L2C-code (long)"; }
457 if (code ==
J2X) {
return "QZSS L2 - L2C-code (combined)"; }
458 if (code ==
J5I) {
return "QZSS L5 - Data"; }
459 if (code ==
J5Q) {
return "QZSS L5 - Pilot"; }
460 if (code ==
J5X) {
return "QZSS L5 - Combined"; }
461 if (code ==
J5D) {
return "QZSS L5S - I"; }
462 if (code ==
J5P) {
return "QZSS L5S - Q"; }
463 if (code ==
J5Z) {
return "QZSS L5S - I+Q"; }
464 if (code ==
J6S) {
return "QZSS L6 - L6D LEX signal (short)"; }
465 if (code ==
J6L) {
return "QZSS L6 - L6P LEX signal (long)"; }
466 if (code ==
J6X) {
return "QZSS L6 - L6(D+P) LEX signal (combined)"; }
467 if (code ==
J6E) {
return "QZSS L6 - L6E"; }
468 if (code ==
J6Z) {
return "QZSS L6 - L6(D+E)"; }
470 if (code ==
I5A) {
return "IRNSS L5 - SPS Signal"; }
471 if (code ==
I5B) {
return "IRNSS L5 - RS (data)"; }
472 if (code ==
I5C) {
return "IRNSS L5 - RS (pilot)"; }
473 if (code ==
I5X) {
return "IRNSS L5 - RS (combined)"; }
474 if (code ==
I9A) {
return "IRNSS S - SPS signal"; }
475 if (code ==
I9B) {
return "IRNSS S - RS (data)"; }
476 if (code ==
I9C) {
return "IRNSS S - RS (pilot)"; }
477 if (code ==
I9X) {
return "IRNSS S - RS (combined)"; }
479 if (code ==
S1C) {
return "SBAS L1 - C/A-code"; }
480 if (code ==
S5I) {
return "SBAS L5 - Data"; }
481 if (code ==
S5Q) {
return "SBAS L5 - Pilot"; }
482 if (code ==
S5X) {
return "SBAS L5 - Combined"; }
484 return "Unknown code.";
494 if (code ==
G1C) {
return G01; }
495 if (code ==
G1S) {
return G01; }
496 if (code ==
G1L) {
return G01; }
497 if (code ==
G1X) {
return G01; }
498 if (code ==
G1P) {
return G01; }
499 if (code ==
G1W) {
return G01; }
500 if (code ==
G1Y) {
return G01; }
501 if (code ==
G1M) {
return G01; }
502 if (code ==
G1N) {
return G01; }
503 if (code ==
G2C) {
return G02; }
504 if (code ==
G2D) {
return G02; }
505 if (code ==
G2S) {
return G02; }
506 if (code ==
G2L) {
return G02; }
507 if (code ==
G2X) {
return G02; }
508 if (code ==
G2P) {
return G02; }
509 if (code ==
G2W) {
return G02; }
510 if (code ==
G2Y) {
return G02; }
511 if (code ==
G2M) {
return G02; }
512 if (code ==
G2N) {
return G02; }
513 if (code ==
G5I) {
return G05; }
514 if (code ==
G5Q) {
return G05; }
515 if (code ==
G5X) {
return G05; }
517 if (code ==
E1A) {
return E01; }
518 if (code ==
E1B) {
return E01; }
519 if (code ==
E1C) {
return E01; }
520 if (code ==
E1X) {
return E01; }
521 if (code ==
E1Z) {
return E01; }
522 if (code ==
E5I) {
return E05; }
523 if (code ==
E5Q) {
return E05; }
524 if (code ==
E5X) {
return E05; }
525 if (code ==
E6A) {
return E06; }
526 if (code ==
E6B) {
return E06; }
527 if (code ==
E6C) {
return E06; }
528 if (code ==
E6X) {
return E06; }
529 if (code ==
E6Z) {
return E06; }
530 if (code ==
E7I) {
return E07; }
531 if (code ==
E7Q) {
return E07; }
532 if (code ==
E7X) {
return E07; }
533 if (code ==
E8I) {
return E08; }
534 if (code ==
E8Q) {
return E08; }
535 if (code ==
E8X) {
return E08; }
537 if (code ==
R1C) {
return R01; }
538 if (code ==
R1P) {
return R01; }
539 if (code ==
R2C) {
return R02; }
540 if (code ==
R2P) {
return R02; }
541 if (code ==
R3I) {
return R03; }
542 if (code ==
R3Q) {
return R03; }
543 if (code ==
R3X) {
return R03; }
544 if (code ==
R4A) {
return R04; }
545 if (code ==
R4B) {
return R04; }
546 if (code ==
R4X) {
return R04; }
547 if (code ==
R6A) {
return R06; }
548 if (code ==
R6B) {
return R06; }
549 if (code ==
R6X) {
return R06; }
551 if (code ==
B1D) {
return B01; }
552 if (code ==
B1P) {
return B01; }
553 if (code ==
B1X) {
return B01; }
554 if (code ==
B2I) {
return B02; }
555 if (code ==
B2Q) {
return B02; }
556 if (code ==
B2X) {
return B02; }
557 if (code ==
B5D) {
return B05; }
558 if (code ==
B5P) {
return B05; }
559 if (code ==
B5X) {
return B05; }
560 if (code ==
B6I) {
return B06; }
561 if (code ==
B6Q) {
return B06; }
562 if (code ==
B6X) {
return B06; }
563 if (code ==
B6A) {
return B06; }
564 if (code ==
B7I) {
return B07; }
565 if (code ==
B7Q) {
return B07; }
566 if (code ==
B7X) {
return B07; }
567 if (code ==
B7D) {
return B07; }
568 if (code ==
B7P) {
return B07; }
569 if (code ==
B7Z) {
return B07; }
570 if (code ==
B8D) {
return B08; }
571 if (code ==
B8P) {
return B08; }
572 if (code ==
B8X) {
return B08; }
574 if (code ==
J1C) {
return J01; }
575 if (code ==
J1S) {
return J01; }
576 if (code ==
J1L) {
return J01; }
577 if (code ==
J1X) {
return J01; }
578 if (code ==
J1Z) {
return J01; }
579 if (code ==
J2S) {
return J02; }
580 if (code ==
J2L) {
return J02; }
581 if (code ==
J2X) {
return J02; }
582 if (code ==
J5I) {
return J05; }
583 if (code ==
J5Q) {
return J05; }
584 if (code ==
J5X) {
return J05; }
585 if (code ==
J5D) {
return J05; }
586 if (code ==
J5P) {
return J05; }
587 if (code ==
J5Z) {
return J05; }
588 if (code ==
J6S) {
return J06; }
589 if (code ==
J6L) {
return J06; }
590 if (code ==
J6X) {
return J06; }
591 if (code ==
J6E) {
return J06; }
592 if (code ==
J6Z) {
return J06; }
594 if (code ==
I5A) {
return I05; }
595 if (code ==
I5B) {
return I05; }
596 if (code ==
I5C) {
return I05; }
597 if (code ==
I5X) {
return I05; }
598 if (code ==
I9A) {
return I09; }
599 if (code ==
I9B) {
return I09; }
600 if (code ==
I9C) {
return I09; }
601 if (code ==
I9X) {
return I09; }
603 if (code ==
S1C) {
return S01; }
604 if (code ==
S5I) {
return S05; }
605 if (code ==
S5Q) {
return S05; }
606 if (code ==
S5X) {
return S05; }
648 std::vector<Code> codes;
649 codes.reserve(
COUNT);
650 for (
size_t i = 1; i < static_cast<size_t>(
COUNT); i++)
652 codes.emplace_back(
static_cast<Enum>(i));
659 for (
size_t i = 0; i < static_cast<size_t>(
COUNT); i++)
661 if (
static_cast<Enum>(i) == code) {
return static_cast<Enum>(i); }
754 return !(lhs == rhs);
759 return !(lhs == rhs);
764 return !(lhs == rhs);
1031 *
this = *
this & rhs;
1044 *
this = *
this & rhs;
1173 *
this = *
this | rhs;
1186 *
this = *
this | rhs;
1201 bool valueChanged =
false;
1202 if (ImGui::BeginCombo(label, std::string(code).c_str(), ImGuiComboFlags_HeightLargest))
1204 if (ImGui::BeginTable(fmt::format(
"{} Table", label).c_str(), 7, ImGuiTableFlags_BordersInnerV | ImGuiTableFlags_ScrollY))
1206 ImGui::TableSetupScrollFreeze(0, 1);
1207 for (uint64_t satSys = 0xFF; satSys < 0xFFUL << (7 * 8); satSys = satSys << 8UL)
1211 ImGui::TableHeadersRow();
1212 ImGui::TableNextRow();
1213 for (
int satSys = 0; satSys < 7; satSys++)
1215 ImGui::TableSetColumnIndex(satSys);
1216 for (uint64_t f = 0; f < 8; f++)
1218 uint64_t flag = (1UL << (f +
static_cast<uint64_t
>(satSys) * 8));
1220 auto text = std::string(frequency);
1225 bool hasCode =
false;
1229 if (co.getFrequency() == frequency)
1237 ImGui::Text(
"%s", text.c_str());
1238 if (!(frequency & filterFreq))
1240 ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * 0.6F);
1246 if (co.getFrequency() == frequency)
1248 auto checked = bool(co & code);
1253 if (ImGui::Checkbox(std::string(co).c_str(), &checked) && (frequency & filterFreq))
1257 if (singleSelect) { code = co; }
1258 else { code |= co; }
1259 valueChanged =
true;
1261 else if (!singleSelect)
1264 valueChanged =
true;
1267 if (ImGui::IsItemHovered())
1269 ImGui::SetTooltip(
"%s", co.getDescription());
1274 if (!(frequency & filterFreq))
1276 ImGui::PopStyleVar();
1286 return valueChanged;
1293 return os << fmt::format(
"{}", obj);
std::ostream & operator<<(std::ostream &os, const NAV::Code &obj)
Stream insertion operator overload.
nlohmann::json json
json namespace
Utility class for logging to console and file.
#define LOG_DATA
All output which occurs repeatedly every time observations are received.
#define LOG_WARN
Error occurred, but a fallback option exists and program continues to work normally.
Enumerate for GNSS Codes.
Code & operator|=(const Code &rhs)
Allows combining flags of the Code enum.
const char * getDescription() const
Returns a short description for the code.
std::bitset< COUNT > Set
Typedef for the bitset with size of COUNT.
Enum
Enumeration of all Codes.
@ G2P
GPS L2 - P-code (unencrypted)
@ B7I
BeiDou B2b (BDS-2) - B2I(OS)
@ R6A
GLO G2a - L2CSI (data)
@ J2L
QZSS L2 - L2C-code (long)
@ G1L
GPS L1 - L1C-P (pilot)
@ G2D
GPS L2 - Semi-codeless P(Y) tracking (L1 C/A + (P2-P1))
@ I5X
IRNSS L5 - RS (combined)
@ J6L
QZSS L6 - L6P LEX signal (long)
@ B5P
BeiDou B2a - Pilot(P)
@ B7D
BeiDou B2b (BDS-3) - Data (D)
@ G1Y
GPS L1 - Y-code (with decryption)
@ G1X
GPS L1 - L1C-(D+P) (combined)
@ J1Z
QZSS L1 - L1-SAIF signal.
@ G2X
GPS L2 - L2C(M+L) (combined)
@ J6X
QZSS L6 - L6(D+P) LEX signal (combined)
@ E6X
GAL E6 - Combined (B+C)
@ J1L
QZSS L1 - L1C (pilot)
@ J1S
QZSS L1 - L1C (data)
@ I5C
IRNSS L5 - RS (pilot)
@ I5B
IRNSS L5 - RS (data)
@ J1X
QZSS L1 - L1C (combined)
@ E8X
GAL E5(a+b) - AltBOC (combined)
@ G2Y
GPS L2 - Y-code (with decryption)
@ E1Z
GAL E1 - PRS + OS (data + pilot)
@ E6Z
GAL E6 - PRS + OS (A+B+C)
@ G1P
GPS L1 - P-code (unencrypted)
@ B1P
BeiDou B1 - Pilot(P)
@ J2X
QZSS L2 - L2C-code (combined)
@ B1D
BeiDou B1 - Data (D)
@ G1W
GPS L1 - Semicodeless P(Y) tracking (Z-tracking)
@ G2L
GPS L2 - L2C(L) (long)
@ I5A
IRNSS L5 - SPS Signal.
@ R6B
GLO G2a - L2OCp (pilot)
@ I9X
IRNSS S - RS (combined)
@ B8X
BeiDou B2 (B2a+B2b) - D+P.
@ R4X
GLO G1a - L1OCd+L1OCp (combined)
@ B8D
BeiDou B2 (B2a+B2b) - Data (D)
@ E8I
GAL E5(a+b) - AltBOC (data)
@ B7P
BeiDou B2b (BDS-3) - Pilot(P)
@ G2W
GPS L2 - Semicodeless P(Y) tracking (Z-tracking)
@ E1A
GAL E1 - PRS signal.
@ E8Q
GAL E5(a+b) - AltBOC (pilot)
@ B5D
BeiDou B2a - Data (D)
@ J6S
QZSS L6 - L6D LEX signal (short)
@ R4B
GLO G1a - L1OCp (pilot)
@ I9A
IRNSS S - SPS signal.
@ B6X
BeiDou B3 - B3I, B3Q, combined.
@ B7X
BeiDou B2b (BDS-2) - B2I(OS), B2Q, combined.
@ E1X
GAL E1 - OS(B+C) (combined)
@ E6A
GAL E6 - PRS signal.
@ B2I
BeiDou B1-2 - B1I(OS)
@ B7Q
BeiDou B2b (BDS-2) - B2Q.
@ R6X
GLO G2a - L2CSI+L2OCp (combined)
@ G1S
GPS L1 - L1C-D (data)
@ I9C
IRNSS S - RS (pilot)
@ B2X
BeiDou B1-2 - B1I(OS), B1Q, combined.
@ B7Z
BeiDou B2b (BDS-3) - D+P.
@ B8P
BeiDou B2 (B2a+B2b) - Pilot(P)
@ G2S
GPS L2 - L2C(M) (medium)
@ J2S
QZSS L2 - L2C-code (medium)
@ R4A
GLO G1a - L1OCd (data)
static Frequency GetCodeFequency(Code code)
Returns the frequency for the code.
Frequency getFrequency() const
Returns the frequency for the code.
Code & operator&=(const Code &rhs)
Allows combining flags of the Code enum.
static Enum GetCodeEnumValue(Code code)
Returns the enum value for the code (only one must be set)
Enum getEnumValue() const
Returns the enum value for the code (only one must be set)
static bool IsCodeCombined(Code first, Code second)
Checks if the codes are part of a combined code.
static Code fromFreqAttr(Frequency freq, char attribute)
Generates a Code from frequency and attribute.
Code operator~() const
Allows negating flags of the Code enum.
constexpr Code()=default
Default constructor for an empty code.
static std::vector< Code > GetAll()
Returns a list with all possible codes.
@ _S05_START
SBAS L start index in the Enum.
@ _GAL_START
GAL start index in the Enum.
@ _GPS_END
GPS end index in the Enum.
@ _J06_END
QZSS L6 end index in the Enum.
@ _GAL_END
GAL end index in the Enum.
@ _R04_END
GLO G1a end index in the Enum.
@ _R04_START
GLO G1a start index in the Enum.
@ _B06_END
BDS B3 end index in the Enum.
@ _I09_END
IRNSS S end index in the Enum.
@ _E01_START
GAL E1 start index in the Enum.
@ _E06_START
GAL E6 start index in the Enum.
@ _G05_START
GPS L5 start index in the Enum.
@ _B08_END
BDS B2 (B2a+B2b) end index in the Enum.
@ _R01_START
GLO L1 start index in the Enum.
@ _B05_START
BDS B2a start index in the Enum.
@ _B07_START
BDS B2b start index in the Enum.
@ _J05_START
QZSS L5 start index in the Enum.
@ _IRNSS_END
IRNSS end index in the Enum.
@ _S01_END
SBAS L end index in the Enum.
@ _J05_END
QZSS L5 end index in the Enum.
@ _J01_END
QZSS L1 end index in the Enum.
@ _E07_START
GAL E5b start index in the Enum.
@ _R03_END
GLO L3 end index in the Enum.
@ _R03_START
GLO L3 start index in the Enum.
@ _E01_END
GAL E1 end index in the Enum.
@ _B05_END
BDS B2a end index in the Enum.
@ _QZSS_END
QZSS end index in the Enum.
@ _E08_END
GAL E5(a+b) end index in the Enum.
@ _GLO_START
GLO start index in the Enum.
@ _G02_END
GPS L2 end index in the Enum.
@ _GPS_START
GPS start index in the Enum.
@ _IRNSS_START
IRNSS start index in the Enum.
@ _B01_START
BDS B1 start index in the Enum.
@ _J02_START
QZSS L2 start index in the Enum.
@ _B06_START
BDS B3 start index in the Enum.
@ _QZSS_START
QZSS start index in the Enum.
@ _S05_END
SBAS L end index in the Enum.
@ _R06_END
GLO G2a end index in the Enum.
@ _G05_END
GPS L5 end index in the Enum.
@ _BDS_END
BDS end index in the Enum.
@ _E07_END
GAL E5b end index in the Enum.
@ _E06_END
GAL E6 end index in the Enum.
@ _J01_START
QZSS L1 start index in the Enum.
@ _G02_START
GPS L2 start index in the Enum.
@ _S01_START
SBAS L start index in the Enum.
@ _SBAS_START
SBAS start index in the Enum.
@ _B02_START
BDS B1-2 start index in the Enum.
@ _I05_START
IRNSS L5 start index in the Enum.
@ _G01_START
GPS L1 start index in the Enum.
@ _BDS_START
BDS start index in the Enum.
@ _B01_END
BDS B1 end index in the Enum.
@ _R02_END
GLO L2 end index in the Enum.
@ _J06_START
QZSS L6 start index in the Enum.
@ _B08_START
BDS B2 (B2a+B2b) start index in the Enum.
@ _GLO_END
GLO end index in the Enum.
@ _G01_END
GPS L1 end index in the Enum.
@ _E05_END
GAL E5a end index in the Enum.
@ _R06_START
GLO G2a start index in the Enum.
@ _E08_START
GAL E5(a+b) start index in the Enum.
@ _SBAS_END
SBAS end index in the Enum.
@ _I09_START
IRNSS S start index in the Enum.
@ _R02_START
GLO L2 start index in the Enum.
@ _R01_END
GLO L1 end index in the Enum.
@ COUNT
Amount of Codes in the Enum.
@ _E05_START
GAL E5a start index in the Enum.
@ _I05_END
IRNSS L5 end index in the Enum.
@ _B07_END
BDS B2b end index in the Enum.
@ _B02_END
BDS B1-2 end index in the Enum.
@ _J02_END
QZSS L2 end index in the Enum.
static const char * GetCodeDescription(Code code)
Returns a short description for the code.
Frequency definition for different satellite systems.
void to_json(json &j, const Node &node)
Converts the provided node into a json object.
const Code Code_G5I_G5Q_G5X
L5 (data, pilot, combined)
const Code Code_I5B_I5C_I5X
RS (data, pilot, combined)
const Code Code_E8I_E8Q_E8X
E5 AltBOC (data, pilot, combined)
Frequency_
Enumerate for GNSS frequencies.
@ E07
Galileo E5b (1207.14 MHz).
@ R03
GLONASS, "G3" (1202.025 MHz).
@ J01
QZSS L1 (1575.42 MHz).
@ B02
Beidou B1-2 (B1I) (1561.098 MHz).
@ S01
SBAS L1 (1575.42 MHz).
@ E06
Galileo E6 (1278.75 MHz).
@ I09
IRNSS S (2492.028 MHz).
@ B05
Beidou B2a (1176.45 MHz).
@ I05
IRNSS L5 (1176.45 MHz).
@ R02
GLONASS, "G2" (1246 MHz).
@ B08
Beidou B2 (B2a + B2b) (1191.795MHz).
@ R06
GLONASS, "G2a" (1248.06 MHz).
@ E01
Galileo, "E1" (1575.42 MHz).
@ B06
Beidou B3 (1268.52 MHz).
@ E05
Galileo E5a (1176.45 MHz).
@ S05
SBAS L5 (1176.45 MHz).
@ G02
GPS L2 (1227.6 MHz).
@ R01
GLONASS, "G1" (1602 MHZ).
@ G01
GPS L1 (1575.42 MHz).
@ B01
Beidou B1 (1575.42 MHz).
@ J05
QZSS L5 (1176.45 MHz).
@ J02
QZSS L2 (1227.6 MHz).
@ B07
Beidou B2b (B2I) (1207.14 MHz).
@ R04
GLONASS, "G1a" (1600.995 MHZ).
@ E08
Galileo E5 (E5a + E5b) (1191.795MHz).
@ J06
QZSS L6 / LEX (1278.75 MHz).
@ G05
GPS L5 (1176.45 MHz).
const Code Code_J1S_J1L_J1X
L1C (data, pilot, combined)
const Code Code_B8D_B8P_B8X
B2 (B2a+B2b) (data, pilot, combined)
bool ShowCodeSelector(const char *label, Code &code, const Frequency &filterFreq, bool singleSelect)
Shows a ComboBox to select signal codes.
const Code Code_B7I_B7Q_B7X
B2I(OS), B2Q, combined.
const Code Code_B1D_B1P_B1X
B1 (data, pilot, combined)
const Code Code_B5D_B5P_B5X
B2a (data, pilot, combined)
const Code Code_E7I_E7Q_E7X
E5b (data, pilot, combined)
Code operator&(const Code &lhs, const Code &rhs)
const Code Code_B2I_B2Q_B2X
B1I(OS), B1Q, combined.
bool operator<(const Code &lhs, const Code &rhs)
void from_json(const json &j, Node &node)
Converts the provided json object into a node object.
const Code Code_E1B_E1C_E1X
OS (data, pilot, combined)
constexpr bool operator!=(const Node::Kind &lhs, const Node::Kind &rhs)
Inequal compares Node::Kind values.
const Code Code_J5I_J5Q_J5X
L5 (data, pilot, combined)
const Code Code_R3I_R3Q_R3X
L3 (data, pilot, combined)
const Code Code_B7D_B7P_B7Z
B2b (data, pilot, combined)
const Code Code_R4A_R4B_R4X
G1a (data, pilot, combined)
constexpr bool operator==(const Node::Kind &lhs, const Node::Kind &rhs)
Equal compares Node::Kind values.
const Code Code_E5I_E5Q_E5X
E5a (data, pilot, combined)
const Code Code_J6S_J6L_J6X
LEX signal (short, long, combined)
const Code Code_S5I_S5Q_S5X
L5 (data, pilot, combined)
const Code Code_I9B_I9C_I9X
RS (data, pilot, combined)
const Code Code_E6B_E6C_E6X
E6 (data, pilot, combined)
const Code Code_B6I_B6Q_B6X
B3I, B3Q, combined.
Code operator|(const Code &lhs, const Code &rhs)
const Code Code_J5D_J5P_J5Z
L5 (data, pilot, combined)
SatelliteSystem_
Satellite System enumeration.
@ GPS
Global Positioning System.
@ QZSS
Quasi-Zenith Satellite System.
@ GLO
Globalnaja nawigazionnaja sputnikowaja sistema (GLONASS)
@ SBAS
Satellite Based Augmentation System.
@ SatSys_None
No Satellite system.
@ IRNSS
Indian Regional Navigation Satellite System.
const Code Code_R6A_R6B_R6X
G2a (data, pilot, combined)
const Code Code_G2S_G2L_G2X
L2C-code (medium, long, combined)
const Code Code_J2S_J2L_J2X
L2C-code (medium, long, combined)
const Code Code_G1S_G1L_G1X
L1C (data, pilot, combined)