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 0xF
và Opcode_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_Type
và PBF
để 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_NTF
và NCI_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 |