173Code::operator std::string()
const
175 const std::string filler =
" | ";
178 if (*
this &
G1C) {
str += (!
str.empty() ? filler :
"") +
"G1C"; }
179 if (*
this &
G1S) {
str += (!
str.empty() ? filler :
"") +
"G1S"; }
180 if (*
this &
G1L) {
str += (!
str.empty() ? filler :
"") +
"G1L"; }
181 if (*
this &
G1X) {
str += (!
str.empty() ? filler :
"") +
"G1X"; }
182 if (*
this &
G1P) {
str += (!
str.empty() ? filler :
"") +
"G1P"; }
183 if (*
this &
G1W) {
str += (!
str.empty() ? filler :
"") +
"G1W"; }
184 if (*
this &
G1Y) {
str += (!
str.empty() ? filler :
"") +
"G1Y"; }
185 if (*
this &
G1M) {
str += (!
str.empty() ? filler :
"") +
"G1M"; }
186 if (*
this &
G1N) {
str += (!
str.empty() ? filler :
"") +
"G1N"; }
187 if (*
this &
G2C) {
str += (!
str.empty() ? filler :
"") +
"G2C"; }
188 if (*
this &
G2D) {
str += (!
str.empty() ? filler :
"") +
"G2D"; }
189 if (*
this &
G2S) {
str += (!
str.empty() ? filler :
"") +
"G2S"; }
190 if (*
this &
G2L) {
str += (!
str.empty() ? filler :
"") +
"G2L"; }
191 if (*
this &
G2X) {
str += (!
str.empty() ? filler :
"") +
"G2X"; }
192 if (*
this &
G2P) {
str += (!
str.empty() ? filler :
"") +
"G2P"; }
193 if (*
this &
G2W) {
str += (!
str.empty() ? filler :
"") +
"G2W"; }
194 if (*
this &
G2Y) {
str += (!
str.empty() ? filler :
"") +
"G2Y"; }
195 if (*
this &
G2M) {
str += (!
str.empty() ? filler :
"") +
"G2M"; }
196 if (*
this &
G2N) {
str += (!
str.empty() ? filler :
"") +
"G2N"; }
197 if (*
this &
G5I) {
str += (!
str.empty() ? filler :
"") +
"G5I"; }
198 if (*
this &
G5Q) {
str += (!
str.empty() ? filler :
"") +
"G5Q"; }
199 if (*
this &
G5X) {
str += (!
str.empty() ? filler :
"") +
"G5X"; }
201 if (*
this &
E1A) {
str += (!
str.empty() ? filler :
"") +
"E1A"; }
202 if (*
this &
E1B) {
str += (!
str.empty() ? filler :
"") +
"E1B"; }
203 if (*
this &
E1C) {
str += (!
str.empty() ? filler :
"") +
"E1C"; }
204 if (*
this &
E1X) {
str += (!
str.empty() ? filler :
"") +
"E1X"; }
205 if (*
this &
E1Z) {
str += (!
str.empty() ? filler :
"") +
"E1Z"; }
206 if (*
this &
E5I) {
str += (!
str.empty() ? filler :
"") +
"E5I"; }
207 if (*
this &
E5Q) {
str += (!
str.empty() ? filler :
"") +
"E5Q"; }
208 if (*
this &
E5X) {
str += (!
str.empty() ? filler :
"") +
"E5X"; }
209 if (*
this &
E6A) {
str += (!
str.empty() ? filler :
"") +
"E6A"; }
210 if (*
this &
E6B) {
str += (!
str.empty() ? filler :
"") +
"E6B"; }
211 if (*
this &
E6C) {
str += (!
str.empty() ? filler :
"") +
"E6C"; }
212 if (*
this &
E6X) {
str += (!
str.empty() ? filler :
"") +
"E6X"; }
213 if (*
this &
E6Z) {
str += (!
str.empty() ? filler :
"") +
"E6Z"; }
214 if (*
this &
E7I) {
str += (!
str.empty() ? filler :
"") +
"E7I"; }
215 if (*
this &
E7Q) {
str += (!
str.empty() ? filler :
"") +
"E7Q"; }
216 if (*
this &
E7X) {
str += (!
str.empty() ? filler :
"") +
"E7X"; }
217 if (*
this &
E8I) {
str += (!
str.empty() ? filler :
"") +
"E8I"; }
218 if (*
this &
E8Q) {
str += (!
str.empty() ? filler :
"") +
"E8Q"; }
219 if (*
this &
E8X) {
str += (!
str.empty() ? filler :
"") +
"E8X"; }
221 if (*
this &
R1C) {
str += (!
str.empty() ? filler :
"") +
"R1C"; }
222 if (*
this &
R1P) {
str += (!
str.empty() ? filler :
"") +
"R1P"; }
223 if (*
this &
R2C) {
str += (!
str.empty() ? filler :
"") +
"R2C"; }
224 if (*
this &
R2P) {
str += (!
str.empty() ? filler :
"") +
"R2P"; }
225 if (*
this &
R3I) {
str += (!
str.empty() ? filler :
"") +
"R3I"; }
226 if (*
this &
R3Q) {
str += (!
str.empty() ? filler :
"") +
"R3Q"; }
227 if (*
this &
R3X) {
str += (!
str.empty() ? filler :
"") +
"R3X"; }
228 if (*
this &
R4A) {
str += (!
str.empty() ? filler :
"") +
"R4A"; }
229 if (*
this &
R4B) {
str += (!
str.empty() ? filler :
"") +
"R4B"; }
230 if (*
this &
R4X) {
str += (!
str.empty() ? filler :
"") +
"R4X"; }
231 if (*
this &
R6A) {
str += (!
str.empty() ? filler :
"") +
"R6A"; }
232 if (*
this &
R6B) {
str += (!
str.empty() ? filler :
"") +
"R6B"; }
233 if (*
this &
R6X) {
str += (!
str.empty() ? filler :
"") +
"R6X"; }
235 if (*
this &
B1D) {
str += (!
str.empty() ? filler :
"") +
"B1D"; }
236 if (*
this &
B1P) {
str += (!
str.empty() ? filler :
"") +
"B1P"; }
237 if (*
this &
B1X) {
str += (!
str.empty() ? filler :
"") +
"B1X"; }
238 if (*
this &
B2I) {
str += (!
str.empty() ? filler :
"") +
"B2I"; }
239 if (*
this &
B2Q) {
str += (!
str.empty() ? filler :
"") +
"B2Q"; }
240 if (*
this &
B2X) {
str += (!
str.empty() ? filler :
"") +
"B2X"; }
241 if (*
this &
B5D) {
str += (!
str.empty() ? filler :
"") +
"B5D"; }
242 if (*
this &
B5P) {
str += (!
str.empty() ? filler :
"") +
"B5P"; }
243 if (*
this &
B5X) {
str += (!
str.empty() ? filler :
"") +
"B5X"; }
244 if (*
this &
B6I) {
str += (!
str.empty() ? filler :
"") +
"B6I"; }
245 if (*
this &
B6Q) {
str += (!
str.empty() ? filler :
"") +
"B6Q"; }
246 if (*
this &
B6X) {
str += (!
str.empty() ? filler :
"") +
"B6X"; }
247 if (*
this &
B6A) {
str += (!
str.empty() ? filler :
"") +
"B6A"; }
248 if (*
this &
B7I) {
str += (!
str.empty() ? filler :
"") +
"B7I"; }
249 if (*
this &
B7Q) {
str += (!
str.empty() ? filler :
"") +
"B7Q"; }
250 if (*
this &
B7X) {
str += (!
str.empty() ? filler :
"") +
"B7X"; }
251 if (*
this &
B7D) {
str += (!
str.empty() ? filler :
"") +
"B7D"; }
252 if (*
this &
B7P) {
str += (!
str.empty() ? filler :
"") +
"B7P"; }
253 if (*
this &
B7Z) {
str += (!
str.empty() ? filler :
"") +
"B7Z"; }
254 if (*
this &
B8D) {
str += (!
str.empty() ? filler :
"") +
"B8D"; }
255 if (*
this &
B8P) {
str += (!
str.empty() ? filler :
"") +
"B8P"; }
256 if (*
this &
B8X) {
str += (!
str.empty() ? filler :
"") +
"B8X"; }
258 if (*
this &
J1C) {
str += (!
str.empty() ? filler :
"") +
"J1C"; }
259 if (*
this &
J1S) {
str += (!
str.empty() ? filler :
"") +
"J1S"; }
260 if (*
this &
J1L) {
str += (!
str.empty() ? filler :
"") +
"J1L"; }
261 if (*
this &
J1X) {
str += (!
str.empty() ? filler :
"") +
"J1X"; }
262 if (*
this &
J1Z) {
str += (!
str.empty() ? filler :
"") +
"J1Z"; }
263 if (*
this &
J2S) {
str += (!
str.empty() ? filler :
"") +
"J2S"; }
264 if (*
this &
J2L) {
str += (!
str.empty() ? filler :
"") +
"J2L"; }
265 if (*
this &
J2X) {
str += (!
str.empty() ? filler :
"") +
"J2X"; }
266 if (*
this &
J5I) {
str += (!
str.empty() ? filler :
"") +
"J5I"; }
267 if (*
this &
J5Q) {
str += (!
str.empty() ? filler :
"") +
"J5Q"; }
268 if (*
this &
J5X) {
str += (!
str.empty() ? filler :
"") +
"J5X"; }
269 if (*
this &
J5D) {
str += (!
str.empty() ? filler :
"") +
"J5D"; }
270 if (*
this &
J5P) {
str += (!
str.empty() ? filler :
"") +
"J5P"; }
271 if (*
this &
J5Z) {
str += (!
str.empty() ? filler :
"") +
"J5Z"; }
272 if (*
this &
J6S) {
str += (!
str.empty() ? filler :
"") +
"J6S"; }
273 if (*
this &
J6L) {
str += (!
str.empty() ? filler :
"") +
"J6L"; }
274 if (*
this &
J6X) {
str += (!
str.empty() ? filler :
"") +
"J6X"; }
275 if (*
this &
J6E) {
str += (!
str.empty() ? filler :
"") +
"J6E"; }
276 if (*
this &
J6Z) {
str += (!
str.empty() ? filler :
"") +
"J6Z"; }
278 if (*
this &
I5A) {
str += (!
str.empty() ? filler :
"") +
"I5A"; }
279 if (*
this &
I5B) {
str += (!
str.empty() ? filler :
"") +
"I5B"; }
280 if (*
this &
I5C) {
str += (!
str.empty() ? filler :
"") +
"I5C"; }
281 if (*
this &
I5X) {
str += (!
str.empty() ? filler :
"") +
"I5X"; }
282 if (*
this &
I9A) {
str += (!
str.empty() ? filler :
"") +
"I9A"; }
283 if (*
this &
I9B) {
str += (!
str.empty() ? filler :
"") +
"I9B"; }
284 if (*
this &
I9C) {
str += (!
str.empty() ? filler :
"") +
"I9C"; }
285 if (*
this &
I9X) {
str += (!
str.empty() ? filler :
"") +
"I9X"; }
287 if (*
this &
S1C) {
str += (!
str.empty() ? filler :
"") +
"S1C"; }
288 if (*
this &
S5I) {
str += (!
str.empty() ? filler :
"") +
"S5I"; }
289 if (*
this &
S5Q) {
str += (!
str.empty() ? filler :
"") +
"S5Q"; }
290 if (*
this &
S5X) {
str += (!
str.empty() ? filler :
"") +
"S5X"; }
304 if (attribute ==
'C') {
return G1C; }
305 if (attribute ==
'S') {
return G1S; }
306 if (attribute ==
'L') {
return G1L; }
307 if (attribute ==
'X') {
return G1X; }
308 if (attribute ==
'P') {
return G1P; }
309 if (attribute ==
'W') {
return G1W; }
310 if (attribute ==
'Y') {
return G1Y; }
311 if (attribute ==
'M') {
return G1M; }
312 if (attribute ==
'N') {
return G1N; }
315 if (attribute ==
'C') {
return G2C; }
316 if (attribute ==
'D') {
return G2D; }
317 if (attribute ==
'S') {
return G2S; }
318 if (attribute ==
'L') {
return G2L; }
319 if (attribute ==
'X') {
return G2X; }
320 if (attribute ==
'P') {
return G2P; }
321 if (attribute ==
'W') {
return G2W; }
322 if (attribute ==
'Y') {
return G2Y; }
323 if (attribute ==
'M') {
return G2M; }
324 if (attribute ==
'N') {
return G2N; }
327 if (attribute ==
'I') {
return G5I; }
328 if (attribute ==
'Q') {
return G5Q; }
329 if (attribute ==
'X') {
return G5X; }
332 if (attribute ==
'A') {
return E1A; }
333 if (attribute ==
'B') {
return E1B; }
334 if (attribute ==
'C') {
return E1C; }
335 if (attribute ==
'X') {
return E1X; }
336 if (attribute ==
'Z') {
return E1Z; }
339 if (attribute ==
'I') {
return E5I; }
340 if (attribute ==
'Q') {
return E5Q; }
341 if (attribute ==
'X') {
return E5X; }
344 if (attribute ==
'A') {
return E6A; }
345 if (attribute ==
'B') {
return E6B; }
346 if (attribute ==
'C') {
return E6C; }
347 if (attribute ==
'X') {
return E6X; }
348 if (attribute ==
'Z') {
return E6Z; }
351 if (attribute ==
'I') {
return E7I; }
352 if (attribute ==
'Q') {
return E7Q; }
353 if (attribute ==
'X') {
return E7X; }
356 if (attribute ==
'I') {
return E8I; }
357 if (attribute ==
'Q') {
return E8Q; }
358 if (attribute ==
'X') {
return E8X; }
362 if (attribute ==
'C') {
return R1C; }
363 if (attribute ==
'P') {
return R1P; }
366 if (attribute ==
'C') {
return R2C; }
367 if (attribute ==
'P') {
return R2P; }
370 if (attribute ==
'I') {
return R3I; }
371 if (attribute ==
'Q') {
return R3Q; }
372 if (attribute ==
'X') {
return R3X; }
375 if (attribute ==
'A') {
return R4A; }
376 if (attribute ==
'B') {
return R4B; }
377 if (attribute ==
'X') {
return R4X; }
380 if (attribute ==
'A') {
return R6A; }
381 if (attribute ==
'B') {
return R6B; }
382 if (attribute ==
'X') {
return R6X; }
386 if (attribute ==
'D') {
return B1D; }
387 if (attribute ==
'P') {
return B1P; }
388 if (attribute ==
'X') {
return B1X; }
391 if (attribute ==
'I') {
return B2I; }
392 if (attribute ==
'Q') {
return B2Q; }
393 if (attribute ==
'X') {
return B2X; }
396 if (attribute ==
'D') {
return B5D; }
397 if (attribute ==
'P') {
return B5P; }
398 if (attribute ==
'X') {
return B5X; }
401 if (attribute ==
'I') {
return B6I; }
402 if (attribute ==
'Q') {
return B6Q; }
403 if (attribute ==
'X') {
return B6X; }
404 if (attribute ==
'A') {
return B6A; }
407 if (attribute ==
'I') {
return B7I; }
408 if (attribute ==
'Q') {
return B7Q; }
409 if (attribute ==
'X') {
return B7X; }
410 if (attribute ==
'D') {
return B7D; }
411 if (attribute ==
'P') {
return B7P; }
412 if (attribute ==
'Z') {
return B7Z; }
415 if (attribute ==
'D') {
return B8D; }
416 if (attribute ==
'P') {
return B8P; }
417 if (attribute ==
'X') {
return B8X; }
421 if (attribute ==
'C') {
return J1C; }
422 if (attribute ==
'S') {
return J1S; }
423 if (attribute ==
'L') {
return J1L; }
424 if (attribute ==
'X') {
return J1X; }
425 if (attribute ==
'Z') {
return J1Z; }
428 if (attribute ==
'S') {
return J2S; }
429 if (attribute ==
'L') {
return J2L; }
430 if (attribute ==
'X') {
return J2X; }
433 if (attribute ==
'I') {
return J5I; }
434 if (attribute ==
'Q') {
return J5Q; }
435 if (attribute ==
'X') {
return J5X; }
436 if (attribute ==
'D') {
return J5D; }
437 if (attribute ==
'P') {
return J5P; }
438 if (attribute ==
'Z') {
return J5Z; }
441 if (attribute ==
'S') {
return J6S; }
442 if (attribute ==
'L') {
return J6L; }
443 if (attribute ==
'X') {
return J6X; }
444 if (attribute ==
'E') {
return J6E; }
445 if (attribute ==
'Z') {
return J6Z; }
449 if (attribute ==
'A') {
return I5A; }
450 if (attribute ==
'B') {
return I5B; }
451 if (attribute ==
'C') {
return I5C; }
452 if (attribute ==
'X') {
return I5X; }
455 if (attribute ==
'A') {
return I9A; }
456 if (attribute ==
'B') {
return I9B; }
457 if (attribute ==
'C') {
return I9C; }
458 if (attribute ==
'X') {
return I9X; }
462 if (attribute ==
'C') {
return S1C; }
465 if (attribute ==
'I') {
return S5I; }
466 if (attribute ==
'Q') {
return S5Q; }
467 if (attribute ==
'X') {
return S5X; }
474 LOG_WARN(
"Can't convert frequency '{}' and attribute '{}'. Unkown code.", freq, attribute);
481 if (code ==
G1C) {
return "GPS L1 - C/A-code"; }
482 if (code ==
G1S) {
return "GPS L1 - L1C-D (data)"; }
483 if (code ==
G1L) {
return "GPS L1 - L1C-P (pilot)"; }
484 if (code ==
G1X) {
return "GPS L1 - L1C-(D+P) (combined)"; }
485 if (code ==
G1P) {
return "GPS L1 - P-code (unencrypted)"; }
486 if (code ==
G1W) {
return "GPS L1 - Semicodeless P(Y) tracking (Z-tracking)"; }
487 if (code ==
G1Y) {
return "GPS L1 - Y-code (with decryption)"; }
488 if (code ==
G1M) {
return "GPS L1 - M-code"; }
489 if (code ==
G1N) {
return "GPS L1 - codeless"; }
490 if (code ==
G2C) {
return "GPS L2 - C/A-code"; }
491 if (code ==
G2D) {
return "GPS L2 - Semi-codeless P(Y) tracking (L1 C/A + (P2-P1))"; }
492 if (code ==
G2S) {
return "GPS L2 - L2C(M) (medium)"; }
493 if (code ==
G2L) {
return "GPS L2 - L2C(L) (long)"; }
494 if (code ==
G2X) {
return "GPS L2 - L2C(M+L) (combined)"; }
495 if (code ==
G2P) {
return "GPS L2 - P-code (unencrypted)"; }
496 if (code ==
G2W) {
return "GPS L2 - Semicodeless P(Y) tracking (Z-tracking)"; }
497 if (code ==
G2Y) {
return "GPS L2 - Y-code (with decryption)"; }
498 if (code ==
G2M) {
return "GPS L2 - M-code"; }
499 if (code ==
G2N) {
return "GPS L2 - codeless"; }
500 if (code ==
G5I) {
return "GPS L5 - Data"; }
501 if (code ==
G5Q) {
return "GPS L5 - Pilot"; }
502 if (code ==
G5X) {
return "GPS L5 - Combined"; }
504 if (code ==
E1A) {
return "GAL E1 - PRS signal"; }
505 if (code ==
E1B) {
return "GAL E1 - OS (data)"; }
506 if (code ==
E1C) {
return "GAL E1 - OS (pilot)"; }
507 if (code ==
E1X) {
return "GAL E1 - OS(B+C) (combined)"; }
508 if (code ==
E1Z) {
return "GAL E1 - PRS + OS (data + pilot)"; }
509 if (code ==
E5I) {
return "GAL E5a - Data"; }
510 if (code ==
E5Q) {
return "GAL E5a - Pilot"; }
511 if (code ==
E5X) {
return "GAL E5a - Combined"; }
512 if (code ==
E6A) {
return "GAL E6 - PRS signal"; }
513 if (code ==
E6B) {
return "GAL E6 - Data"; }
514 if (code ==
E6C) {
return "GAL E6 - Pilot"; }
515 if (code ==
E6X) {
return "GAL E6 - Combined (B+C)"; }
516 if (code ==
E6Z) {
return "GAL E6 - PRS + OS (A+B+C)"; }
517 if (code ==
E7I) {
return "GAL E5b - Data"; }
518 if (code ==
E7Q) {
return "GAL E5b - Pilot"; }
519 if (code ==
E7X) {
return "GAL E5b - Combined"; }
520 if (code ==
E8I) {
return "GAL E5(a+b) - AltBOC (data)"; }
521 if (code ==
E8Q) {
return "GAL E5(a+b) - AltBOC (pilot)"; }
522 if (code ==
E8X) {
return "GAL E5(a+b) - AltBOC (combined)"; }
524 if (code ==
R1C) {
return "GLO L1 - C/A-code"; }
525 if (code ==
R1P) {
return "GLO L1 - P-code"; }
526 if (code ==
R2C) {
return "GLO L2 - C/A-code"; }
527 if (code ==
R2P) {
return "GLO L2 - P-code"; }
528 if (code ==
R3I) {
return "GLO L3 - Data"; }
529 if (code ==
R3Q) {
return "GLO L3 - Pilot"; }
530 if (code ==
R3X) {
return "GLO L3 - Combined"; }
531 if (code ==
R4A) {
return "GLO G1a - L1OCd (data)"; }
532 if (code ==
R4B) {
return "GLO G1a - L1OCp (pilot)"; }
533 if (code ==
R4X) {
return "GLO G1a - L1OCd+L1OCp (combined)"; }
534 if (code ==
R6A) {
return "GLO G2a - L2CSI (data)"; }
535 if (code ==
R6B) {
return "GLO G2a - L2OCp (pilot)"; }
536 if (code ==
R6X) {
return "GLO G2a - L2CSI+L2OCp (combined)"; }
538 if (code ==
B1D) {
return "BeiDou B1 - Data (D)"; }
539 if (code ==
B1P) {
return "BeiDou B1 - Pilot(P)"; }
540 if (code ==
B1X) {
return "BeiDou B1 - D+P"; }
541 if (code ==
B2I) {
return "BeiDou B1-2 - B1I(OS)"; }
542 if (code ==
B2Q) {
return "BeiDou B1-2 - B1Q"; }
543 if (code ==
B2X) {
return "BeiDou B1-2 - B1I(OS), B1Q, combined"; }
544 if (code ==
B5D) {
return "BeiDou B2a - Data (D)"; }
545 if (code ==
B5P) {
return "BeiDou B2a - Pilot(P)"; }
546 if (code ==
B5X) {
return "BeiDou B2a - D+P"; }
547 if (code ==
B6I) {
return "BeiDou B3 - B3I"; }
548 if (code ==
B6Q) {
return "BeiDou B3 - B3Q"; }
549 if (code ==
B6X) {
return "BeiDou B3 - B3I, B3Q, combined"; }
550 if (code ==
B6A) {
return "BeiDou B3 - B3A"; }
551 if (code ==
B7I) {
return "BeiDou B2b (BDS-2) - B2I(OS)"; }
552 if (code ==
B7Q) {
return "BeiDou B2b (BDS-2) - B2Q"; }
553 if (code ==
B7X) {
return "BeiDou B2b (BDS-2) - B2I(OS), B2Q, combined"; }
554 if (code ==
B7D) {
return "BeiDou B2b (BDS-3) - Data (D)"; }
555 if (code ==
B7P) {
return "BeiDou B2b (BDS-3) - Pilot(P)"; }
556 if (code ==
B7Z) {
return "BeiDou B2b (BDS-3) - D+P"; }
557 if (code ==
B8D) {
return "BeiDou B2 (B2a+B2b) - Data (D)"; }
558 if (code ==
B8P) {
return "BeiDou B2 (B2a+B2b) - Pilot(P)"; }
559 if (code ==
B8X) {
return "BeiDou B2 (B2a+B2b) - D+P"; }
561 if (code ==
J1C) {
return "QZSS L1 - C/A-code"; }
562 if (code ==
J1S) {
return "QZSS L1 - L1C (data)"; }
563 if (code ==
J1L) {
return "QZSS L1 - L1C (pilot)"; }
564 if (code ==
J1X) {
return "QZSS L1 - L1C (combined)"; }
565 if (code ==
J1Z) {
return "QZSS L1 - L1-SAIF signal"; }
566 if (code ==
J2S) {
return "QZSS L2 - L2C-code (medium)"; }
567 if (code ==
J2L) {
return "QZSS L2 - L2C-code (long)"; }
568 if (code ==
J2X) {
return "QZSS L2 - L2C-code (combined)"; }
569 if (code ==
J5I) {
return "QZSS L5 - Data"; }
570 if (code ==
J5Q) {
return "QZSS L5 - Pilot"; }
571 if (code ==
J5X) {
return "QZSS L5 - Combined"; }
572 if (code ==
J5D) {
return "QZSS L5S - I"; }
573 if (code ==
J5P) {
return "QZSS L5S - Q"; }
574 if (code ==
J5Z) {
return "QZSS L5S - I+Q"; }
575 if (code ==
J6S) {
return "QZSS L6 - L6D LEX signal (short)"; }
576 if (code ==
J6L) {
return "QZSS L6 - L6P LEX signal (long)"; }
577 if (code ==
J6X) {
return "QZSS L6 - L6(D+P) LEX signal (combined)"; }
578 if (code ==
J6E) {
return "QZSS L6 - L6E"; }
579 if (code ==
J6Z) {
return "QZSS L6 - L6(D+E)"; }
581 if (code ==
I5A) {
return "IRNSS L5 - SPS Signal"; }
582 if (code ==
I5B) {
return "IRNSS L5 - RS (data)"; }
583 if (code ==
I5C) {
return "IRNSS L5 - RS (pilot)"; }
584 if (code ==
I5X) {
return "IRNSS L5 - RS (combined)"; }
585 if (code ==
I9A) {
return "IRNSS S - SPS signal"; }
586 if (code ==
I9B) {
return "IRNSS S - RS (data)"; }
587 if (code ==
I9C) {
return "IRNSS S - RS (pilot)"; }
588 if (code ==
I9X) {
return "IRNSS S - RS (combined)"; }
590 if (code ==
S1C) {
return "SBAS L1 - C/A-code"; }
591 if (code ==
S5I) {
return "SBAS L5 - Data"; }
592 if (code ==
S5Q) {
return "SBAS L5 - Pilot"; }
593 if (code ==
S5X) {
return "SBAS L5 - Combined"; }
595 return "Unknown code.";
605 if (code ==
G1C) {
return G01; }
606 if (code ==
G1S) {
return G01; }
607 if (code ==
G1L) {
return G01; }
608 if (code ==
G1X) {
return G01; }
609 if (code ==
G1P) {
return G01; }
610 if (code ==
G1W) {
return G01; }
611 if (code ==
G1Y) {
return G01; }
612 if (code ==
G1M) {
return G01; }
613 if (code ==
G1N) {
return G01; }
614 if (code ==
G2C) {
return G02; }
615 if (code ==
G2D) {
return G02; }
616 if (code ==
G2S) {
return G02; }
617 if (code ==
G2L) {
return G02; }
618 if (code ==
G2X) {
return G02; }
619 if (code ==
G2P) {
return G02; }
620 if (code ==
G2W) {
return G02; }
621 if (code ==
G2Y) {
return G02; }
622 if (code ==
G2M) {
return G02; }
623 if (code ==
G2N) {
return G02; }
624 if (code ==
G5I) {
return G05; }
625 if (code ==
G5Q) {
return G05; }
626 if (code ==
G5X) {
return G05; }
628 if (code ==
E1A) {
return E01; }
629 if (code ==
E1B) {
return E01; }
630 if (code ==
E1C) {
return E01; }
631 if (code ==
E1X) {
return E01; }
632 if (code ==
E1Z) {
return E01; }
633 if (code ==
E5I) {
return E05; }
634 if (code ==
E5Q) {
return E05; }
635 if (code ==
E5X) {
return E05; }
636 if (code ==
E6A) {
return E06; }
637 if (code ==
E6B) {
return E06; }
638 if (code ==
E6C) {
return E06; }
639 if (code ==
E6X) {
return E06; }
640 if (code ==
E6Z) {
return E06; }
641 if (code ==
E7I) {
return E07; }
642 if (code ==
E7Q) {
return E07; }
643 if (code ==
E7X) {
return E07; }
644 if (code ==
E8I) {
return E08; }
645 if (code ==
E8Q) {
return E08; }
646 if (code ==
E8X) {
return E08; }
648 if (code ==
R1C) {
return R01; }
649 if (code ==
R1P) {
return R01; }
650 if (code ==
R2C) {
return R02; }
651 if (code ==
R2P) {
return R02; }
652 if (code ==
R3I) {
return R03; }
653 if (code ==
R3Q) {
return R03; }
654 if (code ==
R3X) {
return R03; }
655 if (code ==
R4A) {
return R04; }
656 if (code ==
R4B) {
return R04; }
657 if (code ==
R4X) {
return R04; }
658 if (code ==
R6A) {
return R06; }
659 if (code ==
R6B) {
return R06; }
660 if (code ==
R6X) {
return R06; }
662 if (code ==
B1D) {
return B01; }
663 if (code ==
B1P) {
return B01; }
664 if (code ==
B1X) {
return B01; }
665 if (code ==
B2I) {
return B02; }
666 if (code ==
B2Q) {
return B02; }
667 if (code ==
B2X) {
return B02; }
668 if (code ==
B5D) {
return B05; }
669 if (code ==
B5P) {
return B05; }
670 if (code ==
B5X) {
return B05; }
671 if (code ==
B6I) {
return B06; }
672 if (code ==
B6Q) {
return B06; }
673 if (code ==
B6X) {
return B06; }
674 if (code ==
B6A) {
return B06; }
675 if (code ==
B7I) {
return B07; }
676 if (code ==
B7Q) {
return B07; }
677 if (code ==
B7X) {
return B07; }
678 if (code ==
B7D) {
return B07; }
679 if (code ==
B7P) {
return B07; }
680 if (code ==
B7Z) {
return B07; }
681 if (code ==
B8D) {
return B08; }
682 if (code ==
B8P) {
return B08; }
683 if (code ==
B8X) {
return B08; }
685 if (code ==
J1C) {
return J01; }
686 if (code ==
J1S) {
return J01; }
687 if (code ==
J1L) {
return J01; }
688 if (code ==
J1X) {
return J01; }
689 if (code ==
J1Z) {
return J01; }
690 if (code ==
J2S) {
return J02; }
691 if (code ==
J2L) {
return J02; }
692 if (code ==
J2X) {
return J02; }
693 if (code ==
J5I) {
return J05; }
694 if (code ==
J5Q) {
return J05; }
695 if (code ==
J5X) {
return J05; }
696 if (code ==
J5D) {
return J05; }
697 if (code ==
J5P) {
return J05; }
698 if (code ==
J5Z) {
return J05; }
699 if (code ==
J6S) {
return J06; }
700 if (code ==
J6L) {
return J06; }
701 if (code ==
J6X) {
return J06; }
702 if (code ==
J6E) {
return J06; }
703 if (code ==
J6Z) {
return J06; }
705 if (code ==
I5A) {
return I05; }
706 if (code ==
I5B) {
return I05; }
707 if (code ==
I5C) {
return I05; }
708 if (code ==
I5X) {
return I05; }
709 if (code ==
I9A) {
return I09; }
710 if (code ==
I9B) {
return I09; }
711 if (code ==
I9C) {
return I09; }
712 if (code ==
I9X) {
return I09; }
714 if (code ==
S1C) {
return S01; }
715 if (code ==
S5I) {
return S05; }
716 if (code ==
S5Q) {
return S05; }
717 if (code ==
S5X) {
return S05; }
759 std::vector<Code> codes;
760 codes.reserve(
COUNT);
761 for (
size_t i = 1; i < static_cast<size_t>(
COUNT); i++)
763 codes.emplace_back(
static_cast<Enum>(i));
770 for (
size_t i = 0; i < static_cast<size_t>(
COUNT); i++)
772 if (
static_cast<Enum>(i) == code) {
return static_cast<Enum>(i); }
865 return !(lhs == rhs);
870 return !(lhs == rhs);
875 return !(lhs == rhs);
1011 *
this = *
this | rhs;
1142 *
this = *
this & rhs;
1155 *
this = *
this & rhs;
1284 *
this = *
this | rhs;
1297 *
this = *
this | rhs;
1312 bool valueChanged =
false;
1313 if (ImGui::BeginCombo(label, std::string(code).c_str(), ImGuiComboFlags_HeightLargest))
1315 if (ImGui::BeginTable(fmt::format(
"{} Table", label).c_str(), 7, ImGuiTableFlags_BordersInnerV | ImGuiTableFlags_ScrollY))
1317 ImGui::TableSetupScrollFreeze(0, 1);
1318 for (uint64_t satSys = 0xFF; satSys < static_cast<uint64_t>(0xFF) << (7 * 8); satSys = satSys << 8UL)
1322 ImGui::TableHeadersRow();
1323 ImGui::TableNextRow();
1324 for (
int satSys = 0; satSys < 7; satSys++)
1326 ImGui::TableSetColumnIndex(satSys);
1327 for (uint64_t f = 0; f < 8; f++)
1329 uint64_t flag = (
static_cast<uint64_t
>(1) << (f +
static_cast<uint64_t
>(satSys) * 8));
1331 auto text = std::string(frequency);
1336 bool hasCode =
false;
1340 if (co.getFrequency() == frequency)
1348 ImGui::Text(
"%s", text.c_str());
1349 if (!(frequency & filterFreq))
1351 ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * 0.6F);
1357 if (co.getFrequency() == frequency)
1359 auto checked = bool(co & code);
1364 if (ImGui::Checkbox(std::string(co).c_str(), &checked) && (frequency & filterFreq))
1368 if (singleSelect) { code = co; }
1369 else { code |= co; }
1370 valueChanged =
true;
1372 else if (!singleSelect)
1375 valueChanged =
true;
1378 if (ImGui::IsItemHovered())
1380 ImGui::SetTooltip(
"%s", co.getDescription());
1385 if (!(frequency & filterFreq))
1387 ImGui::PopStyleVar();
1397 return valueChanged;
1404 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)