Android 專屬 NCI 指令

NFC 控制器介面 (NCI) 的用途是與 NFC 控制器 (NFCC)。本頁說明 Android 的規格 專屬的 NCI 指令

NCI 定義

Android 專屬 NCI 指令使用專屬群組 ID (GID) 0xF 以及 0xC 的 Android 運算碼 ID (OID) 程式碼空間

常見封包格式

Android NCI 封包格式符合 NCI 控制封包格式 使用專屬 Group_ID 0xFOpcode_ID 0x0C。適用於所有 Android 專屬訊息,封包酬載的第一個位元組必須設為 Android 運算碼 (0x0C)。Android 控制封包會使用 Message_TypePBF:用於識別指令、回應和通知,類似於 標準指令

Android 封包格式如下表所示:

0 分 1 分 2 分 3 分 4 分 5 分 6 7 分
Message_Type PBF Group_ID = 0xF (PROPRIETARY)
保留供日後使用 (RFU) Opcode_ID = 0x0C (ANDROID)
Payload_Length
Android_Opcode_ID
Android_Payload

下表列出指派的 Android 運算碼 ID。 每個封包的規格都會列於下一節。

Android OID 訊息類型 訊息名稱
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

取得功能指令

主機使用 NCI_ANDROID_GET_CAPS_CMD 查詢清單 NFCC 支援的 Android 專屬功能 NCI_ANDROID_GET_CAPS_CMD 指令沒有任何參數。

NFCC 必須透過 NCI_ANDROID_GET_CAPS_RSP 回應回應並註明狀態 STATUS_OK 及其支援的功能與功能清單。

如果 NFCC 不支援 NCI_ANDROID_GET_CAPS_CMD,主機必須採用 每項功能都會採用預設的指定值。如果指定了 NFCC 未在回應中傳回功能,則主機必須假設 功能具有預設的指定值。

NCI_ANDROID_GET_CAPS_CMD

酬載欄位 大小 值/說明
0 個八位元組

NCI_ANDROID_GET_CAPS_RSP

酬載欄位 大小 值/說明
狀態 1 個八位元 請參閱 NCI 規格表 140 中的狀態碼。
Android_Version 2 個八位元組 識別 NFCC 實作的 Android 版本需求。
0x0000 Android 15
功能數量 1 個八位元 支援的功能數量 (n)
功能 [0..n] (m + 2) * n 八位元 支援的功能
類型 1 個八位元 功能的 ID
Len 1 個八位元 值的長度 (公尺)
公尺 八位元 功能的價值
Android 專屬功能
功能名稱 ID 大小 值/說明
觀察模式 0x00 1 個八位元 支援觀測模式。
0x00 (預設) - 不支援這項功能。
0x01 - 從主機上停用 RF 支援功能 ( Android 15 以上版本)。
所有其他值均為 RFU。
輪詢影格通知 0x01 1 個八位元 支援輪詢影格通知。0x01 (如果支援的話);0x00 (預設) 表示不支援。所有其他值均為 RFU。
省電模式 0x02 1 個八位元 支援省電模式。0x01 (如果支援的話);0x00 (預設) 表示不支援。所有其他值均為 RFU。
Auotransact 輪詢迴圈濾鏡 0x03 1 個八位元 支援韌體中的輪詢迴圈篩選器,以便在全域啟用觀測模式時略過特定模式的觀測模式。
0x00 (預設) - 不支援這項功能
0x01 - 支援輪詢迴圈篩選器
所有其他值均為 RFU
0x04..0xFF 0 個八位元組 保留供日後使用

省電指令

如要將 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 通知 (定義 第 5.3 節 NCI 規格) 。如果已啟用意見調查模式探索功能,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_NTF 和 系統會產生 NCI_ANDROID_POLLING_FRAME_NTF 通知,因此 NFCC 必須傳送 RF_FIELD_INFO_NTFNCI_ANDROID_POLLING_FRAME_NTF

NCI_ANDROID_POLLING_FRAME_NTF 通知與 觀察模式已啟用或未啟用。啟用觀察模式時, NFCC 必須在NCI_ANDROID_POLLING_FRAME_NTF傳送 繼續處理交易。

NCI_ANDROID_POLLING_FRAME_NTF

酬載欄位 大小 值/說明
意見調查資料 [0..n] (m +3) * 十八進位 自上次以來收到的輪詢要求清單 通知。每項結果都會指出接收到的 要求和可識別資料
類型 1 個八位元 請參閱「頁框類型」。
旗幟 1 個八位元 請參閱標記位元組
長度 1 個八位元 輪詢資料報告長度 (m),包括時間戳記和取得欄位。
時間戳記 4 個八位元組 時間戳記是以大型終端輪詢要求接收時間的毫秒為單位。
增益 1 個八位元 輪詢要求的強度。
0xFF 表示該值不適用。
資料 公尺 - 5 個八位元 傳回輪詢要求中的可識別資料
影格類型
輪詢影格 類型 大小 值/說明
遠端欄位 0x00 1 個八位元 0x00 欄位已關閉
0x01 欄位已開啟
0x02..0xFF 射頻接觸
NFC-A 0x01 n 八位元 值必須包含 ISO 14443-3 指令 (例如 REQ 或 WUP)
近距離無線通訊 (NFC-B) 0x02 n 八位元 值必須包含 AIF 位元組和 ISO 14443-3 指令 (例如 REQ 或 WUP)
近距離無線通訊 (NFC-F) 0x03 n 八位元 值必須包含 ISO 14443-3 指令 (例如 REQ 或 WUP)
近距離無線通訊 (NFC-V) 0x04 n 八位元 值必須包含 ISO 14443-3 指令 (例如 REQ 或 WUP)
未知 0x07 n 八位元 原始影格資料
標記位元組定義
旗幟
b0 下 B1 罩杯 b2 b3 b4 B5 B6 b7
0 分 較短的影格 射頻接觸 射頻接觸 射頻接觸 射頻接觸 射頻接觸 射頻接觸 射頻接觸
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 已啟用觀察模式