Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/rzhang/linux
[sfrench/cifs-2.6.git] / Documentation / media / uapi / rc / lirc-write.rst
1 .. -*- coding: utf-8; mode: rst -*-
2
3 .. _lirc-write:
4
5 ************
6 LIRC write()
7 ************
8
9 Name
10 ====
11
12 lirc-write - Write to a LIRC device
13
14
15 Synopsis
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
26 Arguments
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
38 Description
39 ===========
40
41 :ref:`write() <lirc-write>` writes up to ``count`` bytes to the device
42 referenced by the file descriptor ``fd`` from the buffer starting at
43 ``buf``.
44
45 The exact format of the data depends on what mode a driver uses, use
46 :ref:`lirc_get_features` to get the supported mode.
47
48 When in :ref:`LIRC_MODE_PULSE <lirc-mode-PULSE>` mode, the data written to
49 the chardev is a pulse/space sequence of integer values. Pulses and spaces
50 are only marked implicitly by their position. The data must start and end
51 with a pulse, therefore, the data must always include an uneven number of
52 samples. The write function must block until the data has been transmitted
53 by the hardware. If more data is provided than the hardware can send, the
54 driver returns ``EINVAL``.
55
56 Return Value
57 ============
58
59 On success, the number of bytes read is returned. It is not an error if
60 this number is smaller than the number of bytes requested, or the amount
61 of data required for one frame.  On error, -1 is returned, and the ``errno``
62 variable is set appropriately. The generic error codes are described at the
63 :ref:`Generic Error Codes <gen-errors>` chapter.