doc_rst: rename the media Sphinx suff to Documentation/media

The name of the subsystem is "media", and not "linux_tv". Also,
as we plan to add other stuff there in the future, let's
rename also the media uAPI book to media_uapi, to make it
clearer.

No functional changes.

Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
This commit is contained in:
Mauro Carvalho Chehab
2016-07-08 11:40:06 -03:00
parent a97369b5e2
commit 60c2820d0f
407 changed files with 11 additions and 11 deletions

View File

@@ -0,0 +1,24 @@
.. -*- coding: utf-8; mode: rst -*-
.. _Remote_controllers_Intro:
************
Introduction
************
Currently, most analog and digital devices have a Infrared input for
remote controllers. Each manufacturer has their own type of control. It
is not rare for the same manufacturer to ship different types of
controls, depending on the device.
A Remote Controller interface is mapped as a normal evdev/input
interface, just like a keyboard or a mouse. So, it uses all ioctls
already defined for any other input devices.
However, remove controllers are more flexible than a normal input
device, as the IR receiver (and/or transmitter) can be used in
conjunction with a wide variety of different IR remotes.
In order to allow flexibility, the Remote Controller subsystem allows
controlling the RC-specific attributes via
:ref:`the sysfs class nodes <remote_controllers_sysfs_nodes>`.

View File

@@ -0,0 +1,18 @@
.. -*- coding: utf-8; mode: rst -*-
.. _Remote_controllers_table_change:
*******************************************
Changing default Remote Controller mappings
*******************************************
The event interface provides two ioctls to be used against the
/dev/input/event device, to allow changing the default keymapping.
This program demonstrates how to replace the keymap tables.
.. toctree::
:maxdepth: 1
keytable.c

View File

