[hamradio-commits] [gnss-sdr] 117/251: Merge branch 'next' of git+ssh://github.com/gnss-sdr/gnss-sdr into next

Carles Fernandez carles_fernandez-guest at moszumanska.debian.org
Wed Sep 2 00:22:41 UTC 2015


This is an automated email from the git hooks/post-receive script.

carles_fernandez-guest pushed a commit to branch master
in repository gnss-sdr.

commit fb45d31eed11b96f914a23f4d4a6311a7570e77e
Merge: 644af36 61c7ab8
Author: Carles Fernandez <carles.fernandez at gmail.com>
Date:   Fri May 22 18:30:21 2015 +0200

    Merge branch 'next' of git+ssh://github.com/gnss-sdr/gnss-sdr into next
    
    # Please enter a commit message to explain why this merge is necessary,
    # especially if it merges an updated upstream into a topic branch.
    #
    # Lines starting with '#' will be ignored, and an empty message aborts
    # the commit.

 src/algorithms/channel/libs/channel_fsm.cc         |   2 +-
 .../gnuradio_blocks/rtl_tcp_signal_source_c.cc     |   2 +-
 .../gps_l2_m_dll_pll_tracking_cc.cc                |  12 +-
 .../gnuradio_blocks/gps_l2_m_dll_pll_tracking_cc.h |   1 -
 src/core/system_parameters/CMakeLists.txt          |   1 +
 src/core/system_parameters/GPS_L2C.h               | 130 +++++++++++++++
 src/core/system_parameters/MATH_CONSTANTS.h        |   5 +
 src/core/system_parameters/gps_cnav_ephemeris.cc   |  76 +++++++++
 src/core/system_parameters/gps_cnav_ephemeris.h    | 174 +++++++++++++++++++++
 9 files changed, 394 insertions(+), 9 deletions(-)

