[hamradio-commits] [gnss-sdr] 75/80: Add cshort implementation to GalileoE1PcpsAmbiguousAcquisition
Carles Fernandez
carles_fernandez-guest at moszumanska.debian.org
Sun May 15 20:11:59 UTC 2016
This is an automated email from the git hooks/post-receive script.
carles_fernandez-guest pushed a commit to branch upstream
in repository gnss-sdr.
commit 0671ec6b282c3155ae2eb32f5fc1ea97c6ba3602
Author: Luis Esteve <luis.esteve.elfau at gmail.com>
Date: Fri May 13 01:51:14 2016 +0200
Add cshort implementation to GalileoE1PcpsAmbiguousAcquisition
---
.../galileo_e1_pcps_ambiguous_acquisition.cc | 176 +++++++++++++++++----
.../galileo_e1_pcps_ambiguous_acquisition.h | 7 +
2 files changed, 150 insertions(+), 33 deletions(-)
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 3ade922..6f184c2 100644
--- a/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.cc
+++ b/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.cc
@@ -85,20 +85,29 @@ GalileoE1PcpsAmbiguousAcquisition::GalileoE1PcpsAmbiguousAcquisition(
code_ = new gr_complex[vector_length_];
- if (item_type_.compare("gr_complex") == 0)
+ if (item_type_.compare("cshort") == 0 )
{
- item_size_ = sizeof(gr_complex);
- acquisition_cc_ = pcps_make_acquisition_cc(sampled_ms_, max_dwells_,
+ item_size_ = sizeof(lv_16sc_t);
+ acquisition_sc_ = pcps_make_acquisition_sc(sampled_ms_, max_dwells_,
doppler_max_, if_, fs_in_, samples_per_ms, code_length_,
bit_transition_flag_, use_CFAR_algorithm_flag_, dump_, dump_filename_);
- stream_to_vector_ = gr::blocks::stream_to_vector::make(item_size_, vector_length_);
- DLOG(INFO) << "stream_to_vector(" << stream_to_vector_->unique_id() << ")";
- DLOG(INFO) << "acquisition(" << acquisition_cc_->unique_id() << ")";
+ DLOG(INFO) << "acquisition(" << acquisition_sc_->unique_id() << ")";
+
+ }else{
+ item_size_ = sizeof(gr_complex);
+ acquisition_cc_ = pcps_make_acquisition_cc(sampled_ms_, max_dwells_,
+ doppler_max_, if_, fs_in_, samples_per_ms, code_length_,
+ bit_transition_flag_, use_CFAR_algorithm_flag_, dump_, dump_filename_);
+ DLOG(INFO) << "acquisition(" << acquisition_cc_->unique_id() << ")";
}
- else
+
+ stream_to_vector_ = gr::blocks::stream_to_vector::make(item_size_, vector_length_);
+ DLOG(INFO) << "stream_to_vector(" << stream_to_vector_->unique_id() << ")";
+
+ if (item_type_.compare("cbyte") == 0)
{
- item_size_ = sizeof(gr_complex);
- LOG(WARNING) << item_type_ << " unknown acquisition item type";
+ cbyte_to_float_x2_ = make_complex_byte_to_float_x2();
+ float_to_complex_ = gr::blocks::float_to_complex::make();
}
channel_ = 0;
@@ -117,7 +126,11 @@ GalileoE1PcpsAmbiguousAcquisition::~GalileoE1PcpsAmbiguousAcquisition()
void GalileoE1PcpsAmbiguousAcquisition::set_channel(unsigned int channel)
{
channel_ = channel;
- if (item_type_.compare("gr_complex") == 0)
+ if (item_type_.compare("cshort") == 0)
+ {
+ acquisition_sc_->set_channel(channel_);
+ }
+ else
{
acquisition_cc_->set_channel(channel_);
}
@@ -141,7 +154,11 @@ void GalileoE1PcpsAmbiguousAcquisition::set_threshold(float threshold)
DLOG(INFO) << "Channel " << channel_ << " Threshold = " << threshold_;
- if (item_type_.compare("gr_complex") == 0)
+ if (item_type_.compare("cshort") == 0)
+ {
+ acquisition_sc_->set_threshold(threshold_);
+ }
+ else
{
acquisition_cc_->set_threshold(threshold_);
}
@@ -151,7 +168,12 @@ void GalileoE1PcpsAmbiguousAcquisition::set_threshold(float threshold)
void GalileoE1PcpsAmbiguousAcquisition::set_doppler_max(unsigned int doppler_max)
{
doppler_max_ = doppler_max;
- if (item_type_.compare("gr_complex") == 0)
+
+ if (item_type_.compare("cshort") == 0)
+ {
+ acquisition_sc_->set_doppler_max(doppler_max_);
+ }
+ else
{
acquisition_cc_->set_doppler_max(doppler_max_);
}
@@ -161,7 +183,12 @@ void GalileoE1PcpsAmbiguousAcquisition::set_doppler_max(unsigned int doppler_max
void GalileoE1PcpsAmbiguousAcquisition::set_doppler_step(unsigned int doppler_step)
{
doppler_step_ = doppler_step;
- if (item_type_.compare("gr_complex") == 0)
+
+ if (item_type_.compare("cshort") == 0)
+ {
+ acquisition_sc_->set_doppler_step(doppler_step_);
+ }
+ else
{
acquisition_cc_->set_doppler_step(doppler_step_);
}
@@ -171,7 +198,12 @@ void GalileoE1PcpsAmbiguousAcquisition::set_doppler_step(unsigned int doppler_st
void GalileoE1PcpsAmbiguousAcquisition::set_gnss_synchro(Gnss_Synchro* gnss_synchro)
{
gnss_synchro_ = gnss_synchro;
- if (item_type_.compare("gr_complex") == 0)
+
+ if (item_type_.compare("cshort") == 0)
+ {
+ acquisition_sc_->set_gnss_synchro(gnss_synchro_);
+ }
+ else
{
acquisition_cc_->set_gnss_synchro(gnss_synchro_);
}
@@ -180,52 +212,68 @@ void GalileoE1PcpsAmbiguousAcquisition::set_gnss_synchro(Gnss_Synchro* gnss_sync
signed int GalileoE1PcpsAmbiguousAcquisition::mag()
{
- if (item_type_.compare("gr_complex") == 0)
+ if (item_type_.compare("cshort") == 0)
{
- return acquisition_cc_->mag();
+ return acquisition_sc_->mag();
}
else
{
- return 0;
+ return acquisition_cc_->mag();
}
}
void GalileoE1PcpsAmbiguousAcquisition::init()
{
- acquisition_cc_->init();
+ if (item_type_.compare("cshort") == 0)
+ {
+ acquisition_sc_->init();
+ }
+ else
+ {
+ acquisition_cc_->init();
+ }
+
set_local_code();
}
void GalileoE1PcpsAmbiguousAcquisition::set_local_code()
{
- if (item_type_.compare("gr_complex") == 0)
- {
- bool cboc = configuration_->property(
+ bool cboc = configuration_->property(
"Acquisition" + boost::lexical_cast<std::string>(channel_)
+ ".cboc", false);
- std::complex<float> * code = new std::complex<float>[code_length_];
+ std::complex<float> * code = new std::complex<float>[code_length_];
- galileo_e1_code_gen_complex_sampled(code, gnss_synchro_->Signal,
+ 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++)
- {
- memcpy(&(code_[i*code_length_]), code, sizeof(gr_complex)*code_length_);
- }
+ for (unsigned int i = 0; i < sampled_ms_ / 4; i++)
+ {
+ memcpy(&(code_[i*code_length_]), code, sizeof(gr_complex)*code_length_);
+ }
+ if (item_type_.compare("cshort") == 0)
+ {
+ acquisition_sc_->set_local_code(code_);
+ }
+ else
+ {
acquisition_cc_->set_local_code(code_);
-
- delete[] code;
}
+
+ delete[] code;
}
void GalileoE1PcpsAmbiguousAcquisition::reset()
{
- if (item_type_.compare("gr_complex") == 0)
+ if (item_type_.compare("cshort") == 0)
+ {
+ acquisition_sc_->set_active(true);
+ }
+ else
{
acquisition_cc_->set_active(true);
}
@@ -234,7 +282,14 @@ void GalileoE1PcpsAmbiguousAcquisition::reset()
void GalileoE1PcpsAmbiguousAcquisition::set_state(int state)
{
- acquisition_cc_->set_state(state);
+ if (item_type_.compare("cshort") == 0)
+ {
+ acquisition_sc_->set_state(state);
+ }
+ else
+ {
+ acquisition_cc_->set_state(state);
+ }
}
@@ -265,6 +320,21 @@ void GalileoE1PcpsAmbiguousAcquisition::connect(gr::top_block_sptr top_block)
{
top_block->connect(stream_to_vector_, 0, acquisition_cc_, 0);
}
+ else if (item_type_.compare("cshort") == 0)
+ {
+ top_block->connect(stream_to_vector_, 0, acquisition_sc_, 0);
+ }
+ else if (item_type_.compare("cbyte") == 0)
+ {
+ top_block->connect(cbyte_to_float_x2_, 0, float_to_complex_, 0);
+ top_block->connect(cbyte_to_float_x2_, 1, float_to_complex_, 1);
+ top_block->connect(float_to_complex_, 0, stream_to_vector_, 0);
+ top_block->connect(stream_to_vector_, 0, acquisition_cc_, 0);
+ }
+ else
+ {
+ LOG(WARNING) << item_type_ << " unknown acquisition item type";
+ }
}
@@ -274,17 +344,57 @@ void GalileoE1PcpsAmbiguousAcquisition::disconnect(gr::top_block_sptr top_block)
{
top_block->disconnect(stream_to_vector_, 0, acquisition_cc_, 0);
}
+ else if (item_type_.compare("cshort") == 0)
+ {
+ top_block->disconnect(stream_to_vector_, 0, acquisition_sc_, 0);
+ }
+ else if (item_type_.compare("cbyte") == 0)
+ {
+ // Since a byte-based acq implementation is not available,
+ // we just convert cshorts to gr_complex
+ top_block->disconnect(cbyte_to_float_x2_, 0, float_to_complex_, 0);
+ top_block->disconnect(cbyte_to_float_x2_, 1, float_to_complex_, 1);
+ top_block->disconnect(float_to_complex_, 0, stream_to_vector_, 0);
+ top_block->disconnect(stream_to_vector_, 0, acquisition_cc_, 0);
+ }
+ else
+ {
+ LOG(WARNING) << item_type_ << " unknown acquisition item type";
+ }
}
gr::basic_block_sptr GalileoE1PcpsAmbiguousAcquisition::get_left_block()
{
- return stream_to_vector_;
+ if (item_type_.compare("gr_complex") == 0)
+ {
+ return stream_to_vector_;
+ }
+ else if (item_type_.compare("cshort") == 0)
+ {
+ return stream_to_vector_;
+ }
+ else if (item_type_.compare("cbyte") == 0)
+ {
+ return cbyte_to_float_x2_;
+ }
+ else
+ {
+ LOG(WARNING) << item_type_ << " unknown acquisition item type";
+ return nullptr;
+ }
}
gr::basic_block_sptr GalileoE1PcpsAmbiguousAcquisition::get_right_block()
{
- return acquisition_cc_;
+ if (item_type_.compare("cshort") == 0)
+ {
+ return acquisition_sc_;
+ }
+ else
+ {
+ return acquisition_cc_;
+ }
}
diff --git a/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.h b/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.h
index a0b1dc2..b98bcbc 100644
--- a/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.h
+++ b/src/algorithms/acquisition/adapters/galileo_e1_pcps_ambiguous_acquisition.h
@@ -34,9 +34,13 @@
#include <string>
#include <gnuradio/blocks/stream_to_vector.h>
+#include <gnuradio/blocks/float_to_complex.h>
#include "gnss_synchro.h"
#include "acquisition_interface.h"
#include "pcps_acquisition_cc.h"
+#include "pcps_acquisition_sc.h"
+#include "complex_byte_to_float_x2.h"
+#include <volk_gnsssdr/volk_gnsssdr.h>
class ConfigurationInterface;
@@ -131,7 +135,10 @@ public:
private:
ConfigurationInterface* configuration_;
pcps_acquisition_cc_sptr acquisition_cc_;
+ pcps_acquisition_sc_sptr acquisition_sc_;
gr::blocks::stream_to_vector::sptr stream_to_vector_;
+ gr::blocks::float_to_complex::sptr float_to_complex_;
+ complex_byte_to_float_x2_sptr cbyte_to_float_x2_;
size_t item_size_;
std::string item_type_;
unsigned int vector_length_;
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-hamradio/gnss-sdr.git
More information about the pkg-hamradio-commits
mailing list