| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- <title>Software Defined Radio Interface (SDR)</title>
- <note>
- <title>Experimental</title>
- <para>This is an <link linkend="experimental"> experimental </link>
- interface and may change in the future.</para>
- </note>
- <para>
- SDR is an abbreviation of Software Defined Radio, the radio device
- which uses application software for modulation or demodulation. This interface
- is intended for controlling and data streaming of such devices.
- </para>
- <para>
- SDR devices are accessed through character device special files named
- <filename>/dev/swradio0</filename> to <filename>/dev/swradio255</filename>
- with major number 81 and dynamically allocated minor numbers 0 to 255.
- </para>
- <section>
- <title>Querying Capabilities</title>
- <para>
- Devices supporting the SDR receiver interface set the
- <constant>V4L2_CAP_SDR_CAPTURE</constant> and
- <constant>V4L2_CAP_TUNER</constant> flag in the
- <structfield>capabilities</structfield> field of &v4l2-capability;
- returned by the &VIDIOC-QUERYCAP; ioctl. That flag means the device has an
- Analog to Digital Converter (ADC), which is a mandatory element for the SDR receiver.
- At least one of the read/write, streaming or asynchronous I/O methods must
- be supported.
- </para>
- </section>
- <section>
- <title>Supplemental Functions</title>
- <para>
- SDR devices can support <link linkend="control">controls</link>, and must
- support the <link linkend="tuner">tuner</link> ioctls. Tuner ioctls are used
- for setting the ADC sampling rate (sampling frequency) and the possible RF tuner
- frequency.
- </para>
- <para>
- The <constant>V4L2_TUNER_ADC</constant> tuner type is used for ADC tuners, and
- the <constant>V4L2_TUNER_RF</constant> tuner type is used for RF tuners. The
- tuner index of the RF tuner (if any) must always follow the ADC tuner index.
- Normally the ADC tuner is #0 and the RF tuner is #1.
- </para>
- <para>
- The &VIDIOC-S-HW-FREQ-SEEK; ioctl is not supported.
- </para>
- </section>
- <section>
- <title>Data Format Negotiation</title>
- <para>
- The SDR capture device uses the <link linkend="format">format</link> ioctls to
- select the capture format. Both the sampling resolution and the data streaming
- format are bound to that selectable format. In addition to the basic
- <link linkend="format">format</link> ioctls, the &VIDIOC-ENUM-FMT; ioctl
- must be supported as well.
- </para>
- <para>
- To use the <link linkend="format">format</link> ioctls applications set the
- <structfield>type</structfield> field of a &v4l2-format; to
- <constant>V4L2_BUF_TYPE_SDR_CAPTURE</constant> and use the &v4l2-sdr-format;
- <structfield>sdr</structfield> member of the <structfield>fmt</structfield>
- union as needed per the desired operation.
- Currently there is two fields, <structfield>pixelformat</structfield> and
- <structfield>buffersize</structfield>, of struct &v4l2-sdr-format; which are
- used. Content of the <structfield>pixelformat</structfield> is V4L2 FourCC
- code of the data format. The <structfield>buffersize</structfield> field is
- maximum buffer size in bytes required for data transfer, set by the driver in
- order to inform application.
- </para>
- <table pgwide="1" frame="none" id="v4l2-sdr-format">
- <title>struct <structname>v4l2_sdr_format</structname></title>
- <tgroup cols="3">
- &cs-str;
- <tbody valign="top">
- <row>
- <entry>__u32</entry>
- <entry><structfield>pixelformat</structfield></entry>
- <entry>
- The data format or type of compression, set by the application. This is a
- little endian <link linkend="v4l2-fourcc">four character code</link>.
- V4L2 defines SDR formats in <xref linkend="sdr-formats" />.
- </entry>
- </row>
- <row>
- <entry>__u32</entry>
- <entry><structfield>buffersize</structfield></entry>
- <entry>
- Maximum size in bytes required for data. Value is set by the driver.
- </entry>
- </row>
- <row>
- <entry>__u8</entry>
- <entry><structfield>reserved[24]</structfield></entry>
- <entry>This array is reserved for future extensions.
- Drivers and applications must set it to zero.</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- <para>
- An SDR device may support <link linkend="rw">read/write</link>
- and/or streaming (<link linkend="mmap">memory mapping</link>
- or <link linkend="userp">user pointer</link>) I/O.
- </para>
- </section>
|