PNBGPSCNavDataFactory_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 //
28 // This software was developed by Applied Research Laboratories at the
29 // University of Texas at Austin, under contract to an agency or agencies
30 // within the U.S. Department of Defense. The U.S. Government retains all
31 // rights to use, duplicate, distribute, disclose, or release this software.
32 //
33 // Pursuant to DoD Directive 523024
34 //
35 // DISTRIBUTION STATEMENT A: This software has been approved for public
36 // release, distribution is unlimited.
37 //
38 //==============================================================================
39 #include "FactoryCounter.hpp"
41 #include "TestUtil.hpp"
42 #include "GPSCNavTimeOffset.hpp"
43 #include "GPSCNavHealth.hpp"
44 #include "GPSCNavEph.hpp"
45 #include "GPSCNavAlm.hpp"
46 #include "GPSCNavRedAlm.hpp"
47 #include "GPSCNavIono.hpp"
48 #include "GPSCNavISC.hpp"
49 #include "TimeString.hpp"
50 
51 using namespace std;
52 
53 // avoid having to type out template params over and over.
55 
56 namespace gnsstk
57 {
58  std::ostream& operator<<(std::ostream& s, SVHealth h)
59  {
60  s << StringUtils::asString(h);
61  return s;
62  }
63 }
64 
65 
67 {
68 public:
70 
71  unsigned addDataAllTest();
73  unsigned addDataEphemerisTest();
75  unsigned addDataAlmanacTest();
77  unsigned addDataHealthTest();
79  unsigned addDataTimeTest();
81  unsigned addDataEphHealthTest();
83  unsigned addDataAlmHealthTest();
84  unsigned processEphTest();
85  unsigned processAlmOrbTest();
86  unsigned processRedAlmOrbTest();
87  unsigned process12Test();
88  unsigned process30Test();
92  unsigned process31Test();
93  unsigned process33Test();
94  unsigned process35Test();
95  // week rollover test for decoding ephemerides
96  unsigned processEphWRTest();
97 
98 #include "CNavTestDataDecl.hpp"
99 };
100 
101 
104 {
105 #include "CNavTestDataDef.hpp"
106 }
107 
108 
111 {
112  TUDEF("PNBGPSCNavDataFactory", "addData");
113  GPSFactoryCounter fc(testFramework);
119  gnsstk::PackedNavBitsPtr nonGPS =
120  std::make_shared<gnsstk::PackedNavBits>(gloSid,gloid,gloNav,"XX",
122  gnsstk::NavDataPtrList navOut;
123  // should refuse non-GPS data
124  TUASSERTE(bool, false, uut.addData(nonGPS, navOut));
125  fc.validateResults(navOut, __LINE__);
127  // get 3 health from ephemeris 1
128  TUASSERTE(bool, true, uut.addData(msg10CNAVGPSL2, navOut));
129  fc.validateResults(navOut, __LINE__, 3, 0, 0, 0, 3);
130  // nothing from ephemeris 2 (incomplete ephemeris)
131  TUASSERTE(bool, true, uut.addData(msg11CNAVGPSL2, navOut));
132  fc.validateResults(navOut, __LINE__);
133  // clock data completes the ephemeris
134  TUASSERTE(bool, true, uut.addData(msg30CNAVGPSL2, navOut));
135  fc.validateResults(navOut, __LINE__, 3, 0, 1, 0, 0, 1, 1);
136  // nothing in message type 32 that we care about (not completing
137  // an ephemeris)
138  TUASSERTE(bool, true, uut.addData(msg32CNAVGPSL2, navOut));
139  fc.validateResults(navOut, __LINE__);
140  // expecting a time offset record from 33
141  TUASSERTE(bool, true, uut.addData(msg33CNAVGPSL2, navOut));
142  fc.validateResults(navOut, __LINE__, 1, 0, 0, 1);
143  //
144  // QZSS CNav data (L5)
145  //
146  // get 3 health from ephemeris 1
147  TUASSERTE(bool, true, uut.addData(msg10CNAVQZSSL5, navOut));
148  fc.validateResults(navOut, __LINE__, 3, 0, 0, 0, 3);
149  // nothing from ephemeris 2 (incomplete ephemeris)
150  TUASSERTE(bool, true, uut.addData(msg11CNAVQZSSL5, navOut));
151  fc.validateResults(navOut, __LINE__);
152  // clock data completes the ephemeris
153  TUASSERTE(bool, true, uut.addData(msg30CNAVQZSSL5, navOut));
154  fc.validateResults(navOut, __LINE__, 3, 0, 1, 0, 0, 1, 1);
155  // nothing in message type 32 that we care about (not completing
156  // an ephemeris)
157  TUASSERTE(bool, true, uut.addData(msg32CNAVQZSSL5, navOut));
158  fc.validateResults(navOut, __LINE__);
159  // expecting an almanac and 3 health from message type 37
160  TUASSERTE(bool, true, uut.addData(msg37CNAVQZSSL5, navOut));
161  fc.validateResults(navOut, __LINE__, 4, 1, 0, 0, 3);
162  // expecting 4 almanacs and 12 health from message type 31
163  TUASSERTE(bool, true, uut.addData(msg31CNAVQZSSL5, navOut));
164  fc.validateResults(navOut, __LINE__, 16, 4, 0, 0, 12);
165  // expecting nothing from message type 12 because it's empty.
166  TUASSERTE(bool, true, uut.addData(msg12CNAVQZSSL5, navOut));
167  fc.validateResults(navOut, __LINE__);
168  // expecting a time offset record from 35
169  TUASSERTE(bool, true, uut.addData(msg35CNAVQZSSL5, navOut));
170  fc.validateResults(navOut, __LINE__, 1, 0, 0, 1);
171  TURETURN();
172 }
173 
174 
177 {
178  TUDEF("PNBGPSCNavDataFactory", "addData");
179  GPSFactoryCounter fc(testFramework);
181  gnsstk::NavDataPtrList navOut;
182  TUCATCH(uut.setTypeFilter({gnsstk::NavMessageType::Ephemeris}));
183  // add ephemeris 1, expect nothing.
184  TUASSERTE(bool, true, uut.addData(msg10CNAVGPSL2, navOut));
185  fc.validateResults(navOut, __LINE__);
186  // nothing from ephemeris 2 (incomplete ephemeris)
187  TUASSERTE(bool, true, uut.addData(msg11CNAVGPSL2, navOut));
188  fc.validateResults(navOut, __LINE__);
189  // clock data completes the ephemeris
190  TUASSERTE(bool, true, uut.addData(msg30CNAVGPSL2, navOut));
191  fc.validateResults(navOut, __LINE__, 1, 0, 1);
192  // nothing in message type 32 that we care about (not completing
193  // an ephemeris)
194  TUASSERTE(bool, true, uut.addData(msg32CNAVGPSL2, navOut));
195  fc.validateResults(navOut, __LINE__);
196  // message type 33, expect nothing
197  TUASSERTE(bool, true, uut.addData(msg33CNAVGPSL2, navOut));
198  fc.validateResults(navOut, __LINE__);
199  TURETURN();
200 }
201 
202 
205 {
206  TUDEF("PNBGPSCNavDataFactory", "addData");
207  GPSFactoryCounter fc(testFramework);
209  gnsstk::NavDataPtrList navOut;
210  TUCATCH(uut.setTypeFilter({gnsstk::NavMessageType::Almanac}));
212  // add ephemeris 1, expect nothing.
213  TUASSERTE(bool, true, uut.addData(msg10CNAVQZSSL5, navOut));
214  fc.validateResults(navOut, __LINE__);
215  // add ephemeris 2, expect nothing.
216  TUASSERTE(bool, true, uut.addData(msg11CNAVQZSSL5, navOut));
217  fc.validateResults(navOut, __LINE__);
218  // clock data completes the ephemeris
219  TUASSERTE(bool, true, uut.addData(msg30CNAVQZSSL5, navOut));
220  fc.validateResults(navOut, __LINE__);
221  // nothing in message type 32 that we care about
222  TUASSERTE(bool, true, uut.addData(msg32CNAVQZSSL5, navOut));
223  fc.validateResults(navOut, __LINE__);
224  // message type 37, expect one almanac
225  TUASSERTE(bool, true, uut.addData(msg37CNAVQZSSL5, navOut));
226  fc.validateResults(navOut, __LINE__, 1, 1);
227  TURETURN();
228 }
229 
230 
233 {
234  TUDEF("PNBGPSCNavDataFactory", "addData");
235  GPSFactoryCounter fc(testFramework);
237  gnsstk::NavDataPtrList navOut;
238  TUCATCH(uut.setTypeFilter({gnsstk::NavMessageType::Health}));
239  // add ephemeris 1, expect 3 health objects.
240  TUASSERTE(bool, true, uut.addData(msg10CNAVGPSL2, navOut));
241  fc.validateResults(navOut, __LINE__, 3, 0, 0, 0, 3);
242  // nothing from ephemeris 2 (incomplete ephemeris)
243  TUASSERTE(bool, true, uut.addData(msg11CNAVGPSL2, navOut));
244  fc.validateResults(navOut, __LINE__);
245  // clock data completes the ephemeris, but expect nothing
246  TUASSERTE(bool, true, uut.addData(msg30CNAVGPSL2, navOut));
247  fc.validateResults(navOut, __LINE__);
248  // nothing in message type 32 that we care about
249  TUASSERTE(bool, true, uut.addData(msg32CNAVGPSL2, navOut));
250  fc.validateResults(navOut, __LINE__);
251  // message type 33, expect nothing
252  TUASSERTE(bool, true, uut.addData(msg33CNAVGPSL2, navOut));
253  fc.validateResults(navOut, __LINE__);
254  TURETURN();
255 }
256 
257 
260 {
261  TUDEF("PNBGPSCNavDataFactory", "addData");
262  GPSFactoryCounter fc(testFramework);
264  gnsstk::NavDataPtrList navOut;
265  TUCATCH(uut.setTypeFilter({gnsstk::NavMessageType::TimeOffset}));
266  // add ephemeris 1, expect nothing.
267  TUASSERTE(bool, true, uut.addData(msg10CNAVGPSL2, navOut));
268  fc.validateResults(navOut, __LINE__);
269  // nothing from ephemeris 2 (incomplete ephemeris)
270  TUASSERTE(bool, true, uut.addData(msg11CNAVGPSL2, navOut));
271  fc.validateResults(navOut, __LINE__);
272  // clock data completes the ephemeris, but expect nothing
273  TUASSERTE(bool, true, uut.addData(msg30CNAVGPSL2, navOut));
274  fc.validateResults(navOut, __LINE__);
275  // nothing in message type 32 that we care about
276  TUASSERTE(bool, true, uut.addData(msg32CNAVGPSL2, navOut));
277  fc.validateResults(navOut, __LINE__);
278  // message type 33, expect 1 time offset message
279  TUASSERTE(bool, true, uut.addData(msg33CNAVGPSL2, navOut));
280  fc.validateResults(navOut, __LINE__, 1, 0, 0, 1);
281  // message type 35, expect 1 time offset message
282  TUASSERTE(bool, true, uut.addData(msg35CNAVQZSSL5, navOut));
283  fc.validateResults(navOut, __LINE__, 1, 0, 0, 1);
284  TURETURN();
285 }
286 
287 
290 {
291  TUDEF("PNBGPSCNavDataFactory", "addData");
292  GPSFactoryCounter fc(testFramework);
294  gnsstk::NavDataPtrList navOut;
295  TUCATCH(uut.setTypeFilter({gnsstk::NavMessageType::Ephemeris,
296  gnsstk::NavMessageType::Health}));
297  // add ephemeris 1, expect 3 health objects.
298  TUASSERTE(bool, true, uut.addData(msg10CNAVGPSL2, navOut));
299  fc.validateResults(navOut, __LINE__, 3, 0, 0, 0, 3);
300  // nothing from ephemeris 2 (incomplete ephemeris)
301  TUASSERTE(bool, true, uut.addData(msg11CNAVGPSL2, navOut));
302  fc.validateResults(navOut, __LINE__);
303  // clock data completes the ephemeris
304  TUASSERTE(bool, true, uut.addData(msg30CNAVGPSL2, navOut));
305  fc.validateResults(navOut, __LINE__, 1, 0, 1);
306  // nothing in message type 32 that we care about (not completing
307  // an ephemeris)
308  TUASSERTE(bool, true, uut.addData(msg32CNAVGPSL2, navOut));
309  fc.validateResults(navOut, __LINE__);
310  // message type 33, expect nothing
311  TUASSERTE(bool, true, uut.addData(msg33CNAVGPSL2, navOut));
312  fc.validateResults(navOut, __LINE__);
313  TURETURN();
314 }
315 
316 
319 {
320  TUDEF("PNBGPSCNavDataFactory", "addData");
321  GPSFactoryCounter fc(testFramework);
323  gnsstk::NavDataPtrList navOut;
324  TUCATCH(uut.setTypeFilter({gnsstk::NavMessageType::Almanac,
325  gnsstk::NavMessageType::Health}));
326  // add ephemeris 1, expect 3 health objects.
327  TUASSERTE(bool, true, uut.addData(msg10CNAVQZSSL5, navOut));
328  fc.validateResults(navOut, __LINE__, 3, 0, 0, 0, 3);
329  // add ephemeris 2, expect nothing.
330  TUASSERTE(bool, true, uut.addData(msg11CNAVQZSSL5, navOut));
331  fc.validateResults(navOut, __LINE__);
332  // add clock data, expect nothing.
333  TUASSERTE(bool, true, uut.addData(msg30CNAVQZSSL5, navOut));
334  fc.validateResults(navOut, __LINE__);
335  // add message type 32, expect nothing.
336  TUASSERTE(bool, true, uut.addData(msg32CNAVQZSSL5, navOut));
337  fc.validateResults(navOut, __LINE__);
338  // add message type 37, expect 3 health objects and 1 almanac.
339  TUASSERTE(bool, true, uut.addData(msg37CNAVQZSSL5, navOut));
340  fc.validateResults(navOut, __LINE__, 4, 1, 0, 0, 3);
341  TURETURN();
342 }
343 
344 
347 {
348  TUDEF("PNBGPSCNavDataFactory", "processEph");
349  GPSFactoryCounter fc(testFramework);
351  gnsstk::NavMessageID nmidExpL1(
356  gnsstk::NavMessageID nmidExpL2(
361  gnsstk::NavMessageID nmidExpL5(
366  gnsstk::NavMessageID nmidExp(
371  gnsstk::CommonTime toeExp = gnsstk::GPSWeekSecond(2060,91800.0);
372  gnsstk::CommonTime topExp = gnsstk::GPSWeekSecond(2060,21600.0);
373  gnsstk::CommonTime beginExp = gnsstk::GPSWeekSecond(2060, 86400.0);
374  gnsstk::CommonTime endExp = gnsstk::GPSWeekSecond(2060, 97200.0);
375  gnsstk::NavDataPtrList navOut;
377  gnsstk::GPSCNavEph *eph;
378  // Fail because we're telling processEph this is a message ID
379  // 13. No I don't think it's strictly worthwhile testing every
380  // possible message type.
381  TUASSERTE(bool, false, uut.processEph(13, msg10CNAVGPSL2, navOut));
382  // success, health data only
383  TUASSERTE(bool, true, uut.processEph(10, msg10CNAVGPSL2, navOut));
384  for (const auto& i : navOut)
385  {
386  if ((hea = dynamic_cast<gnsstk::GPSCNavHealth*>(i.get())) != nullptr)
387  {
388  // NavData fields
390  bool expHealth = false;
391  switch (hea->signal.nav)
392  {
394  TUASSERTE(gnsstk::NavMessageID, nmidExpL1, hea->signal);
395  break;
397  TUASSERTE(gnsstk::NavMessageID, nmidExpL2, hea->signal);
398  break;
400  TUASSERTE(gnsstk::NavMessageID, nmidExpL5, hea->signal);
401  expHealth = true;
402  break;
403  default:
404  TUFAIL("Unexpected nav type: " +
406  break;
407  }
408  // NavHealthData has no fields
409  // GPSCNavHealth
410  TUASSERTE(bool, expHealth, hea->health);
411  }
412  else
413  {
414  TUFAIL("What is this?");
415  }
416  }
417  fc.validateResults(navOut, __LINE__, 3, 0, 0, 0, 3);
418  TUASSERTE(bool, true, uut.processEph(11, msg11CNAVGPSL2, navOut));
419  fc.validateResults(navOut, __LINE__);
420  // success, and we have an ephemeris.
421  TUASSERTE(bool, true, uut.processEph(30, msg30CNAVGPSL2, navOut));
422  for (const auto& i : navOut)
423  {
424  if ((eph = dynamic_cast<gnsstk::GPSCNavEph*>(i.get())) != nullptr)
425  {
426  // NavData fields
428  TUASSERTE(gnsstk::NavMessageID, nmidExp, eph->signal);
429  // OrbitData has no fields
430  // OrbitDataKepler fields
432  TUASSERTE(gnsstk::CommonTime, toeExp, eph->Toe);
433  TUASSERTE(gnsstk::CommonTime, toeExp, eph->Toc); // same value as toe
435  TUASSERTFE(-6.6496431827545166016e-06, eph->Cuc);
436  TUASSERTFE(1.1029653251171112061e-05, eph->Cus);
437  TUASSERTFE(175.46484375, eph->Crc);
438  TUASSERTFE(-126.9296875, eph->Crs);
439  TUASSERTFE(1.62050128E-07, eph->Cic);
440  TUASSERTFE(1.1455267667770385742e-07, eph->Cis);
441  TUASSERTFE(-0.99809220403226028839, eph->M0);
442  TUASSERTFE(3.93284239E-09, eph->dn);
443  TUASSERTFE(3.99142951E-14, eph->dndot);
444  TUASSERTFE(0.0090113340411335229874, eph->ecc);
445  TUASSERTFE(::sqrt(26560186.60546875), eph->Ahalf);
446  TUASSERTFE(26560186.60546875, eph->A);
447  TUASSERTFE(-0.0058078765869140625, eph->Adot);
448  TUASSERTFE(2.6792122624362644245, eph->OMEGA0);
449  TUASSERTFE(0.97640098663170327153, eph->i0);
450  TUASSERTFE(0.72637343022039169149, eph->w);
451  TUASSERTFE(-7.71776500E-09, eph->OMEGAdot);
452  TUASSERTFE(1.73221501E-10, eph->idot);
453  TUASSERTFE(-5.5062846513465046883e-05, eph->af0);
454  TUASSERTFE(-1.01287867E-11, eph->af1);
455  TUASSERTFE(0, eph->af2);
456  TUASSERTE(gnsstk::CommonTime, beginExp, eph->beginFit);
457  TUASSERTE(gnsstk::CommonTime, endExp, eph->endFit);
458  // GPSCNavData fields
459  TUASSERTE(uint32_t, 0x8b, eph->pre);
460  TUASSERTE(bool, false, eph->alert);
461  // GPSCNavEph fields
462  TUASSERTE(uint32_t, 0x8b, eph->pre11);
463  TUASSERTE(uint32_t, 0x8b, eph->preClk);;
464  TUASSERTE(bool, false, eph->healthL1);
465  TUASSERTE(bool, false, eph->healthL2);
466  TUASSERTE(bool, true, eph->healthL5);
467  TUASSERTE(int, 0, eph->uraED);
468  TUASSERTE(int, -5, eph->uraNED0);
469  TUASSERTE(unsigned, 1, eph->uraNED1);
470  TUASSERTE(unsigned, 7, eph->uraNED2);
471  TUASSERTE(bool, false, eph->alert11);
472  TUASSERTE(bool, false, eph->alertClk);
473  TUASSERTE(bool, false, eph->integStat);
474  TUASSERTE(bool, false, eph->phasingL2C);
475  TUASSERTFE(476.60546875, eph->deltaA);
476  TUASSERTFE(4.5037590282126179865e-10, eph->dOMEGAdot);
477  TUASSERTE(gnsstk::CommonTime, topExp, eph->top);
480  }
481  else
482  {
483  TUFAIL("What is this?");
484  }
485  }
486  fc.validateResults(navOut, __LINE__, 1, 0, 1);
487  TURETURN();
488 }
489 
490 
493 {
494  TUDEF("PNBGPSCNavDataFactory", "processAlmOrb");
495  GPSFactoryCounter fc(testFramework);
497  gnsstk::NavMessageID nmidExpL1(
502  gnsstk::NavMessageID nmidExpL2(
507  gnsstk::NavMessageID nmidExpL5(
512  gnsstk::NavMessageID nmidExp(
517  gnsstk::CommonTime toaExp = gnsstk::GPSWeekSecond(2097, 520192.0,
519  gnsstk::CommonTime beginExp = gnsstk::GPSWeekSecond(2097, 345642.0,
522  gnsstk::NavDataPtrList navOut;
523  TUASSERTE(bool, true, uut.processAlmOrb(37, msg37CNAVQZSSL5, navOut));
525  gnsstk::GPSCNavAlm *alm;
526  for (const auto& i : navOut)
527  {
528  if ((hea = dynamic_cast<gnsstk::GPSCNavHealth*>(i.get())) != nullptr)
529  {
531  // NavData fields
533  switch (hea->signal.nav)
534  {
536  TUASSERTE(gnsstk::NavMessageID, nmidExpL1, hea->signal);
537  break;
539  TUASSERTE(gnsstk::NavMessageID, nmidExpL2, hea->signal);
540  break;
542  TUASSERTE(gnsstk::NavMessageID, nmidExpL5, hea->signal);
543  break;
544  default:
545  TUFAIL("Unexpected nav type: " +
547  break;
548  }
549  // NavHealthData has no fields
550  // GPSCNavHealth fields
551  TUASSERTE(bool, false, hea->health);
552  }
553  else if ((alm = dynamic_cast<gnsstk::GPSCNavAlm*>(i.get())) != nullptr)
554  {
556  // NavData fields
558  TUASSERTE(gnsstk::NavMessageID, nmidExp, alm->signal);
559  // OrbitData has no fields
560  // OrbitDataKepler fields
562  TUASSERTE(gnsstk::CommonTime, toaExp, alm->Toe);
563  TUASSERTE(gnsstk::CommonTime, toaExp, alm->Toc); // same value as toe
565  TUASSERTFE(0, alm->Cuc);
566  TUASSERTFE(0, alm->Cus);
567  TUASSERTFE(0, alm->Crc);
568  TUASSERTFE(0, alm->Crs);
569  TUASSERTFE(0, alm->Cis);
570  TUASSERTFE(0, alm->Cic);
571  TUASSERTFE(-1.626115508958022593, alm->M0);
572  TUASSERTFE(0, alm->dn);
573  TUASSERTFE(0, alm->dndot);
574  TUASSERTFE(0.014862060546875, alm->ecc);
575  TUASSERTFE(6.49281250E+03, alm->Ahalf);
576  TUASSERTFE(6.49281250E+03*6.49281250E+03, alm->A);
577  TUASSERTFE(0, alm->Adot);
578  TUASSERTFE(-0.4903944831271909166, alm->OMEGA0);
579  TUASSERTFE(-0.059633503129054299396 + 0.25*gnsstk::PI, alm->i0);
580  TUASSERTFE(-1.5729055503782394254, alm->w);
581  TUASSERTFE(-2.19437712E-09, alm->OMEGAdot);
582  TUASSERTFE(0, alm->idot);
583  TUASSERTFE(-0.00034046173095703125, alm->af0);
584  TUASSERTFE(7.27595761E-12, alm->af1);
585  TUASSERTFE(0, alm->af2);
586  TUASSERTE(gnsstk::CommonTime, beginExp, alm->beginFit);
587  TUASSERTE(gnsstk::CommonTime, endExp, alm->endFit);
588  // GPSCNavData fields
589  TUASSERTE(uint32_t, 0x8b, alm->pre);
590  TUASSERTE(bool, false, alm->alert);
591  // GPSCNavAlm fields
592  TUASSERTE(bool, false, alm->healthL1);
593  TUASSERTE(bool, false, alm->healthL2);
594  TUASSERTE(bool, false, alm->healthL5);
595  TUASSERTFE(-0.059633503129054299396, alm->deltai);
596  TUASSERTE(unsigned, 2097, alm->wna);
597  TUASSERTFE(520192, alm->toa);
598  }
599  else
600  {
601  TUFAIL("What is this?");
602  }
603  }
604  fc.validateResults(navOut, __LINE__, 4, 1, 0, 0, 3);
605  TURETURN();
606 }
607 
608 
611 {
612  TUDEF("PNBGPSCNavDataFactory", "processRedAlmOrb");
613  // This method is being tested implicitly by process12Test and
614  // process31Test, but I'm leaving this here as a placeholder in
615  // case someone gets ambitious.
616  TURETURN();
617 }
618 
619 
622 {
623  TUDEF("PNBGPSCNavDataFactory", "process12");
624  GPSFactoryCounter fc(testFramework);
626  gnsstk::NavDataPtrList navOut;
627  TUASSERTE(bool, true, uut.process12(12, msg12CNAVQZSSL5, navOut));
628  // easy test, the data is all empty
629  fc.validateResults(navOut, __LINE__);
630  TURETURN();
631 }
632 
633 
636 {
637  TUDEF("PNBGPSCNavDataFactory", "process30");
638  GPSFactoryCounter fc(testFramework);
640  gnsstk::NavMessageID nmidExp(
644  gnsstk::NavDataPtrList navOut;
645  gnsstk::GPSCNavIono *iono = nullptr;
646  gnsstk::GPSCNavISC *isc = nullptr;
647  TUASSERTE(bool, true, uut.process30(msg30CNAVGPSL2, navOut));
648  for (const auto& i : navOut)
649  {
650  if ((iono = dynamic_cast<gnsstk::GPSCNavIono*>(i.get())) != nullptr)
651  {
654  TUASSERTE(gnsstk::NavMessageID, nmidExp, iono->signal);
655  TUASSERTFE( 4.656612870e-09, iono->alpha[0]);
656  TUASSERTFE( 1.490116118e-08, iono->alpha[1]);
657  TUASSERTFE(-5.960464478e-08, iono->alpha[2]);
658  TUASSERTFE(-1.192092897e-07, iono->alpha[3]);
659  TUASSERTFE( 8.192000000e+04, iono->beta[0]);
660  TUASSERTFE( 8.192000000e+04, iono->beta[1]);
661  TUASSERTFE(-6.553600000e+04, iono->beta[2]);
662  TUASSERTFE(-5.242880000e+05, iono->beta[3]);
663  TUASSERTE(uint32_t, 0x8b, iono->pre);
664  TUASSERTE(bool, false, iono->alert);
665  }
666  else if ((isc = dynamic_cast<gnsstk::GPSCNavISC*>(i.get())) != nullptr)
667  {
670  TUASSERTE(gnsstk::NavMessageID, nmidExp, isc->signal);
671  TUASSERTFE(5.58793545E-09, isc->isc);
672  TUASSERTE(uint32_t, 0x8b, isc->pre);
673  TUASSERTE(bool, false, isc->alert);
674  TUASSERTFE(-3.49245965E-10, isc->iscL1CA);
675  TUASSERTFE(-3.14321369E-09, isc->iscL2C);
676  TUASSERTFE(6.43194653E-09, isc->iscL5I5);
677  TUASSERTFE(6.54836185E-09, isc->iscL5Q5);
678  }
679  else
680  {
681  TUFAIL("What is this?");
682  }
683  }
684  fc.validateResults(navOut, __LINE__, 2, 0, 0, 0, 0, 1, 1);
685  TURETURN();
686 }
687 
688 
691 {
692  TUDEF("PNBGPSCNavDataFactory", "process31");
694  gnsstk::NavMessageID nmidExpL1(
699  gnsstk::NavMessageID nmidExpL2(
704  gnsstk::NavMessageID nmidExpL5(
709  gnsstk::NavMessageID nmidExp(
714  gnsstk::CommonTime toaExp = gnsstk::GPSWeekSecond(2097, 3937.0,
718  gnsstk::NavDataPtrList navOut;
719  TUASSERTE(bool, true, uut.process31(31, msg31CNAVQZSSL5, navOut));
720  // 4 almanacs, 12 health
721  TUASSERTE(size_t, 16, navOut.size());
722  gnsstk::GPSCNavHealth *hea = nullptr;
723  gnsstk::GPSCNavRedAlm *alm = nullptr;
724  // Not really trying to enforce order, but this was the easiest
725  // way to verify that we got all the results we're expecting.
726  auto i = navOut.begin();
727  // first result
728  TUASSERT((hea = dynamic_cast<gnsstk::GPSCNavHealth*>(i->get())) != nullptr);
730  TUASSERTE(gnsstk::NavMessageID, nmidExpL1, hea->signal);
731  TUASSERTE(bool, false, hea->health);
732  hea = nullptr;
733  alm = nullptr;
734  // second
735  ++i;
736  TUASSERT((hea = dynamic_cast<gnsstk::GPSCNavHealth*>(i->get())) != nullptr);
738  TUASSERTE(gnsstk::NavMessageID, nmidExpL2, hea->signal);
739  TUASSERTE(bool, false, hea->health);
740  hea = nullptr;
741  alm = nullptr;
742  // third
743  ++i;
744  TUASSERT((hea = dynamic_cast<gnsstk::GPSCNavHealth*>(i->get())) != nullptr);
746  TUASSERTE(gnsstk::NavMessageID, nmidExpL5, hea->signal);
747  TUASSERTE(bool, false, hea->health);
748  hea = nullptr;
749  alm = nullptr;
750  // fourth
751  ++i;
752  TUASSERT((alm = dynamic_cast<gnsstk::GPSCNavRedAlm*>(i->get())) != nullptr);
754  TUASSERTE(gnsstk::NavMessageID, nmidExp, alm->signal);
756  TUASSERTE(gnsstk::CommonTime, toaExp, alm->Toe);
757  TUASSERTE(gnsstk::CommonTime, toaExp, alm->Toc); // same value as toe
759  TUASSERTFE(0, alm->Cuc);
760  TUASSERTFE(0, alm->Cus);
761  TUASSERTFE(0, alm->Crc);
762  TUASSERTFE(0, alm->Crs);
763  TUASSERTFE(0, alm->Cis);
764  TUASSERTFE(0, alm->Cic);
765  TUASSERTFE(3.0925052683774527651, alm->M0);
766  TUASSERTFE(0, alm->dn);
767  TUASSERTFE(0, alm->dndot);
768  TUASSERTFE(7.50000000E-02, alm->ecc);
769  TUASSERTFE(::sqrt(4.21560080E+07), alm->Ahalf);
770  TUASSERTFE(4.21560080E+07, alm->A);
771  TUASSERTFE(0, alm->Adot);
772  TUASSERTFE(-0.49087385212340517437, alm->OMEGA0);
773  TUASSERTFE((0.25+0.0056)*gnsstk::PI, alm->i0);
774  TUASSERTFE(4.712388980384689674, alm->w);
775  TUASSERTFE(-8.7e-10*gnsstk::PI, alm->OMEGAdot);
776  TUASSERTFE(0, alm->idot);
777  TUASSERTFE(0, alm->af0);
778  TUASSERTFE(0, alm->af1);
779  TUASSERTFE(0, alm->af2);
780  TUASSERTE(gnsstk::CommonTime, beginExp, alm->beginFit);
781  TUASSERTE(gnsstk::CommonTime, endExp, alm->endFit);
782  TUASSERTE(uint32_t, 0x8b, alm->pre);
783  TUASSERTE(bool, false, alm->alert);
784  TUASSERTE(bool, false, alm->healthL1);
785  TUASSERTE(bool, false, alm->healthL2);
786  TUASSERTE(bool, false, alm->healthL5);
787  TUASSERTFE(0.0056*gnsstk::PI, alm->deltai);
788  TUASSERTE(unsigned, 2097, alm->wna);
789  TUASSERTFE(3937, alm->toa);
790  TUASSERTFE(-8192, alm->deltaA);
791  TUASSERTFE(3.0925052683774527651, alm->phi0);
792  hea = nullptr;
793  alm = nullptr;
794  // fifth
795  ++i;
796  nmidExpL1.sat.id = nmidExpL2.sat.id = nmidExpL5.sat.id = nmidExp.sat.id =
797  194;
798  TUASSERT((hea = dynamic_cast<gnsstk::GPSCNavHealth*>(i->get())) != nullptr);
800  TUASSERTE(gnsstk::NavMessageID, nmidExpL1, hea->signal);
801  TUASSERTE(bool, false, hea->health);
802  hea = nullptr;
803  alm = nullptr;
804  // sixth
805  ++i;
806  TUASSERT((hea = dynamic_cast<gnsstk::GPSCNavHealth*>(i->get())) != nullptr);
808  TUASSERTE(gnsstk::NavMessageID, nmidExpL2, hea->signal);
809  TUASSERTE(bool, false, hea->health);
810  hea = nullptr;
811  alm = nullptr;
812  // seventh
813  ++i;
814  TUASSERT((hea = dynamic_cast<gnsstk::GPSCNavHealth*>(i->get())) != nullptr);
816  TUASSERTE(gnsstk::NavMessageID, nmidExpL5, hea->signal);
817  TUASSERTE(bool, false, hea->health);
818  hea = nullptr;
819  alm = nullptr;
820  // eighth
821  ++i;
822  TUASSERT((alm = dynamic_cast<gnsstk::GPSCNavRedAlm*>(i->get())) != nullptr);
824  TUASSERTE(gnsstk::NavMessageID, nmidExp, alm->signal);
826  TUASSERTE(gnsstk::CommonTime, toaExp, alm->Toe);
827  TUASSERTE(gnsstk::CommonTime, toaExp, alm->Toc); // same value as toe
829  TUASSERTFE(0, alm->Cuc);
830  TUASSERTFE(0, alm->Cus);
831  TUASSERTFE(0, alm->Crc);
832  TUASSERTFE(0, alm->Crs);
833  TUASSERTFE(0, alm->Cis);
834  TUASSERTFE(0, alm->Cic);
835  TUASSERTFE(0.88357293382212931387, alm->M0);
836  TUASSERTFE(0, alm->dn);
837  TUASSERTFE(0, alm->dndot);
838  TUASSERTFE(7.50000000E-02, alm->ecc);
839  TUASSERTFE(::sqrt(4.21657360E+07), alm->Ahalf);
840  TUASSERTFE(4.21657360E+07, alm->A);
841  TUASSERTFE(0, alm->Adot);
842  TUASSERTFE(1.8162332528565992007, alm->OMEGA0);
843  TUASSERTFE((0.25+0.0056)*gnsstk::PI, alm->i0);
844  TUASSERTFE(4.712388980384689674, alm->w);
845  TUASSERTFE(-8.7e-10*gnsstk::PI, alm->OMEGAdot);
846  TUASSERTFE(0, alm->idot);
847  TUASSERTFE(0, alm->af0);
848  TUASSERTFE(0, alm->af1);
849  TUASSERTFE(0, alm->af2);
850  TUASSERTE(gnsstk::CommonTime, beginExp, alm->beginFit);
851  TUASSERTE(gnsstk::CommonTime, endExp, alm->endFit);
852  TUASSERTE(uint32_t, 0x8b, alm->pre);
853  TUASSERTE(bool, false, alm->alert);
854  TUASSERTE(bool, false, alm->healthL1);
855  TUASSERTE(bool, false, alm->healthL2);
856  TUASSERTE(bool, false, alm->healthL5);
857  TUASSERTFE(0.0056*gnsstk::PI, alm->deltai);
858  TUASSERTE(unsigned, 2097, alm->wna);
859  TUASSERTFE(3937, alm->toa);
860  TUASSERTFE(1536, alm->deltaA);
861  TUASSERTFE(0.88357293382212931387, alm->phi0);
862  hea = nullptr;
863  alm = nullptr;
864  // ninth
865  ++i;
866  nmidExpL1.sat.id = nmidExpL2.sat.id = nmidExpL5.sat.id = nmidExp.sat.id =
867  199;
868  TUASSERT((hea = dynamic_cast<gnsstk::GPSCNavHealth*>(i->get())) != nullptr);
870  TUASSERTE(gnsstk::NavMessageID, nmidExpL1, hea->signal);
871  TUASSERTE(bool, false, hea->health);
872  hea = nullptr;
873  alm = nullptr;
874  // tenth
875  ++i;
876  TUASSERT((hea = dynamic_cast<gnsstk::GPSCNavHealth*>(i->get())) != nullptr);
878  TUASSERTE(gnsstk::NavMessageID, nmidExpL2, hea->signal);
879  TUASSERTE(bool, false, hea->health);
880  hea = nullptr;
881  alm = nullptr;
882  // eleventh
883  ++i;
884  TUASSERT((hea = dynamic_cast<gnsstk::GPSCNavHealth*>(i->get())) != nullptr);
886  TUASSERTE(gnsstk::NavMessageID, nmidExpL5, hea->signal);
887  TUASSERTE(bool, false, hea->health);
888  hea = nullptr;
889  alm = nullptr;
890  // twelfth
891  ++i;
892  TUASSERT((alm = dynamic_cast<gnsstk::GPSCNavRedAlm*>(i->get())) != nullptr);
894  TUASSERTE(gnsstk::NavMessageID, nmidExp, alm->signal);
896  TUASSERTE(gnsstk::CommonTime, toaExp, alm->Toe);
897  TUASSERTE(gnsstk::CommonTime, toaExp, alm->Toc); // same value as toe
899  TUASSERTFE(0, alm->Cuc);
900  TUASSERTFE(0, alm->Cus);
901  TUASSERTFE(0, alm->Crc);
902  TUASSERTFE(0, alm->Crs);
903  TUASSERTFE(0, alm->Cis);
904  TUASSERTFE(0, alm->Cic);
905  TUASSERTFE(2.4543692606170259829, alm->M0);
906  TUASSERTFE(0, alm->dn);
907  TUASSERTFE(0, alm->dndot);
908  TUASSERTFE(7.50000000E-02, alm->ecc);
909  TUASSERTFE(::sqrt(4.21642000E+07), alm->Ahalf);
910  TUASSERTFE(4.21642000E+07, alm->A);
911  TUASSERTFE(0, alm->Adot);
912  TUASSERTFE(0, alm->OMEGA0);
913  TUASSERTFE((0.25+0.0056)*gnsstk::PI, alm->i0);
914  TUASSERTFE(4.712388980384689674, alm->w);
915  TUASSERTFE(-8.7e-10*gnsstk::PI, alm->OMEGAdot);
916  TUASSERTFE(0, alm->idot);
917  TUASSERTFE(0, alm->af0);
918  TUASSERTFE(0, alm->af1);
919  TUASSERTFE(0, alm->af2);
920  TUASSERTE(gnsstk::CommonTime, beginExp, alm->beginFit);
921  TUASSERTE(gnsstk::CommonTime, endExp, alm->endFit);
922  TUASSERTE(uint32_t, 0x8b, alm->pre);
923  TUASSERTE(bool, false, alm->alert);
924  TUASSERTE(bool, false, alm->healthL1);
925  TUASSERTE(bool, false, alm->healthL2);
926  TUASSERTE(bool, false, alm->healthL5);
927  TUASSERTFE(0.0056*gnsstk::PI, alm->deltai);
928  TUASSERTE(unsigned, 2097, alm->wna);
929  TUASSERTFE(3937, alm->toa);
930  TUASSERTFE(0, alm->deltaA);
931  TUASSERTFE(2.4543692606170259829, alm->phi0);
932  hea = nullptr;
933  alm = nullptr;
934  // thirteenth
935  ++i;
936  nmidExpL1.sat.id = nmidExpL2.sat.id = nmidExpL5.sat.id = nmidExp.sat.id =
937  195;
938  TUASSERT((hea = dynamic_cast<gnsstk::GPSCNavHealth*>(i->get())) != nullptr);
940  TUASSERTE(gnsstk::NavMessageID, nmidExpL1, hea->signal);
941  TUASSERTE(bool, false, hea->health);
942  hea = nullptr;
943  alm = nullptr;
944  // fourteenth
945  ++i;
946  TUASSERT((hea = dynamic_cast<gnsstk::GPSCNavHealth*>(i->get())) != nullptr);
948  TUASSERTE(gnsstk::NavMessageID, nmidExpL2, hea->signal);
949  TUASSERTE(bool, false, hea->health);
950  hea = nullptr;
951  alm = nullptr;
952  // fifteenth
953  ++i;
954  TUASSERT((hea = dynamic_cast<gnsstk::GPSCNavHealth*>(i->get())) != nullptr);
956  TUASSERTE(gnsstk::NavMessageID, nmidExpL5, hea->signal);
957  TUASSERTE(bool, false, hea->health);
958  hea = nullptr;
959  alm = nullptr;
960  // sixteenth
961  ++i;
962  TUASSERT((alm = dynamic_cast<gnsstk::GPSCNavRedAlm*>(i->get())) != nullptr);
964  TUASSERTE(gnsstk::NavMessageID, nmidExp, alm->signal);
966  TUASSERTE(gnsstk::CommonTime, toaExp, alm->Toe);
967  TUASSERTE(gnsstk::CommonTime, toaExp, alm->Toc); // same value as toe
969  TUASSERTFE(0, alm->Cuc);
970  TUASSERTFE(0, alm->Cus);
971  TUASSERTFE(0, alm->Crc);
972  TUASSERTFE(0, alm->Crs);
973  TUASSERTFE(0, alm->Cis);
974  TUASSERTFE(0, alm->Cic);
975  TUASSERTFE(-0.83448554860978885195, alm->M0);
976  TUASSERTFE(0, alm->dn);
977  TUASSERTFE(0, alm->dndot);
978  TUASSERTFE(7.50000000E-02, alm->ecc);
979  TUASSERTFE(::sqrt(42161128), alm->Ahalf);
980  TUASSERTFE(42161128, alm->A);
981  TUASSERTFE(0, alm->Adot);
982  TUASSERTFE(-2.7979809571034093274, alm->OMEGA0);
983  TUASSERTFE((0.25+0.0056)*gnsstk::PI, alm->i0);
984  TUASSERTFE(4.712388980384689674, alm->w);
985  TUASSERTFE(-8.7e-10*gnsstk::PI, alm->OMEGAdot);
986  TUASSERTFE(0, alm->idot);
987  TUASSERTFE(0, alm->af0);
988  TUASSERTFE(0, alm->af1);
989  TUASSERTFE(0, alm->af2);
990  TUASSERTE(gnsstk::CommonTime, beginExp, alm->beginFit);
991  TUASSERTE(gnsstk::CommonTime, endExp, alm->endFit);
992  TUASSERTE(uint32_t, 0x8b, alm->pre);
993  TUASSERTE(bool, false, alm->alert);
994  TUASSERTE(bool, false, alm->healthL1);
995  TUASSERTE(bool, false, alm->healthL2);
996  TUASSERTE(bool, false, alm->healthL5);
997  TUASSERTFE(0.0056*gnsstk::PI, alm->deltai);
998  TUASSERTE(unsigned, 2097, alm->wna);
999  TUASSERTFE(3937, alm->toa);
1000  TUASSERTFE(-3072, alm->deltaA);
1001  TUASSERTFE(-0.83448554860978885195, alm->phi0);
1002  hea = nullptr;
1003  alm = nullptr;
1004  TURETURN();
1005 }
1006 
1007 
1010 {
1011  TUDEF("PNBGPSCNavDataFactory", "process33");
1013  gnsstk::NavMessageID nmidExp(
1018  gnsstk::NavDataPtrList navOut;
1019  TUASSERTE(bool, true, uut.process33(msg33CNAVGPSL2, navOut));
1020  TUASSERTE(size_t, 1, navOut.size());
1021  // Yes this code can cause seg faults on failure, but that's ok.
1023  dynamic_cast<gnsstk::GPSCNavTimeOffset*>(navOut.begin()->get());
1024  TUASSERT(to != nullptr);
1025  // NavData fields
1027  TUASSERTE(gnsstk::NavMessageID, nmidExp, to->signal);
1028  // TimeOffsetData has no fields
1029  // GPSCNavTimeOffset fields
1031  TUASSERTFE(1.9790604711E-09, to->a0);
1032  TUASSERTFE(7.5495165675E-15, to->a1);
1033  TUASSERTFE(0.0000000000E+00, to->a2);
1034  TUASSERTFE(18, to->deltatLS);
1035  TUASSERTFE(21600, to->tot);
1036  TUASSERTE(unsigned, 2060, to->wnot);
1037  TUASSERTE(unsigned, 1929, to->wnLSF);
1039  gnsstk::GPSWeekSecond(2060,21600).convertToCommonTime(),
1040  to->refTime);
1041  TUASSERTE(unsigned, 7, to->dn);
1042  TUASSERTFE(18, to->deltatLSF);
1043  TURETURN();
1044 }
1045 
1046 
1049 {
1050  TUDEF("PNBGPSCNavDataFactory", "process35");
1052  gnsstk::NavMessageID nmidExp(
1057  gnsstk::NavDataPtrList navOut;
1058  TUASSERTE(bool, true, uut.process35(msg35CNAVQZSSL5, navOut));
1059  TUASSERTE(size_t, 1, navOut.size());
1060  // Yes this code can cause seg faults on failure, but that's ok.
1062  dynamic_cast<gnsstk::GPSCNavTimeOffset*>(navOut.begin()->get());
1063  TUASSERT(to != nullptr);
1064  // NavData fields
1066  TUASSERTE(gnsstk::NavMessageID, nmidExp, to->signal);
1067  // TimeOffsetData has no fields
1068  // GPSCNavTimeOffset fields
1070  TUASSERTFE(0, to->a0);
1071  TUASSERTFE(0, to->a1);
1072  TUASSERTFE(0, to->a2);
1073  TUASSERTFE(0, to->deltatLS);
1074  TUASSERTFE(356400, to->tot);
1075  TUASSERTE(unsigned, 2097, to->wnot);
1076  TUASSERTE(unsigned, 0, to->wnLSF);
1079  2097,356400,gnsstk::TimeSystem::QZS).convertToCommonTime(),
1080  to->refTime);
1081  TUASSERTE(unsigned, 0, to->dn);
1082  TUASSERTFE(0, to->deltatLSF);
1083  TURETURN();
1084 }
1085 
1086 
1089 {
1090  TUDEF("PNBGPSCNavDataFactory", "processEph");
1092  gnsstk::NavDataPtrList navOut;
1093  gnsstk::GPSCNavEph *eph;
1094  gnsstk::CommonTime toeExp(gnsstk::GPSWeekSecond(2220,5400));
1095  gnsstk::CommonTime topExp(gnsstk::GPSWeekSecond(2219,527400));
1096  gnsstk::CommonTime beginExp(gnsstk::GPSWeekSecond(2220,0));
1097  gnsstk::CommonTime endExp(gnsstk::GPSWeekSecond(2220,10800));
1098  TUCATCH(uut.setTypeFilter({gnsstk::NavMessageType::Ephemeris}));
1099  TUASSERTE(bool, true, uut.addData(msg10CNAVWR, navOut));
1100  TUASSERTE(gnsstk::NavDataPtrList::size_type, 0, navOut.size());
1101  TUASSERTE(bool, true, uut.addData(msg11CNAVWR, navOut));
1102  TUASSERTE(gnsstk::NavDataPtrList::size_type, 0, navOut.size());
1103  TUASSERTE(bool, true, uut.addData(msg30CNAVWR, navOut));
1104  TUASSERTE(gnsstk::NavDataPtrList::size_type, 1, navOut.size());
1105  if (navOut.size() >= 1)
1106  {
1107  if ((eph = dynamic_cast<gnsstk::GPSCNavEph*>(navOut.begin()->get()))
1108  != nullptr)
1109  {
1112  TUASSERTE(gnsstk::CommonTime, toeExp, eph->Toe);
1113  TUASSERTE(gnsstk::CommonTime, toeExp, eph->Toc);
1114  TUASSERTE(gnsstk::CommonTime, topExp, eph->top);
1115  TUASSERTE(gnsstk::CommonTime, beginExp, eph->beginFit);
1116  TUASSERTE(gnsstk::CommonTime, endExp, eph->endFit);
1119  }
1120  }
1121  TURETURN();
1122 }
1123 
1124 
1125 int main()
1126 {
1127  PNBGPSCNavDataFactory_T testClass;
1128  unsigned errorTotal = 0;
1129 
1130  errorTotal += testClass.addDataAllTest();
1131  errorTotal += testClass.addDataAlmanacTest();
1132  errorTotal += testClass.addDataEphemerisTest();
1133  errorTotal += testClass.addDataHealthTest();
1134  errorTotal += testClass.addDataTimeTest();
1135  errorTotal += testClass.addDataEphHealthTest();
1136  errorTotal += testClass.addDataAlmHealthTest();
1137  errorTotal += testClass.processEphTest();
1138  errorTotal += testClass.processAlmOrbTest();
1139  errorTotal += testClass.processRedAlmOrbTest();
1140  errorTotal += testClass.process12Test();
1141  errorTotal += testClass.process30Test();
1142  errorTotal += testClass.process31Test();
1143  errorTotal += testClass.process33Test();
1144  errorTotal += testClass.process35Test();
1145  errorTotal += testClass.processEphWRTest();
1146 
1147  std::cout << "Total Failures for " << __FILE__ << ": " << errorTotal
1148  << std::endl;
1149 
1150  return errorTotal;
1151 }
gnsstk::GPSCNavAlm::healthL2
bool healthL2
L2 signal health from message type 10.
Definition: GPSCNavAlm.hpp:86
gnsstk::NavSignalID::nav
NavType nav
Navigation message structure of this signal.
Definition: NavSignalID.hpp:96
gnsstk::NavMessageType::ISC
@ ISC
Inter-signal corrections.
gnsstk::PNBGPSCNavDataFactory::processEph
bool processEph(unsigned msgType, const PackedNavBitsPtr &navIn, NavDataPtrList &navOut)
Definition: PNBGPSCNavDataFactory.cpp:137
gnsstk::GPSCNavEph::uraNED2
uint8_t uraNED2
non-elevation dependent URA from clock message.
Definition: GPSCNavEph.hpp:95
gnsstk::OrbitDataKepler::idot
double idot
Rate of inclination angle (rad/sec)
Definition: OrbitDataKepler.hpp:193
msg11CNAVWRct
gnsstk::CommonTime msg11CNAVWRct
Definition: CNavTestDataDecl.hpp:55
gnsstk::NavMessageID
Class used to identify/categorize navigation message data.
Definition: NavMessageID.hpp:52
msg11CNAVGPSL2
gnsstk::PackedNavBitsPtr msg11CNAVGPSL2
Definition: CNavTestDataDecl.hpp:45
PNBGPSCNavDataFactory_T::processEphWRTest
unsigned processEphWRTest()
Definition: PNBGPSCNavDataFactory_T.cpp:1088
gnsstk::StdNavTimeOffset::deltatLSF
double deltatLSF
Current or future leap second count (UTC only).
Definition: StdNavTimeOffset.hpp:135
gnsstk::GPSCNavTimeOffset
Definition: GPSCNavTimeOffset.hpp:62
gnsstk::GPSCNavEph::healthL2
bool healthL2
L2 signal health from message type 10.
Definition: GPSCNavEph.hpp:90
gnsstk::SatID::id
int id
Satellite identifier, e.g. PRN.
Definition: SatID.hpp:154
gnsstk::PackedNavBitsPtr
std::shared_ptr< PackedNavBits > PackedNavBitsPtr
Managed pointer for passing PackedNavBits around.
Definition: PackedNavBits.hpp:66
gnsstk::GPSCNavAlm::healthL5
bool healthL5
L5 signal health from message type 10.
Definition: GPSCNavAlm.hpp:87
gnsstk::CarrierBand::G1
@ G1
GLONASS G1.
TUCATCH
#define TUCATCH(STATEMENT)
Definition: TestUtil.hpp:193
gnsstk::OrbitDataKepler::Cis
double Cis
Sine inclination (rad)
Definition: OrbitDataKepler.hpp:180
gnsstk::OrbitDataKepler::A
double A
Semi-major axis (m)
Definition: OrbitDataKepler.hpp:186
gnsstk::PNBGPSCNavDataFactory
Definition: PNBGPSCNavDataFactory.hpp:65
gnsstk::PNBNavDataFactory::setTypeFilter
virtual void setTypeFilter(const NavMessageTypeSet &nmts)
Definition: PNBNavDataFactory.cpp:54
gnsstk::OrbitDataKepler::af2
double af2
SV clock drift rate (sec/sec**2)
Definition: OrbitDataKepler.hpp:197
gnsstk::GPSCNavHealth::health
bool health
1-bit health.
Definition: GPSCNavHealth.hpp:95
msg30CNAVQZSSL5
gnsstk::PackedNavBitsPtr msg30CNAVQZSSL5
Definition: CNavTestDataDecl.hpp:50
gnsstk::GPSCNavEph::alert11
bool alert11
Alert flag from message type 11.
Definition: GPSCNavEph.hpp:96
gnsstk::OrbitDataKepler::ecc
double ecc
Eccentricity.
Definition: OrbitDataKepler.hpp:185
msg37CNAVQZSSL5
gnsstk::PackedNavBitsPtr msg37CNAVQZSSL5
Definition: CNavTestDataDecl.hpp:50
gnsstk::GPSCNavRedAlm::phi0
double phi0
Argument of latitude at reference time (M0+w).
Definition: GPSCNavRedAlm.hpp:75
gnsstk::GPSCNavISC::alert
bool alert
Alert flag.
Definition: GPSCNavISC.hpp:104
TUASSERTE
#define TUASSERTE(TYPE, EXP, GOT)
Definition: TestUtil.hpp:81
gnsstk::GPSCNavEph::xmit11
CommonTime xmit11
Transmit time for message 11.
Definition: GPSCNavEph.hpp:103
PNBGPSCNavDataFactory_T
Definition: PNBGPSCNavDataFactory_T.cpp:66
gnsstk::NavMessageID::messageType
NavMessageType messageType
Definition: NavMessageID.hpp:97
TUFAIL
#define TUFAIL(MSG)
Definition: TestUtil.hpp:228
gnsstk::NavSatelliteID
Definition: NavSatelliteID.hpp:57
gnsstk::GPSCNavAlm::healthL1
bool healthL1
L1 signal health from message type 10.
Definition: GPSCNavAlm.hpp:85
msg33CNAVGPSL2ct
gnsstk::CommonTime msg33CNAVGPSL2ct
Definition: CNavTestDataDecl.hpp:44
gnsstk::OrbitDataKepler::OMEGAdot
double OMEGAdot
Rate of Rt ascension (rad/sec)
Definition: OrbitDataKepler.hpp:192
gnsstk::GPSCNavISC::pre
uint32_t pre
The preamble from the start of the subframe.
Definition: GPSCNavISC.hpp:103
gnsstk::StdNavTimeOffset::tgt
TimeSystem tgt
Target time system.
Definition: StdNavTimeOffset.hpp:121
main
int main()
Definition: PNBGPSCNavDataFactory_T.cpp:1125
gnsstk::SatID
Definition: SatID.hpp:89
gnsstk::TrackingCode::L5I
@ L5I
Modernized GPS L5 civil in-phase.
gnsstk::NavMessageType::Health
@ Health
SV health status information message.
gnsstk::NavFit::endFit
CommonTime endFit
Time at end of fit interval.
Definition: NavFit.hpp:55
gnsstk::NavDataPtrList
std::list< NavDataPtr > NavDataPtrList
Definition: NavData.hpp:75
gnsstk::GPSCNavData::alert
bool alert
Alert flag.
Definition: GPSCNavData.hpp:105
PNBGPSCNavDataFactory_T::addDataEphHealthTest
unsigned addDataEphHealthTest()
One additional combo test.
Definition: PNBGPSCNavDataFactory_T.cpp:289
gnsstk::StringUtils::asString
std::string asString(IonexStoreStrategy e)
Convert a IonexStoreStrategy to a whitespace-free string name.
Definition: IonexStoreStrategy.cpp:46
gnsstk::OrbitDataKepler::Cuc
double Cuc
Cosine latitude (rad)
Definition: OrbitDataKepler.hpp:175
PNBGPSCNavDataFactory_T::addDataAlmHealthTest
unsigned addDataAlmHealthTest()
Another combo test that makes sure alm health is processed correctly.
Definition: PNBGPSCNavDataFactory_T.cpp:318
gnsstk::GPSCNavEph::uraED
int8_t uraED
5-bit URA index from message type 10.
Definition: GPSCNavEph.hpp:92
gnsstk::StdNavTimeOffset::deltatLS
double deltatLS
Current or past leap second count (UTC only).
Definition: StdNavTimeOffset.hpp:125
gnsstk::NavType::GloCivilF
@ GloCivilF
msg35CNAVQZSSL5
gnsstk::PackedNavBitsPtr msg35CNAVQZSSL5
Definition: CNavTestDataDecl.hpp:50
gnsstk::OrbitDataKepler::w
double w
Argument of perigee (rad)
Definition: OrbitDataKepler.hpp:191
FactoryCounter::validateResults
void validateResults(gnsstk::NavDataPtrList &navOut, unsigned lineNo, size_t totalExp=0, unsigned almExp=0, unsigned ephExp=0, unsigned toExp=0, unsigned heaExp=0, unsigned ionoExp=0, unsigned iscExp=0, unsigned otherExp=0)
Definition: FactoryCounter.hpp:144
gnsstk::PI
const double PI
GPS value of PI; also specified by GAL.
Definition: GNSSconstants.hpp:62
gnsstk::StdNavTimeOffset::wnot
unsigned wnot
Time data reference week number (storage only).
Definition: StdNavTimeOffset.hpp:129
gnsstk::OrbitDataKepler::Toe
CommonTime Toe
Orbit epoch.
Definition: OrbitDataKepler.hpp:171
gnsstk::OrbitDataKepler::Crs
double Crs
Sine radius (m)
Definition: OrbitDataKepler.hpp:178
gnsstk::SVHealth
SVHealth
Identify different types of SV health states.
Definition: SVHealth.hpp:52
gnsstk::NavData::signal
NavMessageID signal
Source signal identification for this navigation message data.
Definition: NavData.hpp:175
GPSCNavHealth.hpp
GPSCNavTimeOffset.hpp
gnsstk::GPSCNavEph::xmitClk
CommonTime xmitClk
Transmit time for the clock message.
Definition: GPSCNavEph.hpp:104
msg10CNAVGPSL2ct
gnsstk::CommonTime msg10CNAVGPSL2ct
Definition: CNavTestDataDecl.hpp:44
gnsstk::StdNavTimeOffset::wnLSF
unsigned wnLSF
Leap second reference week number (UTC only).
Definition: StdNavTimeOffset.hpp:133
gnsstk::GPSCNavEph::healthL1
bool healthL1
L1 signal health from message type 10.
Definition: GPSCNavEph.hpp:89
gnsstk
For Sinex::InputHistory.
Definition: BasicFramework.cpp:50
gnsstk::NavType::GPSLNAV
@ GPSLNAV
msg11CNAVQZSSL5
gnsstk::PackedNavBitsPtr msg11CNAVQZSSL5
Definition: CNavTestDataDecl.hpp:50
gnsstk::StdNavTimeOffset::a1
double a1
Drift coefficient of source time scale.
Definition: StdNavTimeOffset.hpp:123
gnsstk::InterSigCorr::isc
double isc
Definition: InterSigCorr.hpp:171
gnsstk::CarrierBand::L2
@ L2
GPS L2, QZSS L2.
gnsstk::GPSCNavAlm::wna
unsigned wna
Reference week for toa.
Definition: GPSCNavAlm.hpp:89
msg10CNAVQZSSL5
gnsstk::PackedNavBitsPtr msg10CNAVQZSSL5
Definition: CNavTestDataDecl.hpp:50
gnsstk::GPSWeekSecond
Definition: GPSWeekSecond.hpp:56
gnsstk::TrackingCode::Standard
@ Standard
Legacy Glonass civil signal.
gnsstk::OrbitDataKepler::xmitTime
CommonTime xmitTime
Time of transmission of the start of the data.
Definition: OrbitDataKepler.hpp:170
gnsstk::NavData::timeStamp
CommonTime timeStamp
Definition: NavData.hpp:173
gnsstk::PNBGPSCNavDataFactory::processAlmOrb
bool processAlmOrb(unsigned msgType, const PackedNavBitsPtr &navIn, NavDataPtrList &navOut)
Definition: PNBGPSCNavDataFactory.cpp:391
gnsstk::OrbitDataKepler::Adot
double Adot
Rate of semi-major axis (m/sec)
Definition: OrbitDataKepler.hpp:188
gnsstk::StdNavTimeOffset::dn
unsigned dn
Leap second reference day number (UTC only).
Definition: StdNavTimeOffset.hpp:134
gnsstk::OrbitDataKepler::M0
double M0
Mean anomaly (rad)
Definition: OrbitDataKepler.hpp:182
msg33CNAVGPSL2
gnsstk::PackedNavBitsPtr msg33CNAVGPSL2
Definition: CNavTestDataDecl.hpp:45
gnsstk::ObservationType::NavMsg
@ NavMsg
Navigation Message data.
gnsstk::SatelliteSystem::GPS
@ GPS
gnsstk::TrackingCode::CA
@ CA
Legacy GPS civil code.
gnsstk::CommonTime::END_OF_TIME
static const GNSSTK_EXPORT CommonTime END_OF_TIME
latest representable CommonTime
Definition: CommonTime.hpp:104
gnsstk::GPSCNavHealth
Definition: GPSCNavHealth.hpp:54
TUASSERT
#define TUASSERT(EXPR)
Definition: TestUtil.hpp:63
GPSCNavAlm.hpp
FactoryCounter
Definition: FactoryCounter.hpp:75
GPSCNavIono.hpp
TestUtil.hpp
gnsstk::SVHealth::Healthy
@ Healthy
Satellite is in a healthy and useable state.
gnsstk::OrbitDataKepler::dndot
double dndot
Rate of correction to mean motion (rad/sec/sec)
Definition: OrbitDataKepler.hpp:184
PNBGPSCNavDataFactory.hpp
gnsstk::GPSCNavAlm::deltai
double deltai
Inclination in rad relative to 0.3*pi rad.
Definition: GPSCNavAlm.hpp:88
gnsstk::OrbitDataKepler::Cus
double Cus
Sine latitude (rad)
Definition: OrbitDataKepler.hpp:176
gnsstk::StdNavTimeOffset::a2
double a2
Drift rate coefficient of source time scale.
Definition: StdNavTimeOffset.hpp:124
TURETURN
#define TURETURN()
Definition: TestUtil.hpp:232
msg10CNAVGPSL2
gnsstk::PackedNavBitsPtr msg10CNAVGPSL2
Definition: CNavTestDataDecl.hpp:45
gnsstk::TimeSystem::QZS
@ QZS
QZSS system Time.
PNBGPSCNavDataFactory_T::process12Test
unsigned process12Test()
Definition: PNBGPSCNavDataFactory_T.cpp:621
gnsstk::GPSCNavRedAlm::deltaA
double deltaA
Semi-major axis relative to reference value.
Definition: GPSCNavRedAlm.hpp:74
gnsstk::ObsID
Definition: ObsID.hpp:82
gnsstk::PNBGPSCNavDataFactory::process35
bool process35(const PackedNavBitsPtr &navIn, NavDataPtrList &navOut)
Definition: PNBGPSCNavDataFactory.cpp:839
gnsstk::GPSCNavEph::preClk
uint32_t preClk
Definition: GPSCNavEph.hpp:87
PNBGPSCNavDataFactory_T::addDataAllTest
unsigned addDataAllTest()
Definition: PNBGPSCNavDataFactory_T.cpp:110
PNBGPSCNavDataFactory_T::process30Test
unsigned process30Test()
Definition: PNBGPSCNavDataFactory_T.cpp:635
gnsstk::GPSCNavEph::deltaA
double deltaA
Semi-major axis relative to reference (Aref).
Definition: GPSCNavEph.hpp:100
gnsstk::NavType::GPSCNAVL2
@ GPSCNAVL2
gnsstk::GPSCNavEph::healthL5
bool healthL5
L5 signal health from message type 10.
Definition: GPSCNavEph.hpp:91
gnsstk::NavMessageType::Iono
@ Iono
Ionospheric correction data.
gnsstk::OrbitDataKepler::Ahalf
double Ahalf
Square Root of semi-major axis (m**.5)
Definition: OrbitDataKepler.hpp:187
gnsstk::GPSCNavEph::phasingL2C
bool phasingL2C
L2C phasing.
Definition: GPSCNavEph.hpp:99
gnsstk::NavSatelliteID::sat
SatID sat
ID of satellite to which the nav data applies.
Definition: NavSatelliteID.hpp:169
gnsstk::CommonTime
Definition: CommonTime.hpp:84
gnsstk::OrbitDataKepler::Toc
CommonTime Toc
Clock epoch.
Definition: OrbitDataKepler.hpp:172
PNBGPSCNavDataFactory_T::addDataHealthTest
unsigned addDataHealthTest()
Test addData with health data selected only.
Definition: PNBGPSCNavDataFactory_T.cpp:232
msg11CNAVGPSL2ct
gnsstk::CommonTime msg11CNAVGPSL2ct
Definition: CNavTestDataDecl.hpp:44
gnsstk::GPSCNavEph::pre11
uint32_t pre11
The preamble from the start of message type 11.
Definition: GPSCNavEph.hpp:86
PNBGPSCNavDataFactory_T::addDataTimeTest
unsigned addDataTimeTest()
Test addData with time offset data selected only.
Definition: PNBGPSCNavDataFactory_T.cpp:259
gnsstk::GPSCNavEph::integStat
bool integStat
Integrity status flag.
Definition: GPSCNavEph.hpp:98
msg32CNAVGPSL2
gnsstk::PackedNavBitsPtr msg32CNAVGPSL2
Definition: CNavTestDataDecl.hpp:45
gnsstk::TimeSystem
TimeSystem
Definition of various time systems.
Definition: TimeSystem.hpp:51
gnsstk::NavFit::beginFit
CommonTime beginFit
Time at beginning of fit interval.
Definition: NavFit.hpp:54
gnsstk::CarrierBand::L1
@ L1
GPS L1, Galileo E1, SBAS L1, QZSS L1, BeiDou L1.
msg30CNAVWR
gnsstk::PackedNavBitsPtr msg30CNAVWR
Definition: CNavTestDataDecl.hpp:56
GPSCNavRedAlm.hpp
CNavTestDataDef.hpp
gnsstk::KlobucharIonoNavData::beta
double beta[4]
beta terms of Klobuchar model, using semi-circles.
Definition: KlobucharIonoNavData.hpp:85
PNBGPSCNavDataFactory_T::addDataEphemerisTest
unsigned addDataEphemerisTest()
Test addData with ephemeris selected only.
Definition: PNBGPSCNavDataFactory_T.cpp:176
TUDEF
#define TUDEF(CLASS, METHOD)
Definition: TestUtil.hpp:56
gnsstk::PNBGPSCNavDataFactory::process30
bool process30(const PackedNavBitsPtr &navIn, NavDataPtrList &navOut)
Definition: PNBGPSCNavDataFactory.cpp:578
gnsstk::GPSCNavIono::alert
bool alert
Alert flag.
Definition: GPSCNavIono.hpp:76
msg30CNAVGPSL2
gnsstk::PackedNavBitsPtr msg30CNAVGPSL2
Definition: CNavTestDataDecl.hpp:45
GPSCNavEph.hpp
gnsstk::TimeSystem::UTC
@ UTC
Coordinated Universal Time (e.g., from NTP)
gnsstk::OrbitDataKepler::i0
double i0
Inclination (rad)
Definition: OrbitDataKepler.hpp:190
msg35CNAVQZSSL5ct
gnsstk::CommonTime msg35CNAVQZSSL5ct
Definition: CNavTestDataDecl.hpp:49
msg11CNAVWR
gnsstk::PackedNavBitsPtr msg11CNAVWR
Definition: CNavTestDataDecl.hpp:56
std::operator<<
std::ostream & operator<<(std::ostream &s, gnsstk::StringUtils::FFLead v)
Definition: FormattedDouble_T.cpp:44
gnsstk::OrbitDataKepler::Cic
double Cic
Cosine inclination (rad)
Definition: OrbitDataKepler.hpp:179
gnsstk::NavMessageType::TimeOffset
@ TimeOffset
Message containing information about time system offsets.
msg31CNAVQZSSL5ct
gnsstk::CommonTime msg31CNAVQZSSL5ct
Definition: CNavTestDataDecl.hpp:49
ephCNAVGPSL2sid
gnsstk::SatID ephCNAVGPSL2sid
Definition: CNavTestDataDecl.hpp:43
gnsstk::OrbitDataKepler::Crc
double Crc
Cosine radius (m)
Definition: OrbitDataKepler.hpp:177
gnsstk::GPSCNavISC::iscL5I5
double iscL5I5
Intersignal corrections for L5 in-phase.
Definition: GPSCNavISC.hpp:107
gnsstk::TrackingCode::L2CM
@ L2CM
Modernized GPS L2 civil M code.
gnsstk::GPSCNavIono
Class containing data elements unique to GPS CNav ionospheric data.
Definition: GPSCNavIono.hpp:50
PNBGPSCNavDataFactory_T::processAlmOrbTest
unsigned processAlmOrbTest()
Definition: PNBGPSCNavDataFactory_T.cpp:492
gnsstk::GPSCNavAlm
Class containing data elements unique to GPS CNav midi almanac.
Definition: GPSCNavAlm.hpp:50
std
Definition: Angle.hpp:142
msg30CNAVGPSL2ct
gnsstk::CommonTime msg30CNAVGPSL2ct
Definition: CNavTestDataDecl.hpp:44
msg32CNAVQZSSL5
gnsstk::PackedNavBitsPtr msg32CNAVQZSSL5
Definition: CNavTestDataDecl.hpp:50
gnsstk::OrbitDataKepler::af0
double af0
SV clock error (sec)
Definition: OrbitDataKepler.hpp:195
gnsstk::GPSCNavEph::uraNED1
uint8_t uraNED1
non-elevation dependent URA from clock message.
Definition: GPSCNavEph.hpp:94
PNBGPSCNavDataFactory_T::processEphTest
unsigned processEphTest()
Definition: PNBGPSCNavDataFactory_T.cpp:346
gnsstk::GPSCNavISC::iscL5Q5
double iscL5Q5
Intersignal corrections for L5 quadrature.
Definition: GPSCNavISC.hpp:108
gnsstk::NavMessageType::Ephemeris
@ Ephemeris
Precision orbits for the transmitting SV.
FactoryCounter.hpp
msg30CNAVWRct
gnsstk::CommonTime msg30CNAVWRct
Definition: CNavTestDataDecl.hpp:55
gnsstk::KlobucharIonoNavData::alpha
double alpha[4]
alpha terms of Klobuchar model, using semi-circles.
Definition: KlobucharIonoNavData.hpp:84
gnsstk::GPSCNavRedAlm
Class containing data elements unique to GPS CNav reduced almanac.
Definition: GPSCNavRedAlm.hpp:50
TUASSERTFE
#define TUASSERTFE(EXP, GOT)
Definition: TestUtil.hpp:103
gnsstk::GPSCNavEph::alertClk
bool alertClk
Alert flag from the clock message.
Definition: GPSCNavEph.hpp:97
gnsstk::PNBGPSCNavDataFactory::addData
bool addData(const PackedNavBitsPtr &navIn, NavDataPtrList &navOut, double cadence=-1) override
Definition: PNBGPSCNavDataFactory.cpp:57
gnsstk::SatelliteSystem::Glonass
@ Glonass
PNBGPSCNavDataFactory_T::addDataAlmanacTest
unsigned addDataAlmanacTest()
Test addData with almanac selected only.
Definition: PNBGPSCNavDataFactory_T.cpp:204
gnsstk::StdNavTimeOffset::a0
double a0
Bias coefficient of source time scale.
Definition: StdNavTimeOffset.hpp:122
gnsstk::GPSCNavISC
Class containing data elements unique to GPS CNAV ISC data.
Definition: GPSCNavISC.hpp:50
PNBGPSCNavDataFactory_T::PNBGPSCNavDataFactory_T
PNBGPSCNavDataFactory_T()
Definition: PNBGPSCNavDataFactory_T.cpp:103
msg31CNAVQZSSL5
gnsstk::PackedNavBitsPtr msg31CNAVQZSSL5
Definition: CNavTestDataDecl.hpp:50
gnsstk::NavID
Definition: NavID.hpp:61
CNavTestDataDecl.hpp
PNBGPSCNavDataFactory_T::process33Test
unsigned process33Test()
Definition: PNBGPSCNavDataFactory_T.cpp:1009
gnsstk::PNBGPSCNavDataFactory::process33
bool process33(const PackedNavBitsPtr &navIn, NavDataPtrList &navOut)
Definition: PNBGPSCNavDataFactory.cpp:799
gnsstk::PNBGPSCNavDataFactory::process31
bool process31(unsigned msgType, const PackedNavBitsPtr &navIn, NavDataPtrList &navOut)
Definition: PNBGPSCNavDataFactory.cpp:630
gnsstk::OrbitDataKepler::health
SVHealth health
SV health status.
Definition: OrbitDataKepler.hpp:173
GPSCNavISC.hpp
gnsstk::GPSCNavISC::iscL2C
double iscL2C
Intersignal corrections for L2C.
Definition: GPSCNavISC.hpp:106
oidCNAVGPSL2
gnsstk::ObsID oidCNAVGPSL2
Definition: CNavTestDataDecl.hpp:42
gnsstk::GPSCNavISC::iscL1CA
double iscL1CA
Intersignal corrections for L1 C/A.
Definition: GPSCNavISC.hpp:105
gnsstk::GPSCNavData::pre
uint32_t pre
The preamble from the start of the subframe.
Definition: GPSCNavData.hpp:104
gnsstk::PNBGPSCNavDataFactory::process12
bool process12(unsigned msgType, const PackedNavBitsPtr &navIn, NavDataPtrList &navOut)
Definition: PNBGPSCNavDataFactory.cpp:559
gnsstk::GPSCNavEph::uraNED0
int8_t uraNED0
non-elevation dependent URA from clock message.
Definition: GPSCNavEph.hpp:93
gnsstk::OrbitDataKepler::OMEGA0
double OMEGA0
Longitude of ascending node at weekly epoch (rad)
Definition: OrbitDataKepler.hpp:189
PNBGPSCNavDataFactory_T::processRedAlmOrbTest
unsigned processRedAlmOrbTest()
Definition: PNBGPSCNavDataFactory_T.cpp:610
gnsstk::GPSCNavEph::dOMEGAdot
double dOMEGAdot
Rate of right ascension relative to -2.6e-9*pi.
Definition: GPSCNavEph.hpp:101
PNBGPSCNavDataFactory_T::process31Test
unsigned process31Test()
Definition: PNBGPSCNavDataFactory_T.cpp:690
gnsstk::SatelliteSystem::QZSS
@ QZSS
gnsstk::GPSCNavIono::pre
uint32_t pre
The preamble from the start of the subframe.
Definition: GPSCNavIono.hpp:75
gnsstk::StdNavTimeOffset::refTime
CommonTime refTime
Reference time for computation.
Definition: StdNavTimeOffset.hpp:126
msg10CNAVWRct
gnsstk::CommonTime msg10CNAVWRct
Definition: CNavTestDataDecl.hpp:55
msg12CNAVQZSSL5
gnsstk::PackedNavBitsPtr msg12CNAVQZSSL5
Definition: CNavTestDataDecl.hpp:50
gnsstk::OrbitDataKepler::af1
double af1
SV clock drift (sec/sec)
Definition: OrbitDataKepler.hpp:196
PNBGPSCNavDataFactory_T::process35Test
unsigned process35Test()
Definition: PNBGPSCNavDataFactory_T.cpp:1048
gnsstk::NavType::GPSCNAVL5
@ GPSCNAVL5
gnsstk::GPSCNavEph
Definition: GPSCNavEph.hpp:52
TimeString.hpp
msg10CNAVWR
gnsstk::PackedNavBitsPtr msg10CNAVWR
Definition: CNavTestDataDecl.hpp:56
gnsstk::NavMessageType::Almanac
@ Almanac
Low-precision orbits for other than the transmitting SV.
gnsstk::StdNavTimeOffset::tot
double tot
Time data reference time of week (storage only).
Definition: StdNavTimeOffset.hpp:128
gnsstk::GPSCNavAlm::toa
double toa
Convenience storage of unqualified toa.
Definition: GPSCNavAlm.hpp:90
gnsstk::OrbitDataKepler::dn
double dn
Correction to mean motion (rad/sec)
Definition: OrbitDataKepler.hpp:183
msg37CNAVQZSSL5ct
gnsstk::CommonTime msg37CNAVQZSSL5ct
Definition: CNavTestDataDecl.hpp:49
gnsstk::CarrierBand::L5
@ L5
GPS L5, Galileo E5a, SBAS L5, QZSS L5, BeiDou B2a, NavIC L5.
gnsstk::GPSCNavEph::top
CommonTime top
Time of prediction.
Definition: GPSCNavEph.hpp:102


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