mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2025-01-16 04:05:46 +00:00
added the reception of messages from the telemetry module to the FPGA tracking modules.
This commit is contained in:
parent
3249f55029
commit
3098ca1a48
@ -80,7 +80,7 @@ dll_pll_veml_tracking_fpga::dll_pll_veml_tracking_fpga(const Dll_Pll_Conf_Fpga &
|
|||||||
this->message_port_register_in(pmt::mp("preamble_samplestamp"));
|
this->message_port_register_in(pmt::mp("preamble_samplestamp"));
|
||||||
// Telemetry message port input
|
// Telemetry message port input
|
||||||
this->message_port_register_in(pmt::mp("telemetry_to_trk"));
|
this->message_port_register_in(pmt::mp("telemetry_to_trk"));
|
||||||
//todo: Implement the telemetry_to_trk handler in the same way the software version of tracking
|
this->set_msg_handler(pmt::mp("telemetry_to_trk"), boost::bind(&dll_pll_veml_tracking_fpga::msg_handler_telemetry_to_trk, this, _1));
|
||||||
|
|
||||||
// initialize internal vars
|
// initialize internal vars
|
||||||
d_veml = false;
|
d_veml = false;
|
||||||
@ -88,7 +88,7 @@ dll_pll_veml_tracking_fpga::dll_pll_veml_tracking_fpga(const Dll_Pll_Conf_Fpga &
|
|||||||
d_code_chip_rate = 0.0;
|
d_code_chip_rate = 0.0;
|
||||||
d_secondary_code_length = 0U;
|
d_secondary_code_length = 0U;
|
||||||
d_secondary_code_string = nullptr;
|
d_secondary_code_string = nullptr;
|
||||||
d_gps_l1ca_preambles_symbols = nullptr;
|
d_preambles_symbols = nullptr;
|
||||||
signal_type = std::string(trk_parameters.signal);
|
signal_type = std::string(trk_parameters.signal);
|
||||||
|
|
||||||
std::map<std::string, std::string> map_signal_pretty_name;
|
std::map<std::string, std::string> map_signal_pretty_name;
|
||||||
@ -124,7 +124,7 @@ dll_pll_veml_tracking_fpga::dll_pll_veml_tracking_fpga(const Dll_Pll_Conf_Fpga &
|
|||||||
uint16_t preambles_bits[GPS_CA_PREAMBLE_LENGTH_BITS] = GPS_PREAMBLE;
|
uint16_t preambles_bits[GPS_CA_PREAMBLE_LENGTH_BITS] = GPS_PREAMBLE;
|
||||||
|
|
||||||
// preamble bits to sampled symbols
|
// preamble bits to sampled symbols
|
||||||
d_gps_l1ca_preambles_symbols = static_cast<int32_t *>(volk_gnsssdr_malloc(GPS_CA_PREAMBLE_LENGTH_SYMBOLS * sizeof(int32_t), volk_gnsssdr_get_alignment()));
|
d_preambles_symbols = static_cast<int32_t *>(volk_gnsssdr_malloc(GPS_CA_PREAMBLE_LENGTH_SYMBOLS * sizeof(int32_t), volk_gnsssdr_get_alignment()));
|
||||||
int32_t n = 0;
|
int32_t n = 0;
|
||||||
for (uint16_t preambles_bit : preambles_bits)
|
for (uint16_t preambles_bit : preambles_bits)
|
||||||
{
|
{
|
||||||
@ -132,11 +132,11 @@ dll_pll_veml_tracking_fpga::dll_pll_veml_tracking_fpga(const Dll_Pll_Conf_Fpga &
|
|||||||
{
|
{
|
||||||
if (preambles_bit == 1)
|
if (preambles_bit == 1)
|
||||||
{
|
{
|
||||||
d_gps_l1ca_preambles_symbols[n] = 1;
|
d_preambles_symbols[n] = 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
d_gps_l1ca_preambles_symbols[n] = -1;
|
d_preambles_symbols[n] = -1;
|
||||||
}
|
}
|
||||||
n++;
|
n++;
|
||||||
}
|
}
|
||||||
@ -426,6 +426,37 @@ dll_pll_veml_tracking_fpga::dll_pll_veml_tracking_fpga(const Dll_Pll_Conf_Fpga &
|
|||||||
d_sample_counter_next = 0ULL;
|
d_sample_counter_next = 0ULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void dll_pll_veml_tracking_fpga::msg_handler_telemetry_to_trk(const pmt::pmt_t &msg)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
if (pmt::any_ref(msg).type() == typeid(int))
|
||||||
|
{
|
||||||
|
int tlm_event;
|
||||||
|
tlm_event = boost::any_cast<int>(pmt::any_ref(msg));
|
||||||
|
|
||||||
|
switch (tlm_event)
|
||||||
|
{
|
||||||
|
case 1: //tlm fault in current channel
|
||||||
|
{
|
||||||
|
DLOG(INFO) << "Telemetry fault received in ch " << this->d_channel;
|
||||||
|
gr::thread::scoped_lock lock(d_setlock);
|
||||||
|
d_carrier_lock_fail_counter = 10000; //force loss-of-lock condition
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (boost::bad_any_cast &e)
|
||||||
|
{
|
||||||
|
LOG(WARNING) << "msg_handler_telemetry_to_trk Bad any cast!";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void dll_pll_veml_tracking_fpga::start_tracking()
|
void dll_pll_veml_tracking_fpga::start_tracking()
|
||||||
{
|
{
|
||||||
@ -512,7 +543,7 @@ dll_pll_veml_tracking_fpga::~dll_pll_veml_tracking_fpga()
|
|||||||
{
|
{
|
||||||
if (signal_type == "1C")
|
if (signal_type == "1C")
|
||||||
{
|
{
|
||||||
volk_gnsssdr_free(d_gps_l1ca_preambles_symbols);
|
volk_gnsssdr_free(d_preambles_symbols);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (d_dump_file.is_open())
|
if (d_dump_file.is_open())
|
||||||
@ -1617,11 +1648,11 @@ void dll_pll_veml_tracking_fpga::run_state_2(Gnss_Synchro ¤t_synchro_data)
|
|||||||
{
|
{
|
||||||
if (d_symbol_history.at(i) < 0) // symbols clipping
|
if (d_symbol_history.at(i) < 0) // symbols clipping
|
||||||
{
|
{
|
||||||
corr_value -= d_gps_l1ca_preambles_symbols[i];
|
corr_value -= d_preambles_symbols[i];
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
corr_value += d_gps_l1ca_preambles_symbols[i];
|
corr_value += d_preambles_symbols[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -77,7 +77,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
friend dll_pll_veml_tracking_fpga_sptr dll_pll_veml_make_tracking_fpga(const Dll_Pll_Conf_Fpga &conf_);
|
friend dll_pll_veml_tracking_fpga_sptr dll_pll_veml_make_tracking_fpga(const Dll_Pll_Conf_Fpga &conf_);
|
||||||
|
void msg_handler_telemetry_to_trk(const pmt::pmt_t &msg);
|
||||||
dll_pll_veml_tracking_fpga(const Dll_Pll_Conf_Fpga &conf_);
|
dll_pll_veml_tracking_fpga(const Dll_Pll_Conf_Fpga &conf_);
|
||||||
void msg_handler_preamble_index(pmt::pmt_t msg);
|
void msg_handler_preamble_index(pmt::pmt_t msg);
|
||||||
|
|
||||||
@ -115,7 +115,7 @@ private:
|
|||||||
std::string *d_secondary_code_string;
|
std::string *d_secondary_code_string;
|
||||||
std::string signal_pretty_name;
|
std::string signal_pretty_name;
|
||||||
|
|
||||||
int32_t *d_gps_l1ca_preambles_symbols;
|
int32_t *d_preambles_symbols;
|
||||||
boost::circular_buffer<float> d_symbol_history;
|
boost::circular_buffer<float> d_symbol_history;
|
||||||
|
|
||||||
//tracking state machine
|
//tracking state machine
|
||||||
|
Loading…
Reference in New Issue
Block a user