[hamradio-commits] [gnss-sdr] 31/303: Fix acquisition with rata rates higher than 16 Msps in 4ms code periods

Carles Fernandez carles_fernandez-guest at moszumanska.debian.org
Mon Feb 13 22:35:45 UTC 2017


This is an automated email from the git hooks/post-receive script.

carles_fernandez-guest pushed a commit to branch master
in repository gnss-sdr.

commit 438ba45c16fac91a0aa0aab54a1453f07515c57f
Author: Carles Fernandez <carles.fernandez at gmail.com>
Date:   Mon Sep 19 09:06:40 2016 +0200

    Fix acquisition with rata rates higher than 16 Msps in 4ms code periods
    
    while not requiring a very recent version of VOLK
---
 .../acquisition/gnuradio_blocks/CMakeLists.txt     | 26 ----------------------
 ...alileo_e5a_noncoherent_iq_acquisition_caf_cc.cc | 16 ++++++-------
 .../galileo_pcps_8ms_acquisition_cc.cc             |  4 ++--
 .../gnuradio_blocks/pcps_acquisition_cc.cc         |  2 +-
 .../pcps_acquisition_fine_doppler_cc.cc            |  4 ++--
 .../gnuradio_blocks/pcps_acquisition_sc.cc         |  2 +-
 .../pcps_assisted_acquisition_cc.cc                |  2 +-
 .../gnuradio_blocks/pcps_cccwsr_acquisition_cc.cc  |  4 ++--
 .../pcps_multithread_acquisition_cc.cc             |  2 +-
 .../gnuradio_blocks/pcps_opencl_acquisition_cc.cc  |  4 ++--
 .../pcps_quicksync_acquisition_cc.cc               |  4 ++--
 .../gnuradio_blocks/pcps_tong_acquisition_cc.cc    |  2 +-
 12 files changed, 23 insertions(+), 49 deletions(-)

diff --git a/src/algorithms/acquisition/gnuradio_blocks/CMakeLists.txt b/src/algorithms/acquisition/gnuradio_blocks/CMakeLists.txt
index ffea8b5..945d5e2 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/CMakeLists.txt
+++ b/src/algorithms/acquisition/gnuradio_blocks/CMakeLists.txt
@@ -47,32 +47,6 @@ include_directories(
 )
 
 
-## Workaround for issues with the change of VOLK API
-## See https://github.com/gnuradio/volk/issues/84
-## and https://github.com/gnss-sdr/gnss-sdr/issues/31
-
-if(NOT VOLK_VERSION)
-    set(VOLK_VERSION "1.2.2")
-endif(NOT VOLK_VERSION)
-
-if(VOLK_VERSION VERSION_EQUAL 1.2.2)
-    find_file(VOLK_GREATER_THAN_122
-              NAMES volk/volk_32f_index_max_32u.h
-              HINTS ${CMAKE_INSTALL_PREFIX}/include
-              PATHS /usr/local/include
-                    /usr/include
-                    ${CMAKE_INSTALL_PREFIX}/include
-              )
-     if(VOLK_GREATER_THAN_122)
-         set(VOLK_VERSION "1.2.3+")
-     endif(VOLK_GREATER_THAN_122)
-endif(VOLK_VERSION VERSION_EQUAL 1.2.2)
-
-if(VOLK_VERSION VERSION_GREATER 1.2.2)
-   add_definitions(-DVOLK_GT_122=1)
-endif(VOLK_VERSION VERSION_GREATER 1.2.2)
-
-
 if(OPENCL_FOUND)
     include_directories( ${OPENCL_INCLUDE_DIRS} )
     if(OS_IS_MACOSX)
