10.1 NFCEE ID
NFCC 动态为 NFCEE 分配 ID(称为“NFCEE ID”)。 DH 通过执行 NFCEE Discovery 来了解 ID 值。 在配置状态为 0x01 的 NFCC 重置之前,NFCEE ID 一直有效。
值为 0x00 的 ID 在本规范中称为 DH-NFCEE ID,并且应代表 DH-NFCEE。
除了静态 NFCEE ID 之外,NFCC 还为 NFCEE 动态分配 ID。 NFCEE 分为两组:
HCI 网络外部的 NFCEE,其 ID 称为 NFCEE ID,范围为 0x10 到 0x7F。
HCI 网络内部的 NFCEE,称为 HCI-NFCEE,其 ID 称为 HCI-NFCEE ID,范围为 0x80 到 0xFE。
DH 通过执行 NFCEE 发现来了解动态 ID 值。
注意 此版本的 NCI 规范当前不支持 HCI 网络 NFCEE ID (HCI-NTWK-NFCEE)。
注意 [ETSI_102622] 使用与本规范中使用的术语不同的术语:
- [ETSI_102622]中的“终端”对应于本规范中的DH。
- [ETSI_102622]中的“CLF”对应于本规范中的NFCC。
- [ETSI_102622]中的“主机控制器”由NFCC实现。
- “UICC”是 NFCEE 的特定实现,它还通过 HCI 访问接口与 DH 建立链接。
10.2 NFCEE 发现
这些控制消息用于发现一个或多个 NFCEE 是否连接到 NFCC。
0 – 255 表示在此响应之后应发送的 NFCEE_DISCOVER_NTF 数量
硬件/注册标识
DH 可以使用硬件/注册标识来验证 DH 和 NFCEE 之间的任何通信仅在有效 NFCEE 的情况下发生。 NFC 上层协议或 DH 应用程序可以使用它来实现与 NFCEE 通信的安全性。 值字段编码超出了本文档的范围,可以由每个 NFCEE 制造商定义。
ATR 字节
ATR信息包含NFCEE支持的传输参数,例如T=0和T=1。 它还携带 DH 可能需要的所有必要信息,例如数据传输速率、掩码版本号、NFCEE 序列号、NFCEE 硬件参数等。ATR 的格式在 [ISO/IEC_7816-3] 中定义。
T3T 命令集接口补充信息
当支持的 NFCEE 协议参数之一包含值类型 3 标签命令集时,T3T 命令集接口补充信息可能会出现。 否则它不得出现。 如果存在 T3T 命令集接口补充信息,则它应包含表 119 中概述的 PMm 和条目数字段。如果条目数的值大于 0,则其后应跟随相应的条目数。 每个条目应包含表 119 中定义的系统代码和 Idm 字段。
HCI 网络中的主机 ID
指示由NFCC/主机控制器分配给该NFCEE/主机的主机ID,如[ETSI_102622]中所定义。
该类型表示NFCEE支持NDEF存储。 应提供以下字段:
为了发现一个或多个NFCEE是否连接到NFCC,DH将NFCEE_DISCOVER_CMD发送到NFCC。
收到 NFCEE_DISCOVER_CMD 后,NFCC 应使用 NFCEE_DISCOVER_RSP 响应 DH,状态为 STATUS_OK 以及可以连接到 NFCC 的 NFCEE 的最大数量(包括 NFCC 内的 NFCEE)。 值0x00表示没有NFCEE可以连接到NFCC并且NFCC内部不存在NFCEE,0x01表示一个NFCEE可以连接到NFCC或存在于NFCC内部,等等。DHNFCEE应从该数字中排除。
在 NFCEE_DISCOVER_RSP 之后,对于每个 NFCEE,NFCC 应发送一个
NFCEE_DISCOVER_NTF 发送至 DH,指示以下内容:
由NFCC 分配给NFCEE 的唯一NFCEE ID。
当前 NFCEE 状态。
NFCEE 支持的每个 NFCEE 协议
零个或多个 NFCEE 信息记录,以提供有关 NFCEE 的附加信息
注意 NFCEE 协议和 NFCEE 接口具有一对一的映射,并且这些值在通用定义中定义。
注:如果 NFCEE 支持通过 NFCEE_DISCOVER_NTF 报告的某些 NFCEE 协议,则受支持的协议之一可用于 DH 和 NFCEE 之间的通信。 该通信通道的创建称为“NFCEE 接口激活”。
分配的 NFCEE ID 一直有效,直到使用配置状态 0x01 重置 NFCC。
在NFCC执行NCI初始化后,所有NFCEE的初始状态应被禁用(NFCEE状态值设置为0x01)。
如果新的 NFCEE 连接到 NFCC,则该 NFCEE 的初始状态应为禁用(NFCEE 状态值设置为 0x01)或无响应(NFCEE 状态值设置为 0x02)。
如果 NFCEE 发现过程失败,则应发送 NFCEE_DISCOVER_RSP,状态为 STATUS_FAILED(参见表 129)。 在失败情况下,NFCEE 的数量应为 0。
无论任何报告的 NFCEE 状态如何,DH 都可以发送 NFCEE_DISCOVER_CMD。
收到有效的 NFCEE_DISCOVER_CMD 后,如果 NFCC 尚未发送先前 NFCEE_DISCOVER_CMD 的所有预期 NFCEE_DISCOVER_NTF,NFCC 应使用状态为 STATUS_SEMANTIC_ERROR 的 NFCEE_DISCOVER_RSP 进行响应。 否则,NFCC 应使用状态为 STATUS_OK 的 NFCEE_DISCOVER_RSP 进行响应
下图显示了 NFCEE 状态转换。 注意,NFCEE_MODE_SET_NTF(启用)符号指示与NFCEE_MODE_SET_CMD(启用)相关联的NFCEE_MODE_SET_NTF。
10.2.1 HCI-NFCEE 具体处理
如果 NFCC 实现了 CORE_INIT_RSP 中报告的 HCI 主机控制器,则以下规则适用于 HCI-NFCEE 的 NFCEE_DISCOVER_NTF:
NFCC 应将协议信息条目数设置为 0
NFCC 应在 HCI 网络中使用主机 ID 值的 NFCEE 信息 TLV。
NFCC 不应提供任何硬件/注册标识; 硬件/注册标识的长度应设置为 0。HCI 网络中不同主机的硬件/注册标识信息可以通过 HCP 数据包接收(如[ETSI_102622]中定义)。
此外,以下规则也适用:
DH 不得使用 NFCEE_DISCOVER_NTF 中的 NFCC 返回的 HCI-NFCEE ID 来创建到此 HCI-NFCEE 的逻辑连接。 DH 应使用静态 HCI 连接。
如果 NFCEE 状态字段的值为“0x00 – NFCEE 已启用”,则允许 HCI-NFCEE 执行 RF 通信(在 RF 状态机给定的条件下)。
如果 NFCEE 状态字段的值为“0x01 – NFCEE 禁用”或“0x02 – NFCEE 无响应”,则不允许此 HCI-NFCEE 进行 RF 通信。
10.2.2 NDEF-NFCEE 具体处理
对于支持 NDEF 存储的 NFCEE,以下规则适用于 NFCEE_DISCOVER_NTF:
NFCC 应将协议信息条目数设置为 1 并使用以下 NFCEE 协议值:
o 对于 T4T 仿真:NFCEE 协议 = APDU
o 对于 T3T 仿真:NFCEE 协议 = 类型 3 标签命令集
NFCC 应添加类型 0x04 的 NFCEE 信息 TLV,以通知 DH 有关可存储在 NFCEE 上的 NDEF 消息的最大大小,以及该 NFCEE 可以运行的电源状态。
如果模拟 T3T,NDEF-NFCEE 应使用以 0x02FE 开头的 NFCID2(如 [DIGITAL] 中定义)。 NFCC 应通过在 NFCEE_DISCOVER_NTF 中包含 T3T 命令集接口补充信息 TLV 来向 DH 通知有关 T3T 参数的信息。
10.3 NFCEE 启用和禁用
这些控制消息用于启用或禁用 NFCEE。
为了启用或禁用 NFCEE,DH 向 NFCC 发送 NFCEE_MODE_SET_CMD。 NFCEE ID 标识发生操作的 NFCEE,NFCEE 模式标识该 NFCEE 是启用还是禁用。
发送 NFCEE_MODE_SET_CMD 后,DH 不得发送另一个 NFCEE_MODE_SET_CMD,直到收到状态失败的 NFCEE_MODE_SET_RSP 或 NFCEE_MODE_SET_NTF。
收到有效的 NFCEE_MODE_SET_CMD 后,如果 NFCC 尚未发送先前 NFCEE_MODE_SET_CMD 的 NFCEE_MODE_SET_NTF,则 NFCC 应使用状态为 STATUS_SEMANTIC_ERROR 的 NFCEE_MODE_SET_RSP 响应 DH。 否则,NFCC 应使用状态为 STATUS_OK 的 NFCEE_MODE_SET_RSP 响应 DH。
在 NFCC 通过向 DH 发送 NFCEE_MODE_SET_NTF 指示操作是成功还是不成功之前,NFCC 应等待必要的处理(可能包括初始化序列)完成。 在失败情况下,如果相应的 NFCEE 无响应,状态应设置为 STATUS_FAILED(参见表 129)或 NFCEE_TRANSMISSION_ERROR。
如果 NFCEE 被禁用,则 DH 和 NFCC 不应考虑 NFCEE 已启用,直到 DH 在 NFCEE_MODE_SET_CMD(启用)之后收到状态设置为 STATUS_OK 的 NFCEE_MODE_SET_NTF。
如果启用了 NFCEE,DH 和 NFCC 不得考虑禁用 NFCEE,直到
DH 在 NFCEE_MODE_SET_CMD(禁用)后获取 NFCEE_MODE_SET_NTF,或者 DH 接收 NFCEE_STATUS_NTF(不可恢复错误),如第 10.5 节中所定义。
如果 DH 收到状态为 NFCEE_TRANSMISSION_ERROR 的 NFCEE_MODE_SET_NTF,则 NFCEE 应被视为无响应。
如果 NFCEE 无响应,DH 不得尝试启用或禁用该 NFCEE。 如果NFCC收到具有无响应元素的NFCEE ID的NFCEE_MODE_SET_CMD,则NFCC应使用状态为STATUS_SEMANTIC_ERROR的NFCEE_MODE_SET_RSP来响应DH。
NFCC 不得将通信路由至禁用或无响应的 NFCEE 或从其接收。 这还包括来自远程 NFC 端点或通过 NFCC 路由的另一个 NFCEE 的任何通信。
NFCC 仅应在由 NFCEE_MODE_SET_CMD 触发时启用 NFCEE。
如果 DH 使用 NFCEE_MODE_SET_CMD 禁用 NFCEE,则应隐式关闭到该 NFCEE 的逻辑连接(不发送 CORE_CONN_CLOSE_CMD),并且应立即停用相应的 NFCEE 接口。
10.3.1 HCI-NFCEE 具体处理
如果NFCEE_MODE_SET_CMD的NFCEE模式字段设置为“启用NFCEE”,则允许HCI-NFCEE执行RF通信。 因此,如果尚未激活,则应激活 HCI-NFCEE 的通信接口。 如果在接收 NFCEE_MODE_SET_CMD(启用)时 HCI-NFCEE 已启用,NFCC 应激活 HCI-NFCEE 的通信接口(通信接口可能已提前停用,例如出于功耗原因)。 如果 NFCEE_MODE_SET_CMD 的 NFCEE 模式字段设置为“禁用 NFCEE”,则不允许 HCI-NFCEE 执行任何进一步的 RF 通信。 因此,可能不再需要保持 HCI-NFCEE 的通信接口处于激活状态。
对于 HCI-NFCEE,第 10.5 节中引用的初始化序列是 HCI 会话初始化(在 [ETSI_102622] 中定义)。
10.4 NDEF-NFCEE
一旦 DH 发现可以嵌入到 NFCC 内的 NDEF-NFCEE,就可以使用定义用于管理 NFCEE 的所有 NCI 机制:
DH 可以使用 NFCEE_MODE_SET_CMD 启用/禁用 NDEF-NFCEE。 NDEF-NFCEE 中的 NDEF 消息应在禁用/启用序列上保持不变。
对于 NFCEE 支持的电源状态,DH 可以在侦听路由表中包含 NDEF-NFCEE ID。
NFCC 将使用 RF_NFCEE_ACTION_NTF 向 DH 通知 NDEF-NFCEE 发生的操作(例如,报告为 T4T 选择的 AID)
NFCC 将通过 RF_NFCEE_DISCOVERY_REQ_NTF 向 DH 通知 NDEFNFCEE 的 RF 发现要求(通常为 T4T 的 NFC-A/Listen 或 NFC-B/Listen 和 T3T 的 NFC-F/Listen)
DH 可以创建到 NDEF-NFCEE 的动态逻辑连接,以读取或写入 NDEF 消息的