mirror of
				https://github.com/gnss-sdr/gnss-sdr
				synced 2025-11-04 09:13:05 +00:00 
			
		
		
		
	added the reception of messages from the telemetry module to the FPGA tracking modules.
This commit is contained in:
		@@ -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
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user