mirror of
				https://github.com/gnss-sdr/gnss-sdr
				synced 2025-10-31 15:23:04 +00:00 
			
		
		
		
	Fix usage of resize instead of reserve
This commit is contained in:
		| @@ -47,10 +47,10 @@ | |||||||
| #include <gnuradio/io_signature.h> | #include <gnuradio/io_signature.h> | ||||||
| #include <matio.h> | #include <matio.h> | ||||||
| #include <volk/volk.h> | #include <volk/volk.h> | ||||||
| #include <volk_gnsssdr/volk_gnsssdr.h> |  | ||||||
| #include <algorithm>  // std::rotate, std::fill_n | #include <algorithm>  // std::rotate, std::fill_n | ||||||
| #include <array> | #include <array> | ||||||
| #include <sstream> | #include <sstream> | ||||||
|  | #include <vector> | ||||||
|  |  | ||||||
| #if HAS_STD_FILESYSTEM | #if HAS_STD_FILESYSTEM | ||||||
| #if HAS_STD_FILESYSTEM_EXPERIMENTAL | #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_max_dwells = conf_.max_dwells; | ||||||
|     d_gnuradio_forecast_samples = d_fft_size; |     d_gnuradio_forecast_samples = d_fft_size; | ||||||
|     d_state = 0; |     d_state = 0; | ||||||
|     d_carrier = static_cast<gr_complex *>(volk_gnsssdr_malloc(d_fft_size * sizeof(gr_complex), volk_gnsssdr_get_alignment())); |     d_fft_codes.resize(d_fft_size); | ||||||
|     d_fft_codes = static_cast<gr_complex *>(volk_gnsssdr_malloc(d_fft_size * sizeof(gr_complex), volk_gnsssdr_get_alignment())); |     d_magnitude.resize(d_fft_size); | ||||||
|     d_magnitude = static_cast<float *>(volk_gnsssdr_malloc(d_fft_size * sizeof(float), volk_gnsssdr_get_alignment())); |     d_10_ms_buffer.resize(50 * d_samples_per_ms); | ||||||
|  |  | ||||||
|     d_10_ms_buffer = static_cast<gr_complex *>(volk_gnsssdr_malloc(50 * d_samples_per_ms * sizeof(gr_complex), volk_gnsssdr_get_alignment())); |  | ||||||
|  |  | ||||||
|     // Direct FFT |     // Direct FFT | ||||||
|     d_fft_if = std::make_shared<gr::fft::fft_complex>(d_fft_size, true); |     d_fft_if = std::make_shared<gr::fft::fft_complex>(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_num_doppler_points = floor(std::abs(2 * d_config_doppler_max) / d_doppler_step); | ||||||
|  |  | ||||||
|     d_grid_data = std::vector<std::vector<float>>(d_num_doppler_points, std::vector<float>(d_fft_size)); |     d_grid_data = volk_gnsssdr::vector<volk_gnsssdr::vector<float>>(d_num_doppler_points, volk_gnsssdr::vector<float>(d_fft_size)); | ||||||
|  |  | ||||||
|     if (d_dump) |     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<float> *code) | void pcps_acquisition_fine_doppler_cc::set_local_code(std::complex<float> *code) | ||||||
| { | { | ||||||
|     memcpy(d_fft_if->get_inbuf(), code, sizeof(gr_complex) * d_fft_size); |     memcpy(d_fft_if->get_inbuf(), code, sizeof(gr_complex) * d_fft_size); | ||||||
|     d_fft_if->execute();  // We need the FFT of local code |     d_fft_if->execute();  // We need the FFT of local code | ||||||
|     // Conjugate the 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 |     // create the carrier Doppler wipeoff signals | ||||||
|     int doppler_hz; |     int doppler_hz; | ||||||
|     float phase_step_rad; |     float phase_step_rad; | ||||||
|     d_grid_doppler_wipeoffs = std::vector<std::vector<std::complex<float>>>(d_num_doppler_points, std::vector<std::complex<float>>(d_fft_size)); |     d_grid_doppler_wipeoffs = volk_gnsssdr::vector<volk_gnsssdr::vector<std::complex<float>>>(d_num_doppler_points, volk_gnsssdr::vector<std::complex<float>>(d_fft_size)); | ||||||
|     for (int doppler_index = 0; doppler_index < d_num_doppler_points; doppler_index++) |     for (int doppler_index = 0; doppler_index < d_num_doppler_points; doppler_index++) | ||||||
|         { |         { | ||||||
|             doppler_hz = d_doppler_step * doppler_index - d_config_doppler_max; |             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<const gr_complex *>(input_items[0]);  // Get the input samples pointer |     const auto *in = reinterpret_cast<const gr_complex *>(input_items[0]);  // Get the input samples pointer | ||||||
|     // Compute the input signal power estimation |     // Compute the input signal power estimation | ||||||
|     float power = 0; |     float power = 0; | ||||||
|     volk_32fc_magnitude_squared_32f(d_magnitude, in, d_fft_size); |     volk_32fc_magnitude_squared_32f(d_magnitude.data(), in, d_fft_size); | ||||||
|     volk_32f_accumulator_s32f(&power, d_magnitude, d_fft_size); |     volk_32f_accumulator_s32f(&power, d_magnitude.data(), d_fft_size); | ||||||
|     power /= static_cast<float>(d_fft_size); |     power /= static_cast<float>(d_fft_size); | ||||||
|     return power; |     return power; | ||||||
| } | } | ||||||
| @@ -357,7 +345,7 @@ int pcps_acquisition_fine_doppler_cc::compute_and_accumulate_grid(gr_vector_cons | |||||||
|                << ", doppler_step: " << d_doppler_step; |                << ", doppler_step: " << d_doppler_step; | ||||||
|  |  | ||||||
|     // 2- Doppler frequency search loop |     // 2- Doppler frequency search loop | ||||||
|     auto *p_tmp_vector = static_cast<float *>(volk_gnsssdr_malloc(d_fft_size * sizeof(float), volk_gnsssdr_get_alignment())); |     volk_gnsssdr::vector<float> p_tmp_vector(d_fft_size); | ||||||
|  |  | ||||||
|     for (int doppler_index = 0; doppler_index < d_num_doppler_points; doppler_index++) |     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 |             // Multiply carrier wiped--off, Fourier transformed incoming signal | ||||||
|             // with the local FFT'd code reference using SIMD operations with VOLK library |             // 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 |             // compute the inverse FFT | ||||||
|             d_ifft->execute(); |             d_ifft->execute(); | ||||||
|  |  | ||||||
|             // save the grid matrix delay file |             // 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 |             // 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; |     return d_fft_size; | ||||||
|     // debug |     // debug | ||||||
|     //            std::cout << "iff=["; |     //            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)); |     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 |     // 1. generate local code aligned with the acquisition code phase estimation | ||||||
|     auto *code_replica = static_cast<gr_complex *>(volk_gnsssdr_malloc(signal_samples * sizeof(gr_complex), volk_gnsssdr_get_alignment())); |     volk_gnsssdr::vector<gr_complex> code_replica(signal_samples); | ||||||
|  |  | ||||||
|     gps_l1_ca_code_gen_complex_sampled(gsl::span<gr_complex>(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<int>(d_gnss_synchro->Acq_delay_samples); |     int shift_index = static_cast<int>(d_gnss_synchro->Acq_delay_samples); | ||||||
|  |  | ||||||
|     // Rotate to align the local code replica using acquisition time delay estimation |     // Rotate to align the local code replica using acquisition time delay estimation | ||||||
|     if (shift_index != 0) |     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++) |     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 |     // 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!) |     // 3. Perform the FFT (zero padded!) | ||||||
|     fft_operator->execute(); |     fft_operator->execute(); | ||||||
|  |  | ||||||
|     // 4. Compute the magnitude and find the maximum |     // 4. Compute the magnitude and find the maximum | ||||||
|     auto *p_tmp_vector = static_cast<float *>(volk_gnsssdr_malloc(fft_size_extended * sizeof(float), volk_gnsssdr_get_alignment())); |     volk_gnsssdr::vector<float> p_tmp_vector(fft_size_extended); | ||||||
|  |     volk_32fc_magnitude_squared_32f(p_tmp_vector.data(), fft_operator->get_outbuf(), fft_size_extended); | ||||||
|     volk_32fc_magnitude_squared_32f(p_tmp_vector, fft_operator->get_outbuf(), fft_size_extended); |  | ||||||
|  |  | ||||||
|     uint32_t tmp_index_freq = 0; |     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 |     // case even | ||||||
|     int counter = 0; |     int counter = 0; | ||||||
|     auto fftFreqBins = std::vector<float>(fft_size_extended); |     auto fftFreqBins = volk_gnsssdr::vector<float>(fft_size_extended); | ||||||
|  |  | ||||||
|     for (int k = 0; k < (fft_size_extended / 2); k++) |     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"; |             DLOG(INFO) << "Error estimating fine frequency Doppler"; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|     // free memory!! |  | ||||||
|     volk_gnsssdr_free(code_replica); |  | ||||||
|     volk_gnsssdr_free(p_tmp_vector); |  | ||||||
|     return d_fft_size; |     return d_fft_size; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -60,12 +60,12 @@ | |||||||
| #include <gnuradio/block.h> | #include <gnuradio/block.h> | ||||||
| #include <gnuradio/fft/fft.h> | #include <gnuradio/fft/fft.h> | ||||||
| #include <gnuradio/gr_complex.h> | #include <gnuradio/gr_complex.h> | ||||||
|  | #include <volk_gnsssdr/volk_gnsssdr_alloc.h>  // for volk_gnsssdr::vector | ||||||
| #include <cstdint> | #include <cstdint> | ||||||
| #include <fstream> | #include <fstream> | ||||||
| #include <memory> | #include <memory> | ||||||
| #include <string> | #include <string> | ||||||
| #include <utility> | #include <utility> | ||||||
| #include <vector> |  | ||||||
|  |  | ||||||
| class pcps_acquisition_fine_doppler_cc; | class pcps_acquisition_fine_doppler_cc; | ||||||
|  |  | ||||||
| @@ -83,7 +83,7 @@ public: | |||||||
|     /*! |     /*! | ||||||
|      * \brief Default destructor. |      * \brief Default destructor. | ||||||
|      */ |      */ | ||||||
|     ~pcps_acquisition_fine_doppler_cc(); |     ~pcps_acquisition_fine_doppler_cc() = default; | ||||||
|  |  | ||||||
|     /*! |     /*! | ||||||
|      * \brief Set acquisition/tracking common Gnss_Synchro object pointer |      * \brief Set acquisition/tracking common Gnss_Synchro object pointer | ||||||
| @@ -192,8 +192,7 @@ public: | |||||||
|         gr_vector_void_star& output_items); |         gr_vector_void_star& output_items); | ||||||
|  |  | ||||||
| private: | private: | ||||||
|     friend pcps_acquisition_fine_doppler_cc_sptr |     friend pcps_acquisition_fine_doppler_cc_sptr pcps_make_acquisition_fine_doppler_cc(const Acq_Conf& conf_); | ||||||
|     pcps_make_acquisition_fine_doppler_cc(const Acq_Conf& conf_); |  | ||||||
|     explicit pcps_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); |     int compute_and_accumulate_grid(gr_vector_const_void_star& input_items); | ||||||
| @@ -215,12 +214,11 @@ private: | |||||||
|     int d_doppler_step; |     int d_doppler_step; | ||||||
|     unsigned int d_fft_size; |     unsigned int d_fft_size; | ||||||
|     uint64_t d_sample_counter; |     uint64_t d_sample_counter; | ||||||
|     gr_complex* d_carrier; |     volk_gnsssdr::vector<gr_complex> d_fft_codes; | ||||||
|     gr_complex* d_fft_codes; |     volk_gnsssdr::vector<gr_complex> d_10_ms_buffer; | ||||||
|     gr_complex* d_10_ms_buffer; |     volk_gnsssdr::vector<float> d_magnitude; | ||||||
|     float* d_magnitude; |     volk_gnsssdr::vector<volk_gnsssdr::vector<float>> d_grid_data; | ||||||
|     std::vector<std::vector<float>> d_grid_data; |     volk_gnsssdr::vector<volk_gnsssdr::vector<std::complex<float>>> d_grid_doppler_wipeoffs; | ||||||
|     std::vector<std::vector<std::complex<float>>> d_grid_doppler_wipeoffs; |  | ||||||
|     std::shared_ptr<gr::fft::fft_complex> d_fft_if; |     std::shared_ptr<gr::fft::fft_complex> d_fft_if; | ||||||
|     std::shared_ptr<gr::fft::fft_complex> d_ifft; |     std::shared_ptr<gr::fft::fft_complex> d_ifft; | ||||||
|     Gnss_Synchro* d_gnss_synchro; |     Gnss_Synchro* d_gnss_synchro; | ||||||
|   | |||||||
| @@ -117,11 +117,11 @@ Galileo_E1_Tcp_Connector_Tracking_cc::Galileo_E1_Tcp_Connector_Tracking_cc( | |||||||
|  |  | ||||||
|     // Initialization of local code replica |     // Initialization of local code replica | ||||||
|     // Get space for a vector with the sinboc(1,1) replica sampled 2x/chip |     // 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) |     // correlator outputs (scalar) | ||||||
|     d_n_correlator_taps = 5;  // Very-Early, Early, Prompt, Late, Very-Late |     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)); |     std::fill_n(d_correlator_outs.begin(), d_n_correlator_taps, gr_complex(0.0, 0.0)); | ||||||
|     // map memory pointers of correlator outputs |     // map memory pointers of correlator outputs | ||||||
|     d_Very_Early = &d_correlator_outs[0]; |     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_Late = &d_correlator_outs[3]; | ||||||
|     d_Very_Late = &d_correlator_outs[4]; |     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] |     // Set TAPs delay values [chips] | ||||||
|     d_local_code_shift_chips[0] = -d_very_early_late_spc_chips; |     d_local_code_shift_chips[0] = -d_very_early_late_spc_chips; | ||||||
|     d_local_code_shift_chips[1] = -d_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 |     // CN0 estimation and lock detector buffers | ||||||
|     d_cn0_estimation_counter = 0; |     d_cn0_estimation_counter = 0; | ||||||
|     d_Prompt_buffer = volk_gnsssdr::vector<gr_complex>(FLAGS_cn0_samples); |     d_Prompt_buffer.resize(FLAGS_cn0_samples); | ||||||
|     d_carrier_lock_test = 1; |     d_carrier_lock_test = 1; | ||||||
|     d_CN0_SNV_dB_Hz = 0; |     d_CN0_SNV_dB_Hz = 0; | ||||||
|     d_carrier_lock_fail_counter = 0; |     d_carrier_lock_fail_counter = 0; | ||||||
|   | |||||||
| @@ -62,8 +62,7 @@ | |||||||
| #define CN0_ESTIMATION_SAMPLES 10 | #define CN0_ESTIMATION_SAMPLES 10 | ||||||
|  |  | ||||||
|  |  | ||||||
| glonass_l1_ca_dll_pll_c_aid_tracking_cc_sptr | 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_make_tracking_cc( |  | ||||||
|     int64_t fs_in, |     int64_t fs_in, | ||||||
|     uint32_t vector_length, |     uint32_t vector_length, | ||||||
|     bool dump, |     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 |     // Initialization of local code replica | ||||||
|     // Get space for a vector with the C/A code replica sampled 1x/chip |     // Get space for a vector with the C/A code replica sampled 1x/chip | ||||||
|     d_ca_code.reserve(static_cast<int32_t>(GLONASS_L1_CA_CODE_LENGTH_CHIPS)); |     d_ca_code.resize(static_cast<int32_t>(GLONASS_L1_CA_CODE_LENGTH_CHIPS)); | ||||||
|  |  | ||||||
|     // correlator outputs (scalar) |     // correlator outputs (scalar) | ||||||
|     d_n_correlator_taps = 3;  // Early, Prompt, and Late |     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)); |     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] |     // Set TAPs delay values [chips] | ||||||
|     d_local_code_shift_chips[0] = -d_early_late_spc_chips; |     d_local_code_shift_chips[0] = -d_early_late_spc_chips; | ||||||
|     d_local_code_shift_chips[1] = 0.0; |     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 |     // CN0 estimation and lock detector buffers | ||||||
|     d_cn0_estimation_counter = 0; |     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_carrier_lock_test = 1; | ||||||
|     d_CN0_SNV_dB_Hz = 0; |     d_CN0_SNV_dB_Hz = 0; | ||||||
|     d_carrier_lock_fail_counter = 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 |     d_code_loop_filter.initialize();                           // initialize the code filter | ||||||
|  |  | ||||||
|     // generate local reference ALWAYS starting at chip 1 (1 sample per chip) |     // 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<gr_complex>(d_ca_code.data(), GLONASS_L1_CA_CODE_LENGTH_CHIPS), 0); | ||||||
|  |  | ||||||
|     multicorrelator_cpu.set_local_code_and_taps(static_cast<int32_t>(GLONASS_L1_CA_CODE_LENGTH_CHIPS), d_ca_code.data(), d_local_code_shift_chips.data()); |     multicorrelator_cpu.set_local_code_and_taps(static_cast<int32_t>(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)); |     std::fill_n(d_correlator_outs.begin(), d_n_correlator_taps, gr_complex(0.0, 0.0)); | ||||||
|   | |||||||
| @@ -60,8 +60,7 @@ | |||||||
|  |  | ||||||
| #define CN0_ESTIMATION_SAMPLES 10 | #define CN0_ESTIMATION_SAMPLES 10 | ||||||
|  |  | ||||||
| glonass_l1_ca_dll_pll_c_aid_tracking_sc_sptr | 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_make_tracking_sc( |  | ||||||
|     int64_t fs_in, |     int64_t fs_in, | ||||||
|     uint32_t vector_length, |     uint32_t vector_length, | ||||||
|     bool dump, |     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 |     // Initialization of local code replica | ||||||
|     // Get space for a vector with the C/A code replica sampled 1x/chip |     // Get space for a vector with the C/A code replica sampled 1x/chip | ||||||
|     d_ca_code.reserve(static_cast<int32_t>(GLONASS_L1_CA_CODE_LENGTH_CHIPS)); |     d_ca_code.resize(static_cast<int32_t>(GLONASS_L1_CA_CODE_LENGTH_CHIPS)); | ||||||
|     d_ca_code_16sc.reserve(static_cast<int32_t>(GLONASS_L1_CA_CODE_LENGTH_CHIPS)); |     d_ca_code_16sc.resize(static_cast<int32_t>(GLONASS_L1_CA_CODE_LENGTH_CHIPS)); | ||||||
|  |  | ||||||
|     // correlator outputs (scalar) |     // correlator outputs (scalar) | ||||||
|     d_n_correlator_taps = 3;  // Early, Prompt, and Late |     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)); |     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] |     // Set TAPs delay values [chips] | ||||||
|     d_local_code_shift_chips[0] = -d_early_late_spc_chips; |     d_local_code_shift_chips[0] = -d_early_late_spc_chips; | ||||||
|     d_local_code_shift_chips[1] = 0.0; |     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 |     // CN0 estimation and lock detector buffers | ||||||
|     d_cn0_estimation_counter = 0; |     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_carrier_lock_test = 1; | ||||||
|     d_CN0_SNV_dB_Hz = 0; |     d_CN0_SNV_dB_Hz = 0; | ||||||
|     d_carrier_lock_fail_counter = 0; |     d_carrier_lock_fail_counter = 0; | ||||||
|   | |||||||
| @@ -57,8 +57,7 @@ | |||||||
|  |  | ||||||
| #define CN0_ESTIMATION_SAMPLES 10 | #define CN0_ESTIMATION_SAMPLES 10 | ||||||
|  |  | ||||||
| glonass_l1_ca_dll_pll_tracking_cc_sptr | glonass_l1_ca_dll_pll_tracking_cc_sptr glonass_l1_ca_dll_pll_make_tracking_cc( | ||||||
| glonass_l1_ca_dll_pll_make_tracking_cc( |  | ||||||
|     int64_t fs_in, |     int64_t fs_in, | ||||||
|     uint32_t vector_length, |     uint32_t vector_length, | ||||||
|     bool dump, |     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 |     // Initialization of local code replica | ||||||
|     // Get space for a vector with the C/A code replica sampled 1x/chip |     // Get space for a vector with the C/A code replica sampled 1x/chip | ||||||
|     d_ca_code.reserve(static_cast<int32_t>(GLONASS_L1_CA_CODE_LENGTH_CHIPS)); |     d_ca_code.resize(static_cast<int32_t>(GLONASS_L1_CA_CODE_LENGTH_CHIPS)); | ||||||
|  |  | ||||||
|     // correlator outputs (scalar) |     // correlator outputs (scalar) | ||||||
|     d_n_correlator_taps = 3;  // Early, Prompt, and Late |     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)); |     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] |     // Set TAPs delay values [chips] | ||||||
|     d_local_code_shift_chips[0] = -d_early_late_spc_chips; |     d_local_code_shift_chips[0] = -d_early_late_spc_chips; | ||||||
|     d_local_code_shift_chips[1] = 0.0; |     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 |     // CN0 estimation and lock detector buffers | ||||||
|     d_cn0_estimation_counter = 0; |     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_carrier_lock_test = 1; | ||||||
|     d_CN0_SNV_dB_Hz = 0; |     d_CN0_SNV_dB_Hz = 0; | ||||||
|     d_carrier_lock_fail_counter = 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 |     d_code_loop_filter.initialize();     // initialize the code filter | ||||||
|  |  | ||||||
|     // generate local reference ALWAYS starting at chip 1 (1 sample per chip) |     // generate local reference ALWAYS starting at chip 1 (1 sample per chip) | ||||||
|  |     //glonass_l1_ca_code_gen_complex(gsl::span<gr_complex>(d_ca_code.data(), GLONASS_L1_CA_CODE_LENGTH_CHIPS), 0); | ||||||
|     glonass_l1_ca_code_gen_complex(d_ca_code, 0); |     glonass_l1_ca_code_gen_complex(d_ca_code, 0); | ||||||
|  |  | ||||||
|     multicorrelator_cpu.set_local_code_and_taps(static_cast<int32_t>(GLONASS_L1_CA_CODE_LENGTH_CHIPS), d_ca_code.data(), d_local_code_shift_chips.data()); |     multicorrelator_cpu.set_local_code_and_taps(static_cast<int32_t>(GLONASS_L1_CA_CODE_LENGTH_CHIPS), d_ca_code.data(), d_local_code_shift_chips.data()); | ||||||
|   | |||||||
| @@ -58,8 +58,7 @@ | |||||||
| #define CN0_ESTIMATION_SAMPLES 10 | #define CN0_ESTIMATION_SAMPLES 10 | ||||||
|  |  | ||||||
|  |  | ||||||
| glonass_l2_ca_dll_pll_c_aid_tracking_cc_sptr | 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_make_tracking_cc( |  | ||||||
|     int64_t fs_in, |     int64_t fs_in, | ||||||
|     uint32_t vector_length, |     uint32_t vector_length, | ||||||
|     bool dump, |     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 |     // Initialization of local code replica | ||||||
|     // Get space for a vector with the C/A code replica sampled 1x/chip |     // Get space for a vector with the C/A code replica sampled 1x/chip | ||||||
|     d_ca_code.reserve(static_cast<int32_t>(GLONASS_L2_CA_CODE_LENGTH_CHIPS)); |     d_ca_code.resize(static_cast<int32_t>(GLONASS_L2_CA_CODE_LENGTH_CHIPS)); | ||||||
|  |  | ||||||
|     // correlator outputs (scalar) |     // correlator outputs (scalar) | ||||||
|     d_n_correlator_taps = 3;  // Early, Prompt, and Late |     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)); |     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] |     // Set TAPs delay values [chips] | ||||||
|     d_local_code_shift_chips[0] = -d_early_late_spc_chips; |     d_local_code_shift_chips[0] = -d_early_late_spc_chips; | ||||||
|     d_local_code_shift_chips[1] = 0.0; |     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 |     // CN0 estimation and lock detector buffers | ||||||
|     d_cn0_estimation_counter = 0; |     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_carrier_lock_test = 1; | ||||||
|     d_CN0_SNV_dB_Hz = 0; |     d_CN0_SNV_dB_Hz = 0; | ||||||
|     d_carrier_lock_fail_counter = 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_doppler_hz = d_acq_carrier_doppler_hz; | ||||||
|     d_carrier_phase_step_rad = GLONASS_TWO_PI * d_carrier_frequency_hz / static_cast<double>(d_fs_in); |     d_carrier_phase_step_rad = GLONASS_TWO_PI * d_carrier_frequency_hz / static_cast<double>(d_fs_in); | ||||||
|  |  | ||||||
|  |  | ||||||
|     // DLL/PLL filter initialization |     // DLL/PLL filter initialization | ||||||
|     d_carrier_loop_filter.initialize(d_carrier_frequency_hz);  // The carrier loop filter implements the Doppler accumulator |     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 |     d_code_loop_filter.initialize();                           // initialize the code filter | ||||||
|   | |||||||
| @@ -58,8 +58,7 @@ | |||||||
| #define CN0_ESTIMATION_SAMPLES 10 | #define CN0_ESTIMATION_SAMPLES 10 | ||||||
|  |  | ||||||
|  |  | ||||||
| glonass_l2_ca_dll_pll_c_aid_tracking_sc_sptr | 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_make_tracking_sc( |  | ||||||
|     int64_t fs_in, |     int64_t fs_in, | ||||||
|     uint32_t vector_length, |     uint32_t vector_length, | ||||||
|     bool dump, |     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 |     // Initialization of local code replica | ||||||
|     // Get space for a vector with the C/A code replica sampled 1x/chip |     // Get space for a vector with the C/A code replica sampled 1x/chip | ||||||
|     d_ca_code.reserve(static_cast<int32_t>(GLONASS_L2_CA_CODE_LENGTH_CHIPS)); |     d_ca_code.resize(static_cast<int32_t>(GLONASS_L2_CA_CODE_LENGTH_CHIPS)); | ||||||
|     d_ca_code_16sc.reserve(static_cast<int32_t>(GLONASS_L2_CA_CODE_LENGTH_CHIPS)); |     d_ca_code_16sc.resize(static_cast<int32_t>(GLONASS_L2_CA_CODE_LENGTH_CHIPS)); | ||||||
|  |  | ||||||
|     // correlator outputs (scalar) |     // correlator outputs (scalar) | ||||||
|     d_n_correlator_taps = 3;  // Early, Prompt, and Late |     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)); |     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] |     // Set TAPs delay values [chips] | ||||||
|     d_local_code_shift_chips[0] = -d_early_late_spc_chips; |     d_local_code_shift_chips[0] = -d_early_late_spc_chips; | ||||||
|     d_local_code_shift_chips[1] = 0.0; |     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 |     // CN0 estimation and lock detector buffers | ||||||
|     d_cn0_estimation_counter = 0; |     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_carrier_lock_test = 1; | ||||||
|     d_CN0_SNV_dB_Hz = 0; |     d_CN0_SNV_dB_Hz = 0; | ||||||
|     d_carrier_lock_fail_counter = 0; |     d_carrier_lock_fail_counter = 0; | ||||||
|   | |||||||
| @@ -58,8 +58,7 @@ | |||||||
| #define CN0_ESTIMATION_SAMPLES 10 | #define CN0_ESTIMATION_SAMPLES 10 | ||||||
|  |  | ||||||
|  |  | ||||||
| glonass_l2_ca_dll_pll_tracking_cc_sptr | glonass_l2_ca_dll_pll_tracking_cc_sptr glonass_l2_ca_dll_pll_make_tracking_cc( | ||||||
| glonass_l2_ca_dll_pll_make_tracking_cc( |  | ||||||
|     int64_t fs_in, |     int64_t fs_in, | ||||||
|     uint32_t vector_length, |     uint32_t vector_length, | ||||||
|     bool dump, |     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 |     // Initialization of local code replica | ||||||
|     // Get space for a vector with the C/A code replica sampled 1x/chip |     // Get space for a vector with the C/A code replica sampled 1x/chip | ||||||
|     d_ca_code.reserve(static_cast<int32_t>(GLONASS_L2_CA_CODE_LENGTH_CHIPS)); |     d_ca_code.resize(static_cast<int32_t>(GLONASS_L2_CA_CODE_LENGTH_CHIPS)); | ||||||
|  |  | ||||||
|     // correlator outputs (scalar) |     // correlator outputs (scalar) | ||||||
|     d_n_correlator_taps = 3;  // Early, Prompt, and Late |     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)); |     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] |     // Set TAPs delay values [chips] | ||||||
|     d_local_code_shift_chips[0] = -d_early_late_spc_chips; |     d_local_code_shift_chips[0] = -d_early_late_spc_chips; | ||||||
|     d_local_code_shift_chips[1] = 0.0; |     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 |     // CN0 estimation and lock detector buffers | ||||||
|     d_cn0_estimation_counter = 0; |     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_carrier_lock_test = 1; | ||||||
|     d_CN0_SNV_dB_Hz = 0; |     d_CN0_SNV_dB_Hz = 0; | ||||||
|     d_carrier_lock_fail_counter = 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 |     d_code_loop_filter.initialize();     // initialize the code filter | ||||||
|  |  | ||||||
|     // generate local reference ALWAYS starting at chip 1 (1 sample per chip) |     // 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<gr_complex>(d_ca_code.data(), GLONASS_L2_CA_CODE_LENGTH_CHIPS), 0); | ||||||
|  |  | ||||||
|     multicorrelator_cpu.set_local_code_and_taps(static_cast<int32_t>(GLONASS_L2_CA_CODE_LENGTH_CHIPS), d_ca_code.data(), d_local_code_shift_chips.data()); |     multicorrelator_cpu.set_local_code_and_taps(static_cast<int32_t>(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)); |     std::fill_n(d_correlator_outs.begin(), d_n_correlator_taps, gr_complex(0.0, 0.0)); | ||||||
|   | |||||||
| @@ -59,8 +59,7 @@ | |||||||
| #include <vector> | #include <vector> | ||||||
|  |  | ||||||
|  |  | ||||||
| gps_l1_ca_kf_tracking_cc_sptr | gps_l1_ca_kf_tracking_cc_sptr gps_l1_ca_kf_make_tracking_cc( | ||||||
| gps_l1_ca_kf_make_tracking_cc( |  | ||||||
|     uint32_t order, |     uint32_t order, | ||||||
|     int64_t if_freq, |     int64_t if_freq, | ||||||
|     int64_t fs_in, |     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 |     // Initialization of local code replica | ||||||
|     // Get space for a vector with the C/A code replica sampled 1x/chip |     // Get space for a vector with the C/A code replica sampled 1x/chip | ||||||
|     d_ca_code.reserve(static_cast<int>(GPS_L1_CA_CODE_LENGTH_CHIPS)); |     d_ca_code.resize(static_cast<int>(GPS_L1_CA_CODE_LENGTH_CHIPS)); | ||||||
|  |  | ||||||
|     // correlator outputs (scalar) |     // correlator outputs (scalar) | ||||||
|     d_n_correlator_taps = 3;  // Early, Prompt, and Late |     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)); |     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] |     // Set TAPs delay values [chips] | ||||||
|     d_local_code_shift_chips[0] = -d_early_late_spc_chips; |     d_local_code_shift_chips[0] = -d_early_late_spc_chips; | ||||||
|     d_local_code_shift_chips[1] = 0.0; |     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 |     // CN0 estimation and lock detector buffers | ||||||
|     d_cn0_estimation_counter = 0; |     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_carrier_lock_test = 1; | ||||||
|     d_CN0_SNV_dB_Hz = 0; |     d_CN0_SNV_dB_Hz = 0; | ||||||
|     d_carrier_lock_fail_counter = 0; |     d_carrier_lock_fail_counter = 0; | ||||||
|   | |||||||
| @@ -104,11 +104,11 @@ Gps_L1_Ca_Tcp_Connector_Tracking_cc::Gps_L1_Ca_Tcp_Connector_Tracking_cc( | |||||||
|  |  | ||||||
|     // Initialization of local code replica |     // Initialization of local code replica | ||||||
|     // Get space for a vector with the C/A code replica sampled 1x/chip |     // 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) |     // correlator outputs (scalar) | ||||||
|     d_n_correlator_taps = 3;  // Very-Early, Early, Prompt, Late, Very-Late |     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)); |     std::fill_n(d_correlator_outs.begin(), d_n_correlator_taps, gr_complex(0.0, 0.0)); | ||||||
|  |  | ||||||
|     // map memory pointers of correlator outputs |     // 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_Prompt = &d_correlator_outs[1]; | ||||||
|     d_Late = &d_correlator_outs[2]; |     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] |     // Set TAPs delay values [chips] | ||||||
|     d_local_code_shift_chips[0] = -d_early_late_spc_chips; |     d_local_code_shift_chips[0] = -d_early_late_spc_chips; | ||||||
|     d_local_code_shift_chips[1] = 0.0; |     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 |     // CN0 estimation and lock detector buffers | ||||||
|     d_cn0_estimation_counter = 0; |     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_carrier_lock_test = 1; | ||||||
|     d_CN0_SNV_dB_Hz = 0; |     d_CN0_SNV_dB_Hz = 0; | ||||||
|     d_carrier_lock_fail_counter = 0; |     d_carrier_lock_fail_counter = 0; | ||||||
|   | |||||||
| @@ -39,7 +39,6 @@ | |||||||
| #include "gnss_synchro.h" | #include "gnss_synchro.h" | ||||||
| #include "in_memory_configuration.h" | #include "in_memory_configuration.h" | ||||||
| #include "tracking_interface.h" | #include "tracking_interface.h" | ||||||
| #include <gnuradio/analog/sig_source_waveform.h> |  | ||||||
| #include <gnuradio/blocks/file_source.h> | #include <gnuradio/blocks/file_source.h> | ||||||
| #include <gnuradio/blocks/null_sink.h> | #include <gnuradio/blocks/null_sink.h> | ||||||
| #include <gnuradio/blocks/skiphead.h> | #include <gnuradio/blocks/skiphead.h> | ||||||
| @@ -47,11 +46,6 @@ | |||||||
| #include <gtest/gtest.h> | #include <gtest/gtest.h> | ||||||
| #include <chrono> | #include <chrono> | ||||||
| #include <utility> | #include <utility> | ||||||
| #ifdef GR_GREATER_38 |  | ||||||
| #include <gnuradio/analog/sig_source.h> |  | ||||||
| #else |  | ||||||
| #include <gnuradio/analog/sig_source_c.h> |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
| // ######## GNURADIO BLOCK MESSAGE RECEVER ######### | // ######## GNURADIO BLOCK MESSAGE RECEVER ######### | ||||||
| class GlonassL1CaDllPllCAidTrackingTest_msg_rx; | class GlonassL1CaDllPllCAidTrackingTest_msg_rx; | ||||||
| @@ -179,7 +173,6 @@ TEST_F(GlonassL1CaDllPllCAidTrackingTest, ValidationOfResults) | |||||||
|     }) << "Failure connecting tracking to the top_block."; |     }) << "Failure connecting tracking to the top_block."; | ||||||
|  |  | ||||||
|     ASSERT_NO_THROW({ |     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 path = std::string(TEST_PATH); | ||||||
|         std::string file = path + "signal_samples/NT1065_GLONASS_L1_20160831_fs6625e6_if0e3_4ms.bin"; |         std::string file = path + "signal_samples/NT1065_GLONASS_L1_20160831_fs6625e6_if0e3_4ms.bin"; | ||||||
|         const char* file_name = file.c_str(); |         const char* file_name = file.c_str(); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Carles Fernandez
					Carles Fernandez