diff --cc src/algorithms/channel/libs/channel_fsm.cc
index 7abb010,0000000..6d208b6
mode 100644,000000..100644
--- a/src/algorithms/channel/libs/channel_fsm.cc
+++ b/src/algorithms/channel/libs/channel_fsm.cc
@@@ -1,222 -1,0 +1,222 @@@
 +/*!
 + * \file channel_fsm.cc
 + * \brief Implementation of a State Machine for channel using boost::statechart
 + * \author Luis Esteve, 2011. luis(at)epsilon-formacion.com
 + *
 + * -------------------------------------------------------------------------
 + *
 + * Copyright (C) 2010-2015  (see AUTHORS file for a list of contributors)
 + *
 + * GNSS-SDR is a software defined Global Navigation
 + *          Satellite Systems receiver
 + *
 + * This file is part of GNSS-SDR.
 + *
 + * GNSS-SDR is free software: you can redistribute it and/or modify
 + * it under the terms of the GNU General Public License as published by
 + * the Free Software Foundation, either version 3 of the License, or
 + * (at your option) any later version.
 + *
 + * GNSS-SDR is distributed in the hope that it will be useful,
 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 + * GNU General Public License for more details.
 + *
 + * You should have received a copy of the GNU General Public License
 + * along with GNSS-SDR. If not, see <http://www.gnu.org/licenses/>.
 + *
 + * -------------------------------------------------------------------------
 + */
 +
 +#include "channel_fsm.h"
 +#include <list>
 +#include <memory>
 +#include <glog/logging.h>
 +#include "control_message_factory.h"
 +#include "channel.h"
 +
 +
 +struct Ev_channel_start_acquisition: sc::event<Ev_channel_start_acquisition>
 +{};
 +
 +struct Ev_channel_valid_acquisition: sc::event<Ev_channel_valid_acquisition>
 +{};
 +
 +struct Ev_channel_failed_acquisition_repeat: sc::event<Ev_channel_failed_acquisition_repeat>
 +{};
 +
 +struct Ev_channel_failed_acquisition_no_repeat: sc::event<Ev_channel_failed_acquisition_no_repeat>
 +{};
 +
 +struct Ev_channel_failed_tracking_standby: sc::event<Ev_channel_failed_tracking_standby>
 +{};
 +
 +//struct Ev_channel_failed_tracking_reacq: sc::event<Ev_channel_failed_tracking_reacq>
 +//{};
 +
 +struct channel_idle_fsm_S0: public sc::state<channel_idle_fsm_S0, ChannelFsm>
 +{
 +public:
 +    // sc::transition(event, next state)
 +    typedef sc::transition<Ev_channel_start_acquisition, channel_acquiring_fsm_S1> reactions;
 +    channel_idle_fsm_S0(my_context ctx) : my_base(ctx)
 +    {
 +        //std::cout << "Enter Channel_Idle_S0 " << std::endl;
 +    }
 +};
 +
 +
 +struct channel_acquiring_fsm_S1: public sc::state<channel_acquiring_fsm_S1, ChannelFsm>
 +{
 +public:
 +    typedef mpl::list<sc::transition<Ev_channel_failed_acquisition_no_repeat, channel_waiting_fsm_S3>,
 +                      sc::transition<Ev_channel_failed_acquisition_repeat, channel_acquiring_fsm_S1>,
 +                      sc::transition<Ev_channel_valid_acquisition, channel_tracking_fsm_S2> > reactions;
 +
 +    channel_acquiring_fsm_S1(my_context ctx) : my_base(ctx)
 +    {
 +        //std::cout << "Enter Channel_Acq_S1 " << std::endl;
 +        context<ChannelFsm> ().start_acquisition();
 +    }
 +};
 +
 +
 +struct channel_tracking_fsm_S2: public sc::state<channel_tracking_fsm_S2, ChannelFsm>
 +{
 +public:
 +    typedef mpl::list<sc::transition<Ev_channel_failed_tracking_standby, channel_idle_fsm_S0>,
 +                      sc::transition<Ev_channel_start_acquisition, channel_acquiring_fsm_S1>> reactions;
 +
 +    channel_tracking_fsm_S2(my_context ctx) : my_base(ctx)
 +    {
 +        //std::cout << "Enter Channel_tracking_S2 " << std::endl;
 +        context<ChannelFsm> ().start_tracking();
 +    }
 +
 +};
 +
 +
 +struct channel_waiting_fsm_S3: public sc::state<channel_waiting_fsm_S3, ChannelFsm>
 +{
 +public:
 +    typedef sc::transition<Ev_channel_start_acquisition,
 +            channel_acquiring_fsm_S1> reactions;
 +
 +    channel_waiting_fsm_S3(my_context ctx) :
 +        my_base(ctx)
 +    {
 +        //std::cout << "Enter Channel_waiting_S3 " << std::endl;
 +        context<ChannelFsm> ().request_satellite();
 +    }
-     ~channel_waiting_fsm_S3(){}
++   // ~channel_waiting_fsm_S3(){}
 +};
 +
 +
 +
 +ChannelFsm::ChannelFsm()
 +{
 +    acq_ = nullptr;
 +    trk_ = nullptr;
 +    channel_ = 0;
 +    initiate(); //start the FSM
 +}
 +
 +
 +
 +ChannelFsm::ChannelFsm(AcquisitionInterface *acquisition) :
 +	        acq_(acquisition)
 +{
 +    trk_ = nullptr;
 +    channel_ = 0;
 +    initiate(); //start the FSM
 +}
 +
 +
 +
 +void ChannelFsm::Event_start_acquisition()
 +{
 +    this->process_event(Ev_channel_start_acquisition());
 +}
 +
 +
 +void ChannelFsm::Event_valid_acquisition()
 +{
 +    this->process_event(Ev_channel_valid_acquisition());
 +}
 +
 +
 +void ChannelFsm::Event_failed_acquisition_repeat()
 +{
 +    this->process_event(Ev_channel_failed_acquisition_repeat());
 +}
 +
 +void ChannelFsm::Event_failed_acquisition_no_repeat()
 +{
 +    this->process_event(Ev_channel_failed_acquisition_no_repeat());
 +}
 +
 +
 +// Something is wrong here, we are using a memory after it ts freed
 +void ChannelFsm::Event_failed_tracking_standby()
 +{
 +    this->process_event(Ev_channel_failed_tracking_standby());
 +}
 +
 +//void ChannelFsm::Event_failed_tracking_reacq() {
 +//	this->process_event(Ev_channel_failed_tracking_reacq());
 +//}
 +
 +void ChannelFsm::set_acquisition(AcquisitionInterface *acquisition)
 +{
 +    acq_ = acquisition;
 +}
 +
 +void ChannelFsm::set_tracking(TrackingInterface *tracking)
 +{
 +    trk_ = tracking;
 +}
 +
 +void ChannelFsm::set_queue(boost::shared_ptr<gr::msg_queue> queue)
 +{
 +    queue_ = queue;
 +}
 +
 +void ChannelFsm::set_channel(unsigned int channel)
 +{
 +    channel_ = channel;
 +}
 +
 +void ChannelFsm::start_acquisition()
 +{
 +    acq_->reset();
 +}
 +
 +void ChannelFsm::start_tracking()
 +{
 +    //LOG_AT_LEVEL(INFO) << "Channel " << channel_
 +    //<< " passing prn code phase " << acq_->prn_code_phase();
 +    //LOG_AT_LEVEL(INFO) << "Channel " << channel_
 +    //<< " passing doppler freq shift " << acq_->doppler_freq_shift();
 +    //LOG_AT_LEVEL(INFO) << "Channel " << channel_
 +    //<< " passing acquisition sample stamp "
 +    //<< acq_->get_sample_stamp();
 +    //trk_->set_prn_code_phase(acq_->prn_code_phase());
 +    //trk_->set_doppler_freq_shift(acq_->doppler_freq_shift());
 +    //trk_->set_acq_sample_stamp(acq_->get_sample_stamp());
 +    trk_->start_tracking();
 +    std::unique_ptr<ControlMessageFactory> cmf(new ControlMessageFactory());
 +    if (queue_ != gr::msg_queue::make())
 +        {
 +            queue_->handle(cmf->GetQueueMessage(channel_, 1));
 +        }
 +}
 +
 +void ChannelFsm::request_satellite()
 +{
 +    std::unique_ptr<ControlMessageFactory> cmf(new ControlMessageFactory());
 +    if (queue_ != gr::msg_queue::make())
 +        {
 +            queue_->handle(cmf->GetQueueMessage(channel_, 0));
 +        }
 +}
 +
