diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index d082e0ac4..7276cf08f 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -50,6 +50,8 @@ All notable changes to GNSS-SDR will be documented in this file. files make use of the new parameters' names. - Update GSL implementation to 0.38.1. See https://github.com/gsl-lite/gsl-lite/releases/tag/v0.38.1 +- Update references to the latest GPS ICDs (IS-GPS-200M, IS-GPS-800H, + IS-GPS-705H) published in May, 2021. ### Improvements in Portability: diff --git a/docs/doxygen/other/reference_docs.dox b/docs/doxygen/other/reference_docs.dox index d8fa7d02c..99caefd13 100644 --- a/docs/doxygen/other/reference_docs.dox +++ b/docs/doxygen/other/reference_docs.dox @@ -12,9 +12,9 @@ All the current GPS Interface Control Documents can be downloaded from GPS.gov, the official U.S. Government webpage for GPS. -\li GPS L1 and L2C: Global Positioning System Directorate, Interface Specification IS-GPS-200 Revision L. May, 2020. -\li GPS L1C (available with first Block III launch): Global Positioning System Directorate, Interface Specification IS-GPS-800 Revision G. May, 2020. -\li GPS L5 (first Block IIF satellite launched on May, 2010): Global Positioning System Directorate, Interface Specification IS-GPS-705 Revision G. May, 2020. +\li GPS L1 and L2C: Global Positioning System Directorate, Interface Specification IS-GPS-200 Revision M. May, 2021. +\li GPS L1C (available with first Block III launch): Global Positioning System Directorate, Interface Specification IS-GPS-800 Revision H. May, 2021. +\li GPS L5 (first Block IIF satellite launched on May, 2010): Global Positioning System Directorate, Interface Specification IS-GPS-705 Revision H. May, 2021. diff --git a/docs/doxygen/other/signal_model.dox b/docs/doxygen/other/signal_model.dox index 13741147f..b62b4cefe 100644 --- a/docs/doxygen/other/signal_model.dox +++ b/docs/doxygen/other/signal_model.dox @@ -62,7 +62,7 @@ and civilian users on a continuous, worldwide basis. Two GPS services are provid the Precise Positioning Service (PPS), available primarily to the military of the United States and its allies, and the Standard Positioning Service (SPS) open to civilian users. -\li GPS L1. Defined at Interface Specification IS-GPS-200 Revision L, this band is centered at \f$f_{\text{GPS L1}}=1575.42\f$ MHz. The complex baseband transmitted signal can be written as +\li GPS L1. Defined at Interface Specification IS-GPS-200 Revision M, this band is centered at \f$f_{\text{GPS L1}}=1575.42\f$ MHz. The complex baseband transmitted signal can be written as \f{equation}{ s^{\text{(GPS L1)}}_{T}(t)=e_{L1I}(t) + j e_{L1Q}(t)~, \f} @@ -76,12 +76,12 @@ s^{\text{(GPS L1)}}_{T}(t)=e_{L1I}(t) + j e_{L1Q}(t)~, \f$L_{\text{P(Y)}}=6.1871 \cdot 10^{12}\f$, and \f$p(t)\f$ is a rectangular pulse of a chip-period duration centered at \f$t=0\f$ and filtered at the transmitter. According to the chip rate, the binary phase-shift keying modulations in the equations above are denoted as BPSK(10) and BPSK(1), respectively. The precision P codes (named Y codes whenever the anti-spoofing mode is activated, encrypting the code and thus denying non-U.S. military users) are sequences of \f$7\f$ days in length. Regarding the modernization plans for GPS, it - is worthwhile to mention that there is a new civilian-use signal planned, called L1C and defined at Interface Specification IS-GPS-800 Revision G, - to be broadcast on the same L1 frequency that currently contains the C/A signal. The L1C will be available with first Block III launch, currently scheduled for 2013. The implementation will - provide C/A code to ensure backward compatibility. + is worthwhile to mention that there is a new civilian-use signal planned, called L1C and defined at Interface Specification IS-GPS-800 Revision H, + to be broadcast on the same L1 frequency that currently contains the C/A signal. The L1C is available with first Block III launch. The implementation + provides C/A code to ensure backward compatibility. -\li GPS L2C. Defined at Interface Specification IS-GPS-200 Revision L, is only available on +\li GPS L2C. Defined at Interface Specification IS-GPS-200 Revision M, is only available on Block IIR-M and subsequent satellite blocks. Centered at \f$f_{\text{GPS L2}}=1227.60\f$ MHz, the signal structure is the same than in (\ref{eq:GPSL1}), with the precision code in the In-phase component, just as in (\ref{eq:L1CAI}) but with an optional presence of the navigation message \f$D_{\text{NAV}}\f$. For the Quadrature-phase component, three options are defined: \f{align}{ e_{L2CQ}(t) =& \sum_{l=-\infty}^{\infty} D_{\text{CNAV}} \Big[ [l]_{10230} \Big] \oplus \left( C_{\text{CL}} \Big[ |l|_{L_{\text{CL}}} \Big] p_{\text{\tiny{1/2}}} \left( t - lT_{c,L2C} \right) + \right.\\ {} &+ \left. C_{\text{CM}} \Big[ |l|_{L_{\text{CM}}} \Big] p_{\text{\tiny{1/2}}}\left(t - \left(l+\frac{3}{4}\right)T_{c,L2C}\right) \right),\\ @@ -94,7 +94,7 @@ component, just as in (\ref{eq:L1CAI}) but with an optional presence of the navi data than the NAV data. It is transmitted at \f$25\f$ bps with forward error correction (FEC) encoding, resulting in \f$50\f$ sps. -\li GPS L5. The GPS L5 link, defined at Interface Specification IS-GPS-705 Revision G, is only available +\li GPS L5. The GPS L5 link, defined at Interface Specification IS-GPS-705 Revision H, is only available in Block IIF (first satellite launched on May, 2010) and subsequent satellite blocks. Centered at \f$f_{\text{GPS L5}}=1176.45\f$ MHz, this signal in space can be written as: \f{equation}{ s^{\text{(GPS L5)}}_{T}(t)=e_{L5I}(t) +j e_{L5Q}(t)~, diff --git a/docs/protobuf/gps_ephemeris.proto b/docs/protobuf/gps_ephemeris.proto index 1dd5dd80d..9aa1d6847 100644 --- a/docs/protobuf/gps_ephemeris.proto +++ b/docs/protobuf/gps_ephemeris.proto @@ -39,7 +39,7 @@ message GpsEphemeris { // GPS-specific parameters int32 code_on_L2 = 26; // If 1, P code ON in L2; if 2, C/A code ON in L2; bool L2_P_data_flag = 27; // When true, indicates that the NAV data stream was commanded OFF on the P-code of the L2 channel - int32 SV_accuracy = 28; // 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-200L) + int32 SV_accuracy = 28; // 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-200M) int32 SV_health = 29; // Satellite heath status double TGD = 30; // Estimated Group Delay Differential: L1-L2 correction term only for the benefit of "L1 P(Y)" or "L2 P(Y)" s users [s] int32 IODC = 31; // Issue of Data, Clock diff --git a/src/algorithms/PVT/libs/rinex_printer.cc b/src/algorithms/PVT/libs/rinex_printer.cc index e544ff2d3..cd876de3b 100644 --- a/src/algorithms/PVT/libs/rinex_printer.cc +++ b/src/algorithms/PVT/libs/rinex_printer.cc @@ -5083,7 +5083,7 @@ void Rinex_Printer::log_rinex_nav(std::fstream& out, const std::mapsecond.satelliteBlock.at(gps_ephemeris_iter->second.PRN) == "IIA") { - // Block II/IIA (Table 20-XI IS-GPS-200L ) + // Block II/IIA (Table 20-XI IS-GPS-200M) if ((gps_ephemeris_iter->second.IODC > 239) && (gps_ephemeris_iter->second.IODC < 248)) { curve_fit_interval = 8; @@ -5113,9 +5113,9 @@ void Rinex_Printer::log_rinex_nav(std::fstream& out, const std::mapsecond.satelliteBlock.at(gps_ephemeris_iter->second.PRN) == "IIR") || (gps_ephemeris_iter->second.satelliteBlock.at(gps_ephemeris_iter->second.PRN) == "IIR-M") || (gps_ephemeris_iter->second.satelliteBlock.at(gps_ephemeris_iter->second.PRN) == "IIF") || - (gps_ephemeris_iter->second.satelliteBlock.at(gps_ephemeris_iter->second.PRN) == "IIIA")) + (gps_ephemeris_iter->second.satelliteBlock.at(gps_ephemeris_iter->second.PRN) == "III")) { - // Block IIR/IIR-M/IIF/IIIA (Table 20-XII IS-GPS-200L ) + // Block IIR/IIR-M/IIF/III/IIIF (Table 20-XII IS-GPS-200M) if ((gps_ephemeris_iter->second.IODC > 239) && (gps_ephemeris_iter->second.IODC < 248)) { curve_fit_interval = 8; @@ -5202,7 +5202,7 @@ void Rinex_Printer::log_rinex_nav(std::fstream& out, const std::mapsecond.toe1 == gps_ephemeris_iter->second.toe2) && (gps_ephemeris_iter->second.toe1 == gps_ephemeris_iter->second.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, diff --git a/src/algorithms/libs/geofunctions.cc b/src/algorithms/libs/geofunctions.cc index 3183863aa..08df9095f 100644 --- a/src/algorithms/libs/geofunctions.cc +++ b/src/algorithms/libs/geofunctions.cc @@ -20,7 +20,7 @@ #include #include // for sin, cos, sqrt, abs, pow -const double STRP_PI = 3.1415926535898; // Pi as defined in IS-GPS-200L +const double STRP_PI = 3.1415926535898; // Pi as defined in IS-GPS-200M, 30.3.3.1.3 arma::mat Skew_symmetric(const arma::vec &a) { diff --git a/src/algorithms/libs/rtklib/rtklib_rtkcmn.cc b/src/algorithms/libs/rtklib/rtklib_rtkcmn.cc index b5304dcdb..53c1c47cd 100644 --- a/src/algorithms/libs/rtklib/rtklib_rtkcmn.cc +++ b/src/algorithms/libs/rtklib/rtklib_rtkcmn.cc @@ -1734,7 +1734,7 @@ double timediff(gtime_t t1, gtime_t t2) *-----------------------------------------------------------------------------*/ double timediffweekcrossover(gtime_t t1, gtime_t t2) { - // as stated in IS-GPS-200L table 20-IV footnote among other parts of the ICD, + // as stated in IS-GPS-200M 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 + 604800s double tk = difftime(t1.time, t2.time) + t1.sec - t2.sec; diff --git a/src/algorithms/libs/rtklib/rtklib_rtkcmn.h b/src/algorithms/libs/rtklib/rtklib_rtkcmn.h index 1ca972df5..ddf152a0d 100644 --- a/src/algorithms/libs/rtklib/rtklib_rtkcmn.h +++ b/src/algorithms/libs/rtklib/rtklib_rtkcmn.h @@ -29,8 +29,8 @@ * * * References : - * [1] IS-GPS-200L, Navstar GPS Space Segment/Navigation User Interfaces, - * 7 March, 2006 + * [1] IS-GPS-200M, Navstar GPS Space Segment/Navigation User Interfaces, + * May, 2021 * [2] RTCA/DO-229C, Minimum operational performanc standards for global * positioning system/wide area augmentation system airborne equipment, * RTCA inc, November 28, 2001 diff --git a/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_gs.cc b/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_gs.cc index bea2b3174..ca0b986ac 100644 --- a/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_gs.cc +++ b/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_gs.cc @@ -162,7 +162,7 @@ bool gps_l1_ca_telemetry_decoder_gs::gps_word_parityCheck(uint32_t gpsword) { // 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 - // check algorithm described in IS-GPS-200L. This avoids lengthy shift- + // check algorithm described in IS-GPS-200M. This avoids lengthy shift- // and-xor loops. const uint32_t d1 = gpsword & 0xFBFFBF00U; const uint32_t d2 = my_rotl::rotl(gpsword, 1U) & 0x07FFBF01U; diff --git a/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_gs.h b/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_gs.h index aabd96238..bb46e935a 100644 --- a/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_gs.h +++ b/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_gs.h @@ -47,7 +47,7 @@ gps_l1_ca_telemetry_decoder_gs_sptr gps_l1_ca_make_telemetry_decoder_gs( const Tlm_Conf &conf); /*! - * \brief This class implements a block that decodes the NAV data defined in IS-GPS-200L + * \brief This class implements a block that decodes the NAV data defined in IS-GPS-200M */ class gps_l1_ca_telemetry_decoder_gs : public gr::block { diff --git a/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l2c_telemetry_decoder_gs.h b/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l2c_telemetry_decoder_gs.h index a54e0a740..11cc984c4 100644 --- a/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l2c_telemetry_decoder_gs.h +++ b/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l2c_telemetry_decoder_gs.h @@ -48,7 +48,7 @@ gps_l2c_telemetry_decoder_gs_sptr gps_l2c_make_telemetry_decoder_gs( const Tlm_Conf &conf); /*! - * \brief This class implements a block that decodes CNAV data defined in IS-GPS-200L + * \brief This class implements a block that decodes CNAV data defined in IS-GPS-200M */ class gps_l2c_telemetry_decoder_gs : public gr::block { diff --git a/src/core/system_parameters/GLONASS_L1_L2_CA.h b/src/core/system_parameters/GLONASS_L1_L2_CA.h index c5fb7ce24..e893f7df7 100644 --- a/src/core/system_parameters/GLONASS_L1_L2_CA.h +++ b/src/core/system_parameters/GLONASS_L1_L2_CA.h @@ -240,7 +240,7 @@ const std::vector GLONASS_GNAV_CRC_P_INDEX{66, 67, 68, 69, 70, 71, 72, const std::vector 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 -// NAVIGATION MESSAGE FIELDS POSITIONS (from IS-GPS-200L Appendix II) +// NAVIGATION MESSAGE FIELDS POSITIONS // FRAME 1-4 // COMMON FIELDS diff --git a/src/core/system_parameters/GPS_CNAV.h b/src/core/system_parameters/GPS_CNAV.h index 38faabd24..7d6a41c27 100644 --- a/src/core/system_parameters/GPS_CNAV.h +++ b/src/core/system_parameters/GPS_CNAV.h @@ -30,7 +30,7 @@ // CNAV GPS NAVIGATION MESSAGE STRUCTURE -// NAVIGATION MESSAGE FIELDS POSITIONS (from IS-GPS-200L Appendix III) +// NAVIGATION MESSAGE FIELDS POSITIONS (from IS-GPS-200M Appendix III) constexpr int32_t GPS_CNAV_DATA_PAGE_BITS = 300; @@ -159,8 +159,8 @@ constexpr int32_t CNAV_DN_LSB = 1; const std::vector > CNAV_DELTA_TLSF({{218, 8}}); constexpr int32_t CNAV_DELTA_TLSF_LSB = 1; -constexpr double CNAV_A_REF = 26559710.0; // See IS-GPS-200L, pp. 161 -constexpr double CNAV_OMEGA_DOT_REF = -2.6e-9; // semicircles / s, see IS-GPS-200L pp. 160 +constexpr double CNAV_A_REF = 26559710.0; // [m] See IS-GPS-200M, Table 30-I. +constexpr double CNAV_OMEGA_DOT_REF = -2.6e-9; // [semicircles / s], see IS-GPS-200M, Table 30-I. // TODO: Add more frames (Almanac, etc...) diff --git a/src/core/system_parameters/GPS_L1_CA.h b/src/core/system_parameters/GPS_L1_CA.h index 9b0b73050..842dbbf3b 100644 --- a/src/core/system_parameters/GPS_L1_CA.h +++ b/src/core/system_parameters/GPS_L1_CA.h @@ -73,7 +73,7 @@ constexpr char GPS_CA_PREAMBLE[9] = "10001011"; constexpr char GPS_CA_PREAMBLE_SYMBOLS_STR[161] = "1111111111111111111100000000000000000000000000000000000000000000000000000000000011111111111111111111000000000000000000001111111111111111111111111111111111111111"; // GPS NAVIGATION MESSAGE STRUCTURE -// NAVIGATION MESSAGE FIELDS POSITIONS (from IS-GPS-200L Appendix II) +// NAVIGATION MESSAGE FIELDS POSITIONS (from IS-GPS-200M Appendix II) // SUBFRAME 1-5 (TLM and HOW) diff --git a/src/core/system_parameters/MATH_CONSTANTS.h b/src/core/system_parameters/MATH_CONSTANTS.h index 5f1cd98f1..937ab12b0 100644 --- a/src/core/system_parameters/MATH_CONSTANTS.h +++ b/src/core/system_parameters/MATH_CONSTANTS.h @@ -28,8 +28,8 @@ constexpr double SPEED_OF_LIGHT_M_S = 299792458.0; //!< Speed of light in constexpr double SPEED_OF_LIGHT_M_MS = 299792.4580; //!< Speed of light in vacuum [m/ms] // Physical constants for GPS -constexpr double GPS_GM = 3.986005e14; //!< Universal gravitational constant times the mass of the Earth, [m^3/s^2] IS-GPS-200L, pag 96 -constexpr double GPS_F = -4.442807633e-10; //!< Constant, [s/(m)^(1/2)], IS-GPS-200L, pag. 95 +constexpr double GPS_GM = 3.986005e14; //!< Universal gravitational constant times the mass of the Earth, [m^3/s^2] IS-GPS-200M, 20.3.3.3.3.1 +constexpr double GPS_F = -4.442807633e-10; //!< Constant, [s/(m)^(1/2)], IS-GPS-200M, 20.3.3.3.3.1 // Physical constants for Galileo constexpr double GALILEO_GM = 3.986004418e14; //!< Geocentric gravitational constant[m^3/s^2], OS SIS ICD v2.0, pag. 44 diff --git a/src/core/system_parameters/beidou_dnav_ephemeris.h b/src/core/system_parameters/beidou_dnav_ephemeris.h index f6b4cf92c..25810114c 100644 --- a/src/core/system_parameters/beidou_dnav_ephemeris.h +++ b/src/core/system_parameters/beidou_dnav_ephemeris.h @@ -44,7 +44,7 @@ public: */ Beidou_Dnav_Ephemeris(); - int 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-200L) + int SV_accuracy{}; //!< User Range Accuracy (URA) index of the SV (reference paragraph 5.2.4.5) for the standard positioning service user int SV_health{}; double TGD1{}; //!< Estimated Group Delay Differential on B1I [s] double TGD2{}; //!< Estimated Group Delay Differential on B2I [s] diff --git a/src/core/system_parameters/glonass_gnav_ephemeris.h b/src/core/system_parameters/glonass_gnav_ephemeris.h index 9a78cbab8..b2acdd048 100644 --- a/src/core/system_parameters/glonass_gnav_ephemeris.h +++ b/src/core/system_parameters/glonass_gnav_ephemeris.h @@ -90,7 +90,6 @@ public: /*! * \brief Sets (\a d_satClkDrift)and returns the clock drift in seconds according to the User Algorithm for SV Clock Correction - * (IS-GPS-200L, 20.3.3.3.3.1) */ double sv_clock_drift(double transmitTime, double timeCorrUTC); @@ -169,7 +168,6 @@ private: /* * Accounts for the beginning or end of week crossover * - * See paragraph 20.3.3.3.3.1 (IS-GPS-200L) * \param[in] - time in seconds * \param[out] - corrected time, in seconds */ diff --git a/src/core/system_parameters/gnss_ephemeris.h b/src/core/system_parameters/gnss_ephemeris.h index 352711c13..644f430d4 100644 --- a/src/core/system_parameters/gnss_ephemeris.h +++ b/src/core/system_parameters/gnss_ephemeris.h @@ -32,7 +32,7 @@ public: /*! * \brief Sets (\a satClkDrift) and (\a dtr), and returns the clock drift in * seconds according to the User Algorithm for SV Clock Correction - * (IS-GPS-200L, 20.3.3.3.3.1, and Galileo OS SIS ICD, 5.1.4). + * (IS-GPS-200M, 20.3.3.3.3.1, and Galileo OS SIS ICD, 5.1.4). */ double sv_clock_drift(double transmitTime); diff --git a/src/core/system_parameters/gps_almanac.h b/src/core/system_parameters/gps_almanac.h index 63511656d..c03278841 100644 --- a/src/core/system_parameters/gps_almanac.h +++ b/src/core/system_parameters/gps_almanac.h @@ -28,9 +28,9 @@ /*! - * \brief This class is a storage for the GPS SV ALMANAC data as described in IS-GPS-200L + * \brief This class is a storage for the GPS SV ALMANAC data as described in IS-GPS-200M * - * See https://www.gps.gov/technical/icwg/IS-GPS-200L.pdf Appendix II + * See https://www.gps.gov/technical/icwg/IS-GPS-200M.pdf Appendix II */ class Gps_Almanac : public Gnss_Almanac { diff --git a/src/core/system_parameters/gps_cnav_ephemeris.h b/src/core/system_parameters/gps_cnav_ephemeris.h index c426893a3..f26232285 100644 --- a/src/core/system_parameters/gps_cnav_ephemeris.h +++ b/src/core/system_parameters/gps_cnav_ephemeris.h @@ -30,9 +30,9 @@ /*! * \brief This is a storage class for the GPS CNAV ephemeris data as described - * in IS-GPS-200L + * in IS-GPS-200M * - * See https://www.gps.gov/technical/icwg/IS-GPS-200L.pdf Appendix III + * See https://www.gps.gov/technical/icwg/IS-GPS-200M.pdf Appendix III */ class Gps_CNAV_Ephemeris : public Gnss_Ephemeris { @@ -49,8 +49,8 @@ public: double Adot{}; //!< Change rate in semi-major axis double delta_ndot{}; //!< Rate of mean motion difference from computed value double delta_OMEGAdot{}; //!< Rate of Right Ascension difference [semi-circles/s] - int32_t toe1{}; //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200L) [s] - int32_t toe2{}; //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200L) [s] + int32_t toe1{}; //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200M) [s] + int32_t toe2{}; //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200M) [s] int32_t signal_health{}; //!< Signal health (L1/L2/L5) int32_t top{}; //!< Data predict time of week int32_t URA{}; //!< ED Accuracy Index diff --git a/src/core/system_parameters/gps_cnav_iono.h b/src/core/system_parameters/gps_cnav_iono.h index be4752f2b..7f669dff4 100644 --- a/src/core/system_parameters/gps_cnav_iono.h +++ b/src/core/system_parameters/gps_cnav_iono.h @@ -27,9 +27,9 @@ /*! - * \brief This class is a storage for the GPS IONOSPHERIC data as described in IS-GPS-200L + * \brief This class is a storage for the GPS IONOSPHERIC data as described in IS-GPS-200M * - * See https://www.gps.gov/technical/icwg/IS-GPS-200L.pdf Appendix III + * See https://www.gps.gov/technical/icwg/IS-GPS-200M.pdf Appendix III */ class Gps_CNAV_Iono : public Gps_Iono { diff --git a/src/core/system_parameters/gps_cnav_navigation_message.cc b/src/core/system_parameters/gps_cnav_navigation_message.cc index d1513191c..62268fb18 100644 --- a/src/core/system_parameters/gps_cnav_navigation_message.cc +++ b/src/core/system_parameters/gps_cnav_navigation_message.cc @@ -1,8 +1,8 @@ /*! * \file gps_cnav_navigation_message.cc - * \brief Implementation of a GPS CNAV Data message decoder as described in IS-GPS-200L + * \brief Implementation of a GPS CNAV Data message decoder as described in IS-GPS-200M * - * See https://www.gps.gov/technical/icwg/IS-GPS-200L.pdf Appendix III + * See https://www.gps.gov/technical/icwg/IS-GPS-200M.pdf Appendix III * \author Javier Arribas, 2015. jarribas(at)cttc.es * * ----------------------------------------------------------------------------- diff --git a/src/core/system_parameters/gps_cnav_navigation_message.h b/src/core/system_parameters/gps_cnav_navigation_message.h index 3c48fdc9e..aa8e52cc5 100644 --- a/src/core/system_parameters/gps_cnav_navigation_message.h +++ b/src/core/system_parameters/gps_cnav_navigation_message.h @@ -37,9 +37,9 @@ /*! - * \brief This class decodes a GPS CNAV Data message as described in IS-GPS-200L + * \brief This class decodes a GPS CNAV Data message as described in IS-GPS-200M * - * See https://www.gps.gov/technical/icwg/IS-GPS-200L.pdf Appendix III + * See https://www.gps.gov/technical/icwg/IS-GPS-200M.pdf Appendix III */ class Gps_CNAV_Navigation_Message { diff --git a/src/core/system_parameters/gps_cnav_utc_model.h b/src/core/system_parameters/gps_cnav_utc_model.h index f13f94f60..9c63289b0 100644 --- a/src/core/system_parameters/gps_cnav_utc_model.h +++ b/src/core/system_parameters/gps_cnav_utc_model.h @@ -27,9 +27,9 @@ /*! - * \brief This class is a storage for the GPS UTC MODEL data as described in in IS-GPS-200L + * \brief This class is a storage for the GPS UTC MODEL data as described in in IS-GPS-200M * - * See https://www.gps.gov/technical/icwg/IS-GPS-200L.pdf Appendix III + * See https://www.gps.gov/technical/icwg/IS-GPS-200M.pdf Appendix III */ class Gps_CNAV_Utc_Model : public Gps_Utc_Model { diff --git a/src/core/system_parameters/gps_ephemeris.cc b/src/core/system_parameters/gps_ephemeris.cc index 98acab373..6f1521495 100644 --- a/src/core/system_parameters/gps_ephemeris.cc +++ b/src/core/system_parameters/gps_ephemeris.cc @@ -2,7 +2,7 @@ * \file gps_ephemeris.cc * \brief Interface of a GPS EPHEMERIS storage and orbital model functions * - * See https://www.gps.gov/technical/icwg/IS-GPS-200L.pdf Appendix II + * See https://www.gps.gov/technical/icwg/IS-GPS-200M.pdf Appendix II * \author Javier Arribas, 2013. jarribas(at)cttc.es * * ----------------------------------------------------------------------------- diff --git a/src/core/system_parameters/gps_ephemeris.h b/src/core/system_parameters/gps_ephemeris.h index 3959c9c12..40cbf343a 100644 --- a/src/core/system_parameters/gps_ephemeris.h +++ b/src/core/system_parameters/gps_ephemeris.h @@ -33,9 +33,9 @@ /*! * \brief This class is a storage and orbital model functions for the GPS SV - * ephemeris data as described in IS-GPS-200L + * ephemeris data as described in IS-GPS-200M * - * See https://www.gps.gov/technical/icwg/IS-GPS-200L.pdf Appendix II + * See https://www.gps.gov/technical/icwg/IS-GPS-200M.pdf Appendix II */ class Gps_Ephemeris : public Gnss_Ephemeris { @@ -47,7 +47,7 @@ public: int32_t code_on_L2{}; //!< If 1, P code ON in L2; if 2, C/A code ON in L2; bool 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 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-200L) + int32_t 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-200M) int32_t SV_health{}; //!< Satellite heath status double 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 IODC{}; //!< Issue of Data, Clock diff --git a/src/core/system_parameters/gps_iono.h b/src/core/system_parameters/gps_iono.h index 1503cfb7d..5351c9d46 100644 --- a/src/core/system_parameters/gps_iono.h +++ b/src/core/system_parameters/gps_iono.h @@ -28,9 +28,9 @@ /*! - * \brief This class is a storage for the GPS IONOSPHERIC data as described in IS-GPS-200L + * \brief This class is a storage for the GPS IONOSPHERIC data as described in IS-GPS-200M * - * See https://www.gps.gov/technical/icwg/IS-GPS-200L.pdf Appendix II + * See https://www.gps.gov/technical/icwg/IS-GPS-200M.pdf Appendix II */ class Gps_Iono { diff --git a/src/core/system_parameters/gps_navigation_message.cc b/src/core/system_parameters/gps_navigation_message.cc index ad4f58fe2..4b5a86a95 100644 --- a/src/core/system_parameters/gps_navigation_message.cc +++ b/src/core/system_parameters/gps_navigation_message.cc @@ -1,9 +1,9 @@ /*! * \file gps_navigation_message.cc - * \brief Implementation of a GPS NAV Data message decoder as described in IS-GPS-200L + * \brief Implementation of a GPS NAV Data message decoder as described in IS-GPS-200M * \author Javier Arribas, 2011. jarribas(at)cttc.es * - * See https://www.gps.gov/technical/icwg/IS-GPS-200L.pdf Appendix II + * See https://www.gps.gov/technical/icwg/IS-GPS-200M.pdf Appendix II * * * ----------------------------------------------------------------------------- @@ -135,7 +135,7 @@ int32_t Gps_Navigation_Message::subframe_decoder(char* subframe) switch (subframe_ID) { // --- Decode the sub-frame id ----------------------------------------- - // ICD (IS-GPS-200L Appendix II). https://www.gps.gov/technical/icwg/IS-GPS-200L.pdf + // ICD (IS-GPS-200M Appendix II). https://www.gps.gov/technical/icwg/IS-GPS-200M.pdf case 1: // --- It is subframe 1 ------------------------------------- // Compute the time of week (TOW) of the first sub-frames in the array ==== @@ -233,7 +233,7 @@ int32_t Gps_Navigation_Message::subframe_decoder(char* subframe) b_antispoofing_flag = read_navigation_bool(subframe_bits, ANTI_SPOOFING_FLAG); SV_data_ID = static_cast(read_navigation_unsigned(subframe_bits, SV_DATA_ID)); SV_page = static_cast(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-200L, 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-200M) { //! \TODO read almanac if (SV_data_ID != 0) @@ -241,12 +241,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-200L, page 110) + if (SV_page == 52) // Page 13 (from Table 20-V. Data IDs and SV IDs in Subframes 4 and 5, IS-GPS-200M) { //! \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-200L, page 110) + if (SV_page == 56) // Page 18 (from Table 20-V. Data IDs and SV IDs in Subframes 4 and 5, IS-GPS-200M) { // Page 18 - Ionospheric and UTC data d_alpha0 = static_cast(read_navigation_signed(subframe_bits, ALPHA_0)); @@ -284,7 +284,7 @@ int32_t Gps_Navigation_Message::subframe_decoder(char* subframe) // Reserved } - if (SV_page == 63) // Page 25 (from Table 20-V. Data IDs and SV IDs in Subframes 4 and 5, IS-GPS-200L, page 110) + if (SV_page == 63) // Page 25 (from Table 20-V. Data IDs and SV IDs in Subframes 4 and 5, IS-GPS-200M) { // Page 25 Anti-Spoofing, SV config and almanac health (PRN: 25-32) //! \TODO Read Anti-Spoofing, SV config @@ -317,7 +317,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-200L, 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-200M) { i_Toa = static_cast(read_navigation_unsigned(subframe_bits, T_OA)); i_Toa = i_Toa * T_OA_LSB; diff --git a/src/core/system_parameters/gps_navigation_message.h b/src/core/system_parameters/gps_navigation_message.h index 278425738..efae816e8 100644 --- a/src/core/system_parameters/gps_navigation_message.h +++ b/src/core/system_parameters/gps_navigation_message.h @@ -38,9 +38,9 @@ /*! - * \brief This class decodes a GPS NAV Data message as described in IS-GPS-200L + * \brief This class decodes a GPS NAV Data message as described in IS-GPS-200M * - * See https://www.gps.gov/technical/icwg/IS-GPS-200L.pdf Appendix II + * See https://www.gps.gov/technical/icwg/IS-GPS-200M.pdf Appendix II */ class Gps_Navigation_Message { @@ -72,7 +72,7 @@ public: /*! * \brief Computes the Coordinated Universal Time (UTC) and - * returns it in [s] (IS-GPS-200L, 20.3.3.5.2.4) + * returns it in [s] (IS-GPS-200M, 20.3.3.5.2.4) */ double utc_time(const double gpstime_corrected) const; @@ -162,8 +162,8 @@ private: 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)] // broadcast orbit 3 - int32_t d_Toe{}; // Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200L) [s] - int32_t d_Toc{}; // clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200L) [s] + int32_t d_Toe{}; // Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200M) [s] + int32_t d_Toc{}; // clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200M) [s] 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_Cis{}; // Amplitude of the Sine Harmonic Correction Term to the Angle of Inclination [rad] @@ -178,7 +178,7 @@ private: 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 // 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-200L) + 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-200M) 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] int32_t d_IODC{}; // Issue of Data, Clock @@ -226,10 +226,10 @@ private: double d_beta3{}; // Coefficient 3 of a cubic equation representing the period of the model [s(semi-circle)^3] // UTC parameters - double d_A0{}; // Constant of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200L) [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-200L) [s/s] + double d_A0{}; // Constant of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200M) [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-200M) [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-200L) [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-200M) [s] 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 i_WN_LSF{}; // Week number at the end of which the leap second becomes effective [weeks] diff --git a/src/core/system_parameters/gps_utc_model.h b/src/core/system_parameters/gps_utc_model.h index 8cc77066a..098f11f46 100644 --- a/src/core/system_parameters/gps_utc_model.h +++ b/src/core/system_parameters/gps_utc_model.h @@ -28,9 +28,9 @@ /*! - * \brief This class is a storage for the GPS UTC MODEL data as described in IS-GPS-200L + * \brief This class is a storage for the GPS UTC MODEL data as described in IS-GPS-200M * - * See https://www.gps.gov/technical/icwg/IS-GPS-200L.pdf Appendix II + * See https://www.gps.gov/technical/icwg/IS-GPS-200M.pdf Appendix II */ class Gps_Utc_Model { @@ -41,10 +41,10 @@ public: Gps_Utc_Model() = default; // UTC parameters - double A0{}; //!< Constant of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200L) [s] - double A1{}; //!< 1st order term of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200L) [s/s] - double A2{}; //!< 2nd order term of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200L) [s/s] - int32_t tot{}; //!< Reference time for UTC data (reference 20.3.4.5 and 20.3.3.5.2.4 IS-GPS-200L) [s] + double A0{}; //!< Constant of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200M) [s] + double A1{}; //!< 1st order term of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200M) [s/s] + double A2{}; //!< 2nd order term of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200M) [s/s] + int32_t tot{}; //!< Reference time for UTC data (reference 20.3.4.5 and 20.3.3.5.2.4 IS-GPS-200M) [s] int32_t WN_T{}; //!< UTC reference week number [weeks] int32_t 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 WN_LSF{}; //!< Week number at the end of which the leap second becomes effective [weeks]