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/userspace-api/media/fdl-appendix.rst.
7..
8.. TODO: replace it to GFDL-1.1-or-later WITH no-invariant-sections
9
10.. _lirc_get_features:
11
12***********************
13ioctl LIRC_GET_FEATURES
14***********************
15
16Name
17====
18
19LIRC_GET_FEATURES - Get the underlying hardware device's features
20
21Synopsis
22========
23
24.. c:function:: int ioctl( int fd, LIRC_GET_FEATURES, __u32 *features)
25    :name: LIRC_GET_FEATURES
26
27Arguments
28=========
29
30``fd``
31    File descriptor returned by open().
32
33``features``
34    Bitmask with the LIRC features.
35
36
37Description
38===========
39
40
41Get the underlying hardware device's features. If a driver does not
42announce support of certain features, calling of the corresponding ioctls
43is undefined.
44
45LIRC features
46=============
47
48.. _LIRC-CAN-REC-RAW:
49
50``LIRC_CAN_REC_RAW``
51
52    Unused. Kept just to avoid breaking uAPI.
53
54.. _LIRC-CAN-REC-PULSE:
55
56``LIRC_CAN_REC_PULSE``
57
58    Unused. Kept just to avoid breaking uAPI.
59    :ref:`LIRC_MODE_PULSE <lirc-mode-pulse>` can only be used for transmitting.
60
61.. _LIRC-CAN-REC-MODE2:
62
63``LIRC_CAN_REC_MODE2``
64
65    This is raw IR driver for receiving. This means that
66    :ref:`LIRC_MODE_MODE2 <lirc-mode-MODE2>` is used. This also implies
67    that :ref:`LIRC_MODE_SCANCODE <lirc-mode-SCANCODE>` is also supported,
68    as long as the kernel is recent enough. Use the
69    :ref:`lirc_set_rec_mode` to switch modes.
70
71.. _LIRC-CAN-REC-LIRCCODE:
72
73``LIRC_CAN_REC_LIRCCODE``
74
75    Unused. Kept just to avoid breaking uAPI.
76
77.. _LIRC-CAN-REC-SCANCODE:
78
79``LIRC_CAN_REC_SCANCODE``
80
81    This is a scancode driver for receiving. This means that
82    :ref:`LIRC_MODE_SCANCODE <lirc-mode-SCANCODE>` is used.
83
84.. _LIRC-CAN-SET-SEND-CARRIER:
85
86``LIRC_CAN_SET_SEND_CARRIER``
87
88    The driver supports changing the modulation frequency via
89    :ref:`ioctl LIRC_SET_SEND_CARRIER <LIRC_SET_SEND_CARRIER>`.
90
91.. _LIRC-CAN-SET-SEND-DUTY-CYCLE:
92
93``LIRC_CAN_SET_SEND_DUTY_CYCLE``
94
95    The driver supports changing the duty cycle using
96    :ref:`ioctl LIRC_SET_SEND_DUTY_CYCLE <LIRC_SET_SEND_DUTY_CYCLE>`.
97
98.. _LIRC-CAN-SET-TRANSMITTER-MASK:
99
100``LIRC_CAN_SET_TRANSMITTER_MASK``
101
102    The driver supports changing the active transmitter(s) using
103    :ref:`ioctl LIRC_SET_TRANSMITTER_MASK <LIRC_SET_TRANSMITTER_MASK>`.
104
105.. _LIRC-CAN-SET-REC-CARRIER:
106
107``LIRC_CAN_SET_REC_CARRIER``
108
109    The driver supports setting the receive carrier frequency using
110    :ref:`ioctl LIRC_SET_REC_CARRIER <LIRC_SET_REC_CARRIER>`.
111
112.. _LIRC-CAN-SET-REC-DUTY-CYCLE-RANGE:
113
114``LIRC_CAN_SET_REC_DUTY_CYCLE_RANGE``
115
116    Unused. Kept just to avoid breaking uAPI.
117
118.. _LIRC-CAN-SET-REC-CARRIER-RANGE:
119
120``LIRC_CAN_SET_REC_CARRIER_RANGE``
121
122    The driver supports
123    :ref:`ioctl LIRC_SET_REC_CARRIER_RANGE <LIRC_SET_REC_CARRIER_RANGE>`.
124
125.. _LIRC-CAN-GET-REC-RESOLUTION:
126
127``LIRC_CAN_GET_REC_RESOLUTION``
128
129    The driver supports
130    :ref:`ioctl LIRC_GET_REC_RESOLUTION <LIRC_GET_REC_RESOLUTION>`.
131
132.. _LIRC-CAN-SET-REC-TIMEOUT:
133
134``LIRC_CAN_SET_REC_TIMEOUT``
135
136    The driver supports
137    :ref:`ioctl LIRC_SET_REC_TIMEOUT <LIRC_SET_REC_TIMEOUT>`.
138
139.. _LIRC-CAN-SET-REC-FILTER:
140
141``LIRC_CAN_SET_REC_FILTER``
142
143    Unused. Kept just to avoid breaking uAPI.
144
145.. _LIRC-CAN-MEASURE-CARRIER:
146
147``LIRC_CAN_MEASURE_CARRIER``
148
149    The driver supports measuring of the modulation frequency using
150    :ref:`ioctl LIRC_SET_MEASURE_CARRIER_MODE <LIRC_SET_MEASURE_CARRIER_MODE>`.
151
152.. _LIRC-CAN-USE-WIDEBAND-RECEIVER:
153
154``LIRC_CAN_USE_WIDEBAND_RECEIVER``
155
156    The driver supports learning mode using
157    :ref:`ioctl LIRC_SET_WIDEBAND_RECEIVER <LIRC_SET_WIDEBAND_RECEIVER>`.
158
159.. _LIRC-CAN-NOTIFY-DECODE:
160
161``LIRC_CAN_NOTIFY_DECODE``
162
163    Unused. Kept just to avoid breaking uAPI.
164
165.. _LIRC-CAN-SEND-RAW:
166
167``LIRC_CAN_SEND_RAW``
168
169    Unused. Kept just to avoid breaking uAPI.
170
171.. _LIRC-CAN-SEND-PULSE:
172
173``LIRC_CAN_SEND_PULSE``
174
175    The driver supports sending (also called as IR blasting or IR TX) using
176    :ref:`LIRC_MODE_PULSE <lirc-mode-pulse>`. This implies that
177    :ref:`LIRC_MODE_SCANCODE <lirc-mode-SCANCODE>` is also supported for
178    transmit, as long as the kernel is recent enough. Use the
179    :ref:`lirc_set_send_mode` to switch modes.
180
181.. _LIRC-CAN-SEND-MODE2:
182
183``LIRC_CAN_SEND_MODE2``
184
185    Unused. Kept just to avoid breaking uAPI.
186    :ref:`LIRC_MODE_MODE2 <lirc-mode-mode2>` can only be used for receiving.
187
188.. _LIRC-CAN-SEND-LIRCCODE:
189
190``LIRC_CAN_SEND_LIRCCODE``
191
192    Unused. Kept just to avoid breaking uAPI.
193
194
195Return Value
196============
197
198On success 0 is returned, on error -1 and the ``errno`` variable is set
199appropriately. The generic error codes are described at the
200:ref:`Generic Error Codes <gen-errors>` chapter.
201