Commit a8b875a5 authored by Sean Young's avatar Sean Young Committed by Mauro Carvalho Chehab

[media] lirc: document lirc modes better

LIRC_MODE_MODE2 and LIRC_MODE_LIRCCODE were not covered at all.
Signed-off-by: default avatarSean Young <sean@mess.org>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent 5cd6522c
...@@ -35,7 +35,6 @@ ignore define PULSE_MASK ...@@ -35,7 +35,6 @@ ignore define PULSE_MASK
ignore define LIRC_MODE2_SPACE ignore define LIRC_MODE2_SPACE
ignore define LIRC_MODE2_PULSE ignore define LIRC_MODE2_PULSE
ignore define LIRC_MODE2_TIMEOUT
ignore define LIRC_VALUE_MASK ignore define LIRC_VALUE_MASK
ignore define LIRC_MODE2_MASK ignore define LIRC_MODE2_MASK
......
...@@ -27,6 +27,8 @@ What you should see for a chardev: ...@@ -27,6 +27,8 @@ What you should see for a chardev:
$ ls -l /dev/lirc* $ ls -l /dev/lirc*
crw-rw---- 1 root root 248, 0 Jul 2 22:20 /dev/lirc0 crw-rw---- 1 root root 248, 0 Jul 2 22:20 /dev/lirc0
.. _lirc_modes:
********** **********
LIRC modes LIRC modes
********** **********
...@@ -38,25 +40,62 @@ on the following table. ...@@ -38,25 +40,62 @@ on the following table.
``LIRC_MODE_MODE2`` ``LIRC_MODE_MODE2``
The driver returns a sequence of pulse and space codes to userspace. The driver returns a sequence of pulse and space codes to userspace,
as a series of u32 values.
This mode is used only for IR receive. This mode is used only for IR receive.
The upper 8 bits determine the packet type, and the lower 24 bits
the payload. Use ``LIRC_VALUE()`` macro to get the payload, and
the macro ``LIRC_MODE2()`` will give you the type, which
is one of:
``LIRC_MODE2_PULSE``
Signifies the presence of IR in microseconds.
``LIRC_MODE2_SPACE``
Signifies absence of IR in microseconds.
``LIRC_MODE2_FREQUENCY``
If measurement of the carrier frequency was enabled with
:ref:`lirc_set_measure_carrier_mode` then this packet gives you
the carrier frequency in Hertz.
``LIRC_MODE2_TIMEOUT``
If timeout reports are enabled with
:ref:`lirc_set_rec_timeout_reports`, when the timeout set with
:ref:`lirc_set_rec_timeout` expires due to no IR being detected,
this packet will be sent, with the number of microseconds with
no IR.
.. _lirc-mode-lirccode: .. _lirc-mode-lirccode:
``LIRC_MODE_LIRCCODE`` ``LIRC_MODE_LIRCCODE``
The IR signal is decoded internally by the receiver. The LIRC interface This mode can be used for IR receive and send.
returns the scancode as an integer value. This is the usual mode used
by several TV media cards.
This mode is used only for IR receive. The IR signal is decoded internally by the receiver, or encoded by the
transmitter. The LIRC interface represents the scancode as byte string,
which might not be a u32, it can be any length. The value is entirely
driver dependent. This mode is used by some older lirc drivers.
The length of each code depends on the driver, which can be retrieved
with :ref:`lirc_get_length`. This length is used both
for transmitting and receiving IR.
.. _lirc-mode-pulse: .. _lirc-mode-pulse:
``LIRC_MODE_PULSE`` ``LIRC_MODE_PULSE``
On puse mode, a sequence of pulse/space integer values are written to the In pulse mode, a sequence of pulse/space integer values are written to the
lirc device using :Ref:`lirc-write`. lirc device using :ref:`lirc-write`.
The values are alternating pulse and space lengths, in microseconds. The
first and last entry must be a pulse, so there must be an odd number
of entries.
This mode is used only for IR send. This mode is used only for IR send.
...@@ -48,8 +48,8 @@ LIRC features ...@@ -48,8 +48,8 @@ LIRC features
``LIRC_CAN_REC_PULSE`` ``LIRC_CAN_REC_PULSE``
The driver is capable of receiving using Unused. Kept just to avoid breaking uAPI.
:ref:`LIRC_MODE_PULSE <lirc-mode-pulse>`. :ref:`LIRC_MODE_PULSE <lirc-mode-pulse>` can only be used for transmitting.
.. _LIRC-CAN-REC-MODE2: .. _LIRC-CAN-REC-MODE2:
...@@ -156,19 +156,22 @@ LIRC features ...@@ -156,19 +156,22 @@ LIRC features
``LIRC_CAN_SEND_PULSE`` ``LIRC_CAN_SEND_PULSE``
The driver supports sending using :ref:`LIRC_MODE_PULSE <lirc-mode-pulse>`. The driver supports sending (also called as IR blasting or IR TX) using
:ref:`LIRC_MODE_PULSE <lirc-mode-pulse>`.
.. _LIRC-CAN-SEND-MODE2: .. _LIRC-CAN-SEND-MODE2:
``LIRC_CAN_SEND_MODE2`` ``LIRC_CAN_SEND_MODE2``
The driver supports sending using :ref:`LIRC_MODE_MODE2 <lirc-mode-mode2>`. Unused. Kept just to avoid breaking uAPI.
:ref:`LIRC_MODE_MODE2 <lirc-mode-mode2>` can only be used for receiving.
.. _LIRC-CAN-SEND-LIRCCODE: .. _LIRC-CAN-SEND-LIRCCODE:
``LIRC_CAN_SEND_LIRCCODE`` ``LIRC_CAN_SEND_LIRCCODE``
The driver supports sending codes (also called as IR blasting or IR TX). The driver supports sending (also called as IR blasting or IR TX) using
:ref:`LIRC_MODE_LIRCCODE <lirc-mode-LIRCCODE>`.
Return Value Return Value
......
...@@ -30,7 +30,8 @@ Arguments ...@@ -30,7 +30,8 @@ Arguments
Description Description
=========== ===========
Retrieves the code length in bits (only for ``LIRC-MODE-LIRCCODE``). Retrieves the code length in bits (only for
:ref:`LIRC_MODE_LIRCCODE <lirc-mode-lirccode>`).
Reads on the device must be done in blocks matching the bit count. Reads on the device must be done in blocks matching the bit count.
The bit could should be rounded up so that it matches full bytes. The bit could should be rounded up so that it matches full bytes.
......
...@@ -35,8 +35,8 @@ Description ...@@ -35,8 +35,8 @@ Description
Get/set supported receive modes. Only :ref:`LIRC_MODE_MODE2 <lirc-mode-mode2>` Get/set supported receive modes. Only :ref:`LIRC_MODE_MODE2 <lirc-mode-mode2>`
and :ref:`LIRC_MODE_LIRCCODE <lirc-mode-lirccode>` are supported for IR and :ref:`LIRC_MODE_LIRCCODE <lirc-mode-lirccode>` are supported for IR
receive. receive. Use :ref:`lirc_get_features` to find out which modes the driver
supports.
Return Value Return Value
============ ============
......
...@@ -34,9 +34,12 @@ Arguments ...@@ -34,9 +34,12 @@ Arguments
Description Description
=========== ===========
Get/set supported transmit mode. Get/set current transmit mode.
Only :ref:`LIRC_MODE_PULSE <lirc-mode-pulse>` is supported by for IR send. Only :ref:`LIRC_MODE_PULSE <lirc-mode-pulse>` and
:ref:`LIRC_MODE_LIRCCODE <lirc-mode-lirccode>` is supported by for IR send,
depending on the driver. Use :ref:`lirc_get_features` to find out which
modes the driver supports.
Return Value Return Value
============ ============
......
...@@ -44,17 +44,13 @@ descriptor ``fd`` into the buffer starting at ``buf``. If ``count`` is zero, ...@@ -44,17 +44,13 @@ descriptor ``fd`` into the buffer starting at ``buf``. If ``count`` is zero,
:ref:`read() <lirc-read>` returns zero and has no other results. If ``count`` :ref:`read() <lirc-read>` returns zero and has no other results. If ``count``
is greater than ``SSIZE_MAX``, the result is unspecified. is greater than ``SSIZE_MAX``, the result is unspecified.
The lircd userspace daemon reads raw IR data from the LIRC chardev. The The exact format of the data depends on what :ref:`lirc_modes` a driver
exact format of the data depends on what modes a driver supports, and uses. Use :ref:`lirc_get_features` to get the supported mode.
what mode has been selected. lircd obtains supported modes and sets the
active mode via the ioctl interface, detailed at :ref:`lirc_func`.
The generally preferred mode for receive is
:ref:`LIRC_MODE_MODE2 <lirc-mode-mode2>`, in which packets containing an
int value describing an IR signal are read from the chardev.
See also The generally preferred mode for receive is
`http://www.lirc.org/html/technical.html <http://www.lirc.org/html/technical.html>`__ :ref:`LIRC_MODE_MODE2 <lirc-mode-mode2>`,
for more info. in which packets containing an int value describing an IR signal are
read from the chardev.
Return Value Return Value
============ ============
......
...@@ -9,7 +9,7 @@ ioctl LIRC_SET_REC_CARRIER_RANGE ...@@ -9,7 +9,7 @@ ioctl LIRC_SET_REC_CARRIER_RANGE
Name Name
==== ====
LIRC_SET_REC_CARRIER_RANGE - Set lower bond of the carrier used to modulate LIRC_SET_REC_CARRIER_RANGE - Set lower bound of the carrier used to modulate
IR receive. IR receive.
Synopsis Synopsis
......
...@@ -31,6 +31,8 @@ Arguments ...@@ -31,6 +31,8 @@ Arguments
Description Description
=========== ===========
.. _lirc-mode2-timeout:
Enable or disable timeout reports for IR receive. By default, timeout reports Enable or disable timeout reports for IR receive. By default, timeout reports
should be turned off. should be turned off.
......
...@@ -42,13 +42,16 @@ Description ...@@ -42,13 +42,16 @@ Description
referenced by the file descriptor ``fd`` from the buffer starting at referenced by the file descriptor ``fd`` from the buffer starting at
``buf``. ``buf``.
The data written to the chardev is a pulse/space sequence of integer The exact format of the data depends on what mode a driver uses, use
values. Pulses and spaces are only marked implicitly by their position. :ref:`lirc_get_features` to get the supported mode.
The data must start and end with a pulse, therefore, the data must
always include an uneven number of samples. The write function must When in :ref:`LIRC_MODE_PULSE <lirc-mode-PULSE>` mode, the data written to
block until the data has been transmitted by the hardware. If more data the chardev is a pulse/space sequence of integer values. Pulses and spaces
is provided than the hardware can send, the driver returns ``EINVAL``. are only marked implicitly by their position. The data must start and end
with a pulse, therefore, the data must always include an uneven number of
samples. The write function must block until the data has been transmitted
by the hardware. If more data is provided than the hardware can send, the
driver returns ``EINVAL``.
Return Value Return Value
============ ============
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment