38 #ifndef GNSS_SDR_PCPS_ACQUISITION_FINE_DOPPLER_CC_H 39 #define GNSS_SDR_PCPS_ACQUISITION_FINE_DOPPLER_CC_H 41 #if ARMA_NO_BOUND_CHECKING 42 #define ARMA_NO_DEBUG 1 49 #include <gnuradio/block.h> 50 #include <gnuradio/fft/fft.h> 51 #include <gnuradio/gr_complex.h> 52 #include <volk_gnsssdr/volk_gnsssdr_alloc.h> 58 #if GNURADIO_USES_STD_POINTERS 60 #include <boost/shared_ptr.hpp> 65 #if GNURADIO_USES_STD_POINTERS 66 using pcps_acquisition_fine_doppler_cc_sptr = std::shared_ptr<pcps_acquisition_fine_doppler_cc>;
68 using pcps_acquisition_fine_doppler_cc_sptr = boost::shared_ptr<pcps_acquisition_fine_doppler_cc>;
71 pcps_acquisition_fine_doppler_cc_sptr pcps_make_acquisition_fine_doppler_cc(
const Acq_Conf& conf_);
92 d_gnss_synchro = p_gnss_synchro;
98 inline unsigned int mag()
const 100 return d_test_statistics;
131 d_dump_channel = d_channel;
139 d_channel_fsm = std::move(channel_fsm);
149 d_threshold = threshold;
158 d_config_doppler_max = doppler_max;
180 void dump_results(
int effective_fft_size);
182 void forecast(
int noutput_items, gr_vector_int& ninput_items_required);
187 int general_work(
int noutput_items, gr_vector_int& ninput_items,
188 gr_vector_const_void_star& input_items,
189 gr_vector_void_star& output_items);
192 friend pcps_acquisition_fine_doppler_cc_sptr pcps_make_acquisition_fine_doppler_cc(
const Acq_Conf& conf_);
195 int compute_and_accumulate_grid(gr_vector_const_void_star& input_items);
196 int estimate_Doppler();
197 float estimate_input_power(gr_vector_const_void_star& input_items);
200 void update_carrier_wipeoff();
203 std::weak_ptr<ChannelFsm> d_channel_fsm;
204 std::unique_ptr<gr::fft::fft_complex> d_fft_if;
205 std::unique_ptr<gr::fft::fft_complex> d_ifft;
207 volk_gnsssdr::vector<volk_gnsssdr::vector<std::complex<float>>> d_grid_doppler_wipeoffs;
208 volk_gnsssdr::vector<volk_gnsssdr::vector<float>> d_grid_data;
209 volk_gnsssdr::vector<gr_complex> d_fft_codes;
210 volk_gnsssdr::vector<gr_complex> d_10_ms_buffer;
211 volk_gnsssdr::vector<float> d_magnitude;
215 std::string d_satellite_str;
216 std::string d_dump_filename;
223 int64_t d_dump_number;
224 uint64_t d_sample_counter;
226 float d_doppler_freq;
228 float d_test_statistics;
232 int d_samples_per_ms;
234 int d_gnuradio_forecast_samples;
235 int d_config_doppler_max;
236 int d_num_doppler_points;
238 int d_n_samples_in_buffer;
240 unsigned int d_doppler_step;
241 unsigned int d_channel;
242 unsigned int d_code_phase;
243 unsigned int d_dump_channel;
This class implements a Parallel Code Phase Search Acquisition.
void set_channel(unsigned int channel)
Set acquisition channel unique ID.
void set_doppler_step(unsigned int doppler_step)
Set Doppler steps for the grid search.
void init()
Initializes acquisition algorithm.
int general_work(int noutput_items, gr_vector_int &ninput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items)
Parallel Code Phase Search Acquisition signal processing.
void set_local_code(std::complex< float > *code)
Sets local code for PCPS acquisition algorithm.
Class that contains all the configuration parameters for generic acquisition block based on the PCPS ...
Interface of the State Machine for channel.
This is the class that contains the information that is shared by the processing blocks.
void set_gnss_synchro(Gnss_Synchro *p_gnss_synchro)
Set acquisition/tracking common Gnss_Synchro object pointer to exchange synchronization data between ...
void set_threshold(float threshold)
Set statistics threshold of PCPS algorithm.
unsigned int mag() const
Returns the maximum peak of grid search.
unsigned int nextPowerOf2(unsigned int n)
Obtains the next power of 2 greater or equal to the input parameter.
void set_doppler_max(unsigned int doppler_max)
Set maximum Doppler grid search.
void set_active(bool active)
Starts acquisition algorithm, turning from standby mode to active mode.
~pcps_acquisition_fine_doppler_cc()=default
Default destructor.
void set_channel_fsm(std::weak_ptr< ChannelFsm > channel_fsm)
Set channel fsm associated to this acquisition instance.
void set_state(int state)
If set to 1, ensures that acquisition starts at the first available sample.
Interface of the Gnss_Synchro class.