EngEphemeris Class Reference
[Ephemeris calculations]

#include <EngEphemeris.hpp>

Inheritance diagram for EngEphemeris:

Inheritance graph
[legend]
Collaboration diagram for EngEphemeris:

Collaboration graph
[legend]
List of all members.

Detailed Description

Ephemeris information for a single satellite.

This class encapsulates the ephemeris navigation message (subframes 1-3) and provides functions to decode the as-broadcast ephemerides.

Definition at line 77 of file EngEphemeris.hpp.

Public Member Functions

 EngEphemeris () throw ()
 Default constructor.
virtual ~EngEphemeris ()
 Destructor.
bool addSubframe (const long subframe[10], const int gpsWeek, const short PRN, const short track) throw ( gpstk::InvalidParameter )
 Historically, EngEphemeris allowed calling programs to add data one subframe at a time.
bool addSubframeNoParity (const long subframe[10], const int gpsWeek, const short PRN, const short track) throw ( gpstk::InvalidParameter )
 Store a subframe in this object.
bool addIncompleteSF1Thru3 (const long sf1[8], const long sf2[8], const long sf3[8], const long sf1TransmitSOW, const int gpsWeek, const short PRN, const short track)
 Store a subframe in this object.
bool isData (short subframe) const throw ( gpstk::InvalidRequest )
 Query presence of subframe in this object.
void setAccuracy (const double &acc) throw ( gpstk::InvalidParameter )
 Set the value of the SV accuracy (in meters).
short getFitInterval () const throw ( gpstk::InvalidRequest )
 This is for Block II/IIA Need update for Block IIR and IIF.
Xvt svXvt (const CommonTime &t) const throw ( gpstk::InvalidRequest )
 Compute satellite position & velocity at the given time using this ephemeris.
unsigned char getTLMPreamble () const throw ()
 Return 0x8b, the upper 5 bits of the 22-bit TLM word.
unsigned getTLMMessage (short subframe) const throw ( gpstk::InvalidRequest )
 Return the lower 16 bits of the TLM word for the given subframe.
CommonTime getEphemerisEpoch () const throw ( gpstk::InvalidRequest )
 EXvtracts the epoch time from this ephemeris, correcting for half weeks and HOW time.
CommonTime getEpochTime () const throw ( gpstk::InvalidRequest )
 EXvtracts the epoch time (time of clock) from this ephemeris, correcting for half weeks and HOW time.
CommonTime getTransmitTime () const throw ()
 EXvtracts the transmit time from the ephemeris using the Tot.
CommonTime getTimestamp () const throw ()
 used for template functions
std::string getSatSys () const throw ()
 This functions returns the GNSS type (satellite system code).
short getPRNID () const throw ( gpstk::InvalidRequest )
 This function returns the PRN ID of the SV.
short getTracker () const throw ( gpstk::InvalidRequest )
 This function returns the tracker number.
double getHOWTime (short subframe) const throw ( gpstk::InvalidRequest )
 This function returns the time of the HOW in subframe 1 or 2 or 3 in seconds of week.
short getASAlert (short subframe) const throw ( gpstk::InvalidRequest )
 This function returns the A-S alert flag for either subframe 1 or 2 or 3.
short getFullWeek () const throw ( gpstk::InvalidRequest )
 This function return the GPS week number for the ephemeris.
short getCodeFlags () const throw ( gpstk::InvalidRequest )
 This function returns the values of the L2 codes.
double getAccuracy () const throw ( gpstk::InvalidRequest )
 This function returns the value of the SV accuracy (m) computed from the accuracy flag in the nav message, or as set by the setAccuracy() method.
short getAccFlag () const throw ( gpstk::InvalidRequest )
 This function returns the flag based on the SV accuracy flag as it appears in the nav message.
short getHealth () const throw ( gpstk::InvalidRequest )
 This function returns the value of the SV health flag.
short getL2Pdata () const throw ( gpstk::InvalidRequest )
 This function returns the value of the L2 P-code data flag.
short getIODC () const throw ( gpstk::InvalidRequest )
 This function returns the IODC for the given PRN.
short getIODE () const throw ( gpstk::InvalidRequest )
 This function return the IODE for the ephemeris.
long getAODO () const throw ( gpstk::InvalidRequest )
 This function return the AODO for the ephemeris.
double getToc () const throw ( gpstk::InvalidRequest )
 This function returns the clock epoch in GPS seconds of week.
double getAf0 () const throw ( gpstk::InvalidRequest )
 This function returns the SV clock error in seconds.
double getAf1 () const throw ( gpstk::InvalidRequest )
 This function returns the SV clock drift in seconds/seconds.
double getAf2 () const throw ( gpstk::InvalidRequest )
 This function returns the SV clock rate of change of the drift in seconds/(seconds*seconds).
double getTgd () const throw ( gpstk::InvalidRequest )
 This function returns the value of the group delay differential in seconds.
double getCus () const throw ( gpstk::InvalidRequest )
 This function returns the value of the sine latitude harmonic perturbation in radians.
double getCrs () const throw ( gpstk::InvalidRequest )
 This function returns the value of the sine radius harmonic perturbation in meters.
double getCis () const throw ( gpstk::InvalidRequest )
 This function returns the value of the sine inclination harmonic perturbation in radians.
double getCrc () const throw ( gpstk::InvalidRequest )
 This function returns the value of the cosine radius harmonic perturbation in meters.
double getCuc () const throw ( gpstk::InvalidRequest )
 This function returns the value of the cosine latitude harmonic perturbation in radians.
double getCic () const throw ( gpstk::InvalidRequest )
 This function returns the value of the cosine inclination harmonic perturbation in radians.
double getToe () const throw ( gpstk::InvalidRequest )
 This function returns the value of the time of ephemeris in GPS seconds of week.
