2018-06-15 02:19:32 +00:00
/*!
2019-02-17 12:36:33 +00:00
* \ file beidou_dnav_ephemeris . h
2018-06-15 02:19:32 +00:00
* \ brief Interface of a BEIDOU EPHEMERIS storage
* \ author Sergi Segura , 2018. sergi . segura . munoz ( at ) gmail . com
*
2020-07-28 14:57:15 +00:00
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2018-06-15 02:19:32 +00:00
*
2020-12-30 12:35:06 +00:00
* GNSS - SDR is a Global Navigation Satellite System software - defined receiver .
2018-06-15 02:19:32 +00:00
* This file is part of GNSS - SDR .
*
2020-12-30 12:35:06 +00:00
* Copyright ( C ) 2010 - 2020 ( see AUTHORS file for a list of contributors )
2020-02-08 00:20:02 +00:00
* SPDX - License - Identifier : GPL - 3.0 - or - later
2018-06-15 02:19:32 +00:00
*
2020-07-28 14:57:15 +00:00
* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2018-06-15 02:19:32 +00:00
*/
2020-02-08 09:10:46 +00:00
# ifndef GNSS_SDR_BEIDOU_DNAV_EPHEMERIS_H
# define GNSS_SDR_BEIDOU_DNAV_EPHEMERIS_H
2018-06-15 02:19:32 +00:00
2021-02-20 23:01:56 +00:00
# include "gnss_ephemeris.h"
2018-06-15 02:19:32 +00:00
# include <boost/serialization/nvp.hpp>
2019-01-28 01:29:43 +00:00
# include <map>
# include <string>
2018-06-15 02:19:32 +00:00
2020-11-01 12:37:19 +00:00
/** \addtogroup Core
* \ { */
/** \addtogroup System_Parameters
* \ { */
2018-06-15 02:19:32 +00:00
/*!
2021-02-20 23:01:56 +00:00
* \ brief This is a storage class for the Beidou SV ephemeris data as described in
2020-01-25 12:07:03 +00:00
* BeiDou Navigation Satellite System Signal In Space Interface Control Document
* Open Service Signal B1I ( Version 3.0 )
2018-06-15 02:19:32 +00:00
*
2020-01-25 12:07:03 +00:00
* See http : //en.beidou.gov.cn/SYSTEMS/Officialdocument/201902/P020190227601370045731.pdf
2018-06-15 02:19:32 +00:00
*/
2021-02-20 23:01:56 +00:00
class Beidou_Dnav_Ephemeris : public Gnss_Ephemeris
2018-06-15 02:19:32 +00:00
{
2019-07-01 21:44:42 +00:00
public :
/*!
* Default constructor
2018-06-15 02:19:32 +00:00
*/
2019-07-01 21:44:42 +00:00
Beidou_Dnav_Ephemeris ( ) ;
2019-01-28 01:29:43 +00:00
2021-07-24 11:47:52 +00:00
int SV_accuracy { } ; //!< User Range Accuracy (URA) index of the SV (reference paragraph 5.2.4.5) for the standard positioning service user
2021-02-20 23:01:56 +00:00
int SV_health { } ;
2021-02-21 09:56:56 +00:00
double TGD1 { } ; //!< Estimated Group Delay Differential on B1I [s]
double TGD2 { } ; //!< Estimated Group Delay Differential on B2I [s]
2021-02-21 11:15:38 +00:00
double AODC { } ; //!< Age of Data, Clock
double AODE { } ; //!< Age of Data, Ephemeris
int AODO { } ; //!< Age of Data Offset (AODO) term for the navigation message correction table (NMCT) contained in subframe 4 (reference paragraph 20.3.3.5.1.9) [s]
2020-06-10 08:15:59 +00:00
2021-02-21 09:56:56 +00:00
int sig_type { } ; //!< BDS: data source (0:unknown,1:B1I,2:B1Q,3:B2I,4:B2Q,5:B3I,6:B3Q) */
int nav_type { } ; //!< BDS: nav type (0:unknown,1:IGSO/MEO,2:GEO) */
2020-06-10 08:15:59 +00:00
2021-02-21 09:56:56 +00:00
bool fit_interval_flag { } ; //!< Curve-fit interval used by the CS (Block II/IIA/IIR/IIR-M/IIF) and SS (Block IIIA) in determining the ephemeris parameters, as follows: 0 = 4 hours, 1 = greater than 4 hours.
double spare1 { } ;
double spare2 { } ;
2020-06-10 08:15:59 +00:00
2018-06-15 02:19:32 +00:00
/*! \brief If true, enhanced level of integrity assurance.
*
2021-02-20 23:01:56 +00:00
* If false , indicates that the conveying signal is provided with the
* legacy level of integrity assurance . That is , the probability that the
* instantaneous URE of the conveying signal exceeds 4.42 times the upper
* bound value of the current broadcast URA index , for more than 5.2
* seconds , without an accompanying alert , is less than 1E-5 per hour . If
* true , indicates that the conveying signal is provided with an enhanced
* level of integrity assurance . That is , the probability that the
* instantaneous URE of the conveying signal exceeds 5.73 times the upper
* bound value of the current broadcast URA index , for more than 5.2
* seconds , without an accompanying alert , is less than 1E-8 per hour .
2018-06-15 02:19:32 +00:00
*/
2021-02-21 09:56:56 +00:00
bool integrity_status_flag { } ;
bool alert_flag { } ; //!< If true, indicates that the SV URA may be worse than indicated in d_SV_accuracy, use that SV at our own risk.
bool antispoofing_flag { } ; //!< If true, the AntiSpoofing mode is ON in that SV
2018-06-15 02:19:32 +00:00
2020-02-05 20:24:46 +00:00
std : : map < int , std : : string > satelliteBlock ; //!< Map that stores to which block the PRN belongs
2018-06-15 02:19:32 +00:00
2019-01-28 01:29:43 +00:00
template < class Archive >
2018-06-15 02:19:32 +00:00
/*!
2021-02-20 23:01:56 +00:00
* \ brief Serialize is a boost standard method to be called by the boost XML
* serialization . Here is used to save the ephemeris data on disk file .
2018-06-15 02:19:32 +00:00
*/
void serialize ( Archive & archive , const unsigned int version )
{
using boost : : serialization : : make_nvp ;
2019-01-28 01:29:43 +00:00
if ( version )
{
} ;
2021-02-20 23:01:56 +00:00
archive & BOOST_SERIALIZATION_NVP ( PRN ) ;
archive & BOOST_SERIALIZATION_NVP ( M_0 ) ;
archive & BOOST_SERIALIZATION_NVP ( delta_n ) ;
archive & BOOST_SERIALIZATION_NVP ( ecc ) ;
archive & BOOST_SERIALIZATION_NVP ( sqrtA ) ;
archive & BOOST_SERIALIZATION_NVP ( OMEGA_0 ) ;
archive & BOOST_SERIALIZATION_NVP ( i_0 ) ;
archive & BOOST_SERIALIZATION_NVP ( omega ) ;
archive & BOOST_SERIALIZATION_NVP ( OMEGAdot ) ;
archive & BOOST_SERIALIZATION_NVP ( idot ) ;
archive & BOOST_SERIALIZATION_NVP ( Cuc ) ;
archive & BOOST_SERIALIZATION_NVP ( Cus ) ;
archive & BOOST_SERIALIZATION_NVP ( Crc ) ;
archive & BOOST_SERIALIZATION_NVP ( Crs ) ;
archive & BOOST_SERIALIZATION_NVP ( Cic ) ;
archive & BOOST_SERIALIZATION_NVP ( Cis ) ;
archive & BOOST_SERIALIZATION_NVP ( toe ) ;
archive & BOOST_SERIALIZATION_NVP ( toc ) ;
archive & BOOST_SERIALIZATION_NVP ( af0 ) ;
archive & BOOST_SERIALIZATION_NVP ( af1 ) ;
archive & BOOST_SERIALIZATION_NVP ( af2 ) ;
archive & BOOST_SERIALIZATION_NVP ( WN ) ;
archive & BOOST_SERIALIZATION_NVP ( tow ) ;
archive & BOOST_SERIALIZATION_NVP ( satClkDrift ) ;
archive & BOOST_SERIALIZATION_NVP ( dtr ) ;
2021-02-21 09:56:56 +00:00
archive & BOOST_SERIALIZATION_NVP ( AODE ) ;
2021-02-20 23:01:56 +00:00
archive & BOOST_SERIALIZATION_NVP ( SV_accuracy ) ;
archive & BOOST_SERIALIZATION_NVP ( SV_health ) ;
2021-02-21 09:56:56 +00:00
archive & BOOST_SERIALIZATION_NVP ( AODC ) ;
archive & BOOST_SERIALIZATION_NVP ( TGD1 ) ;
archive & BOOST_SERIALIZATION_NVP ( TGD2 ) ;
archive & BOOST_SERIALIZATION_NVP ( sig_type ) ;
archive & BOOST_SERIALIZATION_NVP ( nav_type ) ;
2021-02-20 23:01:56 +00:00
archive & BOOST_SERIALIZATION_NVP ( AODO ) ;
2021-02-21 09:56:56 +00:00
archive & BOOST_SERIALIZATION_NVP ( fit_interval_flag ) ;
archive & BOOST_SERIALIZATION_NVP ( spare1 ) ;
archive & BOOST_SERIALIZATION_NVP ( spare2 ) ;
archive & BOOST_SERIALIZATION_NVP ( integrity_status_flag ) ;
archive & BOOST_SERIALIZATION_NVP ( alert_flag ) ;
archive & BOOST_SERIALIZATION_NVP ( antispoofing_flag ) ;
2018-06-15 02:19:32 +00:00
}
} ;
2020-11-01 12:37:19 +00:00
/** \} */
/** \} */
# endif // GNSS_SDR_BEIDOU_DNAV_EPHEMERIS_H