1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2025-01-16 20:23:02 +00:00

Merge remote-tracking branch 'cf/rinex-l2' into next

Add to the RINEX printer the ability to handle GPS CNAV messages and L2C observations
This commit is contained in:
Carles Fernandez 2016-10-30 10:30:00 +01:00
commit f816f4630c
6 changed files with 1895 additions and 664 deletions

File diff suppressed because it is too large Load Diff

View File

@ -59,8 +59,7 @@
#include <map>
#include <boost/date_time/posix_time/posix_time.hpp>
#include "gps_navigation_message.h"
#include "gps_utc_model.h"
#include "gps_iono.h"
#include "gps_cnav_navigation_message.h"
#include "galileo_navigation_message.h"
#include "sbas_telemetry_data.h"
#include "GPS_L1_CA.h"
@ -93,10 +92,15 @@ public:
std::fstream navMixFile ; //<! Output file stream for RINEX Mixed navigation data file
/*!
* \brief Generates the GPS Navigation Data header
* \brief Generates the GPS L1 C/A Navigation Data header
*/
void rinex_nav_header(std::fstream & out, const Gps_Iono & iono, const Gps_Utc_Model & utc_model);
/*!
* \brief Generates the GPS L2C(M) Navigation Data header
*/
void rinex_nav_header(std::fstream & out, const Gps_CNAV_Iono & iono, const Gps_CNAV_Utc_Model & utc_model);
/*!
* \brief Generates the Galileo Navigation Data header
*/
@ -112,6 +116,16 @@ public:
*/
void rinex_obs_header(std::fstream & out, const Gps_Ephemeris & eph, const double d_TOW_first_observation);
/*!
* \brief Generates the GPS L2 Observation data header
*/
void rinex_obs_header(std::fstream & out, const Gps_CNAV_Ephemeris & eph, const double d_TOW_first_observation);
/*!
* \brief Generates the dual frequency GPS L1 & L2 Observation data header
*/
void rinex_obs_header(std::fstream & out, const Gps_Ephemeris & eph, const Gps_CNAV_Ephemeris & eph_cnav, const double d_TOW_first_observation);
/*!
* \brief Generates the Galileo Observation data header
*/
@ -137,16 +151,26 @@ public:
*/
boost::posix_time::ptime compute_GPS_time(const Gps_Ephemeris & eph, const double obs_time);
/*!
* \brief Computes the GPS time and returns a boost::posix_time::ptime object
*/
boost::posix_time::ptime compute_GPS_time(const Gps_CNAV_Ephemeris & eph, const double obs_time);
/*!
* \brief Computes the Galileo time and returns a boost::posix_time::ptime object
*/
boost::posix_time::ptime compute_Galileo_time(const Galileo_Ephemeris & eph, const double obs_time);
/*!
* \brief Writes data from the GPS navigation message into the RINEX file
* \brief Writes data from the GPS L1 C/A navigation message into the RINEX file
*/
void log_rinex_nav(std::fstream & out, const std::map<int, Gps_Ephemeris> & eph_map);
/*!
* \brief Writes data from the GPS L2 navigation message into the RINEX file
*/
void log_rinex_nav(std::fstream & out, const std::map<int, Gps_CNAV_Ephemeris> & eph_map);
/*!
* \brief Writes data from the Galileo navigation message into the RINEX file
*/
@ -158,17 +182,27 @@ public:
void log_rinex_nav(std::fstream & out, const std::map<int, Gps_Ephemeris> & gps_eph_map, const std::map<int, Galileo_Ephemeris> & galileo_eph_map);
/*!
* \brief Writes GPS observables into the RINEX file
* \brief Writes GPS L1 observables into the RINEX file
*/
void log_rinex_obs(std::fstream & out, const Gps_Ephemeris & eph, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges);
/*!
* \brief Writes GPS L2 observables into the RINEX file
*/
void log_rinex_obs(std::fstream & out, const Gps_CNAV_Ephemeris & eph, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges);
/*!
* \brief Writes dual frequency GPS L1 and L2 observables into the RINEX file
*/
void log_rinex_obs(std::fstream & out, const Gps_Ephemeris & eph, const Gps_CNAV_Ephemeris & eph_cnav, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges);
/*!
* \brief Writes Galileo observables into the RINEX file
*/
void log_rinex_obs(std::fstream & out, const Galileo_Ephemeris & eph, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges);
/*!
* \brief Writes Galileo observables into the RINEX file
* \brief Writes Mixed GPS / Galileo observables into the RINEX file
*/
void log_rinex_obs(std::fstream & out, const Gps_Ephemeris & gps_eph, const Galileo_Ephemeris & galileo_eph, const double gps_obs_time, const std::map<int, Gnss_Synchro> & pseudoranges);
@ -184,12 +218,16 @@ public:
void update_nav_header(std::fstream & out, const Gps_Utc_Model & gps_utc, const Gps_Iono & gps_iono);
void update_nav_header(std::fstream & out, const Gps_CNAV_Utc_Model & utc_model, const Gps_CNAV_Iono & iono);
void update_nav_header(std::fstream & out, const Gps_Iono & gps_iono, const Gps_Utc_Model & gps_utc_model, const Galileo_Iono & galileo_iono, const Galileo_Utc_Model & galileo_utc_model, const Galileo_Almanac& galileo_almanac);
void update_nav_header(std::fstream & out, const Galileo_Iono & galileo_iono, const Galileo_Utc_Model & utc_model, const Galileo_Almanac & galileo_almanac);
void update_obs_header(std::fstream & out, const Gps_Utc_Model & utc_model);
void update_obs_header(std::fstream & out, const Gps_CNAV_Utc_Model & utc_model);
void update_obs_header(std::fstream & out, const Galileo_Utc_Model & galileo_utc_model);
std::map<std::string,std::string> satelliteSystem; //<! GPS, GLONASS, SBAS payload, Galileo or Compass

