PNBBDSD2NavDataFactory.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 "BDSD2NavEph.hpp"
41 #include "BDSD2NavTimeOffset.hpp"
42 #include "BDSD2NavHealth.hpp"
43 #include "BDSD2NavIono.hpp"
44 #include "BDSD2NavISC.hpp"
45 #include "TimeCorrection.hpp"
46 #include "TimeString.hpp"
47 #include "BDSD2Bits.hpp"
48 
49 using namespace std;
50 using namespace gnsstk::bds;
51 
52 namespace gnsstk
53 {
54  // subframe 5:
55  // from to what
56  // - 1 13 iono
57  // - 14 34 reserved
58  // I 35 health
59  // I 36 health + wna
60  // I 37 60 alm
61  // - 61 73 iono
62  // - 74 94 reserved
63  // I 95 100 alm
64  // I 101 gnss time offset
65  // I 102 utc time offset
66  // I 103 115 alm (alt reserved)
67  // I 116 health (alt reserved)
68  // - 117 120 reserved
69 
70  bool PNBBDSD2NavDataFactory ::
71  addData(const PackedNavBitsPtr& navIn, NavDataPtrList& navOut,
72  double cadence)
73  {
74  if ((navIn->getNavID().navType != NavType::BeiDou_D2) ||
75  (navIn->getNumBits() != 300))
76  {
77  // This class only processes BeiDou D2 NAV.
78  return false;
79  }
80  bool rv = true;
81  try
82  {
83  unsigned long pgid;
84  unsigned long sfid = navIn->asUnsignedLong(
86  // cerr << "sfid=" << sfid;
87  unsigned long pnum;
88  // double TOA;
89  bool checkParity = false, expParity = false;
90  switch (navValidity)
91  {
92  case NavValidityType::ValidOnly:
93  checkParity = true;
94  expParity = true;
95  break;
96  case NavValidityType::InvalidOnly:
97  checkParity = true;
98  expParity = false;
99  break;
100  }
101  if (checkParity)
102  {
104  }
105  switch (sfid)
106  {
107  case 1:
108  pgid = navIn->asUnsignedLong(esbPnum,enbPnum,escPnum);
109  rv = processEph(pgid, navIn, navOut);
110  break;
111  case 5:
112  pgid = navIn->asUnsignedLong(asbPnum,anbPnum,ascPnum);
113  if (pgid == 35)
114  {
115  rv = processSF5Pg35(navIn, navOut);
116  }
117  else if (pgid == 36)
118  {
119  rv = processSF5Pg36(navIn, navOut);
120  }
121  else if (((pgid >= 37) && (pgid <= 60)) ||
122  ((pgid >= 95) && (pgid <= 100)) ||
123  ((pgid >= 103) && (pgid <= 115)))
124  {
125  rv = processAlm(pgid, navIn, navOut);
126  }
127  else if (pgid == 101)
128  {
129  rv = processSF5Pg101(navIn, navOut);
130  }
131  else if (pgid == 102)
132  {
133  rv = processSF5Pg102(navIn, navOut);
134  }
135  else if (pgid == 116)
136  {
137  rv = processSF5Pg116(navIn, navOut);
138  }
139  break;
140  default:
141  // quietly ignore other subframe IDs, which we don't process.
142  rv = true;
143  break;
144  }
145  // cerr << endl;
146  }
147  catch (Exception& exc)
148  {
149  rv = false;
150  cerr << exc << endl;
151  }
152  catch (std::exception& exc)
153  {
154  rv = false;
155  cerr << exc.what() << endl;
156  }
157  catch (...)
158  {
159  rv = false;
160  cerr << "Unknown exception" << endl;
161  }
162  return rv;
163  }
164 
165 
166  bool PNBBDSD2NavDataFactory ::
167  processAlm(unsigned pnum, const PackedNavBitsPtr& navIn,
168  NavDataPtrList& navOut)
169  {
170  SatID xmitSat(navIn->getsatSys());
171  // Key used for data accumulating, which we don't separate by
172  // subject satellite.
173  NavSatelliteID key(0, xmitSat, navIn->getobsID(), navIn->getNavID());
174  if (PNBNavDataFactory::processAlm || PNBNavDataFactory::processHea)
175  {
176  // We need to store AmEpID for almanacs and/or health.
177  // The ICD doesn't describe this very clearly, and the
178  // expanded almanacs don't seem to be broadcast on D2 at
179  // the moment, but the best I can ascertain is that the
180  // most recent AmEpID should be used. The problem is it
181  // could potentially change between the most recent usable
182  // subframe with an AmEpID and the subframe for which you
183  // intend to use it. The best we can do is make sure the
184  // AmEpID is within the same superframe.
185  if (((pnum >= 37) && (pnum <= 60)) ||
186  ((pnum >= 95) && (pnum <= 100)))
187  {
188  amEpIDMap[key].setValues(navIn->getTransmitTime(),
189  navIn->asUnsignedLong(asbAmEpID,anbAmEpID,
190  ascAmEpID));
191  }
192  }
193  if (!PNBNavDataFactory::processAlm)
194  {
195  // User doesn't want almanacs so don't do any processing.
196  return true;
197  }
198  // Only sf 5 pg 103-115 have almanacs in the expanded almanac.
199  if ((pnum >= 103) && (pnum <= 115))
200  {
201  // Make sure that the stored AmEpID is in the same master
202  // frame as the AmID value, and that the AmEpID indicates
203  // an expanded subframe.
204  if (!amEpIDMap[key].isExpanded(navIn->getTransmitTime()))
205  {
206  // This is not an expanded almanac, it is either a
207  // reserved page or we simply don't know, so skip it.
208  return true;
209  }
210  }
211  // Actual satellite ID (subject and transmit)
212  unsigned long svid = pnum; // svid is the same as page num for sf4
213  // The ICD doesn't explicitly state what the SV ID is for the
214  // D2 almanacs, so we have to guess.
215  if ((pnum >= 37) && (pnum <= 60))
216  {
217  svid = pnum-36; // SV ID 1-24 (guess)
218  }
219  else if ((pnum >= 95) && (pnum <= 100))
220  {
221  svid = pnum-70; // SV ID 25-30 (guess)
222  }
223  else if ((pnum >= 103) && (pnum <= 115))
224  {
225  // AmID is in the same position as AmEpID, it's just a
226  // different subframe/page.
227  uint8_t amID = navIn->asUnsignedLong(asbAmEpID,anbAmEpID,ascAmEpID);
228  // cerr << " AmID = " << (unsigned)amID << endl;
229  // see Table 5-22 in ICD-B1I
230  switch (amID)
231  {
232  case 0x00:
233  return true; // reserved values, ignore
234  case 0x01:
235  svid = pnum-72; // SV ID 31-43
236  break;
237  case 0x02:
238  svid = pnum-59; // SV ID 44-56
239  break;
240  case 0x03:
241  if (pnum < 110)
242  svid = pnum-46; // SV ID 57-63
243  else
244  return true; // reserved values, ignore
245  break;
246  default:
247  GNSSTK_THROW(Exception("Invalid AmID value " +
248  StringUtils::asString((unsigned)amID)));
249  break;
250  }
251  }
252  NavSatelliteID sat(svid, xmitSat, navIn->getobsID(), navIn->getNavID());
253  auto alm = std::make_shared<BDSD2NavAlm>();
254  alm->isDefault = isAlmDefault(navIn);
255  // cerr << " svid=" << svid << " default=" << alm->isDefault;
256  // NavData
257  alm->timeStamp = navIn->getTransmitTime();
258  alm->signal = NavMessageID(sat, NavMessageType::Almanac);
259  // OrbitData
260  // OrbitDataKepler
261  alm->xmitTime = alm->timeStamp;
262  //alm->health is set below
263  alm->M0 = navIn->asSignedDouble(asbM0m,anbM0m,asbM0l,anbM0l,ascM0);
264  alm->ecc = navIn->asUnsignedDouble(asbEcc,anbEcc,ascEcc);
265  alm->Ahalf = navIn->asUnsignedDouble(asbAhalfm,anbAhalfm,
267  alm->A = alm->Ahalf * alm->Ahalf;
268  alm->OMEGA0 = navIn->asSignedDouble(asbOMEGA0m,anbOMEGA0m,
270  // alm->i0 is set below
271  alm->w = navIn->asSignedDouble(asbwm,anbwm,asbwl,anbwl,ascw);
272  alm->OMEGAdot = navIn->asSignedDouble(asbOMEGAdotm,anbOMEGAdotm,
274  ascOMEGAdot);
275  alm->af0 = navIn->asSignedDouble(asbA0,anbA0,ascA0);
276  alm->af1 = navIn->asSignedDouble(asbA1,anbA1,ascA1);
277  // BDSD2NavData
278  alm->pre = navIn->asUnsignedLong(fsbPre,fnbPre,fscPre);
279  alm->rev = navIn->asUnsignedLong(fsbRev,fnbRev,fscRev);
280  alm->fraID = 5;
281  alm->sow = navIn->asUnsignedLong(fsbSOWm,fnbSOWm,fsbSOWl,fnbSOWl,fscSOW);
282  // BDSD2NavAlm
283  alm->pnum = pnum;
284  alm->toa = navIn->asUnsignedDouble(asbtoa,anbtoa,asctoa);
285  unsigned long toaab = navIn->asUnsignedLong(asbtoa,anbtoa,1);
286  // cerr << "sfid=" << sfid << " pnum=" << pnum << " xmit=" << xmitSat.id
287  // << " subj=" << sat.sat.id << " toa=" << alm->toa << "=" << toaab
288  // << endl;
289  alm->deltai = navIn->asSignedDouble(asbdim,anbdim,asbdil,anbdil,ascdi);
290  if ((sat.sat.id > 5) && (sat.sat.id < 59))
291  {
292  // MEO/IGSO satellite. GEO satellites have 0 inclination offset.
293  alm->i0 = BDSD2NavData::refioffset + alm->deltai;
294  }
295  if (!finishAlm(alm, false, key, navOut))
296  almAcc[key].push_back(alm);
297  return true;
298  }
299 
300 
301  bool PNBBDSD2NavDataFactory ::
302  processEph(unsigned long pgid,
303  const PackedNavBitsPtr& navIn, NavDataPtrList& navOut)
304  {
305  // Tgd are scaled by 0.1 to get nanoseconds, then x10^-9 to get seconds
306  constexpr double sf = 0.1e-9;
307  if ((pgid < 1) || (pgid > 10))
308  return false;
309  NavSatelliteID key(navIn->getsatSys().id, navIn->getsatSys(),
310  navIn->getobsID(), navIn->getNavID());
311  if (pgid == 1)
312  {
313  if (PNBNavDataFactory::processISC)
314  {
315  std::shared_ptr<BDSD2NavISC> isc = std::make_shared<BDSD2NavISC>();
316  isc->timeStamp = navIn->getTransmitTime();
317  isc->signal = NavMessageID(
318  NavSatelliteID(navIn->getsatSys().id, navIn->getsatSys(),
319  navIn->getobsID(), navIn->getNavID()),
320  NavMessageType::ISC);
321  isc->pre = navIn->asUnsignedLong(fsbPre,fnbPre,fscPre);
322  isc->rev = navIn->asUnsignedLong(fsbRev,fnbRev,fscRev);
323  isc->fraID = 1;
324  isc->sow = navIn->asUnsignedLong(fsbSOWm,fnbSOWm,fsbSOWl,fnbSOWl,
325  fscSOW);
326  isc->tgd1 = sf*navIn->asSignedDouble(esbTGD1,enbTGD1,escTGD1);
327  isc->tgd2 = sf*navIn->asSignedDouble(esbTGD2,enbTGD2,escTGD2);
328  navOut.push_back(isc);
329  }
330  if (processHea)
331  {
332  std::shared_ptr<BDSD2NavHealth> hea =
333  std::make_shared<BDSD2NavHealth>();
334  hea->timeStamp = navIn->getTransmitTime();
335  hea->signal = NavMessageID(key, NavMessageType::Health);
336  hea->isAlmHealth = false;
337  hea->satH1 = navIn->asBool(xesbSatH1);
338  // cerr << "add D2NAV eph health" << endl;
339  navOut.push_back(hea);
340  }
341  }
342  else if ((pgid == 2) && PNBNavDataFactory::processIono)
343  {
344  std::shared_ptr<BDSD2NavIono> iono =
345  std::make_shared<BDSD2NavIono>();
346  iono->timeStamp = navIn->getTransmitTime();
347  iono->signal = NavMessageID(
348  NavSatelliteID(navIn->getsatSys().id, navIn->getsatSys(),
349  navIn->getobsID(), navIn->getNavID()),
350  NavMessageType::Iono);
351  iono->pre = navIn->asUnsignedLong(fsbPre,fnbPre,fscPre);
352  iono->rev = navIn->asUnsignedLong(fsbRev,fnbRev,fscRev);
353  iono->fraID = 1;
354  iono->sow = navIn->asUnsignedLong(fsbSOWm,fnbSOWm,fsbSOWl,fnbSOWl,
355  fscSOW);
356  iono->alpha[0] = navIn->asSignedDouble(esbAlpha0m,enbAlpha0m,
358  escAlpha0);
359  iono->alpha[1] = navIn->asSignedDouble(esbAlpha1,enbAlpha1,
360  escAlpha1);
361  iono->alpha[2] = navIn->asSignedDouble(esbAlpha2,enbAlpha2,
362  escAlpha2);
363  iono->alpha[3] = navIn->asSignedDouble(esbAlpha3m,enbAlpha3m,
365  escAlpha3);
366  iono->beta[0] = navIn->asSignedDouble(esbBeta0,enbBeta0,escBeta0);
367  iono->beta[1] = navIn->asSignedDouble(esbBeta1,enbBeta1,escBeta1);
368  iono->beta[2] = navIn->asSignedDouble(esbBeta2m,enbBeta2m,
370  escBeta2);
371  iono->beta[3] = navIn->asSignedDouble(esbBeta3,enbBeta3,escBeta3);
372  navOut.push_back(iono);
373  }
374  if (!PNBNavDataFactory::processEph)
375  {
376  // User doesn't want ephemerides so don't do any processing.
377  return true;
378  }
379  if (ephAcc.find(key) == ephAcc.end())
380  {
381  // cerr << "ephAcc is empty for signal " << key << endl;
382  // set up a new ephemeris
383  ephAcc[key].resize(10);
384  ephAcc[key][pgid-1] = navIn;
385  // nothing in navOut yet and no further processing because
386  // we only have one of three subframes at this point.
387  return true;
388  }
389  std::vector<PackedNavBitsPtr> &ephSF(ephAcc[key]);
390  ephSF[pgid-1] = navIn;
391  // stop processing if we don't have all the necessary subframes
392  for (unsigned i = 0; i < 10; i++)
393  {
394  if (i == pg2)
395  {
396  // Page 2 only contains Klobuchar model parameters
397  // which we don't bother storing in ephemerides.
398  continue;
399  }
400  if (!ephSF[i] || (ephSF[i]->getNumBits() != 300))
401  {
402  // cerr << "Not ready for full D2NAV eph processing" << endl
403  // << " sf1: " << (bool)ephSF[sf1] << " "
404  // << (ephSF[sf1] ? ephSF[sf1]->getNumBits() : -1) << endl
405  // << " sf2: " << (bool)ephSF[sf2] << " "
406  // << (ephSF[sf2] ? ephSF[sf2]->getNumBits() : -1) << endl
407  // << " sf3: " << (bool)ephSF[sf3] << " "
408  // << (ephSF[sf3] ? ephSF[sf3]->getNumBits() : -1) << endl;
409  return true;
410  }
411  if (i > 0)
412  {
413  // Stop processing if we don't have consecutive subframes.
414  // BeiDou doesn't have anything like IODC/IODE to match
415  // subframes.
419  unsigned long sowA, sowB;
420  if (i == pg3)
421  {
422  // page 3, which follows page 2 (of course) may be
423  // absent, but since we don't care about page 2, we
424  // check page 3 against page 1 + (3 seconds).
425  sowA = ephSF[i-2]->asUnsignedLong(fsbSOWm,fnbSOWm,fsbSOWl,
426  fnbSOWl,fscSOW) + 3;
427  }
428  else
429  {
430  sowA = ephSF[i-1]->asUnsignedLong(fsbSOWm,fnbSOWm,fsbSOWl,
431  fnbSOWl,fscSOW);
432  }
433  sowB = ephSF[i]->asUnsignedLong(fsbSOWm,fnbSOWm,fsbSOWl,fnbSOWl,
434  fscSOW);
435  // subframe 1 is broadcast every 3 seconds
436  if ((sowB - sowA) != 3)
437  {
438  // Even though the mismatch might be considered an error,
439  // we don't really want to mark it as such and rather
440  // consider it as a "valid" but unprocessable data set.
441  return true;
442  }
443  }
444  }
445  std::shared_ptr<BDSD2NavEph> eph = std::make_shared<BDSD2NavEph>();
446  // NavData
447  eph->timeStamp = ephSF[pg1]->getTransmitTime();
448  eph->signal = NavMessageID(key, NavMessageType::Ephemeris);
449  // cerr << "Ready for full D2NAV eph processing for " << (NavSignalID)key << endl;
450  // OrbitData = empty
451  // OrbitDataKepler
452  eph->xmitTime = eph->timeStamp;
453  double toe = ephSF[esitoem]->asUnsignedDouble(esbtoem,enbtoem,
455  double toc = ephSF[esitocm]->asUnsignedDouble(esbtocm,enbtocm,
457  unsigned wn = ephSF[esiWN]->asUnsignedLong(esbWN,enbWN,escWN);
458  eph->Toe = BDSWeekSecond(wn,toe);
459  eph->Toc = BDSWeekSecond(wn,toc);
460  // health is set below
461  eph->Cuc = PackedNavBits::asSignedDouble
462  ({esbCucm,esbCucl},
463  {enbCucm,enbCucl},
464  {esiCucm,esiCucl},
465  ephSF, escCuc);
466  // cout << "Cuc bits: " << hex
467  // << ephSF[esiCucm]->asUnsignedLong(esbCucm,enbCucm,esbCucl,enbCucl,
468  // escCuc)
469  // << dec << " " << eph->Cuc << endl;
470  eph->Cus = ephSF[esiCusm]->asSignedDouble(esbCusm,enbCusm,esbCusl,enbCusl,
471  escCus);
472  // cout << "Cus bits: " << hex
473  // << ephSF[esiCus]->asUnsignedLong(esbCus,enbCus,escCus)
474  // << dec << " " << eph->Cus << endl;
475  eph->Crc = ephSF[esiCrcm]->asSignedDouble(esbCrcm,enbCrcm,
477  eph->Crs = ephSF[esiCrs]->asSignedDouble(esbCrs,enbCrs,escCrs);
478  eph->Cic = PackedNavBits::asSignedDouble({esbCicm,esbCici,esbCicl},
481  ephSF, escCic);
482  eph->Cis = ephSF[esiCis]->asSignedDouble(esbCis,enbCis,escCis);
483  eph->M0 = PI * PackedNavBits::asSignedDouble
484  ({esbM0m,esbM0i,esbM0l},
485  {enbM0m,enbM0i,enbM0l},
486  {esiM0m,esiM0i,esiM0l},
487  ephSF, escM0);
488  eph->dn = ephSF[esidn]->asDoubleSemiCircles(esbdn,enbdn,escdn);
489  // no dndot in BDS D2NAV
490  eph->ecc = PackedNavBits::asUnsignedDouble({esbEccm,esbEcci,esbEccl},
493  ephSF, escEcc);
494  eph->Ahalf = PackedNavBits::asUnsignedDouble
498  ephSF, escAhalf);
499  eph->A = eph->Ahalf * eph->Ahalf;
500  // no Adot in BDS D2NAV
501  eph->OMEGA0 = PI * PackedNavBits::asSignedDouble
505  ephSF, escOMEGA0);
506  eph->i0 = PI * PackedNavBits::asSignedDouble
510  ephSF, esci0);
511  eph->w = PI * PackedNavBits::asSignedDouble
512  ({esbwm,esbwi,esbwl},
513  {enbwm,enbwi,enbwl},
514  {esiwm,esiwi,esiwl},
515  ephSF, escw);
516  eph->OMEGAdot = PI * PackedNavBits::asSignedDouble
520  ephSF, escOMEGAdot);
521  eph->idot = ephSF[esiidotm]->asDoubleSemiCircles(esbidotm,enbidotm,
523  escidot);
524  eph->af0 = ephSF[esia0m]->asSignedDouble(esba0m,enba0m,esba0l,enba0l,
525  esca0);
526  eph->af1 = PackedNavBits::asSignedDouble
527  ({esba1m,esba1i,esba1l},
528  {enba1m,enba1i,enba1l},
529  {esia1m,esia1i,esia1l},
530  ephSF, esca1);
531  eph->af2 = ephSF[esia2m]->asSignedDouble(esba2m,enba2m,esba2l,enba2l,
532  esca2);
533  // BDSD2NavData
534  eph->pre = ephSF[pg1]->asUnsignedLong(fsbPre,fnbPre,fscPre);
535  eph->rev = ephSF[pg1]->asUnsignedLong(fsbRev,fnbRev,fscRev);
536  eph->fraID = ephSF[pg1]->asUnsignedLong(fsbFraID,fnbFraID,fscFraID);
537  eph->sow = ephSF[pg1]->asUnsignedLong(fsbSOWm,fnbSOWm,fsbSOWl,fnbSOWl,
538  fscSOW);
539  // BDSD2NavEph
540  eph->satH1 = ephSF[xesiSatH1]->asBool(xesbSatH1);
541  eph->health = ((eph->satH1 == false) ? SVHealth::Healthy :
542  SVHealth::Unhealthy); // actually in OrbitDataKepler
543  eph->uraIndex = ephSF[esiURAI]->asUnsignedLong(esbURAI,enbURAI,escURAI);
544  eph->tgd1 = sf*ephSF[esiTGD1]->asSignedDouble(esbTGD1,enbTGD1,escTGD1);
545  eph->tgd2 = sf*ephSF[esiTGD2]->asSignedDouble(esbTGD2,enbTGD2,escTGD2);
546  eph->aodc = ephSF[esiAODC]->asUnsignedLong(esbAODC,enbAODC,escAODC);
547  eph->aode = ephSF[esiAODE]->asUnsignedLong(esbAODE,enbAODE,escAODE);
548  eph->fixFit();
549  // cerr << "add D2NAV eph" << endl;
550  navOut.push_back(eph);
551  // Clear out the broadcast ephemeris that's been processed.
552  ephAcc.erase(key);
553  return true;
554  }
555 
556 
557  bool PNBBDSD2NavDataFactory ::
558  processSF5Pg35(const PackedNavBitsPtr& navIn, NavDataPtrList& navOut)
559  {
560  if (PNBNavDataFactory::processHea || PNBNavDataFactory::processAlm)
561  {
562  makeHealth(navIn,navOut,1,h1sbHea1m,h1nbHea1m,h1sbHea1l,
563  h1nbHea1l);
564  makeHealth(navIn,navOut,2,h1sbHea2,h1nbHea2);
565  makeHealth(navIn,navOut,3,h1sbHea3m,h1nbHea3m,h1sbHea3l,
566  h1nbHea3l);
567  makeHealth(navIn,navOut,4,h1sbHea4,h1nbHea4);
568  makeHealth(navIn,navOut,5,h1sbHea5,h1nbHea5);
569  makeHealth(navIn,navOut,6,h1sbHea6m,h1nbHea6m,h1sbHea6l,
570  h1nbHea6l);
571  makeHealth(navIn,navOut,7,h1sbHea7,h1nbHea7);
572  makeHealth(navIn,navOut,8,h1sbHea8m,h1nbHea8m,h1sbHea8l,
573  h1nbHea8l);
574  makeHealth(navIn,navOut,9,h1sbHea9,h1nbHea9);
575  makeHealth(navIn,navOut,10,h1sbHea10,h1nbHea10);
576  makeHealth(navIn,navOut,11,h1sbHea11,h1nbHea11);
577  makeHealth(navIn,navOut,12,h1sbHea12,h1nbHea12);
578  makeHealth(navIn,navOut,13,h1sbHea13m,h1nbHea13m,h1sbHea13l,
579  h1nbHea13l);
580  makeHealth(navIn,navOut,14,h1sbHea14,h1nbHea14);
581  makeHealth(navIn,navOut,15,h1sbHea15m,h1nbHea15m,h1sbHea15l,
582  h1nbHea15l);
583  makeHealth(navIn,navOut,16,h1sbHea16,h1nbHea16);
584  makeHealth(navIn,navOut,17,h1sbHea17,h1nbHea17);
585  makeHealth(navIn,navOut,18,h1sbHea18m,h1nbHea18m,h1sbHea18l,
586  h1nbHea18l);
587  makeHealth(navIn,navOut,19,h1sbHea19,h1nbHea19);
588  SatID xmitSat(navIn->getsatSys());
589  NavSatelliteID key(0, xmitSat, navIn->getobsID(), navIn->getNavID());
590  finishAlm(false, key, navOut);
591  }
592  return true;
593  }
594 
595 
596  bool PNBBDSD2NavDataFactory ::
597  processSF5Pg36(const PackedNavBitsPtr& navIn, NavDataPtrList& navOut)
598  {
599  if (PNBNavDataFactory::processHea || PNBNavDataFactory::processAlm)
600  {
601  makeHealth(navIn,navOut,20,h2sbHea20m,h2nbHea20m,h2sbHea20l,
602  h2nbHea20l);
603  makeHealth(navIn,navOut,21,h2sbHea21,h2nbHea21);
604  makeHealth(navIn,navOut,22,h2sbHea22m,h2nbHea22m,h2sbHea22l,
605  h2nbHea22l);
606  makeHealth(navIn,navOut,23,h2sbHea23,h2nbHea23);
607  makeHealth(navIn,navOut,24,h2sbHea24,h2nbHea24);
608  makeHealth(navIn,navOut,25,h2sbHea25m,h2nbHea25m,h2sbHea25l,
609  h2nbHea25l);
610  makeHealth(navIn,navOut,26,h2sbHea26,h2nbHea26);
611  makeHealth(navIn,navOut,27,h2sbHea27m,h2nbHea27m,h2sbHea27l,
612  h2nbHea27l);
613  makeHealth(navIn,navOut,28,h2sbHea28,h2nbHea28);
614  makeHealth(navIn,navOut,29,h2sbHea29,h2nbHea29);
615  makeHealth(navIn,navOut,30,h2sbHea30,h2nbHea30);
616  }
617  if (PNBNavDataFactory::processAlm)
618  {
619  // No checks for correct svid, just assume that the input
620  // data has already been checked (it will have been by
621  // addData).
622  SatID xmitSat(navIn->getsatSys());
623  ObsID oid(navIn->getobsID());
624  NavID navid(navIn->getNavID());
625  // Key used for data accumulating, which we don't separate by
626  // subject satellite.
627  NavSatelliteID key(0, xmitSat, oid, navid);
628  // Set the fullWNa now that we have something to go on,
629  // but only if we're processing almanac data, which is the
630  // only situation where it's used.
631  double toa = navIn->asUnsignedDouble(h2sbtoam,h2nbtoam,
633  unsigned long toamsb = navIn->asUnsignedLong(h2sbtoam,h2nbtoam,1);
634  unsigned long toalsb = navIn->asUnsignedLong(h2sbtoal,h2nbtoal,1);
635  unsigned long toaab = navIn->asUnsignedLong(h2sbtoam,h2nbtoam,
636  h2sbtoal,h2nbtoal,1);
637  unsigned shortWNa = navIn->asUnsignedLong(h2sbWNa,h2nbWNa,h2scWNa);
638  BDSWeekSecond ws(navIn->getTransmitTime());
639  long refWeek = ws.week;
640  unsigned fullWNa = timeAdjust8BitWeekRollover(shortWNa, refWeek);
641  fullWNaMap[xmitSat.id] = BDSWeekSecond(fullWNa, toa);
642  // cerr << "sfid=5 pnum=8 xmit=" << xmitSat.id << " toa=" << toa
643  // << "=" << toaab << " toa-msb=" << toamsb << " ("
644  // << std::bitset<h2nbtoam>(toamsb) << ") toa-lsb=" << toalsb
645  // << " (" << std::bitset<h2nbtoal>(toalsb) << ") fullWNa="
646  // << fullWNa << endl;
647  // cerr << " wna = " << fullWNa << " (" << shortWNa << ") refWeek = "
648  // << refWeek << " toa = " << toa << " key = " << key;
649  finishAlm(true, key, navOut);
650  }
651  return true;
652  }
653 
654 
655  bool PNBBDSD2NavDataFactory ::
656  processSF5Pg101(const PackedNavBitsPtr& navIn, NavDataPtrList& navOut)
657  {
658  if (PNBNavDataFactory::processTim)
659  {
660  constexpr double sf = 0.1; // A0/A1 are scaled by 0.1
661  // This is my best guess at what is an appropriate
662  // reference time. The documentation is unclear.
666  BDSWeekSecond ref(navIn->getTransmitTime());
667  ref.sow = 0;
668  // BDT-GPS time offset
669  std::shared_ptr<BDSD2NavTimeOffset> gps =
670  std::make_shared<BDSD2NavTimeOffset>();
671  gps->timeStamp = navIn->getTransmitTime();
672  gps->signal = NavMessageID(
673  NavSatelliteID(navIn->getsatSys().id, navIn->getsatSys(),
674  navIn->getobsID(), navIn->getNavID()),
675  NavMessageType::TimeOffset);
676  gps->tgt = TimeSystem::GPS; // by definition
677  gps->a0 = sf*navIn->asSignedDouble(csbA0GPS,cnbA0GPS,cscA0GPS);
678  gps->a1 = sf*navIn->asSignedDouble(csbA1GPSm,cnbA1GPSm,csbA1GPSl,
680  gps->refTime = ref;
681  // cerr << "add D2NAV time offset" << endl;
682  if (!filterTimeOffset(gps->a0, gps->a1))
683  {
684  navOut.push_back(gps);
685  }
686 
687  // BDT-Galileo time offset
688  std::shared_ptr<BDSD2NavTimeOffset> gal =
689  std::make_shared<BDSD2NavTimeOffset>();
690  gal->timeStamp = navIn->getTransmitTime();
691  gal->signal = NavMessageID(
692  NavSatelliteID(navIn->getsatSys().id, navIn->getsatSys(),
693  navIn->getobsID(), navIn->getNavID()),
694  NavMessageType::TimeOffset);
695  gal->tgt = TimeSystem::GAL; // by definition
696  gal->a0 = sf*navIn->asSignedDouble(csbA0GALm,cnbA0GALm,csbA0GALl,
698  gal->a1 = sf*navIn->asSignedDouble(csbA1GAL,cnbA1GAL,cscA1GAL);
699  gal->refTime = ref;
700  // cerr << "add D2NAV time offset" << endl;
701  if (!filterTimeOffset(gal->a0, gal->a1))
702  {
703  navOut.push_back(gal);
704  }
705 
706  // BDT-GLONASS time offset
707  std::shared_ptr<BDSD2NavTimeOffset> glo =
708  std::make_shared<BDSD2NavTimeOffset>();
709  glo->timeStamp = navIn->getTransmitTime();
710  glo->signal = NavMessageID(
711  NavSatelliteID(navIn->getsatSys().id, navIn->getsatSys(),
712  navIn->getobsID(), navIn->getNavID()),
713  NavMessageType::TimeOffset);
714  glo->tgt = TimeSystem::GLO; // by definition
715  glo->a0 = sf*navIn->asSignedDouble(csbA0GLO,cnbA0GLO,cscA0GLO);
716  glo->a1 = sf*navIn->asSignedDouble(csbA1GLOm,cnbA1GLOm,csbA1GLOl,
718  glo->refTime = ref;
719  // cerr << "add D2NAV time offset" << endl;
720  if (!filterTimeOffset(glo->a0, glo->a1))
721  {
722  navOut.push_back(glo);
723  }
724  }
725  return true;
726  }
727 
728 
729  bool PNBBDSD2NavDataFactory ::
730  processSF5Pg102(const PackedNavBitsPtr& navIn,NavDataPtrList& navOut)
731  {
732  if (PNBNavDataFactory::processTim)
733  {
734  std::shared_ptr<BDSD2NavTimeOffset> to =
735  std::make_shared<BDSD2NavTimeOffset>();
736  to->timeStamp = navIn->getTransmitTime();
737  to->signal = NavMessageID(
738  NavSatelliteID(navIn->getsatSys().id, navIn->getsatSys(),
739  navIn->getobsID(), navIn->getNavID()),
740  NavMessageType::TimeOffset);
741  to->tgt = TimeSystem::UTC; // by definition
742  to->a0 = navIn->asSignedDouble(csbA0UTCm,cnbA0UTCm,csbA0UTCl,cnbA0UTCl,
743  cscA0UTC);
744  to->a1 = navIn->asSignedDouble(csbA1UTCm,cnbA1UTCm,csbA1UTCl,cnbA1UTCl,
745  cscA1UTC);
746  to->deltatLS = navIn->asLong(csbdtLSm,cnbdtLSm,csbdtLSl,cnbdtLSl,
747  cscdtLS);
748  // BDS D2 doesn't use tot or wnot
749  to->wnLSF = navIn->asUnsignedLong(csbWNlsf,cnbWNlsf,cscWNlsf);
750  to->dn = navIn->asUnsignedLong(csbDN,cnbDN,cscDN);
751  // adjust week numbers to full week
752  BDSWeekSecond ref(to->timeStamp);
753  long refWeek = ref.week;
754  to->wnLSF = timeAdjust8BitWeekRollover(to->wnLSF, refWeek);
755  // This is my best guess at what is an appropriate
756  // reference time. The documentation is unclear.
757  ref.sow = 0;
758  to->refTime = ref;
759  // DN appears to be intended to be in the range of 0-6,
760  // but that's just a guess as dumping the data over a
761  // couple of weeks in 2020 and 2021, it was always 6.
762  to->effTime = BDSWeekSecond(to->wnLSF,to->dn * 86400);
763  // cerr << "wnLSF=" << to->wnLSF << " dn=" << to->dn << " refTime=" << to->refTime << endl;
764  to->deltatLSF = navIn->asLong(csbdtLSF,cnbdtLSF,cscdtLSF);
765  // cerr << "add D2NAV time offset" << endl;
766  if (!factControl.bdsTimeZZfilt || (to->a0 != 0.0) || (to->a1 != 0.0))
767  {
768  navOut.push_back(to);
769  }
770  }
771  return true;
772  }
773 
774 
775  bool PNBBDSD2NavDataFactory ::
776  processSF5Pg116(const PackedNavBitsPtr& navIn,NavDataPtrList& navOut)
777  {
778  if (PNBNavDataFactory::processHea || PNBNavDataFactory::processAlm)
779  {
780  unsigned o = 0;
781  uint8_t amID = navIn->asUnsignedLong(h3sbAmID,h3nbAmID,h3scAmID);
782  // cerr << " AmID = " << (unsigned)amID << endl;
783  switch (amID)
784  {
785  case 0x00:
786  return true; // reserved values, ignore
787  case 0x01:
788  // already set to 0
789  break;
790  case 0x02:
791  o = 13;
792  break;
793  case 0x03:
794  o = 26;
795  break;
796  default:
797  GNSSTK_THROW(Exception("Invalid AmID value " +
798  StringUtils::asString((unsigned)amID)));
799  break;
800  }
801  makeHealth(navIn,navOut,o+31,h3sbHea31m,h3nbHea31m,h3sbHea31l,
802  h3nbHea31l);
803  makeHealth(navIn,navOut,o+32,h3sbHea32,h3nbHea32);
804  makeHealth(navIn,navOut,o+33,h3sbHea33m,h3nbHea33m,h3sbHea33l,
805  h3nbHea33l);
806  makeHealth(navIn,navOut,o+34,h3sbHea34,h3nbHea34);
807  makeHealth(navIn,navOut,o+35,h3sbHea35,h3nbHea35);
808  makeHealth(navIn,navOut,o+36,h3sbHea36m,h3nbHea36m,h3sbHea36l,
809  h3nbHea36l);
810  makeHealth(navIn,navOut,o+37,h3sbHea37,h3nbHea37);
811  // AmID b11 only uses 31-37
812  if (amID != 0x03)
813  {
814  makeHealth(navIn,navOut,o+38,h3sbHea38m,h3nbHea38m,h3sbHea38l,
815  h3nbHea38l);
816  makeHealth(navIn,navOut,o+39,h3sbHea39,h3nbHea39);
817  makeHealth(navIn,navOut,o+40,h3sbHea40,h3nbHea40);
818  makeHealth(navIn,navOut,o+41,h3sbHea41,h3nbHea41);
819  makeHealth(navIn,navOut,o+42,h3sbHea42,h3nbHea42);
820  makeHealth(navIn,navOut,o+43,h3sbHea43m,h3nbHea43m,h3sbHea43l,
821  h3nbHea43l);
822  }
823  SatID xmitSat(navIn->getsatSys());
824  NavSatelliteID key(0, xmitSat, navIn->getobsID(), navIn->getNavID());
825  finishAlm(false, key, navOut);
826  }
827  return true;
828  }
829 
830 
831  void PNBBDSD2NavDataFactory ::
832  makeHealth(const PackedNavBitsPtr& navIn, NavDataPtrList& navOut,
833  unsigned long subjID,
834  unsigned startBit1, unsigned numBits1,
835  unsigned startBit2, unsigned numBits2)
836  {
837  std::shared_ptr<BDSD2NavHealth> hea = std::make_shared<BDSD2NavHealth>();
838  hea->timeStamp = navIn->getTransmitTime();
839  hea->signal = NavMessageID(
840  NavSatelliteID(subjID, navIn->getsatSys(), navIn->getobsID(),
841  navIn->getNavID()),
842  NavMessageType::Health);
843  // health is all "scaled" by 1, so just use the same constant.
844  if (numBits2 > 0)
845  {
846  hea->svHealth = navIn->asUnsignedLong(startBit1, numBits1, startBit2,
847  numBits2, h2scHea20);
848  }
849  else
850  {
851  hea->svHealth = navIn->asUnsignedLong(startBit1, numBits1, h2scHea20);
852  }
853  heaAcc[hea->signal] = hea->svHealth;
854  // cerr << "heaAcc[" << hea->signal << "]=" << hex << hea->svHealth << dec << endl;
855  if (PNBNavDataFactory::processHea)
856  {
857  navOut.push_back(hea);
858  }
859  }
860 
861 
862  bool PNBBDSD2NavDataFactory ::
863  isAlmDefault(const PackedNavBitsPtr& navIn)
864  {
865  // Create a PNB with the same metadata, but all 0s, which is
866  // how the BeiDou default pages appear (except words 1-2
867  // which we ignore).
868  PackedNavBits defPage(navIn->getsatSys(), navIn->getobsID(),
869  navIn->getNavID(), navIn->getRxID(),
870  navIn->getTransmitTime(), navIn->getNumBits(),
871  false);
872  // Start match at bit 90 which is the first bit of word 3,
873  // and end at bit 289 which excludes the AmEpID bits and
874  // parity in word 10.
875  return defPage.matchBits(*navIn, 90, 289);
876  }
877 
878 
879  void PNBBDSD2NavDataFactory ::
880  resetState()
881  {
882  fullWNaMap.clear();
883  almAcc.clear();
884  ephAcc.clear();
885  }
886 
887 
888  void PNBBDSD2NavDataFactory ::
889  finishAlm(bool fromWNa, const NavSatelliteID& key, NavDataPtrList& navOut)
890  {
891  AlmPtrList& ndpl(almAcc[key]);
892  // cerr << "almAcc[key] size before = " << ndpl.size() << endl;
893  for (auto i = ndpl.begin(); i != ndpl.end();)
894  {
895  if (finishAlm(*i, fromWNa, key, navOut))
896  {
897  i = ndpl.erase(i);
898  }
899  else
900  {
901  ++i;
902  }
903  }
904  // cerr << "almAcc[key] size after = " << ndpl.size() << endl;
905  }
906 
907 
908  bool PNBBDSD2NavDataFactory ::
909  finishAlm(PNBBDSD2NavDataFactory::AlmPtr& alm, bool fromWNa,
910  const NavSatelliteID& key, NavDataPtrList& navOut)
911  {
912  if (alm->isDefault && (heaAcc.find(alm->signal) != heaAcc.end()))
913  {
914  // Don't produce this almanac if the user only wants valid data.
915  if (navValidity != NavValidityType::ValidOnly)
916  {
917  alm->Toe = alm->Toc = gnsstk::BDSWeekSecond(0,0);
918  alm->healthBits = heaAcc[alm->signal];
920  alm->health = ((alm->healthBits == 0) ? SVHealth::Healthy :
921  SVHealth::Unhealthy);
922  alm->fixFit();
923  // cerr << "add D2NAV alm (2a) " << alm->signal << " toa=" << alm->toa << endl;
924  navOut.push_back(alm);
925  }
926  // Always return true so that the default data will be
927  // handled as if it were produced, even if it wasn't.
928  // IOW, don't accumulate default pages needlessly.
929  return true;
930  }
931  else if ((fullWNaMap.find(key.xmitSat.id) != fullWNaMap.end()) &&
932  (fullWNaMap[key.xmitSat.id].sow == alm->toa) &&
933  (heaAcc.find(alm->signal) != heaAcc.end()))
934  {
935  // Produce a complete almanac when WNa and health are available.
936  alm->Toe = alm->Toc = fullWNaMap[key.xmitSat.id];
937  alm->healthBits = heaAcc[alm->signal];
939  alm->health = ((alm->healthBits == 0) ? SVHealth::Healthy :
940  SVHealth::Unhealthy);
941  alm->fixFit();
942  // cerr << "add D2NAV alm (2b) " << alm->signal << " toa=" << alm->toa << endl;
943  navOut.push_back(alm);
944  return true;
945  }
946  else if (fromWNa &&
947  (fullWNaMap.find(key.xmitSat.id) != fullWNaMap.end()) &&
948  (fullWNaMap[key.xmitSat.id].sow != alm->toa))
949  {
950  // We do NOT produce an almanac in this case because the
951  // lack of a proper time stamp breaks the NavStore by
952  // causing an exception to be thrown in CommonTime.
953  // Always return true so that the default data will be
954  // handled as if it were produced, even though it wasn't.
955  // cerr << "discard D2NAV alm (2c) " << alm->signal << " toa=" << alm->toa << endl;
956  return true;
957  }
958  else
959  {
960  // if (alm->isDefault)
961  // cerr << "default alm" << endl;
962  // if (fromWNa)
963  // cerr << "updating from SF5p8" << endl;
964  // if (fullWNaMap.find(key.xmitSat.id) == fullWNaMap.end())
965  // cerr << "alm missing WNa for " << key.xmitSat.id << endl;
966  // else if (fullWNaMap[key.xmitSat.id].sow != alm->toa)
967  // cerr << "alm toa mismatch " << fullWNaMap[key.xmitSat.id].sow << " != " << alm->toa << endl;
968  // if (heaAcc.find(alm->signal) == heaAcc.end())
969  // cerr << "alm missing health" << endl;
970  return false;
971  }
972  }
973 
974 
975  void PNBBDSD2NavDataFactory ::
976  dumpState(std::ostream& s)
977  const
978  {
979  unsigned long total = 0;
980  s << "fullWNaMap.size() = " << fullWNaMap.size() << endl
981  << "almAcc.size() = " << almAcc.size() << endl;
982  for (const auto& i : almAcc)
983  {
984  total += i.second.size();
985  for (const auto& p : i.second)
986  {
987  s << p->signal << " toa=" << p->toa << endl;
988  }
989  // s << " almAcc[" << i.first << "].size() = " << i.second.size()
990  // << endl;
991  }
992  s << "almAcc total size = " << total << endl
993  << "ephAcc.size() = " << ephAcc.size() << endl;
994  for (const auto& i : ephAcc)
995  {
996  s << " ephAcc[" << i.first << "].size() = " << i.second.size()
997  << endl;
998  for (unsigned j = 0; j < i.second.size(); j++)
999  {
1000  s << " ephAcc[" << i.first << "][" << j << "] = ";
1001  if (!i.second[j])
1002  s << "unset";
1003  else
1004  s << i.second[j]->getNumBits() << " bits";
1005  s << endl;
1006  }
1007  }
1008  }
1009 
1010 
1011  PNBBDSD2NavDataFactory::AmEpID ::
1012  AmEpID()
1013  {
1014  // note that this will get changed when setValues is called,
1015  // but this is really to prevent isExpanded from throwing an
1016  // exception if it gets called before setValues
1017  mfStart.setTimeSystem(TimeSystem::Any);
1018  mfEnd.setTimeSystem(TimeSystem::Any);
1019  }
1020 
1021 
1022  bool PNBBDSD2NavDataFactory::AmEpID ::
1023  isExpanded(const CommonTime& t) const
1024  {
1025  return ((amEpID == 0x03) &&
1026  (t >= mfStart) &&
1027  (t < mfEnd));
1028  }
1029 
1030 
1031  void PNBBDSD2NavDataFactory::AmEpID ::
1032  setValues(const BDSWeekSecond& t, uint8_t id)
1033  {
1034  // superframe is 6 minutes long
1035  BDSWeekSecond tmod(t);
1036  tmod.sow -= fmod(tmod.sow,360.0);
1037  mfStart = mfEnd = tmod;
1038  mfEnd += 360.0;
1039  amEpID = id;
1040  }
1041 
1042 
1043 } // namespace gnsstk
gnsstk::bds::ascw
@ ascw
Definition: BDSD1Bits.hpp:162
gnsstk::bds::cscDN
@ cscDN
Definition: BDSD1Bits.hpp:1041
gnsstk::bds::ascAmEpID
@ ascAmEpID
Definition: BDSD1Bits.hpp:184
gnsstk::bds::esbwm
@ esbwm
Definition: BDSD1Bits.hpp:577
BDSD2Bits.hpp
gnsstk::bds::esbTGD1
@ esbTGD1
Definition: BDSD1Bits.hpp:245
gnsstk::bds::esiCrcm
@ esiCrcm
Definition: BDSD1Bits.hpp:431
gnsstk::bds::h3nbHea35
@ h3nbHea35
Definition: BDSD1Bits.hpp:866
example3.svid
svid
Definition: example3.py:19
gnsstk::bds::csbA0GALm
@ csbA0GALm
Gal A0 time offset term MSB.
Definition: BDSD1Bits.hpp:974
gnsstk::bds::esiCucl
@ esiCucl
Definition: BDSD1Bits.hpp:389
gnsstk::bds::escM0
@ escM0
Definition: BDSD1Bits.hpp:396
gnsstk::bds::h3nbHea38m
@ h3nbHea38m
Definition: BDSD1Bits.hpp:885
gnsstk::bds::enbAlpha0l
@ enbAlpha0l
Definition: BDSD2Bits.hpp:736
gnsstk::bds::h1sbHea1l
@ h1sbHea1l
Definition: BDSD1Bits.hpp:606
gnsstk::bds::h3nbHea33l
@ h3nbHea33l
Definition: BDSD1Bits.hpp:859
gnsstk::NavMessageID
Class used to identify/categorize navigation message data.
Definition: NavMessageID.hpp:52
gnsstk::bds::enbM0i
@ enbM0i
Definition: BDSD2Bits.hpp:904
gnsstk::bds::h2sbHea27l
@ h2sbHea27l
PRN 27 health LSBs.
Definition: BDSD1Bits.hpp:793
gnsstk::bds::esbCusm
@ esbCusm
Definition: BDSD2Bits.hpp:916
gnsstk::bds::h1sbHea19
@ h1sbHea19
Definition: BDSD1Bits.hpp:723
gnsstk::bds::esiCusm
@ esiCusm
Definition: BDSD2Bits.hpp:915
gnsstk::bds::h2sbHea24
@ h2sbHea24
PRN 24 health.
Definition: BDSD1Bits.hpp:766
gnsstk::bds::h1nbHea19
@ h1nbHea19
Definition: BDSD1Bits.hpp:724
gnsstk::bds::esbCrcl
@ esbCrcl
Definition: BDSD1Bits.hpp:442
gnsstk::bds::anbAmEpID
@ anbAmEpID
Definition: BDSD1Bits.hpp:183
gnsstk::bds::h2sbHea21
@ h2sbHea21
PRN 21 health.
Definition: BDSD1Bits.hpp:747
gnsstk::bds::escAhalf
@ escAhalf
Definition: BDSD1Bits.hpp:462
gnsstk::bds::h1nbHea17
@ h1nbHea17
Definition: BDSD1Bits.hpp:709
gnsstk::bds::h1nbHea5
@ h1nbHea5
Definition: BDSD1Bits.hpp:629
gnsstk::bds::fnbFraID
@ fnbFraID
Frame ID number of bits.
Definition: BDSD1Bits.hpp:61
gnsstk::bds::h1sbHea9
@ h1sbHea9
Definition: BDSD1Bits.hpp:658
gnsstk::bds::esbBeta2l
@ esbBeta2l
Definition: BDSD2Bits.hpp:783
gnsstk::bds::esbtocm
@ esbtocm
Definition: BDSD1Bits.hpp:231
gnsstk::SatID::id
int id
Satellite identifier, e.g. PRN.
Definition: SatID.hpp:154
gnsstk::bds::fsbPre
@ fsbPre
Preamble start bit.
Definition: BDSD1Bits.hpp:52
gnsstk::bds::escAlpha1
@ escAlpha1
Definition: BDSD1Bits.hpp:271
gnsstk::PackedNavBitsPtr
std::shared_ptr< PackedNavBits > PackedNavBitsPtr
Managed pointer for passing PackedNavBits around.
Definition: PackedNavBits.hpp:66
gnsstk::bds::h1sbHea6m
@ h1sbHea6m
Definition: BDSD1Bits.hpp:632
gnsstk::bds::h2nbHea22m
@ h2nbHea22m
Definition: BDSD1Bits.hpp:752
gnsstk::bds::esiwm
@ esiwm
Definition: BDSD1Bits.hpp:576
gnsstk::bds::h1nbHea18l
@ h1nbHea18l
Definition: BDSD1Bits.hpp:721
gnsstk::bds::escCus
@ escCus
Definition: BDSD1Bits.hpp:429
gnsstk::bds::escCuc
@ escCuc
Definition: BDSD1Bits.hpp:382
gnsstk::bds::enbi0i2
@ enbi0i2
Definition: BDSD2Bits.hpp:1029
gnsstk::bds::esbAhalfl
@ esbAhalfl
Definition: BDSD1Bits.hpp:470
gnsstk::bds::esbM0l
@ esbM0l
Definition: BDSD1Bits.hpp:404
gnsstk::bds::cnbA1GLOm
@ cnbA1GLOm
Definition: BDSD1Bits.hpp:998
gnsstk::bds::enba1m
@ enba1m
Definition: BDSD1Bits.hpp:347
gnsstk::bds::esiOMEGAdoti
@ esiOMEGAdoti
Definition: BDSD2Bits.hpp:1069
gnsstk::bds::esbCrs
@ esbCrs
Definition: BDSD2Bits.hpp:1055
gnsstk::bds::h3sbHea33l
@ h3sbHea33l
Definition: BDSD1Bits.hpp:858
gnsstk::bds::enbAhalfi
@ enbAhalfi
Definition: BDSD2Bits.hpp:961
gnsstk::bds::h2scHea20
@ h2scHea20
Definition: BDSD1Bits.hpp:738
BDSD2NavEph.hpp
gnsstk::bds::ascEcc
@ ascEcc
Definition: BDSD1Bits.hpp:132
gnsstk::bds::esbCrcm
@ esbCrcm
Definition: BDSD1Bits.hpp:432
gnsstk::bds::esiURAI
@ esiURAI
User range accuracy index.
Definition: BDSD1Bits.hpp:215
gnsstk::bds::esbEccm
@ esbEccm
Definition: BDSD1Bits.hpp:408
gnsstk::bds::esca1
@ esca1
Definition: BDSD1Bits.hpp:348
gnsstk::bds::esbAlpha3l
@ esbAlpha3l
Definition: BDSD2Bits.hpp:759
gnsstk::bds::h3sbHea39
@ h3sbHea39
Definition: BDSD1Bits.hpp:895
gnsstk::bds::anbA0
@ anbA0
Definition: BDSD1Bits.hpp:112
gnsstk::bds::h3sbHea40
@ h3sbHea40
Definition: BDSD1Bits.hpp:899
gnsstk::bds::h2nbHea25l
@ h2nbHea25l
Definition: BDSD1Bits.hpp:779
gnsstk::bds::esiEccl
@ esiEccl
Definition: BDSD1Bits.hpp:417
gnsstk::bds::h2sbWNa
@ h2sbWNa
Almanac week.
Definition: BDSD1Bits.hpp:812
gnsstk::bds::esbCucl
@ esbCucl
Definition: BDSD1Bits.hpp:390
gnsstk::bds::h1sbHea14
@ h1sbHea14
Definition: BDSD1Bits.hpp:689
gnsstk::bds::csbA1GLOm
@ csbA1GLOm
GLO A0 time offset term MSB.
Definition: BDSD1Bits.hpp:997
gnsstk::bds::asbwm
@ asbwm
little omega MSBs
Definition: BDSD1Bits.hpp:160
gnsstk::bds::escBeta2
@ escBeta2
Definition: BDSD1Bits.hpp:310
gnsstk::bds::esbAlpha0m
@ esbAlpha0m
Definition: BDSD2Bits.hpp:725
gnsstk::bds::h1nbHea18m
@ h1nbHea18m
Definition: BDSD1Bits.hpp:713
gnsstk::bds::h3sbHea43l
@ h3sbHea43l
Definition: BDSD1Bits.hpp:923
gnsstk::bds::esia0m
@ esia0m
Clock correction 0th order term MSB.
Definition: BDSD1Bits.hpp:331
gnsstk::bds::h2sbHea25l
@ h2sbHea25l
PRN 25 health LSBs.
Definition: BDSD1Bits.hpp:778
gnsstk::bds::enbtocm
@ enbtocm
Definition: BDSD1Bits.hpp:232
gnsstk::bds::h3sbHea36l
@ h3sbHea36l
Definition: BDSD1Bits.hpp:877
gnsstk::bds::cnbA1GPSm
@ cnbA1GPSm
Definition: BDSD1Bits.hpp:964
gnsstk::bds::esiOMEGAdotl
@ esiOMEGAdotl
Definition: BDSD1Bits.hpp:530
gnsstk::bds::esbAlpha0l
@ esbAlpha0l
Definition: BDSD2Bits.hpp:735
gnsstk::bds::enbAlpha3m
@ enbAlpha3m
Definition: BDSD2Bits.hpp:750
gnsstk::bds::asbA0
@ asbA0
Clock correction.
Definition: BDSD1Bits.hpp:111
gnsstk::bds::cnbA0GALm
@ cnbA0GALm
Definition: BDSD1Bits.hpp:975
gnsstk::bds::esiCicm
@ esiCicm
Definition: BDSD1Bits.hpp:506
gnsstk::bds::h3nbHea43l
@ h3nbHea43l
Definition: BDSD1Bits.hpp:924
gnsstk::bds::asbOMEGA0m
@ asbOMEGA0m
OMEGA0 MSBs.
Definition: BDSD1Bits.hpp:119
gnsstk::bds::h3sbHea41
@ h3sbHea41
Definition: BDSD1Bits.hpp:907
gnsstk::bds::asbAhalfm
@ asbAhalfm
Semi-major axis**0.5 MSBs.
Definition: BDSD1Bits.hpp:92
gnsstk::bds::esba1l
@ esba1l
Definition: BDSD1Bits.hpp:356
gnsstk::bds::h3sbAmID
@ h3sbAmID
Definition: BDSD1Bits.hpp:926
gnsstk::bds::cnbA1UTCm
@ cnbA1UTCm
Definition: BDSD1Bits.hpp:1033
gnsstk::bds::anbEcc
@ anbEcc
Definition: BDSD1Bits.hpp:131
gnsstk::bds::h3sbHea38l
@ h3sbHea38l
Definition: BDSD1Bits.hpp:892
gnsstk::bds::h3sbHea34
@ h3sbHea34
Definition: BDSD1Bits.hpp:861
gnsstk::bds::h2nbHea23
@ h2nbHea23
Definition: BDSD1Bits.hpp:763
gnsstk::bds::esiwl
@ esiwl
Definition: BDSD1Bits.hpp:586
gnsstk::bds::enbCusm
@ enbCusm
Definition: BDSD2Bits.hpp:917
gnsstk::bds::enbOMEGA0l
@ enbOMEGA0l
Definition: BDSD1Bits.hpp:574
gnsstk::NavSatelliteID
Definition: NavSatelliteID.hpp:57
gnsstk::bds::h1nbHea4
@ h1nbHea4
Definition: BDSD1Bits.hpp:625
gnsstk::bds::escPnum
@ escPnum
Page number in SF1, scale.
Definition: BDSD2Bits.hpp:664
gnsstk::bds::esbPnum
@ esbPnum
Page number in SF1, start bit.
Definition: BDSD2Bits.hpp:662
BDSD2NavTimeOffset.hpp
gnsstk::bds::esbidotl
@ esbidotl
Definition: BDSD1Bits.hpp:559
gnsstk::bds::h2nbHea28
@ h2nbHea28
Definition: BDSD1Bits.hpp:797
gnsstk::bds::escw
@ escw
Definition: BDSD1Bits.hpp:579
gnsstk::bds::h1nbHea6m
@ h1nbHea6m
Definition: BDSD1Bits.hpp:633
gnsstk::bds::cscA1GLO
@ cscA1GLO
Scale factor is actually .1.
Definition: BDSD1Bits.hpp:999
gnsstk::bds::h3nbHea36l
@ h3nbHea36l
Definition: BDSD1Bits.hpp:878
gnsstk::bds::escCic
@ escCic
Definition: BDSD1Bits.hpp:509
gnsstk::bds::esbdn
@ esbdn
Definition: BDSD2Bits.hpp:872
gnsstk::bds::asbA1
@ asbA1
Clock drift correction.
Definition: BDSD1Bits.hpp:107
gnsstk::bds::esiAhalfm
@ esiAhalfm
Definition: BDSD1Bits.hpp:459
gnsstk::bds::escAODC
@ escAODC
Definition: BDSD1Bits.hpp:213
gnsstk::bds::fsbFraID
@ fsbFraID
Frame ID start bit.
Definition: BDSD1Bits.hpp:60
gnsstk::bds::h2nbHea20m
@ h2nbHea20m
Definition: BDSD1Bits.hpp:737
gnsstk::Exception::what
std::string what() const
Dump to a string.
Definition: Exception.cpp:193
gnsstk::bds::cscA1GAL
@ cscA1GAL
Scale factor is actually .1.
Definition: BDSD1Bits.hpp:987
gnsstk::bds::esiWN
@ esiWN
Reference week number.
Definition: BDSD1Bits.hpp:225
gnsstk::bds::esbBeta0
@ esbBeta0
Definition: BDSD2Bits.hpp:763
gnsstk::bds::esii0l
@ esii0l
Definition: BDSD1Bits.hpp:502
example5.oid
oid
Definition: example5.py:29
gnsstk::bds::asbOMEGAdotl
@ asbOMEGAdotl
OMEGA dot LSBs.
Definition: BDSD1Bits.hpp:157
gnsstk::SatID
Definition: SatID.hpp:89
gnsstk::NavDataPtrList
std::list< NavDataPtr > NavDataPtrList
Definition: NavData.hpp:75
gnsstk::PNBBDSD2NavDataFactory::AlmPtr
std::shared_ptr< BDSD2NavAlm > AlmPtr
Alias for almanac objects.
Definition: PNBBDSD2NavDataFactory.hpp:227
gnsstk::bds::h2sbtoam
@ h2sbtoam
Almanac ref SOW MSBs.
Definition: BDSD1Bits.hpp:816
gnsstk::bds::esbCusl
@ esbCusl
Definition: BDSD2Bits.hpp:926
gnsstk::bds::enbM0m
@ enbM0m
Definition: BDSD1Bits.hpp:395
gnsstk::StringUtils::asString
std::string asString(IonexStoreStrategy e)
Convert a IonexStoreStrategy to a whitespace-free string name.
Definition: IonexStoreStrategy.cpp:46
gnsstk::bds::enbEccm
@ enbEccm
Definition: BDSD1Bits.hpp:409
gnsstk::bds::h1nbHea3l
@ h1nbHea3l
Definition: BDSD1Bits.hpp:622
gnsstk::bds::h1sbHea7
@ h1sbHea7
Definition: BDSD1Bits.hpp:643
gnsstk::bds::esia1m
@ esia1m
Clock correction 1st order term MSB.
Definition: BDSD1Bits.hpp:345
gnsstk::bds::enbOMEGA0m
@ enbOMEGA0m
Definition: BDSD1Bits.hpp:564
gnsstk::bds::esbtocl
@ esbtocl
Definition: BDSD1Bits.hpp:241
gnsstk::bds::cscA0GPS
@ cscA0GPS
Scale factor is actually .1.
Definition: BDSD1Bits.hpp:961
gnsstk::bds::h1sbHea5
@ h1sbHea5
Definition: BDSD1Bits.hpp:628
gnsstk::bds::h1sbHea16
@ h1sbHea16
Definition: BDSD1Bits.hpp:704
gnsstk::bds::h3nbHea37
@ h3nbHea37
Definition: BDSD1Bits.hpp:881
gnsstk::bds::anbOMEGA0m
@ anbOMEGA0m
Definition: BDSD1Bits.hpp:120
gnsstk::bds::esbCicm
@ esbCicm
Definition: BDSD1Bits.hpp:507
gnsstk::bds::esiTGD1
@ esiTGD1
Group delay differential #1.
Definition: BDSD1Bits.hpp:244
gnsstk::bds::enbAhalfm
@ enbAhalfm
Definition: BDSD1Bits.hpp:461
gnsstk::PI
const double PI
GPS value of PI; also specified by GAL.
Definition: GNSSconstants.hpp:62
gnsstk::bds::esbtoel
@ esbtoel
Definition: BDSD1Bits.hpp:489
gnsstk::bds::enbOMEGAdotm
@ enbOMEGAdotm
Definition: BDSD1Bits.hpp:522
gnsstk::bds::enbAODE
@ enbAODE
Definition: BDSD1Bits.hpp:361
gnsstk::bds::cnbA0UTCl
@ cnbA0UTCl
Definition: BDSD1Bits.hpp:1030
gnsstk::bds::h1nbHea14
@ h1nbHea14
Definition: BDSD1Bits.hpp:690
gnsstk::bds::h3nbHea38l
@ h3nbHea38l
Definition: BDSD1Bits.hpp:893
gnsstk::bds::h2nbHea30
@ h2nbHea30
Definition: BDSD1Bits.hpp:809
gnsstk::bds::h3nbHea41
@ h3nbHea41
Definition: BDSD1Bits.hpp:908
gnsstk::bds::esci0
@ esci0
Definition: BDSD1Bits.hpp:495
gnsstk::bds::cscA1UTC
@ cscA1UTC
Definition: BDSD1Bits.hpp:1034
gnsstk::bds::esiCici
@ esiCici
Definition: BDSD2Bits.hpp:979
gnsstk::bds::escTGD2
@ escTGD2
Actual scale is 0.1 per 5.2.4.8.
Definition: BDSD1Bits.hpp:252
gnsstk::bds::esba0l
@ esba0l
Definition: BDSD1Bits.hpp:342
gnsstk::bds::enbTGD2
@ enbTGD2
Definition: BDSD2Bits.hpp:719
gnsstk::bds::h3sbHea38m
@ h3sbHea38m
Definition: BDSD1Bits.hpp:884
gnsstk::bds::h2sbHea20m
@ h2sbHea20m
PRN 20 health MSBs.
Definition: BDSD1Bits.hpp:736
gnsstk::bds::enbCici
@ enbCici
Definition: BDSD2Bits.hpp:981
gnsstk
For Sinex::InputHistory.
Definition: BasicFramework.cpp:50
gnsstk::bds::fscPre
@ fscPre
Preamble scale factor.
Definition: BDSD1Bits.hpp:54
gnsstk::bds::h2nbHea29
@ h2nbHea29
Definition: BDSD1Bits.hpp:801
gnsstk::bds::csbdtLSm
@ csbdtLSm
dtLS MSBs
Definition: BDSD1Bits.hpp:1010
gnsstk::bds::esbAODE
@ esbAODE
Definition: BDSD1Bits.hpp:360
gnsstk::bds::xesbSatH1
@ xesbSatH1
Definition: BDSD2Bits.hpp:669
gnsstk::bds::asbOMEGA0l
@ asbOMEGA0l
OMEGA0 LSBs.
Definition: BDSD1Bits.hpp:127
gnsstk::bds::csbA0GALl
@ csbA0GALl
Gal A0 time offset term LSB.
Definition: BDSD1Bits.hpp:982
gnsstk::bds::anbAhalfl
@ anbAhalfl
Definition: BDSD1Bits.hpp:101
gnsstk::bds::esbOMEGA0l
@ esbOMEGA0l
Definition: BDSD1Bits.hpp:573
gnsstk::bds::h2nbHea26
@ h2nbHea26
Definition: BDSD1Bits.hpp:782
gnsstk::bds::escTGD1
@ escTGD1
Actual scale is 0.1 per 5.2.4.8.
Definition: BDSD1Bits.hpp:247
gnsstk::bds::escURAI
@ escURAI
Definition: BDSD1Bits.hpp:218
gnsstk::bds::esiTGD2
@ esiTGD2
Group delay differential #2 MSBs.
Definition: BDSD2Bits.hpp:717
gnsstk::bds::escBeta1
@ escBeta1
Definition: BDSD1Bits.hpp:305
gnsstk::bds::escBeta0
@ escBeta0
Definition: BDSD1Bits.hpp:291
gnsstk::bds::enbAlpha3l
@ enbAlpha3l
Definition: BDSD2Bits.hpp:760
gnsstk::bds::esbWN
@ esbWN
Definition: BDSD1Bits.hpp:226
gnsstk::bds::enbCrs
@ enbCrs
Definition: BDSD2Bits.hpp:1056
gnsstk::bds::h3nbHea36m
@ h3nbHea36m
Definition: BDSD1Bits.hpp:870
gnsstk::bds::h1nbHea1m
@ h1nbHea1m
Definition: BDSD1Bits.hpp:599
gnsstk::bds::ascPnum
@ ascPnum
Definition: BDSD2Bits.hpp:92
gnsstk::Exception
Definition: Exception.hpp:151
gnsstk::bds::esbEccl
@ esbEccl
Definition: BDSD1Bits.hpp:418
gnsstk::bds::cnbWNlsf
@ cnbWNlsf
Definition: BDSD1Bits.hpp:1022
gnsstk::bds::cscA0UTC
@ cscA0UTC
Definition: BDSD1Bits.hpp:1027
gnsstk::bds::h1nbHea6l
@ h1nbHea6l
Definition: BDSD1Bits.hpp:641
gnsstk::bds::esiEccm
@ esiEccm
Definition: BDSD1Bits.hpp:407
gnsstk::bds::h2nbtoam
@ h2nbtoam
Definition: BDSD1Bits.hpp:817
gnsstk::bds::h2sbHea22m
@ h2sbHea22m
PRN 22 health MSBs.
Definition: BDSD1Bits.hpp:751
gnsstk::bds::asbAmEpID
@ asbAmEpID
AmEpID for sat ID.
Definition: BDSD1Bits.hpp:182
gnsstk::bds::cnbA0GPS
@ cnbA0GPS
Definition: BDSD1Bits.hpp:960
gnsstk::bds::anbdil
@ anbdil
Definition: BDSD1Bits.hpp:143
gnsstk::bds::fscSOW
@ fscSOW
SOW scale factor.
Definition: BDSD1Bits.hpp:66
gnsstk::bds::esba2l
@ esba2l
Definition: BDSD2Bits.hpp:863
gnsstk::bds::cnbDN
@ cnbDN
Definition: BDSD1Bits.hpp:1040
gnsstk::bds::enbi0i1
@ enbi0i1
Definition: BDSD2Bits.hpp:1023
gnsstk::bds::esiAODE
@ esiAODE
Age of data - ephemeris.
Definition: BDSD1Bits.hpp:359
gnsstk::bds::ascM0
@ ascM0
Definition: BDSD1Bits.hpp:173
gnsstk::bds::csbdtLSF
@ csbdtLSF
dtLSF
Definition: BDSD1Bits.hpp:1017
gnsstk::bds::anbPnum
@ anbPnum
Definition: BDSD2Bits.hpp:91
gnsstk::bds::cscA0GAL
@ cscA0GAL
Scale factor is actually .1.
Definition: BDSD1Bits.hpp:976
BDSD2NavIono.hpp
gnsstk::bds::escAODE
@ escAODE
Definition: BDSD1Bits.hpp:362
gnsstk::bds::h3sbHea37
@ h3sbHea37
Definition: BDSD1Bits.hpp:880
gnsstk::bds::h1sbHea2
@ h1sbHea2
Definition: BDSD1Bits.hpp:609
gnsstk::bds::ascAhalf
@ ascAhalf
Definition: BDSD1Bits.hpp:94
gnsstk::bds::enbCis
@ enbCis
Definition: BDSD2Bits.hpp:994
gnsstk::bds::enbAlpha0m
@ enbAlpha0m
Definition: BDSD2Bits.hpp:726
gnsstk::bds::enbOMEGAdoti
@ enbOMEGAdoti
Definition: BDSD2Bits.hpp:1071
gnsstk::bds::h1nbHea12
@ h1nbHea12
Definition: BDSD1Bits.hpp:675
gnsstk::bds::esbTGD2
@ esbTGD2
Definition: BDSD2Bits.hpp:718
gnsstk::bds::esbwl
@ esbwl
Definition: BDSD1Bits.hpp:587
gnsstk::bds::esbCici
@ esbCici
Definition: BDSD2Bits.hpp:980
gnsstk::bds::esiCrs
@ esiCrs
Definition: BDSD2Bits.hpp:1054
gnsstk::bds::esbwi
@ esbwi
Definition: BDSD2Bits.hpp:1113
gnsstk::bds::h2sbtoal
@ h2sbtoal
Almanac ref SOW LSBs.
Definition: BDSD1Bits.hpp:824
gnsstk::bds::h1nbHea1l
@ h1nbHea1l
Definition: BDSD1Bits.hpp:607
gnsstk::bds::pg3
@ pg3
Definition: BDSD2Bits.hpp:644
gnsstk::bds::esiAODC
@ esiAODC
AODC.
Definition: BDSD1Bits.hpp:210
gnsstk::bds::h3nbHea32
@ h3nbHea32
Definition: BDSD1Bits.hpp:847
gnsstk::bds::h1nbHea3m
@ h1nbHea3m
Definition: BDSD1Bits.hpp:614
gnsstk::bds::enbURAI
@ enbURAI
Definition: BDSD1Bits.hpp:217
gnsstk::bds::h2sbHea27m
@ h2sbHea27m
PRN 27 health MSBs.
Definition: BDSD1Bits.hpp:785
gnsstk::bds::pg2
@ pg2
Definition: BDSD2Bits.hpp:643
gnsstk::bds::anbwl
@ anbwl
Definition: BDSD1Bits.hpp:169
gnsstk::bds::esiOMEGA0l
@ esiOMEGA0l
Definition: BDSD1Bits.hpp:572
gnsstk::bds::enbi0m
@ enbi0m
Definition: BDSD1Bits.hpp:494
gnsstk::bds::esbOMEGA0m
@ esbOMEGA0m
Definition: BDSD1Bits.hpp:563
gnsstk::bds::h2sctoa
@ h2sctoa
Definition: BDSD1Bits.hpp:818
gnsstk::bds::csbA1GPSm
@ csbA1GPSm
GPS A1 time offset term MSB.
Definition: BDSD1Bits.hpp:963
gnsstk::bds::enbAhalfl
@ enbAhalfl
Definition: BDSD1Bits.hpp:471
gnsstk::bds::h1sbHea1m
@ h1sbHea1m
Definition: BDSD1Bits.hpp:598
gnsstk::bds::esiEcci
@ esiEcci
Definition: BDSD2Bits.hpp:936
gnsstk::bds::escOMEGA0
@ escOMEGA0
Definition: BDSD1Bits.hpp:565
gnsstk::bds::h1sbHea4
@ h1sbHea4
Definition: BDSD1Bits.hpp:624
gnsstk::bds::h1nbHea11
@ h1nbHea11
Definition: BDSD1Bits.hpp:671
gnsstk::bds::h3nbHea34
@ h3nbHea34
Definition: BDSD1Bits.hpp:862
gnsstk::bds::enba1i
@ enba1i
Definition: BDSD2Bits.hpp:841
gnsstk::bds::fsbSOWm
@ fsbSOWm
SOW MSBs start bit.
Definition: BDSD1Bits.hpp:64
gnsstk::bds::esbCis
@ esbCis
Definition: BDSD2Bits.hpp:993
gnsstk::bds::escAlpha2
@ escAlpha2
Definition: BDSD1Bits.hpp:281
gnsstk::bds::esbBeta3
@ esbBeta3
Definition: BDSD2Bits.hpp:787
gnsstk::bds::csbA1GLOl
@ csbA1GLOl
GLO A0 time offset term LSB.
Definition: BDSD1Bits.hpp:1005
gnsstk::bds::h3nbHea31m
@ h3nbHea31m
Definition: BDSD1Bits.hpp:836
gnsstk::bds::h1nbHea10
@ h1nbHea10
Definition: BDSD1Bits.hpp:663
gnsstk::bds
Definition: BDSconsts.hpp:48
gnsstk::ObsID
Definition: ObsID.hpp:82
gnsstk::bds::asbwl
@ asbwl
little omega LSBs
Definition: BDSD1Bits.hpp:168
gnsstk::bds::xesiSatH1
@ xesiSatH1
Satellite health.
Definition: BDSD2Bits.hpp:668
gnsstk::bds::h2sbHea23
@ h2sbHea23
PRN 23 health.
Definition: BDSD1Bits.hpp:762
gnsstk::bds::escOMEGAdot
@ escOMEGAdot
Definition: BDSD1Bits.hpp:523
gnsstk::bds::h2nbHea27m
@ h2nbHea27m
Definition: BDSD1Bits.hpp:786
gnsstk::bds::h3nbHea40
@ h3nbHea40
Definition: BDSD1Bits.hpp:900
gnsstk::bds::esiM0i
@ esiM0i
Definition: BDSD2Bits.hpp:902
gnsstk::bds::anbOMEGAdotl
@ anbOMEGAdotl
Definition: BDSD1Bits.hpp:158
gnsstk::bds::h3sbHea32
@ h3sbHea32
Definition: BDSD1Bits.hpp:846
gnsstk::bds::esbtoem
@ esbtoem
Definition: BDSD1Bits.hpp:480
gnsstk::NavSatelliteID::sat
SatID sat
ID of satellite to which the nav data applies.
Definition: NavSatelliteID.hpp:169
gnsstk::bds::enbidotl
@ enbidotl
Definition: BDSD1Bits.hpp:560
gnsstk::bds::esbi0i2
@ esbi0i2
Definition: BDSD2Bits.hpp:1028
gnsstk::bds::enbOMEGA0i
@ enbOMEGA0i
Definition: BDSD2Bits.hpp:1091
gnsstk::bds::h1sbHea11
@ h1sbHea11
Definition: BDSD1Bits.hpp:670
gnsstk::bds::anbA1
@ anbA1
Definition: BDSD1Bits.hpp:108
gnsstk::bds::cscdtLSF
@ cscdtLSF
Definition: BDSD1Bits.hpp:1019
gnsstk::bds::esitoem
@ esitoem
Definition: BDSD1Bits.hpp:479
gnsstk::bds::enbCucl
@ enbCucl
Definition: BDSD1Bits.hpp:391
gnsstk::bds::cscdtLS
@ cscdtLS
Definition: BDSD1Bits.hpp:1012
gnsstk::CommonTime
Definition: CommonTime.hpp:84
gnsstk::bds::enbCicl
@ enbCicl
Definition: BDSD1Bits.hpp:518
gnsstk::bds::esba1i
@ esba1i
Definition: BDSD2Bits.hpp:840
gnsstk::bds::escidot
@ escidot
Definition: BDSD1Bits.hpp:551
gnsstk::bds::asbdil
@ asbdil
delta inclination LSBs
Definition: BDSD1Bits.hpp:142
gnsstk::WeekSecond::sow
double sow
Definition: WeekSecond.hpp:155
gnsstk::bds::h1nbHea13m
@ h1nbHea13m
Definition: BDSD1Bits.hpp:679
gnsstk::bds::h2nbHea22l
@ h2nbHea22l
Definition: BDSD1Bits.hpp:760
gnsstk::timeAdjust8BitWeekRollover
long timeAdjust8BitWeekRollover(long toCorrectWeek, long &refWeek)
Definition: TimeCorrection.cpp:77
gnsstk::bds::h2sbHea20l
@ h2sbHea20l
PRN 20 health LSBs.
Definition: BDSD1Bits.hpp:744
gnsstk::bds::cnbA1GPSl
@ cnbA1GPSl
Definition: BDSD1Bits.hpp:972
gnsstk::bds::fnbPre
@ fnbPre
Preamble number of bits.
Definition: BDSD1Bits.hpp:53
gnsstk::bds::ascA1
@ ascA1
Definition: BDSD1Bits.hpp:109
gnsstk::bds::fnbSOWm
@ fnbSOWm
SOW MSBs number of bits.
Definition: BDSD1Bits.hpp:65
gnsstk::PackedNavBits::matchBits
bool matchBits(const PackedNavBits &right, const short startBit=0, const short endBit=-1) const
Definition: PackedNavBits.cpp:1116
gnsstk::bds::h2nbHea20l
@ h2nbHea20l
Definition: BDSD1Bits.hpp:745
gnsstk::bds::enbPnum
@ enbPnum
Page number in SF1, num bits.
Definition: BDSD2Bits.hpp:663
gnsstk::bds::enbBeta1
@ enbBeta1
Definition: BDSD1Bits.hpp:304
gnsstk::bds::h1nbHea8m
@ h1nbHea8m
Definition: BDSD1Bits.hpp:648
gnsstk::bds::enbAODC
@ enbAODC
Definition: BDSD1Bits.hpp:212
gnsstk::PNBBDSD2NavDataFactory::AlmPtrList
std::list< AlmPtr > AlmPtrList
Alias for list of almanac objects.
Definition: PNBBDSD2NavDataFactory.hpp:229
gnsstk::bds::anbtoa
@ anbtoa
Definition: BDSD1Bits.hpp:146
gnsstk::bds::esbOMEGAdotl
@ esbOMEGAdotl
Definition: BDSD1Bits.hpp:531
gnsstk::bds::h3nbHea33m
@ h3nbHea33m
Definition: BDSD1Bits.hpp:851
gnsstk::bds::csbA0GPS
@ csbA0GPS
GPS A0 time offset term.
Definition: BDSD1Bits.hpp:959
gnsstk::Week::week
int week
Full week number.
Definition: Week.hpp:267
gnsstk::bds::esba0m
@ esba0m
Definition: BDSD1Bits.hpp:332
gnsstk::bds::fnbSOWl
@ fnbSOWl
SOW LSBs number of bits.
Definition: BDSD1Bits.hpp:73
gnsstk::bds::esiwi
@ esiwi
Definition: BDSD2Bits.hpp:1112
gnsstk::bds::esbi0m
@ esbi0m
Definition: BDSD1Bits.hpp:493
gnsstk::bds::esii0i2
@ esii0i2
Definition: BDSD2Bits.hpp:1027
gnsstk::bds::esbidotm
@ esbidotm
Definition: BDSD1Bits.hpp:549
gnsstk::bds::esbOMEGAdoti
@ esbOMEGAdoti
Definition: BDSD2Bits.hpp:1070
gnsstk::bds::csbdtLSl
@ csbdtLSl
dtLS LSBs
Definition: BDSD1Bits.hpp:1014
gnsstk::bds::h3nbHea42
@ h3nbHea42
Definition: BDSD1Bits.hpp:912
gnsstk::bds::h1sbHea15l
@ h1sbHea15l
Definition: BDSD1Bits.hpp:701
gnsstk::bds::h3sbHea43m
@ h3sbHea43m
Definition: BDSD1Bits.hpp:915
gnsstk::bds::enbCicm
@ enbCicm
Definition: BDSD1Bits.hpp:508
gnsstk::bds::cnbA0GLO
@ cnbA0GLO
Definition: BDSD1Bits.hpp:994
gnsstk::bds::enbAlpha1
@ enbAlpha1
Definition: BDSD1Bits.hpp:270
gnsstk::bds::h1nbHea15l
@ h1nbHea15l
Definition: BDSD1Bits.hpp:702
gnsstk::bds::h2sbHea22l
@ h2sbHea22l
PRN 22 health LSBs.
Definition: BDSD1Bits.hpp:759
gnsstk::bds::esbBeta1
@ esbBeta1
Definition: BDSD1Bits.hpp:303
gnsstk::bds::enbidotm
@ enbidotm
Definition: BDSD1Bits.hpp:550
gnsstk::bds::h1nbHea2
@ h1nbHea2
Definition: BDSD1Bits.hpp:610
gnsstk::bds::ascOMEGA0
@ ascOMEGA0
Definition: BDSD1Bits.hpp:121
gnsstk::bds::h3sbHea31m
@ h3sbHea31m
Definition: BDSD1Bits.hpp:835
gnsstk::bds::csbA0UTCm
@ csbA0UTCm
UTC A0 time offset term MSB.
Definition: BDSD1Bits.hpp:1025
gnsstk::bds::enbM0l
@ enbM0l
Definition: BDSD1Bits.hpp:405
gnsstk::bds::enbwm
@ enbwm
Definition: BDSD1Bits.hpp:578
gnsstk::bds::esbURAI
@ esbURAI
Definition: BDSD1Bits.hpp:216
gnsstk::bds::cnbdtLSm
@ cnbdtLSm
Definition: BDSD1Bits.hpp:1011
gnsstk::bds::esitocm
@ esitocm
Clock correction reference SOW MSBs.
Definition: BDSD1Bits.hpp:230
gnsstk::bds::enba0l
@ enba0l
Definition: BDSD1Bits.hpp:343
gnsstk::bds::esca0
@ esca0
Definition: BDSD1Bits.hpp:334
gnsstk::bds::asbOMEGAdotm
@ asbOMEGAdotm
OMEGA dot MSBs.
Definition: BDSD1Bits.hpp:149
gnsstk::bds::asbEcc
@ asbEcc
Eccentricity.
Definition: BDSD1Bits.hpp:130
gnsstk::bds::esiM0l
@ esiM0l
Definition: BDSD1Bits.hpp:403
gnsstk::bds::esbCicl
@ esbCicl
Definition: BDSD1Bits.hpp:517
gnsstk::bds::h1sbHea15m
@ h1sbHea15m
Definition: BDSD1Bits.hpp:693
BDSD2NavHealth.hpp
gnsstk::bds::enbCrcm
@ enbCrcm
Definition: BDSD1Bits.hpp:433
gnsstk::bds::h3nbHea43m
@ h3nbHea43m
Definition: BDSD1Bits.hpp:916
gnsstk::bds::ascOMEGAdot
@ ascOMEGAdot
Definition: BDSD1Bits.hpp:151
gnsstk::bds::asbM0l
@ asbM0l
M0 LSBs.
Definition: BDSD1Bits.hpp:179
gnsstk::bds::h2nbHea24
@ h2nbHea24
Definition: BDSD1Bits.hpp:767
gnsstk::bds::enbOMEGAdotl
@ enbOMEGAdotl
Definition: BDSD1Bits.hpp:532
gnsstk::bds::fnbRev
@ fnbRev
Reserved data number of bits.
Definition: BDSD1Bits.hpp:57
gnsstk::bds::esbCucm
@ esbCucm
Definition: BDSD1Bits.hpp:380
gnsstk::bds::h2nbHea27l
@ h2nbHea27l
Definition: BDSD1Bits.hpp:794
gnsstk::bds::asbPnum
@ asbPnum
Definition: BDSD2Bits.hpp:90
gnsstk::bds::esbi0l
@ esbi0l
Definition: BDSD1Bits.hpp:503
gnsstk::bds::h2sbHea29
@ h2sbHea29
PRN 29 health.
Definition: BDSD1Bits.hpp:800
gnsstk::bds::h2sbHea25m
@ h2sbHea25m
PRN 25 health MSB.
Definition: BDSD1Bits.hpp:770
gnsstk::bds::h2scWNa
@ h2scWNa
Definition: BDSD1Bits.hpp:814
gnsstk::bds::esctoe
@ esctoe
Definition: BDSD1Bits.hpp:476
gnsstk::bds::esbAlpha2
@ esbAlpha2
Definition: BDSD1Bits.hpp:279
gnsstk::bds::enbi0l
@ enbi0l
Definition: BDSD1Bits.hpp:504
gnsstk::bds::esiOMEGAdotm
@ esiOMEGAdotm
Definition: BDSD1Bits.hpp:520
gnsstk::bds::esbi0i1
@ esbi0i1
Definition: BDSD2Bits.hpp:1022
gnsstk::bds::csbWNlsf
@ csbWNlsf
WNlsf.
Definition: BDSD1Bits.hpp:1021
gnsstk::bds::escEcc
@ escEcc
Definition: BDSD1Bits.hpp:410
gnsstk::bds::h3scAmID
@ h3scAmID
Definition: BDSD1Bits.hpp:928
gnsstk::bds::esiCis
@ esiCis
Definition: BDSD2Bits.hpp:992
gnsstk::bds::h1nbHea7
@ h1nbHea7
Definition: BDSD1Bits.hpp:644
gnsstk::bds::anbdim
@ anbdim
Definition: BDSD1Bits.hpp:135
gnsstk::bds::cnbdtLSF
@ cnbdtLSF
Definition: BDSD1Bits.hpp:1018
std
Definition: Angle.hpp:142
gnsstk::bds::asbM0m
@ asbM0m
M0 MSBs.
Definition: BDSD1Bits.hpp:171
gnsstk::bds::cscWNlsf
@ cscWNlsf
Definition: BDSD1Bits.hpp:1023
gnsstk::bds::esbM0i
@ esbM0i
Definition: BDSD2Bits.hpp:903
gnsstk::bds::enbBeta3
@ enbBeta3
Definition: BDSD2Bits.hpp:788
gnsstk::bds::csbA1UTCm
@ csbA1UTCm
UTC A1 time offset term MSB.
Definition: BDSD1Bits.hpp:1032
gnsstk::bds::asbtoa
@ asbtoa
toa (reference time)
Definition: BDSD1Bits.hpp:145
gnsstk::bds::cnbA1UTCl
@ cnbA1UTCl
Definition: BDSD1Bits.hpp:1037
gnsstk::bds::h2sbHea26
@ h2sbHea26
PRN 26 health.
Definition: BDSD1Bits.hpp:781
gnsstk::bds::esbOMEGAdotm
@ esbOMEGAdotm
Definition: BDSD1Bits.hpp:521
gnsstk::bds::enbBeta2l
@ enbBeta2l
Definition: BDSD2Bits.hpp:784
gnsstk::bds::escWN
@ escWN
Definition: BDSD1Bits.hpp:228
gnsstk::bds::h3sbHea35
@ h3sbHea35
Definition: BDSD1Bits.hpp:865
gnsstk::bds::csbDN
@ csbDN
DN.
Definition: BDSD1Bits.hpp:1039
gnsstk::bds::enbCucm
@ enbCucm
Definition: BDSD1Bits.hpp:381
gnsstk::bds::esiAhalfl
@ esiAhalfl
Definition: BDSD1Bits.hpp:469
gnsstk::bds::esia2m
@ esia2m
Clock correction 2nd order term MSB.
Definition: BDSD2Bits.hpp:852
gnsstk::bds::ascdi
@ ascdi
Definition: BDSD1Bits.hpp:136
gnsstk::bds::h3nbHea31l
@ h3nbHea31l
Definition: BDSD1Bits.hpp:844
gnsstk::bds::h3nbHea39
@ h3nbHea39
Definition: BDSD1Bits.hpp:896
gnsstk::bds::anbM0m
@ anbM0m
Definition: BDSD1Bits.hpp:172
gnsstk::bds::esia1i
@ esia1i
Clock correction 1st order term ISB.
Definition: BDSD2Bits.hpp:839
gnsstk::bds::h1nbHea8l
@ h1nbHea8l
Definition: BDSD1Bits.hpp:656
gnsstk::bds::escBeta3
@ escBeta3
Definition: BDSD1Bits.hpp:315
gnsstk::bds::esbAhalfi
@ esbAhalfi
Definition: BDSD2Bits.hpp:960
PNBBDSD2NavDataFactory.hpp
gnsstk::bds::h3sbHea42
@ h3sbHea42
Definition: BDSD1Bits.hpp:911
gnsstk::bds::esia1l
@ esia1l
Clock correction 1st order term LSB.
Definition: BDSD1Bits.hpp:355
gnsstk::bds::h1sbHea13m
@ h1sbHea13m
Definition: BDSD1Bits.hpp:678
gnsstk::bds::enbAlpha2
@ enbAlpha2
Definition: BDSD1Bits.hpp:280
gnsstk::bds::h1sbHea6l
@ h1sbHea6l
Definition: BDSD1Bits.hpp:640
gnsstk::bds::esbBeta2m
@ esbBeta2m
Definition: BDSD2Bits.hpp:773
gnsstk::bds::esbAlpha3m
@ esbAlpha3m
Definition: BDSD2Bits.hpp:749
gnsstk::bds::escdn
@ escdn
Definition: BDSD1Bits.hpp:368
gnsstk::bds::enbtocl
@ enbtocl
Definition: BDSD1Bits.hpp:242
gnsstk::bds::enba1l
@ enba1l
Definition: BDSD1Bits.hpp:357
gnsstk::bds::h1sbHea12
@ h1sbHea12
Definition: BDSD1Bits.hpp:674
gnsstk::bds::esbAhalfm
@ esbAhalfm
Definition: BDSD1Bits.hpp:460
gnsstk::bds::esbOMEGA0i
@ esbOMEGA0i
Definition: BDSD2Bits.hpp:1090
gnsstk::bds::enbTGD1
@ enbTGD1
Definition: BDSD1Bits.hpp:246
GNSSTK_THROW
#define GNSSTK_THROW(exc)
Definition: Exception.hpp:366
gnsstk::bds::asctoa
@ asctoa
Definition: BDSD1Bits.hpp:147
gnsstk::bds::asbAhalfl
@ asbAhalfl
Semi-major axis**0.5 LSBs.
Definition: BDSD1Bits.hpp:100
gnsstk::bds::anbAhalfm
@ anbAhalfm
Definition: BDSD1Bits.hpp:93
gnsstk::bds::fscFraID
@ fscFraID
Frame ID scale factor.
Definition: BDSD1Bits.hpp:62
gnsstk::bds::fsbRev
@ fsbRev
Reserved data start bit.
Definition: BDSD1Bits.hpp:56
BDSD2NavISC.hpp
gnsstk::bds::esctoc
@ esctoc
Definition: BDSD1Bits.hpp:233
gnsstk::bds::esiidotm
@ esiidotm
Definition: BDSD1Bits.hpp:548
gnsstk::bds::esii0i1
@ esii0i1
Definition: BDSD2Bits.hpp:1021
gnsstk::bds::escCrc
@ escCrc
Definition: BDSD1Bits.hpp:434
gnsstk::bds::enba2l
@ enba2l
Definition: BDSD2Bits.hpp:864
gnsstk::bds::asbdim
@ asbdim
delta inclination MSBs
Definition: BDSD1Bits.hpp:134
gnsstk::bds::h2sbHea28
@ h2sbHea28
PRN 28 health.
Definition: BDSD1Bits.hpp:796
gnsstk::bds::esiCucm
@ esiCucm
Definition: BDSD1Bits.hpp:379
gnsstk::bds::esbAlpha1
@ esbAlpha1
Definition: BDSD1Bits.hpp:269
gnsstk::bds::h1sbHea18m
@ h1sbHea18m
Definition: BDSD1Bits.hpp:712
gnsstk::bds::h1sbHea3l
@ h1sbHea3l
Definition: BDSD1Bits.hpp:621
gnsstk::bds::esii0m
@ esii0m
Definition: BDSD1Bits.hpp:492
gnsstk::bds::h2sbHea30
@ h2sbHea30
PRN 30 health.
Definition: BDSD1Bits.hpp:808
gnsstk::bds::esca2
@ esca2
Definition: BDSD1Bits.hpp:329
gnsstk::bds::esiOMEGA0m
@ esiOMEGA0m
Definition: BDSD1Bits.hpp:562
gnsstk::PackedNavBits
Definition: PackedNavBits.hpp:70
gnsstk::bds::h1sbHea8l
@ h1sbHea8l
Definition: BDSD1Bits.hpp:655
gnsstk::bds::anbOMEGAdotm
@ anbOMEGAdotm
Definition: BDSD1Bits.hpp:150
gnsstk::bds::cscA0GLO
@ cscA0GLO
Scale factor is actually .1.
Definition: BDSD1Bits.hpp:995
gnsstk::bds::h1sbHea13l
@ h1sbHea13l
Definition: BDSD1Bits.hpp:686
gnsstk::bds::fsbSOWl
@ fsbSOWl
SOW LSBs start bit.
Definition: BDSD1Bits.hpp:72
gnsstk::BDSWeekSecond
Definition: BDSWeekSecond.hpp:56
gnsstk::NavID
Definition: NavID.hpp:61
gnsstk::bds::h2nbtoal
@ h2nbtoal
Definition: BDSD1Bits.hpp:825
gnsstk::bds::esbEcci
@ esbEcci
Definition: BDSD2Bits.hpp:937
gnsstk::bds::h1sbHea8m
@ h1sbHea8m
Definition: BDSD1Bits.hpp:647
gnsstk::bds::cnbdtLSl
@ cnbdtLSl
Definition: BDSD1Bits.hpp:1015
gnsstk::bds::esiAhalfi
@ esiAhalfi
Definition: BDSD2Bits.hpp:959
gnsstk::bds::esidn
@ esidn
Definition: BDSD2Bits.hpp:871
gnsstk::bds::enbBeta0
@ enbBeta0
Definition: BDSD2Bits.hpp:764
gnsstk::bds::enbwl
@ enbwl
Definition: BDSD1Bits.hpp:588
gnsstk::bds::esiCicl
@ esiCicl
Definition: BDSD1Bits.hpp:516
gnsstk::bds::anbM0l
@ anbM0l
Definition: BDSD1Bits.hpp:180
gnsstk::bds::h1sbHea17
@ h1sbHea17
Definition: BDSD1Bits.hpp:708
gnsstk::bds::h1sbHea10
@ h1sbHea10
Definition: BDSD1Bits.hpp:662
gnsstk::bds::h1sbHea18l
@ h1sbHea18l
Definition: BDSD1Bits.hpp:720
gnsstk::bds::csbA1UTCl
@ csbA1UTCl
UTC A1 time offset term LSB.
Definition: BDSD1Bits.hpp:1036
gnsstk::bds::csbA0GLO
@ csbA0GLO
GLO A0 time offset term.
Definition: BDSD1Bits.hpp:993
gnsstk::bds::csbA1GPSl
@ csbA1GPSl
GPS A1 time offset term LSB.
Definition: BDSD1Bits.hpp:971
gnsstk::bds::enbWN
@ enbWN
Definition: BDSD1Bits.hpp:227
gnsstk::bds::esbM0m
@ esbM0m
Definition: BDSD1Bits.hpp:394
gnsstk::bds::h1nbHea9
@ h1nbHea9
Definition: BDSD1Bits.hpp:659
gnsstk::bds::anbwm
@ anbwm
Definition: BDSD1Bits.hpp:161
gnsstk::bds::fscRev
@ fscRev
Reserved data scale factor.
Definition: BDSD1Bits.hpp:58
gnsstk::bds::cnbA0UTCm
@ cnbA0UTCm
Definition: BDSD1Bits.hpp:1026
gnsstk::bds::h3sbHea31l
@ h3sbHea31l
Definition: BDSD1Bits.hpp:843
gnsstk::bds::cnbA1GLOl
@ cnbA1GLOl
Definition: BDSD1Bits.hpp:1006
gnsstk::bds::enba0m
@ enba0m
Definition: BDSD1Bits.hpp:333
gnsstk::NavSatelliteID::xmitSat
SatID xmitSat
ID of the satellite transmitting the nav data.
Definition: NavSatelliteID.hpp:170
gnsstk::bds::escAlpha0
@ escAlpha0
Definition: BDSD1Bits.hpp:266
gnsstk::bds::enbtoem
@ enbtoem
Definition: BDSD1Bits.hpp:481
gnsstk::bds::esiM0m
@ esiM0m
Definition: BDSD1Bits.hpp:393
gnsstk::bds::cnbA1GAL
@ cnbA1GAL
Definition: BDSD1Bits.hpp:986
gnsstk::bds::anbOMEGA0l
@ anbOMEGA0l
Definition: BDSD1Bits.hpp:128
gnsstk::bds::enbCusl
@ enbCusl
Definition: BDSD2Bits.hpp:927
gnsstk::bds::csbA0UTCl
@ csbA0UTCl
UTC A0 time offset term LSB.
Definition: BDSD1Bits.hpp:1029
gnsstk::bds::h1nbHea16
@ h1nbHea16
Definition: BDSD1Bits.hpp:705
gnsstk::bds::enba2m
@ enba2m
Definition: BDSD2Bits.hpp:854
gnsstk::bds::csbA1GAL
@ csbA1GAL
Gal A1 time offset term.
Definition: BDSD1Bits.hpp:985
gnsstk::bds::h3nbAmID
@ h3nbAmID
Definition: BDSD1Bits.hpp:927
TimeCorrection.hpp
gnsstk::bds::escCrs
@ escCrs
Definition: BDSD1Bits.hpp:448
gnsstk::bds::enbwi
@ enbwi
Definition: BDSD2Bits.hpp:1114
gnsstk::bds::h2nbWNa
@ h2nbWNa
Definition: BDSD1Bits.hpp:813
gnsstk::bds::enbtoel
@ enbtoel
Definition: BDSD1Bits.hpp:490
gnsstk::bds::h1nbHea15m
@ h1nbHea15m
Definition: BDSD1Bits.hpp:694
gnsstk::bds::enbdn
@ enbdn
Definition: BDSD2Bits.hpp:873
gnsstk::bds::escCis
@ escCis
Definition: BDSD1Bits.hpp:537
gnsstk::bds::cnbA0GALl
@ cnbA0GALl
Definition: BDSD1Bits.hpp:983
gnsstk::bds::enbCrcl
@ enbCrcl
Definition: BDSD1Bits.hpp:443
gnsstk::bds::h3sbHea33m
@ h3sbHea33m
Definition: BDSD1Bits.hpp:850
gnsstk::bds::h2nbHea21
@ h2nbHea21
Definition: BDSD1Bits.hpp:748
TimeString.hpp
gnsstk::bds::esbAODC
@ esbAODC
Definition: BDSD1Bits.hpp:211
gnsstk::bds::h3sbHea36m
@ h3sbHea36m
Definition: BDSD1Bits.hpp:869
gnsstk::bds::esba1m
@ esba1m
Definition: BDSD1Bits.hpp:346
gnsstk::bds::enbEccl
@ enbEccl
Definition: BDSD1Bits.hpp:419
gnsstk::bds::h2nbHea25m
@ h2nbHea25m
Definition: BDSD1Bits.hpp:771
gnsstk::bds::ascA0
@ ascA0
Definition: BDSD1Bits.hpp:113
gnsstk::bds::h1sbHea3m
@ h1sbHea3m
Definition: BDSD1Bits.hpp:613
gnsstk::bds::enbEcci
@ enbEcci
Definition: BDSD2Bits.hpp:938
gnsstk::bds::cscA1GPS
@ cscA1GPS
Scale factor is actually .1.
Definition: BDSD1Bits.hpp:965
gnsstk::bds::enbBeta2m
@ enbBeta2m
Definition: BDSD2Bits.hpp:774
gnsstk::bds::escAlpha3
@ escAlpha3
Definition: BDSD1Bits.hpp:286
gnsstk::bds::esiOMEGA0i
@ esiOMEGA0i
Definition: BDSD2Bits.hpp:1089
gnsstk::bds::esba2m
@ esba2m
Definition: BDSD2Bits.hpp:853
gnsstk::bds::h1nbHea13l
@ h1nbHea13l
Definition: BDSD1Bits.hpp:687
gnsstk::bds::pg1
@ pg1
Definition: BDSD2Bits.hpp:642


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