1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2025-01-28 09:54:51 +00:00
This commit is contained in:
Carles Fernandez 2019-09-07 12:38:41 +02:00
commit 28f1d12b93
No known key found for this signature in database
GPG Key ID: 4C583C52B0C3877D
40 changed files with 2080 additions and 1972 deletions

View File

@ -762,6 +762,11 @@ if(CMAKE_VERSION VERSION_LESS 3.5)
endif()
endif()
endif()
if(CMAKE_VERSION VERSION_LESS 3.15)
if(NOT TARGET Boost::headers)
add_library(Boost::headers ALIAS Boost::boost)
endif()
endif()
# Fix for Boost Asio < 1.70 when using Clang in macOS
if(Boost_VERSION_STRING VERSION_LESS 1.70.0)

View File

@ -1,5 +1,16 @@
## [Unreleased](https://github.com/gnss-sdr/gnss-sdr/tree/next)
### Improvements in Efficiency:
- Improved implementation of the Viterbi decoder for Galileo navigation messages.
### Improvements in Flexibility:
- New Tracking parameters allow the configuration of the C/N0 and lock detector smoothers, as well as the activation of the FLL in pull-in and steady state stages.
- New PVT parameter enable_rx_clock_correction parameter allows to enable or disable the application of the Time solution correction to the computation of Observables.
### Improvements in Maintainability:
- New CMake option ENABLE_ARMA_NO_DEBUG defines the macro ARMA_NO_DEBUG, which disables all run-time checks, such as bounds checking, in the Armadillo library. This will result in faster code. This option is disabled by default during development, but automatically set to ON if the option ENABLE_PACKAGING is set to ON.

View File