@@ -0,0 +1,757 @@
.. -*- coding: utf-8; mode: rst -*-
.. _Remote_controllers_tables:
************************
Remote controller tables
************************
Unfortunately, for several years, there was no effort to create uniform
IR keycodes for different devices. This caused the same IR keyname to be
mapped completely differently on different IR devices. This resulted
that the same IR keyname to be mapped completely different on different
IR's. Due to that, V4L2 API now specifies a standard for mapping Media
keys on IR.
This standard should be used by both V4L/DVB drivers and userspace
applications
The modules register the remote as keyboard within the linux input
layer. This means that the IR key strokes will look like normal keyboard
key strokes (if CONFIG_INPUT_KEYBOARD is enabled). Using the event
devices (CONFIG_INPUT_EVDEV) it is possible for applications to access
the remote via /dev/input/event devices.
.. _rc_standard_keymap:
.. flat-table:: IR default keymapping
:header-rows: 0
:stub-columns: 0
:widths: 1 1 2
- .. row 1
- Key code
- Meaning
- Key examples on IR
- .. row 2
- **Numeric keys**
- .. row 3
- ``KEY_0``
- Keyboard digit 0
- 0
- .. row 4
- ``KEY_1``
- Keyboard digit 1
- 1
- .. row 5
- ``KEY_2``
- Keyboard digit 2
- 2
- .. row 6
- ``KEY_3``
- Keyboard digit 3
- 3
- .. row 7
- ``KEY_4``
- Keyboard digit 4
- 4
- .. row 8
- ``KEY_5``
- Keyboard digit 5
- 5
- .. row 9
- ``KEY_6``
- Keyboard digit 6
- 6
- .. row 10
- ``KEY_7``
- Keyboard digit 7
- 7
- .. row 11
- ``KEY_8``
- Keyboard digit 8
- 8
- .. row 12
- ``KEY_9``
- Keyboard digit 9
- 9
- .. row 13
- **Movie play control**
- .. row 14
- ``KEY_FORWARD``
- Instantly advance in time
- >> / FORWARD
- .. row 15
- ``KEY_BACK``
- Instantly go back in time
- <<< / BACK
- .. row 16
- ``KEY_FASTFORWARD``
- Play movie faster
- >>> / FORWARD
- .. row 17
- ``KEY_REWIND``
- Play movie back
- REWIND / BACKWARD
- .. row 18
- ``KEY_NEXT``
- Select next chapter / sub-chapter / interval
- NEXT / SKIP
- .. row 19
- ``KEY_PREVIOUS``
- Select previous chapter / sub-chapter / interval
- << / PREV / PREVIOUS
- .. row 20
- ``KEY_AGAIN``
- Repeat the video or a video interval
- REPEAT / LOOP / RECALL
- .. row 21
- ``KEY_PAUSE``
- Pause sroweam
- PAUSE / FREEZE
- .. row 22
- ``KEY_PLAY``
- Play movie at the normal timeshift
- NORMAL TIMESHIFT / LIVE / >
- .. row 23
- ``KEY_PLAYPAUSE``
- Alternate between play and pause
- PLAY / PAUSE
- .. row 24
- ``KEY_STOP``
- Stop sroweam
- STOP
- .. row 25
- ``KEY_RECORD``
- Start/stop recording sroweam
- CAPTURE / REC / RECORD/PAUSE
- .. row 26
- ``KEY_CAMERA``
- Take a picture of the image
- CAMERA ICON / CAPTURE / SNAPSHOT
- .. row 27
- ``KEY_SHUFFLE``
- Enable shuffle mode
- SHUFFLE
- .. row 28
- ``KEY_TIME``
- Activate time shift mode
- TIME SHIFT
- .. row 29
- ``KEY_TITLE``
- Allow changing the chapter
- CHAPTER
- .. row 30
- ``KEY_SUBTITLE``
- Allow changing the subtitle
- SUBTITLE
- .. row 31
- **Image control**
- .. row 32
- ``KEY_BRIGHTNESSDOWN``
- Decrease Brightness
- BRIGHTNESS DECREASE
- .. row 33
- ``KEY_BRIGHTNESSUP``
- Increase Brightness
- BRIGHTNESS INCREASE
- .. row 34
- ``KEY_ANGLE``
- Switch video camera angle (on videos with more than one angle
stored)
- ANGLE / SWAP
- .. row 35
- ``KEY_EPG``
- Open the Elecrowonic Play Guide (EPG)
- EPG / GUIDE
- .. row 36
- ``KEY_TEXT``
- Activate/change closed caption mode
- CLOSED CAPTION/TELETEXT / DVD TEXT / TELETEXT / TTX
- .. row 37
- **Audio control**
- .. row 38
- ``KEY_AUDIO``
- Change audio source
- AUDIO SOURCE / AUDIO / MUSIC
- .. row 39
- ``KEY_MUTE``
- Mute/unmute audio
- MUTE / DEMUTE / UNMUTE
- .. row 40
- ``KEY_VOLUMEDOWN``
- Decrease volume
- VOLUME- / VOLUME DOWN
- .. row 41
- ``KEY_VOLUMEUP``
- Increase volume
- VOLUME+ / VOLUME UP
- .. row 42
- ``KEY_MODE``
- Change sound mode
- MONO/STEREO
- .. row 43
- ``KEY_LANGUAGE``
- Select Language
- 1ST / 2ND LANGUAGE / DVD LANG / MTS/SAP / MTS SEL
- .. row 44
- **Channel control**
- .. row 45
- ``KEY_CHANNEL``
- Go to the next favorite channel
- ALT / CHANNEL / CH SURFING / SURF / FAV
- .. row 46
- ``KEY_CHANNELDOWN``
- Decrease channel sequencially
- CHANNEL - / CHANNEL DOWN / DOWN
- .. row 47
- ``KEY_CHANNELUP``
- Increase channel sequencially
- CHANNEL + / CHANNEL UP / UP
- .. row 48
- ``KEY_DIGITS``
- Use more than one digit for channel
- PLUS / 100/ 1xx / xxx / -/-- / Single Double Triple Digit
- .. row 49
- ``KEY_SEARCH``
- Start channel autoscan
- SCAN / AUTOSCAN
- .. row 50
- **Colored keys**
- .. row 51
- ``KEY_BLUE``
- IR Blue key
- BLUE
- .. row 52
- ``KEY_GREEN``
- IR Green Key
- GREEN
- .. row 53
- ``KEY_RED``
- IR Red key
- RED
- .. row 54
- ``KEY_YELLOW``
- IR Yellow key
- YELLOW
- .. row 55
- **Media selection**
- .. row 56
- ``KEY_CD``
- Change input source to Compact Disc
- CD
- .. row 57
- ``KEY_DVD``
- Change input to DVD
- DVD / DVD MENU
- .. row 58
- ``KEY_EJECTCLOSECD``
- Open/close the CD/DVD player
- -> ) / CLOSE / OPEN
- .. row 59
- ``KEY_MEDIA``
- Turn on/off Media application
- PC/TV / TURN ON/OFF APP
- .. row 60
- ``KEY_PC``
- Selects from TV to PC
- PC
- .. row 61
- ``KEY_RADIO``
- Put into AM/FM radio mode
- RADIO / TV/FM / TV/RADIO / FM / FM/RADIO
- .. row 62
- ``KEY_TV``
- Select tv mode
- TV / LIVE TV
- .. row 63
- ``KEY_TV2``
- Select Cable mode
- AIR/CBL
- .. row 64
- ``KEY_VCR``
- Select VCR mode
- VCR MODE / DTR
- .. row 65
- ``KEY_VIDEO``
- Alternate between input modes
- SOURCE / SELECT / DISPLAY / SWITCH INPUTS / VIDEO
- .. row 66
- **Power control**
- .. row 67
- ``KEY_POWER``
- Turn on/off computer
- SYSTEM POWER / COMPUTER POWER
- .. row 68
- ``KEY_POWER2``
- Turn on/off application
- TV ON/OFF / POWER
- .. row 69
- ``KEY_SLEEP``
- Activate sleep timer
- SLEEP / SLEEP TIMER
- .. row 70
- ``KEY_SUSPEND``
- Put computer into suspend mode
- STANDBY / SUSPEND
- .. row 71
- **Window control**
- .. row 72
- ``KEY_CLEAR``
- Stop sroweam and return to default input video/audio
- CLEAR / RESET / BOSS KEY
- .. row 73
- ``KEY_CYCLEWINDOWS``
- Minimize windows and move to the next one
- ALT-TAB / MINIMIZE / DESKTOP
- .. row 74
- ``KEY_FAVORITES``
- Open the favorites sroweam window
- TV WALL / Favorites
- .. row 75
- ``KEY_MENU``
- Call application menu
- 2ND CONTROLS (USA: MENU) / DVD/MENU / SHOW/HIDE CTRL
- .. row 76
- ``KEY_NEW``
- Open/Close Picture in Picture
- PIP
- .. row 77
- ``KEY_OK``
- Send a confirmation code to application
- OK / ENTER / RETURN
- .. row 78
- ``KEY_SCREEN``
- Select screen aspect ratio
- 4:3 16:9 SELECT
- .. row 79
- ``KEY_ZOOM``
- Put device into zoom/full screen mode
- ZOOM / FULL SCREEN / ZOOM+ / HIDE PANNEL / SWITCH
- .. row 80
- **Navigation keys**
- .. row 81
- ``KEY_ESC``
- Cancel current operation
- CANCEL / BACK
- .. row 82
- ``KEY_HELP``
- Open a Help window
- HELP
- .. row 83
- ``KEY_HOMEPAGE``
- Navigate to Homepage
- HOME
- .. row 84
- ``KEY_INFO``
- Open On Screen Display
- DISPLAY INFORMATION / OSD
- .. row 85
- ``KEY_WWW``
- Open the default browser
- WEB
- .. row 86
- ``KEY_UP``
- Up key
- UP
- .. row 87
- ``KEY_DOWN``
- Down key
- DOWN
- .. row 88
- ``KEY_LEFT``
- Left key
- LEFT
- .. row 89
- ``KEY_RIGHT``
- Right key
- RIGHT
- .. row 90
- **Miscellaneous keys**
- .. row 91
- ``KEY_DOT``
- Return a dot
- .
- .. row 92
- ``KEY_FN``
- Select a function
- FUNCTION
It should be noted that, sometimes, there some fundamental missing keys
at some cheaper IR's. Due to that, it is recommended to:
.. _rc_keymap_notes:
.. flat-table:: Notes
:header-rows: 0
:stub-columns: 0
- .. row 1
- On simpler IR's, without separate channel keys, you need to map UP
as ``KEY_CHANNELUP``
- .. row 2
- On simpler IR's, without separate channel keys, you need to map
DOWN as ``KEY_CHANNELDOWN``
- .. row 3
- On simpler IR's, without separate volume keys, you need to map
LEFT as ``KEY_VOLUMEDOWN``
- .. row 4
- On simpler IR's, without separate volume keys, you need to map
RIGHT as ``KEY_VOLUMEUP``