diff --git a/src/algorithms/acquisition/gnuradio_blocks/galileo_e5a_noncoherent_iq_acquisition_caf_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/galileo_e5a_noncoherent_iq_acquisition_caf_cc.cc
index 8c05fe0..d62fefd 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/galileo_e5a_noncoherent_iq_acquisition_caf_cc.cc
+++ b/src/algorithms/acquisition/gnuradio_blocks/galileo_e5a_noncoherent_iq_acquisition_caf_cc.cc
@@ -475,7 +475,7 @@ int galileo_e5a_noncoherentIQ_acquisition_caf_cc::general_work(int noutput_items
 
                     // Search maximum
                     volk_32fc_magnitude_squared_32f(d_magnitudeIA, d_ifft->get_outbuf(), d_fft_size);
-                    volk_32f_index_max_32u(&indext_IA, d_magnitudeIA, d_fft_size);
+                    volk_gnsssdr_32f_index_max_32u(&indext_IA, d_magnitudeIA, d_fft_size);
                     // Normalize the maximum value to correct the scale factor introduced by FFTW
                     magt_IA = d_magnitudeIA[indext_IA] / (fft_normalization_factor * fft_normalization_factor);
 
@@ -486,7 +486,7 @@ int galileo_e5a_noncoherentIQ_acquisition_caf_cc::general_work(int noutput_items
                                     d_fft_if->get_outbuf(), d_fft_code_Q_A, d_fft_size);
                             d_ifft->execute();
                             volk_32fc_magnitude_squared_32f(d_magnitudeQA, d_ifft->get_outbuf(), d_fft_size);
-                            volk_32f_index_max_32u(&indext_QA, d_magnitudeQA, d_fft_size);
+                            volk_gnsssdr_32f_index_max_32u(&indext_QA, d_magnitudeQA, d_fft_size);
                             magt_QA = d_magnitudeQA[indext_QA] / (fft_normalization_factor * fft_normalization_factor);
                         }
                     if (d_sampled_ms > 1) // If Integration time > 1 code
@@ -496,7 +496,7 @@ int galileo_e5a_noncoherentIQ_acquisition_caf_cc::general_work(int noutput_items
                                     d_fft_if->get_outbuf(), d_fft_code_I_B, d_fft_size);
                             d_ifft->execute();
                             volk_32fc_magnitude_squared_32f(d_magnitudeIB, d_ifft->get_outbuf(), d_fft_size);
-                            volk_32f_index_max_32u(&indext_IB, d_magnitudeIB, d_fft_size);
+                            volk_gnsssdr_32f_index_max_32u(&indext_IB, d_magnitudeIB, d_fft_size);
                             magt_IB = d_magnitudeIB[indext_IB] / (fft_normalization_factor * fft_normalization_factor);
 
                             if (d_both_signal_components == true)
@@ -506,7 +506,7 @@ int galileo_e5a_noncoherentIQ_acquisition_caf_cc::general_work(int noutput_items
                                             d_fft_if->get_outbuf(), d_fft_code_Q_B, d_fft_size);
                                     d_ifft->execute();
                                     volk_32fc_magnitude_squared_32f(d_magnitudeQB, d_ifft->get_outbuf(), d_fft_size);
-                                    volk_32f_index_max_32u(&indext_QB, d_magnitudeQB, d_fft_size);
+                                    volk_gnsssdr_32f_index_max_32u(&indext_QB, d_magnitudeQB, d_fft_size);
                                     magt_QB = d_magnitudeIB[indext_QB] / (fft_normalization_factor * fft_normalization_factor);
                                 }
                         }
@@ -543,7 +543,7 @@ int galileo_e5a_noncoherentIQ_acquisition_caf_cc::general_work(int noutput_items
                                                         }
                                                 }
                                         }
-                                    volk_32f_index_max_32u(&indext, d_magnitudeIA, d_fft_size);
+                                    volk_gnsssdr_32f_index_max_32u(&indext, d_magnitudeIA, d_fft_size);
                                     magt = d_magnitudeIA[indext] / (fft_normalization_factor * fft_normalization_factor);
                                 }
                             else
@@ -572,7 +572,7 @@ int galileo_e5a_noncoherentIQ_acquisition_caf_cc::general_work(int noutput_items
                                                         }
                                                 }
                                         }
-                                    volk_32f_index_max_32u(&indext, d_magnitudeIB, d_fft_size);
+                                    volk_gnsssdr_32f_index_max_32u(&indext, d_magnitudeIB, d_fft_size);
                                     magt = d_magnitudeIB[indext] / (fft_normalization_factor * fft_normalization_factor);
                                 }
                         }
