diff --git a/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.cc b/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.cc index 7ec8ead08..1da387806 100644 --- a/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.cc +++ b/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.cc @@ -51,8 +51,7 @@ GalileoE1PcpsAmbiguousAcquisition::GalileoE1PcpsAmbiguousAcquisition( DLOG(INFO) << "role " << role; - item_type_ = configuration_->property(role + ".item_type", - default_item_type); + item_type_ = configuration_->property(role + ".item_type", default_item_type); fs_in_ = configuration_->property("GNSS-SDR.internal_fs_hz", 4000000); if_ = configuration_->property(role + ".ifreq", 0); @@ -62,15 +61,14 @@ GalileoE1PcpsAmbiguousAcquisition::GalileoE1PcpsAmbiguousAcquisition( if (sampled_ms_ % 4 != 0) { - sampled_ms_ = (int)(sampled_ms_/4) * 4; + sampled_ms_ = (int)(sampled_ms_ / 4) * 4; LOG(WARNING) << "coherent_integration_time should be multiple of " - << "Galileo code length (4 ms). coherent_integration_time = " - << sampled_ms_ << " ms will be used."; - + << "Galileo code length (4 ms). coherent_integration_time = " + << sampled_ms_ << " ms will be used."; } bit_transition_flag_ = configuration_->property(role + ".bit_transition_flag", false); - use_CFAR_algorithm_flag_=configuration_->property(role + ".use_CFAR_algorithm", true); //will be false in future versions + use_CFAR_algorithm_flag_ = configuration_->property(role + ".use_CFAR_algorithm", true); //will be false in future versions if (!bit_transition_flag_) { @@ -81,25 +79,17 @@ GalileoE1PcpsAmbiguousAcquisition::GalileoE1PcpsAmbiguousAcquisition( max_dwells_ = 2; } - dump_filename_ = configuration_->property(role + ".dump_filename", - default_dump_filename); + dump_filename_ = configuration_->property(role + ".dump_filename", default_dump_filename); //--- Find number of samples per spreading code (4 ms) ----------------- - - code_length_ = round( - fs_in_ - / (Galileo_E1_CODE_CHIP_RATE_HZ - / Galileo_E1_B_CODE_LENGTH_CHIPS)); - - - + code_length_ = round(fs_in_ / (Galileo_E1_CODE_CHIP_RATE_HZ / Galileo_E1_B_CODE_LENGTH_CHIPS)); int samples_per_ms = round(code_length_ / 4.0); - vector_length_ = sampled_ms_ * samples_per_ms; - if( bit_transition_flag_ ){ - vector_length_ *= 2; - } + if( bit_transition_flag_ ) + { + vector_length_ *= 2; + } code_ = new gr_complex[vector_length_]; @@ -133,8 +123,7 @@ GalileoE1PcpsAmbiguousAcquisition::~GalileoE1PcpsAmbiguousAcquisition() } -void -GalileoE1PcpsAmbiguousAcquisition::set_channel(unsigned int channel) +void GalileoE1PcpsAmbiguousAcquisition::set_channel(unsigned int channel) { channel_ = channel; if (item_type_.compare("gr_complex") == 0) @@ -144,37 +133,33 @@ GalileoE1PcpsAmbiguousAcquisition::set_channel(unsigned int channel) } -void -GalileoE1PcpsAmbiguousAcquisition::set_threshold(float threshold) +void GalileoE1PcpsAmbiguousAcquisition::set_threshold(float threshold) { + float pfa = configuration_->property(role_+ boost::lexical_cast(channel_) + ".pfa", 0.0); - float pfa = configuration_->property(role_+ boost::lexical_cast(channel_) + ".pfa", 0.0); + if(pfa == 0.0) pfa = configuration_->property(role_ + ".pfa", 0.0); - if(pfa==0.0) pfa = configuration_->property(role_+".pfa", 0.0); - - if(pfa==0.0) + if(pfa == 0.0) { threshold_ = threshold; } - else + else { threshold_ = calculate_threshold(pfa); } - DLOG(INFO) <<"Channel "<set_threshold(threshold_); } } -void -GalileoE1PcpsAmbiguousAcquisition::set_doppler_max(unsigned int doppler_max) +void GalileoE1PcpsAmbiguousAcquisition::set_doppler_max(unsigned int doppler_max) { doppler_max_ = doppler_max; - if (item_type_.compare("gr_complex") == 0) { acquisition_cc_->set_doppler_max(doppler_max_); @@ -182,8 +167,7 @@ GalileoE1PcpsAmbiguousAcquisition::set_doppler_max(unsigned int doppler_max) } -void -GalileoE1PcpsAmbiguousAcquisition::set_doppler_step(unsigned int doppler_step) +void GalileoE1PcpsAmbiguousAcquisition::set_doppler_step(unsigned int doppler_step) { doppler_step_ = doppler_step; if (item_type_.compare("gr_complex") == 0) @@ -193,9 +177,7 @@ GalileoE1PcpsAmbiguousAcquisition::set_doppler_step(unsigned int doppler_step) } -void -GalileoE1PcpsAmbiguousAcquisition::set_channel_queue( - concurrent_queue *channel_internal_queue) +void GalileoE1PcpsAmbiguousAcquisition::set_channel_queue(concurrent_queue *channel_internal_queue) { channel_internal_queue_ = channel_internal_queue; if (item_type_.compare("gr_complex") == 0) @@ -205,9 +187,7 @@ GalileoE1PcpsAmbiguousAcquisition::set_channel_queue( } -void -GalileoE1PcpsAmbiguousAcquisition::set_gnss_synchro( - Gnss_Synchro* gnss_synchro) +void GalileoE1PcpsAmbiguousAcquisition::set_gnss_synchro(Gnss_Synchro* gnss_synchro) { gnss_synchro_ = gnss_synchro; if (item_type_.compare("gr_complex") == 0) @@ -217,8 +197,7 @@ GalileoE1PcpsAmbiguousAcquisition::set_gnss_synchro( } -signed int -GalileoE1PcpsAmbiguousAcquisition::mag() +signed int GalileoE1PcpsAmbiguousAcquisition::mag() { if (item_type_.compare("gr_complex") == 0) { @@ -231,32 +210,29 @@ GalileoE1PcpsAmbiguousAcquisition::mag() } -void -GalileoE1PcpsAmbiguousAcquisition::init() +void GalileoE1PcpsAmbiguousAcquisition::init() { acquisition_cc_->init(); set_local_code(); } -void -GalileoE1PcpsAmbiguousAcquisition::set_local_code() +void GalileoE1PcpsAmbiguousAcquisition::set_local_code() { if (item_type_.compare("gr_complex") == 0) { bool cboc = configuration_->property( "Acquisition" + boost::lexical_cast(channel_) - + ".cboc", false); + + ".cboc", false); std::complex * code = new std::complex[code_length_]; galileo_e1_code_gen_complex_sampled(code, gnss_synchro_->Signal, cboc, gnss_synchro_->PRN, fs_in_, 0, false); - for (unsigned int i = 0; i < sampled_ms_/4; i++) + for (unsigned int i = 0; i < sampled_ms_ / 4; i++) { - memcpy(&(code_[i*code_length_]), code, - sizeof(gr_complex)*code_length_); + memcpy(&(code_[i*code_length_]), code, sizeof(gr_complex)*code_length_); } acquisition_cc_->set_local_code(code_); @@ -266,8 +242,7 @@ GalileoE1PcpsAmbiguousAcquisition::set_local_code() } -void -GalileoE1PcpsAmbiguousAcquisition::reset() +void GalileoE1PcpsAmbiguousAcquisition::reset() { if (item_type_.compare("gr_complex") == 0) { @@ -275,35 +250,35 @@ GalileoE1PcpsAmbiguousAcquisition::reset() } } -void -GalileoE1PcpsAmbiguousAcquisition::set_state(int state) + +void GalileoE1PcpsAmbiguousAcquisition::set_state(int state) { - acquisition_cc_->set_state(state); + acquisition_cc_->set_state(state); } + float GalileoE1PcpsAmbiguousAcquisition::calculate_threshold(float pfa) { - unsigned int frequency_bins = 0; - for (int doppler = (int)(-doppler_max_); doppler <= (int)doppler_max_; doppler += doppler_step_) - { - frequency_bins++; - } + unsigned int frequency_bins = 0; + for (int doppler = (int)(-doppler_max_); doppler <= (int)doppler_max_; doppler += doppler_step_) + { + frequency_bins++; + } - DLOG(INFO) <<"Channel "<property(role + ".item_type", - default_item_type); + item_type_ = configuration_->property(role + ".item_type", default_item_type); fs_in_ = configuration_->property("GNSS-SDR.internal_fs_hz", 32000000); if_ = configuration_->property(role + ".ifreq", 0); @@ -68,27 +67,26 @@ GalileoE5aNoncoherentIQAcquisitionCaf::GalileoE5aNoncoherentIQAcquisitionCaf( Zero_padding = configuration_->property(role + ".Zero_padding",0); sampled_ms_ = configuration_->property(role + ".coherent_integration_time_ms", 1); if (sampled_ms_ > 3) - { - sampled_ms_=3; - DLOG(INFO) << "Coherent integration time should be 3 ms or less. Changing to 3ms "; - std::cout<<"Too high coherent integration time. Changing to 3ms" << std::endl; - } + { + sampled_ms_ = 3; + DLOG(INFO) << "Coherent integration time should be 3 ms or less. Changing to 3ms "; + std::cout << "Too high coherent integration time. Changing to 3ms" << std::endl; + } if (Zero_padding > 0) - { - sampled_ms_ = 2; - DLOG(INFO) << "Zero padding activated. Changing to 1ms code + 1ms zero padding "; - std::cout<<"Zero padding activated. Changing to 1ms code + 1ms zero padding" << std::endl; - } + { + sampled_ms_ = 2; + DLOG(INFO) << "Zero padding activated. Changing to 1ms code + 1ms zero padding "; + std::cout << "Zero padding activated. Changing to 1ms code + 1ms zero padding" << std::endl; + } max_dwells_ = configuration_->property(role + ".max_dwells", 1); - dump_filename_ = configuration_->property(role + ".dump_filename", - default_dump_filename); + dump_filename_ = configuration_->property(role + ".dump_filename", default_dump_filename); //--- Find number of samples per spreading code (1ms)------------------------- - code_length_ = round(fs_in_/ Galileo_E5a_CODE_CHIP_RATE_HZ*Galileo_E5a_CODE_LENGTH_CHIPS); + code_length_ = round(fs_in_ / Galileo_E5a_CODE_CHIP_RATE_HZ * Galileo_E5a_CODE_LENGTH_CHIPS); - vector_length_=code_length_ * sampled_ms_; + vector_length_ = code_length_ * sampled_ms_; codeI_= new gr_complex[vector_length_]; codeQ_= new gr_complex[vector_length_]; @@ -96,9 +94,9 @@ GalileoE5aNoncoherentIQAcquisitionCaf::GalileoE5aNoncoherentIQAcquisitionCaf( std::string sig_ = configuration_->property("Channel.signal", std::string("5X")); if (sig_.at(0) == '5' && sig_.at(1) == 'X') - { - both_signal_components = true; - } + { + both_signal_components = true; + } if (item_type_.compare("gr_complex") == 0) { item_size_ = sizeof(gr_complex); @@ -106,10 +104,10 @@ GalileoE5aNoncoherentIQAcquisitionCaf::GalileoE5aNoncoherentIQAcquisitionCaf( shift_resolution_, if_, fs_in_, code_length_, code_length_, bit_transition_flag_, queue_, dump_, dump_filename_, both_signal_components, CAF_window_hz_,Zero_padding); } - else + else { - item_size_ = sizeof(gr_complex); - LOG(WARNING) << item_type_ << " unknown acquisition item type"; + item_size_ = sizeof(gr_complex); + LOG(WARNING) << item_type_ << " unknown acquisition item type"; } gnss_synchro_ = 0; threshold_ = 0.0; @@ -137,25 +135,26 @@ void GalileoE5aNoncoherentIQAcquisitionCaf::set_channel(unsigned int channel) } } + void GalileoE5aNoncoherentIQAcquisitionCaf::set_threshold(float threshold) { - float pfa = configuration_->property(role_+ boost::lexical_cast(channel_) + ".pfa", 0.0); + float pfa = configuration_->property(role_+ boost::lexical_cast(channel_) + ".pfa", 0.0); - if(pfa==0.0) pfa = configuration_->property(role_+".pfa", 0.0); + if(pfa == 0.0) pfa = configuration_->property(role_ + ".pfa", 0.0); - if(pfa==0.0) + if(pfa == 0.0) { threshold_ = threshold; } - else + else { threshold_ = calculate_threshold(pfa); } - DLOG(INFO) <<"Channel "<set_threshold(threshold_); } @@ -172,6 +171,7 @@ void GalileoE5aNoncoherentIQAcquisitionCaf::set_doppler_max(unsigned int doppler } } + void GalileoE5aNoncoherentIQAcquisitionCaf::set_doppler_step(unsigned int doppler_step) { doppler_step_ = doppler_step; @@ -181,6 +181,7 @@ void GalileoE5aNoncoherentIQAcquisitionCaf::set_doppler_step(unsigned int dopple } } + void GalileoE5aNoncoherentIQAcquisitionCaf::set_channel_queue( concurrent_queue *channel_internal_queue) { @@ -222,65 +223,66 @@ void GalileoE5aNoncoherentIQAcquisitionCaf::init() set_local_code(); } + void GalileoE5aNoncoherentIQAcquisitionCaf::set_local_code() { - if (item_type_.compare("gr_complex")==0) - { + if (item_type_.compare("gr_complex") == 0) + { + std::complex* codeI = new std::complex[code_length_]; + std::complex* codeQ = new std::complex[code_length_]; - std::complex* codeI = new std::complex[code_length_]; - std::complex* codeQ = new std::complex[code_length_]; + if (gnss_synchro_->Signal[0] == '5' && gnss_synchro_->Signal[1] == 'X') + { + char a[3]; + strcpy(a,"5I"); + galileo_e5_a_code_gen_complex_sampled(codeI, a, + gnss_synchro_->PRN, fs_in_, 0); - if (gnss_synchro_->Signal[0] == '5' && gnss_synchro_->Signal[1] == 'X') - { - char a[3]; - strcpy(a,"5I"); - galileo_e5_a_code_gen_complex_sampled(codeI, a, - gnss_synchro_->PRN, fs_in_, 0); + strcpy(a,"5Q"); + galileo_e5_a_code_gen_complex_sampled(codeQ, a, + gnss_synchro_->PRN, fs_in_, 0); + } + else + { + galileo_e5_a_code_gen_complex_sampled(codeI, gnss_synchro_->Signal, + gnss_synchro_->PRN, fs_in_, 0); + } + // WARNING: 3ms are coherently integrated. Secondary sequence (1,1,1) + // is generated, and modulated in the 'block'. + if (Zero_padding == 0) // if no zero_padding + { + for (unsigned int i = 0; i < sampled_ms_; i++) + { + memcpy(&(codeI_[i*code_length_]), codeI, + sizeof(gr_complex)*code_length_); + if (gnss_synchro_->Signal[0] == '5' && gnss_synchro_->Signal[1] == 'X') + { + memcpy(&(codeQ_[i*code_length_]), codeQ, + sizeof(gr_complex)*code_length_); + } + } + } + else + { + // 1ms code + 1ms zero padding + memcpy(&(codeI_[0]), codeI, + sizeof(gr_complex)*code_length_); + if (gnss_synchro_->Signal[0] == '5' && gnss_synchro_->Signal[1] == 'X') + { + memcpy(&(codeQ_[0]), codeQ, + sizeof(gr_complex)*code_length_); + } + } - strcpy(a,"5Q"); - galileo_e5_a_code_gen_complex_sampled(codeQ, a, - gnss_synchro_->PRN, fs_in_, 0); - } - else - { - galileo_e5_a_code_gen_complex_sampled(codeI, gnss_synchro_->Signal, - gnss_synchro_->PRN, fs_in_, 0); - } - // WARNING: 3ms are coherently integrated. Secondary sequence (1,1,1) - // is generated, and modulated in the 'block'. - if (Zero_padding == 0) // if no zero_padding - { - for (unsigned int i = 0; i < sampled_ms_; i++) - { - memcpy(&(codeI_[i*code_length_]), codeI, - sizeof(gr_complex)*code_length_); - if (gnss_synchro_->Signal[0] == '5' && gnss_synchro_->Signal[1] == 'X') - { - memcpy(&(codeQ_[i*code_length_]), codeQ, - sizeof(gr_complex)*code_length_); - } - } - } - else - { - // 1ms code + 1ms zero padding - memcpy(&(codeI_[0]), codeI, - sizeof(gr_complex)*code_length_); - if (gnss_synchro_->Signal[0] == '5' && gnss_synchro_->Signal[1] == 'X') - { - memcpy(&(codeQ_[0]), codeQ, - sizeof(gr_complex)*code_length_); - } - } + acquisition_cc_->set_local_code(codeI_,codeQ_); + delete[] codeI; + delete[] codeQ; - acquisition_cc_->set_local_code(codeI_,codeQ_); - delete[] codeI; - delete[] codeQ; - - } + } } + void GalileoE5aNoncoherentIQAcquisitionCaf::reset() { if (item_type_.compare("gr_complex") == 0) @@ -309,25 +311,27 @@ float GalileoE5aNoncoherentIQAcquisitionCaf::calculate_threshold(float pfa) return threshold; } + void GalileoE5aNoncoherentIQAcquisitionCaf::set_state(int state) { - acquisition_cc_->set_state(state); + acquisition_cc_->set_state(state); } void GalileoE5aNoncoherentIQAcquisitionCaf::connect(gr::top_block_sptr top_block) { - if(top_block) { /* top_block is not null */}; - // Nothing to connect internally + if(top_block) { /* top_block is not null */}; + // Nothing to connect internally } void GalileoE5aNoncoherentIQAcquisitionCaf::disconnect(gr::top_block_sptr top_block) { - if(top_block) { /* top_block is not null */}; - // Nothing to disconnect internally + if(top_block) { /* top_block is not null */}; + // Nothing to disconnect internally } + gr::basic_block_sptr GalileoE5aNoncoherentIQAcquisitionCaf::get_left_block() { return acquisition_cc_;