mirror of
				https://github.com/gnss-sdr/gnss-sdr
				synced 2025-10-31 07:13:03 +00:00 
			
		
		
		
	Patch submitted by Daniel Fehr: Enabling EGNOS tracking and minor bugfixes
git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@392 64b25241-fba3-4117-9849-534c7e92360d
This commit is contained in:
		| @@ -179,7 +179,9 @@ gr::basic_block_sptr Channel::get_right_block() | ||||
| void Channel::set_signal(Gnss_Signal gnss_signal) | ||||
| { | ||||
|     gnss_signal_ = gnss_signal; | ||||
|     gnss_signal_.get_signal().copy(gnss_synchro_.Signal,2,0); | ||||
|     const char * str = gnss_signal_.get_signal().c_str(); // get a C style null terminated string | ||||
|     std::memcpy((void*)gnss_synchro_.Signal, str,3); // copy string into synchro char array: 2 char + null | ||||
|     gnss_synchro_.Signal[2] = 0; // make sure that string length is only two characters | ||||
|     gnss_synchro_.PRN = gnss_signal_.get_satellite().get_PRN(); | ||||
|     gnss_synchro_.System = gnss_signal_.get_satellite().get_system_short().c_str()[0]; | ||||
|     acq_->init(); | ||||
|   | ||||
| @@ -43,15 +43,26 @@ void gps_l1_ca_code_gen_complex(std::complex<float>* _dest, signed int _prn, uns | ||||
|     unsigned int feedback1, feedback2; | ||||
|     unsigned int lcv, lcv2; | ||||
|     unsigned int delay; | ||||
|     signed int prn = _prn-1; //Move the PRN code to fit an array indices | ||||
|     signed int prn_idx; | ||||
|  | ||||
|     /* G2 Delays as defined in GPS-ISD-200D */ | ||||
|     signed int delays[51] = {5, 6, 7, 8, 17, 18, 139, 140, 141, 251, 252, 254 ,255, 256, 257, 258, 469, 470, 471, 472, | ||||
|             473, 474, 509, 512, 513, 514, 515, 516, 859, 860, 861, 862, 145, 175, 52, 21, 237, 235, 886, 657, 634, 762, | ||||
|             355, 1012, 176, 603, 130, 359, 595, 68, 386}; | ||||
|     signed int delays[51] = {5 /*PRN1*/, 6, 7, 8, 17, 18, 139, 140, 141, 251, 252, 254 ,255, 256, 257, 258, 469, 470, 471, 472, | ||||
|             473, 474, 509, 512, 513, 514, 515, 516, 859, 860, 861, 862 /*PRN32*/, | ||||
|             145 /*PRN120*/, 175, 52, 21, 237, 235, 886, 657, 634, 762, | ||||
|             355, 1012, 176, 603, 130, 359, 595, 68, 386 /*PRN138*/}; | ||||
|  | ||||
|     // compute delay array index for given PRN number | ||||
|     if(120 <= _prn && _prn <= 138) | ||||
|     { | ||||
|     	prn_idx = _prn - 88;	// SBAS PRNs are at array indices 31 to 50 (offset: -120+33-1 =-88) | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|     	prn_idx = _prn-1; | ||||
|     } | ||||
|  | ||||
|     /* A simple error check */ | ||||
|     if((prn < 0) || (prn > 51)) | ||||
|     if((prn_idx < 0) || (prn_idx > 51)) | ||||
|         return; | ||||
|  | ||||
|     for(lcv = 0; lcv < 10; lcv++) | ||||
| @@ -80,7 +91,7 @@ void gps_l1_ca_code_gen_complex(std::complex<float>* _dest, signed int _prn, uns | ||||
|         } | ||||
|  | ||||
|     /* Set the delay */ | ||||
|     delay = 1023 - delays[prn]; | ||||
|     delay = 1023 - delays[prn_idx]; | ||||
|     delay += _chip_shift; | ||||
|     delay %= 1023; | ||||
|     /* Generate PRN from G1 and G2 Registers */ | ||||
|   | ||||
| @@ -351,6 +351,10 @@ Gps_L1_Ca_Dll_Pll_Optim_Tracking_cc::~Gps_L1_Ca_Dll_Pll_Optim_Tracking_cc() | ||||
| int Gps_L1_Ca_Dll_Pll_Optim_Tracking_cc::general_work (int noutput_items, gr_vector_int &ninput_items, | ||||
|         gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) | ||||
| { | ||||
| 	// stream to collect cout calls to improve thread safety | ||||
| 	std::stringstream tmp_str_stream; | ||||
|  | ||||
|  | ||||
|     float carr_error_hz; | ||||
|     float carr_error_filt_hz; | ||||
|     float code_error_chips; | ||||
| @@ -501,29 +505,24 @@ int Gps_L1_Ca_Dll_Pll_Optim_Tracking_cc::general_work (int noutput_items, gr_vec | ||||
|             /*! | ||||
|              *  \todo The stop timer has to be moved to the signal source! | ||||
|              */ | ||||
|             // debug: Second counter in channel 0 | ||||
|             if (d_channel == 0) | ||||
|                 { | ||||
|                     if (floor(d_sample_counter / d_fs_in) != d_last_seg) | ||||
|                         { | ||||
|                             d_last_seg = floor(d_sample_counter / d_fs_in); | ||||
|                             std::cout << "Current input signal time = " << d_last_seg << " [s]" << std::endl; | ||||
|                             std::cout << "Tracking CH " << d_channel <<  ": Satellite " << Gnss_Satellite(systemName[sys], d_acquisition_gnss_synchro->PRN) | ||||
|                                       << ", Doppler=" << d_carrier_doppler_hz<<" [Hz] CN0 = " << d_CN0_SNV_dB_Hz << " [dB-Hz]" << std::endl; | ||||
|                             //std::cout<<"TRK CH "<<d_channel<<" Carrier_lock_test="<<d_carrier_lock_test<< std::endl; | ||||
|                             //if (d_last_seg==5) d_carrier_lock_fail_counter=500; //DEBUG: force unlock! | ||||
|                         } | ||||
|                 } | ||||
|             else | ||||
|                 { | ||||
|                     if (floor(d_sample_counter / d_fs_in) != d_last_seg) | ||||
|                         { | ||||
|                             d_last_seg = floor(d_sample_counter / d_fs_in); | ||||
|                             std::cout << "Tracking CH " << d_channel <<  ": Satellite " << Gnss_Satellite(systemName[sys], d_acquisition_gnss_synchro->PRN) | ||||
|                                       << ", Doppler=" << d_carrier_doppler_hz<<" [Hz] CN0 = " << d_CN0_SNV_dB_Hz << " [dB-Hz]" << std::endl; | ||||
|                             //std::cout<<"TRK CH "<<d_channel<<" Carrier_lock_test="<<d_carrier_lock_test<< std::endl; | ||||
|                         } | ||||
|                 } | ||||
| 			if (floor(d_sample_counter / d_fs_in) != d_last_seg) | ||||
| 				{ | ||||
| 					d_last_seg = floor(d_sample_counter / d_fs_in); | ||||
|  | ||||
| 					if (d_channel == 0) | ||||
| 					{ | ||||
| 						// debug: Second counter in channel 0 | ||||
| 						tmp_str_stream << "Current input signal time = " << d_last_seg << " [s]" << std::endl << std::flush; | ||||
| 						std::cout << tmp_str_stream.rdbuf() << std::flush; | ||||
| 					} | ||||
|  | ||||
| 					tmp_str_stream << "Tracking CH " << d_channel <<  ": Satellite " << Gnss_Satellite(systemName[sys], d_acquisition_gnss_synchro->PRN) | ||||
| 									   << ", Doppler="<<d_carrier_doppler_hz<<" [Hz] CN0 = " << d_CN0_SNV_dB_Hz << " [dB-Hz]" << std::endl; | ||||
| 					std::cout << tmp_str_stream.rdbuf() << std::flush; | ||||
|  | ||||
| 					//std::cout<<"TRK CH "<<d_channel<<" Carrier_lock_test="<<d_carrier_lock_test<< std::endl; | ||||
| 					//if (d_channel == 0 || d_last_seg==5) d_carrier_lock_fail_counter=500; //DEBUG: force unlock! | ||||
| 				} | ||||
|         } | ||||
|     else | ||||
|         { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Carles Fernandez
					Carles Fernandez