PNBGPSCNavDataFactory.cpp
Go to the documentation of this file.
1 //==============================================================================
2 //
3 // This file is part of GNSSTk, the ARL:UT GNSS Toolkit.
4 //
5 // The GNSSTk is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU Lesser General Public License as published
7 // by the Free Software Foundation; either version 3.0 of the License, or
8 // any later version.
9 //
10 // The GNSSTk is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU Lesser General Public License for more details.
14 //
15 // You should have received a copy of the GNU Lesser General Public
16 // License along with GNSSTk; if not, write to the Free Software Foundation,
17 // Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
18 //
19 // This software was developed by Applied Research Laboratories at the
20 // University of Texas at Austin.
21 // Copyright 2004-2022, The Board of Regents of The University of Texas System
22 //
23 //==============================================================================
24 
25 
26 //==============================================================================
27 //
28 // This software was developed by Applied Research Laboratories at the
29 // University of Texas at Austin, under contract to an agency or agencies
30 // within the U.S. Department of Defense. The U.S. Government retains all
31 // rights to use, duplicate, distribute, disclose, or release this software.
32 //
33 // Pursuant to DoD Directive 523024
34 //
35 // DISTRIBUTION STATEMENT A: This software has been approved for public
36 // release, distribution is unlimited.
37 //
38 //==============================================================================
39 #include <math.h>
41 #include "GPSCNavAlm.hpp"
42 #include "GPSCNavRedAlm.hpp"
43 #include "GPSCNavEph.hpp"
44 #include "GPSCNavHealth.hpp"
45 #include "GPSCNavTimeOffset.hpp"
46 #include "GPSCNavIono.hpp"
47 #include "GPSCNavISC.hpp"
48 #include "TimeCorrection.hpp"
49 #include "GPSCBits.hpp"
50 
51 using namespace std;
52 using namespace gnsstk::gpscnav;
53 
54 namespace gnsstk
55 {
56  bool PNBGPSCNavDataFactory ::
57  addData(const PackedNavBitsPtr& navIn, NavDataPtrList& navOut,
58  double cadence)
59  {
60  if ((navIn->getNavID().navType != NavType::GPSCNAVL2) &&
61  (navIn->getNavID().navType != NavType::GPSCNAVL5))
62  {
63  // This class only processes GPS CNav.
64  return false;
65  }
66  bool rv = true;
67  bool isQZSS = navIn->getsatSys().system == SatelliteSystem::QZSS;
68  try
69  {
70  // cerr << "preamble: " << hex << navIn->asUnsignedLong(0,8,1) << dec
71  // << endl;
72  // unsigned long prn = navIn->asUnsignedLong(8, 6, 1);
73  // cerr << "prn = " << prn << endl;
74  unsigned long msgType = navIn->asUnsignedLong(esbMsgType,enbMsgType,
75  escMsgType);
76  // cerr << "msgType = " << msgType << endl;
77  unsigned long svid = 0;
78  // Clock messages (30-37) may get processed twice, once
79  // for ephemeris and once for whatever else they might
80  // contain.
81  if ((msgType == 10) || (msgType == 11) ||
82  ((msgType >= 30) && (msgType <= 37)) ||
83  (isQZSS && ((msgType == 46) || (msgType == 47) ||
84  (msgType == 49) || (msgType == 51) ||
85  (msgType == 53) || (msgType == 61))))
86  {
87  rv = rv && processEph(msgType, navIn, navOut);
88  }
89  if ((msgType == 31) || (isQZSS && (msgType == 47)))
90  {
91  rv = rv && process31(msgType, navIn, navOut);
92  }
93  else if ((msgType == 30) || (isQZSS && (msgType == 61)))
94  {
95  rv = rv && process30(navIn, navOut);
96  }
97  else if ((msgType == 12) || (isQZSS && (msgType == 28)))
98  {
99  rv = rv && process12(msgType, navIn, navOut);
100  }
101  else if ((msgType == 33) || (isQZSS && (msgType == 49)))
102  {
103  rv = rv && process33(navIn, navOut);
104  }
105  else if ((msgType == 35) || (isQZSS && (msgType == 51)))
106  {
107  rv = rv && process35(navIn, navOut);
108  }
109  else if ((msgType == 37) || (isQZSS && (msgType == 53)))
110  {
111  rv = rv && processAlmOrb(msgType, navIn, navOut);
112  }
113  // cerr << " results: " << navOut.size() << endl;
114  // for (const auto& i : navOut)
115  // i->dump(cerr,gnsstk::DumpDetail::Full);
116  }
117  catch (gnsstk::Exception& exc)
118  {
119  rv = false;
120  cerr << exc << endl;
121  }
122  catch (std::exception& exc)
123  {
124  rv = false;
125  cerr << exc.what() << endl;
126  }
127  catch (...)
128  {
129  rv = false;
130  cerr << "Unknown exception" << endl;
131  }
132  return rv;
133  }
134 
135 
136  bool PNBGPSCNavDataFactory ::
137  processEph(unsigned msgType, const PackedNavBitsPtr& navIn,
138  NavDataPtrList& navOut)
139  {
143  unsigned prn = navIn->getsatSys().id;
144  unsigned vecIdx;
145  switch (msgType)
146  {
147  case 10:
148  vecIdx = ephM10;
149  break;
150  case 11:
151  vecIdx = ephM11;
152  break;
153  case 30:
154  case 31:
155  case 32:
156  case 33:
157  case 34:
158  case 35:
159  case 36:
160  case 37:
165  case 46: // QZSS rebroadcast of GPS MT 30
166  case 47: // QZSS rebroadcast of GPS MT 31
167  case 49: // QZSS rebroadcast of GPS MT 33
168  case 51: // QZSS rebroadcast of GPS MT 35
169  case 53: // QZSS rebroadcast of GPS MT 37
170  case 61: // QZSS "Japan area" ionospheric parameters
171  vecIdx = ephMClk;
172  break;
173  default:
174  return false;
175  }
176  if ((msgType == 10) && processHea)
177  {
178  // Add ephemeris health bits from message type 10.
179  NavDataPtr p1L1 = std::make_shared<GPSCNavHealth>();
180  NavDataPtr p1L2 = std::make_shared<GPSCNavHealth>();
181  NavDataPtr p1L5 = std::make_shared<GPSCNavHealth>();
182  p1L1->timeStamp = navIn->getTransmitTime();
183  p1L2->timeStamp = navIn->getTransmitTime();
184  p1L5->timeStamp = navIn->getTransmitTime();
189  p1L1->signal = NavMessageID(
190  NavSatelliteID(prn, prn, navIn->getsatSys().system,
191  CarrierBand::L1, TrackingCode::CA,
192  NavType::GPSLNAV),
193  NavMessageType::Health);
194  if (navIn->getobsID().band == CarrierBand::L2)
195  {
196  p1L2->signal = NavMessageID(
197  NavSatelliteID(prn, navIn->getsatSys(), navIn->getobsID(),
198  navIn->getNavID()),
199  NavMessageType::Health);
200  p1L5->signal = NavMessageID(
201  NavSatelliteID(prn, prn, navIn->getsatSys().system,
202  CarrierBand::L5, TrackingCode::L5I,
203  NavType::GPSCNAVL5),
204  NavMessageType::Health);
205  }
206  else
207  {
208  // assume L5
209  p1L2->signal = NavMessageID(
210  NavSatelliteID(prn, prn, navIn->getsatSys().system,
211  CarrierBand::L2, TrackingCode::L2CM,
212  NavType::GPSCNAVL2),
213  NavMessageType::Health);
214  p1L5->signal = NavMessageID(
215  NavSatelliteID(prn, navIn->getsatSys(), navIn->getobsID(),
216  navIn->getNavID()),
217  NavMessageType::Health);
218  }
219  dynamic_cast<GPSCNavHealth*>(p1L1.get())->health =
220  navIn->asBool(esbHeaL1);
221  dynamic_cast<GPSCNavHealth*>(p1L2.get())->health =
222  navIn->asBool(esbHeaL2);
223  dynamic_cast<GPSCNavHealth*>(p1L5.get())->health =
224  navIn->asBool(esbHeaL5);
225  // cerr << "add CNAV eph health" << endl;
226  navOut.push_back(p1L1);
227  // cerr << "add CNAV eph health" << endl;
228  navOut.push_back(p1L2);
229  // cerr << "add CNAV eph health" << endl;
230  navOut.push_back(p1L5);
231  }
232  if (!PNBNavDataFactory::processEph)
233  {
234  // User doesn't want ephemerides so don't do any processing.
235  return true;
236  }
237  if (ephAcc.find(prn) == ephAcc.end())
238  {
239  // set up a new ephemeris
240  ephAcc[prn].resize(3);
241  ephAcc[prn][vecIdx] = navIn;
242  // nothing in navOut yet and no further processing because
243  // we only have one of three message types at this point.
244  return true;
245  }
246  std::vector<PackedNavBitsPtr> &ephSF(ephAcc[prn]);
247  ephSF[vecIdx] = navIn;
248  // stop processing if we don't have three full message types
249  if (!ephSF[ephM10] || !ephSF[ephM11] || !ephSF[ephMClk] ||
250  (ephSF[ephM10]->getNumBits() != 300) ||
251  (ephSF[ephM11]->getNumBits() != 300) ||
252  (ephSF[ephMClk]->getNumBits() != 300))
253  {
254  // cerr << "Not ready for full CNAV eph processing" << endl;
255  return true;
256  }
257  // Stop processing if we don't have matching toe/toc in
258  // each of the three message types.
264  double toe10 = ephSF[esitoe1]->asUnsignedLong(esbtoe1,enbtoe1,esctoe1);
265  double toe11 = ephSF[esitoe2]->asUnsignedLong(esbtoe2,enbtoe2,esctoe2);
266  double toc = ephSF[csitoc]->asUnsignedLong(csbtoc,cnbtoc,csctoc);
267  if ((toe10 != toe11) || (toe10 != toc))
268  {
269  // cerr << "toe/toc mismatch, not processing" << endl;
270  // Even though the mismatch might be considered an error,
271  // we don't really want to mark it as such and rather
272  // consider it as a "valid" but unprocessable data set.
273  return true;
274  }
275  NavDataPtr p0 = std::make_shared<GPSCNavEph>();
276  GPSCNavEph *eph = dynamic_cast<GPSCNavEph*>(p0.get());
277  // NavData
278  eph->timeStamp = ephSF[ephM10]->getTransmitTime();
279  eph->signal = NavMessageID(
280  NavSatelliteID(prn, navIn->getsatSys(), navIn->getobsID(),
281  navIn->getNavID()),
282  NavMessageType::Ephemeris);
283  // cerr << "Ready for full CNAV eph processing for " << (NavSignalID)eph->signal << endl;
284  // OrbitData = empty
285  // OrbitDataKepler
286  eph->xmitTime = eph->timeStamp;
289  unsigned wn = ephSF[esiWN]->asUnsignedLong(esbWN,enbWN,escWN);
290  // Use the transmit time to get a full week for toe/toc
291  //GPSWeekSecond refTime(eph->xmitTime);
292  //long refWeek = refTime.week;
293  //wn = timeAdjustWeekRollover(wn, refWeek);
294  // Now we can set the Toe/Toc properly. Note that IS-GPS-200
295  // defines the toc and toe to be the same for a consistent
296  // set of data, and we've already enforced they're the same
297  // above.
298  eph->Toe = eph->Toc = GPSWeekSecond(wn,toe10);
299  if (navIn->getsatSys().system == gnsstk::SatelliteSystem::QZSS)
300  {
303  }
304  // health is set below
305  eph->Cuc = ephSF[esiCuc]->asSignedDouble(esbCuc,enbCuc,escCuc);
306  eph->Cus = ephSF[esiCus]->asSignedDouble(esbCus,enbCus,escCus);
307  eph->Crc = ephSF[esiCrc]->asSignedDouble(esbCrc,enbCrc,escCrc);
308  eph->Crs = ephSF[esiCrs]->asSignedDouble(esbCrs,enbCrs,escCrs);
309  eph->Cic = ephSF[esiCic]->asSignedDouble(esbCic,enbCic,escCic);
310  eph->Cis = ephSF[esiCis]->asSignedDouble(esbCis,enbCis,escCis);
311  eph->M0 = ephSF[esiM0]->asDoubleSemiCircles(esbM0,enbM0,escM0);
312  eph->dn = ephSF[esidn0]->asDoubleSemiCircles(esbdn0,enbdn0,escdn0);
313  eph->dndot = ephSF[esidn0dot]->asDoubleSemiCircles(esbdn0dot,enbdn0dot,
314  escdn0dot);
315  eph->ecc = ephSF[esiEcc]->asUnsignedDouble(esbEcc,enbEcc,escEcc);
316  eph->deltaA = ephSF[esidA]->asSignedDouble(esbdA,enbdA,escdA);
317  eph->dOMEGAdot = ephSF[esidOMEGAdot]->asDoubleSemiCircles(
319  if (eph->signal.sat.system == SatelliteSystem::QZSS)
320  {
321  eph->A = eph->deltaA + GPSCNavData::refAQZSS;
325  eph->OMEGAdot = eph->dOMEGAdot + GPSCNavData::refOMEGAdotEphQZSS;
326  }
327  else
328  {
329  eph->A = eph->deltaA + GPSCNavData::refAGPS;
330  eph->OMEGAdot = eph->dOMEGAdot + GPSCNavData::refOMEGAdotEphGPS;
331  }
332  eph->Ahalf = ::sqrt(eph->A);
333  eph->Adot = ephSF[esiAdot]->asSignedDouble(esbAdot,enbAdot,escAdot);
334  eph->OMEGA0 = ephSF[esiOMEGA0]->asDoubleSemiCircles(esbOMEGA0,enbOMEGA0,
335  escOMEGA0);
336  eph->i0 = ephSF[esii0]->asDoubleSemiCircles(esbi0,enbi0,esci0);
337  eph->w = ephSF[esiw]->asDoubleSemiCircles(esbw,enbw,escw);
338  eph->idot = ephSF[esiidot]->asDoubleSemiCircles(esbidot,enbidot,escidot);
339  eph->af0 = ephSF[csiaf0]->asSignedDouble(csbaf0,cnbaf0,cscaf0);
340  eph->af1 = ephSF[csiaf1]->asSignedDouble(csbaf1,cnbaf1,cscaf1);
341  eph->af2 = ephSF[csiaf2]->asSignedDouble(csbaf2,cnbaf2,cscaf2);
342  // GPSCNavData
343  eph->pre = ephSF[ephM10]->asUnsignedLong(esbPre,enbPre,escPre);
344  eph->alert = ephSF[ephM10]->asBool(esbAlert);
345  // GPSCNavEph
346  eph->pre11 = ephSF[ephM11]->asUnsignedLong(esbPre,enbPre,escPre);
347  eph->preClk = ephSF[ephMClk]->asUnsignedLong(esbPre,enbPre,escPre);
348  eph->healthL1 = ephSF[esiHea]->asBool(esbHeaL1);
349  eph->healthL2 = ephSF[esiHea]->asBool(esbHeaL2);
350  eph->healthL5 = ephSF[esiHea]->asBool(esbHeaL5);
351  switch (navIn->getobsID().band)
352  {
353  case CarrierBand::L2:
354  eph->health = ((eph->healthL2 == false) ? SVHealth::Healthy :
355  SVHealth::Unhealthy);
356  break;
357  case CarrierBand::L5:
358  eph->health = ((eph->healthL5 == false) ? SVHealth::Healthy :
359  SVHealth::Unhealthy);
360  break;
361  default:
362  // unexpected/unsupported signal
363  return false;
364  }
365  eph->uraED = ephSF[esiURA]->asLong(esbURA,enbURA,escURA);
366  eph->alert11 = ephSF[ephM11]->asBool(esbAlert);
367  eph->alertClk = ephSF[ephMClk]->asBool(esbAlert);
368  double top = ephSF[esitop]->asUnsignedLong(esbtop,enbtop,esctop);
369  eph->top = GPSWeekSecond(wn,top).weekRolloverAdj(eph->Toe);
370  if (navIn->getsatSys().system == gnsstk::SatelliteSystem::QZSS)
371  {
373  }
374  eph->xmit11 = ephSF[ephM11]->getTransmitTime();
375  eph->xmitClk = ephSF[ephMClk]->getTransmitTime();
376  eph->uraNED0= ephSF[csiURAned0]->asLong(csbURAned0,cnbURAned0,cscURAned0);
377  eph->uraNED1= ephSF[csiURAned1]->asUnsignedLong(csbURAned1,cnbURAned1,
378  cscURAned1);
379  eph->uraNED2= ephSF[csiURAned2]->asUnsignedLong(csbURAned2,cnbURAned2,
380  cscURAned2);
381  eph->fixFit();
382  // cerr << "add CNAV eph" << endl;
383  navOut.push_back(p0);
384  // Clear out the broadcast ephemeris that's been processed.
385  ephAcc.erase(prn);
386  return true;
387  }
388 
389 
390  bool PNBGPSCNavDataFactory ::
391  processAlmOrb(unsigned msgType, const PackedNavBitsPtr& navIn,
392  NavDataPtrList& navOut)
393  {
394  unsigned long sprn = navIn->asUnsignedLong(asbPRNa,anbPRNa,ascPRNa);
395  if (sprn == 0)
396  {
397  // clock data is probably valid but we don't use it.
398  // PRN = 0 so don't attempt to process the almanac.
399  return true;
400  }
401  SatID xmitSat(navIn->getsatSys());
402  SatelliteSystem subjSys = xmitSat.system;
403  // special handling for QZSS per IS-QZSS 1.8E Table 5.5.2-8
404  if (subjSys == SatelliteSystem::QZSS)
405  {
406  if (msgType == 37)
407  {
408  // When the message type number is 37, it indicates
409  // that this value is for a QZS satellite and
410  // represents the last 6 bits of the QZS PRN number.
411  // .. so we do a bitwise OR to get the QZS PRN.
412  sprn |= 0xc0;
413  }
414  else if (msgType == 53)
415  {
416  // When the message type number is 53, it indicates
417  // that this value is the PRN value for a GPS satellite
418  subjSys = SatelliteSystem::GPS;
419  }
420  }
421  SatID subjSat(sprn, subjSys);
422  // No checks for correct svid, just assume that the input
423  // data has already been checked (it will have been by
424  // addData).
425  if (processHea)
426  {
427  // Add almanac health bits from message type 37.
428  NavDataPtr p1L1 = std::make_shared<GPSCNavHealth>();
429  NavDataPtr p1L2 = std::make_shared<GPSCNavHealth>();
430  NavDataPtr p1L5 = std::make_shared<GPSCNavHealth>();
431  p1L1->timeStamp = navIn->getTransmitTime();
432  p1L2->timeStamp = navIn->getTransmitTime();
433  p1L5->timeStamp = navIn->getTransmitTime();
438  p1L1->signal = NavMessageID(
439  NavSatelliteID(subjSat, xmitSat,
440  ObsID(ObservationType::NavMsg, CarrierBand::L1,
441  TrackingCode::CA),
442  NavID(NavType::GPSLNAV)),
443  NavMessageType::Health);
444  if (navIn->getobsID().band == CarrierBand::L2)
445  {
446  p1L2->signal = NavMessageID(
447  NavSatelliteID(subjSat, xmitSat, navIn->getobsID(),
448  navIn->getNavID()),
449  NavMessageType::Health);
450  p1L5->signal = NavMessageID(
451  NavSatelliteID(subjSat, xmitSat,
452  ObsID(ObservationType::NavMsg, CarrierBand::L5,
453  TrackingCode::L5I),
454  NavID(NavType::GPSCNAVL5)),
455  NavMessageType::Health);
456  }
457  else
458  {
459  // assume L5
460  p1L2->signal = NavMessageID(
461  NavSatelliteID(subjSat, xmitSat,
462  ObsID(ObservationType::NavMsg, CarrierBand::L2,
463  TrackingCode::L2CM),
464  NavID(NavType::GPSCNAVL2)),
465  NavMessageType::Health);
466  p1L5->signal = NavMessageID(
467  NavSatelliteID(subjSat, xmitSat, navIn->getobsID(),
468  navIn->getNavID()),
469  NavMessageType::Health);
470  }
471  dynamic_cast<GPSCNavHealth*>(p1L1.get())->health =
472  navIn->asBool(asbHeaL1);
473  dynamic_cast<GPSCNavHealth*>(p1L2.get())->health =
474  navIn->asBool(asbHeaL2);
475  dynamic_cast<GPSCNavHealth*>(p1L5.get())->health =
476  navIn->asBool(asbHeaL5);
477  // cerr << "add CNAV alm health" << endl;
478  navOut.push_back(p1L1);
479  // cerr << "add CNAV alm health" << endl;
480  navOut.push_back(p1L2);
481  // cerr << "add CNAV alm health" << endl;
482  navOut.push_back(p1L5);
483  }
484  if (!PNBNavDataFactory::processAlm)
485  {
486  // User doesn't want almanacs so don't do any processing.
487  return true;
488  }
489  NavDataPtr p0 = std::make_shared<GPSCNavAlm>();
490  GPSCNavAlm *alm = dynamic_cast<GPSCNavAlm*>(p0.get());
491  // NavData
492  alm->timeStamp = navIn->getTransmitTime();
493  alm->signal = NavMessageID(
494  NavSatelliteID(subjSat, xmitSat, navIn->getobsID(),
495  navIn->getNavID()),
496  NavMessageType::Almanac);
497  // OrbitData = empty
498  // OrbitDataKepler
499  alm->xmitTime = alm->timeStamp;
502  alm->wna = navIn->asUnsignedLong(asbWNa,anbWNa,ascWNa);
503  alm->toa = navIn->asUnsignedDouble(asbtoa,anbtoa,asctoa);
504  alm->Toc = alm->Toe = GPSWeekSecond(alm->wna,alm->toa);
505  if (navIn->getsatSys().system == gnsstk::SatelliteSystem::QZSS)
506  {
509  }
510  alm->M0 = navIn->asDoubleSemiCircles(asbM0,anbM0,ascM0);
511  alm->ecc = navIn->asUnsignedDouble(asbEcc,anbEcc,ascEcc);
512  alm->Ahalf = navIn->asUnsignedDouble(asbAhalf,anbAhalf,ascAhalf);
513  alm->A = alm->Ahalf * alm->Ahalf;
514  alm->OMEGA0 = navIn->asDoubleSemiCircles(asbOMEGA0,anbOMEGA0,ascOMEGA0);
515  // i0 is set below
516  alm->w = navIn->asDoubleSemiCircles(asbw,anbw,ascw);
517  alm->OMEGAdot = navIn->asDoubleSemiCircles(asbOMEGAdot,anbOMEGAdot,
518  ascOMEGAdot);
519  alm->af0 = navIn->asSignedDouble(asbaf0,anbaf0,ascaf0);
520  alm->af1 = navIn->asSignedDouble(asbaf1,anbaf1,ascaf1);
521  // GPSCNavData
522  alm->pre = navIn->asUnsignedLong(esbPre,enbPre,escPre);
523  alm->alert = navIn->asBool(esbAlert);
524  // GPSCNavAlm
525  alm->healthL1 = navIn->asBool(asbHeaL1);
526  alm->healthL2 = navIn->asBool(asbHeaL2);
527  alm->healthL5 = navIn->asBool(asbHeaL5);
528  switch (navIn->getobsID().band)
529  {
530  case CarrierBand::L2:
531  alm->health = ((alm->healthL2 == false) ? SVHealth::Healthy :
532  SVHealth::Unhealthy);
533  break;
534  case CarrierBand::L5:
535  alm->health = ((alm->healthL5 == false) ? SVHealth::Healthy :
536  SVHealth::Unhealthy);
537  break;
538  default:
539  // unexpected/unsupported signal
540  return false;
541  }
542  alm->deltai = navIn->asDoubleSemiCircles(asbdi,anbdi,ascdi);
543  if (alm->signal.sat.system == SatelliteSystem::QZSS)
544  {
545  alm->i0 = GPSCNavData::refi0QZSS + alm->deltai;
546  }
547  else
548  {
549  alm->i0 = GPSCNavData::refi0GPS + alm->deltai;
550  }
551  alm->fixFit();
552  // cerr << "add CNAV alm" << endl;
553  navOut.push_back(p0);
554  return true;
555  }
556 
557 
558  bool PNBGPSCNavDataFactory ::
559  process12(unsigned msgType, const PackedNavBitsPtr& navIn,
560  NavDataPtrList& navOut)
561  {
562  unsigned pre = navIn->asUnsignedLong(esbPre,enbPre,escPre);
563  bool alert = navIn->asBool(esbAlert);
564  unsigned wna = navIn->asUnsignedLong(rsb12WNa,rnb12WNa,rsc12WNa);
565  unsigned long toa = navIn->asUnsignedLong(rsb12toa,rnb12toa,rsc12toa);
566  return
567  processRedAlmOrb(msgType,rsb12p1,pre,alert,wna,toa,navIn,navOut) &&
568  processRedAlmOrb(msgType,rsb12p2,pre,alert,wna,toa,navIn,navOut) &&
569  processRedAlmOrb(msgType,rsb12p3,pre,alert,wna,toa,navIn,navOut) &&
570  processRedAlmOrb(msgType,rsb12p4,pre,alert,wna,toa,navIn,navOut) &&
571  processRedAlmOrb(msgType,rsb12p5,pre,alert,wna,toa,navIn,navOut) &&
572  processRedAlmOrb(msgType,rsb12p6,pre,alert,wna,toa,navIn,navOut) &&
573  processRedAlmOrb(msgType,rsb12p7,pre,alert,wna,toa,navIn,navOut);
574  }
575 
576 
577  bool PNBGPSCNavDataFactory ::
578  process30(const PackedNavBitsPtr& navIn, NavDataPtrList& navOut)
579  {
580  if (PNBNavDataFactory::processIono)
581  {
582  NavDataPtr p0 = std::make_shared<GPSCNavIono>();
583  GPSCNavIono *iono = dynamic_cast<GPSCNavIono*>(p0.get());
584  // NavData
585  p0->timeStamp = navIn->getTransmitTime();
586  p0->signal = NavMessageID(
587  NavSatelliteID(navIn->getsatSys().id, navIn->getsatSys(),
588  navIn->getobsID(), navIn->getNavID()),
589  NavMessageType::Iono);
590  // KlobucharIonoNavData
591  iono->alpha[0] = navIn->asSignedDouble(isbAlpha0,inbAlpha0,iscAlpha0);
592  iono->alpha[1] = navIn->asSignedDouble(isbAlpha1,inbAlpha1,iscAlpha1);
593  iono->alpha[2] = navIn->asSignedDouble(isbAlpha2,inbAlpha2,iscAlpha2);
594  iono->alpha[3] = navIn->asSignedDouble(isbAlpha3,inbAlpha3,iscAlpha3);
595  iono->beta[0] = navIn->asSignedDouble(isbBeta0,inbBeta0,iscBeta0);
596  iono->beta[1] = navIn->asSignedDouble(isbBeta1,inbBeta1,iscBeta1);
597  iono->beta[2] = navIn->asSignedDouble(isbBeta2,inbBeta2,iscBeta2);
598  iono->beta[3] = navIn->asSignedDouble(isbBeta3,inbBeta3,iscBeta3);
599  // GPSCNavIono
600  iono->pre = navIn->asUnsignedLong(esbPre,enbPre,escPre);
601  iono->alert = navIn->asBool(esbAlert);
602  navOut.push_back(p0);
603  }
604  if (PNBNavDataFactory::processISC)
605  {
606  NavDataPtr p1 = std::make_shared<GPSCNavISC>();
607  GPSCNavISC *isc = dynamic_cast<GPSCNavISC*>(p1.get());
608  // NavData
609  p1->timeStamp = navIn->getTransmitTime();
610  p1->signal = NavMessageID(
611  NavSatelliteID(navIn->getsatSys().id, navIn->getsatSys(),
612  navIn->getobsID(), navIn->getNavID()),
613  NavMessageType::ISC);
614  // InterSigCorr
615  isc->isc = navIn->asSignedDouble(isbTgd,inbTgd,iscTgd);
616  // GPSCNavISC
617  isc->pre = navIn->asUnsignedLong(esbPre,enbPre,escPre);
618  isc->alert = navIn->asBool(esbAlert);
619  isc->iscL1CA = navIn->asSignedDouble(isbISCL1CA,inbISCL1CA,iscISCL1CA);
620  isc->iscL2C = navIn->asSignedDouble(isbISCL2C,inbISCL2C,iscISCL2C);
621  isc->iscL5I5 = navIn->asSignedDouble(isbISCL5I5,inbISCL5I5,iscISCL5I5);
622  isc->iscL5Q5 = navIn->asSignedDouble(isbISCL5Q5,inbISCL5Q5,iscISCL5Q5);
623  navOut.push_back(p1);
624  }
625  return true;
626  }
627 
628 
629  bool PNBGPSCNavDataFactory ::
630  process31(unsigned msgType, const PackedNavBitsPtr& navIn,
631  NavDataPtrList& navOut)
632  {
633  unsigned pre = navIn->asUnsignedLong(esbPre,enbPre,escPre);
634  bool alert = navIn->asBool(esbAlert);
635  unsigned wna = navIn->asUnsignedLong(rsb31WNa,rnb31WNa,rsc31WNa);
636  unsigned long toa = navIn->asUnsignedLong(rsb31toa,rnb31toa,rsc31toa);
637  return
638  processRedAlmOrb(msgType,rsb31p1,pre,alert,wna,toa,navIn,navOut) &&
639  processRedAlmOrb(msgType,rsb31p2,pre,alert,wna,toa,navIn,navOut) &&
640  processRedAlmOrb(msgType,rsb31p3,pre,alert,wna,toa,navIn,navOut) &&
641  processRedAlmOrb(msgType,rsb31p4,pre,alert,wna,toa,navIn,navOut);
642  }
643 
644 
645  bool PNBGPSCNavDataFactory ::
646  processRedAlmOrb(unsigned msgType, unsigned offset, unsigned pre, bool alert,
647  unsigned wna, double toa,
648  const PackedNavBitsPtr& navIn, NavDataPtrList& navOut)
649  {
650  SatID xmitSat(navIn->getsatSys());
651  unsigned long sprn = navIn->asUnsignedLong(offset+rsbPRNa,rnbPRNa,
652  rscPRNa);
653  SatelliteSystem subjSys = xmitSat.system;
654  if (sprn == 0)
655  {
656  // empty almanac
657  return true;
658  }
659  // special handling for QZSS per IS-QZSS 1.8E Table 5.5.2-9
660  if (subjSys == SatelliteSystem::QZSS)
661  {
662  if ((msgType == 31) || (msgType == 12))
663  {
664  // When the message type number is 31 or 12, it
665  // indicates that this value is for a QZS satellite and
666  // represents the last 6 bits of the QZS PRN number.
667  // .. so we do a bitwise OR to get the QZS PRN.
668  sprn |= 0xc0;
669  }
670  else if ((msgType == 47) || (msgType == 28))
671  {
672  // When the message type number is 47 or 28, it
673  // indicates that this value is the PRN value for a GPS
674  // satellite (PRN No.= 1 ~ 32)
675  subjSys = SatelliteSystem::GPS;
676  }
677  }
678  SatID subjSat(sprn, subjSys);
679  if (PNBNavDataFactory::processHea)
680  {
681  // Add reduced almanac health bits
682  NavDataPtr p1L1 = std::make_shared<GPSCNavHealth>();
683  NavDataPtr p1L2 = std::make_shared<GPSCNavHealth>();
684  NavDataPtr p1L5 = std::make_shared<GPSCNavHealth>();
685  p1L1->timeStamp = navIn->getTransmitTime();
686  p1L2->timeStamp = navIn->getTransmitTime();
687  p1L5->timeStamp = navIn->getTransmitTime();
692  p1L1->signal = NavMessageID(
693  NavSatelliteID(subjSat, xmitSat,
694  ObsID(ObservationType::NavMsg, CarrierBand::L1,
695  TrackingCode::CA),
696  NavID(NavType::GPSLNAV)),
697  NavMessageType::Health);
698  if (navIn->getobsID().band == CarrierBand::L2)
699  {
700  p1L2->signal = NavMessageID(
701  NavSatelliteID(subjSat, xmitSat, navIn->getobsID(),
702  navIn->getNavID()),
703  NavMessageType::Health);
704  p1L5->signal = NavMessageID(
705  NavSatelliteID(subjSat, xmitSat,
706  ObsID(ObservationType::NavMsg, CarrierBand::L5,
707  TrackingCode::L5I),
708  NavID(NavType::GPSCNAVL5)),
709  NavMessageType::Health);
710  }
711  else
712  {
713  // assume L5
714  p1L2->signal = NavMessageID(
715  NavSatelliteID(subjSat, xmitSat,
716  ObsID(ObservationType::NavMsg, CarrierBand::L2,
717  TrackingCode::L2CM),
718  NavID(NavType::GPSCNAVL2)),
719  NavMessageType::Health);
720  p1L5->signal = NavMessageID(
721  NavSatelliteID(subjSat, xmitSat, navIn->getobsID(),
722  navIn->getNavID()),
723  NavMessageType::Health);
724  }
725  dynamic_cast<GPSCNavHealth*>(p1L1.get())->health =
726  navIn->asBool(offset+rsbHeaL1);
727  dynamic_cast<GPSCNavHealth*>(p1L2.get())->health =
728  navIn->asBool(offset+rsbHeaL2);
729  dynamic_cast<GPSCNavHealth*>(p1L5.get())->health =
730  navIn->asBool(offset+rsbHeaL5);
731  // cerr << "add CNAV reduced alm health" << endl;
732  navOut.push_back(p1L1);
733  // cerr << "add CNAV reduced alm health" << endl;
734  navOut.push_back(p1L2);
735  // cerr << "add CNAV reduced alm health" << endl;
736  navOut.push_back(p1L5);
737  }
738  if (!PNBNavDataFactory::processAlm)
739  {
740  // User doesn't want almanac data so don't do any processing.
741  return true;
742  }
743  NavDataPtr p0 = std::make_shared<GPSCNavRedAlm>();
744  GPSCNavRedAlm *alm = dynamic_cast<GPSCNavRedAlm*>(p0.get());
745  // NavData
746  alm->timeStamp = navIn->getTransmitTime();
747  alm->signal = NavMessageID(
748  NavSatelliteID(subjSat, xmitSat, navIn->getobsID(),
749  navIn->getNavID()),
750  NavMessageType::Almanac);
751  // OrbitData = empty
752  // OrbitDataKepler
753  alm->xmitTime = alm->timeStamp;
756  alm->Toc = alm->Toe = GPSWeekSecond(wna,toa);
757  if (navIn->getsatSys().system == gnsstk::SatelliteSystem::QZSS)
758  {
761  }
762  alm->OMEGA0 = navIn->asDoubleSemiCircles(offset+rsbOMEGA0,rnbOMEGA0,
763  rscOMEGA0);
764  // GPSCNavData
765  alm->pre = pre;
766  alm->alert = alert;
767  // GPSCNavAlm
768  alm->healthL1 = navIn->asBool(offset+rsbHeaL1);
769  alm->healthL2 = navIn->asBool(offset+rsbHeaL2);
770  alm->healthL5 = navIn->asBool(offset+rsbHeaL5);
771  alm->wna = wna;
772  alm->toa = toa;
773  switch (navIn->getobsID().band)
774  {
775  case CarrierBand::L2:
776  alm->health = ((alm->healthL2 == false) ? SVHealth::Healthy :
777  SVHealth::Unhealthy);
778  break;
779  case CarrierBand::L5:
780  alm->health = ((alm->healthL5 == false) ? SVHealth::Healthy :
781  SVHealth::Unhealthy);
782  break;
783  default:
784  // unexpected/unsupported signal
785  return false;
786  }
787  // GPSCNavRedAlm
788  alm->phi0 = navIn->asDoubleSemiCircles(offset+rsbPHI0,rnbPHI0,rscPHI0);
789  alm->deltaA = navIn->asSignedDouble(offset+rsbdA,rnbdA,rscdA);
790  alm->fixValues();
791  alm->fixFit();
792  // cerr << "add CNAV alm" << endl;
793  navOut.push_back(p0);
794  return true;
795  }
796 
797 
798  bool PNBGPSCNavDataFactory ::
799  process33(const PackedNavBitsPtr& navIn, NavDataPtrList& navOut)
800  {
801  if (!PNBNavDataFactory::processTim)
802  {
803  // User doesn't want time offset data so don't do any processing.
804  return true;
805  }
806  NavDataPtr p0 = std::make_shared<GPSCNavTimeOffset>();
807  p0->timeStamp = navIn->getTransmitTime();
808  p0->signal = NavMessageID(
809  NavSatelliteID(navIn->getsatSys().id, navIn->getsatSys(),
810  navIn->getobsID(), navIn->getNavID()),
811  NavMessageType::TimeOffset);
812  GPSCNavTimeOffset *to =
813  dynamic_cast<GPSCNavTimeOffset*>(p0.get());
814  to->tgt = TimeSystem::UTC; // by definition
815  to->a0 = navIn->asSignedDouble(csbA0,cnbA0,cscA0);
816  to->a1 = navIn->asSignedDouble(csbA1,cnbA1,cscA1);
817  to->a2 = navIn->asSignedDouble(csbA2,cnbA2,cscA2);
818  to->deltatLS = navIn->asLong(csbdtLS,cnbdtLS,cscdtLS);
819  to->tot = navIn->asUnsignedDouble(csbtot,cnbtot,csctot);
820  to->wnot = navIn->asUnsignedLong(csbWNot,cnbWNot,cscWNot);
821  to->wnLSF = navIn->asUnsignedLong(csbWNlsf,cnbWNlsf,cscWNlsf);
822  to->dn = navIn->asUnsignedLong(csbDN,cnbDN,cscDN);
823  to->refTime = GPSWeekSecond(to->wnot, to->tot);
824  to->effTime = GPSWeekSecond(to->wnLSF, (to->dn-1)*86400);
825  if (navIn->getsatSys().system == gnsstk::SatelliteSystem::QZSS)
826  {
830  }
831  to->deltatLSF = navIn->asLong(csbdtLSF,cnbdtLSF,cscdtLSF);
832  // cerr << "add CNAV time offset" << endl;
833  navOut.push_back(p0);
834  return true;
835  }
836 
837 
838  bool PNBGPSCNavDataFactory ::
839  process35(const PackedNavBitsPtr& navIn, NavDataPtrList& navOut)
840  {
841  if (!PNBNavDataFactory::processTim)
842  {
843  // User doesn't want time offset data so don't do any processing.
844  return true;
845  }
846  NavDataPtr p0 = std::make_shared<GPSCNavTimeOffset>();
847  p0->timeStamp = navIn->getTransmitTime();
848  p0->signal = NavMessageID(
849  NavSatelliteID(navIn->getsatSys().id, navIn->getsatSys(),
850  navIn->getobsID(), navIn->getNavID()),
851  NavMessageType::TimeOffset);
852  GPSCNavTimeOffset *to =
853  dynamic_cast<GPSCNavTimeOffset*>(p0.get());
854  uint8_t gnssID = navIn->asUnsignedLong(gsbGNSS,gnbGNSS,gscGNSS);
855  switch (gnssID)
856  {
857  case 0:
858  // no data available.
859  return true;
860  case 1:
861  to->tgt = TimeSystem::GAL;
862  break;
863  case 2:
864  to->tgt = TimeSystem::GLO;
865  break;
866  case 3:
870  to->tgt = TimeSystem::QZS;
871  break;
872  default:
873  // cerr << "Unknown GNSS ID " << gnssID << endl;
874  // unknown/unsupported
875  return false;
876  }
877  to->tot = navIn->asUnsignedDouble(gsbt,gnbt,gsct);
878  to->wnot = navIn->asUnsignedLong(gsbWN,gnbWN,gscWN);
879  to->refTime = gnsstk::GPSWeekSecond(to->wnot, to->tot);
880  if (navIn->getsatSys().system == gnsstk::SatelliteSystem::QZSS)
881  {
884  }
885  to->a0 = navIn->asSignedDouble(gsbA0,gnbA0,gscA0);
886  to->a1 = navIn->asSignedDouble(gsbA1,gnbA1,gscA1);
887  to->a2 = navIn->asSignedDouble(gsbA2,gnbA2,gscA2);
888  // cerr << "add CNAV time offset" << endl;
889  navOut.push_back(p0);
890  return true;
891  }
892 
893 
894  void PNBGPSCNavDataFactory ::
895  dumpState(std::ostream& s)
896  const
897  {
898  s << "ephAcc.size() = " << ephAcc.size() << " (expect 32)" << endl;
899  for (const auto& i : ephAcc)
900  {
901  s << " ephAcc[" << i.first << "].size() = " << i.second.size()
902  << endl;
903  for (unsigned j = 0; j < i.second.size(); j++)
904  {
905  s << " ephAcc[" << i.first << "][" << j << "] = ";
906  if (!i.second[j])
907  s << "unset";
908  else
909  s << i.second[j]->getNumBits() << " bits";
910  s << endl;
911  }
912  }
913  }
914 
915 } // namespace gnsstk
gnsstk::galfnav::anbOMEGAdot
@ anbOMEGAdot
Definition: GalFBits.hpp:430
gnsstk::bds::ascw
@ ascw
Definition: BDSD1Bits.hpp:162
gnsstk::gpscnav2::esbdn0
@ esbdn0
Delta n0 start bit.
Definition: GPSC2Bits.hpp:99
gnsstk::bds::cscDN
@ cscDN
Definition: BDSD1Bits.hpp:1041
gnsstk::gpscnav2::gscA0
@ gscA0
A0-ggto power factor.
Definition: GPSC2Bits.hpp:313
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::GPSCNavAlm::healthL2
bool healthL2
L2 signal health from message type 10.
Definition: GPSCNavAlm.hpp:86
gnsstk::galinav::csbA1
@ csbA1
Definition: GalIBits.hpp:301
gnsstk::gpscnav::enbtoe2
@ enbtoe2
toe (ephemeris 2) number of bits
Definition: GPSCBits.hpp:164
gnsstk::gpscnav::esidOMEGAdot
@ esidOMEGAdot
Delta OMEGAdot message index.
Definition: GPSCBits.hpp:177
gnsstk::GPSCNavEph::uraNED2
uint8_t uraNED2
non-elevation dependent URA from clock message.
Definition: GPSCNavEph.hpp:95
example3.svid
svid
Definition: example3.py:19
gnsstk::bds::escM0
@ escM0
Definition: BDSD1Bits.hpp:396
gnsstk::gpscnav::iscBeta2
@ iscBeta2
Definition: GPSCBits.hpp:513
gnsstk::OrbitDataKepler::idot
double idot
Rate of inclination angle (rad/sec)
Definition: OrbitDataKepler.hpp:193
gnsstk::gpscnav2::gnbWN
@ gnbWN
WNggto number of bits.
Definition: GPSC2Bits.hpp:308
gnsstk::gpscnav::csbaf0
@ csbaf0
af0 start bit
Definition: GPSCBits.hpp:244
gnsstk::NavMessageID
Class used to identify/categorize navigation message data.
Definition: NavMessageID.hpp:52
gnsstk::gpscnav::inbAlpha0
@ inbAlpha0
Definition: GPSCBits.hpp:488
gnsstk::gpscnav::isbISCL2C
@ isbISCL2C
Definition: GPSCBits.hpp:475
gnsstk::gpscnav::enbtoe1
@ enbtoe1
toe (ephemeris 1) number of bits
Definition: GPSCBits.hpp:117
gnsstk::gpscnav::inbISCL1CA
@ inbISCL1CA
Definition: GPSCBits.hpp:472
gnsstk::StdNavTimeOffset::deltatLSF
double deltatLSF
Current or future leap second count (UTC only).
Definition: StdNavTimeOffset.hpp:135
gnsstk::GPSCNavTimeOffset
Definition: GPSCNavTimeOffset.hpp:62
gnsstk::gpscnav::iscAlpha3
@ iscAlpha3
Definition: GPSCBits.hpp:501
gnsstk::gpscnav::esbPre
@ esbPre
Preamble start bit.
Definition: GPSCBits.hpp:75
gnsstk::galinav::csbA0
@ csbA0
Definition: GalIBits.hpp:297
gnsstk::gpscnav::rsb12p2
@ rsb12p2
message type 12, packet 2 start bit
Definition: GPSCBits.hpp:388
gnsstk::gpscnav::csctoc
@ csctoc
toc scale factor
Definition: GPSCBits.hpp:241
gnsstk::galfnav::esiidot
@ esiidot
idot subframe index
Definition: GalFBits.hpp:217
gnsstk::gpscnav
Definition: GPSCBits.hpp:45
gnsstk::GPSCNavEph::healthL2
bool healthL2
L2 signal health from message type 10.
Definition: GPSCNavEph.hpp:90
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::gpscnav::esbHeaL2
@ esbHeaL2
L2 Signal health bit.
Definition: GPSCBits.hpp:102
gnsstk::gpscnav2::asbHeaL5
@ asbHeaL5
L5 Signal health bit.
Definition: GPSC2Bits.hpp:339
gnsstk::gpscnav::csiaf0
@ csiaf0
af0 message index
Definition: GPSCBits.hpp:243
gnsstk::galfnav::enbidot
@ enbidot
idot number of bits
Definition: GalFBits.hpp:219
gnsstk::galfnav::enbEcc
@ enbEcc
Ecc number of bits.
Definition: GalFBits.hpp:204
gnsstk::gpscnav::rsb12p5
@ rsb12p5
message type 12, packet 5 start bit
Definition: GPSCBits.hpp:391
gnsstk::gpscnav2::asbHeaL2
@ asbHeaL2
L2 Signal health bit.
Definition: GPSC2Bits.hpp:338
gnsstk::bds::escCus
@ escCus
Definition: BDSD1Bits.hpp:429
gnsstk::bds::escCuc
@ escCuc
Definition: BDSD1Bits.hpp:382
gnsstk::galfnav::esbw
@ esbw
w start bit
Definition: GalFBits.hpp:245
gnsstk::GPSCNavAlm::healthL5
bool healthL5
L5 signal health from message type 10.
Definition: GPSCNavAlm.hpp:87
gnsstk::gpscnav::rsb31p1
@ rsb31p1
message type 31, packet 1 start bit
Definition: GPSCBits.hpp:403
gnsstk::bds::esbCrs
@ esbCrs
Definition: BDSD2Bits.hpp:1055
gnsstk::gpscnav::cnbaf2
@ cnbaf2
af2 number of bits
Definition: GPSCBits.hpp:255
gnsstk::gpscnav::rnbPRNa
@ rnbPRNa
PRNa number of bits.
Definition: GPSCBits.hpp:414
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::gpscnav2::gscA1
@ gscA1
A1-ggto power factor.
Definition: GPSC2Bits.hpp:317
gnsstk::gpscnav2::esbdOMEGAdot
@ esbdOMEGAdot
Delta OMEGAdot start bit.
Definition: GPSC2Bits.hpp:127
gnsstk::galfnav::esiM0
@ esiM0
M0 subframe index.
Definition: GalFBits.hpp:192
gnsstk::gpscnav::rsbPRNa
@ rsbPRNa
PRNa start bit.
Definition: GPSCBits.hpp:413
L1
gnsstk::Matrix< double > L1
Definition: Matrix_LUDecomp_T.cpp:46
gnsstk::gpscnav::iscAlpha0
@ iscAlpha0
Definition: GPSCBits.hpp:489
gnsstk::gpscnav2::cscA2
@ cscA2
A2-n power factor.
Definition: GPSC2Bits.hpp:223
gnsstk::galfnav::anbaf0
@ anbaf0
Definition: GalFBits.hpp:440
gnsstk::gpscnav::esbtoe2
@ esbtoe2
toe (ephemeris 2) start bit
Definition: GPSCBits.hpp:163
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::gpscnav::rsb12WNa
@ rsb12WNa
message type 12, WNa start bit
Definition: GPSCBits.hpp:379
gnsstk::gpscnav::iscBeta1
@ iscBeta1
Definition: GPSCBits.hpp:509
gnsstk::gpscnav::iscBeta0
@ iscBeta0
Definition: GPSCBits.hpp:505
gnsstk::gpscnav::csbtoc
@ csbtoc
toc start bit
Definition: GPSCBits.hpp:239
gnsstk::GPSCNavEph::alert11
bool alert11
Alert flag from message type 11.
Definition: GPSCNavEph.hpp:96
gnsstk::gpscnav::esctoe2
@ esctoe2
toe (ephemeris 2) scale factor
Definition: GPSCBits.hpp:165
gnsstk::OrbitDataKepler::ecc
double ecc
Eccentricity.
Definition: OrbitDataKepler.hpp:185
gnsstk::StdNavTimeOffset::src
TimeSystem src
Source time system.
Definition: StdNavTimeOffset.hpp:120
gnsstk::GPSCNavRedAlm::phi0
double phi0
Argument of latitude at reference time (M0+w).
Definition: GPSCNavRedAlm.hpp:75
gnsstk::gpscnav::ephM11
@ ephM11
Message type 11.
Definition: GPSCBits.hpp:56
gnsstk::GPSCNavISC::alert
bool alert
Alert flag.
Definition: GPSCNavISC.hpp:104
gnsstk::gpscnav::cscURAned2
@ cscURAned2
URA_NED2 scale factor.
Definition: GPSCBits.hpp:236
gnsstk::bds::anbEcc
@ anbEcc
Definition: BDSD1Bits.hpp:131
gnsstk::GPSCNavEph::xmit11
CommonTime xmit11
Transmit time for message 11.
Definition: GPSCNavEph.hpp:103
gnsstk::galfnav::esiw
@ esiw
w subframe index
Definition: GalFBits.hpp:244
gnsstk::bds::enbCus
@ enbCus
Definition: BDSD1Bits.hpp:428
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::GPSCNavAlm::healthL1
bool healthL1
L1 signal health from message type 10.
Definition: GPSCNavAlm.hpp:85
gnsstk::bds::escw
@ escw
Definition: BDSD1Bits.hpp:579
gnsstk::SatelliteSystem
SatelliteSystem
Supported satellite systems.
Definition: SatelliteSystem.hpp:55
gnsstk::bds::escCic
@ escCic
Definition: BDSD1Bits.hpp:509
gnsstk::gpscnav::cscaf2
@ cscaf2
af2 power factor
Definition: GPSCBits.hpp:256
gnsstk::OrbitDataKepler::OMEGAdot
double OMEGAdot
Rate of Rt ascension (rad/sec)
Definition: OrbitDataKepler.hpp:192
gnsstk::gpscnav::isbBeta1
@ isbBeta1
Definition: GPSCBits.hpp:507
gnsstk::GPSCNavISC::pre
uint32_t pre
The preamble from the start of the subframe.
Definition: GPSCNavISC.hpp:103
gnsstk::gpscnav::iscAlpha1
@ iscAlpha1
Definition: GPSCBits.hpp:493
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::StdNavTimeOffset::tgt
TimeSystem tgt
Target time system.
Definition: StdNavTimeOffset.hpp:121
gnsstk::gpscnav2::gnbA1
@ gnbA1
A1-ggto number of bits.
Definition: GPSC2Bits.hpp:316
gnsstk::gpscnav::cnbURAned2
@ cnbURAned2
URA_NED2 number of bits.
Definition: GPSCBits.hpp:235
gnsstk::SatID
Definition: SatID.hpp:89
gnsstk::NavDataPtrList
std::list< NavDataPtr > NavDataPtrList
Definition: NavData.hpp:75
gnsstk::GPSCNavData::alert
bool alert
Alert flag.
Definition: GPSCNavData.hpp:105
gnsstk::gpscnav::rnb31toa
@ rnb31toa
message type 31, toa number of bits
Definition: GPSCBits.hpp:400
gnsstk::gpscnav2::esbURA
@ esbURA
URA index start bit.
Definition: GPSC2Bits.hpp:83
gnsstk::gpscnav2::asbaf0
@ asbaf0
af0 start bit
Definition: GPSC2Bits.hpp:369
gnsstk::gpscnav::isbBeta2
@ isbBeta2
Definition: GPSCBits.hpp:511
gnsstk::galfnav::ascaf1
@ ascaf1
Definition: GalFBits.hpp:446
gnsstk::OrbitDataKepler::Cuc
double Cuc
Cosine latitude (rad)
Definition: OrbitDataKepler.hpp:175
gnsstk::gpscnav::esidA
@ esidA
Delta A message index.
Definition: GPSCBits.hpp:120
gnsstk::gpscnav::csiURAned1
@ csiURAned1
URA_NED1 message index.
Definition: GPSCBits.hpp:228
gnsstk::gpscnav::inbAlpha3
@ inbAlpha3
Definition: GPSCBits.hpp:500
gnsstk::gpscnav::ephMClk
@ ephMClk
Clock message (any of type 30-37)
Definition: GPSCBits.hpp:57
gnsstk::gpscnav::isbAlpha2
@ isbAlpha2
Definition: GPSCBits.hpp:495
gnsstk::CommonTime::setTimeSystem
CommonTime & setTimeSystem(TimeSystem timeSystem)
Definition: CommonTime.hpp:195
gnsstk::GPSCNavEph::uraED
int8_t uraED
5-bit URA index from message type 10.
Definition: GPSCNavEph.hpp:92
gnsstk::gpscnav::rsbPHI0
@ rsbPHI0
PHI0 start bit.
Definition: GPSCBits.hpp:425
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::gpscnav2::enbtop
@ enbtop
top number of bits
Definition: GPSC2Bits.hpp:78
gnsstk::gpscnav2::escdn0dot
@ escdn0dot
Delta n0 dot power factor.
Definition: GPSC2Bits.hpp:105
gnsstk::gpscnav2::gscGNSS
@ gscGNSS
GNSS ID scale factor.
Definition: GPSC2Bits.hpp:301
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::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::gpscnav2::asbPRNa
@ asbPRNa
PRNa start bit.
Definition: GPSC2Bits.hpp:333
gnsstk::galfnav::esiOMEGA0
@ esiOMEGA0
OMEGA0 subframe index.
Definition: GalFBits.hpp:212
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
GPSCNavHealth.hpp
GPSCNavTimeOffset.hpp
gnsstk::GPSCNavEph::xmitClk
CommonTime xmitClk
Transmit time for the clock message.
Definition: GPSCNavEph.hpp:104
gnsstk::galinav::cnbA0
@ cnbA0
Definition: GalIBits.hpp:298
gnsstk::gpscnav::inbBeta0
@ inbBeta0
Definition: GPSCBits.hpp:504
gnsstk::gpscnav::csbURAned2
@ csbURAned2
URA_NED2 start bit.
Definition: GPSCBits.hpp:234
gnsstk::gpscnav::rsbOMEGA0
@ rsbOMEGA0
OMEGA0 start bit.
Definition: GPSCBits.hpp:421
gnsstk::gpscnav::rnb12WNa
@ rnb12WNa
message type 12, WNa number of bits
Definition: GPSCBits.hpp:380
gnsstk::StdNavTimeOffset::wnLSF
unsigned wnLSF
Leap second reference week number (UTC only).
Definition: StdNavTimeOffset.hpp:133
gnsstk::gpscnav2::enbdn0
@ enbdn0
Delta n0 number of bits.
Definition: GPSC2Bits.hpp:100
gnsstk::bds::esbCus
@ esbCus
Definition: BDSD1Bits.hpp:427
gnsstk::GPSCNavEph::healthL1
bool healthL1
L1 signal health from message type 10.
Definition: GPSCNavEph.hpp:89
gnsstk::gpscnav2::gnbA2
@ gnbA2
A2-ggto number of bits.
Definition: GPSC2Bits.hpp:320
gnsstk
For Sinex::InputHistory.
Definition: BasicFramework.cpp:50
gnsstk::StdNavTimeOffset::a1
double a1
Drift coefficient of source time scale.
Definition: StdNavTimeOffset.hpp:123
gnsstk::InterSigCorr::isc
double isc
Definition: InterSigCorr.hpp:171
gnsstk::gpscnav::csitoc
@ csitoc
toc message index
Definition: GPSCBits.hpp:238
gnsstk::gpscnav::esbHeaL5
@ esbHeaL5
L5 Signal health bit.
Definition: GPSCBits.hpp:103
gnsstk::GPSCNavRedAlm::fixValues
void fixValues()
Definition: GPSCNavRedAlm.cpp:61
gnsstk::GPSCNavAlm::wna
unsigned wna
Reference week for toa.
Definition: GPSCNavAlm.hpp:89
gnsstk::GPSWeekSecond
Definition: GPSWeekSecond.hpp:56
gnsstk::gpscnav::csbaf1
@ csbaf1
af1 start bit
Definition: GPSCBits.hpp:249
gnsstk::gpscnav::csbURAned0
@ csbURAned0
URA_NED0 start bit.
Definition: GPSCBits.hpp:224
gnsstk::gpscnav::inbISCL2C
@ inbISCL2C
Definition: GPSCBits.hpp:476
gnsstk::gpscnav::rsb12p6
@ rsb12p6
message type 12, packet 6 start bit
Definition: GPSCBits.hpp:392
gnsstk::gpscnav::rsc12WNa
@ rsc12WNa
message type 12, WNa scale factor
Definition: GPSCBits.hpp:381
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::bds::esbWN
@ esbWN
Definition: BDSD1Bits.hpp:226
gnsstk::gpscnav2::gnbt
@ gnbt
tggto number of bits
Definition: GPSC2Bits.hpp:304
gnsstk::OrbitDataKepler::Adot
double Adot
Rate of semi-major axis (m/sec)
Definition: OrbitDataKepler.hpp:188
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::OrbitDataKepler::M0
double M0
Mean anomaly (rad)
Definition: OrbitDataKepler.hpp:182
gnsstk::Exception
Definition: Exception.hpp:151
gnsstk::gpscnav::rnb12toa
@ rnb12toa
message type 12, toa number of bits
Definition: GPSCBits.hpp:384
gnsstk::bds::cnbWNlsf
@ cnbWNlsf
Definition: BDSD1Bits.hpp:1022
gnsstk::galfnav::anbWNa
@ anbWNa
Definition: GalFBits.hpp:386
gnsstk::gpscnav::rsbHeaL1
@ rsbHeaL1
L1 Signal health bit.
Definition: GPSCBits.hpp:429
gnsstk::gpscnav2::enbdA
@ enbdA
Delta A number of bits.
Definition: GPSC2Bits.hpp:92
gnsstk::bds::cnbDN
@ cnbDN
Definition: BDSD1Bits.hpp:1040
gnsstk::GPSCNavHealth
Definition: GPSCNavHealth.hpp:54
gnsstk::bds::ascM0
@ ascM0
Definition: BDSD1Bits.hpp:173
gnsstk::bds::csbdtLSF
@ csbdtLSF
dtLSF
Definition: BDSD1Bits.hpp:1017
gnsstk::galinav::csbdtLS
@ csbdtLS
Definition: GalIBits.hpp:305
gnsstk::gpscnav::rsc31toa
@ rsc31toa
message type 31, toa scale factor
Definition: GPSCBits.hpp:401
gnsstk::bds::ascAhalf
@ ascAhalf
Definition: BDSD1Bits.hpp:94
GPSCNavAlm.hpp
gnsstk::gpscnav::rsb31toa
@ rsb31toa
message type 31, toa start bit
Definition: GPSCBits.hpp:399
gnsstk::gpscnav::rscPRNa
@ rscPRNa
PRNa scale factor.
Definition: GPSCBits.hpp:415
gnsstk::bds::enbCis
@ enbCis
Definition: BDSD2Bits.hpp:994
gnsstk::gpscnav::rsbHeaL2
@ rsbHeaL2
L2 Signal health bit.
Definition: GPSCBits.hpp:430
gnsstk::gpscnav2::gsbt
@ gsbt
tggto start bit
Definition: GPSC2Bits.hpp:303
gnsstk::gpscnav::csbaf2
@ csbaf2
af2 start bit
Definition: GPSCBits.hpp:254
GPSCNavIono.hpp
gnsstk::gpscnav::cscURAned1
@ cscURAned1
URA_NED1 scale factor.
Definition: GPSCBits.hpp:231
gnsstk::bds::esiCrs
@ esiCrs
Definition: BDSD2Bits.hpp:1054
gnsstk::gpscnav2::asbHeaL1
@ asbHeaL1
L1 Signal health bit.
Definition: GPSC2Bits.hpp:337
gnsstk::galfnav::anbM0
@ anbM0
Definition: GalFBits.hpp:435
gnsstk::OrbitDataKepler::dndot
double dndot
Rate of correction to mean motion (rad/sec/sec)
Definition: OrbitDataKepler.hpp:184
gnsstk::gpscnav::esiHea
@ esiHea
Signal health message index.
Definition: GPSCBits.hpp:100
gnsstk::gpscnav::iscISCL1CA
@ iscISCL1CA
Definition: GPSCBits.hpp:473
gnsstk::galfnav::enbCrc
@ enbCrc
Crc number of bits.
Definition: GalFBits.hpp:266
gnsstk::gpscnav2::gsct
@ gsct
tggto power factor
Definition: GPSC2Bits.hpp:305
PNBGPSCNavDataFactory.hpp
gnsstk::gpscnav::csiaf2
@ csiaf2
af2 message index
Definition: GPSCBits.hpp:253
gnsstk::galinav::cscA1
@ cscA1
Definition: GalIBits.hpp:303
gnsstk::gpscnav::iscISCL5I5
@ iscISCL5I5
Definition: GPSCBits.hpp:481
gnsstk::GPSCNavAlm::deltai
double deltai
Inclination in rad relative to 0.3*pi rad.
Definition: GPSCNavAlm.hpp:88
gnsstk::OrbitDataKepler::Cus
double Cus
Sine latitude (rad)
Definition: OrbitDataKepler.hpp:176
gnsstk::StdNavTimeOffset::a2
double a2
Drift rate coefficient of source time scale.
Definition: StdNavTimeOffset.hpp:124
gnsstk::GPSCNavEph::fixFit
void fixFit()
Definition: GPSCNavEph.cpp:91
gnsstk::gpscnav::isbBeta0
@ isbBeta0
Definition: GPSCBits.hpp:503
gnsstk::gpscnav2::enbAdot
@ enbAdot
Adot number of bits.
Definition: GPSC2Bits.hpp:96
gnsstk::bds::escOMEGA0
@ escOMEGA0
Definition: BDSD1Bits.hpp:565
gnsstk::TimeSystem::QZS
@ QZS
QZSS system Time.
gnsstk::galfnav::esbi0
@ esbi0
i0 start bit
Definition: GalFBits.hpp:240
gnsstk::gpscnav::esiAdot
@ esiAdot
Adot message index.
Definition: GPSCBits.hpp:125
gnsstk::gpscnav2::cnbA2
@ cnbA2
A2-n number of bits.
Definition: GPSC2Bits.hpp:222
gnsstk::gpscnav2::asbM0
@ asbM0
M0 start bit.
Definition: GPSC2Bits.hpp:365
gnsstk::gpscnav::csiaf1
@ csiaf1
af1 message index
Definition: GPSCBits.hpp:248
gnsstk::bds::esbCis
@ esbCis
Definition: BDSD2Bits.hpp:993
gnsstk::GPSCNavRedAlm::deltaA
double deltaA
Semi-major axis relative to reference value.
Definition: GPSCNavRedAlm.hpp:74
gnsstk::gpscnav::inbBeta2
@ inbBeta2
Definition: GPSCBits.hpp:512
gnsstk::galinav::cnbdtLS
@ cnbdtLS
Definition: GalIBits.hpp:306
gnsstk::ObsID
Definition: ObsID.hpp:82
gnsstk::GPSCNavEph::preClk
uint32_t preClk
Definition: GPSCNavEph.hpp:87
gnsstk::gpscnav::cnbtoc
@ cnbtoc
toc number of bits
Definition: GPSCBits.hpp:240
gnsstk::gpscnav::rsb12p7
@ rsb12p7
message type 12, packet 7 start bit
Definition: GPSCBits.hpp:393
gnsstk::GPSCNavEph::deltaA
double deltaA
Semi-major axis relative to reference (Aref).
Definition: GPSCNavEph.hpp:100
gnsstk::GPSCNavEph::healthL5
bool healthL5
L5 signal health from message type 10.
Definition: GPSCNavEph.hpp:91
gnsstk::gpscnav::cnbURAned0
@ cnbURAned0
URA_NED0 number of bits.
Definition: GPSCBits.hpp:225
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::gpscnav2::asbdi
@ asbdi
delta i start bit
Definition: GPSC2Bits.hpp:345
gnsstk::gpscnav::inbAlpha2
@ inbAlpha2
Definition: GPSCBits.hpp:496
gnsstk::gpscnav::cnbaf0
@ cnbaf0
af0 number of bits
Definition: GPSCBits.hpp:245
gnsstk::bds::cscdtLSF
@ cscdtLSF
Definition: BDSD1Bits.hpp:1019
gnsstk::gpscnav::iscISCL5Q5
@ iscISCL5Q5
Definition: GPSCBits.hpp:485
gnsstk::bds::cscdtLS
@ cscdtLS
Definition: BDSD1Bits.hpp:1012
gnsstk::bds::escidot
@ escidot
Definition: BDSD1Bits.hpp:551
gnsstk::gpscnav::rsc12toa
@ rsc12toa
message type 12, toa power factor
Definition: GPSCBits.hpp:385
gnsstk::OrbitDataKepler::Toc
CommonTime Toc
Clock epoch.
Definition: OrbitDataKepler.hpp:172
gnsstk::gpscnav2::gnbA0
@ gnbA0
A0-ggto number of bits.
Definition: GPSC2Bits.hpp:312
gnsstk::galinav::csbWNot
@ csbWNot
Definition: GalIBits.hpp:313
gnsstk::gpscnav::ephM10
@ ephM10
Message type 10.
Definition: GPSCBits.hpp:55
gnsstk::gpscnav::inbBeta1
@ inbBeta1
Definition: GPSCBits.hpp:508
gnsstk::gpscnav::enbPre
@ enbPre
Preamble number of bits.
Definition: GPSCBits.hpp:76
gnsstk::GPSCNavEph::pre11
uint32_t pre11
The preamble from the start of message type 11.
Definition: GPSCNavEph.hpp:86
gnsstk::gpscnav::rsb31p4
@ rsb31p4
message type 31, packet 4 start bit
Definition: GPSCBits.hpp:406
gnsstk::gpscnav2::escAdot
@ escAdot
Adot power factor.
Definition: GPSC2Bits.hpp:97
gnsstk::gpscnav::csiURAned0
@ csiURAned0
URA_NED0 message index.
Definition: GPSCBits.hpp:223
gnsstk::gpscnav2::enbURA
@ enbURA
URA index number of bits.
Definition: GPSC2Bits.hpp:84
GPSCNavRedAlm.hpp
gnsstk::gpscnav::inbAlpha1
@ inbAlpha1
Definition: GPSCBits.hpp:492
gnsstk::bds::anbtoa
@ anbtoa
Definition: BDSD1Bits.hpp:146
gnsstk::gpscnav2::escdA
@ escdA
Delta A power factor.
Definition: GPSC2Bits.hpp:93
gnsstk::gpscnav::cscaf1
@ cscaf1
af1 power factor
Definition: GPSCBits.hpp:251
gnsstk::KlobucharIonoNavData::beta
double beta[4]
beta terms of Klobuchar model, using semi-circles.
Definition: KlobucharIonoNavData.hpp:85
gnsstk::gpscnav2::esbtop
@ esbtop
top start bit
Definition: GPSC2Bits.hpp:77
gnsstk::gpscnav2::esbdn0dot
@ esbdn0dot
Delta n0 dot start bit.
Definition: GPSC2Bits.hpp:103
gnsstk::gpscnav2::escdn0
@ escdn0
Delta n0 power factor.
Definition: GPSC2Bits.hpp:101
gnsstk::gpscnav::rsb12toa
@ rsb12toa
message type 12, toa start bit
Definition: GPSCBits.hpp:383
gnsstk::gpscnav2::asbaf1
@ asbaf1
af1 start bit
Definition: GPSC2Bits.hpp:373
gnsstk::GPSCNavIono::alert
bool alert
Alert flag.
Definition: GPSCNavIono.hpp:76
GPSCNavEph.hpp
gnsstk::SatID::system
SatelliteSystem system
System for this satellite.
Definition: SatID.hpp:156
gnsstk::galfnav::ascaf0
@ ascaf0
Definition: GalFBits.hpp:441
gnsstk::bds::ascOMEGA0
@ ascOMEGA0
Definition: BDSD1Bits.hpp:121
gnsstk::gpscnav::esbMsgType
@ esbMsgType
Message type start bit.
Definition: GPSCBits.hpp:83
gnsstk::gpscnav2::esbdA
@ esbdA
Delta A start bit.
Definition: GPSC2Bits.hpp:91
gnsstk::OrbitDataKepler::i0
double i0
Inclination (rad)
Definition: OrbitDataKepler.hpp:190
gnsstk::gpscnav::isbAlpha1
@ isbAlpha1
Definition: GPSCBits.hpp:491
gnsstk::gpscnav::esitoe1
@ esitoe1
toe (ephemeris 1) message index
Definition: GPSCBits.hpp:115
gnsstk::galfnav::esbM0
@ esbM0
M0 start bit.
Definition: GalFBits.hpp:193
gnsstk::bds::asbEcc
@ asbEcc
Eccentricity.
Definition: BDSD1Bits.hpp:130
gnsstk::gpscnav2::gsbA0
@ gsbA0
A0-ggto start bit.
Definition: GPSC2Bits.hpp:311
gnsstk::gpscnav::inbTgd
@ inbTgd
Definition: GPSCBits.hpp:468
gnsstk::OrbitDataKepler::Cic
double Cic
Cosine inclination (rad)
Definition: OrbitDataKepler.hpp:179
GPSCBits.hpp
gnsstk::bds::ascOMEGAdot
@ ascOMEGAdot
Definition: BDSD1Bits.hpp:151
gnsstk::gpscnav::cnbURAned1
@ cnbURAned1
URA_NED1 number of bits.
Definition: GPSCBits.hpp:230
gnsstk::gpscnav::iscISCL2C
@ iscISCL2C
Definition: GPSCBits.hpp:477
gnsstk::gpscnav::csiURAned2
@ csiURAned2
URA_NED2 message index.
Definition: GPSCBits.hpp:233
gnsstk::galfnav::enbi0
@ enbi0
i0 number of bits
Definition: GalFBits.hpp:241
gnsstk::gpscnav::inbISCL5Q5
@ inbISCL5Q5
Definition: GPSCBits.hpp:484
gnsstk::gpscnav2::asbOMEGA0
@ asbOMEGA0
OMEGA0 MSBs start bit.
Definition: GPSC2Bits.hpp:357
gnsstk::gpscnav2::esbAdot
@ esbAdot
Adot start bit.
Definition: GPSC2Bits.hpp:95
gnsstk::gpscnav::csbURAned1
@ csbURAned1
URA_NED1 start bit.
Definition: GPSCBits.hpp:229
gnsstk::gpscnav2::enbdn0dot
@ enbdn0dot
Delta n0 dot number of bits.
Definition: GPSC2Bits.hpp:104
gnsstk::OrbitDataKepler::Crc
double Crc
Cosine radius (m)
Definition: OrbitDataKepler.hpp:177
gnsstk::gpscnav::rnbPHI0
@ rnbPHI0
PHI0 number of bits.
Definition: GPSCBits.hpp:426
gnsstk::galinav::cscWNot
@ cscWNot
Definition: GalIBits.hpp:315
gnsstk::galinav::csbtot
@ csbtot
Definition: GalIBits.hpp:309
gnsstk::GPSCNavISC::iscL5I5
double iscL5I5
Intersignal corrections for L5 in-phase.
Definition: GPSCNavISC.hpp:107
gnsstk::gpscnav2::anbPRNa
@ anbPRNa
PRNa number of bits.
Definition: GPSC2Bits.hpp:334
gnsstk::GPSCNavIono
Class containing data elements unique to GPS CNav ionospheric data.
Definition: GPSCNavIono.hpp:50
gnsstk::galfnav::enbOMEGA0
@ enbOMEGA0
OMEGA0 number of bits.
Definition: GalFBits.hpp:214
gnsstk::gpscnav::rscPHI0
@ rscPHI0
PHI0 power factor.
Definition: GPSCBits.hpp:427
gnsstk::gpscnav::cscURAned0
@ cscURAned0
URA_NED0 scale factor.
Definition: GPSCBits.hpp:226
gnsstk::gpscnav::esbAlert
@ esbAlert
Alert flag start bit.
Definition: GPSCBits.hpp:91
gnsstk::gpscnav::isbAlpha0
@ isbAlpha0
Definition: GPSCBits.hpp:487
gnsstk::gpscnav::inbBeta3
@ inbBeta3
Definition: GPSCBits.hpp:516
gnsstk::bds::csbWNlsf
@ csbWNlsf
WNlsf.
Definition: BDSD1Bits.hpp:1021
gnsstk::gpscnav::rsbHeaL5
@ rsbHeaL5
L5 Signal health bit.
Definition: GPSCBits.hpp:431
gnsstk::galfnav::esiCuc
@ esiCuc
Cuc subframe index.
Definition: GalFBits.hpp:254
gnsstk::bds::escEcc
@ escEcc
Definition: BDSD1Bits.hpp:410
gnsstk::bds::esiCis
@ esiCis
Definition: BDSD2Bits.hpp:992
gnsstk::GPSCNavAlm
Class containing data elements unique to GPS CNav midi almanac.
Definition: GPSCNavAlm.hpp:50
gnsstk::gpscnav2::csbA2
@ csbA2
A2-n start bit.
Definition: GPSC2Bits.hpp:221
gnsstk::gpscnav2::enbdOMEGAdot
@ enbdOMEGAdot
Delta OMEGAdot number of bits.
Definition: GPSC2Bits.hpp:128
gnsstk::galfnav::esiCic
@ esiCic
Cic subframe index.
Definition: GalFBits.hpp:296
gnsstk::bds::cnbdtLSF
@ cnbdtLSF
Definition: BDSD1Bits.hpp:1018
std
Definition: Angle.hpp:142
gnsstk::OrbitDataKepler::af0
double af0
SV clock error (sec)
Definition: OrbitDataKepler.hpp:195
gnsstk::bds::cscWNlsf
@ cscWNlsf
Definition: BDSD1Bits.hpp:1023
gnsstk::gpscnav::esiURA
@ esiURA
URA index message index.
Definition: GPSCBits.hpp:110
gnsstk::gpscnav::rsb31WNa
@ rsb31WNa
message type 31, WNa start bit
Definition: GPSCBits.hpp:395
gnsstk::galinav::cnbtot
@ cnbtot
Definition: GalIBits.hpp:310
gnsstk::GPSCNavAlm::fixFit
void fixFit()
Fill the beginFit and endFit values for this object.
Definition: GPSCNavAlm.cpp:75
gnsstk::GPSCNavEph::uraNED1
uint8_t uraNED1
non-elevation dependent URA from clock message.
Definition: GPSCNavEph.hpp:94
gnsstk::bds::asbtoa
@ asbtoa
toa (reference time)
Definition: BDSD1Bits.hpp:145
gnsstk::GPSCNavISC::iscL5Q5
double iscL5Q5
Intersignal corrections for L5 quadrature.
Definition: GPSCNavISC.hpp:108
gnsstk::bds::escWN
@ escWN
Definition: BDSD1Bits.hpp:228
gnsstk::bds::csbDN
@ csbDN
DN.
Definition: BDSD1Bits.hpp:1039
gnsstk::KlobucharIonoNavData::alpha
double alpha[4]
alpha terms of Klobuchar model, using semi-circles.
Definition: KlobucharIonoNavData.hpp:84
gnsstk::bds::ascdi
@ ascdi
Definition: BDSD1Bits.hpp:136
gnsstk::GPSCNavRedAlm
Class containing data elements unique to GPS CNav reduced almanac.
Definition: GPSCNavRedAlm.hpp:50
gnsstk::gpscnav::esbtoe1
@ esbtoe1
toe (ephemeris 1) start bit
Definition: GPSCBits.hpp:116
gnsstk::galinav::cscA0
@ cscA0
Definition: GalIBits.hpp:299
gnsstk::gpscnav2::asbOMEGAdot
@ asbOMEGAdot
OMEGAdot start bit.
Definition: GPSC2Bits.hpp:349
gnsstk::gpscnav::iscBeta3
@ iscBeta3
Definition: GPSCBits.hpp:517
gnsstk::gpscnav::rsb31p2
@ rsb31p2
message type 31, packet 2 start bit
Definition: GPSCBits.hpp:404
gnsstk::gpscnav2::ascPRNa
@ ascPRNa
PRNa scale factor.
Definition: GPSC2Bits.hpp:335
gnsstk::gpscnav::esidn0
@ esidn0
Delta n0 message index.
Definition: GPSCBits.hpp:130
gnsstk::gpscnav::esbHeaL1
@ esbHeaL1
L1 Signal health bit.
Definition: GPSCBits.hpp:101
gnsstk::galfnav::enbCic
@ enbCic
Cic number of bits.
Definition: GalFBits.hpp:298
gnsstk::gpscnav::rscOMEGA0
@ rscOMEGA0
OMEGA0 power factor.
Definition: GPSCBits.hpp:423
gnsstk::galfnav::asbWNa
@ asbWNa
Definition: GalFBits.hpp:385
gnsstk::bds::asctoa
@ asctoa
Definition: BDSD1Bits.hpp:147
gnsstk::GPSCNavEph::alertClk
bool alertClk
Alert flag from the clock message.
Definition: GPSCNavEph.hpp:97
gnsstk::galfnav::enbM0
@ enbM0
M0 number of bits.
Definition: GalFBits.hpp:194
gnsstk::gpscnav::isbAlpha3
@ isbAlpha3
Definition: GPSCBits.hpp:499
gnsstk::bds::escCrc
@ escCrc
Definition: BDSD1Bits.hpp:434
gnsstk::gpscnav::isbBeta3
@ isbBeta3
Definition: GPSCBits.hpp:515
gnsstk::gpscnav::inbISCL5I5
@ inbISCL5I5
Definition: GPSCBits.hpp:480
gnsstk::gpscnav2::gscWN
@ gscWN
WNggto scale factor.
Definition: GPSC2Bits.hpp:309
gnsstk::gpscnav::cnbaf1
@ cnbaf1
af1 number of bits
Definition: GPSCBits.hpp:250
gnsstk::gpscnav::enbMsgType
@ enbMsgType
Message type number of bits.
Definition: GPSCBits.hpp:84
gnsstk::StdNavTimeOffset::a0
double a0
Bias coefficient of source time scale.
Definition: StdNavTimeOffset.hpp:122
gnsstk::gpscnav::isbTgd
@ isbTgd
Definition: GPSCBits.hpp:467
gnsstk::gpscnav::isbISCL5Q5
@ isbISCL5Q5
Definition: GPSCBits.hpp:483
gnsstk::gpscnav::rsb12p4
@ rsb12p4
message type 12, packet 4 start bit
Definition: GPSCBits.hpp:390
gnsstk::gpscnav::rnb31WNa
@ rnb31WNa
message type 31, WNa number of bits
Definition: GPSCBits.hpp:396
gnsstk::GPSCNavISC
Class containing data elements unique to GPS CNAV ISC data.
Definition: GPSCNavISC.hpp:50
gnsstk::gpscnav::escMsgType
@ escMsgType
Message type scale factor.
Definition: GPSCBits.hpp:85
gnsstk::galfnav::ascWNa
@ ascWNa
Definition: GalFBits.hpp:387
gnsstk::galfnav::esbCrc
@ esbCrc
Crc start bit.
Definition: GalFBits.hpp:265
gnsstk::gpscnav::rsb31p3
@ rsb31p3
message type 31, packet 3 start bit
Definition: GPSCBits.hpp:405
gnsstk::galfnav::esbCic
@ esbCic
Cic start bit.
Definition: GalFBits.hpp:297
gnsstk::gpscnav::rsbdA
@ rsbdA
dA start bit
Definition: GPSCBits.hpp:417
gnsstk::NavID
Definition: NavID.hpp:61
gnsstk::gpscnav::rsc31WNa
@ rsc31WNa
message type 31, WNa scale factor
Definition: GPSCBits.hpp:397
gnsstk::gpscnav::rsb12p3
@ rsb12p3
message type 12, packet 3 start bit
Definition: GPSCBits.hpp:389
gnsstk::gpscnav::rscdA
@ rscdA
dA power factor
Definition: GPSCBits.hpp:419
gnsstk::gpscnav::rsb12p1
@ rsb12p1
message type 12, packet 1 start bit
Definition: GPSCBits.hpp:387
gnsstk::OrbitDataKepler::health
SVHealth health
SV health status.
Definition: OrbitDataKepler.hpp:173
gnsstk::gpscnav::rnbOMEGA0
@ rnbOMEGA0
OMEGA0 number of bits.
Definition: GPSCBits.hpp:422
GPSCNavISC.hpp
gnsstk::gpscnav::isbISCL1CA
@ isbISCL1CA
Definition: GPSCBits.hpp:471
gnsstk::GPSCNavISC::iscL2C
double iscL2C
Intersignal corrections for L2C.
Definition: GPSCNavISC.hpp:106
gnsstk::gpscnav::escPre
@ escPre
Preamble scale factor.
Definition: GPSCBits.hpp:77
L2
gnsstk::Matrix< double > L2
Definition: Matrix_LUDecomp_T.cpp:46
gnsstk::GPSCNavISC::iscL1CA
double iscL1CA
Intersignal corrections for L1 C/A.
Definition: GPSCNavISC.hpp:105
gnsstk::GPSCNavData::pre
uint32_t pre
The preamble from the start of the subframe.
Definition: GPSCNavData.hpp:104
gnsstk::gpscnav::esitop
@ esitop
top message index
Definition: GPSCBits.hpp:105
gnsstk::GPSCNavEph::uraNED0
int8_t uraNED0
non-elevation dependent URA from clock message.
Definition: GPSCNavEph.hpp:93
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::GPSCNavEph::dOMEGAdot
double dOMEGAdot
Rate of right ascension relative to -2.6e-9*pi.
Definition: GPSCNavEph.hpp:101
gnsstk::galfnav::esbOMEGA0
@ esbOMEGA0
OMEGA0 start bit.
Definition: GalFBits.hpp:213
gnsstk::StdNavTimeOffset::effTime
CommonTime effTime
Effectivity time (wnLSF,dn).
Definition: StdNavTimeOffset.hpp:127
gnsstk::SatelliteSystem::QZSS
@ QZSS
gnsstk::galfnav::esii0
@ esii0
i0 subframe index
Definition: GalFBits.hpp:239
gnsstk::gpscnav::iscAlpha2
@ iscAlpha2
Definition: GPSCBits.hpp:497
gnsstk::GPSCNavIono::pre
uint32_t pre
The preamble from the start of the subframe.
Definition: GPSCNavIono.hpp:75
gnsstk::gpscnav::esidn0dot
@ esidn0dot
Delta n0 dot message index.
Definition: GPSCBits.hpp:135
gnsstk::galfnav::anbaf1
@ anbaf1
Definition: GalFBits.hpp:445
gnsstk::gpscnav2::gsbGNSS
@ gsbGNSS
GNSS ID start bit.
Definition: GPSC2Bits.hpp:299
gnsstk::galfnav::esbCuc
@ esbCuc
Cuc start bit.
Definition: GalFBits.hpp:255
gnsstk::gpscnav2::gnbGNSS
@ gnbGNSS
GNSS ID number of bits.
Definition: GPSC2Bits.hpp:300
gnsstk::StdNavTimeOffset::refTime
CommonTime refTime
Reference time for computation.
Definition: StdNavTimeOffset.hpp:126
gnsstk::gpscnav::cscaf0
@ cscaf0
af0 power factor
Definition: GPSCBits.hpp:246
gnsstk::gpscnav::iscTgd
@ iscTgd
Definition: GPSCBits.hpp:469
TimeCorrection.hpp
gnsstk::bds::escCrs
@ escCrs
Definition: BDSD1Bits.hpp:448
gnsstk::gpscnav::rnbdA
@ rnbdA
dA number of bits
Definition: GPSCBits.hpp:418
gnsstk::gpscnav::isbISCL5I5
@ isbISCL5I5
Definition: GPSCBits.hpp:479
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::escCis
@ escCis
Definition: BDSD1Bits.hpp:537
gnsstk::gpscnav2::gscA2
@ gscA2
A2-ggto power factor.
Definition: GPSC2Bits.hpp:321
gnsstk::GPSCNavEph
Definition: GPSCNavEph.hpp:52
gnsstk::gpscnav2::gsbWN
@ gsbWN
WNggto start bit.
Definition: GPSC2Bits.hpp:307
gnsstk::gpscnav2::esctop
@ esctop
top scale factor
Definition: GPSC2Bits.hpp:79
gnsstk::gpscnav2::gsbA1
@ gsbA1
A1-ggto start bit.
Definition: GPSC2Bits.hpp:315
gnsstk::gpscnav2::escdOMEGAdot
@ escdOMEGAdot
Delta OMEGAdot power factor.
Definition: GPSC2Bits.hpp:129
gnsstk::gpscnav2::gsbA2
@ gsbA2
A2-ggto start bit.
Definition: GPSC2Bits.hpp:319
gnsstk::StdNavTimeOffset::tot
double tot
Time data reference time of week (storage only).
Definition: StdNavTimeOffset.hpp:128
gnsstk::GPSCNavAlm::toa
double toa
Convenience storage of unqualified toa.
Definition: GPSCNavAlm.hpp:90
gnsstk::OrbitDataKepler::dn
double dn
Correction to mean motion (rad/sec)
Definition: OrbitDataKepler.hpp:183
gnsstk::bds::esiCus
@ esiCus
Definition: BDSD1Bits.hpp:426
gnsstk::galfnav::esbidot
@ esbidot
idot start bit
Definition: GalFBits.hpp:218
gnsstk::GPSCNavEph::top
CommonTime top
Time of prediction.
Definition: GPSCNavEph.hpp:102
gnsstk::gpscnav::esitoe2
@ esitoe2
toe (ephemeris 2) message index
Definition: GPSCBits.hpp:162
gnsstk::gpscnav::esctoe1
@ esctoe1
toe (ephemeris 1) scale factor
Definition: GPSCBits.hpp:118


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