diff --cc src/algorithms/signal_source/gnuradio_blocks/rtl_tcp_signal_source_c.cc
index 381e079,381e079..567b8df
--- a/src/algorithms/signal_source/gnuradio_blocks/rtl_tcp_signal_source_c.cc
+++ b/src/algorithms/signal_source/gnuradio_blocks/rtl_tcp_signal_source_c.cc
@@@ -300,7 -300,7 +300,7 @@@ rtl_tcp_signal_source_c::handle_read (c
            while (!not_full( )) {
              // uh-oh, buffer overflow
              // wait until there's space for more
--            not_empty_.notify_one ();
++            not_empty_.notify_one (); // needed?
              not_full_.wait (lock,
                              boost::bind (&rtl_tcp_signal_source_c::not_full,
                                           this));
diff --cc src/core/system_parameters/gps_cnav_ephemeris.cc
index 0000000,c791d4f..6b231f0
mode 000000,100644..100644
--- a/src/core/system_parameters/gps_cnav_ephemeris.cc
+++ b/src/core/system_parameters/gps_cnav_ephemeris.cc
@@@ -1,0 -1,115 +1,76 @@@
+ /*!
 - * \file Gps_CNAV_Ephemeris.cc
++ * \file gps_cnav_ephemeris.cc
+  * \brief  Interface of a GPS CNAV EPHEMERIS storage and orbital model functions
+  *
+  * See http://www.gps.gov/technical/icwg/IS-GPS-200E.pdf Appendix II
+  * \author Javier Arribas, 2015. jarribas(at)cttc.es
+  *
+  * -------------------------------------------------------------------------
+  *
+  * Copyright (C) 2010-2015  (see AUTHORS file for a list of contributors)
+  *
+  * GNSS-SDR is a software defined Global Navigation
+  *          Satellite Systems receiver
+  *
+  * This file is part of GNSS-SDR.
+  *
+  * GNSS-SDR is free software: you can redistribute it and/or modify
+  * it under the terms of the GNU General Public License as published by
+  * the Free Software Foundation, either version 3 of the License, or
+  * (at your option) any later version.
+  *
+  * GNSS-SDR is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  * GNU General Public License for more details.
+  *
+  * You should have received a copy of the GNU General Public License
+  * along with GNSS-SDR. If not, see <http://www.gnu.org/licenses/>.
+  *
+  * -------------------------------------------------------------------------
+  */
+ 
+ #include "gps_cnav_ephemeris.h"
+ 
+ Gps_CNAV_Ephemeris::Gps_CNAV_Ephemeris()
+ {
+     i_satellite_PRN = 0;
+ 
+     d_TOW = 0;
+     d_Crs = 0;
+     d_M_0 = 0;
+     d_Cuc = 0;
+     d_e_eccentricity = 0;
+     d_Cus = 0;
+ 
+     d_Toe = 0;
+     d_Toc = 0;
+     d_Cic = 0;
+     d_OMEGA0 = 0;
+     d_Cis = 0;
+     d_i_0 = 0;
+     d_Crc = 0;
+     d_OMEGA = 0;
+     d_IDOT = 0;
+ 
+     i_GPS_week = 0;
+ 
+     d_TGD = 0;            // Estimated Group Delay Differential: L1-L2 correction term only for the benefit of "L1 P(Y)" or "L2 P(Y)" s users [s]
+ 
+     d_A_f0 = 0;          // Coefficient 0 of code phase offset model [s]
+     d_A_f1 = 0;          // Coefficient 1 of code phase offset model [s/s]
+     d_A_f2 = 0;          // Coefficient 2 of code phase offset model [s/s^2]
+ 
+     b_integrity_status_flag = false;
+     b_alert_flag = false;         // If true, indicates  that the SV URA may be worse than indicated in d_SV_accuracy, use that SV at our own risk.
+     b_antispoofing_flag = false;  //  If true, the AntiSpoofing mode is ON in that SV
+ 
 -    //Plane A (info from http://www.navcen.uscg.gov/?Do=constellationStatus)
 -    satelliteBlock[9] = "IIA";
 -    satelliteBlock[31] = "IIR-M";
 -    satelliteBlock[8] = "IIA";
 -    satelliteBlock[7] = "IIR-M";
 -    satelliteBlock[27] = "IIA";
 -    //Plane B
 -    satelliteBlock[16] = "IIR";
 -    satelliteBlock[25] = "IIF";
 -    satelliteBlock[28] = "IIR";
 -    satelliteBlock[12] = "IIR-M";
 -    satelliteBlock[30] = "IIA";
 -    //Plane C
 -    satelliteBlock[29] = "IIR-M";
 -    satelliteBlock[3] = "IIA";
 -    satelliteBlock[19] = "IIR";
 -    satelliteBlock[17] = "IIR-M";
 -    satelliteBlock[6] = "IIA";
 -    //Plane D
 -    satelliteBlock[2] = "IIR";
 -    satelliteBlock[1] = "IIF";
 -    satelliteBlock[21] = "IIR";
 -    satelliteBlock[4] = "IIA";
 -    satelliteBlock[11] = "IIR";
 -    satelliteBlock[24] = "IIA"; // Decommissioned from active service on 04 Nov 2011
 -    //Plane E
 -    satelliteBlock[20] = "IIR";
 -    satelliteBlock[22] = "IIR";
 -    satelliteBlock[5] = "IIR-M";
 -    satelliteBlock[18] = "IIR";
 -    satelliteBlock[32] = "IIA";
 -    satelliteBlock[10] = "IIA";
 -    //Plane F
 -    satelliteBlock[14] = "IIR";
 -    satelliteBlock[15] = "IIR-M";
 -    satelliteBlock[13] = "IIR";
 -    satelliteBlock[23] = "IIR";
 -    satelliteBlock[26] = "IIA";
 -
+     d_satClkDrift = 0.0;
+     d_dtr = 0.0;
+     d_satpos_X = 0.0;
+     d_satpos_Y = 0.0;
+     d_satpos_Z = 0.0;
+     d_satvel_X = 0.0;
+     d_satvel_Y = 0.0;
+     d_satvel_Z = 0.0;
+ }
diff --cc src/core/system_parameters/gps_cnav_ephemeris.h
index 0000000,a570209..fc0def4
mode 000000,100644..100644
--- a/src/core/system_parameters/gps_cnav_ephemeris.h
+++ b/src/core/system_parameters/gps_cnav_ephemeris.h
@@@ -1,0 -1,179 +1,174 @@@
+ /*!
 - * \file Gps_CNAV_Ephemeris.h
 - * \brief  Interface of a GPS EPHEMERIS storage
 - * \author Javier Arribas, 2013. jarribas(at)cttc.es
++ * \file gps_cnav_ephemeris.h
++ * \brief  Interface of a GPS CNAV EPHEMERIS storage
++ * \author Javier Arribas, 2015. jarribas(at)cttc.es
+  *
+  * -------------------------------------------------------------------------
+  *
+  * Copyright (C) 2010-2015  (see AUTHORS file for a list of contributors)
+  *
+  * GNSS-SDR is a software defined Global Navigation
+  *          Satellite Systems receiver
+  *
+  * This file is part of GNSS-SDR.
+  *
+  * GNSS-SDR is free software: you can redistribute it and/or modify
+  * it under the terms of the GNU General Public License as published by
+  * the Free Software Foundation, either version 3 of the License, or
+  * (at your option) any later version.
+  *
+  * GNSS-SDR is distributed in the hope that it will be useful,
+  * but WITHOUT ANY WARRANTY; without even the implied warranty of
+  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  * GNU General Public License for more details.
+  *
+  * You should have received a copy of the GNU General Public License
+  * along with GNSS-SDR. If not, see <http://www.gnu.org/licenses/>.
+  *
+  * -------------------------------------------------------------------------
+  */
+ 
+ 
 -#ifndef GNSS_SDR_Gps_CNAV_Ephemeris_H_
 -#define GNSS_SDR_Gps_CNAV_Ephemeris_H_
++#ifndef GNSS_SDR_GPS_CNAV_EPHEMERIS_H_
++#define GNSS_SDR_GPS_CNAV_EPHEMERIS_H_
+ 
+ #include <iostream>
+ #include <map>
+ #include <string>
+ #include "boost/assign.hpp"
+ #include <boost/serialization/nvp.hpp>
+ #include "GPS_L2C.h"
+ 
+ 
+ /*!
+  * \brief This class is a storage and orbital model functions for the GPS SV ephemeris data as described in IS-GPS-200E
+  *
+  * See http://www.gps.gov/technical/icwg/IS-GPS-200E.pdf Appendix II
+  */
+ class Gps_CNAV_Ephemeris
+ {
+ private:
+ 
+ public:
+     unsigned int i_satellite_PRN; // SV PRN NUMBER
+ 
+     //Message Types 10 and 11 Parameters (1 of 2)
+     int i_GPS_week;          //!< GPS week number, aka WN [week]
 -    int i_URA;	//!< ED Accuracy Index
 -    int i_signal_health; //!< Signal health (L1/L2/L5)
 -    double d_Top; //!< Data predict time of week
 -    double d_DELTA_A; //!< Semi-major axis difference at reference time
 -    double d_A_DOT; //!< Change rate in semi-major axis
++    int i_URA;	             //!< ED Accuracy Index
++    int i_signal_health;     //!< Signal health (L1/L2/L5)
++    double d_Top;            //!< Data predict time of week
++    double d_DELTA_A;        //!< Semi-major axis difference at reference time
++    double d_A_DOT;          //!< Change rate in semi-major axis
+     double d_Delta_n;        //!< Mean Motion Difference From Computed Value [semi-circles/s]
 -    double d_DELTA_DOT_N; // Rate of mean motion difference from computed value
++    double d_DELTA_DOT_N;    //!< Rate of mean motion difference from computed value
+     double d_M_0;            //!< Mean Anomaly at Reference Time [semi-circles]
 -    double d_e_eccentricity; //< Eccentricity
++    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]
++    double d_OMEGA0;         //!< Longitude of Ascending Node of Orbit Plane at Weekly Epoch [semi-cicles]
+     double d_Toe;            //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200E) [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]
+     double d_Cis;            //!< Amplitude of the Sine Harmonic Correction Term to the Angle of Inclination [rad]
+     double d_Cic;            //!< Amplitude of the Cosine Harmonic Correction Term to the Angle of Inclination [rad]
+     double d_Crs;            //!< Amplitude of the Sine Harmonic Correction Term to the Orbit Radius [m]
+     double d_Crc;            //!< Amplitude of the Cosine Harmonic Correction Term to the Orbit Radius [m]
+     double d_Cus;            //!< Amplitude of the Sine Harmonic Correction Term to the Argument of Latitude [rad]
+     double d_Cuc;            //!< Amplitude of the Cosine Harmonic Correction Term to the Argument of Latitude [rad]
+ 
+     //Clock Correction and Accuracy Parameters
+     double d_Toc;            //!< clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200E) [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]
++    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]
+ 
 -    double d_URA0;			//!<NED Accuracy Index
 -    double d_URA1;			//!<NED Accuracy Change Index
 -    double d_URA2;			//!< NED Accuracy Change Rate Index
++    double d_URA0;           //!<NED Accuracy Index
++    double d_URA1;           //!<NED Accuracy Change Index
++    double d_URA2;           //!< NED Accuracy Change Rate Index
+ 
+ 
+     //Group Delay Differential Parameters
+     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]
+     double d_ISCL1;
+     double d_ISCL2;
+     double d_ISCL5I;
+     double d_ISCL5Q;
+ 
+     double d_TOW;            //!< Time of GPS Week of the ephemeris set (taken from subframes TOW) [s]
+ 
 -
 -
 -
