xref: /linux/Documentation/userspace-api/media/rc/lirc-read.rst (revision 2c739ced5886cd8c8361faa79a9522ec05174ed0)
1.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
2
3.. _lirc-read:
4
5***********
6LIRC read()
7***********
8
9Name
10====
11
12lirc-read - Read from a LIRC device
13
14
15Synopsis
16========
17
18.. code-block:: c
19
20    #include <unistd.h>
21
22
23.. c:function:: ssize_t read( int fd, void *buf, size_t count )
24    :name: lirc-read
25
26
27Arguments
28=========
29
30``fd``
31    File descriptor returned by ``open()``.
32
33``buf``
34   Buffer to be filled
35
36``count``
37   Max number of bytes to read
38
39Description
40===========
41
42:ref:`read() <lirc-read>` attempts to read up to ``count`` bytes from file
43descriptor ``fd`` into the buffer starting at ``buf``.  If ``count`` is zero,
44:ref:`read() <lirc-read>` returns zero and has no other results. If ``count``
45is greater than ``SSIZE_MAX``, the result is unspecified.
46
47The exact format of the data depends on what :ref:`lirc_modes` a driver
48uses. Use :ref:`lirc_get_features` to get the supported mode, and use
49:ref:`lirc_set_rec_mode` set the current active mode.
50
51The mode :ref:`LIRC_MODE_MODE2 <lirc-mode-mode2>` is for raw IR,
52in which packets containing an unsigned int value describing an IR signal are
53read from the chardev.
54
55Alternatively, :ref:`LIRC_MODE_SCANCODE <lirc-mode-scancode>` can be available,
56in this mode scancodes which are either decoded by software decoders, or
57by hardware decoders. The :c:type:`rc_proto` member is set to the
58:ref:`IR protocol <Remote_controllers_Protocols>`
59used for transmission, and ``scancode`` to the decoded scancode,
60and the ``keycode`` set to the keycode or ``KEY_RESERVED``.
61
62
63Return Value
64============
65
66On success, the number of bytes read is returned. It is not an error if
67this number is smaller than the number of bytes requested, or the amount
68of data required for one frame.  On error, -1 is returned, and the ``errno``
69variable is set appropriately.
70