VIDIOC_G_CTRL, VIDIOC_S_CTRL — Get or set the value of a control
int ioctl( | int fd, |
int request, | |
struct v4l2_control
*argp) ; |
To get the current value of a control applications
initialize the id
field of a struct
v4l2_control and call the
VIDIOC_G_CTRL
ioctl with a pointer to this
structure. To change the value of a control applications initialize
the id
and value
fields of a struct v4l2_control and call the
VIDIOC_S_CTRL
ioctl.
When the id
is invalid drivers
return an EINVAL error code. When the value
is out
of bounds drivers can choose to take the closest valid value or return
an ERANGE error code, whatever seems more appropriate. However,
VIDIOC_S_CTRL
is a write-only ioctl, it does not
return the actual new value. If the value
is inappropriate for the control (e.g. if it refers to an unsupported
menu index of a menu control), then EINVAL error code is returned as well.
These ioctls work only with user controls. For other
control classes the VIDIOC_G_EXT_CTRLS
, VIDIOC_S_EXT_CTRLS
or
VIDIOC_TRY_EXT_CTRLS
must be used.
Table A.56. struct v4l2_control
__u32 | id | Identifies the control, set by the application. |
__s32 | value | New value or current value. |
On success 0 is returned, on error -1 and the errno
variable is set appropriately. The generic error codes are described at the Generic Error Codes chapter.
The struct v4l2_control id
is
invalid or the value
is inappropriate for
the given control (i.e. if a menu item is selected that is not supported
by the driver according to VIDIOC_QUERYMENU
).
The struct v4l2_control value
is out of bounds.
The control is temporarily not changeable, possibly because another applications took over control of the device function this control belongs to.
Attempt to set a read-only control or to get a write-only control.