PNBGalINavDataFactory_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 "GalINavTimeOffset.hpp"
43 #include "GalINavHealth.hpp"
44 #include "GalINavEph.hpp"
45 #include "GalINavAlm.hpp"
46 #include "GalINavIono.hpp"
47 #include "GalINavISC.hpp"
48 #include "GALWeekSecond.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  std::ostream& operator<<(std::ostream& s, GalHealthStatus e)
64  {
65  s << StringUtils::asString(e);
66  return s;
67  }
68  std::ostream& operator<<(std::ostream& s, GalDataValid e)
69  {
70  s << StringUtils::asString(e);
71  return s;
72  }
73 }
74 
75 
77 {
78 public:
80 
81  unsigned addDataAllTest();
83  unsigned addDataEphemerisTest();
85  unsigned addDataAlmanacTest();
87  unsigned addDataHealthTest();
89  unsigned addDataTimeTest();
91  unsigned addDataEphHealthTest();
93  unsigned addDataAlmHealthTest();
95  unsigned processEphTest();
97  unsigned processAlmTest();
99  unsigned processOffsetTest();
100  // week rollover test for decoding ephemerides
101  unsigned processEphWRTest();
102 
103 #include "GalINavTestDataDecl.hpp"
104 };
105 
108 {
109 #include "GalINavTestDataDef.hpp"
110 }
111 
112 
115 {
116  TUDEF("PNBGalINavDataFactory", "addData");
117  GalFactoryCounter fc(testFramework);
123  gnsstk::PackedNavBitsPtr nonGPS =
124  std::make_shared<gnsstk::PackedNavBits>(gloSid,gloid,gloNav,"XX",
126  gnsstk::NavDataPtrList navOut;
127  // should refuse non-GPS data
128  TUASSERTE(bool, false, uut.addData(nonGPS, navOut));
129  // The rest is checking that we're processing the good data
130  // appropriately, but I'm not bothering to check the detailed
131  // contents as that is assumed to be tested in the process*
132  // tests.
133  // Add nav pages in time order
134  TUASSERTE(bool, true, uut.addData(ephINAVGalWT2, navOut));
135  fc.validateResults(navOut, __LINE__);
136  TUASSERTE(bool, true, uut.addData(ephINAVGalWT4, navOut));
137  fc.validateResults(navOut, __LINE__);
138  TUASSERTE(bool, true, uut.addData(navINAVGalWT6, navOut));
139  fc.validateResults(navOut, __LINE__, 1, 0, 0, 1);
140  TUASSERTE(bool, true, uut.addData(navINAVGalWT7, navOut));
141  fc.validateResults(navOut, __LINE__);
142  TUASSERTE(bool, true, uut.addData(navINAVGalWT8, navOut));
143  fc.validateResults(navOut, __LINE__);
144  TUASSERTE(bool, true, uut.addData(ephINAVGalWT1, navOut));
145  fc.validateResults(navOut, __LINE__);
146  TUASSERTE(bool, true, uut.addData(ephINAVGalWT3, navOut));
147  fc.validateResults(navOut, __LINE__);
148  TUASSERTE(bool, true, uut.addData(ephINAVGalWT5, navOut));
149  fc.validateResults(navOut, __LINE__, 5, 0, 1, 0, 2, 1, 1);
150  TUASSERTE(bool, true, uut.addData(navINAVGalWT9, navOut));
151  fc.validateResults(navOut, __LINE__);
152  TUASSERTE(bool, true, uut.addData(navINAVGalWT10, navOut));
153  // 2 alms/4 hea instead of 3/6 because one of the almanacs is empty
154  fc.validateResults(navOut, __LINE__, 7, 2, 0, 1, 4);
155  TURETURN();
156 }
157 
158 
161 {
162  TUDEF("PNBGalINavDataFactory", "addData");
163  GalFactoryCounter fc(testFramework);
165  gnsstk::NavDataPtrList navOut;
166  TUCATCH(uut.setTypeFilter({gnsstk::NavMessageType::Ephemeris}));
167  // Add nav pages in time order
168  TUASSERTE(bool, true, uut.addData(ephINAVGalWT2, navOut));
169  fc.validateResults(navOut, __LINE__);
170  TUASSERTE(bool, true, uut.addData(ephINAVGalWT4, navOut));
171  fc.validateResults(navOut, __LINE__);
172  TUASSERTE(bool, true, uut.addData(navINAVGalWT6, navOut));
173  fc.validateResults(navOut, __LINE__);
174  TUASSERTE(bool, true, uut.addData(navINAVGalWT7, navOut));
175  fc.validateResults(navOut, __LINE__);
176  TUASSERTE(bool, true, uut.addData(navINAVGalWT8, navOut));
177  fc.validateResults(navOut, __LINE__);
178  TUASSERTE(bool, true, uut.addData(ephINAVGalWT1, navOut));
179  fc.validateResults(navOut, __LINE__);
180  TUASSERTE(bool, true, uut.addData(ephINAVGalWT3, navOut));
181  fc.validateResults(navOut, __LINE__);
182  TUASSERTE(bool, true, uut.addData(ephINAVGalWT5, navOut));
183  fc.validateResults(navOut, __LINE__, 1, 0, 1);
184  TUASSERTE(bool, true, uut.addData(navINAVGalWT9, navOut));
185  fc.validateResults(navOut, __LINE__);
186  TUASSERTE(bool, true, uut.addData(navINAVGalWT10, navOut));
187  fc.validateResults(navOut, __LINE__);
188  TURETURN();
189 }
190 
191 
194 {
195  TUDEF("PNBGalINavDataFactory", "addData");
196  GalFactoryCounter fc(testFramework);
198  gnsstk::NavDataPtrList navOut;
199  TUCATCH(uut.setTypeFilter({gnsstk::NavMessageType::Almanac}));
200  // Add nav pages in time order
201  TUASSERTE(bool, true, uut.addData(ephINAVGalWT2, navOut));
202  fc.validateResults(navOut, __LINE__);
203  TUASSERTE(bool, true, uut.addData(ephINAVGalWT4, navOut));
204  fc.validateResults(navOut, __LINE__);
205  TUASSERTE(bool, true, uut.addData(navINAVGalWT6, navOut));
206  fc.validateResults(navOut, __LINE__);
207  TUASSERTE(bool, true, uut.addData(navINAVGalWT7, navOut));
208  fc.validateResults(navOut, __LINE__);
209  TUASSERTE(bool, true, uut.addData(navINAVGalWT8, navOut));
210  fc.validateResults(navOut, __LINE__);
211  TUASSERTE(bool, true, uut.addData(ephINAVGalWT1, navOut));
212  fc.validateResults(navOut, __LINE__);
213  TUASSERTE(bool, true, uut.addData(ephINAVGalWT3, navOut));
214  fc.validateResults(navOut, __LINE__);
215  TUASSERTE(bool, true, uut.addData(ephINAVGalWT5, navOut));
216  fc.validateResults(navOut, __LINE__);
217  TUASSERTE(bool, true, uut.addData(navINAVGalWT9, navOut));
218  fc.validateResults(navOut, __LINE__);
219  TUASSERTE(bool, true, uut.addData(navINAVGalWT10, navOut));
220  // 2 alms instead of 3 because one of the almanacs is empty
221  fc.validateResults(navOut, __LINE__, 2, 2);
222  TURETURN();
223 }
224 
225 
228 {
229  TUDEF("PNBGalINavDataFactory", "addData");
230  GalFactoryCounter fc(testFramework);
232  gnsstk::NavDataPtrList navOut;
233  TUCATCH(uut.setTypeFilter({gnsstk::NavMessageType::Health}));
234  // Add nav pages in time order
235  TUASSERTE(bool, true, uut.addData(ephINAVGalWT2, navOut));
236  fc.validateResults(navOut, __LINE__);
237  TUASSERTE(bool, true, uut.addData(ephINAVGalWT4, navOut));
238  fc.validateResults(navOut, __LINE__);
239  TUASSERTE(bool, true, uut.addData(navINAVGalWT6, navOut));
240  fc.validateResults(navOut, __LINE__);
241  TUASSERTE(bool, true, uut.addData(navINAVGalWT7, navOut));
242  fc.validateResults(navOut, __LINE__);
243  TUASSERTE(bool, true, uut.addData(navINAVGalWT8, navOut));
244  fc.validateResults(navOut, __LINE__);
245  TUASSERTE(bool, true, uut.addData(ephINAVGalWT1, navOut));
246  fc.validateResults(navOut, __LINE__);
247  TUASSERTE(bool, true, uut.addData(ephINAVGalWT3, navOut));
248  fc.validateResults(navOut, __LINE__);
249  TUASSERTE(bool, true, uut.addData(ephINAVGalWT5, navOut));
250  fc.validateResults(navOut, __LINE__, 2, 0, 0, 0, 2);
251  TUASSERTE(bool, true, uut.addData(navINAVGalWT9, navOut));
252  fc.validateResults(navOut, __LINE__);
253  TUASSERTE(bool, true, uut.addData(navINAVGalWT10, navOut));
254  // 4 hea instead of 6 because one of the almanacs is empty
255  fc.validateResults(navOut, __LINE__, 4, 0, 0, 0, 4);
256  TURETURN();
257 }
258 
259 
262 {
263  TUDEF("PNBGalINavDataFactory", "addData");
264  GalFactoryCounter fc(testFramework);
266  gnsstk::NavDataPtrList navOut;
267  TUCATCH(uut.setTypeFilter({gnsstk::NavMessageType::TimeOffset}));
268  // Add nav pages in time order
269  TUASSERTE(bool, true, uut.addData(ephINAVGalWT2, navOut));
270  fc.validateResults(navOut, __LINE__);
271  TUASSERTE(bool, true, uut.addData(ephINAVGalWT4, navOut));
272  fc.validateResults(navOut, __LINE__);
273  TUASSERTE(bool, true, uut.addData(navINAVGalWT6, navOut));
274  fc.validateResults(navOut, __LINE__, 1, 0, 0, 1);
275  TUASSERTE(bool, true, uut.addData(navINAVGalWT7, navOut));
276  fc.validateResults(navOut, __LINE__);
277  TUASSERTE(bool, true, uut.addData(navINAVGalWT8, navOut));
278  fc.validateResults(navOut, __LINE__);
279  TUASSERTE(bool, true, uut.addData(ephINAVGalWT1, navOut));
280  fc.validateResults(navOut, __LINE__);
281  TUASSERTE(bool, true, uut.addData(ephINAVGalWT3, navOut));
282  fc.validateResults(navOut, __LINE__);
283  TUASSERTE(bool, true, uut.addData(ephINAVGalWT5, navOut));
284  fc.validateResults(navOut, __LINE__);
285  TUASSERTE(bool, true, uut.addData(navINAVGalWT9, navOut));
286  fc.validateResults(navOut, __LINE__);
287  TUASSERTE(bool, true, uut.addData(navINAVGalWT10, navOut));
288  fc.validateResults(navOut, __LINE__, 1, 0, 0, 1);
289  TURETURN();
290 }
291 
292 
295 {
296  TUDEF("PNBGalINavDataFactory", "addData");
297  GalFactoryCounter fc(testFramework);
299  gnsstk::NavDataPtrList navOut;
300  TUCATCH(uut.setTypeFilter({gnsstk::NavMessageType::Health,
301  gnsstk::NavMessageType::Ephemeris}));
302  // Add nav pages in time order
303  TUASSERTE(bool, true, uut.addData(ephINAVGalWT2, navOut));
304  fc.validateResults(navOut, __LINE__);
305  TUASSERTE(bool, true, uut.addData(ephINAVGalWT4, navOut));
306  fc.validateResults(navOut, __LINE__);
307  TUASSERTE(bool, true, uut.addData(navINAVGalWT6, navOut));
308  fc.validateResults(navOut, __LINE__);
309  TUASSERTE(bool, true, uut.addData(navINAVGalWT7, navOut));
310  fc.validateResults(navOut, __LINE__);
311  TUASSERTE(bool, true, uut.addData(navINAVGalWT8, navOut));
312  fc.validateResults(navOut, __LINE__);
313  TUASSERTE(bool, true, uut.addData(ephINAVGalWT1, navOut));
314  fc.validateResults(navOut, __LINE__);
315  TUASSERTE(bool, true, uut.addData(ephINAVGalWT3, navOut));
316  fc.validateResults(navOut, __LINE__);
317  TUASSERTE(bool, true, uut.addData(ephINAVGalWT5, navOut));
318  fc.validateResults(navOut, __LINE__, 3, 0, 1, 0, 2);
319  TUASSERTE(bool, true, uut.addData(navINAVGalWT9, navOut));
320  fc.validateResults(navOut, __LINE__);
321  TUASSERTE(bool, true, uut.addData(navINAVGalWT10, navOut));
322  // 4 hea instead of 6 because one of the almanacs is empty
323  fc.validateResults(navOut, __LINE__, 4, 0, 0, 0, 4);
324  TURETURN();
325 }
326 
327 
330 {
331  TUDEF("PNBGalINavDataFactory", "addData");
332  GalFactoryCounter fc(testFramework);
334  gnsstk::NavDataPtrList navOut;
335  TUCATCH(uut.setTypeFilter({gnsstk::NavMessageType::Health,
336  gnsstk::NavMessageType::Almanac}));
337  // Add nav pages in time order
338  TUASSERTE(bool, true, uut.addData(ephINAVGalWT2, navOut));
339  fc.validateResults(navOut, __LINE__);
340  TUASSERTE(bool, true, uut.addData(ephINAVGalWT4, navOut));
341  fc.validateResults(navOut, __LINE__);
342  TUASSERTE(bool, true, uut.addData(navINAVGalWT6, navOut));
343  fc.validateResults(navOut, __LINE__);
344  TUASSERTE(bool, true, uut.addData(navINAVGalWT7, navOut));
345  fc.validateResults(navOut, __LINE__);
346  TUASSERTE(bool, true, uut.addData(navINAVGalWT8, navOut));
347  fc.validateResults(navOut, __LINE__);
348  TUASSERTE(bool, true, uut.addData(ephINAVGalWT1, navOut));
349  fc.validateResults(navOut, __LINE__);
350  TUASSERTE(bool, true, uut.addData(ephINAVGalWT3, navOut));
351  fc.validateResults(navOut, __LINE__);
352  TUASSERTE(bool, true, uut.addData(ephINAVGalWT5, navOut));
353  fc.validateResults(navOut, __LINE__, 2, 0, 0, 0, 2);
354  TUASSERTE(bool, true, uut.addData(navINAVGalWT9, navOut));
355  fc.validateResults(navOut, __LINE__);
356  TUASSERTE(bool, true, uut.addData(navINAVGalWT10, navOut));
357  // 2 alms/4 hea instead of 3/6 because one of the almanacs is empty
358  fc.validateResults(navOut, __LINE__, 6, 2, 0, 0, 4);
359  TURETURN();
360 }
361 
362 
365 {
366  TUDEF("PNBGalINavDataFactory", "processEph");
367  GalFactoryCounter fc(testFramework);
369  gnsstk::NavMessageID nmidExpE1B(
374  gnsstk::NavMessageID nmidExpE5b(
379  gnsstk::CommonTime toeExp = gnsstk::GALWeekSecond(1014,517200.0);
380  gnsstk::CommonTime tocExp = gnsstk::GALWeekSecond(1014,517200.0);
382  gnsstk::CommonTime endExp = toeExp + (4.0 * 3600.0);
383  gnsstk::NavDataPtrList navOut;
384  gnsstk::GalINavEph *eph;
386  gnsstk::GalINavIono *iono;
387  gnsstk::GalINavISC *isc;
388  TUASSERTE(bool, true, uut.processEph(1, ephINAVGalWT1, navOut));
389  fc.validateResults(navOut, __LINE__);
390  TUASSERTE(bool, true, uut.processEph(2, ephINAVGalWT2, navOut));
391  fc.validateResults(navOut, __LINE__);
392  TUASSERTE(bool, true, uut.processEph(3, ephINAVGalWT3, navOut));
393  fc.validateResults(navOut, __LINE__);
394  TUASSERTE(bool, true, uut.processEph(4, ephINAVGalWT4, navOut));
395  fc.validateResults(navOut, __LINE__);
396  TUASSERTE(bool, true, uut.processEph(5, ephINAVGalWT5, navOut));
397  for (const auto& i : navOut)
398  {
399  if ((eph = dynamic_cast<gnsstk::GalINavEph*>(i.get())) != nullptr)
400  {
402  // NavData fields
404  TUASSERTE(gnsstk::NavMessageID, nmidExpE1B, eph->signal);
405  // OrbitData has no fields
406  // OrbitDataKepler fields
408  TUASSERTE(gnsstk::CommonTime, toeExp, eph->Toe);
409  TUASSERTE(gnsstk::CommonTime, tocExp, eph->Toc);
411  TUASSERTFE(4.610046744347E-06, eph->Cuc);
412  TUASSERTFE(1.211278140545E-05, eph->Cus);
413  TUASSERTFE(9.634375000000E+01, eph->Crc);
414  TUASSERTFE(9.828125000000E+01, eph->Crs);
415  TUASSERTFE(-3.725290298462E-09, eph->Cis);
416  TUASSERTFE(-1.490116119385E-08, eph->Cic);
417  TUASSERTFE(-3.0165642165792534435E+00, eph->M0);
418  TUASSERTFE(2.529748231311E-09, eph->dn);
419  TUASSERTFE(0, eph->dndot);
420  TUASSERTFE(1.100952504203E-04, eph->ecc);
421  TUASSERTFE(5.4406226139068603516E+03, eph->Ahalf);
422  TUASSERTFE(2.9600374426954716444E+07, eph->A);
423  TUASSERTFE(0, eph->Adot);
424  TUASSERTFE(2.9631768162768818975E+00, eph->OMEGA0);
425  TUASSERTFE(9.8982515960810546485E-01, eph->i0);
426  TUASSERTFE(1.4027684908239376749E-01, eph->w);
427  TUASSERTFE(-5.110570018612E-09, eph->OMEGAdot);
428  TUASSERTFE(-1.832219176426E-10, eph->idot);
429  TUASSERTFE(-5.335179739632E-04, eph->af0);
430  TUASSERTFE(-8.100187187665E-12, eph->af1);
431  TUASSERTFE(0, eph->af2);
432  TUASSERTE(gnsstk::CommonTime, beginExp, eph->beginFit);
433  TUASSERTE(gnsstk::CommonTime, endExp, eph->endFit);
434  // GalINavEph
435  TUASSERTFE(-4.656613E-09, eph->bgdE5aE1);
436  TUASSERTFE(-5.122274E-09, eph->bgdE5bE1);
437  TUASSERTE(unsigned, 107, eph->sisaIndex);
438  TUASSERTE(unsigned, 1, eph->svid);
443  TUASSERTE(uint16_t, 94, eph->iodnav1);
444  TUASSERTE(uint16_t, 94, eph->iodnav2);
445  TUASSERTE(uint16_t, 94, eph->iodnav3);
446  TUASSERTE(uint16_t, 94, eph->iodnav4);
448  eph->hsE5b);
450  eph->hsE1B);
452  eph->dvsE5b);
454  eph->dvsE1B);
455  }
456  else if ((hea = dynamic_cast<gnsstk::GalINavHealth*>(i.get())) != nullptr)
457  {
458  // NavData fields
461  {
463  TUASSERTE(gnsstk::NavMessageID, nmidExpE1B, hea->signal);
464  }
465  else
466  {
467  TUASSERTE(gnsstk::NavMessageID, nmidExpE5b, hea->signal);
468  }
469  // NavHealthData has no fields
470  // GalINavHealth
476  hea->sigHealthStatus);
478  hea->dataValidityStatus);
479  TUASSERTE(unsigned, 107, hea->sisaIndex);
480  }
481  else if ((iono = dynamic_cast<gnsstk::GalINavIono*>(i.get())) != nullptr)
482  {
484  // NavData fields
486  TUASSERTE(gnsstk::NavMessageID, nmidExpE1B, iono->signal);
487  // NeQuickIonoNavData fields
488  // values confirmed by hand.
489  TUASSERTFE(45.75, iono->ai[0]);
490  TUASSERTFE(0.1640625, iono->ai[1]);
491  TUASSERTFE(0.00067138671875, iono->ai[2]);
492  TUASSERTE(bool, false, iono->idf[0]);
493  TUASSERTE(bool, false, iono->idf[1]);
494  TUASSERTE(bool, false, iono->idf[2]);
495  TUASSERTE(bool, false, iono->idf[3]);
496  TUASSERTE(bool, false, iono->idf[4]);
497  }
498  else if ((isc = dynamic_cast<gnsstk::GalINavISC*>(i.get())) != nullptr)
499  {
501  // NavData fields
503  TUASSERTE(gnsstk::NavMessageID, nmidExpE1B, isc->signal);
504  TUASSERTE(bool, true, std::isnan(isc->isc));
505  TUASSERTFE(-4.656613E-09, isc->bgdE1E5a);
506  TUASSERTFE(-5.122274E-09, isc->bgdE1E5b);
507  }
508  }
509  fc.validateResults(navOut, __LINE__, 5, 0, 1, 0, 2, 1, 1);
510  TURETURN();
511 }
512 
513 
516 {
517  TUDEF("PNBGalINavDataFactory", "processAlm");
518  GalFactoryCounter fc(testFramework);
520  gnsstk::NavMessageID nmidExpE1B(
525  gnsstk::NavMessageID nmidExpE5b(
530  gnsstk::CommonTime toaExp = gnsstk::GALWeekSecond(1014,517200.0);
532  gnsstk::CommonTime endExp = toaExp + (74.0 * 3600.0);
533  gnsstk::CommonTime expRefTime = gnsstk::GALWeekSecond(1014,518400);
534  gnsstk::NavDataPtrList navOut;
535  gnsstk::GalINavAlm *alm;
538  TUASSERTE(bool, true, uut.processAlm(7, navINAVGalWT7, navOut));
539  fc.validateResults(navOut, __LINE__);
540  TUASSERTE(bool, true, uut.processAlm(8, navINAVGalWT8, navOut));
541  fc.validateResults(navOut, __LINE__);
542  TUASSERTE(bool, true, uut.processAlm(9, navINAVGalWT9, navOut));
543  fc.validateResults(navOut, __LINE__);
544  TUASSERTE(bool, true, uut.processAlm(10, navINAVGalWT10, navOut));
545  for (const auto& i : navOut)
546  {
547  if ((alm = dynamic_cast<gnsstk::GalINavAlm*>(i.get())) != nullptr)
548  {
549  gnsstk::NavMessageID nmid(nmidExpE1B);
550  if (alm->signal.sat.id == 19)
551  {
552  nmid.sat.id = 19;
555  TUASSERTFE(2.9141800017857466543E+00, alm->M0);
556  TUASSERTFE(1.068115234375E-04, alm->ecc);
557  TUASSERTFE(5440.6116409941769234, alm->Ahalf);
558  TUASSERTFE(29600255.028121352196, alm->A);
559  TUASSERTFE(8.669867665531157952E-01, alm->OMEGA0);
560  TUASSERTFE(0.95840136886673976679, alm->i0);
561  TUASSERTFE(2.6636617643641731235E+00, alm->w);
562  TUASSERTFE(-5.48594280E-09, alm->OMEGAdot);
563  TUASSERTFE(-9.5367431640625e-06, alm->af0);
564  TUASSERTFE(0, alm->af1);
566  TUASSERTE(gnsstk::CommonTime, endExp, alm->endFit);
567  // GalINavAlm
569  TUASSERTFE(2.34375000E-02, alm->dAhalf);
570  TUASSERTFE(-1.8983012250084810996E-02, alm->deltai);
571  }
572  else
573  {
574  nmid.sat.id = 21;
577  TUASSERTFE(-2.8944299991417192786E+00, alm->M0);
578  TUASSERTFE(1.068115234375E-04, alm->ecc);
579  TUASSERTFE(5440.6350784941769234, alm->Ahalf);
580  TUASSERTFE(29600510.057341337204, alm->A);
581  TUASSERTFE(2.9605829206192875169E+00, alm->OMEGA0);
582  TUASSERTFE(0.98946447982142404776, alm->i0);
583  TUASSERTFE(8.1847462413623239819E-01, alm->w);
584  TUASSERTFE(-5.12021328E-09, alm->OMEGAdot);
585  TUASSERTFE(-0.0005168914794921875, alm->af0);
586  TUASSERTFE(-3.6379788070917129517e-12, alm->af1);
588  TUASSERTE(gnsstk::CommonTime, endExp, alm->endFit);
589  // GalINavAlm
591  TUASSERTFE(4.68750000E-02, alm->dAhalf);
592  TUASSERTFE(1.2080098704599424864E-02, alm->deltai);
593  }
595  // NavData fields
597  // OrbitData has no fields
598  // OrbitDataKepler fields
599  TUASSERTE(gnsstk::CommonTime, toaExp, alm->Toe);
600  TUASSERTE(gnsstk::CommonTime, toaExp, alm->Toc);
602  TUASSERTFE(0, alm->Cuc);
603  TUASSERTFE(0, alm->Cus);
604  TUASSERTFE(0, alm->Crc);
605  TUASSERTFE(0, alm->Crs);
606  TUASSERTFE(0, alm->Cis);
607  TUASSERTFE(0, alm->Cic);
608  TUASSERTFE(0, alm->dn);
609  TUASSERTFE(0, alm->dndot);
610  TUASSERTFE(0, alm->Adot);
611  TUASSERTFE(0, alm->idot);
612  TUASSERTFE(0, alm->af2);
613  TUASSERTE(unsigned, 1014, alm->wna);
614  TUASSERTFE(517200, alm->t0a);
615  TUASSERTE(unsigned, 14, alm->ioda1);
616  TUASSERTE(unsigned, 14, alm->ioda2);
618  alm->hsE5b);
620  alm->hsE1B);
621  }
622  else if ((hea = dynamic_cast<gnsstk::GalINavHealth*>(i.get())) != nullptr)
623  {
626  {
627  nmid = nmidExpE1B;
629  }
630  else
631  {
632  nmid = nmidExpE5b;
634  }
635  if (hea->signal.sat.id == 19)
636  {
637  nmid.sat.id = 19;
639  }
640  else
641  {
642  nmid.sat.id = 21;
644  }
646  hea->sigHealthStatus);
648  hea->dataValidityStatus);
649  TUASSERTE(unsigned, 255, hea->sisaIndex);
650  }
651  else if ((tim = dynamic_cast<gnsstk::GalINavTimeOffset*>(i.get()))
652  != nullptr)
653  {
656  TUASSERTE(gnsstk::NavMessageID, nmidExpE1B, tim->signal);
661  // StdNavTimeOffset
664  TUASSERTFE(-6.3155312091112136841e-09, tim->a0);
665  TUASSERTFE(-6.6613381477509392425e-15, tim->a1);
666  TUASSERTFE(0, tim->a2);
667  TUASSERTFE(0, tim->deltatLS);
668  TUASSERTE(gnsstk::CommonTime, expRefTime, tim->refTime);
669  TUASSERTFE(518400, tim->tot);
670  TUASSERTE(unsigned, 54, tim->wnot);
671  TUASSERTE(unsigned, 0, tim->wnLSF);
672  TUASSERTE(unsigned, 0, tim->dn);
673  TUASSERTFE(0, tim->deltatLSF);
674  // GalINavTimeOffset
675  TUASSERTFE(0, tim->tow);
676  }
677  }
678  fc.validateResults(navOut, __LINE__, 7, 2, 0, 1, 4);
679  TURETURN();
680 }
681 
682 
685 {
686  TUDEF("PNBGalINavDataFactory", "processOffset");
687  GalFactoryCounter fc(testFramework);
689  gnsstk::NavMessageID nmidExpE1B(
694  gnsstk::NavDataPtrList navOut;
696  gnsstk::CommonTime expRefTime(gnsstk::GALWeekSecond(1014,432000));
697  TUASSERTE(bool, true, uut.processOffset(navINAVGalWT6, navOut));
698  for (const auto& i : navOut)
699  {
700  if ((tim = dynamic_cast<gnsstk::GalINavTimeOffset*>(i.get()))
701  != nullptr)
702  {
704  TUASSERTE(gnsstk::NavMessageID, nmidExpE1B, tim->signal);
705  // StdNavTimeOffset
708  TUASSERTFE(-9.31322575E-10, tim->a0);
709  TUASSERTFE( 8.88178420E-16, tim->a1);
710  TUASSERTFE( 0.00000000E+00, tim->a2);
711  TUASSERTFE(18, tim->deltatLS);
712  TUASSERTE(gnsstk::CommonTime, expRefTime, tim->refTime);
713  TUASSERTFE(432000, tim->tot);
714  TUASSERTE(unsigned, 1014, tim->wnot);
715  TUASSERTE(unsigned, 905, tim->wnLSF);
716  TUASSERTE(unsigned, 7, tim->dn);
717  TUASSERTFE(18, tim->deltatLSF);
718  // GalINavTimeOffset
719  TUASSERTFE(518405, tim->tow);
720  }
721  }
722  fc.validateResults(navOut, __LINE__, 1, 0, 0, 1);
723  TURETURN();
724 }
725 
726 
728 {
729  TUDEF("PNBGalINavDataFactory", "processEph");
731  gnsstk::CommonTime toeExp = gnsstk::GALWeekSecond(1195,603600.0);
732  gnsstk::CommonTime tocExp = gnsstk::GALWeekSecond(1195,603600.0);
734  gnsstk::CommonTime endExp = toeExp + (4.0 * 3600.0);
735  gnsstk::NavDataPtrList navOut;
736  gnsstk::GalINavEph *eph;
737  TUCATCH(uut.setTypeFilter({gnsstk::NavMessageType::Ephemeris}));
738  TUASSERTE(bool, true, uut.addData(navINAVWRWT1, navOut));
739  TUASSERTE(gnsstk::NavDataPtrList::size_type, 0, navOut.size());
740  TUASSERTE(bool, true, uut.addData(navINAVWRWT2, navOut));
741  TUASSERTE(gnsstk::NavDataPtrList::size_type, 0, navOut.size());
742  TUASSERTE(bool, true, uut.addData(navINAVWRWT3, navOut));
743  TUASSERTE(gnsstk::NavDataPtrList::size_type, 0, navOut.size());
744  TUASSERTE(bool, true, uut.addData(navINAVWRWT4, navOut));
745  TUASSERTE(gnsstk::NavDataPtrList::size_type, 0, navOut.size());
746  TUASSERTE(bool, true, uut.addData(navINAVWRWT5, navOut));
747  TUASSERTE(gnsstk::NavDataPtrList::size_type, 1, navOut.size());
748  if (navOut.size() >= 1)
749  {
750  if ((eph = dynamic_cast<gnsstk::GalINavEph*>(navOut.begin()->get()))
751  != nullptr)
752  {
755  TUASSERTE(gnsstk::CommonTime, toeExp, eph->Toe);
756  TUASSERTE(gnsstk::CommonTime, tocExp, eph->Toc);
757  TUASSERTE(gnsstk::CommonTime, beginExp, eph->beginFit);
758  TUASSERTE(gnsstk::CommonTime, endExp, eph->endFit);
763  }
764  }
765  TURETURN();
766 }
767 
768 
769 int main()
770 {
771  PNBGalINavDataFactory_T testClass;
772  unsigned errorTotal = 0;
773 
774  errorTotal += testClass.addDataAllTest();
775  errorTotal += testClass.addDataAlmanacTest();
776  errorTotal += testClass.addDataEphemerisTest();
777  errorTotal += testClass.addDataHealthTest();
778  errorTotal += testClass.addDataTimeTest();
779  errorTotal += testClass.addDataEphHealthTest();
780  errorTotal += testClass.addDataAlmHealthTest();
781  errorTotal += testClass.processEphTest();
782  errorTotal += testClass.processAlmTest();
783  errorTotal += testClass.processOffsetTest();
784  errorTotal += testClass.processEphWRTest();
785 
786  std::cout << "Total Failures for " << __FILE__ << ": " << errorTotal
787  << std::endl;
788 
789  return errorTotal;
790 }
gnsstk::NavMessageType::ISC
@ ISC
Inter-signal corrections.
gnsstk::OrbitDataKepler::idot
double idot
Rate of inclination angle (rad/sec)
Definition: OrbitDataKepler.hpp:193
ephINAVGalWT2ct
gnsstk::CommonTime ephINAVGalWT2ct
Definition: GalINavTestDataDecl.hpp:54
gnsstk::GalINavAlm::ioda2
uint8_t ioda2
IODa for the second word type (.
Definition: GalINavAlm.hpp:112
gnsstk::GalINavHealth::sisaIndex
uint8_t sisaIndex
Signal in space accuracy index (OS-SIS-ICD tbl 76)
Definition: GalINavHealth.hpp:97
gnsstk::NavMessageID
Class used to identify/categorize navigation message data.
Definition: NavMessageID.hpp:52
ephINAVGalWT1ct
gnsstk::CommonTime ephINAVGalWT1ct
Definition: GalINavTestDataDecl.hpp:53
gnsstk::StdNavTimeOffset::deltatLSF
double deltatLSF
Current or future leap second count (UTC only).
Definition: StdNavTimeOffset.hpp:135
gnsstk::GalDataValid::Valid
@ Valid
Navigation data valid.
gnsstk::GalDataValid
GalDataValid
Identify Galileo Data Validity Status (DVS) states.
Definition: GalDataValid.hpp:51
navINAVGalWT9ct
gnsstk::CommonTime navINAVGalWT9ct
Definition: GalINavTestDataDecl.hpp:61
PNBGalINavDataFactory_T::processAlmTest
unsigned processAlmTest()
Test processAlm method, and implicitly, processAlmOrb.
Definition: PNBGalINavDataFactory_T.cpp:515
gnsstk::SatID::id
int id
Satellite identifier, e.g. PRN.
Definition: SatID.hpp:154
navINAVGalWT7
gnsstk::PackedNavBitsPtr navINAVGalWT7
Definition: GalINavTestDataDecl.hpp:49
gnsstk::PackedNavBitsPtr
std::shared_ptr< PackedNavBits > PackedNavBitsPtr
Managed pointer for passing PackedNavBits around.
Definition: PackedNavBits.hpp:66
navINAVWRWT5ct
gnsstk::CommonTime navINAVWRWT5ct
Definition: GalINavTestDataDecl.hpp:69
gnsstk::GalINavAlm::ioda1
uint8_t ioda1
IODa for the first word type (.
Definition: GalINavAlm.hpp:111
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
GalINavAlm.hpp
PNBGalINavDataFactory_T::addDataEphemerisTest
unsigned addDataEphemerisTest()
Test addData with ephemeris selected only.
Definition: PNBGalINavDataFactory_T.cpp:160
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::TrackingCode::E1B
@ E1B
Galileo E1-B signal, supporting OS/HAS/SoL.
gnsstk::GalINavAlm::xmit2
CommonTime xmit2
Definition: GalINavAlm.hpp:106
gnsstk::NavType::GalINAV
@ GalINAV
gnsstk::GalINavEph::bgdE5aE1
double bgdE5aE1
Group delay in seconds between E5a and E1.
Definition: GalINavEph.hpp:85
gnsstk::OrbitDataKepler::ecc
double ecc
Eccentricity.
Definition: OrbitDataKepler.hpp:185
gnsstk::StdNavTimeOffset::src
TimeSystem src
Source time system.
Definition: StdNavTimeOffset.hpp:120
gnsstk::CarrierBand::E5b
@ E5b
Galileo E5b.
TUASSERTE
#define TUASSERTE(TYPE, EXP, GOT)
Definition: TestUtil.hpp:81
ephINAVGalWT5
gnsstk::PackedNavBitsPtr ephINAVGalWT5
Definition: GalINavTestDataDecl.hpp:47
navINAVWRWT2ct
gnsstk::CommonTime navINAVWRWT2ct
Definition: GalINavTestDataDecl.hpp:68
gnsstk::NavMessageID::messageType
NavMessageType messageType
Definition: NavMessageID.hpp:97
gnsstk::NavSatelliteID
Definition: NavSatelliteID.hpp:57
gnsstk::PNBGalINavDataFactory
Definition: PNBGalINavDataFactory.hpp:62
navINAVWRWT4ct
gnsstk::CommonTime navINAVWRWT4ct
Definition: GalINavTestDataDecl.hpp:69
gnsstk::OrbitDataKepler::OMEGAdot
double OMEGAdot
Rate of Rt ascension (rad/sec)
Definition: OrbitDataKepler.hpp:192
gnsstk::GalINavHealth::sigHealthStatus
GalHealthStatus sigHealthStatus
Signal health status (SHS)
Definition: GalINavHealth.hpp:93
gnsstk::PNBGalINavDataFactory::processOffset
bool processOffset(const PackedNavBitsPtr &navIn, NavDataPtrList &navOut)
Definition: PNBGalINavDataFactory.cpp:613
gnsstk::StdNavTimeOffset::tgt
TimeSystem tgt
Target time system.
Definition: StdNavTimeOffset.hpp:121
gnsstk::SatID
Definition: SatID.hpp:89
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
GalINavHealth.hpp
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
PNBGalINavDataFactory_T::addDataHealthTest
unsigned addDataHealthTest()
Test addData with health data selected only.
Definition: PNBGalINavDataFactory_T.cpp:227
PNBGalINavDataFactory_T::processEphTest
unsigned processEphTest()
Test processEph method.
Definition: PNBGalINavDataFactory_T.cpp:364
navINAVWRWT1
gnsstk::PackedNavBitsPtr navINAVWRWT1
Definition: GalINavTestDataDecl.hpp:70
gnsstk::ObsID::band
CarrierBand band
Definition: ObsID.hpp:200
gnsstk::StdNavTimeOffset::deltatLS
double deltatLS
Current or past leap second count (UTC only).
Definition: StdNavTimeOffset.hpp:125
gnsstk::NavType::GloCivilF
@ GloCivilF
gnsstk::GALWeekSecond
Definition: GALWeekSecond.hpp:56
gnsstk::GalDataValid::Unknown
@ Unknown
Health is not known or is uninitialized.
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::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::GalINavEph::dvsE5b
GalDataValid dvsE5b
Data validity status for E5b.
Definition: GalINavEph.hpp:99
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
navINAVGalWT9
gnsstk::PackedNavBitsPtr navINAVGalWT9
Definition: GalINavTestDataDecl.hpp:51
gnsstk::StdNavTimeOffset::wnLSF
unsigned wnLSF
Leap second reference week number (UTC only).
Definition: StdNavTimeOffset.hpp:133
gnsstk::NeQuickIonoNavData::idf
bool idf[5]
Ionospheric disturbance flag for regions 1-5 (0-4).
Definition: NeQuickIonoNavData.hpp:132
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
gnsstk::GalINavHealth::dataValidityStatus
GalDataValid dataValidityStatus
Data Validity Status (DVS)
Definition: GalINavHealth.hpp:95
gnsstk::GalINavAlm::deltai
double deltai
Inclination in rad relative to 0.3*pi rad.
Definition: GalINavAlm.hpp:108
gnsstk::GalINavEph::iodnav3
uint16_t iodnav3
IODnav for word type 3.
Definition: GalINavEph.hpp:95
gnsstk::PNBGalINavDataFactory::addData
bool addData(const PackedNavBitsPtr &navIn, NavDataPtrList &navOut, double cadence=-1) override
Definition: PNBGalINavDataFactory.cpp:56
gnsstk::TrackingCode::Standard
@ Standard
Legacy Glonass civil signal.
PNBGalINavDataFactory_T
Definition: PNBGalINavDataFactory_T.cpp:76
ephINAVGalWT3
gnsstk::PackedNavBitsPtr ephINAVGalWT3
Definition: GalINavTestDataDecl.hpp:45
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::OrbitDataKepler::Adot
double Adot
Rate of semi-major axis (m/sec)
Definition: OrbitDataKepler.hpp:188
gnsstk::NeQuickIonoNavData::ai
double ai[3]
Definition: NeQuickIonoNavData.hpp:125
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
gnsstk::GalINavEph
Class containing data elements unique to GPS LNav ephemerides.
Definition: GalINavEph.hpp:52
gnsstk::ObservationType::NavMsg
@ NavMsg
Navigation Message data.
navINAVWRWT2
gnsstk::PackedNavBitsPtr navINAVWRWT2
Definition: GalINavTestDataDecl.hpp:70
navINAVGalWT8
gnsstk::PackedNavBitsPtr navINAVGalWT8
Definition: GalINavTestDataDecl.hpp:50
gnsstk::NavSignalID::obs
ObsID obs
Carrier, tracking code, etc.
Definition: NavSignalID.hpp:95
GalINavISC.hpp
gnsstk::GalINavEph::iodnav4
uint16_t iodnav4
IODnav for word type 4.
Definition: GalINavEph.hpp:96
navINAVGalWT10
gnsstk::PackedNavBitsPtr navINAVGalWT10
Definition: GalINavTestDataDecl.hpp:52
FactoryCounter
Definition: FactoryCounter.hpp:75
gnsstk::GalINavIono
Class containing data elements unique to Galileo I/NAV iono data.
Definition: GalINavIono.hpp:50
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
navINAVWRWT5
gnsstk::PackedNavBitsPtr navINAVWRWT5
Definition: GalINavTestDataDecl.hpp:71
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
gnsstk::TimeSystem::GAL
@ GAL
Galileo system time.
gnsstk::ObsID
Definition: ObsID.hpp:82
GalINavIono.hpp
gnsstk::NavMessageType::Iono
@ Iono
Ionospheric correction data.
gnsstk::GalINavEph::hsE5b
GalHealthStatus hsE5b
Health status for E5b.
Definition: GalINavEph.hpp:97
gnsstk::OrbitDataKepler::Ahalf
double Ahalf
Square Root of semi-major axis (m**.5)
Definition: OrbitDataKepler.hpp:187
gnsstk::NavSatelliteID::sat
SatID sat
ID of satellite to which the nav data applies.
Definition: NavSatelliteID.hpp:169
gnsstk::GalINavISC::bgdE1E5a
double bgdE1E5a
Broadcast group delay for the E1,E5a pair.
Definition: GalINavISC.hpp:99
gnsstk::CommonTime
Definition: CommonTime.hpp:84
PNBGalINavDataFactory.hpp
gnsstk::GalINavEph::iodnav2
uint16_t iodnav2
IODnav for word type 2.
Definition: GalINavEph.hpp:94
gnsstk::OrbitDataKepler::Toc
CommonTime Toc
Clock epoch.
Definition: OrbitDataKepler.hpp:172
gnsstk::GalINavAlm::t0a
double t0a
Convenience storage of unqualified t0a.
Definition: GalINavAlm.hpp:110
gnsstk::GalINavISC::bgdE1E5b
double bgdE1E5b
Broadcast group delay for the E1,E5b pair.
Definition: GalINavISC.hpp:100
ephINAVGalWT4ct
gnsstk::CommonTime ephINAVGalWT4ct
Definition: GalINavTestDataDecl.hpp:56
gnsstk::GalINavAlm::hsE5b
GalHealthStatus hsE5b
Health status for E5b.
Definition: GalINavAlm.hpp:113
gnsstk::GalHealthStatus::OK
@ OK
Signal OK.
gnsstk::GalINavAlm
Class containing data elements unique to Galileo I/NAV almanacs.
Definition: GalINavAlm.hpp:52
gnsstk::TimeSystem
TimeSystem
Definition of various time systems.
Definition: TimeSystem.hpp:51
gnsstk::GalINavEph::xmit5
CommonTime xmit5
Transmit time for word type 5.
Definition: GalINavEph.hpp:92
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.
GalINavTestDataDecl.hpp
TUDEF
#define TUDEF(CLASS, METHOD)
Definition: TestUtil.hpp:56
gnsstk::GalINavEph::hsE1B
GalHealthStatus hsE1B
Health status for E1B.
Definition: GalINavEph.hpp:98
navINAVGalWT10ct
gnsstk::CommonTime navINAVGalWT10ct
Definition: GalINavTestDataDecl.hpp:62
gnsstk::PNBGalINavDataFactory::processAlm
bool processAlm(unsigned wordType, const PackedNavBitsPtr &navIn, NavDataPtrList &navOut)
Definition: PNBGalINavDataFactory.cpp:346
gnsstk::GalINavHealth
Definition: GalINavHealth.hpp:53
gnsstk::TimeSystem::UTC
@ UTC
Coordinated Universal Time (e.g., from NTP)
PNBGalINavDataFactory_T::addDataAlmHealthTest
unsigned addDataAlmHealthTest()
Another combo test that makes sure alm health is processed correctly.
Definition: PNBGalINavDataFactory_T.cpp:329
gnsstk::OrbitDataKepler::i0
double i0
Inclination (rad)
Definition: OrbitDataKepler.hpp:190
std::operator<<
std::ostream & operator<<(std::ostream &s, gnsstk::StringUtils::FFLead v)
Definition: FormattedDouble_T.cpp:44
GalINavTimeOffset.hpp
gnsstk::GalINavTimeOffset
Definition: GalINavTimeOffset.hpp:53
gnsstk::GalINavEph::iodnav1
uint16_t iodnav1
IODnav for word type 1.
Definition: GalINavEph.hpp:93
gnsstk::OrbitDataKepler::Cic
double Cic
Cosine inclination (rad)
Definition: OrbitDataKepler.hpp:179
PNBGalINavDataFactory_T::PNBGalINavDataFactory_T
PNBGalINavDataFactory_T()
Definition: PNBGalINavDataFactory_T.cpp:107
PNBGalINavDataFactory_T::addDataAllTest
unsigned addDataAllTest()
Definition: PNBGalINavDataFactory_T.cpp:114
navINAVGalWT6ct
gnsstk::CommonTime navINAVGalWT6ct
Definition: GalINavTestDataDecl.hpp:58
gnsstk::NavMessageType::TimeOffset
@ TimeOffset
Message containing information about time system offsets.
gnsstk::OrbitDataKepler::Crc
double Crc
Cosine radius (m)
Definition: OrbitDataKepler.hpp:177
navINAVGalWT7ct
gnsstk::CommonTime navINAVGalWT7ct
Definition: GalINavTestDataDecl.hpp:59
ephINAVGalWT4
gnsstk::PackedNavBitsPtr ephINAVGalWT4
Definition: GalINavTestDataDecl.hpp:46
gnsstk::GalINavEph::bgdE5bE1
double bgdE5bE1
Group delay in seconds between E5b and E1.
Definition: GalINavEph.hpp:86
gnsstk::TimeSystem::GPS
@ GPS
GPS system time.
GalINavEph.hpp
navINAVWRWT3
gnsstk::PackedNavBitsPtr navINAVWRWT3
Definition: GalINavTestDataDecl.hpp:70
std
Definition: Angle.hpp:142
gnsstk::OrbitDataKepler::af0
double af0
SV clock error (sec)
Definition: OrbitDataKepler.hpp:195
gnsstk::TrackingCode::E5bI
@ E5bI
Galileo E5b I code.
gnsstk::NavMessageType::Ephemeris
@ Ephemeris
Precision orbits for the transmitting SV.
FactoryCounter.hpp
navINAVWRWT3ct
gnsstk::CommonTime navINAVWRWT3ct
Definition: GalINavTestDataDecl.hpp:68
gnsstk::GalINavAlm::dAhalf
double dAhalf
delta sqrt(A)
Definition: GalINavAlm.hpp:107
PNBGalINavDataFactory_T::processOffsetTest
unsigned processOffsetTest()
Test processOffset method.
Definition: PNBGalINavDataFactory_T.cpp:684
PNBGalINavDataFactory_T::addDataAlmanacTest
unsigned addDataAlmanacTest()
Test addData with almanac selected only.
Definition: PNBGalINavDataFactory_T.cpp:193
gnsstk::GalINavEph::sisaIndex
uint8_t sisaIndex
Signal in space accuracy index (OS-SIS-ICD tbl 76)
Definition: GalINavEph.hpp:87
TUASSERTFE
#define TUASSERTFE(EXP, GOT)
Definition: TestUtil.hpp:103
GalINavTestDataDef.hpp
gnsstk::GalHealthStatus
GalHealthStatus
Identify different types of SV health states.
Definition: GalHealthStatus.hpp:51
gnsstk::SatelliteSystem::Glonass
@ Glonass
gnsstk::GalINavEph::xmit4
CommonTime xmit4
Transmit time for word type 4.
Definition: GalINavEph.hpp:91
gnsstk::StdNavTimeOffset::a0
double a0
Bias coefficient of source time scale.
Definition: StdNavTimeOffset.hpp:122
gnsstk::GalINavEph::xmit2
CommonTime xmit2
Transmit time for word type 2.
Definition: GalINavEph.hpp:89
gnsstk::GalINavTimeOffset::tow
double tow
TOW field from word type 6.
Definition: GalINavTimeOffset.hpp:68
gnsstk::GalINavEph::svid
uint8_t svid
SVID field from page type 1 (or PRN if not avail)
Definition: GalINavEph.hpp:88
ephINAVGalWT5ct
gnsstk::CommonTime ephINAVGalWT5ct
Definition: GalINavTestDataDecl.hpp:57
gnsstk::NavID
Definition: NavID.hpp:61
gnsstk::GalINavAlm::hsE1B
GalHealthStatus hsE1B
Health status for E1B.
Definition: GalINavAlm.hpp:114
PNBGalINavDataFactory_T::processEphWRTest
unsigned processEphWRTest()
Definition: PNBGalINavDataFactory_T.cpp:727
gnsstk::OrbitDataKepler::health
SVHealth health
SV health status.
Definition: OrbitDataKepler.hpp:173
navINAVGalWT8ct
gnsstk::CommonTime navINAVGalWT8ct
Definition: GalINavTestDataDecl.hpp:60
gnsstk::GalINavEph::xmit3
CommonTime xmit3
Transmit time for word type 3.
Definition: GalINavEph.hpp:90
gnsstk::GalINavEph::dvsE1B
GalDataValid dvsE1B
Data validity status for E1B.
Definition: GalINavEph.hpp:100
navINAVWRWT1ct
gnsstk::CommonTime navINAVWRWT1ct
Definition: GalINavTestDataDecl.hpp:68
gnsstk::PNBGalINavDataFactory::processEph
bool processEph(unsigned wordType, const PackedNavBitsPtr &navIn, NavDataPtrList &navOut)
Definition: PNBGalINavDataFactory.cpp:124
gnsstk::GalINavAlm::wna
unsigned wna
Reference week for t0a.
Definition: GalINavAlm.hpp:109
gnsstk::OrbitDataKepler::OMEGA0
double OMEGA0
Longitude of ascending node at weekly epoch (rad)
Definition: OrbitDataKepler.hpp:189
navINAVGalWT6
gnsstk::PackedNavBitsPtr navINAVGalWT6
Definition: GalINavTestDataDecl.hpp:48
ephINAVGalWT3ct
gnsstk::CommonTime ephINAVGalWT3ct
Definition: GalINavTestDataDecl.hpp:55
gnsstk::GalINavISC
Definition: GalINavISC.hpp:51
ephINAVGalWT1
gnsstk::PackedNavBitsPtr ephINAVGalWT1
Definition: GalINavTestDataDecl.hpp:43
PNBGalINavDataFactory_T::addDataTimeTest
unsigned addDataTimeTest()
Test addData with time offset data selected only.
Definition: PNBGalINavDataFactory_T.cpp:261
PNBGalINavDataFactory_T::addDataEphHealthTest
unsigned addDataEphHealthTest()
One additional combo test.
Definition: PNBGalINavDataFactory_T.cpp:294
gnsstk::StdNavTimeOffset::refTime
CommonTime refTime
Reference time for computation.
Definition: StdNavTimeOffset.hpp:126
main
int main()
Definition: PNBGalINavDataFactory_T.cpp:769
GALWeekSecond.hpp
gnsstk::OrbitDataKepler::af1
double af1
SV clock drift (sec/sec)
Definition: OrbitDataKepler.hpp:196
TimeString.hpp
gnsstk::SatelliteSystem::Galileo
@ Galileo
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::OrbitDataKepler::dn
double dn
Correction to mean motion (rad/sec)
Definition: OrbitDataKepler.hpp:183
navINAVWRWT4
gnsstk::PackedNavBitsPtr navINAVWRWT4
Definition: GalINavTestDataDecl.hpp:71
ephINAVGalWT2
gnsstk::PackedNavBitsPtr ephINAVGalWT2
Definition: GalINavTestDataDecl.hpp:44


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