mirror of
				https://github.com/gnss-sdr/gnss-sdr
				synced 2025-10-31 07:13:03 +00:00 
			
		
		
		
	Give to global parameters more meaningful name
This commit is contained in:
		| @@ -103,12 +103,12 @@ BeidouB1iPcpsAcquisition::BeidouB1iPcpsAcquisition( | |||||||
|  |  | ||||||
|     acq_parameters_.resampled_fs = fs_in_; |     acq_parameters_.resampled_fs = fs_in_; | ||||||
|     // --- Find number of samples per spreading code ------------------------- |     // --- Find number of samples per spreading code ------------------------- | ||||||
|     code_length_ = static_cast<unsigned int>(std::floor(static_cast<double>(fs_in_) / (BEIDOU_B1I_CODE_RATE_HZ / BEIDOU_B1I_CODE_LENGTH_CHIPS))); |     code_length_ = static_cast<unsigned int>(std::floor(static_cast<double>(fs_in_) / (BEIDOU_B1I_CODE_RATE_CPS / BEIDOU_B1I_CODE_LENGTH_CHIPS))); | ||||||
|     acq_parameters_.samples_per_ms = static_cast<float>(fs_in_) * 0.001; |     acq_parameters_.samples_per_ms = static_cast<float>(fs_in_) * 0.001; | ||||||
|     acq_parameters_.samples_per_chip = static_cast<unsigned int>(ceil((1.0 / BEIDOU_B1I_CODE_RATE_HZ) * static_cast<float>(acq_parameters_.fs_in))); |     acq_parameters_.samples_per_chip = static_cast<unsigned int>(ceil((1.0 / BEIDOU_B1I_CODE_RATE_CPS) * static_cast<float>(acq_parameters_.fs_in))); | ||||||
|  |  | ||||||
|  |  | ||||||
|     acq_parameters_.samples_per_code = acq_parameters_.samples_per_ms * static_cast<float>(BEIDOU_B1I_CODE_PERIOD * 1000.0); |     acq_parameters_.samples_per_code = acq_parameters_.samples_per_ms * static_cast<float>(BEIDOU_B1I_CODE_PERIOD_S * 1000.0); | ||||||
|     vector_length_ = std::floor(acq_parameters_.sampled_ms * acq_parameters_.samples_per_ms) * (acq_parameters_.bit_transition_flag ? 2 : 1); |     vector_length_ = std::floor(acq_parameters_.sampled_ms * acq_parameters_.samples_per_ms) * (acq_parameters_.bit_transition_flag ? 2 : 1); | ||||||
|     code_ = std::vector<std::complex<float>>(vector_length_); |     code_ = std::vector<std::complex<float>>(vector_length_); | ||||||
|     acquisition_ = pcps_make_acquisition(acq_parameters_); |     acquisition_ = pcps_make_acquisition(acq_parameters_); | ||||||
|   | |||||||
| @@ -101,12 +101,12 @@ BeidouB3iPcpsAcquisition::BeidouB3iPcpsAcquisition( | |||||||
|  |  | ||||||
|     acq_parameters_.resampled_fs = fs_in_; |     acq_parameters_.resampled_fs = fs_in_; | ||||||
|     // --- Find number of samples per spreading code ------------------------- |     // --- Find number of samples per spreading code ------------------------- | ||||||
|     code_length_ = static_cast<unsigned int>(std::floor(static_cast<double>(fs_in_) / (BEIDOU_B3I_CODE_RATE_HZ / BEIDOU_B3I_CODE_LENGTH_CHIPS))); |     code_length_ = static_cast<unsigned int>(std::floor(static_cast<double>(fs_in_) / (BEIDOU_B3I_CODE_RATE_CPS / BEIDOU_B3I_CODE_LENGTH_CHIPS))); | ||||||
|     acq_parameters_.samples_per_ms = static_cast<float>(fs_in_) * 0.001; |     acq_parameters_.samples_per_ms = static_cast<float>(fs_in_) * 0.001; | ||||||
|     acq_parameters_.samples_per_chip = static_cast<unsigned int>(ceil((1.0 / BEIDOU_B3I_CODE_RATE_HZ) * static_cast<float>(acq_parameters_.fs_in))); |     acq_parameters_.samples_per_chip = static_cast<unsigned int>(ceil((1.0 / BEIDOU_B3I_CODE_RATE_CPS) * static_cast<float>(acq_parameters_.fs_in))); | ||||||
|  |  | ||||||
|  |  | ||||||
|     acq_parameters_.samples_per_code = acq_parameters_.samples_per_ms * static_cast<float>(BEIDOU_B3I_CODE_PERIOD * 1000.0); |     acq_parameters_.samples_per_code = acq_parameters_.samples_per_ms * static_cast<float>(BEIDOU_B3I_CODE_PERIOD_S * 1000.0); | ||||||
|     vector_length_ = std::floor(acq_parameters_.sampled_ms * acq_parameters_.samples_per_ms) * (acq_parameters_.bit_transition_flag ? 2 : 1); |     vector_length_ = std::floor(acq_parameters_.sampled_ms * acq_parameters_.samples_per_ms) * (acq_parameters_.bit_transition_flag ? 2 : 1); | ||||||
|     code_ = std::vector<std::complex<float>>(vector_length_); |     code_ = std::vector<std::complex<float>>(vector_length_); | ||||||
|     acquisition_ = pcps_make_acquisition(acq_parameters_); |     acquisition_ = pcps_make_acquisition(acq_parameters_); | ||||||
|   | |||||||
| @@ -81,7 +81,7 @@ GalileoE1Pcps8msAmbiguousAcquisition::GalileoE1Pcps8msAmbiguousAcquisition( | |||||||
|  |  | ||||||
|     //--- Find number of samples per spreading code (4 ms)  ----------------- |     //--- Find number of samples per spreading code (4 ms)  ----------------- | ||||||
|     code_length_ = round( |     code_length_ = round( | ||||||
|         fs_in_ / (GALILEO_E1_CODE_CHIP_RATE_HZ / GALILEO_E1_B_CODE_LENGTH_CHIPS)); |         fs_in_ / (GALILEO_E1_CODE_CHIP_RATE_CPS / GALILEO_E1_B_CODE_LENGTH_CHIPS)); | ||||||
|  |  | ||||||
|     vector_length_ = code_length_ * static_cast<int>(sampled_ms_ / 4); |     vector_length_ = code_length_ * static_cast<int>(sampled_ms_ / 4); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -96,10 +96,10 @@ GalileoE1PcpsAmbiguousAcquisition::GalileoE1PcpsAmbiguousAcquisition( | |||||||
|         } |         } | ||||||
|     if (acq_parameters_.use_automatic_resampler) |     if (acq_parameters_.use_automatic_resampler) | ||||||
|         { |         { | ||||||
|             if (acq_parameters_.fs_in > GALILEO_E1_OPT_ACQ_FS_HZ) |             if (acq_parameters_.fs_in > GALILEO_E1_OPT_ACQ_FS_SPS) | ||||||
|                 { |                 { | ||||||
|                     acq_parameters_.resampler_ratio = floor(static_cast<float>(acq_parameters_.fs_in) / GALILEO_E1_OPT_ACQ_FS_HZ); |                     acq_parameters_.resampler_ratio = floor(static_cast<float>(acq_parameters_.fs_in) / GALILEO_E1_OPT_ACQ_FS_SPS); | ||||||
|                     uint32_t decimation = acq_parameters_.fs_in / GALILEO_E1_OPT_ACQ_FS_HZ; |                     uint32_t decimation = acq_parameters_.fs_in / GALILEO_E1_OPT_ACQ_FS_SPS; | ||||||
|                     while (acq_parameters_.fs_in % decimation > 0) |                     while (acq_parameters_.fs_in % decimation > 0) | ||||||
|                         { |                         { | ||||||
|                             decimation--; |                             decimation--; | ||||||
| @@ -108,16 +108,16 @@ GalileoE1PcpsAmbiguousAcquisition::GalileoE1PcpsAmbiguousAcquisition( | |||||||
|                     acq_parameters_.resampled_fs = acq_parameters_.fs_in / static_cast<int>(acq_parameters_.resampler_ratio); |                     acq_parameters_.resampled_fs = acq_parameters_.fs_in / static_cast<int>(acq_parameters_.resampler_ratio); | ||||||
|                 } |                 } | ||||||
|             //--- Find number of samples per spreading code (4 ms)  ----------------- |             //--- Find number of samples per spreading code (4 ms)  ----------------- | ||||||
|             code_length_ = static_cast<unsigned int>(std::floor(static_cast<double>(acq_parameters_.resampled_fs) / (GALILEO_E1_CODE_CHIP_RATE_HZ / GALILEO_E1_B_CODE_LENGTH_CHIPS))); |             code_length_ = static_cast<unsigned int>(std::floor(static_cast<double>(acq_parameters_.resampled_fs) / (GALILEO_E1_CODE_CHIP_RATE_CPS / GALILEO_E1_B_CODE_LENGTH_CHIPS))); | ||||||
|             acq_parameters_.samples_per_ms = static_cast<float>(acq_parameters_.resampled_fs) * 0.001; |             acq_parameters_.samples_per_ms = static_cast<float>(acq_parameters_.resampled_fs) * 0.001; | ||||||
|             acq_parameters_.samples_per_chip = static_cast<unsigned int>(ceil((1.0 / GALILEO_E1_CODE_CHIP_RATE_HZ) * static_cast<float>(acq_parameters_.resampled_fs))); |             acq_parameters_.samples_per_chip = static_cast<unsigned int>(ceil((1.0 / GALILEO_E1_CODE_CHIP_RATE_CPS) * static_cast<float>(acq_parameters_.resampled_fs))); | ||||||
|         } |         } | ||||||
|     else |     else | ||||||
|         { |         { | ||||||
|             //--- Find number of samples per spreading code (4 ms)  ----------------- |             //--- Find number of samples per spreading code (4 ms)  ----------------- | ||||||
|             code_length_ = static_cast<unsigned int>(std::floor(static_cast<double>(fs_in_) / (GALILEO_E1_CODE_CHIP_RATE_HZ / GALILEO_E1_B_CODE_LENGTH_CHIPS))); |             code_length_ = static_cast<unsigned int>(std::floor(static_cast<double>(fs_in_) / (GALILEO_E1_CODE_CHIP_RATE_CPS / GALILEO_E1_B_CODE_LENGTH_CHIPS))); | ||||||
|             acq_parameters_.samples_per_ms = static_cast<float>(fs_in_) * 0.001; |             acq_parameters_.samples_per_ms = static_cast<float>(fs_in_) * 0.001; | ||||||
|             acq_parameters_.samples_per_chip = static_cast<unsigned int>(ceil((1.0 / GALILEO_E1_CODE_CHIP_RATE_HZ) * static_cast<float>(acq_parameters_.fs_in))); |             acq_parameters_.samples_per_chip = static_cast<unsigned int>(ceil((1.0 / GALILEO_E1_CODE_CHIP_RATE_CPS) * static_cast<float>(acq_parameters_.fs_in))); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|     acq_parameters_.samples_per_code = acq_parameters_.samples_per_ms * static_cast<float>(GALILEO_E1_CODE_PERIOD_MS); |     acq_parameters_.samples_per_code = acq_parameters_.samples_per_ms * static_cast<float>(GALILEO_E1_CODE_PERIOD_MS); | ||||||
|   | |||||||
| @@ -81,7 +81,7 @@ GalileoE1PcpsAmbiguousAcquisitionFpga::GalileoE1PcpsAmbiguousAcquisitionFpga( | |||||||
|     acquire_pilot_ = configuration_->property(role + ".acquire_pilot", false);  // could be true in future versions |     acquire_pilot_ = configuration_->property(role + ".acquire_pilot", false);  // could be true in future versions | ||||||
|  |  | ||||||
|     // Find number of samples per spreading code (4 ms) |     // Find number of samples per spreading code (4 ms) | ||||||
|     auto code_length = static_cast<uint32_t>(std::round(static_cast<double>(fs_in) / (GALILEO_E1_CODE_CHIP_RATE_HZ / GALILEO_E1_B_CODE_LENGTH_CHIPS))); |     auto code_length = static_cast<uint32_t>(std::round(static_cast<double>(fs_in) / (GALILEO_E1_CODE_CHIP_RATE_CPS / GALILEO_E1_B_CODE_LENGTH_CHIPS))); | ||||||
|     acq_parameters.code_length = code_length; |     acq_parameters.code_length = code_length; | ||||||
|  |  | ||||||
|     // The FPGA can only use FFT lengths that are a power of two. |     // The FPGA can only use FFT lengths that are a power of two. | ||||||
| @@ -95,7 +95,7 @@ GalileoE1PcpsAmbiguousAcquisitionFpga::GalileoE1PcpsAmbiguousAcquisitionFpga( | |||||||
|     acq_parameters.device_name = device_name; |     acq_parameters.device_name = device_name; | ||||||
|     acq_parameters.samples_per_ms = nsamples_total / sampled_ms; |     acq_parameters.samples_per_ms = nsamples_total / sampled_ms; | ||||||
|     acq_parameters.samples_per_code = nsamples_total; |     acq_parameters.samples_per_code = nsamples_total; | ||||||
|     acq_parameters.excludelimit = static_cast<unsigned int>(1 + ceil((1.0 / GALILEO_E1_CODE_CHIP_RATE_HZ) * static_cast<float>(fs_in))); |     acq_parameters.excludelimit = static_cast<unsigned int>(1 + ceil((1.0 / GALILEO_E1_CODE_CHIP_RATE_CPS) * static_cast<float>(fs_in))); | ||||||
|  |  | ||||||
|     // compute all the GALILEO E1 PRN Codes (this is done only once in the class constructor in order to avoid re-computing the PRN codes every time |     // compute all the GALILEO E1 PRN Codes (this is done only once in the class constructor in order to avoid re-computing the PRN codes every time | ||||||
|     // a channel is assigned) |     // a channel is assigned) | ||||||
|   | |||||||
| @@ -80,7 +80,7 @@ GalileoE1PcpsCccwsrAmbiguousAcquisition::GalileoE1PcpsCccwsrAmbiguousAcquisition | |||||||
|     //--- Find number of samples per spreading code (4 ms)  ----------------- |     //--- Find number of samples per spreading code (4 ms)  ----------------- | ||||||
|  |  | ||||||
|     code_length_ = round( |     code_length_ = round( | ||||||
|         fs_in_ / (GALILEO_E1_CODE_CHIP_RATE_HZ / GALILEO_E1_B_CODE_LENGTH_CHIPS)); |         fs_in_ / (GALILEO_E1_CODE_CHIP_RATE_CPS / GALILEO_E1_B_CODE_LENGTH_CHIPS)); | ||||||
|  |  | ||||||
|     vector_length_ = code_length_ * static_cast<int>(sampled_ms_ / 4); |     vector_length_ = code_length_ * static_cast<int>(sampled_ms_ / 4); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -68,7 +68,7 @@ GalileoE1PcpsQuickSyncAmbiguousAcquisition::GalileoE1PcpsQuickSyncAmbiguousAcqui | |||||||
|  |  | ||||||
|     /* --- Find number of samples per spreading code (4 ms)  -----------------*/ |     /* --- Find number of samples per spreading code (4 ms)  -----------------*/ | ||||||
|     code_length_ = round( |     code_length_ = round( | ||||||
|         fs_in_ / (GALILEO_E1_CODE_CHIP_RATE_HZ / GALILEO_E1_B_CODE_LENGTH_CHIPS)); |         fs_in_ / (GALILEO_E1_CODE_CHIP_RATE_CPS / GALILEO_E1_B_CODE_LENGTH_CHIPS)); | ||||||
|  |  | ||||||
|     int samples_per_ms = round(code_length_ / 4.0); |     int samples_per_ms = round(code_length_ / 4.0); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -84,7 +84,7 @@ GalileoE1PcpsTongAmbiguousAcquisition::GalileoE1PcpsTongAmbiguousAcquisition( | |||||||
|     //--- Find number of samples per spreading code (4 ms)  ----------------- |     //--- Find number of samples per spreading code (4 ms)  ----------------- | ||||||
|  |  | ||||||
|     code_length_ = round( |     code_length_ = round( | ||||||
|         fs_in_ / (GALILEO_E1_CODE_CHIP_RATE_HZ / GALILEO_E1_B_CODE_LENGTH_CHIPS)); |         fs_in_ / (GALILEO_E1_CODE_CHIP_RATE_CPS / GALILEO_E1_B_CODE_LENGTH_CHIPS)); | ||||||
|  |  | ||||||
|     vector_length_ = code_length_ * static_cast<int>(sampled_ms_ / 4); |     vector_length_ = code_length_ * static_cast<int>(sampled_ms_ / 4); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -90,7 +90,7 @@ GalileoE5aNoncoherentIQAcquisitionCaf::GalileoE5aNoncoherentIQAcquisitionCaf( | |||||||
|     bit_transition_flag_ = configuration_->property(role + ".bit_transition_flag", false); |     bit_transition_flag_ = configuration_->property(role + ".bit_transition_flag", false); | ||||||
|  |  | ||||||
|     //--- Find number of samples per spreading code (1ms)------------------------- |     //--- Find number of samples per spreading code (1ms)------------------------- | ||||||
|     code_length_ = round(static_cast<double>(fs_in_) / GALILEO_E5A_CODE_CHIP_RATE_HZ * static_cast<double>(GALILEO_E5A_CODE_LENGTH_CHIPS)); |     code_length_ = round(static_cast<double>(fs_in_) / GALILEO_E5A_CODE_CHIP_RATE_CPS * static_cast<double>(GALILEO_E5A_CODE_LENGTH_CHIPS)); | ||||||
|  |  | ||||||
|     vector_length_ = code_length_ * sampled_ms_; |     vector_length_ = code_length_ * sampled_ms_; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -93,10 +93,10 @@ GalileoE5aPcpsAcquisition::GalileoE5aPcpsAcquisition(ConfigurationInterface* con | |||||||
|         } |         } | ||||||
|     if (acq_parameters_.use_automatic_resampler) |     if (acq_parameters_.use_automatic_resampler) | ||||||
|         { |         { | ||||||
|             if (acq_parameters_.fs_in > GALILEO_E5A_OPT_ACQ_FS_HZ) |             if (acq_parameters_.fs_in > GALILEO_E5A_OPT_ACQ_FS_SPS) | ||||||
|                 { |                 { | ||||||
|                     acq_parameters_.resampler_ratio = floor(static_cast<float>(acq_parameters_.fs_in) / GALILEO_E5A_OPT_ACQ_FS_HZ); |                     acq_parameters_.resampler_ratio = floor(static_cast<float>(acq_parameters_.fs_in) / GALILEO_E5A_OPT_ACQ_FS_SPS); | ||||||
|                     uint32_t decimation = acq_parameters_.fs_in / GALILEO_E5A_OPT_ACQ_FS_HZ; |                     uint32_t decimation = acq_parameters_.fs_in / GALILEO_E5A_OPT_ACQ_FS_SPS; | ||||||
|                     while (acq_parameters_.fs_in % decimation > 0) |                     while (acq_parameters_.fs_in % decimation > 0) | ||||||
|                         { |                         { | ||||||
|                             decimation--; |                             decimation--; | ||||||
| @@ -106,21 +106,21 @@ GalileoE5aPcpsAcquisition::GalileoE5aPcpsAcquisition(ConfigurationInterface* con | |||||||
|                 } |                 } | ||||||
|  |  | ||||||
|             //--- Find number of samples per spreading code ------------------------- |             //--- Find number of samples per spreading code ------------------------- | ||||||
|             code_length_ = static_cast<unsigned int>(std::floor(static_cast<double>(acq_parameters_.resampled_fs) / (GALILEO_E5A_CODE_CHIP_RATE_HZ / GALILEO_E5A_CODE_LENGTH_CHIPS))); |             code_length_ = static_cast<unsigned int>(std::floor(static_cast<double>(acq_parameters_.resampled_fs) / (GALILEO_E5A_CODE_CHIP_RATE_CPS / GALILEO_E5A_CODE_LENGTH_CHIPS))); | ||||||
|             acq_parameters_.samples_per_ms = static_cast<float>(acq_parameters_.resampled_fs) * 0.001; |             acq_parameters_.samples_per_ms = static_cast<float>(acq_parameters_.resampled_fs) * 0.001; | ||||||
|             acq_parameters_.samples_per_chip = static_cast<unsigned int>(ceil((1.0 / GALILEO_E5A_CODE_CHIP_RATE_HZ) * static_cast<float>(acq_parameters_.resampled_fs))); |             acq_parameters_.samples_per_chip = static_cast<unsigned int>(ceil((1.0 / GALILEO_E5A_CODE_CHIP_RATE_CPS) * static_cast<float>(acq_parameters_.resampled_fs))); | ||||||
|         } |         } | ||||||
|     else |     else | ||||||
|         { |         { | ||||||
|             acq_parameters_.resampled_fs = fs_in_; |             acq_parameters_.resampled_fs = fs_in_; | ||||||
|             //--- Find number of samples per spreading code ------------------------- |             //--- Find number of samples per spreading code ------------------------- | ||||||
|             code_length_ = static_cast<unsigned int>(std::floor(static_cast<double>(fs_in_) / (GALILEO_E5A_CODE_CHIP_RATE_HZ / GALILEO_E5A_CODE_LENGTH_CHIPS))); |             code_length_ = static_cast<unsigned int>(std::floor(static_cast<double>(fs_in_) / (GALILEO_E5A_CODE_CHIP_RATE_CPS / GALILEO_E5A_CODE_LENGTH_CHIPS))); | ||||||
|             acq_parameters_.samples_per_ms = static_cast<float>(fs_in_) * 0.001; |             acq_parameters_.samples_per_ms = static_cast<float>(fs_in_) * 0.001; | ||||||
|             acq_parameters_.samples_per_chip = static_cast<unsigned int>(ceil((1.0 / GALILEO_E5A_CODE_CHIP_RATE_HZ) * static_cast<float>(acq_parameters_.fs_in))); |             acq_parameters_.samples_per_chip = static_cast<unsigned int>(ceil((1.0 / GALILEO_E5A_CODE_CHIP_RATE_CPS) * static_cast<float>(acq_parameters_.fs_in))); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|     //--- Find number of samples per spreading code (1ms)------------------------- |     //--- Find number of samples per spreading code (1ms)------------------------- | ||||||
|     code_length_ = static_cast<unsigned int>(std::round(static_cast<double>(fs_in_) / GALILEO_E5A_CODE_CHIP_RATE_HZ * static_cast<double>(GALILEO_E5A_CODE_LENGTH_CHIPS))); |     code_length_ = static_cast<unsigned int>(std::round(static_cast<double>(fs_in_) / GALILEO_E5A_CODE_CHIP_RATE_CPS * static_cast<double>(GALILEO_E5A_CODE_LENGTH_CHIPS))); | ||||||
|     vector_length_ = code_length_ * sampled_ms_; |     vector_length_ = code_length_ * sampled_ms_; | ||||||
|  |  | ||||||
|     code_ = std::vector<std::complex<float>>(vector_length_); |     code_ = std::vector<std::complex<float>>(vector_length_); | ||||||
|   | |||||||
| @@ -82,7 +82,7 @@ GalileoE5aPcpsAcquisitionFpga::GalileoE5aPcpsAcquisitionFpga(ConfigurationInterf | |||||||
|             acq_pilot_ = false; |             acq_pilot_ = false; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|     auto code_length = static_cast<uint32_t>(std::round(static_cast<double>(fs_in) / GALILEO_E5A_CODE_CHIP_RATE_HZ * static_cast<double>(GALILEO_E5A_CODE_LENGTH_CHIPS))); |     auto code_length = static_cast<uint32_t>(std::round(static_cast<double>(fs_in) / GALILEO_E5A_CODE_CHIP_RATE_CPS * static_cast<double>(GALILEO_E5A_CODE_LENGTH_CHIPS))); | ||||||
|     acq_parameters.code_length = code_length; |     acq_parameters.code_length = code_length; | ||||||
|  |  | ||||||
|     // The FPGA can only use FFT lengths that are a power of two. |     // The FPGA can only use FFT lengths that are a power of two. | ||||||
| @@ -96,7 +96,7 @@ GalileoE5aPcpsAcquisitionFpga::GalileoE5aPcpsAcquisitionFpga(ConfigurationInterf | |||||||
|     acq_parameters.samples_per_ms = nsamples_total / sampled_ms; |     acq_parameters.samples_per_ms = nsamples_total / sampled_ms; | ||||||
|     acq_parameters.samples_per_code = nsamples_total; |     acq_parameters.samples_per_code = nsamples_total; | ||||||
|  |  | ||||||
|     acq_parameters.excludelimit = static_cast<unsigned int>(1 + ceil((1.0 / GALILEO_E5A_CODE_CHIP_RATE_HZ) * static_cast<float>(fs_in))); |     acq_parameters.excludelimit = static_cast<unsigned int>(1 + ceil((1.0 / GALILEO_E5A_CODE_CHIP_RATE_CPS) * static_cast<float>(fs_in))); | ||||||
|  |  | ||||||
|     // compute all the GALILEO E5 PRN Codes (this is done only once in the class constructor in order to avoid re-computing the PRN codes every time |     // compute all the GALILEO E5 PRN Codes (this is done only once in the class constructor in order to avoid re-computing the PRN codes every time | ||||||
|     // a channel is assigned) |     // a channel is assigned) | ||||||
|   | |||||||
| @@ -62,7 +62,7 @@ GlonassL1CaPcpsAcquisition::GlonassL1CaPcpsAcquisition( | |||||||
|     int64_t fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000); |     int64_t fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000); | ||||||
|     fs_in_ = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); |     fs_in_ = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); | ||||||
|     acq_parameters.fs_in = fs_in_; |     acq_parameters.fs_in = fs_in_; | ||||||
|     acq_parameters.samples_per_chip = static_cast<unsigned int>(ceil(GLONASS_L1_CA_CHIP_PERIOD * static_cast<float>(acq_parameters.fs_in))); |     acq_parameters.samples_per_chip = static_cast<unsigned int>(ceil(GLONASS_L1_CA_CHIP_PERIOD_S * static_cast<float>(acq_parameters.fs_in))); | ||||||
|     dump_ = configuration_->property(role + ".dump", false); |     dump_ = configuration_->property(role + ".dump", false); | ||||||
|     acq_parameters.dump = dump_; |     acq_parameters.dump = dump_; | ||||||
|     acq_parameters.dump_channel = configuration_->property(role + ".dump_channel", 0); |     acq_parameters.dump_channel = configuration_->property(role + ".dump_channel", 0); | ||||||
| @@ -85,7 +85,7 @@ GlonassL1CaPcpsAcquisition::GlonassL1CaPcpsAcquisition( | |||||||
|     dump_filename_ = configuration_->property(role + ".dump_filename", default_dump_filename); |     dump_filename_ = configuration_->property(role + ".dump_filename", default_dump_filename); | ||||||
|     acq_parameters.dump_filename = dump_filename_; |     acq_parameters.dump_filename = dump_filename_; | ||||||
|     // --- Find number of samples per spreading code ------------------------- |     // --- Find number of samples per spreading code ------------------------- | ||||||
|     code_length_ = static_cast<unsigned int>(std::round(static_cast<double>(fs_in_) / (GLONASS_L1_CA_CODE_RATE_HZ / GLONASS_L1_CA_CODE_LENGTH_CHIPS))); |     code_length_ = static_cast<unsigned int>(std::round(static_cast<double>(fs_in_) / (GLONASS_L1_CA_CODE_RATE_CPS / GLONASS_L1_CA_CODE_LENGTH_CHIPS))); | ||||||
|  |  | ||||||
|     vector_length_ = code_length_ * sampled_ms_; |     vector_length_ = code_length_ * sampled_ms_; | ||||||
|  |  | ||||||
| @@ -108,7 +108,7 @@ GlonassL1CaPcpsAcquisition::GlonassL1CaPcpsAcquisition( | |||||||
|     acq_parameters.sampled_ms = sampled_ms_; |     acq_parameters.sampled_ms = sampled_ms_; | ||||||
|     acq_parameters.samples_per_ms = static_cast<float>(fs_in_) * 0.001; |     acq_parameters.samples_per_ms = static_cast<float>(fs_in_) * 0.001; | ||||||
|     acq_parameters.ms_per_code = 1; |     acq_parameters.ms_per_code = 1; | ||||||
|     acq_parameters.samples_per_code = acq_parameters.samples_per_ms * static_cast<float>(GLONASS_L1_CA_CODE_PERIOD * 1000.0); |     acq_parameters.samples_per_code = acq_parameters.samples_per_ms * static_cast<float>(GLONASS_L1_CA_CODE_PERIOD_S * 1000.0); | ||||||
|     acq_parameters.num_doppler_bins_step2 = configuration_->property(role + ".second_nbins", 4); |     acq_parameters.num_doppler_bins_step2 = configuration_->property(role + ".second_nbins", 4); | ||||||
|     acq_parameters.doppler_step2 = configuration_->property(role + ".second_doppler_step", 125.0); |     acq_parameters.doppler_step2 = configuration_->property(role + ".second_doppler_step", 125.0); | ||||||
|     acq_parameters.make_2_steps = configuration_->property(role + ".make_two_steps", false); |     acq_parameters.make_2_steps = configuration_->property(role + ".make_two_steps", false); | ||||||
|   | |||||||
| @@ -61,7 +61,7 @@ GlonassL2CaPcpsAcquisition::GlonassL2CaPcpsAcquisition( | |||||||
|     int64_t fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000); |     int64_t fs_in_deprecated = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000); | ||||||
|     fs_in_ = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); |     fs_in_ = configuration_->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); | ||||||
|     acq_parameters.fs_in = fs_in_; |     acq_parameters.fs_in = fs_in_; | ||||||
|     acq_parameters.samples_per_chip = static_cast<unsigned int>(ceil(GLONASS_L2_CA_CHIP_PERIOD * static_cast<float>(acq_parameters.fs_in))); |     acq_parameters.samples_per_chip = static_cast<unsigned int>(ceil(GLONASS_L2_CA_CHIP_PERIOD_S * static_cast<float>(acq_parameters.fs_in))); | ||||||
|     dump_ = configuration_->property(role + ".dump", false); |     dump_ = configuration_->property(role + ".dump", false); | ||||||
|     acq_parameters.dump = dump_; |     acq_parameters.dump = dump_; | ||||||
|     acq_parameters.dump_channel = configuration_->property(role + ".dump_channel", 0); |     acq_parameters.dump_channel = configuration_->property(role + ".dump_channel", 0); | ||||||
| @@ -84,7 +84,7 @@ GlonassL2CaPcpsAcquisition::GlonassL2CaPcpsAcquisition( | |||||||
|     dump_filename_ = configuration_->property(role + ".dump_filename", default_dump_filename); |     dump_filename_ = configuration_->property(role + ".dump_filename", default_dump_filename); | ||||||
|     acq_parameters.dump_filename = dump_filename_; |     acq_parameters.dump_filename = dump_filename_; | ||||||
|     // --- Find number of samples per spreading code ------------------------- |     // --- Find number of samples per spreading code ------------------------- | ||||||
|     code_length_ = static_cast<unsigned int>(std::round(static_cast<double>(fs_in_) / (GLONASS_L2_CA_CODE_RATE_HZ / GLONASS_L2_CA_CODE_LENGTH_CHIPS))); |     code_length_ = static_cast<unsigned int>(std::round(static_cast<double>(fs_in_) / (GLONASS_L2_CA_CODE_RATE_CPS / GLONASS_L2_CA_CODE_LENGTH_CHIPS))); | ||||||
|  |  | ||||||
|     vector_length_ = code_length_ * sampled_ms_; |     vector_length_ = code_length_ * sampled_ms_; | ||||||
|  |  | ||||||
| @@ -107,7 +107,7 @@ GlonassL2CaPcpsAcquisition::GlonassL2CaPcpsAcquisition( | |||||||
|     acq_parameters.sampled_ms = sampled_ms_; |     acq_parameters.sampled_ms = sampled_ms_; | ||||||
|     acq_parameters.samples_per_ms = static_cast<float>(fs_in_) * 0.001; |     acq_parameters.samples_per_ms = static_cast<float>(fs_in_) * 0.001; | ||||||
|     acq_parameters.ms_per_code = 1; |     acq_parameters.ms_per_code = 1; | ||||||
|     acq_parameters.samples_per_code = acq_parameters.samples_per_ms * static_cast<float>(GLONASS_L2_CA_CODE_PERIOD * 1000.0); |     acq_parameters.samples_per_code = acq_parameters.samples_per_ms * static_cast<float>(GLONASS_L2_CA_CODE_PERIOD_S * 1000.0); | ||||||
|     acq_parameters.num_doppler_bins_step2 = configuration_->property(role + ".second_nbins", 4); |     acq_parameters.num_doppler_bins_step2 = configuration_->property(role + ".second_nbins", 4); | ||||||
|     acq_parameters.doppler_step2 = configuration_->property(role + ".second_doppler_step", 125.0); |     acq_parameters.doppler_step2 = configuration_->property(role + ".second_doppler_step", 125.0); | ||||||
|     acq_parameters.make_2_steps = configuration_->property(role + ".make_two_steps", false); |     acq_parameters.make_2_steps = configuration_->property(role + ".make_two_steps", false); | ||||||
|   | |||||||
| @@ -96,10 +96,10 @@ GpsL1CaPcpsAcquisition::GpsL1CaPcpsAcquisition( | |||||||
|         } |         } | ||||||
|     if (acq_parameters_.use_automatic_resampler) |     if (acq_parameters_.use_automatic_resampler) | ||||||
|         { |         { | ||||||
|             if (acq_parameters_.fs_in > GPS_L1_CA_OPT_ACQ_FS_HZ) |             if (acq_parameters_.fs_in > GPS_L1_CA_OPT_ACQ_FS_SPS) | ||||||
|                 { |                 { | ||||||
|                     acq_parameters_.resampler_ratio = floor(static_cast<float>(acq_parameters_.fs_in) / GPS_L1_CA_OPT_ACQ_FS_HZ); |                     acq_parameters_.resampler_ratio = floor(static_cast<float>(acq_parameters_.fs_in) / GPS_L1_CA_OPT_ACQ_FS_SPS); | ||||||
|                     uint32_t decimation = acq_parameters_.fs_in / GPS_L1_CA_OPT_ACQ_FS_HZ; |                     uint32_t decimation = acq_parameters_.fs_in / GPS_L1_CA_OPT_ACQ_FS_SPS; | ||||||
|                     while (acq_parameters_.fs_in % decimation > 0) |                     while (acq_parameters_.fs_in % decimation > 0) | ||||||
|                         { |                         { | ||||||
|                             decimation--; |                             decimation--; | ||||||
| @@ -108,20 +108,20 @@ GpsL1CaPcpsAcquisition::GpsL1CaPcpsAcquisition( | |||||||
|                     acq_parameters_.resampled_fs = acq_parameters_.fs_in / static_cast<int>(acq_parameters_.resampler_ratio); |                     acq_parameters_.resampled_fs = acq_parameters_.fs_in / static_cast<int>(acq_parameters_.resampler_ratio); | ||||||
|                 } |                 } | ||||||
|             //--- Find number of samples per spreading code ------------------------- |             //--- Find number of samples per spreading code ------------------------- | ||||||
|             code_length_ = static_cast<unsigned int>(std::floor(static_cast<double>(acq_parameters_.resampled_fs) / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS))); |             code_length_ = static_cast<unsigned int>(std::floor(static_cast<double>(acq_parameters_.resampled_fs) / (GPS_L1_CA_CODE_RATE_CPS / GPS_L1_CA_CODE_LENGTH_CHIPS))); | ||||||
|             acq_parameters_.samples_per_ms = static_cast<float>(acq_parameters_.resampled_fs) * 0.001; |             acq_parameters_.samples_per_ms = static_cast<float>(acq_parameters_.resampled_fs) * 0.001; | ||||||
|             acq_parameters_.samples_per_chip = static_cast<unsigned int>(ceil(GPS_L1_CA_CHIP_PERIOD * static_cast<float>(acq_parameters_.resampled_fs))); |             acq_parameters_.samples_per_chip = static_cast<unsigned int>(ceil(GPS_L1_CA_CHIP_PERIOD_S * static_cast<float>(acq_parameters_.resampled_fs))); | ||||||
|         } |         } | ||||||
|     else |     else | ||||||
|         { |         { | ||||||
|             acq_parameters_.resampled_fs = fs_in_; |             acq_parameters_.resampled_fs = fs_in_; | ||||||
|             //--- Find number of samples per spreading code ------------------------- |             //--- Find number of samples per spreading code ------------------------- | ||||||
|             code_length_ = static_cast<unsigned int>(std::floor(static_cast<double>(fs_in_) / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS))); |             code_length_ = static_cast<unsigned int>(std::floor(static_cast<double>(fs_in_) / (GPS_L1_CA_CODE_RATE_CPS / GPS_L1_CA_CODE_LENGTH_CHIPS))); | ||||||
|             acq_parameters_.samples_per_ms = static_cast<float>(fs_in_) * 0.001; |             acq_parameters_.samples_per_ms = static_cast<float>(fs_in_) * 0.001; | ||||||
|             acq_parameters_.samples_per_chip = static_cast<unsigned int>(ceil(GPS_L1_CA_CHIP_PERIOD * static_cast<float>(acq_parameters_.fs_in))); |             acq_parameters_.samples_per_chip = static_cast<unsigned int>(ceil(GPS_L1_CA_CHIP_PERIOD_S * static_cast<float>(acq_parameters_.fs_in))); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|     acq_parameters_.samples_per_code = acq_parameters_.samples_per_ms * static_cast<float>(GPS_L1_CA_CODE_PERIOD * 1000.0); |     acq_parameters_.samples_per_code = acq_parameters_.samples_per_ms * static_cast<float>(GPS_L1_CA_CODE_PERIOD_S * 1000.0); | ||||||
|     vector_length_ = std::floor(acq_parameters_.sampled_ms * acq_parameters_.samples_per_ms) * (acq_parameters_.bit_transition_flag ? 2 : 1); |     vector_length_ = std::floor(acq_parameters_.sampled_ms * acq_parameters_.samples_per_ms) * (acq_parameters_.bit_transition_flag ? 2 : 1); | ||||||
|     code_ = std::vector<std::complex<float>>(vector_length_); |     code_ = std::vector<std::complex<float>>(vector_length_); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -59,7 +59,7 @@ GpsL1CaPcpsAcquisitionFineDoppler::GpsL1CaPcpsAcquisitionFineDoppler( | |||||||
|     int64_t fs_in_deprecated = configuration->property("GNSS-SDR.internal_fs_hz", 2048000); |     int64_t fs_in_deprecated = configuration->property("GNSS-SDR.internal_fs_hz", 2048000); | ||||||
|     fs_in_ = configuration->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); |     fs_in_ = configuration->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); | ||||||
|     acq_parameters.fs_in = fs_in_; |     acq_parameters.fs_in = fs_in_; | ||||||
|     acq_parameters.samples_per_chip = static_cast<unsigned int>(ceil(GPS_L1_CA_CHIP_PERIOD * static_cast<float>(acq_parameters.fs_in))); |     acq_parameters.samples_per_chip = static_cast<unsigned int>(ceil(GPS_L1_CA_CHIP_PERIOD_S * static_cast<float>(acq_parameters.fs_in))); | ||||||
|     dump_ = configuration->property(role + ".dump", false); |     dump_ = configuration->property(role + ".dump", false); | ||||||
|     acq_parameters.dump = dump_; |     acq_parameters.dump = dump_; | ||||||
|     dump_filename_ = configuration->property(role + ".dump_filename", default_dump_filename); |     dump_filename_ = configuration->property(role + ".dump_filename", default_dump_filename); | ||||||
| @@ -78,7 +78,7 @@ GpsL1CaPcpsAcquisitionFineDoppler::GpsL1CaPcpsAcquisitionFineDoppler( | |||||||
|     acq_parameters.blocking_on_standby = configuration->property(role + ".blocking_on_standby", false); |     acq_parameters.blocking_on_standby = configuration->property(role + ".blocking_on_standby", false); | ||||||
|  |  | ||||||
|     //--- Find number of samples per spreading code ------------------------- |     //--- Find number of samples per spreading code ------------------------- | ||||||
|     vector_length_ = round(fs_in_ / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS)); |     vector_length_ = round(fs_in_ / (GPS_L1_CA_CODE_RATE_CPS / GPS_L1_CA_CODE_LENGTH_CHIPS)); | ||||||
|     acq_parameters.samples_per_ms = vector_length_; |     acq_parameters.samples_per_ms = vector_length_; | ||||||
|     code_ = std::vector<std::complex<float>>(vector_length_); |     code_ = std::vector<std::complex<float>>(vector_length_); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -76,7 +76,7 @@ GpsL1CaPcpsAcquisitionFpga::GpsL1CaPcpsAcquisitionFpga( | |||||||
|     acq_parameters.doppler_max = doppler_max_; |     acq_parameters.doppler_max = doppler_max_; | ||||||
|     uint32_t sampled_ms = configuration_->property(role + ".coherent_integration_time_ms", 1); |     uint32_t sampled_ms = configuration_->property(role + ".coherent_integration_time_ms", 1); | ||||||
|     acq_parameters.sampled_ms = sampled_ms; |     acq_parameters.sampled_ms = sampled_ms; | ||||||
|     auto code_length = static_cast<uint32_t>(std::round(static_cast<double>(fs_in) / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS))); |     auto code_length = static_cast<uint32_t>(std::round(static_cast<double>(fs_in) / (GPS_L1_CA_CODE_RATE_CPS / GPS_L1_CA_CODE_LENGTH_CHIPS))); | ||||||
|     acq_parameters.code_length = code_length; |     acq_parameters.code_length = code_length; | ||||||
|     // The FPGA can only use FFT lengths that are a power of two. |     // The FPGA can only use FFT lengths that are a power of two. | ||||||
|     float nbits = ceilf(log2f(static_cast<float>(code_length) * 2.0)); |     float nbits = ceilf(log2f(static_cast<float>(code_length) * 2.0)); | ||||||
| @@ -88,7 +88,7 @@ GpsL1CaPcpsAcquisitionFpga::GpsL1CaPcpsAcquisitionFpga( | |||||||
|     acq_parameters.device_name = device_name; |     acq_parameters.device_name = device_name; | ||||||
|     acq_parameters.samples_per_ms = nsamples_total / sampled_ms; |     acq_parameters.samples_per_ms = nsamples_total / sampled_ms; | ||||||
|     acq_parameters.samples_per_code = nsamples_total; |     acq_parameters.samples_per_code = nsamples_total; | ||||||
|     acq_parameters.excludelimit = static_cast<unsigned int>(1 + ceil(GPS_L1_CA_CHIP_PERIOD * static_cast<float>(fs_in))); |     acq_parameters.excludelimit = static_cast<unsigned int>(1 + ceil(GPS_L1_CA_CHIP_PERIOD_S * static_cast<float>(fs_in))); | ||||||
|  |  | ||||||
|     // compute all the GPS L1 PRN Codes (this is done only once upon the class constructor in order to avoid re-computing the PRN codes every time |     // compute all the GPS L1 PRN Codes (this is done only once upon the class constructor in order to avoid re-computing the PRN codes every time | ||||||
|     // a channel is assigned) |     // a channel is assigned) | ||||||
|   | |||||||
| @@ -68,7 +68,7 @@ GpsL1CaPcpsAssistedAcquisition::GpsL1CaPcpsAssistedAcquisition( | |||||||
|     dump_filename_ = configuration->property(role + ".dump_filename", default_dump_filename); |     dump_filename_ = configuration->property(role + ".dump_filename", default_dump_filename); | ||||||
|  |  | ||||||
|     // --- Find number of samples per spreading code ------------------------- |     // --- Find number of samples per spreading code ------------------------- | ||||||
|     vector_length_ = round(fs_in_ / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS)); |     vector_length_ = round(fs_in_ / (GPS_L1_CA_CODE_RATE_CPS / GPS_L1_CA_CODE_LENGTH_CHIPS)); | ||||||
|  |  | ||||||
|     code_ = std::make_shared<std::complex<float>>(vector_length_); |     code_ = std::make_shared<std::complex<float>>(vector_length_); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -81,7 +81,7 @@ GpsL1CaPcpsOpenClAcquisition::GpsL1CaPcpsOpenClAcquisition( | |||||||
|         default_dump_filename); |         default_dump_filename); | ||||||
|  |  | ||||||
|     //--- Find number of samples per spreading code ------------------------- |     //--- Find number of samples per spreading code ------------------------- | ||||||
|     code_length_ = round(fs_in_ / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS)); |     code_length_ = round(fs_in_ / (GPS_L1_CA_CODE_RATE_CPS / GPS_L1_CA_CODE_LENGTH_CHIPS)); | ||||||
|  |  | ||||||
|     vector_length_ = code_length_ * sampled_ms_; |     vector_length_ = code_length_ * sampled_ms_; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -66,7 +66,7 @@ GpsL1CaPcpsQuickSyncAcquisition::GpsL1CaPcpsQuickSyncAcquisition( | |||||||
|     sampled_ms_ = configuration_->property(role + ".coherent_integration_time_ms", 4); |     sampled_ms_ = configuration_->property(role + ".coherent_integration_time_ms", 4); | ||||||
|  |  | ||||||
|     //--- Find number of samples per spreading code ------------------------- |     //--- Find number of samples per spreading code ------------------------- | ||||||
|     code_length_ = round(fs_in_ / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS)); |     code_length_ = round(fs_in_ / (GPS_L1_CA_CODE_RATE_CPS / GPS_L1_CA_CODE_LENGTH_CHIPS)); | ||||||
|  |  | ||||||
|     /* Calculate the folding factor value based on the calculations */ |     /* Calculate the folding factor value based on the calculations */ | ||||||
|     auto temp = static_cast<unsigned int>(ceil(sqrt(log2(code_length_)))); |     auto temp = static_cast<unsigned int>(ceil(sqrt(log2(code_length_)))); | ||||||
|   | |||||||
| @@ -72,7 +72,7 @@ GpsL1CaPcpsTongAcquisition::GpsL1CaPcpsTongAcquisition( | |||||||
|     dump_filename_ = configuration_->property(role + ".dump_filename", default_dump_filename); |     dump_filename_ = configuration_->property(role + ".dump_filename", default_dump_filename); | ||||||
|  |  | ||||||
|     //--- Find number of samples per spreading code ------------------------- |     //--- Find number of samples per spreading code ------------------------- | ||||||
|     code_length_ = round(fs_in_ / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS)); |     code_length_ = round(fs_in_ / (GPS_L1_CA_CODE_RATE_CPS / GPS_L1_CA_CODE_LENGTH_CHIPS)); | ||||||
|  |  | ||||||
|     vector_length_ = code_length_ * sampled_ms_; |     vector_length_ = code_length_ * sampled_ms_; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -99,10 +99,10 @@ GpsL2MPcpsAcquisition::GpsL2MPcpsAcquisition( | |||||||
|         } |         } | ||||||
|     if (acq_parameters_.use_automatic_resampler) |     if (acq_parameters_.use_automatic_resampler) | ||||||
|         { |         { | ||||||
|             if (acq_parameters_.fs_in > GPS_L2C_OPT_ACQ_FS_HZ) |             if (acq_parameters_.fs_in > GPS_L2C_OPT_ACQ_FS_SPS) | ||||||
|                 { |                 { | ||||||
|                     acq_parameters_.resampler_ratio = floor(static_cast<float>(acq_parameters_.fs_in) / GPS_L2C_OPT_ACQ_FS_HZ); |                     acq_parameters_.resampler_ratio = floor(static_cast<float>(acq_parameters_.fs_in) / GPS_L2C_OPT_ACQ_FS_SPS); | ||||||
|                     uint32_t decimation = acq_parameters_.fs_in / GPS_L2C_OPT_ACQ_FS_HZ; |                     uint32_t decimation = acq_parameters_.fs_in / GPS_L2C_OPT_ACQ_FS_SPS; | ||||||
|                     while (acq_parameters_.fs_in % decimation > 0) |                     while (acq_parameters_.fs_in % decimation > 0) | ||||||
|                         { |                         { | ||||||
|                             decimation--; |                             decimation--; | ||||||
| @@ -112,20 +112,20 @@ GpsL2MPcpsAcquisition::GpsL2MPcpsAcquisition( | |||||||
|                 } |                 } | ||||||
|  |  | ||||||
|             //--- Find number of samples per spreading code ------------------------- |             //--- Find number of samples per spreading code ------------------------- | ||||||
|             code_length_ = static_cast<unsigned int>(std::floor(static_cast<double>(acq_parameters_.resampled_fs) / (GPS_L2_M_CODE_RATE_HZ / GPS_L2_M_CODE_LENGTH_CHIPS))); |             code_length_ = static_cast<unsigned int>(std::floor(static_cast<double>(acq_parameters_.resampled_fs) / (GPS_L2_M_CODE_RATE_CPS / GPS_L2_M_CODE_LENGTH_CHIPS))); | ||||||
|             acq_parameters_.samples_per_ms = static_cast<float>(acq_parameters_.resampled_fs) * 0.001; |             acq_parameters_.samples_per_ms = static_cast<float>(acq_parameters_.resampled_fs) * 0.001; | ||||||
|             acq_parameters_.samples_per_chip = static_cast<unsigned int>(ceil((1.0 / GPS_L2_M_CODE_RATE_HZ) * static_cast<float>(acq_parameters_.resampled_fs))); |             acq_parameters_.samples_per_chip = static_cast<unsigned int>(ceil((1.0 / GPS_L2_M_CODE_RATE_CPS) * static_cast<float>(acq_parameters_.resampled_fs))); | ||||||
|         } |         } | ||||||
|     else |     else | ||||||
|         { |         { | ||||||
|             acq_parameters_.resampled_fs = fs_in_; |             acq_parameters_.resampled_fs = fs_in_; | ||||||
|             //--- Find number of samples per spreading code ------------------------- |             //--- Find number of samples per spreading code ------------------------- | ||||||
|             code_length_ = static_cast<unsigned int>(std::floor(static_cast<double>(fs_in_) / (GPS_L2_M_CODE_RATE_HZ / GPS_L2_M_CODE_LENGTH_CHIPS))); |             code_length_ = static_cast<unsigned int>(std::floor(static_cast<double>(fs_in_) / (GPS_L2_M_CODE_RATE_CPS / GPS_L2_M_CODE_LENGTH_CHIPS))); | ||||||
|             acq_parameters_.samples_per_ms = static_cast<float>(fs_in_) * 0.001; |             acq_parameters_.samples_per_ms = static_cast<float>(fs_in_) * 0.001; | ||||||
|             acq_parameters_.samples_per_chip = static_cast<unsigned int>(ceil((1.0 / GPS_L2_M_CODE_RATE_HZ) * static_cast<float>(acq_parameters_.fs_in))); |             acq_parameters_.samples_per_chip = static_cast<unsigned int>(ceil((1.0 / GPS_L2_M_CODE_RATE_CPS) * static_cast<float>(acq_parameters_.fs_in))); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|     acq_parameters_.samples_per_code = acq_parameters_.samples_per_ms * static_cast<float>(GPS_L2_M_PERIOD * 1000.0); |     acq_parameters_.samples_per_code = acq_parameters_.samples_per_ms * static_cast<float>(GPS_L2_M_PERIOD_S * 1000.0); | ||||||
|     vector_length_ = acq_parameters_.sampled_ms * acq_parameters_.samples_per_ms * (acq_parameters_.bit_transition_flag ? 2 : 1); |     vector_length_ = acq_parameters_.sampled_ms * acq_parameters_.samples_per_ms * (acq_parameters_.bit_transition_flag ? 2 : 1); | ||||||
|     code_ = std::vector<std::complex<float>>(vector_length_); |     code_ = std::vector<std::complex<float>>(vector_length_); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -75,7 +75,7 @@ GpsL2MPcpsAcquisitionFpga::GpsL2MPcpsAcquisitionFpga( | |||||||
|     acq_parameters.doppler_max = doppler_max_; |     acq_parameters.doppler_max = doppler_max_; | ||||||
|  |  | ||||||
|     acq_parameters.sampled_ms = 20; |     acq_parameters.sampled_ms = 20; | ||||||
|     unsigned int code_length = std::round(static_cast<double>(fs_in_) / (GPS_L2_M_CODE_RATE_HZ / static_cast<double>(GPS_L2_M_CODE_LENGTH_CHIPS))); |     unsigned int code_length = std::round(static_cast<double>(fs_in_) / (GPS_L2_M_CODE_RATE_CPS / static_cast<double>(GPS_L2_M_CODE_LENGTH_CHIPS))); | ||||||
|     acq_parameters.code_length = code_length; |     acq_parameters.code_length = code_length; | ||||||
|     // The FPGA can only use FFT lengths that are a power of two. |     // The FPGA can only use FFT lengths that are a power of two. | ||||||
|     float nbits = ceilf(log2f(static_cast<float>(code_length))); |     float nbits = ceilf(log2f(static_cast<float>(code_length))); | ||||||
| @@ -90,7 +90,7 @@ GpsL2MPcpsAcquisitionFpga::GpsL2MPcpsAcquisitionFpga( | |||||||
|  |  | ||||||
|     acq_parameters.downsampling_factor = configuration_->property(role + ".downsampling_factor", 1.0); |     acq_parameters.downsampling_factor = configuration_->property(role + ".downsampling_factor", 1.0); | ||||||
|     acq_parameters.total_block_exp = configuration_->property(role + ".total_block_exp", 14); |     acq_parameters.total_block_exp = configuration_->property(role + ".total_block_exp", 14); | ||||||
|     acq_parameters.excludelimit = static_cast<uint32_t>(std::round(static_cast<double>(fs_in_) / GPS_L2_M_CODE_RATE_HZ)); |     acq_parameters.excludelimit = static_cast<uint32_t>(std::round(static_cast<double>(fs_in_) / GPS_L2_M_CODE_RATE_CPS)); | ||||||
|  |  | ||||||
|     // compute all the GPS L2C PRN Codes (this is done only once upon the class constructor in order to avoid re-computing the PRN codes every time |     // compute all the GPS L2C PRN Codes (this is done only once upon the class constructor in order to avoid re-computing the PRN codes every time | ||||||
|     // a channel is assigned) |     // a channel is assigned) | ||||||
|   | |||||||
| @@ -106,10 +106,10 @@ GpsL5iPcpsAcquisition::GpsL5iPcpsAcquisition( | |||||||
|         } |         } | ||||||
|     if (acq_parameters_.use_automatic_resampler) |     if (acq_parameters_.use_automatic_resampler) | ||||||
|         { |         { | ||||||
|             if (acq_parameters_.fs_in > GPS_L5_OPT_ACQ_FS_HZ) |             if (acq_parameters_.fs_in > GPS_L5_OPT_ACQ_FS_SPS) | ||||||
|                 { |                 { | ||||||
|                     acq_parameters_.resampler_ratio = floor(static_cast<float>(acq_parameters_.fs_in) / GPS_L5_OPT_ACQ_FS_HZ); |                     acq_parameters_.resampler_ratio = floor(static_cast<float>(acq_parameters_.fs_in) / GPS_L5_OPT_ACQ_FS_SPS); | ||||||
|                     uint32_t decimation = acq_parameters_.fs_in / GPS_L5_OPT_ACQ_FS_HZ; |                     uint32_t decimation = acq_parameters_.fs_in / GPS_L5_OPT_ACQ_FS_SPS; | ||||||
|                     while (acq_parameters_.fs_in % decimation > 0) |                     while (acq_parameters_.fs_in % decimation > 0) | ||||||
|                         { |                         { | ||||||
|                             decimation--; |                             decimation--; | ||||||
| @@ -119,20 +119,20 @@ GpsL5iPcpsAcquisition::GpsL5iPcpsAcquisition( | |||||||
|                 } |                 } | ||||||
|  |  | ||||||
|             //--- Find number of samples per spreading code ------------------------- |             //--- Find number of samples per spreading code ------------------------- | ||||||
|             code_length_ = static_cast<unsigned int>(std::floor(static_cast<double>(acq_parameters_.resampled_fs) / (GPS_L5I_CODE_RATE_HZ / GPS_L5I_CODE_LENGTH_CHIPS))); |             code_length_ = static_cast<unsigned int>(std::floor(static_cast<double>(acq_parameters_.resampled_fs) / (GPS_L5I_CODE_RATE_CPS / GPS_L5I_CODE_LENGTH_CHIPS))); | ||||||
|             acq_parameters_.samples_per_ms = static_cast<float>(acq_parameters_.resampled_fs) * 0.001; |             acq_parameters_.samples_per_ms = static_cast<float>(acq_parameters_.resampled_fs) * 0.001; | ||||||
|             acq_parameters_.samples_per_chip = static_cast<unsigned int>(ceil((1.0 / GPS_L5I_CODE_RATE_HZ) * static_cast<float>(acq_parameters_.resampled_fs))); |             acq_parameters_.samples_per_chip = static_cast<unsigned int>(ceil((1.0 / GPS_L5I_CODE_RATE_CPS) * static_cast<float>(acq_parameters_.resampled_fs))); | ||||||
|         } |         } | ||||||
|     else |     else | ||||||
|         { |         { | ||||||
|             acq_parameters_.resampled_fs = fs_in_; |             acq_parameters_.resampled_fs = fs_in_; | ||||||
|             //--- Find number of samples per spreading code ------------------------- |             //--- Find number of samples per spreading code ------------------------- | ||||||
|             code_length_ = static_cast<unsigned int>(std::floor(static_cast<double>(fs_in_) / (GPS_L5I_CODE_RATE_HZ / GPS_L5I_CODE_LENGTH_CHIPS))); |             code_length_ = static_cast<unsigned int>(std::floor(static_cast<double>(fs_in_) / (GPS_L5I_CODE_RATE_CPS / GPS_L5I_CODE_LENGTH_CHIPS))); | ||||||
|             acq_parameters_.samples_per_ms = static_cast<float>(fs_in_) * 0.001; |             acq_parameters_.samples_per_ms = static_cast<float>(fs_in_) * 0.001; | ||||||
|             acq_parameters_.samples_per_chip = static_cast<unsigned int>(ceil((1.0 / GPS_L5I_CODE_RATE_HZ) * static_cast<float>(acq_parameters_.fs_in))); |             acq_parameters_.samples_per_chip = static_cast<unsigned int>(ceil((1.0 / GPS_L5I_CODE_RATE_CPS) * static_cast<float>(acq_parameters_.fs_in))); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|     acq_parameters_.samples_per_code = acq_parameters_.samples_per_ms * static_cast<float>(GPS_L5I_PERIOD * 1000.0); |     acq_parameters_.samples_per_code = acq_parameters_.samples_per_ms * static_cast<float>(GPS_L5I_PERIOD_S * 1000.0); | ||||||
|     vector_length_ = std::floor(acq_parameters_.sampled_ms * acq_parameters_.samples_per_ms) * (acq_parameters_.bit_transition_flag ? 2 : 1); |     vector_length_ = std::floor(acq_parameters_.sampled_ms * acq_parameters_.samples_per_ms) * (acq_parameters_.bit_transition_flag ? 2 : 1); | ||||||
|     code_ = std::vector<std::complex<float>>(vector_length_); |     code_ = std::vector<std::complex<float>>(vector_length_); | ||||||
|     acquisition_ = pcps_make_acquisition(acq_parameters_); |     acquisition_ = pcps_make_acquisition(acq_parameters_); | ||||||
|   | |||||||
| @@ -79,7 +79,7 @@ GpsL5iPcpsAcquisitionFpga::GpsL5iPcpsAcquisitionFpga( | |||||||
|     acq_parameters.sampled_ms = sampled_ms; |     acq_parameters.sampled_ms = sampled_ms; | ||||||
|  |  | ||||||
|     //--- Find number of samples per spreading code ------------------------- |     //--- Find number of samples per spreading code ------------------------- | ||||||
|     auto code_length = static_cast<uint32_t>(std::round(static_cast<double>(fs_in) / (GPS_L5I_CODE_RATE_HZ / static_cast<double>(GPS_L5I_CODE_LENGTH_CHIPS)))); |     auto code_length = static_cast<uint32_t>(std::round(static_cast<double>(fs_in) / (GPS_L5I_CODE_RATE_CPS / static_cast<double>(GPS_L5I_CODE_LENGTH_CHIPS)))); | ||||||
|     acq_parameters.code_length = code_length; |     acq_parameters.code_length = code_length; | ||||||
|     // The FPGA can only use FFT lengths that are a power of two. |     // The FPGA can only use FFT lengths that are a power of two. | ||||||
|     float nbits = ceilf(log2f(static_cast<float>(code_length) * 2.0)); |     float nbits = ceilf(log2f(static_cast<float>(code_length) * 2.0)); | ||||||
| @@ -92,7 +92,7 @@ GpsL5iPcpsAcquisitionFpga::GpsL5iPcpsAcquisitionFpga( | |||||||
|     acq_parameters.samples_per_ms = nsamples_total / sampled_ms; |     acq_parameters.samples_per_ms = nsamples_total / sampled_ms; | ||||||
|     acq_parameters.samples_per_code = nsamples_total; |     acq_parameters.samples_per_code = nsamples_total; | ||||||
|  |  | ||||||
|     acq_parameters.excludelimit = static_cast<unsigned int>(1 + ceil((1.0 / GPS_L5I_CODE_RATE_HZ) * static_cast<float>(fs_in))); |     acq_parameters.excludelimit = static_cast<unsigned int>(1 + ceil((1.0 / GPS_L5I_CODE_RATE_CPS) * static_cast<float>(fs_in))); | ||||||
|  |  | ||||||
|     // compute all the GPS L5 PRN Codes (this is done only once upon the class constructor in order to avoid re-computing the PRN codes every time |     // compute all the GPS L5 PRN Codes (this is done only once upon the class constructor in order to avoid re-computing the PRN codes every time | ||||||
|     // a channel is assigned) |     // a channel is assigned) | ||||||
|   | |||||||
| @@ -290,7 +290,7 @@ double pcps_acquisition_fine_doppler_cc::compute_CAF() | |||||||
|         } |         } | ||||||
|  |  | ||||||
|     // -- - Find 1 chip wide code phase exclude range around the peak |     // -- - Find 1 chip wide code phase exclude range around the peak | ||||||
|     uint32_t samplesPerChip = ceil(GPS_L1_CA_CHIP_PERIOD * static_cast<float>(this->d_fs_in)); |     uint32_t samplesPerChip = ceil(GPS_L1_CA_CHIP_PERIOD_S * static_cast<float>(this->d_fs_in)); | ||||||
|     int32_t excludeRangeIndex1 = index_time - samplesPerChip; |     int32_t excludeRangeIndex1 = index_time - samplesPerChip; | ||||||
|     int32_t excludeRangeIndex2 = index_time + samplesPerChip; |     int32_t excludeRangeIndex2 = index_time + samplesPerChip; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -162,7 +162,7 @@ void galileo_e1_code_gen_float_sampled(gsl::span<float> _dest, const std::array< | |||||||
|     // This function is based on the GNU software GPS for MATLAB in Kay Borre's book |     // This function is based on the GNU software GPS for MATLAB in Kay Borre's book | ||||||
|     std::string _galileo_signal = _Signal.data(); |     std::string _galileo_signal = _Signal.data(); | ||||||
|     uint32_t _samplesPerCode; |     uint32_t _samplesPerCode; | ||||||
|     const int32_t _codeFreqBasis = GALILEO_E1_CODE_CHIP_RATE_HZ;  // Hz |     const int32_t _codeFreqBasis = GALILEO_E1_CODE_CHIP_RATE_CPS;  // Hz | ||||||
|     std::vector<int32_t> primary_code_E1_chips(static_cast<int32_t>(GALILEO_E1_B_CODE_LENGTH_CHIPS)); |     std::vector<int32_t> primary_code_E1_chips(static_cast<int32_t>(GALILEO_E1_B_CODE_LENGTH_CHIPS)); | ||||||
|     _samplesPerCode = static_cast<uint32_t>(static_cast<double>(_fs) / (static_cast<double>(_codeFreqBasis) / GALILEO_E1_B_CODE_LENGTH_CHIPS)); |     _samplesPerCode = static_cast<uint32_t>(static_cast<double>(_fs) / (static_cast<double>(_codeFreqBasis) / GALILEO_E1_B_CODE_LENGTH_CHIPS)); | ||||||
|     const int32_t _samplesPerChip = (_cboc == true) ? 12 : 2; |     const int32_t _samplesPerChip = (_cboc == true) ? 12 : 2; | ||||||
| @@ -237,7 +237,7 @@ void galileo_e1_code_gen_complex_sampled(gsl::span<std::complex<float>> _dest, c | |||||||
|     bool _secondary_flag) |     bool _secondary_flag) | ||||||
| { | { | ||||||
|     std::string _galileo_signal = _Signal.data(); |     std::string _galileo_signal = _Signal.data(); | ||||||
|     const int32_t _codeFreqBasis = GALILEO_E1_CODE_CHIP_RATE_HZ;  // Hz |     const int32_t _codeFreqBasis = GALILEO_E1_CODE_CHIP_RATE_CPS;  // Hz | ||||||
|     auto _samplesPerCode = static_cast<uint32_t>(static_cast<double>(_fs) / |     auto _samplesPerCode = static_cast<uint32_t>(static_cast<double>(_fs) / | ||||||
|                                                  (static_cast<double>(_codeFreqBasis) / GALILEO_E1_B_CODE_LENGTH_CHIPS)); |                                                  (static_cast<double>(_codeFreqBasis) / GALILEO_E1_B_CODE_LENGTH_CHIPS)); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -108,7 +108,7 @@ void galileo_e5_a_code_gen_complex_sampled(gsl::span<std::complex<float>> _dest, | |||||||
|     uint32_t _samplesPerCode; |     uint32_t _samplesPerCode; | ||||||
|     uint32_t delay; |     uint32_t delay; | ||||||
|     const uint32_t _codeLength = GALILEO_E5A_CODE_LENGTH_CHIPS; |     const uint32_t _codeLength = GALILEO_E5A_CODE_LENGTH_CHIPS; | ||||||
|     const int32_t _codeFreqBasis = GALILEO_E5A_CODE_CHIP_RATE_HZ; |     const int32_t _codeFreqBasis = GALILEO_E5A_CODE_CHIP_RATE_CPS; | ||||||
|  |  | ||||||
|     std::unique_ptr<std::complex<float>> _code{new std::complex<float>[_codeLength]}; |     std::unique_ptr<std::complex<float>> _code{new std::complex<float>[_codeLength]}; | ||||||
|     gsl::span<std::complex<float>> _code_span(_code, _codeLength); |     gsl::span<std::complex<float>> _code_span(_code, _codeLength); | ||||||
|   | |||||||
| @@ -103,11 +103,11 @@ void gps_l2c_m_code_gen_complex_sampled(gsl::span<std::complex<float>> _dest, ui | |||||||
|     const int32_t _codeLength = GPS_L2_M_CODE_LENGTH_CHIPS; |     const int32_t _codeLength = GPS_L2_M_CODE_LENGTH_CHIPS; | ||||||
|  |  | ||||||
|     // --- Find number of samples per spreading code --------------------------- |     // --- Find number of samples per spreading code --------------------------- | ||||||
|     _samplesPerCode = static_cast<int32_t>(static_cast<double>(_fs) / (static_cast<double>(GPS_L2_M_CODE_RATE_HZ) / static_cast<double>(_codeLength))); |     _samplesPerCode = static_cast<int32_t>(static_cast<double>(_fs) / (static_cast<double>(GPS_L2_M_CODE_RATE_CPS) / static_cast<double>(_codeLength))); | ||||||
|  |  | ||||||
|     // --- Find time constants ------------------------------------------------- |     // --- Find time constants ------------------------------------------------- | ||||||
|     _ts = 1.0 / static_cast<float>(_fs);                    // Sampling period in sec |     _ts = 1.0 / static_cast<float>(_fs);                     // Sampling period in sec | ||||||
|     _tc = 1.0 / static_cast<float>(GPS_L2_M_CODE_RATE_HZ);  // L2C chip period in sec |     _tc = 1.0 / static_cast<float>(GPS_L2_M_CODE_RATE_CPS);  // L2C chip period in sec | ||||||
|  |  | ||||||
|     for (int32_t i = 0; i < _samplesPerCode; i++) |     for (int32_t i = 0; i < _samplesPerCode; i++) | ||||||
|         { |         { | ||||||
|   | |||||||
| @@ -220,11 +220,11 @@ void gps_l5i_code_gen_complex_sampled(gsl::span<std::complex<float>> _dest, uint | |||||||
|     const int32_t _codeLength = GPS_L5I_CODE_LENGTH_CHIPS; |     const int32_t _codeLength = GPS_L5I_CODE_LENGTH_CHIPS; | ||||||
|  |  | ||||||
|     // --- Find number of samples per spreading code --------------------------- |     // --- Find number of samples per spreading code --------------------------- | ||||||
|     _samplesPerCode = static_cast<int32_t>(static_cast<double>(_fs) / (static_cast<double>(GPS_L5I_CODE_RATE_HZ) / static_cast<double>(_codeLength))); |     _samplesPerCode = static_cast<int32_t>(static_cast<double>(_fs) / (static_cast<double>(GPS_L5I_CODE_RATE_CPS) / static_cast<double>(_codeLength))); | ||||||
|  |  | ||||||
|     // --- Find time constants ------------------------------------------------- |     // --- Find time constants ------------------------------------------------- | ||||||
|     _ts = 1.0 / static_cast<float>(_fs);                   // Sampling period in sec |     _ts = 1.0 / static_cast<float>(_fs);                    // Sampling period in sec | ||||||
|     _tc = 1.0 / static_cast<float>(GPS_L5I_CODE_RATE_HZ);  // L5I primary chip period in sec |     _tc = 1.0 / static_cast<float>(GPS_L5I_CODE_RATE_CPS);  // L5I primary chip period in sec | ||||||
|  |  | ||||||
|     for (int32_t i = 0; i < _samplesPerCode; i++) |     for (int32_t i = 0; i < _samplesPerCode; i++) | ||||||
|         { |         { | ||||||
| @@ -295,11 +295,11 @@ void gps_l5q_code_gen_complex_sampled(gsl::span<std::complex<float>> _dest, uint | |||||||
|     const int32_t _codeLength = GPS_L5Q_CODE_LENGTH_CHIPS; |     const int32_t _codeLength = GPS_L5Q_CODE_LENGTH_CHIPS; | ||||||
|  |  | ||||||
|     // --- Find number of samples per spreading code --------------------------- |     // --- Find number of samples per spreading code --------------------------- | ||||||
|     _samplesPerCode = static_cast<int32_t>(static_cast<double>(_fs) / (static_cast<double>(GPS_L5Q_CODE_RATE_HZ) / static_cast<double>(_codeLength))); |     _samplesPerCode = static_cast<int32_t>(static_cast<double>(_fs) / (static_cast<double>(GPS_L5Q_CODE_RATE_CPS) / static_cast<double>(_codeLength))); | ||||||
|  |  | ||||||
|     // --- Find time constants ------------------------------------------------- |     // --- Find time constants ------------------------------------------------- | ||||||
|     _ts = 1.0 / static_cast<float>(_fs);                   // Sampling period in sec |     _ts = 1.0 / static_cast<float>(_fs);                    // Sampling period in sec | ||||||
|     _tc = 1.0 / static_cast<float>(GPS_L5Q_CODE_RATE_HZ);  // L5Q chip period in sec |     _tc = 1.0 / static_cast<float>(GPS_L5Q_CODE_RATE_CPS);  // L5Q chip period in sec | ||||||
|  |  | ||||||
|     for (int32_t i = 0; i < _samplesPerCode; i++) |     for (int32_t i = 0; i < _samplesPerCode; i++) | ||||||
|         { |         { | ||||||
|   | |||||||
| @@ -88,32 +88,32 @@ SignalGenerator::SignalGenerator(ConfigurationInterface* configuration, | |||||||
|         { |         { | ||||||
|             if (signal1[0].at(0) == '5') |             if (signal1[0].at(0) == '5') | ||||||
|                 { |                 { | ||||||
|                     vector_length = round(static_cast<float>(fs_in) / (GALILEO_E5A_CODE_CHIP_RATE_HZ / GALILEO_E5A_CODE_LENGTH_CHIPS)); |                     vector_length = round(static_cast<float>(fs_in) / (GALILEO_E5A_CODE_CHIP_RATE_CPS / GALILEO_E5A_CODE_LENGTH_CHIPS)); | ||||||
|                 } |                 } | ||||||
|             else |             else | ||||||
|                 { |                 { | ||||||
|                     vector_length = round(static_cast<float>(fs_in) / (GALILEO_E1_CODE_CHIP_RATE_HZ / GALILEO_E1_B_CODE_LENGTH_CHIPS)) * GALILEO_E1_C_SECONDARY_CODE_LENGTH; |                     vector_length = round(static_cast<float>(fs_in) / (GALILEO_E1_CODE_CHIP_RATE_CPS / GALILEO_E1_B_CODE_LENGTH_CHIPS)) * GALILEO_E1_C_SECONDARY_CODE_LENGTH; | ||||||
|                 } |                 } | ||||||
|         } |         } | ||||||
|     else if (std::find(system.begin(), system.end(), "G") != system.end()) |     else if (std::find(system.begin(), system.end(), "G") != system.end()) | ||||||
|         { |         { | ||||||
|             vector_length = round(static_cast<float>(fs_in) / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS)); |             vector_length = round(static_cast<float>(fs_in) / (GPS_L1_CA_CODE_RATE_CPS / GPS_L1_CA_CODE_LENGTH_CHIPS)); | ||||||
|         } |         } | ||||||
|     else if (std::find(system.begin(), system.end(), "R") != system.end()) |     else if (std::find(system.begin(), system.end(), "R") != system.end()) | ||||||
|         { |         { | ||||||
|             if (signal1[0].at(0) == '1') |             if (signal1[0].at(0) == '1') | ||||||
|                 { |                 { | ||||||
|                     vector_length = round(static_cast<float>(fs_in) / (GLONASS_L1_CA_CODE_RATE_HZ / GLONASS_L1_CA_CODE_LENGTH_CHIPS)); |                     vector_length = round(static_cast<float>(fs_in) / (GLONASS_L1_CA_CODE_RATE_CPS / GLONASS_L1_CA_CODE_LENGTH_CHIPS)); | ||||||
|                 } |                 } | ||||||
|             else |             else | ||||||
|                 { |                 { | ||||||
|                     vector_length = round(static_cast<float>(fs_in) / (GLONASS_L2_CA_CODE_RATE_HZ / GLONASS_L2_CA_CODE_LENGTH_CHIPS)); |                     vector_length = round(static_cast<float>(fs_in) / (GLONASS_L2_CA_CODE_RATE_CPS / GLONASS_L2_CA_CODE_LENGTH_CHIPS)); | ||||||
|                 } |                 } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|     else if (std::find(system.begin(), system.end(), "B") != system.end()) |     else if (std::find(system.begin(), system.end(), "B") != system.end()) | ||||||
|         { |         { | ||||||
|             vector_length = round(static_cast<float>(fs_in) / (BEIDOU_B1I_CODE_RATE_HZ / BEIDOU_B1I_CODE_LENGTH_CHIPS)); |             vector_length = round(static_cast<float>(fs_in) / (BEIDOU_B1I_CODE_RATE_CPS / BEIDOU_B1I_CODE_LENGTH_CHIPS)); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -113,14 +113,14 @@ void signal_generator_c::init() | |||||||
|  |  | ||||||
|             if (system_[sat] == "G") |             if (system_[sat] == "G") | ||||||
|                 { |                 { | ||||||
|                     samples_per_code_.push_back(round(static_cast<float>(fs_in_) / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS))); |                     samples_per_code_.push_back(round(static_cast<float>(fs_in_) / (GPS_L1_CA_CODE_RATE_CPS / GPS_L1_CA_CODE_LENGTH_CHIPS))); | ||||||
|  |  | ||||||
|                     num_of_codes_per_vector_.push_back(galileo_signal ? 4 * static_cast<int>(GALILEO_E1_C_SECONDARY_CODE_LENGTH) : 1); |                     num_of_codes_per_vector_.push_back(galileo_signal ? 4 * static_cast<int>(GALILEO_E1_C_SECONDARY_CODE_LENGTH) : 1); | ||||||
|                     data_bit_duration_ms_.push_back(1e3 / GPS_CA_TELEMETRY_RATE_BITS_SECOND); |                     data_bit_duration_ms_.push_back(1e3 / GPS_CA_TELEMETRY_RATE_BITS_SECOND); | ||||||
|                 } |                 } | ||||||
|             else if (system_[sat] == "R") |             else if (system_[sat] == "R") | ||||||
|                 { |                 { | ||||||
|                     samples_per_code_.push_back(round(static_cast<float>(fs_in_) / (GLONASS_L1_CA_CODE_RATE_HZ / GLONASS_L1_CA_CODE_LENGTH_CHIPS))); |                     samples_per_code_.push_back(round(static_cast<float>(fs_in_) / (GLONASS_L1_CA_CODE_RATE_CPS / GLONASS_L1_CA_CODE_LENGTH_CHIPS))); | ||||||
|  |  | ||||||
|                     num_of_codes_per_vector_.push_back(galileo_signal ? 4 * static_cast<int>(GALILEO_E1_C_SECONDARY_CODE_LENGTH) : 1); |                     num_of_codes_per_vector_.push_back(galileo_signal ? 4 * static_cast<int>(GALILEO_E1_C_SECONDARY_CODE_LENGTH) : 1); | ||||||
|                     data_bit_duration_ms_.push_back(1e3 / GLONASS_GNAV_TELEMETRY_RATE_BITS_SECOND); |                     data_bit_duration_ms_.push_back(1e3 / GLONASS_GNAV_TELEMETRY_RATE_BITS_SECOND); | ||||||
| @@ -130,14 +130,14 @@ void signal_generator_c::init() | |||||||
|                     if (signal_[sat].at(0) == '5') |                     if (signal_[sat].at(0) == '5') | ||||||
|                         { |                         { | ||||||
|                             int codelen = static_cast<int>(GALILEO_E5A_CODE_LENGTH_CHIPS); |                             int codelen = static_cast<int>(GALILEO_E5A_CODE_LENGTH_CHIPS); | ||||||
|                             samples_per_code_.push_back(round(static_cast<float>(fs_in_) / (GALILEO_E5A_CODE_CHIP_RATE_HZ / codelen))); |                             samples_per_code_.push_back(round(static_cast<float>(fs_in_) / (GALILEO_E5A_CODE_CHIP_RATE_CPS / codelen))); | ||||||
|                             num_of_codes_per_vector_.push_back(1); |                             num_of_codes_per_vector_.push_back(1); | ||||||
|  |  | ||||||
|                             data_bit_duration_ms_.push_back(1e3 / GALILEO_E5A_SYMBOL_RATE_BPS); |                             data_bit_duration_ms_.push_back(1e3 / GALILEO_E5A_SYMBOL_RATE_BPS); | ||||||
|                         } |                         } | ||||||
|                     else |                     else | ||||||
|                         { |                         { | ||||||
|                             samples_per_code_.push_back(round(static_cast<float>(fs_in_) / (GALILEO_E1_CODE_CHIP_RATE_HZ / GALILEO_E1_B_CODE_LENGTH_CHIPS))); |                             samples_per_code_.push_back(round(static_cast<float>(fs_in_) / (GALILEO_E1_CODE_CHIP_RATE_CPS / GALILEO_E1_B_CODE_LENGTH_CHIPS))); | ||||||
|  |  | ||||||
|                             num_of_codes_per_vector_.push_back(static_cast<int>(GALILEO_E1_C_SECONDARY_CODE_LENGTH)); |                             num_of_codes_per_vector_.push_back(static_cast<int>(GALILEO_E1_C_SECONDARY_CODE_LENGTH)); | ||||||
|                             data_bit_duration_ms_.push_back(1e3 / GALILEO_E1_B_SYMBOL_RATE_BPS); |                             data_bit_duration_ms_.push_back(1e3 / GALILEO_E1_B_SYMBOL_RATE_BPS); | ||||||
| @@ -321,7 +321,7 @@ int signal_generator_c::general_work(int noutput_items __attribute__((unused)), | |||||||
|                                     out_idx++; |                                     out_idx++; | ||||||
|                                 } |                                 } | ||||||
|  |  | ||||||
|                             ms_counter_[sat] = (ms_counter_[sat] + static_cast<int>(round(1e3 * GPS_L1_CA_CODE_PERIOD))) % data_bit_duration_ms_[sat]; |                             ms_counter_[sat] = (ms_counter_[sat] + static_cast<int>(round(1e3 * GPS_L1_CA_CODE_PERIOD_S))) % data_bit_duration_ms_[sat]; | ||||||
|                         } |                         } | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
| @@ -354,7 +354,7 @@ int signal_generator_c::general_work(int noutput_items __attribute__((unused)), | |||||||
|                                     out_idx++; |                                     out_idx++; | ||||||
|                                 } |                                 } | ||||||
|  |  | ||||||
|                             ms_counter_[sat] = (ms_counter_[sat] + static_cast<int>(round(1e3 * GLONASS_L1_CA_CODE_PERIOD))) % data_bit_duration_ms_[sat]; |                             ms_counter_[sat] = (ms_counter_[sat] + static_cast<int>(round(1e3 * GLONASS_L1_CA_CODE_PERIOD_S))) % data_bit_duration_ms_[sat]; | ||||||
|                         } |                         } | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
| @@ -381,7 +381,7 @@ int signal_generator_c::general_work(int noutput_items __attribute__((unused)), | |||||||
|                             data_modulation_[sat] = current_data_bit_int_[sat] * (GALILEO_E5A_I_SECONDARY_CODE.at((ms_counter_[sat] + delay_sec_[sat]) % 20) == '0' ? 1 : -1); |                             data_modulation_[sat] = current_data_bit_int_[sat] * (GALILEO_E5A_I_SECONDARY_CODE.at((ms_counter_[sat] + delay_sec_[sat]) % 20) == '0' ? 1 : -1); | ||||||
|                             pilot_modulation_[sat] = (GALILEO_E5A_Q_SECONDARY_CODE[PRN_[sat] - 1].at((ms_counter_[sat] + delay_sec_[sat]) % 100) == '0' ? 1 : -1); |                             pilot_modulation_[sat] = (GALILEO_E5A_Q_SECONDARY_CODE[PRN_[sat] - 1].at((ms_counter_[sat] + delay_sec_[sat]) % 100) == '0' ? 1 : -1); | ||||||
|  |  | ||||||
|                             ms_counter_[sat] = ms_counter_[sat] + static_cast<int>(round(1e3 * GALILEO_E5A_CODE_PERIOD)); |                             ms_counter_[sat] = ms_counter_[sat] + static_cast<int>(round(1e3 * GALILEO_E5A_CODE_PERIOD_S)); | ||||||
|  |  | ||||||
|                             for (k = delay_samples; k < samples_per_code_[sat]; k++) |                             for (k = delay_samples; k < samples_per_code_[sat]; k++) | ||||||
|                                 { |                                 { | ||||||
| @@ -415,7 +415,7 @@ int signal_generator_c::general_work(int noutput_items __attribute__((unused)), | |||||||
|                                             out_idx++; |                                             out_idx++; | ||||||
|                                         } |                                         } | ||||||
|  |  | ||||||
|                                     ms_counter_[sat] = (ms_counter_[sat] + static_cast<int>(round(1e3 * GALILEO_E1_CODE_PERIOD))) % data_bit_duration_ms_[sat]; |                                     ms_counter_[sat] = (ms_counter_[sat] + static_cast<int>(round(1e3 * GALILEO_E1_CODE_PERIOD_S))) % data_bit_duration_ms_[sat]; | ||||||
|                                 } |                                 } | ||||||
|                         } |                         } | ||||||
|                 } |                 } | ||||||
|   | |||||||
| @@ -673,7 +673,7 @@ int galileo_telemetry_decoder_gs::general_work(int noutput_items __attribute__(( | |||||||
|                                 else |                                 else | ||||||
|                                     { |                                     { | ||||||
|                                         // this page has no timing information |                                         // this page has no timing information | ||||||
|                                         d_TOW_at_current_symbol_ms += static_cast<uint32_t>(GALILEO_E1_CODE_PERIOD_MS);  // + GALILEO_INAV_PAGE_PART_SYMBOLS*GALILEO_E1_CODE_PERIOD; |                                         d_TOW_at_current_symbol_ms += static_cast<uint32_t>(GALILEO_E1_CODE_PERIOD_MS);  // + GALILEO_INAV_PAGE_PART_SYMBOLS*GALILEO_E1_CODE_PERIOD_S; | ||||||
|                                     } |                                     } | ||||||
|                             } |                             } | ||||||
|                         break; |                         break; | ||||||
|   | |||||||
| @@ -389,7 +389,7 @@ int glonass_l1_ca_telemetry_decoder_gs::general_work(int noutput_items __attribu | |||||||
|         } |         } | ||||||
|     else  // if there is not a new preamble, we define the TOW of the current symbol |     else  // if there is not a new preamble, we define the TOW of the current symbol | ||||||
|         { |         { | ||||||
|             d_TOW_at_current_symbol = d_TOW_at_current_symbol + GLONASS_L1_CA_CODE_PERIOD; |             d_TOW_at_current_symbol = d_TOW_at_current_symbol + GLONASS_L1_CA_CODE_PERIOD_S; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|     // if (d_flag_frame_sync == true and d_nav.flag_TOW_set==true and d_nav.flag_CRC_test == true) |     // if (d_flag_frame_sync == true and d_nav.flag_TOW_set==true and d_nav.flag_CRC_test == true) | ||||||
|   | |||||||
| @@ -389,7 +389,7 @@ int glonass_l2_ca_telemetry_decoder_gs::general_work(int noutput_items __attribu | |||||||
|         } |         } | ||||||
|     else  // if there is not a new preamble, we define the TOW of the current symbol |     else  // if there is not a new preamble, we define the TOW of the current symbol | ||||||
|         { |         { | ||||||
|             d_TOW_at_current_symbol = d_TOW_at_current_symbol + GLONASS_L2_CA_CODE_PERIOD; |             d_TOW_at_current_symbol = d_TOW_at_current_symbol + GLONASS_L2_CA_CODE_PERIOD_S; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|     // if (d_flag_frame_sync == true and d_nav.flag_TOW_set==true and d_nav.flag_CRC_test == true) |     // if (d_flag_frame_sync == true and d_nav.flag_TOW_set==true and d_nav.flag_CRC_test == true) | ||||||
|   | |||||||
| @@ -224,13 +224,13 @@ int gps_l2c_telemetry_decoder_gs::general_work(int noutput_items __attribute__(( | |||||||
|             // delay by the formulae: |             // delay by the formulae: | ||||||
|             // \code |             // \code | ||||||
|             // symbolTime_ms = msg->tow * 6000 + *pdelay * 20 + (12 * 20); 12 symbols of the encoder's transitory |             // symbolTime_ms = msg->tow * 6000 + *pdelay * 20 + (12 * 20); 12 symbols of the encoder's transitory | ||||||
|             d_TOW_at_current_symbol = static_cast<double>(msg.tow) * 6.0 + static_cast<double>(delay) * GPS_L2_M_PERIOD + 12 * GPS_L2_M_PERIOD; |             d_TOW_at_current_symbol = static_cast<double>(msg.tow) * 6.0 + static_cast<double>(delay) * GPS_L2_M_PERIOD_S + 12 * GPS_L2_M_PERIOD_S; | ||||||
|             // d_TOW_at_current_symbol = floor(d_TOW_at_current_symbol * 1000.0) / 1000.0; |             // d_TOW_at_current_symbol = floor(d_TOW_at_current_symbol * 1000.0) / 1000.0; | ||||||
|             d_flag_valid_word = true; |             d_flag_valid_word = true; | ||||||
|         } |         } | ||||||
|     else |     else | ||||||
|         { |         { | ||||||
|             d_TOW_at_current_symbol += GPS_L2_M_PERIOD; |             d_TOW_at_current_symbol += GPS_L2_M_PERIOD_S; | ||||||
|             if (current_synchro_data.Flag_valid_symbol_output == false) |             if (current_synchro_data.Flag_valid_symbol_output == false) | ||||||
|                 { |                 { | ||||||
|                     d_flag_valid_word = false; |                     d_flag_valid_word = false; | ||||||
|   | |||||||
| @@ -123,7 +123,7 @@ BeidouB1iDllPllTracking::BeidouB1iDllPllTracking( | |||||||
|     std::string default_dump_filename = "./track_ch"; |     std::string default_dump_filename = "./track_ch"; | ||||||
|     std::string dump_filename = configuration->property(role + ".dump_filename", default_dump_filename); |     std::string dump_filename = configuration->property(role + ".dump_filename", default_dump_filename); | ||||||
|     trk_param.dump_filename = dump_filename; |     trk_param.dump_filename = dump_filename; | ||||||
|     int vector_length = std::round(fs_in / (BEIDOU_B1I_CODE_RATE_HZ / BEIDOU_B1I_CODE_LENGTH_CHIPS)); |     int vector_length = std::round(fs_in / (BEIDOU_B1I_CODE_RATE_CPS / BEIDOU_B1I_CODE_LENGTH_CHIPS)); | ||||||
|     trk_param.vector_length = vector_length; |     trk_param.vector_length = vector_length; | ||||||
|     int symbols_extended_correlator = configuration->property(role + ".extend_correlation_symbols", 1); |     int symbols_extended_correlator = configuration->property(role + ".extend_correlation_symbols", 1); | ||||||
|     if (symbols_extended_correlator < 1) |     if (symbols_extended_correlator < 1) | ||||||
|   | |||||||
| @@ -134,7 +134,7 @@ BeidouB3iDllPllTracking::BeidouB3iDllPllTracking( | |||||||
|     trk_param.fll_bw_hz = fll_bw_hz; |     trk_param.fll_bw_hz = fll_bw_hz; | ||||||
|     trk_param.pull_in_time_s = configuration->property(role + ".pull_in_time_s", trk_param.pull_in_time_s); |     trk_param.pull_in_time_s = configuration->property(role + ".pull_in_time_s", trk_param.pull_in_time_s); | ||||||
|  |  | ||||||
|     int vector_length = std::round(static_cast<double>(fs_in) / (BEIDOU_B3I_CODE_RATE_HZ / BEIDOU_B3I_CODE_LENGTH_CHIPS)); |     int vector_length = std::round(static_cast<double>(fs_in) / (BEIDOU_B3I_CODE_RATE_CPS / BEIDOU_B3I_CODE_LENGTH_CHIPS)); | ||||||
|     trk_param.vector_length = vector_length; |     trk_param.vector_length = vector_length; | ||||||
|     int symbols_extended_correlator = configuration->property(role + ".extend_correlation_symbols", 1); |     int symbols_extended_correlator = configuration->property(role + ".extend_correlation_symbols", 1); | ||||||
|     float early_late_space_narrow_chips = configuration->property(role + ".early_late_space_narrow_chips", 0.5); |     float early_late_space_narrow_chips = configuration->property(role + ".early_late_space_narrow_chips", 0.5); | ||||||
|   | |||||||
| @@ -160,7 +160,7 @@ GalileoE1DllPllVemlTracking::GalileoE1DllPllVemlTracking( | |||||||
|         } |         } | ||||||
|     trk_param.track_pilot = track_pilot; |     trk_param.track_pilot = track_pilot; | ||||||
|     trk_param.extend_correlation_symbols = extend_correlation_symbols; |     trk_param.extend_correlation_symbols = extend_correlation_symbols; | ||||||
|     int vector_length = std::round(fs_in / (GALILEO_E1_CODE_CHIP_RATE_HZ / GALILEO_E1_B_CODE_LENGTH_CHIPS)); |     int vector_length = std::round(fs_in / (GALILEO_E1_CODE_CHIP_RATE_CPS / GALILEO_E1_B_CODE_LENGTH_CHIPS)); | ||||||
|     trk_param.vector_length = vector_length; |     trk_param.vector_length = vector_length; | ||||||
|     trk_param.system = 'E'; |     trk_param.system = 'E'; | ||||||
|     std::array<char, 3> sig_{'1', 'B', '\0'}; |     std::array<char, 3> sig_{'1', 'B', '\0'}; | ||||||
|   | |||||||
| @@ -160,7 +160,7 @@ GalileoE1DllPllVemlTrackingFpga::GalileoE1DllPllVemlTrackingFpga( | |||||||
|     trk_param_fpga.track_pilot = track_pilot; |     trk_param_fpga.track_pilot = track_pilot; | ||||||
|     d_track_pilot = track_pilot; |     d_track_pilot = track_pilot; | ||||||
|     trk_param_fpga.extend_correlation_symbols = extend_correlation_symbols; |     trk_param_fpga.extend_correlation_symbols = extend_correlation_symbols; | ||||||
|     int32_t vector_length = std::round(fs_in / (GALILEO_E1_CODE_CHIP_RATE_HZ / GALILEO_E1_B_CODE_LENGTH_CHIPS)); |     int32_t vector_length = std::round(fs_in / (GALILEO_E1_CODE_CHIP_RATE_CPS / GALILEO_E1_B_CODE_LENGTH_CHIPS)); | ||||||
|     trk_param_fpga.vector_length = vector_length; |     trk_param_fpga.vector_length = vector_length; | ||||||
|     trk_param_fpga.system = 'E'; |     trk_param_fpga.system = 'E'; | ||||||
|     std::array<char, 3> sig_{'1', 'B', '\0'}; |     std::array<char, 3> sig_{'1', 'B', '\0'}; | ||||||
|   | |||||||
| @@ -79,7 +79,7 @@ GalileoE1TcpConnectorTracking::GalileoE1TcpConnectorTracking( | |||||||
|     port_ch0 = configuration->property(role + ".port_ch0", 2060); |     port_ch0 = configuration->property(role + ".port_ch0", 2060); | ||||||
|     std::string default_dump_filename = "./track_ch"; |     std::string default_dump_filename = "./track_ch"; | ||||||
|     dump_filename = configuration->property(role + ".dump_filename", default_dump_filename); |     dump_filename = configuration->property(role + ".dump_filename", default_dump_filename); | ||||||
|     vector_length = std::round(fs_in / (GALILEO_E1_CODE_CHIP_RATE_HZ / GALILEO_E1_B_CODE_LENGTH_CHIPS)); |     vector_length = std::round(fs_in / (GALILEO_E1_CODE_CHIP_RATE_CPS / GALILEO_E1_B_CODE_LENGTH_CHIPS)); | ||||||
|  |  | ||||||
|     // ################# MAKE TRACKING GNURadio object ################### |     // ################# MAKE TRACKING GNURadio object ################### | ||||||
|     if (item_type == "gr_complex") |     if (item_type == "gr_complex") | ||||||
|   | |||||||
| @@ -133,7 +133,7 @@ GalileoE5aDllPllTracking::GalileoE5aDllPllTracking( | |||||||
|     trk_param.dll_bw_narrow_hz = dll_bw_narrow_hz; |     trk_param.dll_bw_narrow_hz = dll_bw_narrow_hz; | ||||||
|     float early_late_space_chips = configuration->property(role + ".early_late_space_chips", 0.5); |     float early_late_space_chips = configuration->property(role + ".early_late_space_chips", 0.5); | ||||||
|     trk_param.early_late_space_chips = early_late_space_chips; |     trk_param.early_late_space_chips = early_late_space_chips; | ||||||
|     int vector_length = std::round(fs_in / (GALILEO_E5A_CODE_CHIP_RATE_HZ / GALILEO_E5A_CODE_LENGTH_CHIPS)); |     int vector_length = std::round(fs_in / (GALILEO_E5A_CODE_CHIP_RATE_CPS / GALILEO_E5A_CODE_LENGTH_CHIPS)); | ||||||
|     trk_param.vector_length = vector_length; |     trk_param.vector_length = vector_length; | ||||||
|     int extend_correlation_symbols = configuration->property(role + ".extend_correlation_symbols", 1); |     int extend_correlation_symbols = configuration->property(role + ".extend_correlation_symbols", 1); | ||||||
|     float early_late_space_narrow_chips = configuration->property(role + ".early_late_space_narrow_chips", 0.5); |     float early_late_space_narrow_chips = configuration->property(role + ".early_late_space_narrow_chips", 0.5); | ||||||
|   | |||||||
| @@ -130,7 +130,7 @@ GalileoE5aDllPllTrackingFpga::GalileoE5aDllPllTrackingFpga( | |||||||
|     trk_param_fpga.dll_bw_narrow_hz = dll_bw_narrow_hz; |     trk_param_fpga.dll_bw_narrow_hz = dll_bw_narrow_hz; | ||||||
|     float early_late_space_chips = configuration->property(role + ".early_late_space_chips", 0.5); |     float early_late_space_chips = configuration->property(role + ".early_late_space_chips", 0.5); | ||||||
|     trk_param_fpga.early_late_space_chips = early_late_space_chips; |     trk_param_fpga.early_late_space_chips = early_late_space_chips; | ||||||
|     int32_t vector_length = std::round(fs_in / (GALILEO_E5A_CODE_CHIP_RATE_HZ / GALILEO_E5A_CODE_LENGTH_CHIPS)); |     int32_t vector_length = std::round(fs_in / (GALILEO_E5A_CODE_CHIP_RATE_CPS / GALILEO_E5A_CODE_LENGTH_CHIPS)); | ||||||
|     trk_param_fpga.vector_length = vector_length; |     trk_param_fpga.vector_length = vector_length; | ||||||
|     int32_t extend_correlation_symbols = configuration->property(role + ".extend_correlation_symbols", 1); |     int32_t extend_correlation_symbols = configuration->property(role + ".extend_correlation_symbols", 1); | ||||||
|     float early_late_space_narrow_chips = configuration->property(role + ".early_late_space_narrow_chips", 0.15); |     float early_late_space_narrow_chips = configuration->property(role + ".early_late_space_narrow_chips", 0.15); | ||||||
|   | |||||||
| @@ -82,7 +82,7 @@ GlonassL1CaDllPllCAidTracking::GlonassL1CaDllPllCAidTracking( | |||||||
|     early_late_space_chips = configuration->property(role + ".early_late_space_chips", 0.5); |     early_late_space_chips = configuration->property(role + ".early_late_space_chips", 0.5); | ||||||
|     std::string default_dump_filename = "./track_ch"; |     std::string default_dump_filename = "./track_ch"; | ||||||
|     dump_filename = configuration->property(role + ".dump_filename", default_dump_filename); |     dump_filename = configuration->property(role + ".dump_filename", default_dump_filename); | ||||||
|     vector_length = std::round(fs_in / (GLONASS_L1_CA_CODE_RATE_HZ / GLONASS_L1_CA_CODE_LENGTH_CHIPS)); |     vector_length = std::round(fs_in / (GLONASS_L1_CA_CODE_RATE_CPS / GLONASS_L1_CA_CODE_LENGTH_CHIPS)); | ||||||
|  |  | ||||||
|     // ################# MAKE TRACKING GNURadio object ################### |     // ################# MAKE TRACKING GNURadio object ################### | ||||||
|     if (item_type_ == "gr_complex") |     if (item_type_ == "gr_complex") | ||||||
|   | |||||||
| @@ -75,7 +75,7 @@ GlonassL1CaDllPllTracking::GlonassL1CaDllPllTracking( | |||||||
|     early_late_space_chips = configuration->property(role + ".early_late_space_chips", 0.5); |     early_late_space_chips = configuration->property(role + ".early_late_space_chips", 0.5); | ||||||
|     std::string default_dump_filename = "./track_ch"; |     std::string default_dump_filename = "./track_ch"; | ||||||
|     dump_filename = configuration->property(role + ".dump_filename", default_dump_filename); |     dump_filename = configuration->property(role + ".dump_filename", default_dump_filename); | ||||||
|     vector_length = std::round(fs_in / (GLONASS_L1_CA_CODE_RATE_HZ / GLONASS_L1_CA_CODE_LENGTH_CHIPS)); |     vector_length = std::round(fs_in / (GLONASS_L1_CA_CODE_RATE_CPS / GLONASS_L1_CA_CODE_LENGTH_CHIPS)); | ||||||
|  |  | ||||||
|     // ################# MAKE TRACKING GNURadio object ################### |     // ################# MAKE TRACKING GNURadio object ################### | ||||||
|     if (item_type == "gr_complex") |     if (item_type == "gr_complex") | ||||||
|   | |||||||
| @@ -80,7 +80,7 @@ GlonassL2CaDllPllCAidTracking::GlonassL2CaDllPllCAidTracking( | |||||||
|     early_late_space_chips = configuration->property(role + ".early_late_space_chips", 0.5); |     early_late_space_chips = configuration->property(role + ".early_late_space_chips", 0.5); | ||||||
|     std::string default_dump_filename = "./track_ch"; |     std::string default_dump_filename = "./track_ch"; | ||||||
|     dump_filename = configuration->property(role + ".dump_filename", default_dump_filename); |     dump_filename = configuration->property(role + ".dump_filename", default_dump_filename); | ||||||
|     vector_length = std::round(fs_in / (GLONASS_L2_CA_CODE_RATE_HZ / GLONASS_L2_CA_CODE_LENGTH_CHIPS)); |     vector_length = std::round(fs_in / (GLONASS_L2_CA_CODE_RATE_CPS / GLONASS_L2_CA_CODE_LENGTH_CHIPS)); | ||||||
|  |  | ||||||
|     // ################# MAKE TRACKING GNURadio object ################### |     // ################# MAKE TRACKING GNURadio object ################### | ||||||
|     if (item_type_ == "gr_complex") |     if (item_type_ == "gr_complex") | ||||||
|   | |||||||
| @@ -73,7 +73,7 @@ GlonassL2CaDllPllTracking::GlonassL2CaDllPllTracking( | |||||||
|     early_late_space_chips = configuration->property(role + ".early_late_space_chips", 0.5); |     early_late_space_chips = configuration->property(role + ".early_late_space_chips", 0.5); | ||||||
|     std::string default_dump_filename = "./track_ch"; |     std::string default_dump_filename = "./track_ch"; | ||||||
|     dump_filename = configuration->property(role + ".dump_filename", default_dump_filename); |     dump_filename = configuration->property(role + ".dump_filename", default_dump_filename); | ||||||
|     vector_length = std::round(fs_in / (GLONASS_L2_CA_CODE_RATE_HZ / GLONASS_L2_CA_CODE_LENGTH_CHIPS)); |     vector_length = std::round(fs_in / (GLONASS_L2_CA_CODE_RATE_CPS / GLONASS_L2_CA_CODE_LENGTH_CHIPS)); | ||||||
|  |  | ||||||
|     // ################# MAKE TRACKING GNURadio object ################### |     // ################# MAKE TRACKING GNURadio object ################### | ||||||
|     if (item_type == "gr_complex") |     if (item_type == "gr_complex") | ||||||
|   | |||||||
| @@ -137,7 +137,7 @@ GpsL1CaDllPllTracking::GpsL1CaDllPllTracking( | |||||||
|     trk_param.early_late_space_chips = early_late_space_chips; |     trk_param.early_late_space_chips = early_late_space_chips; | ||||||
|     float early_late_space_narrow_chips = configuration->property(role + ".early_late_space_narrow_chips", 0.5); |     float early_late_space_narrow_chips = configuration->property(role + ".early_late_space_narrow_chips", 0.5); | ||||||
|     trk_param.early_late_space_narrow_chips = early_late_space_narrow_chips; |     trk_param.early_late_space_narrow_chips = early_late_space_narrow_chips; | ||||||
|     int vector_length = std::round(fs_in / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS)); |     int vector_length = std::round(fs_in / (GPS_L1_CA_CODE_RATE_CPS / GPS_L1_CA_CODE_LENGTH_CHIPS)); | ||||||
|     trk_param.vector_length = vector_length; |     trk_param.vector_length = vector_length; | ||||||
|     int symbols_extended_correlator = configuration->property(role + ".extend_correlation_symbols", 1); |     int symbols_extended_correlator = configuration->property(role + ".extend_correlation_symbols", 1); | ||||||
|     if (symbols_extended_correlator < 1) |     if (symbols_extended_correlator < 1) | ||||||
|   | |||||||
| @@ -137,7 +137,7 @@ GpsL1CaDllPllTrackingFpga::GpsL1CaDllPllTrackingFpga( | |||||||
|     trk_param_fpga.early_late_space_chips = early_late_space_chips; |     trk_param_fpga.early_late_space_chips = early_late_space_chips; | ||||||
|     float early_late_space_narrow_chips = configuration->property(role + ".early_late_space_narrow_chips", 0.5); |     float early_late_space_narrow_chips = configuration->property(role + ".early_late_space_narrow_chips", 0.5); | ||||||
|     trk_param_fpga.early_late_space_narrow_chips = early_late_space_narrow_chips; |     trk_param_fpga.early_late_space_narrow_chips = early_late_space_narrow_chips; | ||||||
|     int32_t vector_length = std::round(fs_in / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS)); |     int32_t vector_length = std::round(fs_in / (GPS_L1_CA_CODE_RATE_CPS / GPS_L1_CA_CODE_LENGTH_CHIPS)); | ||||||
|     trk_param_fpga.vector_length = vector_length; |     trk_param_fpga.vector_length = vector_length; | ||||||
|     int32_t symbols_extended_correlator = configuration->property(role + ".extend_correlation_symbols", 1); |     int32_t symbols_extended_correlator = configuration->property(role + ".extend_correlation_symbols", 1); | ||||||
|     if (symbols_extended_correlator < 1) |     if (symbols_extended_correlator < 1) | ||||||
|   | |||||||
| @@ -69,7 +69,7 @@ GpsL1CaDllPllTrackingGPU::GpsL1CaDllPllTrackingGPU( | |||||||
|     early_late_space_chips = configuration->property(role + ".early_late_space_chips", 0.5); |     early_late_space_chips = configuration->property(role + ".early_late_space_chips", 0.5); | ||||||
|     std::string default_dump_filename = "./track_ch"; |     std::string default_dump_filename = "./track_ch"; | ||||||
|     dump_filename = configuration->property(role + ".dump_filename", default_dump_filename); |     dump_filename = configuration->property(role + ".dump_filename", default_dump_filename); | ||||||
|     vector_length = std::round(fs_in / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS)); |     vector_length = std::round(fs_in / (GPS_L1_CA_CODE_RATE_CPS / GPS_L1_CA_CODE_LENGTH_CHIPS)); | ||||||
|  |  | ||||||
|     // ################# MAKE TRACKING GNURadio object ################### |     // ################# MAKE TRACKING GNURadio object ################### | ||||||
|     if (item_type.compare("gr_complex") == 0) |     if (item_type.compare("gr_complex") == 0) | ||||||
|   | |||||||
| @@ -81,7 +81,7 @@ GpsL1CaKfTracking::GpsL1CaKfTracking( | |||||||
|     early_late_space_chips = configuration->property(role + ".early_late_space_chips", 0.5); |     early_late_space_chips = configuration->property(role + ".early_late_space_chips", 0.5); | ||||||
|     std::string default_dump_filename = "./track_ch"; |     std::string default_dump_filename = "./track_ch"; | ||||||
|     dump_filename = configuration->property(role + ".dump_filename", default_dump_filename); |     dump_filename = configuration->property(role + ".dump_filename", default_dump_filename); | ||||||
|     vector_length = std::round(fs_in / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS)); |     vector_length = std::round(fs_in / (GPS_L1_CA_CODE_RATE_CPS / GPS_L1_CA_CODE_LENGTH_CHIPS)); | ||||||
|  |  | ||||||
|     bce_run = configuration->property(role + ".bce_run", false); |     bce_run = configuration->property(role + ".bce_run", false); | ||||||
|     bce_ptrans = configuration->property(role + ".p_transient", 0); |     bce_ptrans = configuration->property(role + ".p_transient", 0); | ||||||
|   | |||||||
| @@ -65,7 +65,7 @@ GpsL1CaTcpConnectorTracking::GpsL1CaTcpConnectorTracking( | |||||||
|     port_ch0 = configuration->property(role + ".port_ch0", 2060); |     port_ch0 = configuration->property(role + ".port_ch0", 2060); | ||||||
|     std::string default_dump_filename = "./track_ch"; |     std::string default_dump_filename = "./track_ch"; | ||||||
|     dump_filename = configuration->property(role + ".dump_filename", default_dump_filename); |     dump_filename = configuration->property(role + ".dump_filename", default_dump_filename); | ||||||
|     vector_length = std::round(fs_in / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS)); |     vector_length = std::round(fs_in / (GPS_L1_CA_CODE_RATE_CPS / GPS_L1_CA_CODE_LENGTH_CHIPS)); | ||||||
|  |  | ||||||
|     // ################# MAKE TRACKING GNURadio object ################### |     // ################# MAKE TRACKING GNURadio object ################### | ||||||
|     if (item_type == "gr_complex") |     if (item_type == "gr_complex") | ||||||
|   | |||||||
| @@ -121,7 +121,7 @@ GpsL2MDllPllTracking::GpsL2MDllPllTracking( | |||||||
|     trk_param.fll_bw_hz = fll_bw_hz; |     trk_param.fll_bw_hz = fll_bw_hz; | ||||||
|     trk_param.pull_in_time_s = configuration->property(role + ".pull_in_time_s", trk_param.pull_in_time_s); |     trk_param.pull_in_time_s = configuration->property(role + ".pull_in_time_s", trk_param.pull_in_time_s); | ||||||
|  |  | ||||||
|     int vector_length = std::round(static_cast<double>(fs_in) / (static_cast<double>(GPS_L2_M_CODE_RATE_HZ) / static_cast<double>(GPS_L2_M_CODE_LENGTH_CHIPS))); |     int vector_length = std::round(static_cast<double>(fs_in) / (static_cast<double>(GPS_L2_M_CODE_RATE_CPS) / static_cast<double>(GPS_L2_M_CODE_LENGTH_CHIPS))); | ||||||
|     trk_param.vector_length = vector_length; |     trk_param.vector_length = vector_length; | ||||||
|     int symbols_extended_correlator = configuration->property(role + ".extend_correlation_symbols", 1); |     int symbols_extended_correlator = configuration->property(role + ".extend_correlation_symbols", 1); | ||||||
|     if (symbols_extended_correlator != 1) |     if (symbols_extended_correlator != 1) | ||||||
|   | |||||||
| @@ -76,7 +76,7 @@ GpsL2MDllPllTrackingFpga::GpsL2MDllPllTrackingFpga( | |||||||
|     float early_late_space_chips = configuration->property(role + ".early_late_space_chips", 0.5); |     float early_late_space_chips = configuration->property(role + ".early_late_space_chips", 0.5); | ||||||
|     trk_param_fpga.early_late_space_chips = early_late_space_chips; |     trk_param_fpga.early_late_space_chips = early_late_space_chips; | ||||||
|     trk_param_fpga.early_late_space_narrow_chips = 0.0; |     trk_param_fpga.early_late_space_narrow_chips = 0.0; | ||||||
|     int vector_length = std::round(static_cast<double>(fs_in) / (static_cast<double>(GPS_L2_M_CODE_RATE_HZ) / static_cast<double>(GPS_L2_M_CODE_LENGTH_CHIPS))); |     int vector_length = std::round(static_cast<double>(fs_in) / (static_cast<double>(GPS_L2_M_CODE_RATE_CPS) / static_cast<double>(GPS_L2_M_CODE_LENGTH_CHIPS))); | ||||||
|     trk_param_fpga.vector_length = vector_length; |     trk_param_fpga.vector_length = vector_length; | ||||||
|     int symbols_extended_correlator = configuration->property(role + ".extend_correlation_symbols", 1); |     int symbols_extended_correlator = configuration->property(role + ".extend_correlation_symbols", 1); | ||||||
|     if (symbols_extended_correlator != 1) |     if (symbols_extended_correlator != 1) | ||||||
|   | |||||||
| @@ -134,7 +134,7 @@ GpsL5DllPllTracking::GpsL5DllPllTracking( | |||||||
|     trk_param.fll_bw_hz = fll_bw_hz; |     trk_param.fll_bw_hz = fll_bw_hz; | ||||||
|     trk_param.pull_in_time_s = configuration->property(role + ".pull_in_time_s", trk_param.pull_in_time_s); |     trk_param.pull_in_time_s = configuration->property(role + ".pull_in_time_s", trk_param.pull_in_time_s); | ||||||
|  |  | ||||||
|     int vector_length = std::round(static_cast<double>(fs_in) / (static_cast<double>(GPS_L5I_CODE_RATE_HZ) / static_cast<double>(GPS_L5I_CODE_LENGTH_CHIPS))); |     int vector_length = std::round(static_cast<double>(fs_in) / (static_cast<double>(GPS_L5I_CODE_RATE_CPS) / static_cast<double>(GPS_L5I_CODE_LENGTH_CHIPS))); | ||||||
|     trk_param.vector_length = vector_length; |     trk_param.vector_length = vector_length; | ||||||
|     int extend_correlation_symbols = configuration->property(role + ".extend_correlation_symbols", 1); |     int extend_correlation_symbols = configuration->property(role + ".extend_correlation_symbols", 1); | ||||||
|     float early_late_space_narrow_chips = configuration->property(role + ".early_late_space_narrow_chips", 0.5); |     float early_late_space_narrow_chips = configuration->property(role + ".early_late_space_narrow_chips", 0.5); | ||||||
|   | |||||||
| @@ -137,7 +137,7 @@ GpsL5DllPllTrackingFpga::GpsL5DllPllTrackingFpga( | |||||||
|     float pull_in_time_s = configuration->property(role + ".pull_in_time_s", 2.0); |     float pull_in_time_s = configuration->property(role + ".pull_in_time_s", 2.0); | ||||||
|     trk_param_fpga.pull_in_time_s = pull_in_time_s; |     trk_param_fpga.pull_in_time_s = pull_in_time_s; | ||||||
|  |  | ||||||
|     int32_t vector_length = std::round(static_cast<double>(fs_in) / (static_cast<double>(GPS_L5I_CODE_RATE_HZ) / static_cast<double>(GPS_L5I_CODE_LENGTH_CHIPS))); |     int32_t vector_length = std::round(static_cast<double>(fs_in) / (static_cast<double>(GPS_L5I_CODE_RATE_CPS) / static_cast<double>(GPS_L5I_CODE_LENGTH_CHIPS))); | ||||||
|     trk_param_fpga.vector_length = vector_length; |     trk_param_fpga.vector_length = vector_length; | ||||||
|     int32_t extend_correlation_symbols = configuration->property(role + ".extend_correlation_symbols", 1); |     int32_t extend_correlation_symbols = configuration->property(role + ".extend_correlation_symbols", 1); | ||||||
|     float early_late_space_narrow_chips = configuration->property(role + ".early_late_space_narrow_chips", 0.15); |     float early_late_space_narrow_chips = configuration->property(role + ".early_late_space_narrow_chips", 0.15); | ||||||
|   | |||||||
| @@ -135,8 +135,8 @@ dll_pll_veml_tracking::dll_pll_veml_tracking(const Dll_Pll_Conf &conf_) : gr::bl | |||||||
|             if (signal_type == "1C") |             if (signal_type == "1C") | ||||||
|                 { |                 { | ||||||
|                     d_signal_carrier_freq = GPS_L1_FREQ_HZ; |                     d_signal_carrier_freq = GPS_L1_FREQ_HZ; | ||||||
|                     d_code_period = GPS_L1_CA_CODE_PERIOD; |                     d_code_period = GPS_L1_CA_CODE_PERIOD_S; | ||||||
|                     d_code_chip_rate = GPS_L1_CA_CODE_RATE_HZ; |                     d_code_chip_rate = GPS_L1_CA_CODE_RATE_CPS; | ||||||
|                     d_correlation_length_ms = 1; |                     d_correlation_length_ms = 1; | ||||||
|                     d_code_samples_per_chip = 1; |                     d_code_samples_per_chip = 1; | ||||||
|                     d_code_length_chips = static_cast<uint32_t>(GPS_L1_CA_CODE_LENGTH_CHIPS); |                     d_code_length_chips = static_cast<uint32_t>(GPS_L1_CA_CODE_LENGTH_CHIPS); | ||||||
| @@ -152,8 +152,8 @@ dll_pll_veml_tracking::dll_pll_veml_tracking(const Dll_Pll_Conf &conf_) : gr::bl | |||||||
|             else if (signal_type == "2S") |             else if (signal_type == "2S") | ||||||
|                 { |                 { | ||||||
|                     d_signal_carrier_freq = GPS_L2_FREQ_HZ; |                     d_signal_carrier_freq = GPS_L2_FREQ_HZ; | ||||||
|                     d_code_period = GPS_L2_M_PERIOD; |                     d_code_period = GPS_L2_M_PERIOD_S; | ||||||
|                     d_code_chip_rate = GPS_L2_M_CODE_RATE_HZ; |                     d_code_chip_rate = GPS_L2_M_CODE_RATE_CPS; | ||||||
|                     d_code_length_chips = static_cast<uint32_t>(GPS_L2_M_CODE_LENGTH_CHIPS); |                     d_code_length_chips = static_cast<uint32_t>(GPS_L2_M_CODE_LENGTH_CHIPS); | ||||||
|                     // GPS L2C has 1 trk symbol (20 ms) per tlm bit, no symbol integration required |                     // GPS L2C has 1 trk symbol (20 ms) per tlm bit, no symbol integration required | ||||||
|                     d_symbols_per_bit = GPS_L2_SAMPLES_PER_SYMBOL; |                     d_symbols_per_bit = GPS_L2_SAMPLES_PER_SYMBOL; | ||||||
| @@ -166,8 +166,8 @@ dll_pll_veml_tracking::dll_pll_veml_tracking(const Dll_Pll_Conf &conf_) : gr::bl | |||||||
|             else if (signal_type == "L5") |             else if (signal_type == "L5") | ||||||
|                 { |                 { | ||||||
|                     d_signal_carrier_freq = GPS_L5_FREQ_HZ; |                     d_signal_carrier_freq = GPS_L5_FREQ_HZ; | ||||||
|                     d_code_period = GPS_L5I_PERIOD; |                     d_code_period = GPS_L5I_PERIOD_S; | ||||||
|                     d_code_chip_rate = GPS_L5I_CODE_RATE_HZ; |                     d_code_chip_rate = GPS_L5I_CODE_RATE_CPS; | ||||||
|                     // symbol integration: 10 trk symbols (10 ms) = 1 tlm bit |                     // symbol integration: 10 trk symbols (10 ms) = 1 tlm bit | ||||||
|                     d_symbols_per_bit = GPS_L5_SAMPLES_PER_SYMBOL; |                     d_symbols_per_bit = GPS_L5_SAMPLES_PER_SYMBOL; | ||||||
|                     d_correlation_length_ms = 1; |                     d_correlation_length_ms = 1; | ||||||
| @@ -213,8 +213,8 @@ dll_pll_veml_tracking::dll_pll_veml_tracking(const Dll_Pll_Conf &conf_) : gr::bl | |||||||
|             if (signal_type == "1B") |             if (signal_type == "1B") | ||||||
|                 { |                 { | ||||||
|                     d_signal_carrier_freq = GALILEO_E1_FREQ_HZ; |                     d_signal_carrier_freq = GALILEO_E1_FREQ_HZ; | ||||||
|                     d_code_period = GALILEO_E1_CODE_PERIOD; |                     d_code_period = GALILEO_E1_CODE_PERIOD_S; | ||||||
|                     d_code_chip_rate = GALILEO_E1_CODE_CHIP_RATE_HZ; |                     d_code_chip_rate = GALILEO_E1_CODE_CHIP_RATE_CPS; | ||||||
|                     d_code_length_chips = static_cast<uint32_t>(GALILEO_E1_B_CODE_LENGTH_CHIPS); |                     d_code_length_chips = static_cast<uint32_t>(GALILEO_E1_B_CODE_LENGTH_CHIPS); | ||||||
|                     // Galileo E1b has 1 trk symbol (4 ms) per tlm bit, no symbol integration required |                     // Galileo E1b has 1 trk symbol (4 ms) per tlm bit, no symbol integration required | ||||||
|                     d_symbols_per_bit = 1; |                     d_symbols_per_bit = 1; | ||||||
| @@ -238,8 +238,8 @@ dll_pll_veml_tracking::dll_pll_veml_tracking(const Dll_Pll_Conf &conf_) : gr::bl | |||||||
|             else if (signal_type == "5X") |             else if (signal_type == "5X") | ||||||
|                 { |                 { | ||||||
|                     d_signal_carrier_freq = GALILEO_E5A_FREQ_HZ; |                     d_signal_carrier_freq = GALILEO_E5A_FREQ_HZ; | ||||||
|                     d_code_period = GALILEO_E5A_CODE_PERIOD; |                     d_code_period = GALILEO_E5A_CODE_PERIOD_S; | ||||||
|                     d_code_chip_rate = GALILEO_E5A_CODE_CHIP_RATE_HZ; |                     d_code_chip_rate = GALILEO_E5A_CODE_CHIP_RATE_CPS; | ||||||
|                     d_symbols_per_bit = 20; |                     d_symbols_per_bit = 20; | ||||||
|                     d_correlation_length_ms = 1; |                     d_correlation_length_ms = 1; | ||||||
|                     d_code_samples_per_chip = 1; |                     d_code_samples_per_chip = 1; | ||||||
| @@ -282,8 +282,8 @@ dll_pll_veml_tracking::dll_pll_veml_tracking(const Dll_Pll_Conf &conf_) : gr::bl | |||||||
|                 { |                 { | ||||||
|                     // GEO Satellites use different secondary code |                     // GEO Satellites use different secondary code | ||||||
|                     d_signal_carrier_freq = BEIDOU_B1I_FREQ_HZ; |                     d_signal_carrier_freq = BEIDOU_B1I_FREQ_HZ; | ||||||
|                     d_code_period = BEIDOU_B1I_CODE_PERIOD; |                     d_code_period = BEIDOU_B1I_CODE_PERIOD_S; | ||||||
|                     d_code_chip_rate = BEIDOU_B1I_CODE_RATE_HZ; |                     d_code_chip_rate = BEIDOU_B1I_CODE_RATE_CPS; | ||||||
|                     d_code_length_chips = static_cast<uint32_t>(BEIDOU_B1I_CODE_LENGTH_CHIPS); |                     d_code_length_chips = static_cast<uint32_t>(BEIDOU_B1I_CODE_LENGTH_CHIPS); | ||||||
|                     d_symbols_per_bit = BEIDOU_B1I_TELEMETRY_SYMBOLS_PER_BIT;  // todo: enable after fixing beidou symbol synchronization |                     d_symbols_per_bit = BEIDOU_B1I_TELEMETRY_SYMBOLS_PER_BIT;  // todo: enable after fixing beidou symbol synchronization | ||||||
|                     d_correlation_length_ms = 1; |                     d_correlation_length_ms = 1; | ||||||
| @@ -300,8 +300,8 @@ dll_pll_veml_tracking::dll_pll_veml_tracking(const Dll_Pll_Conf &conf_) : gr::bl | |||||||
|                 { |                 { | ||||||
|                     // GEO Satellites use different secondary code |                     // GEO Satellites use different secondary code | ||||||
|                     d_signal_carrier_freq = BEIDOU_B3I_FREQ_HZ; |                     d_signal_carrier_freq = BEIDOU_B3I_FREQ_HZ; | ||||||
|                     d_code_period = BEIDOU_B3I_CODE_PERIOD; |                     d_code_period = BEIDOU_B3I_CODE_PERIOD_S; | ||||||
|                     d_code_chip_rate = BEIDOU_B3I_CODE_RATE_HZ; |                     d_code_chip_rate = BEIDOU_B3I_CODE_RATE_CPS; | ||||||
|                     d_code_length_chips = static_cast<uint32_t>(BEIDOU_B3I_CODE_LENGTH_CHIPS); |                     d_code_length_chips = static_cast<uint32_t>(BEIDOU_B3I_CODE_LENGTH_CHIPS); | ||||||
|                     d_symbols_per_bit = BEIDOU_B3I_TELEMETRY_SYMBOLS_PER_BIT;  // todo: enable after fixing beidou symbol synchronization |                     d_symbols_per_bit = BEIDOU_B3I_TELEMETRY_SYMBOLS_PER_BIT;  // todo: enable after fixing beidou symbol synchronization | ||||||
|                     d_correlation_length_ms = 1; |                     d_correlation_length_ms = 1; | ||||||
|   | |||||||
| @@ -133,8 +133,8 @@ dll_pll_veml_tracking_fpga::dll_pll_veml_tracking_fpga(const Dll_Pll_Conf_Fpga & | |||||||
|             if (signal_type == "1C") |             if (signal_type == "1C") | ||||||
|                 { |                 { | ||||||
|                     d_signal_carrier_freq = GPS_L1_FREQ_HZ; |                     d_signal_carrier_freq = GPS_L1_FREQ_HZ; | ||||||
|                     d_code_period = GPS_L1_CA_CODE_PERIOD; |                     d_code_period = GPS_L1_CA_CODE_PERIOD_S; | ||||||
|                     d_code_chip_rate = GPS_L1_CA_CODE_RATE_HZ; |                     d_code_chip_rate = GPS_L1_CA_CODE_RATE_CPS; | ||||||
|                     d_correlation_length_ms = 1; |                     d_correlation_length_ms = 1; | ||||||
|                     // GPS L1 C/A does not have pilot component nor secondary code |                     // GPS L1 C/A does not have pilot component nor secondary code | ||||||
|                     d_secondary = false; |                     d_secondary = false; | ||||||
| @@ -148,8 +148,8 @@ dll_pll_veml_tracking_fpga::dll_pll_veml_tracking_fpga(const Dll_Pll_Conf_Fpga & | |||||||
|             else if (signal_type == "2S") |             else if (signal_type == "2S") | ||||||
|                 { |                 { | ||||||
|                     d_signal_carrier_freq = GPS_L2_FREQ_HZ; |                     d_signal_carrier_freq = GPS_L2_FREQ_HZ; | ||||||
|                     d_code_period = GPS_L2_M_PERIOD; |                     d_code_period = GPS_L2_M_PERIOD_S; | ||||||
|                     d_code_chip_rate = GPS_L2_M_CODE_RATE_HZ; |                     d_code_chip_rate = GPS_L2_M_CODE_RATE_CPS; | ||||||
|                     // GPS L2C has 1 trk symbol (20 ms) per tlm bit, no symbol integration required |                     // GPS L2C has 1 trk symbol (20 ms) per tlm bit, no symbol integration required | ||||||
|                     d_symbols_per_bit = GPS_L2_SAMPLES_PER_SYMBOL; |                     d_symbols_per_bit = GPS_L2_SAMPLES_PER_SYMBOL; | ||||||
|                     d_correlation_length_ms = 20; |                     d_correlation_length_ms = 20; | ||||||
| @@ -160,8 +160,8 @@ dll_pll_veml_tracking_fpga::dll_pll_veml_tracking_fpga(const Dll_Pll_Conf_Fpga & | |||||||
|             else if (signal_type == "L5") |             else if (signal_type == "L5") | ||||||
|                 { |                 { | ||||||
|                     d_signal_carrier_freq = GPS_L5_FREQ_HZ; |                     d_signal_carrier_freq = GPS_L5_FREQ_HZ; | ||||||
|                     d_code_period = GPS_L5I_PERIOD; |                     d_code_period = GPS_L5I_PERIOD_S; | ||||||
|                     d_code_chip_rate = GPS_L5I_CODE_RATE_HZ; |                     d_code_chip_rate = GPS_L5I_CODE_RATE_CPS; | ||||||
|                     // symbol integration: 10 trk symbols (10 ms) = 1 tlm bit |                     // symbol integration: 10 trk symbols (10 ms) = 1 tlm bit | ||||||
|                     d_symbols_per_bit = GPS_L5_SAMPLES_PER_SYMBOL; |                     d_symbols_per_bit = GPS_L5_SAMPLES_PER_SYMBOL; | ||||||
|                     d_correlation_length_ms = 1; |                     d_correlation_length_ms = 1; | ||||||
| @@ -210,8 +210,8 @@ dll_pll_veml_tracking_fpga::dll_pll_veml_tracking_fpga(const Dll_Pll_Conf_Fpga & | |||||||
|             if (signal_type == "1B") |             if (signal_type == "1B") | ||||||
|                 { |                 { | ||||||
|                     d_signal_carrier_freq = GALILEO_E1_FREQ_HZ; |                     d_signal_carrier_freq = GALILEO_E1_FREQ_HZ; | ||||||
|                     d_code_period = GALILEO_E1_CODE_PERIOD; |                     d_code_period = GALILEO_E1_CODE_PERIOD_S; | ||||||
|                     d_code_chip_rate = GALILEO_E1_CODE_CHIP_RATE_HZ; |                     d_code_chip_rate = GALILEO_E1_CODE_CHIP_RATE_CPS; | ||||||
|                     // Galileo E1b has 1 trk symbol (4 ms) per tlm bit, no symbol integration required |                     // Galileo E1b has 1 trk symbol (4 ms) per tlm bit, no symbol integration required | ||||||
|                     d_symbols_per_bit = 1; |                     d_symbols_per_bit = 1; | ||||||
|                     d_correlation_length_ms = 4; |                     d_correlation_length_ms = 4; | ||||||
| @@ -233,8 +233,8 @@ dll_pll_veml_tracking_fpga::dll_pll_veml_tracking_fpga(const Dll_Pll_Conf_Fpga & | |||||||
|             else if (signal_type == "5X") |             else if (signal_type == "5X") | ||||||
|                 { |                 { | ||||||
|                     d_signal_carrier_freq = GALILEO_E5A_FREQ_HZ; |                     d_signal_carrier_freq = GALILEO_E5A_FREQ_HZ; | ||||||
|                     d_code_period = GALILEO_E5A_CODE_PERIOD; |                     d_code_period = GALILEO_E5A_CODE_PERIOD_S; | ||||||
|                     d_code_chip_rate = GALILEO_E5A_CODE_CHIP_RATE_HZ; |                     d_code_chip_rate = GALILEO_E5A_CODE_CHIP_RATE_CPS; | ||||||
|                     d_symbols_per_bit = 20; |                     d_symbols_per_bit = 20; | ||||||
|                     d_correlation_length_ms = 1; |                     d_correlation_length_ms = 1; | ||||||
|                     d_secondary = true; |                     d_secondary = true; | ||||||
|   | |||||||
| @@ -146,7 +146,7 @@ Galileo_E1_Tcp_Connector_Tracking_cc::Galileo_E1_Tcp_Connector_Tracking_cc( | |||||||
|  |  | ||||||
|     // --- Perform initializations ------------------------------ |     // --- Perform initializations ------------------------------ | ||||||
|     // define initial code frequency basis of NCO |     // define initial code frequency basis of NCO | ||||||
|     d_code_freq_chips = GALILEO_E1_CODE_CHIP_RATE_HZ; |     d_code_freq_chips = GALILEO_E1_CODE_CHIP_RATE_CPS; | ||||||
|     // define residual code phase (in chips) |     // define residual code phase (in chips) | ||||||
|     d_rem_code_phase_samples = 0.0; |     d_rem_code_phase_samples = 0.0; | ||||||
|     // define residual carrier phase |     // define residual carrier phase | ||||||
| @@ -196,7 +196,7 @@ void Galileo_E1_Tcp_Connector_Tracking_cc::start_tracking() | |||||||
|         Signal_, |         Signal_, | ||||||
|         false, |         false, | ||||||
|         d_acquisition_gnss_synchro->PRN, |         d_acquisition_gnss_synchro->PRN, | ||||||
|         2 * GALILEO_E1_CODE_CHIP_RATE_HZ, |         2 * GALILEO_E1_CODE_CHIP_RATE_CPS, | ||||||
|         0); |         0); | ||||||
|  |  | ||||||
|     multicorrelator_cpu.set_local_code_and_taps(static_cast<int32_t>(2 * GALILEO_E1_B_CODE_LENGTH_CHIPS), d_ca_code, d_local_code_shift_chips); |     multicorrelator_cpu.set_local_code_and_taps(static_cast<int32_t>(2 * GALILEO_E1_B_CODE_LENGTH_CHIPS), d_ca_code, d_local_code_shift_chips); | ||||||
| @@ -373,11 +373,11 @@ int Galileo_E1_Tcp_Connector_Tracking_cc::general_work(int noutput_items __attri | |||||||
|             // New carrier Doppler frequency estimation |             // New carrier Doppler frequency estimation | ||||||
|             d_carrier_doppler_hz = d_acq_carrier_doppler_hz + carr_error_filt_hz; |             d_carrier_doppler_hz = d_acq_carrier_doppler_hz + carr_error_filt_hz; | ||||||
|             // New code Doppler frequency estimation |             // New code Doppler frequency estimation | ||||||
|             d_code_freq_chips = GALILEO_E1_CODE_CHIP_RATE_HZ + ((d_carrier_doppler_hz * GALILEO_E1_CODE_CHIP_RATE_HZ) / GALILEO_E1_FREQ_HZ); |             d_code_freq_chips = GALILEO_E1_CODE_CHIP_RATE_CPS + ((d_carrier_doppler_hz * GALILEO_E1_CODE_CHIP_RATE_CPS) / GALILEO_E1_FREQ_HZ); | ||||||
|             // carrier phase accumulator for (K) doppler estimation |             // carrier phase accumulator for (K) doppler estimation | ||||||
|             d_acc_carrier_phase_rad -= GPS_TWO_PI * d_carrier_doppler_hz * GALILEO_E1_CODE_PERIOD; |             d_acc_carrier_phase_rad -= GPS_TWO_PI * d_carrier_doppler_hz * GALILEO_E1_CODE_PERIOD_S; | ||||||
|             // remnant carrier phase to prevent overflow in the code NCO |             // remnant carrier phase to prevent overflow in the code NCO | ||||||
|             d_rem_carr_phase_rad = d_rem_carr_phase_rad + GPS_TWO_PI * d_carrier_doppler_hz * GALILEO_E1_CODE_PERIOD; |             d_rem_carr_phase_rad = d_rem_carr_phase_rad + GPS_TWO_PI * d_carrier_doppler_hz * GALILEO_E1_CODE_PERIOD_S; | ||||||
|             d_rem_carr_phase_rad = fmod(d_rem_carr_phase_rad, GPS_TWO_PI); |             d_rem_carr_phase_rad = fmod(d_rem_carr_phase_rad, GPS_TWO_PI); | ||||||
|  |  | ||||||
|             // ################## DLL ########################################################## |             // ################## DLL ########################################################## | ||||||
| @@ -385,7 +385,7 @@ int Galileo_E1_Tcp_Connector_Tracking_cc::general_work(int noutput_items __attri | |||||||
|             code_error_filt_chips = tcp_data.proc_pack_code_error; |             code_error_filt_chips = tcp_data.proc_pack_code_error; | ||||||
|             // Code phase accumulator |             // Code phase accumulator | ||||||
|             float code_error_filt_secs; |             float code_error_filt_secs; | ||||||
|             code_error_filt_secs = (GALILEO_E1_CODE_PERIOD * code_error_filt_chips) / GALILEO_E1_CODE_CHIP_RATE_HZ;  // [seconds] |             code_error_filt_secs = (GALILEO_E1_CODE_PERIOD_S * code_error_filt_chips) / GALILEO_E1_CODE_CHIP_RATE_CPS;  // [seconds] | ||||||
|             d_acc_code_phase_secs = d_acc_code_phase_secs + code_error_filt_secs; |             d_acc_code_phase_secs = d_acc_code_phase_secs + code_error_filt_secs; | ||||||
|  |  | ||||||
|             // ################## CARRIER AND CODE NCO BUFFER ALIGNMENT ####################### |             // ################## CARRIER AND CODE NCO BUFFER ALIGNMENT ####################### | ||||||
| @@ -414,7 +414,7 @@ int Galileo_E1_Tcp_Connector_Tracking_cc::general_work(int noutput_items __attri | |||||||
|                     d_cn0_estimation_counter = 0; |                     d_cn0_estimation_counter = 0; | ||||||
|  |  | ||||||
|                     // Code lock indicator |                     // Code lock indicator | ||||||
|                     d_CN0_SNV_dB_Hz = cn0_svn_estimator(d_Prompt_buffer.data(), FLAGS_cn0_samples, GALILEO_E1_CODE_PERIOD); |                     d_CN0_SNV_dB_Hz = cn0_svn_estimator(d_Prompt_buffer.data(), FLAGS_cn0_samples, GALILEO_E1_CODE_PERIOD_S); | ||||||
|  |  | ||||||
|                     // Carrier lock indicator |                     // Carrier lock indicator | ||||||
|                     d_carrier_lock_test = carrier_lock_detector(d_Prompt_buffer.data(), FLAGS_cn0_samples); |                     d_carrier_lock_test = carrier_lock_detector(d_Prompt_buffer.data(), FLAGS_cn0_samples); | ||||||
|   | |||||||
| @@ -162,7 +162,7 @@ glonass_l1_ca_dll_pll_c_aid_tracking_cc::glonass_l1_ca_dll_pll_c_aid_tracking_cc | |||||||
|  |  | ||||||
|     // --- Perform initializations ------------------------------ |     // --- Perform initializations ------------------------------ | ||||||
|     // define initial code frequency basis of NCO |     // define initial code frequency basis of NCO | ||||||
|     d_code_freq_chips = GLONASS_L1_CA_CODE_RATE_HZ; |     d_code_freq_chips = GLONASS_L1_CA_CODE_RATE_CPS; | ||||||
|     // define residual code phase (in chips) |     // define residual code phase (in chips) | ||||||
|     d_rem_code_phase_samples = 0.0; |     d_rem_code_phase_samples = 0.0; | ||||||
|     // define residual carrier phase |     // define residual carrier phase | ||||||
| @@ -238,7 +238,7 @@ void glonass_l1_ca_dll_pll_c_aid_tracking_cc::start_tracking() | |||||||
|     double T_chip_mod_seconds; |     double T_chip_mod_seconds; | ||||||
|     double T_prn_mod_seconds; |     double T_prn_mod_seconds; | ||||||
|     double T_prn_mod_samples; |     double T_prn_mod_samples; | ||||||
|     d_code_freq_chips = radial_velocity * GLONASS_L1_CA_CODE_RATE_HZ; |     d_code_freq_chips = radial_velocity * GLONASS_L1_CA_CODE_RATE_CPS; | ||||||
|     d_code_phase_step_chips = static_cast<double>(d_code_freq_chips) / static_cast<double>(d_fs_in); |     d_code_phase_step_chips = static_cast<double>(d_code_freq_chips) / static_cast<double>(d_fs_in); | ||||||
|     T_chip_mod_seconds = 1.0 / d_code_freq_chips; |     T_chip_mod_seconds = 1.0 / d_code_freq_chips; | ||||||
|     T_prn_mod_seconds = T_chip_mod_seconds * GLONASS_L1_CA_CODE_LENGTH_CHIPS; |     T_prn_mod_seconds = T_chip_mod_seconds * GLONASS_L1_CA_CODE_LENGTH_CHIPS; | ||||||
| @@ -246,7 +246,7 @@ void glonass_l1_ca_dll_pll_c_aid_tracking_cc::start_tracking() | |||||||
|  |  | ||||||
|     d_correlation_length_samples = round(T_prn_mod_samples); |     d_correlation_length_samples = round(T_prn_mod_samples); | ||||||
|  |  | ||||||
|     double T_prn_true_seconds = GLONASS_L1_CA_CODE_LENGTH_CHIPS / GLONASS_L1_CA_CODE_RATE_HZ; |     double T_prn_true_seconds = GLONASS_L1_CA_CODE_LENGTH_CHIPS / GLONASS_L1_CA_CODE_RATE_CPS; | ||||||
|     double T_prn_true_samples = T_prn_true_seconds * static_cast<double>(d_fs_in); |     double T_prn_true_samples = T_prn_true_seconds * static_cast<double>(d_fs_in); | ||||||
|     double T_prn_diff_seconds = T_prn_true_seconds - T_prn_mod_seconds; |     double T_prn_diff_seconds = T_prn_true_seconds - T_prn_mod_seconds; | ||||||
|     double N_prn_diff = acq_trk_diff_seconds / T_prn_true_seconds; |     double N_prn_diff = acq_trk_diff_seconds / T_prn_true_seconds; | ||||||
| @@ -650,7 +650,7 @@ int glonass_l1_ca_dll_pll_c_aid_tracking_cc::general_work(int noutput_items __at | |||||||
|                                               << " dll_bw = " << d_dll_bw_hz << " [Hz], dll_narrow_bw = " << d_dll_bw_narrow_hz << " [Hz]" << std::endl; |                                               << " dll_bw = " << d_dll_bw_hz << " [Hz], dll_narrow_bw = " << d_dll_bw_narrow_hz << " [Hz]" << std::endl; | ||||||
|                                 } |                                 } | ||||||
|                             // UPDATE INTEGRATION TIME |                             // UPDATE INTEGRATION TIME | ||||||
|                             CURRENT_INTEGRATION_TIME_S = static_cast<double>(d_extend_correlation_ms) * GLONASS_L1_CA_CODE_PERIOD; |                             CURRENT_INTEGRATION_TIME_S = static_cast<double>(d_extend_correlation_ms) * GLONASS_L1_CA_CODE_PERIOD_S; | ||||||
|                             d_code_loop_filter.set_pdi(CURRENT_INTEGRATION_TIME_S); |                             d_code_loop_filter.set_pdi(CURRENT_INTEGRATION_TIME_S); | ||||||
|                             enable_dll_pll = true; |                             enable_dll_pll = true; | ||||||
|                         } |                         } | ||||||
| @@ -712,7 +712,7 @@ int glonass_l1_ca_dll_pll_c_aid_tracking_cc::general_work(int noutput_items __at | |||||||
|                     // PLL to DLL assistance [Secs/Ti] |                     // PLL to DLL assistance [Secs/Ti] | ||||||
|                     d_pll_to_dll_assist_secs_Ti = (d_carrier_doppler_hz * CURRENT_INTEGRATION_TIME_S) / d_glonass_freq_ch; |                     d_pll_to_dll_assist_secs_Ti = (d_carrier_doppler_hz * CURRENT_INTEGRATION_TIME_S) / d_glonass_freq_ch; | ||||||
|                     // code Doppler frequency update |                     // code Doppler frequency update | ||||||
|                     d_code_freq_chips = GLONASS_L1_CA_CODE_RATE_HZ + (((d_carrier_doppler_hz - d_carrier_doppler_old_hz) * GLONASS_L1_CA_CODE_RATE_HZ) / d_glonass_freq_ch); |                     d_code_freq_chips = GLONASS_L1_CA_CODE_RATE_CPS + (((d_carrier_doppler_hz - d_carrier_doppler_old_hz) * GLONASS_L1_CA_CODE_RATE_CPS) / d_glonass_freq_ch); | ||||||
|  |  | ||||||
|                     // ################## DLL ########################################################## |                     // ################## DLL ########################################################## | ||||||
|                     // DLL discriminator |                     // DLL discriminator | ||||||
| @@ -762,7 +762,7 @@ int glonass_l1_ca_dll_pll_c_aid_tracking_cc::general_work(int noutput_items __at | |||||||
|                         { |                         { | ||||||
|                             d_cn0_estimation_counter = 0; |                             d_cn0_estimation_counter = 0; | ||||||
|                             // Code lock indicator |                             // Code lock indicator | ||||||
|                             d_CN0_SNV_dB_Hz = cn0_svn_estimator(d_Prompt_buffer.data(), CN0_ESTIMATION_SAMPLES, GLONASS_L1_CA_CODE_PERIOD); |                             d_CN0_SNV_dB_Hz = cn0_svn_estimator(d_Prompt_buffer.data(), CN0_ESTIMATION_SAMPLES, GLONASS_L1_CA_CODE_PERIOD_S); | ||||||
|                             // Carrier lock indicator |                             // Carrier lock indicator | ||||||
|                             d_carrier_lock_test = carrier_lock_detector(d_Prompt_buffer.data(), CN0_ESTIMATION_SAMPLES); |                             d_carrier_lock_test = carrier_lock_detector(d_Prompt_buffer.data(), CN0_ESTIMATION_SAMPLES); | ||||||
|                             // Loss of lock detection |                             // Loss of lock detection | ||||||
|   | |||||||
| @@ -161,7 +161,7 @@ glonass_l1_ca_dll_pll_c_aid_tracking_sc::glonass_l1_ca_dll_pll_c_aid_tracking_sc | |||||||
|  |  | ||||||
|     //--- Perform initializations ------------------------------ |     //--- Perform initializations ------------------------------ | ||||||
|     // define initial code frequency basis of NCO |     // define initial code frequency basis of NCO | ||||||
|     d_code_freq_chips = GLONASS_L1_CA_CODE_RATE_HZ; |     d_code_freq_chips = GLONASS_L1_CA_CODE_RATE_CPS; | ||||||
|     // define residual code phase (in chips) |     // define residual code phase (in chips) | ||||||
|     d_rem_code_phase_samples = 0.0; |     d_rem_code_phase_samples = 0.0; | ||||||
|     // define residual carrier phase |     // define residual carrier phase | ||||||
| @@ -235,7 +235,7 @@ void glonass_l1_ca_dll_pll_c_aid_tracking_sc::start_tracking() | |||||||
|     double T_chip_mod_seconds; |     double T_chip_mod_seconds; | ||||||
|     double T_prn_mod_seconds; |     double T_prn_mod_seconds; | ||||||
|     double T_prn_mod_samples; |     double T_prn_mod_samples; | ||||||
|     d_code_freq_chips = radial_velocity * GLONASS_L1_CA_CODE_RATE_HZ; |     d_code_freq_chips = radial_velocity * GLONASS_L1_CA_CODE_RATE_CPS; | ||||||
|     d_code_phase_step_chips = static_cast<double>(d_code_freq_chips) / static_cast<double>(d_fs_in); |     d_code_phase_step_chips = static_cast<double>(d_code_freq_chips) / static_cast<double>(d_fs_in); | ||||||
|     T_chip_mod_seconds = 1.0 / d_code_freq_chips; |     T_chip_mod_seconds = 1.0 / d_code_freq_chips; | ||||||
|     T_prn_mod_seconds = T_chip_mod_seconds * GLONASS_L1_CA_CODE_LENGTH_CHIPS; |     T_prn_mod_seconds = T_chip_mod_seconds * GLONASS_L1_CA_CODE_LENGTH_CHIPS; | ||||||
| @@ -243,7 +243,7 @@ void glonass_l1_ca_dll_pll_c_aid_tracking_sc::start_tracking() | |||||||
|  |  | ||||||
|     d_correlation_length_samples = round(T_prn_mod_samples); |     d_correlation_length_samples = round(T_prn_mod_samples); | ||||||
|  |  | ||||||
|     double T_prn_true_seconds = GLONASS_L1_CA_CODE_LENGTH_CHIPS / GLONASS_L1_CA_CODE_RATE_HZ; |     double T_prn_true_seconds = GLONASS_L1_CA_CODE_LENGTH_CHIPS / GLONASS_L1_CA_CODE_RATE_CPS; | ||||||
|     double T_prn_true_samples = T_prn_true_seconds * static_cast<double>(d_fs_in); |     double T_prn_true_samples = T_prn_true_seconds * static_cast<double>(d_fs_in); | ||||||
|     double T_prn_diff_seconds = T_prn_true_seconds - T_prn_mod_seconds; |     double T_prn_diff_seconds = T_prn_true_seconds - T_prn_mod_seconds; | ||||||
|     double N_prn_diff = acq_trk_diff_seconds / T_prn_true_seconds; |     double N_prn_diff = acq_trk_diff_seconds / T_prn_true_seconds; | ||||||
| @@ -643,7 +643,7 @@ int glonass_l1_ca_dll_pll_c_aid_tracking_sc::general_work(int noutput_items __at | |||||||
|                                               << " dll_bw = " << d_dll_bw_hz << " [Hz], dll_narrow_bw = " << d_dll_bw_narrow_hz << " [Hz]" << std::endl; |                                               << " dll_bw = " << d_dll_bw_hz << " [Hz], dll_narrow_bw = " << d_dll_bw_narrow_hz << " [Hz]" << std::endl; | ||||||
|                                 } |                                 } | ||||||
|                             // UPDATE INTEGRATION TIME |                             // UPDATE INTEGRATION TIME | ||||||
|                             CURRENT_INTEGRATION_TIME_S = static_cast<double>(d_extend_correlation_ms) * GLONASS_L1_CA_CODE_PERIOD; |                             CURRENT_INTEGRATION_TIME_S = static_cast<double>(d_extend_correlation_ms) * GLONASS_L1_CA_CODE_PERIOD_S; | ||||||
|                             enable_dll_pll = true; |                             enable_dll_pll = true; | ||||||
|                         } |                         } | ||||||
|                     else |                     else | ||||||
| @@ -703,7 +703,7 @@ int glonass_l1_ca_dll_pll_c_aid_tracking_sc::general_work(int noutput_items __at | |||||||
|                     // PLL to DLL assistance [Secs/Ti] |                     // PLL to DLL assistance [Secs/Ti] | ||||||
|                     d_pll_to_dll_assist_secs_Ti = (d_carrier_doppler_hz * CURRENT_INTEGRATION_TIME_S) / d_glonass_freq_ch; |                     d_pll_to_dll_assist_secs_Ti = (d_carrier_doppler_hz * CURRENT_INTEGRATION_TIME_S) / d_glonass_freq_ch; | ||||||
|                     // code Doppler frequency update |                     // code Doppler frequency update | ||||||
|                     d_code_freq_chips = GLONASS_L1_CA_CODE_RATE_HZ + (((d_carrier_doppler_hz - d_carrier_doppler_old_hz) * GLONASS_L1_CA_CODE_RATE_HZ) / d_glonass_freq_ch); |                     d_code_freq_chips = GLONASS_L1_CA_CODE_RATE_CPS + (((d_carrier_doppler_hz - d_carrier_doppler_old_hz) * GLONASS_L1_CA_CODE_RATE_CPS) / d_glonass_freq_ch); | ||||||
|  |  | ||||||
|                     // ################## DLL ########################################################## |                     // ################## DLL ########################################################## | ||||||
|                     // DLL discriminator |                     // DLL discriminator | ||||||
| @@ -753,7 +753,7 @@ int glonass_l1_ca_dll_pll_c_aid_tracking_sc::general_work(int noutput_items __at | |||||||
|                         { |                         { | ||||||
|                             d_cn0_estimation_counter = 0; |                             d_cn0_estimation_counter = 0; | ||||||
|                             // Code lock indicator |                             // Code lock indicator | ||||||
|                             d_CN0_SNV_dB_Hz = cn0_svn_estimator(d_Prompt_buffer.data(), CN0_ESTIMATION_SAMPLES, GLONASS_L1_CA_CODE_PERIOD); |                             d_CN0_SNV_dB_Hz = cn0_svn_estimator(d_Prompt_buffer.data(), CN0_ESTIMATION_SAMPLES, GLONASS_L1_CA_CODE_PERIOD_S); | ||||||
|                             // Carrier lock indicator |                             // Carrier lock indicator | ||||||
|                             d_carrier_lock_test = carrier_lock_detector(d_Prompt_buffer.data(), CN0_ESTIMATION_SAMPLES); |                             d_carrier_lock_test = carrier_lock_detector(d_Prompt_buffer.data(), CN0_ESTIMATION_SAMPLES); | ||||||
|                             // Loss of lock detection |                             // Loss of lock detection | ||||||
|   | |||||||
| @@ -130,7 +130,7 @@ Glonass_L1_Ca_Dll_Pll_Tracking_cc::Glonass_L1_Ca_Dll_Pll_Tracking_cc( | |||||||
|  |  | ||||||
|     // --- Perform initializations ------------------------------ |     // --- Perform initializations ------------------------------ | ||||||
|     // define initial code frequency basis of NCO |     // define initial code frequency basis of NCO | ||||||
|     d_code_freq_chips = GLONASS_L1_CA_CODE_RATE_HZ; |     d_code_freq_chips = GLONASS_L1_CA_CODE_RATE_CPS; | ||||||
|     // define residual code phase (in chips) |     // define residual code phase (in chips) | ||||||
|     d_rem_code_phase_samples = 0.0; |     d_rem_code_phase_samples = 0.0; | ||||||
|     // define residual carrier phase |     // define residual carrier phase | ||||||
| @@ -195,7 +195,7 @@ void Glonass_L1_Ca_Dll_Pll_Tracking_cc::start_tracking() | |||||||
|     double T_chip_mod_seconds; |     double T_chip_mod_seconds; | ||||||
|     double T_prn_mod_seconds; |     double T_prn_mod_seconds; | ||||||
|     double T_prn_mod_samples; |     double T_prn_mod_samples; | ||||||
|     d_code_freq_chips = radial_velocity * GLONASS_L1_CA_CODE_RATE_HZ; |     d_code_freq_chips = radial_velocity * GLONASS_L1_CA_CODE_RATE_CPS; | ||||||
|     d_code_phase_step_chips = static_cast<double>(d_code_freq_chips) / static_cast<double>(d_fs_in); |     d_code_phase_step_chips = static_cast<double>(d_code_freq_chips) / static_cast<double>(d_fs_in); | ||||||
|     T_chip_mod_seconds = 1 / d_code_freq_chips; |     T_chip_mod_seconds = 1 / d_code_freq_chips; | ||||||
|     T_prn_mod_seconds = T_chip_mod_seconds * GLONASS_L1_CA_CODE_LENGTH_CHIPS; |     T_prn_mod_seconds = T_chip_mod_seconds * GLONASS_L1_CA_CODE_LENGTH_CHIPS; | ||||||
| @@ -203,7 +203,7 @@ void Glonass_L1_Ca_Dll_Pll_Tracking_cc::start_tracking() | |||||||
|  |  | ||||||
|     d_current_prn_length_samples = round(T_prn_mod_samples); |     d_current_prn_length_samples = round(T_prn_mod_samples); | ||||||
|  |  | ||||||
|     double T_prn_true_seconds = GLONASS_L1_CA_CODE_LENGTH_CHIPS / GLONASS_L1_CA_CODE_RATE_HZ; |     double T_prn_true_seconds = GLONASS_L1_CA_CODE_LENGTH_CHIPS / GLONASS_L1_CA_CODE_RATE_CPS; | ||||||
|     double T_prn_true_samples = T_prn_true_seconds * static_cast<double>(d_fs_in); |     double T_prn_true_samples = T_prn_true_seconds * static_cast<double>(d_fs_in); | ||||||
|     double T_prn_diff_seconds = T_prn_true_seconds - T_prn_mod_seconds; |     double T_prn_diff_seconds = T_prn_true_seconds - T_prn_mod_seconds; | ||||||
|     double N_prn_diff = acq_trk_diff_seconds / T_prn_true_seconds; |     double N_prn_diff = acq_trk_diff_seconds / T_prn_true_seconds; | ||||||
| @@ -572,7 +572,7 @@ int Glonass_L1_Ca_Dll_Pll_Tracking_cc::general_work(int noutput_items __attribut | |||||||
|             // New carrier Doppler frequency estimation |             // New carrier Doppler frequency estimation | ||||||
|             d_carrier_frequency_hz += carr_error_filt_hz; |             d_carrier_frequency_hz += carr_error_filt_hz; | ||||||
|             d_carrier_doppler_hz += carr_error_filt_hz; |             d_carrier_doppler_hz += carr_error_filt_hz; | ||||||
|             d_code_freq_chips = GLONASS_L1_CA_CODE_RATE_HZ + ((d_carrier_doppler_hz * GLONASS_L1_CA_CODE_RATE_HZ) / d_glonass_freq_ch); |             d_code_freq_chips = GLONASS_L1_CA_CODE_RATE_CPS + ((d_carrier_doppler_hz * GLONASS_L1_CA_CODE_RATE_CPS) / d_glonass_freq_ch); | ||||||
|  |  | ||||||
|             // ################## DLL ########################################################## |             // ################## DLL ########################################################## | ||||||
|             // DLL discriminator |             // DLL discriminator | ||||||
| @@ -582,7 +582,7 @@ int Glonass_L1_Ca_Dll_Pll_Tracking_cc::general_work(int noutput_items __attribut | |||||||
|             double T_chip_seconds = 1.0 / static_cast<double>(d_code_freq_chips); |             double T_chip_seconds = 1.0 / static_cast<double>(d_code_freq_chips); | ||||||
|             double T_prn_seconds = T_chip_seconds * GLONASS_L1_CA_CODE_LENGTH_CHIPS; |             double T_prn_seconds = T_chip_seconds * GLONASS_L1_CA_CODE_LENGTH_CHIPS; | ||||||
|             double code_error_filt_secs = (T_prn_seconds * code_error_filt_chips * T_chip_seconds);  // [seconds] |             double code_error_filt_secs = (T_prn_seconds * code_error_filt_chips * T_chip_seconds);  // [seconds] | ||||||
|             // double code_error_filt_secs = (GPS_L1_CA_CODE_PERIOD * code_error_filt_chips) / GLONASS_L1_CA_CODE_RATE_HZ; // [seconds] |             // double code_error_filt_secs = (GPS_L1_CA_CODE_PERIOD * code_error_filt_chips) / GLONASS_L1_CA_CODE_RATE_CPS; // [seconds] | ||||||
|  |  | ||||||
|             // ################## CARRIER AND CODE NCO BUFFER ALIGNMENT ####################### |             // ################## CARRIER AND CODE NCO BUFFER ALIGNMENT ####################### | ||||||
|             // keep alignment parameters for the next input buffer |             // keep alignment parameters for the next input buffer | ||||||
| @@ -621,7 +621,7 @@ int Glonass_L1_Ca_Dll_Pll_Tracking_cc::general_work(int noutput_items __attribut | |||||||
|                 { |                 { | ||||||
|                     d_cn0_estimation_counter = 0; |                     d_cn0_estimation_counter = 0; | ||||||
|                     // Code lock indicator |                     // Code lock indicator | ||||||
|                     d_CN0_SNV_dB_Hz = cn0_svn_estimator(d_Prompt_buffer.data(), CN0_ESTIMATION_SAMPLES, GLONASS_L1_CA_CODE_PERIOD); |                     d_CN0_SNV_dB_Hz = cn0_svn_estimator(d_Prompt_buffer.data(), CN0_ESTIMATION_SAMPLES, GLONASS_L1_CA_CODE_PERIOD_S); | ||||||
|                     // Carrier lock indicator |                     // Carrier lock indicator | ||||||
|                     d_carrier_lock_test = carrier_lock_detector(d_Prompt_buffer.data(), CN0_ESTIMATION_SAMPLES); |                     d_carrier_lock_test = carrier_lock_detector(d_Prompt_buffer.data(), CN0_ESTIMATION_SAMPLES); | ||||||
|                     // Loss of lock detection |                     // Loss of lock detection | ||||||
|   | |||||||
| @@ -159,7 +159,7 @@ glonass_l2_ca_dll_pll_c_aid_tracking_cc::glonass_l2_ca_dll_pll_c_aid_tracking_cc | |||||||
|  |  | ||||||
|     // --- Perform initializations ------------------------------ |     // --- Perform initializations ------------------------------ | ||||||
|     // define initial code frequency basis of NCO |     // define initial code frequency basis of NCO | ||||||
|     d_code_freq_chips = GLONASS_L2_CA_CODE_RATE_HZ; |     d_code_freq_chips = GLONASS_L2_CA_CODE_RATE_CPS; | ||||||
|     // define residual code phase (in chips) |     // define residual code phase (in chips) | ||||||
|     d_rem_code_phase_samples = 0.0; |     d_rem_code_phase_samples = 0.0; | ||||||
|     // define residual carrier phase |     // define residual carrier phase | ||||||
| @@ -235,7 +235,7 @@ void glonass_l2_ca_dll_pll_c_aid_tracking_cc::start_tracking() | |||||||
|     double T_chip_mod_seconds; |     double T_chip_mod_seconds; | ||||||
|     double T_prn_mod_seconds; |     double T_prn_mod_seconds; | ||||||
|     double T_prn_mod_samples; |     double T_prn_mod_samples; | ||||||
|     d_code_freq_chips = radial_velocity * GLONASS_L2_CA_CODE_RATE_HZ; |     d_code_freq_chips = radial_velocity * GLONASS_L2_CA_CODE_RATE_CPS; | ||||||
|     d_code_phase_step_chips = static_cast<double>(d_code_freq_chips) / static_cast<double>(d_fs_in); |     d_code_phase_step_chips = static_cast<double>(d_code_freq_chips) / static_cast<double>(d_fs_in); | ||||||
|     T_chip_mod_seconds = 1.0 / d_code_freq_chips; |     T_chip_mod_seconds = 1.0 / d_code_freq_chips; | ||||||
|     T_prn_mod_seconds = T_chip_mod_seconds * GLONASS_L2_CA_CODE_LENGTH_CHIPS; |     T_prn_mod_seconds = T_chip_mod_seconds * GLONASS_L2_CA_CODE_LENGTH_CHIPS; | ||||||
| @@ -243,7 +243,7 @@ void glonass_l2_ca_dll_pll_c_aid_tracking_cc::start_tracking() | |||||||
|  |  | ||||||
|     d_correlation_length_samples = round(T_prn_mod_samples); |     d_correlation_length_samples = round(T_prn_mod_samples); | ||||||
|  |  | ||||||
|     double T_prn_true_seconds = GLONASS_L2_CA_CODE_LENGTH_CHIPS / GLONASS_L2_CA_CODE_RATE_HZ; |     double T_prn_true_seconds = GLONASS_L2_CA_CODE_LENGTH_CHIPS / GLONASS_L2_CA_CODE_RATE_CPS; | ||||||
|     double T_prn_true_samples = T_prn_true_seconds * static_cast<double>(d_fs_in); |     double T_prn_true_samples = T_prn_true_seconds * static_cast<double>(d_fs_in); | ||||||
|     double T_prn_diff_seconds = T_prn_true_seconds - T_prn_mod_seconds; |     double T_prn_diff_seconds = T_prn_true_seconds - T_prn_mod_seconds; | ||||||
|     double N_prn_diff = acq_trk_diff_seconds / T_prn_true_seconds; |     double N_prn_diff = acq_trk_diff_seconds / T_prn_true_seconds; | ||||||
| @@ -648,7 +648,7 @@ int glonass_l2_ca_dll_pll_c_aid_tracking_cc::general_work(int noutput_items __at | |||||||
|                                               << " dll_bw = " << d_dll_bw_hz << " [Hz], dll_narrow_bw = " << d_dll_bw_narrow_hz << " [Hz]" << std::endl; |                                               << " dll_bw = " << d_dll_bw_hz << " [Hz], dll_narrow_bw = " << d_dll_bw_narrow_hz << " [Hz]" << std::endl; | ||||||
|                                 } |                                 } | ||||||
|                             // UPDATE INTEGRATION TIME |                             // UPDATE INTEGRATION TIME | ||||||
|                             CURRENT_INTEGRATION_TIME_S = static_cast<double>(d_extend_correlation_ms) * GLONASS_L2_CA_CODE_PERIOD; |                             CURRENT_INTEGRATION_TIME_S = static_cast<double>(d_extend_correlation_ms) * GLONASS_L2_CA_CODE_PERIOD_S; | ||||||
|                             d_code_loop_filter.set_pdi(CURRENT_INTEGRATION_TIME_S); |                             d_code_loop_filter.set_pdi(CURRENT_INTEGRATION_TIME_S); | ||||||
|                             enable_dll_pll = true; |                             enable_dll_pll = true; | ||||||
|                         } |                         } | ||||||
| @@ -710,7 +710,7 @@ int glonass_l2_ca_dll_pll_c_aid_tracking_cc::general_work(int noutput_items __at | |||||||
|                     // PLL to DLL assistance [Secs/Ti] |                     // PLL to DLL assistance [Secs/Ti] | ||||||
|                     d_pll_to_dll_assist_secs_Ti = (d_carrier_doppler_hz * CURRENT_INTEGRATION_TIME_S) / d_glonass_freq_ch; |                     d_pll_to_dll_assist_secs_Ti = (d_carrier_doppler_hz * CURRENT_INTEGRATION_TIME_S) / d_glonass_freq_ch; | ||||||
|                     // code Doppler frequency update |                     // code Doppler frequency update | ||||||
|                     d_code_freq_chips = GLONASS_L2_CA_CODE_RATE_HZ + (((d_carrier_doppler_hz - d_carrier_doppler_old_hz) * GLONASS_L2_CA_CODE_RATE_HZ) / d_glonass_freq_ch); |                     d_code_freq_chips = GLONASS_L2_CA_CODE_RATE_CPS + (((d_carrier_doppler_hz - d_carrier_doppler_old_hz) * GLONASS_L2_CA_CODE_RATE_CPS) / d_glonass_freq_ch); | ||||||
|  |  | ||||||
|                     // ################## DLL ########################################################## |                     // ################## DLL ########################################################## | ||||||
|                     // DLL discriminator |                     // DLL discriminator | ||||||
| @@ -760,7 +760,7 @@ int glonass_l2_ca_dll_pll_c_aid_tracking_cc::general_work(int noutput_items __at | |||||||
|                         { |                         { | ||||||
|                             d_cn0_estimation_counter = 0; |                             d_cn0_estimation_counter = 0; | ||||||
|                             // Code lock indicator |                             // Code lock indicator | ||||||
|                             d_CN0_SNV_dB_Hz = cn0_svn_estimator(d_Prompt_buffer.data(), CN0_ESTIMATION_SAMPLES, GLONASS_L2_CA_CODE_PERIOD); |                             d_CN0_SNV_dB_Hz = cn0_svn_estimator(d_Prompt_buffer.data(), CN0_ESTIMATION_SAMPLES, GLONASS_L2_CA_CODE_PERIOD_S); | ||||||
|                             // Carrier lock indicator |                             // Carrier lock indicator | ||||||
|                             d_carrier_lock_test = carrier_lock_detector(d_Prompt_buffer.data(), CN0_ESTIMATION_SAMPLES); |                             d_carrier_lock_test = carrier_lock_detector(d_Prompt_buffer.data(), CN0_ESTIMATION_SAMPLES); | ||||||
|                             // Loss of lock detection |                             // Loss of lock detection | ||||||
|   | |||||||
| @@ -159,7 +159,7 @@ glonass_l2_ca_dll_pll_c_aid_tracking_sc::glonass_l2_ca_dll_pll_c_aid_tracking_sc | |||||||
|  |  | ||||||
|     //--- Perform initializations ------------------------------ |     //--- Perform initializations ------------------------------ | ||||||
|     // define initial code frequency basis of NCO |     // define initial code frequency basis of NCO | ||||||
|     d_code_freq_chips = GLONASS_L2_CA_CODE_RATE_HZ; |     d_code_freq_chips = GLONASS_L2_CA_CODE_RATE_CPS; | ||||||
|     // define residual code phase (in chips) |     // define residual code phase (in chips) | ||||||
|     d_rem_code_phase_samples = 0.0; |     d_rem_code_phase_samples = 0.0; | ||||||
|     // define residual carrier phase |     // define residual carrier phase | ||||||
| @@ -233,7 +233,7 @@ void glonass_l2_ca_dll_pll_c_aid_tracking_sc::start_tracking() | |||||||
|     double T_chip_mod_seconds; |     double T_chip_mod_seconds; | ||||||
|     double T_prn_mod_seconds; |     double T_prn_mod_seconds; | ||||||
|     double T_prn_mod_samples; |     double T_prn_mod_samples; | ||||||
|     d_code_freq_chips = radial_velocity * GLONASS_L2_CA_CODE_RATE_HZ; |     d_code_freq_chips = radial_velocity * GLONASS_L2_CA_CODE_RATE_CPS; | ||||||
|     d_code_phase_step_chips = static_cast<double>(d_code_freq_chips) / static_cast<double>(d_fs_in); |     d_code_phase_step_chips = static_cast<double>(d_code_freq_chips) / static_cast<double>(d_fs_in); | ||||||
|     T_chip_mod_seconds = 1.0 / d_code_freq_chips; |     T_chip_mod_seconds = 1.0 / d_code_freq_chips; | ||||||
|     T_prn_mod_seconds = T_chip_mod_seconds * GLONASS_L2_CA_CODE_LENGTH_CHIPS; |     T_prn_mod_seconds = T_chip_mod_seconds * GLONASS_L2_CA_CODE_LENGTH_CHIPS; | ||||||
| @@ -241,7 +241,7 @@ void glonass_l2_ca_dll_pll_c_aid_tracking_sc::start_tracking() | |||||||
|  |  | ||||||
|     d_correlation_length_samples = round(T_prn_mod_samples); |     d_correlation_length_samples = round(T_prn_mod_samples); | ||||||
|  |  | ||||||
|     double T_prn_true_seconds = GLONASS_L2_CA_CODE_LENGTH_CHIPS / GLONASS_L2_CA_CODE_RATE_HZ; |     double T_prn_true_seconds = GLONASS_L2_CA_CODE_LENGTH_CHIPS / GLONASS_L2_CA_CODE_RATE_CPS; | ||||||
|     double T_prn_true_samples = T_prn_true_seconds * static_cast<double>(d_fs_in); |     double T_prn_true_samples = T_prn_true_seconds * static_cast<double>(d_fs_in); | ||||||
|     double T_prn_diff_seconds = T_prn_true_seconds - T_prn_mod_seconds; |     double T_prn_diff_seconds = T_prn_true_seconds - T_prn_mod_seconds; | ||||||
|     double N_prn_diff = acq_trk_diff_seconds / T_prn_true_seconds; |     double N_prn_diff = acq_trk_diff_seconds / T_prn_true_seconds; | ||||||
| @@ -641,7 +641,7 @@ int glonass_l2_ca_dll_pll_c_aid_tracking_sc::general_work(int noutput_items __at | |||||||
|                                               << " dll_bw = " << d_dll_bw_hz << " [Hz], dll_narrow_bw = " << d_dll_bw_narrow_hz << " [Hz]" << std::endl; |                                               << " dll_bw = " << d_dll_bw_hz << " [Hz], dll_narrow_bw = " << d_dll_bw_narrow_hz << " [Hz]" << std::endl; | ||||||
|                                 } |                                 } | ||||||
|                             // UPDATE INTEGRATION TIME |                             // UPDATE INTEGRATION TIME | ||||||
|                             CURRENT_INTEGRATION_TIME_S = static_cast<double>(d_extend_correlation_ms) * GLONASS_L2_CA_CODE_PERIOD; |                             CURRENT_INTEGRATION_TIME_S = static_cast<double>(d_extend_correlation_ms) * GLONASS_L2_CA_CODE_PERIOD_S; | ||||||
|                             enable_dll_pll = true; |                             enable_dll_pll = true; | ||||||
|                         } |                         } | ||||||
|                     else |                     else | ||||||
| @@ -701,7 +701,7 @@ int glonass_l2_ca_dll_pll_c_aid_tracking_sc::general_work(int noutput_items __at | |||||||
|                     // PLL to DLL assistance [Secs/Ti] |                     // PLL to DLL assistance [Secs/Ti] | ||||||
|                     d_pll_to_dll_assist_secs_Ti = (d_carrier_doppler_hz * CURRENT_INTEGRATION_TIME_S) / d_glonass_freq_ch; |                     d_pll_to_dll_assist_secs_Ti = (d_carrier_doppler_hz * CURRENT_INTEGRATION_TIME_S) / d_glonass_freq_ch; | ||||||
|                     // code Doppler frequency update |                     // code Doppler frequency update | ||||||
|                     d_code_freq_chips = GLONASS_L2_CA_CODE_RATE_HZ + (((d_carrier_doppler_hz - d_carrier_doppler_old_hz) * GLONASS_L2_CA_CODE_RATE_HZ) / d_glonass_freq_ch); |                     d_code_freq_chips = GLONASS_L2_CA_CODE_RATE_CPS + (((d_carrier_doppler_hz - d_carrier_doppler_old_hz) * GLONASS_L2_CA_CODE_RATE_CPS) / d_glonass_freq_ch); | ||||||
|  |  | ||||||
|                     // ################## DLL ########################################################## |                     // ################## DLL ########################################################## | ||||||
|                     // DLL discriminator |                     // DLL discriminator | ||||||
| @@ -751,7 +751,7 @@ int glonass_l2_ca_dll_pll_c_aid_tracking_sc::general_work(int noutput_items __at | |||||||
|                         { |                         { | ||||||
|                             d_cn0_estimation_counter = 0; |                             d_cn0_estimation_counter = 0; | ||||||
|                             // Code lock indicator |                             // Code lock indicator | ||||||
|                             d_CN0_SNV_dB_Hz = cn0_svn_estimator(d_Prompt_buffer.data(), CN0_ESTIMATION_SAMPLES, GLONASS_L2_CA_CODE_PERIOD); |                             d_CN0_SNV_dB_Hz = cn0_svn_estimator(d_Prompt_buffer.data(), CN0_ESTIMATION_SAMPLES, GLONASS_L2_CA_CODE_PERIOD_S); | ||||||
|                             // Carrier lock indicator |                             // Carrier lock indicator | ||||||
|                             d_carrier_lock_test = carrier_lock_detector(d_Prompt_buffer.data(), CN0_ESTIMATION_SAMPLES); |                             d_carrier_lock_test = carrier_lock_detector(d_Prompt_buffer.data(), CN0_ESTIMATION_SAMPLES); | ||||||
|                             // Loss of lock detection |                             // Loss of lock detection | ||||||
|   | |||||||
| @@ -130,7 +130,7 @@ Glonass_L2_Ca_Dll_Pll_Tracking_cc::Glonass_L2_Ca_Dll_Pll_Tracking_cc( | |||||||
|  |  | ||||||
|     // --- Perform initializations ------------------------------ |     // --- Perform initializations ------------------------------ | ||||||
|     // define initial code frequency basis of NCO |     // define initial code frequency basis of NCO | ||||||
|     d_code_freq_chips = GLONASS_L2_CA_CODE_RATE_HZ; |     d_code_freq_chips = GLONASS_L2_CA_CODE_RATE_CPS; | ||||||
|     // define residual code phase (in chips) |     // define residual code phase (in chips) | ||||||
|     d_rem_code_phase_samples = 0.0; |     d_rem_code_phase_samples = 0.0; | ||||||
|     // define residual carrier phase |     // define residual carrier phase | ||||||
| @@ -195,7 +195,7 @@ void Glonass_L2_Ca_Dll_Pll_Tracking_cc::start_tracking() | |||||||
|     double T_chip_mod_seconds; |     double T_chip_mod_seconds; | ||||||
|     double T_prn_mod_seconds; |     double T_prn_mod_seconds; | ||||||
|     double T_prn_mod_samples; |     double T_prn_mod_samples; | ||||||
|     d_code_freq_chips = radial_velocity * GLONASS_L2_CA_CODE_RATE_HZ; |     d_code_freq_chips = radial_velocity * GLONASS_L2_CA_CODE_RATE_CPS; | ||||||
|     d_code_phase_step_chips = static_cast<double>(d_code_freq_chips) / static_cast<double>(d_fs_in); |     d_code_phase_step_chips = static_cast<double>(d_code_freq_chips) / static_cast<double>(d_fs_in); | ||||||
|     T_chip_mod_seconds = 1 / d_code_freq_chips; |     T_chip_mod_seconds = 1 / d_code_freq_chips; | ||||||
|     T_prn_mod_seconds = T_chip_mod_seconds * GLONASS_L2_CA_CODE_LENGTH_CHIPS; |     T_prn_mod_seconds = T_chip_mod_seconds * GLONASS_L2_CA_CODE_LENGTH_CHIPS; | ||||||
| @@ -203,7 +203,7 @@ void Glonass_L2_Ca_Dll_Pll_Tracking_cc::start_tracking() | |||||||
|  |  | ||||||
|     d_current_prn_length_samples = round(T_prn_mod_samples); |     d_current_prn_length_samples = round(T_prn_mod_samples); | ||||||
|  |  | ||||||
|     double T_prn_true_seconds = GLONASS_L2_CA_CODE_LENGTH_CHIPS / GLONASS_L2_CA_CODE_RATE_HZ; |     double T_prn_true_seconds = GLONASS_L2_CA_CODE_LENGTH_CHIPS / GLONASS_L2_CA_CODE_RATE_CPS; | ||||||
|     double T_prn_true_samples = T_prn_true_seconds * static_cast<double>(d_fs_in); |     double T_prn_true_samples = T_prn_true_seconds * static_cast<double>(d_fs_in); | ||||||
|     double T_prn_diff_seconds = T_prn_true_seconds - T_prn_mod_seconds; |     double T_prn_diff_seconds = T_prn_true_seconds - T_prn_mod_seconds; | ||||||
|     double N_prn_diff = acq_trk_diff_seconds / T_prn_true_seconds; |     double N_prn_diff = acq_trk_diff_seconds / T_prn_true_seconds; | ||||||
| @@ -572,7 +572,7 @@ int Glonass_L2_Ca_Dll_Pll_Tracking_cc::general_work(int noutput_items __attribut | |||||||
|             // New carrier Doppler frequency estimation |             // New carrier Doppler frequency estimation | ||||||
|             d_carrier_frequency_hz += carr_error_filt_hz; |             d_carrier_frequency_hz += carr_error_filt_hz; | ||||||
|             d_carrier_doppler_hz += carr_error_filt_hz; |             d_carrier_doppler_hz += carr_error_filt_hz; | ||||||
|             d_code_freq_chips = GLONASS_L2_CA_CODE_RATE_HZ + ((d_carrier_doppler_hz * GLONASS_L2_CA_CODE_RATE_HZ) / d_glonass_freq_ch); |             d_code_freq_chips = GLONASS_L2_CA_CODE_RATE_CPS + ((d_carrier_doppler_hz * GLONASS_L2_CA_CODE_RATE_CPS) / d_glonass_freq_ch); | ||||||
|  |  | ||||||
|             // ################## DLL ########################################################## |             // ################## DLL ########################################################## | ||||||
|             // DLL discriminator |             // DLL discriminator | ||||||
| @@ -582,7 +582,7 @@ int Glonass_L2_Ca_Dll_Pll_Tracking_cc::general_work(int noutput_items __attribut | |||||||
|             double T_chip_seconds = 1.0 / static_cast<double>(d_code_freq_chips); |             double T_chip_seconds = 1.0 / static_cast<double>(d_code_freq_chips); | ||||||
|             double T_prn_seconds = T_chip_seconds * GLONASS_L2_CA_CODE_LENGTH_CHIPS; |             double T_prn_seconds = T_chip_seconds * GLONASS_L2_CA_CODE_LENGTH_CHIPS; | ||||||
|             double code_error_filt_secs = (T_prn_seconds * code_error_filt_chips * T_chip_seconds);  // [seconds] |             double code_error_filt_secs = (T_prn_seconds * code_error_filt_chips * T_chip_seconds);  // [seconds] | ||||||
|             // double code_error_filt_secs = (GPS_L1_CA_CODE_PERIOD * code_error_filt_chips) / GLONASS_L1_CA_CODE_RATE_HZ; // [seconds] |             // double code_error_filt_secs = (GPS_L1_CA_CODE_PERIOD * code_error_filt_chips) / GLONASS_L1_CA_CODE_RATE_CPS; // [seconds] | ||||||
|  |  | ||||||
|             // ################## CARRIER AND CODE NCO BUFFER ALIGNMENT ####################### |             // ################## CARRIER AND CODE NCO BUFFER ALIGNMENT ####################### | ||||||
|             // keep alignment parameters for the next input buffer |             // keep alignment parameters for the next input buffer | ||||||
| @@ -621,7 +621,7 @@ int Glonass_L2_Ca_Dll_Pll_Tracking_cc::general_work(int noutput_items __attribut | |||||||
|                 { |                 { | ||||||
|                     d_cn0_estimation_counter = 0; |                     d_cn0_estimation_counter = 0; | ||||||
|                     // Code lock indicator |                     // Code lock indicator | ||||||
|                     d_CN0_SNV_dB_Hz = cn0_svn_estimator(d_Prompt_buffer.data(), CN0_ESTIMATION_SAMPLES, GLONASS_L2_CA_CODE_PERIOD); |                     d_CN0_SNV_dB_Hz = cn0_svn_estimator(d_Prompt_buffer.data(), CN0_ESTIMATION_SAMPLES, GLONASS_L2_CA_CODE_PERIOD_S); | ||||||
|                     // Carrier lock indicator |                     // Carrier lock indicator | ||||||
|                     d_carrier_lock_test = carrier_lock_detector(d_Prompt_buffer.data(), CN0_ESTIMATION_SAMPLES); |                     d_carrier_lock_test = carrier_lock_detector(d_Prompt_buffer.data(), CN0_ESTIMATION_SAMPLES); | ||||||
|                     // Loss of lock detection |                     // Loss of lock detection | ||||||
|   | |||||||
| @@ -122,7 +122,7 @@ Gps_L1_Ca_Dll_Pll_Tracking_GPU_cc::Gps_L1_Ca_Dll_Pll_Tracking_GPU_cc( | |||||||
|     multicorrelator_gpu->set_input_output_vectors(d_correlator_outs, in_gpu); |     multicorrelator_gpu->set_input_output_vectors(d_correlator_outs, in_gpu); | ||||||
|  |  | ||||||
|     // define initial code frequency basis of NCO |     // define initial code frequency basis of NCO | ||||||
|     d_code_freq_chips = GPS_L1_CA_CODE_RATE_HZ; |     d_code_freq_chips = GPS_L1_CA_CODE_RATE_CPS; | ||||||
|     // define residual code phase (in chips) |     // define residual code phase (in chips) | ||||||
|     d_rem_code_phase_samples = 0.0; |     d_rem_code_phase_samples = 0.0; | ||||||
|     // define residual carrier phase |     // define residual carrier phase | ||||||
| @@ -186,7 +186,7 @@ void Gps_L1_Ca_Dll_Pll_Tracking_GPU_cc::start_tracking() | |||||||
|     double T_chip_mod_seconds; |     double T_chip_mod_seconds; | ||||||
|     double T_prn_mod_seconds; |     double T_prn_mod_seconds; | ||||||
|     double T_prn_mod_samples; |     double T_prn_mod_samples; | ||||||
|     d_code_freq_chips = radial_velocity * GPS_L1_CA_CODE_RATE_HZ; |     d_code_freq_chips = radial_velocity * GPS_L1_CA_CODE_RATE_CPS; | ||||||
|     d_code_phase_step_chips = static_cast<double>(d_code_freq_chips) / static_cast<double>(d_fs_in); |     d_code_phase_step_chips = static_cast<double>(d_code_freq_chips) / static_cast<double>(d_fs_in); | ||||||
|     T_chip_mod_seconds = 1 / d_code_freq_chips; |     T_chip_mod_seconds = 1 / d_code_freq_chips; | ||||||
|     T_prn_mod_seconds = T_chip_mod_seconds * GPS_L1_CA_CODE_LENGTH_CHIPS; |     T_prn_mod_seconds = T_chip_mod_seconds * GPS_L1_CA_CODE_LENGTH_CHIPS; | ||||||
| @@ -194,7 +194,7 @@ void Gps_L1_Ca_Dll_Pll_Tracking_GPU_cc::start_tracking() | |||||||
|  |  | ||||||
|     d_correlation_length_samples = round(T_prn_mod_samples); |     d_correlation_length_samples = round(T_prn_mod_samples); | ||||||
|  |  | ||||||
|     double T_prn_true_seconds = GPS_L1_CA_CODE_LENGTH_CHIPS / GPS_L1_CA_CODE_RATE_HZ; |     double T_prn_true_seconds = GPS_L1_CA_CODE_LENGTH_CHIPS / GPS_L1_CA_CODE_RATE_CPS; | ||||||
|     double T_prn_true_samples = T_prn_true_seconds * static_cast<double>(d_fs_in); |     double T_prn_true_samples = T_prn_true_seconds * static_cast<double>(d_fs_in); | ||||||
|     double T_prn_diff_seconds = T_prn_true_seconds - T_prn_mod_seconds; |     double T_prn_diff_seconds = T_prn_true_seconds - T_prn_mod_seconds; | ||||||
|     double N_prn_diff = acq_trk_diff_seconds / T_prn_true_seconds; |     double N_prn_diff = acq_trk_diff_seconds / T_prn_true_seconds; | ||||||
| @@ -380,7 +380,7 @@ int Gps_L1_Ca_Dll_Pll_Tracking_GPU_cc::general_work(int noutput_items __attribut | |||||||
|             // PLL to DLL assistance [Secs/Ti] |             // PLL to DLL assistance [Secs/Ti] | ||||||
|             d_pll_to_dll_assist_secs_Ti = (d_carrier_doppler_hz * CURRENT_INTEGRATION_TIME_S) / GPS_L1_FREQ_HZ; |             d_pll_to_dll_assist_secs_Ti = (d_carrier_doppler_hz * CURRENT_INTEGRATION_TIME_S) / GPS_L1_FREQ_HZ; | ||||||
|             // code Doppler frequency update |             // code Doppler frequency update | ||||||
|             d_code_freq_chips = GPS_L1_CA_CODE_RATE_HZ + ((d_carrier_doppler_hz * GPS_L1_CA_CODE_RATE_HZ) / GPS_L1_FREQ_HZ); |             d_code_freq_chips = GPS_L1_CA_CODE_RATE_CPS + ((d_carrier_doppler_hz * GPS_L1_CA_CODE_RATE_CPS) / GPS_L1_FREQ_HZ); | ||||||
|  |  | ||||||
|             // ################## DLL ########################################################## |             // ################## DLL ########################################################## | ||||||
|             // DLL discriminator |             // DLL discriminator | ||||||
| @@ -436,7 +436,7 @@ int Gps_L1_Ca_Dll_Pll_Tracking_GPU_cc::general_work(int noutput_items __attribut | |||||||
|                 { |                 { | ||||||
|                     d_cn0_estimation_counter = 0; |                     d_cn0_estimation_counter = 0; | ||||||
|                     // Code lock indicator |                     // Code lock indicator | ||||||
|                     d_CN0_SNV_dB_Hz = cn0_svn_estimator(d_Prompt_buffer.data(), FLAGS_cn0_samples, GPS_L1_CA_CODE_PERIOD); |                     d_CN0_SNV_dB_Hz = cn0_svn_estimator(d_Prompt_buffer.data(), FLAGS_cn0_samples, GPS_L1_CA_CODE_PERIOD_S); | ||||||
|                     // Carrier lock indicator |                     // Carrier lock indicator | ||||||
|                     d_carrier_lock_test = carrier_lock_detector(d_Prompt_buffer.data(), FLAGS_cn0_samples); |                     d_carrier_lock_test = carrier_lock_detector(d_Prompt_buffer.data(), FLAGS_cn0_samples); | ||||||
|                     // Loss of lock detection |                     // Loss of lock detection | ||||||
|   | |||||||
| @@ -146,7 +146,7 @@ Gps_L1_Ca_Kf_Tracking_cc::Gps_L1_Ca_Kf_Tracking_cc( | |||||||
|  |  | ||||||
|     // --- Perform initializations ------------------------------ |     // --- Perform initializations ------------------------------ | ||||||
|     // define initial code frequency basis of NCO |     // define initial code frequency basis of NCO | ||||||
|     d_code_freq_chips = GPS_L1_CA_CODE_RATE_HZ; |     d_code_freq_chips = GPS_L1_CA_CODE_RATE_CPS; | ||||||
|     // define residual code phase (in chips) |     // define residual code phase (in chips) | ||||||
|     d_rem_code_phase_samples = 0.0; |     d_rem_code_phase_samples = 0.0; | ||||||
|     // define residual carrier phase |     // define residual carrier phase | ||||||
| @@ -195,7 +195,7 @@ Gps_L1_Ca_Kf_Tracking_cc::Gps_L1_Ca_Kf_Tracking_cc( | |||||||
|     double CN_lin = pow(10, CN_dB_Hz / 10.0); |     double CN_lin = pow(10, CN_dB_Hz / 10.0); | ||||||
|  |  | ||||||
|     double sigma2_phase_detector_cycles2; |     double sigma2_phase_detector_cycles2; | ||||||
|     sigma2_phase_detector_cycles2 = (1.0 / (2.0 * CN_lin * GPS_L1_CA_CODE_PERIOD)) * (1.0 + 1.0 / (2.0 * CN_lin * GPS_L1_CA_CODE_PERIOD)); |     sigma2_phase_detector_cycles2 = (1.0 / (2.0 * CN_lin * GPS_L1_CA_CODE_PERIOD_S)) * (1.0 + 1.0 / (2.0 * CN_lin * GPS_L1_CA_CODE_PERIOD_S)); | ||||||
|  |  | ||||||
|     // covariances (static) |     // covariances (static) | ||||||
|     double sigma2_carrier_phase = GPS_TWO_PI / 4; |     double sigma2_carrier_phase = GPS_TWO_PI / 4; | ||||||
| @@ -210,12 +210,12 @@ Gps_L1_Ca_Kf_Tracking_cc::Gps_L1_Ca_Kf_Tracking_cc( | |||||||
|     kf_R(0, 0) = sigma2_phase_detector_cycles2; |     kf_R(0, 0) = sigma2_phase_detector_cycles2; | ||||||
|  |  | ||||||
|     kf_Q = arma::zeros(2, 2); |     kf_Q = arma::zeros(2, 2); | ||||||
|     kf_Q(0, 0) = pow(GPS_L1_CA_CODE_PERIOD, 4); |     kf_Q(0, 0) = pow(GPS_L1_CA_CODE_PERIOD_S, 4); | ||||||
|     kf_Q(1, 1) = GPS_L1_CA_CODE_PERIOD; |     kf_Q(1, 1) = GPS_L1_CA_CODE_PERIOD_S; | ||||||
|  |  | ||||||
|     kf_F = arma::zeros(2, 2); |     kf_F = arma::zeros(2, 2); | ||||||
|     kf_F(0, 0) = 1.0; |     kf_F(0, 0) = 1.0; | ||||||
|     kf_F(0, 1) = GPS_TWO_PI * GPS_L1_CA_CODE_PERIOD; |     kf_F(0, 1) = GPS_TWO_PI * GPS_L1_CA_CODE_PERIOD_S; | ||||||
|     kf_F(1, 0) = 0.0; |     kf_F(1, 0) = 0.0; | ||||||
|     kf_F(1, 1) = 1.0; |     kf_F(1, 1) = 1.0; | ||||||
|  |  | ||||||
| @@ -233,13 +233,13 @@ Gps_L1_Ca_Kf_Tracking_cc::Gps_L1_Ca_Kf_Tracking_cc( | |||||||
|             kf_P_x_ini(2, 2) = sigma2_doppler_rate; |             kf_P_x_ini(2, 2) = sigma2_doppler_rate; | ||||||
|  |  | ||||||
|             kf_Q = arma::zeros(3, 3); |             kf_Q = arma::zeros(3, 3); | ||||||
|             kf_Q(0, 0) = pow(GPS_L1_CA_CODE_PERIOD, 4); |             kf_Q(0, 0) = pow(GPS_L1_CA_CODE_PERIOD_S, 4); | ||||||
|             kf_Q(1, 1) = GPS_L1_CA_CODE_PERIOD; |             kf_Q(1, 1) = GPS_L1_CA_CODE_PERIOD_S; | ||||||
|             kf_Q(2, 2) = GPS_L1_CA_CODE_PERIOD; |             kf_Q(2, 2) = GPS_L1_CA_CODE_PERIOD_S; | ||||||
|  |  | ||||||
|             kf_F = arma::resize(kf_F, 3, 3); |             kf_F = arma::resize(kf_F, 3, 3); | ||||||
|             kf_F(0, 2) = 0.5 * GPS_TWO_PI * pow(GPS_L1_CA_CODE_PERIOD, 2); |             kf_F(0, 2) = 0.5 * GPS_TWO_PI * pow(GPS_L1_CA_CODE_PERIOD_S, 2); | ||||||
|             kf_F(1, 2) = GPS_L1_CA_CODE_PERIOD; |             kf_F(1, 2) = GPS_L1_CA_CODE_PERIOD_S; | ||||||
|             kf_F(2, 0) = 0.0; |             kf_F(2, 0) = 0.0; | ||||||
|             kf_F(2, 1) = 0.0; |             kf_F(2, 1) = 0.0; | ||||||
|             kf_F(2, 2) = 1.0; |             kf_F(2, 2) = 1.0; | ||||||
| @@ -293,7 +293,7 @@ void Gps_L1_Ca_Kf_Tracking_cc::start_tracking() | |||||||
|     double T_chip_mod_seconds; |     double T_chip_mod_seconds; | ||||||
|     double T_prn_mod_seconds; |     double T_prn_mod_seconds; | ||||||
|     double T_prn_mod_samples; |     double T_prn_mod_samples; | ||||||
|     d_code_freq_chips = radial_velocity * GPS_L1_CA_CODE_RATE_HZ; |     d_code_freq_chips = radial_velocity * GPS_L1_CA_CODE_RATE_CPS; | ||||||
|     d_code_phase_step_chips = static_cast<double>(d_code_freq_chips) / static_cast<double>(d_fs_in); |     d_code_phase_step_chips = static_cast<double>(d_code_freq_chips) / static_cast<double>(d_fs_in); | ||||||
|     T_chip_mod_seconds = 1 / d_code_freq_chips; |     T_chip_mod_seconds = 1 / d_code_freq_chips; | ||||||
|     T_prn_mod_seconds = T_chip_mod_seconds * GPS_L1_CA_CODE_LENGTH_CHIPS; |     T_prn_mod_seconds = T_chip_mod_seconds * GPS_L1_CA_CODE_LENGTH_CHIPS; | ||||||
| @@ -301,7 +301,7 @@ void Gps_L1_Ca_Kf_Tracking_cc::start_tracking() | |||||||
|  |  | ||||||
|     d_current_prn_length_samples = round(T_prn_mod_samples); |     d_current_prn_length_samples = round(T_prn_mod_samples); | ||||||
|  |  | ||||||
|     double T_prn_true_seconds = GPS_L1_CA_CODE_LENGTH_CHIPS / GPS_L1_CA_CODE_RATE_HZ; |     double T_prn_true_seconds = GPS_L1_CA_CODE_LENGTH_CHIPS / GPS_L1_CA_CODE_RATE_CPS; | ||||||
|     double T_prn_true_samples = T_prn_true_seconds * static_cast<double>(d_fs_in); |     double T_prn_true_samples = T_prn_true_seconds * static_cast<double>(d_fs_in); | ||||||
|     double T_prn_diff_seconds = T_prn_true_seconds - T_prn_mod_seconds; |     double T_prn_diff_seconds = T_prn_true_seconds - T_prn_mod_seconds; | ||||||
|     double N_prn_diff = acq_trk_diff_seconds / T_prn_true_seconds; |     double N_prn_diff = acq_trk_diff_seconds / T_prn_true_seconds; | ||||||
| @@ -713,7 +713,7 @@ int Gps_L1_Ca_Kf_Tracking_cc::general_work(int noutput_items __attribute__((unus | |||||||
|             // Kalman estimation (measurement update) |             // Kalman estimation (measurement update) | ||||||
|             double sigma2_phase_detector_cycles2; |             double sigma2_phase_detector_cycles2; | ||||||
|             double CN_lin = pow(10, d_CN0_SNV_dB_Hz / 10.0); |             double CN_lin = pow(10, d_CN0_SNV_dB_Hz / 10.0); | ||||||
|             sigma2_phase_detector_cycles2 = (1.0 / (2.0 * CN_lin * GPS_L1_CA_CODE_PERIOD)) * (1.0 + 1.0 / (2.0 * CN_lin * GPS_L1_CA_CODE_PERIOD)); |             sigma2_phase_detector_cycles2 = (1.0 / (2.0 * CN_lin * GPS_L1_CA_CODE_PERIOD_S)) * (1.0 + 1.0 / (2.0 * CN_lin * GPS_L1_CA_CODE_PERIOD_S)); | ||||||
|  |  | ||||||
|             kf_y(0) = d_carr_phase_error_rad;  // measurement vector |             kf_y(0) = d_carr_phase_error_rad;  // measurement vector | ||||||
|             kf_R(0, 0) = sigma2_phase_detector_cycles2; |             kf_R(0, 0) = sigma2_phase_detector_cycles2; | ||||||
| @@ -754,7 +754,7 @@ int Gps_L1_Ca_Kf_Tracking_cc::general_work(int noutput_items __attribute__((unus | |||||||
|  |  | ||||||
|             // ################## DLL ########################################################## |             // ################## DLL ########################################################## | ||||||
|             // New code Doppler frequency estimation based on carrier frequency estimation |             // New code Doppler frequency estimation based on carrier frequency estimation | ||||||
|             d_code_freq_chips = GPS_L1_CA_CODE_RATE_HZ + ((d_carrier_doppler_hz * GPS_L1_CA_CODE_RATE_HZ) / GPS_L1_FREQ_HZ); |             d_code_freq_chips = GPS_L1_CA_CODE_RATE_CPS + ((d_carrier_doppler_hz * GPS_L1_CA_CODE_RATE_CPS) / GPS_L1_FREQ_HZ); | ||||||
|             // DLL discriminator |             // DLL discriminator | ||||||
|             code_error_chips = dll_nc_e_minus_l_normalized(d_correlator_outs[0], d_correlator_outs[2]);  // [chips/Ti] early and late |             code_error_chips = dll_nc_e_minus_l_normalized(d_correlator_outs[0], d_correlator_outs[2]);  // [chips/Ti] early and late | ||||||
|             // Code discriminator filter |             // Code discriminator filter | ||||||
| @@ -794,7 +794,7 @@ int Gps_L1_Ca_Kf_Tracking_cc::general_work(int noutput_items __attribute__((unus | |||||||
|                 { |                 { | ||||||
|                     d_cn0_estimation_counter = 0; |                     d_cn0_estimation_counter = 0; | ||||||
|                     // Code lock indicator |                     // Code lock indicator | ||||||
|                     d_CN0_SNV_dB_Hz = cn0_svn_estimator(d_Prompt_buffer.data(), FLAGS_cn0_samples, GPS_L1_CA_CODE_PERIOD); |                     d_CN0_SNV_dB_Hz = cn0_svn_estimator(d_Prompt_buffer.data(), FLAGS_cn0_samples, GPS_L1_CA_CODE_PERIOD_S); | ||||||
|                     // Carrier lock indicator |                     // Carrier lock indicator | ||||||
|                     d_carrier_lock_test = carrier_lock_detector(d_Prompt_buffer.data(), FLAGS_cn0_samples); |                     d_carrier_lock_test = carrier_lock_detector(d_Prompt_buffer.data(), FLAGS_cn0_samples); | ||||||
|                     // Loss of lock detection |                     // Loss of lock detection | ||||||
|   | |||||||
| @@ -131,7 +131,7 @@ Gps_L1_Ca_Tcp_Connector_Tracking_cc::Gps_L1_Ca_Tcp_Connector_Tracking_cc( | |||||||
|  |  | ||||||
|     // --- Perform initializations ------------------------------ |     // --- Perform initializations ------------------------------ | ||||||
|     // define initial code frequency basis of NCO |     // define initial code frequency basis of NCO | ||||||
|     d_code_freq_hz = GPS_L1_CA_CODE_RATE_HZ; |     d_code_freq_hz = GPS_L1_CA_CODE_RATE_CPS; | ||||||
|     // define residual code phase (in chips) |     // define residual code phase (in chips) | ||||||
|     d_rem_code_phase_samples = 0.0; |     d_rem_code_phase_samples = 0.0; | ||||||
|     // define residual carrier phase |     // define residual carrier phase | ||||||
| @@ -197,7 +197,7 @@ void Gps_L1_Ca_Tcp_Connector_Tracking_cc::start_tracking() | |||||||
|     float T_chip_mod_seconds; |     float T_chip_mod_seconds; | ||||||
|     float T_prn_mod_seconds; |     float T_prn_mod_seconds; | ||||||
|     float T_prn_mod_samples; |     float T_prn_mod_samples; | ||||||
|     d_code_freq_hz = radial_velocity * GPS_L1_CA_CODE_RATE_HZ; |     d_code_freq_hz = radial_velocity * GPS_L1_CA_CODE_RATE_CPS; | ||||||
|     d_code_phase_step_chips = static_cast<double>(d_code_freq_hz) / static_cast<double>(d_fs_in); |     d_code_phase_step_chips = static_cast<double>(d_code_freq_hz) / static_cast<double>(d_fs_in); | ||||||
|     T_chip_mod_seconds = 1 / d_code_freq_hz; |     T_chip_mod_seconds = 1 / d_code_freq_hz; | ||||||
|     T_prn_mod_seconds = T_chip_mod_seconds * GPS_L1_CA_CODE_LENGTH_CHIPS; |     T_prn_mod_seconds = T_chip_mod_seconds * GPS_L1_CA_CODE_LENGTH_CHIPS; | ||||||
| @@ -205,7 +205,7 @@ void Gps_L1_Ca_Tcp_Connector_Tracking_cc::start_tracking() | |||||||
|  |  | ||||||
|     d_next_prn_length_samples = std::round(T_prn_mod_samples); |     d_next_prn_length_samples = std::round(T_prn_mod_samples); | ||||||
|  |  | ||||||
|     float T_prn_true_seconds = GPS_L1_CA_CODE_LENGTH_CHIPS / GPS_L1_CA_CODE_RATE_HZ; |     float T_prn_true_seconds = GPS_L1_CA_CODE_LENGTH_CHIPS / GPS_L1_CA_CODE_RATE_CPS; | ||||||
|     float T_prn_true_samples = T_prn_true_seconds * static_cast<float>(d_fs_in); |     float T_prn_true_samples = T_prn_true_seconds * static_cast<float>(d_fs_in); | ||||||
|     float T_prn_diff_seconds; |     float T_prn_diff_seconds; | ||||||
|     T_prn_diff_seconds = T_prn_true_seconds - T_prn_mod_seconds; |     T_prn_diff_seconds = T_prn_true_seconds - T_prn_mod_seconds; | ||||||
| @@ -407,7 +407,7 @@ int Gps_L1_Ca_Tcp_Connector_Tracking_cc::general_work(int noutput_items __attrib | |||||||
|             // Modify carrier freq based on NCO command |             // Modify carrier freq based on NCO command | ||||||
|             d_carrier_doppler_hz = tcp_data.proc_pack_carrier_doppler_hz; |             d_carrier_doppler_hz = tcp_data.proc_pack_carrier_doppler_hz; | ||||||
|             // Modify code freq based on NCO command |             // Modify code freq based on NCO command | ||||||
|             code_nco = 1 / (1 / GPS_L1_CA_CODE_RATE_HZ - code_error / GPS_L1_CA_CODE_LENGTH_CHIPS); |             code_nco = 1 / (1 / GPS_L1_CA_CODE_RATE_CPS - code_error / GPS_L1_CA_CODE_LENGTH_CHIPS); | ||||||
|             d_code_freq_hz = code_nco; |             d_code_freq_hz = code_nco; | ||||||
|  |  | ||||||
|             // Update the phasestep based on code freq (variable) and |             // Update the phasestep based on code freq (variable) and | ||||||
| @@ -425,7 +425,7 @@ int Gps_L1_Ca_Tcp_Connector_Tracking_cc::general_work(int noutput_items __attrib | |||||||
|             K_blk_samples = T_prn_samples + d_rem_code_phase_samples;  // -code_error*(double)d_fs_in; |             K_blk_samples = T_prn_samples + d_rem_code_phase_samples;  // -code_error*(double)d_fs_in; | ||||||
|  |  | ||||||
|             // Update the current PRN delay (code phase in samples) |             // Update the current PRN delay (code phase in samples) | ||||||
|             double T_prn_true_seconds = GPS_L1_CA_CODE_LENGTH_CHIPS / GPS_L1_CA_CODE_RATE_HZ; |             double T_prn_true_seconds = GPS_L1_CA_CODE_LENGTH_CHIPS / GPS_L1_CA_CODE_RATE_CPS; | ||||||
|             double T_prn_true_samples = T_prn_true_seconds * static_cast<double>(d_fs_in); |             double T_prn_true_samples = T_prn_true_seconds * static_cast<double>(d_fs_in); | ||||||
|             d_code_phase_samples = d_code_phase_samples + T_prn_samples - T_prn_true_samples; |             d_code_phase_samples = d_code_phase_samples + T_prn_samples - T_prn_true_samples; | ||||||
|             if (d_code_phase_samples < 0) |             if (d_code_phase_samples < 0) | ||||||
| @@ -450,7 +450,7 @@ int Gps_L1_Ca_Tcp_Connector_Tracking_cc::general_work(int noutput_items __attrib | |||||||
|             else |             else | ||||||
|                 { |                 { | ||||||
|                     d_cn0_estimation_counter = 0; |                     d_cn0_estimation_counter = 0; | ||||||
|                     d_CN0_SNV_dB_Hz = cn0_svn_estimator(d_Prompt_buffer.data(), FLAGS_cn0_samples, GPS_L1_CA_CODE_PERIOD); |                     d_CN0_SNV_dB_Hz = cn0_svn_estimator(d_Prompt_buffer.data(), FLAGS_cn0_samples, GPS_L1_CA_CODE_PERIOD_S); | ||||||
|                     d_carrier_lock_test = carrier_lock_detector(d_Prompt_buffer.data(), FLAGS_cn0_samples); |                     d_carrier_lock_test = carrier_lock_detector(d_Prompt_buffer.data(), FLAGS_cn0_samples); | ||||||
|  |  | ||||||
|                     // ###### TRACKING UNLOCK NOTIFICATION ##### |                     // ###### TRACKING UNLOCK NOTIFICATION ##### | ||||||
|   | |||||||
| @@ -398,22 +398,22 @@ void GNSSFlowgraph::connect() | |||||||
|                                     switch (mapStringValues_[channels_.at(i)->implementation()]) |                                     switch (mapStringValues_[channels_.at(i)->implementation()]) | ||||||
|                                         { |                                         { | ||||||
|                                         case evGPS_1C: |                                         case evGPS_1C: | ||||||
|                                             acq_fs = GPS_L1_CA_OPT_ACQ_FS_HZ; |                                             acq_fs = GPS_L1_CA_OPT_ACQ_FS_SPS; | ||||||
|                                             break; |                                             break; | ||||||
|                                         case evGPS_2S: |                                         case evGPS_2S: | ||||||
|                                             acq_fs = GPS_L2C_OPT_ACQ_FS_HZ; |                                             acq_fs = GPS_L2C_OPT_ACQ_FS_SPS; | ||||||
|                                             break; |                                             break; | ||||||
|                                         case evGPS_L5: |                                         case evGPS_L5: | ||||||
|                                             acq_fs = GPS_L5_OPT_ACQ_FS_HZ; |                                             acq_fs = GPS_L5_OPT_ACQ_FS_SPS; | ||||||
|                                             break; |                                             break; | ||||||
|                                         case evSBAS_1C: |                                         case evSBAS_1C: | ||||||
|                                             acq_fs = GPS_L1_CA_OPT_ACQ_FS_HZ; |                                             acq_fs = GPS_L1_CA_OPT_ACQ_FS_SPS; | ||||||
|                                             break; |                                             break; | ||||||
|                                         case evGAL_1B: |                                         case evGAL_1B: | ||||||
|                                             acq_fs = GALILEO_E1_OPT_ACQ_FS_HZ; |                                             acq_fs = GALILEO_E1_OPT_ACQ_FS_SPS; | ||||||
|                                             break; |                                             break; | ||||||
|                                         case evGAL_5X: |                                         case evGAL_5X: | ||||||
|                                             acq_fs = GALILEO_E5A_OPT_ACQ_FS_HZ; |                                             acq_fs = GALILEO_E5A_OPT_ACQ_FS_SPS; | ||||||
|                                             break; |                                             break; | ||||||
|                                         case evGLO_1G: |                                         case evGLO_1G: | ||||||
|                                             acq_fs = fs; |                                             acq_fs = fs; | ||||||
| @@ -1222,7 +1222,7 @@ void GNSSFlowgraph::acquisition_manager(unsigned int who) | |||||||
|                         } |                         } | ||||||
|                     else |                     else | ||||||
|                         { |                         { | ||||||
|                     		channels_[current_channel]->set_signal(channels_[current_channel]->get_signal()); |                             channels_[current_channel]->set_signal(channels_[current_channel]->get_signal()); | ||||||
|                             start_acquisition = true; |                             start_acquisition = true; | ||||||
|                         } |                         } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -38,9 +38,9 @@ | |||||||
|  |  | ||||||
| // carrier and code frequencies | // carrier and code frequencies | ||||||
| const double BEIDOU_B1I_FREQ_HZ = 1.561098e9;        //!< B1I [Hz] | const double BEIDOU_B1I_FREQ_HZ = 1.561098e9;        //!< B1I [Hz] | ||||||
| const double BEIDOU_B1I_CODE_RATE_HZ = 2.046e6;      //!< Beidou B1I code rate [chips/s] | const double BEIDOU_B1I_CODE_RATE_CPS = 2.046e6;     //!< Beidou B1I code rate [chips/s] | ||||||
| const double BEIDOU_B1I_CODE_LENGTH_CHIPS = 2046.0;  //!< Beidou B1I code length [chips] | const double BEIDOU_B1I_CODE_LENGTH_CHIPS = 2046.0;  //!< Beidou B1I code length [chips] | ||||||
| const double BEIDOU_B1I_CODE_PERIOD = 0.001;         //!< Beidou B1I code period [seconds] | const double BEIDOU_B1I_CODE_PERIOD_S = 0.001;       //!< Beidou B1I code period [seconds] | ||||||
| const uint32_t BEIDOU_B1I_CODE_PERIOD_MS = 1;        //!< Beidou B1I code period [ms] | const uint32_t BEIDOU_B1I_CODE_PERIOD_MS = 1;        //!< Beidou B1I code period [ms] | ||||||
| const int32_t BEIDOU_B1I_SECONDARY_CODE_LENGTH = 20; | const int32_t BEIDOU_B1I_SECONDARY_CODE_LENGTH = 20; | ||||||
| const std::string BEIDOU_B1I_SECONDARY_CODE_STR = "00000100110101001110"; | const std::string BEIDOU_B1I_SECONDARY_CODE_STR = "00000100110101001110"; | ||||||
|   | |||||||
| @@ -37,9 +37,9 @@ | |||||||
|  |  | ||||||
| // carrier and code frequencies | // carrier and code frequencies | ||||||
| const double BEIDOU_B3I_FREQ_HZ = 1.268520e9;         //!< BeiDou B3I [Hz] | const double BEIDOU_B3I_FREQ_HZ = 1.268520e9;         //!< BeiDou B3I [Hz] | ||||||
| const double BEIDOU_B3I_CODE_RATE_HZ = 10.23e6;       //!< BeiDou B3I code rate [chips/s] | const double BEIDOU_B3I_CODE_RATE_CPS = 10.23e6;      //!< BeiDou B3I code rate [chips/s] | ||||||
| const double BEIDOU_B3I_CODE_LENGTH_CHIPS = 10230.0;  //!< BeiDou B3I code length [chips] | const double BEIDOU_B3I_CODE_LENGTH_CHIPS = 10230.0;  //!< BeiDou B3I code length [chips] | ||||||
| const double BEIDOU_B3I_CODE_PERIOD = 0.001;          //!< BeiDou B3I code period [seconds] | const double BEIDOU_B3I_CODE_PERIOD_S = 0.001;        //!< BeiDou B3I code period [seconds] | ||||||
| const uint32_t BEIDOU_B3I_CODE_PERIOD_MS = 1;         //!< BeiDou B3I code period [ms] | const uint32_t BEIDOU_B3I_CODE_PERIOD_MS = 1;         //!< BeiDou B3I code period [ms] | ||||||
| const int32_t BEIDOU_B3I_SECONDARY_CODE_LENGTH = 20; | const int32_t BEIDOU_B3I_SECONDARY_CODE_LENGTH = 20; | ||||||
| const std::string BEIDOU_B3I_SECONDARY_CODE_STR = "00000100110101001110"; | const std::string BEIDOU_B3I_SECONDARY_CODE_STR = "00000100110101001110"; | ||||||
|   | |||||||
| @@ -81,20 +81,20 @@ const double GLONASS_SUN_GM = 0.1325263e12;            //!< Solar gravitational | |||||||
| const double GLONASS_SUN_SEMI_MAJOR_AXIS = 1.49598e8;  //!< Semi-major axis of solar orbit [km]; | const double GLONASS_SUN_SEMI_MAJOR_AXIS = 1.49598e8;  //!< Semi-major axis of solar orbit [km]; | ||||||
| const double GLONASS_SUN_ECCENTRICITY = 0.016719;      //!< Eccentricity of solar orbit | const double GLONASS_SUN_ECCENTRICITY = 0.016719;      //!< Eccentricity of solar orbit | ||||||
|  |  | ||||||
| const double GLONASS_L2_CA_FREQ_HZ = FREQ2_GLO;        //!< L2 [Hz] | const double GLONASS_L2_CA_FREQ_HZ = FREQ2_GLO;         //!< L2 [Hz] | ||||||
| const double GLONASS_L2_CA_DFREQ_HZ = DFRQ2_GLO;       //!< Freq Bias for GLONASS L1 [Hz] | const double GLONASS_L2_CA_DFREQ_HZ = DFRQ2_GLO;        //!< Freq Bias for GLONASS L1 [Hz] | ||||||
| const double GLONASS_L2_CA_CODE_RATE_HZ = 0.511e6;     //!< GLONASS L1 C/A code rate [chips/s] | const double GLONASS_L2_CA_CODE_RATE_CPS = 0.511e6;     //!< GLONASS L1 C/A code rate [chips/s] | ||||||
| const double GLONASS_L2_CA_CODE_LENGTH_CHIPS = 511.0;  //!< GLONASS L1 C/A code length [chips] | const double GLONASS_L2_CA_CODE_LENGTH_CHIPS = 511.0;   //!< GLONASS L1 C/A code length [chips] | ||||||
| const double GLONASS_L2_CA_CODE_PERIOD = 0.001;        //!< GLONASS L1 C/A code period [seconds] | const double GLONASS_L2_CA_CODE_PERIOD_S = 0.001;       //!< GLONASS L1 C/A code period [seconds] | ||||||
| const double GLONASS_L2_CA_CHIP_PERIOD = 1.9569e-06;   //!< GLONASS L1 C/A chip period [seconds] | const double GLONASS_L2_CA_CHIP_PERIOD_S = 1.9569e-06;  //!< GLONASS L1 C/A chip period [seconds] | ||||||
| const double GLONASS_L2_CA_SYMBOL_RATE_BPS = 1000; | const double GLONASS_L2_CA_SYMBOL_RATE_BPS = 1000; | ||||||
|  |  | ||||||
| const double GLONASS_L1_CA_FREQ_HZ = FREQ1_GLO;        //!< L1 [Hz] | const double GLONASS_L1_CA_FREQ_HZ = FREQ1_GLO;         //!< L1 [Hz] | ||||||
| const double GLONASS_L1_CA_DFREQ_HZ = DFRQ1_GLO;       //!< Freq Bias for GLONASS L1 [Hz] | const double GLONASS_L1_CA_DFREQ_HZ = DFRQ1_GLO;        //!< Freq Bias for GLONASS L1 [Hz] | ||||||
| const double GLONASS_L1_CA_CODE_RATE_HZ = 0.511e6;     //!< GLONASS L1 C/A code rate [chips/s] | const double GLONASS_L1_CA_CODE_RATE_CPS = 0.511e6;     //!< GLONASS L1 C/A code rate [chips/s] | ||||||
| const double GLONASS_L1_CA_CODE_LENGTH_CHIPS = 511.0;  //!< GLONASS L1 C/A code length [chips] | const double GLONASS_L1_CA_CODE_LENGTH_CHIPS = 511.0;   //!< GLONASS L1 C/A code length [chips] | ||||||
| const double GLONASS_L1_CA_CODE_PERIOD = 0.001;        //!< GLONASS L1 C/A code period [seconds] | const double GLONASS_L1_CA_CODE_PERIOD_S = 0.001;       //!< GLONASS L1 C/A code period [seconds] | ||||||
| const double GLONASS_L1_CA_CHIP_PERIOD = 1.9569e-06;   //!< GLONASS L1 C/A chip period [seconds] | const double GLONASS_L1_CA_CHIP_PERIOD_S = 1.9569e-06;  //!< GLONASS L1 C/A chip period [seconds] | ||||||
| const double GLONASS_L1_CA_SYMBOL_RATE_BPS = 1000; | const double GLONASS_L1_CA_SYMBOL_RATE_BPS = 1000; | ||||||
|  |  | ||||||
| const int32_t GLONASS_CA_NBR_SATS = 24;  // STRING DATA WITHOUT PREAMBLE | const int32_t GLONASS_CA_NBR_SATS = 24;  // STRING DATA WITHOUT PREAMBLE | ||||||
|   | |||||||
| @@ -52,15 +52,15 @@ const double F = -4.442807633e-10;                       //!< Constant, [s/(m)^( | |||||||
|  |  | ||||||
| // carrier and code frequencies | // carrier and code frequencies | ||||||
| const double GPS_L1_FREQ_HZ = FREQ1;                //!< L1 [Hz] | const double GPS_L1_FREQ_HZ = FREQ1;                //!< L1 [Hz] | ||||||
| const double GPS_L1_CA_CODE_RATE_HZ = 1.023e6;      //!< GPS L1 C/A code rate [chips/s] | const double GPS_L1_CA_CODE_RATE_CPS = 1.023e6;     //!< GPS L1 C/A code rate [chips/s] | ||||||
| const double GPS_L1_CA_CODE_LENGTH_CHIPS = 1023.0;  //!< GPS L1 C/A code length [chips] | const double GPS_L1_CA_CODE_LENGTH_CHIPS = 1023.0;  //!< GPS L1 C/A code length [chips] | ||||||
| const double GPS_L1_CA_CODE_PERIOD = 0.001;         //!< GPS L1 C/A code period [seconds] | const double GPS_L1_CA_CODE_PERIOD_S = 0.001;       //!< GPS L1 C/A code period [seconds] | ||||||
| const uint32_t GPS_L1_CA_CODE_PERIOD_MS = 1U;       //!< GPS L1 C/A code period [ms] | const uint32_t GPS_L1_CA_CODE_PERIOD_MS = 1U;       //!< GPS L1 C/A code period [ms] | ||||||
| const uint32_t GPS_L1_CA_BIT_PERIOD_MS = 20U;       //!< GPS L1 C/A bit period [ms] | const uint32_t GPS_L1_CA_BIT_PERIOD_MS = 20U;       //!< GPS L1 C/A bit period [ms] | ||||||
| const double GPS_L1_CA_CHIP_PERIOD = 9.7752e-07;    //!< GPS L1 C/A chip period [seconds] | const double GPS_L1_CA_CHIP_PERIOD_S = 9.7752e-07;  //!< GPS L1 C/A chip period [seconds] | ||||||
|  |  | ||||||
| // optimum parameters | // optimum parameters | ||||||
| const uint32_t GPS_L1_CA_OPT_ACQ_FS_HZ = 2000000;  //!< Sampling frequency that maximizes the acquisition SNR while using a non-multiple of chip rate | const uint32_t GPS_L1_CA_OPT_ACQ_FS_SPS = 2000000;  //!< Sampling frequency that maximizes the acquisition SNR while using a non-multiple of chip rate | ||||||
|  |  | ||||||
| /*! | /*! | ||||||
|  * \brief Maximum Time-Of-Arrival (TOA) difference between satellites for a receiver operated on Earth surface is 20 ms |  * \brief Maximum Time-Of-Arrival (TOA) difference between satellites for a receiver operated on Earth surface is 20 ms | ||||||
|   | |||||||
| @@ -53,18 +53,18 @@ const double GPS_L2_F = -4.442807633e-10;               //!< Constant, [s/(m)^(1 | |||||||
| // carrier and code frequencies | // carrier and code frequencies | ||||||
| const double GPS_L2_FREQ_HZ = FREQ2;  //!< L2 [Hz] | const double GPS_L2_FREQ_HZ = FREQ2;  //!< L2 [Hz] | ||||||
|  |  | ||||||
| const double GPS_L2_M_CODE_RATE_HZ = 0.5115e6;     //!< GPS L2 M code rate [chips/s] | const double GPS_L2_M_CODE_RATE_CPS = 0.5115e6;    //!< GPS L2 M code rate [chips/s] | ||||||
| const int32_t GPS_L2_M_CODE_LENGTH_CHIPS = 10230;  //!< GPS L2 M code length [chips] | const int32_t GPS_L2_M_CODE_LENGTH_CHIPS = 10230;  //!< GPS L2 M code length [chips] | ||||||
| const double GPS_L2_M_PERIOD = 0.02;               //!< GPS L2 M code period [seconds] | const double GPS_L2_M_PERIOD_S = 0.02;               //!< GPS L2 M code period [seconds] | ||||||
|  |  | ||||||
| const double GPS_L2_L_CODE_RATE_HZ = 0.5115e6;      //!< GPS L2 L code rate [chips/s] | const double GPS_L2_L_CODE_RATE_CPS = 0.5115e6;     //!< GPS L2 L code rate [chips/s] | ||||||
| const int32_t GPS_L2_L_CODE_LENGTH_CHIPS = 767250;  //!< GPS L2 L code length [chips] | const int32_t GPS_L2_L_CODE_LENGTH_CHIPS = 767250;  //!< GPS L2 L code length [chips] | ||||||
| const double GPS_L2_L_PERIOD = 1.5;                 //!< GPS L2 L code period [seconds] | const double GPS_L2_L_PERIOD_S = 1.5;                 //!< GPS L2 L code period [seconds] | ||||||
|  |  | ||||||
| const int32_t GPS_L2C_HISTORY_DEEP = 5; | const int32_t GPS_L2C_HISTORY_DEEP = 5; | ||||||
|  |  | ||||||
| // optimum parameters | // optimum parameters | ||||||
| const uint32_t GPS_L2C_OPT_ACQ_FS_HZ = 2000000;  //!< Sampling frequency that maximizes the acquisition SNR while using a non-multiple of chip rate | const uint32_t GPS_L2C_OPT_ACQ_FS_SPS = 2000000;  //!< Sampling frequency that maximizes the acquisition SNR while using a non-multiple of chip rate | ||||||
|  |  | ||||||
|  |  | ||||||
| const int32_t GPS_L2C_M_INIT_REG[115] = | const int32_t GPS_L2C_M_INIT_REG[115] = | ||||||
|   | |||||||
| @@ -51,21 +51,21 @@ const double GPS_L5_F = -4.442807633e-10;               //!< Constant, [s/(m)^(1 | |||||||
| // carrier and code frequencies | // carrier and code frequencies | ||||||
| const double GPS_L5_FREQ_HZ = FREQ5;  //!< L5 [Hz] | const double GPS_L5_FREQ_HZ = FREQ5;  //!< L5 [Hz] | ||||||
|  |  | ||||||
| const double GPS_L5I_CODE_RATE_HZ = 10.23e6;      //!< GPS L5i code rate [chips/s] | const double GPS_L5I_CODE_RATE_CPS = 10.23e6;     //!< GPS L5i code rate [chips/s] | ||||||
| const int32_t GPS_L5I_CODE_LENGTH_CHIPS = 10230;  //!< GPS L5i  code length [chips] | const int32_t GPS_L5I_CODE_LENGTH_CHIPS = 10230;  //!< GPS L5i  code length [chips] | ||||||
| const double GPS_L5I_PERIOD = 0.001;              //!< GPS L5 code period [seconds] | const double GPS_L5I_PERIOD_S = 0.001;            //!< GPS L5 code period [seconds] | ||||||
| const int32_t GPS_L5I_PERIOD_MS = 1;              //!< GPS L5 code period [ms] | const int32_t GPS_L5I_PERIOD_MS = 1;              //!< GPS L5 code period [ms] | ||||||
| const double GPS_L5I_SYMBOL_PERIOD = 0.01;        //!< GPS L5 symbol period [seconds] | const double GPS_L5I_SYMBOL_PERIOD_S = 0.01;      //!< GPS L5 symbol period [seconds] | ||||||
| const int32_t GPS_L5I_SYMBOL_PERIOD_MS = 10;      //!< GPS L5 symbol period [ms] | const int32_t GPS_L5I_SYMBOL_PERIOD_MS = 10;      //!< GPS L5 symbol period [ms] | ||||||
|  |  | ||||||
| const double GPS_L5Q_CODE_RATE_HZ = 10.23e6;      //!< GPS L5i code rate [chips/s] | const double GPS_L5Q_CODE_RATE_CPS = 10.23e6;     //!< GPS L5i code rate [chips/s] | ||||||
| const int32_t GPS_L5Q_CODE_LENGTH_CHIPS = 10230;  //!< GPS L5i code length [chips] | const int32_t GPS_L5Q_CODE_LENGTH_CHIPS = 10230;  //!< GPS L5i code length [chips] | ||||||
| const double GPS_L5Q_PERIOD = 0.001;              //!< GPS L5 code period [seconds] | const double GPS_L5Q_PERIOD_S = 0.001;            //!< GPS L5 code period [seconds] | ||||||
|  |  | ||||||
| const int32_t GPS_L5_HISTORY_DEEP = 5; | const int32_t GPS_L5_HISTORY_DEEP = 5; | ||||||
|  |  | ||||||
| // optimum parameters | // optimum parameters | ||||||
| const uint32_t GPS_L5_OPT_ACQ_FS_HZ = 10000000;  //!< Sampling frequency that maximizes the acquisition SNR while using a non-multiple of chip rate | const uint32_t GPS_L5_OPT_ACQ_FS_SPS = 10000000;  //!< Sampling frequency that maximizes the acquisition SNR while using a non-multiple of chip rate | ||||||
|  |  | ||||||
| const int32_t GPS_L5I_INIT_REG[210] = | const int32_t GPS_L5I_INIT_REG[210] = | ||||||
|     {266, 365, 804, 1138, |     {266, 365, 804, 1138, | ||||||
|   | |||||||
| @@ -52,8 +52,8 @@ const double GALILEO_F = -4.442807309e-10;               //!< Constant, [s/(m)^( | |||||||
|  |  | ||||||
| // carrier and code frequencies | // carrier and code frequencies | ||||||
| const double GALILEO_E1_FREQ_HZ = FREQ1;                  //!< Galileo E1 carrier frequency [Hz] | const double GALILEO_E1_FREQ_HZ = FREQ1;                  //!< Galileo E1 carrier frequency [Hz] | ||||||
| const double GALILEO_E1_CODE_CHIP_RATE_HZ = 1.023e6;      //!< Galileo E1 code rate [chips/s] | const double GALILEO_E1_CODE_CHIP_RATE_CPS = 1.023e6;     //!< Galileo E1 code rate [chips/s] | ||||||
| const double GALILEO_E1_CODE_PERIOD = 0.004;              //!< Galileo E1 code period [s] | const double GALILEO_E1_CODE_PERIOD_S = 0.004;            //!< Galileo E1 code period [s] | ||||||
| const int32_t GALILEO_E1_CODE_PERIOD_MS = 4;              //!< Galileo E1 code period [ms] | const int32_t GALILEO_E1_CODE_PERIOD_MS = 4;              //!< Galileo E1 code period [ms] | ||||||
| const double GALILEO_E1_SUB_CARRIER_A_RATE_HZ = 1.023e6;  //!< Galileo E1 sub-carrier 'a' rate [Hz] | const double GALILEO_E1_SUB_CARRIER_A_RATE_HZ = 1.023e6;  //!< Galileo E1 sub-carrier 'a' rate [Hz] | ||||||
| const double GALILEO_E1_SUB_CARRIER_B_RATE_HZ = 6.138e6;  //!< Galileo E1 sub-carrier 'b' rate [Hz] | const double GALILEO_E1_SUB_CARRIER_B_RATE_HZ = 6.138e6;  //!< Galileo E1 sub-carrier 'b' rate [Hz] | ||||||
| @@ -65,7 +65,7 @@ const int32_t GALILEO_E1_NUMBER_OF_CODES = 50; | |||||||
|  |  | ||||||
|  |  | ||||||
| // optimum parameters | // optimum parameters | ||||||
| const uint32_t GALILEO_E1_OPT_ACQ_FS_HZ = 2000000;  //!< Sampling frequency that maximizes the acquisition SNR while using a non-multiple of chip rate | const uint32_t GALILEO_E1_OPT_ACQ_FS_SPS = 2000000;  //!< Sampling frequency that maximizes the acquisition SNR while using a non-multiple of chip rate | ||||||
|  |  | ||||||
|  |  | ||||||
| const double GALILEO_STARTOFFSET_MS = 68.802;  // [ms] Initial sign. travel time (this cannot go here) | const double GALILEO_STARTOFFSET_MS = 68.802;  // [ms] Initial sign. travel time (this cannot go here) | ||||||
| @@ -79,7 +79,7 @@ const int32_t GALILEO_E1_HISTORY_DEEP = 100; | |||||||
| const std::string GALILEO_INAV_PREAMBLE = {"0101100000"}; | const std::string GALILEO_INAV_PREAMBLE = {"0101100000"}; | ||||||
|  |  | ||||||
| const int32_t GALILEO_INAV_PREAMBLE_LENGTH_BITS = 10; | const int32_t GALILEO_INAV_PREAMBLE_LENGTH_BITS = 10; | ||||||
| const double GALILEO_INAV_PAGE_PART_WITH_PREABLE_SECONDS = 2.0 + GALILEO_INAV_PREAMBLE_LENGTH_BITS * GALILEO_E1_CODE_PERIOD; | const double GALILEO_INAV_PAGE_PART_WITH_PREABLE_SECONDS = 2.0 + GALILEO_INAV_PREAMBLE_LENGTH_BITS * GALILEO_E1_CODE_PERIOD_S; | ||||||
| const int32_t GALILEO_INAV_PREAMBLE_PERIOD_SYMBOLS = 250; | const int32_t GALILEO_INAV_PREAMBLE_PERIOD_SYMBOLS = 250; | ||||||
| const int32_t GALILEO_INAV_PAGE_PART_SYMBOLS = 250;  //!< Each Galileo INAV pages are composed of two parts (even and odd) each of 250 symbols, including preamble. See Galileo ICD 4.3.2 | const int32_t GALILEO_INAV_PAGE_PART_SYMBOLS = 250;  //!< Each Galileo INAV pages are composed of two parts (even and odd) each of 250 symbols, including preamble. See Galileo ICD 4.3.2 | ||||||
| const int32_t GALILEO_INAV_PAGE_SYMBOLS = 500;       //!< The complete Galileo INAV page length | const int32_t GALILEO_INAV_PAGE_SYMBOLS = 500;       //!< The complete Galileo INAV page length | ||||||
|   | |||||||
| @@ -41,13 +41,13 @@ | |||||||
|  |  | ||||||
| // Carrier and code frequencies | // Carrier and code frequencies | ||||||
| const double GALILEO_E5A_FREQ_HZ = FREQ5;                 //!< Galileo E5a carrier frequency [Hz] | const double GALILEO_E5A_FREQ_HZ = FREQ5;                 //!< Galileo E5a carrier frequency [Hz] | ||||||
| const double GALILEO_E5A_CODE_CHIP_RATE_HZ = 1.023e7;     //!< Galileo E5a code rate [chips/s] | const double GALILEO_E5A_CODE_CHIP_RATE_CPS = 1.023e7;    //!< Galileo E5a code rate [chips/s] | ||||||
| const double GALILEO_E5A_I_TIERED_CODE_PERIOD = 0.020;    //!< Galileo E5a-I tiered code period [s] | const double GALILEO_E5A_I_TIERED_CODE_PERIOD_S = 0.020;  //!< Galileo E5a-I tiered code period [s] | ||||||
| const double GALILEO_E5A_Q_TIERED_CODE_PERIOD = 0.100;    //!< Galileo E5a-Q tiered code period [s] | const double GALILEO_E5A_Q_TIERED_CODE_PERIOD_S = 0.100;  //!< Galileo E5a-Q tiered code period [s] | ||||||
| const int32_t GALILEO_E5A_CODE_LENGTH_CHIPS = 10230;      //!< Galileo E5a primary code length [chips] | const int32_t GALILEO_E5A_CODE_LENGTH_CHIPS = 10230;      //!< Galileo E5a primary code length [chips] | ||||||
| const int32_t GALILEO_E5A_I_SECONDARY_CODE_LENGTH = 20;   //!< Galileo E5a-I secondary code length [chips] | const int32_t GALILEO_E5A_I_SECONDARY_CODE_LENGTH = 20;   //!< Galileo E5a-I secondary code length [chips] | ||||||
| const int32_t GALILEO_E5A_Q_SECONDARY_CODE_LENGTH = 100;  //!< Galileo E5a-Q secondary code length [chips] | const int32_t GALILEO_E5A_Q_SECONDARY_CODE_LENGTH = 100;  //!< Galileo E5a-Q secondary code length [chips] | ||||||
| const double GALILEO_E5A_CODE_PERIOD = 0.001;             //!< Galileo E1 primary code period [s] | const double GALILEO_E5A_CODE_PERIOD_S = 0.001;           //!< Galileo E1 primary code period [s] | ||||||
| const int32_t GALILEO_E5A_CODE_PERIOD_MS = 1;             //!< Galileo E1 primary code period [ms] | const int32_t GALILEO_E5A_CODE_PERIOD_MS = 1;             //!< Galileo E1 primary code period [ms] | ||||||
| const int32_t GALILEO_E5A_SYMBOL_RATE_BPS = 50;           //!< Galileo E5a symbol rate [bits/second] | const int32_t GALILEO_E5A_SYMBOL_RATE_BPS = 50;           //!< Galileo E5a symbol rate [bits/second] | ||||||
| const int32_t GALILEO_E5A_NUMBER_OF_CODES = 50; | const int32_t GALILEO_E5A_NUMBER_OF_CODES = 50; | ||||||
| @@ -58,7 +58,7 @@ const int32_t GALILEO_E5A_HISTORY_DEEP = 20; | |||||||
| const int32_t GALILEO_E5A_CRC_ERROR_LIMIT = 6; | const int32_t GALILEO_E5A_CRC_ERROR_LIMIT = 6; | ||||||
|  |  | ||||||
| // optimum parameters | // optimum parameters | ||||||
| const uint32_t GALILEO_E5A_OPT_ACQ_FS_HZ = 10000000;  //!< Sampling frequency that maximizes the acquisition SNR while using a non-multiple of chip rate | const uint32_t GALILEO_E5A_OPT_ACQ_FS_SPS = 10000000;  //!< Sampling frequency that maximizes the acquisition SNR while using a non-multiple of chip rate | ||||||
|  |  | ||||||
| // F/NAV message structure | // F/NAV message structure | ||||||
|  |  | ||||||
|   | |||||||
| @@ -29,6 +29,7 @@ | |||||||
|  * ------------------------------------------------------------------------- |  * ------------------------------------------------------------------------- | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
|  | #include "GPS_L1_CA.h" | ||||||
| #include "acquisition_dump_reader.h" | #include "acquisition_dump_reader.h" | ||||||
| #include "display.h" | #include "display.h" | ||||||
| #include "file_configuration.h" | #include "file_configuration.h" | ||||||
| @@ -900,10 +901,10 @@ TEST_F(AcquisitionPerformanceTest, ROC) | |||||||
|                                             acq_dump.read_binary_acq(); |                                             acq_dump.read_binary_acq(); | ||||||
|                                             if (acq_dump.positive_acq) |                                             if (acq_dump.positive_acq) | ||||||
|                                                 { |                                                 { | ||||||
|                                                     // std::cout << "Meas acq_delay_samples: " << acq_dump.acq_delay_samples << " chips: " << acq_dump.acq_delay_samples / (baseband_sampling_freq * GPS_L1_CA_CODE_PERIOD / GPS_L1_CA_CODE_LENGTH_CHIPS) << std::endl; |                                                     // std::cout << "Meas acq_delay_samples: " << acq_dump.acq_delay_samples << " chips: " << acq_dump.acq_delay_samples / (baseband_sampling_freq * GPS_L1_CA_CODE_PERIOD_S / GPS_L1_CA_CODE_LENGTH_CHIPS) << std::endl; | ||||||
|                                                     meas_timestamp_s(execution - 1) = acq_dump.sample_counter / baseband_sampling_freq; |                                                     meas_timestamp_s(execution - 1) = acq_dump.sample_counter / baseband_sampling_freq; | ||||||
|                                                     meas_doppler(execution - 1) = acq_dump.acq_doppler_hz; |                                                     meas_doppler(execution - 1) = acq_dump.acq_doppler_hz; | ||||||
|                                                     meas_acq_delay_chips(execution - 1) = acq_dump.acq_delay_samples / (baseband_sampling_freq * GPS_L1_CA_CODE_PERIOD / GPS_L1_CA_CODE_LENGTH_CHIPS); |                                                     meas_acq_delay_chips(execution - 1) = acq_dump.acq_delay_samples / (baseband_sampling_freq * GPS_L1_CA_CODE_PERIOD_S / GPS_L1_CA_CODE_LENGTH_CHIPS); | ||||||
|                                                     positive_acq(execution - 1) = acq_dump.positive_acq; |                                                     positive_acq(execution - 1) = acq_dump.positive_acq; | ||||||
|                                                 } |                                                 } | ||||||
|                                             else |                                             else | ||||||
| @@ -956,7 +957,7 @@ TEST_F(AcquisitionPerformanceTest, ROC) | |||||||
|                                             interp1(true_timestamp_s, true_prn_delay_chips, meas_timestamp_s, true_interpolated_prn_delay_chips); |                                             interp1(true_timestamp_s, true_prn_delay_chips, meas_timestamp_s, true_interpolated_prn_delay_chips); | ||||||
|  |  | ||||||
|                                             arma::vec doppler_estimation_error = true_interpolated_doppler - meas_doppler; |                                             arma::vec doppler_estimation_error = true_interpolated_doppler - meas_doppler; | ||||||
|                                             arma::vec delay_estimation_error = true_interpolated_prn_delay_chips - (meas_acq_delay_chips - ((1.0 / baseband_sampling_freq) / GPS_L1_CA_CHIP_PERIOD));  // compensate 1 sample delay |                                             arma::vec delay_estimation_error = true_interpolated_prn_delay_chips - (meas_acq_delay_chips - ((1.0 / baseband_sampling_freq) / GPS_L1_CA_CHIP_PERIOD_S));  // compensate 1 sample delay | ||||||
|  |  | ||||||
|                                             // Cut measurements without reference |                                             // Cut measurements without reference | ||||||
|                                             for (int i = 0; i < num_executions; i++) |                                             for (int i = 0; i < num_executions; i++) | ||||||
|   | |||||||
| @@ -189,7 +189,7 @@ void BeidouB1iPcpsAcquisitionTest::plot_grid() | |||||||
|     std::string basename = "./tmp-acq-bds-b1i/acquisition_C_B1"; |     std::string basename = "./tmp-acq-bds-b1i/acquisition_C_B1"; | ||||||
|     auto sat = static_cast<unsigned int>(gnss_synchro.PRN); |     auto sat = static_cast<unsigned int>(gnss_synchro.PRN); | ||||||
|  |  | ||||||
|     auto samples_per_code = static_cast<unsigned int>(round(25000000 / (BEIDOU_B1I_CODE_RATE_HZ / BEIDOU_B1I_CODE_LENGTH_CHIPS)));  // !! |     auto samples_per_code = static_cast<unsigned int>(round(25000000 / (BEIDOU_B1I_CODE_RATE_CPS / BEIDOU_B1I_CODE_LENGTH_CHIPS)));  // !! | ||||||
|     Acquisition_Dump_Reader acq_dump(basename, sat, doppler_max, doppler_step, samples_per_code, 1); |     Acquisition_Dump_Reader acq_dump(basename, sat, doppler_max, doppler_step, samples_per_code, 1); | ||||||
|  |  | ||||||
|     if (!acq_dump.read_binary_acq()) |     if (!acq_dump.read_binary_acq()) | ||||||
|   | |||||||
| @@ -188,7 +188,7 @@ void BeidouB3iPcpsAcquisitionTest::plot_grid() | |||||||
|     std::string basename = "./tmp-acq-bds-b3i/acquisition_C_B3"; |     std::string basename = "./tmp-acq-bds-b3i/acquisition_C_B3"; | ||||||
|     auto sat = static_cast<unsigned int>(gnss_synchro.PRN); |     auto sat = static_cast<unsigned int>(gnss_synchro.PRN); | ||||||
|  |  | ||||||
|     auto samples_per_code = static_cast<unsigned int>(round(50000000 / (BEIDOU_B3I_CODE_RATE_HZ / BEIDOU_B3I_CODE_LENGTH_CHIPS)));  // !! |     auto samples_per_code = static_cast<unsigned int>(round(50000000 / (BEIDOU_B3I_CODE_RATE_CPS / BEIDOU_B3I_CODE_LENGTH_CHIPS)));  // !! | ||||||
|     Acquisition_Dump_Reader acq_dump(basename, sat, doppler_max, doppler_step, samples_per_code, 1); |     Acquisition_Dump_Reader acq_dump(basename, sat, doppler_max, doppler_step, samples_per_code, 1); | ||||||
|  |  | ||||||
|     if (!acq_dump.read_binary_acq()) |     if (!acq_dump.read_binary_acq()) | ||||||
|   | |||||||
| @@ -191,7 +191,7 @@ void GalileoE1PcpsAmbiguousAcquisitionTest::plot_grid() | |||||||
|     std::string basename = "./tmp-acq-gal1/acquisition_E_1B"; |     std::string basename = "./tmp-acq-gal1/acquisition_E_1B"; | ||||||
|     auto sat = static_cast<unsigned int>(gnss_synchro.PRN); |     auto sat = static_cast<unsigned int>(gnss_synchro.PRN); | ||||||
|  |  | ||||||
|     auto samples_per_code = static_cast<unsigned int>(round(4000000 / (GALILEO_E1_CODE_CHIP_RATE_HZ / GALILEO_E1_B_CODE_LENGTH_CHIPS)));  // !! |     auto samples_per_code = static_cast<unsigned int>(round(4000000 / (GALILEO_E1_CODE_CHIP_RATE_CPS / GALILEO_E1_B_CODE_LENGTH_CHIPS)));  // !! | ||||||
|     Acquisition_Dump_Reader acq_dump(basename, sat, doppler_max, doppler_step, samples_per_code); |     Acquisition_Dump_Reader acq_dump(basename, sat, doppler_max, doppler_step, samples_per_code); | ||||||
|  |  | ||||||
|     if (!acq_dump.read_binary_acq()) |     if (!acq_dump.read_binary_acq()) | ||||||
|   | |||||||
| @@ -189,7 +189,7 @@ void GpsL1CaPcpsAcquisitionTest::plot_grid() | |||||||
|     std::string basename = "./tmp-acq-gps1/acquisition_G_1C"; |     std::string basename = "./tmp-acq-gps1/acquisition_G_1C"; | ||||||
|     auto sat = static_cast<unsigned int>(gnss_synchro.PRN); |     auto sat = static_cast<unsigned int>(gnss_synchro.PRN); | ||||||
|  |  | ||||||
|     auto samples_per_code = static_cast<unsigned int>(round(4000000 / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS)));  // !! |     auto samples_per_code = static_cast<unsigned int>(round(4000000 / (GPS_L1_CA_CODE_RATE_CPS / GPS_L1_CA_CODE_LENGTH_CHIPS)));  // !! | ||||||
|     Acquisition_Dump_Reader acq_dump(basename, sat, doppler_max, doppler_step, samples_per_code, 1); |     Acquisition_Dump_Reader acq_dump(basename, sat, doppler_max, doppler_step, samples_per_code, 1); | ||||||
|  |  | ||||||
|     if (!acq_dump.read_binary_acq()) |     if (!acq_dump.read_binary_acq()) | ||||||
|   | |||||||
| @@ -165,7 +165,7 @@ void GpsL2MPcpsAcquisitionTest::init() | |||||||
|     gnss_synchro.Signal[2] = 0;                                                // make sure that string length is only two characters |     gnss_synchro.Signal[2] = 0;                                                // make sure that string length is only two characters | ||||||
|     gnss_synchro.PRN = 7; |     gnss_synchro.PRN = 7; | ||||||
|  |  | ||||||
|     nsamples = round(static_cast<double>(sampling_frequency_hz) * GPS_L2_M_PERIOD) * 2; |     nsamples = round(static_cast<double>(sampling_frequency_hz) * GPS_L2_M_PERIOD_S) * 2; | ||||||
|     config->set_property("GNSS-SDR.internal_fs_sps", std::to_string(sampling_frequency_hz)); |     config->set_property("GNSS-SDR.internal_fs_sps", std::to_string(sampling_frequency_hz)); | ||||||
|     config->set_property("Acquisition_2S.implementation", "GPS_L2_M_PCPS_Acquisition"); |     config->set_property("Acquisition_2S.implementation", "GPS_L2_M_PCPS_Acquisition"); | ||||||
|     config->set_property("Acquisition_2S.item_type", "gr_complex"); |     config->set_property("Acquisition_2S.item_type", "gr_complex"); | ||||||
| @@ -193,7 +193,7 @@ void GpsL2MPcpsAcquisitionTest::plot_grid() | |||||||
|     std::string basename = "./tmp-acq-gps2/acquisition_test_G_2S"; |     std::string basename = "./tmp-acq-gps2/acquisition_test_G_2S"; | ||||||
|     auto sat = static_cast<unsigned int>(gnss_synchro.PRN); |     auto sat = static_cast<unsigned int>(gnss_synchro.PRN); | ||||||
|  |  | ||||||
|     auto samples_per_code = static_cast<unsigned int>(floor(static_cast<double>(sampling_frequency_hz) / (GPS_L2_M_CODE_RATE_HZ / static_cast<double>(GPS_L2_M_CODE_LENGTH_CHIPS)))); |     auto samples_per_code = static_cast<unsigned int>(floor(static_cast<double>(sampling_frequency_hz) / (GPS_L2_M_CODE_RATE_CPS / static_cast<double>(GPS_L2_M_CODE_LENGTH_CHIPS)))); | ||||||
|     Acquisition_Dump_Reader acq_dump(basename, sat, doppler_max, doppler_step, samples_per_code, 1); |     Acquisition_Dump_Reader acq_dump(basename, sat, doppler_max, doppler_step, samples_per_code, 1); | ||||||
|     if (!acq_dump.read_binary_acq()) |     if (!acq_dump.read_binary_acq()) | ||||||
|         { |         { | ||||||
|   | |||||||
| @@ -65,6 +65,7 @@ | |||||||
| #include "tracking_true_obs_reader.h" | #include "tracking_true_obs_reader.h" | ||||||
| #include "true_observables_reader.h" | #include "true_observables_reader.h" | ||||||
| #include <armadillo> | #include <armadillo> | ||||||
|  | #include <boost/lexical_cast.hpp> | ||||||
| #include <gnuradio/blocks/file_source.h> | #include <gnuradio/blocks/file_source.h> | ||||||
| #include <gnuradio/blocks/interleaved_char_to_complex.h> | #include <gnuradio/blocks/interleaved_char_to_complex.h> | ||||||
| #include <gnuradio/blocks/null_sink.h> | #include <gnuradio/blocks/null_sink.h> | ||||||
| @@ -481,22 +482,22 @@ bool HybridObservablesTest::acquire_signal() | |||||||
|             switch (mapStringValues_[signal]) |             switch (mapStringValues_[signal]) | ||||||
|                 { |                 { | ||||||
|                 case evGPS_1C: |                 case evGPS_1C: | ||||||
|                     opt_fs = GPS_L1_CA_OPT_ACQ_FS_HZ; |                     opt_fs = GPS_L1_CA_OPT_ACQ_FS_SPS; | ||||||
|                     break; |                     break; | ||||||
|                 case evGPS_2S: |                 case evGPS_2S: | ||||||
|                     opt_fs = GPS_L2C_OPT_ACQ_FS_HZ; |                     opt_fs = GPS_L2C_OPT_ACQ_FS_SPS; | ||||||
|                     break; |                     break; | ||||||
|                 case evGPS_L5: |                 case evGPS_L5: | ||||||
|                     opt_fs = GPS_L5_OPT_ACQ_FS_HZ; |                     opt_fs = GPS_L5_OPT_ACQ_FS_SPS; | ||||||
|                     break; |                     break; | ||||||
|                 case evSBAS_1C: |                 case evSBAS_1C: | ||||||
|                     opt_fs = GPS_L1_CA_OPT_ACQ_FS_HZ; |                     opt_fs = GPS_L1_CA_OPT_ACQ_FS_SPS; | ||||||
|                     break; |                     break; | ||||||
|                 case evGAL_1B: |                 case evGAL_1B: | ||||||
|                     opt_fs = GALILEO_E1_OPT_ACQ_FS_HZ; |                     opt_fs = GALILEO_E1_OPT_ACQ_FS_SPS; | ||||||
|                     break; |                     break; | ||||||
|                 case evGAL_5X: |                 case evGAL_5X: | ||||||
|                     opt_fs = GALILEO_E5A_OPT_ACQ_FS_HZ; |                     opt_fs = GALILEO_E5A_OPT_ACQ_FS_SPS; | ||||||
|                     break; |                     break; | ||||||
|                 case evGLO_1G: |                 case evGLO_1G: | ||||||
|                     opt_fs = baseband_sampling_freq; |                     opt_fs = baseband_sampling_freq; | ||||||
| @@ -1732,7 +1733,7 @@ TEST_F(HybridObservablesTest, ValidationOfResults) | |||||||
|  |  | ||||||
|                     std::cout << "Initial Doppler [Hz]=" << true_reader_vec.back()->doppler_l1_hz << " Initial code delay [Chips]=" |                     std::cout << "Initial Doppler [Hz]=" << true_reader_vec.back()->doppler_l1_hz << " Initial code delay [Chips]=" | ||||||
|                               << true_reader_vec.back()->prn_delay_chips << std::endl; |                               << true_reader_vec.back()->prn_delay_chips << std::endl; | ||||||
|                     n.Acq_delay_samples = (GPS_L1_CA_CODE_LENGTH_CHIPS - true_reader_vec.back()->prn_delay_chips / GPS_L1_CA_CODE_LENGTH_CHIPS) * baseband_sampling_freq * GPS_L1_CA_CODE_PERIOD; |                     n.Acq_delay_samples = (GPS_L1_CA_CODE_LENGTH_CHIPS - true_reader_vec.back()->prn_delay_chips / GPS_L1_CA_CODE_LENGTH_CHIPS) * baseband_sampling_freq * GPS_L1_CA_CODE_PERIOD_S; | ||||||
|                     n.Acq_doppler_hz = true_reader_vec.back()->doppler_l1_hz; |                     n.Acq_doppler_hz = true_reader_vec.back()->doppler_l1_hz; | ||||||
|                     n.Acq_samplestamp_samples = 0; |                     n.Acq_samplestamp_samples = 0; | ||||||
|                 } |                 } | ||||||
|   | |||||||
| @@ -595,19 +595,19 @@ bool HybridObservablesTestFpga::acquire_signal() | |||||||
|     unsigned int nsamples_to_transfer; |     unsigned int nsamples_to_transfer; | ||||||
|     if (implementation == "GPS_L1_CA_DLL_PLL_Tracking_Fpga") |     if (implementation == "GPS_L1_CA_DLL_PLL_Tracking_Fpga") | ||||||
|         { |         { | ||||||
|             nsamples_to_transfer = static_cast<unsigned int>(std::round(static_cast<double>(baseband_sampling_freq) / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS))); |             nsamples_to_transfer = static_cast<unsigned int>(std::round(static_cast<double>(baseband_sampling_freq) / (GPS_L1_CA_CODE_RATE_CPS / GPS_L1_CA_CODE_LENGTH_CHIPS))); | ||||||
|         } |         } | ||||||
|     else if (implementation == "Galileo_E1_DLL_PLL_VEML_Tracking_Fpga") |     else if (implementation == "Galileo_E1_DLL_PLL_VEML_Tracking_Fpga") | ||||||
|         { |         { | ||||||
|             nsamples_to_transfer = static_cast<unsigned int>(std::round(static_cast<double>(baseband_sampling_freq) / (GALILEO_E1_CODE_CHIP_RATE_HZ / GALILEO_E1_B_CODE_LENGTH_CHIPS))); |             nsamples_to_transfer = static_cast<unsigned int>(std::round(static_cast<double>(baseband_sampling_freq) / (GALILEO_E1_CODE_CHIP_RATE_CPS / GALILEO_E1_B_CODE_LENGTH_CHIPS))); | ||||||
|         } |         } | ||||||
|     else if (implementation == "Galileo_E5a_DLL_PLL_Tracking_Fpga") |     else if (implementation == "Galileo_E5a_DLL_PLL_Tracking_Fpga") | ||||||
|         { |         { | ||||||
|             nsamples_to_transfer = static_cast<unsigned int>(std::round(static_cast<double>(baseband_sampling_freq) / (GALILEO_E5A_CODE_CHIP_RATE_HZ / GALILEO_E5A_CODE_LENGTH_CHIPS))); |             nsamples_to_transfer = static_cast<unsigned int>(std::round(static_cast<double>(baseband_sampling_freq) / (GALILEO_E5A_CODE_CHIP_RATE_CPS / GALILEO_E5A_CODE_LENGTH_CHIPS))); | ||||||
|         } |         } | ||||||
|     else  // (if (implementation.compare("GPS_L5_DLL_PLL_Tracking_Fpga") == 0)) |     else  // (if (implementation.compare("GPS_L5_DLL_PLL_Tracking_Fpga") == 0)) | ||||||
|         { |         { | ||||||
|             nsamples_to_transfer = static_cast<unsigned int>(std::round(static_cast<double>(baseband_sampling_freq) / (GPS_L5I_CODE_RATE_HZ / GPS_L5I_CODE_LENGTH_CHIPS))); |             nsamples_to_transfer = static_cast<unsigned int>(std::round(static_cast<double>(baseband_sampling_freq) / (GPS_L5I_CODE_RATE_CPS / GPS_L5I_CODE_LENGTH_CHIPS))); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|     int acq_doppler_max = config->property("Acquisition.doppler_max", FLAGS_external_signal_acquisition_doppler_max_hz); |     int acq_doppler_max = config->property("Acquisition.doppler_max", FLAGS_external_signal_acquisition_doppler_max_hz); | ||||||
| @@ -1528,7 +1528,7 @@ TEST_F(HybridObservablesTestFpga, ValidationOfResults) | |||||||
|  |  | ||||||
|                     std::cout << "Initial Doppler [Hz]=" << true_reader_vec.back()->doppler_l1_hz << " Initial code delay [Chips]=" |                     std::cout << "Initial Doppler [Hz]=" << true_reader_vec.back()->doppler_l1_hz << " Initial code delay [Chips]=" | ||||||
|                               << true_reader_vec.back()->prn_delay_chips << std::endl; |                               << true_reader_vec.back()->prn_delay_chips << std::endl; | ||||||
|                     n.Acq_delay_samples = (GPS_L1_CA_CODE_LENGTH_CHIPS - true_reader_vec.back()->prn_delay_chips / GPS_L1_CA_CODE_LENGTH_CHIPS) * baseband_sampling_freq * GPS_L1_CA_CODE_PERIOD; |                     n.Acq_delay_samples = (GPS_L1_CA_CODE_LENGTH_CHIPS - true_reader_vec.back()->prn_delay_chips / GPS_L1_CA_CODE_LENGTH_CHIPS) * baseband_sampling_freq * GPS_L1_CA_CODE_PERIOD_S; | ||||||
|                     n.Acq_doppler_hz = true_reader_vec.back()->doppler_l1_hz; |                     n.Acq_doppler_hz = true_reader_vec.back()->doppler_l1_hz; | ||||||
|                     n.Acq_samplestamp_samples = 0; |                     n.Acq_samplestamp_samples = 0; | ||||||
|                 } |                 } | ||||||
|   | |||||||
| @@ -373,7 +373,7 @@ TEST_F(GpsL1CATelemetryDecoderTest, ValidationOfResults) | |||||||
|     true_obs_data.restart(); |     true_obs_data.restart(); | ||||||
|  |  | ||||||
|     std::cout << "Initial Doppler [Hz]=" << true_obs_data.doppler_l1_hz << " Initial code delay [Chips]=" << true_obs_data.prn_delay_chips << std::endl; |     std::cout << "Initial Doppler [Hz]=" << true_obs_data.doppler_l1_hz << " Initial code delay [Chips]=" << true_obs_data.prn_delay_chips << std::endl; | ||||||
|     gnss_synchro.Acq_delay_samples = (GPS_L1_CA_CODE_LENGTH_CHIPS - true_obs_data.prn_delay_chips / GPS_L1_CA_CODE_LENGTH_CHIPS) * baseband_sampling_freq * GPS_L1_CA_CODE_PERIOD; |     gnss_synchro.Acq_delay_samples = (GPS_L1_CA_CODE_LENGTH_CHIPS - true_obs_data.prn_delay_chips / GPS_L1_CA_CODE_LENGTH_CHIPS) * baseband_sampling_freq * GPS_L1_CA_CODE_PERIOD_S; | ||||||
|     gnss_synchro.Acq_doppler_hz = true_obs_data.doppler_l1_hz; |     gnss_synchro.Acq_doppler_hz = true_obs_data.doppler_l1_hz; | ||||||
|     gnss_synchro.Acq_samplestamp_samples = 0; |     gnss_synchro.Acq_samplestamp_samples = 0; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -588,7 +588,7 @@ TEST_F(GpsL1CADllPllTrackingTest, ValidationOfResults) | |||||||
|                             std::cout << "Testing satellite PRN=" << test_satellite_PRN << std::endl; |                             std::cout << "Testing satellite PRN=" << test_satellite_PRN << std::endl; | ||||||
|                             std::cout << "Initial Doppler [Hz]=" << true_obs_data.doppler_l1_hz << " Initial code delay [Chips]=" << true_obs_data.prn_delay_chips << std::endl; |                             std::cout << "Initial Doppler [Hz]=" << true_obs_data.doppler_l1_hz << " Initial code delay [Chips]=" << true_obs_data.prn_delay_chips << std::endl; | ||||||
|                             acq_doppler_hz = true_obs_data.doppler_l1_hz; |                             acq_doppler_hz = true_obs_data.doppler_l1_hz; | ||||||
|                             acq_delay_samples = (GPS_L1_CA_CODE_LENGTH_CHIPS - true_obs_data.prn_delay_chips / GPS_L1_CA_CODE_LENGTH_CHIPS) * static_cast<double>(baseband_sampling_freq) * GPS_L1_CA_CODE_PERIOD; |                             acq_delay_samples = (GPS_L1_CA_CODE_LENGTH_CHIPS - true_obs_data.prn_delay_chips / GPS_L1_CA_CODE_LENGTH_CHIPS) * static_cast<double>(baseband_sampling_freq) * GPS_L1_CA_CODE_PERIOD_S; | ||||||
|                             // restart the epoch counter |                             // restart the epoch counter | ||||||
|                             true_obs_data.restart(); |                             true_obs_data.restart(); | ||||||
|                         } |                         } | ||||||
| @@ -754,7 +754,7 @@ TEST_F(GpsL1CADllPllTrackingTest, ValidationOfResults) | |||||||
|                                             code_phase_error_chips = check_results_codephase(true_timestamp_s, true_prn_delay_chips, trk_timestamp_s, trk_prn_delay_chips, mean_error, std_dev_error, rmse); |                                             code_phase_error_chips = check_results_codephase(true_timestamp_s, true_prn_delay_chips, trk_timestamp_s, trk_prn_delay_chips, mean_error, std_dev_error, rmse); | ||||||
|                                             for (double code_phase_error_chip : code_phase_error_chips) |                                             for (double code_phase_error_chip : code_phase_error_chips) | ||||||
|                                                 { |                                                 { | ||||||
|                                                     code_phase_error_meters.push_back(GPS_L1_CA_CHIP_PERIOD * code_phase_error_chip * GPS_C_M_S); |                                                     code_phase_error_meters.push_back(GPS_L1_CA_CHIP_PERIOD_S * code_phase_error_chip * GPS_C_M_S); | ||||||
|                                                 } |                                                 } | ||||||
|                                             mean_code_phase_error.push_back(mean_error); |                                             mean_code_phase_error.push_back(mean_error); | ||||||
|                                             std_dev_code_phase_error.push_back(std_dev_error); |                                             std_dev_code_phase_error.push_back(std_dev_error); | ||||||
|   | |||||||
| @@ -499,7 +499,7 @@ TEST_F(GpsL1CADllPllTrackingTestFpga, ValidationOfResultsFpga) | |||||||
|               << " Initial code delay [Chips]=" << true_obs_data.prn_delay_chips |               << " Initial code delay [Chips]=" << true_obs_data.prn_delay_chips | ||||||
|               << std::endl; |               << std::endl; | ||||||
|  |  | ||||||
|     gnss_synchro.Acq_delay_samples = (GPS_L1_CA_CODE_LENGTH_CHIPS - true_obs_data.prn_delay_chips / GPS_L1_CA_CODE_LENGTH_CHIPS) * baseband_sampling_freq * GPS_L1_CA_CODE_PERIOD; |     gnss_synchro.Acq_delay_samples = (GPS_L1_CA_CODE_LENGTH_CHIPS - true_obs_data.prn_delay_chips / GPS_L1_CA_CODE_LENGTH_CHIPS) * baseband_sampling_freq * GPS_L1_CA_CODE_PERIOD_S; | ||||||
|     gnss_synchro.Acq_doppler_hz = true_obs_data.doppler_l1_hz; |     gnss_synchro.Acq_doppler_hz = true_obs_data.doppler_l1_hz; | ||||||
|     gnss_synchro.Acq_samplestamp_samples = 0; |     gnss_synchro.Acq_samplestamp_samples = 0; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -413,7 +413,7 @@ TEST_F(GpsL1CAKfTrackingTest, ValidationOfResults) | |||||||
|     true_obs_data.restart(); |     true_obs_data.restart(); | ||||||
|  |  | ||||||
|     std::cout << "Initial Doppler [Hz]=" << true_obs_data.doppler_l1_hz << " Initial code delay [Chips]=" << true_obs_data.prn_delay_chips << std::endl; |     std::cout << "Initial Doppler [Hz]=" << true_obs_data.doppler_l1_hz << " Initial code delay [Chips]=" << true_obs_data.prn_delay_chips << std::endl; | ||||||
|     gnss_synchro.Acq_delay_samples = (GPS_L1_CA_CODE_LENGTH_CHIPS - true_obs_data.prn_delay_chips / GPS_L1_CA_CODE_LENGTH_CHIPS) * baseband_sampling_freq * GPS_L1_CA_CODE_PERIOD; |     gnss_synchro.Acq_delay_samples = (GPS_L1_CA_CODE_LENGTH_CHIPS - true_obs_data.prn_delay_chips / GPS_L1_CA_CODE_LENGTH_CHIPS) * baseband_sampling_freq * GPS_L1_CA_CODE_PERIOD_S; | ||||||
|     gnss_synchro.Acq_doppler_hz = true_obs_data.doppler_l1_hz; |     gnss_synchro.Acq_doppler_hz = true_obs_data.doppler_l1_hz; | ||||||
|     gnss_synchro.Acq_samplestamp_samples = 0; |     gnss_synchro.Acq_samplestamp_samples = 0; | ||||||
|  |  | ||||||
| @@ -548,7 +548,7 @@ TEST_F(GpsL1CAKfTrackingTest, ValidationOfResults) | |||||||
|                             for (auto it = prompt.begin(); it != prompt.end(); it++) |                             for (auto it = prompt.begin(); it != prompt.end(); it++) | ||||||
|                                 { |                                 { | ||||||
|                                     timevec.push_back(t); |                                     timevec.push_back(t); | ||||||
|                                     t = t + GPS_L1_CA_CODE_PERIOD; |                                     t = t + GPS_L1_CA_CODE_PERIOD_S; | ||||||
|                                 } |                                 } | ||||||
|                             Gnuplot g1("linespoints"); |                             Gnuplot g1("linespoints"); | ||||||
|                             g1.set_title("GPS L1 C/A signal tracking correlators' output (satellite PRN #" + std::to_string(FLAGS_test_satellite_PRN) + ")"); |                             g1.set_title("GPS L1 C/A signal tracking correlators' output (satellite PRN #" + std::to_string(FLAGS_test_satellite_PRN) + ")"); | ||||||
|   | |||||||
| @@ -514,22 +514,22 @@ bool TrackingPullInTest::acquire_signal(int SV_ID) | |||||||
|             switch (mapStringValues_[signal]) |             switch (mapStringValues_[signal]) | ||||||
|                 { |                 { | ||||||
|                 case evGPS_1C: |                 case evGPS_1C: | ||||||
|                     opt_fs = GPS_L1_CA_OPT_ACQ_FS_HZ; |                     opt_fs = GPS_L1_CA_OPT_ACQ_FS_SPS; | ||||||
|                     break; |                     break; | ||||||
|                 case evGPS_2S: |                 case evGPS_2S: | ||||||
|                     opt_fs = GPS_L2C_OPT_ACQ_FS_HZ; |                     opt_fs = GPS_L2C_OPT_ACQ_FS_SPS; | ||||||
|                     break; |                     break; | ||||||
|                 case evGPS_L5: |                 case evGPS_L5: | ||||||
|                     opt_fs = GPS_L5_OPT_ACQ_FS_HZ; |                     opt_fs = GPS_L5_OPT_ACQ_FS_SPS; | ||||||
|                     break; |                     break; | ||||||
|                 case evSBAS_1C: |                 case evSBAS_1C: | ||||||
|                     opt_fs = GPS_L1_CA_OPT_ACQ_FS_HZ; |                     opt_fs = GPS_L1_CA_OPT_ACQ_FS_SPS; | ||||||
|                     break; |                     break; | ||||||
|                 case evGAL_1B: |                 case evGAL_1B: | ||||||
|                     opt_fs = GALILEO_E1_OPT_ACQ_FS_HZ; |                     opt_fs = GALILEO_E1_OPT_ACQ_FS_SPS; | ||||||
|                     break; |                     break; | ||||||
|                 case evGAL_5X: |                 case evGAL_5X: | ||||||
|                     opt_fs = GALILEO_E5A_OPT_ACQ_FS_HZ; |                     opt_fs = GALILEO_E5A_OPT_ACQ_FS_SPS; | ||||||
|                     break; |                     break; | ||||||
|                 case evGLO_1G: |                 case evGLO_1G: | ||||||
|                     opt_fs = baseband_sampling_freq; |                     opt_fs = baseband_sampling_freq; | ||||||
| @@ -779,7 +779,7 @@ TEST_F(TrackingPullInTest, ValidationOfResults) | |||||||
|             std::cout << "Testing satellite PRN=" << test_satellite_PRN << std::endl; |             std::cout << "Testing satellite PRN=" << test_satellite_PRN << std::endl; | ||||||
|             std::cout << "True Initial Doppler " << true_obs_data.doppler_l1_hz << " [Hz], true Initial code delay [Chips]=" << true_obs_data.prn_delay_chips << "[Chips]" << std::endl; |             std::cout << "True Initial Doppler " << true_obs_data.doppler_l1_hz << " [Hz], true Initial code delay [Chips]=" << true_obs_data.prn_delay_chips << "[Chips]" << std::endl; | ||||||
|             true_acq_doppler_hz = true_obs_data.doppler_l1_hz; |             true_acq_doppler_hz = true_obs_data.doppler_l1_hz; | ||||||
|             true_acq_delay_samples = (GPS_L1_CA_CODE_LENGTH_CHIPS - true_obs_data.prn_delay_chips / GPS_L1_CA_CODE_LENGTH_CHIPS) * static_cast<double>(baseband_sampling_freq) * GPS_L1_CA_CODE_PERIOD; |             true_acq_delay_samples = (GPS_L1_CA_CODE_LENGTH_CHIPS - true_obs_data.prn_delay_chips / GPS_L1_CA_CODE_LENGTH_CHIPS) * static_cast<double>(baseband_sampling_freq) * GPS_L1_CA_CODE_PERIOD_S; | ||||||
|             acq_samplestamp_samples = 0; |             acq_samplestamp_samples = 0; | ||||||
|         } |         } | ||||||
|     else |     else | ||||||
| @@ -811,7 +811,7 @@ TEST_F(TrackingPullInTest, ValidationOfResults) | |||||||
|                             // simulate a Doppler error in acquisition |                             // simulate a Doppler error in acquisition | ||||||
|                             gnss_synchro.Acq_doppler_hz = true_acq_doppler_hz + acq_doppler_error_hz_values.at(current_acq_doppler_error_idx); |                             gnss_synchro.Acq_doppler_hz = true_acq_doppler_hz + acq_doppler_error_hz_values.at(current_acq_doppler_error_idx); | ||||||
|                             // simulate Code Delay error in acquisition |                             // simulate Code Delay error in acquisition | ||||||
|                             gnss_synchro.Acq_delay_samples = true_acq_delay_samples + (acq_delay_error_chips_values.at(current_acq_doppler_error_idx).at(current_acq_code_error_idx) / GPS_L1_CA_CODE_RATE_HZ) * static_cast<double>(baseband_sampling_freq); |                             gnss_synchro.Acq_delay_samples = true_acq_delay_samples + (acq_delay_error_chips_values.at(current_acq_doppler_error_idx).at(current_acq_code_error_idx) / GPS_L1_CA_CODE_RATE_CPS) * static_cast<double>(baseband_sampling_freq); | ||||||
|  |  | ||||||
|                             // create flowgraph |                             // create flowgraph | ||||||
|                             top_block = gr::make_top_block("Tracking test"); |                             top_block = gr::make_top_block("Tracking test"); | ||||||
|   | |||||||
| @@ -683,19 +683,19 @@ bool TrackingPullInTestFpga::acquire_signal(int SV_ID) | |||||||
|     unsigned int nsamples_to_transfer; |     unsigned int nsamples_to_transfer; | ||||||
|     if (implementation == "GPS_L1_CA_DLL_PLL_Tracking_Fpga") |     if (implementation == "GPS_L1_CA_DLL_PLL_Tracking_Fpga") | ||||||
|         { |         { | ||||||
|             nsamples_to_transfer = static_cast<unsigned int>(std::round(static_cast<double>(baseband_sampling_freq) / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS))); |             nsamples_to_transfer = static_cast<unsigned int>(std::round(static_cast<double>(baseband_sampling_freq) / (GPS_L1_CA_CODE_RATE_CPS / GPS_L1_CA_CODE_LENGTH_CHIPS))); | ||||||
|         } |         } | ||||||
|     else if (implementation == "Galileo_E1_DLL_PLL_VEML_Tracking_Fpga") |     else if (implementation == "Galileo_E1_DLL_PLL_VEML_Tracking_Fpga") | ||||||
|         { |         { | ||||||
|             nsamples_to_transfer = static_cast<unsigned int>(std::round(static_cast<double>(baseband_sampling_freq) / (GALILEO_E1_CODE_CHIP_RATE_HZ / GALILEO_E1_B_CODE_LENGTH_CHIPS))); |             nsamples_to_transfer = static_cast<unsigned int>(std::round(static_cast<double>(baseband_sampling_freq) / (GALILEO_E1_CODE_CHIP_RATE_CPS / GALILEO_E1_B_CODE_LENGTH_CHIPS))); | ||||||
|         } |         } | ||||||
|     else if (implementation == "Galileo_E5a_DLL_PLL_Tracking_Fpga") |     else if (implementation == "Galileo_E5a_DLL_PLL_Tracking_Fpga") | ||||||
|         { |         { | ||||||
|             nsamples_to_transfer = static_cast<unsigned int>(std::round(static_cast<double>(baseband_sampling_freq) / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS))); |             nsamples_to_transfer = static_cast<unsigned int>(std::round(static_cast<double>(baseband_sampling_freq) / (GPS_L1_CA_CODE_RATE_CPS / GPS_L1_CA_CODE_LENGTH_CHIPS))); | ||||||
|         } |         } | ||||||
|     else  // (if (implementation.compare("GPS_L5_DLL_PLL_Tracking_Fpga") == 0)) |     else  // (if (implementation.compare("GPS_L5_DLL_PLL_Tracking_Fpga") == 0)) | ||||||
|         { |         { | ||||||
|             nsamples_to_transfer = static_cast<unsigned int>(std::round(static_cast<double>(baseband_sampling_freq) / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS))); |             nsamples_to_transfer = static_cast<unsigned int>(std::round(static_cast<double>(baseband_sampling_freq) / (GPS_L1_CA_CODE_RATE_CPS / GPS_L1_CA_CODE_LENGTH_CHIPS))); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|     int acq_doppler_max = config->property("Acquisition.doppler_max", FLAGS_external_signal_acquisition_doppler_max_hz); |     int acq_doppler_max = config->property("Acquisition.doppler_max", FLAGS_external_signal_acquisition_doppler_max_hz); | ||||||
| @@ -921,7 +921,7 @@ TEST_F(TrackingPullInTestFpga, ValidationOfResults) | |||||||
|             std::cout << "Testing satellite PRN=" << test_satellite_PRN << std::endl; |             std::cout << "Testing satellite PRN=" << test_satellite_PRN << std::endl; | ||||||
|             std::cout << "True Initial Doppler " << true_obs_data.doppler_l1_hz << " [Hz], true Initial code delay [Chips]=" << true_obs_data.prn_delay_chips << "[Chips]" << std::endl; |             std::cout << "True Initial Doppler " << true_obs_data.doppler_l1_hz << " [Hz], true Initial code delay [Chips]=" << true_obs_data.prn_delay_chips << "[Chips]" << std::endl; | ||||||
|             true_acq_doppler_hz = true_obs_data.doppler_l1_hz; |             true_acq_doppler_hz = true_obs_data.doppler_l1_hz; | ||||||
|             true_acq_delay_samples = (GPS_L1_CA_CODE_LENGTH_CHIPS - true_obs_data.prn_delay_chips / GPS_L1_CA_CODE_LENGTH_CHIPS) * static_cast<double>(baseband_sampling_freq) * GPS_L1_CA_CODE_PERIOD; |             true_acq_delay_samples = (GPS_L1_CA_CODE_LENGTH_CHIPS - true_obs_data.prn_delay_chips / GPS_L1_CA_CODE_LENGTH_CHIPS) * static_cast<double>(baseband_sampling_freq) * GPS_L1_CA_CODE_PERIOD_S; | ||||||
|             acq_samplestamp_samples = 0; |             acq_samplestamp_samples = 0; | ||||||
|         } |         } | ||||||
|     else |     else | ||||||
| @@ -939,19 +939,19 @@ TEST_F(TrackingPullInTestFpga, ValidationOfResults) | |||||||
|     unsigned int code_length; |     unsigned int code_length; | ||||||
|     if (implementation == "GPS_L1_CA_DLL_PLL_Tracking_Fpga") |     if (implementation == "GPS_L1_CA_DLL_PLL_Tracking_Fpga") | ||||||
|         { |         { | ||||||
|             code_length = static_cast<unsigned int>(std::round(static_cast<double>(baseband_sampling_freq) / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS))); |             code_length = static_cast<unsigned int>(std::round(static_cast<double>(baseband_sampling_freq) / (GPS_L1_CA_CODE_RATE_CPS / GPS_L1_CA_CODE_LENGTH_CHIPS))); | ||||||
|         } |         } | ||||||
|     else if (implementation == "Galileo_E1_DLL_PLL_VEML_Tracking_Fpga") |     else if (implementation == "Galileo_E1_DLL_PLL_VEML_Tracking_Fpga") | ||||||
|         { |         { | ||||||
|             code_length = static_cast<unsigned int>(std::round(static_cast<double>(baseband_sampling_freq) / (GALILEO_E1_CODE_CHIP_RATE_HZ / GALILEO_E1_B_CODE_LENGTH_CHIPS))); |             code_length = static_cast<unsigned int>(std::round(static_cast<double>(baseband_sampling_freq) / (GALILEO_E1_CODE_CHIP_RATE_CPS / GALILEO_E1_B_CODE_LENGTH_CHIPS))); | ||||||
|         } |         } | ||||||
|     else if (implementation == "Galileo_E5a_DLL_PLL_Tracking_Fpga") |     else if (implementation == "Galileo_E5a_DLL_PLL_Tracking_Fpga") | ||||||
|         { |         { | ||||||
|             code_length = static_cast<unsigned int>(std::round(static_cast<double>(baseband_sampling_freq) / GALILEO_E5A_CODE_CHIP_RATE_HZ * static_cast<double>(GALILEO_E5A_CODE_LENGTH_CHIPS))); |             code_length = static_cast<unsigned int>(std::round(static_cast<double>(baseband_sampling_freq) / GALILEO_E5A_CODE_CHIP_RATE_CPS * static_cast<double>(GALILEO_E5A_CODE_LENGTH_CHIPS))); | ||||||
|         } |         } | ||||||
|     else  // (if (implementation.compare("GPS_L5_DLL_PLL_Tracking_Fpga") == 0)) |     else  // (if (implementation.compare("GPS_L5_DLL_PLL_Tracking_Fpga") == 0)) | ||||||
|         { |         { | ||||||
|             code_length = static_cast<unsigned int>(std::round(static_cast<double>(baseband_sampling_freq) / (GPS_L5I_CODE_RATE_HZ / static_cast<double>(GPS_L5I_CODE_LENGTH_CHIPS)))); |             code_length = static_cast<unsigned int>(std::round(static_cast<double>(baseband_sampling_freq) / (GPS_L5I_CODE_RATE_CPS / static_cast<double>(GPS_L5I_CODE_LENGTH_CHIPS)))); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|     float nbits = ceilf(log2f(static_cast<float>(code_length))); |     float nbits = ceilf(log2f(static_cast<float>(code_length))); | ||||||
| @@ -1009,7 +1009,7 @@ TEST_F(TrackingPullInTestFpga, ValidationOfResults) | |||||||
|                             // simulate a Doppler error in acquisition |                             // simulate a Doppler error in acquisition | ||||||
|                             gnss_synchro.Acq_doppler_hz = true_acq_doppler_hz + acq_doppler_error_hz_values.at(current_acq_doppler_error_idx); |                             gnss_synchro.Acq_doppler_hz = true_acq_doppler_hz + acq_doppler_error_hz_values.at(current_acq_doppler_error_idx); | ||||||
|                             // simulate Code Delay error in acquisition |                             // simulate Code Delay error in acquisition | ||||||
|                             gnss_synchro.Acq_delay_samples = true_acq_delay_samples + (acq_delay_error_chips_values.at(current_acq_doppler_error_idx).at(current_acq_code_error_idx) / GPS_L1_CA_CODE_RATE_HZ) * static_cast<double>(baseband_sampling_freq); |                             gnss_synchro.Acq_delay_samples = true_acq_delay_samples + (acq_delay_error_chips_values.at(current_acq_doppler_error_idx).at(current_acq_code_error_idx) / GPS_L1_CA_CODE_RATE_CPS) * static_cast<double>(baseband_sampling_freq); | ||||||
|  |  | ||||||
|                             // create flowgraph |                             // create flowgraph | ||||||
|                             top_block = gr::make_top_block("Tracking test"); |                             top_block = gr::make_top_block("Tracking test"); | ||||||
|   | |||||||
| @@ -215,7 +215,7 @@ bool front_end_capture(const std::shared_ptr<ConfigurationInterface>& configurat | |||||||
|  |  | ||||||
|     //--- Find number of samples per spreading code --- |     //--- Find number of samples per spreading code --- | ||||||
|     int64_t fs_in_ = configuration->property("GNSS-SDR.internal_fs_sps", 2048000); |     int64_t fs_in_ = configuration->property("GNSS-SDR.internal_fs_sps", 2048000); | ||||||
|     int samples_per_code = round(fs_in_ / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS)); |     int samples_per_code = round(fs_in_ / (GPS_L1_CA_CODE_RATE_CPS / GPS_L1_CA_CODE_LENGTH_CHIPS)); | ||||||
|     int nsamples = samples_per_code * 50; |     int nsamples = samples_per_code * 50; | ||||||
|  |  | ||||||
|     int skip_samples = fs_in_ * 5;  // skip 5 seconds |     int skip_samples = fs_in_ * 5;  // skip 5 seconds | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Carles Fernandez
					Carles Fernandez