@ -769,6 +769,9 @@ Rtklib_Pvt::Rtklib_Pvt(ConfigurationInterface* configuration,
// Show time in local zone
pvt_output_parameters.show_local_time_zone = configuration->property(role + ".show_local_time_zone", false);
// Enable or disable rx clock correction in observables
pvt_output_parameters.enable_rx_clock_correction = configuration->property(role + ".enable_rx_clock_correction", true);
// make PVT object
pvt_ = rtklib_make_pvt_gs(in_streams_, pvt_output_parameters, rtk);
DLOG(INFO) << "pvt(" << pvt_->unique_id() << ")";

File diff suppressed because it is too large Load Diff

View File

@ -213,6 +213,7 @@ private:
int32_t max_obs_block_rx_clock_offset_ms;
bool d_waiting_obs_block_rx_clock_offset_correction_msg;
bool d_enable_rx_clock_correction;
std::map<int, Gnss_Synchro> gnss_observables_map;
std::map<int, Gnss_Synchro> gnss_observables_map_t0;
std::map<int, Gnss_Synchro> gnss_observables_map_t1;

View File

@ -72,6 +72,7 @@ Pvt_Conf::Pvt_Conf()
xml_output_path = std::string(".");
rtcm_output_file_path = std::string(".");
enable_rx_clock_correction=true;
monitor_enabled = false;
protobuf_enabled = true;
udp_port = 0;

View File

@ -89,6 +89,7 @@ public:
std::string udp_addresses;
int udp_port;
bool enable_rx_clock_correction;
bool show_local_time_zone;
Pvt_Conf();

View File

@ -104,7 +104,7 @@ target_link_libraries(acquisition_adapters
Gnuradio::blocks
Volk::volk
PRIVATE
Boost::boost
Boost::headers
Gflags::gflags
Glog::glog
Gnuradio::fft

View File

@ -40,7 +40,7 @@ target_link_libraries(channel_libs
Gnuradio::pmt
PRIVATE
core_libs
Boost::boost
Boost::headers
Gflags::gflags
Glog::glog
)

View File

@ -42,7 +42,7 @@ add_library(data_type_gr_blocks
target_link_libraries(data_type_gr_blocks
PUBLIC
Gnuradio::runtime
Boost::boost
Boost::headers
algorithms_libs
PRIVATE
Volk::volk

View File

@ -100,7 +100,7 @@ target_include_directories(algorithms_libs
target_link_libraries(algorithms_libs
PUBLIC
Armadillo::armadillo
Boost::boost
Boost::headers
Gflags::gflags
Gnuradio::runtime
Gnuradio::blocks

View File

@ -53,16 +53,18 @@ static inline float32x4_t vsqrtq_f32(float32x4_t q_x)
return vmulq_f32(q_x, q_step_2);
}
/* Magnitude squared for float32x4x2_t */
static inline float32x4_t _vmagnitudesquaredq_f32(float32x4x2_t cmplxValue)
{
float32x4_t iValue, qValue, result;
iValue = vmulq_f32(cmplxValue.val[0], cmplxValue.val[0]); // Square the values
qValue = vmulq_f32(cmplxValue.val[1], cmplxValue.val[1]); // Square the values
result = vaddq_f32(iValue, qValue); // Add the I2 and Q2 values
iValue = vmulq_f32(cmplxValue.val[0], cmplxValue.val[0]); // Square the values
qValue = vmulq_f32(cmplxValue.val[1], cmplxValue.val[1]); // Square the values
result = vaddq_f32(iValue, qValue); // Add the I2 and Q2 values
return result;
}
/* Inverse square root for float32x4_t */
static inline float32x4_t _vinvsqrtq_f32(float32x4_t x)
{
@ -73,6 +75,7 @@ static inline float32x4_t _vinvsqrtq_f32(float32x4_t x)
return sqrt_reciprocal;
}
/* Complex multiplication for float32x4x2_t */
static inline float32x4x2_t _vmultiply_complexq_f32(float32x4x2_t a_val, float32x4x2_t b_val)
{

View File

@ -45,7 +45,7 @@ target_include_directories(obs_gr_blocks
target_link_libraries(obs_gr_blocks
PUBLIC
Boost::boost
Boost::headers
Gnuradio::blocks
PRIVATE
algorithms_libs

View File

@ -170,7 +170,7 @@ target_include_directories(signal_source_adapters
target_link_libraries(signal_source_adapters
PUBLIC
Boost::boost
Boost::headers
Gnuradio::runtime
Gnuradio::blocks
signal_source_gr_blocks

View File

@ -69,7 +69,7 @@ add_library(signal_source_libs ${SIGNAL_SOURCE_LIB_SOURCES} ${SIGNAL_SOURCE_LIB_
target_link_libraries(signal_source_libs
PUBLIC
Boost::boost
Boost::headers
Gnuradio::runtime
PRIVATE
Gflags::gflags

View File

@ -56,7 +56,7 @@ target_link_libraries(telemetry_decoder_gr_blocks
telemetry_decoder_libs
core_system_parameters
Gnuradio::runtime
Boost::boost
Boost::headers
PRIVATE
Gflags::gflags
Glog::glog

View File

@ -207,14 +207,14 @@ galileo_telemetry_decoder_gs::~galileo_telemetry_decoder_gs()
}
void galileo_telemetry_decoder_gs::viterbi_decoder(double *page_part_symbols, int32_t *page_part_bits)
void galileo_telemetry_decoder_gs::viterbi_decoder(float *page_part_symbols, int32_t *page_part_bits)
{
Viterbi(page_part_bits, out0.data(), state0.data(), out1.data(), state1.data(),
page_part_symbols, KK, nn, DataLength);
}
void galileo_telemetry_decoder_gs::deinterleaver(int32_t rows, int32_t cols, const double *in, double *out)
void galileo_telemetry_decoder_gs::deinterleaver(int32_t rows, int32_t cols, const float *in, float *out)
{
for (int32_t r = 0; r < rows; r++)
{
@ -226,10 +226,10 @@ void galileo_telemetry_decoder_gs::deinterleaver(int32_t rows, int32_t cols, con
}
void galileo_telemetry_decoder_gs::decode_INAV_word(double *page_part_symbols, int32_t frame_length)
void galileo_telemetry_decoder_gs::decode_INAV_word(float *page_part_symbols, int32_t frame_length)
{
// 1. De-interleave
std::vector<double> page_part_symbols_deint(frame_length);
std::vector<float> page_part_symbols_deint(frame_length);
deinterleaver(GALILEO_INAV_INTERLEAVER_ROWS, GALILEO_INAV_INTERLEAVER_COLS, page_part_symbols, page_part_symbols_deint.data());
// 2. Viterbi decoder
@ -318,10 +318,10 @@ void galileo_telemetry_decoder_gs::decode_INAV_word(double *page_part_symbols, i
}
void galileo_telemetry_decoder_gs::decode_FNAV_word(double *page_symbols, int32_t frame_length)
void galileo_telemetry_decoder_gs::decode_FNAV_word(float *page_symbols, int32_t frame_length)
{
// 1. De-interleave
std::vector<double> page_symbols_deint(frame_length);
std::vector<float> page_symbols_deint(frame_length);
deinterleaver(GALILEO_FNAV_INTERLEAVER_ROWS, GALILEO_FNAV_INTERLEAVER_COLS, page_symbols, page_symbols_deint.data());
// 2. Viterbi decoder

View File

@ -81,12 +81,12 @@ private:
galileo_telemetry_decoder_gs(const Gnss_Satellite &satellite, int frame_type, bool dump);
void viterbi_decoder(double *page_part_symbols, int32_t *page_part_bits);
void viterbi_decoder(float *page_part_symbols, int32_t *page_part_bits);
void deinterleaver(int32_t rows, int32_t cols, const double *in, double *out);
void deinterleaver(int32_t rows, int32_t cols, const float *in, float *out);
void decode_INAV_word(double *page_part_symbols, int32_t frame_length);
void decode_FNAV_word(double *page_symbols, int32_t frame_length);
void decode_INAV_word(float *page_part_symbols, int32_t frame_length);
void decode_FNAV_word(float *page_symbols, int32_t frame_length);
int d_frame_type;
int32_t d_bits_per_preamble;
@ -96,7 +96,7 @@ private:
uint32_t d_PRN_code_period_ms;
uint32_t d_required_symbols;
uint32_t d_frame_length_symbols;
std::vector<double> d_page_part_symbols;
std::vector<float> d_page_part_symbols;
boost::circular_buffer<float> d_symbol_history;

View File

@ -39,6 +39,8 @@ add_library(telemetry_decoder_libs
)
target_link_libraries(telemetry_decoder_libs
PUBLIC
Volkgnsssdr::volkgnsssdr
PRIVATE
Gflags::gflags
Glog::glog

View File

@ -1,11 +1,13 @@
/*!
* \file convolutional.h
* \brief General functions used to implement convolutional encoding.
* \author Matthew C. Valenti
* \author Matthew C. Valenti, 2006-2008.
* \author C. Fernandez-Prades, 2019.
*
* -------------------------------------------------------------------------
*
* Copyright (C) 2006-2008 Matthew C. Valenti
* Copyright (C) 2019 C. Fernandez-Prades
*
* GNSS-SDR is a software defined Global Navigation
* Satellite Systems receiver
@ -19,8 +21,6 @@
*
* This file is a derived work of the original file, which had this note:
*
* Last updated on May 22, 2008
*
* The functions in this file are part of the Iterative Solutions
* Coded Modulation Library. The Iterative Solutions Coded Modulation
* Library is free software; you can redistribute it and/or modify it
@ -41,7 +41,8 @@
#ifndef GNSS_SDR_CONVOLUTIONAL_H_
#define GNSS_SDR_CONVOLUTIONAL_H_
#include <cstdlib> // for calloc
#include <volk_gnsssdr/volk_gnsssdr.h>
#include <vector>
/* define constants used throughout the library */
const float MAXLOG = 1e7; /* Define infinity */
@ -57,7 +58,7 @@ const float MAXLOG = 1e7; /* Define infinity */
*
* This function is used by nsc_enc_bit(), rsc_enc_bit(), and rsc_tail()
*/
inline static int parity_counter(int symbol, int length)
inline int parity_counter(int symbol, int length)
{
int counter;
int temp_parity = 0;
@ -85,7 +86,7 @@ inline static int parity_counter(int symbol, int length)
*
* This function is used by nsc_transit()
*/
inline static int nsc_enc_bit(int state_out_p[],
inline int nsc_enc_bit(int state_out_p[],
int input,
int state_in,
const int g[],
@ -115,7 +116,7 @@ inline static int nsc_enc_bit(int state_out_p[],
/*!
* \brief Function that creates the transit and output vectors
*/
inline static void nsc_transit(int output_p[],
inline void nsc_transit(int output_p[],
int trans_p[],
int input,
int g[],
@ -144,7 +145,7 @@ inline static void nsc_transit(int output_p[],
* \param[in] nn The length of the received vector
*
*/
inline static float Gamma(const float rec_array[],
inline float Gamma(const float rec_array[],
int symbol,
int nn)
{
@ -176,24 +177,20 @@ inline static float Gamma(const float rec_array[],
* \param[out] output_u_int[] Hard decisions on the data bits
*
*/
inline static void Viterbi(int output_u_int[],
inline void Viterbi(int output_u_int[],
const int out0[],
const int state0[],
const int out1[],
const int state1[],
const double input_c[],
const float input_c[],
int KK,
int nn,
int LL)
{
int i, t, state, mm, states;
int number_symbols;
uint32_t max_index;
float metric;
float *prev_section, *next_section;
int *prev_bit;
int *prev_state;
float *metric_c; /* Set of all possible branch metrics */
float *rec_array; /* Received values for one trellis section */
float max_val;
/* some derived constants */
@ -201,34 +198,24 @@ inline static void Viterbi(int output_u_int[],
states = 1 << mm; /* 2^mm */
number_symbols = 1 << nn; /* 2^nn */
/* dynamically allocate memory */
prev_section = static_cast<float *>(calloc(states, sizeof(float)));
next_section = static_cast<float *>(calloc(states, sizeof(float)));
prev_bit = static_cast<int *>(calloc(states * (LL + mm), sizeof(int)));
prev_state = static_cast<int *>(calloc(states * (LL + mm), sizeof(int)));
rec_array = static_cast<float *>(calloc(nn, sizeof(float)));
metric_c = static_cast<float *>(calloc(number_symbols, sizeof(float)));
std::vector<float> prev_section(states, -MAXLOG);
std::vector<float> next_section(states, -MAXLOG);
std::vector<int> prev_bit(states * (LL + mm), 0);
std::vector<int> prev_state(states * (LL + mm), 0);
std::vector<float> rec_array(nn);
std::vector<float> metric_c(number_symbols);
/* initialize trellis */
for (state = 0; state < states; state++)
{
prev_section[state] = -MAXLOG;
next_section[state] = -MAXLOG;
}
prev_section[0] = 0; /* start in all-zeros state */
prev_section[0] = 0.0; /* start in all-zeros state */
/* go through trellis */
for (t = 0; t < LL + mm; t++)
{
for (i = 0; i < nn; i++)
{
rec_array[i] = static_cast<float>(input_c[nn * t + i]);
}
rec_array.assign(input_c + nn * t, input_c + nn * t + (nn - 1));
/* precompute all possible branch metrics */
for (i = 0; i < number_symbols; i++)
{
metric_c[i] = Gamma(rec_array, i, nn);
metric_c[i] = Gamma(rec_array.data(), i, nn);
}
/* step through all states */
@ -258,14 +245,9 @@ inline static void Viterbi(int output_u_int[],
}
/* normalize */
max_val = 0;
for (state = 0; state < states; state++)
{
if (next_section[state] > max_val)
{
max_val = next_section[state];
}
}
volk_gnsssdr_32f_index_max_32u(&max_index, next_section.data(), states);
max_val = next_section[max_index];
for (state = 0; state < states; state++)
{
prev_section[state] = next_section[state] - max_val;
@ -287,14 +269,6 @@ inline static void Viterbi(int output_u_int[],
output_u_int[t] = prev_bit[t * states + state];
state = prev_state[t * states + state];
}
/* free the dynamically allocated memory */
free(prev_section);
free(next_section);
free(prev_bit);
free(prev_state);
free(rec_array);
free(metric_c);
}

View File

@ -171,13 +171,12 @@ GalileoE1DllPllVemlTracking::GalileoE1DllPllVemlTracking(
trk_param.max_carrier_lock_fail = configuration->property(role + ".max_carrier_lock_fail", trk_param.max_carrier_lock_fail);
trk_param.carrier_lock_th = configuration->property(role + ".carrier_lock_th", trk_param.carrier_lock_th);
//tracking lock tests smoother parameters
// tracking lock tests smoother parameters
trk_param.cn0_smoother_samples = configuration->property(role + ".cn0_smoother_samples", trk_param.cn0_smoother_samples);
trk_param.cn0_smoother_alpha = configuration->property(role + ".cn0_smoother_alpha", trk_param.cn0_smoother_alpha);
trk_param.carrier_lock_test_smoother_samples = configuration->property(role + ".carrier_lock_test_smoother_samples", trk_param.carrier_lock_test_smoother_samples);
trk_param.carrier_lock_test_smoother_alpha = configuration->property(role + ".carrier_lock_test_smoother_alpha", trk_param.carrier_lock_test_smoother_alpha);
// ################# MAKE TRACKING GNURadio object ###################
if (item_type == "gr_complex")
{

View File

@ -255,13 +255,12 @@ GalileoE1DllPllVemlTrackingFpga::GalileoE1DllPllVemlTrackingFpga(
trk_param_fpga.extend_fpga_integration_periods = 1; // (number of FPGA integrations that are combined in the SW)
trk_param_fpga.fpga_integration_period = 1; // (number of symbols that are effectively integrated in the FPGA)
//tracking lock tests smoother parameters
// tracking lock tests smoother parameters
trk_param_fpga.cn0_smoother_samples = configuration->property(role + ".cn0_smoother_samples", trk_param_fpga.cn0_smoother_samples);
trk_param_fpga.cn0_smoother_alpha = configuration->property(role + ".cn0_smoother_alpha", trk_param_fpga.cn0_smoother_alpha);
trk_param_fpga.carrier_lock_test_smoother_samples = configuration->property(role + ".carrier_lock_test_smoother_samples", trk_param_fpga.carrier_lock_test_smoother_samples);
trk_param_fpga.carrier_lock_test_smoother_alpha = configuration->property(role + ".carrier_lock_test_smoother_alpha", trk_param_fpga.carrier_lock_test_smoother_alpha);
//################# MAKE TRACKING GNURadio object ###################
tracking_fpga_sc = dll_pll_veml_make_tracking_fpga(trk_param_fpga);
channel_ = 0;

View File

@ -166,13 +166,12 @@ GalileoE5aDllPllTracking::GalileoE5aDllPllTracking(
trk_param.max_carrier_lock_fail = configuration->property(role + ".max_carrier_lock_fail", trk_param.max_carrier_lock_fail);
trk_param.carrier_lock_th = configuration->property(role + ".carrier_lock_th", trk_param.carrier_lock_th);
//tracking lock tests smoother parameters
// tracking lock tests smoother parameters
trk_param.cn0_smoother_samples = configuration->property(role + ".cn0_smoother_samples", trk_param.cn0_smoother_samples);
trk_param.cn0_smoother_alpha = configuration->property(role + ".cn0_smoother_alpha", trk_param.cn0_smoother_alpha);
trk_param.carrier_lock_test_smoother_samples = configuration->property(role + ".carrier_lock_test_smoother_samples", trk_param.carrier_lock_test_smoother_samples);
trk_param.carrier_lock_test_smoother_alpha = configuration->property(role + ".carrier_lock_test_smoother_alpha", trk_param.carrier_lock_test_smoother_alpha);
// ################# MAKE TRACKING GNURadio object ###################
if (item_type == "gr_complex")
{

View File

@ -262,13 +262,12 @@ GalileoE5aDllPllTrackingFpga::GalileoE5aDllPllTrackingFpga(
}
}
//tracking lock tests smoother parameters
// tracking lock tests smoother parameters
trk_param_fpga.cn0_smoother_samples = configuration->property(role + ".cn0_smoother_samples", trk_param_fpga.cn0_smoother_samples);
trk_param_fpga.cn0_smoother_alpha = configuration->property(role + ".cn0_smoother_alpha", trk_param_fpga.cn0_smoother_alpha);
trk_param_fpga.carrier_lock_test_smoother_samples = configuration->property(role + ".carrier_lock_test_smoother_samples", trk_param_fpga.carrier_lock_test_smoother_samples);
trk_param_fpga.carrier_lock_test_smoother_alpha = configuration->property(role + ".carrier_lock_test_smoother_alpha", trk_param_fpga.carrier_lock_test_smoother_alpha);
// ################# MAKE TRACKING GNURadio object ###################
tracking_fpga_sc = dll_pll_veml_make_tracking_fpga(trk_param_fpga);
channel_ = 0;

View File

@ -172,7 +172,7 @@ GpsL1CaDllPllTracking::GpsL1CaDllPllTracking(
trk_param.max_carrier_lock_fail = configuration->property(role + ".max_carrier_lock_fail", trk_param.max_carrier_lock_fail);
trk_param.carrier_lock_th = configuration->property(role + ".carrier_lock_th", trk_param.carrier_lock_th);
//tracking lock tests smoother parameters
// tracking lock tests smoother parameters
trk_param.cn0_smoother_samples = configuration->property(role + ".cn0_smoother_samples", trk_param.cn0_smoother_samples);
trk_param.cn0_smoother_alpha = configuration->property(role + ".cn0_smoother_alpha", trk_param.cn0_smoother_alpha);
trk_param.carrier_lock_test_smoother_samples = configuration->property(role + ".carrier_lock_test_smoother_samples", trk_param.carrier_lock_test_smoother_samples);

View File

@ -216,13 +216,12 @@ GpsL1CaDllPllTrackingFpga::GpsL1CaDllPllTrackingFpga(
}
}
//tracking lock tests smoother parameters
// tracking lock tests smoother parameters
trk_param_fpga.cn0_smoother_samples = configuration->property(role + ".cn0_smoother_samples", trk_param_fpga.cn0_smoother_samples);
trk_param_fpga.cn0_smoother_alpha = configuration->property(role + ".cn0_smoother_alpha", trk_param_fpga.cn0_smoother_alpha);
trk_param_fpga.carrier_lock_test_smoother_samples = configuration->property(role + ".carrier_lock_test_smoother_samples", trk_param_fpga.carrier_lock_test_smoother_samples);
trk_param_fpga.carrier_lock_test_smoother_alpha = configuration->property(role + ".carrier_lock_test_smoother_alpha", trk_param_fpga.carrier_lock_test_smoother_alpha);
// ################# MAKE TRACKING GNURadio object ###################
tracking_fpga_sc = dll_pll_veml_make_tracking_fpga(trk_param_fpga);
channel_ = 0;

View File

@ -148,13 +148,12 @@ GpsL2MDllPllTracking::GpsL2MDllPllTracking(
trk_param.max_carrier_lock_fail = configuration->property(role + ".max_carrier_lock_fail", trk_param.max_carrier_lock_fail);
trk_param.carrier_lock_th = configuration->property(role + ".carrier_lock_th", trk_param.carrier_lock_th);
//tracking lock tests smoother parameters
// tracking lock tests smoother parameters
trk_param.cn0_smoother_samples = configuration->property(role + ".cn0_smoother_samples", trk_param.cn0_smoother_samples);
trk_param.cn0_smoother_alpha = configuration->property(role + ".cn0_smoother_alpha", trk_param.cn0_smoother_alpha);
trk_param.carrier_lock_test_smoother_samples = configuration->property(role + ".carrier_lock_test_smoother_samples", trk_param.carrier_lock_test_smoother_samples);
trk_param.carrier_lock_test_smoother_alpha = configuration->property(role + ".carrier_lock_test_smoother_alpha", trk_param.carrier_lock_test_smoother_alpha);
// ################# MAKE TRACKING GNURadio object ###################
if (item_type == "gr_complex")
{

View File

@ -102,6 +102,10 @@ GpsL2MDllPllTrackingFpga::GpsL2MDllPllTrackingFpga(
trk_param_fpga.max_code_lock_fail = configuration->property(role + ".max_lock_fail", trk_param_fpga.max_code_lock_fail);
trk_param_fpga.max_carrier_lock_fail = configuration->property(role + ".max_carrier_lock_fail", trk_param_fpga.max_carrier_lock_fail);
trk_param_fpga.carrier_lock_th = configuration->property(role + ".carrier_lock_th", trk_param_fpga.carrier_lock_th);
trk_param_fpga.cn0_smoother_samples = configuration->property(role + ".cn0_smoother_samples", trk_param_fpga.cn0_smoother_samples);
trk_param_fpga.cn0_smoother_alpha = configuration->property(role + ".cn0_smoother_alpha", trk_param_fpga.cn0_smoother_alpha);
trk_param_fpga.carrier_lock_test_smoother_samples = configuration->property(role + ".carrier_lock_test_smoother_samples", trk_param_fpga.carrier_lock_test_smoother_samples);
trk_param_fpga.carrier_lock_test_smoother_alpha = configuration->property(role + ".carrier_lock_test_smoother_alpha", trk_param_fpga.carrier_lock_test_smoother_alpha);
// int32_t max_lock_fail = configuration->property(role + ".max_lock_fail", 50);
// if (FLAGS_max_lock_fail != 50)

View File

@ -168,7 +168,7 @@ GpsL5DllPllTracking::GpsL5DllPllTracking(
trk_param.max_carrier_lock_fail = configuration->property(role + ".max_carrier_lock_fail", trk_param.max_carrier_lock_fail);
trk_param.carrier_lock_th = configuration->property(role + ".carrier_lock_th", trk_param.carrier_lock_th);
//tracking lock tests smoother parameters
// tracking lock tests smoother parameters
trk_param.cn0_smoother_samples = configuration->property(role + ".cn0_smoother_samples", trk_param.cn0_smoother_samples);
trk_param.cn0_smoother_alpha = configuration->property(role + ".cn0_smoother_alpha", trk_param.cn0_smoother_alpha);
trk_param.carrier_lock_test_smoother_samples = configuration->property(role + ".carrier_lock_test_smoother_samples", trk_param.carrier_lock_test_smoother_samples);

View File

@ -286,7 +286,7 @@ GpsL5DllPllTrackingFpga::GpsL5DllPllTrackingFpga(
}
}
//tracking lock tests smoother parameters
// tracking lock tests smoother parameters
trk_param_fpga.cn0_smoother_samples = configuration->property(role + ".cn0_smoother_samples", trk_param_fpga.cn0_smoother_samples);
trk_param_fpga.cn0_smoother_alpha = configuration->property(role + ".cn0_smoother_alpha", trk_param_fpga.cn0_smoother_alpha);
trk_param_fpga.carrier_lock_test_smoother_samples = configuration->property(role + ".carrier_lock_test_smoother_samples", trk_param_fpga.carrier_lock_test_smoother_samples);

View File

@ -88,7 +88,7 @@ endif()
target_link_libraries(tracking_gr_blocks
PUBLIC
Boost::boost
Boost::headers
Armadillo::armadillo
Gnuradio::blocks
Matio::matio

View File

@ -88,7 +88,7 @@ add_library(tracking_libs ${TRACKING_LIB_SOURCES} ${TRACKING_LIB_HEADERS})
target_link_libraries(tracking_libs
PUBLIC
Armadillo::armadillo
Boost::boost
Boost::headers
Gnuradio::runtime
Volkgnsssdr::volkgnsssdr
core_system_parameters

View File

@ -40,7 +40,6 @@ class Dll_Pll_Conf
{
public:
/* DLL/PLL tracking configuration */
int fll_filter_order;
bool enable_fll_pull_in;
bool enable_fll_steady_state;
@ -48,7 +47,6 @@ public:
unsigned int bit_synchronization_time_limit_s;
int pll_filter_order;
int dll_filter_order;
double fs_in;
uint32_t vector_length;
bool dump;
@ -72,7 +70,6 @@ public:
float cn0_smoother_alpha;
int32_t carrier_lock_test_smoother_samples;
float carrier_lock_test_smoother_alpha;
//int32_t carrier_lock_det_mav_samples;
int32_t cn0_min;
int32_t max_code_lock_fail;
int32_t max_carrier_lock_fail;

View File

@ -62,7 +62,7 @@ add_library(core_libs ${CORE_LIBS_SOURCES} ${CORE_LIBS_HEADERS})
target_link_libraries(core_libs
PUBLIC
Boost::boost
Boost::headers
Gnuradio::runtime
core_libs_supl
core_system_parameters

View File

@ -148,7 +148,7 @@ target_link_libraries(core_receiver
telemetry_decoder_adapters
obs_adapters
pvt_adapters
Boost::boost
Boost::headers
Gflags::gflags
Glog::glog
Armadillo::armadillo

View File

@ -32,7 +32,7 @@ endif()
target_link_libraries(gnss-sdr
PUBLIC
core_receiver
Boost::boost
Boost::headers
Boost::thread
Gflags::gflags
Glog::glog

View File

@ -37,7 +37,7 @@ target_link_libraries(system_testing_lib
Armadillo::armadillo
Gflags::gflags
PRIVATE
Boost::boost
Boost::headers
Matio::matio
)

View File

@ -43,7 +43,7 @@ target_link_libraries(signal_processing_testing_lib
Gflags::gflags
Gnuradio::runtime
PRIVATE
Boost::boost
Boost::headers
Matio::matio
Glog::glog
)

View File

@ -54,14 +54,14 @@ public:
const int32_t KK = 7; // Constraint Length
int32_t mm = KK - 1;
int32_t flag_even_word_arrived;
void viterbi_decoder(double *page_part_symbols, int32_t *page_part_bits, int32_t _datalength)
void viterbi_decoder(float *page_part_symbols, int32_t *page_part_bits, int32_t _datalength)
{
Viterbi(page_part_bits, out0, state0, out1, state1,
page_part_symbols, KK, nn, _datalength);
}
void deinterleaver(int32_t rows, int32_t cols, const double *in, double *out)
void deinterleaver(int32_t rows, int32_t cols, const float *in, float *out)
{
for (int32_t r = 0; r < rows; r++)
{
@ -73,10 +73,10 @@ public:
}
bool decode_INAV_word(double *page_part_symbols, int32_t frame_length)
bool decode_INAV_word(float *page_part_symbols, int32_t frame_length)
{
// 1. De-interleave
auto *page_part_symbols_deint = static_cast<double *>(volk_gnsssdr_malloc(frame_length * sizeof(double), volk_gnsssdr_get_alignment()));
auto *page_part_symbols_deint = static_cast<float *>(volk_gnsssdr_malloc(frame_length * sizeof(float), volk_gnsssdr_get_alignment()));
deinterleaver(GALILEO_INAV_INTERLEAVER_ROWS, GALILEO_INAV_INTERLEAVER_COLS, page_part_symbols, page_part_symbols_deint);
// 2. Viterbi decoder
@ -134,10 +134,10 @@ public:
return crc_ok;
}
bool decode_FNAV_word(double *page_symbols, int32_t frame_length)
bool decode_FNAV_word(float *page_symbols, int32_t frame_length)
{
// 1. De-interleave
auto *page_symbols_deint = static_cast<double *>(volk_gnsssdr_malloc(frame_length * sizeof(double), volk_gnsssdr_get_alignment()));
auto *page_symbols_deint = static_cast<float *>(volk_gnsssdr_malloc(frame_length * sizeof(float), volk_gnsssdr_get_alignment()));
deinterleaver(GALILEO_FNAV_INTERLEAVER_ROWS, GALILEO_FNAV_INTERLEAVER_COLS, page_symbols, page_symbols_deint);
// 2. Viterbi decoder
@ -215,7 +215,7 @@ TEST_F(Galileo_FNAV_INAV_test, ValidationOfResults)
start = std::chrono::system_clock::now();
int repetitions = 10;
// FNAV FULLY ENCODED FRAME
double FNAV_frame[488] = {-1, 1, -1, -1, 1, -1, 1, 1, 1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
float FNAV_frame[488] = {-1, 1, -1, -1, 1, -1, 1, 1, 1, -1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1, -1, -1, 1, -1, -1, 1, 1, 1, -1, 1, -1, 1, 1, -1, 1, -1, -1, -1, -1, 1, -1, -1, 1, -1, -1, -1, -1, 1, 1, 1, 1, 1, 1,
-1, 1, -1, 1, -1, 1, 1, -1, -1, 1, -1, 1, -1, 1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, 1, 1, -1, 1, -1, 1, -1,
-1, 1, 1, -1, 1, 1, 1, 1, -1, 1, 1, 1, -1, 1, -1, 1, 1, -1, 1, -1, 1, 1, -1, 1, 1, 1, -1, -1, 1, 1, -1, -1, -1, -1,
@ -240,7 +240,7 @@ TEST_F(Galileo_FNAV_INAV_test, ValidationOfResults)
// INAV FULLY ENCODED FRAME
double INAV_frame_even[240] = {-1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
float INAV_frame_even[240] = {-1, -1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1, -1, -1, -1, 1, 1,
-1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, -1, -1, 1, -1, -1, -1, 1, -1,
@ -256,7 +256,7 @@ TEST_F(Galileo_FNAV_INAV_test, ValidationOfResults)
-1, -1, 1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1, -1, 1, 1, 1};
double INAV_frame_odd[240] = {1, -1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
float INAV_frame_odd[240] = {1, -1, 1, 1, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1, 1, 1, 1, -1, 1, -1, -1, 1, -1, 1, -1, -1, 1, -1, 1,
1, 1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, -1,
-1, -1, 1, 1, -1, 1, 1, 1, -1, 1, 1, 1, 1, -1, -1, 1,

View File

@ -34,7 +34,7 @@ target_link_libraries(front_end_cal_lib
core_receiver
core_libs
PRIVATE
Boost::boost
Boost::headers
Gflags::gflags
Glog::glog
Gnuradio::blocks
@ -68,7 +68,7 @@ target_link_libraries(front-end-cal
core_receiver
front_end_cal_lib
gnss_sdr_flags
Boost::boost
Boost::headers
PRIVATE
Gflags::gflags
Glog::glog