Android 독점 NCI 명령어

NFC 컨트롤러 인터페이스 (NCI)는 NFC 컨트롤러 (NFCC)와 상호작용하는 데 사용됩니다. 이 페이지에서는 Android 독점 NCI 명령어의 사양을 설명합니다.

NCI 정의

Android 독점 NCI 명령어는 독점 그룹 ID (GID) 0xF 및 Android opcode 식별자 (OID) 코드 스페이스 0xC를 사용합니다.

공통 패킷 형식

Android NCI 패킷 형식은 독점 Group_ID 0xFOpcode_ID 0x0C를 사용하는 제어 패킷의 NCI 사양을 따릅니다. 각 Android 독점 메시지의 경우 패킷 페이로드의 첫 번째 바이트는 Android opcode (0x0C)로 설정해야 합니다. Android 제어 패킷은 표준 명령어와 마찬가지로 명령어, 응답, 알림을 식별하는 데 Message_TypePBF를 사용합니다.

Android 패킷 형식은 다음 표에 나와 있습니다.

01234567
Message_TypePBFGroup_ID = 0xF (PROPRIETARY)
나중에 사용하기 위해 예약됨 (RFU)Opcode_ID = 0x0C (ANDROID)
Payload_Length
Android_Opcode_ID
Android_Payload

할당된 Android opcode 식별자는 다음 표에 나와 있습니다. 각 패킷의 사양은 다음 섹션에서 설명합니다.

Android OID메시지 유형메시지 이름
0x00NCI_MT_CMDNCI_ANDROID_GET_CAPS_CMD
NCI_MT_RSPNCI_ANDROID_GET_CAPS_RSP
0x01NCI_MT_CMDNCI_ANDROID_POWER_SAVING_CMD
NCI_MT_RSPNCI_ANDROID_POWER_SAVING_RSP
0x02NCI_MT_CMDNCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD
NCI_MT_RSPNCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP
0x03NCI_MT_NTFNCI_ANDROID_POLLING_FRAME_NTF
0x04NCI_MT_CMDNCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD
NCI_MT_RSPNCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP

기능 가져오기 명령어

호스트는 NCI_ANDROID_GET_CAPS_CMD를 사용하여 NFCC에서 지원하는 Android 독점 기능 목록을 쿼리합니다. NCI_ANDROID_GET_CAPS_CMD 명령어는 매개변수를 사용하지 않습니다.

NFCC는 STATUS_OK 상태와 지원되는 기능 및 기능 목록이 포함된 NCI_ANDROID_GET_CAPS_RSP 응답으로 응답해야 합니다.

NFCC가 NCI_ANDROID_GET_CAPS_CMD를 지원하지 않으면 호스트는 각 기능이 지정된 기본값을 사용한다고 가정해야 합니다. 지정된 기능이 NFCC에서 응답으로 반환되지 않으면 호스트는 기능에 지정된 기본값이 있다고 가정해야 합니다.

NCI_ANDROID_GET_CAPS_CMD

페이로드 필드크기값/설명
해당 사항 없음0옥텟

NCI_ANDROID_GET_CAPS_RSP

페이로드 필드크기값/설명
상태1옥텟NCI 사양의 표 140에서 상태 코드를 확인하세요.
Android_Version2옥텟NFCC에서 구현한 Android 요구사항 버전을 식별합니다.
0x0000Android 15
기능 수1옥텟지원되는 기능 수 (n)
Capabilities[0..n](m + 2) * n 옥텟지원되는 기능
유형1옥텟기능의 식별자
1옥텟값의 길이 (m)
m옥텟기능의 값
Android 독점 기능
기능 이름ID크기값/설명
관찰 모드0x001옥텟관찰 모드 지원
0x00 (기본값) - 이 기능을 지원하지 않습니다.
0x01 - 호스트의 RF 비활성화 기능을 지원합니다 (Android 15 이상 필요).
그 외 모든 값은 RFU입니다.
폴링 프레임 알림0x011옥텟폴링 프레임 알림 지원 지원되는 경우 0x01이고 지원되지 않는 경우 0x00 (기본값)입니다. 그 외 모든 값은 RFU입니다.
절전 모드0x021옥텟절전 모드 지원 지원되는 경우 0x01이고 지원되지 않는 경우 0x00 (기본값)입니다. 그 외 모든 값은 RFU입니다.
Auotransact 폴링 루프 필터0x031옥텟관찰 모드가 전역적으로 사용 설정된 경우 특정 패턴의 관찰 모드를 우회하는 펌웨어의 폴링 루프 필터를 지원합니다.
0x00 (기본값) - 이 기능을 지원하지 않음
0x01 - 폴링 루프 필터를 지원함
기타 모든 값은 RFU입니다.
0x04..0xFF0옥텟나중에 사용하기 위해 예약됨

절전 명령어

NFCC를 절전 모드로 전환하려면 호스트가 NCI_ANDROID_POWER_SAVING_CMD 명령어를 사용할 수 있습니다. NFCC는 성공 또는 실패를 나타내는 상태 코드와 함께 NCI_ANDROID_POWER_SAVING_RSP로 응답해야 합니다.

절전 모드에서는 호스트가 NFCC에 명령을 전송해서는 안 되며 NFCC는 호스트에 알림이나 응답을 전송해서는 안 됩니다. NFCC 또는 삽입된 보안 칩 (eSE)은 절전 모드를 사용 설정하기 전에 설정된 라우팅 구성에 따라 수신되는 결제 요청을 자동으로 수락할 수 있습니다.