View File

@@ -0,0 +1,176 @@
.. -*- coding: utf-8; mode: rst -*-
file: uapi/v4l/keytable.c
=========================
.. code-block:: c
/* keytable.c - This program allows checking/replacing keys at IR
Copyright (C) 2006-2009 Mauro Carvalho Chehab <mchehab@infradead.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, version 2 of the License.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
*/
#include <ctype.h>
#include <errno.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <linux/input.h>
#include <sys/ioctl.h>
#include "parse.h"
void prtcode (int *codes)
{
struct parse_key *p;
for (p=keynames;p->name!=NULL;p++) {
if (p->value == (unsigned)codes[1]) {
printf("scancode 0x%04x = %s (0x%02x)\\n", codes[0], p->name, codes[1]);
return;
}
}
if (isprint (codes[1]))
printf("scancode %d = '%c' (0x%02x)\\n", codes[0], codes[1], codes[1]);
else
printf("scancode %d = 0x%02x\\n", codes[0], codes[1]);
}
int parse_code(char *string)
{
struct parse_key *p;
for (p=keynames;p->name!=NULL;p++) {
if (!strcasecmp(p->name, string)) {
return p->value;
}
}
return -1;
}
int main (int argc, char *argv[])
{
int fd;
unsigned int i, j;
int codes[2];
if (argc<2 || argc>4) {
printf ("usage: %s <device> to get table; or\\n"
" %s <device> <scancode> <keycode>\\n"
" %s <device> <keycode_file>n",*argv,*argv,*argv);
return -1;
}
if ((fd = open(argv[1], O_RDONLY)) < 0) {
perror("Couldn't open input device");
return(-1);
}
if (argc==4) {
int value;
value=parse_code(argv[3]);
if (value==-1) {
value = strtol(argv[3], NULL, 0);
if (errno)
perror("value");
}
codes [0] = (unsigned) strtol(argv[2], NULL, 0);
codes [1] = (unsigned) value;
if(ioctl(fd, EVIOCSKEYCODE, codes))
perror ("EVIOCSKEYCODE");
if(ioctl(fd, EVIOCGKEYCODE, codes)==0)
prtcode(codes);
return 0;
}
if (argc==3) {
FILE *fin;
int value;
char *scancode, *keycode, s[2048];
fin=fopen(argv[2],"r");
if (fin==NULL) {
perror ("opening keycode file");
return -1;
}
/* Clears old table */
for (j = 0; j < 256; j++) {
for (i = 0; i < 256; i++) {
codes[0] = (j << 8) | i;
codes[1] = KEY_RESERVED;
ioctl(fd, EVIOCSKEYCODE, codes);
}
}
while (fgets(s,sizeof(s),fin)) {
scancode=strtok(s,"\\n\\t =:");
if (!scancode) {
perror ("parsing input file scancode");
return -1;
}
if (!strcasecmp(scancode, "scancode")) {
scancode = strtok(NULL,"\\n\\t =:");
if (!scancode) {
perror ("parsing input file scancode");
return -1;
}
}
keycode=strtok(NULL,"\\n\\t =:(");
if (!keycode) {
perror ("parsing input file keycode");
return -1;
}
// printf ("parsing %s=%s:", scancode, keycode);
value=parse_code(keycode);
// printf ("\\tvalue=%d\\n",value);
if (value==-1) {
value = strtol(keycode, NULL, 0);
if (errno)
perror("value");
}
codes [0] = (unsigned) strtol(scancode, NULL, 0);
codes [1] = (unsigned) value;
// printf("\\t%04x=%04x\\n",codes[0], codes[1]);
if(ioctl(fd, EVIOCSKEYCODE, codes)) {
fprintf(stderr, "Setting scancode 0x%04x with 0x%04x via ",codes[0], codes[1]);
perror ("EVIOCSKEYCODE");
}
if(ioctl(fd, EVIOCGKEYCODE, codes)==0)
prtcode(codes);
}
return 0;
}
/* Get scancode table */
for (j = 0; j < 256; j++) {
for (i = 0; i < 256; i++) {
codes[0] = (j << 8) | i;
if (!ioctl(fd, EVIOCGKEYCODE, codes) && codes[1] != KEY_RESERVED)
prtcode(codes);
}
}
return 0;
}

