26 #ifndef GNSS_SDR_GPS_L1_CA_KF_TRACKING_CC_H 27 #define GNSS_SDR_GPS_L1_CA_KF_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_kf_tracking_cc_sptr = gnss_shared_ptr<Gps_L1_Ca_Kf_Tracking_cc>;
56 gps_l1_ca_kf_tracking_cc_sptr
57 gps_l1_ca_kf_make_tracking_cc(uint32_t order,
59 int64_t fs_in, 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_kf_tracking_cc_sptr
90 gps_l1_ca_kf_make_tracking_cc(uint32_t order,
92 int64_t fs_in, uint32_t vector_length,
94 const std::string& dump_filename,
96 float early_late_space_chips,
105 int64_t fs_in, uint32_t vector_length,
107 const std::string& dump_filename,
109 float early_late_space_chips,
118 uint32_t d_vector_length;
127 double d_early_late_spc_chips;
130 double d_rem_code_phase_samples;
131 double d_rem_code_phase_chips;
132 float d_rem_carr_phase_rad;
135 arma::mat kf_P_x_ini;
137 arma::mat kf_P_x_pre;
146 arma::colvec kf_x_pre;
153 uint32_t bayes_ptrans;
154 uint32_t bayes_strans;
166 double d_acq_carrier_doppler_step_hz{};
167 double d_acq_code_phase_samples;
168 double d_acq_carrier_doppler_hz;
170 int32_t d_n_correlator_taps;
171 volk_gnsssdr::vector<float> d_ca_code;
172 volk_gnsssdr::vector<float> d_local_code_shift_chips;
173 volk_gnsssdr::vector<gr_complex> d_correlator_outs;
177 double d_code_freq_chips;
178 double d_code_phase_step_chips;
179 double d_code_phase_rate_step_chips;
180 double d_carrier_doppler_hz;
181 double d_carrier_dopplerrate_hz2;
182 double d_carrier_phase_step_rad;
183 double d_acc_carrier_phase_rad;
184 double d_carr_phase_error_rad{};
185 double d_carr_phase_sigma2;
186 double d_code_phase_samples;
187 double code_error_chips;
188 double code_error_filt_chips;
191 int32_t d_current_prn_length_samples;
194 uint64_t d_sample_counter;
195 uint64_t d_acq_sample_stamp;
198 int32_t d_cn0_estimation_counter;
199 volk_gnsssdr::vector<gr_complex> d_Prompt_buffer;
200 double d_carrier_lock_test;
201 double d_CN0_SNV_dB_Hz;
202 double d_carrier_lock_threshold;
203 int32_t d_carrier_lock_fail_counter;
206 bool d_enable_tracking;
210 std::string d_dump_filename;
211 std::ofstream d_dump_file;
213 std::map<std::string, std::string> systemName;
216 int32_t save_matfile();
222 #endif // GNSS_SDR_GPS_L1_CA_KF_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 class implements a DLL + PLL tracking loop block.
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.
Interface of a library with Bayesian noise statistic estimation.
Interface of the Gnss_Synchro class.