double getM0 () const throw ( gpstk::InvalidRequest )
 This function returns the value of the mean anomaly in radians.
double getDn () const throw ( gpstk::InvalidRequest )
 This function returns the value of the correction to the mean motion in radians/second.
double getEcc () const throw ( gpstk::InvalidRequest )
 This function returns the value of the eccentricity.
double getAhalf () const throw ( gpstk::InvalidRequest )
 This function returns the value of the square root of the semi-major axis in square root of meters.
double getA () const throw ( gpstk::InvalidRequest )
 This function returns the value of the semi-major axis in meters.
double getOmega0 () const throw ( gpstk::InvalidRequest )
 This function returns the value of the right ascension of the ascending node in radians.
double getI0 () const throw ( gpstk::InvalidRequest )
 This function returns the value of the inclination in radians.
double getW () const throw ( gpstk::InvalidRequest )
 This function returns the value of the argument of perigee in radians.
double getOmegaDot () const throw ( gpstk::InvalidRequest )
 This function returns the value of the rate of the right ascension of the ascending node in radians/second.
double getIDot () const throw ( gpstk::InvalidRequest )
 This function returns the value of the rate of the inclination in radians/second.
double svRelativity (const CommonTime &t) const throw ( gpstk::InvalidRequest )
 Compute satellite relativity correction (sec) at the given time
Exceptions:
InvalidRequest if a required subframe has not been stored.

double svClockBias (const CommonTime &t) const throw ( gpstk::InvalidRequest )
 Compute the satellite clock bias (sec) at the given time
Exceptions:
InvalidRequest if a required subframe has not been stored.

double svClockDrift (const CommonTime &t) const throw ( gpstk::InvalidRequest )
 Compute the satellite clock drift (sec/sec) at the given time
Exceptions:
InvalidRequest if a required subframe has not been stored.

short getFitInt () const throw ( gpstk::InvalidRequest )
 This function returns the value of the fit interval flag.
double getEphkey () const throw ( gpstk::InvalidRequest )
 This function returns the value of the ephemeris key that is used to sort the ephemerides when they are stored in the bcetable.
long getTot () const throw ( gpstk::InvalidRequest )
 This function returnst the value of the Time of Transmit.
BrcKeplerOrbit getOrbit () const throw (gpstk::InvalidRequest)
BrcClockCorrection getClock () const throw (gpstk::InvalidRequest)
EngEphemerisloadData (const std::string satSysArg, 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) throw ()
 Set the values contained in SubFrame 1,2 and 3.
EngEphemerissetSF1 (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) throw ()
EngEphemerissetSF2 (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) throw ( InvalidRequest )
EngEphemerissetSF3 (unsigned tlm, double how, short asalert, double cic, double Omega0, double cis, double I0, double crc, double W, double OmegaDot, double IDot) throw ( InvalidRequest )
void dump (std::ostream &s=std::cout) const throw ( InvalidRequest )
 Output the contents of this ephemeris to the given stream.
void setFIC (const bool arg)
void dumpTerse (std::ostream &s=std::cout) const throw ( InvalidRequest )
bool unifiedConvert (const int gpsWeek, const short PRN, const short track)
 Each of the addSubframe( ) methods eventually calls unifiedConvert( ) in order to crack the raw subframe data into engineering units and load the orbit and clock objects.

Public Attributes

bool haveSubframe [3]
 flags indicating presence of a subframe
long subframeStore [3][10]
bool isFIC
short accFlagTmp
unsigned short tlm_message [3]
std::string satSys
 GNSS (satellite system).
short PRNID
 SV PRN ID.
short tracker
 Tracker number.
long HOWtime [3]
 Time of subframe 1-3 (sec of week).
short ASalert [3]
 A-S and "alert" flags for each subframe.
short weeknum
 GPS full week number that corresponds to the HOWtime of SF1.
short codeflags
 L2 codes.
short health
 SV health.
short L2Pdata
 L2 P data flag.
short IODC
 Index of data-clock.
short IODE
 Index of data-eph.
long AODO
 Age of Data Offset for NMCT.
short fitint
 Fit interval flag.
double Tgd
 L1 and L2 correction term.
BrcClockCorrection bcClock
BrcKeplerOrbit orbit

Friends

std::ostream & operator<< (std::ostream &s, const EngEphemeris &eph)


Constructor & Destructor Documentation

EngEphemeris  )  throw ()
 

Default constructor.

Definition at line 63 of file EngEphemeris.cpp.

References EngEphemeris::ASalert, EngEphemeris::codeflags, EngEphemeris::fitint, EngEphemeris::haveSubframe, EngEphemeris::health, EngEphemeris::HOWtime, EngEphemeris::IODC, EngEphemeris::IODE, EngEphemeris::isFIC, EngEphemeris::L2Pdata, EngEphemeris::PRNID, EngEphemeris::satSys, EngEphemeris::subframeStore, EngEphemeris::Tgd, EngEphemeris::tlm_message, EngEphemeris::tracker, and EngEphemeris::weeknum.

virtual ~EngEphemeris  )  [inline, virtual]
 

Destructor.

Definition at line 85 of file EngEphemeris.hpp.


Member Function Documentation

bool addIncompleteSF1Thru3 const long  sf1[8],
const long  sf2[8],
const long  sf3[8],
const long  sf1TransmitSOW,
const int  gpsWeek,
const short  PRN,
const short  track
 

Store a subframe in this object.

This method is provided in order to provide a path to a EngEphemeris object for cases where a receiver only provides words 3-10 of subframes 1-3.

Note:
: It is important to appropriately determine the transmit time of the data. The parameters sf1TransmitSOW and gpsWeek should be consistent and should represent the time when the data in sf1, sf2, and sf3 were received. As a general rule, the transmit time should be somewhere in the range of 0-2 hours BEFORE the epoch time of the ephemeris.

