diff options
Diffstat (limited to 'gr-uhd/lib')
-rw-r--r-- | gr-uhd/lib/usrp_block_impl.h | 8 | ||||
-rw-r--r-- | gr-uhd/lib/usrp_sink_impl.cc | 8 | ||||
-rw-r--r-- | gr-uhd/lib/usrp_source_impl.cc | 104 | ||||
-rw-r--r-- | gr-uhd/lib/usrp_source_impl.h | 9 |
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); |