RinexNavData.hpp
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 #ifndef RINEXNAVDATA_HPP
45 #define RINEXNAVDATA_HPP
46 
47 #include <list>
48 
49 #include "StringUtils.hpp"
50 #include "CommonTime.hpp"
51 #include "FFStream.hpp"
52 #include "RinexNavBase.hpp"
53 #include "EngEphemeris.hpp"
54 #include "RNDouble.hpp"
55 
56 namespace gnsstk
57 {
59 
60 
67  class RinexNavData : public RinexNavBase
68  {
69  public:
75  RinexNavData();
76 
78  RinexNavData(const EngEphemeris& ee);
79 
81  virtual ~RinexNavData() {}
82 
83  // The next four lines is our common interface
85  virtual bool isData() const {return true;}
86 
91  virtual std::string stableText() const;
92 
98  virtual void dump(std::ostream& s) const;
99 
103  operator EngEphemeris() const noexcept;
104 
107  static long fixSF1xmitSOW(unsigned long sow)
108  { return sow - (sow % 30); }
109 
116  { return time; }
117 
124  { return time; }
125 
130  { return getToeWS(); }
131 
137 
142  { return getXmitWS(); }
143 
147  GPSWeekSecond getXmitWS() const;
148 
158  RinexNavData& setXmitTime(unsigned long sow)
159  {
160  sf1XmitTime = fixSF1xmitSOW(sow);
161  return *this;
162  }
163 
169  RinexNavData& setXmitWeek(unsigned short fullweek);
170 
175  RinexNavData& setXmitTime(unsigned short fullweek, unsigned long sow);
176 
181  { return getXmitTime() + 6; }
182 
187  { return getHOWTime(); }
188 
193  std::list<double> toList() const;
194 
199  short PRNID;
200  long sf1XmitTime;
201  // Toe is kept in separate fields rather than in a
202  // GPSWeekSecond due partially to history but mostly due to
203  // the fact that the two fields are in separate "broadcast
204  // orbit" lines in the file.
205  short toeWeek;
206  short codeflgs;
208  short health;
209  short L2Pdata;
212 
213 
221 
222 
232 
233 
248 
249 
250  private:
254  void getPRNEpoch(const std::string& currentLine);
259  void getBroadcastOrbit1(const std::string& currentLine);
264  void getBroadcastOrbit2(const std::string& currentLine);
269  void getBroadcastOrbit3(const std::string& currentLine);
274  void getBroadcastOrbit4(const std::string& currentLine);
279  void getBroadcastOrbit5(const std::string& currentLine);
284  void getBroadcastOrbit6(const std::string& currentLine);
289  void getBroadcastOrbit7(const std::string& currentLine);
290 
294  std::string putBroadcastOrbit2() const;
298  std::string putBroadcastOrbit3() const;
302  std::string putBroadcastOrbit4() const;
306  std::string putBroadcastOrbit5() const;
310  std::string putBroadcastOrbit6() const;
316  std::string putBroadcastOrbit7(const double ver) const;
317 
318  protected:
324  virtual void reallyPutRecord(FFStream& s) const;
325 
336  virtual void reallyGetRecord(FFStream& s);
337  }; // class RinexNavData
338 
340 
341 } // namespace
342 
343 #endif
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::RinexNavData::~RinexNavData
virtual ~RinexNavData()
destructor
Definition: RinexNavData.hpp:81
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::RinexNavBase
Definition: RinexNavBase.hpp:57
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
const
#define const
Definition: getopt.c:43
StringUtils.hpp
gnsstk::RinexNavData::RinexNavData
RinexNavData()
Definition: RinexNavData.cpp:60
gnsstk::RinexNavData::getToeWS
GPSWeekSecond getToeWS() const
Definition: RinexNavData.hpp:135
gnsstk::RinexNavData::getTocTime
CommonTime getTocTime() const noexcept
Definition: RinexNavData.hpp:115
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::RinexNavData::putBroadcastOrbit3
std::string putBroadcastOrbit3() const
gnsstk::RinexNavData::getBroadcastOrbit3
void getBroadcastOrbit3(const std::string &currentLine)
Definition: RinexNavData.cpp:308
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::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::RinexNavData::getHOWTime
CommonTime getHOWTime() const
Definition: RinexNavData.hpp:180
gnsstk::RinexNavData::dump
virtual void dump(std::ostream &s) const
Definition: RinexNavData.cpp:153
gnsstk::RinexNavData::getBroadcastOrbit4
void getBroadcastOrbit4(const std::string &currentLine)
Definition: RinexNavData.cpp:325
RNDouble.hpp
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
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::putBroadcastOrbit4
std::string putBroadcastOrbit4() const
gnsstk::RinexNavData::Tgd
RNDouble Tgd
Group delay differential (sec).
Definition: RinexNavData.hpp:220
gnsstk::RinexNavData::putBroadcastOrbit6
std::string putBroadcastOrbit6() const
gnsstk::RinexNavData::putBroadcastOrbit7
std::string putBroadcastOrbit7(const double ver) const
gnsstk::RinexNavData::time
CommonTime time
Clock reference time (toc).
Definition: RinexNavData.hpp:198
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
gnsstk::RinexNavData::getTocWS
GPSWeekSecond getTocWS() const
Definition: RinexNavData.hpp:123
EngEphemeris.hpp
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::RinexNavData::PRNID
short PRNID
SV PRN ID.
Definition: RinexNavData.hpp:199
gnsstk::RinexNavData::getXmitTime
CommonTime getXmitTime() const
Definition: RinexNavData.hpp:141
gnsstk::RinexNavData::dn
RNDouble dn
Correction to mean motion (rad/sec).
Definition: RinexNavData.hpp:239
gnsstk::RinexNavData::setXmitTime
RinexNavData & setXmitTime(unsigned long sow)
Definition: RinexNavData.hpp:158
gnsstk::RinexNavData::getToeTime
CommonTime getToeTime() const
Definition: RinexNavData.hpp:129
gnsstk::RinexNavData::putBroadcastOrbit5
std::string putBroadcastOrbit5() const
gnsstk::RinexNavData::getBroadcastOrbit1
void getBroadcastOrbit1(const std::string &currentLine)
Definition: RinexNavData.cpp:274
gnsstk::RinexNavData::af2
RNDouble af2
SV clock drift rate (sec/sec**2).
Definition: RinexNavData.hpp:219
gnsstk::RinexNavData::IODE
RNDouble IODE
Index of data-eph.
Definition: RinexNavData.hpp:211
gnsstk::RinexNavData::getBroadcastOrbit7
void getBroadcastOrbit7(const std::string &currentLine)
Definition: RinexNavData.cpp:387
gnsstk::RinexNavData::sf1XmitTime
long sf1XmitTime
Transmit time (seconds of week) of SF 1.
Definition: RinexNavData.hpp:200
gnsstk::TimeSystem::GPS
@ GPS
GPS system time.
CommonTime.hpp
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
RinexNavBase.hpp
gnsstk::RinexNavData::i0
RNDouble i0
Inclination (rad).
Definition: RinexNavData.hpp:243
gnsstk::RinexNavData::stableText
virtual std::string stableText() const
Definition: RinexNavData.cpp:142
gnsstk::RinexNavData::Cis
RNDouble Cis
Sine inclination (rad).
Definition: RinexNavData.hpp:231
FFStream.hpp
gnsstk::RinexNavData::isData
virtual bool isData() const
RinexNavData is "data" so this function always returns true.
Definition: RinexNavData.hpp:85
gnsstk::RinexNavData::Cuc
RNDouble Cuc
Cosine latitude (rad).
Definition: RinexNavData.hpp:226
gnsstk::RinexNavData::putBroadcastOrbit2
std::string putBroadcastOrbit2() const
gnsstk::RinexNavData::Ahalf
RNDouble Ahalf
SQRT of semi-major axis (m**1/2).
Definition: RinexNavData.hpp:241
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