EngEphemeris.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 
61 #ifndef GNSSTK_EngEphemeris_HPP
62 #define GNSSTK_EngEphemeris_HPP
63 
64 #include <string>
65 #include <iostream>
66 
67 #include "EngNav.hpp"
68 #include "Exception.hpp"
69 #include "CommonTime.hpp"
70 #include "Xvt.hpp"
71 #include "BrcKeplerOrbit.hpp"
72 #include "BrcClockCorrection.hpp"
73 
74 
75 namespace gnsstk
76 {
78 
79 
86  class EngEphemeris : public EngNav
87  {
88  public:
90  EngEphemeris()
91  noexcept;
92 
94  virtual ~EngEphemeris() {}
95 
96  bool operator==(const EngEphemeris& right) const noexcept;
97  bool operator!=(const EngEphemeris& right) const noexcept
98  { return !(operator==(right)); }
99 
110  bool addSubframe(const uint32_t subframe[10],
111  const int gpsWeek,
112  const short PRN,
113  const short track);
114 
129  bool addSubframeNoParity(const uint32_t subframe[10],
130  const int gpsWeek,
131  const short PRN,
132  const short track);
133 
158  bool addIncompleteSF1Thru3(const uint32_t sf1[8],
159  const uint32_t sf2[8],
160  const uint32_t sf3[8],
161  const long sf1TransmitSOW,
162  const int gpsWeek,
163  const short PRN,
164  const short track);
165 
172  bool isValid() const noexcept;
173 
181  bool isData(short subframe) const;
182 
190  bool isDataSet() const;
191 
206  void setAccuracy(double acc);
207 
218  short getFitInterval() const;
219 
227  static short getFitInterval(short iodc, short fiti);
228 
234 
235 
237  // kinda pointless, huh?
238  unsigned char getTLMPreamble() const
239  noexcept
240  { return 0x8b; }
241 
245  unsigned getTLMMessage(short subframe) const;
246 
252 
257  CommonTime getEpochTime() const;
258 
262  CommonTime getTransmitTime() const;
263 
266  noexcept
267  { return getEpochTime(); }
268 
270  std::string getSatSys() const
271  noexcept
272  { return satSys; }
273 
277  short getPRNID() const;
278 
282  short getTracker() const;
283 
288  double getHOWTime(short subframe) const;
289 
294  short getASAlert(short subframe) const;
295 
300  short getFullWeek() const;
301 
305  short getCodeFlags() const;
306 
312  double getAccuracy() const;
313 
318  short getAccFlag() const;
319 
323  short getHealth() const;
324 
329  short getL2Pdata() const;
330 
334  short getIODC() const;
335 
339  short getIODE() const;
340 
344  long getAODO() const;
345 
350  double getToc() const;
351 
355  double getAf0() const;
356 
361  double getAf1() const;
362 
367  double getAf2() const;
368 
373  double getTgd() const;
374 
379  double getCus() const;
380 
385  double getCrs() const;
386 
391  double getCis() const;
392 
397  double getCrc() const;
398 
403  double getCuc() const;
404 
409  double getCic() const;
410 
415  double getToe() const;
416 
421  double getM0() const;
422 
427  double getDn() const;
428 
432  double getEcc() const;
433 
438  double getAhalf() const;
439 
444  double getA() const;
445 
450  double getOmega0() const;
451 
456  double getI0() const;
457 
462  double getW() const;
463 
468  double getOmegaDot() const;
469 
474  double getIDot() const;
475 
479  double svRelativity(const CommonTime& t) const;
480 
484  double svClockBias(const CommonTime& t) const;
485 
489  double svClockDrift(const CommonTime& t) const;
490 
495  short getFitInt() const;
496 
501  //double getEphkey() const
502 
507  long getTot() const;
508 
512  BrcKeplerOrbit getOrbit() const;
513 
518 
572  EngEphemeris& loadData( const std::string satSysArg,
573  const unsigned short tlm[3], const long how[3],
574  const short asalert[3],
575  const short Tracker, const short prn,
576  const short fullweek, const short cflags,
577  const short acc, const short svhealth,
578  const short iodc, const short l2pdata,
579  const long Aodo, const double tgd,
580  const double toc, const double Af2,
581  const double Af1, const double Af0,
582  const short iode, const double crs,
583  const double Dn, const double m0,
584  const double cuc, const double Ecc,
585  const double cus, const double ahalf,
586  const double toe, const short fitInt,
587  const double cic, const double Omega0,
588  const double cis, const double I0,
589  const double crc, const double W,
590  const double OmegaDot, const double IDot );
591 
592  EngEphemeris& setSF1( unsigned tlm, double how, short asalert,
593  short fullweek, short cflags, short acc,
594  short svhealth, short iodc,
595  short l2pdata, double tgd, double toc, double Af2,
596  double Af1, double Af0, short Tracker, short prn );
597 
598  EngEphemeris& setSF2( unsigned tlm, double how, short asalert,
599  short iode, double crs, double Dn, double m0,
600  double cuc, double Ecc, double cus, double ahalf,
601  double toe, short fitInt );
602 
603  EngEphemeris& setSF3( unsigned tlm, double how, short asalert,
604  double cic, double Omega0, double cis, double I0,
605  double crc, double W, double OmegaDot, double IDot);
606 
610  void dump(std::ostream& s = std::cout) const;
611 
612  void setFIC(const bool arg);
613 
617  void dumpTerse(std::ostream& s = std::cout) const;
618 
619 
620  bool haveSubframe[3];
622  bool unifiedConvert( const int gpsWeek,
623  const short PRN,
624  const short track);
625  uint32_t subframeStore[3][10];
626  // True if initialized with FIC data
627  bool isFIC;
628 
630 
631  unsigned short tlm_message[3];
632  std::string satSys;
633  short PRNID;
634  short tracker;
635  long HOWtime[3];
636  short ASalert[3];
640  short weeknum;
642  short codeflags;
643  short health;
644  short L2Pdata;
645  short IODC;
646  short IODE;
647  long AODO;
648  short fitint;
649  double Tgd;
651 
652  // The following is an odd, special case.
653  short accFlagTmp; // Accuracy flag (URA index). NOTE: We should
654  // use orbit.getURAoe( ) for this value. However
655  // we had to have someplace to temporarily store
656  // this value between setSF1( ) and setSF2( ).
657  // Frankly, are the ONLY two methods that should
658  // make use of this member. Its status is NOT
659  // GUARANTEED outside the time setSF1( ) loads it
660  // and setSF2( ) uses it.
661 
664 
667 
668  friend std::ostream& operator<<(std::ostream& s,
669  const EngEphemeris& eph);
670 
671  }; // class EngEphemeris
672 
674 
675 } // namespace
676 
677 #endif
gnsstk::EngEphemeris::operator!=
bool operator!=(const EngEphemeris &right) const noexcept
Definition: EngEphemeris.hpp:97
gnsstk::EngEphemeris::getTLMMessage
unsigned getTLMMessage(short subframe) const
Definition: EngEphemeris.cpp:557
gnsstk::EngEphemeris::getTgd
double getTgd() const
Definition: EngEphemeris.cpp:795
gnsstk::EngEphemeris::getHealth
short getHealth() const
Definition: EngEphemeris.cpp:705
gnsstk::EngEphemeris::dump
void dump(std::ostream &s=std::cout) const
Definition: EngEphemeris.cpp:1438
gnsstk::EngEphemeris::getA
double getA() const
Definition: EngEphemeris.cpp:915
gnsstk::EngEphemeris::fitint
short fitint
Definition: EngEphemeris.hpp:648
gnsstk::EngEphemeris::getTimestamp
CommonTime getTimestamp() const noexcept
used for template functions
Definition: EngEphemeris.hpp:265
Xvt.hpp
gnsstk::EngEphemeris::svClockBias
double svClockBias(const CommonTime &t) const
Definition: EngEphemeris.cpp:547
gnsstk::BrcKeplerOrbit
Definition: BrcKeplerOrbit.hpp:81
gnsstk::EngEphemeris::getFitInterval
short getFitInterval() const
Definition: EngEphemeris.cpp:428
gnsstk::EngEphemeris::setAccuracy
void setAccuracy(double acc)
Definition: EngEphemeris.cpp:417
const
#define const
Definition: getopt.c:43
gnsstk::EngEphemeris::satSys
std::string satSys
Definition: EngEphemeris.hpp:632
gnsstk::EngEphemeris::~EngEphemeris
virtual ~EngEphemeris()
Destructor.
Definition: EngEphemeris.hpp:94
gnsstk::EngEphemeris::getTracker
short getTracker() const
Definition: EngEphemeris.cpp:629
gnsstk::EngEphemeris::getEcc
double getEcc() const
Definition: EngEphemeris.cpp:895
gnsstk::EngEphemeris::EngEphemeris
EngEphemeris() noexcept
Default constructor.
Definition: EngEphemeris.cpp:62
gnsstk::EngEphemeris::getFullWeek
short getFullWeek() const
Definition: EngEphemeris.cpp:665
BrcKeplerOrbit.hpp
gnsstk::EngEphemeris::getEpochTime
CommonTime getEpochTime() const
Definition: EngEphemeris.cpp:588
gnsstk::EngEphemeris::svClockDrift
double svClockDrift(const CommonTime &t) const
Definition: EngEphemeris.cpp:552
gnsstk::EngEphemeris::getASAlert
short getASAlert(short subframe) const
Definition: EngEphemeris.cpp:654
gnsstk::EngEphemeris::getIDot
double getIDot() const
Definition: EngEphemeris.cpp:965
gnsstk::EngEphemeris::getOmega0
double getOmega0() const
Definition: EngEphemeris.cpp:925
gnsstk::EngEphemeris::getAccFlag
short getAccFlag() const
Definition: EngEphemeris.cpp:695
gnsstk::EngEphemeris::getCrc
double getCrc() const
Definition: EngEphemeris.cpp:835
gnsstk::EngEphemeris::getAhalf
double getAhalf() const
Definition: EngEphemeris.cpp:905
gnsstk::EngNav
Definition: EngNav.hpp:69
gnsstk::EngEphemeris::getHOWTime
double getHOWTime(short subframe) const
Definition: EngEphemeris.cpp:639
gnsstk::EngEphemeris::getAf1
double getAf1() const
Definition: EngEphemeris.cpp:775
gnsstk::EngEphemeris::getEphemerisEpoch
CommonTime getEphemerisEpoch() const
Definition: EngEphemeris.cpp:593
gnsstk
For Sinex::InputHistory.
Definition: BasicFramework.cpp:50
gnsstk::EngEphemeris::HOWtime
long HOWtime[3]
Definition: EngEphemeris.hpp:635
gnsstk::EngEphemeris::IODE
short IODE
Definition: EngEphemeris.hpp:646
gnsstk::EngEphemeris::addIncompleteSF1Thru3
bool addIncompleteSF1Thru3(const uint32_t sf1[8], const uint32_t sf2[8], const uint32_t sf3[8], const long sf1TransmitSOW, const int gpsWeek, const short PRN, const short track)
Definition: EngEphemeris.cpp:201
gnsstk::EngEphemeris::PRNID
short PRNID
Definition: EngEphemeris.hpp:633
gnsstk::EngEphemeris::svXvt
Xvt svXvt(const CommonTime &t) const
Definition: EngEphemeris.cpp:525
gnsstk::EngEphemeris::Tgd
double Tgd
Definition: EngEphemeris.hpp:649
gnsstk::EngEphemeris::getAODO
long getAODO() const
Definition: EngEphemeris.cpp:745
gnsstk::EngEphemeris::IODC
short IODC
Definition: EngEphemeris.hpp:645
gnsstk::EngEphemeris::getCis
double getCis() const
Definition: EngEphemeris.cpp:825
gnsstk::EngEphemeris::bcClock
BrcClockCorrection bcClock
Clock information.
Definition: EngEphemeris.hpp:663
gnsstk::EngEphemeris
Definition: EngEphemeris.hpp:86
gnsstk::EngEphemeris::addSubframeNoParity
bool addSubframeNoParity(const uint32_t subframe[10], const int gpsWeek, const short PRN, const short track)
Definition: EngEphemeris.cpp:181
gnsstk::EngEphemeris::unifiedConvert
bool unifiedConvert(const int gpsWeek, const short PRN, const short track)
Definition: EngEphemeris.cpp:254
gnsstk::EngEphemeris::getL2Pdata
short getL2Pdata() const
Definition: EngEphemeris.cpp:715
gnsstk::EngEphemeris::getAf2
double getAf2() const
Definition: EngEphemeris.cpp:785
gnsstk::bds::sf2
@ sf2
Definition: BDSD1Bits.hpp:192
gnsstk::EngEphemeris::getDn
double getDn() const
Definition: EngEphemeris.cpp:885
gnsstk::EngEphemeris::getIODC
short getIODC() const
Definition: EngEphemeris.cpp:725
gnsstk::EngEphemeris::ASalert
short ASalert[3]
Definition: EngEphemeris.hpp:636
gnsstk::EngEphemeris::getToc
double getToc() const
Definition: EngEphemeris.cpp:755
gnsstk::EngEphemeris::accFlagTmp
short accFlagTmp
Definition: EngEphemeris.hpp:653
gnsstk::CommonTime
Definition: CommonTime.hpp:84
gnsstk::EngEphemeris::getClock
BrcClockCorrection getClock() const
Definition: EngEphemeris.cpp:608
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::EngEphemeris::loadData
EngEphemeris & loadData(const std::string satSysArg, const unsigned short tlm[3], const long how[3], const short asalert[3], const short Tracker, const short prn, const short fullweek, const short cflags, const short acc, const short svhealth, const short iodc, const short l2pdata, const long Aodo, const double tgd, const double toc, const double Af2, const double Af1, const double Af0, const short iode, const double crs, const double Dn, const double m0, const double cuc, const double Ecc, const double cus, const double ahalf, const double toe, const short fitInt, const double cic, const double Omega0, const double cis, const double I0, const double crc, const double W, const double OmegaDot, const double IDot)
Definition: EngEphemeris.cpp:1019
gnsstk::EngEphemeris::getTransmitTime
CommonTime getTransmitTime() const
Definition: EngEphemeris.cpp:568
gnsstk::EngEphemeris::operator<<
friend std::ostream & operator<<(std::ostream &s, const EngEphemeris &eph)
gnsstk::EngEphemeris::getPRNID
short getPRNID() const
Definition: EngEphemeris.cpp:619
arg
double arg
Definition: IERS1996UT1mUTCData.hpp:48
gnsstk::Xvt
Definition: Xvt.hpp:60
gnsstk::EngEphemeris::getSatSys
std::string getSatSys() const noexcept
Definition: EngEphemeris.hpp:270
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::EngEphemeris::health
short health
Definition: EngEphemeris.hpp:643
gnsstk::EngEphemeris::L2Pdata
short L2Pdata
Definition: EngEphemeris.hpp:644
gnsstk::EngEphemeris::isFIC
bool isFIC
Definition: EngEphemeris.hpp:627
gnsstk::EngEphemeris::subframeStore
uint32_t subframeStore[3][10]
Definition: EngEphemeris.hpp:625
gnsstk::EngEphemeris::codeflags
short codeflags
Definition: EngEphemeris.hpp:642
gnsstk::EngEphemeris::getIODE
short getIODE() const
Definition: EngEphemeris.cpp:735
gnsstk::EngEphemeris::tracker
short tracker
Definition: EngEphemeris.hpp:634
gnsstk::EngEphemeris::getCuc
double getCuc() const
Definition: EngEphemeris.cpp:845
gnsstk::EngEphemeris::AODO
long AODO
Definition: EngEphemeris.hpp:647
gnsstk::EngEphemeris::getCrs
double getCrs() const
Definition: EngEphemeris.cpp:815
gnsstk::EngEphemeris::getW
double getW() const
Definition: EngEphemeris.cpp:945
gnsstk::EngEphemeris::haveSubframe
bool haveSubframe[3]
Definition: EngEphemeris.hpp:620
gnsstk::bds::sf1
@ sf1
Definition: BDSD1Bits.hpp:191
gnsstk::EngEphemeris::setFIC
void setFIC(const bool arg)
Definition: EngEphemeris.cpp:1334
Exception.hpp
CommonTime.hpp
gnsstk::EngEphemeris::dumpTerse
void dumpTerse(std::ostream &s=std::cout) const
Definition: EngEphemeris.cpp:1398
gnsstk::BrcClockCorrection
Definition: BrcClockCorrection.hpp:76
gnsstk::EngEphemeris::getM0
double getM0() const
Definition: EngEphemeris.cpp:875
gnsstk::EngEphemeris::isDataSet
bool isDataSet() const
Definition: EngEphemeris.cpp:408
gnsstk::EngEphemeris::weeknum
short weeknum
Definition: EngEphemeris.hpp:640
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::EngEphemeris::orbit
BrcKeplerOrbit orbit
Orbit parameters.
Definition: EngEphemeris.hpp:666
gnsstk::EngEphemeris::getAccuracy
double getAccuracy() const
Definition: EngEphemeris.cpp:685
gnsstk::EngEphemeris::getTLMPreamble
unsigned char getTLMPreamble() const noexcept
Return 0x8b, the upper 5 bits of the 22-bit TLM word.
Definition: EngEphemeris.hpp:238
gnsstk::EngEphemeris::isValid
bool isValid() const noexcept
Definition: EngEphemeris.cpp:377
BrcClockCorrection.hpp
gnsstk::EngEphemeris::getCic
double getCic() const
Definition: EngEphemeris.cpp:855
gnsstk::EngEphemeris::getAf0
double getAf0() const
Definition: EngEphemeris.cpp:765
gnsstk::EngEphemeris::operator==
bool operator==(const EngEphemeris &right) const noexcept
Definition: EngEphemeris.cpp:101
gnsstk::EngEphemeris::isData
bool isData(short subframe) const
Definition: EngEphemeris.cpp:396
gnsstk::EngEphemeris::getCus
double getCus() const
Definition: EngEphemeris.cpp:805
gnsstk::EngEphemeris::getCodeFlags
short getCodeFlags() const
Definition: EngEphemeris.cpp:675
gnsstk::EngEphemeris::getI0
double getI0() const
Definition: EngEphemeris.cpp:935
gnsstk::EngEphemeris::getTot
long getTot() const
Definition: EngEphemeris.cpp:985
gnsstk::EngEphemeris::getToe
double getToe() const
Definition: EngEphemeris.cpp:865
gnsstk::EngEphemeris::tlm_message
unsigned short tlm_message[3]
Definition: EngEphemeris.hpp:631
gnsstk::EngEphemeris::getFitInt
short getFitInt() const
Definition: EngEphemeris.cpp:975
gnsstk::bds::sf3
@ sf3
Definition: BDSD1Bits.hpp:193
gnsstk::EngEphemeris::getOmegaDot
double getOmegaDot() const
Definition: EngEphemeris.cpp:955
gnsstk::EngEphemeris::getOrbit
BrcKeplerOrbit getOrbit() const
Definition: EngEphemeris.cpp:598
EngNav.hpp
gnsstk::EngEphemeris::addSubframe
bool addSubframe(const uint32_t subframe[10], const int gpsWeek, const short PRN, const short track)
Definition: EngEphemeris.cpp:146
gnsstk::EngEphemeris::svRelativity
double svRelativity(const CommonTime &t) const
Definition: EngEphemeris.cpp:542


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