요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
.. c:namespace:: RC
.. _lirc_get_rec_mode:
.. _lirc_set_rec_mode:
**********************************************
ioctls LIRC_GET_REC_MODE and LIRC_SET_REC_MODE
**********************************************
Name
====
LIRC_GET_REC_MODE/LIRC_SET_REC_MODE - Get/set current receive mode.
Synopsis
========
.. c:macro:: LIRC_GET_REC_MODE
``int ioctl(int fd, LIRC_GET_REC_MODE, __u32 *mode)``
.. c:macro:: LIRC_SET_REC_MODE
``int ioctl(int fd, LIRC_SET_REC_MODE, __u32 *mode)``
Arguments
=========
``fd``
File descriptor returned by open().
``mode``
Mode used for receive.
Description
===========
Get and set the current receive mode. Only
:ref:`LIRC_MODE_MODE2 <lirc-mode-mode2>` and
:ref:`LIRC_MODE_SCANCODE <lirc-mode-scancode>` are supported.
Use :ref:`lirc_get_features` to find out which modes the driver supports.
Return Value
============
.. tabularcolumns:: |p{2.5cm}|p{15.0cm}|
.. flat-table::
:header-rows: 0
:stub-columns: 0
- .. row 1
- ``ENODEV``
- Device not available.
- .. row 2
- ``ENOTTY``
- Device does not support receiving.
- .. row 3
- ``EINVAL``
- Invalid mode or invalid mode for this device.
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
이름, 선언과 인자
1-35`LIRC_GET_REC_MODE`는 현재 수신 mode를 읽고 `LIRC_SET_REC_MODE`는 수신 mode를 설정합니다. 두 ioctl 모두 `open()`이 반환한 LIRC 장치 `fd`와 `__u32 mode` pointer를 사용합니다.
int ioctl(int fd, LIRC_GET_REC_MODE, __u32 *mode);
int ioctl(int fd, LIRC_SET_REC_MODE, __u32 *mode);
같은 mode pointer가 조회 결과 또는 설정 입력으로 쓰입니다.
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-no-invariants-or-later
.. c:namespace:: RC
.. _lirc_get_rec_mode:
.. _lirc_set_rec_mode:
**********************************************
ioctls LIRC_GET_REC_MODE and LIRC_SET_REC_MODE
**********************************************
Name
====
LIRC_GET_REC_MODE/LIRC_SET_REC_MODE - Get/set current receive mode.
Synopsis
========
.. c:macro:: LIRC_GET_REC_MODE
``int ioctl(int fd, LIRC_GET_REC_MODE, __u32 *mode)``
.. c:macro:: LIRC_SET_REC_MODE
``int ioctl(int fd, LIRC_SET_REC_MODE, __u32 *mode)``
Arguments
=========
``fd``
File descriptor returned by open().
``mode``
Mode used for receive.
지원 수신 mode
36-43수신 mode로는 raw pulse/space를 전달하는 `LIRC_MODE_MODE2`와 decode된 scan code를 전달하는 `LIRC_MODE_SCANCODE`만 지원합니다.
Driver마다 가능한 mode가 다르므로 전환 전에 `LIRC_GET_FEATURES`로 feature를 확인해야 합니다.
수신 data representation을 선택합니다.
Description
===========
Get and set the current receive mode. Only
:ref:`LIRC_MODE_MODE2 <lirc-mode-mode2>` and
:ref:`LIRC_MODE_SCANCODE <lirc-mode-scancode>` are supported.
Use :ref:`lirc_get_features` to find out which modes the driver supports.
오류 코드
44-69오류이면 해당 errno 조건으로 실패합니다. 이 표는 get과 set 양쪽에 적용되는 장치 가용성 및 mode 검증 결과입니다.
장치 capability와 요청 값을 구분합니다.
Return Value
============
.. tabularcolumns:: |p{2.5cm}|p{15.0cm}|
.. flat-table::
:header-rows: 0
:stub-columns: 0
- .. row 1
- ``ENODEV``
- Device not available.
- .. row 2
- ``ENOTTY``
- Device does not support receiving.
- .. row 3
- ``EINVAL``
- Invalid mode or invalid mode for this device.
요약·해설
lirc-get-rec-mode.rst:1-69수신 mode는 raw IR MODE2와 decoded SCANCODE 두 가지입니다. Feature 조회로 지원 여부를 확인하고 ENODEV, ENOTTY, EINVAL을 구분합니다.