diff --git a/cmake/Modules/FindGNURADIO.cmake b/cmake/Modules/FindGNURADIO.cmake index 8930eee86..ba5d1b337 100644 --- a/cmake/Modules/FindGNURADIO.cmake +++ b/cmake/Modules/FindGNURADIO.cmake @@ -369,6 +369,11 @@ if(GNURADIO_VERSION VERSION_GREATER 3.8.99) INTERFACE_LINK_LIBRARIES "${GNURADIO_LIBRARY}" ) endif() + + # check templatized API + if(NOT EXISTS "${GNURADIO_IIO_INCLUDE_DIRS}/gnuradio/iio/pluto_source.h") + set(GR_IIO_TEMPLATIZED_API TRUE) + endif() endif() endif() diff --git a/src/algorithms/signal_source/adapters/CMakeLists.txt b/src/algorithms/signal_source/adapters/CMakeLists.txt index 80071aa00..113e7365e 100644 --- a/src/algorithms/signal_source/adapters/CMakeLists.txt +++ b/src/algorithms/signal_source/adapters/CMakeLists.txt @@ -241,6 +241,11 @@ if(ENABLE_PLUTOSDR OR ENABLE_FMCOMMS2) Gnuradio::analog ) endif() + if(GR_IIO_TEMPLATIZED_API) + target_compile_definitions(signal_source_adapters + PUBLIC -DGR_IIO_TEMPLATIZED_API=1 + ) + endif() endif() if(ENABLE_CLANG_TIDY) diff --git a/src/algorithms/signal_source/adapters/fmcomms2_signal_source.cc b/src/algorithms/signal_source/adapters/fmcomms2_signal_source.cc index 71b23ce48..659108da2 100644 --- a/src/algorithms/signal_source/adapters/fmcomms2_signal_source.cc +++ b/src/algorithms/signal_source/adapters/fmcomms2_signal_source.cc @@ -185,7 +185,11 @@ Fmcomms2SignalSource::Fmcomms2SignalSource(const ConfigurationInterface *configu { #if GNURADIO_API_IIO std::vector enable_channels{rx1_en_, rx2_en_}; +#if GR_IIO_TEMPLATIZED_API + fmcomms2_source_f32c_ = gr::iio::fmcomms2_source::make(uri_, enable_channels, buffer_size_); +#else fmcomms2_source_f32c_ = gr::iio::fmcomms2_source::make(uri_, enable_channels, buffer_size_); +#endif fmcomms2_source_f32c_->set_frequency(freq_); fmcomms2_source_f32c_->set_samplerate(sample_rate_); if (rx1_en_) @@ -261,7 +265,11 @@ Fmcomms2SignalSource::Fmcomms2SignalSource(const ConfigurationInterface *configu { #if GNURADIO_API_IIO std::vector enable_channels{rx1_en_, rx2_en_}; +#if GR_IIO_TEMPLATIZED_API + fmcomms2_source_f32c_ = gr::iio::fmcomms2_source::make(uri_, enable_channels, buffer_size_); +#else fmcomms2_source_f32c_ = gr::iio::fmcomms2_source::make(uri_, enable_channels, buffer_size_); +#endif fmcomms2_source_f32c_->set_frequency(freq_); fmcomms2_source_f32c_->set_samplerate(sample_rate_); fmcomms2_source_f32c_->set_gain_mode(0, gain_mode_rx1_); diff --git a/src/algorithms/signal_source/adapters/fmcomms2_signal_source.h b/src/algorithms/signal_source/adapters/fmcomms2_signal_source.h index 66250694e..5bdd6993d 100644 --- a/src/algorithms/signal_source/adapters/fmcomms2_signal_source.h +++ b/src/algorithms/signal_source/adapters/fmcomms2_signal_source.h @@ -62,7 +62,11 @@ public: private: #if GNURADIO_API_IIO +#if GR_IIO_TEMPLATIZED_API + gr::iio::fmcomms2_source::sptr fmcomms2_source_f32c_; +#else gr::iio::fmcomms2_source::sptr fmcomms2_source_f32c_; +#endif #else gr::iio::fmcomms2_source_f32c::sptr fmcomms2_source_f32c_; #endif diff --git a/src/algorithms/signal_source/adapters/plutosdr_signal_source.cc b/src/algorithms/signal_source/adapters/plutosdr_signal_source.cc index 46f2ba5ab..f16b7e901 100644 --- a/src/algorithms/signal_source/adapters/plutosdr_signal_source.cc +++ b/src/algorithms/signal_source/adapters/plutosdr_signal_source.cc @@ -126,11 +126,17 @@ PlutosdrSignalSource::PlutosdrSignalSource(const ConfigurationInterface* configu std::cout << "item type: " << item_type_ << '\n'; #if GNURADIO_API_IIO +#if GR_IIO_TEMPLATIZED_API + plutosdr_source_ = gr::iio::fmcomms2_source::make(uri_, {true}, buffer_size_); + plutosdr_source_->set_gain_mode(0, gain_mode_); + plutosdr_source_->set_gain(0, rf_gain_); +#else plutosdr_source_ = gr::iio::pluto_source::make(uri_, buffer_size_); - plutosdr_source_->set_frequency(freq_); - plutosdr_source_->set_samplerate(sample_rate_); plutosdr_source_->set_gain_mode(gain_mode_); plutosdr_source_->set_gain(rf_gain_); +#endif + plutosdr_source_->set_frequency(freq_); + plutosdr_source_->set_samplerate(sample_rate_); plutosdr_source_->set_quadrature(quadrature_); plutosdr_source_->set_rfdc(rf_dc_); plutosdr_source_->set_bbdc(bb_dc_); diff --git a/src/algorithms/signal_source/adapters/plutosdr_signal_source.h b/src/algorithms/signal_source/adapters/plutosdr_signal_source.h index af4656171..dac885ac6 100644 --- a/src/algorithms/signal_source/adapters/plutosdr_signal_source.h +++ b/src/algorithms/signal_source/adapters/plutosdr_signal_source.h @@ -22,7 +22,11 @@ #include "signal_source_base.h" #include #if GRIIO_INCLUDE_HAS_GNURADIO +#if GR_IIO_TEMPLATIZED_API +#include +#else #include +#endif #else #include #endif @@ -62,7 +66,11 @@ public: gr::basic_block_sptr get_right_block() override; private: - gr::iio::pluto_source::sptr plutosdr_source_; + #if GR_IIO_TEMPLATIZED_API + gr::iio::fmcomms2_source::sptr plutosdr_source_; + #else + gr::iio::pluto_source::sptr plutosdr_source_; + #endif gnss_shared_ptr valve_; gr::blocks::file_sink::sptr file_sink_;