PNBGPSLNavDataFactory.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 "GPSLNavAlm.hpp"
41 #include "GPSLNavEph.hpp"
42 #include "GPSLNavHealth.hpp"
43 #include "GPSLNavTimeOffset.hpp"
44 #include "GPSLNavIono.hpp"
45 #include "GPSLNavISC.hpp"
46 #include "TimeCorrection.hpp"
47 #include "EngNav.hpp"
48 #include "GPSLBits.hpp"
49 
50 using namespace std;
51 using namespace gnsstk::gpslnav;
52 
53 namespace gnsstk
54 {
55  bool PNBGPSLNavDataFactory ::
56  addData(const PackedNavBitsPtr& navIn, NavDataPtrList& navOut,
57  double cadence)
58  {
59  if (navIn->getNavID().navType != NavType::GPSLNAV)
60  {
61  // This class only processes GPS LNav.
62  return false;
63  }
64  bool rv = true;
65  bool useQZSS = false;
66  try
67  {
68  unsigned long sfid = navIn->asUnsignedLong(fsbSFID,fnbSFID,fscSFID);
69  unsigned long svid = 0;
70  unsigned dataID = -1;
71  bool checkParity = false, expParity = false;
72  switch (navValidity)
73  {
74  case NavValidityType::ValidOnly:
75  checkParity = true;
76  expParity = true;
77  break;
78  case NavValidityType::InvalidOnly:
79  checkParity = true;
80  expParity = false;
81  break;
82  }
83  if (checkParity)
84  {
86  // Convert the PackedNavBits into 10 30-bit words so we
87  // can use EngNav::checkParity.
88  uint32_t sf[10];
89  for (unsigned i = 0, j = 0; i < 300; i += 30, j++)
90  {
91  sf[j] = navIn->asUnsignedLong(i, 30, 1);
92  }
94  bool parity = EngNav::checkParity(sf);
95  if (parity != expParity)
96  return true;
97  }
98  switch (sfid)
99  {
100  case 1:
101  case 2:
102  case 3:
103  //cerr << "sfid " << sfid << " = ephemeris" << endl;
104  rv = processEph(sfid, navIn, navOut);
105  break;
106  case 4:
107  case 5:
108  svid = navIn->asUnsignedLong(asbPageID,anbPageID,ascPageID);
109  dataID = navIn->asUnsignedLong(asbDataID,anbDataID,ascDataID);
110  useQZSS =
111  ((navIn->getsatSys().system == gnsstk::SatelliteSystem::QZSS)&&
112  (dataID == dataIDQZSS));
113  if ((svid <= MAX_PRN_GPS) && (svid >= 1))
114  {
115  if (useQZSS)
116  {
117  // IS-QZSS 1.8 section 5.2.2.2.5.2
118  // When the Data-ID is "11" (B) , the content
119  // is QZS Almanac data and Almanac health, and
120  // the eight bits of "data ID (2 bits) + SV ID
121  // (6 bits)" indicates the PRN number of the
122  // QZS.
123  svid = svid | (dataID << 6);
124  }
126  // process orbit and health
127  rv = processAlmOrb(svid, navIn, navOut);
128  }
129  else if (svid == 51)
130  {
131  // process health
132  rv = processSVID51(navIn, navOut);
133  }
134  else if (svid == 63)
135  {
136  // process health
137  rv = processSVID63(navIn, navOut);
138  }
139  else if ((svid == 56) || (useQZSS && (svid == 61)))
140  {
141  // process time offset
142  rv = processSVID56(navIn, navOut);
143  }
144  break;
145  default:
146  // cerr << "invalid sfid " << sfid << endl;
147  // This used to be false until I tried processing
148  // MDP data, and immediately started getting invalid
149  // subframe IDs.
150  rv = true;
151  break;
152  }
153  // cerr << " results: " << navOut.size() << endl;
154  // for (const auto& i : navOut)
155  // i->dump(cerr,DumpDetail::Full);
156  }
157  catch (Exception& exc)
158  {
159  rv = false;
160  cerr << exc << endl;
161  }
162  catch (std::exception& exc)
163  {
164  rv = false;
165  cerr << exc.what() << endl;
166  }
167  catch (...)
168  {
169  rv = false;
170  cerr << "Unknown exception" << endl;
171  }
172  return rv;
173  }
174 
175 
176  bool PNBGPSLNavDataFactory ::
177  processEph(unsigned sfid, const PackedNavBitsPtr& navIn,
178  NavDataPtrList& navOut)
179  {
180  NavSatelliteID key(navIn->getsatSys().id, navIn->getsatSys(),
181  navIn->getobsID(), navIn->getNavID());
182  if (sfid == 1)
183  {
184  if (processHea)
185  {
186  // Add ephemeris health bits from subframe 1.
187  NavDataPtr p1 = std::make_shared<GPSLNavHealth>();
188  p1->timeStamp = navIn->getTransmitTime();
189  p1->signal = NavMessageID(key, NavMessageType::Health);
190  dynamic_cast<GPSLNavHealth*>(p1.get())->svHealth =
191  navIn->asUnsignedLong(esbHea,enbHea,escHea);
192  // cerr << "add LNAV eph health" << endl;
193  navOut.push_back(p1);
194  }
195  if (processISC)
196  {
197  // Add ephemeris Tgd bits from subframe 1.
198  NavDataPtr p2 = std::make_shared<GPSLNavISC>();
199  GPSLNavISC *isc = dynamic_cast<GPSLNavISC*>(p2.get());
200  isc->timeStamp = navIn->getTransmitTime();
201  isc->signal = NavMessageID(key, NavMessageType::ISC);
202  isc->pre = navIn->asUnsignedLong(fsbPre,fnbPre,fscPre);
203  isc->tlm = navIn->asUnsignedLong(fsbTLM,fnbTLM,fscTLM);
204  if (navIn->getsatSys().system == gnsstk::SatelliteSystem::GPS)
205  {
206  isc->isf = navIn->asBool(fsbISF);
207  }
208  isc->alert = navIn->asBool(fsbAlert);
209  isc->asFlag = navIn->asBool(fsbAS);
210  isc->isc = navIn->asSignedDouble(esbTGD,enbTGD,escTGD);
211  // cerr << "add LNAV eph Tgd" << endl;
212  navOut.push_back(p2);
213  }
214  }
215  if (!PNBNavDataFactory::processEph)
216  {
217  // User doesn't want ephemerides so don't do any processing.
218  return true;
219  }
220  if (ephAcc.find(key) == ephAcc.end())
221  {
222  // cerr << "ephAcc is empty for signal " << key << endl;
223  // set up a new ephemeris
224  ephAcc[key].resize(3);
225  ephAcc[key][sfid-1] = navIn;
226  // nothing in navOut yet and no further processing because
227  // we only have one of three subframes at this point.
228  return true;
229  }
230  std::vector<PackedNavBitsPtr> &ephSF(ephAcc[key]);
231  ephSF[sfid-1] = navIn;
232  // stop processing if we don't have three full subframes
233  if (!ephSF[sf1] || !ephSF[sf2] || !ephSF[sf3] ||
234  (ephSF[sf1]->getNumBits() != 300) ||
235  (ephSF[sf2]->getNumBits() != 300) ||
236  (ephSF[sf3]->getNumBits() != 300))
237  {
238  // cerr << "Not ready for full LNAV eph processing" << endl
239  // << " sf1: " << (bool)ephSF[sf1] << " "
240  // << (ephSF[sf1] ? ephSF[sf1]->getNumBits() : -1) << endl
241  // << " sf2: " << (bool)ephSF[sf2] << " "
242  // << (ephSF[sf2] ? ephSF[sf2]->getNumBits() : -1) << endl
243  // << " sf3: " << (bool)ephSF[sf3] << " "
244  // << (ephSF[sf3] ? ephSF[sf3]->getNumBits() : -1) << endl;
245  return true;
246  }
247  // Stop processing if we don't have matching IODC/IODE in
248  // each of the three subframes. Only get the 8 LSBs of IODC
249  // for this test to match the IODEs.
250  unsigned long iodc, iode2, iode3;
251  iodc = ephSF[esiIODC]->asUnsignedLong(esbIODCl,enbIODCl,escIODC);
252  iode2 = ephSF[esiIODE2]->asUnsignedLong(esbIODE2,enbIODE2,escIODE2);
253  iode3 = ephSF[esiIODE3]->asUnsignedLong(esbIODE3,enbIODE3,escIODE3);
254  if ((iodc != iode2) || (iodc != iode3))
255  {
256  //cerr << "IODC/IODE mismatch, not processing" << endl;
257  // Even though the mismatch might be considered an error,
258  // we don't really want to mark it as such and rather
259  // consider it as a "valid" but unprocessable data set.
260  return true;
261  }
262  NavDataPtr p0 = std::make_shared<GPSLNavEph>();
263  GPSLNavEph *eph = dynamic_cast<GPSLNavEph*>(p0.get());
264  // NavData
265  eph->timeStamp = ephSF[sf1]->getTransmitTime();
266  eph->signal = NavMessageID(key, NavMessageType::Ephemeris);
267  // cerr << "Ready for full LNAV eph processing for " << (NavSignalID)key << endl;
268  // OrbitData = empty
269  // OrbitDataKepler
270  eph->xmitTime = eph->timeStamp;
271  eph->xmit2 = ephSF[sf2]->getTransmitTime();
272  eph->xmit3 = ephSF[sf3]->getTransmitTime();
273  double toe = ephSF[esitoe]->asUnsignedDouble(esbtoe,enbtoe,esctoe);
274  double toc = ephSF[esitoc]->asUnsignedDouble(esbtoc,enbtoc,esctoc);
275  unsigned wn = ephSF[esiWN]->asUnsignedLong(esbWN,enbWN,escWN);
276  // Use the transmit time to get a full week for toe/toc
277  GPSWeekSecond refTime(eph->xmitTime);
278  long refWeek = refTime.week;
279  // cerr << "toe=" << toe << " refTime=" << refTime << " wn(1)=" << wn
280  // << " refWeek=" << refWeek;
281  // this is the 10-bit week rollover fix
282  wn = timeAdjustWeekRollover(wn, refWeek);
283  // cerr << " wn(2)=" << wn << endl;
284  // Now we can set the Toe/Toc properly
285  // and use the half-week test for week rollover fixation.
286  eph->Toe = GPSWeekSecond(wn,toe).weekRolloverAdj(refTime);
287  eph->Toc = GPSWeekSecond(wn,toc).weekRolloverAdj(refTime);
288  if (navIn->getsatSys().system == gnsstk::SatelliteSystem::QZSS)
289  {
292  }
293  // health is set below
294  eph->Cuc = ephSF[esiCuc]->asSignedDouble(esbCuc,enbCuc,escCuc);
295  eph->Cus = ephSF[esiCus]->asSignedDouble(esbCus,enbCus,escCus);
296  eph->Crc = ephSF[esiCrc]->asSignedDouble(esbCrc,enbCrc,escCrc);
297  eph->Crs = ephSF[esiCrs]->asSignedDouble(esbCrs,enbCrs,escCrs);
298  eph->Cic = ephSF[esiCic]->asSignedDouble(esbCic,enbCic,escCic);
299  eph->Cis = ephSF[esiCis]->asSignedDouble(esbCis,enbCis,escCis);
300  eph->M0 = ephSF[esiM0]->asDoubleSemiCircles(esbM0m,enbM0m,esbM0l,enbM0l,
301  escM0);
302  eph->dn = ephSF[esidn]->asDoubleSemiCircles(esbdn,enbdn,escdn);
303  // no dndot in GPS LNAV
304  eph->ecc = ephSF[esiEcc]->asUnsignedDouble(esbEccm,enbEccm,
306  eph->Ahalf = ephSF[esiAhalf]->asUnsignedDouble(esbAhalfm,enbAhalfm,
308  escAhalf);
309  eph->A = eph->Ahalf * eph->Ahalf;
310  // no Adot in GPS LNAV
311  eph->OMEGA0 = ephSF[esiOMEGA0]->asDoubleSemiCircles(esbOMEGA0m,enbOMEGA0m,
313  escOMEGA0);
314  eph->i0 = ephSF[esii0]->asDoubleSemiCircles(esbi0m,enbi0m,esbi0l,enbi0l,
315  esci0);
316  eph->w = ephSF[esiw]->asDoubleSemiCircles(esbwm,enbwm,esbwl,enbwl,escw);
317  eph->OMEGAdot = ephSF[esiOMEGAdot]->asDoubleSemiCircles(
319  eph->idot = ephSF[esiidot]->asDoubleSemiCircles(esbidot,enbidot,escidot);
320  eph->af0 = ephSF[esiaf0]->asSignedDouble(esbaf0,enbaf0,escaf0);
321  eph->af1 = ephSF[esiaf1]->asSignedDouble(esbaf1,enbaf1,escaf1);
322  eph->af2 = ephSF[esiaf2]->asSignedDouble(esbaf2,enbaf2,escaf2);
323  // GPSLNavData
324  eph->pre = ephSF[sf1]->asUnsignedLong(fsbPre,fnbPre,fscPre);
325  eph->tlm = ephSF[sf1]->asUnsignedLong(fsbTLM,fnbTLM,fscTLM);
326  if (navIn->getsatSys().system == gnsstk::SatelliteSystem::GPS)
327  {
328  eph->isf = ephSF[sf1]->asBool(fsbISF);
329  }
330  eph->alert = ephSF[sf1]->asBool(fsbAlert);
331  eph->asFlag = ephSF[sf1]->asBool(fsbAS);
332  // GPSLNavEph
333  eph->pre2 = ephSF[sf2]->asUnsignedLong(fsbPre,fnbPre,fscPre);
334  eph->pre3 = ephSF[sf3]->asUnsignedLong(fsbPre,fnbPre,fscPre);
335  eph->tlm2 = ephSF[sf2]->asUnsignedLong(fsbTLM,fnbTLM,fscTLM);
336  eph->tlm3 = ephSF[sf3]->asUnsignedLong(fsbTLM,fnbTLM,fscTLM);
337  if (navIn->getsatSys().system == gnsstk::SatelliteSystem::GPS)
338  {
339  eph->isf2 = ephSF[sf2]->asBool(fsbISF);
340  eph->isf3 = ephSF[sf3]->asBool(fsbISF);
341  }
342  // 2 = size of iodcStart/iodcNum arrays
343  eph->iodc = ephSF[esiIODC]->asUnsignedLong(esbIODCm,enbIODCm,esbIODCl,
344  enbIODCl,escIODC);
345  eph->iode = iode2; // we've already extracted it
346  eph->fitIntFlag = ephSF[esiFitInt]->asUnsignedLong(esbFitInt,enbFitInt,
347  escFitInt);
348  eph->healthBits = ephSF[esiHea]->asUnsignedLong(esbHea,enbHea,escHea);
349  eph->health = ((eph->healthBits == 0) ? SVHealth::Healthy :
350  SVHealth::Unhealthy); // actually in OrbitDataKepler
351  eph->uraIndex = ephSF[esiURA]->asUnsignedLong(esbURA,enbURA,escURA);
352  eph->tgd = ephSF[esiTGD]->asSignedDouble(esbTGD,enbTGD,escTGD);
353  eph->alert2 = ephSF[sf2]->asBool(fsbAlert);
354  eph->alert3 = ephSF[sf3]->asBool(fsbAlert);
355  eph->asFlag2 = ephSF[sf2]->asBool(fsbAS);
356  eph->asFlag3 = ephSF[sf3]->asBool(fsbAS);
357  eph->codesL2 = static_cast<GPSLNavL2Codes>(
358  ephSF[esiL2]->asUnsignedLong(esbL2,enbL2,escL2));
359  eph->L2Pdata = ephSF[esiL2P]->asUnsignedLong(esbL2P,enbL2P,escL2P);
360  eph->aodo = ephSF[esiAODO]->asUnsignedLong(esbAODO,enbAODO,escAODO);
361  eph->fixFit();
362  // cerr << "add LNAV eph" << endl;
363  navOut.push_back(p0);
364  // Clear out the broadcast ephemeris that's been processed.
365  ephAcc.erase(key);
366  return true;
367  }
368 
369 
370  bool PNBGPSLNavDataFactory ::
371  processAlmOrb(unsigned long prn, const PackedNavBitsPtr& navIn,
372  NavDataPtrList& navOut)
373  {
374  SatID xmitSat(navIn->getsatSys());
375  // Key used for data accumulating, which we don't separate by
376  // subject satellite.
377  NavSatelliteID key(0, xmitSat, navIn->getobsID(), navIn->getNavID());
378  // Actual satellite ID (subject and transmit) used in a
379  // couple of places.
380  NavSatelliteID sat(prn, xmitSat, navIn->getobsID(), navIn->getNavID());
381  // No checks for correct svid, just assume that the input
382  // data has already been checked (it will have been by
383  // addData).
384  if (processHea)
385  {
386  // Add almanac orbit page health bits.
387  NavDataPtr p1 = std::make_shared<GPSLNavHealth>();
388  p1->timeStamp = navIn->getTransmitTime();
389  p1->signal = NavMessageID(sat, NavMessageType::Health);
390  dynamic_cast<GPSLNavHealth*>(p1.get())->svHealth =
391  navIn->asUnsignedLong(asbHea,anbHea,ascHea);
392  // cerr << "add LNAV alm health" << endl;
393  navOut.push_back(p1);
394  }
395  if (!PNBNavDataFactory::processAlm)
396  {
397  // User doesn't want almanacs so don't do any processing.
398  return true;
399  }
400  // SVID 1-32 contain the almanac orbital elements as well as
401  // health information (Figure 20-1 sheet 4), so we'll end up
402  // returning two items in navOut.
403  NavDataPtr p0 = std::make_shared<GPSLNavAlm>();
404  p0->timeStamp = navIn->getTransmitTime();
405  p0->signal = NavMessageID(sat, NavMessageType::Almanac);
406  GPSLNavAlm *alm = dynamic_cast<GPSLNavAlm*>(p0.get());
407  // Bit positions taken from IS-GPS-200 figure 20-1 sheet 4,
408  // and figure 20-2, but subtracting 1 since PNB is 0-based.
409  // Scales taken from Table 20-VI
410  // Sinusoidal corrections and other unset parameters are not
411  // used by almanac data and are initialized to 0 by
412  // constructor
413  alm->pre = navIn->asUnsignedLong(fsbPre,fnbPre,fscPre);
414  alm->tlm = navIn->asUnsignedLong(fsbTLM,fnbTLM,fscTLM);
415  if (navIn->getsatSys().system == gnsstk::SatelliteSystem::GPS)
416  {
417  alm->isf = navIn->asBool(fsbISF);
418  }
419  alm->alert = navIn->asBool(fsbAlert);
420  alm->asFlag = navIn->asBool(fsbAS);
421  alm->xmitTime = navIn->getTransmitTime();
422  alm->ecc = navIn->asUnsignedDouble(asbEcc,anbEcc,ascEcc);
423  alm->toa = navIn->asUnsignedDouble(asbtoa,anbtoa,asctoa);
424  GPSWeekSecond ws(alm->xmitTime);
425  // cerr << "page " << prn << " WNa = ?? toa = " << alm->toa
426  // << " WNx = " << (ws.week & 0x0ff) << " tox = " << ws.sow << endl;
427  alm->deltai = navIn->asDoubleSemiCircles(asbdeltai,anbdeltai,ascdeltai);
431  if (alm->signal.sat.system == SatelliteSystem::QZSS)
432  {
433  alm->i0 = GPSLNavData::refioffsetQZSS + alm->deltai;
434  alm->ecc += GPSLNavData::refEccQZSS;
436  }
437  else
438  {
439  alm->i0 = GPSLNavData::refioffsetGPS + alm->deltai;
440  }
441  alm->OMEGAdot = navIn->asDoubleSemiCircles(asbOMEGAdot,anbOMEGAdot,
442  ascOMEGAdot);
443  alm->healthBits = navIn->asUnsignedLong(asbHea,anbHea,ascHea);
444  alm->health = (alm->healthBits == 0 ? SVHealth::Healthy :
445  SVHealth::Unhealthy);
446  alm->Ahalf = navIn->asUnsignedDouble(asbAhalf,anbAhalf,ascAhalf);
447  alm->A = alm->Ahalf * alm->Ahalf;
448  alm->OMEGA0 = navIn->asDoubleSemiCircles(asbOMEGA0,anbOMEGA0,ascOMEGA0);
449  alm->w = navIn->asDoubleSemiCircles(asbw,anbw,ascw);
450  alm->M0 = navIn->asDoubleSemiCircles(asbM0,anbM0,ascM0);
451  const unsigned af0start[] = {asbaf0m,asbaf0l};
452  const unsigned af0num[] = {anbaf0m,anbaf0l};
453  // 2 is the size of the af0start/af0num arrays
454  alm->af0 = navIn->asSignedDouble(af0start,af0num,2,ascaf0);
455  alm->af1 = navIn->asSignedDouble(asbaf1,anbaf1,ascaf1);
456  // If we have a wna for this transmitting PRN, use it to set
457  // the toa (identified as Toe/Toc in OrbitDataKepler).
458  // Otherwise, stash the data until we do have a wna.
459  if ((fullWNaMap.find(xmitSat.id) != fullWNaMap.end()) &&
460  (fullWNaMap[xmitSat.id].sow == alm->toa))
461  {
462  alm->Toe = alm->Toc = fullWNaMap[xmitSat.id];
463  alm->fixFit();
464  // cerr << "add LNAV alm" << endl;
465  navOut.push_back(p0);
466  }
467  else
468  {
469  // no WNa available yet, accumulate the data until we get a page 51
470  almAcc[key].push_back(p0);
471  }
472  return true;
473  }
474 
475 
476  bool PNBGPSLNavDataFactory ::
477  processSVID51(const PackedNavBitsPtr& navIn, NavDataPtrList& navOut)
478  {
479  // No checks for correct svid, just assume that the input
480  // data has already been checked (it will have been by
481  // addData).
482  SatID xmitSat(navIn->getsatSys());
483  ObsID oid(navIn->getobsID());
484  NavID navid(navIn->getNavID());
485  // Key used for data accumulating, which we don't separate by
486  // subject satellite.
487  NavSatelliteID key(0, xmitSat, oid, navid);
488  if (PNBNavDataFactory::processAlm)
489  {
490  // Set the fullWNa now that we have something to go on,
491  // but only if we're processing almanac data, which is the
492  // only situation where it's used.
493  double toa = navIn->asUnsignedDouble(asbtoa51,anbtoa51,asctoa51);
494  unsigned shortWNa = navIn->asUnsignedLong(asbWNa51,anbWNa51,ascWNa51);
495  GPSWeekSecond ws(navIn->getTransmitTime());
496  long refWeek = ws.week;
497  unsigned fullWNa = timeAdjust8BitWeekRollover(shortWNa, refWeek);
498  fullWNaMap[xmitSat.id] = GPSWeekSecond(fullWNa,toa);
499  fullWNaMap[xmitSat.id].weekRolloverAdj(ws);
500  // cerr << "page 51 WNa = " << shortWNa << " toa = " << toa
501  // << " WNx = " << (ws.week & 0x0ff) << " tox = " << ws.sow
502  // << " fullWNa = " << fullWNa << endl;
503  NavDataPtrList& ndpl(almAcc[key]);
504  for (auto i = ndpl.begin(); i != ndpl.end();)
505  {
506  GPSLNavAlm *alm = dynamic_cast<GPSLNavAlm*>(i->get());
507  if (alm->toa == toa)
508  {
509  alm->Toe = alm->Toc = fullWNaMap[xmitSat.id];
510  alm->fixFit();
511  // cerr << "add LNAV alm" << endl;
512  navOut.push_back(*i);
513  i = ndpl.erase(i);
514  }
515  else
516  {
517  ++i;
518  }
519  }
520  }
521  // svid 51 = sf 5 page 25. The format has 24 SVs in it,
522  // grouped 4 per word for GPS. For QZSS, it varies - see
523  // IS-QZSS-PNT-004 Table 4.1.2-12.
529  if (!PNBNavDataFactory::processHea)
530  {
531  // User doesn't want health so don't do any processing.
532  return true;
533  }
534  // use GPS defaults.
535  unsigned startPRN = 1, endPRN = 24;
536  if (navIn->getsatSys().system == gnsstk::SatelliteSystem::QZSS)
537  {
538  unsigned dataID = navIn->asUnsignedLong(asbDataID,anbDataID,ascDataID);
539  if (dataID == dataIDQZSS)
540  {
541  startPRN = MIN_PRN_QZS;
542  endPRN = MAX_PRN_QZS_LNAV;
543  }
544  }
545  for (unsigned prn = startPRN, bit = 90; prn <= endPRN;
546  prn += 4, bit += 30)
547  {
548  NavDataPtr p1 = std::make_shared<GPSLNavHealth>();
549  NavDataPtr p2 = std::make_shared<GPSLNavHealth>();
550  NavDataPtr p3 = std::make_shared<GPSLNavHealth>();
551  NavDataPtr p4 = std::make_shared<GPSLNavHealth>();
552  p1->timeStamp = navIn->getTransmitTime();
553  p1->signal = NavMessageID(
554  NavSatelliteID(prn+0, xmitSat, oid, navid),
555  NavMessageType::Health);
556  dynamic_cast<GPSLNavHealth*>(p1.get())->svHealth =
557  navIn->asUnsignedLong(bit+0, 6, 1);
558  // cerr << "add LNAV page 51 health" << endl;
559  navOut.push_back(p1);
560  if ((prn+1) > endPRN)
561  break;
562  p2->timeStamp = navIn->getTransmitTime();
563  p2->signal = NavMessageID(
564  NavSatelliteID(prn+1, xmitSat, oid, navid),
565  NavMessageType::Health);
566  dynamic_cast<GPSLNavHealth*>(p2.get())->svHealth =
567  navIn->asUnsignedLong(bit+6, 6, 1);
568  // cerr << "add LNAV page 51 health" << endl;
569  navOut.push_back(p2);
570  if ((prn+2) > endPRN)
571  break;
572  p3->timeStamp = navIn->getTransmitTime();
573  p3->signal = NavMessageID(
574  NavSatelliteID(prn+2, xmitSat, oid, navid),
575  NavMessageType::Health);
576  dynamic_cast<GPSLNavHealth*>(p3.get())->svHealth =
577  navIn->asUnsignedLong(bit+12, 6, 1);
578  // cerr << "add LNAV page 51 health" << endl;
579  navOut.push_back(p3);
580  if ((prn+3) > endPRN)
581  break;
582  p4->timeStamp = navIn->getTransmitTime();
583  p4->signal = NavMessageID(
584  NavSatelliteID(prn+3, xmitSat, oid, navid),
585  NavMessageType::Health);
586  dynamic_cast<GPSLNavHealth*>(p4.get())->svHealth =
587  navIn->asUnsignedLong(bit+18, 6, 1);
588  // cerr << "add LNAV page 51 health" << endl;
589  navOut.push_back(p4);
590  }
591  return true;
592  }
593 
594 
595  bool PNBGPSLNavDataFactory ::
596  processSVID63(const PackedNavBitsPtr& navIn, NavDataPtrList& navOut)
597  {
598  // No checks for correct svid, just assume that the input
599  // data has already been checked (it will have been by
600  // addData).
601  // svid 63 = sf 4 page 25. The format has SVs 25-32 in it.
602  // SV 25 is kind of off on its own so do it first, outside the loop
603  if (!PNBNavDataFactory::processHea)
604  {
605  // User doesn't want health so don't do any processing.
606  return true;
607  }
608  SatID xmitSat(navIn->getsatSys());
609  ObsID oid(navIn->getobsID());
610  NavID navid(navIn->getNavID());
611  NavDataPtr p0 = std::make_shared<GPSLNavHealth>();
612  p0->timeStamp = navIn->getTransmitTime();
613  p0->signal = NavMessageID(
614  NavSatelliteID(25, xmitSat, oid, navid),
615  NavMessageType::Health);
616  // prn 25 health starts at bit 229 (1-based), so we use 228 (0-based)
617  dynamic_cast<GPSLNavHealth*>(p0.get())->svHealth =
618  navIn->asUnsignedLong(228, 6, 1);
619  // cerr << "add LNAV page 63 health" << endl;
620  navOut.push_back(p0);
621  for (unsigned prn = 26, bit = 240; prn <= 32; prn += 4, bit += 30)
622  {
623  NavDataPtr p1 = std::make_shared<GPSLNavHealth>();
624  NavDataPtr p2 = std::make_shared<GPSLNavHealth>();
625  NavDataPtr p3 = std::make_shared<GPSLNavHealth>();
626  NavDataPtr p4;
627  p1->timeStamp = navIn->getTransmitTime();
628  p1->signal = NavMessageID(
629  NavSatelliteID(prn+0, xmitSat, oid, navid),
630  NavMessageType::Health);
631  dynamic_cast<GPSLNavHealth*>(p1.get())->svHealth =
632  navIn->asUnsignedLong(bit+0, 6, 1);
633  // cerr << "add LNAV page 63 health" << endl;
634  navOut.push_back(p1);
635  p2->timeStamp = navIn->getTransmitTime();
636  p2->signal = NavMessageID(
637  NavSatelliteID(prn+1, xmitSat, oid, navid),
638  NavMessageType::Health);
639  dynamic_cast<GPSLNavHealth*>(p2.get())->svHealth =
640  navIn->asUnsignedLong(bit+6, 6, 1);
641  // cerr << "add LNAV page 63 health" << endl;
642  navOut.push_back(p2);
643  p3->timeStamp = navIn->getTransmitTime();
644  p3->signal = NavMessageID(
645  NavSatelliteID(prn+2, xmitSat, oid, navid),
646  NavMessageType::Health);
647  dynamic_cast<GPSLNavHealth*>(p3.get())->svHealth =
648  navIn->asUnsignedLong(bit+12, 6, 1);
649  // cerr << "add LNAV page 63 health" << endl;
650  navOut.push_back(p3);
651  // Word 9 has 4 PRNs, word 10 only has 3, so we have to do
652  // this check.
653  if (prn < 30)
654  {
655  p4 = std::make_shared<GPSLNavHealth>();
656  p4->timeStamp = navIn->getTransmitTime();
657  p4->signal = NavMessageID(
658  NavSatelliteID(prn+3, xmitSat, oid, navid),
659  NavMessageType::Health);
660  dynamic_cast<GPSLNavHealth*>(p4.get())->svHealth =
661  navIn->asUnsignedLong(bit+18, 6, 1);
662  // cerr << "add LNAV page 63 health" << endl;
663  navOut.push_back(p4);
664  }
665  }
666  return true;
667  }
668 
669 
670  bool PNBGPSLNavDataFactory ::
671  processSVID56(const PackedNavBitsPtr& navIn, NavDataPtrList& navOut)
672  {
673  // No checks for correct svid, just assume that the input
674  // data has already been checked (it will have been by
675  // addData).
676  // svid 56 = sf 4 page 18.
677  if (PNBNavDataFactory::processIono)
678  {
679  NavDataPtr p1 = std::make_shared<GPSLNavIono>();
680  p1->timeStamp = navIn->getTransmitTime();
681  p1->signal = NavMessageID(
682  NavSatelliteID(navIn->getsatSys().id, navIn->getsatSys(),
683  navIn->getobsID(), navIn->getNavID()),
684  NavMessageType::Iono);
685  GPSLNavIono *iono = dynamic_cast<GPSLNavIono*>(p1.get());
686  // GPSLNavIono
687  iono->pre = navIn->asUnsignedLong(fsbPre,fnbPre,fscPre);
688  iono->tlm = navIn->asUnsignedLong(fsbTLM,fnbTLM,fscTLM);
689  if (navIn->getsatSys().system == gnsstk::SatelliteSystem::GPS)
690  {
691  iono->isf = navIn->asBool(fsbISF);
692  }
693  iono->alert = navIn->asBool(fsbAlert);
694  iono->asFlag = navIn->asBool(fsbAS);
695  iono->alpha[0] = navIn->asSignedDouble(asbAlpha0,anbAlpha0,ascAlpha0);
696  iono->alpha[1] = navIn->asSignedDouble(asbAlpha1,anbAlpha1,ascAlpha1);
697  iono->alpha[2] = navIn->asSignedDouble(asbAlpha2,anbAlpha2,ascAlpha2);
698  iono->alpha[3] = navIn->asSignedDouble(asbAlpha3,anbAlpha3,ascAlpha3);
699  iono->beta[0] = navIn->asSignedDouble(asbBeta0,anbBeta0,ascBeta0);
700  iono->beta[1] = navIn->asSignedDouble(asbBeta1,anbBeta1,ascBeta1);
701  iono->beta[2] = navIn->asSignedDouble(asbBeta2,anbBeta2,ascBeta2);
702  iono->beta[3] = navIn->asSignedDouble(asbBeta3,anbBeta3,ascBeta3);
703  navOut.push_back(p1);
704  }
705  if (!PNBNavDataFactory::processTim)
706  {
707  // User doesn't want time offset data so don't do any processing.
708  return true;
709  }
710  NavDataPtr p0 = std::make_shared<GPSLNavTimeOffset>();
711  p0->timeStamp = navIn->getTransmitTime();
712  p0->signal = NavMessageID(
713  NavSatelliteID(navIn->getsatSys().id, navIn->getsatSys(),
714  navIn->getobsID(), navIn->getNavID()),
715  NavMessageType::TimeOffset);
716  GPSLNavTimeOffset *to = dynamic_cast<GPSLNavTimeOffset*>(p0.get());
717  // Bit positions taken from IS-GPS-200 figure 20-1 sheet 8,
718  // but subtracting 1 since PNB is 0-based.
719  // Scales taken from Table 20-IX
723  const unsigned a0start[] = { asbA0m, asbA0l };
724  const unsigned a0num[] = { anbA0m, anbA0l };
725  to->deltatLS = navIn->asLong(asbDeltatLS,anbDeltatLS,ascDeltatLS);
726  // 2 is the size of the start/num arrays, while -30 is the
727  // scale factor i.e. x*2^-30
728  to->a0 = navIn->asSignedDouble(a0start,a0num,2,ascA0);
729  to->a1 = navIn->asSignedDouble(asbA1,anbA1,ascA1);
730  to->tot = navIn->asUnsignedDouble(asbtot,anbtot,asctot);
731  to->wnot = navIn->asUnsignedLong(asbWNt,anbWNt,ascWNt);
732  to->wnLSF = navIn->asUnsignedLong(asbWNLSF,anbWNLSF,ascWNLSF);
733  to->dn = navIn->asUnsignedLong(asbDN,anbDN,ascDN);
734  to->deltatLSF = navIn->asLong(asbDeltatLSF,anbDeltatLSF,ascDeltatLSF);
735  // adjust week numbers to full week
736  GPSWeekSecond ws(p0->timeStamp);
737  long refWeek = ws.week;
738  to->wnot = timeAdjust8BitWeekRollover(to->wnot, refWeek);
739  to->wnLSF = timeAdjust8BitWeekRollover(to->wnLSF, refWeek);
740  to->refTime = GPSWeekSecond(to->wnot, to->tot);
741  to->effTime = GPSWeekSecond(to->wnLSF, (to->dn-1)*86400);
742  if (navIn->getsatSys().system == gnsstk::SatelliteSystem::QZSS)
743  {
747  }
748  // return results.
749  // cerr << "add LNAV page 56 time offset" << endl;
750  navOut.push_back(p0);
751  return true;
752  }
753 
754 
755  void PNBGPSLNavDataFactory ::
756  dumpState(std::ostream& s)
757  const
758  {
759  s << "fullWNaMap.size() = " << fullWNaMap.size() << " (expect 32)" << endl
760  << "almAcc.size() = " << almAcc.size() << " (expect 32)" << endl;
761  for (const auto& i : almAcc)
762  {
763  s << " almAcc[" << i.first << "].size() = " << i.second.size()
764  << endl;
765  }
766  s << "ephAcc.size() = " << ephAcc.size() << " (expect 32)" << endl;
767  for (const auto& i : ephAcc)
768  {
769  s << " ephAcc[" << i.first << "].size() = " << i.second.size()
770  << endl;
771  for (unsigned j = 0; j < i.second.size(); j++)
772  {
773  s << " ephAcc[" << i.first << "][" << j << "] = ";
774  if (!i.second[j])
775  s << "unset";
776  else
777  s << i.second[j]->getNumBits() << " bits";
778  s << endl;
779  }
780  }
781  }
782 
783 
784  void PNBGPSLNavDataFactory ::
785  resetState()
786  {
787  fullWNaMap.clear();
788  almAcc.clear();
789  ephAcc.clear();
790  }
791 
792 } // namespace gnsstk
gnsstk::galfnav::anbOMEGAdot
@ anbOMEGAdot
Definition: GalFBits.hpp:430
gnsstk::bds::ascw
@ ascw
Definition: BDSD1Bits.hpp:162
gnsstk::NavDataPtr
std::shared_ptr< NavData > NavDataPtr
Factories instantiate these in response to find() requests.
Definition: NavData.hpp:62
gnsstk::gpscnav2::escTGD
@ escTGD
Tgd power factor.
Definition: GPSC2Bits.hpp:185
gnsstk::bds::esbwm
@ esbwm
Definition: BDSD1Bits.hpp:577
gnsstk::galfnav::enbCuc
@ enbCuc
Cuc number of bits.
Definition: GalFBits.hpp:256
gnsstk::GPSLNavEph::codesL2
GPSLNavL2Codes codesL2
Code on L2 in-phase component.
Definition: GPSLNavEph.hpp:108
example3.svid
svid
Definition: example3.py:19
gnsstk::gpslnav::asbDeltatLS
@ asbDeltatLS
Definition: GPSLBits.hpp:467
gnsstk::bds::escM0
@ escM0
Definition: BDSD1Bits.hpp:396
gnsstk::GPSLNavEph::alert2
bool alert2
Alert flag from SF2 HOW.
Definition: GPSLNavEph.hpp:104
gnsstk::OrbitDataKepler::idot
double idot
Rate of inclination angle (rad/sec)
Definition: OrbitDataKepler.hpp:193
gnsstk::NavMessageID
Class used to identify/categorize navigation message data.
Definition: NavMessageID.hpp:52
gnsstk::GPSLNavEph::isf2
bool isf2
Integrity status flag from subframe 2.
Definition: GPSLNavEph.hpp:96
gnsstk::gpslnav::asbBeta1
@ asbBeta1
Definition: GPSLBits.hpp:436
gnsstk::gpslnav::anbAlpha3
@ anbAlpha3
Definition: GPSLBits.hpp:429
gnsstk::gpslnav::esiAODO
@ esiAODO
AODO subframe index.
Definition: GPSLBits.hpp:286
gnsstk::StdNavTimeOffset::deltatLSF
double deltatLSF
Current or future leap second count (UTC only).
Definition: StdNavTimeOffset.hpp:135
gnsstk::gpslnav::anbA0m
@ anbA0m
Definition: GPSLBits.hpp:453
gnsstk::gpslnav::ascHea
@ ascHea
Definition: GPSLBits.hpp:385
gnsstk::MIN_PRN_QZS
const int MIN_PRN_QZS
First assigned PRN in QZSS.
Definition: GNSSconstants.hpp:240
gnsstk::bds::escAhalf
@ escAhalf
Definition: BDSD1Bits.hpp:462
gnsstk::TimeTag::setTimeSystem
void setTimeSystem(const TimeSystem &timeSys)
Set method for internal variable timeSystem (enum).
Definition: TimeTag.hpp:165
gnsstk::GPSLNavEph::xmit3
CommonTime xmit3
Transmit time for subframe 3.
Definition: GPSLNavEph.hpp:91
gnsstk::galfnav::esiidot
@ esiidot
idot subframe index
Definition: GalFBits.hpp:217
gnsstk::gpslnav::dataIDQZSS
@ dataIDQZSS
QZSS almanacs for QZSS satellites.
Definition: GPSLBits.hpp:101
gnsstk::gpslnav::ascBeta0
@ ascBeta0
Definition: GPSLBits.hpp:434
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::PackedNavBitsPtr
std::shared_ptr< PackedNavBits > PackedNavBitsPtr
Managed pointer for passing PackedNavBits around.
Definition: PackedNavBits.hpp:66
gnsstk::galfnav::enbidot
@ enbidot
idot number of bits
Definition: GalFBits.hpp:219
gnsstk::galfnav::esiOMEGAdot
@ esiOMEGAdot
OMEGAdot subframe index.
Definition: GalFBits.hpp:197
gnsstk::gpslnav::ascBeta3
@ ascBeta3
Definition: GPSLBits.hpp:446
gnsstk::bds::escCus
@ escCus
Definition: BDSD1Bits.hpp:429
gnsstk::bds::escCuc
@ escCuc
Definition: BDSD1Bits.hpp:382
gnsstk::gpslnav::enbL2P
@ enbL2P
L2 P data flag number of bits.
Definition: GPSLBits.hpp:156
gnsstk::bds::esbAhalfl
@ esbAhalfl
Definition: BDSD1Bits.hpp:470
gnsstk::bds::esbM0l
@ esbM0l
Definition: BDSD1Bits.hpp:404
gnsstk::gpslnav::asbAlpha1
@ asbAlpha1
Definition: GPSLBits.hpp:420
gnsstk::gpslnav::fsbAlert
@ fsbAlert
Alert flag start bit.
Definition: GPSLBits.hpp:76
gnsstk::gpslnav::escL2P
@ escL2P
L2 P data flag scale factor.
Definition: GPSLBits.hpp:157
gnsstk::gpslnav::enbHea
@ enbHea
SV health number of bits.
Definition: GPSLBits.hpp:142
gnsstk::bds::esbCrs
@ esbCrs
Definition: BDSD2Bits.hpp:1055
gnsstk::galfnav::esiEcc
@ esiEcc
Ecc subframe index.
Definition: GalFBits.hpp:202
gnsstk::bds::ascEcc
@ ascEcc
Definition: BDSD1Bits.hpp:132
gnsstk::OrbitDataKepler::Cis
double Cis
Sine inclination (rad)
Definition: OrbitDataKepler.hpp:180
gnsstk::OrbitDataKepler::A
double A
Semi-major axis (m)
Definition: OrbitDataKepler.hpp:186
gnsstk::bds::esbEccm
@ esbEccm
Definition: BDSD1Bits.hpp:408
gnsstk::galfnav::esiM0
@ esiM0
M0 subframe index.
Definition: GalFBits.hpp:192
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::gpslnav::ascAlpha0
@ ascAlpha0
Definition: GPSLBits.hpp:418
gnsstk::gpslnav::ascBeta1
@ ascBeta1
Definition: GPSLBits.hpp:438
gnsstk::gpslnav::anbWNLSF
@ anbWNLSF
Definition: GPSLBits.hpp:472
gnsstk::gpslnav::enbtoc
@ enbtoc
toc number of bits
Definition: GPSLBits.hpp:201
gnsstk::OrbitDataKepler::ecc
double ecc
Eccentricity.
Definition: OrbitDataKepler.hpp:185
gnsstk::gpslnav::asctot
@ asctot
Definition: GPSLBits.hpp:461
gnsstk::StdNavTimeOffset::src
TimeSystem src
Source time system.
Definition: StdNavTimeOffset.hpp:120
gnsstk::gpslnav::asbtot
@ asbtot
Definition: GPSLBits.hpp:459
gnsstk::gpslnav::escFitInt
@ escFitInt
Fit interval flag scale factor.
Definition: GPSLBits.hpp:284
gnsstk::GPSLNavData::asFlag
bool asFlag
Anti-spoof flag from HOW.
Definition: GPSLNavData.hpp:84
gnsstk::gpslnav::ascDeltatLS
@ ascDeltatLS
Definition: GPSLBits.hpp:469
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::gpslnav::enbFitInt
@ enbFitInt
Fit interval flag number of bits.
Definition: GPSLBits.hpp:283
gnsstk::gpslnav::anbtot
@ anbtot
Definition: GPSLBits.hpp:460
gnsstk::bds::enbOMEGA0l
@ enbOMEGA0l
Definition: BDSD1Bits.hpp:574
gnsstk::gpscnav2::asbAhalf
@ asbAhalf
Ahalf MSBs start bit.
Definition: GPSC2Bits.hpp:353
gnsstk::gpscnav2::anbAhalf
@ anbAhalf
Ahalf MSBs number of bits.
Definition: GPSC2Bits.hpp:354
gnsstk::NavSatelliteID
Definition: NavSatelliteID.hpp:57
gnsstk::GPSWeekSecond::weekRolloverAdj
GPSWeekSecond & weekRolloverAdj(const GPSWeekSecond &refTime)
Definition: GPSWeekSecond.hpp:235
gnsstk::gpslnav::anbAlpha0
@ anbAlpha0
Definition: GPSLBits.hpp:417
PNBGPSLNavDataFactory.hpp
gnsstk::GPSLNavEph::fitIntFlag
uint8_t fitIntFlag
Fit interval flag from subframe 2.
Definition: GPSLNavEph.hpp:100
gnsstk::bds::escw
@ escw
Definition: BDSD1Bits.hpp:579
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::gpslnav::esiIODC
@ esiIODC
IODC subframe index.
Definition: GPSLBits.hpp:145
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::bds::esiWN
@ esiWN
Reference week number.
Definition: BDSD1Bits.hpp:225
gnsstk::gpslnav::ascDataID
@ ascDataID
Definition: GPSLBits.hpp:359
gnsstk::GPSLNavData::isf
bool isf
Integrity status flag.
Definition: GPSLNavData.hpp:82
example5.oid
oid
Definition: example5.py:29
gnsstk::gpslnav::anbBeta0
@ anbBeta0
Definition: GPSLBits.hpp:433
gnsstk::SatID
Definition: SatID.hpp:89
gnsstk::gpslnav::asbAlpha0
@ asbAlpha0
Definition: GPSLBits.hpp:416
gnsstk::NavDataPtrList
std::list< NavDataPtr > NavDataPtrList
Definition: NavData.hpp:75
gnsstk::bds::enbM0m
@ enbM0m
Definition: BDSD1Bits.hpp:395
gnsstk::gpscnav2::esbURA
@ esbURA
URA index start bit.
Definition: GPSC2Bits.hpp:83
gnsstk::gpslnav::anbWNt
@ anbWNt
Definition: GPSLBits.hpp:464
gnsstk::bds::enbEccm
@ enbEccm
Definition: BDSD1Bits.hpp:409
GPSLNavIono.hpp
gnsstk::galfnav::ascaf1
@ ascaf1
Definition: GalFBits.hpp:446
gnsstk::OrbitDataKepler::Cuc
double Cuc
Cosine latitude (rad)
Definition: OrbitDataKepler.hpp:175
gnsstk::GPSLNavEph::L2Pdata
bool L2Pdata
Definition: GPSLNavEph.hpp:114
gnsstk::gpslnav::asbWNLSF
@ asbWNLSF
Definition: GPSLBits.hpp:471
GPSLNavHealth.hpp
gnsstk::gpslnav::fnbTLM
@ fnbTLM
Telemetry Message number of bits.
Definition: GPSLBits.hpp:58
gnsstk::gpslnav::fscSFID
@ fscSFID
Definition: GPSLBits.hpp:84
gnsstk::gpslnav::fnbSFID
@ fnbSFID
Definition: GPSLBits.hpp:83
gnsstk::bds::enbOMEGA0m
@ enbOMEGA0m
Definition: BDSD1Bits.hpp:564
gnsstk::gpslnav::enbIODCl
@ enbIODCl
IODC LSBs number of bits.
Definition: GPSLBits.hpp:197
gnsstk::GPSLNavEph::tlm2
uint32_t tlm2
The TLM message from word 1 of subframe 2.
Definition: GPSLNavEph.hpp:94
gnsstk::CommonTime::setTimeSystem
CommonTime & setTimeSystem(TimeSystem timeSystem)
Definition: CommonTime.hpp:195
gnsstk::gpslnav::escIODE2
@ escIODE2
IODE2 scale factor.
Definition: GPSLBits.hpp:230
gnsstk::GPSLNavData::tlm
uint32_t tlm
The TLM message from word 1 of the subframe.
Definition: GPSLNavData.hpp:81
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::gpslnav::asbDataID
@ asbDataID
Definition: GPSLBits.hpp:357
gnsstk::GPSLNavIono::alert
bool alert
Alert flag from HOW.
Definition: GPSLNavIono.hpp:68
gnsstk::bds::enbAhalfm
@ enbAhalfm
Definition: BDSD1Bits.hpp:461
gnsstk::OrbitDataKepler::w
double w
Argument of perigee (rad)
Definition: OrbitDataKepler.hpp:191
gnsstk::GPSLNavAlm::toa
double toa
Convenience storage of unqualified toa.
Definition: GPSLNavAlm.hpp:80
gnsstk::StdNavTimeOffset::wnot
unsigned wnot
Time data reference week number (storage only).
Definition: StdNavTimeOffset.hpp:129
gnsstk::GPSLNavEph::asFlag2
bool asFlag2
Anti-spoof flag from SF2 HOW.
Definition: GPSLNavEph.hpp:106
gnsstk::galfnav::escaf2
@ escaf2
af2 scale factor
Definition: GalFBits.hpp:113
gnsstk::glo::anbdeltai
@ anbdeltai
Definition: GLOFBits.hpp:317
gnsstk::OrbitDataKepler::Toe
CommonTime Toe
Orbit epoch.
Definition: OrbitDataKepler.hpp:171
gnsstk::gpslnav::esbFitInt
@ esbFitInt
Fit interval flag start bit.
Definition: GPSLBits.hpp:282
gnsstk::OrbitDataKepler::Crs
double Crs
Sine radius (m)
Definition: OrbitDataKepler.hpp:178
gnsstk::GPSLNavEph::tlm3
uint32_t tlm3
The TLM message from word 1 of subframe 3.
Definition: GPSLNavEph.hpp:95
gnsstk::galfnav::esiOMEGA0
@ esiOMEGA0
OMEGA0 subframe index.
Definition: GalFBits.hpp:212
gnsstk::gpslnav::asbtoa51
@ asbtoa51
Definition: GPSLBits.hpp:485
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::GPSLNavEph::aodo
long aodo
Age of Data Offset in seconds (-1=uninitialized).
Definition: GPSLNavEph.hpp:115
gnsstk::GPSLNavEph::uraIndex
uint8_t uraIndex
4-bit URA index from subframe 1, word 3.
Definition: GPSLNavEph.hpp:102
gnsstk::gpslnav::esitoc
@ esitoc
toc subframe index
Definition: GPSLBits.hpp:199
gnsstk::StdNavTimeOffset::wnLSF
unsigned wnLSF
Leap second reference week number (UTC only).
Definition: StdNavTimeOffset.hpp:133
gnsstk::gpslnav::asbAlpha3
@ asbAlpha3
Definition: GPSLBits.hpp:428
gnsstk::gpslnav::ascPageID
@ ascPageID
Definition: GPSLBits.hpp:363
gnsstk::bds::esbCus
@ esbCus
Definition: BDSD1Bits.hpp:427
gnsstk
For Sinex::InputHistory.
Definition: BasicFramework.cpp:50
gnsstk::StdNavTimeOffset::a1
double a1
Drift coefficient of source time scale.
Definition: StdNavTimeOffset.hpp:123
gnsstk::gpslnav::enbIODE3
@ enbIODE3
IODE3 number of bits.
Definition: GPSLBits.hpp:337
gnsstk::InterSigCorr::isc
double isc
Definition: InterSigCorr.hpp:171
gnsstk::bds::fscPre
@ fscPre
Preamble scale factor.
Definition: BDSD1Bits.hpp:54
gnsstk::gpslnav::anbWNa51
@ anbWNa51
Definition: GPSLBits.hpp:490
gnsstk::gpslnav::asbDeltatLSF
@ asbDeltatLSF
Definition: GPSLBits.hpp:479
gnsstk::gpslnav::esiIODE3
@ esiIODE3
IODE3 subframe index.
Definition: GPSLBits.hpp:335
gnsstk::GPSWeekSecond
Definition: GPSWeekSecond.hpp:56
gnsstk::bds::esbOMEGA0l
@ esbOMEGA0l
Definition: BDSD1Bits.hpp:573
gnsstk::galfnav::escaf0
@ escaf0
af0 scale factor
Definition: GalFBits.hpp:103
gnsstk::OrbitDataKepler::xmitTime
CommonTime xmitTime
Time of transmission of the start of the data.
Definition: OrbitDataKepler.hpp:170
gnsstk::gpslnav::fsbISF
@ fsbISF
Integrity Status Flag bit.
Definition: GPSLBits.hpp:61
gnsstk::gpslnav::asbA0m
@ asbA0m
Definition: GPSLBits.hpp:452
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::bds::esbWN
@ esbWN
Definition: BDSD1Bits.hpp:226
gnsstk::gpslnav::anbPageID
@ anbPageID
Definition: GPSLBits.hpp:362
gnsstk::bds::enbCrs
@ enbCrs
Definition: BDSD2Bits.hpp:1056
gnsstk::StdNavTimeOffset::dn
unsigned dn
Leap second reference day number (UTC only).
Definition: StdNavTimeOffset.hpp:134
gnsstk::OrbitDataKepler::M0
double M0
Mean anomaly (rad)
Definition: OrbitDataKepler.hpp:182
gnsstk::Exception
Definition: Exception.hpp:151
gnsstk::GPSLNavL2Codes
GPSLNavL2Codes
Codes on L2 channel, per IS-GPS-200 20.3.3.3.1.2.
Definition: GPSLNavL2Codes.hpp:51
gnsstk::SatelliteSystem::GPS
@ GPS
gnsstk::MAX_PRN_GPS
const long MAX_PRN_GPS
Definition: gps_constants.hpp:59
gnsstk::gpslnav::ascAlpha2
@ ascAlpha2
Definition: GPSLBits.hpp:426
gnsstk::bds::esbEccl
@ esbEccl
Definition: BDSD1Bits.hpp:418
gnsstk::gpslnav::enbIODE2
@ enbIODE2
IODE2 number of bits.
Definition: GPSLBits.hpp:229
gnsstk::GPSLNavEph::isf3
bool isf3
Integrity status flag from subframe 3.
Definition: GPSLNavEph.hpp:97
gnsstk::galfnav::esiAhalf
@ esiAhalf
Ahalf subframe index.
Definition: GalFBits.hpp:207
gnsstk::gpslnav::anbaf0m
@ anbaf0m
Definition: GPSLBits.hpp:404
gnsstk::GPSLNavIono::tlm
uint32_t tlm
The TLM message from word 1 of the subframe.
Definition: GPSLNavIono.hpp:66
gnsstk::bds::ascM0
@ ascM0
Definition: BDSD1Bits.hpp:173
gnsstk::gpslnav::asbA0l
@ asbA0l
Definition: GPSLBits.hpp:456
gnsstk::gpslnav::ascDN
@ ascDN
Definition: GPSLBits.hpp:477
gnsstk::GPSLNavData::alert
bool alert
Alert flag from HOW.
Definition: GPSLNavData.hpp:83
gnsstk::bds::ascAhalf
@ ascAhalf
Definition: BDSD1Bits.hpp:94
gnsstk::galfnav::esiaf1
@ esiaf1
af1 subframe index
Definition: GalFBits.hpp:105
gnsstk::gpslnav::anbBeta1
@ anbBeta1
Definition: GPSLBits.hpp:437
gnsstk::galfnav::enbaf2
@ enbaf2
af2 number of bits
Definition: GalFBits.hpp:112
gnsstk::bds::enbCis
@ enbCis
Definition: BDSD2Bits.hpp:994
gnsstk::gpslnav::anbBeta2
@ anbBeta2
Definition: GPSLBits.hpp:441
gnsstk::bds::esbwl
@ esbwl
Definition: BDSD1Bits.hpp:587
gnsstk::gpslnav::enbAODO
@ enbAODO
AODO number of bits.
Definition: GPSLBits.hpp:288
gnsstk::bds::esiCrs
@ esiCrs
Definition: BDSD2Bits.hpp:1054
gnsstk::galfnav::anbM0
@ anbM0
Definition: GalFBits.hpp:435
gnsstk::gpslnav::anbBeta3
@ anbBeta3
Definition: GPSLBits.hpp:445
gnsstk::gpscnav::esiHea
@ esiHea
Signal health message index.
Definition: GPSCBits.hpp:100
gnsstk::galfnav::enbCrc
@ enbCrc
Crc number of bits.
Definition: GalFBits.hpp:266
gnsstk::gpslnav::anbDeltatLS
@ anbDeltatLS
Definition: GPSLBits.hpp:468
gnsstk::OrbitDataKepler::Cus
double Cus
Sine latitude (rad)
Definition: OrbitDataKepler.hpp:176
gnsstk::gpslnav::anbDataID
@ anbDataID
Definition: GPSLBits.hpp:358
gnsstk::bds::enbi0m
@ enbi0m
Definition: BDSD1Bits.hpp:494
gnsstk::bds::esbOMEGA0m
@ esbOMEGA0m
Definition: BDSD1Bits.hpp:563
gnsstk::gpslnav::esiL2
@ esiL2
L2 codes subframe index.
Definition: GPSLBits.hpp:130
gnsstk::bds::sf2
@ sf2
Definition: BDSD1Bits.hpp:192
gnsstk::bds::enbAhalfl
@ enbAhalfl
Definition: BDSD1Bits.hpp:471
gnsstk::gpslnav::asbHea
@ asbHea
Health bits.
Definition: GPSLBits.hpp:383
gnsstk::bds::escOMEGA0
@ escOMEGA0
Definition: BDSD1Bits.hpp:565
gnsstk::TimeSystem::QZS
@ QZS
QZSS system Time.
gnsstk::GPSLNavEph::healthBits
uint8_t healthBits
6 SV health bits from subframe 1, word 3.
Definition: GPSLNavEph.hpp:101
gnsstk::gpslnav::esbIODCm
@ esbIODCm
IODC MSBs start bit.
Definition: GPSLBits.hpp:146
gnsstk::gpscnav2::asbM0
@ asbM0
M0 start bit.
Definition: GPSC2Bits.hpp:365
gnsstk::GPSLNavISC::tlm
uint32_t tlm
The TLM message from word 1 of the subframe.
Definition: GPSLNavISC.hpp:69
gnsstk::GPSLNavEph::pre3
uint32_t pre3
The TLM preamble from word 1 of subframe 3.
Definition: GPSLNavEph.hpp:93
gnsstk::gpslnav::escHea
@ escHea
SV health scale factor.
Definition: GPSLBits.hpp:143
gnsstk::bds::esbCis
@ esbCis
Definition: BDSD2Bits.hpp:993
gnsstk::gpscnav2::enbTGD
@ enbTGD
Tgd number of bits.
Definition: GPSC2Bits.hpp:184
gnsstk::ObsID
Definition: ObsID.hpp:82
gnsstk::gpslnav::fsbTLM
@ fsbTLM
Telemetry Message start bit.
Definition: GPSLBits.hpp:57
gnsstk::timeAdjustWeekRollover
long timeAdjustWeekRollover(long toCorrectWeek, long &refWeek)
Definition: TimeCorrection.cpp:46
gnsstk::bds::escOMEGAdot
@ escOMEGAdot
Definition: BDSD1Bits.hpp:523
gnsstk::gpslnav::ascBeta2
@ ascBeta2
Definition: GPSLBits.hpp:442
gnsstk::OrbitDataKepler::Ahalf
double Ahalf
Square Root of semi-major axis (m**.5)
Definition: OrbitDataKepler.hpp:187
gnsstk::NavSatelliteID::sat
SatID sat
ID of satellite to which the nav data applies.
Definition: NavSatelliteID.hpp:169
gnsstk::galfnav::esbaf2
@ esbaf2
af2 start bit
Definition: GalFBits.hpp:111
gnsstk::bds::anbA1
@ anbA1
Definition: BDSD1Bits.hpp:108
gnsstk::gpslnav::anbAlpha2
@ anbAlpha2
Definition: GPSLBits.hpp:425
gnsstk::GPSLNavEph::xmit2
CommonTime xmit2
Transmit time for subframe 2.
Definition: GPSLNavEph.hpp:90
gnsstk::gpslnav::fscTLM
@ fscTLM
Telemetry Message scale factor.
Definition: GPSLBits.hpp:59
gnsstk::gpslnav::anbaf0l
@ anbaf0l
Definition: GPSLBits.hpp:412
gnsstk::bds::escidot
@ escidot
Definition: BDSD1Bits.hpp:551
gnsstk::OrbitDataKepler::Toc
CommonTime Toc
Clock epoch.
Definition: OrbitDataKepler.hpp:172
gnsstk::timeAdjust8BitWeekRollover
long timeAdjust8BitWeekRollover(long toCorrectWeek, long &refWeek)
Definition: TimeCorrection.cpp:77
gnsstk::bds::fnbPre
@ fnbPre
Preamble number of bits.
Definition: BDSD1Bits.hpp:53
gnsstk::GPSLNavEph::iode
uint16_t iode
Issue Of Data-Ephemeris.
Definition: GPSLNavEph.hpp:99
gnsstk::bds::ascA1
@ ascA1
Definition: BDSD1Bits.hpp:109
gnsstk::GPSLNavEph::fixFit
void fixFit()
Definition: GPSLNavEph.cpp:92
gnsstk::gpslnav::anbAlpha1
@ anbAlpha1
Definition: GPSLBits.hpp:421
gnsstk::gpscnav2::enbURA
@ enbURA
URA index number of bits.
Definition: GPSC2Bits.hpp:84
gnsstk::gpslnav::ascAlpha3
@ ascAlpha3
Definition: GPSLBits.hpp:430
gnsstk::bds::anbtoa
@ anbtoa
Definition: BDSD1Bits.hpp:146
gnsstk::gpslnav::esiTGD
@ esiTGD
Tgd subframe index.
Definition: GPSLBits.hpp:187
gnsstk::Week::week
int week
Full week number.
Definition: Week.hpp:267
gnsstk::gpslnav::esbHea
@ esbHea
SV health start bit.
Definition: GPSLBits.hpp:141
gnsstk::gpslnav::enbL2
@ enbL2
L2 codes number of bits.
Definition: GPSLBits.hpp:132
gnsstk::KlobucharIonoNavData::beta
double beta[4]
beta terms of Klobuchar model, using semi-circles.
Definition: KlobucharIonoNavData.hpp:85
gnsstk::bds::esbi0m
@ esbi0m
Definition: BDSD1Bits.hpp:493
gnsstk::gpslnav::anbA0l
@ anbA0l
Definition: GPSLBits.hpp:457
gnsstk::gpscnav2::esbTGD
@ esbTGD
Tgd start bit.
Definition: GPSC2Bits.hpp:183
gnsstk::gpscnav2::asbaf1
@ asbaf1
af1 start bit
Definition: GPSC2Bits.hpp:373
gnsstk::GPSLNavAlm::fixFit
void fixFit()
Fill the beginFit and endFit values for this object.
Definition: GPSLNavAlm.cpp:65
gnsstk::gpslnav::esbAODO
@ esbAODO
AODO start bit.
Definition: GPSLBits.hpp:287
gnsstk::gpslnav::escIODE3
@ escIODE3
IODE3 scale factor.
Definition: GPSLBits.hpp:338
gnsstk::gpscnav2::esbtoe
@ esbtoe
toe start bit
Definition: GPSC2Bits.hpp:87
gnsstk::SatID::system
SatelliteSystem system
System for this satellite.
Definition: SatID.hpp:156
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::GPSLNavAlm::deltai
double deltai
Inclination in rad relative to 0.3*pi rad.
Definition: GPSLNavAlm.hpp:79
gnsstk::bds::enbM0l
@ enbM0l
Definition: BDSD1Bits.hpp:405
gnsstk::GPSLNavISC::pre
uint32_t pre
The TLM preamble from word 1 of the subframe.
Definition: GPSLNavISC.hpp:68
gnsstk::OrbitDataKepler::i0
double i0
Inclination (rad)
Definition: OrbitDataKepler.hpp:190
gnsstk::bds::enbwm
@ enbwm
Definition: BDSD1Bits.hpp:578
GPSLBits.hpp
gnsstk::gpslnav::esbtoc
@ esbtoc
toc start bit
Definition: GPSLBits.hpp:200
gnsstk::bds::asbEcc
@ asbEcc
Eccentricity.
Definition: BDSD1Bits.hpp:130
gnsstk::gpslnav::asbWNt
@ asbWNt
Definition: GPSLBits.hpp:463
gnsstk::gpslnav::asbBeta0
@ asbBeta0
Definition: GPSLBits.hpp:432
gnsstk::GPSLNavData::pre
uint32_t pre
The TLM preamble from word 1 of the subframe.
Definition: GPSLNavData.hpp:80
gnsstk::gpslnav::esbL2
@ esbL2
L2 codes start bit.
Definition: GPSLBits.hpp:131
gnsstk::OrbitDataKepler::Cic
double Cic
Cosine inclination (rad)
Definition: OrbitDataKepler.hpp:179
gnsstk::bds::ascOMEGAdot
@ ascOMEGAdot
Definition: BDSD1Bits.hpp:151
gnsstk::gpscnav2::asbOMEGA0
@ asbOMEGA0
OMEGA0 MSBs start bit.
Definition: GPSC2Bits.hpp:357
gnsstk::GPSLNavIono
Class containing data elements unique to GPS LNav ionospheric data.
Definition: GPSLNavIono.hpp:50
gnsstk::GPSLNavTimeOffset
Definition: GPSLNavTimeOffset.hpp:53
gnsstk::GPSLNavISC::asFlag
bool asFlag
Anti-spoof flag from HOW.
Definition: GPSLNavISC.hpp:72
gnsstk::gpslnav::esbIODE3
@ esbIODE3
IODE3 start bit.
Definition: GPSLBits.hpp:336
gnsstk::OrbitDataKepler::Crc
double Crc
Cosine radius (m)
Definition: OrbitDataKepler.hpp:177
gnsstk::bds::esbi0l
@ esbi0l
Definition: BDSD1Bits.hpp:503
gnsstk::galfnav::esiaf2
@ esiaf2
af2 subframe index
Definition: GalFBits.hpp:110
gnsstk::gpslnav::esiL2P
@ esiL2P
L2 P data flag subframe index.
Definition: GPSLBits.hpp:154
gnsstk::bds::esctoe
@ esctoe
Definition: BDSD1Bits.hpp:476
gnsstk::bds::sf1
@ sf1
Definition: BDSD1Bits.hpp:191
gnsstk::bds::enbi0l
@ enbi0l
Definition: BDSD1Bits.hpp:504
gnsstk::gpslnav::asbBeta3
@ asbBeta3
Definition: GPSLBits.hpp:444
gnsstk::GPSLNavISC::alert
bool alert
Alert flag from HOW.
Definition: GPSLNavISC.hpp:71
gnsstk::gpslnav::ascAlpha1
@ ascAlpha1
Definition: GPSLBits.hpp:422
gnsstk::galfnav::esiCuc
@ esiCuc
Cuc subframe index.
Definition: GalFBits.hpp:254
gnsstk::bds::escEcc
@ escEcc
Definition: BDSD1Bits.hpp:410
gnsstk::GPSLNavEph::asFlag3
bool asFlag3
Anti-spoof flag from SF3 HOW.
Definition: GPSLNavEph.hpp:107
gnsstk::bds::esiCis
@ esiCis
Definition: BDSD2Bits.hpp:992
gnsstk::galfnav::esiCic
@ esiCic
Cic subframe index.
Definition: GalFBits.hpp:296
gnsstk::gpslnav::esitoe
@ esitoe
toe subframe index
Definition: GPSLBits.hpp:276
gnsstk::glo::ascdeltai
@ ascdeltai
Definition: GLOFBits.hpp:318
std
Definition: Angle.hpp:142
gnsstk::gpslnav::anbtoa51
@ anbtoa51
Definition: GPSLBits.hpp:486
gnsstk::OrbitDataKepler::af0
double af0
SV clock error (sec)
Definition: OrbitDataKepler.hpp:195
gnsstk::gpslnav::anbDN
@ anbDN
Definition: GPSLBits.hpp:476
gnsstk::gpscnav::esiURA
@ esiURA
URA index message index.
Definition: GPSCBits.hpp:110
gnsstk::bds::asbtoa
@ asbtoa
toa (reference time)
Definition: BDSD1Bits.hpp:145
gnsstk::gpslnav::anbDeltatLSF
@ anbDeltatLSF
Definition: GPSLBits.hpp:480
gnsstk::bds::escWN
@ escWN
Definition: BDSD1Bits.hpp:228
gnsstk::KlobucharIonoNavData::alpha
double alpha[4]
alpha terms of Klobuchar model, using semi-circles.
Definition: KlobucharIonoNavData.hpp:84
gnsstk::galfnav::esiaf0
@ esiaf0
af0 subframe index
Definition: GalFBits.hpp:100
gnsstk::gpslnav::ascWNa51
@ ascWNa51
Definition: GPSLBits.hpp:491
gnsstk::gpscnav2::asbOMEGAdot
@ asbOMEGAdot
OMEGAdot start bit.
Definition: GPSC2Bits.hpp:349
gnsstk::gpslnav::ascWNt
@ ascWNt
Definition: GPSLBits.hpp:465
gnsstk::GPSLNavIono::pre
uint32_t pre
The TLM preamble from word 1 of the subframe.
Definition: GPSLNavIono.hpp:65
gnsstk::galfnav::esbaf0
@ esbaf0
af0 start bit
Definition: GalFBits.hpp:101
gnsstk::gpslnav::asbBeta2
@ asbBeta2
Definition: GPSLBits.hpp:440
gnsstk::bds::escdn
@ escdn
Definition: BDSD1Bits.hpp:368
gnsstk::gpslnav::esbIODE2
@ esbIODE2
IODE2 start bit.
Definition: GPSLBits.hpp:228
gnsstk::galfnav::enbCic
@ enbCic
Cic number of bits.
Definition: GalFBits.hpp:298
gnsstk::gpslnav::esbIODCl
@ esbIODCl
IODC LSBs start bit.
Definition: GPSLBits.hpp:196
gnsstk::bds::esbAhalfm
@ esbAhalfm
Definition: BDSD1Bits.hpp:460
gnsstk::GPSLNavEph::iodc
uint16_t iodc
Issue Of Data-Clock for the ephemeris.
Definition: GPSLNavEph.hpp:98
gnsstk::bds::asctoa
@ asctoa
Definition: BDSD1Bits.hpp:147
GPSLNavTimeOffset.hpp
gnsstk::gpslnav::ascWNLSF
@ ascWNLSF
Definition: GPSLBits.hpp:473
gnsstk::bds::esctoc
@ esctoc
Definition: BDSD1Bits.hpp:233
gnsstk::bds::escCrc
@ escCrc
Definition: BDSD1Bits.hpp:434
gnsstk::galfnav::enbaf1
@ enbaf1
af1 number of bits
Definition: GalFBits.hpp:107
gnsstk::gpslnav::anbHea
@ anbHea
Definition: GPSLBits.hpp:384
gnsstk::gpslnav::esbL2P
@ esbL2P
L2 P data flag start bit.
Definition: GPSLBits.hpp:155
gnsstk::gpslnav::asctoa51
@ asctoa51
Definition: GPSLBits.hpp:487
gnsstk::MAX_PRN_QZS_LNAV
const int MAX_PRN_QZS_LNAV
Last assigned PRN in QZSS (LNAV only)
Definition: GNSSconstants.hpp:244
gnsstk::StdNavTimeOffset::a0
double a0
Bias coefficient of source time scale.
Definition: StdNavTimeOffset.hpp:122
gnsstk::gpslnav::enbIODCm
@ enbIODCm
IODC MSBs number of bits.
Definition: GPSLBits.hpp:147
gnsstk::gpslnav::esiIODE2
@ esiIODE2
IODE2 subframe index.
Definition: GPSLBits.hpp:227
GPSLNavISC.hpp
gnsstk::galfnav::esbCrc
@ esbCrc
Crc start bit.
Definition: GalFBits.hpp:265
gnsstk::GPSLNavEph
Class containing data elements unique to GPS LNav ephemerides.
Definition: GPSLNavEph.hpp:51
gnsstk::galfnav::esbCic
@ esbCic
Cic start bit.
Definition: GalFBits.hpp:297
gnsstk::NavID
Definition: NavID.hpp:61
gnsstk::gpslnav::asbWNa51
@ asbWNa51
Definition: GPSLBits.hpp:489
gnsstk::gpslnav::asbAlpha2
@ asbAlpha2
Definition: GPSLBits.hpp:424
gnsstk::gpslnav
Definition: GPSLBits.hpp:45
gnsstk::bds::esidn
@ esidn
Definition: BDSD2Bits.hpp:871
GPSLNavEph.hpp
gnsstk::OrbitDataKepler::health
SVHealth health
SV health status.
Definition: OrbitDataKepler.hpp:173
gnsstk::bds::enbwl
@ enbwl
Definition: BDSD1Bits.hpp:588
gnsstk::gpslnav::escL2
@ escL2
L2 codes scale factor.
Definition: GPSLBits.hpp:133
gnsstk::gpslnav::fsbAS
@ fsbAS
Anti-spoof flag start bit.
Definition: GPSLBits.hpp:79
gnsstk::GPSLNavAlm::healthBits
uint8_t healthBits
8 SV health bits.
Definition: GPSLNavAlm.hpp:78
gnsstk::galfnav::enbOMEGAdot
@ enbOMEGAdot
OMEGAdot number of bits.
Definition: GalFBits.hpp:199
gnsstk::gpslnav::asbaf0m
@ asbaf0m
af0 MSBs start bit
Definition: GPSLBits.hpp:403
gnsstk::gpslnav::asbDN
@ asbDN
Definition: GPSLBits.hpp:475
gnsstk::OrbitDataKepler::OMEGA0
double OMEGA0
Longitude of ascending node at weekly epoch (rad)
Definition: OrbitDataKepler.hpp:189
gnsstk::bds::enbWN
@ enbWN
Definition: BDSD1Bits.hpp:227
gnsstk::bds::esbM0m
@ esbM0m
Definition: BDSD1Bits.hpp:394
gnsstk::GPSLNavIono::asFlag
bool asFlag
Anti-spoof flag from HOW.
Definition: GPSLNavIono.hpp:69
GPSLNavAlm.hpp
gnsstk::StdNavTimeOffset::effTime
CommonTime effTime
Effectivity time (wnLSF,dn).
Definition: StdNavTimeOffset.hpp:127
gnsstk::gpslnav::ascDeltatLSF
@ ascDeltatLSF
Definition: GPSLBits.hpp:481
gnsstk::SatelliteSystem::QZSS
@ QZSS
gnsstk::galfnav::esii0
@ esii0
i0 subframe index
Definition: GalFBits.hpp:239
gnsstk::gpslnav::escAODO
@ escAODO
AODO scale factor.
Definition: GPSLBits.hpp:289
gnsstk::gpscnav2::enbtoe
@ enbtoe
toe number of bits
Definition: GPSC2Bits.hpp:88
gnsstk::galfnav::escaf1
@ escaf1
af1 scale factor
Definition: GalFBits.hpp:108
gnsstk::galfnav::anbaf1
@ anbaf1
Definition: GalFBits.hpp:445
gnsstk::GPSLNavIono::isf
bool isf
Integrity status flag.
Definition: GPSLNavIono.hpp:67
gnsstk::galfnav::esbCuc
@ esbCuc
Cuc start bit.
Definition: GalFBits.hpp:255
gnsstk::GPSLNavAlm
Class containing data elements unique to GPS LNav almanac pages.
Definition: GPSLNavAlm.hpp:50
gnsstk::StdNavTimeOffset::refTime
CommonTime refTime
Reference time for computation.
Definition: StdNavTimeOffset.hpp:126
TimeCorrection.hpp
gnsstk::bds::escCrs
@ escCrs
Definition: BDSD1Bits.hpp:448
gnsstk::GPSLNavISC::isf
bool isf
Integrity status flag.
Definition: GPSLNavISC.hpp:70
gnsstk::GPSLNavEph::pre2
uint32_t pre2
The TLM preamble from word 1 of subframe 2.
Definition: GPSLNavEph.hpp:92
gnsstk::bds::sf3
@ sf3
Definition: BDSD1Bits.hpp:193
gnsstk::gpslnav::fsbSFID
@ fsbSFID
Subframe ID.
Definition: GPSLBits.hpp:82
gnsstk::gpslnav::esiFitInt
@ esiFitInt
Fit interval flag subframe index.
Definition: GPSLBits.hpp:281
gnsstk::OrbitDataKepler::af1
double af1
SV clock drift (sec/sec)
Definition: OrbitDataKepler.hpp:196
gnsstk::gpscnav2::escURA
@ escURA
URA index scale factor.
Definition: GPSC2Bits.hpp:85
gnsstk::bds::enbdn
@ enbdn
Definition: BDSD2Bits.hpp:873
gnsstk::bds::escCis
@ escCis
Definition: BDSD1Bits.hpp:537
gnsstk::GPSLNavISC
Definition: GPSLNavISC.hpp:53
gnsstk::GPSLNavEph::tgd
double tgd
Ionospheric group delay in seconds.
Definition: GPSLNavEph.hpp:103
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::bds::enbEccl
@ enbEccl
Definition: BDSD1Bits.hpp:419
gnsstk::gpslnav::escIODC
@ escIODC
IODC scale factor.
Definition: GPSLBits.hpp:148
gnsstk::glo::asbdeltai
@ asbdeltai
Definition: GLOFBits.hpp:316
gnsstk::bds::ascA0
@ ascA0
Definition: BDSD1Bits.hpp:113
gnsstk::gpslnav::asbaf0l
@ asbaf0l
af0 LSBs start bit
Definition: GPSLBits.hpp:411
gnsstk::GPSLNavEph::alert3
bool alert3
Alert flag from SF3 HOW.
Definition: GPSLNavEph.hpp:105
gnsstk::bds::esiCus
@ esiCus
Definition: BDSD1Bits.hpp:426
gnsstk::gpslnav::asbPageID
@ asbPageID
Definition: GPSLBits.hpp:361
gnsstk::galfnav::esbidot
@ esbidot
idot start bit
Definition: GalFBits.hpp:218
gnsstk::GPSLNavHealth
Definition: GPSLNavHealth.hpp:51


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