View File

@@ -0,0 +1,28 @@
.. -*- coding: utf-8; mode: rst -*-
.. _lirc_dev_intro:
************
Introduction
************
The LIRC device interface is a bi-directional interface for transporting
raw IR data between userspace and kernelspace. Fundamentally, it is just
a chardev (/dev/lircX, for X = 0, 1, 2, ...), with a number of standard
struct file_operations defined on it. With respect to transporting raw
IR data to and fro, the essential fops are read, write and ioctl.
Example dmesg output upon a driver registering w/LIRC:
.. code-block:: none
$ dmesg |grep lirc_dev
lirc_dev: IR Remote Control driver registered, major 248
rc rc0: lirc_dev: driver ir-lirc-codec (mceusb) registered at minor = 0
What you should see for a chardev:
.. code-block:: none
$ ls -l /dev/lirc*
crw-rw---- 1 root root 248, 0 Jul 2 22:20 /dev/lirc0

View File

@@ -0,0 +1,15 @@
.. -*- coding: utf-8; mode: rst -*-
.. _lirc_dev:
LIRC Device Interface
=====================
.. toctree::
:maxdepth: 1
lirc_dev_intro
lirc_read
lirc_write
lirc_ioctl

View File

@@ -0,0 +1,156 @@
.. -*- coding: utf-8; mode: rst -*-
.. _lirc_ioctl:
**************
LIRC ioctl fop
**************
The LIRC device's ioctl definition is bound by the ioctl function
definition of struct file_operations, leaving us with an unsigned int
for the ioctl command and an unsigned long for the arg. For the purposes
of ioctl portability across 32-bit and 64-bit, these values are capped
to their 32-bit sizes.
The following ioctls can be used to change specific hardware settings.
In general each driver should have a default set of settings. The driver
implementation is expected to re-apply the default settings when the
device is closed by user-space, so that every application opening the
device can rely on working with the default settings initially.
LIRC_GET_FEATURES
Obviously, get the underlying hardware device's features. If a
driver does not announce support of certain features, calling of the
corresponding ioctls is undefined.
LIRC_GET_SEND_MODE
Get supported transmit mode. Only LIRC_MODE_PULSE is supported by
lircd.
LIRC_GET_REC_MODE
Get supported receive modes. Only LIRC_MODE_MODE2 and
LIRC_MODE_LIRCCODE are supported by lircd.
LIRC_GET_SEND_CARRIER
Get carrier frequency (in Hz) currently used for transmit.
LIRC_GET_REC_CARRIER
Get carrier frequency (in Hz) currently used for IR reception.
LIRC_{G,S}ET_{SEND,REC}_DUTY_CYCLE
Get/set the duty cycle (from 0 to 100) of the carrier signal.
Currently, no special meaning is defined for 0 or 100, but this
could be used to switch off carrier generation in the future, so
these values should be reserved.
LIRC_GET_REC_RESOLUTION
Some receiver have maximum resolution which is defined by internal
sample rate or data format limitations. E.g. it's common that
signals can only be reported in 50 microsecond steps. This integer
value is used by lircd to automatically adjust the aeps tolerance
value in the lircd config file.
LIRC_GET_M{IN,AX}_TIMEOUT
Some devices have internal timers that can be used to detect when
there's no IR activity for a long time. This can help lircd in
detecting that a IR signal is finished and can speed up the decoding
process. Returns an integer value with the minimum/maximum timeout
that can be set. Some devices have a fixed timeout, in that case
both ioctls will return the same value even though the timeout
cannot be changed.
LIRC_GET_M{IN,AX}_FILTER_{PULSE,SPACE}
Some devices are able to filter out spikes in the incoming signal
using given filter rules. These ioctls return the hardware
capabilities that describe the bounds of the possible filters.
Filter settings depend on the IR protocols that are expected. lircd
derives the settings from all protocols definitions found in its
config file.
LIRC_GET_LENGTH
Retrieves the code length in bits (only for LIRC_MODE_LIRCCODE).
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.
LIRC_SET_{SEND,REC}_MODE
Set send/receive mode. Largely obsolete for send, as only
LIRC_MODE_PULSE is supported.
LIRC_SET_{SEND,REC}_CARRIER
Set send/receive carrier (in Hz).
LIRC_SET_TRANSMITTER_MASK
This enables the given set of transmitters. The first transmitter is
encoded by the least significant bit, etc. When an invalid bit mask
is given, i.e. a bit is set, even though the device does not have so
many transitters, then this ioctl returns the number of available
transitters and does nothing otherwise.
LIRC_SET_REC_TIMEOUT
Sets the integer value for IR inactivity timeout (cf.
LIRC_GET_MIN_TIMEOUT and LIRC_GET_MAX_TIMEOUT). A value of 0
(if supported by the hardware) disables all hardware timeouts and
data should be reported as soon as possible. If the exact value
cannot be set, then the next possible value _greater_ than the
given value should be set.
LIRC_SET_REC_TIMEOUT_REPORTS
Enable (1) or disable (0) timeout reports in LIRC_MODE_MODE2. By
default, timeout reports should be turned off.
LIRC_SET_REC_FILTER_{,PULSE,SPACE}
Pulses/spaces shorter than this are filtered out by hardware. If
filters cannot be set independently for pulse/space, the
corresponding ioctls must return an error and LIRC_SET_REC_FILTER
shall be used instead.
LIRC_SET_MEASURE_CARRIER_MODE
Enable (1)/disable (0) measure mode. If enabled, from the next key
press on, the driver will send LIRC_MODE2_FREQUENCY packets. By
default this should be turned off.
LIRC_SET_REC_{DUTY_CYCLE,CARRIER}_RANGE
To set a range use
LIRC_SET_REC_DUTY_CYCLE_RANGE/LIRC_SET_REC_CARRIER_RANGE
with the lower bound first and later
LIRC_SET_REC_DUTY_CYCLE/LIRC_SET_REC_CARRIER with the upper
bound.
LIRC_NOTIFY_DECODE
This ioctl is called by lircd whenever a successful decoding of an
incoming IR signal could be done. This can be used by supporting
hardware to give visual feedback to the user e.g. by flashing a LED.
LIRC_SETUP_{START,END}
Setting of several driver parameters can be optimized by
encapsulating the according ioctl calls with
LIRC_SETUP_START/LIRC_SETUP_END. When a driver receives a
LIRC_SETUP_START ioctl it can choose to not commit further setting
changes to the hardware until a LIRC_SETUP_END is received. But
this is open to the driver implementation and every driver must also
handle parameter changes which are not encapsulated by
LIRC_SETUP_START and LIRC_SETUP_END. Drivers can also choose to
ignore these ioctls.
LIRC_SET_WIDEBAND_RECEIVER
Some receivers are equipped with special wide band receiver which is
intended to be used to learn output of existing remote. Calling that
ioctl with (1) will enable it, and with (0) disable it. This might
be useful of receivers that have otherwise narrow band receiver that
prevents them to be used with some remotes. Wide band receiver might
also be more precise On the other hand its disadvantage it usually
reduced range of reception. Note: wide band receiver might be
implictly enabled if you enable carrier reports. In that case it
will be disabled as soon as you disable carrier reports. Trying to
disable wide band receiver while carrier reports are active will do
nothing.
.. _lirc_dev_errors:
Return Value
============
On success 0 is returned, on error -1 and the ``errno`` variable is set
appropriately. The generic error codes are described at the
:ref:`Generic Error Codes <gen-errors>` chapter.

