[hamradio-commits] [gnss-sdr] 101/236: Work on the telemetry decoder to support the variable-length correlator in GPS L1 CA tracking
Carles Fernandez
carles_fernandez-guest at moszumanska.debian.org
Tue Apr 26 16:02:39 UTC 2016
This is an automated email from the git hooks/post-receive script.
carles_fernandez-guest pushed a commit to branch next
in repository gnss-sdr.
commit 840bb1b9a347eb3010f9cacffb50fe22e7aece2f
Author: Javier Arribas <javiarribas at gmail.com>
Date: Thu Mar 17 18:54:41 2016 +0100
Work on the telemetry decoder to support the variable-length correlator in GPS L1 CA tracking
---
.../gps_l1_ca_telemetry_decoder_cc.cc | 199 ++++++++++-----------
.../gps_l1_ca_telemetry_decoder_cc.h | 7 +-
.../gps_l1_ca_dll_pll_c_aid_tracking_cc.cc | 47 ++---
src/core/system_parameters/GPS_L1_CA.h | 1 +
src/core/system_parameters/gnss_synchro.h | 2 +-
5 files changed, 123 insertions(+), 133 deletions(-)
diff --git a/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_cc.cc b/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_cc.cc
index e99b489..97db35e 100644
--- a/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_cc.cc
+++ b/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_cc.cc
@@ -59,16 +59,16 @@ gps_l1_ca_make_telemetry_decoder_cc(Gnss_Satellite satellite, boost::shared_ptr<
-void gps_l1_ca_telemetry_decoder_cc::forecast (int noutput_items, gr_vector_int &ninput_items_required)
-{
- if (noutput_items != 0)
- {
- for (unsigned i = 0; i < 3; i++)
- {
- ninput_items_required[i] = d_samples_per_bit * 8; //set the required sample history
- }
- }
-}
+//void gps_l1_ca_telemetry_decoder_cc::forecast (int noutput_items, gr_vector_int &ninput_items_required)
+//{
+// if (noutput_items != 0)
+// {
+// for (unsigned i = 0; i < 3; i++)
+// {
+// ninput_items_required[i] = d_samples_per_bit * 8; //set the required sample history
+// }
+// }
+//}
@@ -181,114 +181,101 @@ int gps_l1_ca_telemetry_decoder_cc::general_work (int noutput_items, gr_vector_i
// ########### Output the tracking data to navigation and PVT ##########
const Gnss_Synchro **in = (const Gnss_Synchro **) &input_items[0]; //Get the input samples pointer
- // TODO Optimize me!
- if (in[0][d_samples_per_bit*8 - 1].symbol_integration_enabled==false)
+ // keep the last valid symbols
+ if (in[0]->Flag_valid_symbol_output==true)
{
- //******* preamble correlation ********
- for (unsigned int i = 0; i < d_samples_per_bit*8; i++)
+ d_symbol_history.push_back(in[0]->Prompt_I);
+ if (static_cast<int>(d_symbol_history.size())>GPS_CA_PREAMBLE_LENGTH_SYMBOLS)
{
- if (in[0][i].Prompt_I < 0) // symbols clipping
- {
- corr_value -= d_preambles_symbols[i];
- }
- else
- {
- corr_value += d_preambles_symbols[i];
- }
+ d_symbol_history.pop_front();
}
- }else{
- //******* preamble correlation ********
- for (unsigned int i = 0; i < d_samples_per_bit*8; i++)
- {
- if (in[0][i].Flag_valid_symbol_output==true)
- {
- if (in[0][i].Prompt_I < 0) // symbols clipping
+
+ if (d_symbol_history.size()==GPS_CA_PREAMBLE_LENGTH_SYMBOLS)
+ {
+ //******* preamble correlation ********
+ int current_symbol_index=0;
+ for (int i = 0; i < GPS_CA_PREAMBLE_LENGTH_SYMBOLS/in[0]->correlation_length_ms; i++)
+ {
+ current_symbol_index=i*in[0]->correlation_length_ms;//+static_cast<int>(floor(in[0]->correlation_length_ms/2));
+ if (d_symbol_history.at(i) < 0) // symbols clipping
{
- corr_value -= d_preambles_symbols[i]*d_samples_per_bit;
+ //symbol weight expansion using the current tracking correlation length
+ corr_value -= d_preambles_symbols[current_symbol_index]*in[0]->correlation_length_ms;
}
else
{
- corr_value += d_preambles_symbols[i]*d_samples_per_bit;
+ //symbol weight expansion using the current tracking correlation length
+ corr_value += d_preambles_symbols[current_symbol_index]*in[0]->correlation_length_ms;
}
- }
- }
+ }
+ }
+ if (abs(corr_value)>120)
+ {
+ std::cout<<abs(corr_value)<<std::endl;
+ }
}
d_flag_preamble = false;
//******* frame sync ******************
- if (abs(corr_value) == 160)
- {
- //TODO: Rewrite with state machine
- if (d_stat == 0)
- {
- d_GPS_FSM.Event_gps_word_preamble();
- d_preamble_index = d_sample_counter;//record the preamble sample stamp
- DLOG(INFO) << "Preamble detection for SAT " << this->d_satellite;
- d_symbol_accumulator = 0; //sync the symbol to bits integrator
- d_symbol_accumulator_counter = 0;
- d_frame_bit_index = 7;
- d_stat = 1; // enter into frame pre-detection status
- }
- else if (d_stat == 1) //check 6 seconds of preamble separation
- {
- preamble_diff = d_sample_counter - d_preamble_index;
- if (abs(preamble_diff - 6000) < 1)
- {
- d_GPS_FSM.Event_gps_word_preamble();
- d_flag_preamble = true;
- d_preamble_index = d_sample_counter; //record the preamble sample stamp (t_P)
- d_preamble_time_seconds = in[0][0].Tracking_timestamp_secs;// - d_preamble_duration_seconds; //record the PRN start sample index associated to the preamble
- d_frame_bit_index = 7;
- if (!d_flag_frame_sync)
- {
- //send asynchronous message to tracking to inform of frame sync and extend correlation time
- pmt::pmt_t value = pmt::from_long(d_preamble_index-1);
- this->message_port_pub(pmt::mp("preamble_index"),value);
-
- d_flag_frame_sync = true;
- if (corr_value < 0)
- {
- flag_PLL_180_deg_phase_locked = true; //PLL is locked to opposite phase!
- DLOG(INFO) << " PLL in opposite phase for Sat "<< this->d_satellite.get_PRN();
- }
- else
- {
- flag_PLL_180_deg_phase_locked = false;
- }
- DLOG(INFO) << " Frame sync SAT " << this->d_satellite << " with preamble start at " << d_preamble_time_seconds << " [s]";
- }
- }
- }
- }
- else
- {
- if (d_stat == 1)
- {
- preamble_diff = d_sample_counter - d_preamble_index;
- if (preamble_diff > 6001)
- {
- DLOG(INFO) << "Lost of frame sync SAT " << this->d_satellite << " preamble_diff= " << preamble_diff;
- d_stat = 0; //lost of frame sync
- d_flag_frame_sync = false;
- flag_TOW_set = false;
- }
- }
- }
+ if (abs(corr_value) == GPS_CA_PREAMBLE_LENGTH_SYMBOLS)
+ {
+ if (d_stat == 0)
+ {
+ d_GPS_FSM.Event_gps_word_preamble();
+ d_preamble_index = d_sample_counter;//record the preamble sample stamp
+ std::cout << "Preamble detection for SAT " << this->d_satellite;
+ d_symbol_accumulator = 0; //sync the symbol to bits integrator
+ d_symbol_accumulator_counter = 0;
+ d_frame_bit_index = 7;
+ d_stat = 1; // enter into frame pre-detection status
+ }
+ else if (d_stat == 1) //check 6 seconds of preamble separation
+ {
+ preamble_diff = d_sample_counter - d_preamble_index;
+ if (abs(preamble_diff - 6000) < 1)
+ {
+ std::cout <<"preamble! corr lenght="<<in[0]->correlation_length_ms<<std::endl;
+ d_GPS_FSM.Event_gps_word_preamble();
+ d_flag_preamble = true;
+ d_preamble_index = d_sample_counter; //record the preamble sample stamp (t_P)
+ d_preamble_time_seconds = in[0][0].Tracking_timestamp_secs;// - d_preamble_duration_seconds; //record the PRN start sample index associated to the preamble
+ d_frame_bit_index = 7;
+ if (!d_flag_frame_sync)
+ {
+ //send asynchronous message to tracking to inform of frame sync and extend correlation time
+ pmt::pmt_t value = pmt::from_long(d_preamble_index-2);
+ this->message_port_pub(pmt::mp("preamble_index"),value);
+
+ d_flag_frame_sync = true;
+ if (corr_value < 0)
+ {
+ flag_PLL_180_deg_phase_locked = true; //PLL is locked to opposite phase!
+ std::cout << " PLL in opposite phase for Sat "<< this->d_satellite.get_PRN();
+ }
+ else
+ {
+ flag_PLL_180_deg_phase_locked = false;
+ }
+ std::cout << " Frame sync SAT " << this->d_satellite << " with preamble start at " << d_preamble_time_seconds << " [s]";
+ }
+ }else{
+ if (preamble_diff > 6001)
+ {
+ std::cout << "Lost of frame sync SAT " << this->d_satellite << " preamble_diff= " << preamble_diff;
+ d_stat = 0; //lost of frame sync
+ d_flag_frame_sync = false;
+ flag_TOW_set = false;
+ }
+ }
+ }
+ }
//******* SYMBOL TO BIT *******
- if (in[0][d_samples_per_bit*8 - 1].Flag_valid_symbol_output==true)
+ if (in[0]->Flag_valid_symbol_output==true)
{
- if (in[0][d_samples_per_bit*8 - 1].symbol_integration_enabled==true)
- {
- // extended correlation to bit period is enabled in tracking!
- // 1 symbol = 1 bit
- d_symbol_accumulator = in[0][d_samples_per_bit*8 - 1].Prompt_I; // accumulate the input value in d_symbol_accumulator
- d_symbol_accumulator_counter=20;
- }else{
- // 20 symbols = 1 bit: do symbols integration in telemetry decoder
- d_symbol_accumulator += in[0][d_samples_per_bit*8 - 1].Prompt_I; // accumulate the input value in d_symbol_accumulator
- d_symbol_accumulator_counter++;
- }
+ // extended correlation to bit period is enabled in tracking!
+ d_symbol_accumulator += in[0]->Prompt_I; // accumulate the input value in d_symbol_accumulator
+ d_symbol_accumulator_counter+=in[0]->correlation_length_ms;
}
if (d_symbol_accumulator_counter == 20 )
@@ -342,8 +329,6 @@ int gps_l1_ca_telemetry_decoder_cc::general_work (int noutput_items, gr_vector_i
{
d_GPS_frame_4bytes <<= 1; //shift 1 bit left the telemetry word
}
-
-
}
// output the frame
consume_each(1); //one by one
@@ -381,8 +366,8 @@ int gps_l1_ca_telemetry_decoder_cc::general_work (int noutput_items, gr_vector_i
if (flag_PLL_180_deg_phase_locked == true)
{
- //correct the accumulated phase for the costas loop phase shift, if required
- current_synchro_data.Carrier_phase_rads += GPS_PI;
+ //correct the accumulated phase for the costas loop phase shift, if required
+ current_synchro_data.Carrier_phase_rads += GPS_PI;
}
if(d_dump == true)
diff --git a/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_cc.h b/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_cc.h
index bd6713f..303684f 100644
--- a/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_cc.h
+++ b/src/algorithms/telemetry_decoder/gnuradio_blocks/gps_l1_ca_telemetry_decoder_cc.h
@@ -85,7 +85,7 @@ public:
* \brief Function which tells the scheduler how many input items
* are required to produce noutput_items output items.
*/
- void forecast (int noutput_items, gr_vector_int &ninput_items_required);
+ //void forecast (int noutput_items, gr_vector_int &ninput_items_required);
private:
friend gps_l1_ca_telemetry_decoder_cc_sptr
@@ -107,6 +107,7 @@ private:
bool d_flag_frame_sync;
// symbols
+ std::deque<double> d_symbol_history;
double d_symbol_accumulator;
short int d_symbol_accumulator_counter;
@@ -138,10 +139,6 @@ private:
double d_TOW_at_Preamble;
double d_TOW_at_current_symbol;
- std::deque<double> d_symbol_TOW_queue_s;
- // Doppler and Phase accumulator queue for interpolation in Observables
- std::deque<double> d_carrier_doppler_queue_hz;
- std::deque<double> d_acc_carrier_phase_queue_rads;
double Prn_timestamp_at_preamble_ms;
bool flag_TOW_set;
diff --git a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_cc.cc b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_cc.cc
index 4377c55..7dbe016 100644
--- a/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_cc.cc
+++ b/src/algorithms/tracking/gnuradio_blocks/gps_l1_ca_dll_pll_c_aid_tracking_cc.cc
@@ -347,6 +347,8 @@ int gps_l1_ca_dll_pll_c_aid_tracking_cc::general_work (int noutput_items, gr_vec
d_pull_in = false;
// Fill the acquisition data
current_synchro_data = *d_acquisition_gnss_synchro;
+ current_synchro_data.correlation_length_ms=1;
+ current_synchro_data.Flag_valid_symbol_output = false;
*out[0] = current_synchro_data;
consume_each(samples_offset); //shift input to perform alignment with local replica
d_symbol_counter++;
@@ -361,13 +363,13 @@ int gps_l1_ca_dll_pll_c_aid_tracking_cc::general_work (int noutput_items, gr_vec
multicorrelator_cpu.set_input_output_vectors(d_correlator_outs,in);
multicorrelator_cpu.Carrier_wipeoff_multicorrelator_resampler(d_rem_carrier_phase_rad, d_carrier_phase_step_rad, d_rem_code_phase_chips, d_code_phase_step_chips, d_correlation_length_samples);
- // ####### 20ms coherent intergration extension (experimental)
- // keep the last 40 symbols (2 bits to detect transitions)
+ // ####### coherent intergration extension
+ // keep the last symbols
d_E_history.push_back(d_correlator_outs[0]); // save early output
d_P_history.push_back(d_correlator_outs[1]); // save prompt output
d_L_history.push_back(d_correlator_outs[2]); // save late output
- if (d_P_history.size()>d_extend_correlation_ms)
+ if (static_cast<int>(d_P_history.size())>d_extend_correlation_ms)
{
d_E_history.pop_front();
d_P_history.pop_front();
@@ -382,7 +384,6 @@ int gps_l1_ca_dll_pll_c_aid_tracking_cc::general_work (int noutput_items, gr_vec
{
// compute coherent integration and enable tracking loop
// perform coherent integration using correlator output history
- //gr_complex d_correlator_outs_2[3];
//std::cout<<"##### RESET COHERENT INTEGRATION ####"<<std::endl;
d_correlator_outs[0]=gr_complex(0.0,0.0);
d_correlator_outs[1]=gr_complex(0.0,0.0);
@@ -402,14 +403,11 @@ int gps_l1_ca_dll_pll_c_aid_tracking_cc::general_work (int noutput_items, gr_vec
std::cout<<"dll="<<d_dll_bw_hz<<" dll_n="<<d_dll_bw_narrow_hz<<" pll="<<d_pll_bw_hz<<" pll_n="<<d_pll_bw_narrow_hz<<std::endl;
}
- current_synchro_data.symbol_integration_enabled=true;
// UPDATE INTEGRATION TIME
CURRENT_INTEGRATION_TIME_S = static_cast<double>(d_extend_correlation_ms)*GPS_L1_CA_CODE_PERIOD;
-
enable_dll_pll=true;
}else{
- current_synchro_data.symbol_integration_enabled=false;
if(d_preamble_synchronized==true)
{
// continue extended coherent correlation
@@ -434,6 +432,10 @@ int gps_l1_ca_dll_pll_c_aid_tracking_cc::general_work (int noutput_items, gr_vec
//remnant code phase [chips]
d_rem_code_phase_chips = d_rem_code_phase_samples * (d_code_freq_chips / static_cast<double>(d_fs_in));
+ // UPDATE ACCUMULATED CARRIER PHASE
+ CORRECTED_INTEGRATION_TIME_S=(static_cast<double>(d_correlation_length_samples)/static_cast<double>(d_fs_in));
+ d_acc_carrier_phase_cycles -= d_carrier_doppler_hz * CORRECTED_INTEGRATION_TIME_S;
+
// disable tracking loop and inform telemetry decoder
enable_dll_pll=false;
}else{
@@ -444,13 +446,11 @@ int gps_l1_ca_dll_pll_c_aid_tracking_cc::general_work (int noutput_items, gr_vec
}
}
}else{
- current_synchro_data.symbol_integration_enabled=false;
// UPDATE INTEGRATION TIME
CURRENT_INTEGRATION_TIME_S = static_cast<double>(d_correlation_length_samples) / static_cast<double>(d_fs_in);
enable_dll_pll=true;
}
- // ###### end 20ms correlation extension
if (enable_dll_pll==true)
{
@@ -498,7 +498,7 @@ int gps_l1_ca_dll_pll_c_aid_tracking_cc::general_work (int noutput_items, gr_vec
d_correlation_length_samples = K_prn_samples + d_rem_code_phase_integer_samples; //round to a discrete samples
d_rem_code_phase_samples=d_rem_code_phase_samples-d_rem_code_phase_integer_samples;
- // UPDATE REMNANT CARRIER PHASE
+ // UPDATE ACCUMULATED CARRIER PHASE
CORRECTED_INTEGRATION_TIME_S=(static_cast<double>(d_correlation_length_samples)/static_cast<double>(d_fs_in));
//remnant carrier phase [rad]
d_rem_carrier_phase_rad = fmod(d_rem_carrier_phase_rad + GPS_TWO_PI * d_carrier_doppler_hz * CORRECTED_INTEGRATION_TIME_S, GPS_TWO_PI);
@@ -527,13 +527,8 @@ int gps_l1_ca_dll_pll_c_aid_tracking_cc::general_work (int noutput_items, gr_vec
{
d_cn0_estimation_counter = 0;
// Code lock indicator
- if (current_synchro_data.symbol_integration_enabled==false)
- {
- d_CN0_SNV_dB_Hz = cn0_svn_estimator(d_Prompt_buffer, CN0_ESTIMATION_SAMPLES, d_fs_in, GPS_L1_CA_CODE_LENGTH_CHIPS);
- }else{
- d_CN0_SNV_dB_Hz = cn0_svn_estimator(d_Prompt_buffer, CN0_ESTIMATION_SAMPLES, d_fs_in, GPS_L1_CA_CODE_LENGTH_CHIPS*d_extend_correlation_ms);
- }
- // Carrier lock indicator
+ d_CN0_SNV_dB_Hz = cn0_svn_estimator(d_Prompt_buffer, CN0_ESTIMATION_SAMPLES, d_fs_in, GPS_L1_CA_CODE_LENGTH_CHIPS);
+ // Carrier lock indicator
d_carrier_lock_test = carrier_lock_detector(d_Prompt_buffer, CN0_ESTIMATION_SAMPLES);
// Loss of lock detection
if (d_carrier_lock_test < d_carrier_lock_threshold or d_CN0_SNV_dB_Hz < MINIMUM_VALID_CN0)
@@ -569,6 +564,12 @@ int gps_l1_ca_dll_pll_c_aid_tracking_cc::general_work (int noutput_items, gr_vec
current_synchro_data.CN0_dB_hz = d_CN0_SNV_dB_Hz;
current_synchro_data.Flag_valid_pseudorange = false;
current_synchro_data.Flag_valid_symbol_output = true;
+ if (d_preamble_synchronized==true)
+ {
+ current_synchro_data.correlation_length_ms=d_extend_correlation_ms;
+ }else{
+ current_synchro_data.correlation_length_ms=1;
+ }
*out[0] = current_synchro_data;
}else{
//todo: fill synchronization data to produce output while coherent integration is running
@@ -579,10 +580,16 @@ int gps_l1_ca_dll_pll_c_aid_tracking_cc::general_work (int noutput_items, gr_vec
current_synchro_data.Tracking_timestamp_secs = (static_cast<double>(d_sample_counter) + d_rem_code_phase_samples) / static_cast<double>(d_fs_in);
// This tracking block aligns the Tracking_timestamp_secs with the start sample of the PRN, thus, Code_phase_secs=0
current_synchro_data.Code_phase_secs = 0;
- current_synchro_data.Carrier_phase_rads = GPS_TWO_PI * d_acc_carrier_phase_cycles; // todo: project the acc carrier phase
+ current_synchro_data.Carrier_phase_rads = GPS_TWO_PI * d_acc_carrier_phase_cycles;
current_synchro_data.Carrier_Doppler_hz = d_carrier_doppler_hz;// todo: project the carrier doppler
current_synchro_data.CN0_dB_hz = d_CN0_SNV_dB_Hz;
current_synchro_data.Flag_valid_pseudorange = false;
+ if (d_preamble_synchronized==true)
+ {
+ current_synchro_data.correlation_length_ms=d_extend_correlation_ms;
+ }else{
+ current_synchro_data.correlation_length_ms=1;
+ }
*out[0] = current_synchro_data;
}
@@ -597,7 +604,7 @@ int gps_l1_ca_dll_pll_c_aid_tracking_cc::general_work (int noutput_items, gr_vec
{
d_last_seg = floor(d_sample_counter / d_fs_in);
std::cout << "Current input signal time = " << d_last_seg << " [s]" << std::endl;
- std::cout << "GPS L1 C/A Tracking CH " << d_channel << ": Satellite " << Gnss_Satellite(systemName[sys], d_acquisition_gnss_synchro->PRN)
+ DLOG(INFO) << "GPS L1 C/A Tracking CH " << d_channel << ": Satellite " << Gnss_Satellite(systemName[sys], d_acquisition_gnss_synchro->PRN)
<< ", CN0 = " << d_CN0_SNV_dB_Hz << " [dB-Hz]" << std::endl;
//if (d_last_seg==5) d_carrier_lock_fail_counter=500; //DEBUG: force unlock!
}
@@ -607,7 +614,7 @@ int gps_l1_ca_dll_pll_c_aid_tracking_cc::general_work (int noutput_items, gr_vec
if (floor(d_sample_counter / d_fs_in) != d_last_seg)
{
d_last_seg = floor(d_sample_counter / d_fs_in);
- std::cout << "Tracking CH " << d_channel << ": Satellite " << Gnss_Satellite(systemName[sys], d_acquisition_gnss_synchro->PRN)
+ DLOG(INFO) << "Tracking CH " << d_channel << ": Satellite " << Gnss_Satellite(systemName[sys], d_acquisition_gnss_synchro->PRN)
<< ", CN0 = " << d_CN0_SNV_dB_Hz << " [dB-Hz]";
}
}
diff --git a/src/core/system_parameters/GPS_L1_CA.h b/src/core/system_parameters/GPS_L1_CA.h
index bbe96db..2692017 100644
--- a/src/core/system_parameters/GPS_L1_CA.h
+++ b/src/core/system_parameters/GPS_L1_CA.h
@@ -74,6 +74,7 @@ const int GPS_L1_CA_HISTORY_DEEP = 100;
#define GPS_PREAMBLE {1, 0, 0, 0, 1, 0, 1, 1}
const int GPS_CA_PREAMBLE_LENGTH_BITS = 8;
+const int GPS_CA_PREAMBLE_LENGTH_SYMBOLS = 160;
const int GPS_CA_TELEMETRY_RATE_BITS_SECOND = 50; //!< NAV message bit rate [bits/s]
const int GPS_CA_TELEMETRY_SYMBOLS_PER_BIT = 20;
const int GPS_CA_TELEMETRY_RATE_SYMBOLS_SECOND = GPS_CA_TELEMETRY_RATE_BITS_SECOND*20; //!< NAV message bit rate [symbols/s]
diff --git a/src/core/system_parameters/gnss_synchro.h b/src/core/system_parameters/gnss_synchro.h
index d70c21b..5aea0d2 100644
--- a/src/core/system_parameters/gnss_synchro.h
+++ b/src/core/system_parameters/gnss_synchro.h
@@ -61,7 +61,7 @@ public:
double Tracking_timestamp_secs; //!< Set by Tracking processing block
bool Flag_valid_tracking;
bool Flag_valid_symbol_output;
- bool symbol_integration_enabled; //!< Set by Tracking processing block
+ int correlation_length_ms; //!< Set by Tracking processing block
//Telemetry Decoder
double Prn_timestamp_ms; //!< Set by Telemetry Decoder processing block
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-hamradio/gnss-sdr.git
More information about the pkg-hamradio-commits
mailing list