mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2025-01-18 21:23:02 +00:00
Merge Gabriel's glonass-sdr branch
This commit is contained in:
parent
fa8cb9dd5c
commit
ed021f043f
@ -266,9 +266,9 @@ float GlonassL1CaPcpsAcquisition::calculate_threshold(float pfa)
|
|||||||
unsigned int ncells = vector_length_ * frequency_bins;
|
unsigned int ncells = vector_length_ * frequency_bins;
|
||||||
double exponent = 1 / static_cast<double>(ncells);
|
double exponent = 1 / static_cast<double>(ncells);
|
||||||
double val = pow(1.0 - pfa, exponent);
|
double val = pow(1.0 - pfa, exponent);
|
||||||
double lambda = double(vector_length_);
|
double lambda = static_cast<double>(vector_length_);
|
||||||
boost::math::exponential_distribution<double> mydist (lambda);
|
boost::math::exponential_distribution<double> mydist (lambda);
|
||||||
float threshold = (float)quantile(mydist,val);
|
float threshold = static_cast<float>(quantile(mydist,val));
|
||||||
|
|
||||||
return threshold;
|
return threshold;
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ public:
|
|||||||
|
|
||||||
virtual ~GlonassL1CaPcpsAcquisition();
|
virtual ~GlonassL1CaPcpsAcquisition();
|
||||||
|
|
||||||
std::string role()
|
inline std::string role() override
|
||||||
{
|
{
|
||||||
return role_;
|
return role_;
|
||||||
}
|
}
|
||||||
@ -37,66 +37,67 @@ public:
|
|||||||
/*!
|
/*!
|
||||||
* \brief Returns "GLONASS_L1_CA_PCPS_Acquisition"
|
* \brief Returns "GLONASS_L1_CA_PCPS_Acquisition"
|
||||||
*/
|
*/
|
||||||
std::string implementation()
|
inline std::string implementation() override
|
||||||
{
|
{
|
||||||
return "GLONASS_L1_CA_PCPS_Acquisition";
|
return "GLONASS_L1_CA_PCPS_Acquisition";
|
||||||
}
|
}
|
||||||
size_t item_size()
|
|
||||||
|
inline size_t item_size() override
|
||||||
{
|
{
|
||||||
return item_size_;
|
return item_size_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void connect(gr::top_block_sptr top_block);
|
void connect(gr::top_block_sptr top_block) override;
|
||||||
void disconnect(gr::top_block_sptr top_block);
|
void disconnect(gr::top_block_sptr top_block) override;
|
||||||
gr::basic_block_sptr get_left_block();
|
gr::basic_block_sptr get_left_block() override;
|
||||||
gr::basic_block_sptr get_right_block();
|
gr::basic_block_sptr get_right_block() override;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Set acquisition/tracking common Gnss_Synchro object pointer
|
* \brief Set acquisition/tracking common Gnss_Synchro object pointer
|
||||||
* to efficiently exchange synchronization data between acquisition and
|
* to efficiently exchange synchronization data between acquisition and
|
||||||
* tracking blocks
|
* tracking blocks
|
||||||
*/
|
*/
|
||||||
void set_gnss_synchro(Gnss_Synchro* p_gnss_synchro);
|
void set_gnss_synchro(Gnss_Synchro* p_gnss_synchro) override;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Set acquisition channel unique ID
|
* \brief Set acquisition channel unique ID
|
||||||
*/
|
*/
|
||||||
void set_channel(unsigned int channel);
|
void set_channel(unsigned int channel) override;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Set statistics threshold of PCPS algorithm
|
* \brief Set statistics threshold of PCPS algorithm
|
||||||
*/
|
*/
|
||||||
void set_threshold(float threshold);
|
void set_threshold(float threshold) override;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Set maximum Doppler off grid search
|
* \brief Set maximum Doppler off grid search
|
||||||
*/
|
*/
|
||||||
void set_doppler_max(unsigned int doppler_max);
|
void set_doppler_max(unsigned int doppler_max) override;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Set Doppler steps for the grid search
|
* \brief Set Doppler steps for the grid search
|
||||||
*/
|
*/
|
||||||
void set_doppler_step(unsigned int doppler_step);
|
void set_doppler_step(unsigned int doppler_step) override;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Initializes acquisition algorithm.
|
* \brief Initializes acquisition algorithm.
|
||||||
*/
|
*/
|
||||||
void init();
|
void init() override;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Sets local code for GPS L1/CA PCPS acquisition algorithm.
|
* \brief Sets local code for GPS L1/CA PCPS acquisition algorithm.
|
||||||
*/
|
*/
|
||||||
void set_local_code();
|
void set_local_code() override;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Returns the maximum peak of grid search
|
* \brief Returns the maximum peak of grid search
|
||||||
*/
|
*/
|
||||||
signed int mag();
|
signed int mag() override;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Restart acquisition algorithm
|
* \brief Restart acquisition algorithm
|
||||||
*/
|
*/
|
||||||
void reset();
|
void reset() override;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief If state = 1, it forces the block to start acquiring from the first sample
|
* \brief If state = 1, it forces the block to start acquiring from the first sample
|
||||||
|
@ -15,7 +15,6 @@ class ConfigurationInterface;
|
|||||||
class GlonassL1CaDllPllCAidTracking : public TrackingInterface
|
class GlonassL1CaDllPllCAidTracking : public TrackingInterface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
GlonassL1CaDllPllCAidTracking(ConfigurationInterface* configuration,
|
GlonassL1CaDllPllCAidTracking(ConfigurationInterface* configuration,
|
||||||
std::string role,
|
std::string role,
|
||||||
unsigned int in_streams,
|
unsigned int in_streams,
|
||||||
@ -23,40 +22,39 @@ public:
|
|||||||
|
|
||||||
virtual ~GlonassL1CaDllPllCAidTracking();
|
virtual ~GlonassL1CaDllPllCAidTracking();
|
||||||
|
|
||||||
std::string role()
|
inline std::string role() override
|
||||||
{
|
{
|
||||||
return role_;
|
return role_;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Returns "GLONASS_L1_CA_DLL_PLL_C_Aid_Tracking"
|
//! Returns "GLONASS_L1_CA_DLL_PLL_C_Aid_Tracking"
|
||||||
std::string implementation()
|
inline std::string implementation() override
|
||||||
{
|
{
|
||||||
return "GLONASS_L1_CA_DLL_PLL_C_Aid_Tracking";
|
return "GLONASS_L1_CA_DLL_PLL_C_Aid_Tracking";
|
||||||
}
|
}
|
||||||
size_t item_size()
|
|
||||||
|
inline size_t item_size() override
|
||||||
{
|
{
|
||||||
return item_size_;
|
return item_size_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void connect(gr::top_block_sptr top_block);
|
void connect(gr::top_block_sptr top_block) override;
|
||||||
void disconnect(gr::top_block_sptr top_block);
|
void disconnect(gr::top_block_sptr top_block) override;
|
||||||
gr::basic_block_sptr get_left_block();
|
gr::basic_block_sptr get_left_block() override;
|
||||||
gr::basic_block_sptr get_right_block();
|
gr::basic_block_sptr get_right_block() override;
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Set tracking channel unique ID
|
* \brief Set tracking channel unique ID
|
||||||
*/
|
*/
|
||||||
void set_channel(unsigned int channel);
|
void set_channel(unsigned int channel) override;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Set acquisition/tracking common Gnss_Synchro object pointer
|
* \brief Set acquisition/tracking common Gnss_Synchro object pointer
|
||||||
* to efficiently exchange synchronization data between acquisition and tracking blocks
|
* to efficiently exchange synchronization data between acquisition and tracking blocks
|
||||||
*/
|
*/
|
||||||
void set_gnss_synchro(Gnss_Synchro* p_gnss_synchro);
|
void set_gnss_synchro(Gnss_Synchro* p_gnss_synchro) override;
|
||||||
|
|
||||||
|
void start_tracking() override;
|
||||||
void start_tracking();
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
glonass_l1_ca_dll_pll_c_aid_tracking_cc_sptr tracking_cc;
|
glonass_l1_ca_dll_pll_c_aid_tracking_cc_sptr tracking_cc;
|
||||||
|
@ -59,39 +59,39 @@ public:
|
|||||||
|
|
||||||
virtual ~GlonassL1CaDllPllTracking();
|
virtual ~GlonassL1CaDllPllTracking();
|
||||||
|
|
||||||
std::string role()
|
inline std::string role() override
|
||||||
{
|
{
|
||||||
return role_;
|
return role_;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! Returns "GLONASS_L1_CA_DLL_PLL_Tracking"
|
//! Returns "GLONASS_L1_CA_DLL_PLL_Tracking"
|
||||||
std::string implementation()
|
inline std::string implementation() override
|
||||||
{
|
{
|
||||||
return "GLONASS_L1_CA_DLL_PLL_Tracking";
|
return "GLONASS_L1_CA_DLL_PLL_Tracking";
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t item_size()
|
inline size_t item_size() override
|
||||||
{
|
{
|
||||||
return item_size_;
|
return item_size_;
|
||||||
}
|
}
|
||||||
|
|
||||||
void connect(gr::top_block_sptr top_block);
|
void connect(gr::top_block_sptr top_block) override;
|
||||||
void disconnect(gr::top_block_sptr top_block);
|
void disconnect(gr::top_block_sptr top_block) override;
|
||||||
gr::basic_block_sptr get_left_block();
|
gr::basic_block_sptr get_left_block() override;
|
||||||
gr::basic_block_sptr get_right_block();
|
gr::basic_block_sptr get_right_block() override;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Set tracking channel unique ID
|
* \brief Set tracking channel unique ID
|
||||||
*/
|
*/
|
||||||
void set_channel(unsigned int channel);
|
void set_channel(unsigned int channel) override;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Set acquisition/tracking common Gnss_Synchro object pointer
|
* \brief Set acquisition/tracking common Gnss_Synchro object pointer
|
||||||
* to efficiently exchange synchronization data between acquisition and tracking blocks
|
* to efficiently exchange synchronization data between acquisition and tracking blocks
|
||||||
*/
|
*/
|
||||||
void set_gnss_synchro(Gnss_Synchro* p_gnss_synchro);
|
void set_gnss_synchro(Gnss_Synchro* p_gnss_synchro) override;
|
||||||
|
|
||||||
void start_tracking();
|
void start_tracking() override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
glonass_l1_ca_dll_pll_tracking_cc_sptr tracking_;
|
glonass_l1_ca_dll_pll_tracking_cc_sptr tracking_;
|
||||||
|
@ -286,8 +286,8 @@ int glonass_l1_ca_dll_pll_c_aid_tracking_cc::general_work (int noutput_items __a
|
|||||||
gr_vector_const_void_star &input_items, gr_vector_void_star &output_items)
|
gr_vector_const_void_star &input_items, gr_vector_void_star &output_items)
|
||||||
{
|
{
|
||||||
// Block input data and block output stream pointers
|
// Block input data and block output stream pointers
|
||||||
const gr_complex* in = (gr_complex*) input_items[0]; //PRN start block alignment
|
const gr_complex* in = reinterpret_cast<const gr_complex*>(input_items[0]); //PRN start block alignment
|
||||||
Gnss_Synchro **out = (Gnss_Synchro **) &output_items[0];
|
Gnss_Synchro **out = reinterpret_cast<Gnss_Synchro **>(&output_items[0]);
|
||||||
|
|
||||||
// GNSS_SYNCHRO OBJECT to interchange data between tracking->telemetry_decoder
|
// GNSS_SYNCHRO OBJECT to interchange data between tracking->telemetry_decoder
|
||||||
Gnss_Synchro current_synchro_data = Gnss_Synchro();
|
Gnss_Synchro current_synchro_data = Gnss_Synchro();
|
||||||
|
@ -270,8 +270,8 @@ int Glonass_L1_Ca_Dll_Pll_Tracking_cc::general_work (int noutput_items __attribu
|
|||||||
double code_error_filt_chips = 0.0;
|
double code_error_filt_chips = 0.0;
|
||||||
|
|
||||||
// Block input data and block output stream pointers
|
// Block input data and block output stream pointers
|
||||||
const gr_complex* in = (gr_complex*) input_items[0]; //PRN start block alignment
|
const gr_complex* in = reinterpret_cast<const gr_complex*>(input_items[0]); // PRN start block alignment
|
||||||
Gnss_Synchro **out = (Gnss_Synchro **) &output_items[0];
|
Gnss_Synchro **out = reinterpret_cast<Gnss_Synchro **>(&output_items[0]);
|
||||||
|
|
||||||
// GNSS_SYNCHRO OBJECT to interchange data between tracking->telemetry_decoder
|
// GNSS_SYNCHRO OBJECT to interchange data between tracking->telemetry_decoder
|
||||||
Gnss_Synchro current_synchro_data = Gnss_Synchro();
|
Gnss_Synchro current_synchro_data = Gnss_Synchro();
|
||||||
|
Loading…
Reference in New Issue
Block a user