diff options
Diffstat (limited to 'host/lib/usrp')
-rw-r--r-- | host/lib/usrp/multi_usrp.cpp | 21 | ||||
-rw-r--r-- | host/lib/usrp/multi_usrp_python.hpp | 2 | ||||
-rw-r--r-- | host/lib/usrp/multi_usrp_rfnoc.cpp | 12 |
3 files changed, 35 insertions, 0 deletions
diff --git a/host/lib/usrp/multi_usrp.cpp b/host/lib/usrp/multi_usrp.cpp index 03a2a169c..e3424d748 100644 --- a/host/lib/usrp/multi_usrp.cpp +++ b/host/lib/usrp/multi_usrp.cpp @@ -1730,6 +1730,17 @@ public: return _tree->access<double>(power_ref_path).get(); } + meta_range_t get_rx_power_range(const size_t chan) + { + const auto power_ref_path = rx_rf_fe_root(chan) / "ref_power/range"; + if (!_tree->exists(power_ref_path)) { + throw uhd::not_implemented_error( + "get_rx_power_range() not available for this device and channel"); + } + return _tree->access<meta_range_t>(power_ref_path).get(); + + } + void set_rx_antenna(const std::string& ant, size_t chan) { _tree->access<std::string>(rx_rf_fe_root(chan) / "antenna" / "value").set(ant); @@ -2230,6 +2241,16 @@ public: return _tree->access<double>(power_ref_path).get(); } + meta_range_t get_tx_power_range(const size_t chan) + { + const auto power_ref_path = tx_rf_fe_root(chan) / "ref_power/range"; + if (!_tree->exists(power_ref_path)) { + throw uhd::not_implemented_error( + "get_tx_power_range() not available for this device and channel"); + } + return _tree->access<meta_range_t>(power_ref_path).get(); + } + void set_tx_antenna(const std::string& ant, size_t chan) { _tree->access<std::string>(tx_rf_fe_root(chan) / "antenna" / "value").set(ant); diff --git a/host/lib/usrp/multi_usrp_python.hpp b/host/lib/usrp/multi_usrp_python.hpp index 6c2fd2ccf..cec901315 100644 --- a/host/lib/usrp/multi_usrp_python.hpp +++ b/host/lib/usrp/multi_usrp_python.hpp @@ -130,6 +130,7 @@ void export_multi_usrp(py::module& m) .def("has_rx_power_reference" , &multi_usrp::has_rx_power_reference, py::arg("chan") = 0) .def("set_rx_power_reference" , &multi_usrp::set_rx_power_reference, py::arg("power_dbm"), py::arg("chan") = 0) .def("get_rx_power_reference" , &multi_usrp::get_rx_power_reference, py::arg("chan") = 0) + .def("get_rx_power_range" , &multi_usrp::get_rx_power_range, py::arg("chan") = 0) // TX methods .def("set_tx_subdev_spec" , &multi_usrp::set_tx_subdev_spec, py::arg("spec"), py::arg("mboard") = ALL_MBOARDS) @@ -171,6 +172,7 @@ void export_multi_usrp(py::module& m) .def("has_tx_power_reference" , &multi_usrp::has_tx_power_reference, py::arg("chan") = 0) .def("set_tx_power_reference" , &multi_usrp::set_tx_power_reference, py::arg("power_dbm"), py::arg("chan") = 0) .def("get_tx_power_reference" , &multi_usrp::get_tx_power_reference, py::arg("chan") = 0) + .def("get_tx_power_range" , &multi_usrp::get_tx_power_range, py::arg("chan") = 0) // GPIO methods .def("get_gpio_banks" , &multi_usrp::get_gpio_banks) diff --git a/host/lib/usrp/multi_usrp_rfnoc.cpp b/host/lib/usrp/multi_usrp_rfnoc.cpp index 26932ef30..659d879e8 100644 --- a/host/lib/usrp/multi_usrp_rfnoc.cpp +++ b/host/lib/usrp/multi_usrp_rfnoc.cpp @@ -1484,6 +1484,12 @@ public: return rx_chain.radio->get_rx_power_reference(rx_chain.block_chan); } + meta_range_t get_rx_power_range(const size_t chan) + { + auto& rx_chain = _get_rx_chan(chan); + return rx_chain.radio->get_rx_power_range(rx_chain.block_chan); + } + void set_rx_antenna(const std::string& ant, size_t chan = 0) { MUX_RX_API_CALL(set_rx_antenna, ant); @@ -1955,6 +1961,12 @@ public: return tx_chain.radio->get_tx_power_reference(tx_chain.block_chan); } + meta_range_t get_tx_power_range(const size_t chan) + { + auto& tx_chain = _get_tx_chan(chan); + return tx_chain.radio->get_tx_power_range(tx_chain.block_chan); + } + void set_tx_antenna(const std::string& ant, size_t chan = 0) { MUX_TX_API_CALL(set_tx_antenna, ant); |