RinexObsID_T.cpp
Go to the documentation of this file.
1 //==============================================================================
2 //
3 // This file is part of GNSSTk, the ARL:UT GNSS Toolkit.
4 //
5 // The GNSSTk is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU Lesser General Public License as published
7 // by the Free Software Foundation; either version 3.0 of the License, or
8 // any later version.
9 //
10 // The GNSSTk is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU Lesser General Public License for more details.
14 //
15 // You should have received a copy of the GNU Lesser General Public
16 // License along with GNSSTk; if not, write to the Free Software Foundation,
17 // Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
18 //
19 // This software was developed by Applied Research Laboratories at the
20 // University of Texas at Austin.
21 // Copyright 2004-2022, The Board of Regents of The University of Texas System
22 //
23 //==============================================================================
24 
25 //==============================================================================
26 //
27 // This software was developed by Applied Research Laboratories at the
28 // University of Texas at Austin, under contract to an agency or agencies
29 // within the U.S. Department of Defense. The U.S. Government retains all
30 // rights to use, duplicate, distribute, disclose, or release this software.
31 //
32 // Pursuant to DoD Directive 523024
33 //
34 // DISTRIBUTION STATEMENT A: This software has been approved for public
35 // release, distribution is unlimited.
36 //
37 //==============================================================================
38 
39 #include "TestUtil.hpp"
40 #include "RinexObsID.hpp"
41 #include "Rinex3ObsHeader.hpp"
42 #include <iostream>
43 
44 using namespace std;
45 
46 namespace gnsstk
47 {
48  ostream& operator<<(ostream& s, CarrierBand cb)
49  {
51  return s;
52  }
53  ostream& operator<<(ostream& s, TrackingCode tc)
54  {
56  return s;
57  }
58  ostream& operator<<(ostream& s, ObservationType ot)
59  {
61  return s;
62  }
63 }
64 
65 
66 // This makes sure that
67 // 1) The RINEX obs ID decodes as expected
68 // 2) The RINEX obs ID encodes as expected
69 // 3) The wildcard (Any) ObsID enums match
70 #define CONTEST(RINEXCODE, CARRIERBAND, TRACKINGCODE) \
71  try \
72  { \
73  TUCSM("RinexObsID(\"" RINEXCODE "\")"); \
74  gnsstk::RinexObsID obs(RINEXCODE, \
75  gnsstk::Rinex3ObsBase::currentVersion); \
76  TUASSERTE(gnsstk::ObservationType, \
77  gnsstk::ObservationType::Phase, \
78  obs.type); \
79  TUASSERTE(gnsstk::CarrierBand, \
80  CARRIERBAND, obs.band); \
81  TUASSERTE(gnsstk::TrackingCode, \
82  TRACKINGCODE, obs.code); \
83  gnsstk::RinexObsID obs2(gnsstk::ObservationType::Phase, \
84  CARRIERBAND, TRACKINGCODE); \
85  TUASSERTE(std::string, std::string(RINEXCODE).substr(1), \
86  obs2.asString()); \
87  gnsstk::RinexObsID wildcard("****", \
88  gnsstk::Rinex3ObsBase::currentVersion); \
89  TUASSERTE(gnsstk::RinexObsID, wildcard, obs); \
90  } \
91  catch (gnsstk::Exception& exc) \
92  { \
93  cerr << exc << endl; \
94  TUFAIL("Unexpected exception"); \
95  } \
96  catch (std::exception& exc) \
97  { \
98  TUFAIL("Unexpected exception " + std::string(exc.what())); \
99  } \
100  catch (...) \
101  { \
102  TUFAIL("Unknown exception"); \
103  }
104 
106 {
107 public:
108  RinexObsID_T() {} // Default Constructor, set the precision value
109  ~RinexObsID_T() {} // Default Desructor
111  unsigned decodeTest();
115  unsigned fromStringConstructorTest();
116  unsigned newIDTest();
126  void testCodes(gnsstk::TestUtil& testFramework, const std::string& system,
127  const std::string& bandCode, bool prValid = true);
128 };
129 
130 
131 unsigned RinexObsID_T ::
133 {
134  TUDEF("RinexObsID", "RinexObsID(string)");
135  // GPS L1
136  std::string codes("CSLXPWYM");
137  for (unsigned i = 0; i < codes.length(); i++)
138  {
139  testCodes(testFramework, "G", std::string("1") + codes[i]);
140  }
141  testCodes(testFramework, "G", "1N", false);
142  // GPS L2
143  codes = "CDSLXPWYM";
144  for (unsigned i = 0; i < codes.length(); i++)
145  {
146  testCodes(testFramework, "G", std::string("2") + codes[i]);
147  }
148  testCodes(testFramework, "G", "2N", false);
149  // GPS L5
150  codes = "IQX";
151  for (unsigned i = 0; i < codes.length(); i++)
152  {
153  testCodes(testFramework, "G", std::string("5") + codes[i]);
154  }
155  // GLONASS G1
156  codes = "CP";
157  for (unsigned i = 0; i < codes.length(); i++)
158  {
159  testCodes(testFramework, "R", std::string("1") + codes[i]);
160  }
161  // GLONASS G1a
162  codes = "ABX";
163  for (unsigned i = 0; i < codes.length(); i++)
164  {
165  testCodes(testFramework, "R", std::string("4") + codes[i]);
166  }
167  // GLONASS G2
168  codes = "CP";
169  for (unsigned i = 0; i < codes.length(); i++)
170  {
171  testCodes(testFramework, "R", std::string("2") + codes[i]);
172  }
173  // GLONASS G2a
174  codes = "ABX";
175  for (unsigned i = 0; i < codes.length(); i++)
176  {
177  testCodes(testFramework, "R", std::string("6") + codes[i]);
178  }
179  // GLONASS G3
180  codes = "IQX";
181  for (unsigned i = 0; i < codes.length(); i++)
182  {
183  testCodes(testFramework, "R", std::string("3") + codes[i]);
184  }
185  // Galileo E1
186  codes = "ABCXZ";
187  for (unsigned i = 0; i < codes.length(); i++)
188  {
189  testCodes(testFramework, "E", std::string("1") + codes[i]);
190  }
191  // Galileo E5a
192  codes = "IQX";
193  for (unsigned i = 0; i < codes.length(); i++)
194  {
195  testCodes(testFramework, "E", std::string("5") + codes[i]);
196  }
197  // Galileo E5b
198  codes = "IQX";
199  for (unsigned i = 0; i < codes.length(); i++)
200  {
201  testCodes(testFramework, "E", std::string("7") + codes[i]);
202  }
203  // Galileo E5
204  codes = "IQX";
205  for (unsigned i = 0; i < codes.length(); i++)
206  {
207  testCodes(testFramework, "E", std::string("8") + codes[i]);
208  }
209  // Galileo E6
210  codes = "ABCXZ";
211  for (unsigned i = 0; i < codes.length(); i++)
212  {
213  testCodes(testFramework, "E", std::string("6") + codes[i]);
214  }
215  // SBAS L1
216  testCodes(testFramework, "S", "1C");
217  // SBAS L5
218  codes = "IQX";
219  for (unsigned i = 0; i < codes.length(); i++)
220  {
221  testCodes(testFramework, "S", std::string("5") + codes[i]);
222  }
223 
224  // test that channel num pseudo obs is decoded properly
225  TUCSM("RinexObsID(\"GX1 \")");
228  // RINEX requires that the "band" be "1" at all times, but I'm
229  // not sure it strictly makes sense to actually translate it to
230  // L1.
233 
234  // test that iono delay pseudo obs is decoded properly
235  TUCSM("RinexObsID(\"GI1 \")");
240  TUCSM("RinexObsID(\"GI2 \")");
245  TUCSM("RinexObsID(\"RI3 \")");
250  TUCSM("RinexObsID(\"RI4 \")");
255  TUCSM("RinexObsID(\"GI5 \")");
260  TUCSM("RinexObsID(\"EI6 \")");
265  TUCSM("RinexObsID(\"CI7 \")");
272  //TUASSERTE(gnsstk::CarrierBand, gnsstk::CarrierBand::B2, roidI7.band);
274  TUCSM("RinexObsID(\"EI8 \")");
279  TUCSM("RinexObsID(\"II9 \")");
284 
285  // test RINEX 3.02 crapola
286  TUCSM("RinexObsID() 3.02");
287  gnsstk::RinexObsID roid302("CC1I", 3.02);
291  TUASSERTE(std::string, "C1I", roid302.asString());
292  TUASSERTFE(3.02, roid302.rinexVersion);
293  roid302.rinexVersion = 3.04;
294  TUASSERTE(std::string, "C2I", roid302.asString());
295 
296  gnsstk::RinexObsID roid302q("CC1Q", 3.02);
300  TUASSERTE(std::string, "C1Q", roid302q.asString());
301  TUASSERTFE(3.02, roid302q.rinexVersion);
302  roid302q.rinexVersion = 3.04;
303  TUASSERTE(std::string, "C2Q", roid302q.asString());
304 
305  gnsstk::RinexObsID roid302iq("CC1X", 3.02);
307  roid302iq.type);
310  TUASSERTE(std::string, "C1X", roid302iq.asString());
311  TUASSERTFE(3.02, roid302iq.rinexVersion);
312  roid302iq.rinexVersion = 3.04;
313  TUASSERTE(std::string, "C2X", roid302iq.asString());
314 
315  TUCSM("RinexObsID() 3.03");
316  gnsstk::RinexObsID roid303("CC2I", 3.03);
320  TUASSERTFE(3.03, roid303.rinexVersion);
321 
322  TUCSM("RinexObsID() 3.04");
323  gnsstk::RinexObsID roid304("CC2I", 3.04);
327  TUASSERTFE(3.04, roid304.rinexVersion);
328 
329  gnsstk::RinexObsID roid304d("CC1D", 3.04);
333  TUASSERTFE(3.04, roid304d.rinexVersion);
334 
335  gnsstk::RinexObsID roid304p("CC1P", 3.04);
339  TUASSERTFE(3.04, roid304p.rinexVersion);
340 
341  gnsstk::RinexObsID roid304dp("CC1X", 3.04);
343  roid304dp.type);
346  TUASSERTFE(3.04, roid304dp.rinexVersion);
347 
348  gnsstk::RinexObsID roid304a("CC1A", 3.04);
352  TUASSERTFE(3.04, roid304a.rinexVersion);
353 
354  gnsstk::RinexObsID roid304n("CL1N", 3.04);
358  roid304n.code);
359  TUASSERTFE(3.04, roid304n.rinexVersion);
360 
361  TURETURN();
362 }
363 
364 
365 void RinexObsID_T ::
367  const std::string& system,
368  const std::string& bandCode,
369  bool prValid)
370 {
371  std::string invalidCodes("ABEFGHIJKMNOPQRTUVWXYZabcdefghijklmnopqrstuvwxyz"),
372  validCodes("LDS");
373  if (prValid)
374  validCodes += "C";
375  else
376  invalidCodes += "C";
377  for (unsigned i = 0; i < invalidCodes.length(); i++)
378  {
379  std::string rin3code = system + invalidCodes[i] + bandCode;
380  // RinexObsID doesn't throw an exception for invalid codes?
381  // TUCSM("RinexObsID("+rin3code+")");
382  // TUTHROW(gnsstk::RinexObsID(rin3code));
383  TUCSM("::isValidRinexObsID("+rin3code+")");
385  }
386  for (unsigned i = 0; i < validCodes.length(); i++)
387  {
388  std::string rin3code = system + validCodes[i] + bandCode;
389  TUCSM("RinexObsID("+rin3code+")");
390  TUCATCH(gnsstk::RinexObsID(rin3code));
391  // this is declared a global at the moment :-/
392  TUCSM("::isValidRinexObsID("+rin3code+")");
394  }
395 }
396 
397 
398  //reads in 3-4 length string
400 {
401  TUDEF("RinexObsID", "RinexObsID(string)");
402  std::string failMesg;
403 
404  //set with invalid length
405  failMesg = "[testing] RinexObsID constructor from invalid string, [expected]"
406  " exception gnsstk::Exception, [actual] threw no exception";
407  try
408  {
410  TUFAIL(failMesg);
411  }
412  catch (gnsstk::Exception e)
413  {
414  TUPASS(failMesg);
415  }
416 
417  try {
419  TUFAIL(failMesg);
420  }
421  catch (gnsstk::Exception e)
422  {
423  TUPASS(failMesg);
424  }
425 
426  //testing base assign w/out using any of the reused codes
427  // GPS L1 C/A PseudoRange
432 
433  //testing only case of reassinged codes for GPS
434  // GPS L5 IQ Doppler
440 
441  //testing completely random case
442  // QZSS E6 L Carrier Phase
447 
456  // these are only valid in rinex 3.02 and the macro defaults
457  // to the current version, which is not 3.02.
458  // CONTEST("CL1I", gnsstk::CarrierBand::B1, gnsstk::TrackingCode::B1I);
459  // CONTEST("CL1Q", gnsstk::CarrierBand::B1, gnsstk::TrackingCode::B1Q);
553  // This is a duplicate of the previous one only with
554  // different expectations so we have to ignore one or the
555  // other. I chose to ignore this one since the previous one
556  // is how we've been decoding things in the past.
557  //CONTEST("JL6S", gnsstk::CarrierBand::E6, gnsstk::TrackingCode::L6D);
566 
571 
572  TURETURN();
573 }
574 
575 
577 {
578  TUDEF("RinexObsID", "newID");
579  std::string failMesg;
580 
581  failMesg = "[testing] RinexObsID::newID to redefine existing ID, [expected]"
582  " exception gnsstk::Exception, [actual] threw no exception";
583  try
584  {
585  gnsstk::RinexObsID::newID("C6Z", "L6 Z range");
586  TUFAIL(failMesg);
587  }
588  catch(gnsstk::Exception e)
589  {
590  TUPASS(failMesg);
591  }
592 
593  //create a fictional ID completely
594  gnsstk::RinexObsID fic(gnsstk::RinexObsID::newID("T9W", "L9 W test"));
595  TUASSERT(gnsstk::RinexObsID::char2ot.count('T') > 0);
596  TUASSERT(gnsstk::RinexObsID::char2cb.count('9') > 0);
597  TUASSERT(gnsstk::RinexObsID::char2tc.count('W') > 0);
604 
605  failMesg = "[testing] RinexObsID::newID to redefine existing ID, [expected]"
606  " exception gnsstk::Exception, [actual] threw no exception";
607  try
608  {
609  gnsstk::RinexObsID::newID("T9W", "L9 W test");
610  TUFAIL(failMesg);
611  }
612  catch(gnsstk::Exception e)
613  {
614  TUPASS(failMesg);
615  }
616 
617  TURETURN();
618 }
619 
620 
621 int main() //Main function to initialize and run all tests above
622 {
623  unsigned errorTotal = 0;
624  RinexObsID_T testClass;
625 
626  errorTotal += testClass.decodeTest();
627  errorTotal += testClass.fromStringConstructorTest();
628  errorTotal += testClass.newIDTest();
629  cout << "Total Failures for " << __FILE__ << ": " << errorTotal << endl;
630  return errorTotal;
631 }
gnsstk::TrackingCode::B3AIQ
@ B3AIQ
BeiDou B3A I+Q code.
TUCSM
#define TUCSM(METHOD)
Definition: TestUtil.hpp:59
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::asString
std::string asString() const
Definition: RinexObsID.hpp:190
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::TrackingCode::L5Q
@ L5Q
Modernized GPS L5 civil quadrature.
gnsstk::CarrierBand::G1
@ G1
GLONASS G1.
TUCATCH
#define TUCATCH(STATEMENT)
Definition: TestUtil.hpp:193
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::RinexObsID::char2ot
static GNSSTK_EXPORT std::map< char, ObservationType > char2ot
Definition: RinexObsID.hpp:285
gnsstk::TrackingCode::L5SQ
@ L5SQ
QZSS L5S I+Q combined tracking.
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::isValidRinexObsID
bool isValidRinexObsID(const std::string &strID)
Definition: RinexObsID.cpp:223
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
TUASSERTE
#define TUASSERTE(TYPE, EXP, GOT)
Definition: TestUtil.hpp:81
gnsstk::CarrierBand
CarrierBand
Definition: CarrierBand.hpp:54
TUFAIL
#define TUFAIL(MSG)
Definition: TestUtil.hpp:228
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::StringUtils::asString
std::string asString(IonexStoreStrategy e)
Convert a IonexStoreStrategy to a whitespace-free string name.
Definition: IonexStoreStrategy.cpp:46
gnsstk::ObsID::band
CarrierBand band
Definition: ObsID.hpp:200
gnsstk::Rinex3ObsBase::currentVersion
static const GNSSTK_EXPORT double currentVersion
Definition: Rinex3ObsBase.hpp:72
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::Range
@ Range
pseudorange, in meters
gnsstk::TrackingCode::B2abIQ
@ B2abIQ
BeiDou B2a+B I+Q code.
RinexObsID_T::~RinexObsID_T
~RinexObsID_T()
Definition: RinexObsID_T.cpp:109
gnsstk::TrackingCode::RSSDP
@ RSSDP
IRNSS S-band B+C.
gnsstk::TrackingCode::MDP
@ MDP
Modernized GPS military unique code.
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::Exception
Definition: Exception.hpp:151
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.
TUASSERT
#define TUASSERT(EXPR)
Definition: TestUtil.hpp:63
TestUtil.hpp
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.
main
int main()
Definition: RinexObsID_T.cpp:621
RinexObsID_T::newIDTest
unsigned newIDTest()
Definition: RinexObsID_T.cpp:576
gnsstk::TrackingCode::B1CDP
@ B1CDP
BeiDou B1C D+P code.
gnsstk::CarrierBand::G3
@ G3
GLONASS G3.
gnsstk::TrackingCode::B2aI
@ B2aI
BeiDou B2a I code.
TURETURN
#define TURETURN()
Definition: TestUtil.hpp:232
TUPASS
#define TUPASS(MSG)
Definition: TestUtil.hpp:230
RinexObsID_T::RinexObsID_T
RinexObsID_T()
Definition: RinexObsID_T.cpp:108
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.
Rinex3ObsHeader.hpp
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.
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::RinexObsID
Definition: RinexObsID.hpp:102
gnsstk::TrackingCode::BCodeless
@ BCodeless
BeiDou codeless tracking.
gnsstk::TrackingCode::E5abQ
@ E5abQ
Galileo E5 Q code.
TUDEF
#define TUDEF(CLASS, METHOD)
Definition: TestUtil.hpp:56
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.
std::operator<<
std::ostream & operator<<(std::ostream &s, gnsstk::StringUtils::FFLead v)
Definition: FormattedDouble_T.cpp:44
gnsstk::TrackingCode::B1CD
@ B1CD
BeiDou B1C D code.
CONTEST
#define CONTEST(RINEXCODE, CARRIERBAND, TRACKINGCODE)
Definition: RinexObsID_T.cpp:70
gnsstk::TrackingCode::E6B
@ E6B
Galileo E6-b signal.
gnsstk::TrackingCode::L5SIQ
@ L5SIQ
QZSS L5S quadrature.
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::ObsID::type
ObservationType type
Definition: ObsID.hpp:199
gnsstk::TrackingCode
TrackingCode
Definition: TrackingCode.hpp:64
gnsstk::TrackingCode::RSL5P
@ RSL5P
IRNSS L5 RS(P)
std
Definition: Angle.hpp:142
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::ObservationType::Doppler
@ Doppler
Doppler, in Hz.
gnsstk::TrackingCode::B3I
@ B3I
BeiDou B3 I code.
gnsstk::TrackingCode::E6C
@ E6C
Galileo E6 Dataless code.
TUASSERTFE
#define TUASSERTFE(EXP, GOT)
Definition: TestUtil.hpp:103
gnsstk::TrackingCode::Precise
@ Precise
Legacy Glonass precise signal.
RinexObsID_T::decodeTest
unsigned decodeTest()
Make sure RinexObsID can decode all valid observation codes.
Definition: RinexObsID_T.cpp:132
gnsstk::TrackingCode::L1CDP
@ L1CDP
Modernized GPS L1C civil code tracking (pilot + data)
gnsstk::TrackingCode::E1ABC
@ E1ABC
Galileo E1 A+B+C combined tracking.
gnsstk::RinexObsID::newID
static RinexObsID newID(const std::string &id, const std::string &desc="")
Definition: RinexObsID.cpp:380
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::TestUtil
Definition: TestUtil.hpp:265
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.
RinexObsID_T::testCodes
void testCodes(gnsstk::TestUtil &testFramework, const std::string &system, const std::string &bandCode, bool prValid=true)
Definition: RinexObsID_T.cpp:366
RinexObsID_T
Definition: RinexObsID_T.cpp:105
RinexObsID_T::fromStringConstructorTest
unsigned fromStringConstructorTest()
Definition: RinexObsID_T.cpp:399
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::ObservationType
ObservationType
The type of observation, mostly used by ObsID.
Definition: ObservationType.hpp:55
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