29 #ifndef GNSS_SDR_GPS_L1_CA_KF_TRACKING_CC_H 30 #define GNSS_SDR_GPS_L1_CA_KF_TRACKING_CC_H 32 #if ARMA_NO_BOUND_CHECKING 33 #define ARMA_NO_DEBUG 1 42 #include <gnuradio/block.h> 43 #include <volk_gnsssdr/volk_gnsssdr_alloc.h> 47 #if GNURADIO_USES_STD_POINTERS 50 #include <boost/shared_ptr.hpp> 55 #if GNURADIO_USES_STD_POINTERS 56 using gps_l1_ca_kf_tracking_cc_sptr = std::shared_ptr<Gps_L1_Ca_Kf_Tracking_cc>;
58 using gps_l1_ca_kf_tracking_cc_sptr = boost::shared_ptr<Gps_L1_Ca_Kf_Tracking_cc>;
61 gps_l1_ca_kf_tracking_cc_sptr
62 gps_l1_ca_kf_make_tracking_cc(uint32_t order,
64 int64_t fs_in, uint32_t vector_length,
66 const std::string& dump_filename,
68 float early_late_space_chips,
84 void set_channel(uint32_t channel);
86 void start_tracking();
88 int general_work(
int noutput_items, gr_vector_int& ninput_items,
89 gr_vector_const_void_star& input_items, gr_vector_void_star& output_items);
91 void forecast(
int noutput_items, gr_vector_int& ninput_items_required);
94 friend gps_l1_ca_kf_tracking_cc_sptr
95 gps_l1_ca_kf_make_tracking_cc(uint32_t order,
97 int64_t fs_in, uint32_t vector_length,
99 const std::string& dump_filename,
101 float early_late_space_chips,
110 int64_t fs_in, uint32_t vector_length,
112 const std::string& dump_filename,
114 float early_late_space_chips,
123 uint32_t d_vector_length;
132 double d_early_late_spc_chips;
135 double d_rem_code_phase_samples;
136 double d_rem_code_phase_chips;
137 float d_rem_carr_phase_rad;
140 arma::mat kf_P_x_ini;
142 arma::mat kf_P_x_pre;
151 arma::colvec kf_x_pre;
158 uint32_t bayes_ptrans;
159 uint32_t bayes_strans;
171 double d_acq_carrier_doppler_step_hz{};
172 double d_acq_code_phase_samples;
173 double d_acq_carrier_doppler_hz;
175 int32_t d_n_correlator_taps;
176 volk_gnsssdr::vector<float> d_ca_code;
177 volk_gnsssdr::vector<float> d_local_code_shift_chips;
178 volk_gnsssdr::vector<gr_complex> d_correlator_outs;
182 double d_code_freq_chips;
183 double d_code_phase_step_chips;
184 double d_code_phase_rate_step_chips;
185 double d_carrier_doppler_hz;
186 double d_carrier_dopplerrate_hz2;
187 double d_carrier_phase_step_rad;
188 double d_acc_carrier_phase_rad;
189 double d_carr_phase_error_rad{};
190 double d_carr_phase_sigma2;
191 double d_code_phase_samples;
192 double code_error_chips;
193 double code_error_filt_chips;
196 int32_t d_current_prn_length_samples;
199 uint64_t d_sample_counter;
200 uint64_t d_acq_sample_stamp;
203 int32_t d_cn0_estimation_counter;
204 volk_gnsssdr::vector<gr_complex> d_Prompt_buffer;
205 double d_carrier_lock_test;
206 double d_CN0_SNV_dB_Hz;
207 double d_carrier_lock_threshold;
208 int32_t d_carrier_lock_fail_counter;
211 bool d_enable_tracking;
215 std::string d_dump_filename;
216 std::ofstream d_dump_file;
218 std::map<std::string, std::string> systemName;
221 int32_t save_matfile();
224 #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.
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.