: EngEphemeris objects built via this method will not contain valid TLM message data, A-S flags, and "Alert" bits. Methods getTLMMesage() and getASAlert() should not be used.

Parameters:
sf1 words 3-10 of navigation subframe1 stored in the 30 least-significant bits of each array index.
sf2 words 3-10 of navigation subframe 2
sf3 words 3-10 of navigation subframe 3
sf1TransmitSOW time (in GPS seconds of week) corresponding to leading edge of first bit of subframe 1
gpsWeek full GPS week number.
PRN PRN ID of source satellite.
track tracker number (typically receiver channel number).
Returns:
true if successful.

Definition at line 157 of file EngEphemeris.cpp.

References EngEphemeris::haveSubframe, EngEphemeris::subframeStore, and EngEphemeris::unifiedConvert().

Referenced by MinSfTest::process().

bool addSubframe const long  subframe[10],
const int  gpsWeek,
const short  PRN,
const short  track
throw ( gpstk::InvalidParameter )
 

Historically, EngEphemeris allowed calling programs to add data one subframe at a time.

Parameters:
subframe ten word navigation subframe stored in the 30 least-significant bits of each array index.
gpsWeek full GPS week number.
PRN PRN ID of source satellite.
track tracking number (typically receiver channel number).
Returns:
true if successful.
Exceptions:
InvalidParameter if subframe is valid but not subframe 1-3.

Definition at line 102 of file EngEphemeris.cpp.

References GPSTK_THROW.

Referenced by gpstk::makeEngEphemeris(), FICData::operator EngEphemeris(), and NovatelData::operator RinexNavData().

bool addSubframeNoParity const long  subframe[10],
const int  gpsWeek,
const short  PRN,
const short  track
throw ( gpstk::InvalidParameter )
 

Store a subframe in this object.

This method is provided in order to allow construction of an EngEphemeris object for cases where a receiver only provides the 24 msb of each word and strips the parity.l

Parameters:
subframe ten word navigation subframe (minus the six parity bits) stored in the 24 least-significant bits of each array index.
gpsWeek full GPS week number.
PRN PRN ID of source satellite.
track tracking number (typically receiver channel number).
Returns:
true if successful.
Exceptions:
InvalidParameter if subframe is valid but not subframe 1-3.

Definition at line 136 of file EngEphemeris.cpp.

void dump std::ostream &  s = std::cout  )  const throw ( InvalidRequest )
 

Output the contents of this ephemeris to the given stream.

Definition at line 1360 of file EngEphemeris.cpp.

References GPSTK_THROW.

Referenced by GPSEphemerisStore::dump(), gpstk::operator<<(), and MinSfTest::process().

void dumpTerse std::ostream &  s = std::cout  )  const throw ( InvalidRequest )
 

Definition at line 1305 of file EngEphemeris.cpp.

References SVNumXRef::getNAVSTAR(), GPSTK_THROW, and gpstk::printTime().

double getA  )  const throw ( gpstk::InvalidRequest )
 

This function returns the value of the semi-major axis in meters.

Definition at line 858 of file EngEphemeris.cpp.

References BrcKeplerOrbit::getA(), GPSTK_THROW, EngEphemeris::haveSubframe, and EngEphemeris::orbit.

short getAccFlag  )  const throw ( gpstk::InvalidRequest )
 

This function returns the flag based on the SV accuracy flag as it appears in the nav message.

Definition at line 616 of file EngEphemeris.cpp.

References BrcKeplerOrbit::getURAoe(), GPSTK_THROW, EngEphemeris::haveSubframe, and EngEphemeris::orbit.

Referenced by FICData9::FICData9(), ComputeIURAWeights::getWeight(), SimpleIURAWeight::getWeights(), and MinSfTest::process().

double getAccuracy  )  const throw ( gpstk::InvalidRequest )
 

This function returns the value of the SV accuracy (m) computed from the accuracy flag in the nav message, or as set by the setAccuracy() method.

Definition at line 605 of file EngEphemeris.cpp.

References BrcKeplerOrbit::getAccuracy(), GPSTK_THROW, EngEphemeris::haveSubframe, and EngEphemeris::orbit.

Referenced by MinSfTest::process(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

double getAf0  )  const throw ( gpstk::InvalidRequest )
 

This function returns the SV clock error in seconds.

Definition at line 693 of file EngEphemeris.cpp.

References EngEphemeris::bcClock, BrcClockCorrection::getAf0(), GPSTK_THROW, and EngEphemeris::haveSubframe.

Referenced by FICData9::FICData9(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

double getAf1  )  const throw ( gpstk::InvalidRequest )
 

This function returns the SV clock drift in seconds/seconds.

Definition at line 704 of file EngEphemeris.cpp.

References EngEphemeris::bcClock, BrcClockCorrection::getAf1(), GPSTK_THROW, and EngEphemeris::haveSubframe.

Referenced by FICData9::FICData9(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

double getAf2  )  const throw ( gpstk::InvalidRequest )
 

This function returns the SV clock rate of change of the drift in seconds/(seconds*seconds).

Definition at line 715 of file EngEphemeris.cpp.

References EngEphemeris::bcClock, BrcClockCorrection::getAf2(), GPSTK_THROW, and EngEphemeris::haveSubframe.

Referenced by FICData9::FICData9(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

double getAhalf  )  const throw ( gpstk::InvalidRequest )
 

This function returns the value of the square root of the semi-major axis in square root of meters.

Definition at line 847 of file EngEphemeris.cpp.

References BrcKeplerOrbit::getAhalf(), GPSTK_THROW, EngEphemeris::haveSubframe, and EngEphemeris::orbit.

Referenced by FICData9::FICData9(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

long getAODO  )  const throw ( gpstk::InvalidRequest )
 

This function return the AODO for the ephemeris.

Definition at line 671 of file EngEphemeris.cpp.

