mirror of
				https://github.com/gnss-sdr/gnss-sdr
				synced 2025-10-31 07:13:03 +00:00 
			
		
		
		
	Merge branch 'iono' of https://github.com/carlesfernandez/gnss-sdr into next
This commit is contained in:
		| @@ -798,25 +798,100 @@ bool Rtklib_Solver::get_PVT(const std::map<int, Gnss_Synchro> &gnss_observables_ | |||||||
|         { |         { | ||||||
|             int result = 0; |             int result = 0; | ||||||
|             int sat = 0; |             int sat = 0; | ||||||
|             nav_t nav_data; |             nav_t nav_data{}; | ||||||
|             nav_data.eph = eph_data.data(); |             nav_data.eph = eph_data.data(); | ||||||
|             nav_data.geph = geph_data.data(); |             nav_data.geph = geph_data.data(); | ||||||
|             nav_data.n = valid_obs; |             nav_data.n = valid_obs; | ||||||
|             nav_data.ng = glo_valid_obs; |             nav_data.ng = glo_valid_obs; | ||||||
|  |             if (gps_iono.valid) | ||||||
|             for (auto &i : nav_data.lam) |  | ||||||
|                 { |                 { | ||||||
|                     i[0] = SPEED_OF_LIGHT / FREQ1;  // L1/E1 |                     nav_data.ion_gps[0] = gps_iono.d_alpha0; | ||||||
|                     i[1] = SPEED_OF_LIGHT / FREQ2;  // L2 |                     nav_data.ion_gps[1] = gps_iono.d_alpha1; | ||||||
|                     i[2] = SPEED_OF_LIGHT / FREQ5;  // L5/E5 |                     nav_data.ion_gps[2] = gps_iono.d_alpha2; | ||||||
|  |                     nav_data.ion_gps[3] = gps_iono.d_alpha3; | ||||||
|  |                     nav_data.ion_gps[4] = gps_iono.d_beta0; | ||||||
|  |                     nav_data.ion_gps[5] = gps_iono.d_beta1; | ||||||
|  |                     nav_data.ion_gps[6] = gps_iono.d_beta2; | ||||||
|  |                     nav_data.ion_gps[7] = gps_iono.d_beta3; | ||||||
|  |                 } | ||||||
|  |             if (!(gps_iono.valid) and gps_cnav_iono.valid) | ||||||
|  |                 { | ||||||
|  |                     nav_data.ion_gps[0] = gps_cnav_iono.d_alpha0; | ||||||
|  |                     nav_data.ion_gps[1] = gps_cnav_iono.d_alpha1; | ||||||
|  |                     nav_data.ion_gps[2] = gps_cnav_iono.d_alpha2; | ||||||
|  |                     nav_data.ion_gps[3] = gps_cnav_iono.d_alpha3; | ||||||
|  |                     nav_data.ion_gps[4] = gps_cnav_iono.d_beta0; | ||||||
|  |                     nav_data.ion_gps[5] = gps_cnav_iono.d_beta1; | ||||||
|  |                     nav_data.ion_gps[6] = gps_cnav_iono.d_beta2; | ||||||
|  |                     nav_data.ion_gps[7] = gps_cnav_iono.d_beta3; | ||||||
|  |                 } | ||||||
|  |             if (galileo_iono.ai0_5 != 0.0) | ||||||
|  |                 { | ||||||
|  |                     nav_data.ion_gal[0] = galileo_iono.ai0_5; | ||||||
|  |                     nav_data.ion_gal[1] = galileo_iono.ai1_5; | ||||||
|  |                     nav_data.ion_gal[2] = galileo_iono.ai2_5; | ||||||
|  |                     nav_data.ion_gal[3] = 0.0; | ||||||
|  |                 } | ||||||
|  |             if (beidou_dnav_iono.valid) | ||||||
|  |                 { | ||||||
|  |                     nav_data.ion_cmp[0] = beidou_dnav_iono.d_alpha0; | ||||||
|  |                     nav_data.ion_cmp[1] = beidou_dnav_iono.d_alpha1; | ||||||
|  |                     nav_data.ion_cmp[2] = beidou_dnav_iono.d_alpha2; | ||||||
|  |                     nav_data.ion_cmp[3] = beidou_dnav_iono.d_alpha3; | ||||||
|  |                     nav_data.ion_cmp[4] = beidou_dnav_iono.d_beta0; | ||||||
|  |                     nav_data.ion_cmp[5] = beidou_dnav_iono.d_beta0; | ||||||
|  |                     nav_data.ion_cmp[6] = beidou_dnav_iono.d_beta0; | ||||||
|  |                     nav_data.ion_cmp[7] = beidou_dnav_iono.d_beta3; | ||||||
|  |                 } | ||||||
|  |             if (gps_utc_model.valid) | ||||||
|  |                 { | ||||||
|  |                     nav_data.utc_gps[0] = gps_utc_model.d_A0; | ||||||
|  |                     nav_data.utc_gps[1] = gps_utc_model.d_A1; | ||||||
|  |                     nav_data.utc_gps[2] = gps_utc_model.d_t_OT; | ||||||
|  |                     nav_data.utc_gps[3] = gps_utc_model.i_WN_T; | ||||||
|  |                 } | ||||||
|  |             if (!(gps_utc_model.valid) and gps_cnav_utc_model.valid) | ||||||
|  |                 { | ||||||
|  |                     nav_data.utc_gps[0] = gps_cnav_utc_model.d_A0; | ||||||
|  |                     nav_data.utc_gps[1] = gps_cnav_utc_model.d_A1; | ||||||
|  |                     nav_data.utc_gps[2] = gps_cnav_utc_model.d_t_OT; | ||||||
|  |                     nav_data.utc_gps[3] = gps_cnav_utc_model.i_WN_T; | ||||||
|  |                 } | ||||||
|  |             if (glonass_gnav_utc_model.valid) | ||||||
|  |                 { | ||||||
|  |                     nav_data.utc_glo[0] = glonass_gnav_utc_model.d_tau_c;  // ?? | ||||||
|  |                     nav_data.utc_glo[1] = 0.0;                             // ?? | ||||||
|  |                     nav_data.utc_glo[2] = 0.0;                             // ?? | ||||||
|  |                     nav_data.utc_glo[3] = 0.0;                             // ?? | ||||||
|  |                 } | ||||||
|  |             if (galileo_utc_model.A0_6 != 0.0) | ||||||
|  |                 { | ||||||
|  |                     nav_data.utc_gal[0] = galileo_utc_model.A0_6; | ||||||
|  |                     nav_data.utc_gal[1] = galileo_utc_model.A1_6; | ||||||
|  |                     nav_data.utc_gal[2] = galileo_utc_model.t0t_6; | ||||||
|  |                     nav_data.utc_gal[3] = galileo_utc_model.WNot_6; | ||||||
|  |                 } | ||||||
|  |             if (beidou_dnav_utc_model.valid) | ||||||
|  |                 { | ||||||
|  |                     nav_data.utc_cmp[0] = beidou_dnav_utc_model.d_A0_UTC; | ||||||
|  |                     nav_data.utc_cmp[1] = beidou_dnav_utc_model.d_A1_UTC; | ||||||
|  |                     nav_data.utc_cmp[2] = 0.0;  // ?? | ||||||
|  |                     nav_data.utc_cmp[3] = 0.0;  // ?? | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |             for (auto &lambda_ : nav_data.lam) | ||||||
|  |                 { | ||||||
|  |                     lambda_[0] = SPEED_OF_LIGHT / FREQ1;  // L1/E1 | ||||||
|  |                     lambda_[1] = SPEED_OF_LIGHT / FREQ2;  // L2 | ||||||
|  |                     lambda_[2] = SPEED_OF_LIGHT / FREQ5;  // L5/E5 | ||||||
|  |  | ||||||
|                     // Keep update on sat number |                     // Keep update on sat number | ||||||
|                     sat++; |                     sat++; | ||||||
|                     if (sat > NSYSGPS + NSYSGLO + NSYSGAL + NSYSQZS and sat < NSYSGPS + NSYSGLO + NSYSGAL + NSYSQZS + NSYSBDS) |                     if (sat > NSYSGPS + NSYSGLO + NSYSGAL + NSYSQZS and sat < NSYSGPS + NSYSGLO + NSYSGAL + NSYSQZS + NSYSBDS) | ||||||
|                         { |                         { | ||||||
|                             i[0] = SPEED_OF_LIGHT / FREQ1_BDS;  // B1I |                             lambda_[0] = SPEED_OF_LIGHT / FREQ1_BDS;  // B1I | ||||||
|                             i[1] = SPEED_OF_LIGHT / FREQ3_BDS;  // B3I |                             lambda_[1] = SPEED_OF_LIGHT / FREQ3_BDS;  // B3I | ||||||
|                             i[2] = SPEED_OF_LIGHT / FREQ5;      // L5/E5 |                             lambda_[2] = SPEED_OF_LIGHT / FREQ5;      // L5/E5 | ||||||
|                         } |                         } | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -76,7 +76,7 @@ GalileoE1PcpsQuickSyncAmbiguousAcquisition::GalileoE1PcpsQuickSyncAmbiguousAcqui | |||||||
|     This may be a bug, but acquisition also work by variying the folding factor at va- |     This may be a bug, but acquisition also work by variying the folding factor at va- | ||||||
|     lues different that the expressed in the paper. In adition, it is important to point |     lues different that the expressed in the paper. In adition, it is important to point | ||||||
|     out that by making the folding factor smaller we were able to get QuickSync work with |     out that by making the folding factor smaller we were able to get QuickSync work with | ||||||
|     Galileo. Future work should be directed to test this asumption statistically.*/ |     Galileo. Future work should be directed to test this assumption statistically.*/ | ||||||
|  |  | ||||||
|     //folding_factor_ = static_cast<unsigned int>(ceil(sqrt(log2(code_length_)))); |     //folding_factor_ = static_cast<unsigned int>(ceil(sqrt(log2(code_length_)))); | ||||||
|     folding_factor_ = configuration_->property(role + ".folding_factor", 2); |     folding_factor_ = configuration_->property(role + ".folding_factor", 2); | ||||||
|   | |||||||
| @@ -512,7 +512,7 @@ int pcps_acquisition_fine_doppler_cc::general_work(int noutput_items, | |||||||
| { | { | ||||||
|     /*! |     /*! | ||||||
|      * TODO:     High sensitivity acquisition algorithm: |      * TODO:     High sensitivity acquisition algorithm: | ||||||
|      *             State Mechine: |      *             State Machine: | ||||||
|      *             S0. StandBy. If d_active==1 -> S1 |      *             S0. StandBy. If d_active==1 -> S1 | ||||||
|      *             S1. ComputeGrid. Perform the FFT acqusition doppler and delay grid. |      *             S1. ComputeGrid. Perform the FFT acqusition doppler and delay grid. | ||||||
|      *                 Accumulate the search grid matrix (#doppler_bins x #fft_size) |      *                 Accumulate the search grid matrix (#doppler_bins x #fft_size) | ||||||
|   | |||||||
| @@ -182,7 +182,7 @@ public: | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     /*! |     /*! | ||||||
|      * \brief This funciton triggers a HW reset of the FPGA PL. |      * \brief This function triggers a HW reset of the FPGA PL. | ||||||
|      */ |      */ | ||||||
|     void reset_acquisition(void); |     void reset_acquisition(void); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -353,7 +353,7 @@ int pcps_assisted_acquisition_cc::general_work(int noutput_items, | |||||||
| { | { | ||||||
|     /*! |     /*! | ||||||
|      * TODO:     High sensitivity acquisition algorithm: |      * TODO:     High sensitivity acquisition algorithm: | ||||||
|      *             State Mechine: |      *             State Machine: | ||||||
|      *             S0. StandBy. If d_active==1 -> S1 |      *             S0. StandBy. If d_active==1 -> S1 | ||||||
|      *             S1. GetAssist. Define search grid with assistance information. Reset grid matrix -> S2 |      *             S1. GetAssist. Define search grid with assistance information. Reset grid matrix -> S2 | ||||||
|      *             S2. ComputeGrid. Perform the FFT acqusition doppler and delay grid. |      *             S2. ComputeGrid. Perform the FFT acqusition doppler and delay grid. | ||||||
|   | |||||||
| @@ -463,7 +463,7 @@ int pcps_quicksync_acquisition_cc::general_work(int noutput_items, | |||||||
|                                                         complex_acumulator[i] += (corr_output[j]); |                                                         complex_acumulator[i] += (corr_output[j]); | ||||||
|                                                     } |                                                     } | ||||||
|                                             } |                                             } | ||||||
|                                         /*Obtain maximun value of correlation given the possible delay selected */ |                                         /*Obtain maximum value of correlation given the possible delay selected */ | ||||||
|                                         volk_32fc_magnitude_squared_32f(d_corr_output_f, complex_acumulator, d_folding_factor); |                                         volk_32fc_magnitude_squared_32f(d_corr_output_f, complex_acumulator, d_folding_factor); | ||||||
|                                         volk_gnsssdr_32f_index_max_32u(&indext, d_corr_output_f, d_folding_factor); |                                         volk_gnsssdr_32f_index_max_32u(&indext, d_corr_output_f, d_folding_factor); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| /*! | /*! | ||||||
|  * \file acq_conf.cc |  * \file acq_conf.cc | ||||||
|  * \brief Class that contains all the configuration parameters for generic |  * \brief Class that contains all the configuration parameters for generic | ||||||
|  * acquisition block based on the PCPS algoritm. |  * acquisition block based on the PCPS algorithm. | ||||||
|  * \author Carles Fernandez, 2018. cfernandez(at)cttc.es |  * \author Carles Fernandez, 2018. cfernandez(at)cttc.es | ||||||
|  * |  * | ||||||
|  * ------------------------------------------------------------------------- |  * ------------------------------------------------------------------------- | ||||||
|   | |||||||
| @@ -1,7 +1,7 @@ | |||||||
| /*! | /*! | ||||||
|  * \file acq_conf.h |  * \file acq_conf.h | ||||||
|  * \brief Class that contains all the configuration parameters for generic |  * \brief Class that contains all the configuration parameters for generic | ||||||
|  * acquisition block based on the PCPS algoritm. |  * acquisition block based on the PCPS algorithm. | ||||||
|  * \author Carles Fernandez, 2018. cfernandez(at)cttc.es |  * \author Carles Fernandez, 2018. cfernandez(at)cttc.es | ||||||
|  * |  * | ||||||
|  * ------------------------------------------------------------------------- |  * ------------------------------------------------------------------------- | ||||||
|   | |||||||
| @@ -121,7 +121,7 @@ private: | |||||||
|     int32_t d_fd;                   // driver descriptor |     int32_t d_fd;                   // driver descriptor | ||||||
|     volatile uint32_t *d_map_base;  // driver memory map |     volatile uint32_t *d_map_base;  // driver memory map | ||||||
|     uint32_t *d_all_fft_codes;      // memory that contains all the code ffts |     uint32_t *d_all_fft_codes;      // memory that contains all the code ffts | ||||||
|     uint32_t d_vector_length;       // number of samples incluing padding and number of ms |     uint32_t d_vector_length;       // number of samples including padding and number of ms | ||||||
|     uint32_t d_excludelimit; |     uint32_t d_excludelimit; | ||||||
|     uint32_t d_nsamples_total;  // number of samples including padding |     uint32_t d_nsamples_total;  // number of samples including padding | ||||||
|     uint32_t d_nsamples;        // number of samples not including padding |     uint32_t d_nsamples;        // number of samples not including padding | ||||||
|   | |||||||
| @@ -50,7 +50,7 @@ list(APPEND AVAIL_BUILDTYPES | |||||||
| # known build types in AVAIL_BUILDTYPES. If the build type is found, | # known build types in AVAIL_BUILDTYPES. If the build type is found, | ||||||
| # the function exits immediately. If nothing is found by the end of | # the function exits immediately. If nothing is found by the end of | ||||||
| # checking all available build types, we exit with an error and list | # checking all available build types, we exit with an error and list | ||||||
| # the avialable build types. | # the available build types. | ||||||
| ######################################################################## | ######################################################################## | ||||||
| function(VOLK_CHECK_BUILD_TYPE settype) | function(VOLK_CHECK_BUILD_TYPE settype) | ||||||
|   string(TOUPPER ${settype} _settype) |   string(TOUPPER ${settype} _settype) | ||||||
|   | |||||||
| @@ -183,7 +183,7 @@ if(CPU_IS_x86) | |||||||
|     # eliminate AVX if cvtpi32_ps intrinsic fails like some versions of clang |     # eliminate AVX if cvtpi32_ps intrinsic fails like some versions of clang | ||||||
|     ######################################################################### |     ######################################################################### | ||||||
|  |  | ||||||
|     # check to see if the compiler/linker works with cvtpi32_ps instrinsic when using AVX |     # check to see if the compiler/linker works with cvtpi32_ps intrinsic when using AVX | ||||||
|     if(CMAKE_SIZEOF_VOID_P EQUAL 4) |     if(CMAKE_SIZEOF_VOID_P EQUAL 4) | ||||||
|         file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/test_cvtpi32_ps.c "#include <immintrin.h>\nint main (void) {__m128 __a; __m64 __b; __m128 foo = _mm_cvtpi32_ps(__a, __b); return (0); }") |         file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/test_cvtpi32_ps.c "#include <immintrin.h>\nint main (void) {__m128 __a; __m64 __b; __m128 foo = _mm_cvtpi32_ps(__a, __b); return (0); }") | ||||||
|         execute_process(COMMAND ${CMAKE_C_COMPILER} -mavx -o |         execute_process(COMMAND ${CMAKE_C_COMPILER} -mavx -o | ||||||
| @@ -192,7 +192,7 @@ if(CPU_IS_x86) | |||||||
|           OUTPUT_QUIET ERROR_QUIET |           OUTPUT_QUIET ERROR_QUIET | ||||||
|           RESULT_VARIABLE avx_compile_result) |           RESULT_VARIABLE avx_compile_result) | ||||||
|         if(NOT ${avx_compile_result} EQUAL 0) |         if(NOT ${avx_compile_result} EQUAL 0) | ||||||
|           overrule_arch(avx "Compiler missing cvtpi32_ps instrinsic") |           overrule_arch(avx "Compiler missing cvtpi32_ps intrinsic") | ||||||
|         elseif(NOT CROSSCOMPILE_MULTILIB) |         elseif(NOT CROSSCOMPILE_MULTILIB) | ||||||
|           execute_process(COMMAND ${CMAKE_CURRENT_BINARY_DIR}/test_cvtpi32_ps |           execute_process(COMMAND ${CMAKE_CURRENT_BINARY_DIR}/test_cvtpi32_ps | ||||||
|             OUTPUT_QUIET ERROR_QUIET |             OUTPUT_QUIET ERROR_QUIET | ||||||
| @@ -216,7 +216,7 @@ if(CPU_IS_x86) | |||||||
|     if("${CMAKE_C_COMPILER_ID}" MATCHES "Clang") |     if("${CMAKE_C_COMPILER_ID}" MATCHES "Clang") | ||||||
|       # Figure out the version of Clang |       # Figure out the version of Clang | ||||||
|       if(CMAKE_VERSION VERSION_LESS "2.8.10") |       if(CMAKE_VERSION VERSION_LESS "2.8.10") | ||||||
|         # Exctract the Clang version from the --version string. |         # Extract the Clang version from the --version string. | ||||||
|         # In cmake 2.8.10, we can just use CMAKE_C_COMPILER_VERSION |         # In cmake 2.8.10, we can just use CMAKE_C_COMPILER_VERSION | ||||||
|         # without having to go through these string manipulations |         # without having to go through these string manipulations | ||||||
|         execute_process(COMMAND ${CMAKE_C_COMPILER} --version |         execute_process(COMMAND ${CMAKE_C_COMPILER} --version | ||||||
|   | |||||||
| @@ -102,7 +102,7 @@ private: | |||||||
|     static void static_pcap_callback(u_char *args, const struct pcap_pkthdr *pkthdr, const u_char *packet); |     static void static_pcap_callback(u_char *args, const struct pcap_pkthdr *pkthdr, const u_char *packet); | ||||||
|     /* |     /* | ||||||
|      * Opens the ethernet device using libpcap raw capture mode |      * Opens the ethernet device using libpcap raw capture mode | ||||||
|      * If any of these fail, the fuction retuns the error and exits. |      * If any of these fail, the function returns the error and exits. | ||||||
|      */ |      */ | ||||||
|     bool open(); |     bool open(); | ||||||
| }; | }; | ||||||
|   | |||||||
| @@ -1655,7 +1655,7 @@ int dll_pll_veml_tracking::general_work(int noutput_items __attribute__((unused) | |||||||
|                 d_P_accu = *d_Prompt; |                 d_P_accu = *d_Prompt; | ||||||
|                 d_L_accu = *d_Late; |                 d_L_accu = *d_Late; | ||||||
|  |  | ||||||
|                 //fail-safe: check if the secondary code or bit synchronization has not succedded in a limited time period |                 //fail-safe: check if the secondary code or bit synchronization has not succeeded in a limited time period | ||||||
|                 if (trk_parameters.bit_synchronization_time_limit_s < (d_sample_counter - d_acq_sample_stamp) / static_cast<int>(trk_parameters.fs_in)) |                 if (trk_parameters.bit_synchronization_time_limit_s < (d_sample_counter - d_acq_sample_stamp) / static_cast<int>(trk_parameters.fs_in)) | ||||||
|                     { |                     { | ||||||
|                         d_carrier_lock_fail_counter = 300000;  //force loss-of-lock condition |                         d_carrier_lock_fail_counter = 300000;  //force loss-of-lock condition | ||||||
|   | |||||||
| @@ -1065,7 +1065,7 @@ bool GNSSFlowgraph::send_telemetry_msg(const pmt::pmt_t& msg) | |||||||
|  * \param[in] what  What is the action: |  * \param[in] what  What is the action: | ||||||
|  * --- actions from channels --- |  * --- actions from channels --- | ||||||
|  * -> 0 acquisition failed |  * -> 0 acquisition failed | ||||||
|  * -> 1 acquisition succesfull |  * -> 1 acquisition successful | ||||||
|  * -> 2 tracking lost |  * -> 2 tracking lost | ||||||
|  * --- actions from TC receiver control --- |  * --- actions from TC receiver control --- | ||||||
|  * -> 10 TC request standby mode |  * -> 10 TC request standby mode | ||||||
|   | |||||||
| @@ -73,7 +73,7 @@ const int BEIDOU_WORD_LENGTH = 4; | |||||||
| const int BEIDOU_SUBFRAME_LENGTH = 40;                                                                                              //**************!< BEIDOU_WORD_LENGTH x 10 = 40 bytes | const int BEIDOU_SUBFRAME_LENGTH = 40;                                                                                              //**************!< BEIDOU_WORD_LENGTH x 10 = 40 bytes | ||||||
| const int BEIDOU_DNAV_SUBFRAME_DATA_BITS = 300;                                                                                     //!< Number of bits per subframe in the NAV message [bits] | const int BEIDOU_DNAV_SUBFRAME_DATA_BITS = 300;                                                                                     //!< Number of bits per subframe in the NAV message [bits] | ||||||
| const int BEIDOU_SUBFRAME_SECONDS = 6;                                                                                              //!< Subframe duration [seconds] | const int BEIDOU_SUBFRAME_SECONDS = 6;                                                                                              //!< Subframe duration [seconds] | ||||||
| const int BEIDOU_SUBFRAME_MS = 6000;                                                                                                //!< Subframe duration [miliseconds] | const int BEIDOU_SUBFRAME_MS = 6000;                                                                                                //!< Subframe duration [milliseconds] | ||||||
| const int BEIDOU_WORD_BITS = 30;                                                                                                    //!< Number of bits per word in the NAV message [bits] | const int BEIDOU_WORD_BITS = 30;                                                                                                    //!< Number of bits per word in the NAV message [bits] | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -59,7 +59,7 @@ const uint32_t GPS_L1_CA_BIT_PERIOD_MS = 20U;       //!< GPS L1 C/A bit period [ | |||||||
| const double GPS_L1_CA_CHIP_PERIOD = 9.7752e-07;    //!< GPS L1 C/A chip period [seconds] | const double GPS_L1_CA_CHIP_PERIOD = 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 frequncy that maximizes the acquisition SNR while using a non-multiple of chip rate | 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 | ||||||
|  |  | ||||||
| /*! | /*! | ||||||
|  * \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 | ||||||
|   | |||||||
| @@ -64,7 +64,7 @@ const double GPS_L2_L_PERIOD = 1.5;                 //!< GPS L2 L code period [s | |||||||
| 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 frequncy that maximizes the acquisition SNR while using a non-multiple of chip rate | 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 int32_t GPS_L2C_M_INIT_REG[115] = | const int32_t GPS_L2C_M_INIT_REG[115] = | ||||||
|   | |||||||
| @@ -65,7 +65,7 @@ const double GPS_L5Q_PERIOD = 0.001;              //!< GPS L5 code period [secon | |||||||
| 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 frequncy that maximizes the acquisition SNR while using a non-multiple of chip rate | 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 int32_t GPS_L5I_INIT_REG[210] = | const int32_t GPS_L5I_INIT_REG[210] = | ||||||
|     {266, 365, 804, 1138, |     {266, 365, 804, 1138, | ||||||
|   | |||||||
| @@ -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 frequncy that maximizes the acquisition SNR while using a non-multiple of chip rate | 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 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) | ||||||
|   | |||||||
| @@ -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 frequncy that maximizes the acquisition SNR while using a non-multiple of chip rate | 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 | ||||||
|  |  | ||||||
| // F/NAV message structure | // F/NAV message structure | ||||||
|  |  | ||||||
|   | |||||||
| @@ -458,7 +458,7 @@ int32_t Beidou_Dnav_Navigation_Message::d1_subframe_decoder(std::string const& s | |||||||
|  |  | ||||||
|     subframe_ID = static_cast<int>(read_navigation_unsigned(subframe_bits, D1_FRAID)); |     subframe_ID = static_cast<int>(read_navigation_unsigned(subframe_bits, D1_FRAID)); | ||||||
|  |  | ||||||
|     // Perform crc computtaion (tbd) |     // Perform crc computation (tbd) | ||||||
|     flag_crc_test = true; |     flag_crc_test = true; | ||||||
|  |  | ||||||
|     // Decode all 5 sub-frames |     // Decode all 5 sub-frames | ||||||
| @@ -753,7 +753,7 @@ int32_t Beidou_Dnav_Navigation_Message::d2_subframe_decoder(std::string const& s | |||||||
|     subframe_ID = static_cast<int>(read_navigation_unsigned(subframe_bits, D2_FRAID)); |     subframe_ID = static_cast<int>(read_navigation_unsigned(subframe_bits, D2_FRAID)); | ||||||
|     page_ID = static_cast<int>(read_navigation_unsigned(subframe_bits, D2_PNUM)); |     page_ID = static_cast<int>(read_navigation_unsigned(subframe_bits, D2_PNUM)); | ||||||
|  |  | ||||||
|     // Perform crc computtaion (tbd) |     // Perform crc computation (tbd) | ||||||
|     flag_crc_test = true; |     flag_crc_test = true; | ||||||
|  |  | ||||||
|     // Decode all 5 sub-frames |     // Decode all 5 sub-frames | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Carles Fernandez
					Carles Fernandez