Các lệnh NCI thuộc quyền sở hữu riêng của Android

Giao diện bộ điều khiển NFC (NCI) được dùng để tương tác với bộ điều khiển NFC (NFCC). Trang này mô tả thông số kỹ thuật của các lệnh NCI độc quyền của Android.

Định nghĩa về NCI

Các lệnh NCI độc quyền của Android sử dụng mã nhận dạng nhóm (GID) 0xF và không gian mã nhận dạng mã opcode (OID) của Android là 0xC.

Định dạng gói phổ biến

Định dạng gói NCI của Android tuân theo quy cách NCI cho các gói điều khiển bằng cách sử dụng Group_ID 0xFOpcode_ID 0x0C độc quyền. Đối với mỗi thông báo độc quyền của Android, bạn phải đặt byte đầu tiên của tải trọng gói thành mã opcode của Android (0x0C). Các gói điều khiển Android sử dụng Message_TypePBF để xác định các lệnh, phản hồi và thông báo tương tự như các lệnh chuẩn.

Định dạng gói Android được thể hiện trong bảng sau:

0 1 2 3 4 5 6 7
Message_Type PBF Group_ID = 0xF (PROPRIETARY)
dành để sử dụng trong tương lai (RFU) Opcode_ID = 0x0C (ANDROID)
Payload_Length
Android_Opcode_ID
Android_Payload

Các giá trị nhận dạng mã opcode Android được chỉ định được liệt kê trong bảng sau. Thông số kỹ thuật của từng gói sẽ được trình bày trong các phần tiếp theo.

OID Android Loại thông báo Tên thông báo
0x00 NCI_MT_CMD NCI_ANDROID_GET_CAPS_CMD
NCI_MT_RSP NCI_ANDROID_GET_CAPS_RSP
0x01 NCI_MT_CMD NCI_ANDROID_POWER_SAVING_CMD
NCI_MT_RSP NCI_ANDROID_POWER_SAVING_RSP
0x02 NCI_MT_CMD NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD
NCI_MT_RSP NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP
0x03 NCI_MT_NTF NCI_ANDROID_POLLING_FRAME_NTF
0x04 NCI_MT_CMD NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD
NCI_MT_RSP NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP

Lệnh nhận chức năng

Máy chủ lưu trữ sử dụng NCI_ANDROID_GET_CAPS_CMD để truy vấn danh sách các tính năng độc quyền của Android mà NFCC hỗ trợ. Lệnh NCI_ANDROID_GET_CAPS_CMD không nhận bất kỳ tham số nào.

NFCC phải phản hồi bằng phản hồi NCI_ANDROID_GET_CAPS_RSP có trạng thái là STATUS_OK và danh sách các tính năng và chức năng được hỗ trợ.

Nếu NFCC không hỗ trợ NCI_ANDROID_GET_CAPS_CMD, thì máy chủ lưu trữ phải giả định rằng mỗi chức năng sẽ lấy giá trị mặc định được chỉ định. Nếu NFCC không trả về một chức năng đã chỉ định trong phản hồi, thì máy chủ phải giả định rằng chức năng đó có giá trị mặc định đã chỉ định.

NCI_ANDROID_GET_CAPS_CMD

Trường tải trọng Kích thước Giá trị/nội dung mô tả
Không áp dụng 0 octet

NCI_ANDROID_GET_CAPS_RSP