References GPSTK_THROW, and EngEphemeris::haveSubframe.

short getASAlert short  subframe  )  const throw ( gpstk::InvalidRequest )
 

This function returns the A-S alert flag for either subframe 1 or 2 or 3.

Definition at line 571 of file EngEphemeris.cpp.

References GPSTK_THROW.

Referenced by FICData9::firstFiveItems().

double getCic  )  const throw ( gpstk::InvalidRequest )
 

This function returns the value of the cosine inclination harmonic perturbation in radians.

Definition at line 792 of file EngEphemeris.cpp.

References BrcKeplerOrbit::getCic(), GPSTK_THROW, EngEphemeris::haveSubframe, and EngEphemeris::orbit.

Referenced by FICData9::FICData9(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

double getCis  )  const throw ( gpstk::InvalidRequest )
 

This function returns the value of the sine inclination harmonic perturbation in radians.

Definition at line 759 of file EngEphemeris.cpp.

References BrcKeplerOrbit::getCis(), GPSTK_THROW, EngEphemeris::haveSubframe, and EngEphemeris::orbit.

Referenced by FICData9::FICData9(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

BrcClockCorrection getClock  )  const throw (gpstk::InvalidRequest)
 

Definition at line 522 of file EngEphemeris.cpp.

References EngEphemeris::bcClock, GPSTK_THROW, and BrcClockCorrection::hasData().

short getCodeFlags  )  const throw ( gpstk::InvalidRequest )
 

This function returns the values of the L2 codes.

Definition at line 594 of file EngEphemeris.cpp.

References GPSTK_THROW, and EngEphemeris::haveSubframe.

Referenced by FICData9::FICData9(), MinSfTest::process(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

double getCrc  )  const throw ( gpstk::InvalidRequest )
 

This function returns the value of the cosine radius harmonic perturbation in meters.

Definition at line 770 of file EngEphemeris.cpp.

References BrcKeplerOrbit::getCrc(), GPSTK_THROW, EngEphemeris::haveSubframe, and EngEphemeris::orbit.

Referenced by FICData9::FICData9(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

double getCrs  )  const throw ( gpstk::InvalidRequest )
 

This function returns the value of the sine radius harmonic perturbation in meters.

Definition at line 748 of file EngEphemeris.cpp.

References BrcKeplerOrbit::getCrs(), GPSTK_THROW, EngEphemeris::haveSubframe, and EngEphemeris::orbit.

Referenced by FICData9::FICData9(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

double getCuc  )  const throw ( gpstk::InvalidRequest )
 

This function returns the value of the cosine latitude harmonic perturbation in radians.

Definition at line 781 of file EngEphemeris.cpp.

References BrcKeplerOrbit::getCuc(), GPSTK_THROW, EngEphemeris::haveSubframe, and EngEphemeris::orbit.

Referenced by FICData9::FICData9(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

double getCus  )  const throw ( gpstk::InvalidRequest )
 

This function returns the value of the sine latitude harmonic perturbation in radians.

Definition at line 737 of file EngEphemeris.cpp.

References BrcKeplerOrbit::getCus(), GPSTK_THROW, EngEphemeris::haveSubframe, and EngEphemeris::orbit.

Referenced by FICData9::FICData9(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

double getDn  )  const throw ( gpstk::InvalidRequest )
 

This function returns the value of the correction to the mean motion in radians/second.

Definition at line 825 of file EngEphemeris.cpp.

References BrcKeplerOrbit::getDn(), GPSTK_THROW, EngEphemeris::haveSubframe, and EngEphemeris::orbit.

Referenced by FICData9::FICData9(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

double getEcc  )  const throw ( gpstk::InvalidRequest )
 

This function returns the value of the eccentricity.

Definition at line 836 of file EngEphemeris.cpp.

References BrcKeplerOrbit::getEcc(), GPSTK_THROW, EngEphemeris::haveSubframe, and EngEphemeris::orbit.

Referenced by FICData9::FICData9(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

CommonTime getEphemerisEpoch  )  const throw ( gpstk::InvalidRequest )
 

EXvtracts the epoch time from this ephemeris, correcting for half weeks and HOW time.

Definition at line 505 of file EngEphemeris.cpp.

References BrcKeplerOrbit::getOrbitEpoch(), and EngEphemeris::orbit.

Referenced by GPSEphemerisStore::addEphemeris().

double getEphkey  )  const throw ( gpstk::InvalidRequest )
 

This function returns the value of the ephemeris key that is used to sort the ephemerides when they are stored in the bcetable.

CommonTime getEpochTime  )  const throw ( gpstk::InvalidRequest )
 

EXvtracts the epoch time (time of clock) from this ephemeris, correcting for half weeks and HOW time.

Definition at line 499 of file EngEphemeris.cpp.

References EngEphemeris::bcClock, and BrcClockCorrection::getEpochTime().

Referenced by MinSfTest::process(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

short getFitInt  )  const throw ( gpstk::InvalidRequest )
 

This function returns the value of the fit interval flag.

Definition at line 924 of file EngEphemeris.cpp.

References GPSTK_THROW, and EngEphemeris::haveSubframe.

Referenced by FICData9::FICData9(), EngEphemeris::getFitInterval(), and MinSfTest::process().

short getFitInterval  )  const throw ( gpstk::InvalidRequest )
 

This is for Block II/IIA Need update for Block IIR and IIF.

This fit interval is (typically) centered around the Toe (time of ephemeris) for the ephemeris. See IS-GPS-200 section 20.3.4.4, Table 20-XIA and section 20.3.3.4.3.1 for more information.

Returns:
the fit interval in hours (0 = failure).
Exceptions:
InvalidRequest if data is missing.

Definition at line 352 of file EngEphemeris.cpp.

References EngEphemeris::getFitInt(), and EngEphemeris::getIODC().

