1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2025-01-18 21:23:02 +00:00

Modified GNU Radio Blocks for Tracking

This commit is contained in:
piyush0411 2020-07-14 03:34:47 +05:30
parent 142fd8a3cb
commit b32a2e271e
2 changed files with 59 additions and 2 deletions

View File

@ -11,7 +11,7 @@
* *
* ------------------------------------------------------------------------- * -------------------------------------------------------------------------
* *
* Copyright (C) 2010-2019 (see AUTHORS file for a list of contributors) * Copyright (C) 2010-2020 (see AUTHORS file for a list of contributors)
* *
* GNSS-SDR is a software defined Global Navigation * GNSS-SDR is a software defined Global Navigation
* Satellite Systems receiver * Satellite Systems receiver
@ -31,6 +31,7 @@
#include "GPS_L5.h" #include "GPS_L5.h"
#include "Galileo_E1.h" #include "Galileo_E1.h"
#include "Galileo_E5a.h" #include "Galileo_E5a.h"
#include "Galileo_E5b.h"
#include "MATH_CONSTANTS.h" #include "MATH_CONSTANTS.h"
#include "beidou_b1i_signal_processing.h" #include "beidou_b1i_signal_processing.h"
#include "beidou_b3i_signal_processing.h" #include "beidou_b3i_signal_processing.h"
@ -127,6 +128,7 @@ dll_pll_veml_tracking::dll_pll_veml_tracking(const Dll_Pll_Conf &conf_) : gr::bl
map_signal_pretty_name["2S"] = "L2C"; map_signal_pretty_name["2S"] = "L2C";
map_signal_pretty_name["2G"] = "L2 C/A"; map_signal_pretty_name["2G"] = "L2 C/A";
map_signal_pretty_name["5X"] = "E5a"; map_signal_pretty_name["5X"] = "E5a";
map_signal_pretty_name["7X"] = "E5b";
map_signal_pretty_name["L5"] = "L5"; map_signal_pretty_name["L5"] = "L5";
map_signal_pretty_name["B1"] = "B1I"; map_signal_pretty_name["B1"] = "B1I";
map_signal_pretty_name["B3"] = "B3I"; map_signal_pretty_name["B3"] = "B3I";
@ -283,6 +285,37 @@ dll_pll_veml_tracking::dll_pll_veml_tracking(const Dll_Pll_Conf &conf_) : gr::bl
d_interchange_iq = true; d_interchange_iq = true;
} }
} }
else if (d_signal_type == "7X")
{
d_signal_carrier_freq = GALILEO_E5B_FREQ_HZ;
d_code_period = GALILEO_E5B_CODE_PERIOD_S;
d_code_chip_rate = GALILEO_E5B_CODE_CHIP_RATE_CPS;
d_symbols_per_bit = 4;
d_correlation_length_ms = 1;
d_code_samples_per_chip = 1;
d_code_length_chips = static_cast<int32_t>(GALILEO_E5B_CODE_LENGTH_CHIPS);
d_secondary = true;
d_trk_parameters.slope = 1.0;
d_trk_parameters.spc = d_trk_parameters.early_late_space_chips;
d_trk_parameters.y_intercept = 1.0;
if (d_trk_parameters.track_pilot)
{
// synchronize pilot secondary code
d_secondary_code_length = static_cast<uint32_t>(GALILEO_E5B_Q_SECONDARY_CODE_LENGTH);
d_signal_pretty_name = d_signal_pretty_name + "Q";
// remove data secondary code
d_data_secondary_code_length = static_cast<uint32_t>(GALILEO_E5B_I_SECONDARY_CODE_LENGTH);
d_data_secondary_code_string = GALILEO_E5B_I_SECONDARY_CODE;
}
else
{
// synchronize and remove data secondary code
d_secondary_code_length = static_cast<uint32_t>(GALILEO_E5B_I_SECONDARY_CODE_LENGTH);
d_secondary_code_string = GALILEO_E5B_I_SECONDARY_CODE;
d_signal_pretty_name = d_signal_pretty_name + "I";
d_interchange_iq = true;
}
}
else else
{ {
LOG(WARNING) << "Invalid Signal argument when instantiating tracking blocks"; LOG(WARNING) << "Invalid Signal argument when instantiating tracking blocks";
@ -659,6 +692,30 @@ void dll_pll_veml_tracking::start_tracking()
} }
} }
} }
else if (d_systemName == "Galileo" and d_signal_type == "7X")
{
volk_gnsssdr::vector<gr_complex> aux_code(d_code_length_chips);
std::array<char, 3> signal_type_ = {{'7', 'X', '\0'}};
galileo_e5_b_code_gen_complex_primary(aux_code, d_acquisition_gnss_synchro->PRN, signal_type_);
if (d_trk_parameters.track_pilot)
{
d_secondary_code_string = GALILEO_E5B_Q_SECONDARY_CODE[d_acquisition_gnss_synchro->PRN - 1];
for (int32_t i = 0; i < d_code_length_chips; i++)
{
d_tracking_code[i] = aux_code[i].imag();
d_data_code[i] = aux_code[i].real(); // the same because it is generated the full signal (E5bI + E5bsQ)
}
d_Prompt_Data[0] = gr_complex(0.0, 0.0);
d_correlator_data_cpu.set_local_code_and_taps(d_code_length_chips, d_data_code.data(), d_prompt_data_shift);
}
else
{
for (int32_t i = 0; i < d_code_length_chips; i++)
{
d_tracking_code[i] = aux_code[i].real();
}
}
}
else if (d_systemName == "Beidou" and d_signal_type == "B1") else if (d_systemName == "Beidou" and d_signal_type == "B1")
{ {
beidou_b1i_code_gen_float(d_tracking_code, d_acquisition_gnss_synchro->PRN, 0); beidou_b1i_code_gen_float(d_tracking_code, d_acquisition_gnss_synchro->PRN, 0);

View File

@ -6,7 +6,7 @@
* *
* ------------------------------------------------------------------------- * -------------------------------------------------------------------------
* *
* Copyright (C) 2010-2019 (see AUTHORS file for a list of contributors) * Copyright (C) 2010-2020 (see AUTHORS file for a list of contributors)
* *
* GNSS-SDR is a software defined Global Navigation * GNSS-SDR is a software defined Global Navigation
* Satellite Systems receiver * Satellite Systems receiver