diff options
-rw-r--r-- | gr-uhd/include/gnuradio/uhd/usrp_block.h | 35 | ||||
-rw-r--r-- | gr-uhd/lib/usrp_block_impl.cc | 16 | ||||
-rw-r--r-- | gr-uhd/lib/usrp_block_impl.h | 4 | ||||
-rw-r--r-- | gr-uhd/lib/usrp_sink_impl.cc | 38 | ||||
-rw-r--r-- | gr-uhd/lib/usrp_sink_impl.h | 6 | ||||
-rw-r--r-- | gr-uhd/lib/usrp_source_impl.cc | 38 | ||||
-rw-r--r-- | gr-uhd/lib/usrp_source_impl.h | 6 | ||||
-rw-r--r-- | gr-uhd/python/uhd/bindings/usrp_block_python.cc | 4 |
8 files changed, 108 insertions, 39 deletions
diff --git a/gr-uhd/include/gnuradio/uhd/usrp_block.h b/gr-uhd/include/gnuradio/uhd/usrp_block.h index 98d811ce6c..73001b891c 100644 --- a/gr-uhd/include/gnuradio/uhd/usrp_block.h +++ b/gr-uhd/include/gnuradio/uhd/usrp_block.h @@ -610,35 +610,34 @@ public: const std::string& attr, const size_t mboard = 0) = 0; - /*! - * Enumerate the available filters in the signal path. - * \param search_mask - * \parblock - * Select only certain filter names by specifying this search mask. + /*! Enumerate the available filters in the signal path. + * + * \param chan Channel index * - * E.g. if search mask is set to "rx_frontends/A" only filter names including - * that string will be returned. \endparblock \return a vector of strings - * representing the selected filter names. + * \return a vector of strings representing the selected filter names. */ - virtual std::vector<std::string> - get_filter_names(const std::string& search_mask = "") = 0; + virtual std::vector<std::string> get_filter_names(const size_t chan = 0) = 0; - /*! - * Write back a filter obtained by get_filter() to the signal path. + /*! Write back a filter obtained by get_filter() to the signal path. + * * This filter can be a modified version of the originally returned one. * The information about Rx or Tx is contained in the path parameter. * \param path the name of the filter as returned from get_filter_names(). * \param filter the filter_info_base::sptr of the filter object to be written + * \param chan Channel index */ virtual void set_filter(const std::string& path, - ::uhd::filter_info_base::sptr filter) = 0; + ::uhd::filter_info_base::sptr filter, + const size_t chan = 0) = 0; - /*! - * Return the filter object for the given name. - * @param path the name of the filter as returned from get_filter_names() - * @return the filter object + /*! Return the filter object for the given name. + * + * \param path the name of the filter as returned from get_filter_names() + * \param chan Channel index + * \return the filter object */ - virtual ::uhd::filter_info_base::sptr get_filter(const std::string& path) = 0; + virtual ::uhd::filter_info_base::sptr get_filter(const std::string& path, + const size_t chan = 0) = 0; /*! * Returns identifying information about this USRP's configuration. diff --git a/gr-uhd/lib/usrp_block_impl.cc b/gr-uhd/lib/usrp_block_impl.cc index aa1bc6fe00..6586a757b6 100644 --- a/gr-uhd/lib/usrp_block_impl.cc +++ b/gr-uhd/lib/usrp_block_impl.cc @@ -381,22 +381,6 @@ uint32_t usrp_block_impl::get_gpio_attr(const std::string& bank, throw std::runtime_error("not implemented in this version"); } -std::vector<std::string> usrp_block_impl::get_filter_names(const std::string& search_mask) -{ - return _dev->get_filter_names(search_mask); -} - -::uhd::filter_info_base::sptr usrp_block_impl::get_filter(const std::string& path) -{ - return _dev->get_filter(path); -} - -void usrp_block_impl::set_filter(const std::string& path, - ::uhd::filter_info_base::sptr filter) -{ - _dev->set_filter(path, filter); -} - void usrp_block_impl::set_time_now(const ::uhd::time_spec_t& time_spec, size_t mboard) { return _dev->set_time_now(time_spec, mboard); diff --git a/gr-uhd/lib/usrp_block_impl.h b/gr-uhd/lib/usrp_block_impl.h index 75d14d778f..664ef4c417 100644 --- a/gr-uhd/lib/usrp_block_impl.h +++ b/gr-uhd/lib/usrp_block_impl.h @@ -54,8 +54,6 @@ public: const std::string& attr, const size_t mboard = 0) override; size_t get_num_mboards() override; - std::vector<std::string> get_filter_names(const std::string& search_mask) override; - ::uhd::filter_info_base::sptr get_filter(const std::string& path) override; // Setters void set_time_source(const std::string& source, const size_t mboard) override; @@ -73,8 +71,6 @@ public: const uint32_t value, const uint32_t mask, const size_t mboard) override; - void set_filter(const std::string& path, - ::uhd::filter_info_base::sptr filter) override; // RPC void setup_rpc() override; diff --git a/gr-uhd/lib/usrp_sink_impl.cc b/gr-uhd/lib/usrp_sink_impl.cc index edcd0045bc..951d926469 100644 --- a/gr-uhd/lib/usrp_sink_impl.cc +++ b/gr-uhd/lib/usrp_sink_impl.cc @@ -394,6 +394,44 @@ std::vector<std::string> usrp_sink_impl::get_sensor_names(size_t chan) return _dev->get_tx_dboard_iface(chan); } +#if UHD_VERSION >= 4000000 +std::vector<std::string> usrp_sink_impl::get_filter_names(const size_t chan) +{ + return _dev->get_tx_filter_names(chan); +} + +::uhd::filter_info_base::sptr usrp_sink_impl::get_filter(const std::string& path, + const size_t chan) +{ + return _dev->get_tx_filter(path, chan); +} + +void usrp_sink_impl::set_filter(const std::string& path, + ::uhd::filter_info_base::sptr filter, + const size_t chan) +{ + _dev->set_tx_filter(path, filter, chan); +} +#else +std::vector<std::string> usrp_sink_impl::get_filter_names(const size_t /*chan*/) +{ + return _dev->get_filter_names("tx"); +} + +::uhd::filter_info_base::sptr usrp_sink_impl::get_filter(const std::string& path, + const size_t /*chan*/) +{ + return _dev->get_filter(path); +} + +void usrp_sink_impl::set_filter(const std::string& path, + ::uhd::filter_info_base::sptr filter, + const size_t /*chan*/) +{ + _dev->set_filter(path, filter); +} +#endif + void usrp_sink_impl::set_stream_args(const ::uhd::stream_args_t& stream_args) { _update_stream_args(stream_args); diff --git a/gr-uhd/lib/usrp_sink_impl.h b/gr-uhd/lib/usrp_sink_impl.h index 7a8dce0ee6..18507ffe89 100644 --- a/gr-uhd/lib/usrp_sink_impl.h +++ b/gr-uhd/lib/usrp_sink_impl.h @@ -81,6 +81,9 @@ public: bool get_lo_export_enabled(const std::string& name, size_t chan) override; double get_lo_freq(const std::string& name, size_t chan) override; ::uhd::freq_range_t get_lo_freq_range(const std::string& name, size_t chan) override; + std::vector<std::string> get_filter_names(const size_t chan) override; + ::uhd::filter_info_base::sptr get_filter(const std::string& path, + const size_t chan) override; void set_subdev_spec(const std::string& spec, size_t mboard) override; std::string get_subdev_spec(size_t mboard) override; @@ -106,6 +109,9 @@ public: const std::string& name = ALL_LOS, size_t chan = 0) override; double set_lo_freq(double freq, const std::string& name, size_t chan) override; + void set_filter(const std::string& path, + ::uhd::filter_info_base::sptr filter, + const size_t chan) override; bool start(void) override; bool stop(void) override; diff --git a/gr-uhd/lib/usrp_source_impl.cc b/gr-uhd/lib/usrp_source_impl.cc index b68741d5a5..346a5bca89 100644 --- a/gr-uhd/lib/usrp_source_impl.cc +++ b/gr-uhd/lib/usrp_source_impl.cc @@ -430,6 +430,44 @@ std::vector<std::string> usrp_source_impl::get_sensor_names(size_t chan) return _dev->get_rx_dboard_iface(chan); } +#if UHD_VERSION >= 4000000 +std::vector<std::string> usrp_source_impl::get_filter_names(const size_t chan) +{ + return _dev->get_rx_filter_names(chan); +} + +::uhd::filter_info_base::sptr usrp_source_impl::get_filter(const std::string& path, + const size_t chan) +{ + return _dev->get_rx_filter(path, chan); +} + +void usrp_source_impl::set_filter(const std::string& path, + ::uhd::filter_info_base::sptr filter, + const size_t chan) +{ + _dev->set_rx_filter(path, filter, chan); +} +#else +std::vector<std::string> usrp_source_impl::get_filter_names(const size_t /*chan*/) +{ + return _dev->get_filter_names("rx"); +} + +::uhd::filter_info_base::sptr usrp_source_impl::get_filter(const std::string& path, + const size_t /*chan*/) +{ + return _dev->get_filter(path); +} + +void usrp_source_impl::set_filter(const std::string& path, + ::uhd::filter_info_base::sptr filter, + const size_t /*chan*/) +{ + _dev->set_filter(path, filter); +} +#endif + void usrp_source_impl::set_stream_args(const ::uhd::stream_args_t& stream_args) { _update_stream_args(stream_args); diff --git a/gr-uhd/lib/usrp_source_impl.h b/gr-uhd/lib/usrp_source_impl.h index d59d42e817..53e3387b71 100644 --- a/gr-uhd/lib/usrp_source_impl.h +++ b/gr-uhd/lib/usrp_source_impl.h @@ -71,6 +71,9 @@ public: bool get_lo_export_enabled(const std::string& name, size_t chan) override; double get_lo_freq(const std::string& name, size_t chan) override; ::uhd::freq_range_t get_lo_freq_range(const std::string& name, size_t chan) override; + std::vector<std::string> get_filter_names(const size_t chan) override; + ::uhd::filter_info_base::sptr get_filter(const std::string& path, + const size_t chan) override; // Set Commands void set_subdev_spec(const std::string& spec, size_t mboard) override; @@ -100,6 +103,9 @@ public: const std::string& name = ALL_LOS, size_t chan = 0) override; double set_lo_freq(double freq, const std::string& name, size_t chan) override; + void set_filter(const std::string& path, + ::uhd::filter_info_base::sptr filter, + const size_t chan) override; void issue_stream_cmd(const ::uhd::stream_cmd_t& cmd) override; void set_recv_timeout(const double timeout, const bool one_packet) override; diff --git a/gr-uhd/python/uhd/bindings/usrp_block_python.cc b/gr-uhd/python/uhd/bindings/usrp_block_python.cc index 1207d93bb6..18948175b8 100644 --- a/gr-uhd/python/uhd/bindings/usrp_block_python.cc +++ b/gr-uhd/python/uhd/bindings/usrp_block_python.cc @@ -399,7 +399,7 @@ void bind_usrp_block(py::module& m) .def("get_filter_names", &usrp_block::get_filter_names, - py::arg("search_mask") = "", + py::arg("chan") = 0, D(usrp_block, get_filter_names)) @@ -407,12 +407,14 @@ void bind_usrp_block(py::module& m) &usrp_block::set_filter, py::arg("path"), py::arg("filter"), + py::arg("chan") = 0, D(usrp_block, set_filter)) .def("get_filter", &usrp_block::get_filter, py::arg("path"), + py::arg("chan") = 0, D(usrp_block, get_filter)) .def( |