From 5e9908fbec19ce9309c12ea61c0303e6666e981a Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Mon, 18 Oct 2010 01:03:11 -0700 Subject: uhd: removed utils warning functions, moved into the lower level wrappers --- gr-uhd/lib/Makefile.am | 4 +-- gr-uhd/lib/uhd_mimo_sink.cc | 6 ++-- gr-uhd/lib/uhd_mimo_source.cc | 6 ++-- gr-uhd/lib/uhd_simple_sink.cc | 6 ++-- gr-uhd/lib/uhd_simple_source.cc | 6 ++-- gr-uhd/lib/uhd_single_usrp_sink.cc | 3 -- gr-uhd/lib/uhd_single_usrp_source.cc | 3 -- gr-uhd/lib/utils.cc | 56 ------------------------------------ gr-uhd/lib/utils.h | 40 -------------------------- 9 files changed, 13 insertions(+), 117 deletions(-) delete mode 100644 gr-uhd/lib/utils.cc delete mode 100644 gr-uhd/lib/utils.h (limited to 'gr-uhd/lib') diff --git a/gr-uhd/lib/Makefile.am b/gr-uhd/lib/Makefile.am index 1260201a5..69a41e788 100644 --- a/gr-uhd/lib/Makefile.am +++ b/gr-uhd/lib/Makefile.am @@ -29,7 +29,6 @@ AM_CPPFLAGS = \ lib_LTLIBRARIES = libgnuradio-uhd.la libgnuradio_uhd_la_SOURCES = \ - utils.cc \ uhd_mimo_source.cc \ uhd_mimo_sink.cc \ uhd_simple_source.cc \ @@ -51,5 +50,4 @@ grinclude_HEADERS = \ uhd_single_usrp_source.h \ uhd_single_usrp_sink.h -noinst_HEADERS = \ - utils.h +noinst_HEADERS = diff --git a/gr-uhd/lib/uhd_mimo_sink.cc b/gr-uhd/lib/uhd_mimo_sink.cc index 0a2ce1b0a..03d310b1e 100644 --- a/gr-uhd/lib/uhd_mimo_sink.cc +++ b/gr-uhd/lib/uhd_mimo_sink.cc @@ -23,7 +23,7 @@ #include #include #include -#include "utils.h" +//#include "utils.h" /*********************************************************************** * UHD Sink @@ -59,7 +59,7 @@ public: void set_samp_rate_all(double rate){ _dev->set_tx_rate_all(rate); - do_samp_rate_error_message(rate, get_samp_rate_all(), "TX"); + //do_samp_rate_error_message(rate, get_samp_rate_all(), "TX"); } double get_samp_rate_all(void){ @@ -68,7 +68,7 @@ public: uhd::tune_result_t set_center_freq(size_t chan, double freq){ uhd::tune_result_t tr = _dev->set_tx_freq(chan, freq); - do_tune_freq_error_message(freq, _dev->get_tx_freq(chan), "TX"); + //do_tune_freq_error_message(freq, _dev->get_tx_freq(chan), "TX"); return tr; } diff --git a/gr-uhd/lib/uhd_mimo_source.cc b/gr-uhd/lib/uhd_mimo_source.cc index 62157142d..abd70ba36 100644 --- a/gr-uhd/lib/uhd_mimo_source.cc +++ b/gr-uhd/lib/uhd_mimo_source.cc @@ -23,7 +23,7 @@ #include #include #include -#include "utils.h" +//#include "utils.h" /*********************************************************************** * UHD Source @@ -59,7 +59,7 @@ public: void set_samp_rate_all(double rate){ _dev->set_rx_rate_all(rate); - do_samp_rate_error_message(rate, get_samp_rate_all(), "RX"); + //do_samp_rate_error_message(rate, get_samp_rate_all(), "RX"); } double get_samp_rate_all(void){ @@ -68,7 +68,7 @@ public: uhd::tune_result_t set_center_freq(size_t chan, double freq){ uhd::tune_result_t tr = _dev->set_rx_freq(chan, freq); - do_tune_freq_error_message(freq, _dev->get_rx_freq(chan), "RX"); + //do_tune_freq_error_message(freq, _dev->get_rx_freq(chan), "RX"); return tr; } diff --git a/gr-uhd/lib/uhd_simple_sink.cc b/gr-uhd/lib/uhd_simple_sink.cc index 7b31218db..d7b04465d 100644 --- a/gr-uhd/lib/uhd_simple_sink.cc +++ b/gr-uhd/lib/uhd_simple_sink.cc @@ -23,7 +23,7 @@ #include #include #include -#include "utils.h" +//#include "utils.h" /*********************************************************************** * UHD Sink @@ -56,7 +56,7 @@ public: void set_samp_rate(double rate){ _dev->set_tx_rate(rate); - do_samp_rate_error_message(rate, get_samp_rate(), "TX"); + //do_samp_rate_error_message(rate, get_samp_rate(), "TX"); } double get_samp_rate(void){ @@ -65,7 +65,7 @@ public: uhd::tune_result_t set_center_freq(double freq){ uhd::tune_result_t tr = _dev->set_tx_freq(freq); - do_tune_freq_error_message(freq, _dev->get_tx_freq(), "TX"); + //do_tune_freq_error_message(freq, _dev->get_tx_freq(), "TX"); return tr; } diff --git a/gr-uhd/lib/uhd_simple_source.cc b/gr-uhd/lib/uhd_simple_source.cc index c1e11e85d..d74c8414d 100644 --- a/gr-uhd/lib/uhd_simple_source.cc +++ b/gr-uhd/lib/uhd_simple_source.cc @@ -25,7 +25,7 @@ #include #include #include -#include "utils.h" +//#include "utils.h" /*********************************************************************** * UHD Source @@ -59,7 +59,7 @@ public: void set_samp_rate(double rate){ _dev->set_rx_rate(rate); - do_samp_rate_error_message(rate, get_samp_rate(), "RX"); + //do_samp_rate_error_message(rate, get_samp_rate(), "RX"); } double get_samp_rate(void){ @@ -68,7 +68,7 @@ public: uhd::tune_result_t set_center_freq(double freq){ uhd::tune_result_t tr = _dev->set_rx_freq(freq); - do_tune_freq_error_message(freq, _dev->get_rx_freq(), "RX"); + //do_tune_freq_error_message(freq, _dev->get_rx_freq(), "RX"); return tr; } diff --git a/gr-uhd/lib/uhd_single_usrp_sink.cc b/gr-uhd/lib/uhd_single_usrp_sink.cc index 96f86c8db..cd7d7a618 100644 --- a/gr-uhd/lib/uhd_single_usrp_sink.cc +++ b/gr-uhd/lib/uhd_single_usrp_sink.cc @@ -22,7 +22,6 @@ #include #include #include -#include "utils.h" /*********************************************************************** * UHD Single USPR Sink @@ -56,7 +55,6 @@ public: void set_samp_rate(double rate){ _dev->set_tx_rate(rate); - do_samp_rate_error_message(rate, get_samp_rate(), "TX"); } double get_samp_rate(void){ @@ -65,7 +63,6 @@ public: uhd::tune_result_t set_center_freq(double freq, size_t chan){ uhd::tune_result_t tr = _dev->set_tx_freq(freq, chan); - do_tune_freq_error_message(freq, _dev->get_tx_freq(chan), "TX"); return tr; } diff --git a/gr-uhd/lib/uhd_single_usrp_source.cc b/gr-uhd/lib/uhd_single_usrp_source.cc index b5e39b5a4..fc2c453eb 100644 --- a/gr-uhd/lib/uhd_single_usrp_source.cc +++ b/gr-uhd/lib/uhd_single_usrp_source.cc @@ -24,7 +24,6 @@ #include #include #include -#include "utils.h" /*********************************************************************** * UHD Single USPR Source @@ -54,7 +53,6 @@ public: void set_samp_rate(double rate){ _dev->set_rx_rate(rate); - do_samp_rate_error_message(rate, get_samp_rate(), "RX"); } double get_samp_rate(void){ @@ -63,7 +61,6 @@ public: uhd::tune_result_t set_center_freq(double freq, size_t chan){ uhd::tune_result_t tr = _dev->set_rx_freq(freq, chan); - do_tune_freq_error_message(freq, _dev->get_rx_freq(chan), "RX"); return tr; } diff --git a/gr-uhd/lib/utils.cc b/gr-uhd/lib/utils.cc deleted file mode 100644 index da8352965..000000000 --- a/gr-uhd/lib/utils.cc +++ /dev/null @@ -1,56 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2010 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#include "utils.h" //local include -#include -#include -#include - -void do_samp_rate_error_message( - double target_rate, - double actual_rate, - const std::string &xx -){ - static const double max_allowed_error = 1.0; //Sps - if (std::abs(target_rate - actual_rate) > max_allowed_error){ - uhd::print_warning(str(boost::format( - "The hardware does not support the requested %s sample rate:\n" - "Target sample rate: %f MSps\n" - "Actual sample rate: %f MSps\n" - ) % xx % (target_rate/1e6) % (actual_rate/1e6))); - } -} - -void do_tune_freq_error_message( - double target_freq, - double actual_freq, - const std::string &xx -){ - static const double max_allowed_error = 1.0; //Hz - if (std::abs(target_freq - actual_freq) > max_allowed_error){ - uhd::print_warning(str(boost::format( - "The hardware does not support the requested %s frequency:\n" - "Target frequency: %f MHz\n" - "Actual frequency: %f MHz\n" - ) % xx % (target_freq/1e6) % (actual_freq/1e6))); - } -} diff --git a/gr-uhd/lib/utils.h b/gr-uhd/lib/utils.h deleted file mode 100644 index 4a05476bd..000000000 --- a/gr-uhd/lib/utils.h +++ /dev/null @@ -1,40 +0,0 @@ -/* -*- c++ -*- */ -/* - * Copyright 2010 Free Software Foundation, Inc. - * - * This file is part of GNU Radio - * - * GNU Radio is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 3, or (at your option) - * any later version. - * - * GNU Radio is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Radio; see the file COPYING. If not, write to - * the Free Software Foundation, Inc., 51 Franklin Street, - * Boston, MA 02110-1301, USA. - */ - -#ifndef INCLUDED_NOINST_UTILS_H -#define INCLUDED_NOINST_UTILS_H - -#include - -void do_samp_rate_error_message( - double target_rate, - double actual_rate, - const std::string &xx -); - -void do_tune_freq_error_message( - double target_freq, - double actual_freq, - const std::string &xx -); - -#endif /* INCLUDED_NOINST_UTILS_H */ -- cgit From 4ac5545625d3d6df9881695f764c9c94049edb7b Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Mon, 18 Oct 2010 12:18:13 -0700 Subject: uhd: added multi usrp skeleton and added deprecation note to other headers --- gr-uhd/lib/Makefile.am | 8 +-- gr-uhd/lib/uhd_mimo_sink.h | 3 + gr-uhd/lib/uhd_mimo_source.h | 3 + gr-uhd/lib/uhd_multi_usrp_sink.cc | 24 +++++++ gr-uhd/lib/uhd_multi_usrp_sink.h | 138 ++++++++++++++++++++++++++++++++++++ gr-uhd/lib/uhd_multi_usrp_source.cc | 24 +++++++ gr-uhd/lib/uhd_multi_usrp_source.h | 138 ++++++++++++++++++++++++++++++++++++ gr-uhd/lib/uhd_simple_sink.h | 3 + gr-uhd/lib/uhd_simple_source.h | 3 + 9 files changed, 340 insertions(+), 4 deletions(-) create mode 100644 gr-uhd/lib/uhd_multi_usrp_sink.cc create mode 100644 gr-uhd/lib/uhd_multi_usrp_sink.h create mode 100644 gr-uhd/lib/uhd_multi_usrp_source.cc create mode 100644 gr-uhd/lib/uhd_multi_usrp_source.h (limited to 'gr-uhd/lib') diff --git a/gr-uhd/lib/Makefile.am b/gr-uhd/lib/Makefile.am index 69a41e788..d9a296c75 100644 --- a/gr-uhd/lib/Makefile.am +++ b/gr-uhd/lib/Makefile.am @@ -31,6 +31,8 @@ lib_LTLIBRARIES = libgnuradio-uhd.la libgnuradio_uhd_la_SOURCES = \ uhd_mimo_source.cc \ uhd_mimo_sink.cc \ + uhd_multi_usrp_source.cc \ + uhd_multi_usrp_sink.cc \ uhd_simple_source.cc \ uhd_simple_sink.cc \ uhd_single_usrp_source.cc \ @@ -43,10 +45,8 @@ libgnuradio_uhd_la_LIBADD = \ libgnuradio_uhd_la_LDFLAGS = $(LTVERSIONFLAGS) grinclude_HEADERS = \ - uhd_mimo_source.h \ - uhd_mimo_sink.h \ - uhd_simple_source.h \ - uhd_simple_sink.h \ + uhd_multi_usrp_source.h \ + uhd_multi_usrp_sink.h \ uhd_single_usrp_source.h \ uhd_single_usrp_sink.h diff --git a/gr-uhd/lib/uhd_mimo_sink.h b/gr-uhd/lib/uhd_mimo_sink.h index 46679d973..a0a30381c 100644 --- a/gr-uhd/lib/uhd_mimo_sink.h +++ b/gr-uhd/lib/uhd_mimo_sink.h @@ -34,6 +34,9 @@ boost::shared_ptr uhd_make_mimo_sink( const uhd::io_type_t::tid_t &type ); +/*********************************************************************** + * DEPRECATED + **********************************************************************/ class uhd_mimo_sink : public gr_sync_block{ public: diff --git a/gr-uhd/lib/uhd_mimo_source.h b/gr-uhd/lib/uhd_mimo_source.h index fbd7f2c42..f6f18eedc 100644 --- a/gr-uhd/lib/uhd_mimo_source.h +++ b/gr-uhd/lib/uhd_mimo_source.h @@ -34,6 +34,9 @@ boost::shared_ptr uhd_make_mimo_source( const uhd::io_type_t::tid_t &type ); +/*********************************************************************** + * DEPRECATED + **********************************************************************/ class uhd_mimo_source : public gr_sync_block{ public: diff --git a/gr-uhd/lib/uhd_multi_usrp_sink.cc b/gr-uhd/lib/uhd_multi_usrp_sink.cc new file mode 100644 index 000000000..6854649c3 --- /dev/null +++ b/gr-uhd/lib/uhd_multi_usrp_sink.cc @@ -0,0 +1,24 @@ +/* + * Copyright 2010 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include +#include +#include diff --git a/gr-uhd/lib/uhd_multi_usrp_sink.h b/gr-uhd/lib/uhd_multi_usrp_sink.h new file mode 100644 index 000000000..b29657e94 --- /dev/null +++ b/gr-uhd/lib/uhd_multi_usrp_sink.h @@ -0,0 +1,138 @@ +/* + * Copyright 2010 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef INCLUDED_UHD_MULTI_USRP_SINK_H +#define INCLUDED_UHD_MULTI_USRP_SINK_H + +#include +#include + +class uhd_multi_usrp_sink; + +boost::shared_ptr uhd_make_multi_usrp_sink( + const std::string &args, + const uhd::io_type_t::tid_t &type, + size_t num_channels +); + +class uhd_multi_usrp_sink : public gr_sync_block{ +public: + + /*! + * Set the IO signature for this block. + * \param sig the input signature + */ + uhd_multi_usrp_sink(gr_io_signature_sptr sig); + + /*! + * Set the subdevice specification. + * \param spec the subdev spec markup string + */ + virtual void set_subdev_spec(const std::string &spec, size_t mboard) = 0; + + /*! + * Set the sample rate for the usrp device. + * \param rate a new rate in Sps + */ + virtual void set_samp_rate(double rate) = 0; + + /*! + * Get the sample rate for the usrp device. + * This is the actual sample rate and may differ from the rate set. + * \return the actual rate in Sps + */ + virtual double get_samp_rate(void) = 0; + + /*! + * Tune the usrp device to the desired center frequency. + * \param freq the desired frequency in Hz + * \return a tune result with the actual frequencies + */ + virtual uhd::tune_result_t set_center_freq(double freq, size_t chan = 0) = 0; + + /*! + * Get the tunable frequency range. + * \return the frequency range in Hz + */ + virtual uhd::freq_range_t get_freq_range(size_t chan = 0) = 0; + + /*! + * Set the gain for the dboard. + * \param gain the gain in dB + */ + virtual void set_gain(float gain, size_t chan = 0) = 0; + + /*! + * Get the actual dboard gain setting. + * \return the actual gain in dB + */ + virtual float get_gain(size_t chan = 0) = 0; + + /*! + * Get the settable gain range. + * \return the gain range in dB + */ + virtual uhd::gain_range_t get_gain_range(size_t chan = 0) = 0; + + /*! + * Set the antenna to use. + * \param ant the antenna string + */ + virtual void set_antenna(const std::string &ant, size_t chan = 0) = 0; + + /*! + * Get the antenna in use. + * \return the antenna string + */ + virtual std::string get_antenna(size_t chan = 0) = 0; + + /*! + * Get a list of possible antennas. + * \return a vector of antenna strings + */ + virtual std::vector get_antennas(size_t chan = 0) = 0; + + /*! + * Set the clock configuration. + * \param clock_config the new configuration + */ + virtual void set_clock_config(const uhd::clock_config_t &clock_config, size_t mboard) = 0; + + /*! + * Get the current time registers. + * \return the current usrp time + */ + virtual uhd::time_spec_t get_time_now(void) = 0; + + /*! + * Set the time registers at the next pps. + * \param time_spec the new time + */ + virtual void set_time_next_pps(const uhd::time_spec_t &time_spec) = 0; + + /*! + * Get access to the underlying uhd device object. + * \return the multi usrp device object + */ + virtual uhd::usrp::multi_usrp::sptr get_device(void) = 0; +}; + +#endif /* INCLUDED_UHD_MULTI_USRP_SINK_H */ diff --git a/gr-uhd/lib/uhd_multi_usrp_source.cc b/gr-uhd/lib/uhd_multi_usrp_source.cc new file mode 100644 index 000000000..27caffbfc --- /dev/null +++ b/gr-uhd/lib/uhd_multi_usrp_source.cc @@ -0,0 +1,24 @@ +/* + * Copyright 2010 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#include +#include +#include diff --git a/gr-uhd/lib/uhd_multi_usrp_source.h b/gr-uhd/lib/uhd_multi_usrp_source.h new file mode 100644 index 000000000..b2c4a3ac1 --- /dev/null +++ b/gr-uhd/lib/uhd_multi_usrp_source.h @@ -0,0 +1,138 @@ +/* + * Copyright 2010 Free Software Foundation, Inc. + * + * This file is part of GNU Radio + * + * GNU Radio is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3, or (at your option) + * any later version. + * + * GNU Radio is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Radio; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, + * Boston, MA 02110-1301, USA. + */ + +#ifndef INCLUDED_UHD_MULTI_USRP_SOURCE_H +#define INCLUDED_UHD_MULTI_USRP_SOURCE_H + +#include +#include + +class uhd_multi_usrp_source; + +boost::shared_ptr uhd_make_multi_usrp_source( + const std::string &args, + const uhd::io_type_t::tid_t &type, + size_t num_channels +); + +class uhd_multi_usrp_source : public gr_sync_block{ +public: + + /*! + * Set the IO signature for this block. + * \param sig the output signature + */ + uhd_multi_usrp_source(gr_io_signature_sptr sig); + + /*! + * Set the subdevice specification. + * \param spec the subdev spec markup string + */ + virtual void set_subdev_spec(const std::string &spec, size_t mboard) = 0; + + /*! + * Set the sample rate for the usrp device. + * \param rate a new rate in Sps + */ + virtual void set_samp_rate(double rate) = 0; + + /*! + * Get the sample rate for the usrp device. + * This is the actual sample rate and may differ from the rate set. + * \return the actual rate in Sps + */ + virtual double get_samp_rate(void) = 0; + + /*! + * Tune the usrp device to the desired center frequency. + * \param freq the desired frequency in Hz + * \return a tune result with the actual frequencies + */ + virtual uhd::tune_result_t set_center_freq(double freq, size_t chan = 0) = 0; + + /*! + * Get the tunable frequency range. + * \return the frequency range in Hz + */ + virtual uhd::freq_range_t get_freq_range(size_t chan = 0) = 0; + + /*! + * Set the gain for the dboard. + * \param gain the gain in dB + */ + virtual void set_gain(float gain, size_t chan = 0) = 0; + + /*! + * Get the actual dboard gain setting. + * \return the actual gain in dB + */ + virtual float get_gain(size_t chan = 0) = 0; + + /*! + * Get the settable gain range. + * \return the gain range in dB + */ + virtual uhd::gain_range_t get_gain_range(size_t chan = 0) = 0; + + /*! + * Set the antenna to use. + * \param ant the antenna string + */ + virtual void set_antenna(const std::string &ant, size_t chan = 0) = 0; + + /*! + * Get the antenna in use. + * \return the antenna string + */ + virtual std::string get_antenna(size_t chan = 0) = 0; + + /*! + * Get a list of possible antennas. + * \return a vector of antenna strings + */ + virtual std::vector get_antennas(size_t chan = 0) = 0; + + /*! + * Set the clock configuration. + * \param clock_config the new configuration + */ + virtual void set_clock_config(const uhd::clock_config_t &clock_config, size_t mboard) = 0; + + /*! + * Get the current time registers. + * \return the current usrp time + */ + virtual uhd::time_spec_t get_time_now(void) = 0; + + /*! + * Set the time registers at the next pps. + * \param time_spec the new time + */ + virtual void set_time_next_pps(const uhd::time_spec_t &time_spec) = 0; + + /*! + * Get access to the underlying uhd device object. + * \return the multi usrp device object + */ + virtual uhd::usrp::multi_usrp::sptr get_device(void) = 0; +}; + +#endif /* INCLUDED_UHD_MULTI_USRP_SOURCE_H */ diff --git a/gr-uhd/lib/uhd_simple_sink.h b/gr-uhd/lib/uhd_simple_sink.h index 0abf30681..44b868698 100644 --- a/gr-uhd/lib/uhd_simple_sink.h +++ b/gr-uhd/lib/uhd_simple_sink.h @@ -33,6 +33,9 @@ boost::shared_ptr uhd_make_simple_sink( const uhd::io_type_t::tid_t &type ); +/*********************************************************************** + * DEPRECATED + **********************************************************************/ class uhd_simple_sink : public gr_sync_block{ public: diff --git a/gr-uhd/lib/uhd_simple_source.h b/gr-uhd/lib/uhd_simple_source.h index b95c0cfd9..4e79afa21 100644 --- a/gr-uhd/lib/uhd_simple_source.h +++ b/gr-uhd/lib/uhd_simple_source.h @@ -33,6 +33,9 @@ boost::shared_ptr uhd_make_simple_source( const uhd::io_type_t::tid_t &type ); +/*********************************************************************** + * DEPRECATED + **********************************************************************/ class uhd_simple_source : public gr_sync_block{ public: -- cgit From 873228d25b3ea5df8eb10f6652518f144858af61 Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Mon, 18 Oct 2010 13:46:51 -0700 Subject: uhd: filled in multi usrp code and swig file --- gr-uhd/lib/uhd_multi_usrp_sink.cc | 151 ++++++++++++++++++++++++++++++++++ gr-uhd/lib/uhd_multi_usrp_sink.h | 6 ++ gr-uhd/lib/uhd_multi_usrp_source.cc | 154 +++++++++++++++++++++++++++++++++++ gr-uhd/lib/uhd_multi_usrp_source.h | 6 ++ gr-uhd/lib/uhd_single_usrp_sink.cc | 10 +-- gr-uhd/lib/uhd_single_usrp_source.cc | 6 +- 6 files changed, 323 insertions(+), 10 deletions(-) (limited to 'gr-uhd/lib') diff --git a/gr-uhd/lib/uhd_multi_usrp_sink.cc b/gr-uhd/lib/uhd_multi_usrp_sink.cc index 6854649c3..202f12840 100644 --- a/gr-uhd/lib/uhd_multi_usrp_sink.cc +++ b/gr-uhd/lib/uhd_multi_usrp_sink.cc @@ -22,3 +22,154 @@ #include #include #include + +/*********************************************************************** + * UHD Multi USRP Sink + **********************************************************************/ +uhd_multi_usrp_sink::uhd_multi_usrp_sink(gr_io_signature_sptr sig) +:gr_sync_block("uhd multi usrp sink", sig, gr_make_io_signature(0, 0, 0)){ + /* NOP */ +} + +/*********************************************************************** + * UHD Multi USRP Sink Impl + **********************************************************************/ +class uhd_multi_usrp_sink_impl : public uhd_multi_usrp_sink{ +public: + uhd_multi_usrp_sink_impl( + const std::string &args, + const uhd::io_type_t &type, + size_t num_channels + ) : uhd_multi_usrp_sink(gr_make_io_signature(num_channels, num_channels, type.size)), _type(type), _nchan(num_channels) + { + _dev = uhd::usrp::multi_usrp::make(args); + } + + void set_subdev_spec(const std::string &spec, size_t mboard){ + return _dev->set_tx_subdev_spec(spec, mboard); + } + + void set_samp_rate(double rate){ + _dev->set_tx_rate(rate); + } + + double get_samp_rate(void){ + return _dev->get_tx_rate(); + } + + uhd::tune_result_t set_center_freq(double freq, size_t chan){ + uhd::tune_result_t tr = _dev->set_tx_freq(freq, chan); + return tr; + } + + uhd::freq_range_t get_freq_range(size_t chan){ + return _dev->get_tx_freq_range(chan); + } + + void set_gain(float gain, size_t chan){ + return _dev->set_tx_gain(gain, chan); + } + + float get_gain(size_t chan){ + return _dev->get_tx_gain(chan); + } + + uhd::gain_range_t get_gain_range(size_t chan){ + return _dev->get_tx_gain_range(chan); + } + + void set_antenna(const std::string &ant, size_t chan){ + return _dev->set_tx_antenna(ant, chan); + } + + std::string get_antenna(size_t chan){ + return _dev->get_tx_antenna(chan); + } + + std::vector get_antennas(size_t chan){ + return _dev->get_tx_antennas(chan); + } + + void set_clock_config(const uhd::clock_config_t &clock_config, size_t mboard){ + return _dev->set_clock_config(clock_config, mboard); + } + + uhd::time_spec_t get_time_now(void){ + return _dev->get_time_now(); + } + + void set_time_next_pps(const uhd::time_spec_t &time_spec){ + return _dev->set_time_next_pps(time_spec); + } + + void set_time_unknown_pps(const uhd::time_spec_t &time_spec){ + return _dev->set_time_unknown_pps(time_spec); + } + + uhd::usrp::multi_usrp::sptr get_device(void){ + return _dev; + } + +/*********************************************************************** + * Work + **********************************************************************/ + int work( + int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items + ){ + uhd::tx_metadata_t metadata; + metadata.start_of_burst = true; + + return _dev->get_device()->send( + input_items, noutput_items, metadata, + _type, uhd::device::SEND_MODE_FULL_BUFF + ); + } + + //Send an empty start-of-burst packet to begin streaming. + //Set at a time in the near future so data will be sync'd. + bool start(void){ + uhd::tx_metadata_t metadata; + metadata.start_of_burst = true; + metadata.has_time_spec = true; + metadata.time_spec = get_time_now() + uhd::time_spec_t(0.01); //10ms offset in future + + _dev->get_device()->send( + gr_vector_const_void_star(_nchan), 0, metadata, + _type, uhd::device::SEND_MODE_ONE_PACKET + ); + return true; + } + + //Send an empty end-of-burst packet to end streaming. + //Ending the burst avoids an underflow error on stop. + bool stop(void){ + uhd::tx_metadata_t metadata; + metadata.end_of_burst = true; + + _dev->get_device()->send( + gr_vector_const_void_star(_nchan), 0, metadata, + _type, uhd::device::SEND_MODE_ONE_PACKET + ); + return true; + } + +protected: + uhd::usrp::multi_usrp::sptr _dev; + const uhd::io_type_t _type; + size_t _nchan; +}; + +/*********************************************************************** + * Make UHD Multi USRP Sink + **********************************************************************/ +boost::shared_ptr uhd_make_multi_usrp_sink( + const std::string &args, + const uhd::io_type_t::tid_t &type, + size_t num_channels +){ + return boost::shared_ptr( + new uhd_multi_usrp_sink_impl(args, type, num_channels) + ); +} diff --git a/gr-uhd/lib/uhd_multi_usrp_sink.h b/gr-uhd/lib/uhd_multi_usrp_sink.h index b29657e94..13bba20fb 100644 --- a/gr-uhd/lib/uhd_multi_usrp_sink.h +++ b/gr-uhd/lib/uhd_multi_usrp_sink.h @@ -128,6 +128,12 @@ public: */ virtual void set_time_next_pps(const uhd::time_spec_t &time_spec) = 0; + /*! + * Sync the time registers with an unknown pps edge. + * \param time_spec the new time + */ + virtual void set_time_unknown_pps(const uhd::time_spec_t &time_spec) = 0; + /*! * Get access to the underlying uhd device object. * \return the multi usrp device object diff --git a/gr-uhd/lib/uhd_multi_usrp_source.cc b/gr-uhd/lib/uhd_multi_usrp_source.cc index 27caffbfc..c10c08c50 100644 --- a/gr-uhd/lib/uhd_multi_usrp_source.cc +++ b/gr-uhd/lib/uhd_multi_usrp_source.cc @@ -22,3 +22,157 @@ #include #include #include +#include +#include + +/*********************************************************************** + * UHD Multi USRP Source + **********************************************************************/ +uhd_multi_usrp_source::uhd_multi_usrp_source(gr_io_signature_sptr sig) +:gr_sync_block("uhd multi_usrp source", gr_make_io_signature(0, 0, 0), sig){ + /* NOP */ +} + +/*********************************************************************** + * UHD Multi USRP Source Impl + **********************************************************************/ +class uhd_multi_usrp_source_impl : public uhd_multi_usrp_source{ +public: + uhd_multi_usrp_source_impl( + const std::string &args, + const uhd::io_type_t &type, + size_t num_channels + ) : uhd_multi_usrp_source(gr_make_io_signature(num_channels, num_channels, type.size)), _type(type) + { + _dev = uhd::usrp::multi_usrp::make(args); + } + + void set_subdev_spec(const std::string &spec, size_t mboard){ + return _dev->set_rx_subdev_spec(spec, mboard); + } + + void set_samp_rate(double rate){ + _dev->set_rx_rate(rate); + } + + double get_samp_rate(void){ + return _dev->get_rx_rate(); + } + + uhd::tune_result_t set_center_freq(double freq, size_t chan){ + uhd::tune_result_t tr = _dev->set_rx_freq(freq, chan); + return tr; + } + + uhd::freq_range_t get_freq_range(size_t chan){ + return _dev->get_rx_freq_range(chan); + } + + void set_gain(float gain, size_t chan){ + return _dev->set_rx_gain(gain, chan); + } + + float get_gain(size_t chan){ + return _dev->get_rx_gain(chan); + } + + uhd::gain_range_t get_gain_range(size_t chan){ + return _dev->get_rx_gain_range(chan); + } + + void set_antenna(const std::string &ant, size_t chan){ + return _dev->set_rx_antenna(ant, chan); + } + + std::string get_antenna(size_t chan){ + return _dev->get_rx_antenna(chan); + } + + std::vector get_antennas(size_t chan){ + return _dev->get_rx_antennas(chan); + } + + void set_clock_config(const uhd::clock_config_t &clock_config, size_t mboard){ + return _dev->set_clock_config(clock_config, mboard); + } + + uhd::time_spec_t get_time_now(void){ + return _dev->get_time_now(); + } + + void set_time_next_pps(const uhd::time_spec_t &time_spec){ + return _dev->set_time_next_pps(time_spec); + } + + void set_time_unknown_pps(const uhd::time_spec_t &time_spec){ + return _dev->set_time_unknown_pps(time_spec); + } + + uhd::usrp::multi_usrp::sptr get_device(void){ + return _dev; + } + +/*********************************************************************** + * Work + **********************************************************************/ + int work( + int noutput_items, + gr_vector_const_void_star &input_items, + gr_vector_void_star &output_items + ){ + uhd::rx_metadata_t metadata; //not passed out of this block + + size_t num_samps = _dev->get_device()->recv( + output_items, noutput_items, metadata, + _type, uhd::device::RECV_MODE_FULL_BUFF + ); + + switch(metadata.error_code){ + case uhd::rx_metadata_t::ERROR_CODE_NONE: + return num_samps; + + case uhd::rx_metadata_t::ERROR_CODE_OVERFLOW: + //ignore overflows and try work again + return work(noutput_items, input_items, output_items); + + default: + std::cout << boost::format( + "UHD source block got error code 0x%x" + ) % metadata.error_code << std::endl; + return num_samps; + } + } + + bool start(void){ + //setup a stream command that starts streaming slightly in the future + static const double reasonable_delay = 0.01; //10 ms (order of magnitude >> RTT) + uhd::stream_cmd_t stream_cmd(uhd::stream_cmd_t::STREAM_MODE_START_CONTINUOUS); + stream_cmd.stream_now = false; + stream_cmd.time_spec = get_time_now() + uhd::time_spec_t(_dev->get_num_mboards() * reasonable_delay); + _dev->issue_stream_cmd(stream_cmd); + return true; + } + + bool stop(void){ + _dev->issue_stream_cmd(uhd::stream_cmd_t::STREAM_MODE_STOP_CONTINUOUS); + return true; + } + +private: + uhd::usrp::multi_usrp::sptr _dev; + const uhd::io_type_t _type; +}; + + +/*********************************************************************** + * Make UHD Multi USRP Source + **********************************************************************/ +boost::shared_ptr uhd_make_multi_usrp_source( + const std::string &args, + const uhd::io_type_t::tid_t &type, + size_t num_channels +){ + return boost::shared_ptr( + new uhd_multi_usrp_source_impl(args, type, num_channels) + ); +} diff --git a/gr-uhd/lib/uhd_multi_usrp_source.h b/gr-uhd/lib/uhd_multi_usrp_source.h index b2c4a3ac1..b94e53f01 100644 --- a/gr-uhd/lib/uhd_multi_usrp_source.h +++ b/gr-uhd/lib/uhd_multi_usrp_source.h @@ -128,6 +128,12 @@ public: */ virtual void set_time_next_pps(const uhd::time_spec_t &time_spec) = 0; + /*! + * Sync the time registers with an unknown pps edge. + * \param time_spec the new time + */ + virtual void set_time_unknown_pps(const uhd::time_spec_t &time_spec) = 0; + /*! * Get access to the underlying uhd device object. * \return the multi usrp device object diff --git a/gr-uhd/lib/uhd_single_usrp_sink.cc b/gr-uhd/lib/uhd_single_usrp_sink.cc index cd7d7a618..96c1dbdf4 100644 --- a/gr-uhd/lib/uhd_single_usrp_sink.cc +++ b/gr-uhd/lib/uhd_single_usrp_sink.cc @@ -24,7 +24,7 @@ #include /*********************************************************************** - * UHD Single USPR Sink + * UHD Single USRP Sink **********************************************************************/ uhd_single_usrp_sink::uhd_single_usrp_sink(gr_io_signature_sptr sig) :gr_sync_block("uhd single usrp sink", sig, gr_make_io_signature(0, 0, 0)){ @@ -32,7 +32,7 @@ uhd_single_usrp_sink::uhd_single_usrp_sink(gr_io_signature_sptr sig) } /*********************************************************************** - * UHD Single USPR Sink Impl + * UHD Single USRP Sink Impl **********************************************************************/ class uhd_single_usrp_sink_impl : public uhd_single_usrp_sink{ public: @@ -45,10 +45,6 @@ public: _dev = uhd::usrp::single_usrp::make(args); } - ~uhd_single_usrp_sink_impl(void){ - //NOP - } - void set_subdev_spec(const std::string &spec){ return _dev->set_tx_subdev_spec(spec); } @@ -164,7 +160,7 @@ protected: }; /*********************************************************************** - * Make UHD Single USPR Sink + * Make UHD Single USRP Sink **********************************************************************/ boost::shared_ptr uhd_make_single_usrp_sink( const std::string &args, diff --git a/gr-uhd/lib/uhd_single_usrp_source.cc b/gr-uhd/lib/uhd_single_usrp_source.cc index fc2c453eb..7c3694a99 100644 --- a/gr-uhd/lib/uhd_single_usrp_source.cc +++ b/gr-uhd/lib/uhd_single_usrp_source.cc @@ -26,7 +26,7 @@ #include /*********************************************************************** - * UHD Single USPR Source + * UHD Single USRP Source **********************************************************************/ uhd_single_usrp_source::uhd_single_usrp_source(gr_io_signature_sptr sig) :gr_sync_block("uhd single_usrp source", gr_make_io_signature(0, 0, 0), sig){ @@ -34,7 +34,7 @@ uhd_single_usrp_source::uhd_single_usrp_source(gr_io_signature_sptr sig) } /*********************************************************************** - * UHD Single USPR Source Impl + * UHD Single USRP Source Impl **********************************************************************/ class uhd_single_usrp_source_impl : public uhd_single_usrp_source{ public: @@ -160,7 +160,7 @@ private: /*********************************************************************** - * Make UHD Single USPR Source + * Make UHD Single USRP Source **********************************************************************/ boost::shared_ptr uhd_make_single_usrp_source( const std::string &args, -- cgit From d029af43c3367a4611185ade70639cc6b7cc5e3d Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Mon, 18 Oct 2010 14:09:23 -0700 Subject: uhd: created multi usrp grc wrapper generator, removed mimo gen and checked in its generated files --- gr-uhd/lib/Makefile.am | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'gr-uhd/lib') diff --git a/gr-uhd/lib/Makefile.am b/gr-uhd/lib/Makefile.am index d9a296c75..b4b1abfc6 100644 --- a/gr-uhd/lib/Makefile.am +++ b/gr-uhd/lib/Makefile.am @@ -29,15 +29,18 @@ AM_CPPFLAGS = \ lib_LTLIBRARIES = libgnuradio-uhd.la libgnuradio_uhd_la_SOURCES = \ - uhd_mimo_source.cc \ - uhd_mimo_sink.cc \ uhd_multi_usrp_source.cc \ uhd_multi_usrp_sink.cc \ - uhd_simple_source.cc \ - uhd_simple_sink.cc \ uhd_single_usrp_source.cc \ uhd_single_usrp_sink.cc +# add the deprecated sources +libgnuradio_uhd_la_SOURCES += \ + uhd_mimo_source.cc \ + uhd_mimo_sink.cc \ + uhd_simple_source.cc \ + uhd_simple_sink.cc + libgnuradio_uhd_la_LIBADD = \ $(GNURADIO_CORE_LA) \ $(UHD_LIBS) -- cgit From 7f46efca9cb0c87e9130c117ac41650f6e0c25cc Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Mon, 18 Oct 2010 16:49:08 -0700 Subject: uhd: renamed make function params, cleanup, clock config for multi usrp --- gr-uhd/lib/uhd_multi_usrp_sink.cc | 19 ++++++++++++------- gr-uhd/lib/uhd_multi_usrp_sink.h | 4 ++-- gr-uhd/lib/uhd_multi_usrp_source.cc | 18 +++++++++++------- gr-uhd/lib/uhd_multi_usrp_source.h | 4 ++-- gr-uhd/lib/uhd_single_usrp_sink.cc | 19 ++++++++++++------- gr-uhd/lib/uhd_single_usrp_sink.h | 4 ++-- gr-uhd/lib/uhd_single_usrp_source.cc | 18 +++++++++++------- gr-uhd/lib/uhd_single_usrp_source.h | 4 ++-- 8 files changed, 54 insertions(+), 36 deletions(-) (limited to 'gr-uhd/lib') diff --git a/gr-uhd/lib/uhd_multi_usrp_sink.cc b/gr-uhd/lib/uhd_multi_usrp_sink.cc index 202f12840..31dbac44f 100644 --- a/gr-uhd/lib/uhd_multi_usrp_sink.cc +++ b/gr-uhd/lib/uhd_multi_usrp_sink.cc @@ -37,12 +37,17 @@ uhd_multi_usrp_sink::uhd_multi_usrp_sink(gr_io_signature_sptr sig) class uhd_multi_usrp_sink_impl : public uhd_multi_usrp_sink{ public: uhd_multi_usrp_sink_impl( - const std::string &args, - const uhd::io_type_t &type, + const std::string &device_addr, + const uhd::io_type_t &io_type, size_t num_channels - ) : uhd_multi_usrp_sink(gr_make_io_signature(num_channels, num_channels, type.size)), _type(type), _nchan(num_channels) + ): + uhd_multi_usrp_sink(gr_make_io_signature( + num_channels, num_channels, io_type.size + )), + _type(io_type), + _nchan(num_channels) { - _dev = uhd::usrp::multi_usrp::make(args); + _dev = uhd::usrp::multi_usrp::make(device_addr); } void set_subdev_spec(const std::string &spec, size_t mboard){ @@ -165,11 +170,11 @@ protected: * Make UHD Multi USRP Sink **********************************************************************/ boost::shared_ptr uhd_make_multi_usrp_sink( - const std::string &args, - const uhd::io_type_t::tid_t &type, + const std::string &device_addr, + const uhd::io_type_t::tid_t &io_type, size_t num_channels ){ return boost::shared_ptr( - new uhd_multi_usrp_sink_impl(args, type, num_channels) + new uhd_multi_usrp_sink_impl(device_addr, io_type, num_channels) ); } diff --git a/gr-uhd/lib/uhd_multi_usrp_sink.h b/gr-uhd/lib/uhd_multi_usrp_sink.h index 13bba20fb..5dacc1fac 100644 --- a/gr-uhd/lib/uhd_multi_usrp_sink.h +++ b/gr-uhd/lib/uhd_multi_usrp_sink.h @@ -28,8 +28,8 @@ class uhd_multi_usrp_sink; boost::shared_ptr uhd_make_multi_usrp_sink( - const std::string &args, - const uhd::io_type_t::tid_t &type, + const std::string &device_addr, + const uhd::io_type_t::tid_t &io_type, size_t num_channels ); diff --git a/gr-uhd/lib/uhd_multi_usrp_source.cc b/gr-uhd/lib/uhd_multi_usrp_source.cc index c10c08c50..1fcb57650 100644 --- a/gr-uhd/lib/uhd_multi_usrp_source.cc +++ b/gr-uhd/lib/uhd_multi_usrp_source.cc @@ -39,12 +39,16 @@ uhd_multi_usrp_source::uhd_multi_usrp_source(gr_io_signature_sptr sig) class uhd_multi_usrp_source_impl : public uhd_multi_usrp_source{ public: uhd_multi_usrp_source_impl( - const std::string &args, - const uhd::io_type_t &type, + const std::string &device_addr, + const uhd::io_type_t &io_type, size_t num_channels - ) : uhd_multi_usrp_source(gr_make_io_signature(num_channels, num_channels, type.size)), _type(type) + ): + uhd_multi_usrp_source(gr_make_io_signature( + num_channels, num_channels, io_type.size + )), + _type(io_type) { - _dev = uhd::usrp::multi_usrp::make(args); + _dev = uhd::usrp::multi_usrp::make(device_addr); } void set_subdev_spec(const std::string &spec, size_t mboard){ @@ -168,11 +172,11 @@ private: * Make UHD Multi USRP Source **********************************************************************/ boost::shared_ptr uhd_make_multi_usrp_source( - const std::string &args, - const uhd::io_type_t::tid_t &type, + const std::string &device_addr, + const uhd::io_type_t::tid_t &io_type, size_t num_channels ){ return boost::shared_ptr( - new uhd_multi_usrp_source_impl(args, type, num_channels) + new uhd_multi_usrp_source_impl(device_addr, io_type, num_channels) ); } diff --git a/gr-uhd/lib/uhd_multi_usrp_source.h b/gr-uhd/lib/uhd_multi_usrp_source.h index b94e53f01..36c4b6fdc 100644 --- a/gr-uhd/lib/uhd_multi_usrp_source.h +++ b/gr-uhd/lib/uhd_multi_usrp_source.h @@ -28,8 +28,8 @@ class uhd_multi_usrp_source; boost::shared_ptr uhd_make_multi_usrp_source( - const std::string &args, - const uhd::io_type_t::tid_t &type, + const std::string &device_addr, + const uhd::io_type_t::tid_t &io_type, size_t num_channels ); diff --git a/gr-uhd/lib/uhd_single_usrp_sink.cc b/gr-uhd/lib/uhd_single_usrp_sink.cc index 96c1dbdf4..4297a83ff 100644 --- a/gr-uhd/lib/uhd_single_usrp_sink.cc +++ b/gr-uhd/lib/uhd_single_usrp_sink.cc @@ -37,12 +37,17 @@ uhd_single_usrp_sink::uhd_single_usrp_sink(gr_io_signature_sptr sig) class uhd_single_usrp_sink_impl : public uhd_single_usrp_sink{ public: uhd_single_usrp_sink_impl( - const std::string &args, - const uhd::io_type_t &type, + const std::string &device_addr, + const uhd::io_type_t &io_type, size_t num_channels - ) : uhd_single_usrp_sink(gr_make_io_signature(num_channels, num_channels, type.size)), _type(type), _nchan(num_channels) + ): + uhd_single_usrp_sink(gr_make_io_signature( + num_channels, num_channels, io_type.size + )), + _type(io_type), + _nchan(num_channels) { - _dev = uhd::usrp::single_usrp::make(args); + _dev = uhd::usrp::single_usrp::make(device_addr); } void set_subdev_spec(const std::string &spec){ @@ -163,11 +168,11 @@ protected: * Make UHD Single USRP Sink **********************************************************************/ boost::shared_ptr uhd_make_single_usrp_sink( - const std::string &args, - const uhd::io_type_t::tid_t &type, + const std::string &device_addr, + const uhd::io_type_t::tid_t &io_type, size_t num_channels ){ return boost::shared_ptr( - new uhd_single_usrp_sink_impl(args, type, num_channels) + new uhd_single_usrp_sink_impl(device_addr, io_type, num_channels) ); } diff --git a/gr-uhd/lib/uhd_single_usrp_sink.h b/gr-uhd/lib/uhd_single_usrp_sink.h index bec788193..e83bb6ded 100644 --- a/gr-uhd/lib/uhd_single_usrp_sink.h +++ b/gr-uhd/lib/uhd_single_usrp_sink.h @@ -28,8 +28,8 @@ class uhd_single_usrp_sink; boost::shared_ptr uhd_make_single_usrp_sink( - const std::string &args, - const uhd::io_type_t::tid_t &type, + const std::string &device_addr, + const uhd::io_type_t::tid_t &io_type, size_t num_channels = 1 ); diff --git a/gr-uhd/lib/uhd_single_usrp_source.cc b/gr-uhd/lib/uhd_single_usrp_source.cc index 7c3694a99..27a788d96 100644 --- a/gr-uhd/lib/uhd_single_usrp_source.cc +++ b/gr-uhd/lib/uhd_single_usrp_source.cc @@ -39,12 +39,16 @@ uhd_single_usrp_source::uhd_single_usrp_source(gr_io_signature_sptr sig) class uhd_single_usrp_source_impl : public uhd_single_usrp_source{ public: uhd_single_usrp_source_impl( - const std::string &args, - const uhd::io_type_t &type, + const std::string &device_addr, + const uhd::io_type_t &io_type, size_t num_channels - ) : uhd_single_usrp_source(gr_make_io_signature(num_channels, num_channels, type.size)), _type(type) + ): + uhd_single_usrp_source(gr_make_io_signature( + num_channels, num_channels, io_type.size + )), + _type(io_type) { - _dev = uhd::usrp::single_usrp::make(args); + _dev = uhd::usrp::single_usrp::make(device_addr); } void set_subdev_spec(const std::string &spec){ @@ -163,11 +167,11 @@ private: * Make UHD Single USRP Source **********************************************************************/ boost::shared_ptr uhd_make_single_usrp_source( - const std::string &args, - const uhd::io_type_t::tid_t &type, + const std::string &device_addr, + const uhd::io_type_t::tid_t &io_type, size_t num_channels ){ return boost::shared_ptr( - new uhd_single_usrp_source_impl(args, type, num_channels) + new uhd_single_usrp_source_impl(device_addr, io_type, num_channels) ); } diff --git a/gr-uhd/lib/uhd_single_usrp_source.h b/gr-uhd/lib/uhd_single_usrp_source.h index 196b7c675..c323fbd7e 100644 --- a/gr-uhd/lib/uhd_single_usrp_source.h +++ b/gr-uhd/lib/uhd_single_usrp_source.h @@ -28,8 +28,8 @@ class uhd_single_usrp_source; boost::shared_ptr uhd_make_single_usrp_source( - const std::string &args, - const uhd::io_type_t::tid_t &type, + const std::string &device_addr, + const uhd::io_type_t::tid_t &io_type, size_t num_channels = 1 ); -- cgit From 343cba5663d0eefdd3ee3918bef812dc1bd75508 Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Mon, 18 Oct 2010 18:29:20 -0700 Subject: uhd: tweaked and tested multi usrp with a single channel --- gr-uhd/lib/uhd_multi_usrp_source.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'gr-uhd/lib') diff --git a/gr-uhd/lib/uhd_multi_usrp_source.cc b/gr-uhd/lib/uhd_multi_usrp_source.cc index 1fcb57650..0ac686c79 100644 --- a/gr-uhd/lib/uhd_multi_usrp_source.cc +++ b/gr-uhd/lib/uhd_multi_usrp_source.cc @@ -149,10 +149,10 @@ public: bool start(void){ //setup a stream command that starts streaming slightly in the future - static const double reasonable_delay = 0.01; //10 ms (order of magnitude >> RTT) + static const double reasonable_delay = 0.05; //order of magnitude over RTT uhd::stream_cmd_t stream_cmd(uhd::stream_cmd_t::STREAM_MODE_START_CONTINUOUS); stream_cmd.stream_now = false; - stream_cmd.time_spec = get_time_now() + uhd::time_spec_t(_dev->get_num_mboards() * reasonable_delay); + stream_cmd.time_spec = get_time_now() + uhd::time_spec_t(reasonable_delay); _dev->issue_stream_cmd(stream_cmd); return true; } -- cgit From f8c63c369e0e8800f76d427434424f7209fcde86 Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Tue, 19 Oct 2010 13:04:42 -0700 Subject: uhd: tweaking timeouts for multi usrp blocks --- gr-uhd/lib/uhd_multi_usrp_sink.cc | 11 +++++++---- gr-uhd/lib/uhd_multi_usrp_source.cc | 4 ++-- 2 files changed, 9 insertions(+), 6 deletions(-) (limited to 'gr-uhd/lib') diff --git a/gr-uhd/lib/uhd_multi_usrp_sink.cc b/gr-uhd/lib/uhd_multi_usrp_sink.cc index 31dbac44f..17cd1ad78 100644 --- a/gr-uhd/lib/uhd_multi_usrp_sink.cc +++ b/gr-uhd/lib/uhd_multi_usrp_sink.cc @@ -128,7 +128,7 @@ public: return _dev->get_device()->send( input_items, noutput_items, metadata, - _type, uhd::device::SEND_MODE_FULL_BUFF + _type, uhd::device::SEND_MODE_FULL_BUFF, 1.0 ); } @@ -138,11 +138,14 @@ public: uhd::tx_metadata_t metadata; metadata.start_of_burst = true; metadata.has_time_spec = true; - metadata.time_spec = get_time_now() + uhd::time_spec_t(0.01); //10ms offset in future + //TODO: Time in the near future, must be less than source time in future + //because ethernet pause frames with throttle stream commands. + //It will be fixed with the invention of host-based flow control. + metadata.time_spec = get_time_now() + uhd::time_spec_t(0.05); _dev->get_device()->send( gr_vector_const_void_star(_nchan), 0, metadata, - _type, uhd::device::SEND_MODE_ONE_PACKET + _type, uhd::device::SEND_MODE_ONE_PACKET, 1.0 ); return true; } @@ -155,7 +158,7 @@ public: _dev->get_device()->send( gr_vector_const_void_star(_nchan), 0, metadata, - _type, uhd::device::SEND_MODE_ONE_PACKET + _type, uhd::device::SEND_MODE_ONE_PACKET, 1.0 ); return true; } diff --git a/gr-uhd/lib/uhd_multi_usrp_source.cc b/gr-uhd/lib/uhd_multi_usrp_source.cc index 0ac686c79..63dad1a25 100644 --- a/gr-uhd/lib/uhd_multi_usrp_source.cc +++ b/gr-uhd/lib/uhd_multi_usrp_source.cc @@ -128,7 +128,7 @@ public: size_t num_samps = _dev->get_device()->recv( output_items, noutput_items, metadata, - _type, uhd::device::RECV_MODE_FULL_BUFF + _type, uhd::device::RECV_MODE_FULL_BUFF, 1.0 ); switch(metadata.error_code){ @@ -149,7 +149,7 @@ public: bool start(void){ //setup a stream command that starts streaming slightly in the future - static const double reasonable_delay = 0.05; //order of magnitude over RTT + static const double reasonable_delay = 0.1; //order of magnitude over RTT uhd::stream_cmd_t stream_cmd(uhd::stream_cmd_t::STREAM_MODE_START_CONTINUOUS); stream_cmd.stream_now = false; stream_cmd.time_spec = get_time_now() + uhd::time_spec_t(reasonable_delay); -- cgit From c6e4a54769e2d5be3cfd28df6697c54c4a4a7e90 Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Tue, 19 Oct 2010 15:03:08 -0700 Subject: uhd: mark simple and mimo classes with the deprecated flag --- gr-uhd/lib/uhd_mimo_sink.h | 2 +- gr-uhd/lib/uhd_mimo_source.h | 2 +- gr-uhd/lib/uhd_simple_sink.h | 2 +- gr-uhd/lib/uhd_simple_source.h | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) (limited to 'gr-uhd/lib') diff --git a/gr-uhd/lib/uhd_mimo_sink.h b/gr-uhd/lib/uhd_mimo_sink.h index a0a30381c..28a530b60 100644 --- a/gr-uhd/lib/uhd_mimo_sink.h +++ b/gr-uhd/lib/uhd_mimo_sink.h @@ -37,7 +37,7 @@ boost::shared_ptr uhd_make_mimo_sink( /*********************************************************************** * DEPRECATED **********************************************************************/ -class uhd_mimo_sink : public gr_sync_block{ +class UHD_DEPRECATED uhd_mimo_sink : public gr_sync_block{ public: /*! diff --git a/gr-uhd/lib/uhd_mimo_source.h b/gr-uhd/lib/uhd_mimo_source.h index f6f18eedc..dc2927598 100644 --- a/gr-uhd/lib/uhd_mimo_source.h +++ b/gr-uhd/lib/uhd_mimo_source.h @@ -37,7 +37,7 @@ boost::shared_ptr uhd_make_mimo_source( /*********************************************************************** * DEPRECATED **********************************************************************/ -class uhd_mimo_source : public gr_sync_block{ +class UHD_DEPRECATED uhd_mimo_source : public gr_sync_block{ public: /*! diff --git a/gr-uhd/lib/uhd_simple_sink.h b/gr-uhd/lib/uhd_simple_sink.h index 44b868698..b239e3f21 100644 --- a/gr-uhd/lib/uhd_simple_sink.h +++ b/gr-uhd/lib/uhd_simple_sink.h @@ -36,7 +36,7 @@ boost::shared_ptr uhd_make_simple_sink( /*********************************************************************** * DEPRECATED **********************************************************************/ -class uhd_simple_sink : public gr_sync_block{ +class UHD_DEPRECATED uhd_simple_sink : public gr_sync_block{ public: /*! diff --git a/gr-uhd/lib/uhd_simple_source.h b/gr-uhd/lib/uhd_simple_source.h index 4e79afa21..c524a024a 100644 --- a/gr-uhd/lib/uhd_simple_source.h +++ b/gr-uhd/lib/uhd_simple_source.h @@ -36,7 +36,7 @@ boost::shared_ptr uhd_make_simple_source( /*********************************************************************** * DEPRECATED **********************************************************************/ -class uhd_simple_source : public gr_sync_block{ +class UHD_DEPRECATED uhd_simple_source : public gr_sync_block{ public: /*! -- cgit From f13e1e1a87cf3d8b891e94226be047cff3733bb7 Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Tue, 19 Oct 2010 15:46:27 -0700 Subject: uhd: implement set bandwidth for uhd blocks, remove chan=0 default for multi blocks --- gr-uhd/lib/uhd_multi_usrp_sink.cc | 4 ++++ gr-uhd/lib/uhd_multi_usrp_sink.h | 22 ++++++++++++++-------- gr-uhd/lib/uhd_multi_usrp_source.cc | 4 ++++ gr-uhd/lib/uhd_multi_usrp_source.h | 22 ++++++++++++++-------- gr-uhd/lib/uhd_single_usrp_sink.cc | 4 ++++ gr-uhd/lib/uhd_single_usrp_sink.h | 6 ++++++ gr-uhd/lib/uhd_single_usrp_source.cc | 4 ++++ gr-uhd/lib/uhd_single_usrp_source.h | 6 ++++++ 8 files changed, 56 insertions(+), 16 deletions(-) (limited to 'gr-uhd/lib') diff --git a/gr-uhd/lib/uhd_multi_usrp_sink.cc b/gr-uhd/lib/uhd_multi_usrp_sink.cc index 17cd1ad78..b75a8303c 100644 --- a/gr-uhd/lib/uhd_multi_usrp_sink.cc +++ b/gr-uhd/lib/uhd_multi_usrp_sink.cc @@ -95,6 +95,10 @@ public: return _dev->get_tx_antennas(chan); } + void set_bandwidth(double bandwidth, size_t chan){ + return _dev->set_tx_bandwidth(bandwidth, chan); + } + void set_clock_config(const uhd::clock_config_t &clock_config, size_t mboard){ return _dev->set_clock_config(clock_config, mboard); } diff --git a/gr-uhd/lib/uhd_multi_usrp_sink.h b/gr-uhd/lib/uhd_multi_usrp_sink.h index 5dacc1fac..0ccc0fe6c 100644 --- a/gr-uhd/lib/uhd_multi_usrp_sink.h +++ b/gr-uhd/lib/uhd_multi_usrp_sink.h @@ -66,49 +66,55 @@ public: * \param freq the desired frequency in Hz * \return a tune result with the actual frequencies */ - virtual uhd::tune_result_t set_center_freq(double freq, size_t chan = 0) = 0; + virtual uhd::tune_result_t set_center_freq(double freq, size_t chan) = 0; /*! * Get the tunable frequency range. * \return the frequency range in Hz */ - virtual uhd::freq_range_t get_freq_range(size_t chan = 0) = 0; + virtual uhd::freq_range_t get_freq_range(size_t chan) = 0; /*! * Set the gain for the dboard. * \param gain the gain in dB */ - virtual void set_gain(float gain, size_t chan = 0) = 0; + virtual void set_gain(float gain, size_t chan) = 0; /*! * Get the actual dboard gain setting. * \return the actual gain in dB */ - virtual float get_gain(size_t chan = 0) = 0; + virtual float get_gain(size_t chan) = 0; /*! * Get the settable gain range. * \return the gain range in dB */ - virtual uhd::gain_range_t get_gain_range(size_t chan = 0) = 0; + virtual uhd::gain_range_t get_gain_range(size_t chan) = 0; /*! * Set the antenna to use. * \param ant the antenna string */ - virtual void set_antenna(const std::string &ant, size_t chan = 0) = 0; + virtual void set_antenna(const std::string &ant, size_t chan) = 0; /*! * Get the antenna in use. * \return the antenna string */ - virtual std::string get_antenna(size_t chan = 0) = 0; + virtual std::string get_antenna(size_t chan) = 0; /*! * Get a list of possible antennas. * \return a vector of antenna strings */ - virtual std::vector get_antennas(size_t chan = 0) = 0; + virtual std::vector get_antennas(size_t chan) = 0; + + /*! + * Set the subdevice bandpass filter. + * \param bandwidth the filter bandwidth in Hz + */ + virtual void set_bandwidth(double bandwidth, size_t chan) = 0; /*! * Set the clock configuration. diff --git a/gr-uhd/lib/uhd_multi_usrp_source.cc b/gr-uhd/lib/uhd_multi_usrp_source.cc index 63dad1a25..226e8b86f 100644 --- a/gr-uhd/lib/uhd_multi_usrp_source.cc +++ b/gr-uhd/lib/uhd_multi_usrp_source.cc @@ -96,6 +96,10 @@ public: return _dev->get_rx_antennas(chan); } + void set_bandwidth(double bandwidth, size_t chan){ + return _dev->set_rx_bandwidth(bandwidth, chan); + } + void set_clock_config(const uhd::clock_config_t &clock_config, size_t mboard){ return _dev->set_clock_config(clock_config, mboard); } diff --git a/gr-uhd/lib/uhd_multi_usrp_source.h b/gr-uhd/lib/uhd_multi_usrp_source.h index 36c4b6fdc..483ce098c 100644 --- a/gr-uhd/lib/uhd_multi_usrp_source.h +++ b/gr-uhd/lib/uhd_multi_usrp_source.h @@ -66,49 +66,55 @@ public: * \param freq the desired frequency in Hz * \return a tune result with the actual frequencies */ - virtual uhd::tune_result_t set_center_freq(double freq, size_t chan = 0) = 0; + virtual uhd::tune_result_t set_center_freq(double freq, size_t chan) = 0; /*! * Get the tunable frequency range. * \return the frequency range in Hz */ - virtual uhd::freq_range_t get_freq_range(size_t chan = 0) = 0; + virtual uhd::freq_range_t get_freq_range(size_t chan) = 0; /*! * Set the gain for the dboard. * \param gain the gain in dB */ - virtual void set_gain(float gain, size_t chan = 0) = 0; + virtual void set_gain(float gain, size_t chan) = 0; /*! * Get the actual dboard gain setting. * \return the actual gain in dB */ - virtual float get_gain(size_t chan = 0) = 0; + virtual float get_gain(size_t chan) = 0; /*! * Get the settable gain range. * \return the gain range in dB */ - virtual uhd::gain_range_t get_gain_range(size_t chan = 0) = 0; + virtual uhd::gain_range_t get_gain_range(size_t chan) = 0; /*! * Set the antenna to use. * \param ant the antenna string */ - virtual void set_antenna(const std::string &ant, size_t chan = 0) = 0; + virtual void set_antenna(const std::string &ant, size_t chan) = 0; /*! * Get the antenna in use. * \return the antenna string */ - virtual std::string get_antenna(size_t chan = 0) = 0; + virtual std::string get_antenna(size_t chan) = 0; /*! * Get a list of possible antennas. * \return a vector of antenna strings */ - virtual std::vector get_antennas(size_t chan = 0) = 0; + virtual std::vector get_antennas(size_t chan) = 0; + + /*! + * Set the subdevice bandpass filter. + * \param bandwidth the filter bandwidth in Hz + */ + virtual void set_bandwidth(double bandwidth, size_t chan) = 0; /*! * Set the clock configuration. diff --git a/gr-uhd/lib/uhd_single_usrp_sink.cc b/gr-uhd/lib/uhd_single_usrp_sink.cc index 4297a83ff..24981a59a 100644 --- a/gr-uhd/lib/uhd_single_usrp_sink.cc +++ b/gr-uhd/lib/uhd_single_usrp_sink.cc @@ -95,6 +95,10 @@ public: return _dev->get_tx_antennas(chan); } + void set_bandwidth(double bandwidth, size_t chan){ + return _dev->set_tx_bandwidth(bandwidth, chan); + } + void set_clock_config(const uhd::clock_config_t &clock_config){ return _dev->set_clock_config(clock_config); } diff --git a/gr-uhd/lib/uhd_single_usrp_sink.h b/gr-uhd/lib/uhd_single_usrp_sink.h index e83bb6ded..0987685f4 100644 --- a/gr-uhd/lib/uhd_single_usrp_sink.h +++ b/gr-uhd/lib/uhd_single_usrp_sink.h @@ -110,6 +110,12 @@ public: */ virtual std::vector get_antennas(size_t chan = 0) = 0; + /*! + * Set the subdevice bandpass filter. + * \param bandwidth the filter bandwidth in Hz + */ + virtual void set_bandwidth(double bandwidth, size_t chan = 0) = 0; + /*! * Set the clock configuration. * \param clock_config the new configuration diff --git a/gr-uhd/lib/uhd_single_usrp_source.cc b/gr-uhd/lib/uhd_single_usrp_source.cc index 27a788d96..f7c7fc839 100644 --- a/gr-uhd/lib/uhd_single_usrp_source.cc +++ b/gr-uhd/lib/uhd_single_usrp_source.cc @@ -96,6 +96,10 @@ public: return _dev->get_rx_antennas(chan); } + void set_bandwidth(double bandwidth, size_t chan){ + return _dev->set_rx_bandwidth(bandwidth, chan); + } + void set_clock_config(const uhd::clock_config_t &clock_config){ return _dev->set_clock_config(clock_config); } diff --git a/gr-uhd/lib/uhd_single_usrp_source.h b/gr-uhd/lib/uhd_single_usrp_source.h index c323fbd7e..1b71d2ad5 100644 --- a/gr-uhd/lib/uhd_single_usrp_source.h +++ b/gr-uhd/lib/uhd_single_usrp_source.h @@ -110,6 +110,12 @@ public: */ virtual std::vector get_antennas(size_t chan = 0) = 0; + /*! + * Set the subdevice bandpass filter. + * \param bandwidth the filter bandwidth in Hz + */ + virtual void set_bandwidth(double bandwidth, size_t chan = 0) = 0; + /*! * Set the clock configuration. * \param clock_config the new configuration -- cgit From 13970fed3ae4114689d08bf01cee8b8706d316a5 Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Wed, 20 Oct 2010 12:24:04 -0700 Subject: uhd: added channel param to docstrings --- gr-uhd/lib/uhd_multi_usrp_sink.h | 11 +++++++++++ gr-uhd/lib/uhd_multi_usrp_source.h | 11 +++++++++++ gr-uhd/lib/uhd_single_usrp_sink.h | 9 +++++++++ gr-uhd/lib/uhd_single_usrp_source.h | 9 +++++++++ 4 files changed, 40 insertions(+) (limited to 'gr-uhd/lib') diff --git a/gr-uhd/lib/uhd_multi_usrp_sink.h b/gr-uhd/lib/uhd_multi_usrp_sink.h index 0ccc0fe6c..a94e7bd5a 100644 --- a/gr-uhd/lib/uhd_multi_usrp_sink.h +++ b/gr-uhd/lib/uhd_multi_usrp_sink.h @@ -45,6 +45,7 @@ public: /*! * Set the subdevice specification. * \param spec the subdev spec markup string + * \param mboard the motherboard index 0 to M-1 */ virtual void set_subdev_spec(const std::string &spec, size_t mboard) = 0; @@ -64,12 +65,14 @@ public: /*! * Tune the usrp device to the desired center frequency. * \param freq the desired frequency in Hz + * \param chan the channel index 0 to N-1 * \return a tune result with the actual frequencies */ virtual uhd::tune_result_t set_center_freq(double freq, size_t chan) = 0; /*! * Get the tunable frequency range. + * \param chan the channel index 0 to N-1 * \return the frequency range in Hz */ virtual uhd::freq_range_t get_freq_range(size_t chan) = 0; @@ -77,17 +80,20 @@ public: /*! * Set the gain for the dboard. * \param gain the gain in dB + * \param chan the channel index 0 to N-1 */ virtual void set_gain(float gain, size_t chan) = 0; /*! * Get the actual dboard gain setting. + * \param chan the channel index 0 to N-1 * \return the actual gain in dB */ virtual float get_gain(size_t chan) = 0; /*! * Get the settable gain range. + * \param chan the channel index 0 to N-1 * \return the gain range in dB */ virtual uhd::gain_range_t get_gain_range(size_t chan) = 0; @@ -95,23 +101,27 @@ public: /*! * Set the antenna to use. * \param ant the antenna string + * \param chan the channel index 0 to N-1 */ virtual void set_antenna(const std::string &ant, size_t chan) = 0; /*! * Get the antenna in use. + * \param chan the channel index 0 to N-1 * \return the antenna string */ virtual std::string get_antenna(size_t chan) = 0; /*! * Get a list of possible antennas. + * \param chan the channel index 0 to N-1 * \return a vector of antenna strings */ virtual std::vector get_antennas(size_t chan) = 0; /*! * Set the subdevice bandpass filter. + * \param chan the channel index 0 to N-1 * \param bandwidth the filter bandwidth in Hz */ virtual void set_bandwidth(double bandwidth, size_t chan) = 0; @@ -119,6 +129,7 @@ public: /*! * Set the clock configuration. * \param clock_config the new configuration + * \param mboard the motherboard index 0 to M-1 */ virtual void set_clock_config(const uhd::clock_config_t &clock_config, size_t mboard) = 0; diff --git a/gr-uhd/lib/uhd_multi_usrp_source.h b/gr-uhd/lib/uhd_multi_usrp_source.h index 483ce098c..081c82ee6 100644 --- a/gr-uhd/lib/uhd_multi_usrp_source.h +++ b/gr-uhd/lib/uhd_multi_usrp_source.h @@ -45,6 +45,7 @@ public: /*! * Set the subdevice specification. * \param spec the subdev spec markup string + * \param mboard the motherboard index 0 to M-1 */ virtual void set_subdev_spec(const std::string &spec, size_t mboard) = 0; @@ -64,12 +65,14 @@ public: /*! * Tune the usrp device to the desired center frequency. * \param freq the desired frequency in Hz + * \param chan the channel index 0 to N-1 * \return a tune result with the actual frequencies */ virtual uhd::tune_result_t set_center_freq(double freq, size_t chan) = 0; /*! * Get the tunable frequency range. + * \param chan the channel index 0 to N-1 * \return the frequency range in Hz */ virtual uhd::freq_range_t get_freq_range(size_t chan) = 0; @@ -77,17 +80,20 @@ public: /*! * Set the gain for the dboard. * \param gain the gain in dB + * \param chan the channel index 0 to N-1 */ virtual void set_gain(float gain, size_t chan) = 0; /*! * Get the actual dboard gain setting. + * \param chan the channel index 0 to N-1 * \return the actual gain in dB */ virtual float get_gain(size_t chan) = 0; /*! * Get the settable gain range. + * \param chan the channel index 0 to N-1 * \return the gain range in dB */ virtual uhd::gain_range_t get_gain_range(size_t chan) = 0; @@ -95,17 +101,20 @@ public: /*! * Set the antenna to use. * \param ant the antenna string + * \param chan the channel index 0 to N-1 */ virtual void set_antenna(const std::string &ant, size_t chan) = 0; /*! * Get the antenna in use. + * \param chan the channel index 0 to N-1 * \return the antenna string */ virtual std::string get_antenna(size_t chan) = 0; /*! * Get a list of possible antennas. + * \param chan the channel index 0 to N-1 * \return a vector of antenna strings */ virtual std::vector get_antennas(size_t chan) = 0; @@ -113,12 +122,14 @@ public: /*! * Set the subdevice bandpass filter. * \param bandwidth the filter bandwidth in Hz + * \param chan the channel index 0 to N-1 */ virtual void set_bandwidth(double bandwidth, size_t chan) = 0; /*! * Set the clock configuration. * \param clock_config the new configuration + * \param mboard the motherboard index 0 to M-1 */ virtual void set_clock_config(const uhd::clock_config_t &clock_config, size_t mboard) = 0; diff --git a/gr-uhd/lib/uhd_single_usrp_sink.h b/gr-uhd/lib/uhd_single_usrp_sink.h index 0987685f4..390667df9 100644 --- a/gr-uhd/lib/uhd_single_usrp_sink.h +++ b/gr-uhd/lib/uhd_single_usrp_sink.h @@ -64,12 +64,14 @@ public: /*! * Tune the usrp device to the desired center frequency. * \param freq the desired frequency in Hz + * \param chan the channel index 0 to N-1 * \return a tune result with the actual frequencies */ virtual uhd::tune_result_t set_center_freq(double freq, size_t chan = 0) = 0; /*! * Get the tunable frequency range. + * \param chan the channel index 0 to N-1 * \return the frequency range in Hz */ virtual uhd::freq_range_t get_freq_range(size_t chan = 0) = 0; @@ -77,17 +79,20 @@ public: /*! * Set the gain for the dboard. * \param gain the gain in dB + * \param chan the channel index 0 to N-1 */ virtual void set_gain(float gain, size_t chan = 0) = 0; /*! * Get the actual dboard gain setting. + * \param chan the channel index 0 to N-1 * \return the actual gain in dB */ virtual float get_gain(size_t chan = 0) = 0; /*! * Get the settable gain range. + * \param chan the channel index 0 to N-1 * \return the gain range in dB */ virtual uhd::gain_range_t get_gain_range(size_t chan = 0) = 0; @@ -95,17 +100,20 @@ public: /*! * Set the antenna to use. * \param ant the antenna string + * \param chan the channel index 0 to N-1 */ virtual void set_antenna(const std::string &ant, size_t chan = 0) = 0; /*! * Get the antenna in use. + * \param chan the channel index 0 to N-1 * \return the antenna string */ virtual std::string get_antenna(size_t chan = 0) = 0; /*! * Get a list of possible antennas. + * \param chan the channel index 0 to N-1 * \return a vector of antenna strings */ virtual std::vector get_antennas(size_t chan = 0) = 0; @@ -113,6 +121,7 @@ public: /*! * Set the subdevice bandpass filter. * \param bandwidth the filter bandwidth in Hz + * \param chan the channel index 0 to N-1 */ virtual void set_bandwidth(double bandwidth, size_t chan = 0) = 0; diff --git a/gr-uhd/lib/uhd_single_usrp_source.h b/gr-uhd/lib/uhd_single_usrp_source.h index 1b71d2ad5..415c52e9a 100644 --- a/gr-uhd/lib/uhd_single_usrp_source.h +++ b/gr-uhd/lib/uhd_single_usrp_source.h @@ -64,12 +64,14 @@ public: /*! * Tune the usrp device to the desired center frequency. * \param freq the desired frequency in Hz + * \param chan the channel index 0 to N-1 * \return a tune result with the actual frequencies */ virtual uhd::tune_result_t set_center_freq(double freq, size_t chan = 0) = 0; /*! * Get the tunable frequency range. + * \param chan the channel index 0 to N-1 * \return the frequency range in Hz */ virtual uhd::freq_range_t get_freq_range(size_t chan = 0) = 0; @@ -77,17 +79,20 @@ public: /*! * Set the gain for the dboard. * \param gain the gain in dB + * \param chan the channel index 0 to N-1 */ virtual void set_gain(float gain, size_t chan = 0) = 0; /*! * Get the actual dboard gain setting. + * \param chan the channel index 0 to N-1 * \return the actual gain in dB */ virtual float get_gain(size_t chan = 0) = 0; /*! * Get the settable gain range. + * \param chan the channel index 0 to N-1 * \return the gain range in dB */ virtual uhd::gain_range_t get_gain_range(size_t chan = 0) = 0; @@ -95,17 +100,20 @@ public: /*! * Set the antenna to use. * \param ant the antenna string + * \param chan the channel index 0 to N-1 */ virtual void set_antenna(const std::string &ant, size_t chan = 0) = 0; /*! * Get the antenna in use. + * \param chan the channel index 0 to N-1 * \return the antenna string */ virtual std::string get_antenna(size_t chan = 0) = 0; /*! * Get a list of possible antennas. + * \param chan the channel index 0 to N-1 * \return a vector of antenna strings */ virtual std::vector get_antennas(size_t chan = 0) = 0; @@ -113,6 +121,7 @@ public: /*! * Set the subdevice bandpass filter. * \param bandwidth the filter bandwidth in Hz + * \param chan the channel index 0 to N-1 */ virtual void set_bandwidth(double bandwidth, size_t chan = 0) = 0; -- cgit From 5a2de999da86d48cd7f005d08cc48965cb8c7a65 Mon Sep 17 00:00:00 2001 From: Josh Blum Date: Mon, 25 Oct 2010 16:22:05 -0700 Subject: uhd: move tune functions to tune_request and provide wrapper for simple case --- gr-uhd/lib/uhd_multi_usrp_sink.cc | 7 ++++--- gr-uhd/lib/uhd_multi_usrp_sink.h | 16 +++++++++++++++- gr-uhd/lib/uhd_multi_usrp_source.cc | 7 ++++--- gr-uhd/lib/uhd_multi_usrp_source.h | 16 +++++++++++++++- gr-uhd/lib/uhd_single_usrp_sink.cc | 7 ++++--- gr-uhd/lib/uhd_single_usrp_sink.h | 16 +++++++++++++++- gr-uhd/lib/uhd_single_usrp_source.cc | 7 ++++--- gr-uhd/lib/uhd_single_usrp_source.h | 16 +++++++++++++++- 8 files changed, 76 insertions(+), 16 deletions(-) (limited to 'gr-uhd/lib') diff --git a/gr-uhd/lib/uhd_multi_usrp_sink.cc b/gr-uhd/lib/uhd_multi_usrp_sink.cc index b75a8303c..ee16e2928 100644 --- a/gr-uhd/lib/uhd_multi_usrp_sink.cc +++ b/gr-uhd/lib/uhd_multi_usrp_sink.cc @@ -62,9 +62,10 @@ public: return _dev->get_tx_rate(); } - uhd::tune_result_t set_center_freq(double freq, size_t chan){ - uhd::tune_result_t tr = _dev->set_tx_freq(freq, chan); - return tr; + uhd::tune_result_t set_center_freq( + const uhd::tune_request_t tune_request, size_t chan + ){ + return _dev->set_tx_freq(tune_request, chan); } uhd::freq_range_t get_freq_range(size_t chan){ diff --git a/gr-uhd/lib/uhd_multi_usrp_sink.h b/gr-uhd/lib/uhd_multi_usrp_sink.h index a94e7bd5a..370e59d0e 100644 --- a/gr-uhd/lib/uhd_multi_usrp_sink.h +++ b/gr-uhd/lib/uhd_multi_usrp_sink.h @@ -64,11 +64,25 @@ public: /*! * Tune the usrp device to the desired center frequency. + * \param tune_request the tune request instructions + * \param chan the channel index 0 to N-1 + * \return a tune result with the actual frequencies + */ + virtual uhd::tune_result_t set_center_freq( + const uhd::tune_request_t tune_request, size_t chan + ) = 0; + + /*! + * Tune the usrp device to the desired center frequency. + * This is a wrapper around set center freq so that in this case, + * the user can pass a single frequency in the call through swig. * \param freq the desired frequency in Hz * \param chan the channel index 0 to N-1 * \return a tune result with the actual frequencies */ - virtual uhd::tune_result_t set_center_freq(double freq, size_t chan) = 0; + uhd::tune_result_t set_center_freq(double freq, size_t chan){ + return set_center_freq(uhd::tune_request_t(freq), chan); + } /*! * Get the tunable frequency range. diff --git a/gr-uhd/lib/uhd_multi_usrp_source.cc b/gr-uhd/lib/uhd_multi_usrp_source.cc index 226e8b86f..029a763e3 100644 --- a/gr-uhd/lib/uhd_multi_usrp_source.cc +++ b/gr-uhd/lib/uhd_multi_usrp_source.cc @@ -63,9 +63,10 @@ public: return _dev->get_rx_rate(); } - uhd::tune_result_t set_center_freq(double freq, size_t chan){ - uhd::tune_result_t tr = _dev->set_rx_freq(freq, chan); - return tr; + uhd::tune_result_t set_center_freq( + const uhd::tune_request_t tune_request, size_t chan + ){ + return _dev->set_rx_freq(tune_request, chan); } uhd::freq_range_t get_freq_range(size_t chan){ diff --git a/gr-uhd/lib/uhd_multi_usrp_source.h b/gr-uhd/lib/uhd_multi_usrp_source.h index 081c82ee6..b3cbdae1f 100644 --- a/gr-uhd/lib/uhd_multi_usrp_source.h +++ b/gr-uhd/lib/uhd_multi_usrp_source.h @@ -64,11 +64,25 @@ public: /*! * Tune the usrp device to the desired center frequency. + * \param tune_request the tune request instructions + * \param chan the channel index 0 to N-1 + * \return a tune result with the actual frequencies + */ + virtual uhd::tune_result_t set_center_freq( + const uhd::tune_request_t tune_request, size_t chan + ) = 0; + + /*! + * Tune the usrp device to the desired center frequency. + * This is a wrapper around set center freq so that in this case, + * the user can pass a single frequency in the call through swig. * \param freq the desired frequency in Hz * \param chan the channel index 0 to N-1 * \return a tune result with the actual frequencies */ - virtual uhd::tune_result_t set_center_freq(double freq, size_t chan) = 0; + uhd::tune_result_t set_center_freq(double freq, size_t chan){ + return set_center_freq(uhd::tune_request_t(freq), chan); + } /*! * Get the tunable frequency range. diff --git a/gr-uhd/lib/uhd_single_usrp_sink.cc b/gr-uhd/lib/uhd_single_usrp_sink.cc index 24981a59a..622f506b5 100644 --- a/gr-uhd/lib/uhd_single_usrp_sink.cc +++ b/gr-uhd/lib/uhd_single_usrp_sink.cc @@ -62,9 +62,10 @@ public: return _dev->get_tx_rate(); } - uhd::tune_result_t set_center_freq(double freq, size_t chan){ - uhd::tune_result_t tr = _dev->set_tx_freq(freq, chan); - return tr; + uhd::tune_result_t set_center_freq( + const uhd::tune_request_t tune_request, size_t chan + ){ + return _dev->set_tx_freq(tune_request, chan); } uhd::freq_range_t get_freq_range(size_t chan){ diff --git a/gr-uhd/lib/uhd_single_usrp_sink.h b/gr-uhd/lib/uhd_single_usrp_sink.h index 390667df9..a4c4e6452 100644 --- a/gr-uhd/lib/uhd_single_usrp_sink.h +++ b/gr-uhd/lib/uhd_single_usrp_sink.h @@ -63,11 +63,25 @@ public: /*! * Tune the usrp device to the desired center frequency. + * \param tune_request the tune request instructions + * \param chan the channel index 0 to N-1 + * \return a tune result with the actual frequencies + */ + virtual uhd::tune_result_t set_center_freq( + const uhd::tune_request_t tune_request, size_t chan + ) = 0; + + /*! + * Tune the usrp device to the desired center frequency. + * This is a wrapper around set center freq so that in this case, + * the user can pass a single frequency in the call through swig. * \param freq the desired frequency in Hz * \param chan the channel index 0 to N-1 * \return a tune result with the actual frequencies */ - virtual uhd::tune_result_t set_center_freq(double freq, size_t chan = 0) = 0; + uhd::tune_result_t set_center_freq(double freq, size_t chan){ + return set_center_freq(uhd::tune_request_t(freq), chan); + } /*! * Get the tunable frequency range. diff --git a/gr-uhd/lib/uhd_single_usrp_source.cc b/gr-uhd/lib/uhd_single_usrp_source.cc index f7c7fc839..907e8be54 100644 --- a/gr-uhd/lib/uhd_single_usrp_source.cc +++ b/gr-uhd/lib/uhd_single_usrp_source.cc @@ -63,9 +63,10 @@ public: return _dev->get_rx_rate(); } - uhd::tune_result_t set_center_freq(double freq, size_t chan){ - uhd::tune_result_t tr = _dev->set_rx_freq(freq, chan); - return tr; + uhd::tune_result_t set_center_freq( + const uhd::tune_request_t tune_request, size_t chan + ){ + return _dev->set_rx_freq(tune_request, chan); } uhd::freq_range_t get_freq_range(size_t chan){ diff --git a/gr-uhd/lib/uhd_single_usrp_source.h b/gr-uhd/lib/uhd_single_usrp_source.h index 415c52e9a..495f8c611 100644 --- a/gr-uhd/lib/uhd_single_usrp_source.h +++ b/gr-uhd/lib/uhd_single_usrp_source.h @@ -63,11 +63,25 @@ public: /*! * Tune the usrp device to the desired center frequency. + * \param tune_request the tune request instructions + * \param chan the channel index 0 to N-1 + * \return a tune result with the actual frequencies + */ + virtual uhd::tune_result_t set_center_freq( + const uhd::tune_request_t tune_request, size_t chan + ) = 0; + + /*! + * Tune the usrp device to the desired center frequency. + * This is a wrapper around set center freq so that in this case, + * the user can pass a single frequency in the call through swig. * \param freq the desired frequency in Hz * \param chan the channel index 0 to N-1 * \return a tune result with the actual frequencies */ - virtual uhd::tune_result_t set_center_freq(double freq, size_t chan = 0) = 0; + uhd::tune_result_t set_center_freq(double freq, size_t chan){ + return set_center_freq(uhd::tune_request_t(freq), chan); + } /*! * Get the tunable frequency range. -- cgit