PNBGLOCNavDataFactory_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 "GLOCNavUT1TimeOffset.hpp"
43 #include "GLOCNavHealth.hpp"
44 #include "GLOCNavEph.hpp"
45 #include "GLOCNavAlm.hpp"
46 #include "GLOCNavIono.hpp"
47 #include "GLOCBits.hpp"
48 #include "CivilTime.hpp"
49 #include "YDSTime.hpp"
50 #include "GLONASSTime.hpp"
51 #include "TimeString.hpp"
52 
53 using namespace std;
54 
56 class BunkISC
57 {
58 public:
60  {}
61 };
62 
65 {
66 public:
67  const std::map<gnsstk::NavSatelliteID, gnsstk::GLOCNavLTDMP>& getLTDMP()
68  const
69  { return ltdmpAcc; }
70 };
71 
72 namespace gnsstk
73 {
74  ostream& operator<<(ostream& s, SVHealth h)
75  {
76  s << StringUtils::asString(h);
77  return s;
78  }
79  ostream& operator<<(ostream& s, GLOCSatType e)
80  {
81  s << StringUtils::asString(e);
82  return s;
83  }
84  ostream& operator<<(ostream& s, GLOCRegime e)
85  {
86  s << StringUtils::asString(e);
87  return s;
88  }
89  ostream& operator<<(ostream& s, GLOCOrbitType e)
90  {
91  s << StringUtils::asString(e);
92  return s;
93  }
94 }
95 
96 // avoid having to type out template params over and over.
98 
99 
104 {
105 public:
107 
108  unsigned addDataAllTest();
110  unsigned addDataEphemerisTest();
112  unsigned addDataAlmanacTest();
114  unsigned addDataHealthTest();
116  unsigned addDataTimeTest();
118  unsigned addDataEphHealthTest();
120  unsigned addDataAlmHealthTest();
122  unsigned processEphTest();
124  unsigned processAlmTest();
126  unsigned processEarthTest();
128  unsigned processLTDMPTest();
130  unsigned processHealthTest();
131 
132 #include "GLOCNavTestDataDecl.hpp"
133 };
134 
135 
138 {
139 #include "GLOCNavTestDataDef.hpp"
140 }
141 
142 
145 {
146  TUDEF("PNBGLOCNavDataFactory", "addData");
147  GLOCactoryCounter fc(testFramework);
153  gnsstk::PackedNavBitsPtr nonGLO =
154  std::make_shared<gnsstk::PackedNavBits>(gpsSid,gpsid,gpsNav,"XX",
156  gnsstk::NavDataPtrList navOut;
157  // should refuse non-GLONASS data
158  TUASSERTE(bool, false, uut.addData(nonGLO, navOut));
159  fc.validateResults(navOut, __LINE__);
160  // The rest is checking that we're processing the good data
161  // appropriately, but I'm not bothering to check the detailed
162  // contents as that is assumed to be tested in the process*
163  // tests.
164  // Add nav pages in time order
165  TUASSERTE(bool, true, uut.addData(navGLOCStr10a, navOut));
166  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
167  TUASSERTE(bool, true, uut.addData(navGLOCStr11a, navOut));
168  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
169  TUASSERTE(bool, true, uut.addData(navGLOCStr12a, navOut));
170  fc.validateResults(navOut, __LINE__, 2, 0, 1, 0, 1);
171  TUASSERTE(bool, true, uut.addData(navGLOCStr20, navOut));
172  fc.validateResults(navOut, __LINE__, 2, 1, 0, 0, 1);
173  TUASSERTE(bool, true, uut.addData(navGLOCStr31, navOut));
174  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
175  TUASSERTE(bool, true, uut.addData(navGLOCStr32, navOut));
176  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
177  TUASSERTE(bool, true, uut.addData(navGLOCStr10b, navOut));
178  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
179  TUASSERTE(bool, true, uut.addData(navGLOCStr11b, navOut));
180  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
181  TUASSERTE(bool, true, uut.addData(navGLOCStr12b, navOut));
182  fc.validateResults(navOut, __LINE__, 2, 0, 1, 0, 1);
183  TUASSERTE(bool, true, uut.addData(navGLOCStr25, navOut));
184  fc.validateResults(navOut, __LINE__, 3, 0, 0, 1, 1, 1);
185  TURETURN();
186 }
187 
188 
191 {
192  TUDEF("PNBGLOCNavDataFactory", "addData");
193  GLOCactoryCounter fc(testFramework);
195  gnsstk::NavDataPtrList navOut;
196  TUCATCH(uut.setTypeFilter({gnsstk::NavMessageType::Ephemeris}));
197  // Add nav pages in time order
198  TUASSERTE(bool, true, uut.addData(navGLOCStr10a, navOut));
199  fc.validateResults(navOut, __LINE__);
200  TUASSERTE(bool, true, uut.addData(navGLOCStr11a, navOut));
201  fc.validateResults(navOut, __LINE__);
202  TUASSERTE(bool, true, uut.addData(navGLOCStr12a, navOut));
203  fc.validateResults(navOut, __LINE__, 1, 0, 1);
204  TUASSERTE(bool, true, uut.addData(navGLOCStr20, navOut));
205  fc.validateResults(navOut, __LINE__);
206  TUASSERTE(bool, true, uut.addData(navGLOCStr31, navOut));
207  fc.validateResults(navOut, __LINE__);
208  TUASSERTE(bool, true, uut.addData(navGLOCStr32, navOut));
209  fc.validateResults(navOut, __LINE__);
210  TUASSERTE(bool, true, uut.addData(navGLOCStr10b, navOut));
211  fc.validateResults(navOut, __LINE__);
212  TUASSERTE(bool, true, uut.addData(navGLOCStr11b, navOut));
213  fc.validateResults(navOut, __LINE__);
214  TUASSERTE(bool, true, uut.addData(navGLOCStr12b, navOut));
215  fc.validateResults(navOut, __LINE__, 1, 0, 1);
216  TUASSERTE(bool, true, uut.addData(navGLOCStr25, navOut));
217  fc.validateResults(navOut, __LINE__);
218  TURETURN();
219 }
220 
221 
224 {
225  TUDEF("PNBGLOCNavDataFactory", "addData");
226  GLOCactoryCounter fc(testFramework);
228  gnsstk::NavDataPtrList navOut;
229  TUCATCH(uut.setTypeFilter({gnsstk::NavMessageType::Almanac}));
230  // Add nav pages in time order
231  TUASSERTE(bool, true, uut.addData(navGLOCStr10a, navOut));
232  fc.validateResults(navOut, __LINE__);
233  TUASSERTE(bool, true, uut.addData(navGLOCStr11a, navOut));
234  fc.validateResults(navOut, __LINE__);
235  TUASSERTE(bool, true, uut.addData(navGLOCStr12a, navOut));
236  fc.validateResults(navOut, __LINE__);
237  TUASSERTE(bool, true, uut.addData(navGLOCStr20, navOut));
238  fc.validateResults(navOut, __LINE__, 1, 1);
239  TUASSERTE(bool, true, uut.addData(navGLOCStr31, navOut));
240  fc.validateResults(navOut, __LINE__);
241  TUASSERTE(bool, true, uut.addData(navGLOCStr32, navOut));
242  fc.validateResults(navOut, __LINE__);
243  TUASSERTE(bool, true, uut.addData(navGLOCStr10b, navOut));
244  fc.validateResults(navOut, __LINE__);
245  TUASSERTE(bool, true, uut.addData(navGLOCStr11b, navOut));
246  fc.validateResults(navOut, __LINE__);
247  TUASSERTE(bool, true, uut.addData(navGLOCStr12b, navOut));
248  fc.validateResults(navOut, __LINE__);
249  TUASSERTE(bool, true, uut.addData(navGLOCStr25, navOut));
250  fc.validateResults(navOut, __LINE__);
251  TURETURN();
252 }
253 
254 
257 {
258  TUDEF("PNBGLOCNavDataFactory", "addData");
259  GLOCactoryCounter fc(testFramework);
261  gnsstk::NavDataPtrList navOut;
262  TUCATCH(uut.setTypeFilter({gnsstk::NavMessageType::Health}));
263  // Add nav pages in time order
264  TUASSERTE(bool, true, uut.addData(navGLOCStr10a, navOut));
265  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
266  TUASSERTE(bool, true, uut.addData(navGLOCStr11a, navOut));
267  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
268  TUASSERTE(bool, true, uut.addData(navGLOCStr12a, navOut));
269  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
270  TUASSERTE(bool, true, uut.addData(navGLOCStr20, navOut));
271  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
272  TUASSERTE(bool, true, uut.addData(navGLOCStr31, navOut));
273  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
274  TUASSERTE(bool, true, uut.addData(navGLOCStr32, navOut));
275  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
276  TUASSERTE(bool, true, uut.addData(navGLOCStr10b, navOut));
277  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
278  TUASSERTE(bool, true, uut.addData(navGLOCStr11b, navOut));
279  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
280  TUASSERTE(bool, true, uut.addData(navGLOCStr12b, navOut));
281  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
282  TUASSERTE(bool, true, uut.addData(navGLOCStr25, navOut));
283  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
284  TURETURN();
285 }
286 
287 
290 {
291  TUDEF("PNBGLOCNavDataFactory", "addData");
292  GLOCactoryCounter fc(testFramework);
294  gnsstk::NavDataPtrList navOut;
295  TUCATCH(uut.setTypeFilter({gnsstk::NavMessageType::TimeOffset}));
296  // Add nav pages in time order
297  TUASSERTE(bool, true, uut.addData(navGLOCStr10a, navOut));
298  fc.validateResults(navOut, __LINE__);
299  TUASSERTE(bool, true, uut.addData(navGLOCStr11a, navOut));
300  fc.validateResults(navOut, __LINE__);
301  TUASSERTE(bool, true, uut.addData(navGLOCStr12a, navOut));
302  fc.validateResults(navOut, __LINE__);
303  TUASSERTE(bool, true, uut.addData(navGLOCStr20, navOut));
304  fc.validateResults(navOut, __LINE__);
305  TUASSERTE(bool, true, uut.addData(navGLOCStr31, navOut));
306  fc.validateResults(navOut, __LINE__);
307  TUASSERTE(bool, true, uut.addData(navGLOCStr32, navOut));
308  fc.validateResults(navOut, __LINE__);
309  TUASSERTE(bool, true, uut.addData(navGLOCStr10b, navOut));
310  fc.validateResults(navOut, __LINE__);
311  TUASSERTE(bool, true, uut.addData(navGLOCStr11b, navOut));
312  fc.validateResults(navOut, __LINE__);
313  TUASSERTE(bool, true, uut.addData(navGLOCStr12b, navOut));
314  fc.validateResults(navOut, __LINE__);
315  TUASSERTE(bool, true, uut.addData(navGLOCStr25, navOut));
316  fc.validateResults(navOut, __LINE__, 1, 0, 0, 1);
317  TURETURN();
318 }
319 
320 
323 {
324  TUDEF("PNBGLOCNavDataFactory", "addData");
325  GLOCactoryCounter fc(testFramework);
327  gnsstk::NavDataPtrList navOut;
328  TUCATCH(uut.setTypeFilter({gnsstk::NavMessageType::Health,
329  gnsstk::NavMessageType::Ephemeris}));
330  // Add nav pages in time order
331  TUASSERTE(bool, true, uut.addData(navGLOCStr10a, navOut));
332  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
333  TUASSERTE(bool, true, uut.addData(navGLOCStr11a, navOut));
334  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
335  TUASSERTE(bool, true, uut.addData(navGLOCStr12a, navOut));
336  fc.validateResults(navOut, __LINE__, 2, 0, 1, 0, 1);
337  TUASSERTE(bool, true, uut.addData(navGLOCStr20, navOut));
338  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
339  TUASSERTE(bool, true, uut.addData(navGLOCStr31, navOut));
340  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
341  TUASSERTE(bool, true, uut.addData(navGLOCStr32, navOut));
342  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
343  TUASSERTE(bool, true, uut.addData(navGLOCStr10b, navOut));
344  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
345  TUASSERTE(bool, true, uut.addData(navGLOCStr11b, navOut));
346  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
347  TUASSERTE(bool, true, uut.addData(navGLOCStr12b, navOut));
348  fc.validateResults(navOut, __LINE__, 2, 0, 1, 0, 1);
349  TUASSERTE(bool, true, uut.addData(navGLOCStr25, navOut));
350  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
351  TURETURN();
352 }
353 
354 
357 {
358  TUDEF("PNBGLOCNavDataFactory", "addData");
359  GLOCactoryCounter fc(testFramework);
361  gnsstk::NavDataPtrList navOut;
362  TUCATCH(uut.setTypeFilter({gnsstk::NavMessageType::Health,
363  gnsstk::NavMessageType::Almanac}));
364  // Add nav pages in time order
365  TUASSERTE(bool, true, uut.addData(navGLOCStr10a, navOut));
366  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
367  TUASSERTE(bool, true, uut.addData(navGLOCStr11a, navOut));
368  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
369  TUASSERTE(bool, true, uut.addData(navGLOCStr12a, navOut));
370  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
371  TUASSERTE(bool, true, uut.addData(navGLOCStr20, navOut));
372  fc.validateResults(navOut, __LINE__, 2, 1, 0, 0, 1);
373  TUASSERTE(bool, true, uut.addData(navGLOCStr31, navOut));
374  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
375  TUASSERTE(bool, true, uut.addData(navGLOCStr32, navOut));
376  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
377  TUASSERTE(bool, true, uut.addData(navGLOCStr10b, navOut));
378  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
379  TUASSERTE(bool, true, uut.addData(navGLOCStr11b, navOut));
380  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
381  TUASSERTE(bool, true, uut.addData(navGLOCStr12b, navOut));
382  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
383  TUASSERTE(bool, true, uut.addData(navGLOCStr25, navOut));
384  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
385  TURETURN();
386 }
387 
388 
391 {
392  TUDEF("PNBGLOCNavDataFactory", "processEph");
393  GLOCactoryCounter fc(testFramework);
395  gnsstk::NavMessageID nmidExp(
401  gnsstk::CommonTime toeExp = gnsstk::CivilTime(2022,5,3,10,15,0,
404  gnsstk::CommonTime endExp = toeExp + 900.0;
405  gnsstk::NavDataPtrList navOut;
406  gnsstk::GLOCNavEph *eph;
408  TUASSERTE(bool, true, uut.processEph(10, navGLOCStr10a, navOut));
409  fc.validateResults(navOut, __LINE__);
410  TUASSERTE(bool, true, uut.processEph(11, navGLOCStr11a, navOut));
411  fc.validateResults(navOut, __LINE__);
412  TUASSERTE(bool, true, uut.processEph(12, navGLOCStr12a, navOut));
413  for (const auto& i : navOut)
414  {
415  if ((eph = dynamic_cast<gnsstk::GLOCNavEph*>(i.get())) != nullptr)
416  {
417  // NavData fields
420  TUASSERTE(gnsstk::NavMessageID, nmidExp, eph->signal);
421  // OrbitData has no data of its own
422  // GLOCNavData fields
423  TUASSERTE(gnsstk::CommonTime, beginExp, eph->beginFit);
424  TUASSERTE(gnsstk::CommonTime, endExp, eph->endFit);
425  // GLOCNavHeader fields
428  TUASSERTE(uint16_t, 15795, eph->header.TS);
429  TUASSERTE(unsigned, 11, eph->header.svid);
430  TUASSERTE(bool, true, eph->header.svUnhealthy);
431  TUASSERTE(bool, false, eph->header.dataInvalid);
433  eph->header.health);
434  TUASSERTE(unsigned, 0, eph->header.P1);
435  TUASSERTE(bool, false, eph->header.P2);
436  TUASSERTE(unsigned, 0, eph->header.KP);
437  TUASSERTE(bool, false, eph->header.A);
440  TUASSERTE(uint16_t, 15796, eph->header11.TS);
441  TUASSERTE(unsigned, 11, eph->header11.svid);
442  TUASSERTE(bool, true, eph->header11.svUnhealthy);
443  TUASSERTE(bool, false, eph->header11.dataInvalid);
445  eph->header11.health);
446  TUASSERTE(unsigned, 0, eph->header11.P1);
447  TUASSERTE(bool, false, eph->header11.P2);
448  TUASSERTE(unsigned, 0, eph->header11.KP);
449  TUASSERTE(bool, false, eph->header11.A);
452  TUASSERTE(uint16_t, 15797, eph->header12.TS);
453  TUASSERTE(unsigned, 11, eph->header12.svid);
454  TUASSERTE(bool, true, eph->header12.svUnhealthy);
455  TUASSERTE(bool, false, eph->header12.dataInvalid);
457  eph->header12.health);
458  TUASSERTE(unsigned, 0, eph->header12.P1);
459  TUASSERTE(bool, false, eph->header12.P2);
460  TUASSERTE(unsigned, 0, eph->header12.KP);
461  TUASSERTE(bool, false, eph->header12.A);
462  // GLOCNavEph fields
463  TUASSERTE(gnsstk::CommonTime, toeExp, eph->Toe);
464  TUASSERTE(unsigned, 7, eph->N4);
465  TUASSERTE(uint16_t, 854, eph->NT);
467  eph->Mj);
468  TUASSERTE(unsigned, 5, eph->PS);
469  TUASSERTE(uint16_t, 47700, eph->tb);
470  TUASSERTE(unsigned, 0, eph->EjE);
471  TUASSERTE(unsigned, 0, eph->EjT);
473  eph->RjE);
475  eph->RjT);
476  TUASSERTE(int, 3, eph->FjE);
477  TUASSERTE(int, 0, eph->FjT);
478  TUASSERTFE(-3.9905342418933287263e-05, eph->clkBias);
479  TUASSERTFE(-9.201528428093297407e-13, eph->freqBias);
480  TUASSERTFE(0.0, eph->driftRate);
481  TUASSERTFE(1.3969838619232177734e-09, eph->tauc);
482  TUASSERTFE(0.0, eph->taucdot);
483  TUASSERTFE(-4131.7772378921508789, eph->pos[0]);
484  TUASSERTFE(11290.402944564819336, eph->pos[1]);
485  TUASSERTFE(-22486.111017227172852, eph->pos[2]);
486  TUASSERTFE(-2.0378112019971013069, eph->vel[0]);
487  TUASSERTFE(-2.3122485717758536339, eph->vel[1]);
488  TUASSERTFE(-0.78744945116341114044, eph->vel[2]);
489  TUASSERTFE(-4.9294612836092710495e-10, eph->acc[0]);
490  TUASSERTFE(-2.1263986127451062202e-09, eph->acc[1]);
491  TUASSERTFE(2.0027073333039879799e-09, eph->acc[2]);
492  TUASSERTFE(-1.427734375, eph->apcOffset[0]);
493  TUASSERTFE(0.005859375, eph->apcOffset[1]);
494  TUASSERTFE(0.0, eph->apcOffset[2]);
495  TUASSERTFE(1.0186340659856796265e-10, eph->tauDelta);
496  TUASSERTFE(4.889443516731262207e-08, eph->tauGPS);
498  TUASSERTFE(60.0, eph->step);
499  }
500  }
501  fc.validateResults(navOut, __LINE__, 1, 0, 1);
502  TURETURN();
503 }
504 
505 
508 {
509  TUDEF("PNBGLOCNavDataFactory", "processAlm");
510  GLOCactoryCounter fc(testFramework);
512  gnsstk::NavMessageID nmidExp(
518  gnsstk::CommonTime toaExp = gnsstk::GLONASSTime(7, 853, 33143);
521  gnsstk::NavDataPtrList navOut;
522  gnsstk::GLOCNavAlm *alm;
524  TUASSERTE(bool, true, uut.processAlm(navGLOCStr20, navOut));
525  for (const auto& i : navOut)
526  {
527  if ((alm = dynamic_cast<gnsstk::GLOCNavAlm*>(i.get())) != nullptr)
528  {
529  // NavData fields
532  TUASSERTE(gnsstk::NavMessageID, nmidExp, alm->signal);
533  // OrbitData has no data of its own
534  // GLOCNavData fields
535  TUASSERTE(gnsstk::CommonTime, beginExp, alm->beginFit);
536  TUASSERTE(gnsstk::CommonTime, endExp, alm->endFit);
537  // GLOCNavHeader fields
540  TUASSERTE(uint16_t, 15798, alm->header.TS);
541  TUASSERTE(unsigned, 21, alm->header.svid);
542  TUASSERTE(bool, true, alm->header.svUnhealthy);
543  TUASSERTE(bool, false, alm->header.dataInvalid);
545  alm->header.health);
546  TUASSERTE(unsigned, 0, alm->header.P1);
547  TUASSERTE(bool, false, alm->header.P2);
548  TUASSERTE(unsigned, 0, alm->header.KP);
549  TUASSERTE(bool, false, alm->header.A);
550  // GLOCNavAlm
551  TUASSERTE(gnsstk::CommonTime, toaExp, alm->Toa);
553  alm->orbitType);
554  TUASSERTE(unsigned, 2, alm->numSVs);
555  TUASSERTE(unsigned, 4, alm->aoa);
556  TUASSERTE(unsigned, 1, alm->statusReg);
558  alm->satType);
559  TUASSERTFE(0.00029850006103515625, alm->tau);
560  TUASSERTFE(0.285129547119140625, alm->lambda);
561  TUASSERTFE(33143, alm->tLambda);
562  TUASSERTFE(0.0054931640625, alm->deltai);
563  TUASSERTFE(0.000415802001953125, alm->ecc);
564  TUASSERTFE(0.85430908203125, alm->omega);
565  TUASSERTFE(0.263671875, alm->deltaT);
566  TUASSERTFE(0.0, alm->deltaTdot);
567  }
568  }
569  fc.validateResults(navOut, __LINE__, 1, 1);
570  TURETURN();
571 }
572 
573 
576 {
577  TUDEF("PNBGLOCNavDataFactory", "processEarth");
578  GLOCactoryCounter fc(testFramework);
580  gnsstk::NavMessageID nmidExp(
586  gnsstk::CommonTime refExp = gnsstk::GLONASSTime(7, 853, 0);
587  gnsstk::NavDataPtrList navOut;
588  gnsstk::GLOCNavIono *iono;
590  // make sure timeAcc is set
591  TUASSERTE(bool, true, uut.processEph(10, navGLOCStr10b, navOut));
592  TUASSERTE(bool, true, uut.processEarth(navGLOCStr25, navOut));
593  for (const auto& i : navOut)
594  {
595  if ((iono = dynamic_cast<gnsstk::GLOCNavIono*>(i.get())) != nullptr)
596  {
597  // NavData fields
600  TUASSERTE(gnsstk::NavMessageID, nmidExp, iono->signal);
601  // IonoNavData has no fields of its own
602  // GLOCNavIono fields
603  TUASSERTFE(1, iono->peakTECF2);
604  TUASSERTFE(122, iono->solarIndex);
605  TUASSERTFE(24, iono->geoIndex);
606  }
607  else if ((tim = dynamic_cast<gnsstk::GLOCNavUT1TimeOffset*>(i.get()))
608  != nullptr)
609  {
610  // NavData fields
613  TUASSERTE(gnsstk::NavMessageID, nmidExp, tim->signal);
614  // TimeOffsetData has no fields of its own
615  // GLOCNavUT1TimeOffset
616  TUASSERTFE(-0.096923828125, tim->B0);
617  TUASSERTFE(0.0005950927734375, tim->B1);
618  TUASSERTFE(0, tim->B2);
619  TUASSERTE(gnsstk::CommonTime, refExp, tim->refTime);
620  TUASSERTE(unsigned, 853, tim->NB);
621  TUASSERTFE(-37, tim->UTCTAI);
622  }
623  }
624  fc.validateResults(navOut, __LINE__, 2, 0, 0, 1, 0, 1);
625  TURETURN();
626 }
627 
628 
631 {
632  TUDEF("PNBGLOCNavDataFactory", "processLTDMP");
633  // LTDMP is metadata, so it's processed a bit differently
634  TestClass uut;
635  const std::map<gnsstk::NavSatelliteID, gnsstk::GLOCNavLTDMP>&
636  mapRef(uut.getLTDMP());
637  gnsstk::NavMessageID nmidExp(
643  gnsstk::CommonTime refExp = gnsstk::GLONASSTime(7, 853, 0);
644  TUASSERTE(bool, true, uut.processLTDMP(31, navGLOCStr31));
645  TUASSERTE(unsigned, 1, mapRef.size());
646  const auto& it1 = mapRef.find(nmidExp);
647  TUASSERT(it1 != mapRef.end());
648  if (it1 != mapRef.end())
649  {
650  // GLOCNavHeader fields
651  TUASSERTE(gnsstk::CommonTime, navGLOCStr31ct, it1->second.header31.xmit);
653  it1->second.header31.preamble);
654  TUASSERTE(uint16_t, 15803, it1->second.header31.TS);
655  TUASSERTE(unsigned, 11, it1->second.header31.svid);
656  TUASSERTE(bool, true, it1->second.header31.svUnhealthy);
657  TUASSERTE(bool, false, it1->second.header31.dataInvalid);
658  // We don't set the interpreted health here, but there's no
659  // reason it needs to be left Unknown.
661  it1->second.header31.health);
662  TUASSERTE(unsigned, 0, it1->second.header31.P1);
663  TUASSERTE(bool, false, it1->second.header31.P2);
664  TUASSERTE(unsigned, 0, it1->second.header31.KP);
665  TUASSERTE(bool, false, it1->second.header31.A);
666  // GLOCNavLTDMP fields
667  TUASSERTE(uint16_t, 47700, it1->second.tb31);
668  TUASSERTE(uint16_t, 65535, it1->second.tb32);
669  TUASSERTFE(0.0, it1->second.dax0);
670  TUASSERTFE(0.0, it1->second.day0);
671  TUASSERTFE(0.0, it1->second.daz0);
672  TUASSERTFE(0.0, it1->second.ax1);
673  TUASSERTFE(0.0, it1->second.ay1);
674  TUASSERTFE(0.0, it1->second.az1);
675  TUASSERTFE(0.0, it1->second.ax2);
676  TUASSERTFE(0.0, it1->second.ay2);
677  TUASSERTFE(0.0, it1->second.az2);
678  TUASSERTE(int, 1, std::isnan(it1->second.ax3));
679  TUASSERTE(int, 1, std::isnan(it1->second.ay3));
680  TUASSERTE(int, 1, std::isnan(it1->second.az3));
681  TUASSERTE(int, 1, std::isnan(it1->second.ax4));
682  TUASSERTE(int, 1, std::isnan(it1->second.ay4));
683  TUASSERTE(int, 1, std::isnan(it1->second.az4));
684  }
685  TUASSERTE(bool, true, uut.processLTDMP(32, navGLOCStr32));
686  TUASSERTE(unsigned, 1, mapRef.size());
687  const auto& it2 = mapRef.find(nmidExp);
688  TUASSERT(it2 != mapRef.end());
689  if (it2 != mapRef.end())
690  {
691  // GLOCNavHeader fields
692  TUASSERTE(gnsstk::CommonTime, navGLOCStr32ct, it2->second.header32.xmit);
694  it2->second.header32.preamble);
695  TUASSERTE(uint16_t, 15804, it2->second.header32.TS);
696  TUASSERTE(unsigned, 11, it2->second.header32.svid);
697  TUASSERTE(bool, true, it2->second.header32.svUnhealthy);
698  TUASSERTE(bool, false, it2->second.header32.dataInvalid);
699  // We don't set the interpreted health here, but there's no
700  // reason it needs to be left Unknown.
702  it2->second.header32.health);
703  TUASSERTE(unsigned, 0, it2->second.header32.P1);
704  TUASSERTE(bool, false, it2->second.header32.P2);
705  TUASSERTE(unsigned, 0, it2->second.header32.KP);
706  TUASSERTE(bool, false, it2->second.header32.A);
707  // GLOCNavLTDMP fields
708  TUASSERTE(uint16_t, 47700, it1->second.tb31);
709  TUASSERTE(uint16_t, 47700, it1->second.tb32);
710  TUASSERTFE(0.0, it1->second.dax0);
711  TUASSERTFE(0.0, it1->second.day0);
712  TUASSERTFE(0.0, it1->second.daz0);
713  TUASSERTFE(0.0, it1->second.ax1);
714  TUASSERTFE(0.0, it1->second.ay1);
715  TUASSERTFE(0.0, it1->second.az1);
716  TUASSERTFE(0.0, it1->second.ax2);
717  TUASSERTFE(0.0, it1->second.ay2);
718  TUASSERTFE(0.0, it1->second.az2);
719  TUASSERTFE(0.0, it1->second.ax3);
720  TUASSERTFE(0.0, it1->second.ay3);
721  TUASSERTFE(0.0, it1->second.az3);
722  TUASSERTFE(0.0, it1->second.ax4);
723  TUASSERTFE(0.0, it1->second.ay4);
724  TUASSERTFE(0.0, it1->second.az4);
725  }
726  TURETURN();
727 }
728 
729 
732 {
733  TUDEF("PNBGLOCNavDataFactory", "processHealth");
734  GLOCactoryCounter fc(testFramework);
736  gnsstk::NavMessageID nmidExp(
742  gnsstk::NavDataPtrList navOut;
744  TUASSERTE(bool, true, uut.processHealth(navGLOCStr20, navOut));
745  for (const auto& i : navOut)
746  {
747  if ((hea = dynamic_cast<gnsstk::GLOCNavHealth*>(i.get())) != nullptr)
748  {
749  // NavData fields
751  TUASSERTE(gnsstk::NavMessageID, nmidExp, hea->signal);
752  // NavHealthData has no data of its own
753  // GLOCNavHealth
754  TUASSERTE(bool, true, hea->Hj);
755  TUASSERTE(bool, false, hea->lj);
756  }
757  }
758  fc.validateResults(navOut, __LINE__, 1, 0, 0, 0, 1);
759  TURETURN();
760 }
761 
762 
763 int main()
764 {
765  PNBGLOCNavDataFactory_T testClass;
766  unsigned errorTotal = 0;
767 
768  errorTotal += testClass.addDataAllTest();
769  errorTotal += testClass.addDataAlmanacTest();
770  errorTotal += testClass.addDataEphemerisTest();
771  errorTotal += testClass.addDataHealthTest();
772  errorTotal += testClass.addDataTimeTest();
773  errorTotal += testClass.addDataEphHealthTest();
774  errorTotal += testClass.addDataAlmHealthTest();
775  errorTotal += testClass.processEphTest();
776  errorTotal += testClass.processAlmTest();
777  errorTotal += testClass.processEarthTest();
778  errorTotal += testClass.processLTDMPTest();
779  errorTotal += testClass.processHealthTest();
780 
781  std::cout << "Total Failures for " << __FILE__ << ": " << errorTotal
782  << std::endl;
783 
784  return errorTotal;
785 }
gnsstk::GLOCNavEph::Mj
GLOCSatType Mj
What satellite j is and what it transmits.
Definition: GLOCNavEph.hpp:138
navGLOCStr31
gnsstk::PackedNavBitsPtr navGLOCStr31
Definition: GLOCNavTestDataDecl.hpp:48
YDSTime.hpp
gnsstk::GLOCNavEph::RjT
GLOCRegime RjT
Regime for generation of clock data.
Definition: GLOCNavEph.hpp:144
PNBGLOCNavDataFactory_T::processLTDMPTest
unsigned processLTDMPTest()
Test processLTDMP method.
Definition: PNBGLOCNavDataFactory_T.cpp:630
navGLOCStr32ct
gnsstk::CommonTime navGLOCStr32ct
Definition: GLOCNavTestDataDecl.hpp:59
gnsstk::NavMessageID
Class used to identify/categorize navigation message data.
Definition: NavMessageID.hpp:52
navGLOCStr20ct
gnsstk::CommonTime navGLOCStr20ct
Definition: GLOCNavTestDataDecl.hpp:56
gnsstk::GLOCNavEph::vel
Triple vel
Satellite velocity at tb in km/s.
Definition: GLOCNavEph.hpp:154
gnsstk::GLOCNavHeader::svid
uint8_t svid
Subject SV ID (j).
Definition: GLOCNavHeader.hpp:86
gnsstk::GLOCNavEph
Definition: GLOCNavEph.hpp:57
gnsstk::GLOCNavUT1TimeOffset
Definition: GLOCNavUT1TimeOffset.hpp:58
gnsstk::PackedNavBitsPtr
std::shared_ptr< PackedNavBits > PackedNavBitsPtr
Managed pointer for passing PackedNavBits around.
Definition: PackedNavBits.hpp:66
gnsstk::GLOCNavEph::PS
uint8_t PS
Number of strings from this type 10 to the next.
Definition: GLOCNavEph.hpp:139
gnsstk::GLOCNavAlm::numSVs
unsigned numSVs
Number of SVs in complete almanac (NS).
Definition: GLOCNavAlm.hpp:131
navGLOCStr12act
gnsstk::CommonTime navGLOCStr12act
Definition: GLOCNavTestDataDecl.hpp:55
PNBGLOCNavDataFactory_T::processEphTest
unsigned processEphTest()
Test processEph method.
Definition: PNBGLOCNavDataFactory_T.cpp:390
gnsstk::GLOCNavAlm::orbitType
GLOCOrbitType orbitType
Orbit type.
Definition: GLOCNavAlm.hpp:130
PNBGLOCNavDataFactory_T::addDataAlmHealthTest
unsigned addDataAlmHealthTest()
Another combo test that makes sure alm health is processed correctly.
Definition: PNBGLOCNavDataFactory_T.cpp:356
gnsstk::GLOCNavEph::acc
Triple acc
Satellite acceleration at tb in km/s**2.
Definition: GLOCNavEph.hpp:155
TUCATCH
#define TUCATCH(STATEMENT)
Definition: TestUtil.hpp:193
gnsstk::GLOCNavEph::EjT
uint8_t EjT
Age of clock (6-hour intervals).
Definition: GLOCNavEph.hpp:142
gnsstk::GLOCNavIono::geoIndex
double geoIndex
Geomagnetic activity index value (c_Ap).
Definition: GLOCNavIono.hpp:84
gnsstk::PNBNavDataFactory::setTypeFilter
virtual void setTypeFilter(const NavMessageTypeSet &nmts)
Definition: PNBNavDataFactory.cpp:54
navGLOCStr20
gnsstk::PackedNavBitsPtr navGLOCStr20
Definition: GLOCNavTestDataDecl.hpp:46
gnsstk::GLOCNavEph::EjE
uint8_t EjE
Age of ephemeris (6-hour intervals).
Definition: GLOCNavEph.hpp:141
gnsstk::gloc::valPreamble
@ valPreamble
Definition: GLOCBits.hpp:79
PNBGLOCNavDataFactory_T::addDataEphemerisTest
unsigned addDataEphemerisTest()
Test addData with ephemeris selected only.
Definition: PNBGLOCNavDataFactory_T.cpp:190
gnsstk::GLOCNavEph::pos
Triple pos
Satellite position at tb in km.
Definition: GLOCNavEph.hpp:153
gnsstk::GLOCNavIono
Class containing data elements unique to GPS LNav ionospheric data.
Definition: GLOCNavIono.hpp:50
navGLOCStr12b
gnsstk::PackedNavBitsPtr navGLOCStr12b
Definition: GLOCNavTestDataDecl.hpp:52
gnsstk::GLOCNavEph::Toe
CommonTime Toe
Reference time, combining N4, NT and tb.
Definition: GLOCNavEph.hpp:135
gnsstk::GLOCNavEph::tauDelta
double tauDelta
Offset of L3OCP time to L3OCD time.
Definition: GLOCNavEph.hpp:159
gnsstk::GLOCNavEph::RjE
GLOCRegime RjE
Regime for generation of ephemeris data.
Definition: GLOCNavEph.hpp:143
gnsstk::GLOCNavData::header
GLOCNavHeader header
Common data.
Definition: GLOCNavData.hpp:65
TUASSERTE
#define TUASSERTE(TYPE, EXP, GOT)
Definition: TestUtil.hpp:81
gnsstk::GLOCNavHeader::dataInvalid
bool dataInvalid
Data validity flag (lj, false=valid).
Definition: GLOCNavHeader.hpp:88
gnsstk::NavMessageID::messageType
NavMessageType messageType
Definition: NavMessageID.hpp:97
gnsstk::NavSatelliteID
Definition: NavSatelliteID.hpp:57
gnsstk::GLOCNavUT1TimeOffset::B1
double B1
Time drift in s/s.
Definition: GLOCNavUT1TimeOffset.hpp:104
gnsstk::GLOCNavHeader::preamble
uint32_t preamble
20 bit preamble for the message.
Definition: GLOCNavHeader.hpp:79
gnsstk::GLOCNavHeader::TS
uint16_t TS
Time stamp (3 second counter for each string).
Definition: GLOCNavHeader.hpp:80
gnsstk::GLOCNavAlm::deltaT
double deltaT
Draconic orbital period offset.
Definition: GLOCNavAlm.hpp:142
gnsstk::GLOCNavUT1TimeOffset::B0
double B0
Time bias in seconds.
Definition: GLOCNavUT1TimeOffset.hpp:103
GLOCNavIono.hpp
navGLOCStr32
gnsstk::PackedNavBitsPtr navGLOCStr32
Definition: GLOCNavTestDataDecl.hpp:49
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
gnsstk::GLOCNavEph::apcOffset
Triple apcOffset
L3OC APC offset from center of mass.
Definition: GLOCNavEph.hpp:158
gnsstk::PNBGLOCNavDataFactory::processEph
bool processEph(unsigned long stringID, const PackedNavBitsPtr &navIn, NavDataPtrList &navOut)
Definition: PNBGLOCNavDataFactory.cpp:264
gnsstk::GLOCRegime::Prediction
@ Prediction
navGLOCStr11a
gnsstk::PackedNavBitsPtr navGLOCStr11a
Definition: GLOCNavTestDataDecl.hpp:44
gnsstk::StringUtils::asString
std::string asString(IonexStoreStrategy e)
Convert a IonexStoreStrategy to a whitespace-free string name.
Definition: IonexStoreStrategy.cpp:46
PNBGLOCNavDataFactory_T::processEarthTest
unsigned processEarthTest()
Test processEarth method.
Definition: PNBGLOCNavDataFactory_T.cpp:575
gnsstk::CommonTime::setTimeSystem
CommonTime & setTimeSystem(TimeSystem timeSystem)
Definition: CommonTime.hpp:195
gnsstk::GLOCNavAlm::tLambda
double tLambda
Instant in Moscow time when passing lambda.
Definition: GLOCNavAlm.hpp:138
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::GLOCSatType::GLONASS_K1
@ GLONASS_K1
GLONASS-K1 transmits L3 CDMA.
PNBGLOCNavDataFactory_T::addDataTimeTest
unsigned addDataTimeTest()
Test addData with time offset data selected only.
Definition: PNBGLOCNavDataFactory_T.cpp:289
gnsstk::PNBGLOCNavDataFactory::processHealth
bool processHealth(const PackedNavBitsPtr &navIn, NavDataPtrList &navOut)
Definition: PNBGLOCNavDataFactory.cpp:244
gnsstk::GLOCNavAlm::statusReg
unsigned statusReg
Status register (SRA 5.3.2.7).
Definition: GLOCNavAlm.hpp:134
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
gnsstk::GLOCNavAlm::aoa
unsigned aoa
Age of almanac (EA).
Definition: GLOCNavAlm.hpp:132
PNBGLOCNavDataFactory_T::addDataEphHealthTest
unsigned addDataEphHealthTest()
One additional combo test.
Definition: PNBGLOCNavDataFactory_T.cpp:322
GLOCNavEph.hpp
PNBGLOCNavDataFactory_T::processAlmTest
unsigned processAlmTest()
Test processAlm method.
Definition: PNBGLOCNavDataFactory_T.cpp:507
gnsstk
For Sinex::InputHistory.
Definition: BasicFramework.cpp:50
gnsstk::NavType::GPSLNAV
@ GPSLNAV
navGLOCStr25
gnsstk::PackedNavBitsPtr navGLOCStr25
Definition: GLOCNavTestDataDecl.hpp:47
PNBGLOCNavDataFactory.hpp
gnsstk::GLOCNavEph::freqBias
double freqBias
Satellite relative frequency bias (gamma^j).
Definition: GLOCNavEph.hpp:148
gnsstk::NavData::timeStamp
CommonTime timeStamp
Definition: NavData.hpp:173
GLOCNavAlm.hpp
gnsstk::GLOCNavEph::header11
GLOCNavHeader header11
Header (incl xmit time) data from string 11.
Definition: GLOCNavEph.hpp:163
gnsstk::ObservationType::NavMsg
@ NavMsg
Navigation Message data.
gnsstk::SatelliteSystem::GPS
@ GPS
gnsstk::GLONASSTime
Definition: GLONASSTime.hpp:59
navGLOCStr11act
gnsstk::CommonTime navGLOCStr11act
Definition: GLOCNavTestDataDecl.hpp:54
gnsstk::TrackingCode::CA
@ CA
Legacy GPS civil code.
gnsstk::CommonTime::END_OF_TIME
static const GNSSTK_EXPORT CommonTime END_OF_TIME
latest representable CommonTime
Definition: CommonTime.hpp:104
gnsstk::GLOCNavAlm::satType
GLOCSatType satType
What satellite j is and what it transmits.
Definition: GLOCNavAlm.hpp:135
navGLOCStr10a
gnsstk::PackedNavBitsPtr navGLOCStr10a
Definition: GLOCNavTestDataDecl.hpp:43
gnsstk::GLOCSatType
GLOCSatType
Values for Word M in the ephemeris (immediate) and almanac data.
Definition: GLOCSatType.hpp:47
gnsstk::GLOCNavAlm::deltai
double deltai
Inclination offset from 64.8 degrees (semicirc).
Definition: GLOCNavAlm.hpp:139
TUASSERT
#define TUASSERT(EXPR)
Definition: TestUtil.hpp:63
gnsstk::GLOCNavHeader::A
bool A
true=time correction planned (see ICD 4.2.2.10).
Definition: GLOCNavHeader.hpp:93
gnsstk::SVHealth::Unknown
@ Unknown
Health is not known or is uninitialized.
FactoryCounter
Definition: FactoryCounter.hpp:75
PNBGLOCNavDataFactory_T::PNBGLOCNavDataFactory_T
PNBGLOCNavDataFactory_T()
Definition: PNBGLOCNavDataFactory_T.cpp:137
TestUtil.hpp
PNBGLOCNavDataFactory_T::addDataAllTest
unsigned addDataAllTest()
Definition: PNBGLOCNavDataFactory_T.cpp:144
gnsstk::GLOCNavUT1TimeOffset::B2
double B2
Time drift rate in s/s**2.
Definition: GLOCNavUT1TimeOffset.hpp:105
gnsstk::GLOCNavAlm
Definition: GLOCNavAlm.hpp:61
gnsstk::GLOCNavEph::taucdot
double taucdot
Rate of correction for GLONASS to Moscow time.
Definition: GLOCNavEph.hpp:151
gnsstk::NavType::GloCivilC
@ GloCivilC
gnsstk::GLOCNavUT1TimeOffset::NB
unsigned NB
Day since the most recent leap year-aligned 4 years.
Definition: GLOCNavUT1TimeOffset.hpp:102
gnsstk::CarrierBand::G3
@ G3
GLONASS G3.
TURETURN
#define TURETURN()
Definition: TestUtil.hpp:232
gnsstk::GLOCNavAlm::ecc
double ecc
Eccentricity at tlambdaA.
Definition: GLOCNavAlm.hpp:140
gnsstk::GLOCNavEph::clkBias
double clkBias
Satellite clock bias in sec (tau^j).
Definition: GLOCNavEph.hpp:147
gnsstk::GLOCNavEph::tauGPS
double tauGPS
Fractional part of offset from GPS to GLONASS time.
Definition: GLOCNavEph.hpp:160
BunkISC::BunkISC
BunkISC()
Definition: PNBGLOCNavDataFactory_T.cpp:59
gnsstk::GLOCNavIono::solarIndex
double solarIndex
Solar activity index value (c_F10.7).
Definition: GLOCNavIono.hpp:83
gnsstk::ObsID
Definition: ObsID.hpp:82
GLOCNavTestDataDef.hpp
gnsstk::GLOCNavIono::peakTECF2
double peakTECF2
Factor of peak TEC of F2 layer (c_A).
Definition: GLOCNavIono.hpp:82
GLOCBits.hpp
gnsstk::NavMessageType::Iono
@ Iono
Ionospheric correction data.
gnsstk::GLOCNavHeader::P1
uint8_t P1
SV call to ground control.
Definition: GLOCNavHeader.hpp:90
gnsstk::PNBGLOCNavDataFactory::processAlm
bool processAlm(const PackedNavBitsPtr &navIn, NavDataPtrList &navOut)
Definition: PNBGLOCNavDataFactory.cpp:443
navGLOCStr11b
gnsstk::PackedNavBitsPtr navGLOCStr11b
Definition: GLOCNavTestDataDecl.hpp:51
PNBGLOCNavDataFactory_T::processHealthTest
unsigned processHealthTest()
Test processHealth method.
Definition: PNBGLOCNavDataFactory_T.cpp:731
gnsstk::PNBGLOCNavDataFactory::processEarth
bool processEarth(const PackedNavBitsPtr &navIn, NavDataPtrList &navOut)
Definition: PNBGLOCNavDataFactory.cpp:202
gnsstk::GLOCNavEph::tauc
double tauc
Correction for GLONASS to Moscow time.
Definition: GLOCNavEph.hpp:150
gnsstk::CommonTime
Definition: CommonTime.hpp:84
gnsstk::PNBGLOCNavDataFactory::addData
bool addData(const PackedNavBitsPtr &navIn, NavDataPtrList &navOut, double cadence=-1) override
Definition: PNBGLOCNavDataFactory.cpp:71
gnsstk::GLOCNavHealth::Hj
bool Hj
The H^j health bit (SV health).
Definition: GLOCNavHealth.hpp:78
gnsstk::GLOCNavEph::FjE
int8_t FjE
Accuracy factors dependent on ephemeris errors.
Definition: GLOCNavEph.hpp:145
gnsstk::GLOCNavAlm::tau
double tau
Time correction from L3OCd to GLONASS.
Definition: GLOCNavAlm.hpp:136
gnsstk::GLOCRegime
GLOCRegime
Regime for data generation (RjE, RjT, see ICD 5.2.2.8).
Definition: GLOCRegime.hpp:47
gnsstk::NavFit::beginFit
CommonTime beginFit
Time at beginning of fit interval.
Definition: NavFit.hpp:54
gnsstk::TrackingCode::L3OCD
@ L3OCD
Glonass L3 I code.
gnsstk::CarrierBand::L1
@ L1
GPS L1, Galileo E1, SBAS L1, QZSS L1, BeiDou L1.
gnsstk::GLOCNavAlm::Toa
CommonTime Toa
Reference time for almanac.
Definition: GLOCNavAlm.hpp:129
CivilTime.hpp
navGLOCStr10act
gnsstk::CommonTime navGLOCStr10act
Definition: GLOCNavTestDataDecl.hpp:53
TUDEF
#define TUDEF(CLASS, METHOD)
Definition: TestUtil.hpp:56
gnsstk::GLOCNavEph::FjT
int8_t FjT
Accuracy factors dependent on clock errors.
Definition: GLOCNavEph.hpp:146
navGLOCStr25ct
gnsstk::CommonTime navGLOCStr25ct
Definition: GLOCNavTestDataDecl.hpp:57
navGLOCStr31ct
gnsstk::CommonTime navGLOCStr31ct
Definition: GLOCNavTestDataDecl.hpp:58
gnsstk::TimeSystem::GLO
@ GLO
GLONASS system time (aka UTC(SU))
gnsstk::GLOCSatType::GLONASS_M
@ GLONASS_M
GLONASS-M with L3 nav payload transmits L3 CDMA.
gnsstk::GLOCNavHeader::health
SVHealth health
SV health status.
Definition: GLOCNavHeader.hpp:89
gnsstk::PNBGLOCNavDataFactory
Definition: PNBGLOCNavDataFactory.hpp:68
GLONASSTime.hpp
std::operator<<
std::ostream & operator<<(std::ostream &s, gnsstk::StringUtils::FFLead v)
Definition: FormattedDouble_T.cpp:44
BunkISC
GLONASS doesn't transmit ISC data, so make up a class for FactoryCounter.
Definition: PNBGLOCNavDataFactory_T.cpp:56
PNBGLOCNavDataFactory_T
Definition: PNBGLOCNavDataFactory_T.cpp:103
gnsstk::CivilTime
Definition: CivilTime.hpp:55
gnsstk::NavMessageType::TimeOffset
@ TimeOffset
Message containing information about time system offsets.
gnsstk::GLOCNavEph::N4
uint8_t N4
Number of leap years since 1996.
Definition: GLOCNavEph.hpp:136
GLOCNavTestDataDecl.hpp
gnsstk::GLOCNavHeader::svUnhealthy
bool svUnhealthy
Health flag (Hj, false=healthy).
Definition: GLOCNavHeader.hpp:87
gnsstk::GLOCNavUT1TimeOffset::UTCTAI
double UTCTAI
Leap seconds - not really used.
Definition: GLOCNavUT1TimeOffset.hpp:106
navGLOCStr10b
gnsstk::PackedNavBitsPtr navGLOCStr10b
Definition: GLOCNavTestDataDecl.hpp:50
std
Definition: Angle.hpp:142
gnsstk::NavMessageType::Ephemeris
@ Ephemeris
Precision orbits for the transmitting SV.
FactoryCounter.hpp
GLOCNavHealth.hpp
PNBGLOCNavDataFactory_T::addDataHealthTest
unsigned addDataHealthTest()
Test addData with health data selected only.
Definition: PNBGLOCNavDataFactory_T.cpp:256
gnsstk::GLOCNavHeader::KP
unsigned KP
Leap second indicator (see ICD 4.2.2.9).
Definition: GLOCNavHeader.hpp:92
TestClass
Make GroupPathCorrector instantiatable for testing.
Definition: GroupPathCorrector_T.cpp:56
gnsstk::GLOCNavAlm::omega
double omega
Almanac parameter for argument of perigee (semicirc).
Definition: GLOCNavAlm.hpp:141
navGLOCStr12a
gnsstk::PackedNavBitsPtr navGLOCStr12a
Definition: GLOCNavTestDataDecl.hpp:45
TUASSERTFE
#define TUASSERTFE(EXP, GOT)
Definition: TestUtil.hpp:103
gnsstk::GLOCNavAlm::lambda
double lambda
Longitude of first ascending node (semicirc).
Definition: GLOCNavAlm.hpp:137
gnsstk::GLOCNavEph::NT
uint16_t NT
Day within four-year interval N4.
Definition: GLOCNavEph.hpp:137
gnsstk::GLOCNavEph::driftRate
double driftRate
Half rate of relative deviation of carrier freq.
Definition: GLOCNavEph.hpp:149
gnsstk::GLOCNavHeader::xmit
CommonTime xmit
Transmit time of the string.
Definition: GLOCNavHeader.hpp:78
gnsstk::GLOCNavHealth::lj
bool lj
The l^j health bit (validity indicator).
Definition: GLOCNavHealth.hpp:79
gnsstk::SatelliteSystem::Glonass
@ Glonass
gnsstk::GLOCNavHeader::P2
bool P2
false=sun pointing (see ICD 4.2.2.8).
Definition: GLOCNavHeader.hpp:91
gnsstk::GLOCNavAlm::deltaTdot
double deltaTdot
Draconic orbital period rate.
Definition: GLOCNavAlm.hpp:143
gnsstk::NavID
Definition: NavID.hpp:61
GLOCNavUT1TimeOffset.hpp
gnsstk::GLOCOrbitType::Circ19100
@ Circ19100
Circular orbit of 19,100km.
gnsstk::SVHealth::Unhealthy
@ Unhealthy
Satellite is unhealthy and should not be used.
main
int main()
Definition: PNBGLOCNavDataFactory_T.cpp:763
gnsstk::GLOCOrbitType
GLOCOrbitType
Values for Word TO in the almanac data.
Definition: GLOCOrbitType.hpp:47
gnsstk::GLOCNavEph::header12
GLOCNavHeader header12
Header (incl xmit time) data from string 12.
Definition: GLOCNavEph.hpp:164
TestClass::getLTDMP
const std::map< gnsstk::NavSatelliteID, gnsstk::GLOCNavLTDMP > & getLTDMP() const
Definition: PNBGLOCNavDataFactory_T.cpp:67
gnsstk::GLOCNavEph::step
double step
Definition: GLOCNavEph.hpp:169
PNBGLOCNavDataFactory_T::addDataAlmanacTest
unsigned addDataAlmanacTest()
Test addData with almanac selected only.
Definition: PNBGLOCNavDataFactory_T.cpp:223
gnsstk::GLOCNavUT1TimeOffset::refTime
CommonTime refTime
Reference time for computation.
Definition: GLOCNavUT1TimeOffset.hpp:101
gnsstk::GLOCNavEph::tb
unsigned long tb
Instant in Moscow time this data relates to.
Definition: GLOCNavEph.hpp:140
TimeString.hpp
gnsstk::NavMessageType::Almanac
@ Almanac
Low-precision orbits for other than the transmitting SV.
gnsstk::GLOCNavHealth
Definition: GLOCNavHealth.hpp:52


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