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

Fix Acquisition for L2C and E1B

This commit is contained in:
Carles Fernandez 2018-07-11 14:51:34 +02:00
parent 0ad24adeab
commit 9881857fa5
5 changed files with 35 additions and 13 deletions

View File

@ -59,24 +59,23 @@ GalileoE1PcpsAmbiguousAcquisition::GalileoE1PcpsAmbiguousAcquisition(
fs_in_ = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); fs_in_ = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated);
acq_parameters.fs_in = fs_in_; acq_parameters.fs_in = fs_in_;
acq_parameters.samples_per_chip = static_cast<unsigned int>(ceil((1.0 / Galileo_E1_CODE_CHIP_RATE_HZ) * static_cast<float>(acq_parameters.fs_in))); acq_parameters.samples_per_chip = static_cast<unsigned int>(ceil((1.0 / Galileo_E1_CODE_CHIP_RATE_HZ) * static_cast<float>(acq_parameters.fs_in)));
dump_ = configuration_->property(role + ".dump", false);
acq_parameters.dump = dump_;
acq_parameters.dump_channel = configuration_->property(role + ".dump_channel", 0);
blocking_ = configuration_->property(role + ".blocking", true);
acq_parameters.blocking = blocking_;
doppler_max_ = configuration_->property(role + ".doppler_max", 5000); doppler_max_ = configuration_->property(role + ".doppler_max", 5000);
if (FLAGS_doppler_max != 0) doppler_max_ = FLAGS_doppler_max; if (FLAGS_doppler_max != 0) doppler_max_ = FLAGS_doppler_max;
acq_parameters.doppler_max = doppler_max_; acq_parameters.doppler_max = doppler_max_;
sampled_ms_ = 4; sampled_ms_ = configuration_->property(role + ".coherent_integration_time_ms", 4);
acq_parameters.sampled_ms = sampled_ms_; acq_parameters.sampled_ms = sampled_ms_;
bit_transition_flag_ = configuration_->property(role + ".bit_transition_flag", false); bit_transition_flag_ = configuration_->property(role + ".bit_transition_flag", false);
acq_parameters.bit_transition_flag = bit_transition_flag_; acq_parameters.bit_transition_flag = bit_transition_flag_;
use_CFAR_algorithm_flag_ = configuration_->property(role + ".use_CFAR_algorithm", true); //will be false in future versions use_CFAR_algorithm_flag_ = configuration_->property(role + ".use_CFAR_algorithm", true); //will be false in future versions
acq_parameters.use_CFAR_algorithm_flag = use_CFAR_algorithm_flag_; acq_parameters.use_CFAR_algorithm_flag = use_CFAR_algorithm_flag_;
acquire_pilot_ = configuration_->property(role + ".acquire_pilot", false); //will be true in future versions acquire_pilot_ = configuration_->property(role + ".acquire_pilot", false); //will be true in future versions
max_dwells_ = configuration_->property(role + ".max_dwells", 1); max_dwells_ = configuration_->property(role + ".max_dwells", 1);
acq_parameters.max_dwells = max_dwells_; acq_parameters.max_dwells = max_dwells_;
dump_ = configuration_->property(role + ".dump", false);
acq_parameters.dump = dump_;
acq_parameters.dump_channel = configuration_->property(role + ".dump_channel", 0);
blocking_ = configuration_->property(role + ".blocking", true);
acq_parameters.blocking = blocking_;
dump_filename_ = configuration_->property(role + ".dump_filename", default_dump_filename); dump_filename_ = configuration_->property(role + ".dump_filename", default_dump_filename);
acq_parameters.dump_filename = dump_filename_; acq_parameters.dump_filename = dump_filename_;
//--- Find number of samples per spreading code (4 ms) ----------------- //--- Find number of samples per spreading code (4 ms) -----------------

View File

