This file is indexed.

/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 */