vidioc-s-hw-freq-seek.rst 4.7 KB
Newer Older
1 2
.. -*- coding: utf-8; mode: rst -*-

3
.. _VIDIOC_S_HW_FREQ_SEEK:
4 5 6 7 8

***************************
ioctl VIDIOC_S_HW_FREQ_SEEK
***************************

9 10
NAME
====
11

12
VIDIOC_S_HW_FREQ_SEEK - Perform a hardware frequency seek
13

14
SYNOPSIS
15 16
========

17
.. cpp:function:: int ioctl( int fd, int request, struct v4l2_hw_freq_seek *argp )
18

19 20

ARGUMENTS
21 22 23 24 25 26 27 28 29 30 31
=========

``fd``
    File descriptor returned by :ref:`open() <func-open>`.

``request``
    VIDIOC_S_HW_FREQ_SEEK

``argp``


32
DESCRIPTION
33 34 35 36 37 38 39 40 41 42 43 44 45 46
===========

Start a hardware frequency seek from the current frequency. To do this
applications initialize the ``tuner``, ``type``, ``seek_upward``,
``wrap_around``, ``spacing``, ``rangelow`` and ``rangehigh`` fields, and
zero out the ``reserved`` array of a struct
:ref:`v4l2_hw_freq_seek <v4l2-hw-freq-seek>` and call the
``VIDIOC_S_HW_FREQ_SEEK`` ioctl with a pointer to this structure.

The ``rangelow`` and ``rangehigh`` fields can be set to a non-zero value
to tell the driver to search a specific band. If the struct
:ref:`v4l2_tuner <v4l2-tuner>` ``capability`` field has the
``V4L2_TUNER_CAP_HWSEEK_PROG_LIM`` flag set, these values must fall
within one of the bands returned by
47
:ref:`VIDIOC_ENUM_FREQ_BANDS`. If the
48 49
``V4L2_TUNER_CAP_HWSEEK_PROG_LIM`` flag is not set, then these values
must exactly match those of one of the bands returned by
50
:ref:`VIDIOC_ENUM_FREQ_BANDS`. If the
51 52 53 54 55 56 57 58
current frequency of the tuner does not fall within the selected band it
will be clamped to fit in the band before the seek is started.

If an error is returned, then the original frequency will be restored.

This ioctl is supported if the ``V4L2_CAP_HW_FREQ_SEEK`` capability is
set.

59
If this ioctl is called from a non-blocking filehandle, then ``EAGAIN``
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
error code is returned and no seek takes place.


.. _v4l2-hw-freq-seek:

.. flat-table:: struct v4l2_hw_freq_seek
    :header-rows:  0
    :stub-columns: 0
    :widths:       1 1 2


    -  .. row 1

       -  __u32

       -  ``tuner``

       -  The tuner index number. This is the same value as in the struct
78 79
	  :ref:`v4l2_input <v4l2-input>` ``tuner`` field and the struct
	  :ref:`v4l2_tuner <v4l2-tuner>` ``index`` field.
80 81 82 83 84 85 86 87

    -  .. row 2

       -  __u32

       -  ``type``

       -  The tuner type. This is the same value as in the struct
88 89
	  :ref:`v4l2_tuner <v4l2-tuner>` ``type`` field. See
	  :ref:`v4l2-tuner-type`
90 91 92 93 94 95 96 97

    -  .. row 3

       -  __u32

       -  ``seek_upward``

       -  If non-zero, seek upward from the current frequency, else seek
98
	  downward.
99 100 101 102 103 104 105 106

    -  .. row 4

       -  __u32

       -  ``wrap_around``

       -  If non-zero, wrap around when at the end of the frequency range,
107 108
	  else stop seeking. The struct :ref:`v4l2_tuner <v4l2-tuner>`
	  ``capability`` field will tell you what the hardware supports.
109 110 111 112 113 114 115 116

    -  .. row 5

       -  __u32

       -  ``spacing``

       -  If non-zero, defines the hardware seek resolution in Hz. The
117 118
	  driver selects the nearest value that is supported by the device.
	  If spacing is zero a reasonable default value is used.
119 120 121 122 123 124 125 126

    -  .. row 6

       -  __u32

       -  ``rangelow``

       -  If non-zero, the lowest tunable frequency of the band to search in
127 128 129 130 131 132
	  units of 62.5 kHz, or if the struct
	  :ref:`v4l2_tuner <v4l2-tuner>` ``capability`` field has the
	  ``V4L2_TUNER_CAP_LOW`` flag set, in units of 62.5 Hz or if the
	  struct :ref:`v4l2_tuner <v4l2-tuner>` ``capability`` field has
	  the ``V4L2_TUNER_CAP_1HZ`` flag set, in units of 1 Hz. If
	  ``rangelow`` is zero a reasonable default value is used.
133 134 135 136 137 138 139 140

    -  .. row 7

       -  __u32

       -  ``rangehigh``

       -  If non-zero, the highest tunable frequency of the band to search
141 142 143 144 145 146
	  in units of 62.5 kHz, or if the struct
	  :ref:`v4l2_tuner <v4l2-tuner>` ``capability`` field has the
	  ``V4L2_TUNER_CAP_LOW`` flag set, in units of 62.5 Hz or if the
	  struct :ref:`v4l2_tuner <v4l2-tuner>` ``capability`` field has
	  the ``V4L2_TUNER_CAP_1HZ`` flag set, in units of 1 Hz. If
	  ``rangehigh`` is zero a reasonable default value is used.
147 148 149 150 151 152 153 154

    -  .. row 8

       -  __u32

       -  ``reserved``\ [5]

       -  Reserved for future extensions. Applications must set the array to
155
	  zero.
156 157


158
RETURN VALUE
159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178
============

On success 0 is returned, on error -1 and the ``errno`` variable is set
appropriately. The generic error codes are described at the
:ref:`Generic Error Codes <gen-errors>` chapter.

EINVAL
    The ``tuner`` index is out of bounds, the ``wrap_around`` value is
    not supported or one of the values in the ``type``, ``rangelow`` or
    ``rangehigh`` fields is wrong.

EAGAIN
    Attempted to call ``VIDIOC_S_HW_FREQ_SEEK`` with the filehandle in
    non-blocking mode.

ENODATA
    The hardware seek found no channels.

EBUSY
    Another hardware seek is already in progress.