+     // Flags
+ 
+     /*! \brief If true, enhanced level of integrity assurance.
+      *
+      *  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.
+      */
+     bool b_integrity_status_flag;
+     bool b_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 b_antispoofing_flag;  //!<  If true, the AntiSpoofing mode is ON in that SV
+ 
+     // clock terms derived from ephemeris data
+     double d_satClkDrift;    //!< GPS clock error
+     double d_dtr;            //!< relativistic clock correction term
+ 
+     // satellite positions
+     double d_satpos_X;       //!< Earth-fixed coordinate x of the satellite [m]. Intersection of the IERS Reference Meridian (IRM) and the plane passing through the origin and normal to the Z-axis.
+     double d_satpos_Y;       //!< Earth-fixed coordinate y of the satellite [m]. Completes a right-handed, Earth-Centered, Earth-Fixed orthogonal coordinate system.
+     double d_satpos_Z;       //!< Earth-fixed coordinate z of the satellite [m]. The direction of the IERS (International Earth Rotation and Reference Systems Service) Reference Pole (IRP).
+ 
+     // Satellite velocity
+     double d_satvel_X;    //!< Earth-fixed velocity coordinate x of the satellite [m]
+     double d_satvel_Y;    //!< Earth-fixed velocity coordinate y of the satellite [m]
+     double d_satvel_Z;    //!< Earth-fixed velocity coordinate z of the satellite [m]
+ 
 -    std::map<int,std::string> satelliteBlock; //!< Map that stores to which block the PRN belongs http://www.navcen.uscg.gov/?Do=constellationStatus
 -
