From bd84ebd1c48077a0732def727dd75ded63e06db7 Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Mon, 4 Feb 2013 00:16:22 +0000 Subject: [PATCH] improving documentation git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@339 64b25241-fba3-4117-9849-534c7e92360d --- .../galileo_e1_pcps_ambiguous_acquisition.h | 4 + .../adapters/gps_l1_ca_pcps_acquisition.h | 4 + src/algorithms/channel/adapters/channel.h | 2 + .../conditioner/adapters/signal_conditioner.h | 1 + .../adapters/ishort_to_complex.h | 1 + .../input_filter/adapters/fir_filter.h | 2 + .../adapters/freq_xlating_fir_filter.h | 2 + src/algorithms/libs/gnss_sdr_valve.h | 7 +- .../adapters/file_signal_source.cc | 235 +++++++++--------- .../adapters/file_signal_source.h | 7 +- .../adapters/gn3s_signal_source.h | 4 + .../adapters/rtlsdr_signal_source.h | 6 +- .../adapters/uhd_signal_source.h | 4 + .../adapters/gps_l1_ca_telemetry_decoder.h | 6 +- .../galileo_e1_dll_pll_veml_tracking.h | 2 + .../galileo_e1_tcp_connector_tracking.h | 2 +- .../adapters/gps_l1_ca_dll_fll_pll_tracking.h | 2 + .../gps_l1_ca_dll_pll_optim_tracking.h | 2 + .../adapters/gps_l1_ca_dll_pll_tracking.h | 2 + .../gps_l1_ca_tcp_connector_tracking.h | 2 + 20 files changed, 167 insertions(+), 130 deletions(-) diff --git a/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.h b/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.h index d98dcb9f5..dac5ffd0e 100644 --- a/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.h +++ b/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.h @@ -58,6 +58,10 @@ public: { return role_; } + + /*! + * \brief Returns "Galileo_E1_PCPS_Ambiguous_Acquisition" + */ std::string implementation() { return "Galileo_E1_PCPS_Ambiguous_Acquisition"; diff --git a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition.h b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition.h index 85bf9b775..966bfb803 100644 --- a/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition.h +++ b/src/algorithms/acquisition/adapters/gps_l1_ca_pcps_acquisition.h @@ -61,6 +61,10 @@ public: { return role_; } + + /*! + * \brief Returns "GPS_L1_CA_PCPS_Acquisition" + */ std::string implementation() { return "GPS_L1_CA_PCPS_Acquisition"; diff --git a/src/algorithms/channel/adapters/channel.h b/src/algorithms/channel/adapters/channel.h index ed0968542..6637268d6 100644 --- a/src/algorithms/channel/adapters/channel.h +++ b/src/algorithms/channel/adapters/channel.h @@ -70,6 +70,8 @@ public: gr_basic_block_sptr get_left_block(); gr_basic_block_sptr get_right_block(); std::string role(){ return role_; } + + //! Returns "Channel" std::string implementation(){ return "Channel"; } size_t item_size(){ return 0; } Gnss_Signal get_signal() const { return gnss_signal_; } diff --git a/src/algorithms/conditioner/adapters/signal_conditioner.h b/src/algorithms/conditioner/adapters/signal_conditioner.h index 1a29bef12..6b1198285 100644 --- a/src/algorithms/conditioner/adapters/signal_conditioner.h +++ b/src/algorithms/conditioner/adapters/signal_conditioner.h @@ -65,6 +65,7 @@ public: gr_basic_block_sptr get_right_block(); std::string role(){ return role_; } + //! Returns "Signal_Conditioner" std::string implementation(){ return "Signal_Conditioner"; } size_t item_size(){ return 0; } diff --git a/src/algorithms/data_type_adapter/adapters/ishort_to_complex.h b/src/algorithms/data_type_adapter/adapters/ishort_to_complex.h index dccd75538..651da3820 100644 --- a/src/algorithms/data_type_adapter/adapters/ishort_to_complex.h +++ b/src/algorithms/data_type_adapter/adapters/ishort_to_complex.h @@ -55,6 +55,7 @@ public: { return role_; } + //! Returns "IshortToComplex" std::string implementation() { return "IshortToComplex"; diff --git a/src/algorithms/input_filter/adapters/fir_filter.h b/src/algorithms/input_filter/adapters/fir_filter.h index 988ba95e3..04efd51f9 100644 --- a/src/algorithms/input_filter/adapters/fir_filter.h +++ b/src/algorithms/input_filter/adapters/fir_filter.h @@ -60,6 +60,8 @@ public: { return role_; } + + //! Returns "Fir_Filter" std::string implementation() { return "Fir_Filter"; diff --git a/src/algorithms/input_filter/adapters/freq_xlating_fir_filter.h b/src/algorithms/input_filter/adapters/freq_xlating_fir_filter.h index 1a2173401..a746b3b6f 100644 --- a/src/algorithms/input_filter/adapters/freq_xlating_fir_filter.h +++ b/src/algorithms/input_filter/adapters/freq_xlating_fir_filter.h @@ -64,6 +64,8 @@ public: { return role_; } + + //! Returns "Freq_Xlating_Fir_Filter" std::string implementation() { return "Freq_Xlating_Fir_Filter"; diff --git a/src/algorithms/libs/gnss_sdr_valve.h b/src/algorithms/libs/gnss_sdr_valve.h index 01dad9cc5..acc81cedc 100644 --- a/src/algorithms/libs/gnss_sdr_valve.h +++ b/src/algorithms/libs/gnss_sdr_valve.h @@ -6,7 +6,7 @@ * * ------------------------------------------------------------------------- * - * Copyright (C) 2010-2012 (see AUTHORS file for a list of contributors) + * Copyright (C) 2010-2013 (see AUTHORS file for a list of contributors) * * GNSS-SDR is a software defined Global Navigation * Satellite Systems receiver @@ -40,7 +40,10 @@ gr_block_sptr gnss_sdr_make_valve (size_t sizeof_stream_item, int nitems, gr_msg_queue_sptr queue); - +/*! + * \brief Implementation of a GNU Radio block that sends a STOP message to the + * control queue right after a specific number of samples have passed through it. + */ class gnss_sdr_valve : public gr_sync_block { friend gr_block_sptr gnss_sdr_make_valve(size_t sizeof_stream_item, diff --git a/src/algorithms/signal_source/adapters/file_signal_source.cc b/src/algorithms/signal_source/adapters/file_signal_source.cc index 29a386794..bb4d7f6df 100644 --- a/src/algorithms/signal_source/adapters/file_signal_source.cc +++ b/src/algorithms/signal_source/adapters/file_signal_source.cc @@ -7,7 +7,7 @@ * * ------------------------------------------------------------------------- * - * Copyright (C) 2010-2012 (see AUTHORS file for a list of contributors) + * Copyright (C) 2010-2013 (see AUTHORS file for a list of contributors) * * GNSS-SDR is a software defined Global Navigation * Satellite Systems receiver @@ -50,135 +50,127 @@ DEFINE_string(signal_source, "-", FileSignalSource::FileSignalSource(ConfigurationInterface* configuration, - std::string role, unsigned int in_streams, unsigned int out_streams, - gr_msg_queue_sptr queue) : - role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(queue) + std::string role, unsigned int in_streams, unsigned int out_streams, + gr_msg_queue_sptr queue) : + role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(queue) { - std::string default_filename = "../data/sc2_d16.dat"; - std::string default_item_type = "short"; - std::string default_dump_filename = "../data/sc2_d16.dat"; + std::string default_filename = "../data/my_capture.dat"; + std::string default_item_type = "short"; + std::string default_dump_filename = "../data/my_capture.dat"; - samples_ = configuration->property(role + ".samples", 0); - sampling_frequency_ = configuration->property(role + ".sampling_frequency", 0); - filename_ = configuration->property(role + ".filename", default_filename); + samples_ = configuration->property(role + ".samples", 0); + sampling_frequency_ = configuration->property(role + ".sampling_frequency", 0); + filename_ = configuration->property(role + ".filename", default_filename); - // override value with commandline flag, if present - if (FLAGS_signal_source.compare("-") != 0) filename_= FLAGS_signal_source; + // override value with commandline flag, if present + if (FLAGS_signal_source.compare("-") != 0) filename_= FLAGS_signal_source; - item_type_ = configuration->property(role + ".item_type", default_item_type); - repeat_ = configuration->property(role + ".repeat", false); - dump_ = configuration->property(role + ".dump", false); - dump_filename_ = configuration->property(role + ".dump_filename", default_dump_filename); - enable_throttle_control_ = configuration->property(role + ".enable_throttle_control", false); + item_type_ = configuration->property(role + ".item_type", default_item_type); + repeat_ = configuration->property(role + ".repeat", false); + dump_ = configuration->property(role + ".dump", false); + dump_filename_ = configuration->property(role + ".dump_filename", default_dump_filename); + enable_throttle_control_ = configuration->property(role + ".enable_throttle_control", false); - if (item_type_.compare("gr_complex") == 0) - { - item_size_ = sizeof(gr_complex); - } - else if (item_type_.compare("float") == 0) - { - item_size_ = sizeof(float); - } - else if (item_type_.compare("short") == 0) - { - item_size_ = sizeof(short int); - } - else - { - LOG_AT_LEVEL(WARNING) << item_type_ - << " unrecognized item type. Using gr_complex."; - item_size_ = sizeof(gr_complex); - } - try - { - file_source_ = gr_make_file_source(item_size_, filename_.c_str(), repeat_); - } - catch (const std::exception &e) - { - std::cerr - << "The receiver was configured to work with a file signal source " - << std::endl - << "but the specified file is unreachable by GNSS-SDR." - << std::endl - << "Please modify the configuration at " - << "conf/gnss-sdr.conf (the default configuration file)" - << std::endl - << "and point SignalSource.filename to a valid file," - << std::endl - << "or specify your own receiver and source with the flag" - << std::endl - <<"gnss-sdr --config_file=my_GNSS_SDR_configuration.conf" - << std::endl; - LOG_AT_LEVEL(INFO) << "file_signal_source: Unable to open the samples file " - << filename_.c_str() << ", exiting the program."; - throw(e); - } + if (item_type_.compare("gr_complex") == 0) + { + item_size_ = sizeof(gr_complex); + } + else if (item_type_.compare("float") == 0) + { + item_size_ = sizeof(float); + } + else if (item_type_.compare("short") == 0) + { + item_size_ = sizeof(short int); + } + else + { + LOG_AT_LEVEL(WARNING) << item_type_ + << " unrecognized item type. Using gr_complex."; + item_size_ = sizeof(gr_complex); + } + try + { + file_source_ = gr_make_file_source(item_size_, filename_.c_str(), repeat_); + } + catch (const std::exception &e) + { + std::cerr + << "The receiver was configured to work with a file signal source " + << std::endl + << "but the specified file is unreachable by GNSS-SDR." + << std::endl + << "Please modify the configuration at " + << "conf/gnss-sdr.conf (the default configuration file)" + << std::endl + << "and point SignalSource.filename to a valid file," + << std::endl + << "or specify your own receiver and source with the flag" + << std::endl + <<"gnss-sdr --config_file=my_GNSS_SDR_configuration.conf" + << std::endl; + LOG_AT_LEVEL(INFO) << "file_signal_source: Unable to open the samples file " + << filename_.c_str() << ", exiting the program."; + throw(e); + } - DLOG(INFO) << "file_source(" << file_source_->unique_id() << ")"; + DLOG(INFO) << "file_source(" << file_source_->unique_id() << ")"; - if (samples_ == 0) // read all file - { - /*! - * BUG workaround: The GNURadio file source does not stop the receiver after reaching the End of File. - * A possible solution is to compute the file length in samples using file size, excluding the last 100 milliseconds, and enable always the - * valve block - */ - std::ifstream file (filename_.c_str(), std::ios::in | std::ios::binary | std::ios::ate); - std::ifstream::pos_type size; - if (file.is_open()) - { - size = file.tellg(); - } - else - { - std::cout << "file_signal_source: Unable to open the samples file " << filename_.c_str() << std::endl; - LOG_AT_LEVEL(ERROR) << "file_signal_source: Unable to open the samples file " << filename_.c_str(); - } - std::cout << std::setprecision(16); - std::cout << "Processing file " << filename_ << ", which contains " << (double)size << " [bytes]" << std::endl; - if (size > 0) - { - samples_ = floor((double)size / (double)item_size()) - ceil(0.1 * (double)sampling_frequency_); //process all the samples available in the file excluding the last 100 ms - } - } - CHECK(samples_ > 0) << "File does not contain enough samples to process."; - double signal_duration_s; - signal_duration_s = (double)samples_ * ( 1 /(double)sampling_frequency_); - DLOG(INFO) << "Total samples to be processed= " << samples_ << " GNSS signal duration= " << signal_duration_s << " [s]"; - std::cout << "GNSS signal recorded time to be processed: " << signal_duration_s << " [s]" << std::endl; - // if samples_ > 0 then enable a flow valve to stop the process after n samples - //if (samples_ > 0) - //{ - valve_ = gnss_sdr_make_valve(item_size_, samples_, queue_); - DLOG(INFO) << "valve(" << valve_->unique_id() << ")"; - //} - //else - //{ - // std::cout << "Not enough samples to process." << std::endl; - // here we should exit the program - //throw; - //LOG(FATAL) + if (samples_ == 0) // read all file + { + /*! + * BUG workaround: The GNU Radio file source does not stop the receiver after reaching the End of File. + * A possible solution is to compute the file length in samples using file size, excluding the last 100 milliseconds, and enable always the + * valve block + */ + std::ifstream file (filename_.c_str(), std::ios::in | std::ios::binary | std::ios::ate); + std::ifstream::pos_type size; - //} + if (file.is_open()) + { + size = file.tellg(); + DLOG(INFO) << "Total samples in the file= " << floor((double)size / (double)item_size()); + } + else + { + std::cout << "file_signal_source: Unable to open the samples file " << filename_.c_str() << std::endl; + LOG_AT_LEVEL(ERROR) << "file_signal_source: Unable to open the samples file " << filename_.c_str(); + } + std::cout << std::setprecision(16); + std::cout << "Processing file " << filename_ << ", which contains " << (double)size << " [bytes]" << std::endl; - if (dump_) - { - sink_ = gr_make_file_sink(item_size_, dump_filename_.c_str()); - DLOG(INFO) << "file_sink(" << sink_->unique_id() << ")"; - } + if (size > 0) + { + samples_ = floor((double)size / (double)item_size()) - ceil(0.1 * (double)sampling_frequency_); //process all the samples available in the file excluding the last 100 ms + } + } + CHECK(samples_ > 0) << "File does not contain enough samples to process."; + double signal_duration_s; + signal_duration_s = (double)samples_ * ( 1 /(double)sampling_frequency_); + DLOG(INFO) << "Total number samples to be processed= " << samples_ << " GNSS signal duration= " << signal_duration_s << " [s]"; + std::cout << "GNSS signal recorded time to be processed: " << signal_duration_s << " [s]" << std::endl; - if (enable_throttle_control_) - { - throttle_ = gr_make_throttle(item_size_, sampling_frequency_); - } - DLOG(INFO) << "File source filename " << filename_; - DLOG(INFO) << "Samples " << samples_; - DLOG(INFO) << "Sampling frequency " << sampling_frequency_; - DLOG(INFO) << "Item type " << item_type_; - DLOG(INFO) << "Item size " << item_size_; - DLOG(INFO) << "Repeat " << repeat_; - DLOG(INFO) << "Dump " << dump_; - DLOG(INFO) << "Dump filename " << dump_filename_; + valve_ = gnss_sdr_make_valve(item_size_, samples_, queue_); + DLOG(INFO) << "valve(" << valve_->unique_id() << ")"; + + if (dump_) + { + sink_ = gr_make_file_sink(item_size_, dump_filename_.c_str()); + DLOG(INFO) << "file_sink(" << sink_->unique_id() << ")"; + } + + if (enable_throttle_control_) + { + throttle_ = gr_make_throttle(item_size_, sampling_frequency_); + } + DLOG(INFO) << "File source filename " << filename_; + DLOG(INFO) << "Samples " << samples_; + DLOG(INFO) << "Sampling frequency " << sampling_frequency_; + DLOG(INFO) << "Item type " << item_type_; + DLOG(INFO) << "Item size " << item_size_; + DLOG(INFO) << "Repeat " << repeat_; + DLOG(INFO) << "Dump " << dump_; + DLOG(INFO) << "Dump filename " << dump_filename_; } @@ -301,8 +293,7 @@ void FileSignalSource::disconnect(gr_top_block_sptr top_block) gr_basic_block_sptr FileSignalSource::get_left_block() { - LOG_AT_LEVEL(WARNING) - << "Left block of a signal source should not be retrieved"; + LOG_AT_LEVEL(WARNING) << "Left block of a signal source should not be retrieved"; return gr_block_sptr(); } diff --git a/src/algorithms/signal_source/adapters/file_signal_source.h b/src/algorithms/signal_source/adapters/file_signal_source.h index eb436583e..61e72630e 100644 --- a/src/algorithms/signal_source/adapters/file_signal_source.h +++ b/src/algorithms/signal_source/adapters/file_signal_source.h @@ -45,7 +45,8 @@ class ConfigurationInterface; /*! - * \brief This class reads samples from a file. + * \brief Class that reads signals samples from a file + * and adapts it to a SignalSourceInterface */ class FileSignalSource: public GNSSBlockInterface { @@ -59,6 +60,10 @@ public: { return role_; } + + /*! + * \brief Returns "File_Signal_Source". + */ std::string implementation() { return "File_Signal_Source"; diff --git a/src/algorithms/signal_source/adapters/gn3s_signal_source.h b/src/algorithms/signal_source/adapters/gn3s_signal_source.h index 1b1f4bf41..78887682a 100644 --- a/src/algorithms/signal_source/adapters/gn3s_signal_source.h +++ b/src/algorithms/signal_source/adapters/gn3s_signal_source.h @@ -53,6 +53,10 @@ public: { return role_; } + + /*! + * \brief Returns "Gn3sSignalSource". + */ std::string implementation() { return "Gn3sSignalSource"; diff --git a/src/algorithms/signal_source/adapters/rtlsdr_signal_source.h b/src/algorithms/signal_source/adapters/rtlsdr_signal_source.h index 3a7ad9e83..9e0df3796 100644 --- a/src/algorithms/signal_source/adapters/rtlsdr_signal_source.h +++ b/src/algorithms/signal_source/adapters/rtlsdr_signal_source.h @@ -45,7 +45,6 @@ class ConfigurationInterface; */ class RtlsdrSignalSource: public GNSSBlockInterface { - public: RtlsdrSignalSource(ConfigurationInterface* configuration, std::string role, unsigned int in_stream, @@ -57,6 +56,10 @@ public: { return role_; } + + /*! + * \brief Returns "Rtlsdr_Signal_Source" + */ std::string implementation() { return "Rtlsdr_Signal_Source"; @@ -72,7 +75,6 @@ public: gr_basic_block_sptr get_right_block(); private: - std::string role_; // UHD SETTINGS diff --git a/src/algorithms/signal_source/adapters/uhd_signal_source.h b/src/algorithms/signal_source/adapters/uhd_signal_source.h index fd7c1d4fe..15953f791 100644 --- a/src/algorithms/signal_source/adapters/uhd_signal_source.h +++ b/src/algorithms/signal_source/adapters/uhd_signal_source.h @@ -56,6 +56,10 @@ public: { return role_; } + + /*! + * \brief Returns "UHD_Signal_Source" + */ std::string implementation() { return "UHD_Signal_Source"; diff --git a/src/algorithms/telemetry_decoder/adapters/gps_l1_ca_telemetry_decoder.h b/src/algorithms/telemetry_decoder/adapters/gps_l1_ca_telemetry_decoder.h index e123381cf..f19150c1e 100644 --- a/src/algorithms/telemetry_decoder/adapters/gps_l1_ca_telemetry_decoder.h +++ b/src/algorithms/telemetry_decoder/adapters/gps_l1_ca_telemetry_decoder.h @@ -56,6 +56,8 @@ public: { return role_; } + + //! Returns "GPS_L1_CA_Telemetry_Decoder" std::string implementation() { return "GPS_L1_CA_Telemetry_Decoder"; @@ -65,11 +67,11 @@ public: gr_basic_block_sptr get_left_block(); gr_basic_block_sptr get_right_block(); void set_satellite(Gnss_Satellite satellite); - void set_channel(int channel){telemetry_decoder_->set_channel(channel);}; + void set_channel(int channel){telemetry_decoder_->set_channel(channel);} void reset() { return; - }; + } size_t item_size() { return 0; diff --git a/src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking.h b/src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking.h index 9fb12f3ee..33e0bd0c5 100644 --- a/src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking.h +++ b/src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking.h @@ -64,6 +64,8 @@ public: { return role_; } + + //! Returns "Galileo_E1_DLL_PLL_VEML_Tracking" std::string implementation() { return "Galileo_E1_DLL_PLL_VEML_Tracking"; diff --git a/src/algorithms/tracking/adapters/galileo_e1_tcp_connector_tracking.h b/src/algorithms/tracking/adapters/galileo_e1_tcp_connector_tracking.h index d898162a0..1ce79af00 100644 --- a/src/algorithms/tracking/adapters/galileo_e1_tcp_connector_tracking.h +++ b/src/algorithms/tracking/adapters/galileo_e1_tcp_connector_tracking.h @@ -65,7 +65,7 @@ public: { return role_; } - //! returns "Galileo_E1_TCP_CONNECTOR_Tracking" + //! Returns "Galileo_E1_TCP_CONNECTOR_Tracking" std::string implementation() { return "Galileo_E1_TCP_CONNECTOR_Tracking"; diff --git a/src/algorithms/tracking/adapters/gps_l1_ca_dll_fll_pll_tracking.h b/src/algorithms/tracking/adapters/gps_l1_ca_dll_fll_pll_tracking.h index 14e98c986..55b5eff50 100644 --- a/src/algorithms/tracking/adapters/gps_l1_ca_dll_fll_pll_tracking.h +++ b/src/algorithms/tracking/adapters/gps_l1_ca_dll_fll_pll_tracking.h @@ -62,6 +62,8 @@ public: { return role_; } + + //! Returns "GPS_L1_CA_DLL_FLL_PLL_Tracking" std::string implementation() { return "GPS_L1_CA_DLL_FLL_PLL_Tracking"; diff --git a/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_optim_tracking.h b/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_optim_tracking.h index b848394f1..87be4f1a9 100644 --- a/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_optim_tracking.h +++ b/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_optim_tracking.h @@ -65,6 +65,8 @@ public: { return role_; } + + //! Returns "GPS_L1_CA_DLL_PLL_Optim_Tracking" std::string implementation() { return "GPS_L1_CA_DLL_PLL_Optim_Tracking"; diff --git a/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking.h b/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking.h index 034c8517d..86a66636d 100644 --- a/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking.h +++ b/src/algorithms/tracking/adapters/gps_l1_ca_dll_pll_tracking.h @@ -64,6 +64,8 @@ public: { return role_; } + + //! Returns "GPS_L1_CA_DLL_PLL_Tracking" std::string implementation() { return "GPS_L1_CA_DLL_PLL_Tracking"; diff --git a/src/algorithms/tracking/adapters/gps_l1_ca_tcp_connector_tracking.h b/src/algorithms/tracking/adapters/gps_l1_ca_tcp_connector_tracking.h index 7827b8edb..ec153a287 100644 --- a/src/algorithms/tracking/adapters/gps_l1_ca_tcp_connector_tracking.h +++ b/src/algorithms/tracking/adapters/gps_l1_ca_tcp_connector_tracking.h @@ -64,6 +64,8 @@ public: { return role_; } + + //! Returns "GPS_L1_CA_TCP_CONNECTOR_Tracking" std::string implementation() { return "GPS_L1_CA_TCP_CONNECTOR_Tracking";