diff --git a/src/algorithms/resampler/adapters/direct_resampler_conditioner.cc b/src/algorithms/resampler/adapters/direct_resampler_conditioner.cc index ab8b24f31..bffa67680 100644 --- a/src/algorithms/resampler/adapters/direct_resampler_conditioner.cc +++ b/src/algorithms/resampler/adapters/direct_resampler_conditioner.cc @@ -29,25 +29,30 @@ DirectResamplerConditioner::DirectResamplerConditioner( - const ConfigurationInterface* configuration, const std::string& role, - unsigned int in_stream, unsigned int out_stream) : role_(role), in_stream_(in_stream), out_stream_(out_stream) + const ConfigurationInterface* configuration, + const std::string& role, + unsigned int in_stream, + unsigned int out_stream) + : role_(role), + in_stream_(in_stream), + out_stream_(out_stream), + dump_(configuration->property(role + ".dump", false)) { const std::string default_item_type("short"); const std::string default_dump_file("./data/signal_conditioner.dat"); const double fs_in_deprecated = configuration->property("GNSS-SDR.internal_fs_hz", 2048000.0); const double fs_in = configuration->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); + item_type_ = configuration->property(role + ".item_type", default_item_type); + dump_filename_ = configuration->property(role + ".dump_filename", default_dump_file); sample_freq_in_ = configuration->property(role_ + ".sample_freq_in", 4000000.0); sample_freq_out_ = configuration->property(role_ + ".sample_freq_out", fs_in); + if (std::fabs(fs_in - sample_freq_out_) > std::numeric_limits::epsilon()) { std::string aux_warn = "CONFIGURATION WARNING: Parameters GNSS-SDR.internal_fs_sps and " + role_ + ".sample_freq_out are not set to the same value!"; LOG(WARNING) << aux_warn; std::cout << aux_warn << '\n'; } - item_type_ = configuration->property(role + ".item_type", default_item_type); - dump_ = configuration->property(role + ".dump", false); - DLOG(INFO) << "dump_ is " << dump_; - dump_filename_ = configuration->property(role + ".dump_filename", default_dump_file); if (item_type_ == "gr_complex") { diff --git a/src/algorithms/resampler/adapters/mmse_resampler_conditioner.cc b/src/algorithms/resampler/adapters/mmse_resampler_conditioner.cc index c40f4450c..7ee86662f 100644 --- a/src/algorithms/resampler/adapters/mmse_resampler_conditioner.cc +++ b/src/algorithms/resampler/adapters/mmse_resampler_conditioner.cc @@ -24,25 +24,30 @@ #include MmseResamplerConditioner::MmseResamplerConditioner( - const ConfigurationInterface* configuration, const std::string& role, - unsigned int in_stream, unsigned int out_stream) : role_(role), in_stream_(in_stream), out_stream_(out_stream) + const ConfigurationInterface* configuration, + const std::string& role, + unsigned int in_stream, + unsigned int out_stream) + : role_(role), + in_stream_(in_stream), + out_stream_(out_stream), + dump_(configuration->property(role + ".dump", false)) { const std::string default_item_type("gr_complex"); const std::string default_dump_file("./data/signal_conditioner.dat"); const double fs_in_deprecated = configuration->property("GNSS-SDR.internal_fs_hz", 2048000.0); const double fs_in = configuration->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated); + item_type_ = configuration->property(role + ".item_type", default_item_type); + dump_filename_ = configuration->property(role + ".dump_filename", default_dump_file); sample_freq_in_ = configuration->property(role_ + ".sample_freq_in", 4000000.0); sample_freq_out_ = configuration->property(role_ + ".sample_freq_out", fs_in); + if (std::fabs(fs_in - sample_freq_out_) > std::numeric_limits::epsilon()) { std::string aux_warn = "CONFIGURATION WARNING: Parameters GNSS-SDR.internal_fs_sps and " + role_ + ".sample_freq_out are not set to the same value!"; LOG(WARNING) << aux_warn; std::cout << aux_warn << '\n'; } - item_type_ = configuration->property(role + ".item_type", default_item_type); - dump_ = configuration->property(role + ".dump", false); - DLOG(INFO) << "dump_ is " << dump_; - dump_filename_ = configuration->property(role + ".dump_filename", default_dump_file); if (item_type_ == "gr_complex") { diff --git a/src/algorithms/resampler/gnuradio_blocks/CMakeLists.txt b/src/algorithms/resampler/gnuradio_blocks/CMakeLists.txt index 9a7ea4e5d..cd30cb41d 100644 --- a/src/algorithms/resampler/gnuradio_blocks/CMakeLists.txt +++ b/src/algorithms/resampler/gnuradio_blocks/CMakeLists.txt @@ -50,6 +50,11 @@ if(GNURADIO_USES_STD_POINTERS) ) endif() +if(GNURADIO_IS_38_OR_GREATER) + target_compile_definitions(resampler_gr_blocks + PUBLIC -DGR_GREATER_38=1) +endif() + target_include_directories(resampler_gr_blocks PUBLIC ${GNSSSDR_SOURCE_DIR}/src/core/interfaces diff --git a/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_cb.cc b/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_cb.cc index a243cc957..ba08c7817 100644 --- a/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_cb.cc +++ b/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_cb.cc @@ -34,12 +34,14 @@ direct_resampler_conditioner_cb_sptr direct_resampler_make_conditioner_cb( direct_resampler_conditioner_cb::direct_resampler_conditioner_cb( double sample_freq_in, - double sample_freq_out) : gr::block("direct_resampler_make_conditioner_cb", gr::io_signature::make(1, 1, sizeof(lv_8sc_t)), gr::io_signature::make(1, 1, sizeof(lv_8sc_t))), - d_sample_freq_in(sample_freq_in), - d_sample_freq_out( - sample_freq_out), - d_phase(0), - d_lphase(0) + double sample_freq_out) + : gr::block("direct_resampler_make_conditioner_cb", + gr::io_signature::make(1, 1, sizeof(lv_8sc_t)), + gr::io_signature::make(1, 1, sizeof(lv_8sc_t))), + d_sample_freq_in(sample_freq_in), + d_sample_freq_out(sample_freq_out), + d_phase(0), + d_lphase(0) { const double two_32 = 4294967296.0; // Computes the phase step multiplying the resampling ratio by 2^32 = 4294967296 @@ -51,9 +53,11 @@ direct_resampler_conditioner_cb::direct_resampler_conditioner_cb( { d_phase_step = static_cast(floor(two_32 * sample_freq_in / sample_freq_out)); } - - set_relative_rate(1.0 * sample_freq_out / sample_freq_in); - set_output_multiple(1); +#ifdef GR_GREATER_38 + this->set_relative_rate(static_cast(sample_freq_out), static_cast(sample_freq_in)); +#else + this->set_relative_rate(sample_freq_out / sample_freq_in); +#endif } diff --git a/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_cc.cc b/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_cc.cc index 3a063f81c..f6f46b711 100644 --- a/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_cc.cc +++ b/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_cc.cc @@ -33,11 +33,14 @@ direct_resampler_conditioner_cc_sptr direct_resampler_make_conditioner_cc( direct_resampler_conditioner_cc::direct_resampler_conditioner_cc( double sample_freq_in, - double sample_freq_out) : gr::block("direct_resampler_conditioner_cc", gr::io_signature::make(1, 1, sizeof(gr_complex)), gr::io_signature::make(1, 1, sizeof(gr_complex))), - d_sample_freq_in(sample_freq_in), - d_sample_freq_out(sample_freq_out), - d_phase(0), - d_lphase(0) + double sample_freq_out) + : gr::block("direct_resampler_conditioner_cc", + gr::io_signature::make(1, 1, sizeof(gr_complex)), + gr::io_signature::make(1, 1, sizeof(gr_complex))), + d_sample_freq_in(sample_freq_in), + d_sample_freq_out(sample_freq_out), + d_phase(0), + d_lphase(0) { // Computes the phase step multiplying the resampling ratio by 2^32 = 4294967296 const double two_32 = 4294967296.0; @@ -49,8 +52,11 @@ direct_resampler_conditioner_cc::direct_resampler_conditioner_cc( { d_phase_step = static_cast(floor(two_32 * sample_freq_in / sample_freq_out)); } - set_relative_rate(1.0 * sample_freq_out / sample_freq_in); - set_output_multiple(1); +#ifdef GR_GREATER_38 + this->set_relative_rate(static_cast(sample_freq_out), static_cast(sample_freq_in)); +#else + this->set_relative_rate(sample_freq_out / sample_freq_in); +#endif } diff --git a/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_cs.cc b/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_cs.cc index a8b83e6d4..365728b01 100644 --- a/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_cs.cc +++ b/src/algorithms/resampler/gnuradio_blocks/direct_resampler_conditioner_cs.cc @@ -34,13 +34,14 @@ direct_resampler_conditioner_cs_sptr direct_resampler_make_conditioner_cs( direct_resampler_conditioner_cs::direct_resampler_conditioner_cs( double sample_freq_in, - double sample_freq_out) : gr::block("direct_resampler_make_conditioner_cs", - gr::io_signature::make(1, 1, sizeof(lv_16sc_t)), - gr::io_signature::make(1, 1, sizeof(lv_16sc_t))), - d_sample_freq_in(sample_freq_in), - d_sample_freq_out(sample_freq_out), - d_phase(0), - d_lphase(0) + double sample_freq_out) + : gr::block("direct_resampler_make_conditioner_cs", + gr::io_signature::make(1, 1, sizeof(lv_16sc_t)), + gr::io_signature::make(1, 1, sizeof(lv_16sc_t))), + d_sample_freq_in(sample_freq_in), + d_sample_freq_out(sample_freq_out), + d_phase(0), + d_lphase(0) { const double two_32 = 4294967296.0; // Computes the phase step multiplying the resampling ratio by 2^32 = 4294967296 @@ -53,8 +54,11 @@ direct_resampler_conditioner_cs::direct_resampler_conditioner_cs( d_phase_step = static_cast(floor(two_32 * sample_freq_in / sample_freq_out)); } - set_relative_rate(1.0 * sample_freq_out / sample_freq_in); - set_output_multiple(1); +#ifdef GR_GREATER_38 + this->set_relative_rate(static_cast(sample_freq_out), static_cast(sample_freq_in)); +#else + this->set_relative_rate(sample_freq_out / sample_freq_in); +#endif }