NCI协议学习

一、NCI介绍

规定了NFC控制器(NFCC)与DH (Device Host)之间的通信协议NCI (NFC Controller Interface)。

二、NCI架构

2.2.3接口

一个NCI模块可以包含一个接口。接口定义了DH如何通过NCI与远程NFC端点或NFCEE进行通信。每个接口都被定义为支持特定的协议,并且只能用于这些协议(大多数接口只支持一种协议)。NCI定义了两种类型的接口:RF接口和NFCEE接口。
用于与远程NFC端点通信的协议称为RF协议。用于与NFCEE通信的协议称为NFCEE协议。
一个NFCEE接口与一个NFCEE协议有一对一的关系,而一个RF协议可能有多个RF接口。后者允许NCI在NFCC和DH之间支持不同的协议实现分割。NFCC上的NCI实现应该包括那些与NFCC上实现的功能相匹配的RF接口。
接口在使用前必须激活,不再使用时必须去激活。
接口可以定义自己的配置参数和控制消息,但最重要的是,它必须定义数据消息的有效载荷如何映射到各自RF或NFCEE协议的有效载荷,以及在RF通信的情况下,是否使用静态RF连接和/或动态逻辑连接在DH和NFCC之间交换这些数据消息。

2.2.4 RF Communication

通过配置和运行RF发现进程,可以启动RF通信。RF Discovery是一个NCI模块,用于发现和枚举远程NFC端点。
对于每个远端NFC端点,RF发现进程向DH提供在RF发现过程中收集到的远端NFC端点的信息。该信息的一部分是用于与远程NFC端点通信的RF协议。
在配置射频发现时,DH必须为每个射频协议配置对应的射频接口映射。如果在一个发现周期中只检测到一个远程NFC端点,则该端点的RF接口将自动激活。如果在轮询模式下检测到多个远端NFC端点,则DH可以选择想要通信的端点。此选择还会触发映射的接口的激活。
激活RF接口后,DH可以使用激活的RF接口与远端NFC端点通信。激活的RF接口可以由DH或NFCC(例如,代表远程NFC端点)去激活。然而,每个RF接口可以定义哪些方法是允许的。根据在DH上执行协议栈的哪个部分,有不同的去激活选项。例如,如果在DH上执行了拆除通信的协议命令,则DH将取消激活RF接口。如果在NFCC上执行了该命令,NFCC将取消激活该接口。
本规范以状态机的形式描述了射频通信可能的控制消息序列。
###2.2.5 NFCEE Communication
DH可以通过NFCEE Discovery模块了解到与NFCC连接的NFCEE。在NFCEE发现过程中,NFCC为每个NFCEE分配一个标识符。当DH想要与NFCEE通信时,需要使用相应的标识符和指定要使用的NFCEE协议,向NFCEE打开一个逻辑连接。
向NFCEE打开逻辑连接会自动激活指定协议关联的NFCEE接口。由于NFCEE协议和接口之间总是一对一的关系,因此不需要映射步骤(与RF接口激活不同)。
接口激活后,DH可以使用激活的接口与NFCEE通信。
关闭与某个NFCEE接口的连接将使该NFCEE接口失效。
NCI还包括允许DH启用或禁用NFCEE和NFCC之间的通信的功能。

三、NCI核心框架

3.1概述

NCI核心包括以下必需的功能:
• 通过NCI传输命令、响应、通知和数据消息的数据包格式。
• 设备主机和NFC控制器之间用于不同操作的命令、响应和通知的定义,如第4节所述。(本规范的后续部分定义了不属于NCI核心的其他命令、响应和通知)
• 命令/响应消息交换的流控制机制。
• 数据消息的逻辑连接概念。
• 为从DH发送到NFCC的数据消息提供基于信用的流量控制机制。
• 控制和数据消息的分割和重组。
• NFC执行环境(NFCEE)的寻址方案。NCI Core支持DH与NFCC连接的NFCEE之间的通信。
说明:NCI仅覆盖DH和NFCC之间的链路,因此只有在NFCC和NFCEE之间使用的协议也支持的情况下,DH才能与NFCEE通信。
• 远程NFC端点的寻址方案。NCI核心使用逻辑连接(Logical Connections)来支持DH与NFCC发现的目标(nfcee或Remote NFC endpoint)之间的通信。
• NFCC的复位、初始化和配置。
• 异常处理,包括用于指示错误的控制消息,以及如何使用它们的规则。

3.2 NCI控制消息

控制消息包括命令、响应和通知。它们控制着DH和NFCC之间的相互作用。参见图4。
在这里插入图片描述
对于收到的每个命令,NFCC应回复一个响应,以确认收到该命令。响应也可能表明命令在NFCC中引起的变化。通知只可由NFCC发送至主机。可以发送通知以传递与命令相关的附加信息。通知也可以独立于任何命令或响应发送,除非另有规定。

3.3 NCI数据消息

数据消息用于DH与NFCC目标(NFCEE或远程NFC终端)之间通过逻辑连接交换数据。参见图5。
在这里插入图片描述
数据消息作为数据包的有效载荷通过NCI传输发送。数据包有效载荷包含完整的数据报文或数据报文的一段。一旦创建了逻辑连接,数据消息可以在任何时候由DH(受流量控制)或NFCC发送。

3.4报文格式

控制报文格式
在这里插入图片描述
数据包格式

在这里插入图片描述

3.5分割和重组

3.6逻辑连接

四、NCI核心控制消息

4.1 NFCC复位

这些控制消息用于重置NFCC。
在这里插入图片描述
在这里插入图片描述

4.2 NFCC初始化

在这里插入图片描述
在这里插入图片描述

4.3 NFCC配置(NFCC Configuration )

4.3.1配置设置(Setting the Configuration)
这些控制消息用于设置NFCC的配置参数。
在这里插入图片描述
4.3.2检索配置(Retrieve the Configuration)
DH使用这些控制消息来检索NFCC的当前配置参数。
在这里插入图片描述

4.4管理逻辑连接

4.4.1目的地类型

目标类型在逻辑连接创建期间使用。它们标识了系统中实体的类型:NFCC、NFCEE或远程NFC端点。目标类型还可以标识实体中的特定功能,例如NFCC中的环回功能。
在这里插入图片描述

4.4.2创建连接

当DH创建到NFCC的动态逻辑连接时,使用这些控制消息。
在这里插入图片描述

4.4.3关闭连接

这些控制消息用于关闭动态逻辑连接。
在这里插入图片描述

4.4.4连接信用管理

这些控制消息用于管理使用基于信用的流控制的逻辑连接上的信用。
在这里插入图片描述

4.5一般性错误

在这里插入图片描述

4.6接口错误

这些控制消息用于通知DH有关RF或NFCEE接口通信的特定错误情况。
在这里插入图片描述

五、射频通信

与远程NFC端点的通信是通过使用RF接口来执行的。RF接口是NFCC上的逻辑实体,允许DH使用NFCC上实现的协议栈中的特定层。DH只能通过发现过程中激活的RF接口与远程NFC端点通信。
5.1节概述了可用的射频接口。
5.2节定义了射频通信的NCI状态机。
5.3节定义了一个获取外部射频场信息的机制。

5.1 射频接口架构

DH和远程NFC端点之间交换的所有数据都流经一个指定为“活动RF接口”的RF接口。
在这里插入图片描述
说明NDEF Access、LLCP High和LLCP Low射频接口在NCI规范1.0版本中不存在。它们预计将被添加到未来的版本中。
应注意以下事项:
ISO-DEP射频接口适用于读写模式和卡仿真模式。
特定于帧射频接口:
轮询侧射频接口既适用于读写模式,也适用于点对点模式的NFC-DEP发起端。
监听侧射频接口既适用于卡模拟模式,也适用于点对点模式的NFC-DEP接收端。
在以下情况下,RF接口会被NFCC自动激活:
1、在轮询模式下,发现了支持单一协议的单个远程NFC端点。
2、在监听模式下,NFCC已被远程NFC端点发现/选择。
在这两种情况下,激活的RF接口由RF协议和RF接口之间的当前映射关系决定,可以使用章节6.2中定义的RF_DISCOVER_MAP_CMD命令进行配置。
如果在轮询模式下,发现了多个远程NFC端点或支持多个RF协议的远程NFC端点,则DH必须使用RF_DISCOVER_SELECT_CMD命令选择远程NFC端点和RF协议。NFCC收到该命令后,激活RF_DISCOVER_SELECT_CMD命令中指定的RF接口。

