xref: /linux/Documentation/userspace-api/media/rc/lirc-write.rst (revision 2c739ced5886cd8c8361faa79a9522ec05174ed0)
1.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
2
3.. _lirc-write:
4
5************
6LIRC write()
7************
8
9Name
10====
11
12lirc-write - Write to a LIRC device
13
14
15Synopsis
16========
17
18.. code-block:: c
19
20    #include <unistd.h>
21
22
23.. c:function:: ssize_t write( int fd, void *buf, size_t count )
24    :name: lirc-write
25
26Arguments
27=========
28
29``fd``
30    File descriptor returned by ``open()``.
31
32``buf``
33    Buffer with data to be written
34
35``count``
36    Number of bytes at the buffer
37
38Description
39===========
40
41:ref:`write() <lirc-write>` writes up to ``count`` bytes to the device
42referenced by the file descriptor ``fd`` from the buffer starting at
43``buf``.
44
45The exact format of the data depends on what mode a driver is in, use
46:ref:`lirc_get_features` to get the supported modes and use
47:ref:`lirc_set_send_mode` set the mode.
48
49When in :ref:`LIRC_MODE_PULSE <lirc-mode-PULSE>` mode, the data written to
50the chardev is a pulse/space sequence of integer values. Pulses and spaces
51are only marked implicitly by their position. The data must start and end
52with a pulse, therefore, the data must always include an uneven number of
53samples. The write function blocks until the data has been transmitted
54by the hardware. If more data is provided than the hardware can send, the
55driver returns ``EINVAL``.
56
57When in :ref:`LIRC_MODE_SCANCODE <lirc-mode-scancode>` mode, one
58``struct lirc_scancode`` must be written to the chardev at a time, else
59``EINVAL`` is returned. Set the desired scancode in the ``scancode`` member,
60and the :ref:`IR protocol <Remote_controllers_Protocols>` in the
61:c:type:`rc_proto`: member. All other members must be
62set to 0, else ``EINVAL`` is returned. If there is no protocol encoder
63for the protocol or the scancode is not valid for the specified protocol,
64``EINVAL`` is returned. The write function blocks until the scancode
65is transmitted by the hardware.
66
67
68Return Value
69============
70
71On success, the number of bytes written is returned. It is not an error if
72this number is smaller than the number of bytes requested, or the amount
73of data required for one frame.  On error, -1 is returned, and the ``errno``
74variable is set appropriately. The generic error codes are described at the
75:ref:`Generic Error Codes <gen-errors>` chapter.
76