View File

@ -37,9 +37,9 @@
/*!
* \brief This class is a storage and orbital model functions for the GPS SV ephemeris data as described in IS-GPS-200E
* \brief This class is a storage and orbital model functions for the GPS SV ephemeris data as described in IS-GPS-200H
*
* See http://www.gps.gov/technical/icwg/IS-GPS-200E.pdf Appendix II
* See http://www.gps.gov/technical/icwg/IS-GPS-200H.pdf Appendix III
*/
class Gps_CNAV_Ephemeris
{

View File

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

View File

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

View File

@ -37,18 +37,18 @@
/*!
* \brief This class is a storage for the GPS UTC MODEL data as described in IS-GPS-200E
* \brief This class is a storage for the GPS UTC MODEL data as described in in IS-GPS-200H
*
* See http://www.gps.gov/technical/icwg/IS-GPS-200E.pdf Appendix II
* See http://www.gps.gov/technical/icwg/IS-GPS-200H.pdf Appendix III
*/
class Gps_CNAV_Utc_Model
{
public:
bool valid;
// UTC parameters
double d_A1; //!< 1st order term of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200E) [s/s]
double d_A0; //!< Constant of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200E) [s]
double d_t_OT; //!< Reference time for UTC data (reference 20.3.4.5 and 20.3.3.5.2.4 IS-GPS-200E) [s]
double d_A1; //!< 1st order term of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200H) [s/s]
double d_A0; //!< Constant of a model that relates GPS and UTC time (ref. 20.3.3.5.2.4 IS-GPS-200H) [s]
double d_t_OT; //!< Reference time for UTC data (reference 20.3.4.5 and 20.3.3.5.2.4 IS-GPS-200H) [s]
int i_WN_T; //!< UTC reference week number [weeks]
double d_DeltaT_LS; //!< delta time due to leap seconds [s]. Number of leap seconds since 6-Jan-1980 as transmitted by the GPS almanac.
int i_WN_LSF; //!< Week number at the end of which the leap second becomes effective [weeks]