From 18460e34787772d606846c3b09190b80ae1e621d Mon Sep 17 00:00:00 2001 From: Aaron Rossetto Date: Mon, 1 Jun 2020 15:21:43 -0500 Subject: python: Add radio RFNoC block controller bindings --- host/lib/rfnoc/radio_control_impl.cpp | 1 - host/lib/rfnoc/radio_control_python.hpp | 171 ++++++++++++++++++++++++++++++++ 2 files changed, 171 insertions(+), 1 deletion(-) create mode 100644 host/lib/rfnoc/radio_control_python.hpp (limited to 'host/lib') diff --git a/host/lib/rfnoc/radio_control_impl.cpp b/host/lib/rfnoc/radio_control_impl.cpp index b3da7ec13..c6eac11f8 100644 --- a/host/lib/rfnoc/radio_control_impl.cpp +++ b/host/lib/rfnoc/radio_control_impl.cpp @@ -24,7 +24,6 @@ const std::string DEFAULT_GAIN_PROFILE("default"); const std::string radio_control::ALL_LOS = "all"; const std::string radio_control::ALL_GAINS = ""; -const size_t radio_control::ALL_CHANS = size_t(~0); const uint16_t radio_control_impl::MAJOR_COMPAT = 0; const uint16_t radio_control_impl::MINOR_COMPAT = 0; diff --git a/host/lib/rfnoc/radio_control_python.hpp b/host/lib/rfnoc/radio_control_python.hpp new file mode 100644 index 000000000..f16f0b6e9 --- /dev/null +++ b/host/lib/rfnoc/radio_control_python.hpp @@ -0,0 +1,171 @@ +// +// Copyright 2020 Ettus Research, a National Instruments Brand +// +// SPDX-License-Identifier: GPL-3.0-or-later +// + +#pragma once + +#include +#include "block_controller_factory_python.hpp" + +using namespace uhd::rfnoc; + +void export_radio_control(py::module& m) +{ + py::class_(m, "radio_control") + .def(py::init(&block_controller_factory::make_from)) + .def("set_rate", &radio_control::set_rate) + .def("get_rate", &radio_control::get_rate) + .def("get_rate_range", &radio_control::get_rate_range) + .def("get_tx_antenna", &radio_control::get_tx_antenna) + .def("get_tx_antennas", &radio_control::get_tx_antennas) + .def("set_tx_antenna", &radio_control::set_tx_antenna) + .def("get_rx_antenna", &radio_control::get_rx_antenna) + .def("get_rx_antennas", &radio_control::get_rx_antennas) + .def("set_rx_antenna", &radio_control::set_rx_antenna) + .def("get_tx_frequency", &radio_control::get_tx_frequency) + .def("set_tx_frequency", &radio_control::set_tx_frequency) + .def("set_tx_tune_args", &radio_control::set_tx_tune_args) + .def("get_tx_frequency_range", &radio_control::get_tx_frequency_range) + .def("get_rx_frequency", &radio_control::get_rx_frequency) + .def("set_rx_frequency", &radio_control::set_rx_frequency) + .def("set_rx_tune_args", &radio_control::set_rx_tune_args) + .def("get_rx_frequency_range", &radio_control::get_rx_frequency_range) + .def("get_tx_gain_names", &radio_control::get_tx_gain_names) + .def("get_tx_gain_range", + py::overload_cast( + &radio_control::get_tx_gain_range, py::const_), + py::arg("chan")) + .def("get_tx_gain_range", + py::overload_cast( + &radio_control::get_tx_gain_range, py::const_), + py::arg("name"), + py::arg("chan")) + .def("get_tx_gain", + py::overload_cast(&radio_control::get_tx_gain), + py::arg("chan")) + .def("get_tx_gain", + py::overload_cast( + &radio_control::get_tx_gain), + py::arg("name"), + py::arg("chan")) + .def("set_tx_gain", + py::overload_cast(&radio_control::set_tx_gain), + py::arg("gain"), + py::arg("chan")) + .def("set_tx_gain", + py::overload_cast( + &radio_control::set_tx_gain), + py::arg("gain"), + py::arg("name"), + py::arg("chan")) + .def("has_tx_power_reference", &radio_control::has_tx_power_reference) + .def("set_tx_power_reference", &radio_control::set_tx_power_reference) + .def("get_tx_power_reference", &radio_control::get_tx_power_reference) + .def("get_tx_power_ref_keys", + &radio_control::get_tx_power_ref_keys, + py::arg("chan") = 0) + .def("get_rx_gain_names", &radio_control::get_rx_gain_names) + .def("get_rx_gain_range", + py::overload_cast( + &radio_control::get_rx_gain_range, py::const_), + py::arg("chan")) + .def("get_rx_gain_range", + py::overload_cast( + &radio_control::get_rx_gain_range, py::const_), + py::arg("name"), + py::arg("chan")) + .def("get_rx_gain", + py::overload_cast(&radio_control::get_rx_gain), + py::arg("chan")) + .def("get_rx_gain", + py::overload_cast( + &radio_control::get_rx_gain), + py::arg("name"), + py::arg("chan")) + .def("set_rx_gain", + py::overload_cast(&radio_control::set_rx_gain), + py::arg("gain"), + py::arg("chan")) + .def("set_rx_gain", + py::overload_cast( + &radio_control::set_rx_gain), + py::arg("gain"), + py::arg("name"), + py::arg("chan")) + .def("set_rx_agc", &radio_control::set_rx_agc) + .def("has_rx_power_reference", &radio_control::has_rx_power_reference) + .def("set_rx_power_reference", &radio_control::set_rx_power_reference) + .def("get_rx_power_reference", &radio_control::get_rx_power_reference) + .def("get_rx_power_ref_keys", + &radio_control::get_rx_power_ref_keys, + py::arg("chan") = 0) + .def("get_tx_gain_profile_names", &radio_control::get_tx_gain_profile_names) + .def("get_rx_gain_profile_names", &radio_control::get_rx_gain_profile_names) + .def("set_tx_gain_profile", &radio_control::set_tx_gain_profile) + .def("set_rx_gain_profile", &radio_control::set_rx_gain_profile) + .def("get_tx_gain_profile", &radio_control::get_tx_gain_profile) + .def("get_rx_gain_profile", &radio_control::get_rx_gain_profile) + .def("get_tx_bandwidth_range", &radio_control::get_tx_bandwidth_range) + .def("get_tx_bandwidth", &radio_control::get_tx_bandwidth) + .def("set_tx_bandwidth", &radio_control::set_tx_bandwidth) + .def("get_rx_bandwidth_range", &radio_control::get_rx_bandwidth_range) + .def("get_rx_bandwidth", &radio_control::get_rx_bandwidth) + .def("set_rx_bandwidth", &radio_control::set_rx_bandwidth) + .def("get_rx_lo_names", &radio_control::get_rx_lo_names) + .def("get_rx_lo_sources", &radio_control::get_rx_lo_sources) + .def("get_rx_lo_freq_range", &radio_control::get_rx_lo_freq_range) + .def("set_rx_lo_source", &radio_control::set_rx_lo_source) + .def("get_rx_lo_source", &radio_control::get_rx_lo_source) + .def("set_rx_lo_export_enabled", &radio_control::set_rx_lo_export_enabled) + .def("get_rx_lo_export_enabled", &radio_control::get_rx_lo_export_enabled) + .def("set_rx_lo_freq", &radio_control::set_rx_lo_freq) + .def("get_rx_lo_freq", &radio_control::get_rx_lo_freq) + .def("get_tx_lo_names", &radio_control::get_tx_lo_names) + .def("get_tx_lo_sources", &radio_control::get_tx_lo_sources) + .def("get_tx_lo_freq_range", &radio_control::get_tx_lo_freq_range) + .def("set_tx_lo_source", &radio_control::set_tx_lo_source) + .def("get_tx_lo_source", &radio_control::get_tx_lo_source) + .def("set_tx_lo_export_enabled", &radio_control::set_tx_lo_export_enabled) + .def("get_tx_lo_export_enabled", &radio_control::get_tx_lo_export_enabled) + .def("set_tx_lo_freq", &radio_control::set_tx_lo_freq) + .def("get_tx_lo_freq", &radio_control::get_tx_lo_freq) + .def("set_tx_dc_offset", &radio_control::set_tx_dc_offset) + .def("get_tx_dc_offset_range", &radio_control::get_tx_dc_offset_range) + .def("set_tx_iq_balance", &radio_control::set_tx_iq_balance) + .def("set_rx_dc_offset", + py::overload_cast(&radio_control::set_rx_dc_offset), + py::arg("enb"), + py::arg("chan") = radio_control::ALL_CHANS) + .def("set_rx_dc_offset", + py::overload_cast&, size_t>( + &radio_control::set_rx_dc_offset), + py::arg("offset"), + py::arg("chan")) + .def("get_rx_dc_offset_range", &radio_control::get_rx_dc_offset_range) + .def("set_rx_iq_balance", + py::overload_cast(&radio_control::set_rx_iq_balance), + py::arg("enb"), + py::arg("chan")) + .def("set_rx_iq_balance", + py::overload_cast&, size_t>( + &radio_control::set_rx_iq_balance), + py::arg("correction"), + py::arg("chan")) + .def("get_gpio_banks", &radio_control::get_gpio_banks) + .def("set_gpio_attr", &radio_control::set_gpio_attr) + .def("get_gpio_attr", &radio_control::get_gpio_attr) + .def("get_rx_sensor_names", &radio_control::get_rx_sensor_names) + .def("get_rx_sensor", &radio_control::get_rx_sensor) + .def("get_tx_sensor_names", &radio_control::get_tx_sensor_names) + .def("get_tx_sensor", &radio_control::get_tx_sensor) + .def("issue_stream_cmd", &radio_control::issue_stream_cmd) + .def("enable_rx_timestamps", &radio_control::enable_rx_timestamps) + .def("get_slot_name", &radio_control::get_slot_name) + .def("get_chan_from_dboard_fe", &radio_control::get_chan_from_dboard_fe) + .def("get_dboard_fe_from_chan", &radio_control::get_dboard_fe_from_chan) + .def("get_fe_name", &radio_control::get_fe_name) + .def("set_db_eeprom", &radio_control::set_db_eeprom) + .def("get_db_eeprom", &radio_control::get_db_eeprom); +} -- cgit v1.2.3