Referenced by GPSEphemerisStore::findNearEphemeris(), GPSEphemerisStore::findUserEphemeris(), MinSfTest::process(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

short getFullWeek  )  const throw ( gpstk::InvalidRequest )
 

This function return the GPS week number for the ephemeris.

this is the full GPS week (ie > 10 bits).

Definition at line 583 of file EngEphemeris.cpp.

References GPSTK_THROW, and EngEphemeris::haveSubframe.

Referenced by EngEphemeris::getTransmitTime(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

short getHealth  )  const throw ( gpstk::InvalidRequest )
 

This function returns the value of the SV health flag.

Definition at line 627 of file EngEphemeris.cpp.

References GPSTK_THROW, and EngEphemeris::haveSubframe.

Referenced by FICData9::FICData9(), GPSEphemerisStore::getSatHealth(), MinSfTest::process(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

double getHOWTime short  subframe  )  const throw ( gpstk::InvalidRequest )
 

This function returns the time of the HOW in subframe 1 or 2 or 3 in seconds of week.

Definition at line 555 of file EngEphemeris.cpp.

References GPSTK_THROW.

Referenced by GPSEphemerisStore::dump(), FICData9::firstFiveItems(), EngEphemeris::getTot(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

double getI0  )  const throw ( gpstk::InvalidRequest )
 

This function returns the value of the inclination in radians.

Definition at line 880 of file EngEphemeris.cpp.

References BrcKeplerOrbit::getI0(), GPSTK_THROW, EngEphemeris::haveSubframe, and EngEphemeris::orbit.

Referenced by FICData9::FICData9(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

double getIDot  )  const throw ( gpstk::InvalidRequest )
 

This function returns the value of the rate of the inclination in radians/second.

Definition at line 913 of file EngEphemeris.cpp.

References BrcKeplerOrbit::getIDot(), GPSTK_THROW, EngEphemeris::haveSubframe, and EngEphemeris::orbit.

Referenced by FICData9::FICData9(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

short getIODC  )  const throw ( gpstk::InvalidRequest )
 

This function returns the IODC for the given PRN.

Definition at line 649 of file EngEphemeris.cpp.

References GPSTK_THROW, and EngEphemeris::haveSubframe.

Referenced by FICData9::FICData9(), EngEphemeris::getFitInterval(), GPSEphemerisStore::getXvt(), MinSfTest::process(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

short getIODE  )  const throw ( gpstk::InvalidRequest )
 

This function return the IODE for the ephemeris.

Definition at line 660 of file EngEphemeris.cpp.

References GPSTK_THROW, and EngEphemeris::haveSubframe.

Referenced by FICData9::FICData9(), MinSfTest::process(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

short getL2Pdata  )  const throw ( gpstk::InvalidRequest )
 

This function returns the value of the L2 P-code data flag.

Definition at line 638 of file EngEphemeris.cpp.

References GPSTK_THROW, and EngEphemeris::haveSubframe.

Referenced by FICData9::FICData9(), MinSfTest::process(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

double getM0  )  const throw ( gpstk::InvalidRequest )
 

This function returns the value of the mean anomaly in radians.

Definition at line 814 of file EngEphemeris.cpp.

References BrcKeplerOrbit::getM0(), GPSTK_THROW, EngEphemeris::haveSubframe, and EngEphemeris::orbit.

Referenced by FICData9::FICData9(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

double getOmega0  )  const throw ( gpstk::InvalidRequest )
 

This function returns the value of the right ascension of the ascending node in radians.

Definition at line 869 of file EngEphemeris.cpp.

References BrcKeplerOrbit::getOmega0(), GPSTK_THROW, EngEphemeris::haveSubframe, and EngEphemeris::orbit.

Referenced by FICData9::FICData9(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

double getOmegaDot  )  const throw ( gpstk::InvalidRequest )
 

This function returns the value of the rate of the right ascension of the ascending node in radians/second.

Definition at line 902 of file EngEphemeris.cpp.

References BrcKeplerOrbit::getOmegaDot(), GPSTK_THROW, EngEphemeris::haveSubframe, and EngEphemeris::orbit.

Referenced by FICData9::FICData9(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

BrcKeplerOrbit getOrbit  )  const throw (gpstk::InvalidRequest)
 

Definition at line 511 of file EngEphemeris.cpp.

References GPSTK_THROW, BrcKeplerOrbit::hasData(), and EngEphemeris::orbit.

short getPRNID  )  const throw ( gpstk::InvalidRequest )
 

This function returns the PRN ID of the SV.

Definition at line 533 of file EngEphemeris.cpp.

References GPSTK_THROW, and EngEphemeris::haveSubframe.

Referenced by FICData9::FICData9(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

std::string getSatSys  )  const throw () [inline]
 

This functions returns the GNSS type (satellite system code).

Definition at line 234 of file EngEphemeris.hpp.

Referenced by Rinex3NavData::Rinex3NavData().

double getTgd  )  const throw ( gpstk::InvalidRequest )
 

This function returns the value of the group delay differential in seconds.

Definition at line 726 of file EngEphemeris.cpp.

References GPSTK_THROW, and EngEphemeris::haveSubframe.

Referenced by FICData9::FICData9(), ModelObsFixedStation::getTGDCorrections(), ModeledReferencePR::getTGDCorrections(), BasicModel::getTGDCorrections(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

CommonTime getTimestamp  )  const throw () [inline]
 

used for template functions

Definition at line 229 of file EngEphemeris.hpp.

unsigned getTLMMessage short  subframe  )  const throw ( gpstk::InvalidRequest )
 

Return the lower 16 bits of the TLM word for the given subframe.

Definition at line 479 of file EngEphemeris.cpp.

References GPSTK_THROW.

Referenced by FICData9::firstFiveItems().

unsigned char getTLMPreamble  )  const throw () [inline]
 

