114 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			114 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
 | 
						|
.. c:namespace:: V4L
 | 
						|
 | 
						|
.. _VIDIOC_SUBSCRIBE_EVENT:
 | 
						|
.. _VIDIOC_UNSUBSCRIBE_EVENT:
 | 
						|
 | 
						|
******************************************************
 | 
						|
ioctl VIDIOC_SUBSCRIBE_EVENT, VIDIOC_UNSUBSCRIBE_EVENT
 | 
						|
******************************************************
 | 
						|
 | 
						|
Name
 | 
						|
====
 | 
						|
 | 
						|
VIDIOC_SUBSCRIBE_EVENT - VIDIOC_UNSUBSCRIBE_EVENT - Subscribe or unsubscribe event
 | 
						|
 | 
						|
Synopsis
 | 
						|
========
 | 
						|
 | 
						|
.. c:macro:: VIDIOC_SUBSCRIBE_EVENT
 | 
						|
 | 
						|
``int ioctl(int fd, VIDIOC_SUBSCRIBE_EVENT, struct v4l2_event_subscription *argp)``
 | 
						|
 | 
						|
.. c:macro:: VIDIOC_UNSUBSCRIBE_EVENT
 | 
						|
 | 
						|
``int ioctl(int fd, VIDIOC_UNSUBSCRIBE_EVENT, struct v4l2_event_subscription *argp)``
 | 
						|
 | 
						|
Arguments
 | 
						|
=========
 | 
						|
 | 
						|
``fd``
 | 
						|
    File descriptor returned by :c:func:`open()`.
 | 
						|
 | 
						|
``argp``
 | 
						|
    Pointer to struct :c:type:`v4l2_event_subscription`.
 | 
						|
 | 
						|
Description
 | 
						|
===========
 | 
						|
 | 
						|
Subscribe or unsubscribe V4L2 event. Subscribed events are dequeued by
 | 
						|
using the :ref:`VIDIOC_DQEVENT` ioctl.
 | 
						|
 | 
						|
.. tabularcolumns:: |p{2.6cm}|p{4.4cm}|p{10.3cm}|
 | 
						|
 | 
						|
.. c:type:: v4l2_event_subscription
 | 
						|
 | 
						|
.. flat-table:: struct v4l2_event_subscription
 | 
						|
    :header-rows:  0
 | 
						|
    :stub-columns: 0
 | 
						|
    :widths:       1 1 2
 | 
						|
 | 
						|
    * - __u32
 | 
						|
      - ``type``
 | 
						|
      - Type of the event, see :ref:`event-type`.
 | 
						|
 | 
						|
	.. note::
 | 
						|
 | 
						|
	   ``V4L2_EVENT_ALL`` can be used with
 | 
						|
	   :ref:`VIDIOC_UNSUBSCRIBE_EVENT <VIDIOC_SUBSCRIBE_EVENT>` for
 | 
						|
	   unsubscribing all events at once.
 | 
						|
    * - __u32
 | 
						|
      - ``id``
 | 
						|
      - ID of the event source. If there is no ID associated with the
 | 
						|
	event source, then set this to 0. Whether or not an event needs an
 | 
						|
	ID depends on the event type.
 | 
						|
    * - __u32
 | 
						|
      - ``flags``
 | 
						|
      - Event flags, see :ref:`event-flags`.
 | 
						|
    * - __u32
 | 
						|
      - ``reserved``\ [5]
 | 
						|
      - Reserved for future extensions. Drivers and applications must set
 | 
						|
	the array to zero.
 | 
						|
 | 
						|
 | 
						|
.. tabularcolumns:: |p{7.5cm}|p{2.0cm}|p{7.8cm}|
 | 
						|
 | 
						|
.. _event-flags:
 | 
						|
 | 
						|
.. flat-table:: Event Flags
 | 
						|
    :header-rows:  0
 | 
						|
    :stub-columns: 0
 | 
						|
    :widths:       3 1 4
 | 
						|
 | 
						|
    * - ``V4L2_EVENT_SUB_FL_SEND_INITIAL``
 | 
						|
      - 0x0001
 | 
						|
      - When this event is subscribed an initial event will be sent
 | 
						|
	containing the current status. This only makes sense for events
 | 
						|
	that are triggered by a status change such as ``V4L2_EVENT_CTRL``.
 | 
						|
	Other events will ignore this flag.
 | 
						|
    * - ``V4L2_EVENT_SUB_FL_ALLOW_FEEDBACK``
 | 
						|
      - 0x0002
 | 
						|
      - If set, then events directly caused by an ioctl will also be sent
 | 
						|
	to the filehandle that called that ioctl. For example, changing a
 | 
						|
	control using :ref:`VIDIOC_S_CTRL <VIDIOC_G_CTRL>` will cause
 | 
						|
	a V4L2_EVENT_CTRL to be sent back to that same filehandle.
 | 
						|
	Normally such events are suppressed to prevent feedback loops
 | 
						|
	where an application changes a control to a one value and then
 | 
						|
	another, and then receives an event telling it that that control
 | 
						|
	has changed to the first value.
 | 
						|
 | 
						|
	Since it can't tell whether that event was caused by another
 | 
						|
	application or by the :ref:`VIDIOC_S_CTRL <VIDIOC_G_CTRL>`
 | 
						|
	call it is hard to decide whether to set the control to the value
 | 
						|
	in the event, or ignore it.
 | 
						|
 | 
						|
	Think carefully when you set this flag so you won't get into
 | 
						|
	situations like that.
 | 
						|
 | 
						|
Return Value
 | 
						|
============
 | 
						|
 | 
						|
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.
 |