mirror of
				https://github.com/gnss-sdr/gnss-sdr
				synced 2025-10-31 07:13:03 +00:00 
			
		
		
		
	Update references to new GPS ICDs
This commit is contained in:
		| @@ -12,9 +12,9 @@ | ||||
| All the current GPS Interface Control Documents can be downloaded from <a href="https://www.gps.gov" target="_blank">GPS.gov</a>, the official U.S. Government webpage for GPS. | ||||
|  | ||||
|  | ||||
| \li GPS L1 and L2C: Global Positioning System Directorate, <a href="https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf" target="_blank"><b>Interface Specification IS-GPS-200 Revision K</b></a>. March, 2019. | ||||
| \li GPS L1C (available with first Block III launch): Global Positioning System Directorate, <a href="https://www.gps.gov/technical/icwg/IS-GPS-800F.pdf" target="_blank"><b>Interface Specification IS-GPS-800 Revision F</b></a>. March, 2019. | ||||
| \li GPS L5 (first Block IIF satellite launched on May, 2010): Global Positioning System Directorate, <a href="https://www.gps.gov/technical/icwg/IS-GPS-705F.pdf" target="_blank"><b>Interface Specification IS-GPS-705 Revision F</b></a>. March, 2019. | ||||
| \li GPS L1 and L2C: Global Positioning System Directorate, <a href="https://www.gps.gov/technical/icwg/IS-GPS-200L.pdf" target="_blank"><b>Interface Specification IS-GPS-200 Revision L</b></a>. May, 2020. | ||||
| \li GPS L1C (available with first Block III launch): Global Positioning System Directorate, <a href="https://www.gps.gov/technical/icwg/IS-GPS-800G.pdf" target="_blank"><b>Interface Specification IS-GPS-800 Revision G</b></a>. May, 2020. | ||||
| \li GPS L5 (first Block IIF satellite launched on May, 2010): Global Positioning System Directorate, <a href="https://www.gps.gov/technical/icwg/IS-GPS-705G.pdf" target="_blank"><b>Interface Specification IS-GPS-705 Revision G</b></a>. May, 2020. | ||||
|  | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -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 <b>GPS L1</b>. Defined at <a href="https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf" target="_blank"><b>Interface Specification IS-GPS-200 Revision K</b></a>, this band is centered at \f$f_{\text{GPS L1}}=1575.42\f$ MHz.  The complex baseband transmitted signal can be written as | ||||
| \li <b>GPS L1</b>. Defined at <a href="https://www.gps.gov/technical/icwg/IS-GPS-200L.pdf" target="_blank"><b>Interface Specification IS-GPS-200 Revision L</b></a>, 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 <a href="https://www.gps.gov/technical/icwg/IS-GPS-800F.pdf" target="_blank"><b>Interface Specification IS-GPS-800 Revision F</b></a>, | ||||
|   is worthwhile to mention that there is a new civilian-use signal planned, called L1C and defined at <a href="https://www.gps.gov/technical/icwg/IS-GPS-800G.pdf" target="_blank"><b>Interface Specification IS-GPS-800 Revision G</b></a>, | ||||
|   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. | ||||
|  | ||||
|  | ||||
| \li <b>GPS L2C</b>. Defined at <a href="https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf" target="_blank"><b>Interface Specification IS-GPS-200 Revision K</b></a>, is only available on | ||||
| \li <b>GPS L2C</b>. Defined at <a href="https://www.gps.gov/technical/icwg/IS-GPS-200L.pdf" target="_blank"><b>Interface Specification IS-GPS-200 Revision L</b></a>, 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 <b>GPS L5</b>. The GPS L5 link, defined at <a href="https://www.gps.gov/technical/icwg/IS-GPS-705F.pdf" target="_blank"><b>Interface Specification IS-GPS-705 Revision F</b></a>, is only available | ||||
| \li <b>GPS L5</b>. The GPS L5 link, defined at <a href="https://www.gps.gov/technical/icwg/IS-GPS-705G.pdf" target="_blank"><b>Interface Specification IS-GPS-705 Revision G</b></a>, 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)~, | ||||
|   | ||||
| @@ -5103,7 +5103,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") | ||||
|                 { | ||||
|                     // Block II/IIA (Table 20-XI IS-GPS-200K ) | ||||
|                     // Block II/IIA (Table 20-XI IS-GPS-200L ) | ||||
|                     if ((gps_ephemeris_iter->second.d_IODC > 239) && (gps_ephemeris_iter->second.d_IODC < 248)) | ||||
|                         { | ||||
|                             curve_fit_interval = 8; | ||||
| @@ -5135,7 +5135,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) == "IIIA")) | ||||
|                 { | ||||
|                     // Block IIR/IIR-M/IIF/IIIA (Table 20-XII IS-GPS-200K ) | ||||
|                     // Block IIR/IIR-M/IIF/IIIA (Table 20-XII IS-GPS-200L ) | ||||
|                     if ((gps_ephemeris_iter->second.d_IODC > 239) && (gps_ephemeris_iter->second.d_IODC < 248)) | ||||
|                         { | ||||
|                             curve_fit_interval = 8; | ||||
| @@ -5222,7 +5222,7 @@ void Rinex_Printer::log_rinex_nav(std::fstream& out, const std::map<int32_t, Gps | ||||
|             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. | ||||
|             // Whenever these three terms do not match, a data set cutover has occurred and new data must be collected. | ||||
|             // See IS-GPS-200K, p. 155 | ||||
|             // See IS-GPS-200L, 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 | ||||
|                 { | ||||
|                     // Toe1: Toe in message type 10,  Toe2: Toe in message type 11, | ||||
| @@ -5252,7 +5252,7 @@ void Rinex_Printer::log_rinex_nav(std::fstream& out, const std::map<int32_t, Gps | ||||
|             line += std::string(1, ' '); | ||||
|             line += Rinex_Printer::doub2for(gps_ephemeris_iter->second.d_Cus, 18, 2); | ||||
|             line += std::string(1, ' '); | ||||
|             const double A_REF = 26559710.0;  // See IS-GPS-200K,  pp. 163 | ||||
|             const double A_REF = 26559710.0;  // See IS-GPS-200L,  pp. 161 | ||||
|             double sqrt_A = sqrt(A_REF + gps_ephemeris_iter->second.d_DELTA_A); | ||||
|             line += Rinex_Printer::doub2for(sqrt_A, 18, 2); | ||||
|             Rinex_Printer::lengthCheck(line); | ||||
| @@ -5280,7 +5280,7 @@ void Rinex_Printer::log_rinex_nav(std::fstream& out, const std::map<int32_t, Gps | ||||
|             line += std::string(1, ' '); | ||||
|             line += Rinex_Printer::doub2for(gps_ephemeris_iter->second.d_OMEGA, 18, 2); | ||||
|             line += std::string(1, ' '); | ||||
|             const double OMEGA_DOT_REF = -2.6e-9;  // semicircles / s, see IS-GPS-200K pp. 164 | ||||
|             const double OMEGA_DOT_REF = -2.6e-9;  // semicircles / s, see IS-GPS-200L pp. 160 | ||||
|             double OMEGA_DOT_aux = OMEGA_DOT_REF + gps_ephemeris_iter->second.d_DELTA_OMEGA_DOT; | ||||
|             line += Rinex_Printer::doub2for(OMEGA_DOT_aux, 18, 2); | ||||
|             Rinex_Printer::lengthCheck(line); | ||||
|   | ||||
| @@ -20,7 +20,7 @@ | ||||
| #include <array> | ||||
| #include <cmath>  // for sin, cos, sqrt, abs, pow | ||||
|  | ||||
| const double STRP_PI = 3.1415926535898;  // Pi as defined in IS-GPS-200K | ||||
| const double STRP_PI = 3.1415926535898;  // Pi as defined in IS-GPS-200L | ||||
|  | ||||
| arma::mat Skew_symmetric(const arma::vec &a) | ||||
| { | ||||
|   | ||||
| @@ -354,13 +354,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, | ||||
|         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; | ||||
|     const double A_REF = 26559710.0;  // See IS-GPS-200K,  pp. 170 | ||||
|     const double A_REF = 26559710.0;  // See IS-GPS-200L,  pp. 161 | ||||
|     rtklib_sat.A = A_REF + gps_cnav_eph.d_DELTA_A; | ||||
|     rtklib_sat.M0 = gps_cnav_eph.d_M_0; | ||||
|     rtklib_sat.deln = gps_cnav_eph.d_Delta_n; | ||||
|     rtklib_sat.OMG0 = gps_cnav_eph.d_OMEGA0; | ||||
|     // Compute the angle between the ascending node and the Greenwich meridian | ||||
|     const double OMEGA_DOT_REF = -2.6e-9;  // semicircles / s, see IS-GPS-200K pp. 164 | ||||
|     const double OMEGA_DOT_REF = -2.6e-9;  // semicircles / s, see IS-GPS-200L pp. 160 | ||||
|     double d_OMEGA_DOT = OMEGA_DOT_REF * GNSS_PI + gps_cnav_eph.d_DELTA_OMEGA_DOT; | ||||
|     rtklib_sat.OMGd = d_OMEGA_DOT; | ||||
|     rtklib_sat.omg = gps_cnav_eph.d_OMEGA; | ||||
|   | ||||
| @@ -1727,7 +1727,7 @@ double timediff(gtime_t t1, gtime_t t2) | ||||
|  *-----------------------------------------------------------------------------*/ | ||||
| double timediffweekcrossover(gtime_t t1, gtime_t t2) | ||||
| { | ||||
|     // as stated in IS-GPS-200K table 20-IV footnote among other parts of the ICD, | ||||
|     // as stated in IS-GPS-200L 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; | ||||
|   | ||||
| @@ -29,7 +29,7 @@ | ||||
|  * | ||||
|  * | ||||
|  * References : | ||||
|  *     [1] IS-GPS-200K, Navstar GPS Space Segment/Navigation User Interfaces, | ||||
|  *     [1] IS-GPS-200L, Navstar GPS Space Segment/Navigation User Interfaces, | ||||
|  *         7 March, 2006 | ||||
|  *     [2] RTCA/DO-229C, Minimum operational performanc standards for global | ||||
|  *         positioning system/wide area augmentation system airborne equipment, | ||||
|   | ||||
| @@ -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-200K.  This avoids lengthy shift- | ||||
|     //   check algorithm described in IS-GPS-200L.  This avoids lengthy shift- | ||||
|     //   and-xor loops. | ||||
|     const uint32_t d1 = gpsword & 0xFBFFBF00U; | ||||
|     const uint32_t d2 = my_rotl::rotl(gpsword, 1U) & 0x07FFBF01U; | ||||
|   | ||||
| @@ -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-200K | ||||
|  * \brief This class implements a block that decodes the NAV data defined in IS-GPS-200L | ||||
|  */ | ||||
| class gps_l1_ca_telemetry_decoder_gs : public gr::block | ||||
| { | ||||
|   | ||||
| @@ -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-200K | ||||
|  * \brief This class implements a block that decodes CNAV data defined in IS-GPS-200L | ||||
|  */ | ||||
| class gps_l2c_telemetry_decoder_gs : public gr::block | ||||
| { | ||||
|   | ||||
| @@ -240,7 +240,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}; | ||||
|  | ||||
| // GLONASS GNAV NAVIGATION MESSAGE STRUCTURE | ||||
| // NAVIGATION MESSAGE FIELDS POSITIONS (from IS-GPS-200K Appendix II) | ||||
| // NAVIGATION MESSAGE FIELDS POSITIONS (from IS-GPS-200L Appendix II) | ||||
|  | ||||
| // FRAME 1-4 | ||||
| // COMMON FIELDS | ||||
|   | ||||
| @@ -30,7 +30,7 @@ | ||||
|  | ||||
|  | ||||
| // CNAV GPS NAVIGATION MESSAGE STRUCTURE | ||||
| // NAVIGATION MESSAGE FIELDS POSITIONS (from IS-GPS-200K Appendix III) | ||||
| // NAVIGATION MESSAGE FIELDS POSITIONS (from IS-GPS-200L Appendix III) | ||||
|  | ||||
| constexpr int32_t GPS_CNAV_DATA_PAGE_BITS = 300; | ||||
|  | ||||
|   | ||||
| @@ -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-200K Appendix II) | ||||
| // NAVIGATION MESSAGE FIELDS POSITIONS (from IS-GPS-200L Appendix II) | ||||
|  | ||||
| // SUBFRAME 1-5 (TLM and HOW) | ||||
|  | ||||
|   | ||||
| @@ -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-200K, pag 92 | ||||
| constexpr double GPS_F = -4.442807633e-10;  //!< Constant, [s/(m)^(1/2)], IS-GPS-200K, pag. 92 | ||||
| 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 | ||||
|  | ||||
| // Physical constants for Galileo | ||||
| constexpr double GALILEO_GM = 3.986004418e14;   //!< Geocentric gravitational constant[m^3/s^2], OS SIS ICD v2.0, pag. 44 | ||||
|   | ||||
| @@ -45,20 +45,20 @@ public: | ||||
|  | ||||
|     /*! | ||||
|      * \brief Compute the ECEF SV coordinates and ECEF velocity | ||||
|      * Implementation of Table 20-IV (IS-GPS-200K) | ||||
|      * Implementation of Table 20-IV (IS-GPS-200L) | ||||
|      * and compute the clock bias term including relativistic effect (return value) | ||||
|      */ | ||||
|     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 | ||||
|      *  (IS-GPS-200K,  20.3.3.3.3.1) | ||||
|      *  (IS-GPS-200L,  20.3.3.3.3.1) | ||||
|      */ | ||||
|     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 | ||||
|      *  (IS-GPS-200K,  20.3.3.3.3.1) | ||||
|      *  (IS-GPS-200L,  20.3.3.3.3.1) | ||||
|      */ | ||||
|     double sv_clock_relativistic_term(double transmitTime); | ||||
|  | ||||
| @@ -71,8 +71,8 @@ public: | ||||
|     double d_eccentricity{};         //!< Eccentricity [dimensionless] | ||||
|     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_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-200K) [s] | ||||
|     double d_Toe{};                  //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200L) [s] | ||||
|     double d_Toc{};                  //!< clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200L) [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] | ||||
| @@ -82,7 +82,7 @@ public: | ||||
|     double d_OMEGA_DOT{};            //!< Rate of Right Ascension [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_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_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 i_SV_health{}; | ||||
|     double d_TGD1{};  //!< Estimated Group Delay Differential on B1I [s] | ||||
|     double d_TGD2{};  //!< Estimated Group Delay Differential on B2I [s] | ||||
| @@ -154,8 +154,8 @@ public: | ||||
|         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_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-200K) [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_Toe", d_Toe);                      //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200L) [s] | ||||
|         archive& make_nvp("d_Toc", d_Toe);                      //!< clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200L) [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_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] | ||||
| @@ -165,7 +165,7 @@ public: | ||||
|         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("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-200K) | ||||
|         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-200L) | ||||
|         archive& make_nvp("i_SV_health", i_SV_health); | ||||
|         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] | ||||
| @@ -189,7 +189,7 @@ private: | ||||
|     /* | ||||
|      * Accounts for the beginning or end of week crossover | ||||
|      * | ||||
|      * See paragraph 20.3.3.3.3.1 (IS-GPS-200K) | ||||
|      * See paragraph 20.3.3.3.3.1 (IS-GPS-200L) | ||||
|      * \param[in]  -  time in seconds | ||||
|      * \param[out] -  corrected time, in seconds | ||||
|      */ | ||||
|   | ||||
| @@ -90,7 +90,7 @@ public: | ||||
|  | ||||
|     /*! | ||||
|      * \brief Sets (\a d_satClkDrift)and returns the clock drift in seconds according to the User Algorithm for SV Clock Correction | ||||
|      *  (IS-GPS-200K,  20.3.3.3.3.1) | ||||
|      *  (IS-GPS-200L,  20.3.3.3.3.1) | ||||
|      */ | ||||
|     double sv_clock_drift(double transmitTime, double timeCorrUTC); | ||||
|  | ||||
| @@ -169,7 +169,7 @@ private: | ||||
|     /* | ||||
|      * Accounts for the beginning or end of week crossover | ||||
|      * | ||||
|      * See paragraph 20.3.3.3.3.1 (IS-GPS-200K) | ||||
|      * See paragraph 20.3.3.3.3.1 (IS-GPS-200L) | ||||
|      * \param[in]  -  time in seconds | ||||
|      * \param[out] -  corrected time, in seconds | ||||
|      */ | ||||
|   | ||||
| @@ -28,9 +28,9 @@ | ||||
|  | ||||
|  | ||||
| /*! | ||||
|  * \brief This class is a storage for the GPS SV ALMANAC data as described in IS-GPS-200K | ||||
|  * \brief This class is a storage for the GPS SV ALMANAC data as described in IS-GPS-200L | ||||
|  * | ||||
|  * See https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf Appendix II | ||||
|  * See https://www.gps.gov/technical/icwg/IS-GPS-200L.pdf Appendix II | ||||
|  */ | ||||
| class Gps_Almanac | ||||
| { | ||||
| @@ -42,7 +42,7 @@ public: | ||||
|  | ||||
|     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) | ||||
|     int32_t i_Toa{};             //!< Almanac data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200K) [s] | ||||
|     int32_t i_Toa{};             //!< Almanac data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200L) [s] | ||||
|     int32_t i_WNa{};             //!< Almanac week number | ||||
|     double d_M_0{};              //!< Mean Anomaly at Reference Time [semi-circles] | ||||
|     double d_e_eccentricity{};   //!< Eccentricity [dimensionless] | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
|  * \file gps_cnav_ephemeris.cc | ||||
|  * \brief  Interface of a GPS CNAV EPHEMERIS storage and orbital model functions | ||||
|  * | ||||
|  * See https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf Appendix III | ||||
|  * See https://www.gps.gov/technical/icwg/IS-GPS-200L.pdf Appendix III | ||||
|  * \author Javier Arribas, 2015. jarribas(at)cttc.es | ||||
|  * | ||||
|  * ----------------------------------------------------------------------------- | ||||
| @@ -53,7 +53,7 @@ double Gps_CNAV_Ephemeris::sv_clock_drift(double transmitTime) | ||||
| // compute the relativistic correction term | ||||
| double Gps_CNAV_Ephemeris::sv_clock_relativistic_term(double transmitTime) | ||||
| { | ||||
|     const double A_REF = 26559710.0;  // See IS-GPS-200K,  pp. 163 | ||||
|     const double A_REF = 26559710.0;  // See IS-GPS-200L,  pp. 161 | ||||
|     const double d_sqrt_A = sqrt(A_REF + d_DELTA_A); | ||||
|  | ||||
|     // Restore semi-major axis | ||||
| @@ -100,8 +100,8 @@ double Gps_CNAV_Ephemeris::sv_clock_relativistic_term(double transmitTime) | ||||
|  | ||||
| double Gps_CNAV_Ephemeris::satellitePosition(double transmitTime) | ||||
| { | ||||
|     const double A_REF = 26559710.0;       // See IS-GPS-200K,  pp. 170 | ||||
|     const double OMEGA_DOT_REF = -2.6e-9;  // semicircles / s, see IS-GPS-200K pp. 164 | ||||
|     const double A_REF = 26559710.0;       // See IS-GPS-200L,  pp. 161 | ||||
|     const double OMEGA_DOT_REF = -2.6e-9;  // semicircles / s, see IS-GPS-200L pp. 160 | ||||
|  | ||||
|     const double d_sqrt_A = sqrt(A_REF + d_DELTA_A); | ||||
|  | ||||
|   | ||||
| @@ -28,9 +28,9 @@ | ||||
|  | ||||
|  | ||||
| /*! | ||||
|  * \brief This class is a storage and orbital model functions for the GPS SV ephemeris data as described in IS-GPS-200K | ||||
|  * \brief This class is a storage and orbital model functions for the GPS SV ephemeris data as described in IS-GPS-200L | ||||
|  * | ||||
|  * See https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf Appendix III | ||||
|  * See https://www.gps.gov/technical/icwg/IS-GPS-200L.pdf Appendix III | ||||
|  */ | ||||
| class Gps_CNAV_Ephemeris | ||||
| { | ||||
| @@ -42,19 +42,19 @@ public: | ||||
|  | ||||
|     /*! | ||||
|      * \brief Compute the ECEF SV coordinates and ECEF velocity | ||||
|      * Implementation of Table 20-IV (IS-GPS-200K) | ||||
|      * Implementation of Table 20-IV (IS-GPS-200L) | ||||
|      */ | ||||
|     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 | ||||
|      *  (IS-GPS-200K,  20.3.3.3.3.1) | ||||
|      *  (IS-GPS-200L,  20.3.3.3.3.1) | ||||
|      */ | ||||
|     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 | ||||
|      *  (IS-GPS-200K,  20.3.3.3.3.1) | ||||
|      *  (IS-GPS-200L,  20.3.3.3.3.1) | ||||
|      */ | ||||
|     double sv_clock_relativistic_term(double transmitTime); | ||||
|  | ||||
| @@ -73,8 +73,8 @@ public: | ||||
|     double d_e_eccentricity{};   //!< Eccentricity | ||||
|     double d_OMEGA{};            //!< Argument of Perigee [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-200K) [s] | ||||
|     int32_t d_Toe2{};            //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200K) [s] | ||||
|     int32_t d_Toe1{};            //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200L) [s] | ||||
|     int32_t d_Toe2{};            //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200L) [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_IDOT{};             //!< Rate of Inclination Angle [semi-circles/s] | ||||
| @@ -86,7 +86,7 @@ public: | ||||
|     double d_Cuc{};              //!< Amplitude of the Cosine Harmonic Correction Term to the Argument of Latitude [rad] | ||||
|  | ||||
|     // Clock Correction and Accuracy Parameters | ||||
|     int32_t d_Toc{};  //!< clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200K) [s] | ||||
|     int32_t d_Toc{};  //!< clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200L) [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_f2{};  //!< Coefficient 2 of code phase offset model [s/s^2] | ||||
| @@ -152,9 +152,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_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_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-200K) [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_Toe1", d_Toe1);                      //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200L) [s] | ||||
|         archive& make_nvp("d_Toe2", d_Toe2);                      //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200L) [s] | ||||
|         archive& make_nvp("d_Toc", d_Toc);                        //!< clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200L) [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_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] | ||||
|   | ||||
| @@ -28,9 +28,9 @@ | ||||
|  | ||||
|  | ||||
| /*! | ||||
|  * \brief This class is a storage for the GPS IONOSPHERIC data as described in IS-GPS-200K | ||||
|  * \brief This class is a storage for the GPS IONOSPHERIC data as described in IS-GPS-200L | ||||
|  * | ||||
|  * See https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf Appendix III | ||||
|  * See https://www.gps.gov/technical/icwg/IS-GPS-200L.pdf Appendix III | ||||
|  */ | ||||
| class Gps_CNAV_Iono | ||||
| { | ||||
|   | ||||
| @@ -1,8 +1,8 @@ | ||||
| /*! | ||||
|  * \file gps_cnav_navigation_message.cc | ||||
|  * \brief Implementation of a GPS CNAV Data message decoder as described in IS-GPS-200K | ||||
|  * \brief Implementation of a GPS CNAV Data message decoder as described in IS-GPS-200L | ||||
|  * | ||||
|  * See https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf Appendix III | ||||
|  * See https://www.gps.gov/technical/icwg/IS-GPS-200L.pdf Appendix III | ||||
|  * \author Javier Arribas, 2015. jarribas(at)cttc.es | ||||
|  * | ||||
|  * ----------------------------------------------------------------------------- | ||||
|   | ||||
| @@ -37,9 +37,9 @@ | ||||
|  | ||||
|  | ||||
| /*! | ||||
|  * \brief This class decodes a GPS CNAV Data message as described in IS-GPS-200K | ||||
|  * \brief This class decodes a GPS CNAV Data message as described in IS-GPS-200L | ||||
|  * | ||||
|  * See https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf Appendix III | ||||
|  * See https://www.gps.gov/technical/icwg/IS-GPS-200L.pdf Appendix III | ||||
|  */ | ||||
| class Gps_CNAV_Navigation_Message | ||||
| { | ||||
|   | ||||
| @@ -28,9 +28,9 @@ | ||||
|  | ||||
|  | ||||
| /*! | ||||
|  * \brief This class is a storage for the GPS UTC MODEL data as described in in IS-GPS-200K | ||||
|  * \brief This class is a storage for the GPS UTC MODEL data as described in in IS-GPS-200L | ||||
|  * | ||||
|  * See https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf Appendix III | ||||
|  * See https://www.gps.gov/technical/icwg/IS-GPS-200L.pdf Appendix III | ||||
|  */ | ||||
| class Gps_CNAV_Utc_Model | ||||
| { | ||||
| @@ -41,10 +41,10 @@ public: | ||||
|     Gps_CNAV_Utc_Model() = default; | ||||
|  | ||||
|     // 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-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-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-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-200K) [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-200L) [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-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-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-200L) [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] | ||||
|   | ||||
| @@ -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-200K.pdf Appendix II | ||||
|  * See https://www.gps.gov/technical/icwg/IS-GPS-200L.pdf Appendix II | ||||
|  * \author Javier Arribas, 2013. jarribas(at)cttc.es | ||||
|  * | ||||
|  * ----------------------------------------------------------------------------- | ||||
|   | ||||
| @@ -31,9 +31,9 @@ | ||||
|  | ||||
|  | ||||
| /*! | ||||
|  * \brief This class is a storage and orbital model functions for the GPS SV ephemeris data as described in IS-GPS-200K | ||||
|  * \brief This class is a storage and orbital model functions for the GPS SV ephemeris data as described in IS-GPS-200L | ||||
|  * | ||||
|  * See https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf Appendix II | ||||
|  * See https://www.gps.gov/technical/icwg/IS-GPS-200L.pdf Appendix II | ||||
|  */ | ||||
| class Gps_Ephemeris | ||||
| { | ||||
| @@ -45,20 +45,20 @@ public: | ||||
|  | ||||
|     /*! | ||||
|      * \brief Compute the ECEF SV coordinates and ECEF velocity | ||||
|      * Implementation of Table 20-IV (IS-GPS-200K) | ||||
|      * Implementation of Table 20-IV (IS-GPS-200L) | ||||
|      * and compute the clock bias term including relativistic effect (return value) | ||||
|      */ | ||||
|     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 | ||||
|      *  (IS-GPS-200K,  20.3.3.3.3.1) | ||||
|      *  (IS-GPS-200L,  20.3.3.3.3.1) | ||||
|      */ | ||||
|     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 | ||||
|      *  (IS-GPS-200K,  20.3.3.3.3.1) | ||||
|      *  (IS-GPS-200L,  20.3.3.3.3.1) | ||||
|      */ | ||||
|     double sv_clock_relativistic_term(double transmitTime); | ||||
|  | ||||
| @@ -71,8 +71,8 @@ public: | ||||
|     double d_e_eccentricity{};   //!< Eccentricity [dimensionless] | ||||
|     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)] | ||||
|     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-200K) [s] | ||||
|     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] | ||||
|     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] | ||||
| @@ -84,7 +84,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_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 | ||||
|     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_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_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 | ||||
| @@ -155,8 +155,8 @@ public: | ||||
|         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_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-200K) [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_Toe", d_Toe);                        //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200L) [s] | ||||
|         archive& make_nvp("d_Toc", d_Toc);                        //!< clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200L) [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_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] | ||||
| @@ -168,7 +168,7 @@ 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_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("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_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-200L) | ||||
|         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_IODC", d_IODC);  //!< Issue of Data, Clock | ||||
| @@ -191,7 +191,7 @@ private: | ||||
|     /* | ||||
|      * Accounts for the beginning or end of week crossover | ||||
|      * | ||||
|      * See paragraph 20.3.3.3.3.1 (IS-GPS-200K) | ||||
|      * See paragraph 20.3.3.3.3.1 (IS-GPS-200L) | ||||
|      * \param[in]  -  time in seconds | ||||
|      * \param[out] -  corrected time, in seconds | ||||
|      */ | ||||
|   | ||||
| @@ -28,9 +28,9 @@ | ||||
|  | ||||
|  | ||||
| /*! | ||||
|  * \brief This class is a storage for the GPS IONOSPHERIC data as described in IS-GPS-200K | ||||
|  * \brief This class is a storage for the GPS IONOSPHERIC data as described in IS-GPS-200L | ||||
|  * | ||||
|  * See https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf Appendix II | ||||
|  * See https://www.gps.gov/technical/icwg/IS-GPS-200L.pdf Appendix II | ||||
|  */ | ||||
| class Gps_Iono | ||||
| { | ||||
|   | ||||
| @@ -3,7 +3,7 @@ | ||||
|  * \brief  Implementation of a GPS NAV Data message decoder as described in IS-GPS-200K | ||||
|  * \author Javier Arribas, 2011. jarribas(at)cttc.es | ||||
|  * | ||||
|  * See https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf Appendix II | ||||
|  * See https://www.gps.gov/technical/icwg/IS-GPS-200L.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-200K Appendix II). https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf | ||||
|         // ICD (IS-GPS-200K Appendix II). https://www.gps.gov/technical/icwg/IS-GPS-200L.pdf | ||||
|         case 1: | ||||
|             // --- It is subframe 1 ------------------------------------- | ||||
|             // Compute the time of week (TOW) of the first sub-frames in the array ==== | ||||
|   | ||||
| @@ -38,9 +38,9 @@ | ||||
|  | ||||
|  | ||||
| /*! | ||||
|  * \brief This class decodes a GPS NAV Data message as described in IS-GPS-200K | ||||
|  * \brief This class decodes a GPS NAV Data message as described in IS-GPS-200L | ||||
|  * | ||||
|  * See https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf Appendix II | ||||
|  * See https://www.gps.gov/technical/icwg/IS-GPS-200L.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-200K, 20.3.3.5.2.4) | ||||
|      * returns it in [s] (IS-GPS-200L, 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-200K) [s] | ||||
|     int32_t d_Toc{};    // clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200K) [s] | ||||
|     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] | ||||
|     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-200K) | ||||
|     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_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-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-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-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] | ||||
|  | ||||
|     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 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 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] | ||||
|   | ||||
| @@ -28,9 +28,9 @@ | ||||
|  | ||||
|  | ||||
| /*! | ||||
|  * \brief This class is a storage for the GPS UTC MODEL data as described in IS-GPS-200K | ||||
|  * \brief This class is a storage for the GPS UTC MODEL data as described in IS-GPS-200L | ||||
|  * | ||||
|  * See https://www.gps.gov/technical/icwg/IS-GPS-200K.pdf Appendix II | ||||
|  * See https://www.gps.gov/technical/icwg/IS-GPS-200L.pdf Appendix II | ||||
|  */ | ||||
| class Gps_Utc_Model | ||||
| { | ||||
| @@ -41,10 +41,10 @@ public: | ||||
|     Gps_Utc_Model() = default; | ||||
|  | ||||
|     // UTC parameters | ||||
|     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-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-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-200K) [s] | ||||
|     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_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 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 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] | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Carles Fernandez
					Carles Fernandez