Return 0x8b, the upper 5 bits of the 22-bit TLM word.

Definition at line 206 of file EngEphemeris.hpp.

double getToc  )  const throw ( gpstk::InvalidRequest )
 

This function returns the clock epoch in GPS seconds of week.

Definition at line 682 of file EngEphemeris.cpp.

References EngEphemeris::bcClock, BrcClockCorrection::getToc(), GPSTK_THROW, and EngEphemeris::haveSubframe.

Referenced by GPSEphemerisStore::dump(), FICData9::FICData9(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

double getToe  )  const throw ( gpstk::InvalidRequest )
 

This function returns the value of the time of ephemeris in GPS seconds of week.

Definition at line 803 of file EngEphemeris.cpp.

References BrcKeplerOrbit::getToe(), GPSTK_THROW, EngEphemeris::haveSubframe, and EngEphemeris::orbit.

Referenced by FICData9::FICData9(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

long getTot  )  const throw ( gpstk::InvalidRequest )
 

This function returnst the value of the Time of Transmit.

Basically just the earliest of the HOWs.

Definition at line 935 of file EngEphemeris.cpp.

References EngEphemeris::getHOWTime(), GPSTK_THROW, EngEphemeris::haveSubframe, and gpstk::min().

Referenced by EngEphemeris::getTransmitTime().

short getTracker  )  const throw ( gpstk::InvalidRequest )
 

This function returns the tracker number.

Definition at line 544 of file EngEphemeris.cpp.

References GPSTK_THROW, and EngEphemeris::haveSubframe.

Referenced by FICData9::FICData9().

CommonTime getTransmitTime  )  const throw ()
 

EXvtracts the transmit time from the ephemeris using the Tot.

Definition at line 491 of file EngEphemeris.cpp.

References EngEphemeris::getFullWeek(), and EngEphemeris::getTot().

Referenced by GPSEphemerisStore::addEphemeris(), FICData9::FICData9(), GPSEphemerisStore::findNearEphemeris(), GPSEphemerisStore::findUserEphemeris(), and MinSfTest::process().

double getW  )  const throw ( gpstk::InvalidRequest )
 

This function returns the value of the argument of perigee in radians.

Definition at line 891 of file EngEphemeris.cpp.

References BrcKeplerOrbit::getW(), GPSTK_THROW, EngEphemeris::haveSubframe, and EngEphemeris::orbit.

Referenced by FICData9::FICData9(), Rinex3NavData::Rinex3NavData(), and RinexNavData::RinexNavData().

bool isData short  subframe  )  const throw ( gpstk::InvalidRequest )
 

Query presence of subframe in this object.

Parameters:
subframe subframe ID (1-3) to check.
Returns:
true if the given subframe is present in this object.
Exceptions:
InvalidParameter if subframe is not a valid ephemeris subframe number.

Definition at line 323 of file EngEphemeris.cpp.

References GPSTK_THROW.

Referenced by gpstk::makeEngEphemeris(), and MinSfTest::process().

EngEphemeris & loadData const std::string  satSysArg,
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
throw ()
 

Set the values contained in SubFrame 1,2 and 3.

Values contained in SubFrame 1.

Parameters:
tlm the new value for the TLM word
how the new value for the HOW
asalert the new falue for the A-S alert flag
fullweek the new value for the full GPS week
cflags the nve values for the L2 code flags
acc the new value for the SV accuracy flag
svhealth the new value for the SV health
iodc the new value for the IODC
l2pdata the new value for the L2 P-code data flag
tgd the new value for the Tgd
toc the new value for the clock epoch
Af2 the new value for Af2
Af1 the new value for Af1
Af0 the new value for Af0
Tracker the new value of the tracker number
prn the new value of the PRN ID
Returns:
a reference to the modified EngEphemeris object
Values contained in SubFrame 2.
Parameters:
tlm the new value for the TLM word
how the new value for the HOW
asalert the new falue for the A-S alert flag
iode the new value for the IODE
crs the new value for the Crs
m0 the new value for M0
Dn the new value for Dn
cuc the new value for the Cuc
Ecc the new value for the Ecc
cus the new value for the Cus
ahalf the new value for Ahalf
toe the new value for the Toe
fitInt the new value for the fit interval flag
Returns:
a reference to the modified EngEphemeris object
Values contained in SubFrame 3.
Parameters:
tlm the new value for the TLM word
how the new value for the HOW
asalert the new falue for the A-S alert flag
cic the new value for the Cic
Omega0 the enw value for Omega0
cis the new value for the Cis
I0 the new value for I0
crc the new value for the Crc
W the new value for W
OmegaDot the new value for OmegaDot
IDot the new value for IDot
Returns:
a reference to the modified EngEphemeris object

Definition at line 969 of file EngEphemeris.cpp.

References gpstk::getLegacyFitInterval(), BrcKeplerOrbit::loadData(), and gpstk::ura2accuracy().

void setAccuracy const double &  acc  )  throw ( gpstk::InvalidParameter )
 

Set the value of the SV accuracy (in meters).

This is the only "set" method and is provided so that one can set the SV accuracy directly and thereby override the conversion of the SV accuracy flag to meters. This is usually used when entering data from some source other than an SV nav message.

Note:
Subsequent use of the addSubframe(), with subframe 1 info, or the setSF1() methods will overwrite any value set using this method.

This function converts the given accuracy to the appropriate SV accuracy flag and stores it in the accFlag data member.

Parameters:
acc the new value of SV accuracy in meters.
Exceptions:
InvalidParameter if the given accuracy value is invalid.

Definition at line 336 of file EngEphemeris.cpp.

References GPSTK_THROW.

Referenced by RinexNavData::operator EngEphemeris(), and Rinex3NavData::operator EngEphemeris().

void setFIC const bool  arg  ) 
 

