table of contents
LIRC(4) | Manuel du programmeur Linux | LIRC(4) |
NOM¶
lirc — périphériques lirc
DESCRIPTION¶
Les périphériques caractères /dev/lirc* fournissent une interface bidirectionnelle de bas niveau pour les télécommandes infrarouges (IR). Lors de la réception ou de l’émission de données, le pilote fonctionne dans deux modes différents selon le matériel sous-jacent.
Certains matériels (typiquement les cartes TV) décodent le signal infrarouge en interne et fournissent des décodages d’appui de bouton sous forme de valeurs entières. Les pilotes de cette sorte de matériel fonctionnent dans le mode LIRC_MODE_SCANCODE. De tels matériels habituellement ne gèrent pas l’émission de signaux infrarouges. De plus, de tels matériels fonctionnent qu’avec la télécommande particulière fournie avec, par exemple, une carte TV.
D’autres matériels fournissent un flux d’impulsions/intervalles. De tels pilotes fonctionnent dans le mode LIRC_MODE_MODE2. Quelquefois ce genre de matériel gère aussi l’émission de données par IR. De tels matériels peuvent être utilisés (presque) avec n’importe quelle sorte de télécommande.
L’ioctl LIRC_GET_REC_MODE (voir ci-dessous) permet le sondage pour le mode.
Lecture de l’entrée avec les pilotes LIRC_MODE_MODE2¶
Dans le mode LIRC_MODE_MODE2, les données renvoyées par read(2) fournissent des valeurs en 32 bits représentant une durée d’intervalle ou d’impulsion, par convention dactylographiées sous lirc_t. La durée (en (microsecondes) est encodée dans les 24 bits de plus faible poids. Les 8 bits de poids le plus fort indiquent le type de paquet :
- LIRC_MODE2_SPACE.
- La valeur indique une durée d’intervalle (microsecondes)
- LIRC_MODE2_PULSE.
- La valeur indique une durée d’impulsion (microsecondes)
- LIRC_MODE2_FREQUENCY.
- La valeur indique une fréquence (Hz); consulter l’ioctl LIRC_SET_MEASURE_CARRIER_MODE.
- LIRC_MODE2_TIMEOUT.
- Le paquet reflète une temporisation ; consulter l’ioctl LIRC_SET_REC_TIMEOUT_REPORTS.
Lecture de l’entrée avec les¶
pilotes LIRC_MODE_LIRCCODE
Dans le mode LIRC_MODE_LIRCCODE, les données renvoyées par read(2) reflètent les décodages d’appui de bouton. La longueur de chaque paquet peut être retrouvée en utilisant l’ioctl LIRC_GET_LENGTH. Les lectures doivent être faites par bloc correspondant au comptage de bits renvoyé par l’ioctl LIRC_GET_LENGTH arrondi à la valeur supérieure de façon à correspondre à des octets entiers.
Émission de données¶
Lors de l’émission de données, seul le mode LIRC_MODE_PULSE est pris en charge. Les données écrites sur le périphérique caractère en utilisant write(2) est une séquence d’impulsions/intervalles de valeurs entières. Les impulsions et les intervalles sont marqués implicitement par leur position. Les données doivent débuter et se terminer par une impulsion, par conséquent elles doivent toujours inclurent un nombre impair d’échantillons. La fonction write(2) bloque jusqu’à ce que les données aient été transmises par l’appareil. Si plus de données sont fournies que ce que l’appareil peut envoyer, l’appel write(2) échoue avec l’erreur EINVAL.
COMMANDES IOCTL¶
La liste complète des commandes d’ioctl est entretenue dans la documentation du noyau, consulter VOIR AUSSI. Les commandes d’ioctls présentées ici sont un sous-ensemble de la documentation du noyau.
La définition de l’ioctl du périphérique LIRC est liée à la définition d’ioctl de la fonction struct file_operations, avec un unsigned int pour l’ioctl et un unsigned long pour l’argument. Pour des besoins de portabilité d’ioctl à travers les architectures 32 bits et 64 bits, ces valeurs ont été limitées à leur taille en 32 bits.
#include <lirc/include/media/lirc.h> /* Mais voir BOGUES */ int ioctl(int fd, int cmd, ...);
Les ioctls suivants peuvent être utilisés pour examiner ou modifier des réglages de matériels lirc spécifiques. Plusieurs demandent un troisième argument, habituellement un int, référé ci-après sous val.
En général, chaque pilote devrait avoir un ensemble de réglages par défaut. L’implémentation du pilote est supposée réappliquer les réglages par défaut quand le périphérique est fermé par l’espace utilisateur, de telle façon que chaque application ouvrant le périphérique puisse supposer travailler initialement avec les réglages par défaut.
Commandes toujours prises en charge¶
Les périphériques /dev/lirc* gèrent toujours la commande suivante :
- LIRC_GET_FEATURES (void)
- Renvoi d’un masque de bits des bits combinés de fonctionnalités ; consulter FONCTIONNALITÉS. Certains pilotes ont des fonctionnalités dynamiques qui ne sont pas mises à jour avant une commande init(). Si un pilote n’annonce pas la prise en charge de certaines fonctionnalités, le résultat de l’appel correspondant à l’ioctl est indéfini.
- LIRC_GET_REC_MODE
- Renvoi du mode de réception qui doit être un des suivants :
- LIRC_MODE_MODE2 (void)
- le pilote renvoie une séquence de durées d’impulsion/intervalles ;
- LIRC_MODE_LIRCCODE
- Le pilote renvoie des valeurs entières, chacune d’elle représentant le décodage d’un appui de bouton.
Si un périphérique renvoie un code d’erreur pour LIRC_GET_REC_MODE, il est normal de présumer que ce n’est pas un périphérique lirc.
Commandes facultatives¶
Quelques périphériques lirc prennent en charge les commandes listées ci-après. À moins d’être déclarées autrement, elles échouent avec l’erreur ENOIOCTLCMD ou avec l’erreur ENOTTY si l’opération n’est pas gérée, ou avec l’erreur EINVAL si l’opération échoue.
- LIRC_SET_REC_MODE (int)
- Réglage du mode de réception. val est soit LIRC_MODE_LIRCCODE soit LIRC_MODE_MODE2.
- LIRC_GET_LENGTH (void)
- Renvoi de la taille des codes renvoyés pour les pilotes de type LIRC_MODE_LIRCCODE, ou échec avec l’erreur ENOIOCTLCMD.
- LIRC_GET_SEND_MODE (void)
- Renvoi du mode d’émission. Actuellement, seulement LIRC_MODE_PULSE est géré.
- LIRC_SET_SEND_MODE (int)
- Renvoi du mode d’émission. Actuellement, d’aucune utilité puisque seulement LIRC_MODE_PULSE est géré.
- LIRC_GET_SEND_CARRIER (void)
- Obtention de la fréquence de modulation (Hz).
- LIRC_SET_SEND_CARRIER (int)
- Réglage de la fréquence de modulation. L’argument est la fréquence (Hz).
- LIRC_GET_SEND_CARRIER (void)
- Obtention de la fréquence de modulation utilisée (Hz) lors du décodage.
- SET_SEND_DUTY_CYCLE (int)
- Réglage du cycle opératoire de la porteuse. val est un nombre dans l’intervalle [0,100] qui décrit la largeur d’impulsion comme un pourcentage du cycle total. Actuellement, aucune signification spéciale n’est donnée à 0 ou 100, mais ces valeurs sont réservées pour une utilisation future.
- LIRC_GET_MIN_TIMEOUT (void), LIRC_GET_MAX_TIMEOUT (void)
- Certains périphériques ont des minuteurs internes qui peuvent être utilisés pour détecter lorsqu’il n’y a pas eu d’activité IR depuis un long moment. Cela peut aider lircd(8) dans la détection qu’un signal IR a cessé, et peut accélérer le processus de décodage. Ces opérations renvoient des valeurs entières avec une temporisation minimale ou maximale pouvant être définie (microsecondes). Certains périphériques ont une temporisation fixe. Pour de tels pilotes, LIRC_GET_MIN_TIMEOUT et LIRC_GET_MAX_TIMEOUT renverront la même valeur.
- LIRC_SET_REC_TIMEOUT (int)
- Réglage de la valeur entière pour la temporisation d’inactivité IR (microsecondes). Pour être acceptée la valeur doit être entre des limites définies par LIRC_GET_MIN_TIMEOUT et LIRC_GET_MAX_TIMEOUT. Une valeur de 0 (si acceptée par le matériel) désactive toutes les temporisations de matériel et les données devraient être annoncées le plus tôt possible. Si la valeur exacte ne peut être réglée, alors la valeur supérieure possible la plus proche de la valeur donnée devrait être définie.
- LIRC_SET_REC_TIMEOUT_REPORTS (int)
- Activation (val est 1) ou désactivation (val est 0) des paquets de temporisation dans LIRC_MODE_MODE2. Par défaut, les annonces de temporisation devraient être désactivées.
- LIRC_SET_REC_CARRIER (int)
- Réglage de la fréquence de réception de la porteuse (Hz).
- LIRC_SET_REC_CARRIER_RANGE (int)
- Après l’ouverture du périphérique, la première utilisation de cette opération est de définir la limite inférieure de la plage de la porteuse, la seconde est de définir la limite supérieure (Hz).
- LIRC_SET_MEASURE_CARRIER_MODE (int)
- Activation (val vaut 1) ou désactivation (val vaut 0) du mode de mesure. Si activé, lors du prochain appui de touche, le pilote enverra des paquets LIRC_MODE2_FREQUENCY. Par défaut, cela devrait être désactivé.
- LIRC_GET_REC_RESOLUTION (void)
- Renvoi de la résolution du pilote (microsecondes).
- LIRC_GET_MIN_FILTER_PULSE (void), LIRC_GET_MAX_FILTER_PULSE (void)
- Certains périphériques sont capables de filtrer des pics dans le signal en utilisant des règles de filtrage données. Ces ioctls renvoient les capacités du matériel qui décrivent les limites des filtres possibles. Les réglages de filtre dépendent des protocoles IR attendus. lircd(8) extrait les réglages de toutes les définitions de protocole trouvées dans son fichier de configuration de lircd.conf(5).
- LIRC_GET_MIN_FILTER_SPACE (void), LIRC_GET_MAX_FILTER_SPACE (void)
- Consulter LIRC_GET_MIN_FILTER_PULSE.
- LIRC_SET_REC_FILTER (int)
- Les impulsions ou intervalles plus courts qu’indiqué (microsecondes) sont supprimés par le matériel.
- LIRC_SET_REC_FILTER_PULSE (int), LIRC_SET_REC_FILTER_SPACE (int)
- Les impulsions ou intervalles plus courts qu’indiqué (microsecondes) sont supprimés par le matériel. Si les filtres ne peuvent être réglés indépendamment pour les impulsions et les intervalles, les ioctls correspondants doivent renvoyer une erreur et LIRC_SET_REC_FILTER doit être utilisé à la place.
- LIRC_SET_TRANSMITTER_MASK
- Activation de l’ensemble des émetteurs indiqués dans val, qui contient un masque de bits ou chaque émetteur activé est un 1. Le premier émetteur est encodé par le bit de poids le plus faible, etc. Quand un masque de bits non valable est fourni, par exemple un bit est défini bien que le périphérique n’ait pas autant d’émetteurs, cette opération renvoie le nombre d’émetteurs disponibles et ne fait rien d’autre autrement.
- LIRC_SET_WIDEBAND_RECEIVER (int)
- Certains périphériques sont équipés d’un récepteur spécial large bande qui est prévu pour découvrir la sortie d’une télécommande existante. Cet ioctl peut être utilisé pour activer (val vaut 1) ou désactiver (val vaut 0) cette fonctionnalité. Cela peut être utile pour des périphériques qui autrement ont des récepteurs à bande étroite pour empêcher une utilisation avec certaines télécommandes. Les récepteurs à large bande peuvent être aussi plus précis. D’un autre côté, leur désavantage est en général une réduction de la bande de réception.
- Remarque : le récepteur large bande peut être implicitement activé si les annonces de porteuse sont activées. Dans ce cas, il sera désactivé aussitôt que les annonces de porteuse seront désactivées. Essayer de déactiver un récepteur large bande alors que les annonces de porteuse sont activées est sans effet.
- LIRC_SETUP_START (void), LIRC_SETUP_END (void)
- Le réglage de plusieurs paramètres de pilote peut être optimisé en mettant entre parenthèses les appels réels d’ioctl LIRC_SETUP_START et LIRC_SETUP_END. Quand un pilote reçoit un ioctl LIRC_SETUP_START, il peut choisir de ne pas propager les modifications de réglage vers le matériel jusqu’à ce qu’un LIRC_SETUP_END soit reçu. Mais cela est du ressort de l’implémentation du pilote et chaque pilote doit alors gérer les modifications de paramètre qui ne sont pas encapsulées par LIRC_SETUP_START et LIRC_SETUP_END. Les pilote peuvent aussi choisir d’ignorer ces ioctls.
- LIRC_NOTIFY_DECODE (void)
- Cet ioctl est appelé par lircd(8) à chaque fois qu’un décodage d’un signal IR entrant est réalisable. Cela peut être utilisé pour gérer le matériel et fournir un retour visuel à l’utilisateur, par exemple, par un clignotement de LED.
FONCTIONNALITÉS¶
Les fonctionnalités sont renvoyées par l’ioctl LIRC_GET_FEATURES qui renvoie un masque de bits décrivant les fonctionnalités du pilote. Les bits suivants peuvent être renvoyés dans le masque :
- LIRC_CAN_REC_RAW
- Le pilote peut recevoir en utilisant LIRC_MODE_RAW.
- LIRC_CAN_REC_PULSE
- Le pilote peut recevoir en utilisant LIRC_MODE_PULSE.
- LIRC_CAN_REC_MODE2
- Le pilote peut recevoir en utilisant LIRC_MODE_MODE2.
- LIRC_CAN_REC_LIRCCODE
- Le pilote peut recevoir en utilisant LIRC_MODE_LIRCCODE.
- LIRC_CAN_SET_SEND_CARRIER
- Le pilote gère la modification de la fréquence de modulation en utilisant LIRC_SET_SEND_CARRIER.
- LIRC_CAN_SET_SEND_DUTY_CYCLE
- Le pilote gère la modification du cycle opératoire en utilisant LIRC_SET_SEND_DUTY_CYCLE.
- LIRC_CAN_SET_TRANSMITTER_MASK
- Le pilot gère les émetteurs actifs en utilisant LIRC_SET_TRANSMITTER_MASK.
- LIRC_CAN_SET_REC_CARRIER
- Le pilote gère le réglage de la fréquence de la porteuse en utilisant LIRC_SET_REC_CARRIER.
- LIRC_CAN_SET_REC_DUTY_CYCLE_RANGE
- Le pilote gère LIRC_SET_REC_DUTY_CYCLE_RANGE.
- LIRC_CAN_SET_REC_CARRIER_RANGE
- Le pilote gère LIRC_SET_REC_CARRIER_RANGE.
- LIRC_CAN_GET_REC_RESOLUTION
- Le pilote gère LIRC_GET_REC_RESOLUTION.
- LIRC_CAN_SET_REC_TIMEOUT
- Le pilote gère LIRC_SET_REC_TIMEOUT.
- LIRC_CAN_SET_REC_FILTER
- Le pilote gère LIRC_SET_REC_FILTER.
- LIRC_CAN_MEASURE_CARRIER
- Le pilote gère la mesure de la fréquence de modulation en utilisant LIRC_SET_MEASURE_CARRIER_MODE.
- LIRC_CAN_USE_WIDEBAND_RECEIVER
- Le pilote gère le mode d’apprentissage en utilisant LIRC_SET_WIDEBAND_RECEIVER.
- LIRC_CAN_NOTIFY_DECODE
- Le pilote gère LIRC_NOTIFY_DECODE.
- LIRC_CAN_SEND_RAW
- Le pilote gère l’émission en utilisant LIRC_MODE_RAW.
- LIRC_CAN_SEND_PULSE
- Le pilote gère l’émission en utilisant LIRC_MODE_PULSE.
- LIRC_CAN_SEND_MODE2
- Le pilote gère l’émission en utilisant LIRC_MODE_MODE2.
- LIRC_CAN_SEND_LIRCCODE
- Le pilote gère l’émission (cela n’est pas courant, puisque les pilotes LIRCCODE sont le reflet de matériels tels que les cartes TV qui habituellement ne gèrent pas l’émission).
BOGUES¶
L’utilisation de ces périphériques nécessite le fichier d’en-tête source du noyau lirc.h. Ce fichier n’était pas disponible avant Linux 4.6. Les utilisateurs de noyaux plus anciens peuvent utiliser le fichier disponible dans http://www.lirc.org.
VOIR AUSSI¶
COLOPHON¶
Cette page fait partie de la publication 4.16 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.
TRADUCTION¶
La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Paul Guillonneau <guillonneau.jeanpaul@free.fr>
Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org.
17 juillet 2016 | Linux |