NFC 控制器介面 (NCI) 的用途是與 NFC 控制器 (NFCC)。本頁說明 Android 的規格 專屬的 NCI 指令
NCI 定義
Android 專屬 NCI 指令使用專屬群組 ID (GID) 0xF
以及 0xC
的 Android 運算碼 ID (OID) 程式碼空間
常見封包格式
Android NCI 封包格式符合 NCI 控制封包格式
使用專屬 Group_ID 0xF
和 Opcode_ID 0x0C
。適用於所有 Android
專屬訊息,封包酬載的第一個位元組必須設為
Android 運算碼 (0x0C
)。Android 控制封包會使用 Message_Type
和
PBF
:用於識別指令、回應和通知,類似於
標準指令
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_NTF
後NCI_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 | 已啟用觀察模式 |