From 470e11a1f8a2f8f4b5cef39f7bf77d83c71966d8 Mon Sep 17 00:00:00 2001 From: Martin Braun Date: Tue, 9 Jun 2020 16:30:26 +0200 Subject: filter API: Fix Python bindings and multi_usrp calls This fixes the following issues: - The Python bindings did not declare parents for the various filter object classes properly. This meant that set_?x_filter wouldn't work, because the user would pass a specific type (e.g., analog_filter_lp), but the class would not recognize it as a filter_info_base. - In multi_usrp.cpp, filter names are also property tree paths to make them unique. However, the setters and getters for filters would then prepend the FE path again, thus breaking those calls. --- host/lib/types/filters_python.hpp | 5 +++-- host/lib/usrp/multi_usrp.cpp | 6 ++---- 2 files changed, 5 insertions(+), 6 deletions(-) (limited to 'host/lib') diff --git a/host/lib/types/filters_python.hpp b/host/lib/types/filters_python.hpp index 76b2c3a49..7210faa21 100644 --- a/host/lib/types/filters_python.hpp +++ b/host/lib/types/filters_python.hpp @@ -31,13 +31,14 @@ void export_filters(py::module& m) .def("get_type", &filter_info_base::get_type) .def("__str__", &filter_info_base::to_pp_string); - py::class_(m, "analog_filter_base") + py::class_( + m, "analog_filter_base") .def(py::init()) // Methods .def("get_analog_type", &analog_filter_base::get_analog_type); - py::class_>(m, "analog_filter_lp") + py::class_>(m, "analog_filter_lp") .def( py::init()) diff --git a/host/lib/usrp/multi_usrp.cpp b/host/lib/usrp/multi_usrp.cpp index c41b31083..04d054b60 100644 --- a/host/lib/usrp/multi_usrp.cpp +++ b/host/lib/usrp/multi_usrp.cpp @@ -1905,8 +1905,7 @@ public: throw uhd::runtime_error("Attempting to get non-existing filter: " + name); } - return _tree->access(rx_rf_fe_root(chan) / name / "value") - .get(); + return _tree->access(fs_path(name) / "value").get(); } void set_rx_filter( @@ -1919,8 +1918,7 @@ public: throw uhd::runtime_error("Attempting to set non-existing filter: " + name); } - _tree->access(rx_rf_fe_root(chan) / name / "value") - .set(filter); + _tree->access(fs_path(name) / "value").set(filter); } std::vector get_tx_filter_names(const size_t chan) -- cgit v1.2.3