1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2024-06-26 15:03:14 +00:00

Update references and links to ICDs

This commit is contained in:
Carles Fernandez 2020-01-25 13:07:03 +01:00
parent 650d637ee2
commit dc3bf0172a
No known key found for this signature in database
GPG Key ID: 4C583C52B0C3877D
35 changed files with 121 additions and 121 deletions

View File

@ -202,7 +202,7 @@ bool Hybrid_Ls_Pvt::get_PVT(std::map<int, Gnss_Synchro> gnss_observables_map, do
// 4- fill the observations vector with the corrected pseudoranges // 4- fill the observations vector with the corrected pseudoranges
// compute code bias: TGD for single frequency // compute code bias: TGD for single frequency
// See IS-GPS-200E section 20.3.3.3.3.2 // See IS-GPS-200K section 20.3.3.3.3.2
double sqrt_Gamma = GPS_L1_FREQ_HZ / GPS_L2_FREQ_HZ; double sqrt_Gamma = GPS_L1_FREQ_HZ / GPS_L2_FREQ_HZ;
double Gamma = sqrt_Gamma * sqrt_Gamma; double Gamma = sqrt_Gamma * sqrt_Gamma;
double P1_P2 = (1.0 - Gamma) * (gps_ephemeris_iter->second.d_TGD * GPS_C_M_S); double P1_P2 = (1.0 - Gamma) * (gps_ephemeris_iter->second.d_TGD * GPS_C_M_S);

View File

@ -4011,7 +4011,7 @@ void Rinex_Printer::log_rinex_nav(std::fstream& out, const std::map<int32_t, Gps
if (gps_ephemeris_iter->second.satelliteBlock.at(gps_ephemeris_iter->second.i_satellite_PRN) == "IIA") if (gps_ephemeris_iter->second.satelliteBlock.at(gps_ephemeris_iter->second.i_satellite_PRN) == "IIA")
{ {
// Block II/IIA (Table 20-XI IS-GPS-200E ) // Block II/IIA (Table 20-XI IS-GPS-200K )
if ((gps_ephemeris_iter->second.d_IODC > 239) && (gps_ephemeris_iter->second.d_IODC < 248)) if ((gps_ephemeris_iter->second.d_IODC > 239) && (gps_ephemeris_iter->second.d_IODC < 248))
{ {
curve_fit_interval = 8; curve_fit_interval = 8;
@ -4043,7 +4043,7 @@ void Rinex_Printer::log_rinex_nav(std::fstream& out, const std::map<int32_t, Gps
(gps_ephemeris_iter->second.satelliteBlock.at(gps_ephemeris_iter->second.i_satellite_PRN) == "IIF") || (gps_ephemeris_iter->second.satelliteBlock.at(gps_ephemeris_iter->second.i_satellite_PRN) == "IIF") ||
(gps_ephemeris_iter->second.satelliteBlock.at(gps_ephemeris_iter->second.i_satellite_PRN) == "IIIA")) (gps_ephemeris_iter->second.satelliteBlock.at(gps_ephemeris_iter->second.i_satellite_PRN) == "IIIA"))
{ {
// Block IIR/IIR-M/IIF/IIIA (Table 20-XII IS-GPS-200E ) // Block IIR/IIR-M/IIF/IIIA (Table 20-XII IS-GPS-200K )
if ((gps_ephemeris_iter->second.d_IODC > 239) && (gps_ephemeris_iter->second.d_IODC < 248)) if ((gps_ephemeris_iter->second.d_IODC > 239) && (gps_ephemeris_iter->second.d_IODC < 248))
{ {
curve_fit_interval = 8; curve_fit_interval = 8;
@ -4130,7 +4130,7 @@ void Rinex_Printer::log_rinex_nav(std::fstream& out, const std::map<int32_t, Gps
line += std::string(5, ' '); line += std::string(5, ' ');
// If there is no IODE in CNAV, so we check if Toe in message Type 10, Toe in Message type 11 and Toc in message types 30-37. // If there is no IODE in CNAV, so we check if Toe in message Type 10, Toe in Message type 11 and Toc in message types 30-37.
// Whenever these three terms do not match, a data set cutover has occurred and new data must be collected. // Whenever these three terms do not match, a data set cutover has occurred and new data must be collected.
// See IS-GPS-200H, p. 155 // See IS-GPS-200K, p. 155
if (!((gps_ephemeris_iter->second.d_Toe1 == gps_ephemeris_iter->second.d_Toe2) && (gps_ephemeris_iter->second.d_Toe1 == gps_ephemeris_iter->second.d_Toc))) // Toe1: Toe in message type 10, Toe2: Toe in message type 11 if (!((gps_ephemeris_iter->second.d_Toe1 == gps_ephemeris_iter->second.d_Toe2) && (gps_ephemeris_iter->second.d_Toe1 == gps_ephemeris_iter->second.d_Toc))) // Toe1: Toe in message type 10, Toe2: Toe in message type 11
{ {
// Toe1: Toe in message type 10, Toe2: Toe in message type 11, // Toe1: Toe in message type 10, Toe2: Toe in message type 11,
@ -4160,7 +4160,7 @@ void Rinex_Printer::log_rinex_nav(std::fstream& out, const std::map<int32_t, Gps
line += std::string(1, ' '); line += std::string(1, ' ');
line += Rinex_Printer::doub2for(gps_ephemeris_iter->second.d_Cus, 18, 2); line += Rinex_Printer::doub2for(gps_ephemeris_iter->second.d_Cus, 18, 2);
line += std::string(1, ' '); line += std::string(1, ' ');
const double A_REF = 26559710.0; // See IS-GPS-200H, pp. 163 const double A_REF = 26559710.0; // See IS-GPS-200K, pp. 163
double sqrt_A = sqrt(A_REF + gps_ephemeris_iter->second.d_DELTA_A); double sqrt_A = sqrt(A_REF + gps_ephemeris_iter->second.d_DELTA_A);
line += Rinex_Printer::doub2for(sqrt_A, 18, 2); line += Rinex_Printer::doub2for(sqrt_A, 18, 2);
Rinex_Printer::lengthCheck(line); Rinex_Printer::lengthCheck(line);
@ -4188,7 +4188,7 @@ void Rinex_Printer::log_rinex_nav(std::fstream& out, const std::map<int32_t, Gps
line += std::string(1, ' '); line += std::string(1, ' ');
line += Rinex_Printer::doub2for(gps_ephemeris_iter->second.d_OMEGA, 18, 2); line += Rinex_Printer::doub2for(gps_ephemeris_iter->second.d_OMEGA, 18, 2);
line += std::string(1, ' '); line += std::string(1, ' ');
const double OMEGA_DOT_REF = -2.6e-9; // semicircles / s, see IS-GPS-200H pp. 164 const double OMEGA_DOT_REF = -2.6e-9; // semicircles / s, see IS-GPS-200K pp. 164
double OMEGA_DOT = OMEGA_DOT_REF + gps_ephemeris_iter->second.d_DELTA_OMEGA_DOT; double OMEGA_DOT = OMEGA_DOT_REF + gps_ephemeris_iter->second.d_DELTA_OMEGA_DOT;
line += Rinex_Printer::doub2for(OMEGA_DOT, 18, 2); line += Rinex_Printer::doub2for(OMEGA_DOT, 18, 2);
Rinex_Printer::lengthCheck(line); Rinex_Printer::lengthCheck(line);

View File

@ -33,7 +33,7 @@
#include <array> #include <array>
#include <cmath> // for sin, cos, sqrt, abs, pow #include <cmath> // for sin, cos, sqrt, abs, pow
const double STRP_PI = 3.1415926535898; // Pi as defined in IS-GPS-200E const double STRP_PI = 3.1415926535898; // Pi as defined in IS-GPS-200K
arma::mat Skew_symmetric(const arma::vec &a) arma::mat Skew_symmetric(const arma::vec &a)
{ {

View File

@ -368,13 +368,13 @@ eph_t eph_to_rtklib(const Gps_CNAV_Ephemeris& gps_cnav_eph)
eph_t rtklib_sat = {0, 0, 0, 0, 0, 0, 0, 0, {0, 0}, {0, 0}, {0, 0}, 0.0, 0.0, 0.0, 0.0, 0.0, eph_t rtklib_sat = {0, 0, 0, 0, 0, 0, 0, 0, {0, 0}, {0, 0}, {0, 0}, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, {}, {}, 0.0, 0.0}; 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, {}, {}, 0.0, 0.0};
rtklib_sat.sat = gps_cnav_eph.i_satellite_PRN; rtklib_sat.sat = gps_cnav_eph.i_satellite_PRN;
const double A_REF = 26559710.0; // See IS-GPS-200H, pp. 170 const double A_REF = 26559710.0; // See IS-GPS-200K, pp. 170
rtklib_sat.A = A_REF + gps_cnav_eph.d_DELTA_A; rtklib_sat.A = A_REF + gps_cnav_eph.d_DELTA_A;
rtklib_sat.M0 = gps_cnav_eph.d_M_0; rtklib_sat.M0 = gps_cnav_eph.d_M_0;
rtklib_sat.deln = gps_cnav_eph.d_Delta_n; rtklib_sat.deln = gps_cnav_eph.d_Delta_n;
rtklib_sat.OMG0 = gps_cnav_eph.d_OMEGA0; rtklib_sat.OMG0 = gps_cnav_eph.d_OMEGA0;
// Compute the angle between the ascending node and the Greenwich meridian // Compute the angle between the ascending node and the Greenwich meridian
const double OMEGA_DOT_REF = -2.6e-9; // semicircles / s, see IS-GPS-200H pp. 164 const double OMEGA_DOT_REF = -2.6e-9; // semicircles / s, see IS-GPS-200K pp. 164
double d_OMEGA_DOT = OMEGA_DOT_REF * PI + gps_cnav_eph.d_DELTA_OMEGA_DOT; double d_OMEGA_DOT = OMEGA_DOT_REF * PI + gps_cnav_eph.d_DELTA_OMEGA_DOT;
rtklib_sat.OMGd = d_OMEGA_DOT; rtklib_sat.OMGd = d_OMEGA_DOT;
rtklib_sat.omg = gps_cnav_eph.d_OMEGA; rtklib_sat.omg = gps_cnav_eph.d_OMEGA;

View File

@ -1748,7 +1748,7 @@ double timediff(gtime_t t1, gtime_t t2)
*-----------------------------------------------------------------------------*/ *-----------------------------------------------------------------------------*/
double timediffweekcrossover(gtime_t t1, gtime_t t2) double timediffweekcrossover(gtime_t t1, gtime_t t2)
{ {
// as stated in IS-GPS-200J table 20-IV footnote among other parts of the ICD, // as stated in IS-GPS-200K table 20-IV footnote among other parts of the ICD,
// if tk=(t - toe) > 302400s then tk = tk - s // if tk=(t - toe) > 302400s then tk = tk - s
// if tk=(t - toe) < -302400s then tk = tk + 604800s // if tk=(t - toe) < -302400s then tk = tk + 604800s
double tk = difftime(t1.time, t2.time) + t1.sec - t2.sec; double tk = difftime(t1.time, t2.time) + t1.sec - t2.sec;

View File

@ -50,7 +50,7 @@
* *
* *
* References : * References :
* [1] IS-GPS-200D, Navstar GPS Space Segment/Navigation User Interfaces, * [1] IS-GPS-200K, Navstar GPS Space Segment/Navigation User Interfaces,
* 7 March, 2006 * 7 March, 2006
* [2] RTCA/DO-229C, Minimum operational performanc standards for global * [2] RTCA/DO-229C, Minimum operational performanc standards for global
* positioning system/wide area augmentation system airborne equipment, * positioning system/wide area augmentation system airborne equipment,

View File

@ -146,7 +146,7 @@ bool gps_l1_ca_telemetry_decoder_gs::gps_word_parityCheck(uint32_t gpsword)
uint32_t parity; uint32_t parity;
// XOR as many bits in parallel as possible. The magic constants pick // XOR as many bits in parallel as possible. The magic constants pick
// up bits which are to be XOR'ed together to implement the GPS parity // up bits which are to be XOR'ed together to implement the GPS parity
// check algorithm described in IS-GPS-200E. This avoids lengthy shift- // check algorithm described in IS-GPS-200K. This avoids lengthy shift-
// and-xor loops. // and-xor loops.
d1 = gpsword & 0xFBFFBF00U; d1 = gpsword & 0xFBFFBF00U;
d2 = _rotl(gpsword, 1U) & 0x07FFBF01U; d2 = _rotl(gpsword, 1U) & 0x07FFBF01U;

View File

@ -54,7 +54,7 @@ gps_l1_ca_telemetry_decoder_gs_sptr gps_l1_ca_make_telemetry_decoder_gs(
bool dump); bool dump);
/*! /*!
* \brief This class implements a block that decodes the NAV data defined in IS-GPS-200E * \brief This class implements a block that decodes the NAV data defined in IS-GPS-200K
*/ */
class gps_l1_ca_telemetry_decoder_gs : public gr::block class gps_l1_ca_telemetry_decoder_gs : public gr::block
{ {

View File

@ -44,8 +44,8 @@
// Physical constants // Physical constants
const double GLONASS_C_M_S = SPEED_OF_LIGHT; //!< The speed of light, [m/s] const double GLONASS_C_M_S = SPEED_OF_LIGHT; //!< The speed of light, [m/s]
const double GLONASS_C_M_MS = 299792.4580; //!< The speed of light, [m/ms] const double GLONASS_C_M_MS = 299792.4580; //!< The speed of light, [m/ms]
const double GLONASS_PI = 3.1415926535898; //!< Pi as defined in IS-GPS-200E const double GLONASS_PI = 3.1415926535898; //!< Pi as defined in IS-GPS-200K
const double GLONASS_TWO_PI = 6.283185307179586; //!< 2Pi as defined in IS-GPS-200E const double GLONASS_TWO_PI = 6.283185307179586; //!< 2Pi as defined in IS-GPS-200K
const double GLONASS_OMEGA_EARTH_DOT = 7.292115e-5; //!< Earth rotation rate, [rad/s] const double GLONASS_OMEGA_EARTH_DOT = 7.292115e-5; //!< Earth rotation rate, [rad/s]
const double GLONASS_GM = 398600.4418e9; //!< Universal gravitational constant times the mass of the Earth, [m^3/s^2] const double GLONASS_GM = 398600.4418e9; //!< Universal gravitational constant times the mass of the Earth, [m^3/s^2]
const double GLONASS_F_M_A = 0.35e9; //!< Gravitational constant of atmosphere [m^3/s^2] const double GLONASS_F_M_A = 0.35e9; //!< Gravitational constant of atmosphere [m^3/s^2]
@ -258,7 +258,7 @@ const std::vector<int32_t> GLONASS_GNAV_CRC_P_INDEX{66, 67, 68, 69, 70, 71, 72,
const std::vector<int32_t> GLONASS_GNAV_CRC_Q_INDEX{9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85}; const std::vector<int32_t> GLONASS_GNAV_CRC_Q_INDEX{9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85};
// GLONASS GNAV NAVIGATION MESSAGE STRUCTURE // GLONASS GNAV NAVIGATION MESSAGE STRUCTURE
// NAVIGATION MESSAGE FIELDS POSITIONS (from IS-GPS-200E Appendix II) // NAVIGATION MESSAGE FIELDS POSITIONS (from IS-GPS-200K Appendix II)
// FRAME 1-4 // FRAME 1-4
// COMMON FIELDS // COMMON FIELDS

View File

@ -39,7 +39,7 @@
// CNAV GPS NAVIGATION MESSAGE STRUCTURE // CNAV GPS NAVIGATION MESSAGE STRUCTURE
// NAVIGATION MESSAGE FIELDS POSITIONS (from IS-GPS-200E Appendix III) // NAVIGATION MESSAGE FIELDS POSITIONS (from IS-GPS-200K Appendix III)
#define GPS_CNAV_PREAMBLE \ #define GPS_CNAV_PREAMBLE \
{ \ { \

View File

@ -43,8 +43,8 @@
// Physical constants // Physical constants
const double GPS_C_M_S = SPEED_OF_LIGHT; //!< The speed of light, [m/s] const double GPS_C_M_S = SPEED_OF_LIGHT; //!< The speed of light, [m/s]
const double GPS_C_M_MS = 299792.4580; //!< The speed of light, [m/ms] const double GPS_C_M_MS = 299792.4580; //!< The speed of light, [m/ms]
const double GPS_PI = 3.1415926535898; //!< Pi as defined in IS-GPS-200E const double GPS_PI = 3.1415926535898; //!< Pi as defined in IS-GPS-200K
const double GPS_TWO_PI = 6.283185307179586; //!< 2Pi as defined in IS-GPS-200E const double GPS_TWO_PI = 6.283185307179586; //!< 2Pi as defined in IS-GPS-200K
const double OMEGA_EARTH_DOT = DEFAULT_OMEGA_EARTH_DOT; //!< Earth rotation rate, [rad/s] const double OMEGA_EARTH_DOT = DEFAULT_OMEGA_EARTH_DOT; //!< Earth rotation rate, [rad/s]
const double GM = 3.986005e14; //!< Universal gravitational constant times the mass of the Earth, [m^3/s^2] const double GM = 3.986005e14; //!< Universal gravitational constant times the mass of the Earth, [m^3/s^2]
const double F = -4.442807633e-10; //!< Constant, [s/(m)^(1/2)] const double F = -4.442807633e-10; //!< Constant, [s/(m)^(1/2)]
@ -100,7 +100,7 @@ const int32_t GPS_SUBFRAME_MS = 6000;
const int32_t GPS_WORD_BITS = 30; //!< Number of bits per word in the NAV message [bits] const int32_t GPS_WORD_BITS = 30; //!< Number of bits per word in the NAV message [bits]
// GPS NAVIGATION MESSAGE STRUCTURE // GPS NAVIGATION MESSAGE STRUCTURE
// NAVIGATION MESSAGE FIELDS POSITIONS (from IS-GPS-200E Appendix II) // NAVIGATION MESSAGE FIELDS POSITIONS (from IS-GPS-200K Appendix II)
// SUBFRAME 1-5 (TLM and HOW) // SUBFRAME 1-5 (TLM and HOW)

View File

@ -44,8 +44,8 @@
// Physical constants // Physical constants
const double GPS_L2_C_M_S = 299792458.0; //!< The speed of light, [m/s] const double GPS_L2_C_M_S = 299792458.0; //!< The speed of light, [m/s]
const double GPS_L2_C_M_MS = 299792.4580; //!< The speed of light, [m/ms] const double GPS_L2_C_M_MS = 299792.4580; //!< The speed of light, [m/ms]
const double GPS_L2_PI = 3.1415926535898; //!< Pi as defined in IS-GPS-200E const double GPS_L2_PI = 3.1415926535898; //!< Pi as defined in IS-GPS-200K
const double GPS_L2_TWO_PI = 6.283185307179586; //!< 2Pi as defined in IS-GPS-200E const double GPS_L2_TWO_PI = 6.283185307179586; //!< 2Pi as defined in IS-GPS-200K
const double GPS_L2_OMEGA_EARTH_DOT = 7.2921151467e-5; //!< Earth rotation rate, [rad/s] const double GPS_L2_OMEGA_EARTH_DOT = 7.2921151467e-5; //!< Earth rotation rate, [rad/s]
const double GPS_L2_GM = 3.986005e14; //!< Universal gravitational constant times the mass of the Earth, [m^3/s^2] const double GPS_L2_GM = 3.986005e14; //!< Universal gravitational constant times the mass of the Earth, [m^3/s^2]
const double GPS_L2_F = -4.442807633e-10; //!< Constant, [s/(m)^(1/2)] const double GPS_L2_F = -4.442807633e-10; //!< Constant, [s/(m)^(1/2)]

View File

@ -42,8 +42,8 @@
// Physical constants // Physical constants
const double GPS_L5_C_M_S = 299792458.0; //!< The speed of light, [m/s] const double GPS_L5_C_M_S = 299792458.0; //!< The speed of light, [m/s]
const double GPS_L5_C_M_MS = 299792.4580; //!< The speed of light, [m/ms] const double GPS_L5_C_M_MS = 299792.4580; //!< The speed of light, [m/ms]
const double GPS_L5_PI = 3.1415926535898; //!< Pi as defined in IS-GPS-200E const double GPS_L5_PI = 3.1415926535898; //!< Pi as defined in IS-GPS-200K
const double GPS_L5_TWO_PI = 6.283185307179586; //!< 2Pi as defined in IS-GPS-200E const double GPS_L5_TWO_PI = 6.283185307179586; //!< 2Pi as defined in IS-GPS-200K
const double GPS_L5_OMEGA_EARTH_DOT = 7.2921151467e-5; //!< Earth rotation rate, [rad/s] const double GPS_L5_OMEGA_EARTH_DOT = 7.2921151467e-5; //!< Earth rotation rate, [rad/s]
const double GPS_L5_GM = 3.986005e14; //!< Universal gravitational constant times the mass of the Earth, [m^3/s^2] const double GPS_L5_GM = 3.986005e14; //!< Universal gravitational constant times the mass of the Earth, [m^3/s^2]
const double GPS_L5_F = -4.442807633e-10; //!< Constant, [s/(m)^(1/2)] const double GPS_L5_F = -4.442807633e-10; //!< Constant, [s/(m)^(1/2)]

View File

@ -2,7 +2,7 @@
* \file beidou_dnav_almanac.cc * \file beidou_dnav_almanac.cc
* \brief Interface of a Beidou DNAV Almanac storage * \brief Interface of a Beidou DNAV Almanac storage
* *
* See http://www.gps.gov/technical/icwg/IS-GPS-200E.pdf Appendix II * See http://en.beidou.gov.cn/SYSTEMS/Officialdocument/201902/P020190227601370045731.pdf
* \author Sergi Segura, 2018. sergi.segura.munoz(at)gmail.com * \author Sergi Segura, 2018. sergi.segura.munoz(at)gmail.com
* *
* ------------------------------------------------------------------------- * -------------------------------------------------------------------------

View File

@ -63,8 +63,7 @@ Beidou_Dnav_Ephemeris::Beidou_Dnav_Ephemeris()
d_AODC = 0; // Issue of Data, Clock d_AODC = 0; // Issue of Data, Clock
i_AODO = 0; // Age of Data Offset (AODO) term for the navigation message correction table (NMCT) contained in subframe 4 (reference paragraph 20.3.3.5.1.9) [s] i_AODO = 0; // Age of Data Offset (AODO) term for the navigation message correction table (NMCT) contained in subframe 4 (reference paragraph 20.3.3.5.1.9) [s]
d_AODC = 0; d_AODC = 0;
b_fit_interval_flag = false; // indicates the curve-fit interval used by the CS (Block II/IIA/IIR/IIR-M/IIF) and SS (Block IIIA) in determining the ephemeris parameters, as follows: 0 = 4 hours, 1 = greater than 4 hours. b_fit_interval_flag = false;
d_spare1 = 0;
d_spare2 = 0; d_spare2 = 0;
i_sig_type = 0; i_sig_type = 0;
@ -113,7 +112,6 @@ double Beidou_Dnav_Ephemeris::check_t(double time)
} }
// 20.3.3.3.3.1 User Algorithm for SV Clock Correction.
double Beidou_Dnav_Ephemeris::sv_clock_drift(double transmitTime) double Beidou_Dnav_Ephemeris::sv_clock_drift(double transmitTime)
{ {
double dt; double dt;

View File

@ -38,9 +38,11 @@
/*! /*!
* \brief This class is a storage and orbital model functions for the GPS SV ephemeris data as described in IS-GPS-200E * \brief This class is a storage and orbital model functions for the GPS SV ephemeris data as described in
* BeiDou Navigation Satellite System Signal In Space Interface Control Document
* Open Service Signal B1I (Version 3.0)
* *
* See http://www.gps.gov/technical/icwg/IS-GPS-200E.pdf Appendix II * See http://en.beidou.gov.cn/SYSTEMS/Officialdocument/201902/P020190227601370045731.pdf
*/ */
class Beidou_Dnav_Ephemeris class Beidou_Dnav_Ephemeris
{ {
@ -59,8 +61,8 @@ public:
double d_eccentricity; //!< Eccentricity [dimensionless] double d_eccentricity; //!< Eccentricity [dimensionless]
double d_Cus; //!< Amplitude of the Sine Harmonic Correction Term to the Argument of Latitude [rad] double d_Cus; //!< Amplitude of the Sine Harmonic Correction Term to the Argument of Latitude [rad]
double d_sqrt_A; //!< Square Root of the Semi-Major Axis [sqrt(m)] double d_sqrt_A; //!< Square Root of the Semi-Major Axis [sqrt(m)]
double d_Toe; //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200E) [s] double d_Toe; //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200K) [s]
double d_Toc; //!< clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200E) [s] double d_Toc; //!< clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200K) [s]
double d_Cic; //!< Amplitude of the Cosine Harmonic Correction Term to the Angle of Inclination [rad] double d_Cic; //!< Amplitude of the Cosine Harmonic Correction Term to the Angle of Inclination [rad]
double d_OMEGA0; //!< Longitude of Ascending Node of Orbit Plane at Weekly Epoch [semi-circles] double d_OMEGA0; //!< Longitude of Ascending Node of Orbit Plane at Weekly Epoch [semi-circles]
double d_Cis; //!< Amplitude of the Sine Harmonic Correction Term to the Angle of Inclination [rad] double d_Cis; //!< Amplitude of the Sine Harmonic Correction Term to the Angle of Inclination [rad]
@ -70,7 +72,7 @@ public:
double d_OMEGA_DOT; //!< Rate of Right Ascension [semi-circles/s] double d_OMEGA_DOT; //!< Rate of Right Ascension [semi-circles/s]
double d_IDOT; //!< Rate of Inclination Angle [semi-circles/s] double d_IDOT; //!< Rate of Inclination Angle [semi-circles/s]
int i_BEIDOU_week; //!< BEIDOU week number, aka WN [week] int i_BEIDOU_week; //!< BEIDOU week number, aka WN [week]
int i_SV_accuracy; //!< User Range Accuracy (URA) index of the SV (reference paragraph 6.2.1) for the standard positioning service user (Ref 20.3.3.3.1.3 IS-GPS-200E) int i_SV_accuracy; //!< User Range Accuracy (URA) index of the SV (reference paragraph 6.2.1) for the standard positioning service user (Ref 20.3.3.3.1.3 IS-GPS-200K)
int i_SV_health; int i_SV_health;
double d_TGD1; //!< Estimated Group Delay Differential on B1I [s] double d_TGD1; //!< Estimated Group Delay Differential on B1I [s]
double d_TGD2; //!< Estimated Group Delay Differential on B2I [s] double d_TGD2; //!< Estimated Group Delay Differential on B2I [s]
@ -121,20 +123,20 @@ public:
/*! /*!
* \brief Compute the ECEF SV coordinates and ECEF velocity * \brief Compute the ECEF SV coordinates and ECEF velocity
* Implementation of Table 20-IV (IS-GPS-200E) * Implementation of Table 20-IV (IS-GPS-200K)
* and compute the clock bias term including relativistic effect (return value) * and compute the clock bias term including relativistic effect (return value)
*/ */
double satellitePosition(double transmitTime); double satellitePosition(double transmitTime);
/*! /*!
* \brief Sets (\a d_satClkDrift)and returns the clock drift in seconds according to the User Algorithm for SV Clock Correction * \brief Sets (\a d_satClkDrift)and returns the clock drift in seconds according to the User Algorithm for SV Clock Correction
* (IS-GPS-200E, 20.3.3.3.3.1) * (IS-GPS-200K, 20.3.3.3.3.1)
*/ */
double sv_clock_drift(double transmitTime); double sv_clock_drift(double transmitTime);
/*! /*!
* \brief Sets (\a d_dtr) and returns the clock relativistic correction term in seconds according to the User Algorithm for SV Clock Correction * \brief Sets (\a d_dtr) and returns the clock relativistic correction term in seconds according to the User Algorithm for SV Clock Correction
* (IS-GPS-200E, 20.3.3.3.3.1) * (IS-GPS-200K, 20.3.3.3.3.1)
*/ */
double sv_clock_relativistic_term(double transmitTime); double sv_clock_relativistic_term(double transmitTime);
@ -160,8 +162,8 @@ public:
archive& make_nvp("d_e_eccentricity", d_eccentricity); //!< Eccentricity [dimensionless] archive& make_nvp("d_e_eccentricity", d_eccentricity); //!< Eccentricity [dimensionless]
archive& make_nvp("d_Cus", d_Cus); //!< Amplitude of the Sine Harmonic Correction Term to the Argument of Latitude [rad] archive& make_nvp("d_Cus", d_Cus); //!< Amplitude of the Sine Harmonic Correction Term to the Argument of Latitude [rad]
archive& make_nvp("d_sqrt_A", d_sqrt_A); //!< Square Root of the Semi-Major Axis [sqrt(m)] archive& make_nvp("d_sqrt_A", d_sqrt_A); //!< Square Root of the Semi-Major Axis [sqrt(m)]
archive& make_nvp("d_Toe", d_Toe); //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200E) [s] archive& make_nvp("d_Toe", d_Toe); //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200K) [s]
archive& make_nvp("d_Toc", d_Toe); //!< clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200E) [s] archive& make_nvp("d_Toc", d_Toe); //!< clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200K) [s]
archive& make_nvp("d_Cic", d_Cic); //!< Amplitude of the Cosine Harmonic Correction Term to the Angle of Inclination [rad] archive& make_nvp("d_Cic", d_Cic); //!< Amplitude of the Cosine Harmonic Correction Term to the Angle of Inclination [rad]
archive& make_nvp("d_OMEGA0", d_OMEGA0); //!< Longitude of Ascending Node of Orbit Plane at Weekly Epoch [semi-circles] archive& make_nvp("d_OMEGA0", d_OMEGA0); //!< Longitude of Ascending Node of Orbit Plane at Weekly Epoch [semi-circles]
archive& make_nvp("d_Cis", d_Cis); //!< Amplitude of the Sine Harmonic Correction Term to the Angle of Inclination [rad] archive& make_nvp("d_Cis", d_Cis); //!< Amplitude of the Sine Harmonic Correction Term to the Angle of Inclination [rad]
@ -171,7 +173,7 @@ public:
archive& make_nvp("d_OMEGA_DOT", d_OMEGA_DOT); //!< Rate of Right Ascension [semi-circles/s] archive& make_nvp("d_OMEGA_DOT", d_OMEGA_DOT); //!< Rate of Right Ascension [semi-circles/s]
archive& make_nvp("d_IDOT", d_IDOT); //!< Rate of Inclination Angle [semi-circles/s] archive& make_nvp("d_IDOT", d_IDOT); //!< Rate of Inclination Angle [semi-circles/s]
archive& make_nvp("i_BEIDOU_week", i_BEIDOU_week); //!< GPS week number, aka WN [week] archive& make_nvp("i_BEIDOU_week", i_BEIDOU_week); //!< GPS week number, aka WN [week]
archive& make_nvp("i_SV_accuracy", i_SV_accuracy); //!< User Range Accuracy (URA) index of the SV (reference paragraph 6.2.1) for the standard positioning service user (Ref 20.3.3.3.1.3 IS-GPS-200E) archive& make_nvp("i_SV_accuracy", i_SV_accuracy); //!< User Range Accuracy (URA) index of the SV (reference paragraph 6.2.1) for the standard positioning service user (Ref 20.3.3.3.1.3 IS-GPS-200K)
archive& make_nvp("i_SV_health", i_SV_health); archive& make_nvp("i_SV_health", i_SV_health);
archive& make_nvp("d_AODC", d_AODC); //!< Issue of Data, Clock archive& make_nvp("d_AODC", d_AODC); //!< Issue of Data, Clock
archive& make_nvp("d_TGD1", d_TGD1); //!< Estimated Group Delay Differential: L1-L2 correction term only for the benefit of "L1 P(Y)" or "L2 P(Y)" s users [s] archive& make_nvp("d_TGD1", d_TGD1); //!< Estimated Group Delay Differential: L1-L2 correction term only for the benefit of "L1 P(Y)" or "L2 P(Y)" s users [s]
@ -195,7 +197,7 @@ private:
/* /*
* Accounts for the beginning or end of week crossover * Accounts for the beginning or end of week crossover
* *
* See paragraph 20.3.3.3.3.1 (IS-GPS-200E) * See paragraph 20.3.3.3.3.1 (IS-GPS-200K)
* \param[in] - time in seconds * \param[in] - time in seconds
* \param[out] - corrected time, in seconds * \param[out] - corrected time, in seconds
*/ */

View File

@ -39,7 +39,7 @@
/*! /*!
* \brief This class is a storage and orbital model functions for the Galileo SV ephemeris data as described in Galileo ICD paragraph 5.1.1 * \brief This class is a storage and orbital model functions for the Galileo SV ephemeris data as described in Galileo ICD paragraph 5.1.1
* (See https://www.gsc-europa.eu/system/files/galileo_documents/Galileo_OS_SIS_ICD.pdf ) * (See https://www.gsc-europa.eu/sites/default/files/sites/all/files/Galileo-OS-SIS-ICD.pdf )
* *
*/ */
class Galileo_Ephemeris class Galileo_Ephemeris

View File

@ -97,7 +97,7 @@ public:
/*! /*!
* \brief Sets (\a d_satClkDrift)and returns the clock drift in seconds according to the User Algorithm for SV Clock Correction * \brief Sets (\a d_satClkDrift)and returns the clock drift in seconds according to the User Algorithm for SV Clock Correction
* (IS-GPS-200E, 20.3.3.3.3.1) * (IS-GPS-200K, 20.3.3.3.3.1)
*/ */
double sv_clock_drift(double transmitTime, double timeCorrUTC); double sv_clock_drift(double transmitTime, double timeCorrUTC);
@ -176,7 +176,7 @@ private:
/* /*
* Accounts for the beginning or end of week crossover * Accounts for the beginning or end of week crossover
* *
* See paragraph 20.3.3.3.3.1 (IS-GPS-200E) * See paragraph 20.3.3.3.3.1 (IS-GPS-200K)
* \param[in] - time in seconds * \param[in] - time in seconds
* \param[out] - corrected time, in seconds * \param[out] - corrected time, in seconds
*/ */

View File

@ -1,8 +1,8 @@
/*! /*!
* \file gps_acq_assist.cc * \file gps_acq_assist.cc
* \brief Interface of a GPS RRLL ACQUISITION ASSISTACE storage * \brief Interface of a GPS RRLL ACQUISITION ASSISTACE storage
* *
* See http://www.gps.gov/technical/icwg/IS-GPS-200E.pdf Appendix II * See https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf Appendix II
* \author Javier Arribas, 2013. jarribas(at)cttc.es * \author Javier Arribas, 2013. jarribas(at)cttc.es
* *
* ------------------------------------------------------------------------- * -------------------------------------------------------------------------

View File

@ -2,7 +2,7 @@
* \file gps_almanac.cc * \file gps_almanac.cc
* \brief Interface of a GPS ALMANAC storage * \brief Interface of a GPS ALMANAC storage
* *
* See http://www.gps.gov/technical/icwg/IS-GPS-200E.pdf Appendix II * See https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf Appendix II
* \author Javier Arribas, 2013. jarribas(at)cttc.es * \author Javier Arribas, 2013. jarribas(at)cttc.es
* *
* ------------------------------------------------------------------------- * -------------------------------------------------------------------------

View File

@ -36,16 +36,16 @@
#include <cstdint> #include <cstdint>
/*! /*!
* \brief This class is a storage for the GPS SV ALMANAC data as described in IS-GPS-200E * \brief This class is a storage for the GPS SV ALMANAC data as described in IS-GPS-200K
* *
* See http://www.gps.gov/technical/icwg/IS-GPS-200E.pdf Appendix II * See https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf Appendix II
*/ */
class Gps_Almanac class Gps_Almanac
{ {
public: public:
uint32_t i_satellite_PRN; //!< SV PRN NUMBER uint32_t i_satellite_PRN; //!< SV PRN NUMBER
double d_Delta_i; //!< Inclination Angle at Reference Time (relative to i_0 = 0.30 semi-circles) double d_Delta_i; //!< Inclination Angle at Reference Time (relative to i_0 = 0.30 semi-circles)
int32_t i_Toa; //!< Almanac data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200E) [s] int32_t i_Toa; //!< Almanac data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200K) [s]
int32_t i_WNa; //!< Almanac week number int32_t i_WNa; //!< Almanac week number
double d_M_0; //!< Mean Anomaly at Reference Time [semi-circles] double d_M_0; //!< Mean Anomaly at Reference Time [semi-circles]
double d_e_eccentricity; //!< Eccentricity [dimensionless] double d_e_eccentricity; //!< Eccentricity [dimensionless]

View File

@ -2,7 +2,7 @@
* \file gps_cnav_ephemeris.cc * \file gps_cnav_ephemeris.cc
* \brief Interface of a GPS CNAV EPHEMERIS storage and orbital model functions * \brief Interface of a GPS CNAV EPHEMERIS storage and orbital model functions
* *
* See http://www.gps.gov/technical/icwg/IS-GPS-200E.pdf Appendix II * See https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf Appendix III
* \author Javier Arribas, 2015. jarribas(at)cttc.es * \author Javier Arribas, 2015. jarribas(at)cttc.es
* *
* ------------------------------------------------------------------------- * -------------------------------------------------------------------------
@ -142,7 +142,7 @@ double Gps_CNAV_Ephemeris::sv_clock_relativistic_term(double transmitTime)
double M; double M;
const double GM = 3.986005e14; // Universal gravitational constant times the mass of the Earth, [m^3/s^2] const double GM = 3.986005e14; // Universal gravitational constant times the mass of the Earth, [m^3/s^2]
const double F = -4.442807633e-10; // Constant, [s/(m)^(1/2)] const double F = -4.442807633e-10; // Constant, [s/(m)^(1/2)]
const double A_REF = 26559710.0; // See IS-GPS-200H, pp. 163 const double A_REF = 26559710.0; // See IS-GPS-200K, pp. 163
double d_sqrt_A = sqrt(A_REF + d_DELTA_A); double d_sqrt_A = sqrt(A_REF + d_DELTA_A);
// Restore semi-major axis // Restore semi-major axis
@ -200,11 +200,11 @@ double Gps_CNAV_Ephemeris::satellitePosition(double transmitTime)
double i; double i;
double Omega; double Omega;
const double A_REF = 26559710.0; // See IS-GPS-200H, pp. 170 const double A_REF = 26559710.0; // See IS-GPS-200K, pp. 170
double d_sqrt_A = sqrt(A_REF + d_DELTA_A); double d_sqrt_A = sqrt(A_REF + d_DELTA_A);
const double GM = 3.986005e14; // Universal gravitational constant times the mass of the Earth, [m^3/s^2] const double GM = 3.986005e14; // Universal gravitational constant times the mass of the Earth, [m^3/s^2]
const double OMEGA_DOT_REF = -2.6e-9; // semicircles / s, see IS-GPS-200H pp. 164 const double OMEGA_DOT_REF = -2.6e-9; // semicircles / s, see IS-GPS-200K pp. 164
const double OMEGA_EARTH_DOT = 7.2921151467e-5; // Earth rotation rate, [rad/s] const double OMEGA_EARTH_DOT = 7.2921151467e-5; // Earth rotation rate, [rad/s]
// Find satellite's position ---------------------------------------------- // Find satellite's position ----------------------------------------------

View File

@ -37,9 +37,9 @@
/*! /*!
* \brief This class is a storage and orbital model functions for the GPS SV ephemeris data as described in IS-GPS-200H * \brief This class is a storage and orbital model functions for the GPS SV ephemeris data as described in IS-GPS-200K
* *
* See http://www.gps.gov/technical/icwg/IS-GPS-200H.pdf Appendix III * See https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf Appendix III
*/ */
class Gps_CNAV_Ephemeris class Gps_CNAV_Ephemeris
{ {
@ -64,8 +64,8 @@ public:
double d_e_eccentricity; //!< Eccentricity double d_e_eccentricity; //!< Eccentricity
double d_OMEGA; //!< Argument of Perigee [semi-cicles] double d_OMEGA; //!< Argument of Perigee [semi-cicles]
double d_OMEGA0; //!< Longitude of Ascending Node of Orbit Plane at Weekly Epoch [semi-cicles] double d_OMEGA0; //!< Longitude of Ascending Node of Orbit Plane at Weekly Epoch [semi-cicles]
int32_t d_Toe1; //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200E) [s] int32_t d_Toe1; //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200K) [s]
int32_t d_Toe2; //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200E) [s] int32_t d_Toe2; //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200K) [s]
double d_DELTA_OMEGA_DOT; //!< Rate of Right Ascension difference [semi-circles/s] double d_DELTA_OMEGA_DOT; //!< Rate of Right Ascension difference [semi-circles/s]
double d_i_0; //!< Inclination Angle at Reference Time [semi-circles] double d_i_0; //!< Inclination Angle at Reference Time [semi-circles]
double d_IDOT; //!< Rate of Inclination Angle [semi-circles/s] double d_IDOT; //!< Rate of Inclination Angle [semi-circles/s]
@ -77,7 +77,7 @@ public:
double d_Cuc; //!< Amplitude of the Cosine Harmonic Correction Term to the Argument of Latitude [rad] double d_Cuc; //!< Amplitude of the Cosine Harmonic Correction Term to the Argument of Latitude [rad]
// Clock Correction and Accuracy Parameters // Clock Correction and Accuracy Parameters
int32_t d_Toc; //!< clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200E) [s] int32_t d_Toc; //!< clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200K) [s]
double d_A_f0; //!< Coefficient 0 of code phase offset model [s] double d_A_f0; //!< Coefficient 0 of code phase offset model [s]
double d_A_f1; //!< Coefficient 1 of code phase offset model [s/s] double d_A_f1; //!< Coefficient 1 of code phase offset model [s/s]
double d_A_f2; //!< Coefficient 2 of code phase offset model [s/s^2] double d_A_f2; //!< Coefficient 2 of code phase offset model [s/s^2]
@ -126,19 +126,19 @@ public:
/*! /*!
* \brief Compute the ECEF SV coordinates and ECEF velocity * \brief Compute the ECEF SV coordinates and ECEF velocity
* Implementation of Table 20-IV (IS-GPS-200E) * Implementation of Table 20-IV (IS-GPS-200K)
*/ */
double satellitePosition(double transmitTime); double satellitePosition(double transmitTime);
/*! /*!
* \brief Sets (\a d_satClkDrift)and returns the clock drift in seconds according to the User Algorithm for SV Clock Correction * \brief Sets (\a d_satClkDrift)and returns the clock drift in seconds according to the User Algorithm for SV Clock Correction
* (IS-GPS-200E, 20.3.3.3.3.1) * (IS-GPS-200K, 20.3.3.3.3.1)
*/ */
double sv_clock_drift(double transmitTime); double sv_clock_drift(double transmitTime);
/*! /*!
* \brief Sets (\a d_dtr) and returns the clock relativistic correction term in seconds according to the User Algorithm for SV Clock Correction * \brief Sets (\a d_dtr) and returns the clock relativistic correction term in seconds according to the User Algorithm for SV Clock Correction
* (IS-GPS-200E, 20.3.3.3.3.1) * (IS-GPS-200K, 20.3.3.3.3.1)
*/ */
double sv_clock_relativistic_term(double transmitTime); double sv_clock_relativistic_term(double transmitTime);
@ -161,9 +161,9 @@ public:
archive& make_nvp("d_Cuc", d_Cuc); //!< Amplitude of the Cosine Harmonic Correction Term to the Argument of Latitude [rad] archive& make_nvp("d_Cuc", d_Cuc); //!< Amplitude of the Cosine Harmonic Correction Term to the Argument of Latitude [rad]
archive& make_nvp("d_e_eccentricity", d_e_eccentricity); //!< Eccentricity [dimensionless] archive& make_nvp("d_e_eccentricity", d_e_eccentricity); //!< Eccentricity [dimensionless]
archive& make_nvp("d_Cus", d_Cus); //!< Amplitude of the Sine Harmonic Correction Term to the Argument of Latitude [rad] archive& make_nvp("d_Cus", d_Cus); //!< Amplitude of the Sine Harmonic Correction Term to the Argument of Latitude [rad]
archive& make_nvp("d_Toe1", d_Toe1); //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200E) [s] archive& make_nvp("d_Toe1", d_Toe1); //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200K) [s]
archive& make_nvp("d_Toe2", d_Toe2); //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200E) [s] archive& make_nvp("d_Toe2", d_Toe2); //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200K) [s]
archive& make_nvp("d_Toc", d_Toc); //!< clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200E) [s] archive& make_nvp("d_Toc", d_Toc); //!< clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200K) [s]
archive& make_nvp("d_Cic", d_Cic); //!< Amplitude of the Cosine Harmonic Correction Term to the Angle of Inclination [rad] archive& make_nvp("d_Cic", d_Cic); //!< Amplitude of the Cosine Harmonic Correction Term to the Angle of Inclination [rad]
archive& make_nvp("d_OMEGA0", d_OMEGA0); //!< Longitude of Ascending Node of Orbit Plane at Weekly Epoch [semi-circles] archive& make_nvp("d_OMEGA0", d_OMEGA0); //!< Longitude of Ascending Node of Orbit Plane at Weekly Epoch [semi-circles]
archive& make_nvp("d_Cis", d_Cis); //!< Amplitude of the Sine Harmonic Correction Term to the Angle of Inclination [rad] archive& make_nvp("d_Cis", d_Cis); //!< Amplitude of the Sine Harmonic Correction Term to the Angle of Inclination [rad]

View File

@ -2,7 +2,7 @@
* \file gps_cnav_iono.cc * \file gps_cnav_iono.cc
* \brief Interface of a GPS CNAV IONOSPHERIC MODEL storage * \brief Interface of a GPS CNAV IONOSPHERIC MODEL storage
* *
* See http://www.gps.gov/technical/icwg/IS-GPS-200E.pdf Appendix II * See https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf Appendix III
* \author Javier Arribas, 2015. jarribas(at)cttc.es * \author Javier Arribas, 2015. jarribas(at)cttc.es
* *
* ------------------------------------------------------------------------- * -------------------------------------------------------------------------

View File

@ -39,7 +39,7 @@
/*! /*!
* \brief This class is a storage for the GPS IONOSPHERIC data as described in IS-GPS-200H * \brief This class is a storage for the GPS IONOSPHERIC data as described in IS-GPS-200H
* *
* See http://www.gps.gov/technical/icwg/IS-GPS-200H.pdf Appendix III * See https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf Appendix III
*/ */
class Gps_CNAV_Iono class Gps_CNAV_Iono
{ {

View File

@ -1,8 +1,8 @@
/*! /*!
* \file gps_cnav_navigation_message.cc * \file gps_cnav_navigation_message.cc
* \brief Implementation of a GPS CNAV Data message decoder as described in IS-GPS-200H * \brief Implementation of a GPS CNAV Data message decoder as described in IS-GPS-200K
* *
* See http://www.gps.gov/technical/icwg/IS-GPS-200H.pdf Appendix III * See https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf Appendix III
* \author Javier Arribas, 2015. jarribas(at)cttc.es * \author Javier Arribas, 2015. jarribas(at)cttc.es
* *
* ------------------------------------------------------------------------- * -------------------------------------------------------------------------

View File

@ -46,9 +46,9 @@
/*! /*!
* \brief This class decodes a GPS CNAV Data message as described in IS-GPS-200H * \brief This class decodes a GPS CNAV Data message as described in IS-GPS-200K
* *
* See http://www.gps.gov/technical/icwg/IS-GPS-200H.pdf Appendix III * See https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf Appendix III
*/ */
class Gps_CNAV_Navigation_Message class Gps_CNAV_Navigation_Message
{ {

View File

@ -36,19 +36,19 @@
#include <cstdint> #include <cstdint>
/*! /*!
* \brief This class is a storage for the GPS UTC MODEL data as described in in IS-GPS-200H * \brief This class is a storage for the GPS UTC MODEL data as described in in IS-GPS-200K
* *
* See http://www.gps.gov/technical/icwg/IS-GPS-200H.pdf Appendix III * See https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf Appendix III
*/ */
class Gps_CNAV_Utc_Model class Gps_CNAV_Utc_Model
{ {
public: public:
bool valid; bool valid;
// UTC parameters // UTC parameters
double d_A2; //!< 2nd order term of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200H) [s/s] double d_A2; //!< 2nd order term of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200K) [s/s]
double d_A1; //!< 1st order term of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200H) [s/s] double d_A1; //!< 1st order term of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200K) [s/s]
double d_A0; //!< Constant of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200H) [s] double d_A0; //!< Constant of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200K) [s]
int32_t d_t_OT; //!< Reference time for UTC data (reference 20.3.4.5 and 20.3.3.5.2.4 IS-GPS-200H) [s] int32_t d_t_OT; //!< Reference time for UTC data (reference 20.3.4.5 and 20.3.3.5.2.4 IS-GPS-200K) [s]
int32_t i_WN_T; //!< UTC reference week number [weeks] int32_t i_WN_T; //!< UTC reference week number [weeks]
int32_t d_DeltaT_LS; //!< delta time due to leap seconds [s]. Number of leap seconds since 6-Jan-1980 as transmitted by the GPS almanac. int32_t d_DeltaT_LS; //!< delta time due to leap seconds [s]. Number of leap seconds since 6-Jan-1980 as transmitted by the GPS almanac.
int32_t i_WN_LSF; //!< Week number at the end of which the leap second becomes effective [weeks] int32_t i_WN_LSF; //!< Week number at the end of which the leap second becomes effective [weeks]
@ -62,7 +62,7 @@ public:
/*! /*!
* \brief Computes the Coordinated Universal Time (UTC) and * \brief Computes the Coordinated Universal Time (UTC) and
* returns it in [s] (IS-GPS-200E, 20.3.3.5.2.4 + 30.3.3.6.2) * returns it in [s] (IS-GPS-200K, 20.3.3.5.2.4 + 30.3.3.6.2)
*/ */
double utc_time(double gpstime_corrected, int32_t i_GPS_week); double utc_time(double gpstime_corrected, int32_t i_GPS_week);

View File

@ -2,7 +2,7 @@
* \file gps_ephemeris.cc * \file gps_ephemeris.cc
* \brief Interface of a GPS EPHEMERIS storage and orbital model functions * \brief Interface of a GPS EPHEMERIS storage and orbital model functions
* *
* See http://www.gps.gov/technical/icwg/IS-GPS-200E.pdf Appendix II * See https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf Appendix II
* \author Javier Arribas, 2013. jarribas(at)cttc.es * \author Javier Arribas, 2013. jarribas(at)cttc.es
* *
* ------------------------------------------------------------------------- * -------------------------------------------------------------------------

View File

@ -40,9 +40,9 @@
/*! /*!
* \brief This class is a storage and orbital model functions for the GPS SV ephemeris data as described in IS-GPS-200E * \brief This class is a storage and orbital model functions for the GPS SV ephemeris data as described in IS-GPS-200K
* *
* See http://www.gps.gov/technical/icwg/IS-GPS-200E.pdf Appendix II * See https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf Appendix II
*/ */
class Gps_Ephemeris class Gps_Ephemeris
{ {
@ -61,8 +61,8 @@ public:
double d_e_eccentricity; //!< Eccentricity [dimensionless] double d_e_eccentricity; //!< Eccentricity [dimensionless]
double d_Cus; //!< Amplitude of the Sine Harmonic Correction Term to the Argument of Latitude [rad] double d_Cus; //!< Amplitude of the Sine Harmonic Correction Term to the Argument of Latitude [rad]
double d_sqrt_A; //!< Square Root of the Semi-Major Axis [sqrt(m)] double d_sqrt_A; //!< Square Root of the Semi-Major Axis [sqrt(m)]
int32_t d_Toe; //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200E) [s] int32_t d_Toe; //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200K) [s]
int32_t d_Toc; //!< clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200E) [s] int32_t d_Toc; //!< clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200K) [s]
double d_Cic; //!< Amplitude of the Cosine Harmonic Correction Term to the Angle of Inclination [rad] double d_Cic; //!< Amplitude of the Cosine Harmonic Correction Term to the Angle of Inclination [rad]
double d_OMEGA0; //!< Longitude of Ascending Node of Orbit Plane at Weekly Epoch [semi-circles] double d_OMEGA0; //!< Longitude of Ascending Node of Orbit Plane at Weekly Epoch [semi-circles]
double d_Cis; //!< Amplitude of the Sine Harmonic Correction Term to the Angle of Inclination [rad] double d_Cis; //!< Amplitude of the Sine Harmonic Correction Term to the Angle of Inclination [rad]
@ -74,7 +74,7 @@ public:
int32_t i_code_on_L2; //!< If 1, P code ON in L2; if 2, C/A code ON in L2; int32_t i_code_on_L2; //!< If 1, P code ON in L2; if 2, C/A code ON in L2;
int32_t i_GPS_week; //!< GPS week number, aka WN [week] int32_t i_GPS_week; //!< GPS week number, aka WN [week]
bool b_L2_P_data_flag; //!< When true, indicates that the NAV data stream was commanded OFF on the P-code of the L2 channel bool b_L2_P_data_flag; //!< When true, indicates that the NAV data stream was commanded OFF on the P-code of the L2 channel
int32_t i_SV_accuracy; //!< User Range Accuracy (URA) index of the SV (reference paragraph 6.2.1) for the standard positioning service user (Ref 20.3.3.3.1.3 IS-GPS-200E) int32_t i_SV_accuracy; //!< User Range Accuracy (URA) index of the SV (reference paragraph 6.2.1) for the standard positioning service user (Ref 20.3.3.3.1.3 IS-GPS-200K)
int32_t i_SV_health; int32_t i_SV_health;
double d_TGD; //!< Estimated Group Delay Differential: L1-L2 correction term only for the benefit of "L1 P(Y)" or "L2 P(Y)" s users [s] double d_TGD; //!< Estimated Group Delay Differential: L1-L2 correction term only for the benefit of "L1 P(Y)" or "L2 P(Y)" s users [s]
int32_t d_IODC; //!< Issue of Data, Clock int32_t d_IODC; //!< Issue of Data, Clock
@ -124,20 +124,20 @@ public:
/*! /*!
* \brief Compute the ECEF SV coordinates and ECEF velocity * \brief Compute the ECEF SV coordinates and ECEF velocity
* Implementation of Table 20-IV (IS-GPS-200E) * Implementation of Table 20-IV (IS-GPS-200K)
* and compute the clock bias term including relativistic effect (return value) * and compute the clock bias term including relativistic effect (return value)
*/ */
double satellitePosition(double transmitTime); double satellitePosition(double transmitTime);
/*! /*!
* \brief Sets (\a d_satClkDrift)and returns the clock drift in seconds according to the User Algorithm for SV Clock Correction * \brief Sets (\a d_satClkDrift)and returns the clock drift in seconds according to the User Algorithm for SV Clock Correction
* (IS-GPS-200E, 20.3.3.3.3.1) * (IS-GPS-200K, 20.3.3.3.3.1)
*/ */
double sv_clock_drift(double transmitTime); double sv_clock_drift(double transmitTime);
/*! /*!
* \brief Sets (\a d_dtr) and returns the clock relativistic correction term in seconds according to the User Algorithm for SV Clock Correction * \brief Sets (\a d_dtr) and returns the clock relativistic correction term in seconds according to the User Algorithm for SV Clock Correction
* (IS-GPS-200E, 20.3.3.3.3.1) * (IS-GPS-200K, 20.3.3.3.3.1)
*/ */
double sv_clock_relativistic_term(double transmitTime); double sv_clock_relativistic_term(double transmitTime);
@ -164,8 +164,8 @@ public:
archive& make_nvp("d_e_eccentricity", d_e_eccentricity); //!< Eccentricity [dimensionless] archive& make_nvp("d_e_eccentricity", d_e_eccentricity); //!< Eccentricity [dimensionless]
archive& make_nvp("d_Cus", d_Cus); //!< Amplitude of the Sine Harmonic Correction Term to the Argument of Latitude [rad] archive& make_nvp("d_Cus", d_Cus); //!< Amplitude of the Sine Harmonic Correction Term to the Argument of Latitude [rad]
archive& make_nvp("d_sqrt_A", d_sqrt_A); //!< Square Root of the Semi-Major Axis [sqrt(m)] archive& make_nvp("d_sqrt_A", d_sqrt_A); //!< Square Root of the Semi-Major Axis [sqrt(m)]
archive& make_nvp("d_Toe", d_Toe); //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200E) [s] archive& make_nvp("d_Toe", d_Toe); //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200K) [s]
archive& make_nvp("d_Toc", d_Toc); //!< clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200E) [s] archive& make_nvp("d_Toc", d_Toc); //!< clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200K) [s]
archive& make_nvp("d_Cic", d_Cic); //!< Amplitude of the Cosine Harmonic Correction Term to the Angle of Inclination [rad] archive& make_nvp("d_Cic", d_Cic); //!< Amplitude of the Cosine Harmonic Correction Term to the Angle of Inclination [rad]
archive& make_nvp("d_OMEGA0", d_OMEGA0); //!< Longitude of Ascending Node of Orbit Plane at Weekly Epoch [semi-circles] archive& make_nvp("d_OMEGA0", d_OMEGA0); //!< Longitude of Ascending Node of Orbit Plane at Weekly Epoch [semi-circles]
archive& make_nvp("d_Cis", d_Cis); //!< Amplitude of the Sine Harmonic Correction Term to the Angle of Inclination [rad] archive& make_nvp("d_Cis", d_Cis); //!< Amplitude of the Sine Harmonic Correction Term to the Angle of Inclination [rad]
@ -177,13 +177,13 @@ public:
archive& make_nvp("i_code_on_L2", i_code_on_L2); //!< If 1, P code ON in L2; if 2, C/A code ON in L2; archive& make_nvp("i_code_on_L2", i_code_on_L2); //!< If 1, P code ON in L2; if 2, C/A code ON in L2;
archive& make_nvp("i_GPS_week", i_GPS_week); //!< GPS week number, aka WN [week] archive& make_nvp("i_GPS_week", i_GPS_week); //!< GPS week number, aka WN [week]
archive& make_nvp("b_L2_P_data_flag", b_L2_P_data_flag); //!< When true, indicates that the NAV data stream was commanded OFF on the P-code of the L2 channel archive& make_nvp("b_L2_P_data_flag", b_L2_P_data_flag); //!< When true, indicates that the NAV data stream was commanded OFF on the P-code of the L2 channel
archive& make_nvp("i_SV_accuracy", i_SV_accuracy); //!< User Range Accuracy (URA) index of the SV (reference paragraph 6.2.1) for the standard positioning service user (Ref 20.3.3.3.1.3 IS-GPS-200E) archive& make_nvp("i_SV_accuracy", i_SV_accuracy); //!< User Range Accuracy (URA) index of the SV (reference paragraph 6.2.1) for the standard positioning service user (Ref 20.3.3.3.1.3 IS-GPS-200K)
archive& make_nvp("i_SV_health", i_SV_health); archive& make_nvp("i_SV_health", i_SV_health);
archive& make_nvp("d_TGD", d_TGD); //!< Estimated Group Delay Differential: L1-L2 correction term only for the benefit of "L1 P(Y)" or "L2 P(Y)" s users [s] archive& make_nvp("d_TGD", d_TGD); //!< Estimated Group Delay Differential: L1-L2 correction term only for the benefit of "L1 P(Y)" or "L2 P(Y)" s users [s]
archive& make_nvp("d_IODC", d_IODC); //!< Issue of Data, Clock archive& make_nvp("d_IODC", d_IODC); //!< Issue of Data, Clock
archive& make_nvp("i_AODO", i_AODO); //!< Age of Data Offset (AODO) term for the navigation message correction table (NMCT) contained in subframe 4 (reference paragraph 20.3.3.5.1.9) [s] archive& make_nvp("i_AODO", i_AODO); //!< Age of Data Offset (AODO) term for the navigation message correction table (NMCT) contained in subframe 4 (reference paragraph 20.3.3.5.1.9) [s]
archive& make_nvp("b_fit_interval_flag", b_fit_interval_flag); //!< indicates the curve-fit interval used by the CS (Block II/IIA/IIR/IIR-M/IIF) and SS (Block IIIA) in determining the ephemeris parameters, as follows: 0 = 4 hours, 1 = greater than 4 hours. archive& make_nvp("b_fit_interval_flag", b_fit_interval_flag); //!< Indicates the curve-fit interval used by the CS (Block II/IIA/IIR/IIR-M/IIF) and SS (Block IIIA) in determining the ephemeris parameters, as follows: 0 = 4 hours, 1 = greater than 4 hours.
archive& make_nvp("d_spare1", d_spare1); archive& make_nvp("d_spare1", d_spare1);
archive& make_nvp("d_spare2", d_spare2); archive& make_nvp("d_spare2", d_spare2);
@ -192,15 +192,15 @@ public:
archive& make_nvp("d_A_f2", d_A_f2); //!< Coefficient 2 of code phase offset model [s/s^2] archive& make_nvp("d_A_f2", d_A_f2); //!< Coefficient 2 of code phase offset model [s/s^2]
archive& make_nvp("b_integrity_status_flag", b_integrity_status_flag); archive& make_nvp("b_integrity_status_flag", b_integrity_status_flag);
archive& make_nvp("b_alert_flag", b_alert_flag); //!< If true, indicates that the SV URA may be worse than indicated in d_SV_accuracy, use that SV at our own risk. archive& make_nvp("b_alert_flag", b_alert_flag); //!< If true, indicates that the SV URA may be worse than indicated in d_SV_accuracy, use that SV at our own risk.
archive& make_nvp("b_antispoofing_flag", b_antispoofing_flag); //!< If true, the AntiSpoofing mode is ON in that SV archive& make_nvp("b_antispoofing_flag", b_antispoofing_flag); //!< If true, the AntiSpoofing mode is ON in that SV
} }
private: private:
/* /*
* Accounts for the beginning or end of week crossover * Accounts for the beginning or end of week crossover
* *
* See paragraph 20.3.3.3.3.1 (IS-GPS-200E) * See paragraph 20.3.3.3.3.1 (IS-GPS-200K)
* \param[in] - time in seconds * \param[in] - time in seconds
* \param[out] - corrected time, in seconds * \param[out] - corrected time, in seconds
*/ */

View File

@ -2,7 +2,7 @@
* \file gps_iono.cc * \file gps_iono.cc
* \brief Interface of a GPS IONOSPHERIC MODEL storage * \brief Interface of a GPS IONOSPHERIC MODEL storage
* *
* See http://www.gps.gov/technical/icwg/IS-GPS-200E.pdf Appendix II * See https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf Appendix II
* \author Javier Arribas, 2013. jarribas(at)cttc.es * \author Javier Arribas, 2013. jarribas(at)cttc.es
* *
* ------------------------------------------------------------------------- * -------------------------------------------------------------------------

View File

@ -37,9 +37,9 @@
/*! /*!
* \brief This class is a storage for the GPS IONOSPHERIC data as described in IS-GPS-200E * \brief This class is a storage for the GPS IONOSPHERIC data as described in IS-GPS-200K
* *
* See http://www.gps.gov/technical/icwg/IS-GPS-200E.pdf Appendix II * See https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf Appendix II
*/ */
class Gps_Iono class Gps_Iono
{ {

View File

@ -1,8 +1,8 @@
/*! /*!
m * \file gps_navigation_message.cc m * \file gps_navigation_message.cc
* \brief Implementation of a GPS NAV Data message decoder as described in IS-GPS-200E * \brief Implementation of a GPS NAV Data message decoder as described in IS-GPS-200K
* *
* See http://www.gps.gov/technical/icwg/IS-GPS-200E.pdf Appendix II * See https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf Appendix II
* \author Javier Arribas, 2011. jarribas(at)cttc.es * \author Javier Arribas, 2011. jarribas(at)cttc.es
* *
* ------------------------------------------------------------------------- * -------------------------------------------------------------------------
@ -253,7 +253,7 @@ int32_t Gps_Navigation_Message::subframe_decoder(char* subframe)
switch (subframe_ID) switch (subframe_ID)
{ {
// --- Decode the sub-frame id ----------------------------------------- // --- Decode the sub-frame id -----------------------------------------
// ICD (IS-GPS-200E Appendix II). http://www.losangeles.af.mil/shared/media/document/AFD-100813-045.pdf // ICD (IS-GPS-200K Appendix II). http://www.losangeles.af.mil/shared/media/document/AFD-100813-045.pdf
case 1: case 1:
// --- It is subframe 1 ------------------------------------- // --- It is subframe 1 -------------------------------------
// Compute the time of week (TOW) of the first sub-frames in the array ==== // Compute the time of week (TOW) of the first sub-frames in the array ====
@ -351,7 +351,7 @@ int32_t Gps_Navigation_Message::subframe_decoder(char* subframe)
b_antispoofing_flag = read_navigation_bool(subframe_bits, ANTI_SPOOFING_FLAG); b_antispoofing_flag = read_navigation_bool(subframe_bits, ANTI_SPOOFING_FLAG);
SV_data_ID = static_cast<int32_t>(read_navigation_unsigned(subframe_bits, SV_DATA_ID)); SV_data_ID = static_cast<int32_t>(read_navigation_unsigned(subframe_bits, SV_DATA_ID));
SV_page = static_cast<int32_t>(read_navigation_unsigned(subframe_bits, SV_PAGE)); SV_page = static_cast<int32_t>(read_navigation_unsigned(subframe_bits, SV_PAGE));
if (SV_page > 24 && SV_page < 33) // Page 4 (from Table 20-V. Data IDs and SV IDs in Subframes 4 and 5, IS-GPS-200H, page 110) if (SV_page > 24 && SV_page < 33) // Page 4 (from Table 20-V. Data IDs and SV IDs in Subframes 4 and 5, IS-GPS-200K, page 110)
{ {
//! \TODO read almanac //! \TODO read almanac
if (SV_data_ID != 0) if (SV_data_ID != 0)
@ -359,12 +359,12 @@ int32_t Gps_Navigation_Message::subframe_decoder(char* subframe)
} }
} }
if (SV_page == 52) // Page 13 (from Table 20-V. Data IDs and SV IDs in Subframes 4 and 5, IS-GPS-200H, page 110) if (SV_page == 52) // Page 13 (from Table 20-V. Data IDs and SV IDs in Subframes 4 and 5, IS-GPS-200K, page 110)
{ {
//! \TODO read Estimated Range Deviation (ERD) values //! \TODO read Estimated Range Deviation (ERD) values
} }
if (SV_page == 56) // Page 18 (from Table 20-V. Data IDs and SV IDs in Subframes 4 and 5, IS-GPS-200H, page 110) if (SV_page == 56) // Page 18 (from Table 20-V. Data IDs and SV IDs in Subframes 4 and 5, IS-GPS-200K, page 110)
{ {
// Page 18 - Ionospheric and UTC data // Page 18 - Ionospheric and UTC data
d_alpha0 = static_cast<double>(read_navigation_signed(subframe_bits, ALPHA_0)); d_alpha0 = static_cast<double>(read_navigation_signed(subframe_bits, ALPHA_0));
@ -402,7 +402,7 @@ int32_t Gps_Navigation_Message::subframe_decoder(char* subframe)
// Reserved // Reserved
} }
if (SV_page == 63) // Page 25 (from Table 20-V. Data IDs and SV IDs in Subframes 4 and 5, IS-GPS-200H, page 110) if (SV_page == 63) // Page 25 (from Table 20-V. Data IDs and SV IDs in Subframes 4 and 5, IS-GPS-200K, page 110)
{ {
// Page 25 Anti-Spoofing, SV config and almanac health (PRN: 25-32) // Page 25 Anti-Spoofing, SV config and almanac health (PRN: 25-32)
//! \TODO Read Anti-Spoofing, SV config //! \TODO Read Anti-Spoofing, SV config
@ -435,7 +435,7 @@ int32_t Gps_Navigation_Message::subframe_decoder(char* subframe)
{ {
} }
} }
if (SV_page_5 == 51) // Page 25 (from Table 20-V. Data IDs and SV IDs in Subframes 4 and 5, IS-GPS-200H, page 110) if (SV_page_5 == 51) // Page 25 (from Table 20-V. Data IDs and SV IDs in Subframes 4 and 5, IS-GPS-200K, page 110)
{ {
i_Toa = static_cast<int32_t>(read_navigation_unsigned(subframe_bits, T_OA)); i_Toa = static_cast<int32_t>(read_navigation_unsigned(subframe_bits, T_OA));
i_Toa = i_Toa * T_OA_LSB; i_Toa = i_Toa * T_OA_LSB;

View File

@ -46,9 +46,9 @@
/*! /*!
* \brief This class decodes a GPS NAV Data message as described in IS-GPS-200E * \brief This class decodes a GPS NAV Data message as described in IS-GPS-200K
* *
* See http://www.gps.gov/technical/icwg/IS-GPS-200E.pdf Appendix II * See https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf Appendix II
*/ */
class Gps_Navigation_Message class Gps_Navigation_Message
{ {
@ -77,8 +77,8 @@ public:
double d_Cus; //!< Amplitude of the Sine Harmonic Correction Term to the Argument of Latitude [rad] double d_Cus; //!< Amplitude of the Sine Harmonic Correction Term to the Argument of Latitude [rad]
double d_sqrt_A; //!< Square Root of the Semi-Major Axis [sqrt(m)] double d_sqrt_A; //!< Square Root of the Semi-Major Axis [sqrt(m)]
// broadcast orbit 3 // broadcast orbit 3
int32_t d_Toe; //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200E) [s] int32_t d_Toe; //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200K) [s]
int32_t d_Toc; //!< clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200E) [s] int32_t d_Toc; //!< clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200K) [s]
double d_Cic; //!< Amplitude of the Cosine Harmonic Correction Term to the Angle of Inclination [rad] double d_Cic; //!< Amplitude of the Cosine Harmonic Correction Term to the Angle of Inclination [rad]
double d_OMEGA0; //!< Longitude of Ascending Node of Orbit Plane at Weekly Epoch [semi-circles] double d_OMEGA0; //!< Longitude of Ascending Node of Orbit Plane at Weekly Epoch [semi-circles]
double d_Cis; //!< Amplitude of the Sine Harmonic Correction Term to the Angle of Inclination [rad] double d_Cis; //!< Amplitude of the Sine Harmonic Correction Term to the Angle of Inclination [rad]
@ -93,7 +93,7 @@ public:
int32_t i_GPS_week; //!< GPS week number, aka WN [week] int32_t i_GPS_week; //!< GPS week number, aka WN [week]
bool b_L2_P_data_flag; //!< When true, indicates that the NAV data stream was commanded OFF on the P-code of the L2 channel bool b_L2_P_data_flag; //!< When true, indicates that the NAV data stream was commanded OFF on the P-code of the L2 channel
// broadcast orbit 6 // broadcast orbit 6
int32_t i_SV_accuracy; //!< User Range Accuracy (URA) index of the SV (reference paragraph 6.2.1) for the standard positioning service user (Ref 20.3.3.3.1.3 IS-GPS-200E) int32_t i_SV_accuracy; //!< User Range Accuracy (URA) index of the SV (reference paragraph 6.2.1) for the standard positioning service user (Ref 20.3.3.3.1.3 IS-GPS-200K)
int32_t i_SV_health; int32_t i_SV_health;
double d_TGD; //!< Estimated Group Delay Differential: L1-L2 correction term only for the benefit of "L1 P(Y)" or "L2 P(Y)" s users [s] double d_TGD; //!< Estimated Group Delay Differential: L1-L2 correction term only for the benefit of "L1 P(Y)" or "L2 P(Y)" s users [s]
int32_t d_IODC; //!< Issue of Data, Clock int32_t d_IODC; //!< Issue of Data, Clock
@ -160,10 +160,10 @@ public:
// UTC parameters // UTC parameters
bool flag_utc_model_valid; //!< If set, it indicates that the UTC model parameters are filled bool flag_utc_model_valid; //!< If set, it indicates that the UTC model parameters are filled
double d_A0; //!< Constant of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200E) [s] double d_A0; //!< Constant of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200K) [s]
double d_A1; //!< 1st order term of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200E) [s/s] double d_A1; //!< 1st order term of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200K) [s/s]
double d_A2; //!< 2nd order term of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200E) [s/s] double d_A2; //!< 2nd order term of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200K) [s/s]
int32_t d_t_OT; //!< Reference time for UTC data (reference 20.3.4.5 and 20.3.3.5.2.4 IS-GPS-200E) [s] int32_t d_t_OT; //!< Reference time for UTC data (reference 20.3.4.5 and 20.3.3.5.2.4 IS-GPS-200K) [s]
int32_t i_WN_T; //!< UTC reference week number [weeks] int32_t i_WN_T; //!< UTC reference week number [weeks]
int32_t d_DeltaT_LS; //!< delta time due to leap seconds [s]. Number of leap seconds since 6-Jan-1980 as transmitted by the GPS almanac. int32_t d_DeltaT_LS; //!< delta time due to leap seconds [s]. Number of leap seconds since 6-Jan-1980 as transmitted by the GPS almanac.
int32_t i_WN_LSF; //!< Week number at the end of which the leap second becomes effective [weeks] int32_t i_WN_LSF; //!< Week number at the end of which the leap second becomes effective [weeks]
@ -201,7 +201,7 @@ public:
/*! /*!
* \brief Computes the Coordinated Universal Time (UTC) and * \brief Computes the Coordinated Universal Time (UTC) and
* returns it in [s] (IS-GPS-200E, 20.3.3.5.2.4) * returns it in [s] (IS-GPS-200K, 20.3.3.5.2.4)
*/ */
double utc_time(const double gpstime_corrected) const; double utc_time(const double gpstime_corrected) const;

View File

@ -36,19 +36,19 @@
#include <cstdint> #include <cstdint>
/*! /*!
* \brief This class is a storage for the GPS UTC MODEL data as described in IS-GPS-200E * \brief This class is a storage for the GPS UTC MODEL data as described in IS-GPS-200K
* *
* See http://www.gps.gov/technical/icwg/IS-GPS-200E.pdf Appendix II * See http://www.gps.gov/technical/icwg/IS-GPS-200K.pdf Appendix II
*/ */
class Gps_Utc_Model class Gps_Utc_Model
{ {
public: public:
bool valid; bool valid;
// UTC parameters // UTC parameters
double d_A0; //!< Constant of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200E) [s] double d_A0; //!< Constant of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200K) [s]
double d_A1; //!< 1st order term of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200E) [s/s] double d_A1; //!< 1st order term of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200K) [s/s]
double d_A2; //!< 2nd order term of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200E) [s/s] double d_A2; //!< 2nd order term of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200K) [s/s]
int32_t d_t_OT; //!< Reference time for UTC data (reference 20.3.4.5 and 20.3.3.5.2.4 IS-GPS-200E) [s] int32_t d_t_OT; //!< Reference time for UTC data (reference 20.3.4.5 and 20.3.3.5.2.4 IS-GPS-200K) [s]
int32_t i_WN_T; //!< UTC reference week number [weeks] int32_t i_WN_T; //!< UTC reference week number [weeks]
int32_t d_DeltaT_LS; //!< delta time due to leap seconds [s]. Number of leap seconds since 6-Jan-1980 as transmitted by the GPS almanac. int32_t d_DeltaT_LS; //!< delta time due to leap seconds [s]. Number of leap seconds since 6-Jan-1980 as transmitted by the GPS almanac.
int32_t i_WN_LSF; //!< Week number at the end of which the leap second becomes effective [weeks] int32_t i_WN_LSF; //!< Week number at the end of which the leap second becomes effective [weeks]
@ -83,7 +83,7 @@ public:
/*! /*!
* \brief Computes the Coordinated Universal Time (UTC) and * \brief Computes the Coordinated Universal Time (UTC) and
* returns it in [s] (IS-GPS-200E, 20.3.3.5.2.4) * returns it in [s] (IS-GPS-200K, 20.3.3.5.2.4)
*/ */
double utc_time(double gpstime_corrected, int32_t i_GPS_week); double utc_time(double gpstime_corrected, int32_t i_GPS_week);
}; };