1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2025-01-29 02:14:51 +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 <map>
#include <boost/date_time/posix_time/posix_time.hpp> #include <boost/date_time/posix_time/posix_time.hpp>
#include "gps_navigation_message.h" #include "gps_navigation_message.h"
#include "gps_utc_model.h" #include "gps_cnav_navigation_message.h"
#include "gps_iono.h"
#include "galileo_navigation_message.h" #include "galileo_navigation_message.h"
#include "sbas_telemetry_data.h" #include "sbas_telemetry_data.h"
#include "GPS_L1_CA.h" #include "GPS_L1_CA.h"
@ -93,10 +92,15 @@ public:
std::fstream navMixFile ; //<! Output file stream for RINEX Mixed navigation data file 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); 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 * \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); 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 * \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); 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 * \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); 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); 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 * \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); 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); 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 * \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); 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); 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_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 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_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_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); 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 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 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 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 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 class Gps_CNAV_Utc_Model
{ {
public: public:
bool valid; bool valid;
// UTC parameters // 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_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-200E) [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-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-200H) [s]
int i_WN_T; //!< UTC reference week number [weeks] 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. 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] int i_WN_LSF; //!< Week number at the end of which the leap second becomes effective [weeks]