aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--host/include/uhd/rfnoc/radio_control.hpp41
-rw-r--r--host/lib/include/uhdlib/rfnoc/radio_control_impl.hpp2
-rw-r--r--host/lib/rfnoc/radio_control_impl.cpp10
3 files changed, 53 insertions, 0 deletions
diff --git a/host/include/uhd/rfnoc/radio_control.hpp b/host/include/uhd/rfnoc/radio_control.hpp
index 96f082b3e..867b2a919 100644
--- a/host/include/uhd/rfnoc/radio_control.hpp
+++ b/host/include/uhd/rfnoc/radio_control.hpp
@@ -238,6 +238,26 @@ public:
*/
virtual double get_tx_power_reference(const size_t chan) = 0;
+ /*! Return the keys by which the power calibration data is referenced for this
+ * channel.
+ *
+ * The first entry is the key, the second the serial. These are the same
+ * arguments that can be used for uhd::usrp::cal::database::read_cal_data()
+ * and friends. See also \ref cal_db_serial.
+ *
+ * Note that the key can change at runtime, e.g., when the antenna port is
+ * switched.
+ *
+ * The difference between this and has_tx_power_reference() is that the
+ * latter requires both device support as well as calibration data, whereas
+ * this function will never throw, and will always return a non-empty vector
+ * if device support is there, even if the device does not have calbration
+ * data loaded.
+ *
+ * \returns an empty vector if no power calibration is supported, or a
+ * vector of length 2 with key and serial if it does.
+ */
+ virtual std::vector<std::string> get_tx_power_ref_keys(const size_t chan = 0) = 0;
/*! Return a list of valid RX gain names
*/
@@ -338,6 +358,27 @@ public:
*/
virtual double get_rx_power_reference(const size_t chan) = 0;
+ /*! Return the keys by which the power calibration data is referenced for this
+ * channel.
+ *
+ * The first entry is the key, the second the serial. These are the same
+ * arguments that can be used for uhd::usrp::cal::database::read_cal_data()
+ * and friends. See also \ref cal_db_serial.
+ *
+ * Note that the key can change at runtime, e.g., when the antenna port is
+ * switched.
+ *
+ * The difference between this and has_rx_power_reference() is that the
+ * latter requires both device support as well as calibration data, whereas
+ * this function will never throw, and will always return a non-empty vector
+ * if device support is there, even if the device does not have calbration
+ * data loaded.
+ *
+ * \returns an empty vector if no power calibration is supported, or a
+ * vector of length 2 with key and serial if it does.
+ */
+ virtual std::vector<std::string> get_rx_power_ref_keys(const size_t chan = 0) = 0;
+
/*! Return a list of TX gain profiles for this radio
*/
virtual std::vector<std::string> get_tx_gain_profile_names(
diff --git a/host/lib/include/uhdlib/rfnoc/radio_control_impl.hpp b/host/lib/include/uhdlib/rfnoc/radio_control_impl.hpp
index 4916ecf6f..db723a6f6 100644
--- a/host/lib/include/uhdlib/rfnoc/radio_control_impl.hpp
+++ b/host/lib/include/uhdlib/rfnoc/radio_control_impl.hpp
@@ -106,6 +106,8 @@ public:
virtual bool has_tx_power_reference(const size_t chan);
virtual double get_rx_power_reference(const size_t chan);
virtual double get_tx_power_reference(const size_t chan);
+ virtual std::vector<std::string> get_rx_power_ref_keys(const size_t);
+ virtual std::vector<std::string> get_tx_power_ref_keys(const size_t);
/**************************************************************************
* LO Controls
diff --git a/host/lib/rfnoc/radio_control_impl.cpp b/host/lib/rfnoc/radio_control_impl.cpp
index e34a9b430..b3da7ec13 100644
--- a/host/lib/rfnoc/radio_control_impl.cpp
+++ b/host/lib/rfnoc/radio_control_impl.cpp
@@ -611,6 +611,16 @@ double radio_control_impl::get_tx_power_reference(const size_t)
return 0.0;
}
+std::vector<std::string> radio_control_impl::get_rx_power_ref_keys(const size_t)
+{
+ return {};
+}
+
+std::vector<std::string> radio_control_impl::get_tx_power_ref_keys(const size_t)
+{
+ return {};
+}
+
/******************************************************************************
* LO Default API
*****************************************************************************/