26 #ifndef GNSS_SDR_GPS_L1_CA_GAUSSIAN_TRACKING_CC_H 27 #define GNSS_SDR_GPS_L1_CA_GAUSSIAN_TRACKING_CC_H 29 #if ARMA_NO_BOUND_CHECKING 30 #define ARMA_NO_DEBUG 1 40 #include <gnuradio/block.h> 41 #include <volk_gnsssdr/volk_gnsssdr_alloc.h> 54 using gps_l1_ca_gaussian_tracking_cc_sptr = gnss_shared_ptr<Gps_L1_Ca_Gaussian_Tracking_cc>;
56 gps_l1_ca_gaussian_tracking_cc_sptr
57 gps_l1_ca_gaussian_make_tracking_cc(uint32_t order,
59 uint32_t vector_length,
61 const std::string& dump_filename,
63 float early_late_space_chips,
79 void set_channel(uint32_t channel);
81 void start_tracking();
83 int general_work(
int noutput_items, gr_vector_int& ninput_items,
84 gr_vector_const_void_star& input_items, gr_vector_void_star& output_items);
86 void forecast(
int noutput_items, gr_vector_int& ninput_items_required);
89 friend gps_l1_ca_gaussian_tracking_cc_sptr
90 gps_l1_ca_gaussian_make_tracking_cc(uint32_t order,
92 uint32_t vector_length,
94 const std::string& dump_filename,
96 float early_late_space_chips,
105 uint32_t vector_length,
107 const std::string& dump_filename,
109 float early_late_space_chips,
116 int32_t save_matfile();
120 uint32_t d_vector_length;
128 double d_early_late_spc_chips;
131 double d_rem_code_phase_samples;
132 double d_rem_code_phase_chips;
133 float d_rem_carr_phase_rad;
136 arma::mat kf_P_x_ini;
138 arma::mat kf_P_x_pre;
147 arma::colvec kf_x_pre;
154 uint32_t bayes_ptrans;
155 uint32_t bayes_strans;
167 double d_acq_carrier_doppler_step_hz{};
168 double d_acq_code_phase_samples;
169 double d_acq_carrier_doppler_hz;
171 int32_t d_n_correlator_taps;
172 volk_gnsssdr::vector<float> d_ca_code;
173 volk_gnsssdr::vector<float> d_local_code_shift_chips;
174 volk_gnsssdr::vector<gr_complex> d_correlator_outs;
178 double d_code_freq_chips;
179 double d_code_phase_step_chips;
180 double d_code_phase_rate_step_chips;
181 double d_carrier_doppler_hz;
182 double d_carrier_dopplerrate_hz2;
183 double d_carrier_phase_step_rad;
184 double d_acc_carrier_phase_rad;
185 double d_carr_phase_error_rad{};
186 double d_carr_phase_sigma2;
187 double d_code_phase_samples;
188 double code_error_chips;
189 double code_error_filt_chips;
192 int32_t d_current_prn_length_samples;
195 uint64_t d_sample_counter;
196 uint64_t d_acq_sample_stamp;
199 int32_t d_cn0_estimation_counter;
200 volk_gnsssdr::vector<gr_complex> d_Prompt_buffer;
201 double d_carrier_lock_test;
202 double d_CN0_SNV_dB_Hz;
203 double d_carrier_lock_threshold;
204 int32_t d_carrier_lock_fail_counter;
207 bool d_enable_tracking;
211 std::string d_dump_filename;
212 std::ofstream d_dump_file;
214 std::map<std::string, std::string> systemName;
221 #endif // GNSS_SDR_GPS_L1_CA_GAUSSIAN_TRACKING_CC_H Bayesian_estimator is an estimator of noise characteristics (i.e. mean, covariance) ...
Interface of a 2nd order PLL filter for carrier tracking loop.
This class implements a 2nd order DLL filter for code tracking loop.
This is the class that contains the information that is shared by the processing blocks.
This interface represents a GNSS block.
Highly optimized CPU vector multiTAP correlator class using real-valued local codes.
Interface of a 2nd order DLL filter for code tracking loop.
Class that implements carrier wipe-off and correlators.
This class implements a DLL + PLL tracking loop block.
Interface of a library with Bayesian noise statistic estimation.
Interface of the Gnss_Synchro class.