From 6d8a2ff868d19c651ba22593812b936eebf41969 Mon Sep 17 00:00:00 2001 From: Gastd Date: Mon, 5 Jun 2017 20:22:46 -0300 Subject: [PATCH] Add FDMA protocol to pcps algorithm --- .../glonass_l1_ca_pcps_acquisition.cc | 6 ----- .../gnuradio_blocks/pcps_acquisition_cc.cc | 25 +++++++++++++++++++ .../gnuradio_blocks/pcps_acquisition_cc.h | 8 ++---- 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/src/algorithms/acquisition/adapters/glonass_l1_ca_pcps_acquisition.cc b/src/algorithms/acquisition/adapters/glonass_l1_ca_pcps_acquisition.cc index a8e25b151..2ef2828f1 100644 --- a/src/algorithms/acquisition/adapters/glonass_l1_ca_pcps_acquisition.cc +++ b/src/algorithms/acquisition/adapters/glonass_l1_ca_pcps_acquisition.cc @@ -36,14 +36,8 @@ GlonassL1CaPcpsAcquisition::GlonassL1CaPcpsAcquisition( //--- Find number of samples per spreading code ------------------------- code_length_ = round(fs_in_ / (GLONASS_L1_CA_CODE_RATE_HZ / GLONASS_L1_CA_CODE_LENGTH_CHIPS)); - LOG(ERROR) << "fs_in_ " << fs_in_; - LOG(ERROR) << "code_length_ " << code_length_; - vector_length_ = code_length_ * sampled_ms_; - LOG(ERROR) << "vector_length_ " << vector_length_; - - if( bit_transition_flag_ ) { vector_length_ *= 2; diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_cc.cc b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_cc.cc index 99982e5e6..88e12dede 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_cc.cc +++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_cc.cc @@ -34,6 +34,7 @@ #include "pcps_acquisition_cc.h" #include +#include #include #include #include @@ -159,6 +160,11 @@ pcps_acquisition_cc::~pcps_acquisition_cc() void pcps_acquisition_cc::set_local_code(std::complex * code) { + // This will check if it's fdma, if yes will update the intermediate frequency and the doppler grid + if( is_fdma() ) + { + update_grid_doppler_wipeoffs(); + } // COD // Here we want to create a buffer that looks like this: // [ 0 0 0 ... 0 c_0 c_1 ... c_L] @@ -179,6 +185,21 @@ void pcps_acquisition_cc::set_local_code(std::complex * code) volk_32fc_conjugate_32fc(d_fft_codes, d_fft_if->get_outbuf(), d_fft_size); } +bool pcps_acquisition_cc::is_fdma() +{ + // Dealing with FDMA system + if( strcmp(d_gnss_synchro->Signal,"1G") == 0 ) + { + d_freq += DFRQ1_GLO * GLONASS_PRN.at(d_gnss_synchro->PRN); + LOG(INFO) << "Trying to acquire SV PRN " << d_gnss_synchro->PRN << " with freq " << DFRQ1_GLO * GLONASS_PRN.at(d_gnss_synchro->PRN) << " in Channel " << GLONASS_PRN.at(d_gnss_synchro->PRN) << std::endl; + return true; + } + else + { + return false; + } +} + void pcps_acquisition_cc::update_local_carrier(gr_complex* carrier_vector, int correlator_length_samples, float freq) { @@ -203,7 +224,10 @@ void pcps_acquisition_cc::init() d_input_power = 0.0; d_num_doppler_bins = ceil( static_cast(static_cast(d_doppler_max) - static_cast(-d_doppler_max)) / static_cast(d_doppler_step)); +} +void pcps_acquisition_cc::update_grid_doppler_wipeoffs() +{ // Create the carrier Doppler wipeoff signals d_grid_doppler_wipeoffs = new gr_complex*[d_num_doppler_bins]; @@ -216,6 +240,7 @@ void pcps_acquisition_cc::init() } + void pcps_acquisition_cc::set_state(int state) { gr::thread::scoped_lock lock(d_setlock); // require mutex with work function called by the scheduler diff --git a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_cc.h b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_cc.h index 50822e4d8..8755eddff 100644 --- a/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_cc.h +++ b/src/algorithms/acquisition/gnuradio_blocks/pcps_acquisition_cc.h @@ -95,6 +95,8 @@ private: std::string dump_filename); void update_local_carrier(gr_complex* carrier_vector, int correlator_length_samples, float freq); + void update_grid_doppler_wipeoffs(); + bool is_fdma(); void send_negative_acquisition(); void send_positive_acquisition(); @@ -148,12 +150,6 @@ public: { gr::thread::scoped_lock lock(d_setlock); // require mutex with work function called by the scheduler d_gnss_synchro = p_gnss_synchro; - // Dealing with FDMA system - if(d_gnss_synchro->System == 'R') - { - d_freq += 0.5625e6 * GLONASS_PRN[d_gnss_synchro->PRN+1]; - std::cout << "d_freq " << d_freq << std::endl; - } } /*!