RinexNavData.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 // This software was developed by Applied Research Laboratories at the
28 // University of Texas at Austin, under contract to an agency or agencies
29 // within the U.S. Department of Defense. The U.S. Government retains all
30 // rights to use, duplicate, distribute, disclose, or release this software.
31 //
32 // Pursuant to DoD Directive 523024
33 //
34 // DISTRIBUTION STATEMENT A: This software has been approved for public
35 // release, distribution is unlimited.
36 //
37 //==============================================================================
38 
44 #include "StringUtils.hpp"
45 
46 #include "CommonTime.hpp"
47 #include "CivilTime.hpp"
48 #include "GPSWeekSecond.hpp"
49 
50 #include "RinexNavData.hpp"
51 #include "RinexNavStream.hpp"
52 #include "GNSSconstants.hpp"
53 #include "TimeString.hpp"
54 
55 namespace gnsstk
56 {
57  using namespace gnsstk::StringUtils;
58  using namespace std;
59 
61  : time(gnsstk::CommonTime::BEGINNING_OF_TIME), PRNID(-1),
62  sf1XmitTime(0), toeWeek(0), codeflgs(0), accuracy(0),
63  health(0), L2Pdata(0), IODC(0), IODE(0), af0(0), af1(0), af2(0),
64  Tgd(0), Cuc(0), Cus(0), Crc(0), Crs(0), Cic(0), Cis(0), Toe(0),
65  M0(0), dn(0), ecc(0), Ahalf(0), OMEGA0(0), i0(0), w(0), OMEGAdot(0),
66  idot(0), fitint(4)
67  {
69  }
70 
72  : time(ee.getEpochTime()), PRNID(ee.getPRNID()), sf1XmitTime(0),
73  toeWeek(0), codeflgs(ee.getCodeFlags()), accuracy(ee.getAccuracy()),
74  health(ee.getHealth()), L2Pdata(ee.getL2Pdata()), IODC(ee.getIODC()),
75  IODE(ee.getIODE()), af0(ee.getAf0()), af1(ee.getAf1()),
76  af2(ee.getAf2()), Tgd(ee.getTgd()), Cuc(ee.getCuc()),
77  Cus(ee.getCus()), Crc(ee.getCrc()), Crs(ee.getCrs()),
78  Cic(ee.getCic()), Cis(ee.getCis()), Toe(ee.getToe()), M0(ee.getM0()),
79  dn(ee.getDn()), ecc(ee.getEcc()), Ahalf(ee.getAhalf()),
80  OMEGA0(ee.getOmega0()), i0(ee.getI0()), w(ee.getW()),
81  OMEGAdot(ee.getOmegaDot()), idot(ee.getIDot()),
82  fitint(ee.getFitInterval())
83  {
84  setXmitTime(ee.getFullWeek(), ee.getHOWTime(1));
85  }
86 
88  {
89  RinexNavStream& strm = dynamic_cast<RinexNavStream&>(ffs);
90 
91  strm << setw(2) << right << PRNID
92  << printTime(time, " %02y %2m %2d %2H %2M%5.1f")
93  << af0 << af1 << af2 << endlpp
94  << " " << IODE << Crs << dn << M0 << endlpp
95  << " " << Cuc << ecc << Cus << Ahalf << endlpp
96  << " " << Toe << Cic << OMEGA0 << Cis << endlpp
97  << " " << i0 << Crc << w << OMEGAdot << endlpp
98  << " " << idot << RNDouble(codeflgs) << RNDouble(toeWeek)
99  << RNDouble(L2Pdata) << endlpp
100  << " " << accuracy << RNDouble(health) << Tgd << IODC << endlpp
101  << " " << RNDouble(sf1XmitTime);
102  if (strm.header.version >= 2.1)
103  strm << fitint;
104  strm << endlpp;
105  }
106 
108  {
109  RinexNavStream& strm = dynamic_cast<RinexNavStream&>(ffs);
110 
111  // If the header hasn't been read, read it...
112  if(!strm.headerRead)
113  strm >> strm.header;
114 
115  string line;
116 
117  strm.formattedGetLine(line, true);
118  getPRNEpoch(line);
119 
120  strm.formattedGetLine(line);
121  getBroadcastOrbit1(line);
122 
123  strm.formattedGetLine(line);
124  getBroadcastOrbit2(line);
125 
126  strm.formattedGetLine(line);
127  getBroadcastOrbit3(line);
128 
129  strm.formattedGetLine(line);
130  getBroadcastOrbit4(line);
131 
132  strm.formattedGetLine(line);
133  getBroadcastOrbit5(line);
134 
135  strm.formattedGetLine(line);
136  getBroadcastOrbit6(line);
137 
138  strm.formattedGetLine(line);
139  getBroadcastOrbit7(line);
140  }
141 
142  std::string RinexNavData::stableText() const
143  {
144  ostringstream s;
145  s << "PRN: " << setw(2) << PRNID
146  << " TOE: " << printTime(getToeTime(), "%02m/%02d/%04Y %02H:%02M:%02S")
147  << " TOC: " << printTime(time, "%4F %10.3g")
148  << " IODE: " << setw(4) << int(IODE) // IODE should be int
149  << " HOWtime: " << setw(6) << getHOWWS().sow; // HOW should be double
150  return s.str();
151  }
152 
153  void RinexNavData::dump(ostream& s) const
154  {
155  s << "PRN: " << setw(2) << PRNID
156  << " TOE: " << printTime(getToeTime(), "%02m/%02d/%04Y %02H:%02M:%02S")
157  << " TOC: " << printTime(time, "%02m/%02d/%04Y %02H:%02M:%02S")
158  << " IODE: " << setw(4) << int(IODE) // IODE should be int
159  << " HOWtime: " << setw(6) << getHOWWS().sow // HOW should be double
160  << endl;
161  }
162 
163  RinexNavData::operator EngEphemeris() const noexcept
164  {
165  EngEphemeris ee;
166 
167  // there's no TLM word in RinexNavData, so it's set to 0.
168  // likewise, there's no AS alert or tracker.
169  // Also, in Rinex, the accuracy is in meters, and setSF1 expects
170  // the accuracy flag. We'll give it zero and pass the accuracy
171  // separately via the setAccuracy() method.
172  CommonTime how1(getHOWTime()), how2(how1+6), how3(how2+6);
173  GPSWeekSecond ws1(how1), ws2(how2), ws3(how3);
174  ee.setSF1(0, ws1.sow, 0, ws1.week, codeflgs, 0, health,
175  short(IODC), L2Pdata, Tgd, getTocWS().sow, af2, af1, af0, 0,
176  PRNID);
177  ee.setSF2(0, ws2.sow, 0, short(IODE), Crs, dn, M0, Cuc, ecc, Cus, Ahalf,
178  Toe, (fitint > 4) ? 1 : 0);
179  ee.setSF3(0, ws3.sow, 0, Cic, OMEGA0, Cis, i0, Crc, w, OMEGAdot,
180  idot);
181  ee.setFIC(false);
182  ee.setAccuracy(accuracy);
183 
184  return ee;
185  }
186 
187  list<double> RinexNavData::toList() const
188  {
189  list<double> l;
190  GPSWeekSecond howws(getHOWWS());
191 
192  l.push_back(PRNID);
193  l.push_back(howws.sow);
194  l.push_back(howws.week);
195  l.push_back(codeflgs);
196  l.push_back(accuracy.val);
197  l.push_back(health);
198  l.push_back(L2Pdata);
199  l.push_back(IODC.val);
200  l.push_back(IODE.val);
201  l.push_back(getTocWS().sow);
202  l.push_back(af0.val);
203  l.push_back(af1.val);
204  l.push_back(af2.val);
205  l.push_back(Tgd.val);
206  l.push_back(Cuc.val);
207  l.push_back(Cus.val);
208  l.push_back(Crc.val);
209  l.push_back(Crs.val);
210  l.push_back(Cic.val);
211  l.push_back(Cis.val);
212  l.push_back(Toe.val);
213  l.push_back(M0.val);
214  l.push_back(dn.val);
215  l.push_back(ecc.val);
216  l.push_back(Ahalf.val);
217  l.push_back(OMEGA0.val);
218  l.push_back(i0.val);
219  l.push_back(w.val);
220  l.push_back(OMEGAdot.val);
221  l.push_back(idot.val);
222  l.push_back(fitint.val);
223 
224  return l;
225  }
226 
227  void RinexNavData::getPRNEpoch(const string& currentLine)
228  {
229  try
230  {
231  // check for spaces in the right spots...
232  for (int i = 2; i <= 17; i += 3)
233  if (currentLine[i] != ' ')
234  throw(FFStreamError("Badly formatted line"));
235 
236  PRNID = asInt(currentLine.substr(0,2));
237 
238  short yr = asInt(currentLine.substr(2,3));
239  short mo = asInt(currentLine.substr(5,3));
240  short day = asInt(currentLine.substr(8,3));
241  short hr = asInt(currentLine.substr(11,3));
242  short min = asInt(currentLine.substr(14,3));
243  double sec = asDouble(currentLine.substr(17,5));
244 
245  // years 80-99 represent 1980-1999
246  const int rolloverYear = 80;
247  if (yr < rolloverYear)
248  yr += 100;
249  yr += 1900;
250 
251  // Real Rinex has epochs 'yy mm dd hr 59 60.0'
252  // surprisingly often....
253  double ds=0;
254  if(sec >= 60.)
255  {
256  ds=sec;
257  sec=0.0;
258  }
260  if(ds != 0) time += ds;
261 
262  af0 = currentLine.substr(22,19);
263  af1 = currentLine.substr(41,19);
264  af2 = currentLine.substr(60,19);
265  }
266  catch (std::exception &e)
267  {
268  FFStreamError err("std::exception: " +
269  string(e.what()));
270  GNSSTK_THROW(err);
271  }
272  }
273 
274  void RinexNavData::getBroadcastOrbit1(const string& currentLine)
275  {
276  try
277  {
278  IODE = currentLine.substr(3,19);
279  Crs = currentLine.substr(22,19);
280  dn = currentLine.substr(41,19);
281  M0 = currentLine.substr(60,19);
282  }
283  catch (std::exception &e)
284  {
285  FFStreamError err("std::exception: " +
286  string(e.what()));
287  GNSSTK_THROW(err);
288  }
289  }
290 
291  void RinexNavData::getBroadcastOrbit2(const string& currentLine)
292  {
293  try
294  {
295  Cuc = currentLine.substr(3,19);
296  ecc = currentLine.substr(22,19);
297  Cus = currentLine.substr(41,19);
298  Ahalf = currentLine.substr(60,19);
299  }
300  catch (std::exception &e)
301  {
302  FFStreamError err("std::exception: " +
303  string(e.what()));
304  GNSSTK_THROW(err);
305  }
306  }
307 
308  void RinexNavData::getBroadcastOrbit3(const string& currentLine)
309  {
310  try
311  {
312  Toe = currentLine.substr(3,19);
313  Cic = currentLine.substr(22,19);
314  OMEGA0 = currentLine.substr(41,19);
315  Cis = currentLine.substr(60,19);
316  }
317  catch (std::exception &e)
318  {
319  FFStreamError err("std::exception: " +
320  string(e.what()));
321  GNSSTK_THROW(err);
322  }
323  }
324 
325  void RinexNavData::getBroadcastOrbit4(const string& currentLine)
326  {
327  try
328  {
329  i0 = currentLine.substr(3,19);
330  Crc = currentLine.substr(22,19);
331  w = currentLine.substr(41,19);
332  OMEGAdot = currentLine.substr(60,19);
333  }
334  catch (std::exception &e)
335  {
336  FFStreamError err("std::exception: " +
337  string(e.what()));
338  GNSSTK_THROW(err);
339  }
340  }
341 
342  void RinexNavData::getBroadcastOrbit5(const string& currentLine)
343  {
344  try
345  {
346  RNDouble codeL2(0), L2P(0), toe_wn(0);
347 
348  idot = currentLine.substr(3,19);
349  codeL2 = currentLine.substr(22,19);
350  toe_wn = currentLine.substr(41,19);
351  L2P = currentLine.substr(60,19);
352 
353  codeflgs = (short) codeL2;
354  L2Pdata = (short) L2P;
355  toeWeek = (short) toe_wn;
356  }
357  catch (std::exception &e)
358  {
359  FFStreamError err("std::exception: " +
360  string(e.what()));
361  GNSSTK_THROW(err);
362  }
363  }
364 
365  void RinexNavData::getBroadcastOrbit6(const string& currentLine)
366  {
367  try
368  {
369  RNDouble SV_health(0);
370 
371  accuracy = currentLine.substr(3,19);
372  SV_health = currentLine.substr(22,19);
373  Tgd = currentLine.substr(41,19);
374  IODC = currentLine.substr(60,19);
375 
376 
377  health = (short) SV_health;
378  }
379  catch (std::exception &e)
380  {
381  FFStreamError err("std::exception: " +
382  string(e.what()));
383  GNSSTK_THROW(err);
384  }
385  }
386 
387  void RinexNavData::getBroadcastOrbit7(const string& currentLine)
388  {
389  try
390  {
391  RNDouble HOW_sec(0);
392 
393  HOW_sec = currentLine.substr(3,19);
394  // leave it alone so round-trips are possible
395  // (even though we're storing a double as a long, which
396  //could lead to failures in round-trip testing, though if
397  //that happens your transmit time is messed).
398  //setXmitTime(HOW_sec);
399  sf1XmitTime = HOW_sec;
400  fitint = currentLine.substr(22,19);
401  }
402  catch (std::exception &e)
403  {
404  FFStreamError err("std::exception: " +
405  string(e.what()));
406  GNSSTK_THROW(err);
407  }
408  }
409 
410 
412  {
413  GPSWeekSecond rv;
414  // sf1XmitTime may not actually be a proper subframe 1
415  // transmit time. It may be a HOW time or something like
416  // that.
417  if (sf1XmitTime < 0)
418  {
419  // If the transmit time is negative, assume that it
420  // corresponds to the Toe week, according to the footnote
421  // attached to Table A4 in the 2.11 standard.
422  long properXmit = fixSF1xmitSOW(sf1XmitTime+FULLWEEK);
423  rv = GPSWeekSecond(toeWeek-1, properXmit, TimeSystem::GPS);
424  }
425  else
426  {
427  // If the transmit time is >= 0, make sure that we have
428  // the right week using a trusty old half-week test.
429  long properXmit = fixSF1xmitSOW(sf1XmitTime);
430  double diff = Toe - properXmit;
431  if (diff < -HALFWEEK)
432  rv = GPSWeekSecond(toeWeek-1, properXmit, TimeSystem::GPS);
433  else if (diff > HALFWEEK)
434  rv = GPSWeekSecond(toeWeek+1, properXmit, TimeSystem::GPS);
435  else
436  rv = GPSWeekSecond(toeWeek, properXmit, TimeSystem::GPS);
437  }
438  return rv;
439  }
440 
441 
442  RinexNavData& RinexNavData::setXmitWeek(unsigned short fullweek)
443  {
444  if (sf1XmitTime < 0)
445  {
446  // If the transmit time is negative, assume that the
447  // transmit week corresponds to the Toe week, according to
448  // the footnote attached to Table A4 in the 2.11 standard.
449  toeWeek = fullweek;
450  }
451  else
452  {
453  // If the transmit time is >= 0, make sure that we have
454  // the right week using a trusty old half-week test.
455  double diff = Toe - sf1XmitTime;
456  if (diff < -HALFWEEK)
457  {
458  toeWeek = fullweek+1;
459  // adjust transmit time to be relative to the week.
460  // week is in broadcast orbit 5
461  // transmission time is in broadcast orbit 7
462  // see footnote in RINEX 2.11 document
464  }
465  else if (diff > HALFWEEK)
466  {
467  toeWeek = fullweek-1;
468  // see comments above
470  }
471  else
472  toeWeek = fullweek;
473  }
474  return *this;
475  }
476 
477 
478  RinexNavData& RinexNavData::setXmitTime(unsigned short fullweek,
479  unsigned long sow)
480  {
481  setXmitTime(sow);
482  setXmitWeek(fullweek);
483  return *this;
484  }
485 
486 
487 } // end of namespace
gnsstk::RNDouble
Definition: RNDouble.hpp:50
gnsstk::RinexNavData::getHOWWS
GPSWeekSecond getHOWWS() const
Definition: RinexNavData.hpp:186
gnsstk::RinexNavData::Toe
RNDouble Toe
Ephemeris epoch (sec of week).
Definition: RinexNavData.hpp:237
gnsstk::StringUtils::asInt
long asInt(const std::string &s)
Definition: StringUtils.hpp:713
gnsstk::RinexNavData::toList
std::list< double > toList() const
Definition: RinexNavData.cpp:187
gnsstk::RinexNavData::Crc
RNDouble Crc
Cosine radius (m).
Definition: RinexNavData.hpp:228
gnsstk::RinexNavData::Cic
RNDouble Cic
Cosine inclination (rad).
Definition: RinexNavData.hpp:230
gnsstk::HALFWEEK
const long HALFWEEK
Seconds per half week.
Definition: TimeConstants.hpp:58
example6.day
day
Definition: example6.py:66
gnsstk::RinexNavData::L2Pdata
short L2Pdata
L2 P data flag.
Definition: RinexNavData.hpp:209
gnsstk::RinexNavData::Crs
RNDouble Crs
Sine radius (m).
Definition: RinexNavData.hpp:229
gnsstk::FFStream
Definition: FFStream.hpp:119
gnsstk::EngEphemeris::setAccuracy
void setAccuracy(double acc)
Definition: EngEphemeris.cpp:417
gnsstk::BEGINNING_OF_TIME
const Epoch BEGINNING_OF_TIME(CommonTime::BEGINNING_OF_TIME)
Earliest representable Epoch.
const
#define const
Definition: getopt.c:43
StringUtils.hpp
gnsstk::RinexNavData::RinexNavData
RinexNavData()
Definition: RinexNavData.cpp:60
gnsstk::RinexNavData::setXmitWeek
RinexNavData & setXmitWeek(unsigned short fullweek)
Definition: RinexNavData.cpp:442
gnsstk::RinexNavData::accuracy
RNDouble accuracy
SV accuracy (m).
Definition: RinexNavData.hpp:207
gnsstk::FFTextStream::formattedGetLine
void formattedGetLine(std::string &line, const bool expectEOF=false)
Definition: FFTextStream.cpp:149
gnsstk::RinexNavData::getBroadcastOrbit3
void getBroadcastOrbit3(const std::string &currentLine)
Definition: RinexNavData.cpp:308
gnsstk::FULLWEEK
const long FULLWEEK
Seconds per whole week.
Definition: TimeConstants.hpp:60
gnsstk::RinexNavData::fixSF1xmitSOW
static long fixSF1xmitSOW(unsigned long sow)
Definition: RinexNavData.hpp:107
gnsstk::RinexNavData::codeflgs
short codeflgs
L2 codes.
Definition: RinexNavData.hpp:206
gnsstk::RinexNavData::getBroadcastOrbit5
void getBroadcastOrbit5(const std::string &currentLine)
Definition: RinexNavData.cpp:342
gnsstk::EngEphemeris::getFullWeek
short getFullWeek() const
Definition: EngEphemeris.cpp:665
gnsstk::RinexNavData::w
RNDouble w
Argument of perigee (rad).
Definition: RinexNavData.hpp:244
gnsstk::RinexNavData::OMEGA0
RNDouble OMEGA0
Rt ascension of ascending node (rad).
Definition: RinexNavData.hpp:242
gnsstk::RinexNavHeader::version
double version
RINEX Version.
Definition: RinexNavHeader.hpp:104
gnsstk::RinexNavData::dump
virtual void dump(std::ostream &s) const
Definition: RinexNavData.cpp:153
gnsstk::CommonTime::setTimeSystem
CommonTime & setTimeSystem(TimeSystem timeSystem)
Definition: CommonTime.hpp:195
gnsstk::RinexNavData::getBroadcastOrbit4
void getBroadcastOrbit4(const std::string &currentLine)
Definition: RinexNavData.cpp:325
gnsstk::RinexNavData::OMEGAdot
RNDouble OMEGAdot
Rate of Rt ascension (rad/sec).
Definition: RinexNavData.hpp:245
gnsstk::RinexNavData::getXmitWS
GPSWeekSecond getXmitWS() const
Definition: RinexNavData.cpp:411
gnsstk::RinexNavData::M0
RNDouble M0
Mean anomaly (rad).
Definition: RinexNavData.hpp:238
GNSSconstants.hpp
gnsstk::EngEphemeris::getHOWTime
double getHOWTime(short subframe) const
Definition: EngEphemeris.cpp:639
gnsstk::RinexNavData::Cus
RNDouble Cus
Sine latitude (rad).
Definition: RinexNavData.hpp:227
gnsstk
For Sinex::InputHistory.
Definition: BasicFramework.cpp:50
gnsstk::RinexNavData
Definition: RinexNavData.hpp:67
gnsstk::RinexNavData::getPRNEpoch
void getPRNEpoch(const std::string &currentLine)
Definition: RinexNavData.cpp:227
gnsstk::GPSWeekSecond
Definition: GPSWeekSecond.hpp:56
gnsstk::RinexNavData::ecc
RNDouble ecc
Eccentricity.
Definition: RinexNavData.hpp:240
gnsstk::EngEphemeris
Definition: EngEphemeris.hpp:86
gnsstk::RinexNavData::Tgd
RNDouble Tgd
Group delay differential (sec).
Definition: RinexNavData.hpp:220
gnsstk::RinexNavData::time
CommonTime time
Clock reference time (toc).
Definition: RinexNavData.hpp:198
gnsstk::CivilTime::convertToCommonTime
virtual CommonTime convertToCommonTime() const
Definition: CivilTime.cpp:75
gnsstk::RinexNavData::health
short health
SV health.
Definition: RinexNavData.hpp:208
gnsstk::RinexNavData::IODC
RNDouble IODC
Index of data-clock.
Definition: RinexNavData.hpp:210
gnsstk::RinexNavData::reallyPutRecord
virtual void reallyPutRecord(FFStream &s) const
Definition: RinexNavData.cpp:87
gnsstk::RinexNavData::reallyGetRecord
virtual void reallyGetRecord(FFStream &s)
Definition: RinexNavData.cpp:107
example4.time
time
Definition: example4.py:103
gnsstk::RinexNavData::getTocWS
GPSWeekSecond getTocWS() const
Definition: RinexNavData.hpp:123
example4.err
err
Definition: example4.py:126
gnsstk::RinexNavData::getBroadcastOrbit6
void getBroadcastOrbit6(const std::string &currentLine)
Definition: RinexNavData.cpp:365
gnsstk::RinexNavData::toeWeek
short toeWeek
The full GPS week associated with Toe.
Definition: RinexNavData.hpp:205
gnsstk::CommonTime
Definition: CommonTime.hpp:84
gnsstk::WeekSecond::sow
double sow
Definition: WeekSecond.hpp:155
gnsstk::RinexNavData::PRNID
short PRNID
SV PRN ID.
Definition: RinexNavData.hpp:199
gnsstk::min
T min(const SparseMatrix< T > &SM)
Maximum element - return 0 if empty.
Definition: SparseMatrix.hpp:858
gnsstk::RinexNavData::dn
RNDouble dn
Correction to mean motion (rad/sec).
Definition: RinexNavData.hpp:239
gnsstk::EngEphemeris::setSF1
EngEphemeris & setSF1(unsigned tlm, double how, short asalert, short fullweek, short cflags, short acc, short svhealth, short iodc, short l2pdata, double tgd, double toc, double Af2, double Af1, double Af0, short Tracker, short prn)
Definition: EngEphemeris.cpp:1108
gnsstk::RinexNavData::setXmitTime
RinexNavData & setXmitTime(unsigned long sow)
Definition: RinexNavData.hpp:158
gnsstk::RinexNavData::getToeTime
CommonTime getToeTime() const
Definition: RinexNavData.hpp:129
CivilTime.hpp
RinexNavStream.hpp
gnsstk::Week::week
int week
Full week number.
Definition: Week.hpp:267
gnsstk::StringUtils::asDouble
double asDouble(const std::string &s)
Definition: StringUtils.hpp:705
gnsstk::RinexNavData::getBroadcastOrbit1
void getBroadcastOrbit1(const std::string &currentLine)
Definition: RinexNavData.cpp:274
gnsstk::EngEphemeris::setSF3
EngEphemeris & setSF3(unsigned tlm, double how, short asalert, double cic, double Omega0, double cis, double I0, double crc, double W, double OmegaDot, double IDot)
Definition: EngEphemeris.cpp:1247
gnsstk::RinexNavData::af2
RNDouble af2
SV clock drift rate (sec/sec**2).
Definition: RinexNavData.hpp:219
gnsstk::RinexNavStream
Definition: RinexNavStream.hpp:61
gnsstk::RinexNavData::IODE
RNDouble IODE
Index of data-eph.
Definition: RinexNavData.hpp:211
gnsstk::RinexNavStream::header
RinexNavHeader header
RINEX NAV header for this file.
Definition: RinexNavStream.hpp:79
gnsstk::RinexNavData::getBroadcastOrbit7
void getBroadcastOrbit7(const std::string &currentLine)
Definition: RinexNavData.cpp:387
gnsstk::CivilTime
Definition: CivilTime.hpp:55
gnsstk::StringUtils
Definition: IonexStoreStrategy.cpp:44
GPSWeekSecond.hpp
gnsstk::RinexNavStream::headerRead
bool headerRead
Flag showing whether or not the header has been read.
Definition: RinexNavStream.hpp:82
gnsstk::printTime
std::string printTime(const CommonTime &t, const std::string &fmt)
Definition: TimeString.cpp:64
gnsstk::RinexNavData::sf1XmitTime
long sf1XmitTime
Transmit time (seconds of week) of SF 1.
Definition: RinexNavData.hpp:200
gnsstk::EngEphemeris::setFIC
void setFIC(const bool arg)
Definition: EngEphemeris.cpp:1334
gnsstk::TimeSystem::GPS
@ GPS
GPS system time.
CommonTime.hpp
std
Definition: Angle.hpp:142
gnsstk::RinexNavData::af0
RNDouble af0
SV clock error (sec).
Definition: RinexNavData.hpp:217
gnsstk::RinexNavData::fitint
RNDouble fitint
Fit interval.
Definition: RinexNavData.hpp:247
gnsstk::RinexNavData::af1
RNDouble af1
SV clock drift (sec/sec).
Definition: RinexNavData.hpp:218
gnsstk::RinexNavData::idot
RNDouble idot
Rate of inclination angle (rad/sec).
Definition: RinexNavData.hpp:246
gnsstk::EngEphemeris::setSF2
EngEphemeris & setSF2(unsigned tlm, double how, short asalert, short iode, double crs, double Dn, double m0, double cuc, double Ecc, double cus, double ahalf, double toe, short fitInt)
Definition: EngEphemeris.cpp:1161
gnsstk::RinexNavData::i0
RNDouble i0
Inclination (rad).
Definition: RinexNavData.hpp:243
gnsstk::RinexNavData::stableText
virtual std::string stableText() const
Definition: RinexNavData.cpp:142
GNSSTK_THROW
#define GNSSTK_THROW(exc)
Definition: Exception.hpp:366
gnsstk::RinexNavData::Cis
RNDouble Cis
Sine inclination (rad).
Definition: RinexNavData.hpp:231
endlpp
std::ostream & endlpp(std::ostream &os)
Definition: FFTextStream.hpp:147
RinexNavData.hpp
gnsstk::RinexNavData::Cuc
RNDouble Cuc
Cosine latitude (rad).
Definition: RinexNavData.hpp:226
TimeString.hpp
gnsstk::RinexNavData::Ahalf
RNDouble Ahalf
SQRT of semi-major axis (m**1/2).
Definition: RinexNavData.hpp:241
gnsstk::FormattedDouble::val
double val
The value as read or to be formatted.
Definition: FormattedDouble.hpp:181
gnsstk::RinexNavData::getBroadcastOrbit2
void getBroadcastOrbit2(const std::string &currentLine)
Definition: RinexNavData.cpp:291


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