+     template<class Archive>
+ 
+     /*!
+      * \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.
+      */
+     void serialize(Archive& archive, const unsigned int version)
+     {
+         using boost::serialization::make_nvp;
+         if(version){};
+ 
+         archive & make_nvp("i_satellite_PRN", i_satellite_PRN); // SV PRN NUMBER
+         archive & make_nvp("d_TOW", d_TOW);          //!< Time of GPS Week of the ephemeris set (taken from subframes TOW) [s]
+         archive & make_nvp("d_Crs", d_Crs);          //!< Amplitude of the Sine Harmonic Correction Term to the Orbit Radius [m]
+         archive & make_nvp("d_M_0", d_M_0);          //!< Mean Anomaly at Reference Time [semi-circles]
+         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_Toe", d_Toe);          //!< Ephemeris data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200E) [s]
+         archive & make_nvp("d_Toc", d_Toe);          //!< clock data reference time (Ref. 20.3.3.3.3.1 IS-GPS-200E) [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]
+         archive & make_nvp("d_i_0", d_i_0);          //!< Inclination Angle at Reference Time [semi-circles]
+         archive & make_nvp("d_Crc", d_Crc);          //!< Amplitude of the Cosine Harmonic Correction Term to the Orbit Radius [m]
+         archive & make_nvp("d_OMEGA", d_OMEGA);      //!< Argument of Perigee [semi-cicles]
+         archive & make_nvp("d_IDOT", d_IDOT);        //!< Rate of Inclination Angle [semi-circles/s]
+         archive & make_nvp("i_GPS_week", i_GPS_week);      //!< GPS week number, aka WN [week]
+         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_A_f0", d_A_f0);          //!< Coefficient 0 of code phase offset model [s]
+         archive & make_nvp("d_A_f1", d_A_f1);          //!< Coefficient 1 of code phase offset model [s/s]
+         archive & make_nvp("d_A_f2", d_A_f2);          //!< Coefficient 2 of code phase offset model [s/s^2]
+ 
+         archive & make_nvp("b_integrity_status_flag", b_integrity_status_flag);
+         archive & make_nvp("b_alert_flag", b_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.
+         archive & make_nvp("b_antispoofing_flag", b_antispoofing_flag); //!<  If true, the AntiSpoofing mode is ON in that SV
+     }
+ 
+     /*!
+      * Default constructor
+      */
+     Gps_CNAV_Ephemeris();
+ };
+ 
+ #endif

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-hamradio/gnss-sdr.git



More information about the pkg-hamradio-commits mailing list