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 47 #include <gnuradio/block.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 std::unique_ptr<gnss_fft_complex_fwd> d_fft_if;
201 std::unique_ptr<gnss_fft_complex_rev> d_ifft;
203 volk_gnsssdr::vector<volk_gnsssdr::vector<std::complex<float>>> d_grid_doppler_wipeoffs;
204 volk_gnsssdr::vector<volk_gnsssdr::vector<float>> d_grid_data;
205 volk_gnsssdr::vector<gr_complex> d_fft_codes;
206 volk_gnsssdr::vector<gr_complex> d_10_ms_buffer;
207 volk_gnsssdr::vector<float> d_magnitude;
211 std::string d_satellite_str;
212 std::string d_dump_filename;
219 int64_t d_dump_number;
220 uint64_t d_sample_counter;
223 float d_test_statistics;
227 int d_samples_per_ms;
229 int d_config_doppler_max;
230 int d_num_doppler_points;
232 int d_n_samples_in_buffer;
234 int d_gnuradio_forecast_samples;
235 unsigned int d_doppler_step;
236 unsigned int d_channel;
237 unsigned int d_dump_channel;
246 #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.
Helper file for FFT interface.
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.