1 .. Permission is granted to copy, distribute and/or modify this
2 .. document under the terms of the GNU Free Documentation License,
3 .. Version 1.1 or any later version published by the Free Software
4 .. Foundation, with no Invariant Sections, no Front-Cover Texts
5 .. and no Back-Cover Texts. A copy of the license is included at
6 .. Documentation/media/uapi/fdl-appendix.rst.
8 .. TODO: replace it to GFDL-1.1-or-later WITH no-invariant-sections
12 **********************************
13 ioctl VIDIOC_G_CTRL, VIDIOC_S_CTRL
14 **********************************
19 VIDIOC_G_CTRL - VIDIOC_S_CTRL - Get or set the value of a control
25 .. c:function:: int ioctl( int fd, VIDIOC_G_CTRL, struct v4l2_control *argp )
28 .. c:function:: int ioctl( int fd, VIDIOC_S_CTRL, struct v4l2_control *argp )
36 File descriptor returned by :ref:`open() <func-open>`.
39 Pointer to struct :c:type:`v4l2_control`.
45 To get the current value of a control applications initialize the ``id``
46 field of a struct :c:type:`v4l2_control` and call the
47 :ref:`VIDIOC_G_CTRL <VIDIOC_G_CTRL>` ioctl with a pointer to this structure. To change the
48 value of a control applications initialize the ``id`` and ``value``
49 fields of a struct :c:type:`v4l2_control` and call the
50 :ref:`VIDIOC_S_CTRL <VIDIOC_G_CTRL>` ioctl.
52 When the ``id`` is invalid drivers return an ``EINVAL`` error code. When the
53 ``value`` is out of bounds drivers can choose to take the closest valid
54 value or return an ``ERANGE`` error code, whatever seems more appropriate.
55 However, :ref:`VIDIOC_S_CTRL <VIDIOC_G_CTRL>` is a write-only ioctl, it does not return the
56 actual new value. If the ``value`` is inappropriate for the control
57 (e.g. if it refers to an unsupported menu index of a menu control), then
58 EINVAL error code is returned as well.
60 These ioctls work only with user controls. For other control classes the
61 :ref:`VIDIOC_G_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>`,
62 :ref:`VIDIOC_S_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>` or
63 :ref:`VIDIOC_TRY_EXT_CTRLS <VIDIOC_G_EXT_CTRLS>` must be used.
66 .. c:type:: v4l2_control
68 .. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
70 .. flat-table:: struct v4l2_control
77 - Identifies the control, set by the application.
80 - New value or current value.
86 On success 0 is returned, on error -1 and the ``errno`` variable is set
87 appropriately. The generic error codes are described at the
88 :ref:`Generic Error Codes <gen-errors>` chapter.
91 The struct :c:type:`v4l2_control` ``id`` is invalid
92 or the ``value`` is inappropriate for the given control (i.e. if a
93 menu item is selected that is not supported by the driver according
94 to :ref:`VIDIOC_QUERYMENU <VIDIOC_QUERYCTRL>`).
97 The struct :c:type:`v4l2_control` ``value`` is out of
101 The control is temporarily not changeable, possibly because another
102 applications took over control of the device function this control
106 Attempt to set a read-only control or to get a write-only control.