1.. -*- coding: utf-8; mode: rst -*- 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 protocol in the :c:type:`rc_proto`: member. All other members must be 61set to 0, else ``EINVAL`` is returned. If there is no protocol encoder 62for the protocol or the scancode is not valid for the specified protocol, 63``EINVAL`` is returned. The write function blocks until the scancode 64is transmitted by the hardware. 65 66 67Return Value 68============ 69 70On success, the number of bytes written is returned. It is not an error if 71this number is smaller than the number of bytes requested, or the amount 72of data required for one frame. On error, -1 is returned, and the ``errno`` 73variable is set appropriately. The generic error codes are described at the 74:ref:`Generic Error Codes <gen-errors>` chapter. 75