1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2024-12-15 12:40:35 +00:00

Merge branch 'next' of https://github.com/gnss-sdr/gnss-sdr into next

This commit is contained in:
Carles Fernandez 2019-04-09 18:42:16 +02:00
commit b57316cd8c
No known key found for this signature in database
GPG Key ID: 4C583C52B0C3877D
64 changed files with 160 additions and 170 deletions

View File

@ -123,7 +123,7 @@ BeidouB1iPcpsAcquisition::BeidouB1iPcpsAcquisition(
threshold_ = 0.0; threshold_ = 0.0;
doppler_step_ = 0; doppler_step_ = 0;
gnss_synchro_ = nullptr; gnss_synchro_ = nullptr;
channel_fsm_ = nullptr;
if (in_streams_ > 1) if (in_streams_ > 1)
{ {
LOG(ERROR) << "This implementation only supports one input stream"; LOG(ERROR) << "This implementation only supports one input stream";

View File

@ -102,7 +102,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) override inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm) override
{ {
channel_fsm_ = channel_fsm; channel_fsm_ = channel_fsm;
acquisition_->set_channel_fsm(channel_fsm); acquisition_->set_channel_fsm(channel_fsm);
@ -173,7 +173,7 @@ private:
bool bit_transition_flag_; bool bit_transition_flag_;
bool use_CFAR_algorithm_flag_; bool use_CFAR_algorithm_flag_;
uint32_t channel_; uint32_t channel_;
std::shared_ptr<ChannelFsm> channel_fsm_; std::weak_ptr<ChannelFsm> channel_fsm_;
float threshold_; float threshold_;
uint32_t doppler_max_; uint32_t doppler_max_;
uint32_t doppler_step_; uint32_t doppler_step_;

View File

@ -121,7 +121,7 @@ BeidouB3iPcpsAcquisition::BeidouB3iPcpsAcquisition(
threshold_ = 0.0; threshold_ = 0.0;
doppler_step_ = 0; doppler_step_ = 0;
gnss_synchro_ = nullptr; gnss_synchro_ = nullptr;
channel_fsm_ = nullptr;
if (in_streams_ > 1) if (in_streams_ > 1)
{ {
LOG(ERROR) << "This implementation only supports one input stream"; LOG(ERROR) << "This implementation only supports one input stream";

View File

@ -101,7 +101,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) override inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm) override
{ {
channel_fsm_ = channel_fsm; channel_fsm_ = channel_fsm;
acquisition_->set_channel_fsm(channel_fsm); acquisition_->set_channel_fsm(channel_fsm);
@ -172,7 +172,7 @@ private:
bool bit_transition_flag_; bool bit_transition_flag_;
bool use_CFAR_algorithm_flag_; bool use_CFAR_algorithm_flag_;
unsigned int channel_; unsigned int channel_;
std::shared_ptr<ChannelFsm> channel_fsm_; std::weak_ptr<ChannelFsm> channel_fsm_;
float threshold_; float threshold_;
unsigned int doppler_max_; unsigned int doppler_max_;
unsigned int doppler_step_; unsigned int doppler_step_;

View File

@ -110,7 +110,7 @@ GalileoE1Pcps8msAmbiguousAcquisition::GalileoE1Pcps8msAmbiguousAcquisition(
threshold_ = 0.0; threshold_ = 0.0;
doppler_step_ = 0; doppler_step_ = 0;
gnss_synchro_ = nullptr; gnss_synchro_ = nullptr;
channel_fsm_ = nullptr;
if (in_streams_ > 1) if (in_streams_ > 1)
{ {
LOG(ERROR) << "This implementation only supports one input stream"; LOG(ERROR) << "This implementation only supports one input stream";

View File

@ -96,7 +96,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) override inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm) override
{ {
channel_fsm_ = channel_fsm; channel_fsm_ = channel_fsm;
acquisition_cc_->set_channel_fsm(channel_fsm); acquisition_cc_->set_channel_fsm(channel_fsm);
@ -156,7 +156,7 @@ private:
unsigned int vector_length_; unsigned int vector_length_;
unsigned int code_length_; unsigned int code_length_;
unsigned int channel_; unsigned int channel_;
std::shared_ptr<ChannelFsm> channel_fsm_; std::weak_ptr<ChannelFsm> channel_fsm_;
float threshold_; float threshold_;
unsigned int doppler_max_; unsigned int doppler_max_;
unsigned int doppler_step_; unsigned int doppler_step_;

View File

@ -154,7 +154,7 @@ GalileoE1PcpsAmbiguousAcquisition::GalileoE1PcpsAmbiguousAcquisition(
threshold_ = 0.0; threshold_ = 0.0;
doppler_step_ = 0; doppler_step_ = 0;
gnss_synchro_ = nullptr; gnss_synchro_ = nullptr;
channel_fsm_ = nullptr;
if (in_streams_ > 1) if (in_streams_ > 1)
{ {
LOG(ERROR) << "This implementation only supports one input stream"; LOG(ERROR) << "This implementation only supports one input stream";

View File

@ -100,7 +100,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) override inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm) override
{ {
channel_fsm_ = channel_fsm; channel_fsm_ = channel_fsm;
acquisition_->set_channel_fsm(channel_fsm); acquisition_->set_channel_fsm(channel_fsm);
@ -171,7 +171,7 @@ private:
bool use_CFAR_algorithm_flag_; bool use_CFAR_algorithm_flag_;
bool acquire_pilot_; bool acquire_pilot_;
unsigned int channel_; unsigned int channel_;
std::shared_ptr<ChannelFsm> channel_fsm_; std::weak_ptr<ChannelFsm> channel_fsm_;
float threshold_; float threshold_;
unsigned int doppler_max_; unsigned int doppler_max_;
unsigned int doppler_step_; unsigned int doppler_step_;

View File

@ -187,7 +187,7 @@ GalileoE1PcpsAmbiguousAcquisitionFpga::GalileoE1PcpsAmbiguousAcquisitionFpga(
channel_ = 0; channel_ = 0;
doppler_step_ = 0; doppler_step_ = 0;
gnss_synchro_ = nullptr; gnss_synchro_ = nullptr;
channel_fsm_ = nullptr;
// temporary buffers that we can delete // temporary buffers that we can delete
delete[] code; delete[] code;
delete fft_if; delete fft_if;

View File

@ -99,7 +99,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) override inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm) override
{ {
channel_fsm_ = channel_fsm; channel_fsm_ = channel_fsm;
acquisition_fpga_->set_channel_fsm(channel_fsm); acquisition_fpga_->set_channel_fsm(channel_fsm);
@ -157,7 +157,7 @@ private:
pcps_acquisition_fpga_sptr acquisition_fpga_; pcps_acquisition_fpga_sptr acquisition_fpga_;
bool acquire_pilot_; bool acquire_pilot_;
uint32_t channel_; uint32_t channel_;
std::shared_ptr<ChannelFsm> channel_fsm_; std::weak_ptr<ChannelFsm> channel_fsm_;
uint32_t doppler_max_; uint32_t doppler_max_;
uint32_t doppler_step_; uint32_t doppler_step_;
std::string dump_filename_; std::string dump_filename_;

View File

@ -111,7 +111,7 @@ GalileoE1PcpsCccwsrAmbiguousAcquisition::GalileoE1PcpsCccwsrAmbiguousAcquisition
threshold_ = 0.0; threshold_ = 0.0;
doppler_step_ = 0; doppler_step_ = 0;
gnss_synchro_ = nullptr; gnss_synchro_ = nullptr;
channel_fsm_ = nullptr;
if (in_streams_ > 1) if (in_streams_ > 1)
{ {
LOG(ERROR) << "This implementation only supports one input stream"; LOG(ERROR) << "This implementation only supports one input stream";

View File

@ -96,7 +96,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) override inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm) override
{ {
channel_fsm_ = channel_fsm; channel_fsm_ = channel_fsm;
acquisition_cc_->set_channel_fsm(channel_fsm); acquisition_cc_->set_channel_fsm(channel_fsm);
@ -155,7 +155,7 @@ private:
unsigned int code_length_; unsigned int code_length_;
//unsigned int satellite_; //unsigned int satellite_;
unsigned int channel_; unsigned int channel_;
std::shared_ptr<ChannelFsm> channel_fsm_; std::weak_ptr<ChannelFsm> channel_fsm_;
float threshold_; float threshold_;
unsigned int doppler_max_; unsigned int doppler_max_;
unsigned int doppler_step_; unsigned int doppler_step_;

View File

@ -144,7 +144,7 @@ GalileoE1PcpsQuickSyncAmbiguousAcquisition::GalileoE1PcpsQuickSyncAmbiguousAcqui
threshold_ = 0.0; threshold_ = 0.0;
doppler_step_ = 0; doppler_step_ = 0;
gnss_synchro_ = nullptr; gnss_synchro_ = nullptr;
channel_fsm_ = nullptr;
if (in_streams_ > 1) if (in_streams_ > 1)
{ {
LOG(ERROR) << "This implementation only supports one input stream"; LOG(ERROR) << "This implementation only supports one input stream";

View File

@ -97,7 +97,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) override inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm) override
{ {
channel_fsm_ = channel_fsm; channel_fsm_ = channel_fsm;
acquisition_cc_->set_channel_fsm(channel_fsm); acquisition_cc_->set_channel_fsm(channel_fsm);
@ -159,7 +159,7 @@ private:
unsigned int code_length_; unsigned int code_length_;
bool bit_transition_flag_; bool bit_transition_flag_;
unsigned int channel_; unsigned int channel_;
std::shared_ptr<ChannelFsm> channel_fsm_; std::weak_ptr<ChannelFsm> channel_fsm_;
float threshold_; float threshold_;
unsigned int doppler_max_; unsigned int doppler_max_;
unsigned int doppler_step_; unsigned int doppler_step_;

View File

@ -114,7 +114,7 @@ GalileoE1PcpsTongAmbiguousAcquisition::GalileoE1PcpsTongAmbiguousAcquisition(
threshold_ = 0.0; threshold_ = 0.0;
doppler_step_ = 0; doppler_step_ = 0;
gnss_synchro_ = nullptr; gnss_synchro_ = nullptr;
channel_fsm_ = nullptr;
if (in_streams_ > 1) if (in_streams_ > 1)
{ {
LOG(ERROR) << "This implementation only supports one input stream"; LOG(ERROR) << "This implementation only supports one input stream";

View File

@ -96,7 +96,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) override inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm) override
{ {
channel_fsm_ = channel_fsm; channel_fsm_ = channel_fsm;
acquisition_cc_->set_channel_fsm(channel_fsm); acquisition_cc_->set_channel_fsm(channel_fsm);
@ -157,7 +157,7 @@ private:
unsigned int vector_length_; unsigned int vector_length_;
unsigned int code_length_; unsigned int code_length_;
unsigned int channel_; unsigned int channel_;
std::shared_ptr<ChannelFsm> channel_fsm_; std::weak_ptr<ChannelFsm> channel_fsm_;
float threshold_; float threshold_;
unsigned int doppler_max_; unsigned int doppler_max_;
unsigned int doppler_step_; unsigned int doppler_step_;

View File

@ -119,7 +119,7 @@ GalileoE5aNoncoherentIQAcquisitionCaf::GalileoE5aNoncoherentIQAcquisitionCaf(
threshold_ = 0.0; threshold_ = 0.0;
doppler_step_ = 0; doppler_step_ = 0;
gnss_synchro_ = nullptr; gnss_synchro_ = nullptr;
channel_fsm_ = nullptr;
if (in_streams_ > 1) if (in_streams_ > 1)
{ {
LOG(ERROR) << "This implementation only supports one input stream"; LOG(ERROR) << "This implementation only supports one input stream";

View File

@ -97,7 +97,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) override inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm) override
{ {
channel_fsm_ = channel_fsm; channel_fsm_ = channel_fsm;
acquisition_cc_->set_channel_fsm(channel_fsm); acquisition_cc_->set_channel_fsm(channel_fsm);
@ -160,7 +160,7 @@ private:
unsigned int code_length_; unsigned int code_length_;
bool bit_transition_flag_; bool bit_transition_flag_;
unsigned int channel_; unsigned int channel_;
std::shared_ptr<ChannelFsm> channel_fsm_; std::weak_ptr<ChannelFsm> channel_fsm_;
float threshold_; float threshold_;
unsigned int doppler_max_; unsigned int doppler_max_;
unsigned int doppler_step_; unsigned int doppler_step_;

View File

@ -152,7 +152,7 @@ GalileoE5aPcpsAcquisition::GalileoE5aPcpsAcquisition(ConfigurationInterface* con
threshold_ = 0.0; threshold_ = 0.0;
doppler_step_ = 0; doppler_step_ = 0;
gnss_synchro_ = nullptr; gnss_synchro_ = nullptr;
channel_fsm_ = nullptr;
if (in_streams_ > 1) if (in_streams_ > 1)
{ {
LOG(ERROR) << "This implementation only supports one input stream"; LOG(ERROR) << "This implementation only supports one input stream";

View File

@ -88,7 +88,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) override inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm) override
{ {
channel_fsm_ = channel_fsm; channel_fsm_ = channel_fsm;
acquisition_->set_channel_fsm(channel_fsm); acquisition_->set_channel_fsm(channel_fsm);
@ -169,7 +169,7 @@ private:
unsigned int vector_length_; unsigned int vector_length_;
unsigned int code_length_; unsigned int code_length_;
unsigned int channel_; unsigned int channel_;
std::shared_ptr<ChannelFsm> channel_fsm_; std::weak_ptr<ChannelFsm> channel_fsm_;
unsigned int doppler_max_; unsigned int doppler_max_;
unsigned int doppler_step_; unsigned int doppler_step_;
unsigned int sampled_ms_; unsigned int sampled_ms_;

View File

@ -189,7 +189,7 @@ GalileoE5aPcpsAcquisitionFpga::GalileoE5aPcpsAcquisitionFpga(ConfigurationInterf
channel_ = 0; channel_ = 0;
doppler_step_ = 0; doppler_step_ = 0;
gnss_synchro_ = nullptr; gnss_synchro_ = nullptr;
channel_fsm_ = nullptr;
// temporary buffers that we can delete // temporary buffers that we can delete
delete[] code; delete[] code;
delete fft_if; delete fft_if;

View File

@ -101,7 +101,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) override inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm) override
{ {
channel_fsm_ = channel_fsm; channel_fsm_ = channel_fsm;
acquisition_fpga_->set_channel_fsm(channel_fsm); acquisition_fpga_->set_channel_fsm(channel_fsm);
@ -176,7 +176,7 @@ private:
bool acq_iq_; bool acq_iq_;
uint32_t channel_; uint32_t channel_;
std::shared_ptr<ChannelFsm> channel_fsm_; std::weak_ptr<ChannelFsm> channel_fsm_;
uint32_t doppler_max_; uint32_t doppler_max_;
uint32_t doppler_step_; uint32_t doppler_step_;
unsigned int in_streams_; unsigned int in_streams_;

View File

@ -125,7 +125,7 @@ GlonassL1CaPcpsAcquisition::GlonassL1CaPcpsAcquisition(
threshold_ = 0.0; threshold_ = 0.0;
doppler_step_ = 0; doppler_step_ = 0;
gnss_synchro_ = nullptr; gnss_synchro_ = nullptr;
channel_fsm_ = nullptr;
if (in_streams_ > 1) if (in_streams_ > 1)
{ {
LOG(ERROR) << "This implementation only supports one input stream"; LOG(ERROR) << "This implementation only supports one input stream";

View File

@ -98,7 +98,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) override inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm) override
{ {
channel_fsm_ = channel_fsm; channel_fsm_ = channel_fsm;
acquisition_->set_channel_fsm(channel_fsm); acquisition_->set_channel_fsm(channel_fsm);
@ -162,7 +162,7 @@ private:
bool bit_transition_flag_; bool bit_transition_flag_;
bool use_CFAR_algorithm_flag_; bool use_CFAR_algorithm_flag_;
unsigned int channel_; unsigned int channel_;
std::shared_ptr<ChannelFsm> channel_fsm_; std::weak_ptr<ChannelFsm> channel_fsm_;
float threshold_; float threshold_;
unsigned int doppler_max_; unsigned int doppler_max_;
unsigned int doppler_step_; unsigned int doppler_step_;

View File

@ -124,7 +124,7 @@ GlonassL2CaPcpsAcquisition::GlonassL2CaPcpsAcquisition(
threshold_ = 0.0; threshold_ = 0.0;
doppler_step_ = 0; doppler_step_ = 0;
gnss_synchro_ = nullptr; gnss_synchro_ = nullptr;
channel_fsm_ = nullptr;
if (in_streams_ > 1) if (in_streams_ > 1)
{ {
LOG(ERROR) << "This implementation only supports one input stream"; LOG(ERROR) << "This implementation only supports one input stream";

View File

@ -98,7 +98,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) override inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm) override
{ {
channel_fsm_ = channel_fsm; channel_fsm_ = channel_fsm;
acquisition_->set_channel_fsm(channel_fsm); acquisition_->set_channel_fsm(channel_fsm);
@ -162,7 +162,7 @@ private:
bool bit_transition_flag_; bool bit_transition_flag_;
bool use_CFAR_algorithm_flag_; bool use_CFAR_algorithm_flag_;
unsigned int channel_; unsigned int channel_;
std::shared_ptr<ChannelFsm> channel_fsm_; std::weak_ptr<ChannelFsm> channel_fsm_;
float threshold_; float threshold_;
unsigned int doppler_max_; unsigned int doppler_max_;
unsigned int doppler_step_; unsigned int doppler_step_;

View File

@ -147,7 +147,7 @@ GpsL1CaPcpsAcquisition::GpsL1CaPcpsAcquisition(
threshold_ = 0.0; threshold_ = 0.0;
doppler_step_ = 0; doppler_step_ = 0;
gnss_synchro_ = nullptr; gnss_synchro_ = nullptr;
channel_fsm_ = nullptr;
if (in_streams_ > 1) if (in_streams_ > 1)
{ {
LOG(ERROR) << "This implementation only supports one input stream"; LOG(ERROR) << "This implementation only supports one input stream";

View File

@ -104,7 +104,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) override inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm) override
{ {
channel_fsm_ = channel_fsm; channel_fsm_ = channel_fsm;
acquisition_->set_channel_fsm(channel_fsm); acquisition_->set_channel_fsm(channel_fsm);
@ -174,7 +174,7 @@ private:
bool bit_transition_flag_; bool bit_transition_flag_;
bool use_CFAR_algorithm_flag_; bool use_CFAR_algorithm_flag_;
unsigned int channel_; unsigned int channel_;
std::shared_ptr<ChannelFsm> channel_fsm_; std::weak_ptr<ChannelFsm> channel_fsm_;
float threshold_; float threshold_;
unsigned int doppler_max_; unsigned int doppler_max_;
unsigned int doppler_step_; unsigned int doppler_step_;

View File

@ -97,7 +97,7 @@ GpsL1CaPcpsAcquisitionFineDoppler::GpsL1CaPcpsAcquisitionFineDoppler(
threshold_ = 0.0; threshold_ = 0.0;
doppler_step_ = 0; doppler_step_ = 0;
gnss_synchro_ = nullptr; gnss_synchro_ = nullptr;
channel_fsm_ = nullptr;
if (in_streams_ > 1) if (in_streams_ > 1)
{ {
LOG(ERROR) << "This implementation only supports one input stream"; LOG(ERROR) << "This implementation only supports one input stream";

View File

@ -97,7 +97,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) override inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm) override
{ {
channel_fsm_ = channel_fsm; channel_fsm_ = channel_fsm;
acquisition_cc_->set_channel_fsm(channel_fsm); acquisition_cc_->set_channel_fsm(channel_fsm);
@ -152,7 +152,7 @@ private:
std::string item_type_; std::string item_type_;
unsigned int vector_length_; unsigned int vector_length_;
unsigned int channel_; unsigned int channel_;
std::shared_ptr<ChannelFsm> channel_fsm_; std::weak_ptr<ChannelFsm> channel_fsm_;
float threshold_; float threshold_;
int doppler_max_; int doppler_max_;
unsigned int doppler_step_; unsigned int doppler_step_;

View File

@ -169,7 +169,7 @@ GpsL1CaPcpsAcquisitionFpga::GpsL1CaPcpsAcquisitionFpga(
channel_ = 0; channel_ = 0;
doppler_step_ = 0; doppler_step_ = 0;
gnss_synchro_ = nullptr; gnss_synchro_ = nullptr;
channel_fsm_ = nullptr;
// temporary buffers that we can delete // temporary buffers that we can delete
delete[] code; delete[] code;
delete fft_if; delete fft_if;

View File

@ -103,7 +103,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) override inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm) override
{ {
channel_fsm_ = channel_fsm; channel_fsm_ = channel_fsm;
acquisition_fpga_->set_channel_fsm(channel_fsm); acquisition_fpga_->set_channel_fsm(channel_fsm);
@ -160,7 +160,7 @@ private:
ConfigurationInterface* configuration_; ConfigurationInterface* configuration_;
pcps_acquisition_fpga_sptr acquisition_fpga_; pcps_acquisition_fpga_sptr acquisition_fpga_;
uint32_t channel_; uint32_t channel_;
std::shared_ptr<ChannelFsm> channel_fsm_; std::weak_ptr<ChannelFsm> channel_fsm_;
uint32_t doppler_max_; uint32_t doppler_max_;
uint32_t doppler_step_; uint32_t doppler_step_;
Gnss_Synchro* gnss_synchro_; Gnss_Synchro* gnss_synchro_;

View File

@ -89,7 +89,7 @@ GpsL1CaPcpsAssistedAcquisition::GpsL1CaPcpsAssistedAcquisition(
threshold_ = 0.0; threshold_ = 0.0;
doppler_step_ = 0; doppler_step_ = 0;
gnss_synchro_ = nullptr; gnss_synchro_ = nullptr;
channel_fsm_ = nullptr;
if (in_streams_ > 1) if (in_streams_ > 1)
{ {
LOG(ERROR) << "This implementation only supports one input stream"; LOG(ERROR) << "This implementation only supports one input stream";

View File

@ -97,7 +97,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) override inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm) override
{ {
channel_fsm_ = channel_fsm; channel_fsm_ = channel_fsm;
acquisition_cc_->set_channel_fsm(channel_fsm); acquisition_cc_->set_channel_fsm(channel_fsm);
@ -149,7 +149,7 @@ private:
unsigned int vector_length_; unsigned int vector_length_;
//unsigned int satellite_; //unsigned int satellite_;
unsigned int channel_; unsigned int channel_;
std::shared_ptr<ChannelFsm> channel_fsm_; std::weak_ptr<ChannelFsm> channel_fsm_;
float threshold_; float threshold_;
int doppler_max_; int doppler_max_;
unsigned int doppler_step_; unsigned int doppler_step_;

View File

@ -105,7 +105,7 @@ GpsL1CaPcpsOpenClAcquisition::GpsL1CaPcpsOpenClAcquisition(
threshold_ = 0.0; threshold_ = 0.0;
doppler_step_ = 0; doppler_step_ = 0;
gnss_synchro_ = nullptr; gnss_synchro_ = nullptr;
channel_fsm_ = nullptr;
if (in_streams_ > 1) if (in_streams_ > 1)
{ {
LOG(ERROR) << "This implementation only supports one input stream"; LOG(ERROR) << "This implementation only supports one input stream";

View File

@ -96,7 +96,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) override inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm) override
{ {
channel_fsm_ = channel_fsm; channel_fsm_ = channel_fsm;
acquisition_cc_->set_channel_fsm(channel_fsm); acquisition_cc_->set_channel_fsm(channel_fsm);
@ -154,7 +154,7 @@ private:
unsigned int code_length_; unsigned int code_length_;
bool bit_transition_flag_; bool bit_transition_flag_;
unsigned int channel_; unsigned int channel_;
std::shared_ptr<ChannelFsm> channel_fsm_; std::weak_ptr<ChannelFsm> channel_fsm_;
float threshold_; float threshold_;
unsigned int doppler_max_; unsigned int doppler_max_;
unsigned int doppler_step_; unsigned int doppler_step_;

View File

@ -137,7 +137,7 @@ GpsL1CaPcpsQuickSyncAcquisition::GpsL1CaPcpsQuickSyncAcquisition(
threshold_ = 0.0; threshold_ = 0.0;
doppler_step_ = 0; doppler_step_ = 0;
gnss_synchro_ = nullptr; gnss_synchro_ = nullptr;
channel_fsm_ = nullptr;
if (in_streams_ > 1) if (in_streams_ > 1)
{ {
LOG(ERROR) << "This implementation only supports one input stream"; LOG(ERROR) << "This implementation only supports one input stream";

View File

@ -98,7 +98,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) override inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm) override
{ {
channel_fsm_ = channel_fsm; channel_fsm_ = channel_fsm;
acquisition_cc_->set_channel_fsm(channel_fsm); acquisition_cc_->set_channel_fsm(channel_fsm);
@ -160,7 +160,7 @@ private:
unsigned int code_length_; unsigned int code_length_;
bool bit_transition_flag_; bool bit_transition_flag_;
unsigned int channel_; unsigned int channel_;
std::shared_ptr<ChannelFsm> channel_fsm_; std::weak_ptr<ChannelFsm> channel_fsm_;
float threshold_; float threshold_;
unsigned int doppler_max_; unsigned int doppler_max_;
unsigned int doppler_step_; unsigned int doppler_step_;

View File

@ -99,7 +99,7 @@ GpsL1CaPcpsTongAcquisition::GpsL1CaPcpsTongAcquisition(
threshold_ = 0.0; threshold_ = 0.0;
doppler_step_ = 0; doppler_step_ = 0;
gnss_synchro_ = nullptr; gnss_synchro_ = nullptr;
channel_fsm_ = nullptr;
if (in_streams_ > 1) if (in_streams_ > 1)
{ {
LOG(ERROR) << "This implementation only supports one input stream"; LOG(ERROR) << "This implementation only supports one input stream";

View File

@ -97,7 +97,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) override inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm) override
{ {
channel_fsm_ = channel_fsm; channel_fsm_ = channel_fsm;
acquisition_cc_->set_channel_fsm(channel_fsm); acquisition_cc_->set_channel_fsm(channel_fsm);
@ -158,7 +158,7 @@ private:
unsigned int vector_length_; unsigned int vector_length_;
unsigned int code_length_; unsigned int code_length_;
unsigned int channel_; unsigned int channel_;
std::shared_ptr<ChannelFsm> channel_fsm_; std::weak_ptr<ChannelFsm> channel_fsm_;
float threshold_; float threshold_;
unsigned int doppler_max_; unsigned int doppler_max_;
unsigned int doppler_step_; unsigned int doppler_step_;

View File

@ -151,7 +151,7 @@ GpsL2MPcpsAcquisition::GpsL2MPcpsAcquisition(
threshold_ = 0.0; threshold_ = 0.0;
doppler_step_ = 0; doppler_step_ = 0;
gnss_synchro_ = nullptr; gnss_synchro_ = nullptr;
channel_fsm_ = nullptr;
num_codes_ = acq_parameters_.sampled_ms / acq_parameters_.ms_per_code; num_codes_ = acq_parameters_.sampled_ms / acq_parameters_.ms_per_code;
if (in_streams_ > 1) if (in_streams_ > 1)
{ {

View File

@ -101,7 +101,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) override inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm) override
{ {
channel_fsm_ = channel_fsm; channel_fsm_ = channel_fsm;
acquisition_->set_channel_fsm(channel_fsm); acquisition_->set_channel_fsm(channel_fsm);
@ -171,7 +171,7 @@ private:
bool bit_transition_flag_; bool bit_transition_flag_;
bool use_CFAR_algorithm_flag_; bool use_CFAR_algorithm_flag_;
unsigned int channel_; unsigned int channel_;
std::shared_ptr<ChannelFsm> channel_fsm_; std::weak_ptr<ChannelFsm> channel_fsm_;
float threshold_; float threshold_;
unsigned int doppler_max_; unsigned int doppler_max_;
unsigned int doppler_step_; unsigned int doppler_step_;

View File

@ -161,7 +161,7 @@ GpsL2MPcpsAcquisitionFpga::GpsL2MPcpsAcquisitionFpga(
channel_ = 0; channel_ = 0;
doppler_step_ = 0; doppler_step_ = 0;
gnss_synchro_ = nullptr; gnss_synchro_ = nullptr;
channel_fsm_ = nullptr;
threshold_ = 0.0; threshold_ = 0.0;
} }

View File

@ -100,7 +100,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) override inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm) override
{ {
channel_fsm_ = channel_fsm; channel_fsm_ = channel_fsm;
acquisition_fpga_->set_channel_fsm(channel_fsm); acquisition_fpga_->set_channel_fsm(channel_fsm);
@ -158,7 +158,7 @@ private:
pcps_acquisition_fpga_sptr acquisition_fpga_; pcps_acquisition_fpga_sptr acquisition_fpga_;
std::string item_type_; std::string item_type_;
unsigned int channel_; unsigned int channel_;
std::shared_ptr<ChannelFsm> channel_fsm_; std::weak_ptr<ChannelFsm> channel_fsm_;
float threshold_; float threshold_;
unsigned int doppler_max_; unsigned int doppler_max_;
unsigned int doppler_step_; unsigned int doppler_step_;

View File

@ -147,7 +147,7 @@ GpsL5iPcpsAcquisition::GpsL5iPcpsAcquisition(
threshold_ = 0.0; threshold_ = 0.0;
doppler_step_ = 0; doppler_step_ = 0;
gnss_synchro_ = nullptr; gnss_synchro_ = nullptr;
channel_fsm_ = nullptr;
if (in_streams_ > 1) if (in_streams_ > 1)
{ {
LOG(ERROR) << "This implementation only supports one input stream"; LOG(ERROR) << "This implementation only supports one input stream";

View File

@ -101,7 +101,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) override inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm) override
{ {
channel_fsm_ = channel_fsm; channel_fsm_ = channel_fsm;
acquisition_->set_channel_fsm(channel_fsm); acquisition_->set_channel_fsm(channel_fsm);
@ -170,7 +170,7 @@ private:
bool bit_transition_flag_; bool bit_transition_flag_;
bool use_CFAR_algorithm_flag_; bool use_CFAR_algorithm_flag_;
unsigned int channel_; unsigned int channel_;
std::shared_ptr<ChannelFsm> channel_fsm_; std::weak_ptr<ChannelFsm> channel_fsm_;
float threshold_; float threshold_;
unsigned int doppler_max_; unsigned int doppler_max_;
unsigned int doppler_step_; unsigned int doppler_step_;

View File

@ -172,7 +172,7 @@ GpsL5iPcpsAcquisitionFpga::GpsL5iPcpsAcquisitionFpga(
channel_ = 0; channel_ = 0;
doppler_step_ = 0; doppler_step_ = 0;
gnss_synchro_ = nullptr; gnss_synchro_ = nullptr;
channel_fsm_ = nullptr;
// temporary buffers that we can delete // temporary buffers that we can delete
delete[] code; delete[] code;
delete fft_if; delete fft_if;

View File

@ -101,7 +101,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) override inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm) override
{ {
channel_fsm_ = channel_fsm; channel_fsm_ = channel_fsm;
acquisition_fpga_->set_channel_fsm(channel_fsm); acquisition_fpga_->set_channel_fsm(channel_fsm);
@ -159,7 +159,7 @@ private:
pcps_acquisition_fpga_sptr acquisition_fpga_; pcps_acquisition_fpga_sptr acquisition_fpga_;
std::string item_type_; std::string item_type_;
uint32_t channel_; uint32_t channel_;
std::shared_ptr<ChannelFsm> channel_fsm_; std::weak_ptr<ChannelFsm> channel_fsm_;
uint32_t doppler_max_; uint32_t doppler_max_;
uint32_t doppler_step_; uint32_t doppler_step_;
std::string dump_filename_; std::string dump_filename_;

View File

@ -100,7 +100,7 @@ private:
int doppler_offset); int doppler_offset);
float estimate_input_power(gr_complex* in); float estimate_input_power(gr_complex* in);
std::shared_ptr<ChannelFsm> d_channel_fsm; std::weak_ptr<ChannelFsm> d_channel_fsm;
int64_t d_fs_in; int64_t d_fs_in;
int d_samples_per_ms; int d_samples_per_ms;
int d_sampled_ms; int d_sampled_ms;
@ -216,7 +216,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm)
{ {
d_channel_fsm = channel_fsm; d_channel_fsm = channel_fsm;
} }

View File

@ -118,7 +118,7 @@ private:
int32_t d_state; int32_t d_state;
bool d_dump; bool d_dump;
uint32_t d_channel; uint32_t d_channel;
std::shared_ptr<ChannelFsm> d_channel_fsm; std::weak_ptr<ChannelFsm> d_channel_fsm;
std::string d_dump_filename; std::string d_dump_filename;
public: public:
@ -186,7 +186,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm)
{ {
d_channel_fsm = channel_fsm; d_channel_fsm = channel_fsm;
} }

View File

@ -429,10 +429,11 @@ void pcps_acquisition::send_positive_acquisition()
<< ", magnitude " << d_mag << ", magnitude " << d_mag
<< ", input signal power " << d_input_power; << ", input signal power " << d_input_power;
d_positive_acq = 1; d_positive_acq = 1;
if (d_channel_fsm)
if (!d_channel_fsm.expired())
{ {
//the channel FSM is set, so, notify it directly the positive acquisition to minimize delays //the channel FSM is set, so, notify it directly the positive acquisition to minimize delays
d_channel_fsm->Event_valid_acquisition(); d_channel_fsm.lock()->Event_valid_acquisition();
} }
else else
{ {

View File

@ -124,7 +124,7 @@ private:
int64_t d_old_freq; int64_t d_old_freq;
int32_t d_state; int32_t d_state;
uint32_t d_channel; uint32_t d_channel;
std::shared_ptr<ChannelFsm> d_channel_fsm; std::weak_ptr<ChannelFsm> d_channel_fsm;
uint32_t d_doppler_step; uint32_t d_doppler_step;
float d_doppler_center_step_two; float d_doppler_center_step_two;
uint32_t d_num_noncoherent_integrations_counter; uint32_t d_num_noncoherent_integrations_counter;
@ -213,7 +213,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm)
{ {
d_channel_fsm = channel_fsm; d_channel_fsm = channel_fsm;
} }

View File

@ -122,7 +122,7 @@ private:
int d_n_samples_in_buffer; int d_n_samples_in_buffer;
bool d_dump; bool d_dump;
unsigned int d_channel; unsigned int d_channel;
std::shared_ptr<ChannelFsm> d_channel_fsm; std::weak_ptr<ChannelFsm> d_channel_fsm;
std::string d_dump_filename; std::string d_dump_filename;
@ -189,7 +189,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm)
{ {
d_channel_fsm = channel_fsm; d_channel_fsm = channel_fsm;
} }

View File

@ -111,7 +111,7 @@ private:
float d_test_statistics; float d_test_statistics;
int32_t d_state; int32_t d_state;
uint32_t d_channel; uint32_t d_channel;
std::shared_ptr<ChannelFsm> d_channel_fsm; std::weak_ptr<ChannelFsm> d_channel_fsm;
uint32_t d_doppler_step; uint32_t d_doppler_step;
uint32_t d_doppler_max; uint32_t d_doppler_max;
uint32_t d_fft_size; uint32_t d_fft_size;
@ -190,7 +190,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm)
{ {
d_channel_fsm = channel_fsm; d_channel_fsm = channel_fsm;
} }

View File

@ -138,7 +138,7 @@ private:
int32_t d_well_count; int32_t d_well_count;
bool d_dump; bool d_dump;
uint32_t d_channel; uint32_t d_channel;
std::shared_ptr<ChannelFsm> d_channel_fsm; std::weak_ptr<ChannelFsm> d_channel_fsm;
std::string d_dump_filename; std::string d_dump_filename;
public: public:
@ -199,7 +199,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm)
{ {
d_channel_fsm = channel_fsm; d_channel_fsm = channel_fsm;
} }

View File

@ -117,7 +117,7 @@ private:
int32_t d_state; int32_t d_state;
bool d_dump; bool d_dump;
uint32_t d_channel; uint32_t d_channel;
std::shared_ptr<ChannelFsm> d_channel_fsm; std::weak_ptr<ChannelFsm> d_channel_fsm;
std::string d_dump_filename; std::string d_dump_filename;
public: public:
@ -186,7 +186,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm)
{ {
d_channel_fsm = channel_fsm; d_channel_fsm = channel_fsm;
} }

View File

@ -162,7 +162,7 @@ private:
cl::CommandQueue* d_cl_queue; cl::CommandQueue* d_cl_queue;
clFFT_Plan d_cl_fft_plan; clFFT_Plan d_cl_fft_plan;
cl_int d_cl_fft_batch_size; cl_int d_cl_fft_batch_size;
std::shared_ptr<ChannelFsm> d_channel_fsm; std::weak_ptr<ChannelFsm> d_channel_fsm;
int d_opencl; int d_opencl;
public: public:
@ -230,7 +230,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm)
{ {
d_channel_fsm = channel_fsm; d_channel_fsm = channel_fsm;
} }

View File

@ -151,7 +151,7 @@ private:
int32_t d_state; int32_t d_state;
bool d_dump; bool d_dump;
uint32_t d_channel; uint32_t d_channel;
std::shared_ptr<ChannelFsm> d_channel_fsm; std::weak_ptr<ChannelFsm> d_channel_fsm;
std::string d_dump_filename; std::string d_dump_filename;
public: public:
@ -219,7 +219,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm)
{ {
d_channel_fsm = channel_fsm; d_channel_fsm = channel_fsm;
} }

View File

@ -134,7 +134,7 @@ private:
int32_t d_state; int32_t d_state;
bool d_dump; bool d_dump;
uint32_t d_channel; uint32_t d_channel;
std::shared_ptr<ChannelFsm> d_channel_fsm; std::weak_ptr<ChannelFsm> d_channel_fsm;
std::string d_dump_filename; std::string d_dump_filename;
public: public:
@ -202,7 +202,7 @@ public:
/*! /*!
* \brief Set channel fsm associated to this acquisition instance * \brief Set channel fsm associated to this acquisition instance
*/ */
inline void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) inline void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm)
{ {
d_channel_fsm = channel_fsm; d_channel_fsm = channel_fsm;
} }

View File

@ -114,7 +114,7 @@ hybrid_observables_gs::hybrid_observables_gs(uint32_t nchannels_in,
} }
} }
T_rx_TOW_ms = 0U; T_rx_TOW_ms = 0U;
T_rx_TOW_offset_ms = 0U; T_rx_step_ms = 20; //read from config at the adapter GNSS-SDR.observable_interval_ms!!
T_rx_TOW_set = false; T_rx_TOW_set = false;
// rework // rework
@ -443,38 +443,39 @@ void hybrid_observables_gs::update_TOW(const std::vector<Gnss_Synchro> &data)
//2. If the TOW is set, it must be incremented by the desired receiver time step. //2. If the TOW is set, it must be incremented by the desired receiver time step.
// the time step must match the observables timer block (connected to the las input channel) // the time step must match the observables timer block (connected to the las input channel)
std::vector<Gnss_Synchro>::const_iterator it; std::vector<Gnss_Synchro>::const_iterator it;
// if (!T_rx_TOW_set) if (!T_rx_TOW_set)
// {
//uint32_t TOW_ref = std::numeric_limits<uint32_t>::max();
uint32_t TOW_ref = 0U;
for (it = data.cbegin(); it != data.cend(); it++)
{ {
if (it->Flag_valid_word) //uint32_t TOW_ref = std::numeric_limits<uint32_t>::max();
uint32_t TOW_ref = 0U;
for (it = data.cbegin(); it != data.cend(); it++)
{ {
if (it->TOW_at_current_symbol_ms > TOW_ref) if (it->Flag_valid_word)
{ {
TOW_ref = it->TOW_at_current_symbol_ms; if (it->TOW_at_current_symbol_ms > TOW_ref)
T_rx_TOW_set = true; {
TOW_ref = it->TOW_at_current_symbol_ms;
T_rx_TOW_set = true;
}
} }
} }
T_rx_TOW_ms = TOW_ref - (TOW_ref % 20);
}
else
{
T_rx_TOW_ms += T_rx_step_ms; //the tow time step increment must match the ref time channel step
//todo: check what happens during the week rollover
if (T_rx_TOW_ms >= 604800000)
{
T_rx_TOW_ms = T_rx_TOW_ms % 604800000;
}
} }
T_rx_TOW_ms = TOW_ref;
//}
// else
// {
// T_rx_TOW_ms += T_rx_step_ms;
// //todo: check what happens during the week rollover
// if (T_rx_TOW_ms >= 604800000)
// {
// T_rx_TOW_ms = T_rx_TOW_ms % 604800000;
// }
// }
// std::cout << "T_rx_TOW_ms: " << T_rx_TOW_ms << std::endl;
} }
void hybrid_observables_gs::compute_pranges(std::vector<Gnss_Synchro> &data) void hybrid_observables_gs::compute_pranges(std::vector<Gnss_Synchro> &data)
{ {
// std::cout.precision(17);
// std::cout << " T_rx_TOW_ms: " << static_cast<double>(T_rx_TOW_ms) << std::endl;
std::vector<Gnss_Synchro>::iterator it; std::vector<Gnss_Synchro>::iterator it;
for (it = data.begin(); it != data.end(); it++) for (it = data.begin(); it != data.end(); it++)
{ {
@ -486,13 +487,21 @@ void hybrid_observables_gs::compute_pranges(std::vector<Gnss_Synchro> &data)
it->Pseudorange_m = traveltime_s * SPEED_OF_LIGHT; it->Pseudorange_m = traveltime_s * SPEED_OF_LIGHT;
it->Flag_valid_pseudorange = true; it->Flag_valid_pseudorange = true;
// debug code // debug code
// std::cout.precision(17); //
// std::cout << "[" << it->Channel_ID << "] interp_TOW_ms: " << it->interp_TOW_ms << std::endl; // std::cout << "[" << it->Channel_ID << "] interp_TOW_ms: " << it->interp_TOW_ms << std::endl;
// std::cout << "[" << it->Channel_ID << "] Diff T_rx_TOW_ms - interp_TOW_ms: " << static_cast<double>(T_rx_TOW_ms) - it->interp_TOW_ms << std::endl; // std::cout << "[" << it->Channel_ID << "] Diff T_rx_TOW_ms - interp_TOW_ms: " << static_cast<double>(T_rx_TOW_ms) - it->interp_TOW_ms << std::endl;
// std::cout << "[" << it->Channel_ID << "] Pseudorange_m: " << it->Pseudorange_m << std::endl;
} }
} }
// usleep(1000);
// for (it = data.begin(); it != data.end(); it++)
// {
// if (it->Flag_valid_word)
// {
// std::cout << "[" << it->Channel_ID << "] Pseudorange_m: " << it->Pseudorange_m << std::endl;
// }
// }
// std::cout << std::endl;
// usleep(1000);
} }
@ -548,7 +557,7 @@ int hybrid_observables_gs::general_work(int noutput_items __attribute__((unused)
for (uint32_t n = 0; n < d_nchannels_out; n++) for (uint32_t n = 0; n < d_nchannels_out; n++)
{ {
Gnss_Synchro interpolated_gnss_synchro{}; Gnss_Synchro interpolated_gnss_synchro{};
if (!interp_trk_obs(interpolated_gnss_synchro, n, d_Rx_clock_buffer.front() + T_rx_TOW_offset_ms * T_rx_clock_step_samples)) if (!interp_trk_obs(interpolated_gnss_synchro, n, d_Rx_clock_buffer.front()))
{ {
// Produce an empty observation // Produce an empty observation
interpolated_gnss_synchro = Gnss_Synchro(); interpolated_gnss_synchro = Gnss_Synchro();
@ -564,49 +573,10 @@ int hybrid_observables_gs::general_work(int noutput_items __attribute__((unused)
} }
epoch_data.push_back(interpolated_gnss_synchro); epoch_data.push_back(interpolated_gnss_synchro);
} }
if (n_valid > 0)
{
update_TOW(epoch_data);
int tow_inc_loop_count = 0;
while (T_rx_TOW_ms % 20 != 0 and tow_inc_loop_count < 20)
{
tow_inc_loop_count++;
T_rx_TOW_offset_ms++;
T_rx_TOW_offset_ms = T_rx_TOW_offset_ms % 20;
//check if effectively the receiver TOW is now multiple of 20 ms
n_valid = 0;
epoch_data.clear();
for (uint32_t n = 0; n < d_nchannels_out; n++)
{
Gnss_Synchro interpolated_gnss_synchro{};
if (!interp_trk_obs(interpolated_gnss_synchro, n, d_Rx_clock_buffer.front() + T_rx_TOW_offset_ms * T_rx_clock_step_samples))
{
// Produce an empty observation
interpolated_gnss_synchro = Gnss_Synchro();
interpolated_gnss_synchro.Flag_valid_pseudorange = false;
interpolated_gnss_synchro.Flag_valid_word = false;
interpolated_gnss_synchro.Flag_valid_acquisition = false;
interpolated_gnss_synchro.fs = 0;
interpolated_gnss_synchro.Channel_ID = n;
}
else
{
n_valid++;
}
epoch_data.push_back(interpolated_gnss_synchro);
}
update_TOW(epoch_data);
// debug code:
// if (T_rx_TOW_ms % 20 != 0)
// {
// std::cout << "Warning: RX TOW is not multiple of 20 ms\n";
// }
// std::cout << "T_rx_TOW_ms=" << T_rx_TOW_ms << " T_rx_TOW_offset_ms=" << T_rx_TOW_offset_ms << " ->" << T_rx_TOW_ms % 20 << std::endl;
}
}
if (n_valid > 0) if (n_valid > 0)
{ {
update_TOW(epoch_data);
compute_pranges(epoch_data); compute_pranges(epoch_data);
} }

View File

@ -83,7 +83,7 @@ private:
//rx time follow GPST //rx time follow GPST
bool T_rx_TOW_set; bool T_rx_TOW_set;
uint32_t T_rx_TOW_ms; uint32_t T_rx_TOW_ms;
uint32_t T_rx_TOW_offset_ms; uint32_t T_rx_step_ms;
bool d_dump; bool d_dump;
bool d_dump_mat; bool d_dump_mat;
uint32_t d_nchannels_in; uint32_t d_nchannels_in;

View File

@ -560,9 +560,6 @@ void dll_pll_veml_tracking::start_tracking()
d_carrier_phase_rate_step_rad = 0.0; d_carrier_phase_rate_step_rad = 0.0;
d_carr_ph_history.clear(); d_carr_ph_history.clear();
d_code_ph_history.clear(); d_code_ph_history.clear();
// DLL/PLL filter initialization
d_carrier_loop_filter.initialize(static_cast<float>(d_acq_carrier_doppler_hz)); // initialize the carrier filter
d_code_loop_filter.initialize(); // initialize the code filter
if (systemName == "GPS" and signal_type == "1C") if (systemName == "GPS" and signal_type == "1C")
{ {
@ -732,8 +729,14 @@ void dll_pll_veml_tracking::start_tracking()
d_current_correlation_time_s = d_code_period; d_current_correlation_time_s = d_code_period;
// Initialize tracking ==========================================
d_carrier_loop_filter.set_params(trk_parameters.fll_bw_hz, trk_parameters.pll_bw_hz, trk_parameters.pll_filter_order);
d_code_loop_filter.set_noise_bandwidth(trk_parameters.dll_bw_hz); d_code_loop_filter.set_noise_bandwidth(trk_parameters.dll_bw_hz);
d_code_loop_filter.set_update_interval(d_code_period); d_code_loop_filter.set_update_interval(d_code_period);
// DLL/PLL filter initialization
d_carrier_loop_filter.initialize(static_cast<float>(d_acq_carrier_doppler_hz)); // initialize the carrier filter
d_code_loop_filter.initialize(); // initialize the code filter
// DEBUG OUTPUT // DEBUG OUTPUT
std::cout << "Tracking of " << systemName << " " << signal_pretty_name << " signal started on channel " << d_channel << " for satellite " << Gnss_Satellite(systemName, d_acquisition_gnss_synchro->PRN) << std::endl; std::cout << "Tracking of " << systemName << " " << signal_pretty_name << " signal started on channel " << d_channel << " for satellite " << Gnss_Satellite(systemName, d_acquisition_gnss_synchro->PRN) << std::endl;

View File

@ -58,7 +58,7 @@ class AcquisitionInterface : public GNSSBlockInterface
public: public:
virtual void set_gnss_synchro(Gnss_Synchro* gnss_synchro) = 0; virtual void set_gnss_synchro(Gnss_Synchro* gnss_synchro) = 0;
virtual void set_channel(unsigned int channel_id) = 0; virtual void set_channel(unsigned int channel_id) = 0;
virtual void set_channel_fsm(std::shared_ptr<ChannelFsm> channel_fsm) = 0; virtual void set_channel_fsm(std::weak_ptr<ChannelFsm> channel_fsm) = 0;
virtual void set_threshold(float threshold) = 0; virtual void set_threshold(float threshold) = 0;
virtual void set_doppler_max(unsigned int doppler_max) = 0; virtual void set_doppler_max(unsigned int doppler_max) = 0;
virtual void set_doppler_step(unsigned int doppler_step) = 0; virtual void set_doppler_step(unsigned int doppler_step) = 0;

View File

@ -246,8 +246,8 @@ void GNSSFlowgraph::connect()
{ {
// Connect the multichannel signal source to multiple signal conditioners // Connect the multichannel signal source to multiple signal conditioners
// GNURADIO max_streams=-1 means infinite ports! // GNURADIO max_streams=-1 means infinite ports!
LOG(INFO) << "sig_source_.at(i)->get_right_block()->output_signature()->max_streams()=" << sig_source_.at(i)->get_right_block()->output_signature()->max_streams(); DLOG(INFO) << "sig_source_.at(i)->get_right_block()->output_signature()->max_streams()=" << sig_source_.at(i)->get_right_block()->output_signature()->max_streams();
LOG(INFO) << "sig_conditioner_.at(signal_conditioner_ID)->get_left_block()->input_signature()=" << sig_conditioner_.at(signal_conditioner_ID)->get_left_block()->input_signature()->max_streams(); DLOG(INFO) << "sig_conditioner_.at(signal_conditioner_ID)->get_left_block()->input_signature()=" << sig_conditioner_.at(signal_conditioner_ID)->get_left_block()->input_signature()->max_streams();
if (sig_source_.at(i)->get_right_block()->output_signature()->max_streams() > 1) if (sig_source_.at(i)->get_right_block()->output_signature()->max_streams() > 1)
{ {
@ -443,10 +443,26 @@ void GNSSFlowgraph::connect()
{ {
// create a FIR low pass filter // create a FIR low pass filter
std::vector<float> taps; std::vector<float> taps;
// float beta = 7.0;
// float halfband = 0.5;
// float fractional_bw = 0.4;
// float rate = 1.0 / static_cast<float>(decimation);
//
// float trans_width = rate * (halfband - fractional_bw);
// float mid_transition_band = rate * halfband - trans_width / 2.0;
//
// taps = gr::filter::firdes::low_pass(1.0,
// 1.0,
// mid_transition_band,
// trans_width,
// gr::filter::firdes::win_type::WIN_KAISER,
// beta);
taps = gr::filter::firdes::low_pass(1.0, taps = gr::filter::firdes::low_pass(1.0,
fs, fs,
acq_fs / 2.1, acq_fs / 2.1,
acq_fs / 10, acq_fs / 2,
gr::filter::firdes::win_type::WIN_HAMMING); gr::filter::firdes::win_type::WIN_HAMMING);
gr::basic_block_sptr fir_filter_ccf_ = gr::filter::fir_filter_ccf::make(decimation, taps); gr::basic_block_sptr fir_filter_ccf_ = gr::filter::fir_filter_ccf::make(decimation, taps);