PNBGPSCNav2DataFactory_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 "GPSCNav2TimeOffset.hpp"
43 #include "GPSCNav2Health.hpp"
44 #include "GPSCNav2Eph.hpp"
45 #include "GPSCNav2Alm.hpp"
46 //#include "GPSCNav2RedAlm.hpp"
47 #include "GPSCNav2Iono.hpp"
48 #include "GPSCNav2ISC.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 #include "CNav2TestDataDecl.hpp"
72 
73  unsigned addDataAllTest();
75  unsigned addDataEphemerisTest();
77  unsigned addDataAlmanacTest();
79  unsigned addDataHealthTest();
81  unsigned addDataTimeTest();
83  unsigned addDataEphHealthTest();
85  unsigned addDataAlmHealthTest();
86  unsigned processEphTest();
87  unsigned processAlmOrbTest();
88  unsigned processUTCIonoTest();
89  unsigned processGGTOEOPTest();
90  unsigned processEphQZSSTest();
91  unsigned processAlmOrbQZSSTest();
92  unsigned processUTCIonoQZSSTest();
93  unsigned processGGTOEOPQZSSTest();
94  unsigned processISCTest();
95 
96  void validateAlmGPS(gnsstk::TestUtil& testFramework,
97  const gnsstk::GPSCNav2Alm* alm,
98  const gnsstk::CommonTime& expTime);
99  void validateEphGPS(gnsstk::TestUtil& testFramework,
100  const gnsstk::GPSCNav2Eph* eph,
101  const gnsstk::CommonTime& expTime);
102  void validateTOGPS(gnsstk::TestUtil& testFramework,
103  const gnsstk::GPSCNav2TimeOffset* to);
104  void validateEphHealthGPS(gnsstk::TestUtil& testFramework,
105  const gnsstk::GPSCNav2Health* hea,
106  const gnsstk::CommonTime& expTime);
107  void validateAlmHealthGPS(gnsstk::TestUtil& testFramework,
108  const gnsstk::GPSCNav2Health* hea,
109  const gnsstk::CommonTime& expTime);
110  void validateIonoGPS(gnsstk::TestUtil& testFramework,
111  const gnsstk::GPSCNav2Iono* iono);
112  void validateISCGPS(gnsstk::TestUtil& testFramework,
113  const gnsstk::GPSCNav2ISC* isc);
114 };
115 
116 
119 {
120 #include "CNav2TestDataDef.hpp"
121 }
122 
123 
126 {
127  TUDEF("PNBGPSCNav2DataFactory", "addData");
128  GPSFactoryCounter fc(testFramework);
134  gnsstk::PackedNavBitsPtr nonGPS =
135  std::make_shared<gnsstk::PackedNavBits>(gloSid,gloid,gloNav,"XX",
136  sf2CNAV2GPSct);
137  gnsstk::NavDataPtrList navOut;
138  gnsstk::GPSCNav2Alm *alm;
139  gnsstk::GPSCNav2Eph *eph;
142  gnsstk::GPSCNav2Iono *iono;
143  gnsstk::GPSCNav2ISC *isc;
144  // should refuse non-GPS data
145  TUASSERTE(bool, false, uut.addData(nonGPS, navOut));
146  fc.validateResults(navOut, __LINE__);
147  // get 1 health and 1 ephemeris from subframe 2
148  TUASSERTE(bool, true, uut.addData(sf2CNAV2GPS, navOut));
149  fc.validateResults(navOut, __LINE__, 2, 0, 1, 0, 1);
150  // get 1 time offset, 1 iono and 1 ISC from subframe 3 page 1
151  TUASSERTE(bool, true, uut.addData(sf3p1CNAV2GPS, navOut));
152  fc.validateResults(navOut, __LINE__, 3, 0, 0, 1, 0, 1, 1);
153  // get 0 time offsets from subframe 3 page 2 (because no data available)
154  TUASSERTE(bool, true, uut.addData(sf3p2CNAV2GPS, navOut));
155  fc.validateResults(navOut, __LINE__);
156  // get 3 health and 1 almanac from subframe 3 page 4
157  TUASSERTE(bool, true, uut.addData(sf3p4CNAV2GPS, navOut));
158  fc.validateResults(navOut, __LINE__, 4, 1, 0, 0, 3);
159  //
160  // QZSS CNAV2 data
161  //
162  // get 1 health and 1 ephemeris from subframe 2
163  TUASSERTE(bool, true, uut.addData(sf2CNAV2QZSS, navOut));
164  fc.validateResults(navOut, __LINE__, 2, 0, 1, 0, 1);
165  // get 1 time offset, 1 iono and 1 ISC from subframe 3 page 1
166  TUASSERTE(bool, true, uut.addData(sf3p1CNAV2QZSS, navOut));
167  fc.validateResults(navOut, __LINE__, 3, 0, 0, 1, 0, 1, 1);
168  // get 1 time offset from subframe 3 page 2
169  TUASSERTE(bool, true, uut.addData(sf3p2CNAV2QZSS, navOut));
170  fc.validateResults(navOut, __LINE__, 1, 0, 0, 1);
171  // get 3 health and 1 almanac from subframe 3 page 4
172  TUASSERTE(bool, true, uut.addData(sf3p4CNAV2QZSS, navOut));
173  fc.validateResults(navOut, __LINE__, 4, 1, 0, 0, 3);
174  //
175  // GPS with a complete message including sf3p1
176  //
177  uut.resetState();
178  TUASSERTE(bool, true, uut.addData(sf123p1CNAV2GPS, navOut));
179  for (const auto& i : navOut)
180  {
181  if ((eph = dynamic_cast<gnsstk::GPSCNav2Eph*>(i.get())) != nullptr)
182  {
183  validateEphGPS(testFramework, eph, sf123p1CNAV2GPSct + 0.52);
184  }
185  else if ((to = dynamic_cast<gnsstk::GPSCNav2TimeOffset*>(i.get()))
186  != nullptr)
187  {
188  validateTOGPS(testFramework, to);
189  }
190  else if ((hea = dynamic_cast<gnsstk::GPSCNav2Health*>(i.get())) != nullptr)
191  {
192  validateEphHealthGPS(testFramework, hea, sf123p1CNAV2GPSct + 0.52);
193  }
194  else if ((iono = dynamic_cast<gnsstk::GPSCNav2Iono*>(i.get())) != nullptr)
195  {
196  validateIonoGPS(testFramework, iono);
197  }
198  else if ((isc = dynamic_cast<gnsstk::GPSCNav2ISC*>(i.get())) != nullptr)
199  {
200  validateISCGPS(testFramework, isc);
201  }
202  else
203  {
204  TUFAIL("What is this?");
205  }
206  }
207  // sf2: ephemeris, health
208  // sf3p1: time offset, iono, ISC
209  fc.validateResults(navOut, __LINE__, 5, 0, 1, 1, 1, 1, 1);
210  //
211  // GPS with a complete message including sf3p2
212  //
213  uut.resetState();
214  TUASSERTE(bool, true, uut.addData(sf123p2CNAV2GPS, navOut));
215  for (const auto& i : navOut)
216  {
217  if ((eph = dynamic_cast<gnsstk::GPSCNav2Eph*>(i.get())) != nullptr)
218  {
219  validateEphGPS(testFramework, eph, sf123p2CNAV2GPSct + 0.52);
220  }
221  else if ((hea = dynamic_cast<gnsstk::GPSCNav2Health*>(i.get())) != nullptr)
222  {
223  validateEphHealthGPS(testFramework, hea, sf123p2CNAV2GPSct + 0.52);
224  }
225  else
226  {
227  TUFAIL("What is this?");
228  }
229  }
230  // sf2: ephemeris, health
231  // sf3p2: NO time offset (no data available)
232  fc.validateResults(navOut, __LINE__, 2, 0, 1, 0, 1);
233  //
234  // GPS with a complete message including sf3p4
235  //
236  uut.resetState();
237  TUASSERTE(bool, true, uut.addData(sf123p4CNAV2GPS, navOut));
238  for (const auto& i : navOut)
239  {
240  if ((alm = dynamic_cast<gnsstk::GPSCNav2Alm*>(i.get())) != nullptr)
241  {
242  validateAlmGPS(testFramework, alm, sf123p4CNAV2GPSct + 12.52);
243  }
244  else if ((eph = dynamic_cast<gnsstk::GPSCNav2Eph*>(i.get())) != nullptr)
245  {
246  validateEphGPS(testFramework, eph, sf123p4CNAV2GPSct + 0.52);
247  }
248  else if ((hea = dynamic_cast<gnsstk::GPSCNav2Health*>(i.get())) != nullptr)
249  {
250  if (hea->signal.sat.id == 4)
251  {
252  validateEphHealthGPS(testFramework, hea, sf123p4CNAV2GPSct + 0.52);
253  }
254  else
255  {
256  validateAlmHealthGPS(testFramework, hea, sf123p4CNAV2GPSct + 12.52);
257  }
258  }
259  else
260  {
261  TUFAIL("What is this?");
262  }
263  }
264  // sf2: ephemeris, health
265  // sf3p4: almanac, 3x health
266  fc.validateResults(navOut, __LINE__, 6, 1, 1, 0, 4);
267  TURETURN();
268 }
269 
270 
273 {
274  TUDEF("PNBGPSCNav2DataFactory", "addData");
275  GPSFactoryCounter fc(testFramework);
277  gnsstk::NavDataPtrList navOut;
278  TUCATCH(uut.setTypeFilter({gnsstk::NavMessageType::Ephemeris}));
279  // get 1 ephemeris from subframe 2
280  TUASSERTE(bool, true, uut.addData(sf2CNAV2GPS, navOut));
281  fc.validateResults(navOut, __LINE__, 1, 0, 1);
282  // get nothing from subframe 3 page 1
283  TUASSERTE(bool, true, uut.addData(sf3p1CNAV2GPS, navOut));
284  fc.validateResults(navOut, __LINE__);
285  // get nothing from subframe 3 page 2
286  TUASSERTE(bool, true, uut.addData(sf3p2CNAV2GPS, navOut));
287  fc.validateResults(navOut, __LINE__);
288  // get nothing from subframe 3 page 4
289  TUASSERTE(bool, true, uut.addData(sf3p4CNAV2GPS, navOut));
290  fc.validateResults(navOut, __LINE__);
291  TURETURN();
292 }
293 
294 
297 {
298  TUDEF("PNBGPSCNav2DataFactory", "addData");
299  GPSFactoryCounter fc(testFramework);
301  gnsstk::NavDataPtrList navOut;
302  TUCATCH(uut.setTypeFilter({gnsstk::NavMessageType::Almanac}));
303  // get nothing from subframe 2
304  TUASSERTE(bool, true, uut.addData(sf2CNAV2GPS, navOut));
305  fc.validateResults(navOut, __LINE__);
306  // get nothing from subframe 3 page 1
307  TUASSERTE(bool, true, uut.addData(sf3p1CNAV2GPS, navOut));
308  fc.validateResults(navOut, __LINE__);
309  // get nothing from subframe 3 page 2
310  TUASSERTE(bool, true, uut.addData(sf3p2CNAV2GPS, navOut));
311  fc.validateResults(navOut, __LINE__);
312  // get 1 almanac from subframe 3 page 4
313  TUASSERTE(bool, true, uut.addData(sf3p4CNAV2GPS, navOut));
314  fc.validateResults(navOut, __LINE__, 1, 1);
315  TURETURN();
316 }
317 
318 
321 {
322  TUDEF("PNBGPSCNav2DataFactory", "addData");
323  GPSFactoryCounter fc(testFramework);
325  gnsstk::NavDataPtrList navOut;
326  TUCATCH(uut.setTypeFilter({gnsstk::NavMessageType::Health}));
327  // get 1 health from subframe 2
328  TUASSERTE(bool, true, uut.addData(sf2CNAV2GPS, navOut));
329  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
330  // get nothing from subframe 3 page 1
331  TUASSERTE(bool, true, uut.addData(sf3p1CNAV2GPS, navOut));
332  fc.validateResults(navOut, __LINE__);
333  // get nothing from subframe 3 page 2
334  TUASSERTE(bool, true, uut.addData(sf3p2CNAV2GPS, navOut));
335  fc.validateResults(navOut, __LINE__);
336  // get 3 health from subframe 3 page 4
337  TUASSERTE(bool, true, uut.addData(sf3p4CNAV2GPS, navOut));
338  fc.validateResults(navOut, __LINE__, 3, 0, 0, 0, 3);
339  TURETURN();
340 }
341 
342 
345 {
346  TUDEF("PNBGPSCNav2DataFactory", "addData");
347  GPSFactoryCounter fc(testFramework);
349  gnsstk::NavDataPtrList navOut;
350  TUCATCH(uut.setTypeFilter({gnsstk::NavMessageType::TimeOffset}));
351  // get nothing from subframe 2
352  TUASSERTE(bool, true, uut.addData(sf2CNAV2GPS, navOut));
353  fc.validateResults(navOut, __LINE__);
354  // get 1 time offset from subframe 3 page 1
355  TUASSERTE(bool, true, uut.addData(sf3p1CNAV2GPS, navOut));
356  fc.validateResults(navOut, __LINE__, 1, 0, 0, 1);
357  // get nothing from subframe 3 page 2
358  TUASSERTE(bool, true, uut.addData(sf3p2CNAV2GPS, navOut));
359  fc.validateResults(navOut, __LINE__);
360  // get nothing from subframe 3 page 4
361  TUASSERTE(bool, true, uut.addData(sf3p4CNAV2GPS, navOut));
362  fc.validateResults(navOut, __LINE__);
363  TURETURN();
364 }
365 
366 
369 {
370  TUDEF("PNBGPSCNav2DataFactory", "addData");
371  GPSFactoryCounter fc(testFramework);
373  gnsstk::NavDataPtrList navOut;
374  TUCATCH(uut.setTypeFilter({gnsstk::NavMessageType::Ephemeris,
375  gnsstk::NavMessageType::Health}));
376  // get 1 ephemeris, 1 health from subframe 2
377  TUASSERTE(bool, true, uut.addData(sf2CNAV2GPS, navOut));
378  fc.validateResults(navOut, __LINE__, 2, 0, 1, 0, 1);
379  // get nothing from subframe 3 page 1
380  TUASSERTE(bool, true, uut.addData(sf3p1CNAV2GPS, navOut));
381  fc.validateResults(navOut, __LINE__);
382  // get nothing from subframe 3 page 2
383  TUASSERTE(bool, true, uut.addData(sf3p2CNAV2GPS, navOut));
384  fc.validateResults(navOut, __LINE__);
385  // get 3 health from subframe 3 page 4
386  TUASSERTE(bool, true, uut.addData(sf3p4CNAV2GPS, navOut));
387  fc.validateResults(navOut, __LINE__, 3, 0, 0, 0, 3);
388  TURETURN();
389 }
390 
391 
394 {
395  TUDEF("PNBGPSCNav2DataFactory", "addData");
396  GPSFactoryCounter fc(testFramework);
398  gnsstk::NavDataPtrList navOut;
399  TUCATCH(uut.setTypeFilter({gnsstk::NavMessageType::Almanac,
400  gnsstk::NavMessageType::Health}));
401  // get 1 health from subframe 2
402  TUASSERTE(bool, true, uut.addData(sf2CNAV2GPS, navOut));
403  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
404  // get nothing from subframe 3 page 1
405  TUASSERTE(bool, true, uut.addData(sf3p1CNAV2GPS, navOut));
406  fc.validateResults(navOut, __LINE__);
407  // get nothing from subframe 3 page 2
408  TUASSERTE(bool, true, uut.addData(sf3p2CNAV2GPS, navOut));
409  fc.validateResults(navOut, __LINE__);
410  // get 1 almanac, 3 health from subframe 3 page 4
411  TUASSERTE(bool, true, uut.addData(sf3p4CNAV2GPS, navOut));
412  fc.validateResults(navOut, __LINE__, 4, 1, 0, 0, 3);
413  TURETURN();
414 }
415 
416 
419 {
420  TUDEF("PNBGPSCNav2DataFactory", "processEph");
421  GPSFactoryCounter fc(testFramework);
423  gnsstk::NavMessageID nmidExpHea(
428  gnsstk::NavDataPtrList navOut;
430  gnsstk::GPSCNav2Eph *eph;
431  // success, health and ephemeris
432  TUASSERTE(bool, true, uut.processEph(sf2CNAV2GPS, navOut));
433  for (const auto& i : navOut)
434  {
435  if ((hea = dynamic_cast<gnsstk::GPSCNav2Health*>(i.get())) != nullptr)
436  {
437  validateEphHealthGPS(testFramework, hea, sf2CNAV2GPSct);
438  }
439  else if ((eph = dynamic_cast<gnsstk::GPSCNav2Eph*>(i.get())) != nullptr)
440  {
441  validateEphGPS(testFramework, eph, sf2CNAV2GPSct);
442  }
443  }
444  fc.validateResults(navOut, __LINE__, 2, 0, 1, 0, 1);
445  TURETURN();
446 }
447 
448 
451 {
452  TUDEF("PNBGPSCNav2DataFactory", "processAlmOrb");
453  GPSFactoryCounter fc(testFramework);
455  gnsstk::NavDataPtrList navOut;
457  gnsstk::GPSCNav2Alm *alm;
458  // success, health and almanac
459  TUASSERTE(bool, true, uut.processAlmOrb(sf3p4CNAV2GPS, navOut));
460  for (const auto& i : navOut)
461  {
462  if ((hea = dynamic_cast<gnsstk::GPSCNav2Health*>(i.get())) != nullptr)
463  {
464  validateAlmHealthGPS(testFramework, hea, sf3p4CNAV2GPSct);
465  }
466  else if ((alm = dynamic_cast<gnsstk::GPSCNav2Alm*>(i.get())) != nullptr)
467  {
468  validateAlmGPS(testFramework, alm, sf3p4CNAV2GPSct);
469  }
470  }
471  fc.validateResults(navOut, __LINE__, 4, 1, 0, 0, 3);
472  TURETURN();
473 }
474 
475 
478 {
479  TUDEF("PNBGPSCNav2DataFactory", "processUTCIono");
480  GPSFactoryCounter fc(testFramework);
482  gnsstk::NavDataPtrList navOut;
484  gnsstk::GPSCNav2Iono *iono;
485  // success, time offset only
486  TUASSERTE(bool, true, uut.processUTCIono(sf3p1CNAV2GPS, navOut));
487  for (const auto& i : navOut)
488  {
489  if ((to = dynamic_cast<gnsstk::GPSCNav2TimeOffset*>(i.get())) != nullptr)
490  {
491  validateTOGPS(testFramework, to);
492  }
493  else if ((iono = dynamic_cast<gnsstk::GPSCNav2Iono*>(i.get())) != nullptr)
494  {
495  validateIonoGPS(testFramework, iono);
496  }
497  }
498  fc.validateResults(navOut, __LINE__, 2, 0, 0, 1, 0, 1);
499  TURETURN();
500 }
501 
502 
505 {
506  TUDEF("PNBGPSCNav2DataFactory", "processGGTOEOP");
507  GPSFactoryCounter fc(testFramework);
509  gnsstk::NavMessageID nmidExp(
514  gnsstk::NavDataPtrList navOut;
516  // make sure we have at least the right number of bits
517  TUASSERTE(size_t, 274, sf3p2fakeCNAV2GPS->getNumBits());
518  // success, time offset only
519  TUASSERTE(bool, true, uut.processGGTOEOP(sf3p2fakeCNAV2GPS, navOut));
520  for (const auto& i : navOut)
521  {
522  if ((to = dynamic_cast<gnsstk::GPSCNav2TimeOffset*>(i.get())) != nullptr)
523  {
524  // NavData fields
526  TUASSERTE(gnsstk::NavMessageID, nmidExp, to->signal);
527  // TimeOffsetData has no fields
528  // GPSCNav2TimeOffset
530  TUASSERTFE(6.5192580223e-09, to->a0);
531  TUASSERTFE(1.5099033135e-14, to->a1);
532  TUASSERTFE(0, to->a2);
533  TUASSERTFE(0, to->deltatLS);
534  TUASSERTFE(3456, to->tot);
535  TUASSERTE(unsigned, 2044, to->wnot);
536  TUASSERTE(unsigned, 0, to->wnLSF);
538  gnsstk::GPSWeekSecond(2044,3456).convertToCommonTime(),
539  to->refTime);
540  TUASSERTE(unsigned, 0, to->dn);
541  TUASSERTFE(0, to->deltatLSF);
542  }
543  }
544  fc.validateResults(navOut, __LINE__, 1, 0, 0, 1);
545  TURETURN();
546 }
547 
548 
551 {
552  TUDEF("PNBGPSCNav2DataFactory", "processEph(QZSS)");
553  GPSFactoryCounter fc(testFramework);
555  gnsstk::NavMessageID nmidExpHea(
560  gnsstk::NavMessageID nmidExpEph(
565  gnsstk::CommonTime toeExp = gnsstk::GPSWeekSecond(2155,327600,
567  gnsstk::CommonTime topExp = gnsstk::GPSWeekSecond(2155,327600,
569  gnsstk::CommonTime beginExp = gnsstk::GPSWeekSecond(2155,324504,
571  gnsstk::CommonTime endExp = gnsstk::GPSWeekSecond(2155,333300,
573  gnsstk::NavDataPtrList navOut;
575  gnsstk::GPSCNav2Eph *eph;
576  // success, health and ephemeris
577  TUASSERTE(bool, true, uut.processEph(sf2CNAV2QZSS, navOut));
578  for (const auto& i : navOut)
579  {
580  if ((hea = dynamic_cast<gnsstk::GPSCNav2Health*>(i.get())) != nullptr)
581  {
582  // NavData fields
585  TUASSERTE(gnsstk::NavMessageID, nmidExpHea, hea->signal);
586  // NavHealthData has no fields
587  // GPSCNav2Health
588  TUASSERTE(bool, false, hea->health);
589  }
590  else if ((eph = dynamic_cast<gnsstk::GPSCNav2Eph*>(i.get())) != nullptr)
591  {
592  // NavData fields
594  TUASSERTE(gnsstk::NavMessageID, nmidExpEph, eph->signal);
595  // OrbitData has no fields
596  // OrbitDataKepler fields
598  TUASSERTE(gnsstk::CommonTime, toeExp, eph->Toe);
599  TUASSERTE(gnsstk::CommonTime, toeExp, eph->Toc); // same value as toe
601  TUASSERTFE( 8.66129994E-08, eph->Cuc);
602  TUASSERTFE(-8.9611858129501342773E-06, eph->Cus);
603  TUASSERTFE( 4.5444921875E+02, eph->Crc);
604  TUASSERTFE(-4.06328125E+01, eph->Crs);
605  TUASSERTFE( 1.5646219253540039062E-07, eph->Cic);
606  TUASSERTFE( 1.37835741E-07, eph->Cis);
607  TUASSERTFE(-2.2116779253087699431E+00, eph->M0);
608  TUASSERTFE( 3.86105369E-09, eph->dn);
609  TUASSERTFE(-6.05799160E-14, eph->dndot);
610  TUASSERTFE( 7.5641123345121741295E-02, eph->ecc);
611  TUASSERTFE(::sqrt(42164200-2493.421875), eph->Ahalf);
612  TUASSERTFE( 42164200-2493.421875, eph->A);
613  TUASSERTFE( 1.2159824371337890625E-02, eph->Adot);
614  TUASSERTFE(-1.2915573706629632778E+00, eph->OMEGA0);
615  TUASSERTFE( 7.3069146699824139013E-01, eph->i0);
616  TUASSERTFE(-1.5648458687401483047E+00, eph->w);
617  TUASSERTFE(-3.85563984E-09, eph->OMEGAdot);
618  TUASSERTFE( 2.53046255E-10, eph->idot);
619  TUASSERTFE(-3.7147360853850841522E-04, eph->af0);
620  TUASSERTFE(-5.06616971E-12, eph->af1);
621  TUASSERTFE( 0.00000000E+00, eph->af2);
622  TUASSERTE(gnsstk::CommonTime, beginExp, eph->beginFit);
623  TUASSERTE(gnsstk::CommonTime, endExp, eph->endFit);
624  // GPSCNavEph fields
625  TUASSERTE(bool, false, eph->healthL1C);
626  TUASSERTE(int, -8, eph->uraED);
627  TUASSERTE(int, -3, eph->uraNED0);
628  TUASSERTE(unsigned, 0, eph->uraNED1);
629  TUASSERTE(unsigned, 0, eph->uraNED2);
630  TUASSERTE(bool, false, eph->integStat);
631  TUASSERTFE(-2493.421875, eph->deltaA);
632  TUASSERTFE(4.3125010615506153166e-09, eph->dOMEGAdot);
633  TUASSERTE(gnsstk::CommonTime, topExp, eph->top);
634  TUASSERTFE(-5.4715201258659362793e-09, eph->tgd);
635  TUASSERTFE( 2.91038305E-10, eph->iscL1CP);
636  TUASSERTFE( 4.36557457E-10, eph->iscL1CD);
637  }
638  }
639  fc.validateResults(navOut, __LINE__, 2, 0, 1, 0, 1);
640  TURETURN();
641 }
642 
643 
646 {
647  TUDEF("PNBGPSCNav2DataFactory", "processAlmOrb");
648  GPSFactoryCounter fc(testFramework);
650  gnsstk::NavMessageID nmidExpHeaL1(
655  gnsstk::NavMessageID nmidExpHeaL2(
660  gnsstk::NavMessageID nmidExpHeaL5(
665  gnsstk::NavMessageID nmidExpAlm(
670  gnsstk::CommonTime toeExp = gnsstk::GPSWeekSecond(2155,520192,
674  gnsstk::NavDataPtrList navOut;
676  gnsstk::GPSCNav2Alm *alm;
678  // success, health and almanac
679  TUASSERTE(bool, true, uut.processAlmOrb(sf3p4CNAV2QZSS, navOut));
680  for (const auto& i : navOut)
681  {
682  if ((hea = dynamic_cast<gnsstk::GPSCNav2Health*>(i.get())) != nullptr)
683  {
684  // NavData fields
686  bool expHea = false;
687  switch (hea->signal.nav)
688  {
690  TUASSERTE(gnsstk::NavMessageID, nmidExpHeaL1, hea->signal);
691  break;
693  TUASSERTE(gnsstk::NavMessageID, nmidExpHeaL2, hea->signal);
694  break;
696  TUASSERTE(gnsstk::NavMessageID, nmidExpHeaL5, hea->signal);
697  break;
698  default:
699  TUFAIL("Unexpected nav type: " +
701  break;
702  }
703  // NavHealthData has no fields
704  // GPSCNav2Health
705  TUASSERTE(bool, expHea, hea->health);
706  }
707  else if ((alm = dynamic_cast<gnsstk::GPSCNav2Alm*>(i.get())) != nullptr)
708  {
709  // NavData fields
711  TUASSERTE(gnsstk::NavMessageID, nmidExpAlm, alm->signal);
712  // OrbitData has no fields
713  // OrbitDataKepler fields
715  TUASSERTE(gnsstk::CommonTime, toeExp, alm->Toe);
716  TUASSERTE(gnsstk::CommonTime, toeExp, alm->Toc); // same value as toe
718  TUASSERTFE(0, alm->Cuc);
719  TUASSERTFE(0, alm->Cus);
720  TUASSERTFE(0, alm->Crc);
721  TUASSERTFE(0, alm->Crs);
722  TUASSERTFE(0, alm->Cic);
723  TUASSERTFE(0, alm->Cis);
724  TUASSERTFE( 1.5375281184576268245E+00, alm->M0);
725  TUASSERTFE(0, alm->dn);
726  TUASSERTFE(0, alm->dndot);
727  TUASSERTFE( 1.44500732421875E-02, alm->ecc);
728  TUASSERTFE( 6.4934375000E+03, alm->Ahalf);
729  TUASSERTFE( 6.4934375000E+03*6.4934375000E+03, alm->A);
730  TUASSERTFE(0, alm->Adot);
731  TUASSERTFE( 2.6930950207317287948E+00, alm->OMEGA0);
732  TUASSERTFE((0.25*gnsstk::PI)-7.2672339826082246739E-02, alm->i0);
733  TUASSERTFE(-1.5638934132494111129E+00, alm->w);
734  TUASSERTFE(-2.5601066387E-09, alm->OMEGAdot);
735  TUASSERTFE(0, alm->idot);
736  TUASSERTFE(-4.7683715820E-06, alm->af0);
737  TUASSERTFE( 0.0000000000E+00, alm->af1);
738  TUASSERTFE(0, alm->af2);
739  TUASSERTE(gnsstk::CommonTime, beginExp, alm->beginFit);
740  TUASSERTE(gnsstk::CommonTime, endExp, alm->endFit);
741  // GPSCNavAlm fields
742  TUASSERTE(bool, false, alm->healthL1);
743  TUASSERTE(bool, false, alm->healthL2);
744  TUASSERTE(bool, false, alm->healthL5);
745  TUASSERTFE(-7.2672339826082246739E-02, alm->deltai);
746  TUASSERTE(unsigned, 2155, alm->wna);
747  TUASSERTFE(520192, alm->toa);
748  }
749  }
750  fc.validateResults(navOut, __LINE__, 4, 1, 0, 0, 3);
751  TURETURN();
752 }
753 
754 
757 {
758  TUDEF("PNBGPSCNav2DataFactory", "processUTCIono");
759  GPSFactoryCounter fc(testFramework);
761  gnsstk::NavMessageID nmidExp(
766  gnsstk::NavDataPtrList navOut;
768  gnsstk::GPSCNav2Iono *iono;
769  // success, time offset and iono
770  TUASSERTE(bool, true, uut.processUTCIono(sf3p1CNAV2QZSS, navOut));
771  for (const auto& i : navOut)
772  {
773  if ((to = dynamic_cast<gnsstk::GPSCNav2TimeOffset*>(i.get())) != nullptr)
774  {
776  // NavData fields
778  TUASSERTE(gnsstk::NavMessageID, nmidExp, to->signal);
779  // TimeOffsetData has no fields
780  // GPSCNav2TimeOffset
782  TUASSERTFE(-1.0390067473e-08, to->a0);
783  TUASSERTFE( 0.0000000000e+00, to->a1);
784  TUASSERTFE( 0.0000000000e+00, to->a2);
785  TUASSERTFE(18, to->deltatLS);
786  TUASSERTFE(529200, to->tot);
787  TUASSERTE(unsigned, 2155, to->wnot);
788  TUASSERTE(unsigned, 1929, to->wnLSF);
791  2155,529200,gnsstk::TimeSystem::QZS).convertToCommonTime(),
792  to->refTime);
793  TUASSERTE(unsigned, 7, to->dn);
794  TUASSERTFE(18, to->deltatLSF);
795  }
796  else if ((iono = dynamic_cast<gnsstk::GPSCNav2Iono*>(i.get())) != nullptr)
797  {
799  // NavData fields
801  TUASSERTE(gnsstk::NavMessageID, nmidExp, iono->signal);
802  TUASSERTFE( 1.303851600e-08, iono->alpha[0]);
803  TUASSERTFE( 0.000000000e+00, iono->alpha[1]);
804  TUASSERTFE(-4.172325133e-07, iono->alpha[2]);
805  TUASSERTFE(-6.556510925e-07, iono->alpha[3]);
806  TUASSERTFE( 1.044480000e+05, iono->beta[0]);
807  TUASSERTFE(-2.293760000e+05, iono->beta[1]);
808  TUASSERTFE(-3.538944000e+06, iono->beta[2]);
809  TUASSERTFE( 8.323072000e+06, iono->beta[3]);
810  }
811  }
812  fc.validateResults(navOut, __LINE__, 2, 0, 0, 1, 0, 1);
813  TURETURN();
814 }
815 
816 
819 {
820  TUDEF("PNBGPSCNav2DataFactory", "processGGTOEOP");
821  GPSFactoryCounter fc(testFramework);
823  gnsstk::NavMessageID nmidExp(
828  gnsstk::NavDataPtrList navOut;
830  // make sure we have at least the right number of bits
831  TUASSERTE(size_t, 274, sf3p2CNAV2QZSS->getNumBits());
832  // success, time offset only
833  TUASSERTE(bool, true, uut.processGGTOEOP(sf3p2CNAV2QZSS, navOut));
834  for (const auto& i : navOut)
835  {
836  if ((to = dynamic_cast<gnsstk::GPSCNav2TimeOffset*>(i.get())) != nullptr)
837  {
838  // NavData fields
840  TUASSERTE(gnsstk::NavMessageID, nmidExp, to->signal);
841  // TimeOffsetData has no fields
842  // GPSCNav2TimeOffset
845  TUASSERTFE(0, to->a0);
846  TUASSERTFE(0, to->a1);
847  TUASSERTFE(0, to->a2);
848  TUASSERTFE(0, to->deltatLS);
849  TUASSERTFE(356400, to->tot);
850  TUASSERTE(unsigned, 2155, to->wnot);
851  TUASSERTE(unsigned, 0, to->wnLSF);
854  2155,356400,gnsstk::TimeSystem::QZS).convertToCommonTime(),
855  to->refTime);
856  TUASSERTE(unsigned, 0, to->dn);
857  TUASSERTFE(0, to->deltatLSF);
858  }
859  }
860  fc.validateResults(navOut, __LINE__, 1, 0, 0, 1);
861  TURETURN();
862 }
863 
864 
867 {
868  TUDEF("PNBGPSCNav2DataFactory", "processISC");
869  GPSFactoryCounter fc(testFramework);
871  gnsstk::NavMessageID nmidExp(
876  gnsstk::NavDataPtrList navOut;
877  gnsstk::GPSCNav2ISC *isc;
878  // test sequences:
879  // SF2, SF2
880  // SF2, SF3 (pg2), SF3 (pg1)
881  // SF3, SF2
882  // SF123
883  // first test two SF2 in sequence
884  TUASSERTE(bool, true, uut.processISC(sf2CNAV2GPS, navOut));
885  fc.validateResults(navOut, __LINE__);
886  TUASSERTE(bool, true, uut.processISC(sf2CNAV2GPS2, navOut));
887  if ((isc = dynamic_cast<gnsstk::GPSCNav2ISC*>(navOut.begin()->get()))
888  != nullptr)
889  {
891  TUASSERTE(gnsstk::NavMessageID, nmidExp, isc->signal);
892  TUASSERTE(bool, true, isc->haveSF2);
893  TUASSERTE(bool, false, isc->haveSF3);
894  TUASSERTFE(-8.78935679793358e-09, isc->isc);
895  TUASSERTFE(-7.85803422E-10, isc->iscL1CP);
896  TUASSERTFE(-3.49245965E-10, isc->iscL1CD);
897  TUASSERTE(bool, true, std::isnan(isc->iscL1CA));
898  TUASSERTE(bool, true, std::isnan(isc->iscL2C));
899  TUASSERTE(bool, true, std::isnan(isc->iscL5I5));
900  TUASSERTE(bool, true, std::isnan(isc->iscL5Q5));
901  }
902  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 0, 0, 1);
903  // Add a subframe 3 page 2
904  TUASSERTE(bool, true, uut.processISC(sf3p2CNAV2GPS, navOut));
905  fc.validateResults(navOut, __LINE__);
906  // Add a subframe 3 page 1
907  TUASSERTE(bool, true, uut.processISC(sf3p1CNAV2GPS, navOut));
908  if ((isc = dynamic_cast<gnsstk::GPSCNav2ISC*>(navOut.begin()->get()))
909  != nullptr)
910  {
912  TUASSERTE(gnsstk::NavMessageID, nmidExp, isc->signal);
913  TUASSERTE(bool, true, isc->haveSF2);
914  TUASSERTE(bool, true, isc->haveSF3);
915  TUASSERTFE(-8.78935679793358e-09, isc->isc);
916  TUASSERTFE(-7.85803422E-10, isc->iscL1CP);
917  TUASSERTFE(-3.49245965E-10, isc->iscL1CD);
918  TUASSERTFE(-5.82076609e-10, isc->iscL1CA);
919  TUASSERTFE(-6.60656951e-09, isc->iscL2C);
920  TUASSERTFE(-1.17870513e-08, isc->iscL5I5);
921  TUASSERTFE(-1.17870513e-08, isc->iscL5Q5);
922  }
923  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 0, 0, 1);
924  // SF3 -> SF2
925  uut.resetState();
926  TUASSERTE(bool, true, uut.processISC(sf3p1CNAV2GPS, navOut));
927  fc.validateResults(navOut, __LINE__);
928  TUASSERTE(bool, true, uut.processISC(sf2CNAV2GPS2, navOut));
929  if ((isc = dynamic_cast<gnsstk::GPSCNav2ISC*>(navOut.begin()->get()))
930  != nullptr)
931  {
933  TUASSERTE(gnsstk::NavMessageID, nmidExp, isc->signal);
934  TUASSERTE(bool, true, isc->haveSF2);
935  TUASSERTE(bool, true, isc->haveSF3);
936  TUASSERTFE(-8.78935679793358e-09, isc->isc);
937  TUASSERTFE(-7.85803422E-10, isc->iscL1CP);
938  TUASSERTFE(-3.49245965E-10, isc->iscL1CD);
939  TUASSERTFE(-5.82076609e-10, isc->iscL1CA);
940  TUASSERTFE(-6.60656951e-09, isc->iscL2C);
941  TUASSERTFE(-1.17870513e-08, isc->iscL5I5);
942  TUASSERTFE(-1.17870513e-08, isc->iscL5Q5);
943  }
944  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 0, 0, 1);
945  // SF123
946  uut.resetState();
947  TUASSERTE(bool, true, uut.processISC(sf123p1CNAV2GPS, navOut));
948  if ((isc = dynamic_cast<gnsstk::GPSCNav2ISC*>(navOut.begin()->get()))
949  != nullptr)
950  {
951  validateISCGPS(testFramework, isc);
952  }
953  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 0, 0, 1);
954  TURETURN();
955 }
956 
957 
960  const gnsstk::GPSCNav2Eph* eph,
961  const gnsstk::CommonTime& expTime)
962 {
963  gnsstk::NavMessageID nmidExpEph(
968  gnsstk::CommonTime toeExp = gnsstk::GPSWeekSecond(2049,351000.0);
969  gnsstk::CommonTime topExp = gnsstk::GPSWeekSecond(2049,321300.0);
970  gnsstk::CommonTime beginExp = gnsstk::GPSWeekSecond(2049,345600.0);
971  gnsstk::CommonTime endExp = gnsstk::GPSWeekSecond(2049,356400.0);
972  // NavData fields
973  TUASSERTE(gnsstk::CommonTime, expTime, eph->timeStamp);
974  TUASSERTE(gnsstk::NavMessageID, nmidExpEph, eph->signal);
975  // OrbitData has no fields
976  // OrbitDataKepler fields
977  TUASSERTE(gnsstk::CommonTime, expTime, eph->xmitTime);
978  TUASSERTE(gnsstk::CommonTime, toeExp, eph->Toe);
979  TUASSERTE(gnsstk::CommonTime, toeExp, eph->Toc); // same value as toe
981  TUASSERTFE(1.52643770E-06, eph->Cuc);
982  TUASSERTFE(1.529045403003692627E-05, eph->Cus);
983  TUASSERTFE(8.210546875E+01, eph->Crc);
984  TUASSERTFE(3.112890625E+01, eph->Crs);
985  TUASSERTFE(3.16649675E-08, eph->Cic);
986  TUASSERTFE(1.86264515E-08, eph->Cis);
987  TUASSERTFE(1.9394493464900481872, eph->M0);
988  TUASSERTFE(4.16410202E-09, eph->dn);
989  TUASSERTFE(-1.14162296E-13, eph->dndot);
990  TUASSERTFE(3.7740299012511968613E-04, eph->ecc);
991  TUASSERTFE(::sqrt(2.656154014453125E+07), eph->Ahalf);
992  TUASSERTFE(2.656154014453125E+07, eph->A);
993  TUASSERTFE(1.1958599090576171875E-02, eph->Adot);
994  TUASSERTFE(-1.0895206889670716599E-01, eph->OMEGA0);
995  TUASSERTFE(9.6039230773739858726E-01, eph->i0);
996  TUASSERTFE(-1.6173077678173934935E+00, eph->w);
997  TUASSERTFE(-7.84259162E-09, eph->OMEGAdot);
998  TUASSERTFE(-6.62527597E-11, eph->idot);
999  TUASSERTFE(1.5038633137010037899E-04, eph->af0);
1000  TUASSERTFE(4.96669372E-12, eph->af1);
1001  TUASSERTFE(0, eph->af2);
1002  TUASSERTE(gnsstk::CommonTime, beginExp, eph->beginFit);
1003  TUASSERTE(gnsstk::CommonTime, endExp, eph->endFit);
1004  // GPSCNavEph fields
1005  TUASSERTE(bool, true, eph->healthL1C);
1006  TUASSERTE(int, -3, eph->uraED);
1007  TUASSERTE(int, -4, eph->uraNED0);
1008  TUASSERTE(unsigned, 2, eph->uraNED1);
1009  TUASSERTE(unsigned, 7, eph->uraNED2);
1010  TUASSERTE(bool, false, eph->integStat);
1011  TUASSERTFE(1830.14453125, eph->deltaA);
1012  TUASSERTFE(3.2554927471973048162e-10, eph->dOMEGAdot);
1013  TUASSERTE(gnsstk::CommonTime, topExp, eph->top);
1014  TUASSERTFE(-8.7893567979335784912e-09, eph->tgd);
1015  TUASSERTFE(-7.85803422E-10, eph->iscL1CP);
1016  TUASSERTFE(-3.49245965E-10, eph->iscL1CD);
1017 }
1018 
1019 
1022  const gnsstk::GPSCNav2TimeOffset* to)
1023 {
1024  gnsstk::NavMessageID nmidExp(
1029  // NavData fields
1031  TUASSERTE(gnsstk::NavMessageID, nmidExp, to->signal);
1032  // TimeOffsetData has no fields
1033  // GPSCNav2TimeOffset
1035  TUASSERTFE(6.5192580223e-09, to->a0);
1036  TUASSERTFE(1.5099033135e-14, to->a1);
1037  TUASSERTFE(0, to->a2);
1038  TUASSERTFE(18, to->deltatLS);
1039  TUASSERTFE(503808, to->tot);
1040  TUASSERTE(unsigned, 2049, to->wnot);
1041  TUASSERTE(unsigned, 1929, to->wnLSF);
1043  gnsstk::GPSWeekSecond(2049,503808).convertToCommonTime(),
1044  to->refTime);
1045  TUASSERTE(unsigned, 7, to->dn);
1046  TUASSERTFE(18, to->deltatLSF);
1047 }
1048 
1049 
1052  const gnsstk::GPSCNav2Health* hea,
1053  const gnsstk::CommonTime& expTime)
1054 {
1055  gnsstk::NavMessageID nmidExp(
1060  // NavData fields
1061  TUASSERTE(gnsstk::CommonTime, expTime, hea->timeStamp);
1063  TUASSERTE(gnsstk::NavMessageID, nmidExp, hea->signal);
1064  // NavHealthData has no fields
1065  // GPSCNav2Health
1066  TUASSERTE(bool, true, hea->health);
1067 }
1068 
1069 
1072  const gnsstk::GPSCNav2Health* hea,
1073  const gnsstk::CommonTime& expTime)
1074 {
1075  // NavData fields
1076  TUASSERTE(gnsstk::CommonTime, expTime, hea->timeStamp);
1077  gnsstk::NavMessageID nmidExpHeaL1(
1082  gnsstk::NavMessageID nmidExpHeaL2(
1087  gnsstk::NavMessageID nmidExpHeaL5(
1092  bool expHea;
1093  switch (hea->signal.nav)
1094  {
1096  TUASSERTE(gnsstk::NavMessageID, nmidExpHeaL1, hea->signal);
1097  expHea = false;
1098  break;
1100  TUASSERTE(gnsstk::NavMessageID, nmidExpHeaL2, hea->signal);
1101  expHea = false;
1102  break;
1104  TUASSERTE(gnsstk::NavMessageID, nmidExpHeaL5, hea->signal);
1105  expHea = true;
1106  break;
1107  default:
1108  TUFAIL("Unexpected nav type: " +
1110  break;
1111  }
1112  // NavHealthData has no fields
1113  // GPSCNav2Health
1114  TUASSERTE(bool, expHea, hea->health);
1115 }
1116 
1117 
1120  const gnsstk::GPSCNav2Iono* iono)
1121 {
1122  gnsstk::NavMessageID nmidExp(
1128  // NavData fields
1130  TUASSERTE(gnsstk::NavMessageID, nmidExp, iono->signal);
1131  TUASSERTFE( 1.024454830e-08, iono->alpha[0]);
1132  TUASSERTFE( 1.490116118e-08, iono->alpha[1]);
1133  TUASSERTFE(-5.960464478e-08, iono->alpha[2]);
1134  TUASSERTFE(-1.192092897e-07, iono->alpha[3]);
1135  TUASSERTFE( 8.806400000e+04, iono->beta[0]);
1136  TUASSERTFE( 3.276800000e+04, iono->beta[1]);
1137  TUASSERTFE(-1.966080000e+05, iono->beta[2]);
1138  TUASSERTFE(-1.966080000e+05, iono->beta[3]);
1139 }
1140 
1141 
1144  const gnsstk::GPSCNav2ISC* isc)
1145 {
1146  gnsstk::NavMessageID nmidExp(
1154  TUASSERTE(gnsstk::NavMessageID, nmidExp, isc->signal);
1155  TUASSERTE(bool, true, isc->haveSF2);
1156  TUASSERTE(bool, true, isc->haveSF3);
1157  TUASSERTFE(-8.78935679793358e-09, isc->isc);
1158  TUASSERTFE(-7.85803422E-10, isc->iscL1CP);
1159  TUASSERTFE(-3.49245965E-10, isc->iscL1CD);
1160  TUASSERTFE(-5.82076609e-10, isc->iscL1CA);
1161  TUASSERTFE(-6.60656951e-09, isc->iscL2C);
1162  TUASSERTFE(-1.17870513e-08, isc->iscL5I5);
1163  TUASSERTFE(-1.17870513e-08, isc->iscL5Q5);
1164 }
1165 
1166 
1169  const gnsstk::GPSCNav2Alm* alm,
1170  const gnsstk::CommonTime& expTime)
1171 {
1172  gnsstk::NavMessageID nmidExpAlm(
1177  gnsstk::CommonTime toeExp = gnsstk::GPSWeekSecond(2049,503808.0);
1178  gnsstk::CommonTime beginExp = expTime;
1181  // NavData fields
1182  TUASSERTE(gnsstk::CommonTime, expTime, alm->timeStamp);
1183  TUASSERTE(gnsstk::NavMessageID, nmidExpAlm, alm->signal);
1184  // OrbitData has no fields
1185  // OrbitDataKepler fields
1186  TUASSERTE(gnsstk::CommonTime, expTime, alm->xmitTime);
1187  TUASSERTE(gnsstk::CommonTime, toeExp, alm->Toe);
1188  TUASSERTE(gnsstk::CommonTime, toeExp, alm->Toc); // same value as toe
1190  TUASSERTFE(0, alm->Cuc);
1191  TUASSERTFE(0, alm->Cus);
1192  TUASSERTFE(0, alm->Crc);
1193  TUASSERTFE(0, alm->Crs);
1194  TUASSERTFE(0, alm->Cic);
1195  TUASSERTFE(0, alm->Cis);
1196  TUASSERTFE(1.0574880056486639368E-01, alm->M0);
1197  TUASSERTFE(0, alm->dn);
1198  TUASSERTFE(0, alm->dndot);
1199  TUASSERTFE(1.89056396484375E-02, alm->ecc);
1200  TUASSERTFE(5153.625, alm->Ahalf);
1201  TUASSERTFE(26559850.640625, alm->A);
1202  TUASSERTFE(0, alm->Adot);
1203  TUASSERTFE(-2.2980949678511763956E+00, alm->OMEGA0);
1204  TUASSERTFE(0.95417439958456595761, alm->i0);
1205  TUASSERTFE(-1.7481628553941737092E+00, alm->w);
1206  TUASSERTFE(-8.0460494360E-09, alm->OMEGAdot);
1207  TUASSERTFE(0, alm->idot);
1208  TUASSERTFE(-1.926422119140625E-04, alm->af0);
1209  TUASSERTFE(-7.2759576142E-12, alm->af1);
1210  TUASSERTFE(0, alm->af2);
1211  TUASSERTE(gnsstk::CommonTime, beginExp, alm->beginFit);
1212  TUASSERTE(gnsstk::CommonTime, endExp, alm->endFit);
1213  // GPSCNavAlm fields
1214  TUASSERTE(bool, false, alm->healthL1);
1215  TUASSERTE(bool, false, alm->healthL2);
1216  TUASSERTE(bool, true, alm->healthL5);
1217  TUASSERTFE(1.1696603507628014137E-02, alm->deltai);
1218  TUASSERTE(unsigned, 2049, alm->wna);
1219  TUASSERTFE(503808, alm->toa);
1220 }
1221 
1222 
1223 int main()
1224 {
1225  PNBGPSCNav2DataFactory_T testClass;
1226  unsigned errorTotal = 0;
1227 
1228  errorTotal += testClass.addDataAllTest();
1229  errorTotal += testClass.addDataAlmanacTest();
1230  errorTotal += testClass.addDataEphemerisTest();
1231  errorTotal += testClass.addDataHealthTest();
1232  errorTotal += testClass.addDataTimeTest();
1233  errorTotal += testClass.addDataEphHealthTest();
1234  errorTotal += testClass.addDataAlmHealthTest();
1235  errorTotal += testClass.processEphTest();
1236  errorTotal += testClass.processAlmOrbTest();
1237  errorTotal += testClass.processUTCIonoTest();
1238  errorTotal += testClass.processGGTOEOPTest();
1239  errorTotal += testClass.processEphQZSSTest();
1240  errorTotal += testClass.processAlmOrbQZSSTest();
1241  errorTotal += testClass.processUTCIonoQZSSTest();
1242  errorTotal += testClass.processGGTOEOPQZSSTest();
1243  errorTotal += testClass.processISCTest();
1244 
1245  std::cout << "Total Failures for " << __FILE__ << ": " << errorTotal
1246  << std::endl;
1247 
1248  return errorTotal;
1249 }
GPSCNav2Iono.hpp
gnsstk::NavSignalID::nav
NavType nav
Navigation message structure of this signal.
Definition: NavSignalID.hpp:96
gnsstk::NavMessageType::ISC
@ ISC
Inter-signal corrections.
GPSCNav2Eph.hpp
gnsstk::OrbitDataKepler::idot
double idot
Rate of inclination angle (rad/sec)
Definition: OrbitDataKepler.hpp:193
sf3p1CNAV2QZSSct
gnsstk::CommonTime sf3p1CNAV2QZSSct
Definition: CNav2TestDataDecl.hpp:49
gnsstk::NavMessageID
Class used to identify/categorize navigation message data.
Definition: NavMessageID.hpp:52
sf123p2CNAV2GPS
gnsstk::PackedNavBitsPtr sf123p2CNAV2GPS
Definition: CNav2TestDataDecl.hpp:45
gnsstk::StdNavTimeOffset::deltatLSF
double deltatLSF
Current or future leap second count (UTC only).
Definition: StdNavTimeOffset.hpp:135
PNBGPSCNav2DataFactory_T::processISCTest
unsigned processISCTest()
Definition: PNBGPSCNav2DataFactory_T.cpp:866
GPSCNav2ISC.hpp
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::TrackingCode::L1CD
@ L1CD
Modernized GPS L1C civil code tracking (data)
PNBGPSCNav2DataFactory_T::processAlmOrbTest
unsigned processAlmOrbTest()
Definition: PNBGPSCNav2DataFactory_T.cpp:450
gnsstk::GPSCNav2Alm::healthL2
bool healthL2
L2 signal health.
Definition: GPSCNav2Alm.hpp:84
gnsstk::CarrierBand::G1
@ G1
GLONASS G1.
TUCATCH
#define TUCATCH(STATEMENT)
Definition: TestUtil.hpp:193
gnsstk::GPSCNav2ISC::iscL2C
double iscL2C
Intersignal corrections for L2C.
Definition: GPSCNav2ISC.hpp:111
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::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::OrbitDataKepler::ecc
double ecc
Eccentricity.
Definition: OrbitDataKepler.hpp:185
gnsstk::StdNavTimeOffset::src
TimeSystem src
Source time system.
Definition: StdNavTimeOffset.hpp:120
sf2CNAV2QZSSct
gnsstk::CommonTime sf2CNAV2QZSSct
Definition: CNav2TestDataDecl.hpp:49
gnsstk::GPSCNav2ISC::iscL5Q5
double iscL5Q5
Intersignal corrections for L5 quadrature.
Definition: GPSCNav2ISC.hpp:113
gnsstk::PNBGPSCNav2DataFactory::processAlmOrb
bool processAlmOrb(const PackedNavBitsPtr &navIn, NavDataPtrList &navOut, unsigned offset=0)
Definition: PNBGPSCNav2DataFactory.cpp:253
sf123p1CNAV2GPS
gnsstk::PackedNavBitsPtr sf123p1CNAV2GPS
Definition: CNav2TestDataDecl.hpp:45
gnsstk::PNBGPSCNav2DataFactory::processISC
bool processISC(const PackedNavBitsPtr &navIn, NavDataPtrList &navOut)
Definition: PNBGPSCNav2DataFactory.cpp:499
TUASSERTE
#define TUASSERTE(TYPE, EXP, GOT)
Definition: TestUtil.hpp:81
gnsstk::NavMessageID::messageType
NavMessageType messageType
Definition: NavMessageID.hpp:97
TUFAIL
#define TUFAIL(MSG)
Definition: TestUtil.hpp:228
sf123p4CNAV2GPS
gnsstk::PackedNavBitsPtr sf123p4CNAV2GPS
Definition: CNav2TestDataDecl.hpp:45
PNBGPSCNav2DataFactory_T::addDataTimeTest
unsigned addDataTimeTest()
Test addData with time offset data selected only.
Definition: PNBGPSCNav2DataFactory_T.cpp:344
gnsstk::NavSatelliteID
Definition: NavSatelliteID.hpp:57
PNBGPSCNav2DataFactory_T::validateTOGPS
void validateTOGPS(gnsstk::TestUtil &testFramework, const gnsstk::GPSCNav2TimeOffset *to)
Definition: PNBGPSCNav2DataFactory_T.cpp:1021
gnsstk::OrbitDataKepler::OMEGAdot
double OMEGAdot
Rate of Rt ascension (rad/sec)
Definition: OrbitDataKepler.hpp:192
PNBGPSCNav2DataFactory_T::addDataEphemerisTest
unsigned addDataEphemerisTest()
Test addData with ephemeris selected only.
Definition: PNBGPSCNav2DataFactory_T.cpp:272
gnsstk::GPSCNav2Eph::uraNED0
int8_t uraNED0
non-elevation dependent URA from clock message.
Definition: GPSCNav2Eph.hpp:88
gnsstk::StdNavTimeOffset::tgt
TimeSystem tgt
Target time system.
Definition: StdNavTimeOffset.hpp:121
sf3p2fakeCNAV2GPSct
gnsstk::CommonTime sf3p2fakeCNAV2GPSct
Definition: CNav2TestDataDecl.hpp:44
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::GPSCNav2Alm::healthL5
bool healthL5
L5 signal health.
Definition: GPSCNav2Alm.hpp:85
sf2CNAV2GPS2
gnsstk::PackedNavBitsPtr sf2CNAV2GPS2
Definition: CNav2TestDataDecl.hpp:45
gnsstk::StringUtils::asString
std::string asString(IonexStoreStrategy e)
Convert a IonexStoreStrategy to a whitespace-free string name.
Definition: IonexStoreStrategy.cpp:46
sf123p1CNAV2GPSct
gnsstk::CommonTime sf123p1CNAV2GPSct
Definition: CNav2TestDataDecl.hpp:44
gnsstk::OrbitDataKepler::Cuc
double Cuc
Cosine latitude (rad)
Definition: OrbitDataKepler.hpp:175
PNBGPSCNav2DataFactory_T::validateISCGPS
void validateISCGPS(gnsstk::TestUtil &testFramework, const gnsstk::GPSCNav2ISC *isc)
Definition: PNBGPSCNav2DataFactory_T.cpp:1143
gnsstk::CommonTime::setTimeSystem
CommonTime & setTimeSystem(TimeSystem timeSystem)
Definition: CommonTime.hpp:195
gnsstk::StdNavTimeOffset::deltatLS
double deltatLS
Current or past leap second count (UTC only).
Definition: StdNavTimeOffset.hpp:125
gnsstk::NavType::GloCivilF
@ GloCivilF
PNBGPSCNav2DataFactory_T::processGGTOEOPTest
unsigned processGGTOEOPTest()
Definition: PNBGPSCNav2DataFactory_T.cpp:504
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
PNBGPSCNav2DataFactory_T::addDataEphHealthTest
unsigned addDataEphHealthTest()
One additional combo test.
Definition: PNBGPSCNav2DataFactory_T.cpp:368
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
sf3p2fakeCNAV2GPS
gnsstk::PackedNavBitsPtr sf3p2fakeCNAV2GPS
Definition: CNav2TestDataDecl.hpp:45
gnsstk::NavData::signal
NavMessageID signal
Source signal identification for this navigation message data.
Definition: NavData.hpp:175
PNBGPSCNav2DataFactory_T::addDataAlmanacTest
unsigned addDataAlmanacTest()
Test addData with almanac selected only.
Definition: PNBGPSCNav2DataFactory_T.cpp:296
GPSCNav2Alm.hpp
gnsstk::StdNavTimeOffset::wnLSF
unsigned wnLSF
Leap second reference week number (UTC only).
Definition: StdNavTimeOffset.hpp:133
PNBGPSCNav2DataFactory_T::validateEphGPS
void validateEphGPS(gnsstk::TestUtil &testFramework, const gnsstk::GPSCNav2Eph *eph, const gnsstk::CommonTime &expTime)
Definition: PNBGPSCNav2DataFactory_T.cpp:959
gnsstk
For Sinex::InputHistory.
Definition: BasicFramework.cpp: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
sf3p4CNAV2GPS
gnsstk::PackedNavBitsPtr sf3p4CNAV2GPS
Definition: CNav2TestDataDecl.hpp:45
gnsstk::CarrierBand::L2
@ L2
GPS L2, QZSS L2.
gnsstk::GPSCNav2Alm
Class containing data elements unique to GPS CNav2 midi almanac.
Definition: GPSCNav2Alm.hpp:51
gnsstk::PNBGPSCNav2DataFactory
Definition: PNBGPSCNav2DataFactory.hpp:60
gnsstk::GPSCNav2Eph::top
CommonTime top
Time of prediction.
Definition: GPSCNav2Eph.hpp:94
gnsstk::GPSWeekSecond
Definition: GPSWeekSecond.hpp:56
GPSCNav2TimeOffset.hpp
PNBGPSCNav2DataFactory_T::addDataAlmHealthTest
unsigned addDataAlmHealthTest()
Another combo test that makes sure alm health is processed correctly.
Definition: PNBGPSCNav2DataFactory_T.cpp:393
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
CNav2TestDataDecl.hpp
gnsstk::NavData::timeStamp
CommonTime timeStamp
Definition: NavData.hpp:173
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
sf3p2CNAV2QZSSct
gnsstk::CommonTime sf3p2CNAV2QZSSct
Definition: CNav2TestDataDecl.hpp:49
gnsstk::OrbitDataKepler::M0
double M0
Mean anomaly (rad)
Definition: OrbitDataKepler.hpp:182
gnsstk::PNBGPSCNav2DataFactory::processEph
bool processEph(const PackedNavBitsPtr &navIn, NavDataPtrList &navOut, unsigned offset=0)
Definition: PNBGPSCNav2DataFactory.cpp:116
gnsstk::ObservationType::NavMsg
@ NavMsg
Navigation Message data.
gnsstk::SatelliteSystem::GPS
@ GPS
PNBGPSCNav2DataFactory_T::addDataHealthTest
unsigned addDataHealthTest()
Test addData with health data selected only.
Definition: PNBGPSCNav2DataFactory_T.cpp:320
PNBGPSCNav2DataFactory_T::validateAlmHealthGPS
void validateAlmHealthGPS(gnsstk::TestUtil &testFramework, const gnsstk::GPSCNav2Health *hea, const gnsstk::CommonTime &expTime)
Definition: PNBGPSCNav2DataFactory_T.cpp:1071
gnsstk::CommonTime::END_OF_TIME
static const GNSSTK_EXPORT CommonTime END_OF_TIME
latest representable CommonTime
Definition: CommonTime.hpp:104
sf123p4CNAV2GPSct
gnsstk::CommonTime sf123p4CNAV2GPSct
Definition: CNav2TestDataDecl.hpp:44
sf3p4CNAV2GPSct
gnsstk::CommonTime sf3p4CNAV2GPSct
Definition: CNav2TestDataDecl.hpp:44
main
int main()
Definition: PNBGPSCNav2DataFactory_T.cpp:1223
FactoryCounter
Definition: FactoryCounter.hpp:75
gnsstk::GPSCNav2Eph::uraNED2
uint8_t uraNED2
non-elevation dependent URA from clock message.
Definition: GPSCNav2Eph.hpp:90
TestUtil.hpp
gnsstk::GPSCNav2ISC::haveSF3
bool haveSF3
True if iscL1CA,iscL2C,iscL5I5,iscL5Q5 are set.
Definition: GPSCNav2ISC.hpp:105
gnsstk::SVHealth::Healthy
@ Healthy
Satellite is in a healthy and useable state.
gnsstk::GPSCNav2ISC
Class containing data elements unique to GPS CNAV2 ISC data.
Definition: GPSCNav2ISC.hpp:50
sf3p2CNAV2QZSS
gnsstk::PackedNavBitsPtr sf3p2CNAV2QZSS
Definition: CNav2TestDataDecl.hpp:50
gnsstk::OrbitDataKepler::dndot
double dndot
Rate of correction to mean motion (rad/sec/sec)
Definition: OrbitDataKepler.hpp:184
PNBGPSCNav2DataFactory_T::processAlmOrbQZSSTest
unsigned processAlmOrbQZSSTest()
Definition: PNBGPSCNav2DataFactory_T.cpp:645
PNBGPSCNav2DataFactory_T::validateEphHealthGPS
void validateEphHealthGPS(gnsstk::TestUtil &testFramework, const gnsstk::GPSCNav2Health *hea, const gnsstk::CommonTime &expTime)
Definition: PNBGPSCNav2DataFactory_T.cpp:1051
gnsstk::OrbitDataKepler::Cus
double Cus
Sine latitude (rad)
Definition: OrbitDataKepler.hpp:176
gnsstk::GPSCNav2Eph::healthL1C
bool healthL1C
L1C signal health.
Definition: GPSCNav2Eph.hpp:86
gnsstk::StdNavTimeOffset::a2
double a2
Drift rate coefficient of source time scale.
Definition: StdNavTimeOffset.hpp:124
TURETURN
#define TURETURN()
Definition: TestUtil.hpp:232
gnsstk::TimeSystem::QZS
@ QZS
QZSS system Time.
sf3p4CNAV2QZSSct
gnsstk::CommonTime sf3p4CNAV2QZSSct
Definition: CNav2TestDataDecl.hpp:49
gnsstk::ObsID
Definition: ObsID.hpp:82
sf123p2CNAV2GPSct
gnsstk::CommonTime sf123p2CNAV2GPSct
Definition: CNav2TestDataDecl.hpp:44
gnsstk::GPSCNav2Eph::dOMEGAdot
double dOMEGAdot
Rate of right ascension relative to -2.6e-9*pi.
Definition: GPSCNav2Eph.hpp:93
sf2CNAV2GPS2ct
gnsstk::CommonTime sf2CNAV2GPS2ct
Definition: CNav2TestDataDecl.hpp:44
gnsstk::NavType::GPSCNAVL2
@ GPSCNAVL2
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::GPSCNav2Eph::uraED
int8_t uraED
5-bit URA index from message type 10.
Definition: GPSCNav2Eph.hpp:87
gnsstk::NavSatelliteID::sat
SatID sat
ID of satellite to which the nav data applies.
Definition: NavSatelliteID.hpp:169
gnsstk::GPSCNav2Eph
Class containing data elements unique to GPS CNav2 ephemerides.
Definition: GPSCNav2Eph.hpp:51
gnsstk::PNBGPSCNav2DataFactory::resetState
void resetState() override
Reset the state of the data accumulator (for ISCs).
Definition: PNBGPSCNav2DataFactory.hpp:126
gnsstk::GPSCNav2Eph::iscL1CP
double iscL1CP
Inter-signal correction for L1CP.
Definition: GPSCNav2Eph.hpp:96
gnsstk::CommonTime
Definition: CommonTime.hpp:84
gnsstk::GPSCNav2ISC::xmit3
CommonTime xmit3
Transmit time of subframe 3.
Definition: GPSCNav2ISC.hpp:107
gnsstk::OrbitDataKepler::Toc
CommonTime Toc
Clock epoch.
Definition: OrbitDataKepler.hpp:172
gnsstk::TimeSystem
TimeSystem
Definition of various time systems.
Definition: TimeSystem.hpp:51
gnsstk::GPSCNav2Eph::uraNED1
uint8_t uraNED1
non-elevation dependent URA from clock message.
Definition: GPSCNav2Eph.hpp:89
gnsstk::GPSCNav2ISC::haveSF2
bool haveSF2
True if iscL1CP and iscL1CD are set.
Definition: GPSCNav2ISC.hpp:104
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.
gnsstk::GPSCNav2Eph::tgd
double tgd
Ionospheric group delay in seconds. NaN=invalid.
Definition: GPSCNav2Eph.hpp:95
PNBGPSCNav2DataFactory_T::processUTCIonoQZSSTest
unsigned processUTCIonoQZSSTest()
Definition: PNBGPSCNav2DataFactory_T.cpp:756
gnsstk::KlobucharIonoNavData::beta
double beta[4]
beta terms of Klobuchar model, using semi-circles.
Definition: KlobucharIonoNavData.hpp:85
TUDEF
#define TUDEF(CLASS, METHOD)
Definition: TestUtil.hpp:56
sf3p1CNAV2QZSS
gnsstk::PackedNavBitsPtr sf3p1CNAV2QZSS
Definition: CNav2TestDataDecl.hpp:50
PNBGPSCNav2DataFactory_T::validateIonoGPS
void validateIonoGPS(gnsstk::TestUtil &testFramework, const gnsstk::GPSCNav2Iono *iono)
Definition: PNBGPSCNav2DataFactory_T.cpp:1119
sf2CNAV2QZSS
gnsstk::PackedNavBitsPtr sf2CNAV2QZSS
Definition: CNav2TestDataDecl.hpp:50
gnsstk::GPSCNav2Alm::toa
double toa
Convenience storage of unqualified toa.
Definition: GPSCNav2Alm.hpp:88
gnsstk::TimeSystem::GLO
@ GLO
GLONASS system time (aka UTC(SU))
PNBGPSCNav2DataFactory_T
Definition: PNBGPSCNav2DataFactory_T.cpp:66
gnsstk::TimeSystem::UTC
@ UTC
Coordinated Universal Time (e.g., from NTP)
gnsstk::OrbitDataKepler::i0
double i0
Inclination (rad)
Definition: OrbitDataKepler.hpp:190
gnsstk::PNBGPSCNav2DataFactory::addData
bool addData(const PackedNavBitsPtr &navIn, NavDataPtrList &navOut, double cadence=-1) override
Definition: PNBGPSCNav2DataFactory.cpp:67
std::operator<<
std::ostream & operator<<(std::ostream &s, gnsstk::StringUtils::FFLead v)
Definition: FormattedDouble_T.cpp:44
gnsstk::GPSCNav2TimeOffset
Definition: GPSCNav2TimeOffset.hpp:62
gnsstk::OrbitDataKepler::Cic
double Cic
Cosine inclination (rad)
Definition: OrbitDataKepler.hpp:179
gnsstk::NavMessageType::TimeOffset
@ TimeOffset
Message containing information about time system offsets.
gnsstk::GPSCNav2Iono
Definition: GPSCNav2Iono.hpp:52
CNav2TestDataDef.hpp
gnsstk::GPSCNav2ISC::iscL1CA
double iscL1CA
Intersignal corrections for L1 C/A.
Definition: GPSCNav2ISC.hpp:110
gnsstk::OrbitDataKepler::Crc
double Crc
Cosine radius (m)
Definition: OrbitDataKepler.hpp:177
sf3p1CNAV2GPSct
gnsstk::CommonTime sf3p1CNAV2GPSct
Definition: CNav2TestDataDecl.hpp:44
gnsstk::TrackingCode::L2CM
@ L2CM
Modernized GPS L2 civil M code.
gnsstk::GPSCNav2Eph::iscL1CD
double iscL1CD
Inter-signal correction for L1CD.
Definition: GPSCNav2Eph.hpp:97
gnsstk::TimeSystem::GPS
@ GPS
GPS system time.
std
Definition: Angle.hpp:142
gnsstk::PNBGPSCNav2DataFactory::processGGTOEOP
bool processGGTOEOP(const PackedNavBitsPtr &navIn, NavDataPtrList &navOut, unsigned offset=0)
Definition: PNBGPSCNav2DataFactory.cpp:443
gnsstk::OrbitDataKepler::af0
double af0
SV clock error (sec)
Definition: OrbitDataKepler.hpp:195
PNBGPSCNav2DataFactory_T::processEphQZSSTest
unsigned processEphQZSSTest()
Definition: PNBGPSCNav2DataFactory_T.cpp:550
gnsstk::GPSCNav2ISC::iscL1CP
double iscL1CP
Intersignal corrections for L1 CP.
Definition: GPSCNav2ISC.hpp:108
gnsstk::PNBGPSCNav2DataFactory::processUTCIono
bool processUTCIono(const PackedNavBitsPtr &navIn, NavDataPtrList &navOut, unsigned offset=0)
Definition: PNBGPSCNav2DataFactory.cpp:373
gnsstk::NavMessageType::Ephemeris
@ Ephemeris
Precision orbits for the transmitting SV.
FactoryCounter.hpp
gnsstk::KlobucharIonoNavData::alpha
double alpha[4]
alpha terms of Klobuchar model, using semi-circles.
Definition: KlobucharIonoNavData.hpp:84
sf3p1CNAV2GPS
gnsstk::PackedNavBitsPtr sf3p1CNAV2GPS
Definition: CNav2TestDataDecl.hpp:45
gnsstk::GPSCNav2Health
Wrapper for the 1-bit health status in GPS CNav2 subframe 2 or 3.
Definition: GPSCNav2Health.hpp:50
gnsstk::GPSCNav2Eph::integStat
bool integStat
Integrity status flag.
Definition: GPSCNav2Eph.hpp:91
sf3p4CNAV2QZSS
gnsstk::PackedNavBitsPtr sf3p4CNAV2QZSS
Definition: CNav2TestDataDecl.hpp:50
PNBGPSCNav2DataFactory_T::processGGTOEOPQZSSTest
unsigned processGGTOEOPQZSSTest()
Definition: PNBGPSCNav2DataFactory_T.cpp:818
TUASSERTFE
#define TUASSERTFE(EXP, GOT)
Definition: TestUtil.hpp:103
gnsstk::GPSCNav2Health::health
bool health
1-bit health.
Definition: GPSCNav2Health.hpp:86
gnsstk::GPSCNav2ISC::iscL1CD
double iscL1CD
Intersignal corrections for L1 CD.
Definition: GPSCNav2ISC.hpp:109
gnsstk::SatelliteSystem::Glonass
@ Glonass
gnsstk::StdNavTimeOffset::a0
double a0
Bias coefficient of source time scale.
Definition: StdNavTimeOffset.hpp:122
PNBGPSCNav2DataFactory.hpp
gnsstk::GPSCNav2Alm::wna
unsigned wna
Reference week for toa.
Definition: GPSCNav2Alm.hpp:87
PNBGPSCNav2DataFactory_T::PNBGPSCNav2DataFactory_T
PNBGPSCNav2DataFactory_T()
Definition: PNBGPSCNav2DataFactory_T.cpp:118
sf2CNAV2GPSct
gnsstk::CommonTime sf2CNAV2GPSct
Definition: CNav2TestDataDecl.hpp:44
gnsstk::GPSCNav2Alm::deltai
double deltai
Inclination in rad relative to 0.3*pi rad.
Definition: GPSCNav2Alm.hpp:86
gnsstk::NavID
Definition: NavID.hpp:61
PNBGPSCNav2DataFactory_T::processUTCIonoTest
unsigned processUTCIonoTest()
Definition: PNBGPSCNav2DataFactory_T.cpp:477
gnsstk::NavType
NavType
Supported navigation types.
Definition: NavType.hpp:58
gnsstk::GPSCNav2ISC::iscL5I5
double iscL5I5
Intersignal corrections for L5 in-phase.
Definition: GPSCNav2ISC.hpp:112
gnsstk::OrbitDataKepler::health
SVHealth health
SV health status.
Definition: OrbitDataKepler.hpp:173
PNBGPSCNav2DataFactory_T::validateAlmGPS
void validateAlmGPS(gnsstk::TestUtil &testFramework, const gnsstk::GPSCNav2Alm *alm, const gnsstk::CommonTime &expTime)
Definition: PNBGPSCNav2DataFactory_T.cpp:1168
sf3p2CNAV2GPS
gnsstk::PackedNavBitsPtr sf3p2CNAV2GPS
Definition: CNav2TestDataDecl.hpp:45
gnsstk::SVHealth::Unhealthy
@ Unhealthy
Satellite is unhealthy and should not be used.
gnsstk::OrbitDataKepler::OMEGA0
double OMEGA0
Longitude of ascending node at weekly epoch (rad)
Definition: OrbitDataKepler.hpp:189
GPSCNav2Health.hpp
gnsstk::SatelliteSystem::QZSS
@ QZSS
gnsstk::TestUtil
Definition: TestUtil.hpp:265
gnsstk::StdNavTimeOffset::refTime
CommonTime refTime
Reference time for computation.
Definition: StdNavTimeOffset.hpp:126
gnsstk::GPSCNav2Alm::healthL1
bool healthL1
L1 signal health.
Definition: GPSCNav2Alm.hpp:83
gnsstk::OrbitDataKepler::af1
double af1
SV clock drift (sec/sec)
Definition: OrbitDataKepler.hpp:196
gnsstk::NavType::GPSCNAVL5
@ GPSCNAVL5
sf2CNAV2GPS
gnsstk::PackedNavBitsPtr sf2CNAV2GPS
Definition: CNav2TestDataDecl.hpp:45
TimeString.hpp
gnsstk::GPSCNav2ISC::xmit2
CommonTime xmit2
Transmit time of subframe 2.
Definition: GPSCNav2ISC.hpp:106
PNBGPSCNav2DataFactory_T::addDataAllTest
unsigned addDataAllTest()
Definition: PNBGPSCNav2DataFactory_T.cpp:125
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::NavType::GPSCNAV2
@ GPSCNAV2
gnsstk::OrbitDataKepler::dn
double dn
Correction to mean motion (rad/sec)
Definition: OrbitDataKepler.hpp:183
gnsstk::CarrierBand::L5
@ L5
GPS L5, Galileo E5a, SBAS L5, QZSS L5, BeiDou B2a, NavIC L5.
gnsstk::GPSCNav2Eph::deltaA
double deltaA
Semi-major axis relative to reference (Aref).
Definition: GPSCNav2Eph.hpp:92
PNBGPSCNav2DataFactory_T::processEphTest
unsigned processEphTest()
Definition: PNBGPSCNav2DataFactory_T.cpp:418


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