전체 전원 모드로 돌아가려면 호스트가 NFCC를 재설정하거나 다시 초기화할 수 있습니다.

NCI_ANDROID_POWER_SAVING_CMD

페이로드 필드크기값/설명
절전 모드1옥텟0x00절전 모드 사용 중지
0x01절전 모드 사용 설정

NCI_ANDROID_POWER_SAVING_RSP

페이로드 필드크기값/설명
상태1옥텟NCI 사양의 표 140에서 상태 코드를 참고하세요.

관찰 모드 설정 명령어

호스트는 관찰 모드를 활성화 또는 비활성화하기 위해 NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD 명령어를 사용할 수 있습니다. NFCC는 성공 또는 실패를 나타내는 상태 코드와 함께 NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP로 응답해야 합니다.

관찰 모드가 사용 중지되면 NFCC는 활동 기술 사양에 따라 표준 수신 모드 활동을 구현해야 합니다.

관찰 모드가 활성화된 경우 NFCC는 호스트가 명시적으로 승인할 때까지 리슨 모드의 폴링 루프 중에 폴링 요청에 응답해서는 안 됩니다. NFCC는 필드 활성화를 감지하면 RF_FIELD_INFO_NTF 알림 (NCI 사양 섹션 5.3에 정의됨)을 전송해야 합니다. 폴링 모드 검색이 활성화된 경우 NFCC는 활동 기술 사양에 따라 폴링 모드 활동을 구현해야 합니다. NFCC는 관찰 모드가 비활성화되는 즉시 기기 활성화를 즉시 진행할 수 있도록 폴 정보 캐시할 수 있습니다.

NFCC는 SE 트랜잭션을 진행할 수 있도록 어떤 이유로든(예: 배터리 부족 또는 사용자가 시작한 종료) 호스트가 종료되면 관찰 모드를 사용 중지해야 합니다.

NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD

페이로드 필드크기값/설명
관찰 모드1옥텟0x00관찰 모드 사용 중지 (기본값)
0x01관찰 모드 사용 설정

NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP

페이로드 필드크기값/설명
상태1옥텟NCI 사양의 표 140에서 상태 코드를 확인하세요.

폴링 루프 알림

NFCC는 각 폴링 루프 프레임 후에 NCI_ANDROID_POLLING_FRAME_NTF 알림을 호스트에 전송해야 합니다. RF_FIELD_INFO_NTFNCI_ANDROID_POLLING_FRAME_NTF 알림이 모두 생성되면 NFCC는 RF_FIELD_INFO_NTF 다음에 NCI_ANDROID_POLLING_FRAME_NTF를 전송해야 합니다.

NCI_ANDROID_POLLING_FRAME_NTF 알림은 관찰 모드가 활성 상태인지와 관계가 없습니다. 관찰 모드가 활성화된 경우 NFCC는 항상 거래를 진행하기 전에 NCI_ANDROID_POLLING_FRAME_NTF 알림을 전송해야 합니다.

NCI_ANDROID_POLLING_FRAME_NTF

페이로드 필드크기값/설명
Polling Data[0..n](m +3) * n 옥텟마지막 알림 이후 수신된 폴링 요청 목록입니다. 각 결과는 수신된 요청의 유형 (기술)과 기술에 따라 요청에서 식별 가능한 데이터를 제공합니다.
유형1옥텟프레임 유형을 참고하세요.
플래그1옥텟플래그 바이트를 참고하세요.
길이1옥텟타임스탬프 및 이득 필드를 포함한 폴링 데이터 보고서의 길이 (m)입니다.
타임스탬프4옥텟폴링 요청 수신 시점부터 경과된 시간을 밀리초로 측정한 타임스탬프(빅엔디언)입니다.
이득1옥텟폴링 요청의 강도입니다.
0xFF는 값을 사용할 수 없음을 나타냅니다.
데이터m - 5옥텟폴링 요청에 있는 식별 가능한 데이터를 반환합니다.
프레임 유형
폴링 프레임유형크기값/설명
원격 필드0x001옥텟0x00필드 꺼짐
0x01필드 사용 설정
0x02..0xFFRFU
NFC-A0x01n옥텟값에 ISO 14443-3 명령어 (예: REQ 또는 WUP)가 포함되어야 합니다.
NFC-B0x02n옥텟값에는 AIF 바이트와 ISO 14443-3 명령어(예: REQ 또는 WUP)가 포함되어야 합니다.
NFC-F0x03n옥텟값에 ISO 14443-3 명령어 (예: REQ 또는 WUP)가 포함되어야 합니다.
NFC-V0x04n옥텟값에 ISO 14443-3 명령어 (예: REQ 또는 WUP)가 포함되어야 합니다.
알 수 없음0x07n옥텟원시 프레임 데이터
플래그 바이트 정의
플래그
b0b1b2b3b4b5b6b7
0짧은 프레임RFURFURFURFURFURFURFU
1긴 프레임

관찰 모드 상태 쿼리 명령어

호스트는 수동 순서 모드의 현재 상태를 검색하기 위해 NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD 명령어를 사용할 수 있습니다. NFCC는 성공 또는 실패를 나타내는 상태 코드와 함께 NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP로 응답해야 합니다.

NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD

페이로드 필드크기값/설명
해당 사항 없음0옥텟

NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP

페이로드 필드크기값/설명
상태1옥텟NCI 사양의 표 140에서 상태 코드를 참고하세요.
관찰 모드1옥텟0x00관찰 모드 사용 중지됨
0x01관찰 모드 사용 설정됨