35 #ifndef GNSS_SDR_PCPS_ACQUISITION_FINE_DOPPLER_CC_H 36 #define GNSS_SDR_PCPS_ACQUISITION_FINE_DOPPLER_CC_H 38 #if ARMA_NO_BOUND_CHECKING 39 #define ARMA_NO_DEBUG 1 46 #include <gnuradio/block.h> 47 #include <gnuradio/fft/fft.h> 48 #include <gnuradio/gr_complex.h> 49 #include <volk_gnsssdr/volk_gnsssdr_alloc.h> 65 using pcps_acquisition_fine_doppler_cc_sptr = gnss_shared_ptr<pcps_acquisition_fine_doppler_cc>;
67 pcps_acquisition_fine_doppler_cc_sptr pcps_make_acquisition_fine_doppler_cc(
const Acq_Conf& conf_);
88 d_gnss_synchro = p_gnss_synchro;
94 inline unsigned int mag()
const 96 return d_test_statistics;
127 d_dump_channel = d_channel;
135 d_channel_fsm = std::move(channel_fsm);
145 d_threshold = threshold;
154 d_config_doppler_max = doppler_max;
176 void dump_results(
int effective_fft_size);
178 void forecast(
int noutput_items, gr_vector_int& ninput_items_required);
183 int general_work(
int noutput_items, gr_vector_int& ninput_items,
184 gr_vector_const_void_star& input_items,
185 gr_vector_void_star& output_items);
188 friend pcps_acquisition_fine_doppler_cc_sptr pcps_make_acquisition_fine_doppler_cc(
const Acq_Conf& conf_);
191 int compute_and_accumulate_grid(gr_vector_const_void_star& input_items);
192 int estimate_Doppler();
193 float estimate_input_power(gr_vector_const_void_star& input_items);
196 void update_carrier_wipeoff();
199 std::weak_ptr<ChannelFsm> d_channel_fsm;
200 #if GNURADIO_FFT_USES_TEMPLATES 201 std::unique_ptr<gr::fft::fft_complex_fwd> d_fft_if;
202 std::unique_ptr<gr::fft::fft_complex_rev> d_ifft;
204 std::unique_ptr<gr::fft::fft_complex> d_fft_if;
205 std::unique_ptr<gr::fft::fft_complex> d_ifft;
208 volk_gnsssdr::vector<volk_gnsssdr::vector<std::complex<float>>> d_grid_doppler_wipeoffs;
209 volk_gnsssdr::vector<volk_gnsssdr::vector<float>> d_grid_data;
210 volk_gnsssdr::vector<gr_complex> d_fft_codes;
211 volk_gnsssdr::vector<gr_complex> d_10_ms_buffer;
212 volk_gnsssdr::vector<float> d_magnitude;
216 std::string d_satellite_str;
217 std::string d_dump_filename;
224 int64_t d_dump_number;
225 uint64_t d_sample_counter;
227 float d_doppler_freq;
229 float d_test_statistics;
233 int d_samples_per_ms;
235 int d_gnuradio_forecast_samples;
236 int d_config_doppler_max;
237 int d_num_doppler_points;
239 int d_n_samples_in_buffer;
241 unsigned int d_doppler_step;
242 unsigned int d_channel;
243 unsigned int d_code_phase;
244 unsigned int d_dump_channel;
253 #endif // GNSS_SDR_PCPS_ACQUISITION_FINE_DOPPLER_CC_H 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.