35 #ifndef GNSS_SDR_PCPS_ACQUISITION_FINE_DOPPLER_CC_H 36 #define GNSS_SDR_PCPS_ACQUISITION_FINE_DOPPLER_CC_H 39 #if ARMA_NO_BOUND_CHECKING 40 #define ARMA_NO_DEBUG 1 48 #include <gnuradio/block.h> 49 #include <gnuradio/gr_complex.h> 50 #include <volk_gnsssdr/volk_gnsssdr_alloc.h> 66 using pcps_acquisition_fine_doppler_cc_sptr = gnss_shared_ptr<pcps_acquisition_fine_doppler_cc>;
68 pcps_acquisition_fine_doppler_cc_sptr pcps_make_acquisition_fine_doppler_cc(
const Acq_Conf& conf_);
89 d_gnss_synchro = p_gnss_synchro;
95 inline unsigned int mag()
const override 97 return d_test_statistics;
128 d_dump_channel = d_channel;
136 d_channel_fsm = std::move(channel_fsm);
142 int general_work(
int noutput_items, gr_vector_int& ninput_items,
143 gr_vector_const_void_star& input_items,
144 gr_vector_void_star& output_items)
override;
151 unsigned int nextPowerOf2(
unsigned int n);
153 void dump_results(
int effective_fft_size);
155 void forecast(
int noutput_items, gr_vector_int& ninput_items_required)
override;
157 friend pcps_acquisition_fine_doppler_cc_sptr pcps_make_acquisition_fine_doppler_cc(
const Acq_Conf& conf_);
160 int compute_and_accumulate_grid(gr_vector_const_void_star& input_items);
161 int estimate_Doppler();
162 float estimate_input_power(gr_vector_const_void_star& input_items);
165 void update_carrier_wipeoff();
166 bool start()
override;
170 std::string d_satellite_str;
173 std::string d_dump_filename;
177 int64_t d_dump_number;
178 uint64_t d_sample_counter;
180 float d_test_statistics;
184 const int d_num_doppler_points;
186 int d_n_samples_in_buffer;
187 const int d_fft_size;
188 int d_gnuradio_forecast_samples;
189 unsigned int d_channel;
190 unsigned int d_dump_channel;
195 std::weak_ptr<ChannelFsm> d_channel_fsm;
196 std::unique_ptr<gnss_fft_complex_fwd> d_fft_if;
197 std::unique_ptr<gnss_fft_complex_rev> d_ifft;
199 volk_gnsssdr::vector<volk_gnsssdr::vector<std::complex<float>>> d_grid_doppler_wipeoffs;
200 volk_gnsssdr::vector<volk_gnsssdr::vector<float>> d_grid_data;
201 volk_gnsssdr::vector<gr_complex> d_fft_codes;
202 volk_gnsssdr::vector<gr_complex> d_10_ms_buffer;
203 volk_gnsssdr::vector<float> d_magnitude;
209 #endif // GNSS_SDR_PCPS_ACQUISITION_FINE_DOPPLER_CC_H void set_active(bool active) override
Starts acquisition algorithm, turning from standby mode to active mode.
This class implements a Parallel Code Phase Search Acquisition.
int general_work(int noutput_items, gr_vector_int &ninput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) override
Parallel Code Phase Search Acquisition signal processing.
Helper file for FFT interface.
Header file of the interface to an acquisition implementation GNSS block.
Class that contains all the configuration parameters for generic acquisition block based on the PCPS ...
Interface of the State Machine for channel.
void set_local_code(std::complex< float > *code) override
Sets local code for PCPS acquisition algorithm.
unsigned int mag() const override
Returns the maximum peak of grid search.
This is the class that contains the information that is shared by the processing blocks.
void set_channel_fsm(std::weak_ptr< ChannelFsm > channel_fsm) override
Set channel fsm associated to this acquisition instance.
void set_gnss_synchro(Gnss_Synchro *p_gnss_synchro) override
Set acquisition/tracking common Gnss_Synchro object pointer to exchange synchronization data between ...
void set_channel(unsigned int channel) override
Set acquisition channel unique ID.
~pcps_acquisition_fine_doppler_cc()=default
Default destructor.
This abstract class represents an interface to an acquisition GNSS block.
Interface of the Gnss_Synchro class.