Trường tải trọng Kích thước Giá trị/nội dung mô tả
Trạng thái 1 octet Xem mã trạng thái trong bảng 140 của Quy cách NCI.
Android_Version 2 octet Xác định phiên bản yêu cầu của Android do NFCC triển khai.
0x0000 Android 15
Số lượng chức năng 1 octet Số lượng (n) chức năng được hỗ trợ
Capabilities[0..n] (m + 2) * n octet Các chức năng được hỗ trợ
Loại 1 octet Giá trị nhận dạng của chức năng
Len 1 octet Chiều dài (m) của giá trị
Giá trị m octet Giá trị của chức năng
Các tính năng độc quyền của Android
Tên chức năng ID Kích thước Giá trị/nội dung mô tả
Chế độ quan sát 0x00 1 octet Hỗ trợ chế độ quan sát.
0x00 (mặc định) – Không hỗ trợ tính năng này.
0x01 – Hỗ trợ tính năng vô hiệu hoá RF từ máy chủ (bắt buộc đối với Android 15 trở lên).
Tất cả các giá trị khác đều là RFU.
Thông báo khung thăm dò ý kiến 0x01 1 octet Hỗ trợ thông báo về khung thăm dò ý kiến. 0x01 nếu được hỗ trợ, 0x00 (mặc định) nếu không được hỗ trợ. Tất cả các giá trị khác đều là RFU.
Chế độ tiết kiệm pin 0x02 1 octet Hỗ trợ chế độ tiết kiệm pin. 0x01 nếu được hỗ trợ, 0x00 (mặc định) nếu không được hỗ trợ. Tất cả các giá trị khác đều là RFU.
Bộ lọc vòng lặp thăm dò Auotransact 0x03 1 octet Hỗ trợ bộ lọc vòng lặp thăm dò ý kiến trong phần mềm để bỏ qua chế độ quan sát cho các mẫu cụ thể khi chế độ quan sát được bật trên toàn hệ thống.
0x00 (mặc định) – Không hỗ trợ tính năng này
0x01 – Hỗ trợ bộ lọc vòng lặp thăm dò ý kiến
Tất cả các giá trị khác đều là RFU
0x04..0xFF 0 octet Dành để sử dụng trong tương lai

Lệnh tiết kiệm pin

Để chuyển NFCC sang chế độ tiết kiệm pin, máy chủ có thể sử dụng lệnh NCI_ANDROID_POWER_SAVING_CMD. NFCC phải phản hồi bằng NCI_ANDROID_POWER_SAVING_RSP có mã trạng thái cho biết thành công hoặc không thành công.

Khi ở chế độ tiết kiệm pin, máy chủ không được gửi bất kỳ lệnh nào đến NFCC và NFCC không được gửi bất kỳ thông báo hoặc phản hồi nào đến máy chủ. NFCC hoặc Phần tử bảo mật được nhúng (eSE) có thể tự động chấp nhận các yêu cầu thanh toán đến theo cấu hình định tuyến đã đặt trước khi bật chế độ tiết kiệm điện.

Để quay lại chế độ sử dụng pin tối đa, máy chủ lưu trữ có thể đặt lại hoặc khởi chạy lại NFCC.

NCI_ANDROID_POWER_SAVING_CMD

Trường tải trọng Kích thước Giá trị/nội dung mô tả
Chế độ tiết kiệm điện 1 octet 0x00 Tắt chế độ tiết kiệm điện
0x01 Bật chế độ tiết kiệm pin

NCI_ANDROID_POWER_SAVING_RSP

Trường tải trọng Kích thước Giá trị/nội dung mô tả
Trạng thái 1 octet Xem mã trạng thái trong bảng 140 của Quy cách NCI,

Đặt lệnh chế độ quan sát

Để kích hoạt hoặc huỷ kích hoạt chế độ quan sát, máy chủ có thể sử dụng lệnh NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD. NFCC phải phản hồi bằng NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP kèm theo mã trạng thái cho biết có thành công hay không.

Khi chế độ quan sát bị tắt, NFCC phải triển khai hoạt động của chế độ nghe chuẩn theo Activity Technical Specification (Thông số kỹ thuật về hoạt động).

Khi chế độ quan sát đang hoạt động, NFCC không được phản hồi bất kỳ yêu cầu thăm dò ý kiến nào trong vòng lặp thăm dò ý kiến ở chế độ nghe, cho đến khi máy chủ uỷ quyền rõ ràng. NFCC phải gửi thông báo RF_FIELD_INFO_NTF (như xác định trong mục 5.3 của thông số kỹ thuật NCI) khi phát hiện kích hoạt trường. Nếu tính năng phát hiện chế độ thăm dò đang hoạt động, thì NFCC phải triển khai hoạt động ở chế độ thăm dò theo Thông số kỹ thuật của hoạt động. NFCC có thể lưu thông tin thăm dò ý kiến vào bộ nhớ đệm để tiến hành kích hoạt thiết bị ngay khi chế độ quan sát bị vô hiệu hoá.

NFCC phải tắt chế độ quan sát nếu máy chủ tắt vì bất kỳ lý do nào (ví dụ: hết pin hoặc người dùng khởi động tắt) để các giao dịch SE có thể tiếp tục.

NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD

Trường tải trọng Kích thước Giá trị/nội dung mô tả
chế độ quan sát 1 octet 0x00 Tắt chế độ quan sát (mặc định)
0x01 Bật chế độ quan sát

NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP

Trường tải trọng Kích thước Giá trị/nội dung mô tả
Trạng thái 1 octet Xem mã trạng thái trong bảng 140 của Quy cách NCI.

Thông báo vòng lặp thăm dò

NFCC phải gửi thông báo NCI_ANDROID_POLLING_FRAME_NTF đến máy chủ sau mỗi khung vòng lặp thăm dò ý kiến. Khi cả thông báo RF_FIELD_INFO_NTFNCI_ANDROID_POLLING_FRAME_NTF được tạo, NFCC phải gửi NCI_ANDROID_POLLING_FRAME_NTF sau RF_FIELD_INFO_NTF.

Thông báo NCI_ANDROID_POLLING_FRAME_NTF không phụ thuộc vào việc chế độ quan sát có đang hoạt động hay không. Khi chế độ quan sát đang hoạt động, NFCC phải luôn gửi thông báo NCI_ANDROID_POLLING_FRAME_NTF trước khi tiếp tục giao dịch.

NCI_ANDROID_POLLING_FRAME_NTF

Trường tải trọng Kích thước Giá trị/nội dung mô tả
Dữ liệu thăm dò[0..n] (m + 3) * n octet Danh sách các yêu cầu thăm dò ý kiến đã nhận được kể từ thông báo gần đây nhất. Mỗi kết quả cho biết loại (công nghệ) của các yêu cầu đã nhận và dữ liệu nhận dạng được từ yêu cầu đó tuỳ thuộc vào công nghệ.
Loại 1 octet Xem các loại khung.
Cờ 1 octet Xem byte cờ.
Thời lượng 1 octet Chiều dài (m) của báo cáo dữ liệu thăm dò ý kiến, bao gồm cả trường dấu thời gian và trường độ lợi.
Dấu thời gian 4 octet Dấu thời gian được đo bằng mili giây khi nhận được các yêu cầu thăm dò ý kiến, big endian.
Tăng 1 octet Mức độ mạnh của yêu cầu thăm dò ý kiến.
0xFF cho biết giá trị không có sẵn.
Dữ liệu m – 5 octet Trả về dữ liệu nhận dạng có trong yêu cầu thăm dò
Loại khung
Khung thăm dò ý kiến Loại Kích thước Giá trị/Mô tả
Trường từ xa 0x00 1 octet 0x00 Tắt trường
0x01 Bật trường
0x02..0xFF RFU
NFC-A 0x01 n octet Giá trị phải bao gồm một lệnh ISO 14443-3 (ví dụ: REQ hoặc WUP)
NFC-B 0x02 n octet Giá trị phải bao gồm một byte AIF và một lệnh ISO 14443-3 (ví dụ: REQ hoặc WUP)
NFC-F 0x03 n octet Giá trị phải bao gồm một lệnh ISO 14443-3 (ví dụ: REQ hoặc WUP)
Công nghệ NFC-V 0x04 n octet Giá trị phải bao gồm lệnh ISO 14443-3 (ví dụ: REQ hoặc WUP)
Không xác định 0x07 n octet Dữ liệu khung thô
Định nghĩa byte cờ
Cờ
b0 b1 b2 b3 b4 b5 b6 b7
0 Khung hình ngắn RFU RFU RFU RFU RFU RFU RFU
1 Khung dài

Truy vấn lệnh trạng thái chế độ quan sát

Để truy xuất trạng thái hiện tại của chế độ thứ tự thụ động, máy chủ có thể sử dụng lệnh NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD. NFCC phải phản hồi bằng NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP kèm theo mã trạng thái cho biết đã không thành công.

NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD

Trường tải trọng Kích thước Giá trị/nội dung mô tả
Không áp dụng 0 octet

NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP

Trường tải trọng Kích thước Giá trị/nội dung mô tả
Trạng thái 1 octet Xem mã trạng thái trong bảng 140 của Quy cách của NCI
chế độ quan sát 1 octet 0x00 Đã tắt chế độ quan sát
0x01 Đã bật chế độ quan sát