PNBGalINavDataFactory.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 "GalINavEph.hpp"
41 #include "GalINavTimeOffset.hpp"
42 #include "GalINavIono.hpp"
43 #include "GalINavISC.hpp"
44 #include "GALWeekSecond.hpp"
45 #include "TimeCorrection.hpp"
46 #include "EngNav.hpp"
47 #include "TimeString.hpp"
48 #include "GalIBits.hpp"
49 
50 using namespace std;
51 using namespace gnsstk::galinav;
52 
53 namespace gnsstk
54 {
55  bool PNBGalINavDataFactory ::
56  addData(const PackedNavBitsPtr& navIn, NavDataPtrList& navOut,
57  double cadence)
58  {
59  if ((navIn->getNavID().navType != NavType::GalINAV) ||
60  (navIn->getNumBits() != 128))
61  {
62  // This class only processes Galileo I/NAV.
63  return false;
64  }
65  bool rv = true;
66  try
67  {
68  unsigned long wordType = navIn->asUnsignedLong(
71  switch (wordType)
72  {
77  case 1:
78  case 2:
79  case 3:
80  case 4:
81  case 5:
82  // cerr << "wordType " << wordType << " = ephemeris" << endl;
83  rv = processEph(wordType, navIn, navOut);
84  break;
85  case 6:
86  rv = processOffset(navIn, navOut);
87  break;
88  case 7:
89  case 8:
90  case 9:
91  case 10:
92  // cerr << "wordType " << wordType << " = almanac" << endl;
93  rv = processAlm(wordType, navIn, navOut);
94  break;
95  default:
96  // cerr << "wordType " << wordType << " = unhandled" << endl;
97  rv = true;
98  break;
99  }
100  // cerr << " results: " << navOut.size() << endl;
101  // for (const auto& i : navOut)
102  // i->dump(cerr,DumpDetail::Full);
103  }
104  catch (Exception& exc)
105  {
106  rv = false;
107  cerr << exc << endl;
108  }
109  catch (std::exception& exc)
110  {
111  rv = false;
112  cerr << exc.what() << endl;
113  }
114  catch (...)
115  {
116  rv = false;
117  cerr << "Unknown exception" << endl;
118  }
119  return rv;
120  }
121 
122 
123  bool PNBGalINavDataFactory ::
124  processEph(unsigned wordType, const PackedNavBitsPtr& navIn,
125  NavDataPtrList& navOut)
126  {
127  NavSatelliteID key(navIn->getsatSys().id, navIn->getsatSys(),
128  navIn->getobsID(), navIn->getNavID());
129  if (!PNBNavDataFactory::processEph && !PNBNavDataFactory::processHea &&
130  !PNBNavDataFactory::processIono && !PNBNavDataFactory::processISC)
131  {
132  // User doesn't want any of the messages we're capable of
133  // decoding, so don't do any processing.
134  return true;
135  }
136  if (ephAcc.find(key) == ephAcc.end())
137  {
138  // cerr << "ephAcc is empty for signal " << key << endl;
139  // set up a new ephemeris
140  ephAcc[key].resize(numEphWTs);
141  ephAcc[key][wordType-1] = navIn;
142  // nothing in navOut yet and no further processing because
143  // we only have one of three subframes at this point.
144  return true;
145  }
146  std::vector<PackedNavBitsPtr> &ephWord(ephAcc[key]);
147  ephWord[wordType-1] = navIn;
148  if (wordType == 5)
149  {
150  if (PNBNavDataFactory::processIono)
151  {
152  // Add iono data from word type 5
153  NavDataPtr p3 = std::make_shared<GalINavIono>();
154  GalINavIono *ip3 = dynamic_cast<GalINavIono*>(p3.get());
155  ip3->timeStamp = navIn->getTransmitTime();
156  ip3->signal = NavMessageID(key, NavMessageType::Iono);
157  ip3->ai[0] = navIn->asUnsignedDouble(isbai0,inbai0,iscai0);
158  ip3->ai[1] = navIn->asSignedDouble(isbai1,inbai1,iscai1);
159  ip3->ai[2] = navIn->asSignedDouble(isbai2,inbai2,iscai2);
160  ip3->idf[0] = navIn->asBool(isbIDFR1);
161  ip3->idf[1] = navIn->asBool(isbIDFR2);
162  ip3->idf[2] = navIn->asBool(isbIDFR3);
163  ip3->idf[3] = navIn->asBool(isbIDFR4);
164  ip3->idf[4] = navIn->asBool(isbIDFR5);
165  navOut.push_back(p3);
166  }
167  if (PNBNavDataFactory::processISC)
168  {
169  // Add ISC data from word type 5
170  NavDataPtr p4 = std::make_shared<GalINavISC>();
171  GalINavISC *ip4 = dynamic_cast<GalINavISC*>(p4.get());
172  ip4->timeStamp = navIn->getTransmitTime();
173  ip4->signal = NavMessageID(key, NavMessageType::ISC);
174  ip4->isc = std::numeric_limits<double>::quiet_NaN();
175  ip4->bgdE1E5a = navIn->asSignedDouble(isbBGDa,inbBGDa,iscBGDa);
176  ip4->bgdE1E5b = navIn->asSignedDouble(isbBGDb,inbBGDb,iscBGDb);
177  navOut.push_back(p4);
178  }
179  // Health information is in word type 5, but we also need
180  // word type 3 for SISA.
181  if (PNBNavDataFactory::processHea && ephWord[wt3])
182  {
183  // Add health bits from word type 5.
184  NavDataPtr p1 = std::make_shared<GalINavHealth>();
185  GalINavHealth *hp1 = dynamic_cast<GalINavHealth*>(p1.get());
186  hp1->timeStamp = navIn->getTransmitTime();
187  hp1->signal = NavMessageID(key, NavMessageType::Health);
188  hp1->signal.obs.band = CarrierBand::E5b;
189  hp1->signal.obs.code = TrackingCode::E5bI;
190  hp1->sigHealthStatus = static_cast<GalHealthStatus>(
191  ephWord[isiE5bhs]->asUnsignedLong(isbE5bhs,inbE5bhs,iscE5bhs));
192  hp1->dataValidityStatus = static_cast<GalDataValid>(
193  ephWord[isiE5bdvs]->asUnsignedLong(
195  hp1->sisaIndex = ephWord[esiSISA]->asUnsignedLong(esbSISA,enbSISA,
196  escSISA);
197  NavDataPtr p2 = std::make_shared<GalINavHealth>();
198  GalINavHealth *hp2 = dynamic_cast<GalINavHealth*>(p2.get());
199  *hp2 = *hp1; // copy data
201  hp2->signal.obs.code = TrackingCode::E1B;
202  hp2->sigHealthStatus = static_cast<GalHealthStatus>(
203  ephWord[isiE1Bhs]->asUnsignedLong(isbE1Bhs,inbE1Bhs,iscE1Bhs));
204  hp2->dataValidityStatus = static_cast<GalDataValid>(
205  ephWord[isiE1Bdvs]->asUnsignedLong(
207  // reset is the same as p1 and already copied
208  navOut.push_back(p1);
209  navOut.push_back(p2);
210  }
211  }
212  if (!PNBNavDataFactory::processEph)
213  {
214  // User doesn't want ephemerides so don't do any further
215  // processing.
216  return true;
217  }
218  // stop processing if we don't have three full subframes
219  if (!ephWord[wt1] || !ephWord[wt2] || !ephWord[wt3] || !ephWord[wt4] ||
220  !ephWord[wt5] ||
221  (ephWord[wt1]->getNumBits() != 128) ||
222  (ephWord[wt2]->getNumBits() != 128) ||
223  (ephWord[wt3]->getNumBits() != 128) ||
224  (ephWord[wt4]->getNumBits() != 128) ||
225  (ephWord[wt5]->getNumBits() != 128))
226  {
227  // cerr << "Not ready for full I/NAV eph processing" << endl
228  // << " wt1: " << (bool)ephWord[wt1] << " "
229  // << (ephWord[wt1] ? ephWord[wt1]->getNumBits() : -1) << endl
230  // << " wt2: " << (bool)ephWord[wt2] << " "
231  // << (ephWord[wt2] ? ephWord[wt2]->getNumBits() : -1) << endl
232  // << " wt3: " << (bool)ephWord[wt3] << " "
233  // << (ephWord[wt3] ? ephWord[wt3]->getNumBits() : -1) << endl
234  // << " wt4: " << (bool)ephWord[wt4] << " "
235  // << (ephWord[wt4] ? ephWord[wt4]->getNumBits() : -1) << endl
236  // << " wt5: " << (bool)ephWord[wt5] << " "
237  // << (ephWord[wt5] ? ephWord[wt5]->getNumBits() : -1) << endl;
238  return true;
239  }
240  // Stop processing if we don't have matching IODnav in each
241  // of the four word types.
242  unsigned long iod1, iod2, iod3, iod4;
243  iod1 = ephWord[wt1]->asUnsignedLong(esbIOD,enbIOD,escIOD);
244  iod2 = ephWord[wt2]->asUnsignedLong(esbIOD,enbIOD,escIOD);
245  iod3 = ephWord[wt3]->asUnsignedLong(esbIOD,enbIOD,escIOD);
246  iod4 = ephWord[wt4]->asUnsignedLong(esbIOD,enbIOD,escIOD);
250  if ((iod1 != iod2) || (iod1 != iod3) || (iod1 != iod4))
251  {
252  // cerr << "IODnav mismatch, not processing" << endl;
253  // Even though the mismatch might be considered an error,
254  // we don't really want to mark it as such and rather
255  // consider it as a "valid" but unprocessable data set.
256  return true;
257  }
258  NavDataPtr p0 = std::make_shared<GalINavEph>();
259  GalINavEph *eph = dynamic_cast<GalINavEph*>(p0.get());
260  // NavData
261  eph->timeStamp = ephWord[wt1]->getTransmitTime();
262  eph->signal = NavMessageID(key, NavMessageType::Ephemeris);
263  // cerr << "Ready for full I/NAV eph processing for " << (NavSignalID)key << endl;
264  // OrbitData = empty
265  // OrbitDataKepler
266  eph->xmitTime = eph->timeStamp;
267  double t0e = ephWord[esit0e]->asUnsignedLong(esbt0e,enbt0e,esct0e);
268  double t0c = ephWord[esit0c]->asUnsignedLong(esbt0c,enbt0c,esct0c);
269  unsigned wn = ephWord[isiWN]->asUnsignedLong(isbWN,inbWN,iscWN);
270  unsigned tow = ephWord[isiTOW]->asUnsignedLong(isbTOW,inbTOW,iscTOW);
271  // cerr << " wn=" << wn << " tow=" << tow << " t0e=" << t0e << " t0c=" << t0c << endl;
272  GALWeekSecond xmit(wn, tow);
273  eph->Toe = GALWeekSecond(wn,t0e).weekRolloverAdj(xmit);
274  eph->Toc = GALWeekSecond(wn,t0c).weekRolloverAdj(xmit);
275  // health is set below
276  eph->Cuc = ephWord[esiCuc]->asSignedDouble(esbCuc,enbCuc,escCuc);
277  eph->Cus = ephWord[esiCus]->asSignedDouble(esbCus,enbCus,escCus);
278  eph->Crc = ephWord[esiCrc]->asSignedDouble(esbCrc,enbCrc,escCrc);
279  eph->Crs = ephWord[esiCrs]->asSignedDouble(esbCrs,enbCrs,escCrs);
280  eph->Cic = ephWord[esiCic]->asSignedDouble(esbCic,enbCic,escCic);
281  eph->Cis = ephWord[esiCis]->asSignedDouble(esbCis,enbCis,escCis);
282  eph->M0 = ephWord[esiM0]->asDoubleSemiCircles(esbM0,enbM0,escM0);
283  eph->dn = ephWord[esidn]->asDoubleSemiCircles(esbdn,enbdn,escdn);
284  // no dndot in I/NAV
285  eph->ecc = ephWord[esiEcc]->asUnsignedDouble(esbEcc,enbEcc,escEcc);
286  eph->Ahalf = ephWord[esiAhalf]->asUnsignedDouble(esbAhalf,enbAhalf,
287  escAhalf);
288  eph->A = eph->Ahalf * eph->Ahalf;
289  // no Adot in I/NAV
290  eph->OMEGA0 = ephWord[esiOMEGA0]->asDoubleSemiCircles(esbOMEGA0,enbOMEGA0,
291  escOMEGA0);
292  eph->i0 = ephWord[esii0]->asDoubleSemiCircles(esbi0,enbi0,esci0);
293  eph->w = ephWord[esiw]->asDoubleSemiCircles(esbw,enbw,escw);
294  eph->OMEGAdot = ephWord[esiOMEGAdot]->asDoubleSemiCircles(
296  eph->idot = ephWord[esiidot]->asDoubleSemiCircles(esbidot,enbidot,
297  escidot);
298  eph->af0 = ephWord[esiaf0]->asSignedDouble(esbaf0,enbaf0,escaf0);
299  eph->af1 = ephWord[esiaf1]->asSignedDouble(esbaf1,enbaf1,escaf1);
300  eph->af2 = ephWord[esiaf2]->asSignedDouble(esbaf2,enbaf2,escaf2);
301  // GalINavEph
302  eph->bgdE5aE1 = ephWord[isiBGDa]->asSignedDouble(isbBGDa,inbBGDa,iscBGDa);
303  eph->bgdE5bE1 = ephWord[isiBGDb]->asSignedDouble(isbBGDb,inbBGDb,iscBGDb);
304  eph->sisaIndex = ephWord[esiSISA]->asUnsignedLong(esbSISA,enbSISA,
305  escSISA);
306  eph->svid = ephWord[esiSVID]->asUnsignedLong(esbSVID,enbSVID,escSVID);
307  eph->xmit2 = ephWord[wt2]->getTransmitTime();
308  eph->xmit3 = ephWord[wt3]->getTransmitTime();
309  eph->xmit4 = ephWord[wt4]->getTransmitTime();
310  eph->xmit5 = ephWord[wt5]->getTransmitTime();
311  eph->iodnav1 = iod1;
312  eph->iodnav2 = iod2;
313  eph->iodnav3 = iod3;
314  eph->iodnav4 = iod4;
315  eph->hsE5b = static_cast<GalHealthStatus>(
316  ephWord[isiE5bhs]->asUnsignedLong(isbE5bhs,inbE5bhs,iscE5bhs));
317  eph->hsE1B = static_cast<GalHealthStatus>(
318  ephWord[isiE1Bhs]->asUnsignedLong(isbE1Bhs,inbE1Bhs,iscE1Bhs));
319  eph->dvsE5b = static_cast<GalDataValid>(
320  ephWord[isiE5bdvs]->asUnsignedLong(isbE5bdvs,inbE5bdvs,iscE5bdvs));
321  eph->dvsE1B = static_cast<GalDataValid>(
322  ephWord[isiE1Bdvs]->asUnsignedLong(isbE1Bdvs,inbE1Bdvs,iscE1Bdvs));
323  // set health using the Galileo algorithms.
325  {
326  // E1B
327  eph->health = GalINavHealth::galHealth(eph->hsE1B,eph->dvsE1B,
328  eph->sisaIndex);
329  }
330  else
331  {
332  // E5b
333  eph->health = GalINavHealth::galHealth(eph->hsE5b,eph->dvsE5b,
334  eph->sisaIndex);
335  }
336  eph->fixFit();
337  // cerr << "add I/NAV eph" << endl;
338  navOut.push_back(p0);
339  // Clear out the broadcast ephemeris that's been processed.
340  ephAcc.erase(key);
341  return true;
342  }
343 
344 
345  bool PNBGalINavDataFactory ::
346  processAlm(unsigned wordType, const PackedNavBitsPtr& navIn,
347  NavDataPtrList& navOut)
348  {
349  NavSatelliteID key(navIn->getsatSys().id, navIn->getsatSys(),
350  navIn->getobsID(), navIn->getNavID());
351  if (!PNBNavDataFactory::processAlm && !PNBNavDataFactory::processHea &&
352  !PNBNavDataFactory::processTim)
353  {
354  // User doesn't want almanacs or health so don't do any
355  // processing.
356  return true;
357  }
364  if (almAcc.find(key) == almAcc.end())
365  {
366  // cerr << "almAcc is empty for signal " << key << endl;
367  // set up a new almanac
368  almAcc[key].resize(numAlmWTs);
369  almAcc[key][wordType-7] = navIn;
370  // nothing in navOut yet and no further processing because
371  // we only have one of three subframes at this point.
372  return true;
373  }
374  std::vector<PackedNavBitsPtr> &almWord(almAcc[key]);
375  almWord[wordType-7] = navIn;
376  if ((wordType == 10) && PNBNavDataFactory::processTim)
377  {
378  NavDataPtr p3 = std::make_shared<GalINavTimeOffset>();
379  p3->timeStamp = navIn->getTransmitTime();
380  p3->signal = NavMessageID(
381  NavSatelliteID(navIn->getsatSys().id, navIn->getsatSys(),
382  navIn->getobsID(), navIn->getNavID()),
383  NavMessageType::TimeOffset);
384  GalINavTimeOffset *to = dynamic_cast<GalINavTimeOffset*>(p3.get());
385  to->tgt = TimeSystem::GPS;
386  to->a0 = almWord[asiA0G]->asSignedDouble(asbA0G,anbA0G,ascA0G);
387  to->a1 = almWord[asiA1G]->asSignedDouble(asbA1G,anbA1G,ascA1G);
388  to->tot = almWord[asit0G]->asUnsignedLong(asbt0G,anbt0G,asct0G);
389  to->wnot = almWord[asiWN0G]->asUnsignedLong(asbWN0G,anbWN0G,ascWN0G);
390  // Not sure if this is appropriate but it beats saving the
391  // 12-bit WN from word type 5.
392  GALWeekSecond gws(to->timeStamp);
393  // WN0G is 6 bits...
394  gws.week = (gws.week & ~0x3f) | to->wnot;
395  gws.sow = to->tot;
396  to->refTime = gws;
397  // cerr << "gws.week=" << gws.week << " gws.sow=" << gws.sow << " refTime=" << to->refTime << endl;
398  navOut.push_back(p3);
399  }
400  // stop processing if we don't have three full subframes
401  if (!almWord[wt7] || !almWord[wt8] || !almWord[wt9] || !almWord[wt10] ||
402  (almWord[wt7]->getNumBits() != 128) ||
403  (almWord[wt8]->getNumBits() != 128) ||
404  (almWord[wt9]->getNumBits() != 128) ||
405  (almWord[wt10]->getNumBits() != 128))
406  {
407  // cerr << "Not ready for full I/NAV alm processing" << endl
408  // << " wt7: " << (bool)almWord[wt7] << " "
409  // << (almWord[wt7] ? almWord[wt7]->getNumBits() : -1) << endl
410  // << " wt8: " << (bool)almWord[wt8] << " "
411  // << (almWord[wt8] ? almWord[wt8]->getNumBits() : -1) << endl
412  // << " wt9: " << (bool)almWord[wt9] << " "
413  // << (almWord[wt9] ? almWord[wt9]->getNumBits() : -1) << endl
414  // << " wt10: " << (bool)almWord[wt10] << " "
415  // << (almWord[wt10] ? almWord[wt10]->getNumBits() : -1) << endl;
416  return true;
417  }
418  // Stop processing if we don't have matching IODa in each of
419  // the four word types.
420  unsigned long ioda1, ioda2, ioda3, ioda4;
421  ioda1 = almWord[wt7]->asUnsignedLong(asbIODa,anbIODa,ascIODa);
422  ioda2 = almWord[wt8]->asUnsignedLong(asbIODa,anbIODa,ascIODa);
423  ioda3 = almWord[wt9]->asUnsignedLong(asbIODa,anbIODa,ascIODa);
424  ioda4 = almWord[wt10]->asUnsignedLong(asbIODa,anbIODa,ascIODa);
425  if ((ioda1 != ioda2) || (ioda1 != ioda3) || (ioda1 != ioda4))
426  {
427  // cerr << "IODa mismatch, not processing: " << ioda1 << " " << ioda2 << " " << ioda3 << " " << ioda4 << endl;
428  // Even though the mismatch might be considered an error,
429  // we don't really want to mark it as such and rather
430  // consider it as a "valid" but unprocessable data set.
431  return true;
432  }
433  // SVID1
434  NavDataPtr p0 = std::make_shared<GalINavAlm>();
435  NavDataPtr p1 = std::make_shared<GalINavHealth>();
436  NavDataPtr p2 = std::make_shared<GalINavHealth>();
437  GalINavAlm *alm = dynamic_cast<GalINavAlm*>(p0.get());
438  GalINavHealth *hp1 = dynamic_cast<GalINavHealth*>(p1.get());
439  GalINavHealth *hp2 = dynamic_cast<GalINavHealth*>(p2.get());
440  if (processAlmOrb(almWord, alm, hp1, hp2, wt7, wt8, asiWNa_A, asit0a_A,
446  asbE1Bhs_1))
447  {
448  if (PNBNavDataFactory::processAlm)
449  {
450  // cerr << "add I/NAV alm SVID1" << endl;
451  alm->ioda1 = ioda1;
452  alm->ioda2 = ioda2;
453  navOut.push_back(p0);
454  }
455  if (PNBNavDataFactory::processHea)
456  {
457  navOut.push_back(p1);
458  navOut.push_back(p2);
459  }
460  }
461  // SVID2
462  p0 = std::make_shared<GalINavAlm>();
463  p1 = std::make_shared<GalINavHealth>();
464  p2 = std::make_shared<GalINavHealth>();
465  alm = dynamic_cast<GalINavAlm*>(p0.get());
466  hp1 = dynamic_cast<GalINavHealth*>(p1.get());
467  hp2 = dynamic_cast<GalINavHealth*>(p2.get());
468  if (processAlmOrb(almWord, alm, hp1, hp2, wt8, wt9, asiWNa_B, asit0a_B,
474  asbE1Bhs_2))
475  {
476  if (PNBNavDataFactory::processAlm)
477  {
478  // cerr << "add I/NAV alm SVID2" << endl;
479  alm->ioda1 = ioda2;
480  alm->ioda2 = ioda3;
481  navOut.push_back(p0);
482  }
483  if (PNBNavDataFactory::processHea)
484  {
485  navOut.push_back(p1);
486  navOut.push_back(p2);
487  }
488  }
489  // SVID3
490  p0 = std::make_shared<GalINavAlm>();
491  p1 = std::make_shared<GalINavHealth>();
492  p2 = std::make_shared<GalINavHealth>();
493  alm = dynamic_cast<GalINavAlm*>(p0.get());
494  hp1 = dynamic_cast<GalINavHealth*>(p1.get());
495  hp2 = dynamic_cast<GalINavHealth*>(p2.get());
496  if (processAlmOrb(almWord, alm, hp1, hp2, wt9, wt10, asiWNa_B, asit0a_B,
502  asbE1Bhs_3))
503  {
504  if (PNBNavDataFactory::processAlm)
505  {
506  // cerr << "add I/NAV alm SVID3" << endl;
507  alm->ioda1 = ioda3;
508  alm->ioda2 = ioda4;
509  navOut.push_back(p0);
510  }
511  if (PNBNavDataFactory::processHea)
512  {
513  navOut.push_back(p1);
514  navOut.push_back(p2);
515  }
516  }
517  // Clear out the broadcast almanac that's been processed.
518  almAcc.erase(key);
519  return true;
520  }
521 
522 
523  bool PNBGalINavDataFactory ::
524  processAlmOrb(const std::vector<PackedNavBitsPtr>& almWord,
525  GalINavAlm *alm, GalINavHealth *hp1, GalINavHealth *hp2,
526  int wtA, int wtB,
527  int asiWNa, int asit0a,
528  int asiSVID, int asbSVID,
529  int asidAhalf, int asbdAhalf,
530  int asiEcc, int asbEcc,
531  int asiw, int asbw,
532  int asidi, int asbdi,
533  int asiOMEGA0, int asbOMEGA0,
534  int asiOMEGAdot, int asbOMEGAdot,
535  int asiM0, int asbM0,
536  int asiaf0, int asbaf0,
537  int asiaf1, int asbaf1,
538  int asiE5bhs, int asbE5bhs,
539  int asiE1Bhs, int asbE1Bhs)
540  {
541  // NavData
542  alm->timeStamp = almWord[wtA]->getTransmitTime();
543  unsigned long svid = almWord[asiSVID]->asUnsignedLong(asbSVID,anbSVID,
544  ascSVID);
545  if (svid == 0)
546  return false; // empty almanac, do nothing.
547  SatID xmitSat(almWord[wtA]->getsatSys());
548  NavSatelliteID sat(svid, xmitSat, almWord[wtA]->getobsID(),
549  almWord[wtA]->getNavID());
550  alm->signal = NavMessageID(sat, NavMessageType::Almanac);
551  // cerr << "Ready for full I/NAV alm processing for " << (NavSignalID)sat << endl;
552  // OrbitData = empty
553  // OrbitDataKepler
554  alm->xmitTime = alm->timeStamp;
555  alm->xmit2 = almWord[wtB]->getTransmitTime();
556  alm->t0a = almWord[asit0a]->asUnsignedLong(asbt0a,anbt0a,asct0a);
557  alm->wna = almWord[asiWNa]->asUnsignedLong(asbWNa,anbWNa,ascWNa);
558  // Not sure if this is appropriate but it beats saving the
559  // 12-bit WN from word type 5.
560  GALWeekSecond gws(alm->xmitTime);
561  // WNa is 2 bits...
562  gws.week = (gws.week & ~0x03) | alm->wna;
563  gws.sow = alm->t0a;
564  alm->Toe = alm->Toc = gws;
565  // cerr << " wna=" << alm->wna << " tow=" << gws.sow << " t0a=" << alm->t0a << " Toe=" << printTime(alm->Toe, "%L %g") << " xmit=" << printTime(alm->xmitTime, "%L %g") << endl;
566  alm->wna = gws.week;
567  alm->M0 = almWord[asiM0]->asDoubleSemiCircles(asbM0,anbM0,ascM0);
568  alm->ecc = almWord[asiEcc]->asUnsignedDouble(asbEcc,anbEcc,ascEcc);
569  alm->dAhalf = almWord[asidAhalf]->asUnsignedDouble(asbdAhalf,anbdAhalf,
570  ascdAhalf);
571  // slightly annoying that the reference value is for A but
572  // the transmitted data is A**1/2.
573  alm->Ahalf = ::sqrt(GalINavAlm::refA) + alm->dAhalf;
574  alm->A = alm->Ahalf * alm->Ahalf;
575  alm->OMEGA0 = almWord[asiOMEGA0]->asDoubleSemiCircles(asbOMEGA0,anbOMEGA0,
576  ascOMEGA0);
577  alm->deltai = almWord[asidi]->asDoubleSemiCircles(asbdi,anbdi,ascdi);
578  alm->i0 = GalINavAlm::refioffset + alm->deltai;
579  alm->w = almWord[asiw]->asDoubleSemiCircles(asbw,anbw,ascw);
580  alm->OMEGAdot = almWord[asiOMEGAdot]->asDoubleSemiCircles(
582  alm->af0 = almWord[asiaf0]->asSignedDouble(asbaf0,anbaf0,ascaf0);
583  alm->af1 = almWord[asiaf1]->asSignedDouble(asbaf1,anbaf1,ascaf1);
584  // GalINavAlm
585  alm->hsE5b = static_cast<GalHealthStatus>(
586  almWord[asiE5bhs]->asUnsignedLong(asbE5bhs,anbE5bhs,ascE5bhs));
587  alm->hsE1B = static_cast<GalHealthStatus>(
588  almWord[asiE1Bhs]->asUnsignedLong(asbE1Bhs,anbE1Bhs,ascE1Bhs));
589  alm->fixFit();
590  alm->fixHealth();
591  if (PNBNavDataFactory::processHea)
592  {
593  hp1->timeStamp = almWord[asiE5bhs]->getTransmitTime();
594  hp1->signal = NavMessageID(sat, NavMessageType::Health);
595  hp1->signal.obs.band = CarrierBand::E5b;
596  hp1->signal.obs.code = TrackingCode::E5bI;
597  hp1->sigHealthStatus = static_cast<GalHealthStatus>(
598  almWord[asiE5bhs]->asUnsignedLong(asbE5bhs,anbE5bhs,ascE5bhs));
600  hp2->timeStamp = almWord[asiE1Bhs]->getTransmitTime();
601  hp2->signal = NavMessageID(sat, NavMessageType::Health);
603  hp2->signal.obs.code = TrackingCode::E1B;
604  hp2->sigHealthStatus = static_cast<GalHealthStatus>(
605  almWord[asiE1Bhs]->asUnsignedLong(asbE1Bhs,anbE1Bhs,ascE1Bhs));
607  }
608  return true;
609  }
610 
611 
612  bool PNBGalINavDataFactory ::
613  processOffset(const PackedNavBitsPtr& navIn, NavDataPtrList& navOut)
614  {
615  // No checks for correct svid, just assume that the input
616  // data has already been checked (it will have been by
617  // addData).
618  if (!PNBNavDataFactory::processTim)
619  {
620  // User doesn't want time offset data so don't do any processing.
621  return true;
622  }
623  NavDataPtr p0 = std::make_shared<GalINavTimeOffset>();
624  p0->timeStamp = navIn->getTransmitTime();
625  p0->signal = NavMessageID(
626  NavSatelliteID(navIn->getsatSys().id, navIn->getsatSys(),
627  navIn->getobsID(), navIn->getNavID()),
628  NavMessageType::TimeOffset);
629  GalINavTimeOffset *to = dynamic_cast<GalINavTimeOffset*>(p0.get());
630  to->tgt = TimeSystem::UTC;
631  to->a0 = navIn->asSignedDouble(csbA0, cnbA0, cscA0);
632  to->a1 = navIn->asSignedDouble(csbA1, cnbA1, cscA1);
633  to->deltatLS = navIn->asLong(csbdtLS, cnbdtLS, cscdtLS);
634  to->tot = navIn->asUnsignedLong(csbtot, cnbtot, csctot);
635  to->wnot = navIn->asUnsignedLong(csbWNot, cnbWNot, cscWNot);
636  to->wnLSF = navIn->asUnsignedLong(csbWNlsf, cnbWNlsf, cscWNlsf);
637  to->dn = navIn->asUnsignedLong(csbDN, cnbDN, cscDN);
638  to->deltatLSF = navIn->asLong(csbdtLSF, cnbdtLSF, cscdtLSF);
639  to->tow = navIn->asUnsignedLong(csbTOW, cnbTOW, cscTOW);
640  // adjust week numbers to full week
641  GALWeekSecond ws(p0->timeStamp);
642  long refWeek = ws.week;
643  to->wnot = timeAdjust8BitWeekRollover(to->wnot, refWeek);
644  to->wnLSF = timeAdjust8BitWeekRollover(to->wnLSF, refWeek);
645  to->refTime = GALWeekSecond(to->wnot, to->tot);
646  to->effTime = GALWeekSecond(to->wnLSF, (to->dn-1)*86400);
647  // return results.
648  // cerr << "add I/NAV word type 6 time offset" << endl;
649  navOut.push_back(p0);
650  return true;
651  }
652 
653 
654 #if 0
655  void PNBGalINavDataFactory ::
656  dumpState(std::ostream& s)
657  const
658  {
659  s << "fullWNaMap.size() = " << fullWNaMap.size() << " (expect 32)" << endl
660  << "almAcc.size() = " << almAcc.size() << " (expect 32)" << endl;
661  for (const auto& i : almAcc)
662  {
663  s << " almAcc[" << i.first << "].size() = " << i.second.size()
664  << endl;
665  }
666  s << "ephAcc.size() = " << ephAcc.size() << " (expect 32)" << endl;
667  for (const auto& i : ephAcc)
668  {
669  s << " ephAcc[" << i.first << "].size() = " << i.second.size()
670  << endl;
671  for (unsigned j = 0; j < i.second.size(); j++)
672  {
673  s << " ephAcc[" << i.first << "][" << j << "] = ";
674  if (!i.second[j])
675  s << "unset";
676  else
677  s << i.second[j]->getNumBits() << " bits";
678  s << endl;
679  }
680  }
681  }
682 #endif
683 
684 
685  void PNBGalINavDataFactory ::
686  resetState()
687  {
688  almAcc.clear();
689  ephAcc.clear();
690  }
691 } // namespace gnsstk
gnsstk::galfnav::anbOMEGAdot
@ anbOMEGAdot
Definition: GalFBits.hpp:430
gnsstk::galfnav::asiSVID_2
@ asiSVID_2
Definition: GalFBits.hpp:455
gnsstk::bds::ascw
@ ascw
Definition: BDSD1Bits.hpp:162
gnsstk::bds::cscDN
@ cscDN
Definition: BDSD1Bits.hpp:1041
gnsstk::NavDataPtr
std::shared_ptr< NavData > NavDataPtr
Factories instantiate these in response to find() requests.
Definition: NavData.hpp:62
gnsstk::galfnav::enbCuc
@ enbCuc
Cuc number of bits.
Definition: GalFBits.hpp:256
gnsstk::galinav::asit0a_A
@ asit0a_A
Definition: GalIBits.hpp:352
GalIBits.hpp
gnsstk::galinav::csbA1
@ csbA1
Definition: GalIBits.hpp:301
gnsstk::galinav::iscai1
@ iscai1
Definition: GalIBits.hpp:216
example3.svid
svid
Definition: example3.py:19
gnsstk::galfnav::asbSVID_3
@ asbSVID_3
Definition: GalFBits.hpp:498
gnsstk::galinav::ascWN0G
@ ascWN0G
Definition: GalIBits.hpp:516
gnsstk::bds::escM0
@ escM0
Definition: BDSD1Bits.hpp:396
gnsstk::galinav::asiE1Bhs_2
@ asiE1Bhs_2
Definition: GalIBits.hpp:457
gnsstk::OrbitDataKepler::idot
double idot
Rate of inclination angle (rad/sec)
Definition: OrbitDataKepler.hpp:193
gnsstk::GalINavAlm::ioda2
uint8_t ioda2
IODa for the second word type (.
Definition: GalINavAlm.hpp:112
gnsstk::galfnav::asiaf0_1
@ asiaf0_1
Definition: GalFBits.hpp:438
gnsstk::galinav::anbE5bhs
@ anbE5bhs
Definition: GalIBits.hpp:414
gnsstk::GalINavHealth::sisaIndex
uint8_t sisaIndex
Signal in space accuracy index (OS-SIS-ICD tbl 76)
Definition: GalINavHealth.hpp:97
gnsstk::galinav::anbA1G
@ anbA1G
Definition: GalIBits.hpp:505
gnsstk::NavMessageID
Class used to identify/categorize navigation message data.
Definition: NavMessageID.hpp:52
gnsstk::galinav::asiWNa_A
@ asiWNa_A
Definition: GalIBits.hpp:346
gnsstk::galfnav::asbw_3
@ asbw_3
Definition: GalFBits.hpp:507
gnsstk::StdNavTimeOffset::deltatLSF
double deltatLSF
Current or future leap second count (UTC only).
Definition: StdNavTimeOffset.hpp:135
gnsstk::galinav::csbA0
@ csbA0
Definition: GalIBits.hpp:297
gnsstk::galinav::inbai2
@ inbai2
Definition: GalIBits.hpp:220
gnsstk::galfnav::asbaf1_3
@ asbaf1_3
Definition: GalFBits.hpp:525
gnsstk::bds::escAhalf
@ escAhalf
Definition: BDSD1Bits.hpp:462
gnsstk::galfnav::asiw_3
@ asiw_3
Definition: GalFBits.hpp:506
gnsstk::GalDataValid
GalDataValid
Identify Galileo Data Validity Status (DVS) states.
Definition: GalDataValid.hpp:51
gnsstk::galfnav::esiidot
@ esiidot
idot subframe index
Definition: GalFBits.hpp:217
gnsstk::galinav::cnbWNot
@ cnbWNot
Definition: GalIBits.hpp:314
gnsstk::PackedNavBitsPtr
std::shared_ptr< PackedNavBits > PackedNavBitsPtr
Managed pointer for passing PackedNavBits around.
Definition: PackedNavBits.hpp:66
gnsstk::galinav::asbWN0G
@ asbWN0G
Definition: GalIBits.hpp:514
gnsstk::galfnav::enbidot
@ enbidot
idot number of bits
Definition: GalFBits.hpp:219
gnsstk::galfnav::esiOMEGAdot
@ esiOMEGAdot
OMEGAdot subframe index.
Definition: GalFBits.hpp:197
gnsstk::galinav::asbt0G
@ asbt0G
Definition: GalIBits.hpp:509
gnsstk::galfnav::enbEcc
@ enbEcc
Ecc number of bits.
Definition: GalFBits.hpp:204
gnsstk::GalINavAlm::ioda1
uint8_t ioda1
IODa for the first word type (.
Definition: GalINavAlm.hpp:111
gnsstk::bds::escCus
@ escCus
Definition: BDSD1Bits.hpp:429
gnsstk::bds::escCuc
@ escCuc
Definition: BDSD1Bits.hpp:382
gnsstk::galinav::enbIOD
@ enbIOD
Definition: GalIBits.hpp:86
gnsstk::galfnav::esbw
@ esbw
w start bit
Definition: GalFBits.hpp:245
gnsstk::bds::esbCrs
@ esbCrs
Definition: BDSD2Bits.hpp:1055
gnsstk::galinav::iscE5bdvs
@ iscE5bdvs
Definition: GalIBits.hpp:271
gnsstk::galinav::inbBGDa
@ inbBGDa
Definition: GalIBits.hpp:250
gnsstk::galfnav::esiEcc
@ esiEcc
Ecc subframe index.
Definition: GalFBits.hpp:202
gnsstk::galinav::cnbA1
@ cnbA1
Definition: GalIBits.hpp:302
gnsstk::bds::ascEcc
@ ascEcc
Definition: BDSD1Bits.hpp:132
gnsstk::OrbitDataKepler::Cis
double Cis
Sine inclination (rad)
Definition: OrbitDataKepler.hpp:180
gnsstk::galfnav::esbEcc
@ esbEcc
Ecc start bit.
Definition: GalFBits.hpp:203
gnsstk::OrbitDataKepler::A
double A
Semi-major axis (m)
Definition: OrbitDataKepler.hpp:186
gnsstk::galfnav::esiM0
@ esiM0
M0 subframe index.
Definition: GalFBits.hpp:192
L1
gnsstk::Matrix< double > L1
Definition: Matrix_LUDecomp_T.cpp:46
gnsstk::galfnav::anbaf0
@ anbaf0
Definition: GalFBits.hpp:440
gnsstk::galinav::isbE5bhs
@ isbE5bhs
Definition: GalIBits.hpp:259
gnsstk::galfnav::esbaf1
@ esbaf1
af1 start bit
Definition: GalFBits.hpp:106
gnsstk::OrbitDataKepler::af2
double af2
SV clock drift rate (sec/sec**2)
Definition: OrbitDataKepler.hpp:197
gnsstk::galfnav::anbw
@ anbw
Definition: GalFBits.hpp:415
gnsstk::galfnav::enbaf0
@ enbaf0
af0 number of bits
Definition: GalFBits.hpp:102
gnsstk::galinav::asbOMEGA0_2
@ asbOMEGA0_2
Definition: GalIBits.hpp:440
gnsstk::galinav::iscTOW
@ iscTOW
Definition: GalIBits.hpp:286
gnsstk::galinav::wt10
@ wt10
Array index of word type 10 in almAcc.
Definition: GalIBits.hpp:72
gnsstk::galinav::asiE5bhs_1
@ asiE5bhs_1
Definition: GalIBits.hpp:412
gnsstk::galfnav::anbIODa
@ anbIODa
Definition: GalFBits.hpp:381
gnsstk::galinav::wt1
@ wt1
Array index of word type 1 in ephAcc.
Definition: GalIBits.hpp:64
gnsstk::galfnav::asbEcc_3
@ asbEcc_3
Definition: GalFBits.hpp:504
gnsstk::GalINavAlm::xmit2
CommonTime xmit2
Definition: GalINavAlm.hpp:106
gnsstk::galfnav::asiOMEGA0_3
@ asiOMEGA0_3
Definition: GalFBits.hpp:512
gnsstk::galfnav::escSVID
@ escSVID
Definition: GalFBits.hpp:86
gnsstk::galfnav::asiWNa
@ asiWNa
Definition: GalFBits.hpp:384
gnsstk::GalINavEph::bgdE5aE1
double bgdE5aE1
Group delay in seconds between E5a and E1.
Definition: GalINavEph.hpp:85
gnsstk::OrbitDataKepler::ecc
double ecc
Eccentricity.
Definition: OrbitDataKepler.hpp:185
gnsstk::galinav::isbai0
@ isbai0
Definition: GalIBits.hpp:209
gnsstk::galfnav::anbdAhalf
@ anbdAhalf
Definition: GalFBits.hpp:405
gnsstk::galfnav::asbdi_1
@ asbdi_1
Definition: GalFBits.hpp:419
gnsstk::galinav::isbBGDa
@ isbBGDa
Definition: GalIBits.hpp:249
gnsstk::galfnav::asbOMEGAdot_1
@ asbOMEGAdot_1
Definition: GalFBits.hpp:429
gnsstk::galfnav::asiaf1_3
@ asiaf1_3
Definition: GalFBits.hpp:524
gnsstk::bds::anbEcc
@ anbEcc
Definition: BDSD1Bits.hpp:131
gnsstk::galfnav::esiw
@ esiw
w subframe index
Definition: GalFBits.hpp:244
gnsstk::bds::enbCus
@ enbCus
Definition: BDSD1Bits.hpp:428
gnsstk::galinav
Definition: GalIBits.hpp:45
gnsstk::NavSatelliteID
Definition: NavSatelliteID.hpp:57
gnsstk::galfnav::asbOMEGAdot_3
@ asbOMEGAdot_3
Definition: GalFBits.hpp:516
gnsstk::galinav::anbE1Bhs
@ anbE1Bhs
Definition: GalIBits.hpp:419
gnsstk::bds::escw
@ escw
Definition: BDSD1Bits.hpp:579
gnsstk::bds::escCic
@ escCic
Definition: BDSD1Bits.hpp:509
gnsstk::galfnav::enbAhalf
@ enbAhalf
Ahalf number of bits.
Definition: GalFBits.hpp:209
gnsstk::galinav::ascA0G
@ ascA0G
Definition: GalIBits.hpp:501
gnsstk::bds::esbdn
@ esbdn
Definition: BDSD2Bits.hpp:872
gnsstk::OrbitDataKepler::OMEGAdot
double OMEGAdot
Rate of Rt ascension (rad/sec)
Definition: OrbitDataKepler.hpp:192
gnsstk::Exception::what
std::string what() const
Dump to a string.
Definition: Exception.cpp:193
gnsstk::galfnav::esiSVID
@ esiSVID
Definition: GalFBits.hpp:83
gnsstk::GalINavHealth::sigHealthStatus
GalHealthStatus sigHealthStatus
Signal health status (SHS)
Definition: GalINavHealth.hpp:93
gnsstk::galfnav::asiEcc_1
@ asiEcc_1
Definition: GalFBits.hpp:408
gnsstk::StdNavTimeOffset::tgt
TimeSystem tgt
Target time system.
Definition: StdNavTimeOffset.hpp:121
gnsstk::galfnav::asiaf1_1
@ asiaf1_1
Definition: GalFBits.hpp:443
gnsstk::galinav::asbE1Bhs_3
@ asbE1Bhs_3
Definition: GalIBits.hpp:496
gnsstk::galfnav::esbAhalf
@ esbAhalf
Ahalf start bit.
Definition: GalFBits.hpp:208
gnsstk::galfnav::asbdAhalf_3
@ asbdAhalf_3
Definition: GalFBits.hpp:501
gnsstk::SatID
Definition: SatID.hpp:89
gnsstk::NavDataPtrList
std::list< NavDataPtr > NavDataPtrList
Definition: NavData.hpp:75
gnsstk::galfnav::asiSVID_1
@ asiSVID_1
Definition: GalFBits.hpp:398
gnsstk::gpscnav2::asbaf0
@ asbaf0
af0 start bit
Definition: GPSC2Bits.hpp:369
gnsstk::galinav::isbIDFR5
@ isbIDFR5
Definition: GalIBits.hpp:244
gnsstk::galinav::inbE5bhs
@ inbE5bhs
Definition: GalIBits.hpp:260
gnsstk::galinav::isiE1Bdvs
@ isiE1Bdvs
Definition: GalIBits.hpp:273
gnsstk::galfnav::ascaf1
@ ascaf1
Definition: GalFBits.hpp:446
gnsstk::OrbitDataKepler::Cuc
double Cuc
Cosine latitude (rad)
Definition: OrbitDataKepler.hpp:175
gnsstk::galinav::inbE1Bhs
@ inbE1Bhs
Definition: GalIBits.hpp:265
gnsstk::galfnav::asbM0_1
@ asbM0_1
Definition: GalFBits.hpp:434
gnsstk::galinav::ascE5bhs
@ ascE5bhs
Definition: GalIBits.hpp:415
gnsstk::galinav::asiA1G
@ asiA1G
Definition: GalIBits.hpp:503
gnsstk::galfnav::asiSVID_3
@ asiSVID_3
Definition: GalFBits.hpp:497
gnsstk::ObsID::band
CarrierBand band
Definition: ObsID.hpp:200
gnsstk::galfnav::asbM0_3
@ asbM0_3
Definition: GalFBits.hpp:519
gnsstk::galfnav::esct0c
@ esct0c
t0c scale factor
Definition: GalFBits.hpp:98
gnsstk::galfnav::esbt0e
@ esbt0e
t0e start bit
Definition: GalFBits.hpp:275
gnsstk::GalINavEph::fixFit
void fixFit()
Definition: GalINavEph.cpp:111
gnsstk::StdNavTimeOffset::deltatLS
double deltatLS
Current or past leap second count (UTC only).
Definition: StdNavTimeOffset.hpp:125
gnsstk::galfnav::anbOMEGA0
@ anbOMEGA0
Definition: GalFBits.hpp:425
gnsstk::GALWeekSecond
Definition: GALWeekSecond.hpp:56
gnsstk::galinav::cnbTOW
@ cnbTOW
Definition: GalIBits.hpp:330
gnsstk::OrbitDataKepler::w
double w
Argument of perigee (rad)
Definition: OrbitDataKepler.hpp:191
gnsstk::StdNavTimeOffset::wnot
unsigned wnot
Time data reference week number (storage only).
Definition: StdNavTimeOffset.hpp:129
gnsstk::galfnav::escaf2
@ escaf2
af2 scale factor
Definition: GalFBits.hpp:113
gnsstk::galinav::csctot
@ csctot
Definition: GalIBits.hpp:311
gnsstk::galfnav::enbw
@ enbw
w number of bits
Definition: GalFBits.hpp:246
gnsstk::OrbitDataKepler::Toe
CommonTime Toe
Orbit epoch.
Definition: OrbitDataKepler.hpp:171
gnsstk::OrbitDataKepler::Crs
double Crs
Sine radius (m)
Definition: OrbitDataKepler.hpp:178
gnsstk::GalINavEph::dvsE5b
GalDataValid dvsE5b
Data validity status for E5b.
Definition: GalINavEph.hpp:99
gnsstk::galfnav::escSISA
@ escSISA
Definition: GalFBits.hpp:118
gnsstk::galfnav::esiOMEGA0
@ esiOMEGA0
OMEGA0 subframe index.
Definition: GalFBits.hpp:212
gnsstk::galinav::wt9
@ wt9
Array index of word type 9 in almAcc.
Definition: GalIBits.hpp:71
gnsstk::NavData::signal
NavMessageID signal
Source signal identification for this navigation message data.
Definition: NavData.hpp:175
gnsstk::bds::esci0
@ esci0
Definition: BDSD1Bits.hpp:495
gnsstk::galinav::cnbA0
@ cnbA0
Definition: GalIBits.hpp:298
gnsstk::galinav::asbE1Bhs_2
@ asbE1Bhs_2
Definition: GalIBits.hpp:458
gnsstk::galinav::isbWN
@ isbWN
Definition: GalIBits.hpp:279
gnsstk::StdNavTimeOffset::wnLSF
unsigned wnLSF
Leap second reference week number (UTC only).
Definition: StdNavTimeOffset.hpp:133
gnsstk::galinav::iscWN
@ iscWN
Definition: GalIBits.hpp:281
gnsstk::galinav::numAlmWTs
@ numAlmWTs
Number of almanac word types (array size).
Definition: GalIBits.hpp:74
gnsstk::galinav::isbIDFR1
@ isbIDFR1
Definition: GalIBits.hpp:224
gnsstk::bds::esbCus
@ esbCus
Definition: BDSD1Bits.hpp:427
gnsstk::NeQuickIonoNavData::idf
bool idf[5]
Ionospheric disturbance flag for regions 1-5 (0-4).
Definition: NeQuickIonoNavData.hpp:132
gnsstk
For Sinex::InputHistory.
Definition: BasicFramework.cpp:50
gnsstk::galinav::numEphWTs
@ numEphWTs
Number of ephemeris word types (array size).
Definition: GalIBits.hpp:73
gnsstk::StdNavTimeOffset::a1
double a1
Drift coefficient of source time scale.
Definition: StdNavTimeOffset.hpp:123
gnsstk::galfnav::asbIODa
@ asbIODa
IODa.
Definition: GalFBits.hpp:380
gnsstk::InterSigCorr::isc
double isc
Definition: InterSigCorr.hpp:171
gnsstk::galinav::ascE1Bhs
@ ascE1Bhs
Definition: GalIBits.hpp:420
gnsstk::galinav::asiE1Bhs_3
@ asiE1Bhs_3
Definition: GalIBits.hpp:495
gnsstk::galfnav::asiw_2
@ asiw_2
Definition: GalFBits.hpp:464
gnsstk::GalINavHealth::dataValidityStatus
GalDataValid dataValidityStatus
Data Validity Status (DVS)
Definition: GalINavHealth.hpp:95
gnsstk::GalINavAlm::deltai
double deltai
Inclination in rad relative to 0.3*pi rad.
Definition: GalINavAlm.hpp:108
gnsstk::GalINavEph::iodnav3
uint16_t iodnav3
IODnav for word type 3.
Definition: GalINavEph.hpp:95
gnsstk::galinav::asbA0G
@ asbA0G
Definition: GalIBits.hpp:499
gnsstk::galinav::isbE1Bhs
@ isbE1Bhs
Definition: GalIBits.hpp:264
gnsstk::galfnav::escaf0
@ escaf0
af0 scale factor
Definition: GalFBits.hpp:103
gnsstk::galinav::escIOD
@ escIOD
Definition: GalIBits.hpp:87
gnsstk::OrbitDataKepler::xmitTime
CommonTime xmitTime
Time of transmission of the start of the data.
Definition: OrbitDataKepler.hpp:170
gnsstk::gpscnav2::asbw
@ asbw
w start bit
Definition: GPSC2Bits.hpp:361
gnsstk::NavData::timeStamp
CommonTime timeStamp
Definition: NavData.hpp:173
gnsstk::galfnav::esiCrc
@ esiCrc
Crc subframe index.
Definition: GalFBits.hpp:264
gnsstk::NeQuickIonoNavData::ai
double ai[3]
Definition: NeQuickIonoNavData.hpp:125
gnsstk::bds::enbCrs
@ enbCrs
Definition: BDSD2Bits.hpp:1056
gnsstk::galfnav::anbdi
@ anbdi
Definition: GalFBits.hpp:420
gnsstk::StdNavTimeOffset::dn
unsigned dn
Leap second reference day number (UTC only).
Definition: StdNavTimeOffset.hpp:134
gnsstk::galinav::csbTOW
@ csbTOW
Definition: GalIBits.hpp:329
gnsstk::galfnav::fscType
@ fscType
page type scale factor
Definition: GalFBits.hpp:54
gnsstk::galfnav::asbOMEGA0_1
@ asbOMEGA0_1
Definition: GalFBits.hpp:424
gnsstk::OrbitDataKepler::M0
double M0
Mean anomaly (rad)
Definition: OrbitDataKepler.hpp:182
gnsstk::Exception
Definition: Exception.hpp:151
gnsstk::GalINavEph
Class containing data elements unique to GPS LNav ephemerides.
Definition: GalINavEph.hpp:52
gnsstk::galinav::asbE5bhs_3
@ asbE5bhs_3
Definition: GalIBits.hpp:493
gnsstk::galfnav::asbdAhalf_1
@ asbdAhalf_1
Definition: GalFBits.hpp:404
gnsstk::galinav::ascA1G
@ ascA1G
Definition: GalIBits.hpp:506
gnsstk::bds::cnbWNlsf
@ cnbWNlsf
Definition: BDSD1Bits.hpp:1022
gnsstk::galfnav::anbWNa
@ anbWNa
Definition: GalFBits.hpp:386
gnsstk::galfnav::asbaf1_1
@ asbaf1_1
Definition: GalFBits.hpp:444
gnsstk::galfnav::esiAhalf
@ esiAhalf
Ahalf subframe index.
Definition: GalFBits.hpp:207
gnsstk::galfnav::asiOMEGAdot_3
@ asiOMEGAdot_3
Definition: GalFBits.hpp:515
gnsstk::bds::cnbDN
@ cnbDN
Definition: BDSD1Bits.hpp:1040
gnsstk::galinav::inbE5bdvs
@ inbE5bdvs
Definition: GalIBits.hpp:270
gnsstk::NavSignalID::obs
ObsID obs
Carrier, tracking code, etc.
Definition: NavSignalID.hpp:95
GalINavISC.hpp
gnsstk::galinav::isbIDFR4
@ isbIDFR4
Definition: GalIBits.hpp:239
gnsstk::bds::ascM0
@ ascM0
Definition: BDSD1Bits.hpp:173
gnsstk::bds::csbdtLSF
@ csbdtLSF
dtLSF
Definition: BDSD1Bits.hpp:1017
gnsstk::GalINavEph::iodnav4
uint16_t iodnav4
IODnav for word type 4.
Definition: GalINavEph.hpp:96
gnsstk::galinav::csbdtLS
@ csbdtLS
Definition: GalIBits.hpp:305
gnsstk::galfnav::esct0e
@ esct0e
t0e scale factor
Definition: GalFBits.hpp:277
gnsstk::galfnav::esiaf1
@ esiaf1
af1 subframe index
Definition: GalFBits.hpp:105
gnsstk::galfnav::asbEcc_2
@ asbEcc_2
Definition: GalFBits.hpp:462
gnsstk::galfnav::enbaf2
@ enbaf2
af2 number of bits
Definition: GalFBits.hpp:112
gnsstk::galinav::isiE5bdvs
@ isiE5bdvs
Definition: GalIBits.hpp:268
gnsstk::bds::enbCis
@ enbCis
Definition: BDSD2Bits.hpp:994
gnsstk::galinav::isbBGDb
@ isbBGDb
Definition: GalIBits.hpp:254
gnsstk::GalINavIono
Class containing data elements unique to Galileo I/NAV iono data.
Definition: GalINavIono.hpp:50
gnsstk::galinav::asbE1Bhs_1
@ asbE1Bhs_1
Definition: GalIBits.hpp:418
gnsstk::galfnav::asiOMEGA0_1
@ asiOMEGA0_1
Definition: GalFBits.hpp:423
gnsstk::bds::esiCrs
@ esiCrs
Definition: BDSD2Bits.hpp:1054
gnsstk::galfnav::anbM0
@ anbM0
Definition: GalFBits.hpp:435
gnsstk::galfnav::asbdi_3
@ asbdi_3
Definition: GalFBits.hpp:510
gnsstk::galfnav::enbCrc
@ enbCrc
Crc number of bits.
Definition: GalFBits.hpp:266
gnsstk::galfnav::asbaf0_1
@ asbaf0_1
Definition: GalFBits.hpp:439
gnsstk::galinav::cscA1
@ cscA1
Definition: GalIBits.hpp:303
gnsstk::OrbitDataKepler::Cus
double Cus
Sine latitude (rad)
Definition: OrbitDataKepler.hpp:176
gnsstk::galfnav::fnbType
@ fnbType
page type number of bits
Definition: GalFBits.hpp:53
gnsstk::galinav::isiE5bhs
@ isiE5bhs
Definition: GalIBits.hpp:258
gnsstk::bds::escOMEGA0
@ escOMEGA0
Definition: BDSD1Bits.hpp:565
gnsstk::galfnav::esbi0
@ esbi0
i0 start bit
Definition: GalFBits.hpp:240
gnsstk::galfnav::anbSVID
@ anbSVID
Definition: GalFBits.hpp:400
gnsstk::galinav::iscE1Bdvs
@ iscE1Bdvs
Definition: GalIBits.hpp:276
gnsstk::gpscnav2::asbM0
@ asbM0
M0 start bit.
Definition: GPSC2Bits.hpp:365
gnsstk::galinav::asiWNa_B
@ asiWNa_B
Definition: GalIBits.hpp:347
gnsstk::galinav::isbE5bdvs
@ isbE5bdvs
Definition: GalIBits.hpp:269
gnsstk::galfnav::asiaf1_2
@ asiaf1_2
Definition: GalFBits.hpp:489
gnsstk::bds::esbCis
@ esbCis
Definition: BDSD2Bits.hpp:993
gnsstk::galfnav::enbSISA
@ enbSISA
Definition: GalFBits.hpp:117
gnsstk::galinav::cnbdtLS
@ cnbdtLS
Definition: GalIBits.hpp:306
GalINavIono.hpp
gnsstk::galinav::isbIDFR3
@ isbIDFR3
Definition: GalIBits.hpp:234
gnsstk::bds::escOMEGAdot
@ escOMEGAdot
Definition: BDSD1Bits.hpp:523
gnsstk::GalINavEph::hsE5b
GalHealthStatus hsE5b
Health status for E5b.
Definition: GalINavEph.hpp:97
gnsstk::OrbitDataKepler::Ahalf
double Ahalf
Square Root of semi-major axis (m**.5)
Definition: OrbitDataKepler.hpp:187
gnsstk::galinav::cscTOW
@ cscTOW
Definition: GalIBits.hpp:331
gnsstk::galfnav::asbOMEGA0_3
@ asbOMEGA0_3
Definition: GalFBits.hpp:513
gnsstk::gpscnav2::asbdi
@ asbdi
delta i start bit
Definition: GPSC2Bits.hpp:345
gnsstk::galinav::isbai2
@ isbai2
Definition: GalIBits.hpp:219
gnsstk::galfnav::asidi_2
@ asidi_2
Definition: GalFBits.hpp:467
gnsstk::galfnav::esbaf2
@ esbaf2
af2 start bit
Definition: GalFBits.hpp:111
gnsstk::bds::cscdtLSF
@ cscdtLSF
Definition: BDSD1Bits.hpp:1019
gnsstk::GalINavISC::bgdE1E5a
double bgdE1E5a
Broadcast group delay for the E1,E5a pair.
Definition: GalINavISC.hpp:99
gnsstk::bds::cscdtLS
@ cscdtLS
Definition: BDSD1Bits.hpp:1012
PNBGalINavDataFactory.hpp
gnsstk::GalINavEph::iodnav2
uint16_t iodnav2
IODnav for word type 2.
Definition: GalINavEph.hpp:94
gnsstk::bds::escidot
@ escidot
Definition: BDSD1Bits.hpp:551
gnsstk::WeekSecond::sow
double sow
Definition: WeekSecond.hpp:155
gnsstk::OrbitDataKepler::Toc
CommonTime Toc
Clock epoch.
Definition: OrbitDataKepler.hpp:172
gnsstk::GalINavAlm::t0a
double t0a
Convenience storage of unqualified t0a.
Definition: GalINavAlm.hpp:110
gnsstk::galinav::isbTOW
@ isbTOW
Definition: GalIBits.hpp:284
gnsstk::galinav::csbWNot
@ csbWNot
Definition: GalIBits.hpp:313
gnsstk::GalINavISC::bgdE1E5b
double bgdE1E5b
Broadcast group delay for the E1,E5b pair.
Definition: GalINavISC.hpp:100
gnsstk::timeAdjust8BitWeekRollover
long timeAdjust8BitWeekRollover(long toCorrectWeek, long &refWeek)
Definition: TimeCorrection.cpp:77
gnsstk::GalINavAlm::hsE5b
GalHealthStatus hsE5b
Health status for E5b.
Definition: GalINavAlm.hpp:113
gnsstk::GALWeekSecond::weekRolloverAdj
GALWeekSecond & weekRolloverAdj(const GALWeekSecond &refTime)
Definition: GALWeekSecond.hpp:210
gnsstk::GalINavAlm
Class containing data elements unique to Galileo I/NAV almanacs.
Definition: GalINavAlm.hpp:52
gnsstk::galinav::asiE1Bhs_1
@ asiE1Bhs_1
Definition: GalIBits.hpp:417
gnsstk::galinav::isiBGDb
@ isiBGDb
Definition: GalIBits.hpp:253
gnsstk::ObsID::code
TrackingCode code
Definition: ObsID.hpp:201
gnsstk::GalINavEph::xmit5
CommonTime xmit5
Transmit time for word type 5.
Definition: GalINavEph.hpp:92
gnsstk::CarrierBand::L1
@ L1
GPS L1, Galileo E1, SBAS L1, QZSS L1, BeiDou L1.
gnsstk::galinav::inbBGDb
@ inbBGDb
Definition: GalIBits.hpp:255
gnsstk::galinav::wt2
@ wt2
Array index of word type 2 in ephAcc.
Definition: GalIBits.hpp:65
gnsstk::galfnav::asiM0_3
@ asiM0_3
Definition: GalFBits.hpp:518
gnsstk::galinav::asit0a_B
@ asit0a_B
Definition: GalIBits.hpp:353
gnsstk::galfnav::asct0a
@ asct0a
Definition: GalFBits.hpp:392
gnsstk::Week::week
int week
Full week number.
Definition: Week.hpp:267
gnsstk::galfnav::fsbType
@ fsbType
page type start bit
Definition: GalFBits.hpp:52
gnsstk::galfnav::asbw_2
@ asbw_2
Definition: GalFBits.hpp:465
gnsstk::galfnav::asbSVID_1
@ asbSVID_1
Definition: GalFBits.hpp:399
gnsstk::GalINavEph::hsE1B
GalHealthStatus hsE1B
Health status for E1B.
Definition: GalINavEph.hpp:98
gnsstk::gpscnav2::asbaf1
@ asbaf1
af1 start bit
Definition: GPSC2Bits.hpp:373
gnsstk::galinav::wt8
@ wt8
Array index of word type 8 in almAcc.
Definition: GalIBits.hpp:70
gnsstk::galinav::anbt0G
@ anbt0G
Definition: GalIBits.hpp:510
gnsstk::galinav::iscE1Bhs
@ iscE1Bhs
Definition: GalIBits.hpp:266
gnsstk::galinav::asit0G
@ asit0G
Definition: GalIBits.hpp:508
gnsstk::galinav::inbTOW
@ inbTOW
Definition: GalIBits.hpp:285
gnsstk::galinav::asct0G
@ asct0G
Definition: GalIBits.hpp:511
gnsstk::galfnav::esbOMEGAdot
@ esbOMEGAdot
OMEGAdot start bit.
Definition: GalFBits.hpp:198
gnsstk::galfnav::ascaf0
@ ascaf0
Definition: GalFBits.hpp:441
gnsstk::bds::ascOMEGA0
@ ascOMEGA0
Definition: BDSD1Bits.hpp:121
gnsstk::GalINavHealth
Definition: GalINavHealth.hpp:53
gnsstk::galfnav::asidAhalf_2
@ asidAhalf_2
Definition: GalFBits.hpp:458
gnsstk::galinav::wt3
@ wt3
Array index of word type 3 in ephAcc.
Definition: GalIBits.hpp:66
gnsstk::galinav::inbai0
@ inbai0
Definition: GalIBits.hpp:210
gnsstk::OrbitDataKepler::i0
double i0
Inclination (rad)
Definition: OrbitDataKepler.hpp:190
gnsstk::galfnav::asidAhalf_3
@ asidAhalf_3
Definition: GalFBits.hpp:500
gnsstk::galfnav::esbM0
@ esbM0
M0 start bit.
Definition: GalFBits.hpp:193
GalINavTimeOffset.hpp
gnsstk::bds::asbEcc
@ asbEcc
Eccentricity.
Definition: BDSD1Bits.hpp:130
gnsstk::GalINavTimeOffset
Definition: GalINavTimeOffset.hpp:53
gnsstk::GalINavEph::iodnav1
uint16_t iodnav1
IODnav for word type 1.
Definition: GalINavEph.hpp:93
gnsstk::galinav::isbIDFR2
@ isbIDFR2
Definition: GalIBits.hpp:229
gnsstk::galinav::iscai0
@ iscai0
Definition: GalIBits.hpp:211
gnsstk::galinav::isbai1
@ isbai1
Definition: GalIBits.hpp:214
gnsstk::OrbitDataKepler::Cic
double Cic
Cosine inclination (rad)
Definition: OrbitDataKepler.hpp:179
gnsstk::bds::ascOMEGAdot
@ ascOMEGAdot
Definition: BDSD1Bits.hpp:151
gnsstk::galinav::iscai2
@ iscai2
Definition: GalIBits.hpp:221
gnsstk::galfnav::enbi0
@ enbi0
i0 number of bits
Definition: GalFBits.hpp:241
gnsstk::gpscnav2::asbOMEGA0
@ asbOMEGA0
OMEGA0 MSBs start bit.
Definition: GPSC2Bits.hpp:357
gnsstk::galinav::anbWN0G
@ anbWN0G
Definition: GalIBits.hpp:515
gnsstk::OrbitDataKepler::Crc
double Crc
Cosine radius (m)
Definition: OrbitDataKepler.hpp:177
gnsstk::galinav::cscWNot
@ cscWNot
Definition: GalIBits.hpp:315
gnsstk::galinav::csbtot
@ csbtot
Definition: GalIBits.hpp:309
gnsstk::galfnav::esiaf2
@ esiaf2
af2 subframe index
Definition: GalFBits.hpp:110
gnsstk::galfnav::ascdAhalf
@ ascdAhalf
Definition: GalFBits.hpp:406
gnsstk::galinav::isbE1Bdvs
@ isbE1Bdvs
Definition: GalIBits.hpp:274
gnsstk::galfnav::esbSVID
@ esbSVID
Definition: GalFBits.hpp:84
gnsstk::galfnav::enbOMEGA0
@ enbOMEGA0
OMEGA0 number of bits.
Definition: GalFBits.hpp:214
gnsstk::galfnav::asiEcc_2
@ asiEcc_2
Definition: GalFBits.hpp:461
gnsstk::bds::csbWNlsf
@ csbWNlsf
WNlsf.
Definition: BDSD1Bits.hpp:1021
gnsstk::GalINavEph::bgdE5bE1
double bgdE5bE1
Group delay in seconds between E5b and E1.
Definition: GalINavEph.hpp:86
gnsstk::galfnav::esiCuc
@ esiCuc
Cuc subframe index.
Definition: GalFBits.hpp:254
gnsstk::galfnav::asiEcc_3
@ asiEcc_3
Definition: GalFBits.hpp:503
gnsstk::bds::escEcc
@ escEcc
Definition: BDSD1Bits.hpp:410
gnsstk::galinav::wt7
@ wt7
Array index of word type 7 in almAcc.
Definition: GalIBits.hpp:69
gnsstk::bds::esiCis
@ esiCis
Definition: BDSD2Bits.hpp:992
gnsstk::galfnav::asiM0_1
@ asiM0_1
Definition: GalFBits.hpp:433
GalINavEph.hpp
gnsstk::galfnav::esiCic
@ esiCic
Cic subframe index.
Definition: GalFBits.hpp:296
gnsstk::galinav::asiA0G
@ asiA0G
Definition: GalIBits.hpp:498
gnsstk::bds::cnbdtLSF
@ cnbdtLSF
Definition: BDSD1Bits.hpp:1018
std
Definition: Angle.hpp:142
gnsstk::galfnav::asbM0_2
@ asbM0_2
Definition: GalFBits.hpp:484
gnsstk::galinav::anbA0G
@ anbA0G
Definition: GalIBits.hpp:500
gnsstk::OrbitDataKepler::af0
double af0
SV clock error (sec)
Definition: OrbitDataKepler.hpp:195
gnsstk::galinav::wt4
@ wt4
Array index of word type 4 in ephAcc.
Definition: GalIBits.hpp:67
gnsstk::galinav::asiE5bhs_2
@ asiE5bhs_2
Definition: GalIBits.hpp:454
gnsstk::galfnav::esbSISA
@ esbSISA
Definition: GalFBits.hpp:116
gnsstk::bds::cscWNlsf
@ cscWNlsf
Definition: BDSD1Bits.hpp:1023
gnsstk::galfnav::asbEcc_1
@ asbEcc_1
Definition: GalFBits.hpp:409
gnsstk::galinav::asiWN0G
@ asiWN0G
Definition: GalIBits.hpp:513
gnsstk::galfnav::esit0e
@ esit0e
t0e subframe index
Definition: GalFBits.hpp:274
gnsstk::galinav::cnbtot
@ cnbtot
Definition: GalIBits.hpp:310
gnsstk::galfnav::asidi_1
@ asidi_1
Definition: GalFBits.hpp:418
gnsstk::galfnav::asiw_1
@ asiw_1
Definition: GalFBits.hpp:413
gnsstk::galfnav::esiSISA
@ esiSISA
Definition: GalFBits.hpp:115
gnsstk::GalINavAlm::fixHealth
void fixHealth()
Definition: GalINavAlm.cpp:97
gnsstk::galinav::isiTOW
@ isiTOW
Definition: GalIBits.hpp:283
gnsstk::bds::csbDN
@ csbDN
DN.
Definition: BDSD1Bits.hpp:1039
gnsstk::galfnav::asbOMEGAdot_2
@ asbOMEGAdot_2
Definition: GalFBits.hpp:481
gnsstk::GalINavAlm::dAhalf
double dAhalf
delta sqrt(A)
Definition: GalINavAlm.hpp:107
gnsstk::galfnav::esiaf0
@ esiaf0
af0 subframe index
Definition: GalFBits.hpp:100
gnsstk::bds::ascdi
@ ascdi
Definition: BDSD1Bits.hpp:136
gnsstk::galinav::asbA1G
@ asbA1G
Definition: GalIBits.hpp:504
gnsstk::galinav::cscA0
@ cscA0
Definition: GalIBits.hpp:299
gnsstk::galinav::isiE1Bhs
@ isiE1Bhs
Definition: GalIBits.hpp:263
gnsstk::galinav::inbE1Bdvs
@ inbE1Bdvs
Definition: GalIBits.hpp:275
gnsstk::gpscnav2::asbOMEGAdot
@ asbOMEGAdot
OMEGAdot start bit.
Definition: GPSC2Bits.hpp:349
gnsstk::galinav::iscBGDa
@ iscBGDa
Definition: GalIBits.hpp:251
gnsstk::galinav::asbE5bhs_1
@ asbE5bhs_1
Definition: GalIBits.hpp:413
gnsstk::galfnav::asbw_1
@ asbw_1
Definition: GalFBits.hpp:414
gnsstk::GalINavEph::sisaIndex
uint8_t sisaIndex
Signal in space accuracy index (OS-SIS-ICD tbl 76)
Definition: GalINavEph.hpp:87
gnsstk::galinav::iscBGDb
@ iscBGDb
Definition: GalIBits.hpp:256
gnsstk::galfnav::esbaf0
@ esbaf0
af0 start bit
Definition: GalFBits.hpp:101
gnsstk::galfnav::enbt0c
@ enbt0c
t0c number of bits
Definition: GalFBits.hpp:97
gnsstk::bds::escdn
@ escdn
Definition: BDSD1Bits.hpp:368
gnsstk::galinav::asiOMEGA0_2
@ asiOMEGA0_2
Definition: GalIBits.hpp:439
gnsstk::galfnav::enbCic
@ enbCic
Cic number of bits.
Definition: GalFBits.hpp:298
gnsstk::galfnav::asbWNa
@ asbWNa
Definition: GalFBits.hpp:385
gnsstk::galfnav::asidi_3
@ asidi_3
Definition: GalFBits.hpp:509
gnsstk::galfnav::asidAhalf_1
@ asidAhalf_1
Definition: GalFBits.hpp:403
gnsstk::galinav::isiBGDa
@ isiBGDa
Definition: GalIBits.hpp:248
gnsstk::galfnav::enbM0
@ enbM0
M0 number of bits.
Definition: GalFBits.hpp:194
gnsstk::GalHealthStatus
GalHealthStatus
Identify different types of SV health states.
Definition: GalHealthStatus.hpp:51
gnsstk::bds::escCrc
@ escCrc
Definition: BDSD1Bits.hpp:434
gnsstk::galfnav::enbaf1
@ enbaf1
af1 number of bits
Definition: GalFBits.hpp:107
gnsstk::galfnav::asbdi_2
@ asbdi_2
Definition: GalFBits.hpp:468
gnsstk::GalINavEph::xmit4
CommonTime xmit4
Transmit time for word type 4.
Definition: GalINavEph.hpp:91
gnsstk::StdNavTimeOffset::a0
double a0
Bias coefficient of source time scale.
Definition: StdNavTimeOffset.hpp:122
gnsstk::galfnav::asiaf0_3
@ asiaf0_3
Definition: GalFBits.hpp:521
gnsstk::GalINavEph::xmit2
CommonTime xmit2
Transmit time for word type 2.
Definition: GalINavEph.hpp:89
gnsstk::GalINavTimeOffset::tow
double tow
TOW field from word type 6.
Definition: GalINavTimeOffset.hpp:68
gnsstk::galfnav::asit0a
@ asit0a
Definition: GalFBits.hpp:389
gnsstk::GalINavEph::svid
uint8_t svid
SVID field from page type 1 (or PRN if not avail)
Definition: GalINavEph.hpp:88
gnsstk::galfnav::asiOMEGAdot_2
@ asiOMEGAdot_2
Definition: GalFBits.hpp:480
gnsstk::galfnav::ascWNa
@ ascWNa
Definition: GalFBits.hpp:387
gnsstk::galfnav::esbCrc
@ esbCrc
Crc start bit.
Definition: GalFBits.hpp:265
gnsstk::galfnav::esbCic
@ esbCic
Cic start bit.
Definition: GalFBits.hpp:297
gnsstk::galinav::asiE5bhs_3
@ asiE5bhs_3
Definition: GalIBits.hpp:492
gnsstk::galfnav::anbt0a
@ anbt0a
Definition: GalFBits.hpp:391
gnsstk::galfnav::enbt0e
@ enbt0e
t0e number of bits
Definition: GalFBits.hpp:276
gnsstk::galfnav::asbaf0_2
@ asbaf0_2
Definition: GalFBits.hpp:487
gnsstk::galinav::iscE5bhs
@ iscE5bhs
Definition: GalIBits.hpp:261
gnsstk::GalINavAlm::hsE1B
GalHealthStatus hsE1B
Health status for E1B.
Definition: GalINavAlm.hpp:114
gnsstk::galinav::inbai1
@ inbai1
Definition: GalIBits.hpp:215
gnsstk::bds::esidn
@ esidn
Definition: BDSD2Bits.hpp:871
gnsstk::galinav::wt5
@ wt5
Array index of word type 5 in ephAcc.
Definition: GalIBits.hpp:68
gnsstk::OrbitDataKepler::health
SVHealth health
SV health status.
Definition: OrbitDataKepler.hpp:173
gnsstk::GalINavEph::xmit3
CommonTime xmit3
Transmit time for word type 3.
Definition: GalINavEph.hpp:90
gnsstk::GalINavEph::dvsE1B
GalDataValid dvsE1B
Data validity status for E1B.
Definition: GalINavEph.hpp:100
gnsstk::galfnav::asbdAhalf_2
@ asbdAhalf_2
Definition: GalFBits.hpp:459
gnsstk::galfnav::asbt0a
@ asbt0a
Definition: GalFBits.hpp:390
gnsstk::galfnav::enbOMEGAdot
@ enbOMEGAdot
OMEGAdot number of bits.
Definition: GalFBits.hpp:199
gnsstk::galfnav::asbaf0_3
@ asbaf0_3
Definition: GalFBits.hpp:522
gnsstk::galfnav::asiOMEGAdot_1
@ asiOMEGAdot_1
Definition: GalFBits.hpp:428
gnsstk::galfnav::asiM0_2
@ asiM0_2
Definition: GalFBits.hpp:483
gnsstk::GalINavAlm::wna
unsigned wna
Reference week for t0a.
Definition: GalINavAlm.hpp:109
gnsstk::OrbitDataKepler::OMEGA0
double OMEGA0
Longitude of ascending node at weekly epoch (rad)
Definition: OrbitDataKepler.hpp:189
gnsstk::galfnav::esbOMEGA0
@ esbOMEGA0
OMEGA0 start bit.
Definition: GalFBits.hpp:213
gnsstk::galfnav::asbaf1_2
@ asbaf1_2
Definition: GalFBits.hpp:490
gnsstk::GalINavISC
Definition: GalINavISC.hpp:51
gnsstk::galfnav::esit0c
@ esit0c
t0c subframe index
Definition: GalFBits.hpp:95
gnsstk::StdNavTimeOffset::effTime
CommonTime effTime
Effectivity time (wnLSF,dn).
Definition: StdNavTimeOffset.hpp:127
gnsstk::galinav::isiWN
@ isiWN
Definition: GalIBits.hpp:278
gnsstk::galfnav::esii0
@ esii0
i0 subframe index
Definition: GalFBits.hpp:239
gnsstk::galfnav::escaf1
@ escaf1
af1 scale factor
Definition: GalFBits.hpp:108
gnsstk::galfnav::anbaf1
@ anbaf1
Definition: GalFBits.hpp:445
gnsstk::galinav::esbIOD
@ esbIOD
IODnav.
Definition: GalIBits.hpp:85
gnsstk::galinav::inbWN
@ inbWN
Definition: GalIBits.hpp:280
gnsstk::galfnav::esbCuc
@ esbCuc
Cuc start bit.
Definition: GalFBits.hpp:255
gnsstk::GalINavAlm::fixFit
void fixFit()
Fill the beginFit and endFit values for this object.
Definition: GalINavAlm.cpp:87
gnsstk::StdNavTimeOffset::refTime
CommonTime refTime
Reference time for computation.
Definition: StdNavTimeOffset.hpp:126
TimeCorrection.hpp
gnsstk::bds::escCrs
@ escCrs
Definition: BDSD1Bits.hpp:448
GALWeekSecond.hpp
gnsstk::OrbitDataKepler::af1
double af1
SV clock drift (sec/sec)
Definition: OrbitDataKepler.hpp:196
gnsstk::bds::enbdn
@ enbdn
Definition: BDSD2Bits.hpp:873
gnsstk::galfnav::ascSVID
@ ascSVID
Definition: GalFBits.hpp:401
gnsstk::bds::escCis
@ escCis
Definition: BDSD1Bits.hpp:537
TimeString.hpp
gnsstk::galfnav::enbSVID
@ enbSVID
Definition: GalFBits.hpp:85
gnsstk::galfnav::esbt0c
@ esbt0c
t0c start bit
Definition: GalFBits.hpp:96
gnsstk::galfnav::asiaf0_2
@ asiaf0_2
Definition: GalFBits.hpp:486
gnsstk::StdNavTimeOffset::tot
double tot
Time data reference time of week (storage only).
Definition: StdNavTimeOffset.hpp:128
EngNav.hpp
gnsstk::OrbitDataKepler::dn
double dn
Correction to mean motion (rad/sec)
Definition: OrbitDataKepler.hpp:183
gnsstk::galinav::asbE5bhs_2
@ asbE5bhs_2
Definition: GalIBits.hpp:455
gnsstk::bds::esiCus
@ esiCus
Definition: BDSD1Bits.hpp:426
gnsstk::galfnav::esbidot
@ esbidot
idot start bit
Definition: GalFBits.hpp:218
gnsstk::galfnav::asbSVID_2
@ asbSVID_2
Definition: GalFBits.hpp:456
gnsstk::galfnav::ascIODa
@ ascIODa
Definition: GalFBits.hpp:382


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