mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2026-09-16 22:21:23 +00:00
Merge branch 'next' into has-fixes
This commit is contained in:
@@ -18,15 +18,15 @@
|
||||
#include "GPS_L1_CA.h"
|
||||
#include "acquisition_dump_reader.h"
|
||||
#include "acquisition_interface.h"
|
||||
#include "configuration_interface.h"
|
||||
#include "display.h"
|
||||
#include "file_configuration.h"
|
||||
#include "gnss_block_factory.h"
|
||||
#include "gnss_block_interface.h"
|
||||
#include "gnss_sdr_filesystem.h"
|
||||
#include "gnss_sdr_valve.h"
|
||||
#include "gnuplot_i.h"
|
||||
#include "gps_l1_ca_pcps_acquisition_fine_doppler.h"
|
||||
#include "in_memory_configuration.h"
|
||||
#include "pcps_acquisition_adapter.h"
|
||||
#include "signal_generator_flags.h"
|
||||
#include "test_flags.h"
|
||||
#include "tracking_true_obs_reader.h"
|
||||
@@ -37,6 +37,7 @@
|
||||
#include <gnuradio/top_block.h>
|
||||
#include <pmt/pmt.h>
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <thread>
|
||||
#include <utility>
|
||||
@@ -483,7 +484,7 @@ protected:
|
||||
|
||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue;
|
||||
gr::top_block_sptr top_block;
|
||||
std::shared_ptr<AcquisitionInterface> acquisition;
|
||||
std::unique_ptr<AcquisitionInterface> acquisition;
|
||||
std::shared_ptr<InMemoryConfiguration> config;
|
||||
std::shared_ptr<FileConfiguration> config_f;
|
||||
Gnss_Synchro gnss_synchro;
|
||||
@@ -806,44 +807,18 @@ int AcquisitionPerformanceTest::run_receiver()
|
||||
gnss_synchro = Gnss_Synchro();
|
||||
init();
|
||||
|
||||
int nsamples = floor(config->property("GNSS-SDR.internal_fs_sps", 2000000) * generated_signal_duration_s);
|
||||
const ConfigurationInterface* configuration = config.get();
|
||||
if (configuration == nullptr)
|
||||
{
|
||||
configuration = config_f.get();
|
||||
}
|
||||
int nsamples = floor(configuration->property("GNSS-SDR.internal_fs_sps", 2000000) * generated_signal_duration_s);
|
||||
auto valve = gnss_sdr_make_valve(sizeof(gr_complex), nsamples, queue.get());
|
||||
if (implementation == "GPS_L1_CA_PCPS_Acquisition")
|
||||
acquisition = block_factory::GetAcqBlock(configuration, "Acquisition", 1, 0);
|
||||
if (!acquisition)
|
||||
{
|
||||
acquisition = std::make_shared<PcpsAcquisitionAdapter>(config.get(), "Acquisition", implementation, 1, 0, GPS_1C);
|
||||
}
|
||||
else if (implementation == "GPS_L1_CA_PCPS_Acquisition_Fine_Doppler")
|
||||
{
|
||||
acquisition = std::make_shared<GpsL1CaPcpsAcquisitionFineDoppler>(config.get(), "Acquisition", 1, 0);
|
||||
}
|
||||
else if (implementation == "Galileo_E1_PCPS_Ambiguous_Acquisition")
|
||||
{
|
||||
acquisition = std::make_shared<PcpsAcquisitionAdapter>(config.get(), "Acquisition", implementation, 1, 0, GAL_1B);
|
||||
}
|
||||
else if (implementation == "GLONASS_L1_CA_PCPS_Acquisition")
|
||||
{
|
||||
acquisition = std::make_shared<PcpsAcquisitionAdapter>(config.get(), "Acquisition", implementation, 1, 0, GLO_1G);
|
||||
}
|
||||
else if (implementation == "GLONASS_L2_CA_PCPS_Acquisition")
|
||||
{
|
||||
acquisition = std::make_shared<PcpsAcquisitionAdapter>(config.get(), "Acquisition", implementation, 1, 0, GLO_2G);
|
||||
}
|
||||
else if (implementation == "GPS_L2_M_PCPS_Acquisition")
|
||||
{
|
||||
acquisition = std::make_shared<PcpsAcquisitionAdapter>(config.get(), "Acquisition", implementation, 1, 0, GPS_2S);
|
||||
}
|
||||
else if (implementation == "Galileo_E5a_Pcps_Acquisition")
|
||||
{
|
||||
acquisition = std::make_shared<PcpsAcquisitionAdapter>(config.get(), "Acquisition", implementation, 1, 0, GAL_E5a);
|
||||
}
|
||||
else if (implementation == "GPS_L5i_PCPS_Acquisition")
|
||||
{
|
||||
acquisition = std::make_shared<PcpsAcquisitionAdapter>(config.get(), "Acquisition", implementation, 1, 0, GPS_L5);
|
||||
}
|
||||
else
|
||||
{
|
||||
bool aux = false;
|
||||
EXPECT_EQ(true, aux);
|
||||
ADD_FAILURE() << "Unknown acquisition implementation: " << implementation;
|
||||
return -1;
|
||||
}
|
||||
|
||||
acquisition->set_gnss_synchro(&gnss_synchro);
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
#include "acquisition_interface.h"
|
||||
#include "acquisition_msg_rx.h"
|
||||
#include "dll_pll_tracking_adapter.h"
|
||||
#include "galileo_e5a_noncoherent_iq_acquisition_caf.h"
|
||||
#include "gnss_block_factory.h"
|
||||
#include "gnss_block_interface.h"
|
||||
#include "gnss_satellite.h"
|
||||
@@ -35,7 +34,6 @@
|
||||
#include "in_memory_configuration.h"
|
||||
#include "observable_tests_flags.h"
|
||||
#include "observables_dump_reader.h"
|
||||
#include "pcps_acquisition_adapter.h"
|
||||
#include "signal_generator_flags.h"
|
||||
#include "telemetry_decoder_interface.h"
|
||||
#include "test_flags.h"
|
||||
@@ -59,6 +57,7 @@
|
||||
#include <cmath>
|
||||
#include <exception>
|
||||
#include <iomanip>
|
||||
#include <memory>
|
||||
#include <unistd.h>
|
||||
#include <utility>
|
||||
#if GNSSTK_USES_GPSTK_NAMESPACE
|
||||
@@ -427,7 +426,8 @@ bool HybridObservablesTest::acquire_signal()
|
||||
config->set_property("Acquisition.dump", "false");
|
||||
config->set_property("Acquisition.dump_filename", "./data/acquisition.dat");
|
||||
|
||||
std::shared_ptr<AcquisitionInterface> acquisition;
|
||||
std::unique_ptr<AcquisitionInterface> acquisition;
|
||||
std::string acquisition_implementation;
|
||||
|
||||
std::string System_and_Signal;
|
||||
std::string signal;
|
||||
@@ -445,7 +445,7 @@ bool HybridObservablesTest::acquire_signal()
|
||||
#else
|
||||
config->set_property("Acquisition.max_dwells", std::to_string(absl::GetFlag(FLAGS_external_signal_acquisition_dwells)));
|
||||
#endif
|
||||
acquisition = std::make_shared<PcpsAcquisitionAdapter>(config.get(), "Acquisition", "GPS_L1_CA_PCPS_Acquisition", 1, 0, GPS_1C);
|
||||
acquisition_implementation = "GPS_L1_CA_PCPS_Acquisition";
|
||||
}
|
||||
else if (implementation == "Galileo_E1_DLL_PLL_VEML_Tracking")
|
||||
{
|
||||
@@ -460,7 +460,7 @@ bool HybridObservablesTest::acquire_signal()
|
||||
#else
|
||||
config->set_property("Acquisition.max_dwells", std::to_string(absl::GetFlag(FLAGS_external_signal_acquisition_dwells)));
|
||||
#endif
|
||||
acquisition = std::make_shared<PcpsAcquisitionAdapter>(config.get(), "Acquisition", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 0, GAL_1B);
|
||||
acquisition_implementation = "Galileo_E1_PCPS_Ambiguous_Acquisition";
|
||||
}
|
||||
else if (implementation == "GPS_L2_M_DLL_PLL_Tracking")
|
||||
{
|
||||
@@ -475,7 +475,7 @@ bool HybridObservablesTest::acquire_signal()
|
||||
#else
|
||||
config->set_property("Acquisition.max_dwells", std::to_string(absl::GetFlag(FLAGS_external_signal_acquisition_dwells)));
|
||||
#endif
|
||||
acquisition = std::make_shared<PcpsAcquisitionAdapter>(config.get(), "Acquisition", "GPS_L2_M_PCPS_Acquisition", 1, 0, GPS_2S);
|
||||
acquisition_implementation = "GPS_L2_M_PCPS_Acquisition";
|
||||
}
|
||||
else if (implementation == "Galileo_E5a_DLL_PLL_Tracking_b")
|
||||
{
|
||||
@@ -494,7 +494,7 @@ bool HybridObservablesTest::acquire_signal()
|
||||
config->set_property("Acquisition.CAF_window_hz", "0"); // **Only for E5a** Resolves doppler ambiguity averaging the specified BW in the winner code delay. If set to 0 CAF filter is deactivated. Recommended value 3000 Hz
|
||||
config->set_property("Acquisition.Zero_padding", "0"); // **Only for E5a** Avoids power loss and doppler ambiguity in bit transitions by correlating one code with twice the input data length, ensuring that at least one full code is present without transitions. If set to 1 it is ON, if set to 0 it is OFF.
|
||||
config->set_property("Acquisition.bit_transition_flag", "false");
|
||||
acquisition = std::make_shared<GalileoE5aNoncoherentIQAcquisitionCaf>(config.get(), "Acquisition", 1, 0);
|
||||
acquisition_implementation = "Galileo_E5a_Noncoherent_IQ_Acquisition_CAF";
|
||||
}
|
||||
|
||||
else if (implementation == "Galileo_E5a_DLL_PLL_Tracking")
|
||||
@@ -510,7 +510,7 @@ bool HybridObservablesTest::acquire_signal()
|
||||
#else
|
||||
config->set_property("Acquisition.max_dwells", std::to_string(absl::GetFlag(FLAGS_external_signal_acquisition_dwells)));
|
||||
#endif
|
||||
acquisition = std::make_shared<PcpsAcquisitionAdapter>(config.get(), "Acquisition", "Galileo_E5a_Pcps_Acquisition", 1, 0, GAL_E5a);
|
||||
acquisition_implementation = "Galileo_E5a_Pcps_Acquisition";
|
||||
}
|
||||
else if (implementation == "GPS_L5_DLL_PLL_Tracking")
|
||||
{
|
||||
@@ -525,7 +525,7 @@ bool HybridObservablesTest::acquire_signal()
|
||||
#else
|
||||
config->set_property("Acquisition.max_dwells", std::to_string(absl::GetFlag(FLAGS_external_signal_acquisition_dwells)));
|
||||
#endif
|
||||
acquisition = std::make_shared<PcpsAcquisitionAdapter>(config.get(), "Acquisition", "GPS_L5i_PCPS_Acquisition", 1, 0, GPS_L5);
|
||||
acquisition_implementation = "GPS_L5i_PCPS_Acquisition";
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -539,6 +539,14 @@ bool HybridObservablesTest::acquire_signal()
|
||||
config->set_property("Acquisition.threshold", std::to_string(absl::GetFlag(FLAGS_external_signal_acquisition_threshold)));
|
||||
#endif
|
||||
|
||||
config->set_property("Acquisition.implementation", acquisition_implementation);
|
||||
acquisition = block_factory::GetAcqBlock(config.get(), "Acquisition", 1, 0);
|
||||
if (!acquisition)
|
||||
{
|
||||
std::cout << "The test can not instantiate " << acquisition_implementation << "\n";
|
||||
throw(std::exception());
|
||||
}
|
||||
|
||||
acquisition->set_gnss_synchro(&tmp_gnss_synchro);
|
||||
acquisition->set_channel(0);
|
||||
acquisition->set_local_code();
|
||||
|
||||
@@ -24,15 +24,12 @@
|
||||
#include "acquisition_interface.h"
|
||||
#include "acquisition_msg_rx.h"
|
||||
#include "concurrent_queue.h"
|
||||
#include "galileo_e5a_noncoherent_iq_acquisition_caf.h"
|
||||
#include "gnss_block_factory.h"
|
||||
#include "gnss_block_interface.h"
|
||||
#include "gnss_sdr_filesystem.h"
|
||||
#include "gnss_sdr_valve.h"
|
||||
#include "gnuplot_i.h"
|
||||
#include "gps_l1_ca_pcps_acquisition_fine_doppler.h"
|
||||
#include "in_memory_configuration.h"
|
||||
#include "pcps_acquisition_adapter.h"
|
||||
#include "signal_generator_flags.h"
|
||||
#include "test_flags.h"
|
||||
#include "tracking_dump_reader.h"
|
||||
@@ -51,6 +48,7 @@
|
||||
#include <pmt/pmt.h>
|
||||
#include <chrono>
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
@@ -427,7 +425,8 @@ bool TrackingPullInTest::acquire_signal(int SV_ID)
|
||||
config->set_property("Acquisition.dump", "false");
|
||||
config->set_property("Acquisition.dump_filename", "./data/acquisition.dat");
|
||||
|
||||
std::shared_ptr<AcquisitionInterface> acquisition;
|
||||
std::unique_ptr<AcquisitionInterface> acquisition;
|
||||
std::string acquisition_implementation;
|
||||
|
||||
std::string System_and_Signal;
|
||||
std::string signal;
|
||||
@@ -445,8 +444,7 @@ bool TrackingPullInTest::acquire_signal(int SV_ID)
|
||||
#else
|
||||
config->set_property("Acquisition.max_dwells", std::to_string(absl::GetFlag(FLAGS_external_signal_acquisition_dwells)));
|
||||
#endif
|
||||
// acquisition = std::make_shared<GpsL1CaPcpsAcquisitionFineDoppler>(config.get(), "Acquisition", 1, 0);
|
||||
acquisition = std::make_shared<PcpsAcquisitionAdapter>(config.get(), "Acquisition", "GPS_L1_CA_PCPS_Acquisition", 1, 0, GPS_1C);
|
||||
acquisition_implementation = "GPS_L1_CA_PCPS_Acquisition";
|
||||
}
|
||||
else if (implementation == "Galileo_E1_DLL_PLL_VEML_Tracking")
|
||||
{
|
||||
@@ -461,7 +459,7 @@ bool TrackingPullInTest::acquire_signal(int SV_ID)
|
||||
#else
|
||||
config->set_property("Acquisition.max_dwells", std::to_string(absl::GetFlag(FLAGS_external_signal_acquisition_dwells)));
|
||||
#endif
|
||||
acquisition = std::make_shared<PcpsAcquisitionAdapter>(config.get(), "Acquisition", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 0, GAL_1B);
|
||||
acquisition_implementation = "Galileo_E1_PCPS_Ambiguous_Acquisition";
|
||||
}
|
||||
else if (implementation == "GPS_L2_M_DLL_PLL_Tracking")
|
||||
{
|
||||
@@ -476,7 +474,7 @@ bool TrackingPullInTest::acquire_signal(int SV_ID)
|
||||
#else
|
||||
config->set_property("Acquisition.max_dwells", std::to_string(absl::GetFlag(FLAGS_external_signal_acquisition_dwells)));
|
||||
#endif
|
||||
acquisition = std::make_shared<PcpsAcquisitionAdapter>(config.get(), "Acquisition", "GPS_L2_M_PCPS_Acquisition", 1, 0, GPS_2S);
|
||||
acquisition_implementation = "GPS_L2_M_PCPS_Acquisition";
|
||||
}
|
||||
else if (implementation == "Galileo_E5a_DLL_PLL_Tracking_b")
|
||||
{
|
||||
@@ -495,7 +493,7 @@ bool TrackingPullInTest::acquire_signal(int SV_ID)
|
||||
config->set_property("Acquisition.CAF_window_hz", "0"); // **Only for E5a** Resolves doppler ambiguity averaging the specified BW in the winner code delay. If set to 0 CAF filter is deactivated. Recommended value 3000 Hz
|
||||
config->set_property("Acquisition.Zero_padding", "0"); // **Only for E5a** Avoids power loss and doppler ambiguity in bit transitions by correlating one code with twice the input data length, ensuring that at least one full code is present without transitions. If set to 1 it is ON, if set to 0 it is OFF.
|
||||
config->set_property("Acquisition.bit_transition_flag", "false");
|
||||
acquisition = std::make_shared<GalileoE5aNoncoherentIQAcquisitionCaf>(config.get(), "Acquisition", 1, 0);
|
||||
acquisition_implementation = "Galileo_E5a_Noncoherent_IQ_Acquisition_CAF";
|
||||
}
|
||||
|
||||
else if (implementation == "Galileo_E5a_DLL_PLL_Tracking")
|
||||
@@ -511,7 +509,7 @@ bool TrackingPullInTest::acquire_signal(int SV_ID)
|
||||
#else
|
||||
config->set_property("Acquisition.max_dwells", std::to_string(absl::GetFlag(FLAGS_external_signal_acquisition_dwells)));
|
||||
#endif
|
||||
acquisition = std::make_shared<PcpsAcquisitionAdapter>(config.get(), "Acquisition", "Galileo_E5a_Pcps_Acquisition", 1, 0, GAL_E5a);
|
||||
acquisition_implementation = "Galileo_E5a_Pcps_Acquisition";
|
||||
}
|
||||
else if (implementation == "GPS_L5_DLL_PLL_Tracking")
|
||||
{
|
||||
@@ -526,7 +524,7 @@ bool TrackingPullInTest::acquire_signal(int SV_ID)
|
||||
#else
|
||||
config->set_property("Acquisition.max_dwells", std::to_string(absl::GetFlag(FLAGS_external_signal_acquisition_dwells)));
|
||||
#endif
|
||||
acquisition = std::make_shared<PcpsAcquisitionAdapter>(config.get(), "Acquisition", "GPS_L5i_PCPS_Acquisition", 1, 0, GPS_L5);
|
||||
acquisition_implementation = "GPS_L5i_PCPS_Acquisition";
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -534,6 +532,14 @@ bool TrackingPullInTest::acquire_signal(int SV_ID)
|
||||
throw(std::exception());
|
||||
}
|
||||
|
||||
config->set_property("Acquisition.implementation", acquisition_implementation);
|
||||
acquisition = block_factory::GetAcqBlock(config.get(), "Acquisition", 1, 0);
|
||||
if (!acquisition)
|
||||
{
|
||||
std::cout << "The test can not instantiate " << acquisition_implementation << "\n";
|
||||
throw(std::exception());
|
||||
}
|
||||
|
||||
acquisition->set_gnss_synchro(&tmp_gnss_synchro);
|
||||
acquisition->set_channel(0);
|
||||
acquisition->set_local_code();
|
||||
|
||||
Reference in New Issue
Block a user