2009-09-13 22:16:04 -03:00
<refentry id= "vidioc-g-frequency" >
<refmeta >
<refentrytitle > ioctl VIDIOC_G_FREQUENCY, VIDIOC_S_FREQUENCY</refentrytitle>
&manvol;
</refmeta>
<refnamediv >
<refname > VIDIOC_G_FREQUENCY</refname>
<refname > VIDIOC_S_FREQUENCY</refname>
<refpurpose > Get or set tuner or modulator radio
frequency</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
*<parameter > argp</parameter> </paramdef>
</funcprototype>
</funcsynopsis>
<funcsynopsis >
<funcprototype >
<funcdef > int <function > ioctl</function> </funcdef>
<paramdef > int <parameter > fd</parameter> </paramdef>
<paramdef > int <parameter > request</parameter> </paramdef>
<paramdef > const struct v4l2_frequency
*<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_G_FREQUENCY, VIDIOC_S_FREQUENCY</para>
</listitem>
</varlistentry>
<varlistentry >
<term > <parameter > argp</parameter> </term>
<listitem >
<para > </para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 >
<title > Description</title>
<para > To get the current tuner or modulator radio frequency
applications set the <structfield > tuner</structfield> field of a
&v4l2-frequency; to the respective tuner or modulator number (only
input devices have tuners, only output devices have modulators), zero
out the <structfield > reserved</structfield> array and
call the <constant > VIDIOC_G_FREQUENCY</constant> ioctl with a pointer
to this structure. The driver stores the current frequency in the
<structfield > frequency</structfield> field.</para>
<para > To change the current tuner or modulator radio frequency
applications initialize the <structfield > tuner</structfield> ,
<structfield > type</structfield> and
<structfield > frequency</structfield> fields, and the
<structfield > reserved</structfield> array of a &v4l2-frequency; and
call the <constant > VIDIOC_S_FREQUENCY</constant> ioctl with a pointer
to this structure. When the requested frequency is not possible the
driver assumes the closest possible value. However
<constant > VIDIOC_S_FREQUENCY</constant> is a write-only ioctl, it does
not return the actual new frequency.</para>
<table pgwide= "1" frame= "none" id= "v4l2-frequency" >
<title > struct <structname > v4l2_frequency</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 >
2012-05-10 02:02:07 -03:00
<entry > __u32</entry>
2009-09-13 22:16:04 -03:00
<entry > <structfield > type</structfield> </entry>
<entry > The tuner type. This is the same value as in the
2012-07-05 06:54:38 -03:00
&v4l2-tuner; <structfield > type</structfield> field. The type must be set
2011-10-11 05:12:52 -03:00
to <constant > V4L2_TUNER_RADIO</constant> for <filename > /dev/radioX</filename>
device nodes, and to <constant > V4L2_TUNER_ANALOG_TV</constant>
2012-07-05 06:54:38 -03:00
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>
2009-09-13 22:16:04 -03:00
</row>
<row >
<entry > __u32</entry>
<entry > <structfield > frequency</structfield> </entry>
<entry > Tuning frequency in units of 62.5 kHz, or if the
2013-12-18 23:40:49 -03:00
&v4l2-tuner; or &v4l2-modulator; <structfield > capability</structfield> flag
2009-09-13 22:16:04 -03:00
<constant > V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5
2013-12-18 23:40:49 -03:00
Hz. A 1 Hz unit is used when the <structfield > capability</structfield> flag
<constant > V4L2_TUNER_CAP_1HZ</constant> is set.</entry>
2009-09-13 22:16:04 -03:00
</row>
<row >
<entry > __u32</entry>
<entry > <structfield > reserved</structfield> [8]</entry>
<entry > Reserved for future extensions. Drivers and
applications must set the array to zero.</entry>
</row>
</tbody>
</tgroup>
</table>
</refsect1>
<refsect1 >
&return-value;
<variablelist >
<varlistentry >
<term > <errorcode > EINVAL</errorcode> </term>
<listitem >
<para > The <structfield > tuner</structfield> index is out of
bounds or the value in the <structfield > type</structfield> field is
wrong.</para>
</listitem>
</varlistentry>
2012-05-28 07:30:28 -03:00
<varlistentry >
<term > <errorcode > EBUSY</errorcode> </term>
<listitem >
<para > A hardware seek is in progress.</para>
</listitem>
</varlistentry>
2009-09-13 22:16:04 -03:00
</variablelist>
</refsect1>
</refentry>