[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] [gnuradio] 04/37: uhd: Updated docs, in particular for
From: |
git |
Subject: |
[Commit-gnuradio] [gnuradio] 04/37: uhd: Updated docs, in particular for the command interface |
Date: |
Thu, 17 Jul 2014 20:23:39 +0000 (UTC) |
This is an automated email from the git hooks/post-receive script.
trondeau pushed a commit to branch master
in repository gnuradio.
commit 1eaa96b61b495dc669a69fa660a44ec86cf057cc
Author: Martin Braun <address@hidden>
Date: Wed Jul 2 18:35:37 2014 +0200
uhd: Updated docs, in particular for the command interface
---
gr-uhd/doc/uhd.dox | 56 ++++++++++++++++++++++++++++---
gr-uhd/include/gnuradio/uhd/usrp_sink.h | 46 +++++++++++--------------
gr-uhd/include/gnuradio/uhd/usrp_source.h | 42 +++++++----------------
3 files changed, 83 insertions(+), 61 deletions(-)
diff --git a/gr-uhd/doc/uhd.dox b/gr-uhd/doc/uhd.dox
index 538c98c..7a71b24 100644
--- a/gr-uhd/doc/uhd.dox
+++ b/gr-uhd/doc/uhd.dox
@@ -1,4 +1,3 @@
-// vim: set ft=doxygen:
/*! \page page_uhd UHD Interface
\section Introduction
@@ -22,15 +21,61 @@ by using:
\endcode
-\section External Documentation
+\section uhd_external_docs External Documentation
-Ettus Research keeps the comprehensive documentation to the underlying UHD
driver, which can be found:
+Ettus Research maintains the comprehensive documentation to the underlying UHD
driver, which can be found at:
- http://files.ettus.com/uhd_docs/manual/html/
+http://files.ettus.com/uhd_docs/manual/html/
The UHD Doxygen page is located at:
- http://files.ettus.com/uhd_docs/doxygen/html/index.html
+http://files.ettus.com/uhd_docs/doxygen/html/index.html
+
+
+\section uhd_command_syntax Command Syntax
+
+The UHD sink and source can be controlled by a message port. These message
ports
+take commands, which are PMTs formatted as such:
+
+ (command, value, [channel])
+
+A command PMT is either a pair or a tuple. If it's a tuple, it must have
either 2 or 3 elements.
+Any other type of PMT will throw an error.
+
+The `command` part is a string, which defines the command. `value` is a PMT
whose format depends
+on the command issued. Finally, `channel` is an integer PMT value that
specifies which channel
+this command shall be specified on. If this value is omitted, then it either
applies this command
+to all channels or channel zero, depending on which command is used.
+
+Example:
+\code{.cpp}
+pmt::pmt_t command = pmt::cons( // We make a pair, but pmt::make_tuple() is
also valid!
+ pmt::mp("freq"), // Use the 'freq' command, which sets the frequency
+ pmt::mp(1.1e9) // Set the frequency to 1.1 GHz
+);
+\endcode
+
+This PMT would set the frequency to 1.1 GHz on all channels. We make use of
the pmt::mp() function
+which automatically sets the PMT types. Assume we only want to set the
frequency on channel 1
+(i.e. the second channel). In this case, we must construct a tuple:
+\code{.cpp}
+pmt::pmt_t command = pmt::make_tuple(
+ pmt::mp("freq"), // Use the 'freq' command, which sets the frequency
+ pmt::mp(1.1e9) // Set the frequency to 1.1 GHz
+ pmt::mp(1) // Select channel 1
+);
+\endcode
+
+
+\subsection uhd_command_syntax_cmds Common commands
+
+The following commands are understood by both UHD Source and Sink:
+
+Command name | Value Type | Description
+-------------|------------|-------------------------------------------------------------
+`freq` | double | Sets the Tx or Rx frequency. Defaults to all
channels.
+`lo_offset` | double | Sets an LO offset. Defaults to all channels.
+`gain` | double | Sets the Tx or Rx gain (in dB). Defaults to all
channels.
\section Configuring a UHD object
@@ -100,3 +145,4 @@ resampler to take care of the difference.
\endcode
*/
+// vim: set ft=doxygen:
diff --git a/gr-uhd/include/gnuradio/uhd/usrp_sink.h
b/gr-uhd/include/gnuradio/uhd/usrp_sink.h
index 35bb2e4..2afe634 100644
--- a/gr-uhd/include/gnuradio/uhd/usrp_sink.h
+++ b/gr-uhd/include/gnuradio/uhd/usrp_sink.h
@@ -62,18 +62,17 @@ namespace gr {
/*!
* \brief DEPRECATED Make a new USRP sink block using the deprecated
io_type_t.
+ * \ingroup uhd_blk
*
* This function will be removed in the future. Please use the other
make function,
- * gr::uhd::make(const ::uhd::device_addr_t, const ::uhd::stream_args_t,
const std::string).
- *
- * \ingroup uhd_blk
+ * gr::uhd::usrp_sink::make(const ::uhd::device_addr_t, const
::uhd::stream_args_t, const std::string).
*/
static sptr make(const ::uhd::device_addr_t &device_addr,
const ::uhd::io_type_t &io_type,
size_t num_channels);
/*!
- * \brief Make a new USRP sink block.
+ * \brief Make a new USRP sink block (usually a radio transmitter).
*
* The USRP sink block reads a stream and transmits the samples.
* The sink block also provides API calls for transmitter settings.
@@ -86,60 +85,55 @@ namespace gr {
* - pmt::string_to_symbol("tx_time")
* - pmt::string_to_symbol("tx_freq")
* - pmt::string_to_symbol("tx_command")
- * - pmt::string_to_symbol(length_tag_name)
+ * - pmt::string_to_symbol(tsb_tag_name)
*
* Any other tag will be ignored.
*
* The sob and eob (start and end of burst) tag values are pmt booleans.
* When present, burst tags should be set to true (pmt::PMT_T).
*
- * If length_tag_name is not an empty string, all "tx_sob" and "tx_eob"
+ * If `tsb_tag_name` is not an empty string, all "tx_sob" and "tx_eob"
* tags will be ignored, and the input is assumed to a tagged stream,
* as described in \ref page_tagged_stream_blocks.
- * The length tag value should be a PMT long specifying the number
- * of samples contained in the corresponding tagged stream.
*
* If sob/eob tags or length tags are used, this block understands that
* the data is bursty, and will configure the USRP to make sure there's
- * no underruns etc.
+ * no underruns after transmitting the final sample of a burst.
*
* The timestamp tag value is a PMT tuple of the following:
- * (uint64 seconds, and double fractional seconds).
+ * (uint64 seconds, double fractional seconds).
*
- * The tx_freq tag has to be a double, and will issue a tune command to
the USRP
+ * The tx_freq tag has to be a double or a pair of form (channel,
frequency),
+ * with frequency being a double and channel being an integer.
+ * This tag will trigger a tune command to the USRP
* to the given frequency, if possible. Note that oscillators need some
time
* to stabilize after this! Don't expect clean data to be sent
immediately after this command.
+ * If channel is omitted, and only a double is given, it will set this
frequency to all
+ * channels.
*
* The command tag can carry a PMT command. See the following section.
*
- * \section uhd_commands Command interface
+ * \section uhd_tx_commands Command interface
*
* There are two ways of passing commands to this block:
- * 1) tx_command tag. The command is attached to a sample, and will
executed
+ * 1. tx_command tag. The command is attached to a sample, and will
executed
* before the sample is transmitted, and after the previous sample.
- * 2) The 'command' message port. The command is executed asynchronously,
+ * 2. The 'command' message port. The command is executed asynchronously,
* as soon as possible.
*
- * In both cases, the payload of the command is a PMT pair, with the
first
- * item ('car') being the command name, and second ('cdr') the command
value.
- *
- * Command name | Command value
- *
-------------|--------------------------------------------------------------------------
- * `freq` | Tuple: (chan, new_freq). Requests a tune to `new_freq`
on channel `chan`.
- * `lo_offset` | Tuple: (chan, lo_offset). Adds a LO offset on channel
`chan`.
- * `gain` | Tuple: (chan, gain). Requests a gain change to `gain`
on channel `chan`.
+ * In both cases, the payload of the command is a PMT command, as
described
+ * in Section \ref uhd_command_syntax.
*
- * See the UHD manual for more detailed documentation:
- * http://code.ettus.com/redmine/ettus/projects/uhd/wiki
+ * For a more general description of the gr-uhd components, see \ref
page_uhd.
*
* \param device_addr the address to identify the hardware
* \param stream_args the IO format and channel specification
- * \param length_tag_name the name of the tag identifying tagged stream
length
+ * \param tsb_tag_name the name of the tag identifying tagged stream
length
* \return a new USRP sink block object
*/
static sptr make(const ::uhd::device_addr_t &device_addr,
const ::uhd::stream_args_t &stream_args,
- const std::string &length_tag_name = "");
+ const std::string &tsb_tag_name = "");
/*!
* Set the start time for outgoing samples.
diff --git a/gr-uhd/include/gnuradio/uhd/usrp_source.h
b/gr-uhd/include/gnuradio/uhd/usrp_source.h
index f330ee0..699d028 100644
--- a/gr-uhd/include/gnuradio/uhd/usrp_source.h
+++ b/gr-uhd/include/gnuradio/uhd/usrp_source.h
@@ -27,6 +27,7 @@
#include <gnuradio/sync_block.h>
#include <uhd/usrp/multi_usrp.hpp>
+// TODO In 3.8, UHD 3.4 will be required and we can remove all these ifdefs
#ifndef INCLUDED_UHD_STREAM_HPP
namespace uhd {
struct GR_UHD_API stream_args_t
@@ -60,41 +61,18 @@ namespace gr {
typedef boost::shared_ptr<usrp_source> sptr;
/*!
- * \brief Make a new USRP source block.
+ * \brief DEPRECATED Make a new USRP source block using the deprecated
io_type_t.
* \ingroup uhd_blk
*
- * The USRP source block receives samples and writes to a stream.
- * The source block also provides API calls for receiver settings.
- *
- * RX Stream tagging:
- *
- * The following tag keys will be produced by the work function:
- * - pmt::string_to_symbol("rx_time")
- * - pmt::string_to_symbol("rx_rate")
- * - pmt::string_to_symbol("rx_freq")
- *
- * The timstamp tag value is a pmt tuple of the following:
- * (uint64 seconds, and double fractional seconds).
- * A timestamp tag is produced at start() and after overflows.
- *
- * The sample rate and center frequency tags are doubles,
- * representing the sample rate in Sps and frequency in Hz.
- * These tags are produced upon the user changing parameters.
- *
- * See the UHD manual for more detailed documentation:
- * http://code.ettus.com/redmine/ettus/projects/uhd/wiki
- *
- * \param device_addr the address to identify the hardware
- * \param io_type the desired output data type
- * \param num_channels number of stream from the device
- * \return a new USRP source block object
+ * This function will be removed in the future. Please use the other
make function,
+ * gr::uhd::make(const ::uhd::device_addr_t, const ::uhd::stream_args_t,
const std::string).
*/
static sptr make(const ::uhd::device_addr_t &device_addr,
const ::uhd::io_type_t &io_type,
size_t num_channels);
/*!
- * \brief Make a new USRP source block.
+ * \brief Make a new USRP source block (usually a radio receiver).
*
* The USRP source block receives samples and writes to a stream.
* The source block also provides API calls for receiver settings.
@@ -104,12 +82,16 @@ namespace gr {
* The following tag keys will be produced by the work function:
* - pmt::string_to_symbol("rx_time")
*
- * The timstamp tag value is a pmt tuple of the following:
+ * The timestamp tag value is a pmt tuple of the following:
* (uint64 seconds, and double fractional seconds).
* A timestamp tag is produced at start() and after overflows.
*
- * See the UHD manual for more detailed documentation:
- * http://code.ettus.com/redmine/ettus/projects/uhd/wiki
+ * \section uhd_rx_command_iface Command interface
+ *
+ * This block has a message port, which consumes UHD PMT commands.
+ * For a description of the command syntax, see Section \ref
uhd_command_syntax.
+ *
+ * For a more general description of the gr-uhd components, see \ref
page_uhd.
*
* \param device_addr the address to identify the hardware
* \param stream_args the IO format and channel specification
- [Commit-gnuradio] [gnuradio] branch master updated (2bb2b31 -> 001ab47), git, 2014/07/17
- [Commit-gnuradio] [gnuradio] 08/37: uhd: Added more type checking and flexibility to commands and tags, git, 2014/07/17
- [Commit-gnuradio] [gnuradio] 07/37: uhd: Added GRC bindings for command interface, git, 2014/07/17
- [Commit-gnuradio] [gnuradio] 02/37: digital: using new var_value for constellation variables, git, 2014/07/17
- [Commit-gnuradio] [gnuradio] 01/37: grc: design time values for object-like variables, git, 2014/07/17
- [Commit-gnuradio] [gnuradio] 04/37: uhd: Updated docs, in particular for the command interface,
git <=
- [Commit-gnuradio] [gnuradio] 03/37: grc: allow blocks to dynamically hide some of their ports, git, 2014/07/17
- [Commit-gnuradio] [gnuradio] 10/37: uhd: Added checks for lock sensors., git, 2014/07/17
- [Commit-gnuradio] [gnuradio] 17/37: qtgui: allows users to set title and unit of Y axis for qt time plotter., git, 2014/07/17
- [Commit-gnuradio] [gnuradio] 05/37: uhd: Added command interface to uhd source, modified command syntax, git, 2014/07/17
- [Commit-gnuradio] [gnuradio] 16/37: qtgui: adding ability to set grid on/off from grc properties dialog boxes for all qtgui sinks except the "sink" which doesn't support this., git, 2014/07/17
- [Commit-gnuradio] [gnuradio] 12/37: Merge remote-tracking branch 'gnuradio-wg-grc/grc_variable_blocks', git, 2014/07/17
- [Commit-gnuradio] [gnuradio] 22/37: Merge remote-tracking branch 'gnuradio-wg-grc/grc_port_view_options', git, 2014/07/17
- [Commit-gnuradio] [gnuradio] 09/37: uhd: Added example for re-tuning through messages, git, 2014/07/17
- [Commit-gnuradio] [gnuradio] 06/37: uhd: Refactored common stuff from usrp sink and source, git, 2014/07/17
- [Commit-gnuradio] [gnuradio] 23/37: qtgui: time raster display updates., git, 2014/07/17