@@ -590,7 +590,7 @@ int galileo_e5a_noncoherentIQ_acquisition_caf_cc::general_work(int noutput_items
                                             d_magnitudeIA[i] += d_magnitudeQA[i];
                                         }
                                 }
-                            volk_32f_index_max_32u(&indext, d_magnitudeIA, d_fft_size);
+                            volk_gnsssdr_32f_index_max_32u(&indext, d_magnitudeIA, d_fft_size);
                             magt = d_magnitudeIA[indext] / (fft_normalization_factor * fft_normalization_factor);
                         }
 
@@ -728,7 +728,7 @@ int galileo_e5a_noncoherentIQ_acquisition_caf_cc::general_work(int noutput_items
                         }
 
                     // Recompute the maximum doppler peak
-                    volk_32f_index_max_32u(&indext, d_CAF_vector, d_num_doppler_bins);
+                    volk_gnsssdr_32f_index_max_32u(&indext, d_CAF_vector, d_num_doppler_bins);
                     doppler = -static_cast<int>(d_doppler_max) + d_doppler_step * indext;
                     d_gnss_synchro->Acq_doppler_hz = static_cast<double>(doppler);
                     // Dump if required, appended at the end of the file
diff --git a/src/algorithms/acquisition/gnuradio_blocks/galileo_pcps_8ms_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/galileo_pcps_8ms_acquisition_cc.cc
index fe05dde..b2ebba1 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/galileo_pcps_8ms_acquisition_cc.cc
+++ b/src/algorithms/acquisition/gnuradio_blocks/galileo_pcps_8ms_acquisition_cc.cc
@@ -293,7 +293,7 @@ int galileo_pcps_8ms_acquisition_cc::general_work(int noutput_items,
 
                     // Search maximum
                     volk_32fc_magnitude_squared_32f(d_magnitude, d_ifft->get_outbuf(), d_fft_size);
-                    volk_32f_index_max_32u(&indext_A, d_magnitude, d_fft_size);
+                    volk_gnsssdr_32f_index_max_32u(&indext_A, d_magnitude, d_fft_size);
 
                     // Normalize the maximum value to correct the scale factor introduced by FFTW
                     magt_A = d_magnitude[indext_A] / (fft_normalization_factor * fft_normalization_factor);
@@ -309,7 +309,7 @@ int galileo_pcps_8ms_acquisition_cc::general_work(int noutput_items,
 
                     // Search maximum
                     volk_32fc_magnitude_squared_32f(d_magnitude, d_ifft->get_outbuf(), d_fft_size);
-                    volk_32f_index_max_32u(&indext_B, d_magnitude, d_fft_size);
+                    volk_gnsssdr_32f_index_max_32u(&indext_B, d_magnitude, d_fft_size);
 
                     // Normalize the maximum value to correct the scale factor introduced by FFTW
                     magt_B = d_magnitude[indext_B] / (fft_normalization_factor * fft_normalization_factor);
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_cc.cc
index 94362db..c7910ff 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_cc.cc
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_cc.cc
@@ -336,7 +336,7 @@ int pcps_acquisition_cc::general_work(int noutput_items,
                     // Search maximum
                     size_t offset = ( d_bit_transition_flag ? effective_fft_size : 0 );
                     volk_32fc_magnitude_squared_32f(d_magnitude, d_ifft->get_outbuf() + offset, effective_fft_size);
-                    volk_32f_index_max_32u(&indext, d_magnitude, effective_fft_size);
+                    volk_gnsssdr_32f_index_max_32u(&indext, d_magnitude, effective_fft_size);
                     magt = d_magnitude[indext];
 
                     if (d_use_CFAR_algorithm_flag == true)
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 b62cb3d..6200efe 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
@@ -227,7 +227,7 @@ double pcps_acquisition_fine_doppler_cc::search_maximum()
 
     for (int i=0;i<d_num_doppler_points;i++)
         {
-            volk_32f_index_max_32u(&tmp_intex_t, d_grid_data[i], d_fft_size);
+            volk_gnsssdr_32f_index_max_32u(&tmp_intex_t, d_grid_data[i], d_fft_size);
             if (d_grid_data[i][tmp_intex_t] > magt)
                 {
                     magt = d_grid_data[i][tmp_intex_t];
@@ -360,7 +360,7 @@ int pcps_acquisition_fine_doppler_cc::estimate_Doppler(gr_vector_const_void_star
     volk_32fc_magnitude_squared_32f(p_tmp_vector, fft_operator->get_outbuf(), fft_size_extended);
 
     uint32_t tmp_index_freq = 0;
-    volk_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, fft_size_extended);
 
     //case even
     int counter = 0;
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_sc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_sc.cc
index cfb2399..40201b0 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_sc.cc
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_sc.cc
@@ -334,7 +334,7 @@ int pcps_acquisition_sc::general_work(int noutput_items,
                     // Search maximum
                     size_t offset = ( d_bit_transition_flag ? effective_fft_size : 0 );
                     volk_32fc_magnitude_squared_32f(d_magnitude, d_ifft->get_outbuf() + offset, effective_fft_size);
-                    volk_32f_index_max_32u(&indext, d_magnitude, effective_fft_size);
+                    volk_gnsssdr_32f_index_max_32u(&indext, d_magnitude, effective_fft_size);
                     magt = d_magnitude[indext];
 
                     if (d_use_CFAR_algorithm_flag == true)
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_assisted_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_assisted_acquisition_cc.cc
index 6d7738d..5504e66 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_assisted_acquisition_cc.cc
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_assisted_acquisition_cc.cc
@@ -273,7 +273,7 @@ double pcps_assisted_acquisition_cc::search_maximum()
 
     for (int i=0;i<d_num_doppler_points;i++)
         {
-            volk_32f_index_max_32u_a(&tmp_intex_t,d_grid_data[i],d_fft_size);
+            volk_gnsssdr_32f_index_max_32u(&tmp_intex_t,d_grid_data[i],d_fft_size);
             if (d_grid_data[i][tmp_intex_t] > magt)
                 {
                     magt = d_grid_data[i][index_time];
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_cccwsr_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_cccwsr_acquisition_cc.cc
index 8dc46cf..e03d6c2 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_cccwsr_acquisition_cc.cc
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_cccwsr_acquisition_cc.cc
@@ -331,11 +331,11 @@ int pcps_cccwsr_acquisition_cc::general_work(int noutput_items,
                         }
 
                     volk_32fc_magnitude_squared_32f(d_magnitude, d_correlation_plus, d_fft_size);
-                    volk_32f_index_max_32u(&indext_plus, d_magnitude, d_fft_size);
+                    volk_gnsssdr_32f_index_max_32u(&indext_plus, d_magnitude, d_fft_size);
                     magt_plus = d_magnitude[indext_plus] / (fft_normalization_factor * fft_normalization_factor);
 
                     volk_32fc_magnitude_squared_32f(d_magnitude, d_correlation_minus, d_fft_size);
-                    volk_32f_index_max_32u(&indext_minus, d_magnitude, d_fft_size);
+                    volk_gnsssdr_32f_index_max_32u(&indext_minus, d_magnitude, d_fft_size);
                     magt_minus = d_magnitude[indext_minus] / (fft_normalization_factor * fft_normalization_factor);
 
                     if (magt_plus >= magt_minus)
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_multithread_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_multithread_acquisition_cc.cc
index 1f35313..2cf411d 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_multithread_acquisition_cc.cc
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_multithread_acquisition_cc.cc
@@ -246,7 +246,7 @@ void pcps_multithread_acquisition_cc::acquisition_core()
 
             // Search maximum
             volk_32fc_magnitude_squared_32f(d_magnitude, d_ifft->get_outbuf(), d_fft_size);
-            volk_32f_index_max_32u(&indext, d_magnitude, d_fft_size);
+            volk_gnsssdr_32f_index_max_32u(&indext, d_magnitude, d_fft_size);
 
             // Normalize the maximum value to correct the scale factor introduced by FFTW
             magt = d_magnitude[indext] / (fft_normalization_factor * fft_normalization_factor);
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_opencl_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_opencl_acquisition_cc.cc
index cb6471e..b0a17c8 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_opencl_acquisition_cc.cc
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_opencl_acquisition_cc.cc
@@ -431,7 +431,7 @@ void pcps_opencl_acquisition_cc::acquisition_core_volk()
 
             // Search maximum
             volk_32fc_magnitude_squared_32f(d_magnitude, d_ifft->get_outbuf(), d_fft_size);
-            volk_32f_index_max_32u(&indext, d_magnitude, d_fft_size);
+            volk_gnsssdr_32f_index_max_32u(&indext, d_magnitude, d_fft_size);
 
             // Normalize the maximum value to correct the scale factor introduced by FFTW
             magt = d_magnitude[indext] / (fft_normalization_factor * fft_normalization_factor);
@@ -593,7 +593,7 @@ void pcps_opencl_acquisition_cc::acquisition_core_opencl()
 
             // Search maximum
             // @TODO: find an efficient way to search the maximum with OpenCL in the GPU.
-            volk_32f_index_max_32u(&indext, d_magnitude, d_fft_size);
+            volk_gnsssdr_32f_index_max_32u(&indext, d_magnitude, d_fft_size);
 
             // Normalize the maximum value to correct the scale factor introduced by FFTW
             magt = d_magnitude[indext] / (fft_normalization_factor * fft_normalization_factor);
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_quicksync_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_quicksync_acquisition_cc.cc
index 459525b..1d5bd85 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_quicksync_acquisition_cc.cc
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_quicksync_acquisition_cc.cc
@@ -401,7 +401,7 @@ int pcps_quicksync_acquisition_cc::general_work(int noutput_items,
                    introduced by FFTW*/
                     //volk_32f_s32f_multiply_32f_a(d_magnitude_folded,d_magnitude_folded,
                     // (1 / (fft_normalization_factor * fft_normalization_factor)), d_fft_size);
-                    volk_32f_index_max_32u(&indext, d_magnitude_folded, d_fft_size);
+                    volk_gnsssdr_32f_index_max_32u(&indext, d_magnitude_folded, d_fft_size);
 
                     magt = d_magnitude_folded[indext] / (fft_normalization_factor * fft_normalization_factor);
 
@@ -454,7 +454,7 @@ int pcps_quicksync_acquisition_cc::general_work(int noutput_items,
                                         }
                                     /*Obtain maximun value of correlation given the possible delay selected */
                                     volk_32fc_magnitude_squared_32f(d_corr_output_f, complex_acumulator, d_folding_factor);
-                                    volk_32f_index_max_32u(&indext, d_corr_output_f, d_folding_factor);
+                                    volk_gnsssdr_32f_index_max_32u(&indext, d_corr_output_f, d_folding_factor);
 
                                     /*Now save the real code phase in the gnss_syncro block for use in other stages*/
                                     d_gnss_synchro->Acq_delay_samples = static_cast<double>(d_possible_delay[indext]);
diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_tong_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_tong_acquisition_cc.cc
index 390c4c2..8810a23 100644
--- a/src/algorithms/acquisition/gnuradio_blocks/pcps_tong_acquisition_cc.cc
+++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_tong_acquisition_cc.cc
@@ -335,7 +335,7 @@ int pcps_tong_acquisition_cc::general_work(int noutput_items,
                     volk_32f_x2_add_32f(d_grid_data[doppler_index], d_magnitude, d_grid_data[doppler_index], d_fft_size);
 
                     // Search maximum
-                    volk_32f_index_max_32u(&indext, d_grid_data[doppler_index], d_fft_size);
+                    volk_gnsssdr_32f_index_max_32u(&indext, d_grid_data[doppler_index], d_fft_size);
 
                     magt = d_grid_data[doppler_index][indext];
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-hamradio/gnss-sdr.git



More information about the pkg-hamradio-commits mailing list