2020-11-26 12:13:36 +01:00
|
|
|
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
|
2020-09-25 07:29:25 +02:00
|
|
|
.. c:namespace:: RC
|
2018-08-30 10:15:26 -04:00
|
|
|
|
2016-07-12 06:12:32 -03:00
|
|
|
.. _lirc-read:
|
2016-06-30 15:18:56 +02:00
|
|
|
|
2016-07-09 21:03:57 -03:00
|
|
|
***********
|
|
|
|
|
LIRC read()
|
|
|
|
|
***********
|
|
|
|
|
|
|
|
|
|
Name
|
|
|
|
|
====
|
|
|
|
|
|
|
|
|
|
lirc-read - Read from a LIRC device
|
|
|
|
|
|
|
|
|
|
Synopsis
|
|
|
|
|
========
|
|
|
|
|
|
|
|
|
|
.. code-block:: c
|
|
|
|
|
|
|
|
|
|
#include <unistd.h>
|
|
|
|
|
|
2016-08-19 12:00:43 -03:00
|
|
|
.. c:function:: ssize_t read( int fd, void *buf, size_t count )
|
2016-07-09 21:03:57 -03:00
|
|
|
|
|
|
|
|
Arguments
|
|
|
|
|
=========
|
|
|
|
|
|
|
|
|
|
``fd``
|
|
|
|
|
File descriptor returned by ``open()``.
|
|
|
|
|
|
|
|
|
|
``buf``
|
2016-08-19 16:59:31 -03:00
|
|
|
Buffer to be filled
|
2016-07-09 21:03:57 -03:00
|
|
|
|
2016-08-19 16:59:31 -03:00
|
|
|
``count``
|
|
|
|
|
Max number of bytes to read
|
2016-07-09 21:03:57 -03:00
|
|
|
|
|
|
|
|
Description
|
|
|
|
|
===========
|
|
|
|
|
|
2020-09-25 07:29:25 +02:00
|
|
|
:c:func:`read()` attempts to read up to ``count`` bytes from file
|
2016-07-09 21:03:57 -03:00
|
|
|
descriptor ``fd`` into the buffer starting at ``buf``. If ``count`` is zero,
|
2020-09-25 07:29:25 +02:00
|
|
|
:c:func:`read()` returns zero and has no other results. If ``count``
|
2016-07-09 21:03:57 -03:00
|
|
|
is greater than ``SSIZE_MAX``, the result is unspecified.
|
2016-06-30 15:18:56 +02:00
|
|
|
|
2017-02-08 15:10:30 -02:00
|
|
|
The exact format of the data depends on what :ref:`lirc_modes` a driver
|
2017-02-25 06:51:34 -05:00
|
|
|
uses. Use :ref:`lirc_get_features` to get the supported mode, and use
|
|
|
|
|
:ref:`lirc_set_rec_mode` set the current active mode.
|
2016-06-30 15:18:56 +02:00
|
|
|
|
2017-02-25 06:51:34 -05:00
|
|
|
The mode :ref:`LIRC_MODE_MODE2 <lirc-mode-mode2>` is for raw IR,
|
|
|
|
|
in which packets containing an unsigned int value describing an IR signal are
|
2017-02-08 15:10:30 -02:00
|
|
|
read from the chardev.
|
2016-07-09 21:03:57 -03:00
|
|
|
|
2017-02-25 06:51:34 -05:00
|
|
|
Alternatively, :ref:`LIRC_MODE_SCANCODE <lirc-mode-scancode>` can be available,
|
|
|
|
|
in this mode scancodes which are either decoded by software decoders, or
|
2017-11-30 08:00:45 -05:00
|
|
|
by hardware decoders. The :c:type:`rc_proto` member is set to the
|
2019-07-25 16:32:31 -03:00
|
|
|
:ref:`IR protocol <Remote_controllers_Protocols>`
|
|
|
|
|
used for transmission, and ``scancode`` to the decoded scancode,
|
2017-02-25 06:51:34 -05:00
|
|
|
and the ``keycode`` set to the keycode or ``KEY_RESERVED``.
|
|
|
|
|
|
2016-07-09 21:03:57 -03:00
|
|
|
Return Value
|
|
|
|
|
============
|
|
|
|
|
|
|
|
|
|
On success, the number of bytes read is returned. It is not an error if
|
|
|
|
|
this number is smaller than the number of bytes requested, or the amount
|
|
|
|
|
of data required for one frame. On error, -1 is returned, and the ``errno``
|
|
|
|
|
variable is set appropriately.
|