summaryrefslogtreecommitdiff
path: root/gr-uhd/lib
diff options
context:
space:
mode:
Diffstat (limited to 'gr-uhd/lib')
-rw-r--r--gr-uhd/lib/usrp_block_impl.h8
-rw-r--r--gr-uhd/lib/usrp_sink_impl.cc8
-rw-r--r--gr-uhd/lib/usrp_source_impl.cc104
-rw-r--r--gr-uhd/lib/usrp_source_impl.h9
4 files changed, 121 insertions, 8 deletions
diff --git a/gr-uhd/lib/usrp_block_impl.h b/gr-uhd/lib/usrp_block_impl.h
index cb07fb356d..a1bbf97826 100644
--- a/gr-uhd/lib/usrp_block_impl.h
+++ b/gr-uhd/lib/usrp_block_impl.h
@@ -40,6 +40,14 @@
namespace gr {
namespace uhd {
+ static const size_t ALL_MBOARDS = ::uhd::usrp::multi_usrp::ALL_MBOARDS;
+ static const size_t ALL_CHANS = ::uhd::usrp::multi_usrp::ALL_CHANS;
+ static const std::string ALL_GAINS = ::uhd::usrp::multi_usrp::ALL_GAINS;
+#ifdef UHD_USRP_MULTI_USRP_LO_CONFIG_API
+ static const std::string ALL_LOS = ::uhd::usrp::multi_usrp::ALL_LOS;
+#else
+ static const std::string ALL_LOS;
+#endif
class usrp_block_impl : virtual public usrp_block
{
public:
diff --git a/gr-uhd/lib/usrp_sink_impl.cc b/gr-uhd/lib/usrp_sink_impl.cc
index 666f09cbf5..d8f98fdd80 100644
--- a/gr-uhd/lib/usrp_sink_impl.cc
+++ b/gr-uhd/lib/usrp_sink_impl.cc
@@ -29,8 +29,6 @@
namespace gr {
namespace uhd {
- static const size_t ALL_CHANS = ::uhd::usrp::multi_usrp::ALL_CHANS;
-
usrp_sink::sptr
usrp_sink::make(const ::uhd::device_addr_t &device_addr,
const ::uhd::io_type_t &io_type,
@@ -64,9 +62,9 @@ namespace gr {
usrp_sink_impl::usrp_sink_impl(const ::uhd::device_addr_t &device_addr,
const ::uhd::stream_args_t &stream_args,
const std::string &length_tag_name)
- : usrp_block("gr uhd usrp sink",
- args_to_io_sig(stream_args),
- io_signature::make(0, 0, 0)),
+ : usrp_block("usrp_sink",
+ args_to_io_sig(stream_args),
+ io_signature::make(0, 0, 0)),
usrp_block_impl(device_addr, stream_args, length_tag_name),
_length_tag_key(length_tag_name.empty() ? pmt::PMT_NIL : pmt::string_to_symbol(length_tag_name)),
_nitems_to_send(0)
diff --git a/gr-uhd/lib/usrp_source_impl.cc b/gr-uhd/lib/usrp_source_impl.cc
index 0a09ed34b3..ed0b891770 100644
--- a/gr-uhd/lib/usrp_source_impl.cc
+++ b/gr-uhd/lib/usrp_source_impl.cc
@@ -66,9 +66,9 @@ namespace gr {
usrp_source_impl::usrp_source_impl(const ::uhd::device_addr_t &device_addr,
const ::uhd::stream_args_t &stream_args,
const bool issue_stream_cmd_on_start):
- usrp_block("gr uhd usrp source",
- io_signature::make(0, 0, 0),
- args_to_io_sig(stream_args)),
+ usrp_block("usrp_source",
+ io_signature::make(0, 0, 0),
+ args_to_io_sig(stream_args)),
usrp_block_impl(device_addr, stream_args, ""),
_tag_now(false),
_issue_stream_cmd_on_start(issue_stream_cmd_on_start)
@@ -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)
{
diff --git a/gr-uhd/lib/usrp_source_impl.h b/gr-uhd/lib/usrp_source_impl.h
index 78a8341a5a..f6225a7e35 100644
--- a/gr-uhd/lib/usrp_source_impl.h
+++ b/gr-uhd/lib/usrp_source_impl.h
@@ -77,6 +77,12 @@ namespace gr {
::uhd::sensor_value_t get_sensor(const std::string &name, size_t chan);
std::vector<std::string> get_sensor_names(size_t chan);
::uhd::usrp::dboard_iface::sptr get_dboard_iface(size_t chan);
+ std::vector<std::string> get_lo_names(size_t chan);
+ const std::string get_lo_source(const std::string &name, size_t chan);
+ std::vector<std::string> get_lo_sources(const std::string &name, size_t chan);
+ bool get_lo_export_enabled(const std::string &name, size_t chan);
+ double get_lo_freq(const std::string &name, size_t chan);
+ ::uhd::freq_range_t get_lo_freq_range(const std::string &name, size_t chan);
// Set Commands
void set_subdev_spec(const std::string &spec, size_t mboard);
@@ -96,6 +102,9 @@ namespace gr {
void set_iq_balance(const std::complex<double> &correction, size_t chan);
void set_stream_args(const ::uhd::stream_args_t &stream_args);
void set_start_time(const ::uhd::time_spec_t &time);
+ void set_lo_source(const std::string &src, const std::string &name = ALL_LOS, size_t chan = 0);
+ void set_lo_export_enabled(bool enabled, const std::string &name = ALL_LOS, size_t chan = 0);
+ double set_lo_freq(double freq, const std::string &name, size_t chan);
void issue_stream_cmd(const ::uhd::stream_cmd_t &cmd);
void flush(void);