射频接口的激活取决于Mode:
对于轮询模式,必须选择一个远程NFC端点(如果只检测到一个远程NFC端点,则自动选择),并且根据要激活的RF接口,NFCC可能需要在激活RF接口之前首先建立一个或多个低级协议。在NCI的未来扩展中,NFCC甚至可能不得不在激活RF接口之前开始交换一些数据(例如,检查远程NFC端点是否存储NDEFcompliant数据)。
对于监听模式,NFCC可能只需要在激活RF接口之前由远程NFC端点检测/选择。或者,它可能需要先等待远程NFC端点建立一个或多个低级协议。
第8节描述了依赖关系,并解释了RF接口的使用方法。

5.2状态机

使用图10所示的状态机描述了射频通信的NCI过程。对于任何DH或NFCC来说,显式实现状态机是完全可选的。然而,所有DH和NFCC的实现都应该完全遵循NCI的行为,就好像它们已经实现了状态机一样。

每次从一种状态到另一种状态的转换都伴随着适当的NCI命令、响应或通知,因此DH和NFCC都可以始终明确地知道当前的RF通信状态。除非状态机规则允许,否则不能发送以下控制消息:
在这里插入图片描述
此外,以下控制消息,如相应章节所述,只能在某些状态下发送:
在这里插入图片描述
在这里插入图片描述
如果NFCC或DH在不允许控制消息的状态下收到控制消息,它应该将其视为语义错误,如3.2.2中定义的那样。本规范未明确禁止的其他命令、响应和通知可以在任何状态下交换。
在这里插入图片描述
在DH和NFCC初始化成功后(参见4.2节),RF通信状态机将处于RFST_IDLE状态。在第一次转换出RFST_IDLE状态之前,DH应该设置第6节中描述的射频通信配置。
对于轮询模式,射频通信状态机以以下方式与[ACTIVITY]中定义的活动相关:
1、技术检测在RFST_DISCOVERY和RFST_W4_ALL_DISCOVERIES中处理。
2、冲突解析在RFST_DISCOVERY和RFST_W4_HOST_SELECT中处理。
3、设备激活在RFST_DISCOVERY, RFST_W4_ALL_DISCOVERIES和RFST_W4_HOST_SELECT中处理,取决于发现的远程NFC端点的数量和RF接口映射。根据RF接口的不同,部分设备激活活动由RFST_POLL_ACTIVE中的DH处理。
4、RF数据交换在RFST_POLL_ACTIVE状态下处理。
5、根据RF接口的不同,设备去激活活动完全由NFCC处理,或者由DH和NFCC分开处理。DH负责处理它在RFST_POLL_ACTIVE中的部分。当从RFST_POLL_ACTIVE状态移动到RFST_DISCOVERY、RFST_IDLE或RFST_W4_HOST_SELECT状态时,NFCC处理设备去激活。

在[ACTIVITY]中定义的监听模式状态机在RFST_DISCOVERY、RFST_LISTEN_ACTIVE和RFST_LISTEN_SLEEP状态下处理。在[ACTIVITY]中定义的IDLE状态驻留在RFST_DISCOVERY NCI状态中。

5.2.1 RFST_IDLE状态

第6.1节、6.2节和6.3节中定义的与发现相关的配置只能在此状态下进行设置。注意:虽然CORE_SET_CONFIG_CMD可以在任何状态下发送,但与RFDiscover相关的参数只能包含在RFST_IDLE状态。
在这种状态下,NFCC应该关闭RF场。在这种状态下,贪婪集合[ACTIVITY]被清除。
当DH发出有效的RF_DISCOVER_CMD命令,NFCC返回状态为STATUS_OK的RF_DISCOVER_RSP时,状态改变为RFST_DISCOVERY。
###5.2.2 RFST_DISCOVERY 状态
在这种状态下,NFCC保持轮询模式和/或监听模式(根据Discover配置),直到至少一个远程NFC端点被检测到或RF发现过程被DH停止。
“轮询模式”和“监听模式”的参数和占空比由DH配置。在这种状态下,NFCC被期望开始填充贪婪收集[ACTIVITY]。
如果在Listen模式下被远端NFC端点发现,一旦远端NFC端点建立了所配置的RF接口所需的任何底层协议,NFCC将向DH发送RF_INTF_ACTIVATED_NTF (Listen mode),并将状态更改为RFST_LISTEN_ACTIVE。

在轮询过程中,如果NFCC发现了多个远程NFC端点,或者发现了一个支持多个RF协议的远程NFC端点,它将开始向DH发送RF_DISCOVER_NTF消息。此时,状态更改为RFST_W4_ALL_DISCOVERIES。
当轮询时,如果NFCC发现只有一个远程NFC端点支持一个协议,NFCC应该尝试自动激活它。NFCC应首先与配置的RF接口所需的远程NFC端点建立任何底层协议。完成后,NFCC应激活RF接口,并将RF_INTF_ACTIVATED_NTF(轮询模式)发送给DH。此时,状态更改为RFST_POLL_ACTIVE。如果协议激活不成功,NFCC将CORE_GENERIC_ERROR_NTF发送给DH,状态为DISCOVERY_TARGET_ACTIVATION_FAILED,停留在RFST_DISCOVERY状态。

在这种状态下,NFCC可以在RF通信期间检测到一个命令,该命令强制它返回到IDLE状态,如[ACTIVITY] Listen Mode状态机中定义的那样。如果RF协议去激活完成,NFCC将发送CORE_GENERIC_ERROR_NTF (DISCOVERY_TEAR_DOWN),状态保持RFST_DISCOVERY。
注意:在监听模式下激活协议时,如果收到一个去激活命令(例如,NFCDEP在等待潜在的PSL_REQ时收到RLS_REQ),则会发生RFST_DISCOVERY状态下的RF协议去激活。
如果DH发送了RF_DEACTIVATE_CMD, NFCC应该忽略去激活类型参数,停止RF发现进程,并发送RF_DEACTIVATE_RSP。然后状态将变为RFST_IDLE。

5.2.3 RFST_W4_ALL_DISCOVERIES状态

在这种状态下,NFCC在轮询时发现了多个远程NFC端点或一个支持多个RF协议的远程NFC端点。
在这种状态下,NFCC应该保持RF场ON。发现通知类型设置为2的通知不得更改状态。
当NFCC向DH发送最后一个不等于2的RF_DISCOVER_NTF (Notification Type不等于2)时,状态改变为RFST_W4_HOST_SELECT。
如果DH发送了RF_DEACTIVATE_CMD, NFCC应该忽略去激活类型参数,停止RF发现进程,并发送RF_DEACTIVATE_RSP。然后状态将变为RFST_IDLE。

5.2.4 RFST_W4_HOST_SELECT状态

在这种状态下,NFCC应该保持RF场ON。在这种状态下,NFCC的贪婪集合是完整的,并等待DH从贪婪集合[ACTIVITY]中选择一个远程NFC端点来激活。贪心集合[ACTIVITY]可能包含处于睡眠状态的远程NFC端点。
当DH发送带有有效射频发现ID、射频协议和射频接口的RF_DISCOVER_SELECT_CMD时,NFCC应尝试激活关联的远程NFC端点(取决于远程NFC端点的状态)。NFCC应首先与配置的RF接口所需的远程NFC端点建立任何底层协议。完成后,NFCC应激活RF接口,并将RF_INTF_ACTIVATED_NTF(轮询模式)发送给DH。此时,状态更改为RFST_POLL_ACTIVE。
如果激活失败,NFCC将CORE_GENERIC_ERROR_NTF发送给DH,状态为DISCOVERY_TARGET_ACTIVATION_FAILED,状态保持RFST_W4_HOST_SELECT。
如果DH发送了RF_DEACTIVATE_CMD, NFCC应该忽略去激活类型参数,停止RF发现进程,并发送RF_DEACTIVATE_RSP。然后状态将变为RFST_IDLE。