Definition at line 1243 of file EngEphemeris.cpp.

References EngEphemeris::isFIC.

Referenced by RinexNavData::operator EngEphemeris().

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
throw ()
 

Definition at line 1048 of file EngEphemeris.cpp.

References BrcKeplerOrbit::loadData().

Referenced by RinexNavData::operator EngEphemeris(), and FICData::operator EngEphemeris().

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
throw ( InvalidRequest )
 

Definition at line 1093 of file EngEphemeris.cpp.

References gpstk::getLegacyFitInterval(), GPSTK_THROW, and BrcKeplerOrbit::loadData().

Referenced by RinexNavData::operator EngEphemeris(), and FICData::operator EngEphemeris().

EngEphemeris & setSF3 unsigned  tlm,
double  how,
short  asalert,
double  cic,
double  Omega0,
double  cis,
double  I0,
double  crc,
double  W,
double  OmegaDot,
double  IDot
throw ( InvalidRequest )
 

Definition at line 1166 of file EngEphemeris.cpp.

References BrcKeplerOrbit::getA(), BrcKeplerOrbit::getAdot(), BrcKeplerOrbit::getAhalf(), BrcKeplerOrbit::getCrs(), BrcKeplerOrbit::getCuc(), BrcKeplerOrbit::getCus(), BrcKeplerOrbit::getDn(), BrcKeplerOrbit::getDnDot(), BrcKeplerOrbit::getEcc(), BrcKeplerOrbit::getM0(), BrcKeplerOrbit::getToe(), BrcKeplerOrbit::getURAoe(), and GPSTK_THROW.

Referenced by RinexNavData::operator EngEphemeris(), and FICData::operator EngEphemeris().

double svClockBias const CommonTime t  )  const throw ( gpstk::InvalidRequest )
 

Compute the satellite clock bias (sec) at the given time

Exceptions:
InvalidRequest if a required subframe has not been stored.

Definition at line 467 of file EngEphemeris.cpp.

double svClockDrift const CommonTime t  )  const throw ( gpstk::InvalidRequest )
 

Compute the satellite clock drift (sec/sec) at the given time

Exceptions:
InvalidRequest if a required subframe has not been stored.

Definition at line 473 of file EngEphemeris.cpp.

double svRelativity const CommonTime t  )  const throw ( gpstk::InvalidRequest )
 

Compute satellite relativity correction (sec) at the given time

Exceptions:
InvalidRequest if a required subframe has not been stored.

Definition at line 461 of file EngEphemeris.cpp.

Xvt svXvt const CommonTime t  )  const throw ( gpstk::InvalidRequest )
 

Compute satellite position & velocity at the given time using this ephemeris.

Exceptions:
InvalidRequest if a required subframe has not been stored.

Definition at line 443 of file EngEphemeris.cpp.

References Xvt::clkbias, Xvt::clkdrift, Xvt::relcorr, Xv::v, Xvt::v, Xv::x, and Xvt::x.

Referenced by GPSEphemerisStore::getXvt().

bool unifiedConvert const int  gpsWeek,
const short  PRN,
const short  track
 

Each of the addSubframe( ) methods eventually calls unifiedConvert( ) in order to crack the raw subframe data into engineering units and load the orbit and clock objects.

Definition at line 210 of file EngEphemeris.cpp.

References EngEphemeris::AODO, EngEphemeris::ASalert, EngEphemeris::bcClock, EngEphemeris::codeflags, EngEphemeris::fitint, gpstk::getLegacyFitInterval(), EngEphemeris::health, EngEphemeris::HOWtime, EngEphemeris::IODC, EngEphemeris::IODE, EngEphemeris::L2Pdata, BrcClockCorrection::loadData(), BrcKeplerOrbit::loadData(), EngEphemeris::orbit, EngEphemeris::PRNID, EngEphemeris::satSys, EngNav::subframeConvert(), EngEphemeris::subframeStore, EngEphemeris::Tgd, EngEphemeris::tlm_message, EngEphemeris::tracker, and EngEphemeris::weeknum.

Referenced by EngEphemeris::addIncompleteSF1Thru3().


Friends And Related Function Documentation

std::ostream& operator<< std::ostream &  s,
const EngEphemeris eph
[friend]
 


Member Data Documentation

short accFlagTmp
 

Definition at line 565 of file EngEphemeris.hpp.

long AODO
 

Age of Data Offset for NMCT.

Definition at line 559 of file EngEphemeris.hpp.

Referenced by EngEphemeris::unifiedConvert().

short ASalert[3]
 

A-S and "alert" flags for each subframe.

2 bit quantity with A-S flag the high order bit and the alert flag low order bit

Definition at line 551 of file EngEphemeris.hpp.

Referenced by EngEphemeris::EngEphemeris(), Rinex3NavData::operator EngEphemeris(), and EngEphemeris::unifiedConvert().

BrcClockCorrection bcClock
 

Definition at line 576 of file EngEphemeris.hpp.

Referenced by EngEphemeris::getAf0(), EngEphemeris::getAf1(), EngEphemeris::getAf2(), EngEphemeris::getClock(), EngEphemeris::getEpochTime(), EngEphemeris::getToc(), Rinex3NavData::operator EngEphemeris(), and EngEphemeris::unifiedConvert().

short codeflags
 

L2 codes.

Definition at line 554 of file EngEphemeris.hpp.

Referenced by EngEphemeris::EngEphemeris(), Rinex3NavData::operator EngEphemeris(), and EngEphemeris::unifiedConvert().

short fitint
 

Fit interval flag.

Definition at line 560 of file EngEphemeris.hpp.

Referenced by EngEphemeris::EngEphemeris(), Rinex3NavData::operator EngEphemeris(), and EngEphemeris::unifiedConvert().

bool haveSubframe[3]
 

flags indicating presence of a subframe

