| <refentry id="vidioc-enum-freq-bands"> | |
| <refmeta> | |
| <refentrytitle>ioctl VIDIOC_ENUM_FREQ_BANDS</refentrytitle> | |
| &manvol; | |
| </refmeta> | |
| <refnamediv> | |
| <refname>VIDIOC_ENUM_FREQ_BANDS</refname> | |
| <refpurpose>Enumerate supported frequency bands</refpurpose> | |
| </refnamediv> | |
| <refsynopsisdiv> | |
| <funcsynopsis> | |
| <funcprototype> | |
| <funcdef>int <function>ioctl</function></funcdef> | |
| <paramdef>int <parameter>fd</parameter></paramdef> | |
| <paramdef>int <parameter>request</parameter></paramdef> | |
| <paramdef>struct v4l2_frequency_band | |
| *<parameter>argp</parameter></paramdef> | |
| </funcprototype> | |
| </funcsynopsis> | |
| </refsynopsisdiv> | |
| <refsect1> | |
| <title>Arguments</title> | |
| <variablelist> | |
| <varlistentry> | |
| <term><parameter>fd</parameter></term> | |
| <listitem> | |
| <para>&fd;</para> | |
| </listitem> | |
| </varlistentry> | |
| <varlistentry> | |
| <term><parameter>request</parameter></term> | |
| <listitem> | |
| <para>VIDIOC_ENUM_FREQ_BANDS</para> | |
| </listitem> | |
| </varlistentry> | |
| <varlistentry> | |
| <term><parameter>argp</parameter></term> | |
| <listitem> | |
| <para></para> | |
| </listitem> | |
| </varlistentry> | |
| </variablelist> | |
| </refsect1> | |
| <refsect1> | |
| <title>Description</title> | |
| <note> | |
| <title>Experimental</title> | |
| <para>This is an <link linkend="experimental"> experimental </link> | |
| interface and may change in the future.</para> | |
| </note> | |
| <para>Enumerates the frequency bands that a tuner or modulator supports. | |
| To do this applications initialize the <structfield>tuner</structfield>, | |
| <structfield>type</structfield> and <structfield>index</structfield> fields, | |
| and zero out the <structfield>reserved</structfield> array of a &v4l2-frequency-band; and | |
| call the <constant>VIDIOC_ENUM_FREQ_BANDS</constant> ioctl with a pointer | |
| to this structure.</para> | |
| <para>This ioctl is supported if the <constant>V4L2_TUNER_CAP_FREQ_BANDS</constant> capability | |
| of the corresponding tuner/modulator is set.</para> | |
| <table pgwide="1" frame="none" id="v4l2-frequency-band"> | |
| <title>struct <structname>v4l2_frequency_band</structname></title> | |
| <tgroup cols="3"> | |
| &cs-str; | |
| <tbody valign="top"> | |
| <row> | |
| <entry>__u32</entry> | |
| <entry><structfield>tuner</structfield></entry> | |
| <entry>The tuner or modulator index number. This is the | |
| same value as in the &v4l2-input; <structfield>tuner</structfield> | |
| field and the &v4l2-tuner; <structfield>index</structfield> field, or | |
| the &v4l2-output; <structfield>modulator</structfield> field and the | |
| &v4l2-modulator; <structfield>index</structfield> field.</entry> | |
| </row> | |
| <row> | |
| <entry>__u32</entry> | |
| <entry><structfield>type</structfield></entry> | |
| <entry>The tuner type. This is the same value as in the | |
| &v4l2-tuner; <structfield>type</structfield> field. The type must be set | |
| to <constant>V4L2_TUNER_RADIO</constant> for <filename>/dev/radioX</filename> | |
| device nodes, and to <constant>V4L2_TUNER_ANALOG_TV</constant> | |
| for all others. Set this field to <constant>V4L2_TUNER_RADIO</constant> for | |
| modulators (currently only radio modulators are supported). | |
| See <xref linkend="v4l2-tuner-type" /></entry> | |
| </row> | |
| <row> | |
| <entry>__u32</entry> | |
| <entry><structfield>index</structfield></entry> | |
| <entry>Identifies the frequency band, set by the application.</entry> | |
| </row> | |
| <row> | |
| <entry>__u32</entry> | |
| <entry><structfield>capability</structfield></entry> | |
| <entry spanname="hspan">The tuner/modulator capability flags for | |
| this frequency band, see <xref linkend="tuner-capability" />. The <constant>V4L2_TUNER_CAP_LOW</constant> | |
| capability must be the same for all frequency bands of the selected tuner/modulator. | |
| So either all bands have that capability set, or none of them have that capability.</entry> | |
| </row> | |
| <row> | |
| <entry>__u32</entry> | |
| <entry><structfield>rangelow</structfield></entry> | |
| <entry spanname="hspan">The lowest tunable frequency in | |
| units of 62.5 kHz, or if the <structfield>capability</structfield> | |
| flag <constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5 | |
| Hz, for this frequency band.</entry> | |
| </row> | |
| <row> | |
| <entry>__u32</entry> | |
| <entry><structfield>rangehigh</structfield></entry> | |
| <entry spanname="hspan">The highest tunable frequency in | |
| units of 62.5 kHz, or if the <structfield>capability</structfield> | |
| flag <constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5 | |
| Hz, for this frequency band.</entry> | |
| </row> | |
| <row> | |
| <entry>__u32</entry> | |
| <entry><structfield>modulation</structfield></entry> | |
| <entry spanname="hspan">The supported modulation systems of this frequency band. | |
| See <xref linkend="band-modulation" />. Note that currently only one | |
| modulation system per frequency band is supported. More work will need to | |
| be done if multiple modulation systems are possible. Contact the | |
| linux-media mailing list (&v4l-ml;) if you need that functionality.</entry> | |
| </row> | |
| <row> | |
| <entry>__u32</entry> | |
| <entry><structfield>reserved</structfield>[9]</entry> | |
| <entry>Reserved for future extensions. Applications and drivers | |
| must set the array to zero.</entry> | |
| </row> | |
| </tbody> | |
| </tgroup> | |
| </table> | |
| <table pgwide="1" frame="none" id="band-modulation"> | |
| <title>Band Modulation Systems</title> | |
| <tgroup cols="3"> | |
| &cs-def; | |
| <tbody valign="top"> | |
| <row> | |
| <entry><constant>V4L2_BAND_MODULATION_VSB</constant></entry> | |
| <entry>0x02</entry> | |
| <entry>Vestigial Sideband modulation, used for analog TV.</entry> | |
| </row> | |
| <row> | |
| <entry><constant>V4L2_BAND_MODULATION_FM</constant></entry> | |
| <entry>0x04</entry> | |
| <entry>Frequency Modulation, commonly used for analog radio.</entry> | |
| </row> | |
| <row> | |
| <entry><constant>V4L2_BAND_MODULATION_AM</constant></entry> | |
| <entry>0x08</entry> | |
| <entry>Amplitude Modulation, commonly used for analog radio.</entry> | |
| </row> | |
| </tbody> | |
| </tgroup> | |
| </table> | |
| </refsect1> | |
| <refsect1> | |
| &return-value; | |
| <variablelist> | |
| <varlistentry> | |
| <term><errorcode>EINVAL</errorcode></term> | |
| <listitem> | |
| <para>The <structfield>tuner</structfield> or <structfield>index</structfield> | |
| is out of bounds or the <structfield>type</structfield> field is wrong.</para> | |
| </listitem> | |
| </varlistentry> | |
| </variablelist> | |
| </refsect1> | |
| </refentry> |