5.2.5 RFST_POLL_ACTIVE状态

在这种状态下,NFCC设备以轮询模式激活。在此状态下,NFCC应保持RF场ON。在这种状态下,RF接口被激活,允许NFCC与远程NFC端点通信。NFCC应接受和发送数据消息到或从由活动射频接口指定的DH。
在这种状态下,DH可以发送RF_DEACTIVATE_CMD(休眠模式或休眠af模式)来取消与远程NFC端点的通信。根据激活的接口和协议,NFCC将发出RF命令,使远程NFC端点进入睡眠状态。NFCC内部将该特定RF发现ID设备的状态标记为“睡眠”,并在成功完成后发送RF_DEACTIVATE_RSP和RF_DEACTIVATE_NTF(睡眠模式或睡眠af模式,DH请求)。状态将变为RFST_W4_HOST_SELECT。
如果DH发送了RF_DEACTIVATE_CMD (Idle Mode), NFCC在去激活成功后会发送RF_DEACTIVATE_RSP,然后是RF_DEACTIVATE_NTF (Idle Mode, DH Request)。然后状态将变为RFST_IDLE。
如果DH发送RF_DEACTIVATE_CMD (Discovery), NFCC将在去激活成功后发送RF_DEACTIVATE_RSP,然后发送RF_DEACTIVATE_NTF (Discovery, DH Request)。然后状态将更改为RFST_DISCOVERY, NFCC将重新启动或继续轮询发现活动。
在上述两种情况下,根据激活的接口和协议,NFCC可能会在发送RF_DEACTIVATE_NTF之前发出RF命令去激活远程NFC端点。
当使用ISO-DEP或NFC-DEP射频接口时,NFCC在射频通信过程中检测到错误,它应该通知发送CORE_INTERFACE_ERROR_NTF的DH,使用RF_TRANSMISSION_ERROR, RF_PROTOCOL_ERROR和RF_TIMEOUT_ERROR中适当的状态(见表94)。状态将保持为RFST_POLL_ACTIVE。

5.2.6 RFST_LISTEN_ACTIVE状态

在这种状态下,NFCC以监听模式激活。在这种状态下,RF接口处于激活状态,允许NFCC与激活RF接口指定的远程NFC端点进行通信。NFCC应根据路由表向DH或NFCEE接收和发送数据消息。
通过配置NFCC发送RF_NFCEE_ACTION_NTF通知,如果NFCC根据路由算法做出了路由到其他NFCEE的决定,则DH将收到通知(参见7.4)。当使用基于AID的路由(见6.3.1)时,如果远程NFC端点选择一个AID,其中相应的应用程序托管在与先前选择的不同的NFCEE上,则本地路由目的地可以更改。如果NFC论坛设备对远程NFC端点显示为不是一个而是多个端点,并且远程NFC端点在这些端点之间切换通信,则路由也可以更改。
在这种状态下,NFCC可以通过DH发送RF_DEACTIVATE_CMD(休眠模式或休眠af模式)(例如,如果DH上的ISO-DEP或NFC- dep实现使用帧RF接口)或远程NFC端点进入休眠模式。如果去激活休眠成功,NFCC将发送RF_DEACTIVATE_NTF (sleep Mode或Sleep_AF Mode, DH Request,或Endpoint Request)给DH。然后状态将变为RFST_LISTEN_SLEEP。
如果DH发送RF_DEACTIVATE_CMD (Idle Mode), NFCC在去激活成功后会发送RF_DEACTIVATE_RSP,然后是RF_DEACTIVATE_NTF (Idle, DH Request)。然后状态将变为RFST_IDLE。
当检测到远端射频场关闭时,NFCC将在[ACTIVITY]中定义的监听模式状态机中转移到NO remote field状态,并向DH发送RF_DEACTIVATE_NTF (Discovery, RF Link Loss)。然后,射频通信状态将变为RFST_DISCOVERY。
当使用RF帧接口时,DH在RF通信过程中检测到命令或错误,强制返回到IDLE状态(如[ACTIVITY] Listen Mode状态机中定义的),DH将发送RF_DEACTIVATE_CMD(发现)给NFCC, NFCC将回答RF_DEACTIVATE_RSP,然后是RF_DEACTIVATE_NTF(发现,DH请求)。然后状态将更改为RFST_DISCOVERY。
当使用NFC-DEP RF接口时,NFCC在RF通信过程中检测到RLS_REQ命令,该命令强制返回到IDLE状态(如[ACTIVITY] Listen Mode状态机中定义的),DH将向DH发送RF_DEACTIVATE_NTF (Discovery, Endpoint_Request)。然后状态将更改为RFST_DISCOVERY。
当使用ISO-DEP或NFC-DEP射频接口时,NFCC在射频通信过程中检测到错误,不需要返回到[ACTIVITY] Listen Mode状态机中定义的IDLE状态,NFCC将使用RF_TRANSMISSION_ERROR, RF_PROTOCOL_ERROR和RF_TIMEOUT_ERROR中的适当状态发送CORE_INTERFACE_ERROR_NTF(见表88)。状态将保持RFST_LISTEN_ACTIVE。

5.2.7 RFST_LISTEN_SLEEP状态

在这种状态下,NFCC不应该响应任何RF命令,直到它得到一个有效的RF唤醒命令(详细信息参见[DIGITAL])。
如果NFCC收到有效的RF唤醒命令,并且激活过程成功,则NFCC将向DH发送RF_INTF_ACTIVATED_NTF (Listen模式)。此时,状态将变回RFST_LISTEN_ACTIVE。
当检测到远端射频场关闭时,NFCC将发送RF_DEACTIVATE_NTF (Discovery, RF Link Loss)给DH。然后,射频通信状态将变为RFST_DISCOVERY。
对于NFC-B技术,当NFCC在RF通信过程中检测到命令强制返回到IDLE状态(如[ACTIVITY] Listen Mode状态机中定义的)时,NFCC将向DH发送RF_DEACTIVATE_NTF (Discovery, NFC-B_Bad_AFI)。然后状态将更改为RFST_DISCOVERY。
如果DH发送RF_DEACTIVATE_CMD (Idle Mode),则NFCC发送RF_DEACTIVATE_RSP。然后状态将变为RFST_IDLE。

5.3射频场信息

此通知用于通知DH远程NFC端点产生的操作字段。
在这里插入图片描述
DH可以通过以下配置参数配置NFCC是否允许发送射频场信息通知:
在这里插入图片描述
如果“RF_FIELD_INFO”设置为0x01,则遵循以下规则:
• 如果RF_FIELD_INFO设置为0x01, NFCC将立即发送RF_FIELD_INFO_NTF。这允许DH检索当前射频场状态。
• 如果从远程NFC端点检测到一个操作字段(RF field Status的0位设置为1b),并且如果使用的传输映射没有指定不同,NFCC将发送RF_FIELD_INFO_NTF。
传输映射可能会限制RF_FIELD_INFO_NTF的发送,如果传输在检测到外部字段后需要一段时间才能开始运行,并且DH可以使用该传输激活的开始作为外部字段存在的指示。传输映射不能因为任何其他原因限制RF_FIELD_INFO_NTF的发送。
• 如果检测到远端NFC端点的工作字段丢失(RF field Status的0位设置为0b), NFCC将发送RF_FIELD_INFO_NTF。
如果RF_FIELD_INFO设置为0x00,则NFCC不发送RF_FIELD_INFO_NTF通知。

六、射频通信配置

