PNBGLOFNavDataFactory.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 //==============================================================================
40 #include "GLOFBits.hpp"
41 #include "GLOFNavAlm.hpp"
42 #include "GLOFNavEph.hpp"
43 #include "GLOFNavHealth.hpp"
44 #include "GLOFNavISC.hpp"
45 #include "GLOFNavTimeOffset.hpp"
46 #include "GLOFNavUT1TimeOffset.hpp"
47 #include "CivilTime.hpp"
48 #include "YDSTime.hpp"
49 #include "GLONASSTime.hpp"
50 #include "TimeString.hpp"
51 #include "DebugTrace.hpp"
52 
53 using namespace std;
54 using namespace gnsstk::glo;
55 
56 namespace gnsstk
57 {
58  PNBGLOFNavDataFactory ::
59  PNBGLOFNavDataFactory()
60  : almDOY(CommonTime::BEGINNING_OF_TIME),
61  pendingAlms(false)
62  {
63  }
64 
65 
68  double cadence)
69  {
71  if ((navIn->getNavID().navType != NavType::GloCivilF) ||
72  (!validSize(navIn)))
73  {
74  DEBUGTRACE("fail bits=" << navIn->getNumBits() << " nav="
75  << StringUtils::asString(navIn->getNavID().navType));
76  // This class only processes GLONASS FDMA NAV.
77  return false;
78  }
79  bool rv = true;
80  try
81  {
82  unsigned long stringID = navIn->asUnsignedLong(
84  // cerr << __PRETTY_FUNCTION__ << " num bits: " << navIn->getNumBits() << " string ID: " << stringID << endl;
85  bool checkParity = false, expParity = false;
86  switch (navValidity)
87  {
89  checkParity = true;
90  expParity = true;
91  break;
93  checkParity = true;
94  expParity = false;
95  break;
96  }
97  if (checkParity)
98  {
100  }
101  switch (stringID)
102  {
103  case 1:
104  case 2:
105  case 3:
106  case 4:
107  rv = processEph(stringID, navIn, navOut);
108  DEBUGTRACE("Eph rv=" << rv);
109  break;
110  case 5:
111  rv = processTime(navIn, navOut);
112  DEBUGTRACE("Time rv=" << rv);
113  break;
114  default:
116  rv = processAlm(stringID, navIn, navOut);
117  DEBUGTRACE("Alm rv=" << rv);
118  break;
119  }
120  }
121  catch (Exception& exc)
122  {
123  DEBUGTRACE("fail exception");
124  rv = false;
125  cerr << exc << endl;
126  }
127  catch (std::exception& exc)
128  {
129  DEBUGTRACE("fail exception");
130  rv = false;
131  cerr << exc.what() << endl;
132  }
133  catch (...)
134  {
135  DEBUGTRACE("fail exception");
136  rv = false;
137  cerr << "Unknown exception" << endl;
138  }
139  return rv;
140  }
141 
142 
144  processEph(unsigned long stringID, const PackedNavBitsPtr& navIn,
145  NavDataPtrList& navOut)
146  {
147  NavSatelliteID key(navIn->getsatSys().id, navIn->getsatSys(),
148  navIn->getobsID(), navIn->getNavID());
149  if ((stringID < 1) || (stringID > 4))
150  return false; // not actually part of the ephemeris.
151  if (stringID == 4)
152  {
154  {
155  NavDataPtr p2 = std::make_shared<GLOFNavISC>();
156  GLOFNavISC *isc = dynamic_cast<GLOFNavISC*>(p2.get());
157  isc->timeStamp = navIn->getTransmitTime();
159  DEBUGTRACE("ISC signal = " << isc->signal);
160  isc->isc = navIn->asSignMagDouble(esbdtaun,enbdtaun,escdtaun);
161  navOut.push_back(p2);
162  }
164  {
165  timeAcc[key].setNT(navIn->asUnsignedLong(esbNT,enbNT,escNT));
166  }
167  }
169  {
170  // User doesn't want ephemerides so don't do any processing.
171  return true;
172  }
173  if (ephAcc.find(key) == ephAcc.end())
174  {
175  // set up a new ephemeris
176  ephAcc[key].resize(4); // we only store the 1st 4 strings of 15.
177  ephAcc[key][stringID-1] = navIn;
178  // nothing in navOut yet and no further processing because
179  // we only have one of four strings at this point.
180  return true;
181  }
182  std::vector<PackedNavBitsPtr> &ephS(ephAcc[key]);
183  ephS[stringID-1] = navIn;
184  // stop processing if we don't have a complete, consecutive
185  // set of strings
186  if (!ephS[str1] || !ephS[str2] || !ephS[str3] || !ephS[str4] ||
187  !validSize(ephS[str1]) ||
188  !validSize(ephS[str2]) ||
189  !validSize(ephS[str3]) ||
190  !validSize(ephS[str4]) ||
191  (ephS[str2]->getTransmitTime()-ephS[str1]->getTransmitTime() != 2) ||
192  (ephS[str3]->getTransmitTime()-ephS[str2]->getTransmitTime() != 2) ||
193  (ephS[str4]->getTransmitTime()-ephS[str3]->getTransmitTime() != 2))
194  {
195  return true;
196  }
197  // Health data here only requires string 2-3.
200  {
201  NavDataPtr p1 = std::make_shared<GLOFNavHealth>();
202  p1->timeStamp = navIn->getTransmitTime();
203  p1->signal = NavMessageID(key, NavMessageType::Health);
204  DEBUGTRACE("Health signal = " << p1->signal);
205  GLOFNavHealth *hea = dynamic_cast<GLOFNavHealth*>(p1.get());
206  hea->healthBits = ephS[esiBn]->asUnsignedLong(esbBn,enbBn,escBn);
207  hea->ln = ephS[esiln]->asBool(esbln);
208  navOut.push_back(p1);
209  }
211  {
212  return true;
213  }
214  NavDataPtr p0 = std::make_shared<GLOFNavEph>();
215  GLOFNavEph *eph = dynamic_cast<GLOFNavEph*>(p0.get());
216  eph->timeStamp = ephS[str1]->getTransmitTime();
218  DEBUGTRACE("Eph signal = " << eph->signal);
219  unsigned long tk = ephS[esitk]->asUnsignedLong(esbtk,enbtk,esctk);
220  // 30 second offset since the beginning of the day, the
221  // document says, but at one bit it's obviously relative to
222  // the specified minute.
223  unsigned long tk30s = tk & 0x01;
224  tk >>= 1;
225  // next 6 bits contain the minutes of the hour
226  unsigned long tk1m = tk & 0x3f;
227  tk >>= 6;
228  // 5 MSBs contain the hour of day
229  unsigned long tk1h = tk & 0x1f;
232  CivilTime tmp(eph->timeStamp);
233  eph->ref = CivilTime(tmp.year, tmp.month, tmp.day,
234  tk1h, tk1m, 30.0 * tk30s, TimeSystem::GLO);
235  eph->xmit2 = ephS[str2]->getTransmitTime();
236  eph->xmit3 = ephS[str3]->getTransmitTime();
237  eph->xmit4 = ephS[str4]->getTransmitTime();
238  eph->pos[0]=ephS[esixn]->asSignMagDouble(esbxn,enbxn,escxn);
239  eph->pos[1]=ephS[esiyn]->asSignMagDouble(esbyn,enbyn,escyn);
240  eph->pos[2]=ephS[esizn]->asSignMagDouble(esbzn,enbzn,esczn);
241  eph->vel[0]=ephS[esixnp]->asSignMagDouble(esbxnp,enbxnp,escxnp);
242  eph->vel[1]=ephS[esiynp]->asSignMagDouble(esbynp,enbynp,escynp);
243  eph->vel[2]=ephS[esiznp]->asSignMagDouble(esbznp,enbznp,escznp);
244  eph->acc[0]=ephS[esixnpp]->asSignMagDouble(esbxnpp,enbxnpp,escxnpp);
245  eph->acc[1]=ephS[esiynpp]->asSignMagDouble(esbynpp,enbynpp,escynpp);
246  eph->acc[2]=ephS[esiznpp]->asSignMagDouble(esbznpp,enbznpp,escznpp);
247  eph->clkBias = ephS[esitaun]->asSignMagDouble(esbtaun,enbtaun,esctaun);
248  eph->freqBias = ephS[esiGamman]->asSignMagDouble(
250  eph->healthBits = ephS[esiBn]->asUnsignedLong(esbBn,enbBn,escBn);
251  eph->lhealth = ephS[esiln]->asBool(esbln);
252  eph->health = ((eph->lhealth != 0) || (eph->healthBits & 0x04)
255  eph->tb = ephS[esitb]->asUnsignedLong(esbtb,enbtb,esctb);
256  eph->P1 = ephS[esiP1]->asUnsignedLong(esbP1,enbP1,escP1);
257  eph->P2 = ephS[esiP2]->asUnsignedLong(esbP2,enbP2,escP2);
258  eph->P3 = ephS[esiP3]->asUnsignedLong(esbP3,enbP3,escP3);
259  eph->P4 = ephS[esiP4]->asUnsignedLong(esbP4,enbP4,escP4);
260  // factor to multiply tb by to get seconds of day.
261  unsigned tbFactor = 0;
262  switch (eph->P1)
263  {
264  case 3:
265  eph->interval = 60;
266  break;
267  case 2:
268  eph->interval = 45;
269  break;
270  case 1:
271  eph->interval = 30;
272  break;
273  case 0:
274  default:
275  eph->interval = 0;
276  break;
277  }
278  eph->opStatus = static_cast<GLOFNavPCode>(
279  ephS[esiP]->asUnsignedLong(esbP,enbP,escP));
280  eph->tauDelta = ephS[esidtaun]->asSignMagDouble(
282  eph->aod = ephS[esiEn]->asUnsignedLong(esbEn,enbEn,escEn);
283  eph->accIndex = ephS[esiFT]->asUnsignedLong(esbFT,enbFT,escFT);
284  eph->dayCount = ephS[esiNT]->asUnsignedLong(esbNT,enbNT,escNT);
285  eph->slot = ephS[esin]->asUnsignedLong(esbn,enbn,escn);
286  eph->satType = static_cast<GLOFNavSatType>(
287  ephS[esiM]->asUnsignedLong(esbM,enbM,escM));
288  YDSTime toe(eph->timeStamp);
289  // This is a kludge to have what was deemed to be a
290  // reasonable validity time span in older code by using a 30
291  // minute interval when P1==0. I'm not convinced it's
292  // suitable, but it's here for now until someone comes up
293  // with a more definitive way to handle the fit interval.
294  // Without this kludge, the orbit epoch time stamp can go
295  // wonky early in the day (see bug below) or the end valid
296  // time stamp can be only 30 seconds after the orbit epoch.
297  unsigned interval = (eph->interval > 0 ? eph->interval : 30);
298  toe.sod = eph->tb * 2 * interval;
299  // Move from Moscow Time to UTC(SU) aka TimeSystem::GLO
304  if (toe.sod >= 10800)
305  toe.sod -= 10800;
306  else
307  {
308  toe.sod += 86400;
309  toe.sod -= 10800;
310  }
312  eph->Toe = toe;
313  eph->fixFit();
314  navOut.push_back(p0);
315  // Clear out the broadcast ephemeris that's been processed.
316  ephAcc.erase(key);
317  // cerr << "navOut.size()=" << navOut.size() << endl
318  // << key.sat << " Toe="
319  // << printTime(eph->Toe, "%Y/%02m/%02d %02H:%02M:%02S %P") << endl
320  // << key.sat << " tb=" << eph->tb << " tb*interval="
321  // << eph->tb*interval << endl
322  // << key.sat << " toe.sod=" << toe.sod << endl
323  // << key.sat << " interval=" << eph->interval << " (" << interval
324  // << ")" << endl
325  // << key.sat << " P1=" << eph->P1 << endl;
326  return true;
327  }
328 
329 
331  processAlm(unsigned long stringID, const PackedNavBitsPtr& navIn,
332  NavDataPtrList& navOut)
333  {
334  SatID xmitSat(navIn->getsatSys());
335  // Key used for data accumulating, which we don't separate by
336  // subject satellite.
337  NavSatelliteID key(0, xmitSat, navIn->getobsID(), navIn->getNavID());
338  // magic numbers 6 and 15 in this block of code refer to the string ID
339  if ((stringID < 6) || (stringID > 15))
340  {
341  return false; // not actually part of the almanac.
342  }
343  if ((stringID > 13) && (getFrameNum(navIn->getTransmitTime()) == 5))
344  {
345  // Not really part of the almanac, but UTC time conversion
346  // information is in string 14.
347  if (stringID == 14)
348  {
349  return processTimeUT1(navIn, navOut);
350  }
352  return true; // string 15
353  }
355  {
356  // User doesn't want almanacs or health so don't do any processing.
357  return true;
358  }
359  if (almAcc.find(key) == almAcc.end())
360  {
361  // set up a new almanac
362  almAcc[key].resize(10); // Storing strings 6-15
363  almAcc[key][stringID-6] = navIn;
364  // nothing in navOut yet and no further processing because
365  // we only have one of four strings at this point.
366  return true;
367  }
368  // almIdx becomes the array index of the even string number of the pair
369  unsigned almIdx = (stringID & ~1) - 6;
370  std::vector<PackedNavBitsPtr> &almS(almAcc[key]);
371  almS[stringID-6] = navIn;
372  return processAlmOrb(key, almIdx, navOut);
373  }
374 
375 
377  processAlmOrb(const NavSatelliteID& key, unsigned almIdx,
378  NavDataPtrList& navOut)
379  {
380  std::vector<PackedNavBitsPtr> &almS(almAcc[key]);
381  // cerr << "stringID=" << stringID << " almIdx=" << almIdx << endl;
382  // if ((stringID & 0x01) == 0)
383  // {
384  // cerr << "n=" << almS[almIdx]->asUnsignedLong(asbn,anbn,ascn) << endl;
385  // }
386  if (!almS[almIdx] || !almS[almIdx+1] ||
387  (almS[almIdx]->getNumBits() != 96) ||
388  (almS[almIdx+1]->getNumBits() != 96) ||
389  (almS[almIdx+1]->getTransmitTime() - almS[almIdx]->getTransmitTime()
390  != 2))
391  {
392  // cerr << "incomplete almanac ";
393  // if (!almS[almIdx])
394  // {
395  // cerr << " no-even";
396  // }
397  // else if (!almS[almIdx+1])
398  // {
399  // cerr << " no-odd";
400  // }
401  // else
402  // {
403  // cerr << (almS[almIdx]->getNumBits() != 96 ? " even-wrong-size" : "")
404  // << (almS[almIdx+1]->getNumBits() != 96 ? " odd-wrong-size" : "")
405  // << ((almS[almIdx+1]->getTransmitTime() - almS[almIdx]->getTransmitTime() != 2) ? " bad time" : "");
406  // }
407  // cerr << endl;
408  return true;
409  }
411  {
412  // We have a complete almanac, but no reference time, so
413  // let's flag it for when a string 5 shows up.
414  pendingAlms = true;
415  return true;
416  }
417  // cerr << "complete almanac" << endl;
418  SatID xmitSat(almS[almIdx]->getsatSys());
419  unsigned long slot = almS[almIdx+ason]->asUnsignedLong(asbn,anbn,ascn);
420  NavSatelliteID sat(slot, xmitSat, almS[almIdx]->getobsID(),
421  almS[almIdx]->getNavID());
423  {
424  NavDataPtr p1 = std::make_shared<GLOFNavHealth>();
425  p1->timeStamp = almS[almIdx]->getTransmitTime();
426  p1->signal = NavMessageID(sat, NavMessageType::Health);
427  DEBUGTRACE("Health signal = " << p1->signal);
428  GLOFNavHealth *hea = dynamic_cast<GLOFNavHealth*>(p1.get());
429  hea->Cn = almS[almIdx+asoC]->asBool(asbC);
430  hea->ln = almS[almIdx+asol]->asBool(asbl);
431  navOut.push_back(p1);
432  }
434  {
435  // nothing more to do here
436  return true;
437  }
438  NavDataPtr p0 = std::make_shared<GLOFNavAlm>();
439  GLOFNavAlm *alm = dynamic_cast<GLOFNavAlm*>(p0.get());
440  alm->timeStamp = almS[almIdx]->getTransmitTime();
441  alm->xmit2 = almS[almIdx+1]->getTransmitTime();
442  // Actual satellite ID (subject and transmit)
443  alm->slot = slot;
445  DEBUGTRACE("Alm signal = " << alm->signal);
446  alm->healthBits = almS[almIdx+asoC]->asBool(asbC);
447  alm->health = (alm->healthBits == 1
450  alm->satType = static_cast<GLOFNavSatType>(
451  almS[almIdx+asoM]->asUnsignedLong(asbM,anbM,ascM));
452  alm->taunA = almS[almIdx+asotau]->asSignMagDouble(asbtau,anbtau,asctau);
453  alm->lambdanA = almS[almIdx+asolambda]->asSignMagDoubleSemiCircles(
455  alm->deltainA = almS[almIdx+asodeltai]->asSignMagDoubleSemiCircles(
457  alm->eccnA = almS[almIdx+asoepsilon]->asSignMagDouble(
459  alm->omeganA = almS[almIdx+asoomega]->asSignMagDoubleSemiCircles(
461  alm->tLambdanA = almS[almIdx+asot]->asUnsignedDouble(asbt,anbt,asct);
462  // Epoch time for the almanac is tied to the first ascending
463  // crossing of the plane. The NATIVE timescale for GLONASS
464  // time is UTC(SU) + 3h. The Na parameter from String 5 should
465  // be reference to UTC(SU) + 3h. Therefore, we can add the
466  // SOD epoch time to the almanac day (all in UTC(SU)+3h)
467  // then move that time to UTC(SU).
468  YDSTime almYDS(almDOY);
469  alm->Toa = YDSTime(almYDS.year,almYDS.doy,alm->tLambdanA,TimeSystem::GLO);
470  alm->deltaTnA = almS[almIdx+asoDeltaT]->asSignMagDouble(
472  alm->deltaTdotnA = almS[almIdx+asoDeltaTdot]->asSignMagDouble(
474  alm->freqnA = almS[almIdx+asoH]->asLong(asbH,anbH,ascH);
475  alm->lhealth = almS[almIdx+asol]->asBool(asbl);
476  alm->fixFit();
477  navOut.push_back(p0);
478  // Release the shared pointers
479  almAcc[key][almIdx].reset();
480  almAcc[key][almIdx+1].reset();
481  return true;
482  }
483 
484 
487  {
488  bool rv = true;
489  NavSatelliteID key(navIn->getsatSys().id, navIn->getsatSys(),
490  navIn->getobsID(), navIn->getNavID());
492  {
493  NavDataPtr p1 = std::make_shared<GLOFNavHealth>();
494  p1->timeStamp = navIn->getTransmitTime();
495  p1->signal = NavMessageID(key, NavMessageType::Health);
496  DEBUGTRACE("Health signal = " << p1->signal);
497  GLOFNavHealth *hea = dynamic_cast<GLOFNavHealth*>(p1.get());
498  hea->ln = navIn->asBool(tsbln);
499  navOut.push_back(p1);
500  }
501  // This code block gets the reference time used for both
502  // almanac orbital elements as well as almanac health.
504  {
505  // day within four-year interval
506  unsigned NA = navIn->asUnsignedLong(tsbNA,tnbNA,tscNA);
507  timeAcc[key].setNA(NA);
508  // number of leap years since 1996
509  unsigned N4 = navIn->asUnsignedLong(tsbN4,tnbN4,tscN4);
510  almDOY = GLONASSTime(N4, NA, 0);
511  if (pendingAlms)
512  {
513  // iterate through the almanac accumulator and finish any
514  // possible almanacs.
515  for (const auto& i : almAcc)
516  {
517  for (unsigned j = 0; j < i.second.size(); j += 2)
518  {
519  bool result = processAlmOrb(i.first, j, navOut);
520  rv &= result;
521  }
522  }
523  }
524  // clear pending alms if we successfully processed everything
525  pendingAlms = !rv;
526  }
528  {
529  NavDataPtr p0 = std::make_shared<GLOFNavTimeOffset>();
530  p0->timeStamp = navIn->getTransmitTime();
531  p0->signal = NavMessageID(key, NavMessageType::TimeOffset);
532  DEBUGTRACE("Time signal = " << p0->signal);
533  GLOFNavTimeOffset *to = dynamic_cast<GLOFNavTimeOffset*>(p0.get());
534  to->a0 = navIn->asSignMagDouble(tsbtauGPS,tnbtauGPS,tsctauGPS);
541  timeAcc[key].tauc = navIn->asSignMagDouble(tsbtauc,tnbtaucM,tsctaucM);
547  double offset = 0;
549  to->timeStamp, offset);
550  rv &= result;
551  if (result)
552  {
553  to->deltatLS = offset;
554  // These values don't really matter much, since A1 and A2 are 0.
555  // We set them mostly for display purposes (dump).
556  to->refTime = to->effTime = to->timeStamp;
557  navOut.push_back(p0);
558  }
559  }
560  return rv;
561  }
562 
563 
566  NavDataPtrList& navOut)
567  {
569  {
570  // User doesn't want time offsets so don't do any processing.
571  return true;
572  }
574  NavSatelliteID key(navIn->getsatSys().id, navIn->getsatSys(),
575  navIn->getobsID(), navIn->getNavID());
576  timeAcc[key].B1 = navIn->asSignMagDouble(usbB1,unbB1,uscB1);
577  timeAcc[key].B2 = navIn->asSignMagDouble(usbB2,unbB2,uscB2);
578  timeAcc[key].KP = navIn->asUnsignedLong(usbKP,unbKP,uscKP);
579  if (timeAcc[key].isValid())
580  {
581  NavDataPtr p0 = timeAcc[key];
582  p0->timeStamp = navIn->getTransmitTime();
583  p0->signal = NavMessageID(key, NavMessageType::TimeOffset);
584  DEBUGTRACE("Time signal = " << p0->signal);
585  navOut.push_back(p0);
586  }
587  return true;
588  }
589 
590 
591  unsigned PNBGLOFNavDataFactory ::
592  getFrameNum(const CommonTime& xmitTime)
593  {
594  CommonTime rv(xmitTime);
596  double dSOD = static_cast<YDSTime>(rv).sod;
597  unsigned long SOD = (unsigned long) dSOD;
598  // 30 second per frame
599  // ...and frames are in the range 1-5
600  unsigned long frameCount = SOD / 30;
601  unsigned long frameNumber = (frameCount % 5) + 1;
602  // cerr << "frame=" << frameNumber << endl;
603  return frameNumber;
604  }
605 
606 
609  {
610  timeAcc.clear();
611  ephAcc.clear();
612  almAcc.clear();
613  }
614 
615 
616  PNBGLOFNavDataFactory::TimeMeta ::
617  operator NavDataPtr() const
618  {
619  NavDataPtr p0 = std::make_shared<GLOFNavUT1TimeOffset>();
620  GLOFNavUT1TimeOffset *to = dynamic_cast<GLOFNavUT1TimeOffset*>(p0.get());
621  to->tauc = tauc;
622  to->B1 = B1;
623  to->B2 = B2;
624  to->KP = KP;
625  to->NT = NT;
626  to->NA = NA;
627  return p0;
628  }
629 
630 
632  setNT(unsigned v)
633  {
634  NT = v;
635  B1.set_valid(false);
636  B2.set_valid(false);
637  }
638 
639 
641  setNA(unsigned v)
642  {
643  NA = v;
644  B1.set_valid(false);
645  B2.set_valid(false);
646  }
647 
648 
651  {
652  return
653  tauc.is_valid() &&
654  B1.is_valid() &&
655  B2.is_valid() &&
656  NT.is_valid() &&
657  NA.is_valid();
658  }
659 
660 } // namespace gnsstk
gnsstk::NavDataPtr
std::shared_ptr< NavData > NavDataPtr
Factories instantiate these in response to find() requests.
Definition: NavData.hpp:62
gnsstk::glo::esbGamman
@ esbGamman
Definition: GLOFBits.hpp:189
gnsstk::glo::esiP
@ esiP
Satellite operation mode.
Definition: GLOFBits.hpp:198
gnsstk::NavMessageType::ISC
@ ISC
Inter-signal corrections.
YDSTime.hpp
gnsstk::gloc::esitb
@ esitb
Definition: GLOCBits.hpp:150
gnsstk::glo::esiP2
@ esiP2
t_b odds or evens.
Definition: GLOFBits.hpp:151
gnsstk::gloc::esiNT
@ esiNT
Definition: GLOCBits.hpp:135
gnsstk::glo::escznpp
@ escznpp
Definition: GLOFBits.hpp:216
gnsstk::GLOFNavAlm::deltaTnA
double deltaTnA
Correction to mean value of Draconian period (Delta T_n^A).
Definition: GLOFNavAlm.hpp:285
gnsstk::NavMessageID
Class used to identify/categorize navigation message data.
Definition: NavMessageID.hpp:52
gnsstk::glo::esbxnp
@ esbxnp
Definition: GLOFBits.hpp:121
gnsstk::glo::esbBn
@ esbBn
Definition: GLOFBits.hpp:147
gnsstk::gloc::ascepsilon
@ ascepsilon
Definition: GLOCBits.hpp:347
gnsstk::TimeTag::setTimeSystem
void setTimeSystem(const TimeSystem &timeSys)
Set method for internal variable timeSystem (enum).
Definition: TimeTag.hpp:165
gnsstk::GLOFNavEph::xmit3
CommonTime xmit3
Transmit time for string 3.
Definition: GLOFNavEph.hpp:113
gnsstk::glo::escxnp
@ escxnp
Definition: GLOFBits.hpp:123
gnsstk::glo::escP
@ escP
Definition: GLOFBits.hpp:201
gnsstk::PackedNavBitsPtr
std::shared_ptr< PackedNavBits > PackedNavBitsPtr
Managed pointer for passing PackedNavBits around.
Definition: PackedNavBits.hpp:66
gnsstk::glo::esbM
@ esbM
Definition: GLOFBits.hpp:271
gnsstk::glo::enbBn
@ enbBn
Definition: GLOFBits.hpp:148
gnsstk::glo::esbyn
@ esbyn
Definition: GLOFBits.hpp:177
gnsstk::PNBGLOFNavDataFactory::almDOY
CommonTime almDOY
Used to set the reference almanac time.
Definition: PNBGLOFNavDataFactory.hpp:216
gnsstk::glo::escBn
@ escBn
Definition: GLOFBits.hpp:149
gnsstk::gloc::asbM
@ asbM
Sat type and signal.
Definition: GLOCBits.hpp:325
gnsstk::glo::asbn
@ asbn
Definition: GLOFBits.hpp:301
gnsstk::CivilTime::year
int year
Definition: CivilTime.hpp:198
gnsstk::GLOFNavEph
Definition: GLOFNavEph.hpp:51
gnsstk::glo::asoDeltaTdot
@ asoDeltaTdot
Definition: GLOFBits.hpp:342
gnsstk::gloc::escNT
@ escNT
Definition: GLOCBits.hpp:138
gnsstk::GLOFNavData::health
SVHealth health
SV health status.
Definition: GLOFNavData.hpp:71
gnsstk::BEGINNING_OF_TIME
const Epoch BEGINNING_OF_TIME(CommonTime::BEGINNING_OF_TIME)
Earliest representable Epoch.
gnsstk::gloc::asbtau
@ asbtau
rough time correction
Definition: GLOCBits.hpp:329
gnsstk::PNBGLOFNavDataFactory::validSize
static bool validSize(const PackedNavBitsPtr &navIn)
Return true if the PNB is 85 or 96 bits.
Definition: PNBGLOFNavDataFactory.hpp:168
gnsstk::YDSTime
Definition: YDSTime.hpp:58
gnsstk::glo::enbtaun
@ enbtaun
Definition: GLOFBits.hpp:227
gnsstk::glo::enbP1
@ enbP1
Definition: GLOFBits.hpp:112
gnsstk::gloc::anbM
@ anbM
Definition: GLOCBits.hpp:326
gnsstk::glo::tsctauGPS
@ tsctauGPS
Definition: GLOFBits.hpp:386
gnsstk::GLOFNavAlm::lambdanA
double lambdanA
Longitude of ascending node (lambda_n^A).
Definition: GLOFNavAlm.hpp:280
gnsstk::GLOFNavData::slot
unsigned slot
Slot number (n).
Definition: GLOFNavData.hpp:69
gnsstk::glo::enbP2
@ enbP2
Definition: GLOFBits.hpp:153
gnsstk::glo::escP3
@ escP3
Definition: GLOFBits.hpp:186
gnsstk::glo::asol
@ asol
Definition: GLOFBits.hpp:352
gnsstk::GLOFNavUT1TimeOffset::B1
double B1
Time bias in seconds.
Definition: GLOFNavUT1TimeOffset.hpp:104
gnsstk::GLOFNavUT1TimeOffset
Definition: GLOFNavUT1TimeOffset.hpp:59
gnsstk::NavSatelliteID
Definition: NavSatelliteID.hpp:57
gnsstk::glo::esidtaun
@ esidtaun
Definition: GLOFBits.hpp:230
gnsstk::GLOFNavUT1TimeOffset::KP
unsigned KP
Leap second indicator.
Definition: GLOFNavUT1TimeOffset.hpp:106
gnsstk::glo::esizn
@ esizn
Z position.
Definition: GLOFBits.hpp:218
gnsstk::gloc::anbDeltaTdot
@ anbDeltaTdot
Definition: GLOCBits.hpp:358
DEBUGTRACE
#define DEBUGTRACE(EXPR)
Definition: DebugTrace.hpp:119
gnsstk::glo::esitaun
@ esitaun
Clock bias.
Definition: GLOFBits.hpp:225
gnsstk::gloc::anbDeltaT
@ anbDeltaT
Definition: GLOCBits.hpp:354
gnsstk::glo::asbt
@ asbt
Definition: GLOFBits.hpp:333
gnsstk::GLOFNavEph::Toe
CommonTime Toe
Definition: GLOFNavEph.hpp:132
gnsstk::GLOFNavAlm::Toa
CommonTime Toa
Reference time for almanac.
Definition: GLOFNavAlm.hpp:275
gnsstk::glo::tscN4
@ tscN4
Definition: GLOFBits.hpp:382
gnsstk::glo::esiFT
@ esiFT
Definition: GLOFBits.hpp:250
gnsstk::glo::enbP4
@ enbP4
Definition: GLOFBits.hpp:247
gnsstk::glo::enbxnpp
@ enbxnpp
Definition: GLOFBits.hpp:127
gnsstk::GLOFNavUT1TimeOffset::B2
double B2
Time drift in s/s.
Definition: GLOFNavUT1TimeOffset.hpp:105
gnsstk::glo::esbynp
@ esbynp
Definition: GLOFBits.hpp:167
gnsstk::GLOFNavEph::dayCount
unsigned dayCount
Days since Jan 1 of most recent leap year (N_T).
Definition: GLOFNavEph.hpp:131
gnsstk::SatID
Definition: SatID.hpp:89
gnsstk::GLOFNavEph::pos
Triple pos
Satellite position at tb in km.
Definition: GLOFNavEph.hpp:115
gnsstk::NavMessageType::Health
@ Health
SV health status information message.
gnsstk::NavDataPtrList
std::list< NavDataPtr > NavDataPtrList
Definition: NavData.hpp:75
gnsstk::glo::asoomega
@ asoomega
Definition: GLOFBits.hpp:327
gnsstk::GLOFNavAlm::eccnA
double eccnA
Eccentricity (epsilon_n^A).
Definition: GLOFNavAlm.hpp:282
gnsstk::glo::tscNA
@ tscNA
Definition: GLOFBits.hpp:368
gnsstk::StringUtils::asString
std::string asString(IonexStoreStrategy e)
Convert a IonexStoreStrategy to a whitespace-free string name.
Definition: IonexStoreStrategy.cpp:46
gnsstk::CivilTime::day
int day
Definition: CivilTime.hpp:200
gnsstk::PNBGLOFNavDataFactory::TimeMeta::B1
vdouble B1
GLONASS-UT1 offset.
Definition: PNBGLOFNavDataFactory.hpp:188
gnsstk::glo::esiznpp
@ esiznpp
Z acceleration.
Definition: GLOFBits.hpp:213
gnsstk::glo::escFT
@ escFT
Definition: GLOFBits.hpp:253
gnsstk::GLOFNavHealth::Cn
ValidType< bool > Cn
The C_n health bit in strings 6,8,10,12,14.
Definition: GLOFNavHealth.hpp:82
gnsstk::StdNavTimeOffset::deltatLS
double deltatLS
Current or past leap second count (UTC only).
Definition: StdNavTimeOffset.hpp:125
gnsstk::NavType::GloCivilF
@ GloCivilF
gnsstk::glo::escxn
@ escxn
Definition: GLOFBits.hpp:133
gnsstk::glo::asoC
@ asoC
Definition: GLOFBits.hpp:290
gnsstk::glo::enbyn
@ enbyn
Definition: GLOFBits.hpp:178
gnsstk::CommonTime::BEGINNING_OF_TIME
static const GNSSTK_EXPORT CommonTime BEGINNING_OF_TIME
earliest representable CommonTime
Definition: CommonTime.hpp:102
gnsstk::PNBNavDataFactory::processTim
bool processTim
If true, time offset data will be output by addData.
Definition: PNBNavDataFactory.hpp:130
gnsstk::glo::anbt
@ anbt
Definition: GLOFBits.hpp:334
gnsstk::glo::usbKP
@ usbKP
Definition: GLOFBits.hpp:407
gnsstk::glo::anbdeltai
@ anbdeltai
Definition: GLOFBits.hpp:317
gnsstk::glo::esiEn
@ esiEn
Definition: GLOFBits.hpp:235
gnsstk::GLOFNavISC
Definition: GLOFNavISC.hpp:53
gnsstk::glo::anbn
@ anbn
Definition: GLOFBits.hpp:302
gnsstk::GLOFNavEph::opStatus
GLOFNavPCode opStatus
Operational status flag.
Definition: GLOFNavEph.hpp:127
gnsstk::glo::asoDeltaT
@ asoDeltaT
Definition: GLOFBits.hpp:337
gnsstk::NavData::signal
NavMessageID signal
Source signal identification for this navigation message data.
Definition: NavData.hpp:175
gnsstk::glo::esixnp
@ esixnp
X velocity.
Definition: GLOFBits.hpp:120
gnsstk::PNBGLOFNavDataFactory::almAcc
std::map< NavSatelliteID, std::vector< PackedNavBitsPtr > > almAcc
Definition: PNBGLOFNavDataFactory.hpp:208
gnsstk::glo::enbtk
@ enbtk
Definition: GLOFBits.hpp:117
gnsstk::GLOFNavEph::xmit4
CommonTime xmit4
Transmit time for string 4.
Definition: GLOFNavEph.hpp:114
gnsstk::GLOFNavHealth
Definition: GLOFNavHealth.hpp:52
gnsstk::glo::asotau
@ asotau
Definition: GLOFBits.hpp:305
gnsstk::glo::tnbtaucM
@ tnbtaucM
tau_c bits for GLONASS-M
Definition: GLOFBits.hpp:373
gnsstk::glo::esbxnpp
@ esbxnpp
Definition: GLOFBits.hpp:126
gnsstk::PNBNavDataFactory::processAlm
bool processAlm
If true, almanac data will be output by addData.
Definition: PNBNavDataFactory.hpp:126
gnsstk::gloc::asbDeltaT
@ asbDeltaT
Definition: GLOCBits.hpp:353
GLOFNavTimeOffset.hpp
gnsstk
For Sinex::InputHistory.
Definition: BasicFramework.cpp:50
gnsstk::InterSigCorr::isc
double isc
Definition: InterSigCorr.hpp:171
gnsstk::glo::escdtaun
@ escdtaun
Definition: GLOFBits.hpp:233
gnsstk::PNBGLOFNavDataFactory::resetState
void resetState() override
Definition: PNBGLOFNavDataFactory.cpp:608
gnsstk::glo::esbEn
@ esbEn
Definition: GLOFBits.hpp:236
gnsstk::glo::str3
@ str3
Definition: GLOFBits.hpp:55
gnsstk::GLOFNavAlm::omeganA
double omeganA
Argument of perigee (omega_n^A).
Definition: GLOFNavAlm.hpp:283
gnsstk::glo::esiznp
@ esiznp
Z velocity.
Definition: GLOFBits.hpp:208
gnsstk::NavData::timeStamp
CommonTime timeStamp
Definition: NavData.hpp:173
gnsstk::glo::asoH
@ asoH
Definition: GLOFBits.hpp:347
gnsstk::glo::esbtaun
@ esbtaun
Definition: GLOFBits.hpp:226
gnsstk::GLOFNavEph::vel
Triple vel
Satellite velocity at tb in km/s.
Definition: GLOFNavEph.hpp:116
gnsstk::PNBNavDataFactory::processISC
bool processISC
If true, inter-signal correction data will be output by addData.
Definition: PNBNavDataFactory.hpp:134
gnsstk::PNBGLOFNavDataFactory::processTimeUT1
bool processTimeUT1(const PackedNavBitsPtr &navIn, NavDataPtrList &navOut)
Definition: PNBGLOFNavDataFactory.cpp:565
gnsstk::glo::tsbtauGPS
@ tsbtauGPS
Definition: GLOFBits.hpp:384
gnsstk::glo::enbynp
@ enbynp
Definition: GLOFBits.hpp:168
gnsstk::Exception
Definition: Exception.hpp:151
gnsstk::gloc::esbNT
@ esbNT
Definition: GLOCBits.hpp:136
gnsstk::GLONASSTime
Definition: GLONASSTime.hpp:59
gnsstk::gloc::asbDeltaTdot
@ asbDeltaTdot
Definition: GLOCBits.hpp:357
gnsstk::GLOFNavAlm
Definition: GLOFNavAlm.hpp:53
gnsstk::glo::esiP3
@ esiP3
4 or 5 satellites in alm.
Definition: GLOFBits.hpp:183
gnsstk::glo::esbxn
@ esbxn
Definition: GLOFBits.hpp:131
gnsstk::glo::asbC
@ asbC
Definition: GLOFBits.hpp:291
gnsstk::glo::escyn
@ escyn
Definition: GLOFBits.hpp:179
gnsstk::PNBGLOFNavDataFactory::btsc
BasicTimeSystemConverter btsc
Used to convert time stamps to and from GLONASS.
Definition: PNBGLOFNavDataFactory.hpp:214
gnsstk::GLOFNavEph::tauDelta
double tauDelta
Inter-frequency bias.
Definition: GLOFNavEph.hpp:128
gnsstk::glo::tsbln
@ tsbln
Definition: GLOFBits.hpp:388
gnsstk::glo::str4
@ str4
Definition: GLOFBits.hpp:56
gnsstk::gloc::anbepsilon
@ anbepsilon
Definition: GLOCBits.hpp:346
gnsstk::GLOFNavAlm::deltaTdotnA
double deltaTdotnA
Time derivative of deltaT (Delta T'_n^A).
Definition: GLOFNavAlm.hpp:286
gnsstk::PNBGLOFNavDataFactory::pendingAlms
bool pendingAlms
Definition: PNBGLOFNavDataFactory.hpp:220
gnsstk::GLOFNavUT1TimeOffset::tauc
double tauc
Non-integer correction between UTC(SU) and GLONASS.
Definition: GLOFNavUT1TimeOffset.hpp:103
gnsstk::glo::fnbStrNum
@ fnbStrNum
Definition: GLOFBits.hpp:95
gnsstk::SVHealth::Healthy
@ Healthy
Satellite is in a healthy and useable state.
gnsstk::glo::esiBn
@ esiBn
Health flag.
Definition: GLOFBits.hpp:146
gnsstk::glo::enbdtaun
@ enbdtaun
Definition: GLOFBits.hpp:232
gnsstk::glo::enbynpp
@ enbynpp
Definition: GLOFBits.hpp:173
gnsstk::CarrierBand::B1
@ B1
BeiDou B1.
gnsstk::YDSTime::doy
int doy
Definition: YDSTime.hpp:185
gnsstk::glo::tsctaucM
@ tsctaucM
tau_c scale for GLONASS-M
Definition: GLOFBits.hpp:374
gnsstk::glo::escynp
@ escynp
Definition: GLOFBits.hpp:169
gnsstk::glo::esbzn
@ esbzn
Definition: GLOFBits.hpp:219
gnsstk::glo::esctk
@ esctk
Definition: GLOFBits.hpp:118
gnsstk::glo::esbP2
@ esbP2
Definition: GLOFBits.hpp:152
gnsstk::PNBGLOFNavDataFactory::ephAcc
std::map< NavSatelliteID, std::vector< PackedNavBitsPtr > > ephAcc
Definition: PNBGLOFNavDataFactory.hpp:204
gnsstk::PNBNavDataFactory::processEph
bool processEph
If true, ephemeris data will be output by addData.
Definition: PNBNavDataFactory.hpp:124
gnsstk::NavValidityType::InvalidOnly
@ InvalidOnly
Only load/find nav messages that fail validity checks.
gnsstk::glo::tnbtauGPS
@ tnbtauGPS
Definition: GLOFBits.hpp:385
gnsstk::glo::tsbN4
@ tsbN4
Definition: GLOFBits.hpp:380
gnsstk::glo::escP2
@ escP2
Definition: GLOFBits.hpp:154
gnsstk::glo::esiP1
@ esiP1
Adjacent t_b interval flag.
Definition: GLOFBits.hpp:110
gnsstk::YDSTime::year
int year
Definition: YDSTime.hpp:184
gnsstk::glo::esbznp
@ esbznp
Definition: GLOFBits.hpp:209
gnsstk::glo::asoM
@ asoM
Definition: GLOFBits.hpp:295
gnsstk::gloc::enbtb
@ enbtb
Definition: GLOCBits.hpp:152
gnsstk::glo::esiM
@ esiM
GLONASS or GLONASS-M.
Definition: GLOFBits.hpp:270
gnsstk::GLOFNavEph::P4
unsigned P4
Flag 1=ephemeris present/uploaded. 0=nope.
Definition: GLOFNavEph.hpp:125
gnsstk::glo::ascn
@ ascn
Definition: GLOFBits.hpp:303
gnsstk::NavValidityType::ValidOnly
@ ValidOnly
Only load/find nav messages that pass validity checks.
gnsstk::GLOFNavEph::aod
unsigned aod
Age of data in days (E_n).
Definition: GLOFNavEph.hpp:129
gnsstk::glo::asct
@ asct
Definition: GLOFBits.hpp:335
gnsstk::glo::unbB1
@ unbB1
Definition: GLOFBits.hpp:400
gnsstk::glo::enbn
@ enbn
Definition: GLOFBits.hpp:267
gnsstk::glo::escP1
@ escP1
Definition: GLOFBits.hpp:113
gnsstk::GLOFNavAlm::taunA
double taunA
Time offset to GLONASS time (tau_n^A).
Definition: GLOFNavAlm.hpp:279
gnsstk::glo::esbP3
@ esbP3
Definition: GLOFBits.hpp:184
gnsstk::GLOFNavEph::P1
unsigned P1
Flag for interval between adjacent t_b.
Definition: GLOFNavEph.hpp:122
gnsstk::GLOFNavHealth::healthBits
ValidType< uint8_t > healthBits
The 3-bit B_n value.
Definition: GLOFNavHealth.hpp:80
gnsstk::glo::fscStrNum
@ fscStrNum
Definition: GLOFBits.hpp:96
gnsstk::CommonTime
Definition: CommonTime.hpp:84
gnsstk::PNBGLOFNavDataFactory::TimeMeta::setNA
void setNA(unsigned v)
Set the value of NA (from string 5).
Definition: PNBGLOFNavDataFactory.cpp:641
gnsstk::glo::esixn
@ esixn
X position.
Definition: GLOFBits.hpp:130
gnsstk::PNBGLOFNavDataFactory::processTime
bool processTime(const PackedNavBitsPtr &navIn, NavDataPtrList &navOut)
Definition: PNBGLOFNavDataFactory.cpp:486
gnsstk::glo::escn
@ escn
Definition: GLOFBits.hpp:268
gnsstk::GLOFNavAlm::healthBits
bool healthBits
Health flag (C_n, 1 = operable).
Definition: GLOFNavAlm.hpp:276
gnsstk::glo::enbP3
@ enbP3
Definition: GLOFBits.hpp:185
gnsstk::glo::enbP
@ enbP
Definition: GLOFBits.hpp:200
gnsstk::glo::escM
@ escM
Definition: GLOFBits.hpp:273
gnsstk::GLOFNavData::lhealth
bool lhealth
Health flag? Different from B_n and C_n?
Definition: GLOFNavData.hpp:70
CivilTime.hpp
gnsstk::glo::tnbN4
@ tnbN4
Definition: GLOFBits.hpp:381
gnsstk::YDSTime::sod
double sod
Definition: YDSTime.hpp:186
gnsstk::gloc::anblambda
@ anblambda
Definition: GLOCBits.hpp:334
gnsstk::gloc::ascDeltaTdot
@ ascDeltaTdot
Definition: GLOCBits.hpp:359
gnsstk::glo::str1
@ str1
Definition: GLOFBits.hpp:53
gnsstk::GLOFNavEph::accIndex
unsigned accIndex
User accuracy index (F_T).
Definition: GLOFNavEph.hpp:130
gnsstk::TimeSystem::GLO
@ GLO
GLONASS system time (aka UTC(SU))
gnsstk::GLOFNavEph::P2
unsigned P2
Flag of oddness (=1) or evenness (=0) of t_b.
Definition: GLOFNavEph.hpp:123
gnsstk::GLOFNavTimeOffset
Definition: GLOFNavTimeOffset.hpp:53
gnsstk::GLOFNavData::xmit2
CommonTime xmit2
Transmit time for string 2 (eph) or odd string.
Definition: GLOFNavData.hpp:67
gnsstk::GLOFNavAlm::fixFit
void fixFit()
Definition: GLOFNavAlm.cpp:103
example6.interval
interval
Definition: example6.py:75
gnsstk::PNBGLOFNavDataFactory::TimeMeta::setNT
void setNT(unsigned v)
Set the value of NT (from string 4).
Definition: PNBGLOFNavDataFactory.cpp:632
gnsstk::glo::unbKP
@ unbKP
Definition: GLOFBits.hpp:408
gnsstk::CarrierBand::B2
@ B2
BeiDou B2b.
gnsstk::glo::escP4
@ escP4
Definition: GLOFBits.hpp:248
GLONASSTime.hpp
gnsstk::glo::esczn
@ esczn
Definition: GLOFBits.hpp:221
gnsstk::glo::esiynpp
@ esiynpp
Y acceleration.
Definition: GLOFBits.hpp:171
gnsstk::CivilTime
Definition: CivilTime.hpp:55
gnsstk::NavMessageType::TimeOffset
@ TimeOffset
Message containing information about time system offsets.
gnsstk::glo::esbP4
@ esbP4
Definition: GLOFBits.hpp:246
gnsstk::GLOFNavEph::ref
CommonTime ref
Reference time (t_k) for this ephemeris.
Definition: GLOFNavEph.hpp:112
GNSSTK_ASSERT
#define GNSSTK_ASSERT(CONDITION)
Provide an "ASSERT" type macro.
Definition: Exception.hpp:373
gnsstk::glo::enbznp
@ enbznp
Definition: GLOFBits.hpp:210
gnsstk::PNBGLOFNavDataFactory::TimeMeta::isValid
bool isValid()
Return true if all data fields are valid.
Definition: PNBGLOFNavDataFactory.cpp:650
gnsstk::GLOFNavUT1TimeOffset::NT
unsigned NT
Ephemeris days since leap year.
Definition: GLOFNavUT1TimeOffset.hpp:107
gnsstk::glo::tnbNA
@ tnbNA
Definition: GLOFBits.hpp:367
example6.sod
sod
Definition: example6.py:103
gnsstk::glo::esbn
@ esbn
Definition: GLOFBits.hpp:266
gnsstk::gloc::anbtau
@ anbtau
Definition: GLOCBits.hpp:330
gnsstk::PNBNavDataFactory::processHea
bool processHea
If true, health data will be output by addData.
Definition: PNBNavDataFactory.hpp:128
gnsstk::glo::uscB2
@ uscB2
Definition: GLOFBits.hpp:405
gnsstk::GLOFNavEph::clkBias
double clkBias
Satellite clock bias in sec (tau_n).
Definition: GLOFNavEph.hpp:118
gnsstk::GLOFNavEph::fixFit
void fixFit()
Definition: GLOFNavEph.cpp:185
GLOFNavHealth.hpp
gnsstk::glo::fsbStrNum
@ fsbStrNum
String number start bit.
Definition: GLOFBits.hpp:94
gnsstk::GLOFNavUT1TimeOffset::NA
unsigned NA
Almanac days since leap year.
Definition: GLOFNavUT1TimeOffset.hpp:108
gnsstk::TimeSystem::GPS
@ GPS
GPS system time.
DebugTrace.hpp
gnsstk::glo::ascdeltai
@ ascdeltai
Definition: GLOFBits.hpp:318
gnsstk::glo::esbln
@ esbln
Definition: GLOFBits.hpp:204
std
Definition: Angle.hpp:142
gnsstk::GLOFNavAlm::freqnA
int freqnA
Frequency offset (H_n^A).
Definition: GLOFNavAlm.hpp:287
gnsstk::CivilTime::month
int month
Definition: CivilTime.hpp:199
gnsstk::GLOFNavEph::interval
unsigned interval
P1 interval (minutes, see PNBGLOFNavDataFactory).
Definition: GLOFNavEph.hpp:126
gnsstk::glo::esbFT
@ esbFT
Definition: GLOFBits.hpp:251
gnsstk::NavMessageType::Ephemeris
@ Ephemeris
Precision orbits for the transmitting SV.
gnsstk::glo::anbH
@ anbH
Definition: GLOFBits.hpp:349
GLOFNavEph.hpp
gnsstk::GLOFNavEph::P3
unsigned P3
Flag 1=5 almanac sats in frame, 0=4 almanac sats.
Definition: GLOFNavEph.hpp:124
gnsstk::gloc::ascomega
@ ascomega
Definition: GLOCBits.hpp:351
gnsstk::gloc::asblambda
@ asblambda
Definition: GLOCBits.hpp:333
gnsstk::glo::usbB2
@ usbB2
Definition: GLOFBits.hpp:403
gnsstk::glo::esitk
@ esitk
Time ref'd to frame start.
Definition: GLOFBits.hpp:115
gnsstk::glo::tsbNA
@ tsbNA
Definition: GLOFBits.hpp:366
gnsstk::glo::escEn
@ escEn
Definition: GLOFBits.hpp:238
gnsstk::glo::esctaun
@ esctaun
Definition: GLOFBits.hpp:228
gnsstk::gloc::asctau
@ asctau
Definition: GLOCBits.hpp:331
GLOFBits.hpp
gnsstk::glo::asodeltai
@ asodeltai
Definition: GLOFBits.hpp:315
gnsstk::PNBGLOFNavDataFactory::timeAcc
std::map< NavSatelliteID, TimeMeta > timeAcc
Definition: PNBGLOFNavDataFactory.hpp:200
gnsstk::glo::esin
@ esin
Slot number.
Definition: GLOFBits.hpp:265
gnsstk::gloc::anbomega
@ anbomega
Definition: GLOCBits.hpp:350
gnsstk::glo::ascH
@ ascH
Definition: GLOFBits.hpp:350
gnsstk::GLOFNavEph::acc
Triple acc
Satellite acceleration at tb in km/s**2.
Definition: GLOFNavEph.hpp:117
DEBUGTRACE_FUNCTION
#define DEBUGTRACE_FUNCTION()
Definition: DebugTrace.hpp:117
gnsstk::glo::esiynp
@ esiynp
Y velocity.
Definition: GLOFBits.hpp:166
gnsstk::glo::asoepsilon
@ asoepsilon
Definition: GLOFBits.hpp:320
gnsstk::GLOFNavData::satType
GLOFNavSatType satType
Satellite type (M_n: GLONASS or GLONASS-M).
Definition: GLOFNavData.hpp:68
gnsstk::gloc::asbepsilon
@ asbepsilon
Definition: GLOCBits.hpp:345
gnsstk::glo::enbzn
@ enbzn
Definition: GLOFBits.hpp:220
gnsstk::GLOFNavEph::tb
unsigned tb
Epoch index with Moscow day.
Definition: GLOFNavEph.hpp:121
gnsstk::glo::enbxn
@ enbxn
Definition: GLOFBits.hpp:132
gnsstk::glo
Definition: GLOFBits.hpp:44
gnsstk::StdNavTimeOffset::a0
double a0
Bias coefficient of source time scale.
Definition: StdNavTimeOffset.hpp:122
gnsstk::glo::str2
@ str2
Definition: GLOFBits.hpp:54
gnsstk::glo::escynpp
@ escynpp
Definition: GLOFBits.hpp:174
gnsstk::glo::esbtk
@ esbtk
Definition: GLOFBits.hpp:116
gnsstk::PNBGLOFNavDataFactory::TimeMeta::NT
vuint NT
Current calendar number of day w/in 4-year interval.
Definition: PNBGLOFNavDataFactory.hpp:195
gnsstk::CommonTime::changeTimeSystem
bool changeTimeSystem(TimeSystem timeSystem, TimeSystemConverter *conv)
Definition: CommonTime.cpp:190
gnsstk::glo::escGamman
@ escGamman
Definition: GLOFBits.hpp:191
gnsstk::GLOFNavEph::healthBits
uint8_t healthBits
The 3-bit B_n value (look at bit 2 not 0 or 1).
Definition: GLOFNavEph.hpp:120
gnsstk::glo::enbGamman
@ enbGamman
Definition: GLOFBits.hpp:190
gnsstk::glo::tsbtauc
@ tsbtauc
Definition: GLOFBits.hpp:370
gnsstk::GLOFNavEph::freqBias
double freqBias
Satellite relative frequency bias (gamma_n).
Definition: GLOFNavEph.hpp:119
GLOFNavUT1TimeOffset.hpp
gnsstk::glo::enbxnp
@ enbxnp
Definition: GLOFBits.hpp:122
gnsstk::glo::esbznpp
@ esbznpp
Definition: GLOFBits.hpp:214
gnsstk::glo::esiyn
@ esiyn
Y position.
Definition: GLOFBits.hpp:176
gnsstk::glo::enbM
@ enbM
Definition: GLOFBits.hpp:272
gnsstk::PNBGLOFNavDataFactory::TimeMeta::B2
vdouble B2
GLONASS-UT1 drift.
Definition: PNBGLOFNavDataFactory.hpp:189
gnsstk::glo::uscKP
@ uscKP
Definition: GLOFBits.hpp:409
gnsstk::glo::enbznpp
@ enbznpp
Definition: GLOFBits.hpp:215
gnsstk::glo::ason
@ ason
Definition: GLOFBits.hpp:300
gnsstk::glo::esixnpp
@ esixnpp
X acceleration.
Definition: GLOFBits.hpp:125
gnsstk::GLOFNavAlm::tLambdanA
double tLambdanA
Time of ascending node crossing (t_lambda_n^A).
Definition: GLOFNavAlm.hpp:284
gnsstk::glo::esbdtaun
@ esbdtaun
Definition: GLOFBits.hpp:231
gnsstk::glo::enbFT
@ enbFT
Definition: GLOFBits.hpp:252
gnsstk::GLOFNavAlm::deltainA
double deltainA
Correction to mean inclination (Delta i_n^A).
Definition: GLOFNavAlm.hpp:281
gnsstk::gloc::ascM
@ ascM
Definition: GLOCBits.hpp:327
gnsstk::SVHealth::Unhealthy
@ Unhealthy
Satellite is unhealthy and should not be used.
gnsstk::glo::uscB1
@ uscB1
Definition: GLOFBits.hpp:401
gnsstk::glo::esiGamman
@ esiGamman
Definition: GLOFBits.hpp:188
gnsstk::glo::asbl
@ asbl
Definition: GLOFBits.hpp:353
gnsstk::glo::esbP
@ esbP
Definition: GLOFBits.hpp:199
GLOFNavISC.hpp
gnsstk::BasicTimeSystemConverter::getOffset
bool getOffset(TimeSystem fromSys, TimeSystem toSys, const CommonTime &t, double &offs) override
Definition: BasicTimeSystemConverter.cpp:45
gnsstk::StdNavTimeOffset::effTime
CommonTime effTime
Effectivity time (wnLSF,dn).
Definition: StdNavTimeOffset.hpp:127
GLOFNavAlm.hpp
gnsstk::gloc::asbomega
@ asbomega
Definition: GLOCBits.hpp:349
gnsstk::glo::esbP1
@ esbP1
Definition: GLOFBits.hpp:111
gnsstk::gloc::asclambda
@ asclambda
Definition: GLOCBits.hpp:335
gnsstk::glo::asolambda
@ asolambda
Definition: GLOFBits.hpp:310
gnsstk::glo::usbB1
@ usbB1
Definition: GLOFBits.hpp:399
gnsstk::gloc::enbNT
@ enbNT
Definition: GLOCBits.hpp:137
gnsstk::gloc::ascDeltaT
@ ascDeltaT
Definition: GLOCBits.hpp:355
gnsstk::ValidType::set_valid
void set_valid(const bool &v) noexcept
Definition: ValidType.hpp:99
gnsstk::StdNavTimeOffset::refTime
CommonTime refTime
Reference time for computation.
Definition: StdNavTimeOffset.hpp:126
gnsstk::glo::asot
@ asot
Definition: GLOFBits.hpp:332
gnsstk::glo::esiln
@ esiln
Definition: GLOFBits.hpp:203
gnsstk::glo::escxnpp
@ escxnpp
Definition: GLOFBits.hpp:128
gnsstk::PNBGLOFNavDataFactory::getFrameNum
unsigned getFrameNum(const CommonTime &xmitTime)
Definition: PNBGLOFNavDataFactory.cpp:592
gnsstk::gloc::esctb
@ esctb
Definition: GLOCBits.hpp:153
gnsstk::glo::esiP4
@ esiP4
Ephemeris available or no.
Definition: GLOFBits.hpp:245
gnsstk::GLOFNavSatType
GLOFNavSatType
Values for GLONASS FDMA nav message, Word M.
Definition: GLOFNavSatType.hpp:51
gnsstk::PNBGLOFNavDataFactory::processAlmOrb
bool processAlmOrb(const NavSatelliteID &key, unsigned almIdx, NavDataPtrList &navOut)
Definition: PNBGLOFNavDataFactory.cpp:377
gnsstk::gloc::esbtb
@ esbtb
Definition: GLOCBits.hpp:151
gnsstk::glo::esbynpp
@ esbynpp
Definition: GLOFBits.hpp:172
TimeString.hpp
gnsstk::glo::escznp
@ escznp
Definition: GLOFBits.hpp:211
gnsstk::glo::enbEn
@ enbEn
Definition: GLOFBits.hpp:237
gnsstk::glo::unbB2
@ unbB2
Definition: GLOFBits.hpp:404
gnsstk::PNBGLOFNavDataFactory::addData
bool addData(const PackedNavBitsPtr &navIn, NavDataPtrList &navOut, double cadence=-1) override
Definition: PNBGLOFNavDataFactory.cpp:67
gnsstk::NavMessageType::Almanac
@ Almanac
Low-precision orbits for other than the transmitting SV.
gnsstk::glo::asbH
@ asbH
Definition: GLOFBits.hpp:348
gnsstk::glo::asbdeltai
@ asbdeltai
Definition: GLOFBits.hpp:316
gnsstk::GLOFNavHealth::ln
ValidType< bool > ln
The l_n health bit in strings 3,5,7,9,11,13,15.
Definition: GLOFNavHealth.hpp:81
gnsstk::GLOFNavPCode
GLOFNavPCode
Definition: GLOFNavPCode.hpp:56
gnsstk::PNBNavDataFactory::navValidity
NavValidityType navValidity
Determines how the factory should filter added data.
Definition: PNBNavDataFactory.hpp:121
PNBGLOFNavDataFactory.hpp


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