mirror of
				https://github.com/gnss-sdr/gnss-sdr
				synced 2025-10-31 15:23:04 +00:00 
			
		
		
		
	Created individual gnurdio tracking block for volk
Created individual gnuradio tracking block for volk: galileo_volk_e1_dll_pll_veml_tracking_cc the galileo_volk_e1_dll_pll_veml_tracking_cc gnuradio block is now the original one.
This commit is contained in:
		| @@ -19,6 +19,7 @@ | ||||
|  | ||||
| set(TRACKING_ADAPTER_SOURCES  | ||||
|      galileo_e1_dll_pll_veml_tracking.cc | ||||
|      galileo_volk_e1_dll_pll_veml_tracking.cc | ||||
|      galileo_e1_tcp_connector_tracking.cc | ||||
|      gps_l1_ca_dll_fll_pll_tracking.cc | ||||
|      gps_l1_ca_dll_pll_optim_tracking.cc | ||||
|   | ||||
							
								
								
									
										0
									
								
								src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking.cc
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										0
									
								
								src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking.cc
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
								
								
									
										0
									
								
								src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking.h
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										0
									
								
								src/algorithms/tracking/adapters/galileo_e1_dll_pll_veml_tracking.h
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							| @@ -0,0 +1,158 @@ | ||||
| /*! | ||||
|  * \file galileo_volk_e1_dll_pll_veml_tracking.cc | ||||
|  * \brief  Adapts a DLL+PLL VEML (Very Early Minus Late) tracking loop block | ||||
|  *   to a TrackingInterface for Galileo E1 signals | ||||
|  * \author Luis Esteve, 2012. luis(at)epsilon-formacion.com | ||||
|  * | ||||
|  * Code DLL + carrier PLL according to the algorithms described in: | ||||
|  * K.Borre, D.M.Akos, N.Bertelsen, P.Rinder, and S.H.Jensen, | ||||
|  * A Software-Defined GPS and Galileo Receiver. A Single-Frequency | ||||
|  * Approach, Birkhauser, 2007 | ||||
|  * | ||||
|  * ------------------------------------------------------------------------- | ||||
|  * | ||||
|  * Copyright (C) 2010-2014  (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 <http://www.gnu.org/licenses/>. | ||||
|  * | ||||
|  * ------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| #include "galileo_volk_e1_dll_pll_veml_tracking.h" | ||||
| #include <glog/logging.h> | ||||
| #include "GPS_L1_CA.h" | ||||
| #include "Galileo_E1.h" | ||||
| #include "configuration_interface.h" | ||||
|  | ||||
|  | ||||
| using google::LogMessage; | ||||
|  | ||||
| GalileoVolkE1DllPllVemlTracking::GalileoVolkE1DllPllVemlTracking( | ||||
|         ConfigurationInterface* configuration, std::string role, | ||||
|         unsigned int in_streams, unsigned int out_streams, | ||||
|         boost::shared_ptr<gr::msg_queue> queue) : | ||||
|         role_(role), in_streams_(in_streams), out_streams_(out_streams), | ||||
|         queue_(queue) | ||||
| { | ||||
|     DLOG(INFO) << "role " << role; | ||||
|     //################# CONFIGURATION PARAMETERS ######################## | ||||
|     int fs_in; | ||||
|     int vector_length; | ||||
|     int f_if; | ||||
|     bool dump; | ||||
|     std::string dump_filename; | ||||
|     std::string item_type; | ||||
|     std::string default_item_type = "gr_complex"; | ||||
|     float pll_bw_hz; | ||||
|     float dll_bw_hz; | ||||
|     float early_late_space_chips; | ||||
|     float very_early_late_space_chips; | ||||
|  | ||||
|     item_type = configuration->property(role + ".item_type",default_item_type); | ||||
|     fs_in = configuration->property("GNSS-SDR.internal_fs_hz", 2048000); | ||||
|     f_if = configuration->property(role + ".if", 0); | ||||
|     dump = configuration->property(role + ".dump", false); | ||||
|     pll_bw_hz = configuration->property(role + ".pll_bw_hz", 50.0); | ||||
|     dll_bw_hz = configuration->property(role + ".dll_bw_hz", 2.0); | ||||
|     early_late_space_chips = configuration->property(role + ".early_late_space_chips", 0.15); | ||||
|     very_early_late_space_chips = configuration->property(role + ".very_early_late_space_chips", 0.6); | ||||
|  | ||||
|     std::string default_dump_filename = "./track_ch"; | ||||
|     dump_filename = configuration->property(role + ".dump_filename", | ||||
|             default_dump_filename); //unused! | ||||
|     vector_length = std::round(fs_in / (Galileo_E1_CODE_CHIP_RATE_HZ / Galileo_E1_B_CODE_LENGTH_CHIPS)); | ||||
|  | ||||
|     //################# MAKE TRACKING GNURadio object ################### | ||||
|     if (item_type.compare("gr_complex") == 0) | ||||
|         { | ||||
|             item_size_ = sizeof(gr_complex); | ||||
|             tracking_ = galileo_volk_e1_dll_pll_veml_make_tracking_cc( | ||||
|                     f_if, | ||||
|                     fs_in, | ||||
|                     vector_length, | ||||
|                     queue_, | ||||
|                     dump, | ||||
|                     dump_filename, | ||||
|                     pll_bw_hz, | ||||
|                     dll_bw_hz, | ||||
|                     early_late_space_chips, | ||||
|                     very_early_late_space_chips); | ||||
|         } | ||||
|     else | ||||
|         { | ||||
|             LOG(WARNING) << item_type << " unknown tracking item type."; | ||||
|         } | ||||
|  | ||||
|     DLOG(INFO) << "tracking(" << tracking_->unique_id() << ")"; | ||||
| } | ||||
|  | ||||
| GalileoVolkE1DllPllVemlTracking::~GalileoVolkE1DllPllVemlTracking() | ||||
| {} | ||||
|  | ||||
| void GalileoVolkE1DllPllVemlTracking::start_tracking() | ||||
| { | ||||
|     tracking_->start_tracking(); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Set tracking channel unique ID | ||||
|  */ | ||||
| void GalileoVolkE1DllPllVemlTracking::set_channel(unsigned int channel) | ||||
| { | ||||
|     channel_ = channel; | ||||
|     tracking_->set_channel(channel); | ||||
| } | ||||
|  | ||||
| /* | ||||
|  * Set tracking channel internal queue | ||||
|  */ | ||||
| void GalileoVolkE1DllPllVemlTracking::set_channel_queue( | ||||
|         concurrent_queue<int> *channel_internal_queue) | ||||
| { | ||||
|     channel_internal_queue_ = channel_internal_queue; | ||||
|  | ||||
|     tracking_->set_channel_queue(channel_internal_queue_); | ||||
|  | ||||
| } | ||||
|  | ||||
| void GalileoVolkE1DllPllVemlTracking::set_gnss_synchro(Gnss_Synchro* p_gnss_synchro) | ||||
| { | ||||
|     tracking_->set_gnss_synchro(p_gnss_synchro); | ||||
| } | ||||
|  | ||||
| void GalileoVolkE1DllPllVemlTracking::connect(gr::top_block_sptr top_block) | ||||
| { | ||||
|     //nothing to connect, now the tracking uses gr_sync_decimator | ||||
| } | ||||
|  | ||||
| void GalileoVolkE1DllPllVemlTracking::disconnect(gr::top_block_sptr top_block) | ||||
| { | ||||
|     //nothing to disconnect, now the tracking uses gr_sync_decimator | ||||
| } | ||||
|  | ||||
| gr::basic_block_sptr GalileoVolkE1DllPllVemlTracking::get_left_block() | ||||
| { | ||||
|     return tracking_; | ||||
| } | ||||
|  | ||||
| gr::basic_block_sptr GalileoVolkE1DllPllVemlTracking::get_right_block() | ||||
| { | ||||
|     return tracking_; | ||||
| } | ||||
|  | ||||
| @@ -0,0 +1,119 @@ | ||||
| /*! | ||||
|  * \file galileo_volk_e1_dll_pll_veml_tracking.h | ||||
|  * \brief  Adapts a DLL+PLL VEML (Very Early Minus Late) tracking loop block | ||||
|  *   to a TrackingInterface for Galileo E1 signals | ||||
|  * \author Luis Esteve, 2012. luis(at)epsilon-formacion.com | ||||
|  * | ||||
|  * Code DLL + carrier PLL according to the algorithms described in: | ||||
|  * K.Borre, D.M.Akos, N.Bertelsen, P.Rinder, and S.H.Jensen, | ||||
|  * A Software-Defined GPS and Galileo Receiver. A Single-Frequency | ||||
|  * Approach, Birkha user, 2007 | ||||
|  * | ||||
|  * ------------------------------------------------------------------------- | ||||
|  * | ||||
|  * Copyright (C) 2010-2014  (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 <http://www.gnu.org/licenses/>. | ||||
|  * | ||||
|  * ------------------------------------------------------------------------- | ||||
|  */ | ||||
|  | ||||
| #ifndef GNSS_SDR_GALILEO_VOLK_E1_DLL_PLL_VEML_TRACKING_H_ | ||||
| #define GNSS_SDR_GALILEO_VOLK_E1_DLL_PLL_VEML_TRACKING_H_ | ||||
|  | ||||
| #include <string> | ||||
| #include <gnuradio/msg_queue.h> | ||||
| #include "tracking_interface.h" | ||||
| #include "galileo_volk_e1_dll_pll_veml_tracking_cc.h" | ||||
|  | ||||
|  | ||||
| class ConfigurationInterface; | ||||
|  | ||||
| /*! | ||||
|  * \brief This class Adapts a DLL+PLL VEML (Very Early Minus Late) tracking | ||||
|  * loop block to a TrackingInterface for Galileo E1 signals | ||||
|  */ | ||||
| class GalileoVolkE1DllPllVemlTracking : public TrackingInterface | ||||
| { | ||||
|  | ||||
| public: | ||||
|  | ||||
|   GalileoVolkE1DllPllVemlTracking(ConfigurationInterface* configuration, | ||||
|             std::string role, | ||||
|             unsigned int in_streams, | ||||
|             unsigned int out_streams, | ||||
|             boost::shared_ptr<gr::msg_queue> queue); | ||||
|  | ||||
|     virtual ~GalileoVolkE1DllPllVemlTracking(); | ||||
|  | ||||
|     std::string role() | ||||
|     { | ||||
|         return role_; | ||||
|     } | ||||
|  | ||||
|     //! Returns "galileo_volk_e1_dll_pll_veml_tracking" | ||||
|     std::string implementation() | ||||
|     { | ||||
|         return "galileo_volk_e1_dll_pll_veml_tracking"; | ||||
|     } | ||||
|     size_t item_size() | ||||
|     { | ||||
|         return item_size_; | ||||
|     } | ||||
|  | ||||
|     void connect(gr::top_block_sptr top_block); | ||||
|     void disconnect(gr::top_block_sptr top_block); | ||||
|     gr::basic_block_sptr get_left_block(); | ||||
|     gr::basic_block_sptr get_right_block(); | ||||
|  | ||||
|  | ||||
|     /*! | ||||
|      * \brief Set tracking channel unique ID | ||||
|      */ | ||||
|     void set_channel(unsigned int channel); | ||||
|  | ||||
|     /*! | ||||
|      * \brief Set acquisition/tracking common Gnss_Synchro object pointer | ||||
|      * to efficiently exchange synchronization data between acquisition and | ||||
|      *  tracking blocks | ||||
|      */ | ||||
|     void set_gnss_synchro(Gnss_Synchro* p_gnss_synchro); | ||||
|  | ||||
|     /*! | ||||
|      * \brief Set tracking channel internal queue | ||||
|      */ | ||||
|     void set_channel_queue(concurrent_queue<int> *channel_internal_queue); | ||||
|  | ||||
|     void start_tracking(); | ||||
|  | ||||
| private: | ||||
|  | ||||
|     galileo_volk_e1_dll_pll_veml_tracking_cc_sptr tracking_; | ||||
|     size_t item_size_; | ||||
|  | ||||
|     unsigned int channel_; | ||||
|  | ||||
|     std::string role_; | ||||
|     unsigned int in_streams_; | ||||
|     unsigned int out_streams_; | ||||
|     boost::shared_ptr<gr::msg_queue> queue_; | ||||
|     concurrent_queue<int> *channel_internal_queue_; | ||||
| }; | ||||
|  | ||||
| #endif // GNSS_SDR_GALILEO_VOLK_E1_DLL_PLL_VEML_TRACKING_H_ | ||||
		Reference in New Issue
	
	Block a user
	 andres
					andres