在进入章节5.2中描述的RFST_DISCOVERY状态开始实际的射频发现过程之前,DH必须首先配置:
• 任何非默认的轮询模式和监听模式参数
• 协议和接口之间的映射关系
• 需要的CE路由
上述步骤需要在第一次启动RF发现过程之前执行,之后只有在情况发生变化时才需要执行。下面几节将对它们进行详细描述。

6.1配置参数

这些是与发现相关的配置参数。用于设置和获取这些参数的命令在第4.3节中指定。
下面的小节描述了所有可配置的RF Discovery参数。表101包含所有参数及其参数标记的列表。所有参数均为缺省值,因此DH不需要配置任何射频发现参数。此外,一些参数仅与侦听或轮询模式相关,或仅与特定RF接口相关。这些参数在相应的RF接口章节中进行了描述。
如果DH修改了任何参数,DH可能会发送CORE_SET_CONFIG_CMD命令,将参数重置为默认值。CORE_SET_CONFIG_CMD命令的参数字段包含参数ID,长度为0x00,没有值字段。
如果DH检索到的参数的当前值是NFCC定义的默认值,则NFCC应发送该参数的实际值,根据NFCC的设置。在特殊情况下,NFCC将DH和某些nfcee的配置参数结合在一起(如CORE_INIT_RSP;(见表9),NFCC可能会在DH设置的配置参数在RF上可见或DH读取之前修改它们。
它们的修改方式超出了本文的范围。
6.1.1轮询A参数说明
6.1.2轮询B参数说明
6.1.3轮询F参数说明
6.1.4轮询ISO-DEP参数说明
6.1.5轮询NFC-DEP参数说明
6.1.6监听A参数
6.1.7 监听B参数说明
6.1.8监听F参数
6.1.9监听ISO-DEP参数
6.1.10监听NFC-DEP参数
6.1.11常用参数说明

6.2配置射频接口映射

这些控制消息用于配置射频协议和射频接口之间的映射关系。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
当NFCC自动切换到RFST_POLL_ACTIVE或RFST_LISTEN_ACTIVE状态时,用于DH与远端NFC端点使用指定的RF协议和模式进行通信的RF接口(Mapping Configuration)。
如果DH通过发送RF_DISCOVER_SELECT_CMD来发起到RFST_POLL_ACTIVE状态的转换,则DH应指定要使用的接口作为RF_DISCOVER_SELECT_CMD的参数,该参数可以推翻RF接口映射配置中的任何值。
每个射频协议只能对应一个射频接口。
为了完成RF接口映射,DH需要发送一个RF_DISCOVER_MAP_CMD给NFCC。
NFCC应将RF_DISCOVER_MAP_CMD中未包含的所有RF协议/模式的RF接口设置为“Frame RF Interface”。
如果NFCC接受RF接口映射配置,它应该使用状态为STATUS_OK的RF_DISCOVER_MAP_RSP响应。
如果射频接口映射无效,NFCC将发送一个状态为STATUS_REJECTED的RF_DISCOVER_MAP_RSP来拒绝该映射配置。在这种情况下,DH可以尝试另一种配置。
如果映射配置被拒绝,则NFCC中射频接口映射配置的状态为无效。只要该表是无效的,就不可能启动RF发现过程(见第6节)。
DH只能使用NFCC支持的RF接口值。NFCC支持的RF接口在CORE_INIT_RSP中告知DH。

6.3配置监听模式路由

如果作为发现过程的一部分,DH希望NFCC进入侦听模式,并且NFCC表示支持侦听模式路由,则DH应配置侦听模式路由表。这是为NFCC提供在监听模式下激活时路由接收数据的信息所必需的。
如果存在路由表项的NFCEE被禁用,NFCC应停止到该NFCEE的路由,直到该NFCEE再次启用。在使能NFCEE期间,相应的路由表项将被忽略。
说明如果某个NFCEE被使能,且存在其他NFCEE可以处理的基于协议或技术的路由表项,则DH需要评估是否重新配置监听模式路由表。
如果一个NFCEE被删除,那么相应的NFCEE ID将失效,DH将通过重新配置侦听模式路由表来删除该NFCEE ID的所有路由表项。

6.3.1监听模式路由表设计

监听模式路由表由三种类型的路由表项组成。这些都是:
• 基于AID的路由表项
• 基于协议的路由项
• 基于技术的路由项
基于AID的路由只有在NFCC终止ISO- dep协议并且至少理解[ISO/IEC_7816-4]中定义的SELECT命令时才有可能。DH从CORE_INIT_RSP返回的NFCC功能中知道NFCC是否支持此功能。每个AID在NFCC的路由表中应该是唯一的。
对于除T3T协议和专有协议外的每个协议值,对于每个支持的电源状态(switch On, switch Off和Battery Off),最多应该配置一条基于协议的路由。
对于T3T协议,由于远程NFC端点可以管理来自多个NFCEE的响应,因此DH可以为每个支持的Power State配置多个NFCEE ID。在这种情况下,如果NFCC无法为其找到路由,则从远程NFC端点接收的数据将被转发到所有配置的NFCEE ID。专有协议的路由条目的相应规则超出了本规范的范围。
说明:电源状态之间的转换是具体实现的问题,因此超出了本规范的范围。
对于每种技术,最多只能为每种支持的电源状态配置一条基于技术的路由。
查找路由表的顺序为(1)基于aid,(2)基于协议,(3)基于技术。对于从RF接收到的每一个帧,NFCC应遵循以下步骤,直到找到路由:

  1. 如果使用侦听端ISO-DEP射频接口,并且当前电源状态至少有一个基于aid的路由表项,则:
    a. 监视[ISO/IEC_7816-4]中定义的SELECT命令。如果找到AID类型的SELECT命令,则根据当前电源状态在路由表中匹配AID。如果匹配,路由到该目标(包括SELECT命令),否则继续执行步骤1b。
    b.如果是ISO-DEP激活后的第一个APDU,继续执行步骤2。否则,路由到与前一个命令相同的目标。
  2. 根据当前的power状态,检查路由表中是否为当前激活的协议配置了target。如果是,请路由到目标。如果是T3T,检查并路由到多个目标,否则继续步骤3。
  3. 根据当前的电源状态,检查当前激活的NFC技术是否配置了目标器。如果是,请路由到该目标,否则继续执行步骤4。
  4. 如果到达此步骤,则表示没有为接收到的帧找到路由。NFCC以特定于实现的方式处理帧。

6.3.2配置监听模式路由

这些控制消息用于配置侦听模式路由表。
在这里插入图片描述
当需要配置监听模式通信的NFCC时,DH应该总是发送完整的监听模式路由表。NFCC使用More字段来确定它是否收到了配置路由所需的所有命令。新的路由只有在收到所有配置信息后才会生效。DH应保持路由配置信息的总大小小于初始化时指定的“最大路由表大小”(见4.2节)。
除“More”和“Number of Routing Entries”外的所有参数都包含在计算中,以确定路由配置的大小是否超过最大路由表大小。
DH不应该尝试配置特定类型的路由,除非NFCC在CORE_INIT_RSP中发送的NFCC特性中表示支持该类型的路由。此外,DH不应该尝试为特定的电源状态配置路由,除非NFCC在CORE_INIT_RSP中发送的NFCC特性中表示支持该电源状态。
当收到有效路由配置的RF_SET_LISTEN_MODE_ROUTING_CMD时,NFCC应响应状态为STATUS_OK的RF_SET_LISTEN_MODE_ROUTING_RSP。
如果发生错误,NFCC将响应状态为STATUS_FAILED的RF_SET_LISTEN_MODE_ROUTING_RSP,并清空路由表。
如果新的路由配置由多个命令组成,其中任何一个命令失败,则新的路由配置将被忽略,路由表将被清空。在上述失败情况下,DH将重新配置路由表,直到NFCC接受路由表为止。
说明:路由表配置失败可能导致路由表空。由于路由表只能配置在RFST_IDLE状态,这在正在进行的RF通信中不会发生。

6.3.3读监听模式路由

这些控制消息被DH用来读取NFCC的监听模式路由表。
在这里插入图片描述
DH向NFCC发送RF_GET_LISTEN_MODE_ROUTING_CMD命令,以获取NFCC当前的路由信息。
NFCC应该响应RF_GET_LISTEN_MODE_ROUTING_RSP, Status为STATUS_OK,后面跟着一个或多个包含当前路由信息的RF_GET_LISTEN_MODE_ROUTING_NTF。
除了最后一个RF_GET_LISTEN_MODE_ROUTING_NTF之外的所有RF_GET_LISTEN_MODE_ROUTING_NTF都应该将More参数设置为1。最后一个RF_GET_LISTEN_MODE_ROUTING_NTF应该将More参数设置为0。
路由表项字段只有在路由表项数大于零时才会出现。
如果发生错误,NFCC将响应RF_GET_LISTEN_MODE_ROUTING_RSP,并给出一个Status表示失败原因,并且不发送RF_GET_LISTEN_MODE_ROUTING_NTF。

七、RF Discovery

本节描述在第5.2节中定义的状态机中移动所需的控制消息。

7.1 Starting RF Discovery

RF发现过程是由轮询和侦听周期组成的周期性活动,由不同的Discovery配置配置。表41中的持续时间配置参数指定一个Discovery周期的持续时间(=Total duration)。该参数用于定义侦听或空闲周期的长度。
“总时长”参数适用如下规则:
• 如果配置了轮询和监听模式,则监听持续时间长度为总持续时间减去轮询持续时间,其中轮询持续时间是在未检测到远程NFC端点时执行所配置技术的技术检测活动(参见[Activity])所需的时间。
• 如果只配置了“轮询方式”,则“空闲时长”为总时长减去轮询时长。
• 如果只配置了“监听模式”,则此参数不适用。
注:[ACTIVITY]对每种技术的轮询长度定义了一些限制,但可能存在NFCC实现特定的变化。此外,每种技术的最小监听长度可能因实现而异。因此,主机可能不知道用于总持续时间的确切最小值。

如果CORE_INIT_RSP中返回的NFCC特性的Octet 0中的发现配置模式设置为00b,则DH不仅负责定义配置参数,还负责定义侦听模式路由表和RF_DISCOVER_CMD中的RF技术和模式列表。NFCC无法修改这些项,因此整个RF发现过程由DH定义。
如果CORE_INIT_RSP中返回的NFCC特性的Octet 0中的发现配置模式设置为01b,则DH可能会选择设置配置参数、监听模式路由表和RF_DISCOVER_CMD中的射频技术和模式列表。然而,NFCC可以修改任何或所有这些项目,以适应自己的RF发现需求。如果DH不需要射频发现,RF_DISCOVER_CMD中的射频技术和模式列表可能为空,NFCC可能只使用自己的值。
以下控制消息用于启动射频Discover过程。

在这里插入图片描述
配置字段的个数(n)。如果只对NFCEE(如NFCEE)启用射频发现功能,则n可以为0。响应一个RF_NFCEE_DISCOVERY_REQ_NTF和一个NFCEE(s)直接向NFCC提供配置设置。当n = 0时,此命令不包含Configuration字段。
在这里插入图片描述
DH通过发送RF_DISCOVER_CMD请求NFCC启动发现活动。
参数“射频技术与模式”和“发现频率”由DH提供,用于配置NFCC执行射频发现过程的方式。如果参数被NFCC接受,NFCC将返回状态为STATUS_OK的RF_DISCOVER_RSP,并启动相应的RF发现过程。
如果射频通信状态机不是RFST_IDLE状态,NFCC将返回状态为DISCOVERY_ALREADY_STARTED的RF_DISCOVER_RSP。在这种错误情况下,当前正在进行的射频发现过程应继续进行,不做任何更改。
在轮询模式下,如果检测到多个远端NFC端点,或者一个远端NFC端点支持多种射频协议,NFCC将为RF发现过程中检测到的每一个远端NFC端点和射频协议的组合发送RF_DISCOVER_NTF给DH。
• NFCC应该为每个检测到的远程NFC端点分配一个唯一的RF发现ID。RF发现ID和RF协议的组合在一系列RF发现通知中发送的所有rf_discover_ntf中应该是唯一的。NFCC应在为支持多种协议的单个远程NFC端点发送的所有通知中分配相同的RF发现ID。
说明如果一个远程NFC端点支持多种协议,NFCC对每个通知使用相同的RF Discovery ID,但使用不同的RF Protocol值。如果远程NFC端点使用单独的轮询响应来表示对多个协议的支持,NFCC就无法知道响应来自单个远程NFC端点。在这种情况下,NFCC分配不同的RF发现ID。
• 当第5.2节定义的射频状态机进入RFST_IDLE状态时,所有分配的射频发现id将被释放。
• 如果当前的RF_DISCOVER_NTF是最后一个被发送的通知,则通知类型字段应设置为0或1;如果有另一个RF_DISCOVER_NTF紧随其后(称为RF发现通知系列),则设置为2。
由于RF_DISCOVER_NTF仅在域中有多个远端NFC端点或远端NFC端点支持多个RF协议时发送,因此启动RF发现过程后发送的第一个通知总是将通知类型设置为0x02(后续会有更多通知)。
• 如果NFCC已经完成了冲突解决过程,并且没有进一步识别远程NFC端点,则通知类型的值为0x00应使用。如果NFCC由于内部限制而中止了冲突解决过程,因此可能没有检测到进一步的远程NFC端点,则值为1应使用。
接收到通知类型为0x00或0x01的RF_DISCOVER_NTF后,发送RF_DISCOVER_SELECT_CMD选择远端NFC端点,或者发送RF_DEACTIVATE_CMD停止RF发现进程。

7.2 Select Discovered Target

这些控制消息用于选择RF发现ID和RF协议(识别由以前的RF_DISCOVER_NTF报告的远程NFC端点)以及用于与远程NFC端点通信的RF接口,该接口可能与RF_DISCOVER_MAP_CMD中定义的不同。
在这里插入图片描述
DH应向NFCC发送RF_DISCOVER_SELECT_CMD,通知NFCC后续通信将使用哪个RF发现ID、RF协议和RF接口。
如果射频发现ID、射频协议或射频接口无效,NFCC将响应状态为STATUS_REJECTED的RF_DISCOVER_SELECT_RSP。
否则,NFCC应该响应状态为STATUS_OK的RF_DISCOVER_SELECT_RSP。在此之后,NFCC将根据与RF_DISCOVER_SELECT_CMD参数相关的RF技术或RF接口执行RF协议激活。
指定的射频接口参数值仅对以下射频接口激活有效,不会导致射频接口映射配置发生任何变化(参见6.2节)。

7.3射频接口激活和去激活

NFCC可以通过发送RF_INTF_ACTIVATED_NTF激活处于RFST_DISCOVERY或RFST_W4_HOST_SELECT状态的RF接口。RF_INTF_ACTIVATED_NTF将导致射频通信状态改变为RFST_POLL_ACTIVE或RFST_LISTEN_ACTIVE,如5.2节所述。任何时候最多只能有一个射频接口处于活动状态。

7.3.1射频接口激活通知

NFCC使用此通知通知DH特定的RF接口已经激活。
在这里插入图片描述
在这里插入图片描述
要激活的射频接口是根据当前射频接口映射配置(参见6.2节)或RF_DISCOVER_SELECT_CMD中的参数(参见7.2节)来选择的。
根据选择的RF发现ID和RF协议,NFCC在激活RF接口之前执行协议激活程序。协议激活在每个RF接口部分中进行了描述。
当激活RF接口前的所有阶段都成功完成后,NFCC将发送RF_INTF_ACTIVATED_NTF,其中包含激活的RF接口信息(RF接口字段)。
NFCC发送RF_INTF_ACTIVATED_NTF后,可以使用静态RF连接。
RF_INTF_ACTIVATED_NTF的“最大数据包有效载荷大小”和“初始积分数”参数适用于静态RF连接。
说明NFCC在激活射频接口时可以选择任何允许的最大数据包有效载荷大小和初始积分数,而不考虑之前激活时可能使用的任何值。
数据交换射频技术和模式、数据交换传输比特率和数据交换接收比特率参数告知卫生部在与远程NFC端点进一步数据交换中使用的射频技术和比特率。
RF_INTF_ACTIVATED_NTF可以包含激活参数。激活参数取决于射频接口字段。每个RF接口部分定义了要包含的参数。
RF_INTF_ACTIVATED_NTF中的其他参数与RF_DISCOVER_NTF中的参数相同。
在RF_INTF_ACTIVATED_NTF中通信的射频发现ID值在状态变为RFST_IDLE之前一直有效。

7.3.2去激活射频接口

这些控制消息用于取消激活激活的RF接口(以停止DH或NFCEE与远程NFC端点之间的通信)或停止发现进程。
在这里插入图片描述
在这里插入图片描述
Sleep Mode '和Sleep_AF Mode '指的是[ACTIVITY]中定义的Listen Mode状态机的睡眠状态。根据技术的不同,“睡眠模式”指的是NFC-A的SLEEP_A, NFC-B的SLEEP_B或NFC-F的IDLE。Sleep_AF指的是Sleep_AF状态。
在这里插入图片描述
第5.2节中的射频状态机为每个状态指定了可能的停用情况。除第5.2节中的定义外,还适用以下规则:
• 对于RF_DEACTIVATE_CMD,去激活类型值’睡眠模式’和’睡眠af模式’不允许所有RF接口。每个RF接口指定它是否支持这些去激活情况。如果在使用不允许这些值的RF接口时收到去激活类型设置为’休眠模式’或’休眠模式’的RF_DEACTIVATE_CMD, NFCC应发送状态为STATUS_REJECTED的RF_DEACTIVATE_RSP。在这种情况下,NFCC不应该发送RF_DEACTIVATE_NTF。
• 如果RF_DEACTIVATE_CMD中的去激活类型被设置为“休眠模式”或“休眠af模式”,并且在执行由RF接口定义的协议去激活过程中出现错误,则RF_DEACTIVATE_NTF应将去激活类型设置为“空闲模式”,并且状态应更改为RFST_IDLE。
• 在所有其他情况下,如果在相应的接口部分中没有另行定义,RF_DEACTIVATE_NTF的去激活类型参数的值应与RF_DEACTIVATE_CMD中的值相同。如果在RF_DEACTIVATE_CMD/RSP之后发送RF_DEACTIVATE_NTF,则去激活原因应设置为“DH请求”。
•如果激活的RF接口定义NFCC必须执行协议去激活过程,则NFCC应在发送RF_DEACTIVATE_NTF之前执行这些去激活过程。
•在发送RF_DEACTIVATE_NTF之前,NFCC应该将所有待发送的数据发送到远程NFC端点,并将所有完全接收到的数据消息发送到DH。
•发送RF_DEACTIVATE_NTF后,NFCC应停止发送任何与RF接口相关的数据消息。
•收到RF_DEACTIVATE_NTF后,DH不应发送任何与RF接口相关的数据消息。

取消激活射频接口后:
•不再执行射频接口定义的通信操作(包括数据消息)。
•在RF接口上下文中交换的NFCC和DH缓冲区中的所有剩余数据应被删除。

7.4 NFCEE发现请求

此通知通知DH,代表NFCEE(s)请求的RF发现任务列表发生了变化,这些任务附属于NFCC。该通知以tlv列表的形式发送信息,定义见表66。
•如果一个附加的NFCEE希望开始使用射频通信,以给定的射频协议/射频技术和模式的组合,则包含一个TLV,其中Type字段设置为0x00,其值根据表67设置。
•如果所连接的NFCEE希望停止使用RF通信,以给定的RF协议/ RF技术和模式组合,则包含一个TLV,其中Type字段设置为0x01,其值根据表67设置。
此通知可以在第一次NFCEE发现运行后的任何时间发送,即使RF发现已经在进行中。
当具有该NFCEE ID的NFCEE被禁用时,NFCC将认为任何先前传输的具有给定NFCEE ID的RF_NFCEE_DISCOVERY_REQ_NTF被DH丢弃。
如果NFCEE使用[ETSI_102622]中定义的HCI协议,NFCC可以根据打开的管道确定NFCEE RF发现需求。否则,NFCC用来找出NFCEE的RF发现需求的方法是特定于实现的。卫生署应根据本身的要求及其他国家教育中心的要求,考虑国家教育中心的要求。因此,卫生署在收到此通知后所采取的行动是针对具体情况而定的。
在这里插入图片描述
在这里插入图片描述

7.5 RF NFCEE Action

RF NFCEE动作是一种机制,用于指示涉及设备中NFCEE之一的动作已经发生,并且可能引起DH的兴趣。动作可以是由NFCC做出的路由决策,也可以是关于远程NFC端点的事务的应用程序级信息的可用性。
例如,该指示可以为DH上的用户界面应用程序提供一种机制,基于远程NFC端点访问了特定NFCEE或NFCEE上的应用程序的知识,执行任何应用程序特定的行为。例如,用户界面应用程序可以显示品牌和/或请求消费者的操作。
除RFST_LISTEN_ACTIVE状态外,此通知不能发送。
在这里插入图片描述
Trigger值表示触发发送通知的触发器类型(如表69所定义)。
在这里插入图片描述
• 0x00 -当NFCC能够确定被访问应用程序的应用标识符时,该触发器将由NFCC发送。在[ISO/IEC_7816-4] SELECT命令的情况下(适用于NFC论坛标签类型4),应为每个收到的此类SELECT命令发送通知,并且支持数据的值应包含所选的AID。NFCEE ID字段应标识DH-NFCEE或承载相应应用程序的NFCEE。
• 0x01 -当基于RF协议做出路由决定时,将发送此触发器。支持数据应包含相应的射频协议。ID字段应标识流量路由到的DH-NFCEE或NFCEE。
• 0x02 -当基于射频技术做出路由决定时,应发送此触发器。支持数据应包含相应的射频技术。ID字段应标识流量路由到的DH-NFCEE或NFCEE。
• 0x10—当NFCEE向NFCC提供信息时,该触发器将被发送。NFCEE上的应用程序与NFCC通信以提供信息的方式超出了本规范的范围,支持数据的内容也是如此。ID字段应标识提供信息的NFCEE。
对于上述所有情况,当NFCEE ID设置为0x00 (DH-NFCEE ID)时,不发送通知。
DH可以通过以下配置参数配置NFCC是否允许发送NFCEE动作通知:
在这里插入图片描述

八、射频接口

8.1 NFCEE直接射频接口

NFCEE直接射频接口是一个伪接口,当处于RFST_DISCOVERY状态的NFCC可以确定射频通信必须路由到NFCEE时使用。这种情况的一个例子是如果NFCEE直接耦合到RF(例如,当使用NFC有线接口时(参见[ISO/IEC_28361])。
NFCEE直接射频接口不允许DH和NFCC之间的NCI数据消息交换(因此DH和远程NFC端点之间没有通信)。因此,该射频接口不定义数据映射或发现配置。NFCEE直接射频接口不能映射到射频协议。
以下章节适用于“轮询模式”和“监听模式”。
8.1.1发现和激活接口
当DH使能某个NFCEE时,当该NFCEE处于NFST_Discovery状态,并且确定该RF通信必须路由到某个NFCEE时,它会向DH发送一个RF_INTF_ACTIVATED_NTF,表示该接口已经激活。
8.1.2接口去激活
不允许使用该接口的休眠类型为“睡眠模式”或“Sleep_AF模式”的休眠情况。

8.2帧射频接口

轮询端和监听端帧RF接口都提供对NFC论坛设备和远程NFC端点之间交换的RF帧的有效负载的访问。射频帧格式依赖于技术。任何更高层的协议(例如ISO-DEP或NFCDEP)都必须在DH上处理。此外,当使用帧射频接口时,射频接口的激活并不总是与设备激活的完成同时进行。对于ISODEP协议,rat或ATTRIB命令/响应不由NFCC处理,而必须由DH处理,并作为数据消息的有效载荷通过NCI发送。在激活NFC-DEP协议时,ATR_REQ/RES和PSL_REQ/RES也是如此。
表98中定义的所有协议都可以映射到此接口(参见6.2节)。
###8.2.1 DH与RF的数据对应关系
DH和NFCC只能使用静态RF连接与远程NFC端点进行数据通信。DH可以根据8.2.1.1节的规定向NFCC发送数据消息。NFCC应该用这些数据填充当前使用的技术的RF帧,并将RF帧发送到远程NFC端点。
当NFCC接收到来自远端NFC端点的RF帧时,NFCC应从RF帧中提取有效载荷,并根据章节8.2.1.2将其作为数据消息的有效载荷发送给DH。
NCI分段和重组可以应用于任何方向的数据消息。
帧射频接口(NFC-A / NFCB / NFC-F)使用的数据报文中的数据格式根据报文的传输方向不同而不同。
####8.2.1.1 Data from the DH to RF
对于NFC-A和NFC-B,数据报文应与NFC-A第4.4节和NFC-B第5.4节中定义的数据有效载荷和有效载荷格式相对应。
对于NFC-F,数据报文应与[DIGITAL]中第6.4节定义的数据和有效载荷格式的SoD和有效载荷相对应。
接收到数据报文后,NFCC应附加相应的EoD,并将结果以当前使用的技术的RF帧的形式发送给远程NFC端点。
注意:除了4.4、5.4和6.4节中的格式外,[DIGITAL]还定义了ISO-DEP、NFC-DEP和标签平台的数据和有效载荷格式。将这些格式映射到上述定义的结果如下:
在ISO-DEP的情况下,数据消息对应于章节13.1中定义的ISO-DEP块的SoD和Payload。在NFC-DEP的情况下,数据消息对应于章节14.4中定义的数据和有效载荷格式的SoD和有效载荷。对于类型1和类型2标签平台,数据消息仅包括适用的数据和有效载荷格式部分(8.4和9.4)的有效载荷字段。
对于Type 3标签平台,数据消息包括第10.4节定义的数据和有效载荷格式的SoD和有效载荷字段。
图11、图12和图13说明了向远程NFC端点发送RF帧时,每个帧RF接口的数据消息格式和RF帧之间的映射关系。

8.3 ISO-DEP射频接口

轮询端和侦听端ISO-DEP RF接口都提供访问NFC论坛设备和远程NFC端点之间交换的ISO-DEP i - block的有效载荷。
使用此接口,DH不需要了解ISO-DEP块格式,但是任何更高层的协议(例如基于7816 APDU交换)都必须在DH上处理。
以下协议可以映射到该接口(参见6.2节):PROTOCOL_ISO_DEP。

8.3.1 DH与RF的数据对应关系

8.3.2轮询端ISO-DEP射频接口管理

8.3.3监听端ISO-DEP射频接口管理

8.4 NFC-DEP射频接口

九、NFCEE Discovery and Mode Set

9.1 NFCEE ID

NFCC动态地为NFCEE分配ID,称为NFCEE ID。DH通过执行NFCEE Discovery来了解ID值。在NFCEE从NFCC中移除之前,NFCEE ID是有效的。在本规范中,值为0的ID被称为DH-NFCEE ID,并应代表DH-NFCEE,表示DH-NFCEE的静态ID。
##9.2 NFCEE Discovery
这些控制消息用于发现是否有一个或多个NFCEE连接到NFCC。
在这里插入图片描述
为了发现是否有一个或多个NFCEE连接到NFCC, DH会发送NFCEE_DISCOVER_CMD命令给NFCC,发现动作为0x01,收到NFCEE_DISCOVER_CMD命令后,NFCC应以状态为STATUS_OK的NFCEE_DISCOVER_RSP和数量为NFCEEs(值为0x00表示未连接NFCEEs, 0x01表示已连接NFCEE,等等)的NFCEE_DISCOVER_RSP响应DH。
如果至少有一个NFCEE连接到NFCC,对于每个连接的NFCEE, NFCC应向DH发送一个NFCEE_DISCOVER_NTF,内容如下:
• 由NFCC分配给NFCEE的唯一NFCEE ID。
• 目前NFCEE的状态。
• NFCEE支持的每个NFCEE协议。
• 零个或多个NFCEE信息记录,以提供有关NFCEE的额外信息。
注意:NFCEE协议和NFCEE接口具有一对一的映射关系,它们的值在common中定义。表100。如果NFCEE支持NFCEE_DISCOVER_NTF报告的某些NFCEE协议,则可以使用其中一个支持的协议在DH和NFCEE之间进行通信。该通信通道的创建称为NFCEE接口激活。
分配的NFCEE ID一直有效,直到NFCEE被移除或NFCC被重置,配置状态为0x01。
一旦启用NFCEE发现过程,NFCC应通过NFCEE_DISCOVER_NTF通知DH任何可检测到的NFCEE移除和/或重新连接。
如果发送NFCEE_DISCOVER_NTF通知一个新的NFCEE已经连接到NFCC,则该NFCEE的初始状态为已连接并禁用(NFCEE Status值设置为0x01)。
如果“NFCEE Status”设置为0x02,表示“NFCEE removed”表示“Protocol Information Number”条目数应为0。
如果NFCEE发现过程失败,则发送状态为STATUS_FAILED的NFCEE_DISCOVER_RSP(见表94)。在失败的情况下,nfcee的数量应为0。
如果NFCC检测到一个NFCEE被移除,那么与该NFCEE的逻辑连接将隐式关闭,相应的NFCEE接口(协议)将立即去激活。如果使能NFCEE Discovery,则发送NFCEE_DISCOVER_NTF。
如果不发送NFCEE_DISCOVER_NTF, DH需要发送发现动作设置为0x00的NFCEE_DISCOVER_CMD。NFCC将发送一个状态设置为STATUS_OK的NFCEE_DISCOVER_RSP响应,并且忽略参数NFCEEs的数量。
###9.2.1 HCI Network Specific Handling
指定的HCI网络[ETSI_102622]被NCI规范逻辑地视为一个“虚拟”NFCEE。如果NFCC支持HCI网络,即使HCI网络包含多个NFCEE,它也应该返回一个且只有一个协议类型为“HCI Access”的NFCEE_DISCOVER_NTF。
NFCEE_DISCOVER_NTF中NFCC返回的NFCEE ID用于DH对HCI网络的寻址。
HCI网络的NFCEE_DISCOVER_NTF规则如下:
• 如果NFCEE Status字段的值为“0x00 - NFCEE已连接并启用”,则允许HCI网络执行RF通信(在RF状态机给出的条件下)。
• 如果NFCEE Status字段的值为“0x01 - NFCEE connected and disabled”,表示不允许RF通信。这通常是由于先前发送的NFCEE_MODE_SET_CMD来禁用HCI网络。
NFCEE_DISCOVERY_NTF内不应提供硬件/注册标识。硬件/注册标识长度设置为0。HCP包可以根据[ETSI_102622]接收HCI网络内不同主机的Hardware/Registration Identification信息。
• 包含“HCI访问”协议类型的NFCEE_DISCOVER_NTF不得包含任何其他附加协议。

9.3 NFCEE使能和去使能

这些控制消息用于启用或禁用NFCEE。
在这里插入图片描述
DH向NFCC发送NFCEE_MODE_SET_CMD命令来启用或禁用NFCEE。
NFCEE ID标识动作发生在哪个NFCEE上,NFCEE Mode标识该NFCEE是启用还是禁用。在必要的处理完成后,NFCC通过向DH发送NFCEE_MODE_SET_RSP来指示操作是否成功。在失败的情况下,状态应该设置为STATUS_FAILED(见表94)。
NFCC不应该路由通信到或从一个禁用的NFCEE。这也包括来自远程NFC端点或通过NFCC路由的另一个NFCEE的任何通信。
NFCC应仅在NFCEE_MODE_SET_CMD触发时启用或禁用NFCEE。
如果DH使用NFCEE_MODE_SET_CMD命令禁用NFCEE,则该NFCEE的逻辑连接将隐式关闭(不发送CORE_CONN_CLOSE_CMD),相应的NFCEE接口将立即去激活.

9.3.1 HCI Network Specific Handling

启用或禁用HCI网络时,DH需要发送NFCEE_MODE_SET_CMD, NFCEE ID设置为HCI网络的ID。
NFCEE_MODE_SET_CMD命令的“NFCEE Mode”字段设置为“Enable the connected NFCEE”,表示允许HCI Network进行射频通信。因此,如果它们尚未激活,则应激活与HCI网络主机的通信接口。如果HCI访问NFCEE接口在接收NFCEE_MODE_SET_CMD时已经启用,NFCC应激活所有与HCI网络中主机的通信接口(其中一些接口可能在之前被停用,例如出于功耗原因)。
如果“NFCEE_MODE_SET_CMD”命令的“NFCEE Mode”字段设置为“Disable the connected NFCEE”,则不允许HCI网络继续进行射频通信。因此,可能不再需要保持与HCI网络内主机的通信接口处于激活状态。
在去使能HCI网络之前,如果HCI Access NFCEE接口被激活,DH应该去使能它,如10.2.1所述。
HCI网络的启用/禁用状态应在NFCC中保持持久(包括当DH关闭时),直到DH发送新的NFCEE_MODE_SET_CMD。这包括NFCC的重置和初始化。

十、NFCEE接口

介绍支持的NFCEE接口。除非另有定义,否则所有的NFCEE接口都是可选的。
DH在NFCEE发现过程中了解到该NFCEE支持哪些NFCEE接口,具体操作请参见章节9.1。NFCEE_DISCOVER_NTF中的“支持的NFCEE协议参数”字段标识支持的NFCEE协议。DH只能为在NFCEE发现过程中报告的NFCEE协议发起NFCEE接口激活。
NFCEE接口激活和去激活是在创建或关闭到NFCEE的逻辑连接时自动执行的,参见章节4.4。对于NFCEE接口激活或去激活没有特定的控制消息。
创建连接时使用的NFCEE ID和NFCEE协议(如NFCEE_DISCOVER_NTF中所述)的组合唯一标识要激活的特定NFCEE接口。
如果在NFCEE接口激活过程中出现错误,NFCC应该将CORE_CONN_CREATE_RSP中的Status设置为NFCEE_INTERFACE_ACTIVATION_FAILED。
可以同时有多个活动的NFCEE接口,但每个NFCEE只能有一个活动的NFCEE接口。这意味着对于每个NFCEE, DH和一个NFCEE之间只允许有一个逻辑连接。
当相应的逻辑连接被关闭时,NFCEE接口将被去激活。DH可以使用NFCEE接口使用的Conn ID发起连接关闭,详见章节4.4.3。
当NFCC和NFCEE之间的消息传输出现不可恢复的错误时,NFCC将发送CORE_INTERFACE_ERROR_NTF, Status设置为NFCEE_TRANSMISSION_ERROR。

10.1 APDU NFCEE Interface

10.1.1 Data Exchange

这种通信将是APDU命令响应对的发送和接收——使用短消息长度——如[ISO/IEC_7816-3]第12节所述。也就是说,Lc和Le被编码在一个字节上。DH可以根据10.1.1.1节的规定向NFCC发送数据消息。NFCC将提取并发送包含在数据消息有效载荷中的命令APDU数据给NFCEE。当NFCC从NFCEE接收到响应APDU数据时,NFCC应该用响应APDU填充数据消息的有效载荷,并根据章节10.1.1.2将数据消息发送给DH。NCI分段和重组可以应用于任何方向的数据消息。NFCC负责管理自身与NFCEE之间通信和接收指挥与响应apdu所需的差异,这对DH和NCI应是透明的。

10.1.1.1 DH发送到NFCC的数据消息格式

当NFCC收到来自DH的数据报文时,应发送数据报文,即:
命令APDU到NFCEE。如果单个命令APDU被拆分为多个数据包,NFCC应接收所有相关数据包,并在将命令APDU发送给NFCEE之前将所有数据包中的命令APDU数据合并。
####10.1.1.2 NFCC发往DH的数据消息格式
FCC应从NFCEE检索完整的APDU响应,并将其作为数据消息处理,并将其以一个或多个数据包的形式发送给DH。如果从NFCEE中检索到的APDU响应不适合单个数据包,NFCEE应将APDU响应拆分为多个数据包。
##10.2 HCI接入NFCEE接口
HCI接入接口(HCI Access Interface)用于DH与连接到NFCC并支持HCI的nfcee进行通信,标准为[ETSI_102622]。如果一个或多个NFCEE使用HCI连接到NFCC, NFCC应支持HCI访问接口。
###10.2.1 NFCEE接口激活和去激活
如果DH在支持的NFCEE协议参数中收到了一个指示“HCI访问”的NFCEE_DISCOVER_NTF(见表100),DH可以通过使用NFCEE_DISCOVER_NTF中指定的NFCEE ID并使用“HCI访问”作为协议打开一个逻辑连接来激活该NFCEE接口。当HCI访问NFCEE接口被激活时,如果HCI网络已经启用,则主机控制器应按照[ETSI_102622]中的描述向HCI网络内的主机发送EVT_HOT_PLUG,以使它们知道终端主机可用。
当通过关闭到HCI Access NFCEE接口的逻辑连接使HCI Access NFCEE接口失效时,EVT_HOT_PLUG应使HCI网络内的主机知道终端主机已经消失。
##10.3 Type 3 Tag Command Set NFCEE Interface
##10.4 Transparent NFCEE Interface
传输接口(Transparent Interface)用于DH与NFCC连接的NFCEE之间的通信,交换NFCC无法理解的数据,不加修改就直接通过。

十一、传输映射

NCI核心设计旨在独立于任何特定的底层传输层或其速度。
以下是任何底层传输映射的要求:
• 传输映射应提供在DH和NFCC之间双向传输数据和控制数据包的方法。
• 传输映射应提供可靠的数据传输。
• 传输映射可能包括流量控制机制。但是,建议依赖于NCI协议中内置的流控制。
• 提供帧的传输映射不得将小于3字节的数据包转发到NCI核心。
下面的小节描述了NCI的传输映射。
不强制使用以下子部分中定义的任何传输映射。设备实现可以使用满足上述要求的专有传输映射(即使是在本规范包含映射的传输层)。

11.1 UART Transport

11.2 I2C Transport

NCI帧应在DH和NFCC之间通过I2C [I2C]传输,不需要额外的帧。由于没有额外的帧,I2C传输不会引入任何错误;否则,NCI消息流可能无法恢复。因此,I2C连接必须具有足够高的质量,以便以配置的传输速率提供可靠的数据传输。
DH应该作为总线主站运行,如果由另一个总线主站寻址,也可以作为总线从站运行。NFCC可以作为总线主站或从站运行。在后一种情况下,应提供“带外”手段,以便NFCC请求DH作为总线主机启动数据传输。但是,如果“带外”方法不可用,则DH应频繁轮询NFCC。轮询频率与实现有关。
I2C传输应该支持标准(高达100kbps)和快速模式(高达400kbps),并可能支持快速模式(高达1mbit /s)和高速模式(高达3.4Mbit/s)。
此外,在I2C传输上可能支持10位寻址模式和时钟扩展。

11.3半双工SPI传输

十二、测试

本节中的命令、响应和通知提供了促进测试的机制。

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值