@ -100,10 +100,10 @@ GpsL2MPcpsAcquisition::GpsL2MPcpsAcquisition(
acq_parameters.samples_per_ms = static_cast<int>(std::round(static_cast<double>(fs_in_) * 0.001)); acq_parameters.samples_per_ms = static_cast<int>(std::round(static_cast<double>(fs_in_) * 0.001));
acq_parameters.samples_per_code = code_length_; acq_parameters.samples_per_code = code_length_;
acq_parameters.it_size = item_size_; acq_parameters.it_size = item_size_;
acq_parameters.sampled_ms = 20; acq_parameters.sampled_ms = configuration_->property(role + ".coherent_integration_time_ms", 20);
acq_parameters.num_doppler_bins_step2 = configuration_->property(role + ".second_nbins", 4); acq_parameters.num_doppler_bins_step2 = configuration_->property(role + ".second_nbins", 4);
acq_parameters.doppler_step2 = configuration_->property(role + ".second_doppler_step", 125.0); acq_parameters.doppler_step2 = configuration_->property(role + ".second_doppler_step", 125.0);
acq_parameters.make_2_steps = configuration_->property(role + ".make_two_steps", true); acq_parameters.make_2_steps = configuration_->property(role + ".make_two_steps", false);
acq_parameters.blocking_on_standby = configuration_->property(role + ".blocking_on_standby", false); acq_parameters.blocking_on_standby = configuration_->property(role + ".blocking_on_standby", false);
acquisition_ = pcps_make_acquisition(acq_parameters); acquisition_ = pcps_make_acquisition(acq_parameters);
DLOG(INFO) << "acquisition(" << acquisition_->unique_id() << ")"; DLOG(INFO) << "acquisition(" << acquisition_->unique_id() << ")";

View File

@ -65,7 +65,7 @@ pcps_acquisition::pcps_acquisition(const Acq_Conf& conf_) : gr::block("pcps_acqu
d_old_freq = 0; d_old_freq = 0;
d_num_noncoherent_integrations_counter = 0; d_num_noncoherent_integrations_counter = 0;
d_consumed_samples = acq_parameters.sampled_ms * acq_parameters.samples_per_ms * (acq_parameters.bit_transition_flag ? 2 : 1); d_consumed_samples = acq_parameters.sampled_ms * acq_parameters.samples_per_ms * (acq_parameters.bit_transition_flag ? 2 : 1);
if (acq_parameters.sampled_ms == 1) if (acq_parameters.sampled_ms == (acq_parameters.samples_per_code / acq_parameters.samples_per_ms)) //
{ {
d_fft_size = d_consumed_samples; d_fft_size = d_consumed_samples;
} }
@ -205,7 +205,7 @@ void pcps_acquisition::set_local_code(std::complex<float>* code)
} }
else else
{ {
if (acq_parameters.sampled_ms == 1) if (acq_parameters.sampled_ms == (acq_parameters.samples_per_code / acq_parameters.samples_per_ms))
{ {
memcpy(d_fft_if->get_inbuf(), code, sizeof(gr_complex) * d_consumed_samples); memcpy(d_fft_if->get_inbuf(), code, sizeof(gr_complex) * d_consumed_samples);
} }

View File

@ -164,46 +164,69 @@ protected:
{ {
signal_id = "1C"; signal_id = "1C";
system_id = 'G'; system_id = 'G';
coherent_integration_time_ms = FLAGS_acq_test_coherent_time_ms;
} }
else if (implementation.compare("GPS_L1_CA_PCPS_Acquisition_Fine_Doppler") == 0) else if (implementation.compare("GPS_L1_CA_PCPS_Acquisition_Fine_Doppler") == 0)
{ {
signal_id = "1C"; signal_id = "1C";
system_id = 'G'; system_id = 'G';
coherent_integration_time_ms = FLAGS_acq_test_coherent_time_ms;
} }
else if (implementation.compare("Galileo_E1_PCPS_Ambiguous_Acquisition") == 0) else if (implementation.compare("Galileo_E1_PCPS_Ambiguous_Acquisition") == 0)
{ {
signal_id = "1B"; signal_id = "1B";
system_id = 'E'; system_id = 'E';
if (FLAGS_acq_test_coherent_time_ms == 1)
{
coherent_integration_time_ms = 4;
}
else
{
coherent_integration_time_ms = FLAGS_acq_test_coherent_time_ms;
}
} }
else if (implementation.compare("GLONASS_L1_CA_PCPS_Acquisition") == 0) else if (implementation.compare("GLONASS_L1_CA_PCPS_Acquisition") == 0)
{ {
signal_id = "1G"; signal_id = "1G";
system_id = 'R'; system_id = 'R';
coherent_integration_time_ms = FLAGS_acq_test_coherent_time_ms;
} }
else if (implementation.compare("GLONASS_L2_CA_PCPS_Acquisition") == 0) else if (implementation.compare("GLONASS_L2_CA_PCPS_Acquisition") == 0)
{ {
signal_id = "2G"; signal_id = "2G";
system_id = 'R'; system_id = 'R';
coherent_integration_time_ms = FLAGS_acq_test_coherent_time_ms;
} }
else if (implementation.compare("GPS_L2_M_PCPS_Acquisition") == 0) else if (implementation.compare("GPS_L2_M_PCPS_Acquisition") == 0)
{ {
signal_id = "2S"; signal_id = "2S";
system_id = 'G'; system_id = 'G';
if (FLAGS_acq_test_coherent_time_ms == 1)
{
coherent_integration_time_ms = 20;
}
else
{
coherent_integration_time_ms = FLAGS_acq_test_coherent_time_ms;
}
} }
else if (implementation.compare("Galileo_E5a_Pcps_Acquisition") == 0) else if (implementation.compare("Galileo_E5a_Pcps_Acquisition") == 0)
{ {
signal_id = "5X"; signal_id = "5X";
system_id = 'E'; system_id = 'E';
coherent_integration_time_ms = FLAGS_acq_test_coherent_time_ms;
} }
else if (implementation.compare("GPS_L5i_PCPS_Acquisition") == 0) else if (implementation.compare("GPS_L5i_PCPS_Acquisition") == 0)
{ {
signal_id = "L5"; signal_id = "L5";
system_id = 'G'; system_id = 'G';
coherent_integration_time_ms = FLAGS_acq_test_coherent_time_ms;
} }
else else
{ {
signal_id = "1C"; signal_id = "1C";
system_id = 'G'; system_id = 'G';
coherent_integration_time_ms = FLAGS_acq_test_coherent_time_ms;
} }
init(); init();
@ -292,7 +315,7 @@ protected:
std::string implementation = FLAGS_acq_test_implementation; std::string implementation = FLAGS_acq_test_implementation;
const double baseband_sampling_freq = static_cast<double>(FLAGS_fs_gen_sps); const double baseband_sampling_freq = static_cast<double>(FLAGS_fs_gen_sps);
const int coherent_integration_time_ms = FLAGS_acq_test_coherent_time_ms; int coherent_integration_time_ms;
const int in_acquisition = 1; const int in_acquisition = 1;
const int dump_channel = 0; const int dump_channel = 0;

View File

@ -85,7 +85,7 @@ Acquisition_2S.doppler_step=125
Acquisition_2S.use_CFAR_algorithm=false Acquisition_2S.use_CFAR_algorithm=false
Acquisition_2S.threshold=19.5 Acquisition_2S.threshold=10
Acquisition_2S.blocking=true Acquisition_2S.blocking=true