From 3b0ba5c956ea20e4f03a245b7bf181cca6a252a3 Mon Sep 17 00:00:00 2001
From: Derek Kozel <derek.kozel@ettus.com>
Date: Wed, 20 Apr 2016 16:17:15 -0700
Subject: Added controls for importing, exporting, and sharing LOs

---
 gr-uhd/lib/usrp_source_impl.cc | 98 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 98 insertions(+)

(limited to 'gr-uhd/lib/usrp_source_impl.cc')

diff --git a/gr-uhd/lib/usrp_source_impl.cc b/gr-uhd/lib/usrp_source_impl.cc
index 0a09ed34b3..f0450a604d 100644
--- a/gr-uhd/lib/usrp_source_impl.cc
+++ b/gr-uhd/lib/usrp_source_impl.cc
@@ -281,6 +281,104 @@ namespace gr {
         return _dev->get_rx_bandwidth_range(chan);
     }
 
+    std::vector<std::string>
+    usrp_source_impl::get_lo_names(size_t chan)
+    {
+#ifdef UHD_USRP_MULTI_USRP_LO_CONFIG_API
+        chan = _stream_args.channels[chan];
+        return _dev->get_rx_lo_names(chan);
+#else
+        throw std::runtime_error("not implemented in this version");
+#endif
+    }
+
+    const std::string
+    usrp_source_impl::get_lo_source(const std::string &name, size_t chan)
+    {
+#ifdef UHD_USRP_MULTI_USRP_LO_CONFIG_API
+        chan = _stream_args.channels[chan];
+        return _dev->get_rx_lo_source(name, chan);
+#else
+        throw std::runtime_error("not implemented in this version");
+#endif
+    }
+
+    std::vector<std::string>
+    usrp_source_impl::get_lo_sources(const std::string &name, size_t chan)
+    {
+#ifdef UHD_USRP_MULTI_USRP_LO_CONFIG_API
+        chan = _stream_args.channels[chan];
+        return _dev->get_rx_lo_sources(name, chan);
+#else
+        throw std::runtime_error("not implemented in this version");
+#endif
+    }
+
+    void
+    usrp_source_impl::set_lo_source(const std::string &src, const std::string &name, size_t chan)
+    {
+#ifdef UHD_USRP_MULTI_USRP_LO_CONFIG_API
+        chan = _stream_args.channels[chan];
+        return _dev->set_rx_lo_source(src, name, chan);
+#else
+        throw std::runtime_error("not implemented in this version");
+#endif
+    }
+
+    bool
+    usrp_source_impl::get_lo_export_enabled(const std::string &name, size_t chan)
+    {
+#ifdef UHD_USRP_MULTI_USRP_LO_CONFIG_API
+        chan = _stream_args.channels[chan];
+        return _dev->get_rx_lo_export_enabled(name, chan);
+#else
+        throw std::runtime_error("not implemented in this version");
+#endif
+    }
+
+    void
+    usrp_source_impl::set_lo_export_enabled(bool enabled, const std::string &name, size_t chan)
+    {
+#ifdef UHD_USRP_MULTI_USRP_LO_CONFIG_API
+        chan = _stream_args.channels[chan];
+        return _dev->set_rx_lo_export_enabled(enabled, name, chan);
+#else
+        throw std::runtime_error("not implemented in this version");
+#endif
+    }
+
+    ::uhd::freq_range_t
+    usrp_source_impl::get_lo_freq_range(const std::string &name, size_t chan)
+    {
+#ifdef UHD_USRP_MULTI_USRP_LO_CONFIG_API
+        chan = _stream_args.channels[chan];
+        return _dev->get_rx_lo_freq_range(name, chan);
+#else
+        throw std::runtime_error("not implemented in this version");
+#endif
+    }
+
+    double
+    usrp_source_impl::get_lo_freq(const std::string &name, size_t chan)
+    {
+#ifdef UHD_USRP_MULTI_USRP_LO_CONFIG_API
+        chan = _stream_args.channels[chan];
+        return _dev->get_rx_lo_freq(name, chan);
+#else
+        throw std::runtime_error("not implemented in this version");
+#endif
+    }
+
+    double
+    usrp_source_impl::set_lo_freq(double freq, const std::string &name, size_t chan) {
+#ifdef UHD_USRP_MULTI_USRP_LO_CONFIG_API
+        chan = _stream_args.channels[chan];
+        return _dev->set_rx_lo_freq(freq, name, chan);
+#else
+        throw std::runtime_error("not implemented in this version");
+#endif
+    }
+
     void
     usrp_source_impl::set_auto_dc_offset(const bool enable, size_t chan)
     {
-- 
cgit v1.2.3