Definition at line 535 of file EngEphemeris.hpp.

Referenced by EngEphemeris::addIncompleteSF1Thru3(), EngEphemeris::EngEphemeris(), EngEphemeris::getA(), EngEphemeris::getAccFlag(), EngEphemeris::getAccuracy(), EngEphemeris::getAf0(), EngEphemeris::getAf1(), EngEphemeris::getAf2(), EngEphemeris::getAhalf(), EngEphemeris::getAODO(), EngEphemeris::getCic(), EngEphemeris::getCis(), EngEphemeris::getCodeFlags(), EngEphemeris::getCrc(), EngEphemeris::getCrs(), EngEphemeris::getCuc(), EngEphemeris::getCus(), EngEphemeris::getDn(), EngEphemeris::getEcc(), EngEphemeris::getFitInt(), EngEphemeris::getFullWeek(), EngEphemeris::getHealth(), EngEphemeris::getI0(), EngEphemeris::getIDot(), EngEphemeris::getIODC(), EngEphemeris::getIODE(), EngEphemeris::getL2Pdata(), EngEphemeris::getM0(), EngEphemeris::getOmega0(), EngEphemeris::getOmegaDot(), EngEphemeris::getPRNID(), EngEphemeris::getTgd(), EngEphemeris::getToc(), EngEphemeris::getToe(), EngEphemeris::getTot(), EngEphemeris::getTracker(), EngEphemeris::getW(), and Rinex3NavData::operator EngEphemeris().

short health
 

SV health.

Definition at line 555 of file EngEphemeris.hpp.

Referenced by EngEphemeris::EngEphemeris(), Rinex3NavData::operator EngEphemeris(), and EngEphemeris::unifiedConvert().

long HOWtime[3]
 

Time of subframe 1-3 (sec of week).

Definition at line 550 of file EngEphemeris.hpp.

Referenced by EngEphemeris::EngEphemeris(), Rinex3NavData::operator EngEphemeris(), and EngEphemeris::unifiedConvert().

short IODC
 

Index of data-clock.

Definition at line 557 of file EngEphemeris.hpp.

Referenced by EngEphemeris::EngEphemeris(), Rinex3NavData::operator EngEphemeris(), and EngEphemeris::unifiedConvert().

short IODE
 

Index of data-eph.

Definition at line 558 of file EngEphemeris.hpp.

Referenced by EngEphemeris::EngEphemeris(), Rinex3NavData::operator EngEphemeris(), and EngEphemeris::unifiedConvert().

bool isFIC
 

Definition at line 542 of file EngEphemeris.hpp.

Referenced by EngEphemeris::EngEphemeris(), and EngEphemeris::setFIC().

short L2Pdata
 

L2 P data flag.

Definition at line 556 of file EngEphemeris.hpp.

Referenced by EngEphemeris::EngEphemeris(), Rinex3NavData::operator EngEphemeris(), and EngEphemeris::unifiedConvert().

BrcKeplerOrbit orbit
 

Definition at line 581 of file EngEphemeris.hpp.

Referenced by EngEphemeris::getA(), EngEphemeris::getAccFlag(), EngEphemeris::getAccuracy(), EngEphemeris::getAhalf(), EngEphemeris::getCic(), EngEphemeris::getCis(), EngEphemeris::getCrc(), EngEphemeris::getCrs(), EngEphemeris::getCuc(), EngEphemeris::getCus(), EngEphemeris::getDn(), EngEphemeris::getEcc(), EngEphemeris::getEphemerisEpoch(), EngEphemeris::getI0(), EngEphemeris::getIDot(), EngEphemeris::getM0(), EngEphemeris::getOmega0(), EngEphemeris::getOmegaDot(), EngEphemeris::getOrbit(), EngEphemeris::getToe(), EngEphemeris::getW(), Rinex3NavData::operator EngEphemeris(), and EngEphemeris::unifiedConvert().

short PRNID
 

SV PRN ID.

Definition at line 548 of file EngEphemeris.hpp.

Referenced by EngEphemeris::EngEphemeris(), Rinex3NavData::operator EngEphemeris(), and EngEphemeris::unifiedConvert().

std::string satSys
 

GNSS (satellite system).

Definition at line 547 of file EngEphemeris.hpp.

Referenced by EngEphemeris::EngEphemeris(), Rinex3NavData::operator EngEphemeris(), and EngEphemeris::unifiedConvert().

long subframeStore[3][10]
 

Definition at line 540 of file EngEphemeris.hpp.

Referenced by EngEphemeris::addIncompleteSF1Thru3(), EngEphemeris::EngEphemeris(), and EngEphemeris::unifiedConvert().

double Tgd
 

L1 and L2 correction term.

Definition at line 561 of file EngEphemeris.hpp.

Referenced by EngEphemeris::EngEphemeris(), Rinex3NavData::operator EngEphemeris(), and EngEphemeris::unifiedConvert().

unsigned short tlm_message[3]
 

Definition at line 546 of file EngEphemeris.hpp.

Referenced by EngEphemeris::EngEphemeris(), Rinex3NavData::operator EngEphemeris(), and EngEphemeris::unifiedConvert().

short tracker
 

Tracker number.

Definition at line 549 of file EngEphemeris.hpp.

Referenced by EngEphemeris::EngEphemeris(), Rinex3NavData::operator EngEphemeris(), and EngEphemeris::unifiedConvert().

short weeknum
 

GPS full week number that corresponds to the HOWtime of SF1.

Definition at line 553 of file EngEphemeris.hpp.

Referenced by EngEphemeris::EngEphemeris(), Rinex3NavData::operator EngEphemeris(), and EngEphemeris::unifiedConvert().


The documentation for this class was generated from the following files:
Generated on Sat May 25 03:31:46 2013 for GPS ToolKit Software Library by  doxygen 1.3.9.1