diff --git a/src/algorithms/acquisition/adapters/base_pcps_acquisition_fpga.cc b/src/algorithms/acquisition/adapters/base_pcps_acquisition_fpga.cc index 525f22258..d45f43c34 100644 --- a/src/algorithms/acquisition/adapters/base_pcps_acquisition_fpga.cc +++ b/src/algorithms/acquisition/adapters/base_pcps_acquisition_fpga.cc @@ -183,6 +183,13 @@ void BasePcpsAcquisitionFpga::stop_acquisition() } } +void BasePcpsAcquisitionFpga::init() +{ + if (acquisition_fpga_) + { + acquisition_fpga_->init(); + } +} signed int BasePcpsAcquisitionFpga::mag() { diff --git a/src/algorithms/acquisition/adapters/base_pcps_acquisition_fpga.h b/src/algorithms/acquisition/adapters/base_pcps_acquisition_fpga.h index 98e550aaa..9a1b290a0 100644 --- a/src/algorithms/acquisition/adapters/base_pcps_acquisition_fpga.h +++ b/src/algorithms/acquisition/adapters/base_pcps_acquisition_fpga.h @@ -86,6 +86,9 @@ protected: static const uint32_t ACQ_BUFF_0 = 0; // FPGA Acquisition IP buffer containing L1/E1 frequency band samples by default. static const uint32_t ACQ_BUFF_1 = 1; // FPGA Acquisition IP buffer containing L2 or L5/E5 frequency band samples by default. + // parameter initialization + void init(); + // Members subclasses must set volk_gnsssdr::vector d_all_fft_codes_; Acq_Conf_Fpga acq_parameters_; diff --git a/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition_fpga.cc b/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition_fpga.cc index 8bee77a18..38e0bf05c 100644 --- a/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition_fpga.cc +++ b/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition_fpga.cc @@ -52,6 +52,7 @@ GalileoE1PcpsAmbiguousAcquisitionFpga::GalileoE1PcpsAmbiguousAcquisitionFpga( acquire_pilot_(configuration->property(role + ".acquire_pilot", false)) { generate_galileo_e1_prn_codes(); + init(); DLOG(INFO) << "Initialized FPGA acquisition adapter for role " << role; } diff --git a/src/algorithms/acquisition/adapters/galileo_e5a_pcps_acquisition_fpga.cc b/src/algorithms/acquisition/adapters/galileo_e5a_pcps_acquisition_fpga.cc index 7a146001f..53eb3d5d4 100644 --- a/src/algorithms/acquisition/adapters/galileo_e5a_pcps_acquisition_fpga.cc +++ b/src/algorithms/acquisition/adapters/galileo_e5a_pcps_acquisition_fpga.cc @@ -51,6 +51,7 @@ GalileoE5aPcpsAcquisitionFpga::GalileoE5aPcpsAcquisitionFpga( acq_pilot_ = configuration->property(role + ".acquire_pilot", false); acq_iq_ = configuration->property(role + ".acquire_iq", false); generate_galileo_e5a_prn_codes(); + init(); DLOG(INFO) << "Initialized FPGA acquisition adapter for role " << role; } diff --git a/src/algorithms/acquisition/adapters/galileo_e5b_pcps_acquisition_fpga.cc b/src/algorithms/acquisition/adapters/galileo_e5b_pcps_acquisition_fpga.cc index 984fe37b1..4a76c0c3f 100644 --- a/src/algorithms/acquisition/adapters/galileo_e5b_pcps_acquisition_fpga.cc +++ b/src/algorithms/acquisition/adapters/galileo_e5b_pcps_acquisition_fpga.cc @@ -51,6 +51,7 @@ GalileoE5bPcpsAcquisitionFpga::GalileoE5bPcpsAcquisitionFpga( acq_iq_(configuration->property(role + ".acquire_iq", false)) { generate_galileo_e5b_prn_codes(); + init(); DLOG(INFO) << "Initialized FPGA acquisition adapter for role " << role; } diff --git a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition_fpga.cc b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition_fpga.cc index be73eccc2..954b76ebb 100644 --- a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition_fpga.cc +++ b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition_fpga.cc @@ -50,6 +50,7 @@ GpsL1CaPcpsAcquisitionFpga::GpsL1CaPcpsAcquisitionFpga( out_streams) { generate_gps_l1_ca_prn_codes(); + init(); DLOG(INFO) << "Initialized FPGA acquisition adapter for role " << role; } diff --git a/src/algorithms/acquisition/adapters/gps_l2_m_pcps_acquisition_fpga.cc b/src/algorithms/acquisition/adapters/gps_l2_m_pcps_acquisition_fpga.cc index 87edb6a64..a58de28a7 100644 --- a/src/algorithms/acquisition/adapters/gps_l2_m_pcps_acquisition_fpga.cc +++ b/src/algorithms/acquisition/adapters/gps_l2_m_pcps_acquisition_fpga.cc @@ -50,6 +50,7 @@ GpsL2MPcpsAcquisitionFpga::GpsL2MPcpsAcquisitionFpga( out_streams) { generate_gps_l2c_m_prn_codes(); + init(); DLOG(INFO) << "Initialized FPGA acquisition adapter for role " << role; } diff --git a/src/algorithms/acquisition/adapters/gps_l5i_pcps_acquisition_fpga.cc b/src/algorithms/acquisition/adapters/gps_l5i_pcps_acquisition_fpga.cc index a291776cf..a65366ce7 100644 --- a/src/algorithms/acquisition/adapters/gps_l5i_pcps_acquisition_fpga.cc +++ b/src/algorithms/acquisition/adapters/gps_l5i_pcps_acquisition_fpga.cc @@ -51,6 +51,7 @@ GpsL5iPcpsAcquisitionFpga::GpsL5iPcpsAcquisitionFpga( out_streams) { generate_gps_l5i_prn_codes(); + init(); DLOG(INFO) << "Initialized FPGA acquisition adapter for role " << role; } diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fpga.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fpga.cc index 7adee2753..03c36f090 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fpga.cc +++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fpga.cc @@ -74,8 +74,6 @@ pcps_acquisition_fpga::pcps_acquisition_fpga(Acq_Conf_Fpga *conf_, acq_buff_num, downsampling_filter_specs, max_FFT_size); - d_acquisition_fpga->init(d_acq_parameters->code_length, d_acq_parameters->fft_size, - d_acq_parameters->resampled_fs, d_acq_parameters->downsampling_filter_num, d_acq_parameters->excludelimit, d_acq_parameters->all_fft_codes); } void pcps_acquisition_fpga::set_local_code() @@ -83,6 +81,12 @@ void pcps_acquisition_fpga::set_local_code() d_acquisition_fpga->set_local_code(d_gnss_synchro->PRN); } +void pcps_acquisition_fpga::init() +{ + d_acquisition_fpga->init(d_acq_parameters->code_length, d_acq_parameters->fft_size, + d_acq_parameters->resampled_fs, d_acq_parameters->downsampling_filter_num, d_acq_parameters->excludelimit, d_acq_parameters->all_fft_codes); +} + void pcps_acquisition_fpga::send_positive_acquisition() { diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fpga.h b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fpga.h index 4db5e81b9..80a9051d0 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fpga.h +++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_fpga.h @@ -81,6 +81,11 @@ public: return d_mag; } + /*! + * \brief Initializes acquisition algorithm. + */ + void init(); + /*! * \brief Sets local code for PCPS acquisition algorithm. */ diff --git a/src/algorithms/tracking/gnuradio_blocks/glonass_ca_dll_pll_c_aid_tracking_cc.cc b/src/algorithms/tracking/gnuradio_blocks/glonass_ca_dll_pll_c_aid_tracking_cc.cc index 1538dee8f..c72f35c15 100644 --- a/src/algorithms/tracking/gnuradio_blocks/glonass_ca_dll_pll_c_aid_tracking_cc.cc +++ b/src/algorithms/tracking/gnuradio_blocks/glonass_ca_dll_pll_c_aid_tracking_cc.cc @@ -401,10 +401,12 @@ int32_t Glonass_Ca_Dll_Pll_C_Aid_Tracking_cc::save_matfile() const { // READ DUMP FILE std::ifstream::pos_type size; - const int32_t number_of_double_vars = 11; - const int32_t number_of_float_vars = 5; + const int32_t number_of_double_vars = 1; + const int32_t number_of_float_vars = 19; const int32_t epoch_size_bytes = sizeof(uint64_t) + sizeof(double) * number_of_double_vars + - sizeof(float) * number_of_float_vars + sizeof(uint32_t); + sizeof(float) * number_of_float_vars + sizeof(uint32_t) + + sizeof(uint64_t) + sizeof(int32_t); + std::ifstream dump_file; dump_file.exceptions(std::ifstream::failbit | std::ifstream::badbit); try @@ -428,24 +430,28 @@ int32_t Glonass_Ca_Dll_Pll_C_Aid_Tracking_cc::save_matfile() const { return 1; } + auto abs_VE = std::vector(num_epoch); auto abs_E = std::vector(num_epoch); auto abs_P = std::vector(num_epoch); auto abs_L = std::vector(num_epoch); + auto abs_VL = std::vector(num_epoch); auto Prompt_I = std::vector(num_epoch); auto Prompt_Q = std::vector(num_epoch); auto PRN_start_sample_count = std::vector(num_epoch); - auto acc_carrier_phase_rad = std::vector(num_epoch); - auto carrier_doppler_hz = std::vector(num_epoch); - auto code_freq_chips = std::vector(num_epoch); - auto carr_error_hz = std::vector(num_epoch); - auto carr_error_filt_hz = std::vector(num_epoch); - auto code_error_chips = std::vector(num_epoch); - auto code_error_filt_chips = std::vector(num_epoch); - auto CN0_SNV_dB_Hz = std::vector(num_epoch); - auto carrier_lock_test = std::vector(num_epoch); - auto aux1 = std::vector(num_epoch); + auto acc_carrier_phase_rad = std::vector(num_epoch); + auto carrier_doppler_hz = std::vector(num_epoch); + auto code_freq_chips = std::vector(num_epoch); + auto carr_error_hz = std::vector(num_epoch); + auto carr_error_filt_hz = std::vector(num_epoch); + auto code_error_chips = std::vector(num_epoch); + auto code_error_filt_chips = std::vector(num_epoch); + auto CN0_SNV_dB_Hz = std::vector(num_epoch); + auto carrier_lock_test = std::vector(num_epoch); + auto aux1 = std::vector(num_epoch); auto aux2 = std::vector(num_epoch); auto PRN = std::vector(num_epoch); + auto TOW = std::vector(num_epoch); + auto WN = std::vector(num_epoch); try { @@ -453,24 +459,28 @@ int32_t Glonass_Ca_Dll_Pll_C_Aid_Tracking_cc::save_matfile() const { for (int64_t i = 0; i < num_epoch; i++) { + dump_file.read(reinterpret_cast(&abs_VE[i]), sizeof(float)); dump_file.read(reinterpret_cast(&abs_E[i]), sizeof(float)); dump_file.read(reinterpret_cast(&abs_P[i]), sizeof(float)); dump_file.read(reinterpret_cast(&abs_L[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&abs_VL[i]), sizeof(float)); dump_file.read(reinterpret_cast(&Prompt_I[i]), sizeof(float)); dump_file.read(reinterpret_cast(&Prompt_Q[i]), sizeof(float)); dump_file.read(reinterpret_cast(&PRN_start_sample_count[i]), sizeof(uint64_t)); - dump_file.read(reinterpret_cast(&acc_carrier_phase_rad[i]), sizeof(double)); - dump_file.read(reinterpret_cast(&carrier_doppler_hz[i]), sizeof(double)); - dump_file.read(reinterpret_cast(&code_freq_chips[i]), sizeof(double)); - dump_file.read(reinterpret_cast(&carr_error_hz[i]), sizeof(double)); - dump_file.read(reinterpret_cast(&carr_error_filt_hz[i]), sizeof(double)); - dump_file.read(reinterpret_cast(&code_error_chips[i]), sizeof(double)); - dump_file.read(reinterpret_cast(&code_error_filt_chips[i]), sizeof(double)); - dump_file.read(reinterpret_cast(&CN0_SNV_dB_Hz[i]), sizeof(double)); - dump_file.read(reinterpret_cast(&carrier_lock_test[i]), sizeof(double)); - dump_file.read(reinterpret_cast(&aux1[i]), sizeof(double)); + dump_file.read(reinterpret_cast(&acc_carrier_phase_rad[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&carrier_doppler_hz[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&code_freq_chips[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&carr_error_hz[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&carr_error_filt_hz[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&code_error_chips[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&code_error_filt_chips[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&CN0_SNV_dB_Hz[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&carrier_lock_test[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&aux1[i]), sizeof(float)); dump_file.read(reinterpret_cast(&aux2[i]), sizeof(double)); dump_file.read(reinterpret_cast(&PRN[i]), sizeof(uint32_t)); + dump_file.read(reinterpret_cast(&TOW[i]), sizeof(uint64_t)); + dump_file.read(reinterpret_cast(&WN[i]), sizeof(uint32_t)); } } dump_file.close(); @@ -496,18 +506,20 @@ int32_t Glonass_Ca_Dll_Pll_C_Aid_Tracking_cc::save_matfile() const write_matlab_var<2, float>("Prompt_I", Prompt_I.data(), matfp, dims); write_matlab_var<2, float>("Prompt_Q", Prompt_Q.data(), matfp, dims); write_matlab_var<2, uint64_t>("PRN_start_sample_count", PRN_start_sample_count.data(), matfp, dims); - write_matlab_var<2, double>("acc_carrier_phase_rad", acc_carrier_phase_rad.data(), matfp, dims); - write_matlab_var<2, double>("carrier_doppler_hz", carrier_doppler_hz.data(), matfp, dims); - write_matlab_var<2, double>("code_freq_chips", code_freq_chips.data(), matfp, dims); - write_matlab_var<2, double>("carr_error_hz", carr_error_hz.data(), matfp, dims); - write_matlab_var<2, double>("carr_error_filt_hz", carr_error_filt_hz.data(), matfp, dims); - write_matlab_var<2, double>("code_error_chips", code_error_chips.data(), matfp, dims); - write_matlab_var<2, double>("code_error_filt_chips", code_error_filt_chips.data(), matfp, dims); - write_matlab_var<2, double>("CN0_SNV_dB_Hz", CN0_SNV_dB_Hz.data(), matfp, dims); - write_matlab_var<2, double>("carrier_lock_test", carrier_lock_test.data(), matfp, dims); - write_matlab_var<2, double>("aux1", aux1.data(), matfp, dims); + write_matlab_var<2, float>("acc_carrier_phase_rad", acc_carrier_phase_rad.data(), matfp, dims); + write_matlab_var<2, float>("carrier_doppler_hz", carrier_doppler_hz.data(), matfp, dims); + write_matlab_var<2, float>("code_freq_chips", code_freq_chips.data(), matfp, dims); + write_matlab_var<2, float>("carr_error_hz", carr_error_hz.data(), matfp, dims); + write_matlab_var<2, float>("carr_error_filt_hz", carr_error_filt_hz.data(), matfp, dims); + write_matlab_var<2, float>("code_error_chips", code_error_chips.data(), matfp, dims); + write_matlab_var<2, float>("code_error_filt_chips", code_error_filt_chips.data(), matfp, dims); + write_matlab_var<2, float>("CN0_SNV_dB_Hz", CN0_SNV_dB_Hz.data(), matfp, dims); + write_matlab_var<2, float>("carrier_lock_test", carrier_lock_test.data(), matfp, dims); + write_matlab_var<2, float>("aux1", aux1.data(), matfp, dims); write_matlab_var<2, double>("aux2", aux2.data(), matfp, dims); write_matlab_var<2, uint32_t>("PRN", PRN.data(), matfp, dims); + write_matlab_var<2, uint64_t>("TOW", TOW.data(), matfp, dims); + write_matlab_var<2, uint32_t>("WN", WN.data(), matfp, dims); } Mat_Close(matfp); return 0; @@ -911,6 +923,12 @@ int Glonass_Ca_Dll_Pll_C_Aid_Tracking_cc::general_work(int noutput_items __attri // PRN uint32_t prn_ = d_acquisition_gnss_synchro->PRN; d_dump_file.write(reinterpret_cast(&prn_), sizeof(uint32_t)); + // TOW + uint64_t tow_ = 0; + d_dump_file.write(reinterpret_cast(&tow_), sizeof(uint64_t)); + // Week Number + uint32_t wn_ = 0; + d_dump_file.write(reinterpret_cast(&wn_), sizeof(uint32_t)); } catch (const std::ofstream::failure &e) { diff --git a/src/algorithms/tracking/gnuradio_blocks/glonass_ca_dll_pll_c_aid_tracking_sc.cc b/src/algorithms/tracking/gnuradio_blocks/glonass_ca_dll_pll_c_aid_tracking_sc.cc index a60d69857..f426dbca6 100644 --- a/src/algorithms/tracking/gnuradio_blocks/glonass_ca_dll_pll_c_aid_tracking_sc.cc +++ b/src/algorithms/tracking/gnuradio_blocks/glonass_ca_dll_pll_c_aid_tracking_sc.cc @@ -323,10 +323,10 @@ int32_t Glonass_Ca_Dll_Pll_C_Aid_Tracking_sc::save_matfile() const { // READ DUMP FILE std::ifstream::pos_type size; - const int32_t number_of_double_vars = 11; - const int32_t number_of_float_vars = 5; - const int32_t epoch_size_bytes = sizeof(uint64_t) + sizeof(double) * number_of_double_vars + - sizeof(float) * number_of_float_vars + sizeof(uint32_t); + const int32_t number_of_double_vars = 1; + const int32_t number_of_float_vars = 19; + const int32_t epoch_size_bytes = 2 * sizeof(uint64_t) + sizeof(double) * number_of_double_vars + + sizeof(float) * number_of_float_vars + 2 * sizeof(uint32_t); std::ifstream dump_file; dump_file.exceptions(std::ifstream::failbit | std::ifstream::badbit); try @@ -350,24 +350,28 @@ int32_t Glonass_Ca_Dll_Pll_C_Aid_Tracking_sc::save_matfile() const { return 1; } + auto abs_VE = std::vector(num_epoch); auto abs_E = std::vector(num_epoch); auto abs_P = std::vector(num_epoch); auto abs_L = std::vector(num_epoch); + auto abs_VL = std::vector(num_epoch); auto Prompt_I = std::vector(num_epoch); auto Prompt_Q = std::vector(num_epoch); auto PRN_start_sample_count = std::vector(num_epoch); - auto acc_carrier_phase_rad = std::vector(num_epoch); - auto carrier_doppler_hz = std::vector(num_epoch); - auto code_freq_chips = std::vector(num_epoch); - auto carr_error_hz = std::vector(num_epoch); - auto carr_error_filt_hz = std::vector(num_epoch); - auto code_error_chips = std::vector(num_epoch); - auto code_error_filt_chips = std::vector(num_epoch); - auto CN0_SNV_dB_Hz = std::vector(num_epoch); - auto carrier_lock_test = std::vector(num_epoch); - auto aux1 = std::vector(num_epoch); + auto acc_carrier_phase_rad = std::vector(num_epoch); + auto carrier_doppler_hz = std::vector(num_epoch); + auto code_freq_chips = std::vector(num_epoch); + auto carr_error_hz = std::vector(num_epoch); + auto carr_error_filt_hz = std::vector(num_epoch); + auto code_error_chips = std::vector(num_epoch); + auto code_error_filt_chips = std::vector(num_epoch); + auto CN0_SNV_dB_Hz = std::vector(num_epoch); + auto carrier_lock_test = std::vector(num_epoch); + auto aux1 = std::vector(num_epoch); auto aux2 = std::vector(num_epoch); auto PRN = std::vector(num_epoch); + auto TOW = std::vector(num_epoch); + auto WN = std::vector(num_epoch); try { @@ -375,24 +379,28 @@ int32_t Glonass_Ca_Dll_Pll_C_Aid_Tracking_sc::save_matfile() const { for (int64_t i = 0; i < num_epoch; i++) { + dump_file.read(reinterpret_cast(&abs_VE[i]), sizeof(float)); dump_file.read(reinterpret_cast(&abs_E[i]), sizeof(float)); dump_file.read(reinterpret_cast(&abs_P[i]), sizeof(float)); dump_file.read(reinterpret_cast(&abs_L[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&abs_VL[i]), sizeof(float)); dump_file.read(reinterpret_cast(&Prompt_I[i]), sizeof(float)); dump_file.read(reinterpret_cast(&Prompt_Q[i]), sizeof(float)); dump_file.read(reinterpret_cast(&PRN_start_sample_count[i]), sizeof(uint64_t)); - dump_file.read(reinterpret_cast(&acc_carrier_phase_rad[i]), sizeof(double)); - dump_file.read(reinterpret_cast(&carrier_doppler_hz[i]), sizeof(double)); - dump_file.read(reinterpret_cast(&code_freq_chips[i]), sizeof(double)); - dump_file.read(reinterpret_cast(&carr_error_hz[i]), sizeof(double)); - dump_file.read(reinterpret_cast(&carr_error_filt_hz[i]), sizeof(double)); - dump_file.read(reinterpret_cast(&code_error_chips[i]), sizeof(double)); - dump_file.read(reinterpret_cast(&code_error_filt_chips[i]), sizeof(double)); - dump_file.read(reinterpret_cast(&CN0_SNV_dB_Hz[i]), sizeof(double)); - dump_file.read(reinterpret_cast(&carrier_lock_test[i]), sizeof(double)); - dump_file.read(reinterpret_cast(&aux1[i]), sizeof(double)); + dump_file.read(reinterpret_cast(&acc_carrier_phase_rad[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&carrier_doppler_hz[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&code_freq_chips[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&carr_error_hz[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&carr_error_filt_hz[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&code_error_chips[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&code_error_filt_chips[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&CN0_SNV_dB_Hz[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&carrier_lock_test[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&aux1[i]), sizeof(float)); dump_file.read(reinterpret_cast(&aux2[i]), sizeof(double)); dump_file.read(reinterpret_cast(&PRN[i]), sizeof(uint32_t)); + dump_file.read(reinterpret_cast(&TOW[i]), sizeof(uint64_t)); + dump_file.read(reinterpret_cast(&WN[i]), sizeof(uint32_t)); } } dump_file.close(); @@ -418,18 +426,20 @@ int32_t Glonass_Ca_Dll_Pll_C_Aid_Tracking_sc::save_matfile() const write_matlab_var<2, float>("Prompt_I", Prompt_I.data(), matfp, dims); write_matlab_var<2, float>("Prompt_Q", Prompt_Q.data(), matfp, dims); write_matlab_var<2, uint64_t>("PRN_start_sample_count", PRN_start_sample_count.data(), matfp, dims); - write_matlab_var<2, double>("acc_carrier_phase_rad", acc_carrier_phase_rad.data(), matfp, dims); - write_matlab_var<2, double>("carrier_doppler_hz", carrier_doppler_hz.data(), matfp, dims); - write_matlab_var<2, double>("code_freq_chips", code_freq_chips.data(), matfp, dims); - write_matlab_var<2, double>("carr_error_hz", carr_error_hz.data(), matfp, dims); - write_matlab_var<2, double>("carr_error_filt_hz", carr_error_filt_hz.data(), matfp, dims); - write_matlab_var<2, double>("code_error_chips", code_error_chips.data(), matfp, dims); - write_matlab_var<2, double>("code_error_filt_chips", code_error_filt_chips.data(), matfp, dims); - write_matlab_var<2, double>("CN0_SNV_dB_Hz", CN0_SNV_dB_Hz.data(), matfp, dims); - write_matlab_var<2, double>("carrier_lock_test", carrier_lock_test.data(), matfp, dims); - write_matlab_var<2, double>("aux1", aux1.data(), matfp, dims); + write_matlab_var<2, float>("acc_carrier_phase_rad", acc_carrier_phase_rad.data(), matfp, dims); + write_matlab_var<2, float>("carrier_doppler_hz", carrier_doppler_hz.data(), matfp, dims); + write_matlab_var<2, float>("code_freq_chips", code_freq_chips.data(), matfp, dims); + write_matlab_var<2, float>("carr_error_hz", carr_error_hz.data(), matfp, dims); + write_matlab_var<2, float>("carr_error_filt_hz", carr_error_filt_hz.data(), matfp, dims); + write_matlab_var<2, float>("code_error_chips", code_error_chips.data(), matfp, dims); + write_matlab_var<2, float>("code_error_filt_chips", code_error_filt_chips.data(), matfp, dims); + write_matlab_var<2, float>("CN0_SNV_dB_Hz", CN0_SNV_dB_Hz.data(), matfp, dims); + write_matlab_var<2, float>("carrier_lock_test", carrier_lock_test.data(), matfp, dims); + write_matlab_var<2, float>("aux1", aux1.data(), matfp, dims); write_matlab_var<2, double>("aux2", aux2.data(), matfp, dims); write_matlab_var<2, uint32_t>("PRN", PRN.data(), matfp, dims); + write_matlab_var<2, uint64_t>("TOW", TOW.data(), matfp, dims); + write_matlab_var<2, uint32_t>("WN", WN.data(), matfp, dims); } Mat_Close(matfp); return 0; @@ -879,6 +889,12 @@ int Glonass_Ca_Dll_Pll_C_Aid_Tracking_sc::general_work(int noutput_items __attri // PRN uint32_t prn_ = d_acquisition_gnss_synchro->PRN; d_dump_file.write(reinterpret_cast(&prn_), sizeof(uint32_t)); + // TOW + uint64_t tow_ = 0; + d_dump_file.write(reinterpret_cast(&tow_), sizeof(uint64_t)); + // Week Number + uint32_t wn_ = 0; + d_dump_file.write(reinterpret_cast(&wn_), sizeof(uint32_t)); } catch (const std::ofstream::failure &e) { diff --git a/src/algorithms/tracking/gnuradio_blocks/glonass_ca_dll_pll_tracking_cc.cc b/src/algorithms/tracking/gnuradio_blocks/glonass_ca_dll_pll_tracking_cc.cc index effff8f64..a7dc59557 100644 --- a/src/algorithms/tracking/gnuradio_blocks/glonass_ca_dll_pll_tracking_cc.cc +++ b/src/algorithms/tracking/gnuradio_blocks/glonass_ca_dll_pll_tracking_cc.cc @@ -349,10 +349,10 @@ int32_t Glonass_Ca_Dll_Pll_Tracking_cc::save_matfile() const { // READ DUMP FILE std::ifstream::pos_type size; - const int32_t number_of_double_vars = 11; - const int32_t number_of_float_vars = 5; - const int32_t epoch_size_bytes = sizeof(uint64_t) + sizeof(double) * number_of_double_vars + - sizeof(float) * number_of_float_vars + sizeof(uint32_t); + const int32_t number_of_double_vars = 1; + const int32_t number_of_float_vars = 19; + const int32_t epoch_size_bytes = 2 * sizeof(uint64_t) + sizeof(double) * number_of_double_vars + + sizeof(float) * number_of_float_vars + 2 * sizeof(uint32_t); std::ifstream dump_file; dump_file.exceptions(std::ifstream::failbit | std::ifstream::badbit); try @@ -376,24 +376,28 @@ int32_t Glonass_Ca_Dll_Pll_Tracking_cc::save_matfile() const { return 1; } + auto abs_VE = std::vector(num_epoch); auto abs_E = std::vector(num_epoch); auto abs_P = std::vector(num_epoch); auto abs_L = std::vector(num_epoch); + auto abs_VL = std::vector(num_epoch); auto Prompt_I = std::vector(num_epoch); auto Prompt_Q = std::vector(num_epoch); auto PRN_start_sample_count = std::vector(num_epoch); - auto acc_carrier_phase_rad = std::vector(num_epoch); - auto carrier_doppler_hz = std::vector(num_epoch); - auto code_freq_chips = std::vector(num_epoch); - auto carr_error_hz = std::vector(num_epoch); - auto carr_error_filt_hz = std::vector(num_epoch); - auto code_error_chips = std::vector(num_epoch); - auto code_error_filt_chips = std::vector(num_epoch); - auto CN0_SNV_dB_Hz = std::vector(num_epoch); - auto carrier_lock_test = std::vector(num_epoch); - auto aux1 = std::vector(num_epoch); + auto acc_carrier_phase_rad = std::vector(num_epoch); + auto carrier_doppler_hz = std::vector(num_epoch); + auto code_freq_chips = std::vector(num_epoch); + auto carr_error_hz = std::vector(num_epoch); + auto carr_error_filt_hz = std::vector(num_epoch); + auto code_error_chips = std::vector(num_epoch); + auto code_error_filt_chips = std::vector(num_epoch); + auto CN0_SNV_dB_Hz = std::vector(num_epoch); + auto carrier_lock_test = std::vector(num_epoch); + auto aux1 = std::vector(num_epoch); auto aux2 = std::vector(num_epoch); auto PRN = std::vector(num_epoch); + auto TOW = std::vector(num_epoch); + auto WN = std::vector(num_epoch); try { @@ -401,24 +405,28 @@ int32_t Glonass_Ca_Dll_Pll_Tracking_cc::save_matfile() const { for (int64_t i = 0; i < num_epoch; i++) { + dump_file.read(reinterpret_cast(&abs_VE[i]), sizeof(float)); dump_file.read(reinterpret_cast(&abs_E[i]), sizeof(float)); dump_file.read(reinterpret_cast(&abs_P[i]), sizeof(float)); dump_file.read(reinterpret_cast(&abs_L[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&abs_VL[i]), sizeof(float)); dump_file.read(reinterpret_cast(&Prompt_I[i]), sizeof(float)); dump_file.read(reinterpret_cast(&Prompt_Q[i]), sizeof(float)); dump_file.read(reinterpret_cast(&PRN_start_sample_count[i]), sizeof(uint64_t)); - dump_file.read(reinterpret_cast(&acc_carrier_phase_rad[i]), sizeof(double)); - dump_file.read(reinterpret_cast(&carrier_doppler_hz[i]), sizeof(double)); - dump_file.read(reinterpret_cast(&code_freq_chips[i]), sizeof(double)); - dump_file.read(reinterpret_cast(&carr_error_hz[i]), sizeof(double)); - dump_file.read(reinterpret_cast(&carr_error_filt_hz[i]), sizeof(double)); - dump_file.read(reinterpret_cast(&code_error_chips[i]), sizeof(double)); - dump_file.read(reinterpret_cast(&code_error_filt_chips[i]), sizeof(double)); - dump_file.read(reinterpret_cast(&CN0_SNV_dB_Hz[i]), sizeof(double)); - dump_file.read(reinterpret_cast(&carrier_lock_test[i]), sizeof(double)); - dump_file.read(reinterpret_cast(&aux1[i]), sizeof(double)); + dump_file.read(reinterpret_cast(&acc_carrier_phase_rad[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&carrier_doppler_hz[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&code_freq_chips[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&carr_error_hz[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&carr_error_filt_hz[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&code_error_chips[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&code_error_filt_chips[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&CN0_SNV_dB_Hz[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&carrier_lock_test[i]), sizeof(float)); + dump_file.read(reinterpret_cast(&aux1[i]), sizeof(float)); dump_file.read(reinterpret_cast(&aux2[i]), sizeof(double)); dump_file.read(reinterpret_cast(&PRN[i]), sizeof(uint32_t)); + dump_file.read(reinterpret_cast(&TOW[i]), sizeof(uint64_t)); + dump_file.read(reinterpret_cast(&WN[i]), sizeof(uint32_t)); } } dump_file.close(); @@ -444,18 +452,20 @@ int32_t Glonass_Ca_Dll_Pll_Tracking_cc::save_matfile() const write_matlab_var<2, float>("Prompt_I", Prompt_I.data(), matfp, dims); write_matlab_var<2, float>("Prompt_Q", Prompt_Q.data(), matfp, dims); write_matlab_var<2, uint64_t>("PRN_start_sample_count", PRN_start_sample_count.data(), matfp, dims); - write_matlab_var<2, double>("acc_carrier_phase_rad", acc_carrier_phase_rad.data(), matfp, dims); - write_matlab_var<2, double>("carrier_doppler_hz", carrier_doppler_hz.data(), matfp, dims); - write_matlab_var<2, double>("code_freq_chips", code_freq_chips.data(), matfp, dims); - write_matlab_var<2, double>("carr_error_hz", carr_error_hz.data(), matfp, dims); - write_matlab_var<2, double>("carr_error_filt_hz", carr_error_filt_hz.data(), matfp, dims); - write_matlab_var<2, double>("code_error_chips", code_error_chips.data(), matfp, dims); - write_matlab_var<2, double>("code_error_filt_chips", code_error_filt_chips.data(), matfp, dims); - write_matlab_var<2, double>("CN0_SNV_dB_Hz", CN0_SNV_dB_Hz.data(), matfp, dims); - write_matlab_var<2, double>("carrier_lock_test", carrier_lock_test.data(), matfp, dims); - write_matlab_var<2, double>("aux1", aux1.data(), matfp, dims); + write_matlab_var<2, float>("acc_carrier_phase_rad", acc_carrier_phase_rad.data(), matfp, dims); + write_matlab_var<2, float>("carrier_doppler_hz", carrier_doppler_hz.data(), matfp, dims); + write_matlab_var<2, float>("code_freq_chips", code_freq_chips.data(), matfp, dims); + write_matlab_var<2, float>("carr_error_hz", carr_error_hz.data(), matfp, dims); + write_matlab_var<2, float>("carr_error_filt_hz", carr_error_filt_hz.data(), matfp, dims); + write_matlab_var<2, float>("code_error_chips", code_error_chips.data(), matfp, dims); + write_matlab_var<2, float>("code_error_filt_chips", code_error_filt_chips.data(), matfp, dims); + write_matlab_var<2, float>("CN0_SNV_dB_Hz", CN0_SNV_dB_Hz.data(), matfp, dims); + write_matlab_var<2, float>("carrier_lock_test", carrier_lock_test.data(), matfp, dims); + write_matlab_var<2, float>("aux1", aux1.data(), matfp, dims); write_matlab_var<2, double>("aux2", aux2.data(), matfp, dims); write_matlab_var<2, uint32_t>("PRN", PRN.data(), matfp, dims); + write_matlab_var<2, uint64_t>("TOW", TOW.data(), matfp, dims); + write_matlab_var<2, uint32_t>("WN", WN.data(), matfp, dims); } Mat_Close(matfp); return 0; @@ -729,6 +739,12 @@ int Glonass_Ca_Dll_Pll_Tracking_cc::general_work(int noutput_items __attribute__ // PRN uint32_t prn_ = d_acquisition_gnss_synchro->PRN; d_dump_file.write(reinterpret_cast(&prn_), sizeof(uint32_t)); + // TOW + uint64_t tow_ = 0; + d_dump_file.write(reinterpret_cast(&tow_), sizeof(uint64_t)); + // Week Number + uint32_t wn_ = 0; + d_dump_file.write(reinterpret_cast(&wn_), sizeof(uint32_t)); } catch (const std::ofstream::failure &e) {