/usr/include/gnuradio/uhd/usrp_sink.h is in gnuradio-dev 3.7.9.1-2ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 | /* -*- c++ -*- */
/*
* Copyright 2010-2015 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_GR_UHD_USRP_SINK_H
#define INCLUDED_GR_UHD_USRP_SINK_H
#include <gnuradio/uhd/usrp_block.h>
// 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
{
stream_args_t(const std::string &cpu = "",
const std::string &otw = "")
{
cpu_format = cpu;
otw_format = otw;
}
std::string cpu_format;
std::string otw_format;
device_addr_t args;
std::vector<size_t> channels;
};
}
# define INCLUDED_UHD_STREAM_HPP
#else
# define GR_UHD_USE_STREAM_API
#endif
namespace gr {
namespace uhd {
class uhd_usrp_sink;
/*! USRP Sink -- Radio Transmitter
* \ingroup uhd_blk
*
*
* The USRP sink block reads a stream and transmits the samples.
* The sink block also provides API calls for transmitter settings.
* See also gr::uhd::usrp_block for more public API calls.
*
* \section uhd_tx_tagging TX Stream tagging
*
* The following tag keys will be consumed by the work function:
* - pmt::string_to_symbol("tx_sob")
* - pmt::string_to_symbol("tx_eob")
* - pmt::string_to_symbol("tx_time")
* - pmt::string_to_symbol("tx_freq")
* - pmt::string_to_symbol("tx_command")
* - pmt::string_to_symbol(tsb_tag_name)
*
* Any other tag will be ignored.
*
* \section uhd_tx_burstys Bursty Transmission
*
* There are multiple ways to do bursty transmission without triggering
* underruns:
* - Using SOB/EOB tags
* - Using tagged streams (See \ref page_tagged_stream_blocks)
*
* 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 `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.
*
* 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 after transmitting the final sample of a burst.
*
* \section uhd_tx_time Timestamps
*
* The timestamp tag value is a PMT tuple of the following:
* (uint64 seconds, double fractional seconds).
*
* 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_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
* before the sample is transmitted, and after the previous sample.
* 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 command, as described
* in Section \ref uhd_command_syntax.
*
* For a more general description of the gr-uhd components, see \ref page_uhd.
*/
class GR_UHD_API usrp_sink : virtual public usrp_block
{
public:
// gr::uhd::usrp_sink::sptr
typedef boost::shared_ptr<usrp_sink> sptr;
/*!
* \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::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);
/*!
* \param device_addr the address to identify the hardware
* \param stream_args the IO format and channel specification
* \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 &tsb_tag_name = "");
/*!
* Set the start time for outgoing samples.
* To control when samples are transmitted,
* set this value before starting the flow graph.
* The value is cleared after each run.
* When not specified, the start time will be:
* - Immediately for the one channel case
* - in the near future for multi-channel
*
* \param time the absolute time for transmission to begin
*/
virtual void set_start_time(const ::uhd::time_spec_t &time) = 0;
/*!
* Returns identifying information about this USRP's configuration.
* Returns motherboard ID, name, and serial.
* Returns daughterboard TX ID, subdev name and spec, serial, and antenna.
* \param chan channel index 0 to N-1
* \return TX info
*/
virtual ::uhd::dict<std::string, std::string> get_usrp_info(size_t chan = 0) = 0;
/*!
* Set a constant DC offset value.
* The value is complex to control both I and Q.
* \param offset the dc offset (1.0 is full-scale)
* \param chan the channel index 0 to N-1
*/
virtual void set_dc_offset(const std::complex<double> &offset,
size_t chan = 0) = 0;
/*!
* Set the RX frontend IQ imbalance correction.
* Use this to adjust the magnitude and phase of I and Q.
*
* \param correction the complex correction (1.0 is full-scale)
* \param chan the channel index 0 to N-1
*/
virtual void set_iq_balance(const std::complex<double> &correction,
size_t chan = 0) = 0;
};
} /* namespace uhd */
} /* namespace gr */
#endif /* INCLUDED_GR_UHD_USRP_SINK_H */
|