aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/usrp/x300/x300_radio_mbc_iface.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'host/lib/usrp/x300/x300_radio_mbc_iface.hpp')
-rw-r--r--host/lib/usrp/x300/x300_radio_mbc_iface.hpp64
1 files changed, 64 insertions, 0 deletions
diff --git a/host/lib/usrp/x300/x300_radio_mbc_iface.hpp b/host/lib/usrp/x300/x300_radio_mbc_iface.hpp
new file mode 100644
index 000000000..cb0d99306
--- /dev/null
+++ b/host/lib/usrp/x300/x300_radio_mbc_iface.hpp
@@ -0,0 +1,64 @@
+//
+// Copyright 2019 Ettus Research, a National Instruments Brand
+//
+// SPDX-License-Identifier: GPL-3.0-or-later
+//
+
+#ifndef INCLUDED_LIBUHD_X300_MBC_IFACE_HPP
+#define INCLUDED_LIBUHD_X300_MBC_IFACE_HPP
+
+#include <uhd/types/time_spec.hpp>
+#include <cstddef>
+#include <string>
+
+namespace uhd { namespace usrp { namespace x300 {
+
+class x300_radio_mbc_iface
+{
+public:
+ virtual ~x300_radio_mbc_iface() {}
+
+ //! Return the current output of the ADC via a register
+ virtual uint32_t get_adc_rx_word() = 0;
+
+ //! Set ADC test word (see x300_adc_ctrl::set_test_word())
+ virtual void set_adc_test_word(
+ const std::string& patterna, const std::string& patternb) = 0;
+
+ //! Enable or disable the ADC checker
+ virtual void set_adc_checker_enabled(const bool enb) = 0;
+
+ //! Query ADC checker lock bit
+ virtual bool get_adc_checker_locked(const bool I) = 0;
+
+ //! Return current ADC error status
+ virtual uint32_t get_adc_checker_error_code(const bool I) = 0;
+
+ /*! Runs some ADC self tests
+ *
+ * - First, the ADC gets set to produce a constant value and we see if it
+ * reaches the FPGA
+ * - Then, the ADC is put into ramp mode, and we see if we read the ramp
+ * with no errors
+ *
+ * \param ramp_time_ms The duration of the ramp test. Increasing the test
+ * will increase the probability of a bit error.
+ * \throws uhd::runtime_error if one or more bit errors occurred
+ */
+ virtual void self_test_adc(const uint32_t ramp_time_ms) = 0;
+
+ //! Call sync() on the DAC object
+ virtual void sync_dac() = 0;
+
+ //! Set the FRAMEP/N sync pulse. If time is not zero, it will do so at the
+ // given time.
+ virtual void set_dac_sync(
+ const bool enb, const uhd::time_spec_t& time = uhd::time_spec_t(0.0)) = 0;
+
+ //! Call verify_sync() on the DAC object
+ virtual void dac_verify_sync() = 0;
+};
+
+}}} // namespace uhd::usrp::x300
+
+#endif /* INCLUDED_LIBUHD_X300_MBC_IFACE_HPP */