View File

@@ -0,0 +1,19 @@
.. -*- coding: utf-8; mode: rst -*-
.. _lirc_read:
*************
LIRC read fop
*************
The lircd userspace daemon reads raw IR data from the LIRC chardev. The
exact format of the data depends on what modes a driver supports, and
what mode has been selected. lircd obtains supported modes and sets the
active mode via the ioctl interface, detailed at :ref:`lirc_ioctl`.
The generally preferred mode is LIRC_MODE_MODE2, in which packets
containing an int value describing an IR signal are read from the
chardev.
See also
`http://www.lirc.org/html/technical.html <http://www.lirc.org/html/technical.html>`__
for more info.

View File

@@ -0,0 +1,14 @@
.. -*- coding: utf-8; mode: rst -*-
.. _lirc_write:
**************
LIRC write fop
**************
The data written to the chardev is a pulse/space sequence of integer
values. Pulses and spaces 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``.

View File

@@ -0,0 +1,52 @@
.. -*- coding: utf-8; mode: rst -*-
.. include:: <isonum.txt>
.. _remotes:
#####################
Remote Controller API
#####################
.. _remote_controllers:
******************
Remote Controllers
******************
.. toctree::
:maxdepth: 1
:numbered:
Remote_controllers_Intro
remote_controllers_sysfs_nodes
Remote_controllers_tables
Remote_controllers_table_change
lirc_device_interface
**********************
Revision and Copyright
**********************
Authors:
- Carvalho Chehab, Mauro <mchehab@kernel.org>
- Initial version.
**Copyright** |copy| 2009-2016 : Mauro Carvalho Chehab
****************
Revision History
****************
:revision: 3.15 / 2014-02-06 (*mcc*)
Added the interface description and the RC sysfs class description.
:revision: 1.0 / 2009-09-06 (*mcc*)
Initial revision

