mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2024-12-15 12:40:35 +00:00
Merge remote-tracking branch 'gnss-sdr/next' into system_test_space
This commit is contained in:
commit
9361ae0090
11
docs/PULL_REQUEST_TEMPLATE.md
Normal file
11
docs/PULL_REQUEST_TEMPLATE.md
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
:+1::tada: Hello, and thanks for contributing to [GNSS-SDR](http://gnss-sdr.org)! :tada::+1:
|
||||||
|
|
||||||
|
Before submitting your pull request, please make sure the following is done:
|
||||||
|
1. You undertake the [Contributor Covenant Code of Conduct](https://github.com/gnss-sdr/gnss-sdr/blob/master/CODE_OF_CONDUCT.md).
|
||||||
|
2. If you are a first-time contributor, after your pull request you will be asked to sign an Individual Contributor License Agreement ([CLA](https://en.wikipedia.org/wiki/Contributor_License_Agreement)) before your code gets accepted into `master`. This license is for your protection as a Contributor as well as for the protection of [CTTC](http://www.cttc.es/); it does not change your rights to use your own contributions for any other purpose. Except for the license granted therein to CTTC and recipients of software distributed by CTTC, you reserve all right, title, and interest in and to your contributions. The information you provide in that CLA will be maintained in accordance with [CTTC's privacy policy](http://www.cttc.es/privacy/).
|
||||||
|
3. You have read the [Contributing Guidelines](https://github.com/gnss-sdr/gnss-sdr/blob/master/CONTRIBUTING.md).
|
||||||
|
4. You have read the [coding style guide](http://gnss-sdr.org/coding-style/).
|
||||||
|
5. You have forked the [gnss-sdr upstream repository](https://github.com/gnss-sdr/gnss-sdr) and have created your branch from `next` (or any other currently living branch in the upstream repository).
|
||||||
|
6. Please include a description of your changes here.
|
||||||
|
|
||||||
|
**Please feel free to delete this line and the above text once you have read it and in case you want to go on with your pull request.**
|
@ -1,11 +1,12 @@
|
|||||||
/*!
|
/*!
|
||||||
* \file freq_xlating_fir_filter.cc
|
* \file freq_xlating_fir_filter.cc
|
||||||
* \brief Adapts a gnuradio gr_freq_xlating_fir_filter designed with gr_remez
|
* \brief Adapts a gnuradio gr_freq_xlating_fir_filter designed with gr_remez or gr_firdes
|
||||||
* \author Luis Esteve, 2012. luis(at)epsilon-formacion.com
|
* \author Luis Esteve, 2012. luis(at)epsilon-formacion.com
|
||||||
|
* Antonio Ramos, 2017. antonio.ramos(at)cttc.es
|
||||||
*
|
*
|
||||||
* -------------------------------------------------------------------------
|
* -------------------------------------------------------------------------
|
||||||
*
|
*
|
||||||
* Copyright (C) 2010-2015 (see AUTHORS file for a list of contributors)
|
* Copyright (C) 2010-2017 (see AUTHORS file for a list of contributors)
|
||||||
*
|
*
|
||||||
* GNSS-SDR is a software defined Global Navigation
|
* GNSS-SDR is a software defined Global Navigation
|
||||||
* Satellite Systems receiver
|
* Satellite Systems receiver
|
||||||
@ -32,6 +33,7 @@
|
|||||||
#include <boost/lexical_cast.hpp>
|
#include <boost/lexical_cast.hpp>
|
||||||
#include <gnuradio/blocks/file_sink.h>
|
#include <gnuradio/blocks/file_sink.h>
|
||||||
#include <gnuradio/filter/pm_remez.h>
|
#include <gnuradio/filter/pm_remez.h>
|
||||||
|
#include <gnuradio/filter/firdes.h>
|
||||||
#include <glog/logging.h>
|
#include <glog/logging.h>
|
||||||
#include <volk/volk.h>
|
#include <volk/volk.h>
|
||||||
#include "configuration_interface.h"
|
#include "configuration_interface.h"
|
||||||
@ -343,8 +345,8 @@ void FreqXlatingFirFilter::init()
|
|||||||
std::string default_output_item_type = "gr_complex";
|
std::string default_output_item_type = "gr_complex";
|
||||||
std::string default_taps_item_type = "float";
|
std::string default_taps_item_type = "float";
|
||||||
std::string default_dump_filename = "../data/input_filter.dat";
|
std::string default_dump_filename = "../data/input_filter.dat";
|
||||||
double default_intermediate_freq = 0;
|
double default_intermediate_freq = 0.0;
|
||||||
double default_sampling_freq = 4000000;
|
double default_sampling_freq = 4000000.0;
|
||||||
int default_number_of_taps = 6;
|
int default_number_of_taps = 6;
|
||||||
unsigned int default_number_of_bands = 2;
|
unsigned int default_number_of_bands = 2;
|
||||||
std::vector<double> default_bands = { 0.0, 0.4, 0.6, 1.0 };
|
std::vector<double> default_bands = { 0.0, 0.4, 0.6, 1.0 };
|
||||||
@ -364,7 +366,11 @@ void FreqXlatingFirFilter::init()
|
|||||||
sampling_freq_ = config_->property(role_ + ".sampling_frequency", default_sampling_freq);
|
sampling_freq_ = config_->property(role_ + ".sampling_frequency", default_sampling_freq);
|
||||||
int number_of_taps = config_->property(role_ + ".number_of_taps", default_number_of_taps);
|
int number_of_taps = config_->property(role_ + ".number_of_taps", default_number_of_taps);
|
||||||
unsigned int number_of_bands = config_->property(role_ + ".number_of_bands", default_number_of_bands);
|
unsigned int number_of_bands = config_->property(role_ + ".number_of_bands", default_number_of_bands);
|
||||||
|
std::string filter_type = config_->property(role_ + ".filter_type", default_filter_type);
|
||||||
|
|
||||||
|
if(filter_type.compare("lowpass") != 0)
|
||||||
|
{
|
||||||
|
std::vector<double> taps_d;
|
||||||
std::vector<double> bands;
|
std::vector<double> bands;
|
||||||
std::vector<double> ampl;
|
std::vector<double> ampl;
|
||||||
std::vector<double> error_w;
|
std::vector<double> error_w;
|
||||||
@ -394,16 +400,20 @@ void FreqXlatingFirFilter::init()
|
|||||||
error_w.push_back(option_value);
|
error_w.push_back(option_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string filter_type = config_->property(role_ + ".filter_type", default_filter_type);
|
|
||||||
int grid_density = config_->property(role_ + ".grid_density", default_grid_density);
|
int grid_density = config_->property(role_ + ".grid_density", default_grid_density);
|
||||||
|
taps_d = gr::filter::pm_remez(number_of_taps - 1, bands, ampl, error_w, filter_type, grid_density);
|
||||||
std::vector<double> taps_d = gr::filter::pm_remez(number_of_taps - 1, bands, ampl,
|
|
||||||
error_w, filter_type, grid_density);
|
|
||||||
|
|
||||||
taps_.reserve(taps_d.size());
|
taps_.reserve(taps_d.size());
|
||||||
for (std::vector<double>::iterator it = taps_d.begin(); it != taps_d.end(); it++)
|
for (std::vector<double>::iterator it = taps_d.begin(); it != taps_d.end(); it++)
|
||||||
{
|
{
|
||||||
taps_.push_back(float(*it));
|
taps_.push_back(static_cast<float>(*it));
|
||||||
//std::cout<<"TAP="<<float(*it)<<std::endl;
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
double default_bw = 2000000.0;
|
||||||
|
double bw_ = config_->property(role_ + ".bw", default_bw);
|
||||||
|
double default_tw = bw_ / 20.0;
|
||||||
|
double tw_ = config_->property(role_ + ".tw", default_tw);
|
||||||
|
taps_ = gr::filter::firdes::low_pass(1.0, sampling_freq_, bw_ / 2.0, tw_);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,10 +28,13 @@
|
|||||||
* -------------------------------------------------------------------------
|
* -------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "pulse_blanking_filter.h"
|
|
||||||
#include <boost/lexical_cast.hpp>
|
#include <boost/lexical_cast.hpp>
|
||||||
|
#include <vector>
|
||||||
|
#include <cmath>
|
||||||
#include <glog/logging.h>
|
#include <glog/logging.h>
|
||||||
|
#include <gnuradio/filter/firdes.h>
|
||||||
#include "configuration_interface.h"
|
#include "configuration_interface.h"
|
||||||
|
#include "pulse_blanking_filter.h"
|
||||||
|
|
||||||
using google::LogMessage;
|
using google::LogMessage;
|
||||||
|
|
||||||
@ -71,7 +74,20 @@ PulseBlankingFilter::PulseBlankingFilter(ConfigurationInterface* configuration,
|
|||||||
item_size = sizeof(gr_complex); //avoids uninitialization
|
item_size = sizeof(gr_complex); //avoids uninitialization
|
||||||
input_size_ = sizeof(gr_complex); //avoids uninitialization
|
input_size_ = sizeof(gr_complex); //avoids uninitialization
|
||||||
}
|
}
|
||||||
|
double default_if = 0.0;
|
||||||
|
double if_aux = config_->property(role_ + ".if", default_if);
|
||||||
|
double if_ = config_->property(role_ + ".IF", if_aux);
|
||||||
|
if (std::abs(if_) > 1.0)
|
||||||
|
{
|
||||||
|
double default_sampling_freq = 4000000.0;
|
||||||
|
double sampling_freq_ = config_->property(role_ + ".sampling_frequency", default_sampling_freq);
|
||||||
|
double default_bw = 2000000.0;
|
||||||
|
double bw_ = config_->property(role_ + ".bw", default_bw);
|
||||||
|
double default_tw = bw_ / 10.0;
|
||||||
|
double tw_ = config_->property(role_ + ".tw", default_tw);
|
||||||
|
const std::vector<float> taps = gr::filter::firdes::low_pass(1.0, sampling_freq_, bw_ , tw_);
|
||||||
|
freq_xlating_ = gr::filter::freq_xlating_fir_filter_ccf::make(1, taps, if_, sampling_freq_);
|
||||||
|
}
|
||||||
if (dump_)
|
if (dump_)
|
||||||
{
|
{
|
||||||
DLOG(INFO) << "Dumping output into file " << dump_filename_;
|
DLOG(INFO) << "Dumping output into file " << dump_filename_;
|
||||||
@ -95,6 +111,10 @@ void PulseBlankingFilter::connect(gr::top_block_sptr top_block)
|
|||||||
{
|
{
|
||||||
top_block->connect(pulse_blanking_cc_, 0, file_sink_, 0);
|
top_block->connect(pulse_blanking_cc_, 0, file_sink_, 0);
|
||||||
}
|
}
|
||||||
|
if (std::abs(config_->property(role_ + ".if", 0.0)) > 1.0)
|
||||||
|
{
|
||||||
|
top_block->connect(freq_xlating_, 0, pulse_blanking_cc_, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
else
|
else
|
||||||
@ -113,6 +133,10 @@ void PulseBlankingFilter::disconnect(gr::top_block_sptr top_block)
|
|||||||
{
|
{
|
||||||
top_block->disconnect(pulse_blanking_cc_, 0, file_sink_, 0);
|
top_block->disconnect(pulse_blanking_cc_, 0, file_sink_, 0);
|
||||||
}
|
}
|
||||||
|
if (std::abs(config_->property(role_ + ".if", 0.0)) > 1.0)
|
||||||
|
{
|
||||||
|
top_block->disconnect(freq_xlating_, 0, pulse_blanking_cc_, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -124,9 +148,16 @@ void PulseBlankingFilter::disconnect(gr::top_block_sptr top_block)
|
|||||||
gr::basic_block_sptr PulseBlankingFilter::get_left_block()
|
gr::basic_block_sptr PulseBlankingFilter::get_left_block()
|
||||||
{
|
{
|
||||||
if (input_item_type_.compare("gr_complex") == 0)
|
if (input_item_type_.compare("gr_complex") == 0)
|
||||||
|
{
|
||||||
|
if (std::abs(config_->property(role_ + ".if", 0.0)) > 1.0)
|
||||||
|
{
|
||||||
|
return freq_xlating_;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
return pulse_blanking_cc_;
|
return pulse_blanking_cc_;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -33,8 +33,8 @@
|
|||||||
#define GNSS_SDR_PULSE_BLANKING_FILTER_H_
|
#define GNSS_SDR_PULSE_BLANKING_FILTER_H_
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
|
||||||
#include <gnuradio/blocks/file_sink.h>
|
#include <gnuradio/blocks/file_sink.h>
|
||||||
|
#include <gnuradio/filter/freq_xlating_fir_filter_ccf.h>
|
||||||
#include "gnss_block_interface.h"
|
#include "gnss_block_interface.h"
|
||||||
#include "pulse_blanking_cc.h"
|
#include "pulse_blanking_cc.h"
|
||||||
|
|
||||||
@ -82,6 +82,7 @@ private:
|
|||||||
unsigned int out_streams_;
|
unsigned int out_streams_;
|
||||||
gr::blocks::file_sink::sptr file_sink_;
|
gr::blocks::file_sink::sptr file_sink_;
|
||||||
pulse_blanking_cc_sptr pulse_blanking_cc_;
|
pulse_blanking_cc_sptr pulse_blanking_cc_;
|
||||||
|
gr::filter::freq_xlating_fir_filter_ccf::sptr freq_xlating_;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_PULSE_BLANKING_FILTER_H_
|
#endif // GNSS_SDR_PULSE_BLANKING_FILTER_H_
|
||||||
|
Loading…
Reference in New Issue
Block a user