Provided by: manpages-ro_4.27.0-1_all 

NUME
lirc - dispozitive lirc (Linux Infrared remote control)
DESCRIERE
Dispozitivele de caractere /dev/lirc* oferă o interfață bidirecțională de nivel scăzut pentru
telecomenzile cu infraroșu (IR). Majoritatea acestor dispozitive pot primi, iar unele pot trimite.
Atunci când primește sau trimite date, controlorul funcționează în două moduri diferite, în funcție de
hardware-ul subiacent.
Unele echipamente hardware (de obicei, plăci TV) decodifică semnalul IR intern și furnizează apăsările de
buton decodificate ca valori ale codului de scan. Controlorii pentru acest tip de hardware funcționează
în modul LIRC_MODE_SCANCODE. De obicei, un astfel de hardware nu acceptă trimiterea de semnale IR. În
plus, un astfel de hardware poate decodifica doar un set limitat de protocoale IR, de obicei doar
protocolul telecomenzii specifice care este inclusă, de exemplu, cu o placă TV.
Alte echipamente hardware furnizează un flux de durate ale impulsurilor/spațiilor. Astfel de controlori
funcționează în modul LIRC_MODE_MODE2. Acest tip de hardware poate fi utilizat cu (aproape) orice tip de
telecomandă. Acest tip de hardware poate fi utilizat și în modul LIRC_MODE_SCANCODE, caz în care
decodoarele IR ale nucleului vor decoda IR. Aceste decodoare pot fi scrise în BPF extins (a se vedea
bpf(2)) și atașate la dispozitivul lirc. Uneori, acest tip de hardware acceptă și trimiterea de date IR.
Ioctl-ul LIRC_GET_FEATURES (a se vedea mai jos) permite, printre altele, să se verifice dacă primirea și
trimiterea sunt acceptate și în ce moduri.
Citirea intrării cu modul LIRC_MODE_MODE2
În modul LIRC_MODE_MODE2, datele returnate de read(2) furnizează valori pe 32 de biți reprezentând un
spațiu sau o durată de impuls. Timpul duratei (microsecunde) este codificat în cei 24 de biți inferiori.
Impulsul (cunoscut și sub denumirea de flash) indică o durată de detectare a luminii infraroșii, iar
spațiul (cunoscut și sub denumirea de spațiu) indică o durată fără infraroșu. Dacă durata spațiului
depășește timpul de inactivitate, este livrat un pachet special de timp de inactivitate, care marchează
sfârșitul unui mesaj. Cei 8 biți superiori indică tipul de pachet:
LIRC_MODE2_SPACE
Valoarea reflectă o durată a spațiului (microsecunde).
LIRC_MODE2_PULSE
Valoarea reflectă durata unui impuls (microsecunde).
LIRC_MODE2_FREQUENCY
Valoarea reflectă o frecvență (Hz); consultați ioctl-ul LIRC_SET_MEASURE_CARRIER_MODE.
LIRC_MODE2_TIMEOUT
Valoarea reflectă o durată a spațiului (microsecunde). Pachetul reflectă un timp de așteptare;
consultați ioctl-ul LIRC_SET_REC_TIMEOUT_REPORTS.
LIRC_MODE2_OVERFLOW
Receptorul IR s-a confruntat cu o depășire de capacitate și, prin urmare, datele lipsesc (de la Linux
5.18).
Citirea intrării în modul LIRC_MODE_SCANCODE
În modul LIRC_MODE_SCANCODE, datele returnate de read(2) reflectă apăsările de buton decodate, în
structura lirc_scancode. Codul de scanare este stocat în câmpul scancode, iar protocolul IR este stocat
în rc_proto. Acest câmp are una dintre valorile din structura enum rc_proto.
Scrierea ieșirii în modul LIRC_MODE_PULSE
Datele scrise în dispozitivul de caractere folosind write(2) sunt o secvență de impulsuri/spații de
valori întregi. Impulsurile și spațiile sunt marcate doar implicit prin poziția lor. Datele trebuie să
înceapă și să se încheie cu un impuls, deci trebuie să includă întotdeauna un număr impar de eșantioane.
Funcția write(2) se blochează până când datele au fost transmise de hardware. Dacă sunt furnizate mai
multe date decât poate trimite hardware-ul, apelul write(2) eșuează cu eroarea EINVAL.
Scrierea ieșirii în modul LIRC_MODE_SCANCODE
Datele scrise în dispozitivele de caractere trebuie să fie o singură structură lirc_scancode. Câmpurile
scancode și rc_proto trebuie completate, toate celelalte câmpuri trebuie să fie 0. Codificatoarele IR ale
nucleului vor converti scan-codul în impulsuri și spații. Protocolul sau codul de scanare nu este valid,
sau dispozitivul lirc nu poate transmite.
COMENZI IOCTL
#include <linux/lirc.h> /* Dar consultați secțiunea ERORI */
int ioctl(int fd, int cmd, int *val);
Următoarele operații ioctl(2) sunt furnizate de dispozitivul de caractere lirc pentru a sonda sau
modifica parametrii hardware specifici lirc.
Comenzi acceptate întotdeauna
Dispozitivele /dev/lirc* acceptă întotdeauna următoarele comenzi:
LIRC_GET_FEATURES (void)
Returnează o mască de biți de caracteristici combinate; consultați CARACTERISTICI.
Dacă un dispozitiv returnează un cod de eroare pentru LIRC_GET_FEATURES, se poate presupune că acesta nu
este un dispozitiv lirc.
Comenzi opționale
Unele dispozitive lirc acceptă comenzile enumerate mai jos. Cu excepția cazului în care se specifică
altfel, acestea eșuează cu eroarea ENOTTY dacă operația nu este acceptată sau cu eroarea EINVAL dacă
operația a eșuat sau au fost furnizate argumente nevalide. Dacă un controlor nu anunță suportul pentru
anumite caracteristici, invocarea ioctl-urilor corespunzătoare va eșua cu eroarea ENOTTY.
LIRC_GET_REC_MODE (void)
Dacă dispozitivul lirc nu are receptor, această operație eșuează cu eroarea ENOTTY. În caz
contrar, se returnează modul de recepție, care va fi unul dintre:
LIRC_MODE_MODE2
Controlorul returnează o secvență de durate ale impulsurilor/spațiilor.
LIRC_MODE_SCANCODE
Controlorul returnează valorile structurii lirc_scancode, fiecare dintre acestea
reprezentând o apăsare de buton decodificată.
LIRC_SET_REC_MODE (int)
Stabilește modul de recepție. val este fie LIRC_MODE_SCANCODE, fie LIRC_MODE_MODE2. Dacă
dispozitivul lirc nu are receptor, această operație eșuează cu eroarea ENOTTY.
LIRC_GET_SEND_MODE (void)
Returnează modul de trimitere. Este acceptat modul LIRC_MODE_PULSE sau LIRC_MODE_SCANCODE. Dacă
dispozitivul lirc nu poate trimite, această operație eșuează cu eroarea ENOTTY.
LIRC_SET_SEND_MODE (int)
Stabilește modul de trimitere. val este fie LIRC_MODE_SCANCODE, fie LIRC_MODE_PULSE. Dacă
dispozitivul lirc nu poate trimite, această operație eșuează cu eroarea ENOTTY.
LIRC_SET_SEND_CARRIER (int)
Stabilește frecvența de modulație. Argumentul este frecvența (Hz).
LIRC_SET_SEND_DUTY_CYCLE (int)
Stabilește ciclul de funcționare al purtătoarei. val este un număr în intervalul [0,100] care
descrie lățimea impulsului ca procent din ciclul total. În prezent, nu este definită nicio
semnificație specială pentru 0 sau 100, dar valorile sunt rezervate pentru utilizare viitoare.
LIRC_GET_MIN_TIMEOUT(void)
LIRC_GET_MAX_TIMEOUT(void)
Unele dispozitive au temporizatoare interne care pot fi utilizate pentru a detecta absența
activității IR pentru o perioadă lungă de timp. Acest lucru poate ajuta lircd(8) să detecteze că
un semnal IR s-a terminat și poate accelera procesul de decodare. Aceste operații returnează
valori întregi cu timpul de așteptare minim/maxim care poate fi definit (microsecunde). Unele
dispozitive au un timp fix de așteptare. Pentru astfel de controlori, LIRC_GET_MIN_TIMEOUT și
LIRC_GET_MAX_TIMEOUT vor eșua cu eroarea ENOTTY.
LIRC_SET_REC_TIMEOUT (int)
Stabilește valoarea întreagă pentru timpul de inactivitate IR (microsecunde). Pentru a fi
acceptată, valoarea trebuie să fie în limitele definite de LIRC_GET_MIN_TIMEOUT și
LIRC_GET_MAX_TIMEOUT. O valoare de 0 (dacă este acceptată de hardware) dezactivează toți timpii de
așteptare hardware, iar datele trebuie raportate cât mai curând posibil. Dacă valoarea exactă nu
poate fi definită, atunci trebuie definită următoarea valoare posibilă mai mare decât valoarea
dată.
LIRC_GET_REC_TIMEOUT (void)
Returnează timpul de inactivitate curent (microsecunde). Disponibilă de la Linux 4.18.
LIRC_SET_REC_TIMEOUT_REPORTS (int)
Activează (val este 1) sau dezactivează (val este 0) pachetele de timp de așteptare în
LIRC_MODE_MODE2. Comportamentul acestei operații a variat în funcție de versiunile nucleului:
• Începând cu Linux 5.17: pachetele de timp de așteptare sunt întotdeauna activate, iar acest
ioctl este un no-op.
• Începând cu Linux 4.16: pachetele de timp de expirare sunt activate în mod implicit. De fiecare
dată când dispozitivul lirc este deschis, operația LIRC_SET_REC_TIMEOUT poate fi utilizată
pentru a dezactiva (și, dacă se dorește, pentru a reactiva ulterior) timpul de așteptare pe
descriptorul de fișier.
• În Linux 4.15 și versiunile anterioare: pachetele de timp de așteptare sunt dezactivate în mod
implicit, iar activarea lor (prin LIRC_SET_REC_TIMEOUT) pe orice descriptor de fișier asociat
cu dispozitivul lirc are ca efect activarea timpilor de așteptare pentru toate descriptoarele
de fișier care se referă la acel dispozitiv (până când timpii de așteptare sunt dezactivați din
nou).
LIRC_SET_REC_CARRIER (int)
Stabilește limita superioară a frecvenței purtătoare de recepție (Hz). A se vedea
LIRC_SET_REC_CARRIER_RANGE.
LIRC_SET_REC_CARRIER_RANGE (int)
Stabilește limita inferioară a frecvenței purtătoare de recepție (Hz). Pentru ca acest lucru să
aibă efect, stabiliți mai întâi limita inferioară utilizând ioctl-ul LIRC_SET_REC_CARRIER_RANGE și
apoi limita superioară utilizând ioctl-ul LIRC_SET_REC_CARRIER.
LIRC_SET_MEASURE_CARRIER_MODE (int)
Activează (val este 1) sau dezactivează (val este 0) modul de măsurare. Dacă este activat, de la
următoarea apăsare de tastă, controlorul va trimite pachete LIRC_MODE2_FREQUENCY. În mod implicit,
acesta ar trebui să fie dezactivat.
LIRC_GET_REC_RESOLUTION (void)
Returnează rezoluția controlorului (microsecunde).
LIRC_SET_TRANSMITTER_MASK (int)
Activează setul de transmițătoare specificate în val, care conține o mască de biți în care fiecare
transmițător activat este un 1. Primul transmițător este codificat de bitul cel mai puțin
semnificativ și așa mai departe. Atunci când este dată o mască de biți nevalidă, de exemplu un bit
este activat chiar dacă dispozitivul nu are atât de multe transmițătoare, această operație
returnează numărul de transmițătoare disponibile și nu face nimic în caz contrar.
LIRC_SET_WIDEBAND_RECEIVER (int)
Unele dispozitive sunt echipate cu un receptor special de bandă largă care este destinat a fi
utilizat pentru a învăța ieșirea unei telecomenzi existente. Acest ioctl poate fi utilizat pentru
a activa (val egal cu 1) sau dezactiva (val egal cu 0) această funcționalitate. Acest lucru ar
putea fi util pentru dispozitivele care, altfel, au receptoare cu bandă îngustă care le împiedică
să fie utilizate cu anumite telecomenzi. De asemenea, receptoarele cu bandă largă pot fi mai
precise. Pe de altă parte, dezavantajul lor este, de obicei, gama redusă de recepție.
Notă: receptorul de bandă largă poate fi activat implicit dacă activați rapoartele purtătoarei. În
acest caz, acesta va fi dezactivat de îndată ce dezactivați rapoartele purtătoarei. Încercarea de
a dezactiva un receptor de bandă largă în timp ce rapoartele purtătoarei sunt active nu va avea
niciun efect.
CARACTERISTICI
ioctl-ul LIRC_GET_FEATURES returnează o mască de biți care descrie caracteristicile controlorului.
Următorii biți pot fi returnați în mască:
LIRC_CAN_REC_MODE2
Controlorul este capabil să recepționeze utilizând LIRC_MODE_MODE2.
LIRC_CAN_REC_SCANCODE
Controlorul este capabil să recepționeze folosind LIRC_MODE_SCANCODE.
LIRC_CAN_SET_SEND_CARRIER
Controlorul acceptă schimbarea frecvenței de modulare utilizând LIRC_SET_SEND_CARRIER.
LIRC_CAN_SET_SEND_DUTY_CYCLE
Controlorul acceptă modificarea ciclului de funcționare utilizând LIRC_SET_SEND_DUTY_CYCLE.
LIRC_CAN_SET_TRANSMITTER_MASK
Controlorul acceptă schimbarea emițătorului (emițătoarelor) activ(e) utilizând
LIRC_SET_TRANSMITTER_MASK.
LIRC_CAN_SET_REC_CARRIER
Controlorul acceptă stabilirea frecvenței purtătoare de recepție utilizând LIRC_SET_REC_CARRIER.
Orice dispozitiv lirc de la fuzionarea controlorilor în Linux 2.6.36 trebuie să aibă activată
funcția LIRC_CAN_SET_REC_CARRIER_RANGE dacă este activată funcția LIRC_CAN_SET_REC_CARRIER.
LIRC_CAN_SET_REC_CARRIER_RANGE
Controlorul acceptă LIRC_SET_REC_CARRIER_RANGE. Limita inferioară a purtătoarei trebuie mai întâi
stabilită utilizând ioctl-ul LIRC_SET_REC_CARRIER_RANGE, înainte de a utiliza ioctl-ul
LIRC_SET_REC_CARRIER pentru a stabili limita superioară.
LIRC_CAN_GET_REC_RESOLUTION
Controlorul acceptă LIRC_GET_REC_RESOLUTION.
LIRC_CAN_SET_REC_TIMEOUT
Controlorul acceptă LIRC_SET_REC_TIMEOUT.
LIRC_CAN_MEASURE_CARRIER
Controlorul acceptă măsurarea frecvenței de modulație utilizând LIRC_SET_MEASURE_CARRIER_MODE.
LIRC_CAN_USE_WIDEBAND_RECEIVER
Controlorul acceptă modul de învățare utilizând LIRC_SET_WIDEBAND_RECEIVER.
LIRC_CAN_SEND_PULSE
Controlorul acceptă trimiterea folosind LIRC_MODE_PULSE sau LIRC_MODE_SCANCODE
ERORI
Utilizarea acestor dispozitive necesită fișierul de antet al sursei nucleului lirc.h. Acest fișier nu
este disponibil înainte de Linux 4.6. Utilizatorii de nuclee mai vechi ar putea folosi fișierul inclus
în http://www.lirc.org.
CONSULTAȚI ȘI
ir-ctl(1), lircd(8), bpf(2)
https://www.kernel.org/doc/html/latest/userspace-api/media/rc/lirc-dev.html
TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu
<remusgabriel.chelu@disroot.org>
Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 sau o
versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO
RESPONSABILITATE.
Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-
ro@lists.sourceforge.net.
Pagini de manual de Linux 6.9.1 2 mai 2024 lirc(4)