View File

@@ -0,0 +1,143 @@
.. -*- coding: utf-8; mode: rst -*-
.. _remote_controllers_sysfs_nodes:
*******************************
Remote Controller's sysfs nodes
*******************************
As defined at ``Documentation/ABI/testing/sysfs-class-rc``, those are
the sysfs nodes that control the Remote Controllers:
.. _sys_class_rc:
/sys/class/rc/
==============
The ``/sys/class/rc/`` class sub-directory belongs to the Remote
Controller core and provides a sysfs interface for configuring infrared
remote controller receivers.
.. _sys_class_rc_rcN:
/sys/class/rc/rcN/
==================
A ``/sys/class/rc/rcN`` directory is created for each remote control
receiver device where N is the number of the receiver.
.. _sys_class_rc_rcN_protocols:
/sys/class/rc/rcN/protocols
===========================
Reading this file returns a list of available protocols, something like:
``rc5 [rc6] nec jvc [sony]``
Enabled protocols are shown in [] brackets.
Writing "+proto" will add a protocol to the list of enabled protocols.
Writing "-proto" will remove a protocol from the list of enabled
protocols.
Writing "proto" will enable only "proto".
Writing "none" will disable all protocols.
Write fails with ``EINVAL`` if an invalid protocol combination or unknown
protocol name is used.
.. _sys_class_rc_rcN_filter:
/sys/class/rc/rcN/filter
========================
Sets the scancode filter expected value.
Use in combination with ``/sys/class/rc/rcN/filter_mask`` to set the
expected value of the bits set in the filter mask. If the hardware
supports it then scancodes which do not match the filter will be
ignored. Otherwise the write will fail with an error.
This value may be reset to 0 if the current protocol is altered.
.. _sys_class_rc_rcN_filter_mask:
/sys/class/rc/rcN/filter_mask
=============================
Sets the scancode filter mask of bits to compare. Use in combination
with ``/sys/class/rc/rcN/filter`` to set the bits of the scancode which
should be compared against the expected value. A value of 0 disables the
filter to allow all valid scancodes to be processed.
If the hardware supports it then scancodes which do not match the filter
will be ignored. Otherwise the write will fail with an error.
This value may be reset to 0 if the current protocol is altered.
.. _sys_class_rc_rcN_wakeup_protocols:
/sys/class/rc/rcN/wakeup_protocols
==================================
Reading this file returns a list of available protocols to use for the
wakeup filter, something like:
``rc5 rc6 nec jvc [sony]``
The enabled wakeup protocol is shown in [] brackets.
Writing "+proto" will add a protocol to the list of enabled wakeup
protocols.
Writing "-proto" will remove a protocol from the list of enabled wakeup
protocols.
Writing "proto" will use "proto" for wakeup events.
Writing "none" will disable wakeup.
Write fails with ``EINVAL`` if an invalid protocol combination or unknown
protocol name is used, or if wakeup is not supported by the hardware.
.. _sys_class_rc_rcN_wakeup_filter:
/sys/class/rc/rcN/wakeup_filter
===============================
Sets the scancode wakeup filter expected value. Use in combination with
``/sys/class/rc/rcN/wakeup_filter_mask`` to set the expected value of
the bits set in the wakeup filter mask to trigger a system wake event.
If the hardware supports it and wakeup_filter_mask is not 0 then
scancodes which match the filter will wake the system from e.g. suspend
to RAM or power off. Otherwise the write will fail with an error.
This value may be reset to 0 if the wakeup protocol is altered.
.. _sys_class_rc_rcN_wakeup_filter_mask:
/sys/class/rc/rcN/wakeup_filter_mask
====================================
Sets the scancode wakeup filter mask of bits to compare. Use in
combination with ``/sys/class/rc/rcN/wakeup_filter`` to set the bits of
the scancode which should be compared against the expected value to
trigger a system wake event.
If the hardware supports it and wakeup_filter_mask is not 0 then
scancodes which match the filter will wake the system from e.g. suspend
to RAM or power off. Otherwise the write will fail with an error.
This value may be reset to 0 if the wakeup protocol is altered.