mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2025-11-07 10:43:58 +00:00
Update references to new GPS ICDs
This commit is contained in:
@@ -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
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user