diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fine_doppler_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fine_doppler_cc.cc index 80028c607..a2d4541ae 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fine_doppler_cc.cc +++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fine_doppler_cc.cc @@ -47,10 +47,10 @@ #include #include #include -#include #include // std::rotate, std::fill_n #include #include +#include #if HAS_STD_FILESYSTEM #if HAS_STD_FILESYSTEM_EXPERIMENTAL @@ -87,12 +87,9 @@ pcps_acquisition_fine_doppler_cc::pcps_acquisition_fine_doppler_cc(const Acq_Con d_max_dwells = conf_.max_dwells; d_gnuradio_forecast_samples = d_fft_size; d_state = 0; - d_carrier = static_cast(volk_gnsssdr_malloc(d_fft_size * sizeof(gr_complex), volk_gnsssdr_get_alignment())); - d_fft_codes = static_cast(volk_gnsssdr_malloc(d_fft_size * sizeof(gr_complex), volk_gnsssdr_get_alignment())); - d_magnitude = static_cast(volk_gnsssdr_malloc(d_fft_size * sizeof(float), volk_gnsssdr_get_alignment())); - - d_10_ms_buffer = static_cast(volk_gnsssdr_malloc(50 * d_samples_per_ms * sizeof(gr_complex), volk_gnsssdr_get_alignment())); - + d_fft_codes.resize(d_fft_size); + d_magnitude.resize(d_fft_size); + d_10_ms_buffer.resize(50 * d_samples_per_ms); // Direct FFT d_fft_if = std::make_shared(d_fft_size, true); @@ -175,7 +172,7 @@ void pcps_acquisition_fine_doppler_cc::set_doppler_step(unsigned int doppler_ste d_num_doppler_points = floor(std::abs(2 * d_config_doppler_max) / d_doppler_step); - d_grid_data = std::vector>(d_num_doppler_points, std::vector(d_fft_size)); + d_grid_data = volk_gnsssdr::vector>(d_num_doppler_points, volk_gnsssdr::vector(d_fft_size)); if (d_dump) { @@ -186,21 +183,12 @@ void pcps_acquisition_fine_doppler_cc::set_doppler_step(unsigned int doppler_ste } -pcps_acquisition_fine_doppler_cc::~pcps_acquisition_fine_doppler_cc() -{ - volk_gnsssdr_free(d_carrier); - volk_gnsssdr_free(d_fft_codes); - volk_gnsssdr_free(d_magnitude); - volk_gnsssdr_free(d_10_ms_buffer); -} - - void pcps_acquisition_fine_doppler_cc::set_local_code(std::complex *code) { memcpy(d_fft_if->get_inbuf(), code, sizeof(gr_complex) * d_fft_size); d_fft_if->execute(); // We need the FFT of local code // Conjugate the local code - volk_32fc_conjugate_32fc(d_fft_codes, d_fft_if->get_outbuf(), d_fft_size); + volk_32fc_conjugate_32fc(d_fft_codes.data(), d_fft_if->get_outbuf(), d_fft_size); } @@ -247,7 +235,7 @@ void pcps_acquisition_fine_doppler_cc::update_carrier_wipeoff() // create the carrier Doppler wipeoff signals int doppler_hz; float phase_step_rad; - d_grid_doppler_wipeoffs = std::vector>>(d_num_doppler_points, std::vector>(d_fft_size)); + d_grid_doppler_wipeoffs = volk_gnsssdr::vector>>(d_num_doppler_points, volk_gnsssdr::vector>(d_fft_size)); for (int doppler_index = 0; doppler_index < d_num_doppler_points; doppler_index++) { doppler_hz = d_doppler_step * doppler_index - d_config_doppler_max; @@ -338,8 +326,8 @@ float pcps_acquisition_fine_doppler_cc::estimate_input_power(gr_vector_const_voi const auto *in = reinterpret_cast(input_items[0]); // Get the input samples pointer // Compute the input signal power estimation float power = 0; - volk_32fc_magnitude_squared_32f(d_magnitude, in, d_fft_size); - volk_32f_accumulator_s32f(&power, d_magnitude, d_fft_size); + volk_32fc_magnitude_squared_32f(d_magnitude.data(), in, d_fft_size); + volk_32f_accumulator_s32f(&power, d_magnitude.data(), d_fft_size); power /= static_cast(d_fft_size); return power; } @@ -357,7 +345,7 @@ int pcps_acquisition_fine_doppler_cc::compute_and_accumulate_grid(gr_vector_cons << ", doppler_step: " << d_doppler_step; // 2- Doppler frequency search loop - auto *p_tmp_vector = static_cast(volk_gnsssdr_malloc(d_fft_size * sizeof(float), volk_gnsssdr_get_alignment())); + volk_gnsssdr::vector p_tmp_vector(d_fft_size); for (int doppler_index = 0; doppler_index < d_num_doppler_points; doppler_index++) { @@ -371,18 +359,17 @@ int pcps_acquisition_fine_doppler_cc::compute_and_accumulate_grid(gr_vector_cons // Multiply carrier wiped--off, Fourier transformed incoming signal // with the local FFT'd code reference using SIMD operations with VOLK library - volk_32fc_x2_multiply_32fc(d_ifft->get_inbuf(), d_fft_if->get_outbuf(), d_fft_codes, d_fft_size); + volk_32fc_x2_multiply_32fc(d_ifft->get_inbuf(), d_fft_if->get_outbuf(), d_fft_codes.data(), d_fft_size); // compute the inverse FFT d_ifft->execute(); // save the grid matrix delay file - volk_32fc_magnitude_squared_32f(p_tmp_vector, d_ifft->get_outbuf(), d_fft_size); + volk_32fc_magnitude_squared_32f(p_tmp_vector.data(), d_ifft->get_outbuf(), d_fft_size); // accumulate grid values - volk_32f_x2_add_32f(d_grid_data[doppler_index].data(), d_grid_data[doppler_index].data(), p_tmp_vector, d_fft_size); + volk_32f_x2_add_32f(d_grid_data[doppler_index].data(), d_grid_data[doppler_index].data(), p_tmp_vector.data(), d_fft_size); } - volk_gnsssdr_free(p_tmp_vector); return d_fft_size; // debug // std::cout << "iff=["; @@ -408,39 +395,38 @@ int pcps_acquisition_fine_doppler_cc::estimate_Doppler() std::fill_n(fft_operator->get_inbuf(), fft_size_extended, gr_complex(0.0, 0.0)); // 1. generate local code aligned with the acquisition code phase estimation - auto *code_replica = static_cast(volk_gnsssdr_malloc(signal_samples * sizeof(gr_complex), volk_gnsssdr_get_alignment())); + volk_gnsssdr::vector code_replica(signal_samples); - gps_l1_ca_code_gen_complex_sampled(gsl::span(code_replica, signal_samples * sizeof(gr_complex)), d_gnss_synchro->PRN, d_fs_in, 0); + gps_l1_ca_code_gen_complex_sampled(code_replica, d_gnss_synchro->PRN, d_fs_in, 0); int shift_index = static_cast(d_gnss_synchro->Acq_delay_samples); // Rotate to align the local code replica using acquisition time delay estimation if (shift_index != 0) { - std::rotate(code_replica, code_replica + (d_fft_size - shift_index), code_replica + d_fft_size - 1); + std::rotate(code_replica.data(), code_replica.data() + (d_fft_size - shift_index), code_replica.data() + d_fft_size - 1); } for (int n = 0; n < prn_replicas - 1; n++) { - memcpy(&code_replica[(n + 1) * d_fft_size], code_replica, d_fft_size * sizeof(gr_complex)); + memcpy(&code_replica[(n + 1) * d_fft_size], code_replica.data(), d_fft_size * sizeof(gr_complex)); } // 2. Perform code wipe-off - volk_32fc_x2_multiply_32fc(fft_operator->get_inbuf(), d_10_ms_buffer, code_replica, signal_samples); + volk_32fc_x2_multiply_32fc(fft_operator->get_inbuf(), d_10_ms_buffer.data(), code_replica.data(), signal_samples); // 3. Perform the FFT (zero padded!) fft_operator->execute(); // 4. Compute the magnitude and find the maximum - auto *p_tmp_vector = static_cast(volk_gnsssdr_malloc(fft_size_extended * sizeof(float), volk_gnsssdr_get_alignment())); - - volk_32fc_magnitude_squared_32f(p_tmp_vector, fft_operator->get_outbuf(), fft_size_extended); + volk_gnsssdr::vector p_tmp_vector(fft_size_extended); + volk_32fc_magnitude_squared_32f(p_tmp_vector.data(), fft_operator->get_outbuf(), fft_size_extended); uint32_t tmp_index_freq = 0; - volk_gnsssdr_32f_index_max_32u(&tmp_index_freq, p_tmp_vector, fft_size_extended); + volk_gnsssdr_32f_index_max_32u(&tmp_index_freq, p_tmp_vector.data(), fft_size_extended); // case even int counter = 0; - auto fftFreqBins = std::vector(fft_size_extended); + auto fftFreqBins = volk_gnsssdr::vector(fft_size_extended); for (int k = 0; k < (fft_size_extended / 2); k++) { @@ -466,9 +452,6 @@ int pcps_acquisition_fine_doppler_cc::estimate_Doppler() DLOG(INFO) << "Error estimating fine frequency Doppler"; } - // free memory!! - volk_gnsssdr_free(code_replica); - volk_gnsssdr_free(p_tmp_vector); return d_fft_size; } diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fine_doppler_cc.h b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fine_doppler_cc.h index 92b2d6e93..981f6a975 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fine_doppler_cc.h +++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fine_doppler_cc.h @@ -60,12 +60,12 @@ #include #include #include +#include // for volk_gnsssdr::vector #include #include #include #include #include -#include class pcps_acquisition_fine_doppler_cc; @@ -83,7 +83,7 @@ public: /*! * \brief Default destructor. */ - ~pcps_acquisition_fine_doppler_cc(); + ~pcps_acquisition_fine_doppler_cc() = default; /*! * \brief Set acquisition/tracking common Gnss_Synchro object pointer @@ -192,8 +192,7 @@ public: gr_vector_void_star& output_items); private: - friend pcps_acquisition_fine_doppler_cc_sptr - pcps_make_acquisition_fine_doppler_cc(const Acq_Conf& conf_); + friend pcps_acquisition_fine_doppler_cc_sptr pcps_make_acquisition_fine_doppler_cc(const Acq_Conf& conf_); explicit pcps_acquisition_fine_doppler_cc(const Acq_Conf& conf_); int compute_and_accumulate_grid(gr_vector_const_void_star& input_items); @@ -215,12 +214,11 @@ private: int d_doppler_step; unsigned int d_fft_size; uint64_t d_sample_counter; - gr_complex* d_carrier; - gr_complex* d_fft_codes; - gr_complex* d_10_ms_buffer; - float* d_magnitude; - std::vector> d_grid_data; - std::vector>> d_grid_doppler_wipeoffs; + volk_gnsssdr::vector d_fft_codes; + volk_gnsssdr::vector d_10_ms_buffer; + volk_gnsssdr::vector d_magnitude; + volk_gnsssdr::vector> d_grid_data; + volk_gnsssdr::vector>> d_grid_doppler_wipeoffs; std::shared_ptr d_fft_if; std::shared_ptr d_ifft; Gnss_Synchro* d_gnss_synchro; diff --git a/src/algorithms/tracking/gnuradio_blocks/galileo_e1_tcp_connector_tracking_cc.cc b/src/algorithms/tracking/gnuradio_blocks/galileo_e1_tcp_connector_tracking_cc.cc index b4e9d9e1f..dfe543d31 100644 --- a/src/algorithms/tracking/gnuradio_blocks/galileo_e1_tcp_connector_tracking_cc.cc +++ b/src/algorithms/tracking/gnuradio_blocks/galileo_e1_tcp_connector_tracking_cc.cc @@ -117,11 +117,11 @@ Galileo_E1_Tcp_Connector_Tracking_cc::Galileo_E1_Tcp_Connector_Tracking_cc( // Initialization of local code replica // Get space for a vector with the sinboc(1,1) replica sampled 2x/chip - d_ca_code.reserve(2 * GALILEO_E1_B_CODE_LENGTH_CHIPS); + d_ca_code.resize(2 * GALILEO_E1_B_CODE_LENGTH_CHIPS); // correlator outputs (scalar) d_n_correlator_taps = 5; // Very-Early, Early, Prompt, Late, Very-Late - d_correlator_outs.reserve(d_n_correlator_taps); + d_correlator_outs.resize(d_n_correlator_taps); std::fill_n(d_correlator_outs.begin(), d_n_correlator_taps, gr_complex(0.0, 0.0)); // map memory pointers of correlator outputs d_Very_Early = &d_correlator_outs[0]; @@ -130,7 +130,7 @@ Galileo_E1_Tcp_Connector_Tracking_cc::Galileo_E1_Tcp_Connector_Tracking_cc( d_Late = &d_correlator_outs[3]; d_Very_Late = &d_correlator_outs[4]; - d_local_code_shift_chips.reserve(d_n_correlator_taps); + d_local_code_shift_chips.resize(d_n_correlator_taps); // Set TAPs delay values [chips] d_local_code_shift_chips[0] = -d_very_early_late_spc_chips; d_local_code_shift_chips[1] = -d_early_late_spc_chips; @@ -161,7 +161,7 @@ Galileo_E1_Tcp_Connector_Tracking_cc::Galileo_E1_Tcp_Connector_Tracking_cc( // CN0 estimation and lock detector buffers d_cn0_estimation_counter = 0; - d_Prompt_buffer = volk_gnsssdr::vector(FLAGS_cn0_samples); + d_Prompt_buffer.resize(FLAGS_cn0_samples); d_carrier_lock_test = 1; d_CN0_SNV_dB_Hz = 0; d_carrier_lock_fail_counter = 0; diff --git a/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_c_aid_tracking_cc.cc b/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_c_aid_tracking_cc.cc index 84e81a8de..eb1cc3947 100644 --- a/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_c_aid_tracking_cc.cc +++ b/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_c_aid_tracking_cc.cc @@ -62,8 +62,7 @@ #define CN0_ESTIMATION_SAMPLES 10 -glonass_l1_ca_dll_pll_c_aid_tracking_cc_sptr -glonass_l1_ca_dll_pll_c_aid_make_tracking_cc( +glonass_l1_ca_dll_pll_c_aid_tracking_cc_sptr glonass_l1_ca_dll_pll_c_aid_make_tracking_cc( int64_t fs_in, uint32_t vector_length, bool dump, @@ -145,14 +144,14 @@ glonass_l1_ca_dll_pll_c_aid_tracking_cc::glonass_l1_ca_dll_pll_c_aid_tracking_cc // Initialization of local code replica // Get space for a vector with the C/A code replica sampled 1x/chip - d_ca_code.reserve(static_cast(GLONASS_L1_CA_CODE_LENGTH_CHIPS)); + d_ca_code.resize(static_cast(GLONASS_L1_CA_CODE_LENGTH_CHIPS)); // correlator outputs (scalar) d_n_correlator_taps = 3; // Early, Prompt, and Late - d_correlator_outs.reserve(d_n_correlator_taps); + d_correlator_outs.resize(d_n_correlator_taps); std::fill_n(d_correlator_outs.begin(), d_n_correlator_taps, gr_complex(0.0, 0.0)); - d_local_code_shift_chips.reserve(d_n_correlator_taps); + d_local_code_shift_chips.resize(d_n_correlator_taps); // Set TAPs delay values [chips] d_local_code_shift_chips[0] = -d_early_late_spc_chips; d_local_code_shift_chips[1] = 0.0; @@ -176,7 +175,7 @@ glonass_l1_ca_dll_pll_c_aid_tracking_cc::glonass_l1_ca_dll_pll_c_aid_tracking_cc // CN0 estimation and lock detector buffers d_cn0_estimation_counter = 0; - d_Prompt_buffer.reserve(FLAGS_cn0_samples); + d_Prompt_buffer.resize(FLAGS_cn0_samples); d_carrier_lock_test = 1; d_CN0_SNV_dB_Hz = 0; d_carrier_lock_fail_counter = 0; @@ -274,7 +273,7 @@ void glonass_l1_ca_dll_pll_c_aid_tracking_cc::start_tracking() d_code_loop_filter.initialize(); // initialize the code filter // generate local reference ALWAYS starting at chip 1 (1 sample per chip) - glonass_l1_ca_code_gen_complex(d_ca_code, 0); + glonass_l1_ca_code_gen_complex(gsl::span(d_ca_code.data(), GLONASS_L1_CA_CODE_LENGTH_CHIPS), 0); multicorrelator_cpu.set_local_code_and_taps(static_cast(GLONASS_L1_CA_CODE_LENGTH_CHIPS), d_ca_code.data(), d_local_code_shift_chips.data()); std::fill_n(d_correlator_outs.begin(), d_n_correlator_taps, gr_complex(0.0, 0.0)); diff --git a/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_c_aid_tracking_sc.cc b/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_c_aid_tracking_sc.cc index 4cd642a0d..665b272a3 100644 --- a/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_c_aid_tracking_sc.cc +++ b/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_c_aid_tracking_sc.cc @@ -60,8 +60,7 @@ #define CN0_ESTIMATION_SAMPLES 10 -glonass_l1_ca_dll_pll_c_aid_tracking_sc_sptr -glonass_l1_ca_dll_pll_c_aid_make_tracking_sc( +glonass_l1_ca_dll_pll_c_aid_tracking_sc_sptr glonass_l1_ca_dll_pll_c_aid_make_tracking_sc( int64_t fs_in, uint32_t vector_length, bool dump, @@ -141,16 +140,16 @@ glonass_l1_ca_dll_pll_c_aid_tracking_sc::glonass_l1_ca_dll_pll_c_aid_tracking_sc // Initialization of local code replica // Get space for a vector with the C/A code replica sampled 1x/chip - d_ca_code.reserve(static_cast(GLONASS_L1_CA_CODE_LENGTH_CHIPS)); - d_ca_code_16sc.reserve(static_cast(GLONASS_L1_CA_CODE_LENGTH_CHIPS)); + d_ca_code.resize(static_cast(GLONASS_L1_CA_CODE_LENGTH_CHIPS)); + d_ca_code_16sc.resize(static_cast(GLONASS_L1_CA_CODE_LENGTH_CHIPS)); // correlator outputs (scalar) d_n_correlator_taps = 3; // Early, Prompt, and Late - d_correlator_outs_16sc.reserve(d_n_correlator_taps); + d_correlator_outs_16sc.resize(d_n_correlator_taps); std::fill_n(d_correlator_outs_16sc.begin(), d_n_correlator_taps, lv_cmake(0, 0)); - d_local_code_shift_chips.reserve(d_n_correlator_taps); + d_local_code_shift_chips.resize(d_n_correlator_taps); // Set TAPs delay values [chips] d_local_code_shift_chips[0] = -d_early_late_spc_chips; d_local_code_shift_chips[1] = 0.0; @@ -174,7 +173,7 @@ glonass_l1_ca_dll_pll_c_aid_tracking_sc::glonass_l1_ca_dll_pll_c_aid_tracking_sc // CN0 estimation and lock detector buffers d_cn0_estimation_counter = 0; - d_Prompt_buffer.reserve(FLAGS_cn0_samples); + d_Prompt_buffer.resize(FLAGS_cn0_samples); d_carrier_lock_test = 1; d_CN0_SNV_dB_Hz = 0; d_carrier_lock_fail_counter = 0; diff --git a/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_tracking_cc.cc b/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_tracking_cc.cc index a9173b9e6..c680a6e09 100644 --- a/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_tracking_cc.cc +++ b/src/algorithms/tracking/gnuradio_blocks/glonass_l1_ca_dll_pll_tracking_cc.cc @@ -57,8 +57,7 @@ #define CN0_ESTIMATION_SAMPLES 10 -glonass_l1_ca_dll_pll_tracking_cc_sptr -glonass_l1_ca_dll_pll_make_tracking_cc( +glonass_l1_ca_dll_pll_tracking_cc_sptr glonass_l1_ca_dll_pll_make_tracking_cc( int64_t fs_in, uint32_t vector_length, bool dump, @@ -111,14 +110,14 @@ Glonass_L1_Ca_Dll_Pll_Tracking_cc::Glonass_L1_Ca_Dll_Pll_Tracking_cc( // Initialization of local code replica // Get space for a vector with the C/A code replica sampled 1x/chip - d_ca_code.reserve(static_cast(GLONASS_L1_CA_CODE_LENGTH_CHIPS)); + d_ca_code.resize(static_cast(GLONASS_L1_CA_CODE_LENGTH_CHIPS)); // correlator outputs (scalar) d_n_correlator_taps = 3; // Early, Prompt, and Late - d_correlator_outs.reserve(d_n_correlator_taps); + d_correlator_outs.resize(d_n_correlator_taps); std::fill_n(d_correlator_outs.begin(), d_n_correlator_taps, gr_complex(0.0, 0.0)); - d_local_code_shift_chips.reserve(d_n_correlator_taps); + d_local_code_shift_chips.resize(d_n_correlator_taps); // Set TAPs delay values [chips] d_local_code_shift_chips[0] = -d_early_late_spc_chips; d_local_code_shift_chips[1] = 0.0; @@ -144,7 +143,7 @@ Glonass_L1_Ca_Dll_Pll_Tracking_cc::Glonass_L1_Ca_Dll_Pll_Tracking_cc( // CN0 estimation and lock detector buffers d_cn0_estimation_counter = 0; - d_Prompt_buffer.reserve(FLAGS_cn0_samples); + d_Prompt_buffer.resize(FLAGS_cn0_samples); d_carrier_lock_test = 1; d_CN0_SNV_dB_Hz = 0; d_carrier_lock_fail_counter = 0; @@ -226,6 +225,7 @@ void Glonass_L1_Ca_Dll_Pll_Tracking_cc::start_tracking() d_code_loop_filter.initialize(); // initialize the code filter // generate local reference ALWAYS starting at chip 1 (1 sample per chip) + //glonass_l1_ca_code_gen_complex(gsl::span(d_ca_code.data(), GLONASS_L1_CA_CODE_LENGTH_CHIPS), 0); glonass_l1_ca_code_gen_complex(d_ca_code, 0); multicorrelator_cpu.set_local_code_and_taps(static_cast(GLONASS_L1_CA_CODE_LENGTH_CHIPS), d_ca_code.data(), d_local_code_shift_chips.data()); diff --git a/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_c_aid_tracking_cc.cc b/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_c_aid_tracking_cc.cc index 3f1d5c25d..df835f078 100644 --- a/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_c_aid_tracking_cc.cc +++ b/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_c_aid_tracking_cc.cc @@ -58,8 +58,7 @@ #define CN0_ESTIMATION_SAMPLES 10 -glonass_l2_ca_dll_pll_c_aid_tracking_cc_sptr -glonass_l2_ca_dll_pll_c_aid_make_tracking_cc( +glonass_l2_ca_dll_pll_c_aid_tracking_cc_sptr glonass_l2_ca_dll_pll_c_aid_make_tracking_cc( int64_t fs_in, uint32_t vector_length, bool dump, @@ -141,14 +140,14 @@ glonass_l2_ca_dll_pll_c_aid_tracking_cc::glonass_l2_ca_dll_pll_c_aid_tracking_cc // Initialization of local code replica // Get space for a vector with the C/A code replica sampled 1x/chip - d_ca_code.reserve(static_cast(GLONASS_L2_CA_CODE_LENGTH_CHIPS)); + d_ca_code.resize(static_cast(GLONASS_L2_CA_CODE_LENGTH_CHIPS)); // correlator outputs (scalar) d_n_correlator_taps = 3; // Early, Prompt, and Late - d_correlator_outs.reserve(d_n_correlator_taps); + d_correlator_outs.resize(d_n_correlator_taps); std::fill_n(d_correlator_outs.begin(), d_n_correlator_taps, gr_complex(0.0, 0.0)); - d_local_code_shift_chips.reserve(d_n_correlator_taps); + d_local_code_shift_chips.resize(d_n_correlator_taps); // Set TAPs delay values [chips] d_local_code_shift_chips[0] = -d_early_late_spc_chips; d_local_code_shift_chips[1] = 0.0; @@ -172,7 +171,7 @@ glonass_l2_ca_dll_pll_c_aid_tracking_cc::glonass_l2_ca_dll_pll_c_aid_tracking_cc // CN0 estimation and lock detector buffers d_cn0_estimation_counter = 0; - d_Prompt_buffer.reserve(FLAGS_cn0_samples); + d_Prompt_buffer.resize(FLAGS_cn0_samples); d_carrier_lock_test = 1; d_CN0_SNV_dB_Hz = 0; d_carrier_lock_fail_counter = 0; @@ -264,7 +263,6 @@ void glonass_l2_ca_dll_pll_c_aid_tracking_cc::start_tracking() d_carrier_doppler_hz = d_acq_carrier_doppler_hz; d_carrier_phase_step_rad = GLONASS_TWO_PI * d_carrier_frequency_hz / static_cast(d_fs_in); - // DLL/PLL filter initialization d_carrier_loop_filter.initialize(d_carrier_frequency_hz); // The carrier loop filter implements the Doppler accumulator d_code_loop_filter.initialize(); // initialize the code filter diff --git a/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_c_aid_tracking_sc.cc b/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_c_aid_tracking_sc.cc index f558ab61e..2f2d6dbcf 100644 --- a/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_c_aid_tracking_sc.cc +++ b/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_c_aid_tracking_sc.cc @@ -58,8 +58,7 @@ #define CN0_ESTIMATION_SAMPLES 10 -glonass_l2_ca_dll_pll_c_aid_tracking_sc_sptr -glonass_l2_ca_dll_pll_c_aid_make_tracking_sc( +glonass_l2_ca_dll_pll_c_aid_tracking_sc_sptr glonass_l2_ca_dll_pll_c_aid_make_tracking_sc( int64_t fs_in, uint32_t vector_length, bool dump, @@ -139,16 +138,16 @@ glonass_l2_ca_dll_pll_c_aid_tracking_sc::glonass_l2_ca_dll_pll_c_aid_tracking_sc // Initialization of local code replica // Get space for a vector with the C/A code replica sampled 1x/chip - d_ca_code.reserve(static_cast(GLONASS_L2_CA_CODE_LENGTH_CHIPS)); - d_ca_code_16sc.reserve(static_cast(GLONASS_L2_CA_CODE_LENGTH_CHIPS)); + d_ca_code.resize(static_cast(GLONASS_L2_CA_CODE_LENGTH_CHIPS)); + d_ca_code_16sc.resize(static_cast(GLONASS_L2_CA_CODE_LENGTH_CHIPS)); // correlator outputs (scalar) d_n_correlator_taps = 3; // Early, Prompt, and Late - d_correlator_outs_16sc.reserve(d_n_correlator_taps); + d_correlator_outs_16sc.resize(d_n_correlator_taps); std::fill_n(d_correlator_outs_16sc.begin(), d_n_correlator_taps, lv_cmake(0, 0)); - d_local_code_shift_chips.reserve(d_n_correlator_taps); + d_local_code_shift_chips.resize(d_n_correlator_taps); // Set TAPs delay values [chips] d_local_code_shift_chips[0] = -d_early_late_spc_chips; d_local_code_shift_chips[1] = 0.0; @@ -172,7 +171,7 @@ glonass_l2_ca_dll_pll_c_aid_tracking_sc::glonass_l2_ca_dll_pll_c_aid_tracking_sc // CN0 estimation and lock detector buffers d_cn0_estimation_counter = 0; - d_Prompt_buffer.reserve(FLAGS_cn0_samples); + d_Prompt_buffer.resize(FLAGS_cn0_samples); d_carrier_lock_test = 1; d_CN0_SNV_dB_Hz = 0; d_carrier_lock_fail_counter = 0; diff --git a/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_tracking_cc.cc b/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_tracking_cc.cc index 15c991504..4790870a5 100644 --- a/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_tracking_cc.cc +++ b/src/algorithms/tracking/gnuradio_blocks/glonass_l2_ca_dll_pll_tracking_cc.cc @@ -58,8 +58,7 @@ #define CN0_ESTIMATION_SAMPLES 10 -glonass_l2_ca_dll_pll_tracking_cc_sptr -glonass_l2_ca_dll_pll_make_tracking_cc( +glonass_l2_ca_dll_pll_tracking_cc_sptr glonass_l2_ca_dll_pll_make_tracking_cc( int64_t fs_in, uint32_t vector_length, bool dump, @@ -112,14 +111,14 @@ Glonass_L2_Ca_Dll_Pll_Tracking_cc::Glonass_L2_Ca_Dll_Pll_Tracking_cc( // Initialization of local code replica // Get space for a vector with the C/A code replica sampled 1x/chip - d_ca_code.reserve(static_cast(GLONASS_L2_CA_CODE_LENGTH_CHIPS)); + d_ca_code.resize(static_cast(GLONASS_L2_CA_CODE_LENGTH_CHIPS)); // correlator outputs (scalar) d_n_correlator_taps = 3; // Early, Prompt, and Late - d_correlator_outs.reserve(d_n_correlator_taps); + d_correlator_outs.resize(d_n_correlator_taps); std::fill_n(d_correlator_outs.begin(), d_n_correlator_taps, gr_complex(0.0, 0.0)); - d_local_code_shift_chips.reserve(d_n_correlator_taps); + d_local_code_shift_chips.resize(d_n_correlator_taps); // Set TAPs delay values [chips] d_local_code_shift_chips[0] = -d_early_late_spc_chips; d_local_code_shift_chips[1] = 0.0; @@ -145,7 +144,7 @@ Glonass_L2_Ca_Dll_Pll_Tracking_cc::Glonass_L2_Ca_Dll_Pll_Tracking_cc( // CN0 estimation and lock detector buffers d_cn0_estimation_counter = 0; - d_Prompt_buffer.reserve(FLAGS_cn0_samples); + d_Prompt_buffer.resize(FLAGS_cn0_samples); d_carrier_lock_test = 1; d_CN0_SNV_dB_Hz = 0; d_carrier_lock_fail_counter = 0; @@ -227,7 +226,7 @@ void Glonass_L2_Ca_Dll_Pll_Tracking_cc::start_tracking() d_code_loop_filter.initialize(); // initialize the code filter // generate local reference ALWAYS starting at chip 1 (1 sample per chip) - glonass_l2_ca_code_gen_complex(d_ca_code, 0); + glonass_l2_ca_code_gen_complex(gsl::span(d_ca_code.data(), GLONASS_L2_CA_CODE_LENGTH_CHIPS), 0); multicorrelator_cpu.set_local_code_and_taps(static_cast(GLONASS_L2_CA_CODE_LENGTH_CHIPS), d_ca_code.data(), d_local_code_shift_chips.data()); std::fill_n(d_correlator_outs.begin(), d_n_correlator_taps, gr_complex(0.0, 0.0)); diff --git a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_kf_tracking_cc.cc b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_kf_tracking_cc.cc index a0c677a0e..f373987d5 100644 --- a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_kf_tracking_cc.cc +++ b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_kf_tracking_cc.cc @@ -59,8 +59,7 @@ #include -gps_l1_ca_kf_tracking_cc_sptr -gps_l1_ca_kf_make_tracking_cc( +gps_l1_ca_kf_tracking_cc_sptr gps_l1_ca_kf_make_tracking_cc( uint32_t order, int64_t if_freq, int64_t fs_in, @@ -129,14 +128,14 @@ Gps_L1_Ca_Kf_Tracking_cc::Gps_L1_Ca_Kf_Tracking_cc( // Initialization of local code replica // Get space for a vector with the C/A code replica sampled 1x/chip - d_ca_code.reserve(static_cast(GPS_L1_CA_CODE_LENGTH_CHIPS)); + d_ca_code.resize(static_cast(GPS_L1_CA_CODE_LENGTH_CHIPS)); // correlator outputs (scalar) d_n_correlator_taps = 3; // Early, Prompt, and Late - d_correlator_outs.reserve(d_n_correlator_taps); + d_correlator_outs.resize(d_n_correlator_taps); std::fill_n(d_correlator_outs.begin(), d_n_correlator_taps, gr_complex(0.0, 0.0)); - d_local_code_shift_chips.reserve(d_n_correlator_taps); + d_local_code_shift_chips.resize(d_n_correlator_taps); // Set TAPs delay values [chips] d_local_code_shift_chips[0] = -d_early_late_spc_chips; d_local_code_shift_chips[1] = 0.0; @@ -163,7 +162,7 @@ Gps_L1_Ca_Kf_Tracking_cc::Gps_L1_Ca_Kf_Tracking_cc( // CN0 estimation and lock detector buffers d_cn0_estimation_counter = 0; - d_Prompt_buffer.reserve(FLAGS_cn0_samples); + d_Prompt_buffer.resize(FLAGS_cn0_samples); d_carrier_lock_test = 1; d_CN0_SNV_dB_Hz = 0; d_carrier_lock_fail_counter = 0; diff --git a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_tcp_connector_tracking_cc.cc b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_tcp_connector_tracking_cc.cc index 003b80133..da8a3ebd4 100644 --- a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_tcp_connector_tracking_cc.cc +++ b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_tcp_connector_tracking_cc.cc @@ -104,11 +104,11 @@ Gps_L1_Ca_Tcp_Connector_Tracking_cc::Gps_L1_Ca_Tcp_Connector_Tracking_cc( // Initialization of local code replica // Get space for a vector with the C/A code replica sampled 1x/chip - d_ca_code.reserve(GPS_L1_CA_CODE_LENGTH_CHIPS); + d_ca_code.resize(GPS_L1_CA_CODE_LENGTH_CHIPS); // correlator outputs (scalar) d_n_correlator_taps = 3; // Very-Early, Early, Prompt, Late, Very-Late - d_correlator_outs.reserve(d_n_correlator_taps); + d_correlator_outs.resize(d_n_correlator_taps); std::fill_n(d_correlator_outs.begin(), d_n_correlator_taps, gr_complex(0.0, 0.0)); // map memory pointers of correlator outputs @@ -116,7 +116,7 @@ Gps_L1_Ca_Tcp_Connector_Tracking_cc::Gps_L1_Ca_Tcp_Connector_Tracking_cc( d_Prompt = &d_correlator_outs[1]; d_Late = &d_correlator_outs[2]; - d_local_code_shift_chips.reserve(d_n_correlator_taps); + d_local_code_shift_chips.resize(d_n_correlator_taps); // Set TAPs delay values [chips] d_local_code_shift_chips[0] = -d_early_late_spc_chips; d_local_code_shift_chips[1] = 0.0; @@ -146,7 +146,7 @@ Gps_L1_Ca_Tcp_Connector_Tracking_cc::Gps_L1_Ca_Tcp_Connector_Tracking_cc( // CN0 estimation and lock detector buffers d_cn0_estimation_counter = 0; - d_Prompt_buffer.reserve(FLAGS_cn0_samples); + d_Prompt_buffer.resize(FLAGS_cn0_samples); d_carrier_lock_test = 1; d_CN0_SNV_dB_Hz = 0; d_carrier_lock_fail_counter = 0; diff --git a/src/tests/unit-tests/signal-processing-blocks/tracking/glonass_l1_ca_dll_pll_c_aid_tracking_test.cc b/src/tests/unit-tests/signal-processing-blocks/tracking/glonass_l1_ca_dll_pll_c_aid_tracking_test.cc index 86a2c06de..8cd8501ea 100644 --- a/src/tests/unit-tests/signal-processing-blocks/tracking/glonass_l1_ca_dll_pll_c_aid_tracking_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/tracking/glonass_l1_ca_dll_pll_c_aid_tracking_test.cc @@ -39,7 +39,6 @@ #include "gnss_synchro.h" #include "in_memory_configuration.h" #include "tracking_interface.h" -#include #include #include #include @@ -47,11 +46,6 @@ #include #include #include -#ifdef GR_GREATER_38 -#include -#else -#include -#endif // ######## GNURADIO BLOCK MESSAGE RECEVER ######### class GlonassL1CaDllPllCAidTrackingTest_msg_rx; @@ -179,7 +173,6 @@ TEST_F(GlonassL1CaDllPllCAidTrackingTest, ValidationOfResults) }) << "Failure connecting tracking to the top_block."; ASSERT_NO_THROW({ - gr::analog::sig_source_c::sptr sin_source = gr::analog::sig_source_c::make(fs_in, gr::analog::GR_SIN_WAVE, 1000, 1, gr_complex(0)); std::string path = std::string(TEST_PATH); std::string file = path + "signal_samples/NT1065_GLONASS_L1_20160831_fs6625e6_if0e3_4ms.bin"; const char* file_name = file.c_str();