RinexObsID_Generated.cpp
Go to the documentation of this file.
1 
8 //==============================================================================
9 //
10 // This file is part of GNSSTk, the ARL:UT GNSS Toolkit.
11 //
12 // The GNSSTk is free software; you can redistribute it and/or modify
13 // it under the terms of the GNU Lesser General Public License as published
14 // by the Free Software Foundation; either version 3.0 of the License, or
15 // any later version.
16 //
17 // The GNSSTk is distributed in the hope that it will be useful,
18 // but WITHOUT ANY WARRANTY; without even the implied warranty of
19 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 // GNU Lesser General Public License for more details.
21 //
22 // You should have received a copy of the GNU Lesser General Public
23 // License along with GNSSTk; if not, write to the Free Software Foundation,
24 // Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
25 //
26 // This software was developed by Applied Research Laboratories at the
27 // University of Texas at Austin.
28 // Copyright 2004-2022, The Board of Regents of The University of Texas System
29 //
30 //==============================================================================
31 
32 //==============================================================================
33 //
34 // This software was developed by Applied Research Laboratories at the
35 // University of Texas at Austin, under contract to an agency or agencies
36 // within the U.S. Department of Defense. The U.S. Government retains all
37 // rights to use, duplicate, distribute, disclose, or release this software.
38 //
39 // Pursuant to DoD Directive 523024
40 //
41 // DISTRIBUTION STATEMENT A: This software has been approved for public
42 // release, distribution is unlimited.
43 //
44 //==============================================================================
45 
46 #include "RinexObsID.hpp"
47 
48 namespace gnsstk
49 {
50  // Mappings between code, carrier, type and characters.
51  // The following definitions really should only describe the
52  // items that are in the Rinex 3 specification. If an
53  // application needs additional ObsID types to be able to be
54  // translated to/from Rinex3, the additional types must be added
55  // by the application.
56  std::map<char, ObservationType> RinexObsID::char2ot {
57  { ' ', ObservationType::Unknown },
58  { '*', ObservationType::Any },
59  { 'C', ObservationType::Range },
60  { 'L', ObservationType::Phase },
61  { 'D', ObservationType::Doppler },
62  { 'S', ObservationType::SNR },
63  { 'X', ObservationType::Channel },
64  { 'I', ObservationType::Iono },
66  }; // std::map<char, ObservationType> RinexObsID::char2ot
67 
68  std::map<char, CarrierBand> RinexObsID::char2cb {
69  { ' ', CarrierBand::Unknown },
70  { '*', CarrierBand::Any },
71  { '1', CarrierBand::L1 },
72  { '2', CarrierBand::L2 },
73  { '5', CarrierBand::L5 },
74  { '4', CarrierBand::G1a },
75  { '6', CarrierBand::G2a },
76  { '3', CarrierBand::G3 },
77  { '7', CarrierBand::E5b },
78  { '8', CarrierBand::E5ab },
79  { '9', CarrierBand::I9 },
80  { '-', CarrierBand::Undefined },
81  }; // std::map<char, CarrierBand> RinexObsID::char2cb
82 
83  std::map<char, TrackingCode> RinexObsID::char2tc {
84  { ' ', TrackingCode::Unknown },
85  { '*', TrackingCode::Any },
86  { 'C', TrackingCode::CA },
87  { 'P', TrackingCode::P },
88  { 'Y', TrackingCode::Y },
89  { 'W', TrackingCode::Ztracking },
90  { 'N', TrackingCode::YCodeless },
92  { 'M', TrackingCode::MDP },
93  { 'S', TrackingCode::L2CM },
94  { 'L', TrackingCode::L2CL },
95  { 'X', TrackingCode::L2CML },
96  { 'I', TrackingCode::L5I },
97  { 'Q', TrackingCode::L5Q },
98  { 'A', TrackingCode::L1OCD },
99  { 'B', TrackingCode::L1OCP },
100  { 'Z', TrackingCode::E1ABC },
101  { 'E', TrackingCode::L6E },
102  { '-', TrackingCode::Undefined },
103  }; // std::map<char, TrackingCode> RinexObsID::char2tc
104 
105  std::map<ObservationType, char> RinexObsID::ot2char {
106  { ObservationType::Unknown, ' ' },
107  { ObservationType::Any, '*' },
108  { ObservationType::Range, 'C' },
109  { ObservationType::Phase, 'L' },
110  { ObservationType::Doppler, 'D' },
111  { ObservationType::SNR, 'S' },
112  { ObservationType::Channel, 'X' },
113  { ObservationType::Iono, 'I' },
115  }; // std::map<ObservationType, char> RinexObsID::ot2char
116 
117  std::map<CarrierBand, char> RinexObsID::cb2char {
118  { CarrierBand::Unknown, ' ' },
119  { CarrierBand::Any, '*' },
120  { CarrierBand::L1, '1' },
121  { CarrierBand::L2, '2' },
122  { CarrierBand::L5, '5' },
123  { CarrierBand::G1, '1' },
124  { CarrierBand::G1a, '4' },
125  { CarrierBand::G2a, '6' },
126  { CarrierBand::G2, '2' },
127  { CarrierBand::G3, '3' },
128  { CarrierBand::E5b, '7' },
129  { CarrierBand::E5ab, '8' },
130  { CarrierBand::E6, '6' },
131  { CarrierBand::B1, '2' },
132  { CarrierBand::B2, '7' },
133  { CarrierBand::B3, '6' },
134  { CarrierBand::I9, '9' },
135  { CarrierBand::Undefined, '-' },
136  }; // std::map<CarrierBand, char> RinexObsID::cb2char
137 
138  std::map<TrackingCode, char> RinexObsID::tc2char {
139  { TrackingCode::Unknown, ' ' },
140  { TrackingCode::Any, '*' },
141  { TrackingCode::CA, 'C' },
142  { TrackingCode::P, 'P' },
143  { TrackingCode::Y, 'Y' },
144  { TrackingCode::Ztracking, 'W' },
145  { TrackingCode::YCodeless, 'N' },
147  { TrackingCode::MDP, 'M' },
148  { TrackingCode::L2CM, 'S' },
149  { TrackingCode::L2CL, 'L' },
150  { TrackingCode::L2CML, 'X' },
151  { TrackingCode::L5I, 'I' },
152  { TrackingCode::L5Q, 'Q' },
153  { TrackingCode::L5IQ, 'X' },
154  { TrackingCode::L1CP, 'L' },
155  { TrackingCode::L1CD, 'S' },
156  { TrackingCode::L1CDP, 'X' },
157  { TrackingCode::Standard, 'C' },
158  { TrackingCode::Precise, 'P' },
159  { TrackingCode::L3OCD, 'I' },
160  { TrackingCode::L3OCP, 'Q' },
161  { TrackingCode::L3OCDP, 'X' },
162  { TrackingCode::L1OCD, 'A' },
163  { TrackingCode::L1OCP, 'B' },
164  { TrackingCode::L1OCDP, 'X' },
165  { TrackingCode::L2CSIL2OCp, 'X' },
166  { TrackingCode::L2CSI, 'A' },
167  { TrackingCode::L2OCP, 'B' },
168  { TrackingCode::E1A, 'A' },
169  { TrackingCode::E1B, 'B' },
170  { TrackingCode::E1C, 'C' },
171  { TrackingCode::E1BC, 'X' },
172  { TrackingCode::E1ABC, 'Z' },
173  { TrackingCode::E5abI, 'I' },
174  { TrackingCode::E5abQ, 'Q' },
175  { TrackingCode::E5abIQ, 'X' },
176  { TrackingCode::E5aI, 'I' },
177  { TrackingCode::E5aQ, 'Q' },
178  { TrackingCode::E5aIQ, 'X' },
179  { TrackingCode::E5bI, 'I' },
180  { TrackingCode::E5bQ, 'Q' },
181  { TrackingCode::E5bIQ, 'X' },
182  { TrackingCode::E6A, 'A' },
183  { TrackingCode::E6B, 'B' },
184  { TrackingCode::E6C, 'C' },
185  { TrackingCode::E6BC, 'X' },
186  { TrackingCode::E6ABC, 'Z' },
187  { TrackingCode::L1S, 'Z' },
188  { TrackingCode::L5SI, 'D' },
189  { TrackingCode::L5SQ, 'P' },
190  { TrackingCode::L5SIQ, 'Z' },
191  { TrackingCode::LEXS, 'S' },
192  { TrackingCode::LEXL, 'L' },
193  { TrackingCode::LEXSL, 'X' },
194  { TrackingCode::L6D, 'S' },
195  { TrackingCode::L6E, 'E' },
196  { TrackingCode::L6DE, 'Z' },
197  { TrackingCode::B1I, 'I' },
198  { TrackingCode::B1Q, 'Q' },
199  { TrackingCode::B1IQ, 'X' },
200  { TrackingCode::B2I, 'I' },
201  { TrackingCode::B2Q, 'Q' },
202  { TrackingCode::B2IQ, 'X' },
203  { TrackingCode::B3I, 'I' },
204  { TrackingCode::B3Q, 'Q' },
205  { TrackingCode::B3IQ, 'X' },
206  { TrackingCode::B1A, 'A' },
207  { TrackingCode::B1CD, 'D' },
208  { TrackingCode::B1CDP, 'X' },
209  { TrackingCode::B1CP, 'P' },
210  { TrackingCode::B2abI, 'D' },
211  { TrackingCode::B2abIQ, 'X' },
212  { TrackingCode::B2abQ, 'P' },
213  { TrackingCode::B2aI, 'D' },
214  { TrackingCode::B2aIQ, 'X' },
215  { TrackingCode::B2aQ, 'P' },
216  { TrackingCode::B2bI, 'D' },
217  { TrackingCode::B2bIQ, 'Z' },
218  { TrackingCode::B2bQ, 'P' },
219  { TrackingCode::BCodeless, 'N' },
220  { TrackingCode::B3AIQ, 'A' },
221  { TrackingCode::SPSL5, 'A' },
222  { TrackingCode::RSL5D, 'B' },
223  { TrackingCode::RSL5P, 'C' },
224  { TrackingCode::RSL5DP, 'X' },
225  { TrackingCode::SPSS, 'A' },
226  { TrackingCode::RSSD, 'B' },
227  { TrackingCode::RSSP, 'C' },
228  { TrackingCode::RSSDP, 'X' },
229  { TrackingCode::Undefined, '-' },
230  }; // std::map<TrackingCode, char> RinexObsID::tc2char
231 
232  // map of valid RINEX tracking codes, systems and frequency
233  std::map<char, std::map<char, std::string> >
235  { 'G', {
236  // 1N: Pseudorange (C) not valid
237  { '1', "PYWLMCSXN* " },
238  // 2N: Pseudorange (C) not valid
239  { '2', "PYWLMCSXDN* " },
240  { '5', "IQX* " } } },
241 
242  { 'R', {
243  { '1', "PC* " },
244  { '2', "PC* " },
245  { '3', "IQX* " },
246  { '4', "ABX* " },
247  { '6', "ABX* " } } },
248 
249  { 'E', {
250  { '1', "ABCXZ* " },
251  { '5', "IQX* " },
252  { '6', "ABCXZ* " },
253  { '7', "IQX* " },
254  { '8', "IQX* " } } },
255 
256  { 'S', {
257  { '1', "C* " },
258  { '5', "IQX* " } } },
259 
260  { 'J', {
261  { '1', "CSLXZ* " },
262  { '2', "SLX* " },
263  { '5', "IQDPXZ* " },
264  { '6', "ESLXZ* " } } },
265 
266  { 'C', {
267  // 1I: RINEX 3.02 kludge
268  // 1Q: RINEX 3.02 kludge
269  { '1', "PAIQXDN* " },
270  { '2', "IQX* " },
271  { '5', "PXD* " },
272  { '6', "AIQX* " },
273  { '7', "ZPIQXD* " },
274  { '8', "PXD* " } } },
275 
276  { 'I', {
277  { '1', "* " }, // I1 is *only* for channel number
278  { '5', "ABCX* " },
279  { '9', "ABCX* " } } }
280  }; // RinexObsID::validRinexTrackingCodes
281 
282  RinexObsID::RinexObsID(const std::string& strID, double version)
283  : rinexVersion(version)
284  {
285  std::string modStrID(strID);
289  int i = modStrID.length() - 3;
290  if (i < 0 || i > 1)
291  {
292  InvalidParameter e("identifier must be 3 or 4 characters long");
293  GNSSTK_THROW(e);
294  }
295  else if (i == 0)
296  {
297  modStrID = std::string("G") + modStrID; // GPS is default
298  }
299 
300  // make an initial guess
301  const auto& tc = char2tc.find(modStrID[3]);
302  const auto& cb = char2cb.find(modStrID[2]);
303  const auto& ot = char2ot.find(modStrID[1]);
304  if (tc != char2tc.end())
305  code = tc->second;
306  if (cb != char2cb.end())
307  band = cb->second;
308  if (ot != char2ot.end())
309  type = ot->second;
310 
311  std::string rincode(modStrID.substr(2));
312  // do the observation type which is mapped 1:1
313  switch (modStrID[1])
314  {
315  case ' ': // Unknown
317  break;
318  case '*': // Any
320  break;
321  case 'C': // Range
323  break;
324  case 'L': // Phase
326  break;
327  case 'D': // Doppler
329  break;
330  case 'S': // SNR
332  break;
333  case 'X': // Channel
335  if ((modStrID[2] != '1') || (modStrID[3] != ' '))
336  {
337  InvalidParameter e("Invalid channel number pseudo-obs ID " +
338  strID);
339  GNSSTK_THROW(e);
340  }
345  break;
346  case 'I': // Iono
348  if ((modStrID[2] < '1') || (modStrID[2] > '9') ||
349  (modStrID[3] != ' '))
350  {
351  InvalidParameter e("Invalid ionospheric delay pseudo-obs ID " +
352  strID);
353  GNSSTK_THROW(e);
354  }
356  band = char2cb[modStrID[2]];
357  break;
358  case '-': // Undefined
360  break;
361  default:
363  break;
364  }
365  // group first by rinex system ID
366  switch (modStrID[0])
367  {
368  case 'C': // BeiDou
369  if (rincode == "2I")
370  {
373  }
374  else if (rincode == "2Q")
375  {
378  }
379  else if (rincode == "2X")
380  {
383  }
384  else if (rincode == "1D")
385  {
388  }
389  else if (rincode == "1P")
390  {
393  }
394  else if (rincode == "1X")
395  {
396  if (fabs(rinexVersion - 3.02) < 0.005)
397  {
400  }
401  else
402  {
405  }
406  }
407  else if (rincode == "1A")
408  {
411  }
412  else if (rincode == "1N")
413  {
416  }
417  else if (rincode == "1I")
418  {
421  }
422  else if (rincode == "1Q")
423  {
426  }
427  else if (rincode == "5D")
428  {
431  }
432  else if (rincode == "5P")
433  {
436  }
437  else if (rincode == "5X")
438  {
441  }
442  else if (rincode == "7I")
443  {
446  }
447  else if (rincode == "7Q")
448  {
451  }
452  else if (rincode == "7X")
453  {
456  }
457  else if (rincode == "7D")
458  {
461  }
462  else if (rincode == "7P")
463  {
466  }
467  else if (rincode == "7Z")
468  {
471  }
472  else if (rincode == "8D")
473  {
476  }
477  else if (rincode == "8P")
478  {
481  }
482  else if (rincode == "8X")
483  {
486  }
487  else if (rincode == "6I")
488  {
491  }
492  else if (rincode == "6Q")
493  {
496  }
497  else if (rincode == "6X")
498  {
501  }
502  else if (rincode == "6A")
503  {
506  }
507  break;
508  case 'E': // Galileo
509  if (rincode == "1A")
510  {
513  }
514  else if (rincode == "1B")
515  {
518  }
519  else if (rincode == "1C")
520  {
523  }
524  else if (rincode == "1X")
525  {
528  }
529  else if (rincode == "1Z")
530  {
533  }
534  else if (rincode == "5I")
535  {
538  }
539  else if (rincode == "5Q")
540  {
543  }
544  else if (rincode == "5X")
545  {
548  }
549  else if (rincode == "7I")
550  {
553  }
554  else if (rincode == "7Q")
555  {
558  }
559  else if (rincode == "7X")
560  {
563  }
564  else if (rincode == "8I")
565  {
568  }
569  else if (rincode == "8Q")
570  {
573  }
574  else if (rincode == "8X")
575  {
578  }
579  else if (rincode == "6A")
580  {
583  }
584  else if (rincode == "6B")
585  {
588  }
589  else if (rincode == "6C")
590  {
593  }
594  else if (rincode == "6X")
595  {
598  }
599  else if (rincode == "6Z")
600  {
603  }
604  break;
605  case 'R': // GLONASS
606  if (rincode == "1C")
607  {
610  }
611  else if (rincode == "1P")
612  {
615  }
616  else if (rincode == "4A")
617  {
620  }
621  else if (rincode == "4B")
622  {
625  }
626  else if (rincode == "4X")
627  {
630  }
631  else if (rincode == "2C")
632  {
635  }
636  else if (rincode == "2P")
637  {
640  }
641  else if (rincode == "6A")
642  {
645  }
646  else if (rincode == "6B")
647  {
650  }
651  else if (rincode == "6X")
652  {
655  }
656  else if (rincode == "3I")
657  {
660  }
661  else if (rincode == "3Q")
662  {
665  }
666  else if (rincode == "3X")
667  {
670  }
671  break;
672  case 'G': // GPS
673  if (rincode == "1C")
674  {
677  }
678  else if (rincode == "1S")
679  {
682  }
683  else if (rincode == "1L")
684  {
687  }
688  else if (rincode == "1X")
689  {
692  }
693  else if (rincode == "1P")
694  {
697  }
698  else if (rincode == "1W")
699  {
702  }
703  else if (rincode == "1Y")
704  {
707  }
708  else if (rincode == "1M")
709  {
712  }
713  else if (rincode == "1N")
714  {
717  }
718  else if (rincode == "2C")
719  {
722  }
723  else if (rincode == "2D")
724  {
727  }
728  else if (rincode == "2S")
729  {
732  }
733  else if (rincode == "2L")
734  {
737  }
738  else if (rincode == "2X")
739  {
742  }
743  else if (rincode == "2P")
744  {
747  }
748  else if (rincode == "2W")
749  {
752  }
753  else if (rincode == "2Y")
754  {
757  }
758  else if (rincode == "2M")
759  {
762  }
763  else if (rincode == "2N")
764  {
767  }
768  else if (rincode == "5I")
769  {
772  }
773  else if (rincode == "5Q")
774  {
777  }
778  else if (rincode == "5X")
779  {
782  }
783  break;
784  case 'I': // NavIC
785  if (rincode == "5A")
786  {
789  }
790  else if (rincode == "5B")
791  {
794  }
795  else if (rincode == "5C")
796  {
799  }
800  else if (rincode == "5X")
801  {
804  }
805  else if (rincode == "9A")
806  {
809  }
810  else if (rincode == "9B")
811  {
814  }
815  else if (rincode == "9C")
816  {
819  }
820  else if (rincode == "9X")
821  {
824  }
825  break;
826  case 'J': // QZSS
827  if (rincode == "1C")
828  {
831  }
832  else if (rincode == "1L")
833  {
836  }
837  else if (rincode == "1S")
838  {
841  }
842  else if (rincode == "1X")
843  {
846  }
847  else if (rincode == "1Z")
848  {
851  }
852  else if (rincode == "2S")
853  {
856  }
857  else if (rincode == "2L")
858  {
861  }
862  else if (rincode == "2X")
863  {
866  }
867  else if (rincode == "5I")
868  {
871  }
872  else if (rincode == "5Q")
873  {
876  }
877  else if (rincode == "5X")
878  {
881  }
882  else if (rincode == "5D")
883  {
886  }
887  else if (rincode == "5P")
888  {
891  }
892  else if (rincode == "5Z")
893  {
896  }
897  else if (rincode == "6S")
898  {
901  }
902  else if (rincode == "6S")
903  {
906  }
907  else if (rincode == "6L")
908  {
911  }
912  else if (rincode == "6X")
913  {
916  }
917  else if (rincode == "6E")
918  {
921  }
922  else if (rincode == "6Z")
923  {
926  }
927  break;
928  case 'S': // SBAS
929  if (rincode == "1C")
930  {
933  }
934  else if (rincode == "5I")
935  {
938  }
939  else if (rincode == "5Q")
940  {
943  }
944  else if (rincode == "5X")
945  {
948  }
949  break;
950  } // switch (modStrID[0])
951  } // RinexObsID(const std::string& strID, double version)
952 } // namespace gnsstk
953 
gnsstk::TrackingCode::B3AIQ
@ B3AIQ
BeiDou B3A I+Q code.
gnsstk::ObservationType::Undefined
@ Undefined
Observation type is known to be undefined (as opposed to unknown)
gnsstk::RinexObsID::rinexVersion
double rinexVersion
Definition: RinexObsID.hpp:259
gnsstk::TrackingCode::B1Q
@ B1Q
BeiDou B1 Q code.
gnsstk::TrackingCode::E5abIQ
@ E5abIQ
Galileo E5 I+Q combined tracking.
gnsstk::TrackingCode::L5IQ
@ L5IQ
Modernized GPS L5 civil I+Q combined tracking.
gnsstk::RinexObsID::RinexObsID
RinexObsID()
empty constructor, creates an invalid object
Definition: RinexObsID.hpp:106
gnsstk::TrackingCode::YCodeless
@ YCodeless
Encrypted legacy GPS precise code, squaring codeless tracking.
gnsstk::TrackingCode::L1CD
@ L1CD
Modernized GPS L1C civil code tracking (data)
gnsstk::TrackingCode::E6ABC
@ E6ABC
Galileo E6 A+B+C combined tracking.
gnsstk::CarrierBand::G1
@ G1
GLONASS G1.
gnsstk::TrackingCode::L5Q
@ L5Q
Modernized GPS L5 civil quadrature.
gnsstk::TrackingCode::RSSD
@ RSSD
IRNSS S-band RS(D)
gnsstk::TrackingCode::B2bIQ
@ B2bIQ
BeiDou B2b I+Q code.
gnsstk::TrackingCode::L1CP
@ L1CP
Modernized GPS L1C civil code tracking (pilot)
gnsstk::TrackingCode::E5bQ
@ E5bQ
Galileo E5b Q code.
gnsstk::TrackingCode::L5SQ
@ L5SQ
QZSS L5S I+Q combined tracking.
gnsstk::RinexObsID::char2ot
static GNSSTK_EXPORT std::map< char, ObservationType > char2ot
Definition: RinexObsID.hpp:285
gnsstk::TrackingCode::L1OCD
@ L1OCD
GLONASS L1 OCd code.
gnsstk::TrackingCode::E1A
@ E1A
Galileo L1 PRS code.
gnsstk::TrackingCode::E6A
@ E6A
Galileo E6 PRS code.
gnsstk::TrackingCode::L2CL
@ L2CL
Modernized GPS L2 civil L code.
gnsstk::TrackingCode::B2bI
@ B2bI
BeiDou B2b I code.
gnsstk::TrackingCode::E1B
@ E1B
Galileo E1-B signal, supporting OS/HAS/SoL.
gnsstk::TrackingCode::L2OCP
@ L2OCP
GLONASS L2 OCp code.
gnsstk::TrackingCode::L6E
@ L6E
QZSS L6 Block II E code.
gnsstk::CarrierBand::I9
@ I9
NavIC S.
gnsstk::CarrierBand::E5b
@ E5b
Galileo E5b.
gnsstk::ObservationType::Phase
@ Phase
accumulated phase, in cycles
gnsstk::TrackingCode::L5SI
@ L5SI
QZSS L5S in-phase.
gnsstk::TrackingCode::Y
@ Y
Encrypted legacy GPS precise code.
gnsstk::TrackingCode::B2bQ
@ B2bQ
BeiDou B2b Q code.
gnsstk::CarrierBand::Any
@ Any
Used to match any carrier band.
gnsstk::TrackingCode::L5I
@ L5I
Modernized GPS L5 civil in-phase.
gnsstk::ObservationType::Channel
@ Channel
Channel number.
gnsstk::ObsID::band
CarrierBand band
Definition: ObsID.hpp:200
gnsstk::TrackingCode::E6BC
@ E6BC
Galileo E6 B+C combined tracking.
gnsstk::TrackingCode::RSL5D
@ RSL5D
IRNSS L5 RS(D)
gnsstk::TrackingCode::L1OCP
@ L1OCP
GLONASS L1 OCp code.
gnsstk::ObservationType::SNR
@ SNR
Signal strength, in dB-Hz.
gnsstk::ObservationType::Range
@ Range
pseudorange, in meters
gnsstk::TrackingCode::B2abIQ
@ B2abIQ
BeiDou B2a+B I+Q code.
gnsstk::TrackingCode::RSSDP
@ RSSDP
IRNSS S-band B+C.
gnsstk::TrackingCode::MDP
@ MDP
Modernized GPS military unique code.
gnsstk::CarrierBand::Unknown
@ Unknown
Uninitialized value.
gnsstk::TrackingCode::E5abI
@ E5abI
Galileo E5 I code.
gnsstk
For Sinex::InputHistory.
Definition: BasicFramework.cpp:50
gnsstk::CarrierBand::L2
@ L2
GPS L2, QZSS L2.
gnsstk::TrackingCode::L2CSI
@ L2CSI
GLONASS L2 CSI code.
gnsstk::TrackingCode::E5aIQ
@ E5aIQ
Galileo E5a I+Q combined tracking.
gnsstk::TrackingCode::RSL5DP
@ RSL5DP
IRNSS L5 B+C.
gnsstk::TrackingCode::Standard
@ Standard
Legacy Glonass civil signal.
gnsstk::RinexObsID::validRinexTrackingCodes
static GNSSTK_EXPORT std::map< char, std::map< char, std::string > > validRinexTrackingCodes
Definition: RinexObsID.hpp:281
gnsstk::TrackingCode::E5aI
@ E5aI
Galileo E5a I code.
gnsstk::TrackingCode::CA
@ CA
Legacy GPS civil code.
gnsstk::TrackingCode::B1CP
@ B1CP
BeiDou B1C P code.
gnsstk::TrackingCode::B1A
@ B1A
BeiDou B1A code.
gnsstk::ObservationType::Any
@ Any
Used to match any observation type.
gnsstk::TrackingCode::B2Q
@ B2Q
BeiDou B2 Q code.
gnsstk::CarrierBand::B3
@ B3
BeiDou B3.
gnsstk::CarrierBand::B1
@ B1
BeiDou B1.
gnsstk::TrackingCode::B1CDP
@ B1CDP
BeiDou B1C D+P code.
gnsstk::CarrierBand::G3
@ G3
GLONASS G3.
gnsstk::TrackingCode::B2aI
@ B2aI
BeiDou B2a I code.
RinexObsID.hpp
gnsstk::TrackingCode::B2abI
@ B2abI
BeiDou B2a+b I code.
gnsstk::TrackingCode::L2CSIL2OCp
@ L2CSIL2OCp
GLONASS L2 CSI+OCp combined tracking.
gnsstk::TrackingCode::B2aIQ
@ B2aIQ
BeiDou B2a I+Q code.
gnsstk::TrackingCode::L2CML
@ L2CML
Modernized GPS L2 civil M+L combined tracking.
gnsstk::CarrierBand::G1a
@ G1a
GLONASS G1a.
gnsstk::TrackingCode::Ztracking
@ Ztracking
Encrypted legacy GPS precise code, codeless Z tracking.
gnsstk::TrackingCode::B3IQ
@ B3IQ
BeiDou B3 I+Q code.
gnsstk::TrackingCode::B1I
@ B1I
BeiDou B1 I code.
gnsstk::CarrierBand::E5ab
@ E5ab
Galileo E5, BeiDou B2.
gnsstk::TrackingCode::L6DE
@ L6DE
QZSS L6 Block II D+E combined tracking.
version
string version(string("2.4 9/23/15 rev"))
gnsstk::ObsID::code
TrackingCode code
Definition: ObsID.hpp:201
gnsstk::TrackingCode::L3OCD
@ L3OCD
Glonass L3 I code.
gnsstk::CarrierBand::L1
@ L1
GPS L1, Galileo E1, SBAS L1, QZSS L1, BeiDou L1.
gnsstk::TrackingCode::B1IQ
@ B1IQ
BeiDou B1 I+Q code.
gnsstk::TrackingCode::E1BC
@ E1BC
Galileo E1 B+C combined tracking.
gnsstk::TrackingCode::BCodeless
@ BCodeless
BeiDou codeless tracking.
gnsstk::TrackingCode::E5abQ
@ E5abQ
Galileo E5 Q code.
gnsstk::RinexObsID::char2tc
static GNSSTK_EXPORT std::map< char, TrackingCode > char2tc
Definition: RinexObsID.hpp:287
gnsstk::TrackingCode::P
@ P
Legacy GPS precise code.
gnsstk::TrackingCode::E5bIQ
@ E5bIQ
Galileo E5b I+Q combined tracking.
gnsstk::TrackingCode::B2abQ
@ B2abQ
BeiDou B2a+B Q code.
gnsstk::TrackingCode::B2IQ
@ B2IQ
BeiDou B2 I+Q code.
gnsstk::CarrierBand::G2a
@ G2a
GLONASS G2a.
gnsstk::TrackingCode::L1OCDP
@ L1OCDP
GLONASS L1 OCd+OCp combined tracking.
gnsstk::CarrierBand::B2
@ B2
BeiDou B2b.
gnsstk::TrackingCode::B1CD
@ B1CD
BeiDou B1C D code.
gnsstk::TrackingCode::E6B
@ E6B
Galileo E6-b signal.
gnsstk::TrackingCode::L5SIQ
@ L5SIQ
QZSS L5S quadrature.
gnsstk::RinexObsID::tc2char
static GNSSTK_EXPORT std::map< TrackingCode, char > tc2char
Definition: RinexObsID.hpp:290
gnsstk::RinexObsID::char2cb
static GNSSTK_EXPORT std::map< char, CarrierBand > char2cb
Definition: RinexObsID.hpp:286
gnsstk::TrackingCode::L2CM
@ L2CM
Modernized GPS L2 civil M code.
gnsstk::TrackingCode::SPSL5
@ SPSL5
IRNSS L5 SPS.
gnsstk::RinexObsID::cb2char
static GNSSTK_EXPORT std::map< CarrierBand, char > cb2char
Definition: RinexObsID.hpp:289
gnsstk::ObsID::type
ObservationType type
Definition: ObsID.hpp:199
gnsstk::TrackingCode::RSL5P
@ RSL5P
IRNSS L5 RS(P)
gnsstk::TrackingCode::LEXS
@ LEXS
QZSS LEX(6) short.
gnsstk::TrackingCode::Semicodeless
@ Semicodeless
Encrypted legacy GPS precise code, other codeless tracking.
gnsstk::TrackingCode::E5bI
@ E5bI
Galileo E5b I code.
gnsstk::TrackingCode::L3OCP
@ L3OCP
Glonass L3 Q code.
gnsstk::TrackingCode::E5aQ
@ E5aQ
Galileo E5a Q code.
gnsstk::CarrierBand::Undefined
@ Undefined
Code is known to be undefined (as opposed to unknown)
gnsstk::ObservationType::Doppler
@ Doppler
Doppler, in Hz.
gnsstk::TrackingCode::B3I
@ B3I
BeiDou B3 I code.
gnsstk::ObservationType::Unknown
@ Unknown
gnsstk::TrackingCode::E6C
@ E6C
Galileo E6 Dataless code.
gnsstk::TrackingCode::Precise
@ Precise
Legacy Glonass precise signal.
gnsstk::RinexObsID::ot2char
static GNSSTK_EXPORT std::map< ObservationType, char > ot2char
Definition: RinexObsID.hpp:288
gnsstk::TrackingCode::L6D
@ L6D
QZSS L6 Block II D code.
GNSSTK_THROW
#define GNSSTK_THROW(exc)
Definition: Exception.hpp:366
gnsstk::TrackingCode::L1CDP
@ L1CDP
Modernized GPS L1C civil code tracking (pilot + data)
gnsstk::TrackingCode::E1ABC
@ E1ABC
Galileo E1 A+B+C combined tracking.
gnsstk::TrackingCode::L1S
@ L1S
QZSS L1-SAIF.
gnsstk::TrackingCode::L3OCDP
@ L3OCDP
Glonass L3 I+Q combined tracking.
gnsstk::ObservationType::Iono
@ Iono
Ionospheric delay.
gnsstk::TrackingCode::LEXL
@ LEXL
QZSS LEX(6) long.
gnsstk::TrackingCode::B3Q
@ B3Q
BeiDou B3 Q code.
gnsstk::TrackingCode::E1C
@ E1C
Galileo E1 Dataless code.
gnsstk::TrackingCode::SPSS
@ SPSS
IRNSS S-band SPS.
gnsstk::CarrierBand::E6
@ E6
Galileo E6, QZSS L6.
gnsstk::TrackingCode::Undefined
@ Undefined
Code is known to be undefined (as opposed to unknown)
gnsstk::TrackingCode::Any
@ Any
Used to match any tracking code.
gnsstk::TrackingCode::LEXSL
@ LEXSL
QZSS LEX(6) combined tracking.
gnsstk::TrackingCode::Unknown
@ Unknown
Uninitialized value.
gnsstk::TrackingCode::B2I
@ B2I
BeiDou B2 I code.
gnsstk::CarrierBand::L5
@ L5
GPS L5, Galileo E5a, SBAS L5, QZSS L5, BeiDou B2a, NavIC L5.
gnsstk::CarrierBand::G2
@ G2
GLONASS G2.
gnsstk::TrackingCode::RSSP
@ RSSP
INRSS S-band RS(P)
gnsstk::TrackingCode::B2aQ
@ B2aQ
BeiDou B2a Q code.


gnsstk
Author(s):
autogenerated on Wed Oct 25 2023 02:40:41