diff --git a/src/algorithms/PVT/gnuradio_blocks/gps_l1_ca_pvt_cc.cc b/src/algorithms/PVT/gnuradio_blocks/gps_l1_ca_pvt_cc.cc index d08da70f0..888b7f85a 100644 --- a/src/algorithms/PVT/gnuradio_blocks/gps_l1_ca_pvt_cc.cc +++ b/src/algorithms/PVT/gnuradio_blocks/gps_l1_ca_pvt_cc.cc @@ -76,7 +76,7 @@ gps_l1_ca_pvt_cc::gps_l1_ca_pvt_cc(unsigned int nchannels, gr_msg_queue_sptr que d_averaging_depth=averaging_depth; d_flag_averaging=flag_averaging; /*! - * \todo Enable RINEX printer: The actual RINEX printer need a complete refactoring and some bug fixing work + * \todo Enable RINEX printer: The current RINEX printer need a complete refactoring and some bug fixing work */ //d_rinex_printer.set_headers("GNSS-SDR"); d_ls_pvt=new gps_l1_ca_ls_pvt(nchannels,d_dump_filename,d_dump); diff --git a/src/algorithms/acquisition/gnuradio_blocks/gps_l1_ca_pcps_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/gps_l1_ca_pcps_acquisition_cc.cc index 68c0493ff..0b38c0e1b 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/gps_l1_ca_pcps_acquisition_cc.cc +++ b/src/algorithms/acquisition/gnuradio_blocks/gps_l1_ca_pcps_acquisition_cc.cc @@ -136,7 +136,7 @@ void gps_l1_ca_pcps_acquisition_cc::set_satellite(unsigned int satellite) code_gen_complex_sampled(d_fft_if->get_inbuf(), satellite, d_fs_in, 0); d_fft_if->execute(); // We need the FFT of GPS C/A code //Conjugate the local code - //TODO Optimize it ! + //TODO Optimize it ! try conj() for (unsigned int i = 0; i < d_fft_size; i++) { d_fft_codes[i] = std::complex( @@ -172,12 +172,12 @@ int gps_l1_ca_pcps_acquisition_cc::general_work(int noutput_items, /*! * By J.Arribas * Acquisition A strategy (Kay Borre book + CFAR threshold): - * 1º- Compute the input signal power estimation - * 2º- Doppler serial search loop - * 3º- Perform the FFT-based circular convolution (parallel time search) - * 4º- record the maximum peak and the associated synchronization parameters - * 5º- Compute the test statistics and compare to the threshold - * 6º- Declare positive or negative acquisition using a message queue + * 1. Compute the input signal power estimation + * 2. Doppler serial search loop + * 3. Perform the FFT-based circular convolution (parallel time search) + * 4. Record the maximum peak and the associated synchronization parameters + * 5. Compute the test statistics and compare to the threshold + * 6. Declare positive or negative acquisition using a message queue */ if (!d_active) @@ -217,7 +217,8 @@ int gps_l1_ca_pcps_acquisition_cc::general_work(int noutput_items, << d_threshold << ", doppler_max: " << d_doppler_max << ", doppler_step: " << d_doppler_step; - // 1º Compute the input signal power estimation + // 1- Compute the input signal power estimation + //! \TODO try norm() for (i = 0; i < d_fft_size; i++) { d_input_power += std::abs(in[i]) * std::abs(in[i]); @@ -225,7 +226,7 @@ int gps_l1_ca_pcps_acquisition_cc::general_work(int noutput_items, d_input_power = d_input_power / (float)d_fft_size; - // 2º- Doppler frequency search loop + // 2- Doppler frequency search loop for (doppler = (int)(-d_doppler_max); doppler < (int)d_doppler_max; doppler += d_doppler_step) { // doppler search steps @@ -236,8 +237,10 @@ int gps_l1_ca_pcps_acquisition_cc::general_work(int noutput_items, d_fft_if->get_inbuf()[i] = in[i] * d_sine_if[i]; } - //3º- Perform the FFT-based circular convolution (parallel time search) - d_fft_if->execute(); //TODO Optimize me + //3- Perform the FFT-based circular convolution (parallel time search) + d_fft_if->execute(); + + //TODO Optimize me for (i = 0; i < d_fft_size; i++) { d_ifft->get_inbuf()[i] = (d_fft_if->get_outbuf()[i] @@ -245,7 +248,7 @@ int gps_l1_ca_pcps_acquisition_cc::general_work(int noutput_items, } d_ifft->execute(); - // ASM accelerated version + // old version //x86_gr_complex_mag(d_ifft->get_outbuf(), d_fft_size); // d_ifft->get_outbuf()=|abs(·)|^2 and the array is converted from CPX->Float //x86_float_max((float*)d_ifft->get_outbuf(), &indext, &magt, // d_fft_size); // find max of |abs(·)|^2 -> index and magt @@ -274,7 +277,7 @@ int gps_l1_ca_pcps_acquisition_cc::general_work(int noutput_items, d_dump_file.write((char*)d_ifft->get_outbuf(), n); //write directly |abs(·)|^2 in this Doppler bin d_dump_file.close(); } - // 4º- record the maximum peak and the associated synchronization parameters + // 4- record the maximum peak and the associated synchronization parameters if (d_mag < magt) { d_mag = magt; @@ -283,9 +286,9 @@ int gps_l1_ca_pcps_acquisition_cc::general_work(int noutput_items, } } - // 5º- Compute the test statistics and compare to the threshold + // 5- Compute the test statistics and compare to the threshold d_test_statistics = 2*d_fft_size*d_mag / d_input_power; - // 6º- Declare positive or negative acquisition using a message queue + // 6- Declare positive or negative acquisition using a message queue if (d_test_statistics > d_threshold) { //0.004 diff --git a/src/algorithms/acquisition/gnuradio_blocks/gps_l1_ca_tong_pcps_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/gps_l1_ca_tong_pcps_acquisition_cc.cc index 1fdb385f6..7168a95b8 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/gps_l1_ca_tong_pcps_acquisition_cc.cc +++ b/src/algorithms/acquisition/gnuradio_blocks/gps_l1_ca_tong_pcps_acquisition_cc.cc @@ -147,11 +147,12 @@ void gps_l1_ca_tong_pcps_acquisition_cc::set_satellite(unsigned int satellite) d_noise_power = 0.0; // The GPS codes are generated on the fly using a custom version of the GPS code generator + //! \TODO In-memory codes instead of generated on the fly code_gen_complex_sampled(d_fft_if->get_inbuf(), satellite, d_fs_in, 0); d_fft_if->execute(); // We need the FFT of GPS C/A code //Conjugate the local code - //TODO Optimize it ! + //! \TODO Optimize it ! Try conj() or Armadillo for (unsigned int i = 0; i < d_samples; i++) { d_fft_codes[i] = std::complex( @@ -210,22 +211,24 @@ int gps_l1_ca_tong_pcps_acquisition_cc::general_work(int noutput_items, // vt = noise_envelope * sqrt( -2 * log( d_pfa ) ); - // 1º Compute the input signal power estimation + // 1- Compute the input signal power estimation for (unsigned int i = 0; i < d_samples; i++) { d_noise_power += std::abs(in[i]); } d_noise_power = sqrt(d_noise_power / (float)d_samples); - //Perform the carrier wipe-off + //2. Perform the carrier wipe-off sine_gen_complex(d_if_sin, d_freq + d_doppler, d_fs_in, d_samples); for (unsigned int i = 0; i < d_samples; i++) { d_fft_if->get_inbuf()[i] = in[i] * d_if_sin[i]; } - //3º- Perform the FFT-based circular convolution (parallel time search) - d_fft_if->execute(); //TODO Optimize me + //3- Perform the FFT-based circular convolution (parallel time search) + d_fft_if->execute(); + + //TODO Optimize me: use Armadillo! for (unsigned int i = 0; i < d_samples; i++) { d_ifft->get_inbuf()[i] = d_fft_if->get_outbuf()[i] @@ -233,6 +236,7 @@ int gps_l1_ca_tong_pcps_acquisition_cc::general_work(int noutput_items, } d_ifft->execute(); + x86_gr_complex_mag(d_ifft->get_outbuf(), d_samples); // d_ifft->get_outbuf()=|abs(·)|^2 and the array is converted from CPX->Float x86_float_max((float*)d_ifft->get_outbuf(), &d_indext, &magt, d_samples); // find max of |abs(·)|^2 -> index and magt diff --git a/src/algorithms/libs/gps_sdr_simd.cc b/src/algorithms/libs/gps_sdr_simd.cc index 83b0ee84d..5c1551860 100644 --- a/src/algorithms/libs/gps_sdr_simd.cc +++ b/src/algorithms/libs/gps_sdr_simd.cc @@ -1,25 +1,37 @@ -/*! \file SSE.cpp - SIMD functionality, mainly for 32 bit interleaved complex integer type (CPX) -*/ +/*! + * \file gps_sdr_simd.cc + * \brief SIMD functionality, mainly for 32 bit interleaved complex integer type (CPX) + * \author Copyright 2008 Gregory W Heckler + * + * This class implements operations in assembler (SSE technology in Intel processors) + * It has been copied from Gregory W Heckler's GPS-SDR Project + * Please see http://github.com/gps-sdr/gps-sdr + * + * ------------------------------------------------------------------------- + * + * Copyright (C) 2010-2011 (see AUTHORS file for a list of contributors) + * + * GNSS-SDR is a software defined Global Navigation + * Satellite Systems receiver + * + * This file is part of GNSS-SDR. + * + * GNSS-SDR is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * at your option) any later version. + * + * GNSS-SDR is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNSS-SDR. If not, see . + * + * ------------------------------------------------------------------------- + */ -/************************************************************************************************ -Copyright 2008 Gregory W Heckler - -This file is part of the GPS Software Defined Radio (GPS-SDR) - -The GPS-SDR is free software; you can redistribute it and/or modify it under the terms of the -GNU General Public License as published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. - -The GPS-SDR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License along with GPS-SDR; if not, -write to the: - -Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -************************************************************************************************/ #ifdef USE_SIMD #include "gps_sdr_simd.h" diff --git a/src/algorithms/libs/gps_sdr_simd.h b/src/algorithms/libs/gps_sdr_simd.h index 2c8177ecc..0f024ad5b 100644 --- a/src/algorithms/libs/gps_sdr_simd.h +++ b/src/algorithms/libs/gps_sdr_simd.h @@ -1,50 +1,54 @@ -/*! \file SIMD.h - Contains prototpyes for all the SIMD functions -*/ - -/************************************************************************************************ -Copyright 2008 Gregory W Heckler - -This file is part of the GPS Software Defined Radio (GPS-SDR) - -The GPS-SDR is free software; you can redistribute it and/or modify it under the terms of the -GNU General Public License as published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. - -The GPS-SDR is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without -even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -General Public License for more details. - -You should have received a copy of the GNU General Public License along with GPS-SDR; if not, -write to the: - -Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA -************************************************************************************************/ - - +/*! + * \file gps_sdr_simd.cc + * \brief Contains prototypes for SIMD instructions + * \author Copyright 2008 Gregory W Heckler + * + * This class implements operations in assembler (SSE technology in Intel processors) + * It has been copied from Gregory W Heckler's GPS-SDR Project + * Please see http://github.com/gps-sdr/gps-sdr + * + * ------------------------------------------------------------------------- + * + * Copyright (C) 2010-2011 (see AUTHORS file for a list of contributors) + * + * GNSS-SDR is a software defined Global Navigation + * Satellite Systems receiver + * + * This file is part of GNSS-SDR. + * + * GNSS-SDR is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * at your option) any later version. + * + * GNSS-SDR is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNSS-SDR. If not, see . + * + * ------------------------------------------------------------------------- + */ #ifndef SIMD_H_ #define SIMD_H_ -//#ifdef GLOBALS_HERE -// #define EXTERN -//#else -// #define EXTERN extern -//#endif #include "gps_sdr_defines.h" #include "gps_sdr_signal_processing.h" /* Found in CPUID.cpp */ /*----------------------------------------------------------------------------------------------*/ -bool CPU_MMX(); //!< Does the CPU support MMX? -bool CPU_SSE(); //!< Does the CPU support SSE? -bool CPU_SSE2(); //!< Does the CPU support SSE2? -bool CPU_SSE3(); //!< Does the CPU support SSE3? -bool CPU_SSSE3(); //!< Does the CPU support SSSE3? No thats not a typo! -bool CPU_SSE41(); //!< Does the CPU support SSE4.1? -bool CPU_SSE42(); //!< Does the CPU support SSE4.2? -void Init_SIMD(); //!< Initialize the global function pointers +//bool CPU_MMX(); //!< Does the CPU support MMX? +//bool CPU_SSE(); //!< Does the CPU support SSE? +//bool CPU_SSE2(); //!< Does the CPU support SSE2? +//bool CPU_SSE3(); //!< Does the CPU support SSE3? +//bool CPU_SSSE3(); //!< Does the CPU support SSSE3? No thats not a typo! +//bool CPU_SSE41(); //!< Does the CPU support SSE4.1? +//bool CPU_SSE42(); //!< Does the CPU support SSE4.2? +//void Init_SIMD(); //!< Initialize the global function pointers /*----------------------------------------------------------------------------------------------*/ /* Found in SSE.cpp */ diff --git a/src/core/receiver/control_thread.cc b/src/core/receiver/control_thread.cc index e4518d94b..91e223292 100644 --- a/src/core/receiver/control_thread.cc +++ b/src/core/receiver/control_thread.cc @@ -1,9 +1,11 @@ /*! * \file control_thread.cc - * \brief Brief description of the file here + * \brief This class implements the receiver control plane * \author Carlos Aviles, 2010. carlos.avilesr(at)googlemail.com * - * Detailed description of the file here if needed. + * GNSS Receiver Control Plane: connects the flowgraph, starts running it, + * and while it does not stop, reads the control messages generated by the blocks, + * process them, and apply the corresponding actions. * * ------------------------------------------------------------------------- * @@ -71,16 +73,18 @@ ControlThread::~ControlThread() delete control_message_factory_; } -/*! Main loop to read and process the control messages - * - * 1- Connect the GNSS receiver flowgraph - * 2- Start the GNSS receiver flowgraph - * while (flowgraph_->running() && !stop)_{ - * 3- Read control messages and process them } - */ + void ControlThread::run() { - + /* Runs the control thread + * + * This is the main loop that reads and process the control messages + * + * 1- Connect the GNSS receiver flowgraph + * 2- Start the GNSS receiver flowgraph + * while (flowgraph_->running() && !stop)_{ + * 3- Read control messages and process them } + */ flowgraph_->connect(); if (flowgraph_->connected()) { @@ -128,12 +132,10 @@ void ControlThread::set_control_queue(gr_msg_queue_sptr control_queue) control_queue_ = control_queue; } -/*! Creates a control_queue_, a flowgraph_ and a control_message_factory, - * sets stop_ to false and initializes processed_control_messages_ and - * applied_actions_ to zero - */ + void ControlThread::init() { + // Instantiates a control queue, a GNSS flowgraph, and a control message factory control_queue_ = gr_make_msg_queue(0); flowgraph_ = new GNSSFlowgraph(configuration_, control_queue_); control_message_factory_ = new ControlMessageFactory(); diff --git a/src/core/receiver/control_thread.h b/src/core/receiver/control_thread.h index c0331af24..e0e895abe 100644 --- a/src/core/receiver/control_thread.h +++ b/src/core/receiver/control_thread.h @@ -1,8 +1,12 @@ /*! * \file control_thread.h - * \brief This class represents the main thread of the application, aka control thread. + * \brief Interface of the receiver control plane * \author Carlos Aviles, 2010. carlos.avilesr(at)googlemail.com * + * GNSS Receiver Control Plane: connects the flowgraph, starts running it, + * and while it does not stop, reads the control messages generated by the blocks, + * process them, and apply the corresponding actions. + * * ------------------------------------------------------------------------- * * Copyright (C) 2010-2011 (see AUTHORS file for a list of contributors) @@ -45,10 +49,12 @@ class ControlThread { public: - - //! Default constructor + /*! + * \brief Default constructor + */ ControlThread(); + /*! * \brief Constructor that initializes the class with parameters * @@ -56,12 +62,18 @@ public: */ ControlThread(ConfigurationInterface *configuration); - //! Virtual destructor. Derived classes must implement the destructor + + //! \brief Virtual destructor. Derived classes must implement the destructor virtual ~ControlThread(); - /*! - * \brief Runs the ControlThread - */ + /*! \brief Runs the control thread + * + * This is the main loop that reads and process the control messages + * 1- Connect the GNSS receiver flowgraph + * 2- Start the GNSS receiver flowgraph + * while (flowgraph_->running() && !stop)_{ + * 3- Read control messages and process them } + */ void run(); /*! @@ -71,6 +83,7 @@ public: */ void set_control_queue(gr_msg_queue_sptr control_queue); + unsigned int processed_control_messages() { return processed_control_messages_; @@ -88,6 +101,7 @@ public: */ GNSSFlowgraph* flowgraph() { + return flowgraph_; } diff --git a/src/core/receiver/gnss_block_factory.cc b/src/core/receiver/gnss_block_factory.cc index 1f1bdd9f4..f5d098bd6 100644 --- a/src/core/receiver/gnss_block_factory.cc +++ b/src/core/receiver/gnss_block_factory.cc @@ -215,38 +215,46 @@ GNSSBlockInterface* GNSSBlockFactory::GetBlock( std::string implementation, unsigned int in_streams, unsigned int out_streams, gr_msg_queue_sptr queue) { + /*! + * \brief Returns the block with the required configuration and implementation + * + * PLEASE ADD YOUR NEW BLOCK HERE!! + */ - GNSSBlockInterface* block = NULL; + GNSSBlockInterface* block = NULL; //Change to nullptr when available in compilers (C++11) + + // SIGNAL SOURCES if (implementation.compare("File_Signal_Source") == 0) { block = new FileSignalSource(configuration, role, in_streams, out_streams, queue); } - else if (implementation.compare("Pass_Through") == 0) - { - block = new PassThrough(configuration, role, in_streams, out_streams); - } - else if (implementation.compare("Null_Sink_Output_Filter") == 0) - { - block = new NullSinkOutputFilter(configuration, role, in_streams, - out_streams); - } - else if (implementation.compare("File_Output_Filter") == 0) - { - block = new FileOutputFilter(configuration, role, in_streams, - out_streams); - } + // else if (implementation.compare("USRP1_Signal_Source") == 0) // { // block = new Usrp1SignalSource(configuration, role, in_streams, // out_streams, queue); // } + + //! \todo Create a UHD block + + // SIGNAL CONDITIONERS + + else if (implementation.compare("Pass_Through") == 0) + { + block = new PassThrough(configuration, role, in_streams, out_streams); + + } + else if (implementation.compare("Direct_Resampler") == 0) { block = new DirectResamplerConditioner(configuration, role, in_streams, out_streams); } + + // ACQUISITION BLOCKS + else if (implementation.compare("GPS_L1_CA_GPS_SDR_Acquisition") == 0) { block = new GpsL1CaGpsSdrAcquisition(configuration, role, in_streams, @@ -262,6 +270,9 @@ GNSSBlockInterface* GNSSBlockFactory::GetBlock( block = new GpsL1CaTongPcpsAcquisition(configuration, role, in_streams, out_streams, queue); } + + // TRACKING BLOCKS + else if (implementation.compare("GPS_L1_CA_DLL_PLL_Tracking") == 0) { block = new GpsL1CaDllPllTracking(configuration, role, in_streams, @@ -272,21 +283,42 @@ GNSSBlockInterface* GNSSBlockFactory::GetBlock( block = new GpsL1CaDllFllPllTracking(configuration, role, in_streams, out_streams, queue); } + + // TELEMETRY DECODERS + else if (implementation.compare("GPS_L1_CA_Telemetry_Decoder") == 0) { block = new GpsL1CaTelemetryDecoder(configuration, role, in_streams, out_streams, queue); } + + // OBSERVABLES else if (implementation.compare("GPS_L1_CA_Observables") == 0) { block = new GpsL1CaObservables(configuration, role, in_streams, out_streams, queue); } + + // PVT + else if (implementation.compare("GPS_L1_CA_PVT") == 0) { block = new GpsL1CaPvt(configuration, role, in_streams, out_streams, queue); } + + // OUTPUT FILTERS + else if (implementation.compare("Null_Sink_Output_Filter") == 0) + { + block = new NullSinkOutputFilter(configuration, role, in_streams, + out_streams); + } + else if (implementation.compare("File_Output_Filter") == 0) + { + block = new FileOutputFilter(configuration, role, in_streams, + out_streams); + } + else { // Log fatal. This causes execution to stop. diff --git a/src/core/receiver/gnss_flowgraph.cc b/src/core/receiver/gnss_flowgraph.cc index 18ef7a6cb..8c964b966 100644 --- a/src/core/receiver/gnss_flowgraph.cc +++ b/src/core/receiver/gnss_flowgraph.cc @@ -51,7 +51,6 @@ using google::LogMessage; GNSSFlowgraph::GNSSFlowgraph(ConfigurationInterface *configuration, gr_msg_queue_sptr queue) { - connected_ = false; running_ = false; configuration_ = configuration; @@ -111,7 +110,11 @@ void GNSSFlowgraph::stop() void GNSSFlowgraph::connect() { - DLOG(INFO) << "Connecting flowgraph"; + /* Connects the blocks in the flowgraph + * + * Signal Source > Signal conditioner > Channels >> Observables >> PVT > Output filter + */ + DLOG(INFO) << "Connecting flowgraph"; if (connected_) { LOG_AT_LEVEL(WARNING) << "flowgraph already connected"; @@ -255,8 +258,8 @@ void GNSSFlowgraph::connect() DLOG(INFO) << "Channel " << i << " connected to observables and ready for acquisition"; } - /*! - * Enabled the observables multichannel output connection to PVT + /* + * Connect the observables output of each channel to the PVT block */ try { @@ -309,7 +312,12 @@ void GNSSFlowgraph::wait() void GNSSFlowgraph::apply_action(unsigned int who, unsigned int what) { - + /*! + * \brief Applies an action to the flowgraph + * + * \param[in] who Who generated the action + * \param[in] what What is the action 0: acquisition failed + */ DLOG(INFO) << "received " << what << " from " << who; switch (what) @@ -385,7 +393,9 @@ GNSSBlockInterface* GNSSFlowgraph::output_filter() void GNSSFlowgraph::init() { - + /*! + * \brief Instantiates the receiver blocks + */ blocks_->push_back( block_factory_->GetSignalSource(configuration_, queue_)); blocks_->push_back(block_factory_->GetSignalConditioner(configuration_, @@ -422,7 +432,15 @@ void GNSSFlowgraph::init() void GNSSFlowgraph::set_satellites_list() { - for (unsigned int id = 1; id < 33; id++) + /* + * Sets a sequential list of satellites (1...33) + */ + + /*! + * \TODO Describe GNSS satellites more nicely, with RINEX notation + * See http://igscb.jpl.nasa.gov/igscb/data/format/rinex301.pdf (page 5) + */ + for (unsigned int id = 1; id < 33; id++) { available_GPS_satellites_IDs_->push_back(id); } @@ -445,7 +463,7 @@ void GNSSFlowgraph::set_satellites_list() } } -// std::cout << "Cola de satélites: "; +// std::cout << "Satellite queue: "; // for (std::list::iterator it = // available_GPS_satellites_IDs_->begin(); it // != available_GPS_satellites_IDs_->end(); it++) diff --git a/src/core/receiver/gnss_flowgraph.h b/src/core/receiver/gnss_flowgraph.h index ac8ec4c50..3a3f1afd0 100644 --- a/src/core/receiver/gnss_flowgraph.h +++ b/src/core/receiver/gnss_flowgraph.h @@ -56,11 +56,15 @@ class GNSSFlowgraph { public: - + /*! + * \brief Constructor that initializes the receiver flowgraph + */ GNSSFlowgraph(ConfigurationInterface* configuration, gr_msg_queue_sptr queue); - //! Virtual destructor + /*! + * \brief Virtual destructor + */ virtual ~GNSSFlowgraph(); //! Start the flowgraph @@ -69,7 +73,11 @@ public: //! Stop the flowgraph void stop(); - //! Connect the defined flowgraph + /*! + * \brief Connects the defined blocks in the flowgraph + * + * Signal Source > Signal conditioner > Channels >> Observables >> PVT > Output filter + */ void connect(); void wait(); diff --git a/src/main/main.cc b/src/main/main.cc index 632de6dfc..1f9ff97da 100644 --- a/src/main/main.cc +++ b/src/main/main.cc @@ -30,6 +30,8 @@ * * ------------------------------------------------------------------------- */ + +#include #include #include #include @@ -43,6 +45,8 @@ using google::LogMessage; +DECLARE_string(log_dir); + /*! * \todo make this queue generic for all the GNSS systems (javi) */ @@ -68,10 +72,28 @@ int main(int argc, char** argv) google::SetUsageMessage(intro_help); google::SetVersionString("0.1"); google::ParseCommandLineFlags(&argc, &argv, true); - google::InitGoogleLogging(argv[0]); std::cout<<"Initializing GNSS-SDR... Please wait"<run();