NCI Core Framework

news2024/10/7 20:27:06

3.1 概述

NCI 核心包括以下必需的功能:

 通过 NCI 传输命令、响应、通知和数据消息的数据包格式。

 用于设备主机和 NFC 控制器之间不同操作(第 4 节中指定)的命令、响应和通知的定义。 (本规范后面的一些部分定义了不属于 NCI 核心一部分的附加命令、响应和通知。)

 命令/响应消息交换的流量控制机制。

 数据消息的逻辑连接概念。

 针对从 DH 发送到 NFCC 的数据消息的基于信用的流量控制机制。

 控制和数据消息的分段和重组。

 NFC 执行环境 (NFCEE) 的寻址方案。

NCI 核心支持连接到 NFCC 的 DH 和 NFCEE 之间的通信。

注意 NCI 仅覆盖 DH 和 NFCC 之间的链路,因此只有当 NFCC 和 NFCEE 之间使用的协议也支持时,才可能实现从 DH 到 NFCEE 的通信。

 远程 NFC 端点的寻址方案。 NCI 核心使用逻辑连接来支持 DH 和由 NFCC 发现的目标(NFCEE 或远程 NFC 端点)之间的通信。

 NFCC 的重置、初始化和配置。

 异常处理,包括用于指示错误的控制消息以及如何使用它们的规则。

3.2 NCI控制消息

控制消息包含命令、响应和通知。 它们控制 DH 和 NFCC 之间的交互。 参见图 4。

 

DH 可以发送命令来指示 NFCC 执行特定操作。 对于收到的每个命令,NFCC 应回复一个响应以确认收到命令。 响应还可以表明命令在 NFCC 中引起的变化。

通知只能从 NFCC 发送至 DH。 可以发送通知来传递与命令相关的附加信息。 除非另有说明,通知还可以独立于任何命令或响应而发送。

控制消息的有效负载作为控制数据包的有效负载通过 NCI 传输发送。 控制数据包有效负载包含控制消息有效负载的完整或片段。

DH 和 NFCC 均应能够支持有效负载为 255 个八位位组的控制消息,这是任何控制消息有效负载的最大大小。

控制数据包的最大有效负载长度也是 255 个八位位组。 DH 应能够接收具有 255 个八位字节有效负载的控制数据包。 然而,NFCC 可以指定较小的最大控制数据包有效负载大小,如参数最大控制数据包有效负载大小所定义。 参见第 4.2 节。

因此,当通过 NCI 发送时,控制消息可以分段为多个控制数据包(如第 3.5 节所述)。

3.2.1 控制消息的流量控制

DH 和 NFCC 可以根据需要通过 NCI 以任意数量的数据包发送完整的控制消息。 NCI 中的控制消息没有基于数据包的流量控制

以下流量控制规则适用于控制消息:

 发送命令后,DH 不得发送任何命令,直到收到该命令的响应,或者直到它采取措施恢复与 NFCC 交换消息的能力(如果它确定等待时间过长)。 

 发送命令后,DH 应能够接收响应。

 发送响应后,NFCC 应准备好接收来自 DH 的下一个命令。

 DH 应能够随时收到 NFCC 的通知。

3.2.2 控制消息的异常处理

本节中的规则定义了错误控制消息的接收者要执行的异常处理。

DH 收到的任何命令均应被忽略。 NFCC 收到的任何响应或通知均应被忽略。

与本规范一致的控制消息,除了末尾存在附加字节之外,不应被视为语法错误,但附加字节应被忽略。

在控制消息有语法错误的所有其他情况下,这意味着控制数据包的编码与本规范不一致,并且接收者仍然可以确定控制消息的类型:

如果控制消息是命令,NFCC 应忽略命令的内容,并发送具有与命令中相同的组标识符(GID)和操作码标识符(OID)字段值以及状态值 STATUS_SYNTAX_ERROR 的响应。 响应不应包含任何附加字段。

如果控制消息是响应,DH 应忽略响应的内容并可以自由发送另一个命令。

 如果控制消息是通知,DH 应忽略该通知。

如果控制消息有语义错误,这意味着在不期望的情况下收到了具有有效语法的控制消息:

 DH 应忽略意外的响应或通知。

 意外命令不应导致 NFCC 采取任何行动。 除非另有规定,NFCC 应发送状态值为 STATUS_SEMANTIC_ERROR 且无附加字段的响应。

NFCC 应使用具有与命令相同的 GID 和 OID 字段值的响应来响应未知命令(未知的 GID 或 OID),后跟具有 STATUS_SYNTAX_ERROR 值的状态字段,并且没有其他字段。

DH 应忽略任何未知的响应或通知(未知的 GID 或 OID)。

使用专有通知的 NFCC 实现应该考虑到以下事实:任何不支持这些专有扩展的 DH 将默默地丢弃通知。

如果 NFCC 无法执行有效命令中请求的操作,NFCC 应使用具有表 129 中定义的状态字段值之一的响应来通知 DH。为每个响应指定允许的状态值。 无法执行命令的原因可能是缓冲区溢出、处理能力有限、资源有限等。

如果 DH 确定在发送命令后等待响应的时间过长,可能表明失去了与 NFCC 交换消息的能力,则它可以采取带外措施来恢复通信。

注:此类措施(可能包括 NFCC 的硬重置或电源循环)超出了本规范的范围。

3.3 NCI 数据消息

数据消息用于通过 DH 和 NFCC 目标(NFCEE 或远程 NFC 端点)之间的逻辑连接交换数据。 参见图 5。

 

数据消息有效负载作为一个或多个数据包有效负载通过 NCI 传输发送。 数据包有效负载包含完整的数据消息有效负载或数据消息有效负载的一部分。

创建逻辑连接后,数据消息可以随时由 DH(受流量控制)或 NFCC 发送。

DH 应能够支持由NFCC 发送的任何数据消息有效负载大小(假设DH 能够处理从本地NFCEE 或远程NFC 端点接收的任何数据)。 在任何时候,NFCC 能够接收的逻辑连接最大数据大小由静态 RF 连接(参见第 7.3 节)或动态逻辑连接(参见第 7.3 节)情况下 RF 接口激活期间宣布的最大数据包有效负载大小定义。 参见第 4.4 节),乘以 NFCC 为该连接提供的未使用积分数。

数据包的最大有效负载为 255 个八位位组。 DH 应能够接收具有 255 个八位字节有效负载的数据包。 然而,NFCC 可以在逻辑连接的基础上指定较小的最大数据包有效负载大小。

DH 不应发送有效负载长度超过在创建相应逻辑连接期间宣布的最大数据包有效负载大小的数据包。

3.3.1 数据包的流量控制

基于信用的数据流控制机制是为从 DH 发送到 NFCC 的数据定义的,并且可以由 NFCC 调用以消除缓冲区溢出情况。 假设 DH 有足够的缓冲来处理从 NFCC 发送的所有数据,因此在该方向上不支持基于信用的流量控制。

基于信用的流量控制机制适用于数据包。 每个数据包(可以包含完整的数据消息或数据消息的一部分)需要一个积分。

在连接建立期间,按逻辑连接配置流量控制(有关静态 RF 连接,请参阅第 7.3 节;有关动态逻辑连接,请参阅第 4.4 节)。 对于每个逻辑连接并使用不同的参数,它可能会以不同的方式启用或禁用。

DH 应支持基于信用的流量控制,尽管 NFCC 可以要求 DH 使用流量控制。

4.4.4节规定了基于信用的流量控制机制的规范规则。

3.3.2 数据消息的异常处理

本节中的规则定义了错误数据消息的接收者要执行的异常处理。

如果数据消息存在语法错误,这意味着数据消息或传输数据消息的任何数据包的编码与本规范不一致(包括数据包有效负载内字段编码的任何定义) 对于当前活动的 RF 接口,如第 8 节中所定义):

如果接收方是NFCC,则它应发送状态值为STATUS_SYNTAX_ERROR 的CORE_INTERFACE_ERROR_NTF 消息。

 如果接收方是 DH,则它应忽略数据消息。

3.4 数据包格式

3.4.1 公共包头

所有数据包都有一个公共标头,由消息类型 (MT) 字段和数据包边界标志 (PBF) 字段组成,如图 6 所示。

消息类型 (MT)

MT 字段指示数据包的内容,并且应为包含表 2 中列出的值之一的 3 位字段。信息字段的内容取决于 MT 字段的值。 指定为 RFU 的 MT 的接收者应默默地丢弃该数据包。

 

 

数据包边界标志 (PBF)

数据包边界标志(PBF)用于分段和重组,并且应是包含表 3 中列出的值之一的 1 位字段。

以下规则适用于数据包中的 PBF 标志:

 如果数据包包含完整的消息,则 PBF 应设置为 0b。

如果数据包包含分段消息的最后一段,则 PBF 应设置为 0b。

如果数据包不包含分段消息的最后一个分段,则 PBF 应设置为 1b。

有关分段和重组的更多详细信息,请参阅第 3.5 节。

 

3.4.2 控制报文格式

控制数据包结构详见图 7。

每个控制数据包应具有 3 个八位字节的数据包标头,并且可以具有用于携带控制消息有效负载或控制消息有效负载片段的附加有效负载。

注:在“空”控制消息的情况下,仅发送数据包标头。

消息类型 (MT)

MT字段的详细信息请参见表2。

数据包边界标志 (PBF)

PBF字段的详细信息请参见表3。

组标识符 (GID)

NCI 支持根据各自组进行分类的命令、响应和通知。 组标识符(GID)指示消息的分类,并且应是包含表 139 中列出的值之一的 4 位字段。

操作码标识符 (OID)

操作码标识符(OID)指示控制消息的标识,并且应该是一个 6 位字段,它是组内一组命令、响应或通知消息的唯一标识。 OID 值与表 139 中描述的相应控制消息的定义一起定义。

有效负载长度(L)

有效负载长度应指示有效负载中存在的八位字节数。 有效负载长度字段应为 8 位字段,包含 0 到 255 之间的值。

 

3.4.3 Format of Data Packets
The Data Packet structure is detailed in Figure 8.
 

 

每个数据包应具有 3 个八位字节的包头,并且可以具有用于携带数据消息有效负载或数据消息有效负载片段的附加有效负载。

注:在“空”数据消息的情况下,仅发送数据包标头。

消息类型(MT) MT字段的详细信息请参见表2。

注 MT 始终包含 000b 来指示数据包,如表 2 中所定义。

数据包边界标志 (PBF)

PBF字段的详细信息请参见表3。

连接标识符(Conn ID)

连接标识符(Conn ID)应用于指示该数据所属的先前设置的逻辑连接。 有关设置逻辑连接和分配 Conn ID 的详细信息,请参阅第 4.4 节。 Conn ID 是一个 4 位字段,包含 0 到 15 之间的值。

学分(CR)

Credits 字段是一个 2 位字段,包含从 0 到 3 的值。在从 DH 发送到 NFCC 的数据包中,它应包含值零 (0)。 如果 NFCC 使用基于信用的流量控制(请参阅第 3.3.1 节和第 4.4.4 节),则 NFCC 可以通过在此字段中设置非零值来为数据包使用的逻辑连接提供 DH 信用。 否则,NFCC 应在此字段中设置值 0。

有效负载长度(L)

有效负载长度字段应指示有效负载中存在的八位字节数。 有效负载长度字段应为 8 位字段,包含 0 到 255 之间的值。

3.5 分割与重组

DH 和 NFCC 均应支持分段和重组功能。

对于每个逻辑连接的控制包和数据包,消息的分段和重组应独立执行。

任何 NCI 传输映射都可以定义固定的最大传输单元 (MTU) 大小(以八位位组为单位)。 如果定义并使用这样的映射,那么,如果 DH 或 NFCC 需要传输将生成大于 MTU 的数据包(包括数据包标头)的消息(控制消息或数据消息),则分段和重组 (SAR) 功能应在消息上使用。

以下规则适用于分段控制消息:

对于控制消息的每个段,控制数据包的标头应包含相同的 MT、GID 和 OID 值。

 从 DH 到 NFCC:当从 DH 向 NFCC 发送命令消息时,应使用分段和重组功能,该命令消息将生成有效负载大于 NFCC 在初始化时报告的“最大控制数据包有效负载大小”的控制数据包 (参见第 4.2 节)。 命令消息的每个片段(最后一个片段除外)均应包含长度为“最大控制数据包有效负载大小”的有效负载。

 从 NFCC 到 DH:当 NFCC 向 DH 发送控制消息时,无论长度如何,如果出于内部优化目的需要,它都可以将控制消息分段为更小的控制数据包。

以下规则适用于分段数据消息:

对于数据消息的每个段,数据包的标头应包含相同的 MT 和 Conn ID。

 从 DH 到 NFCC:如果数据消息有效负载大小超过连接的最大数据包有效负载大小,则应在数据消息上使用分段和重组功能。

 从 NFCC 到 DH:当 NFCC 向 DH 发送数据消息时,无论有效负载长度如何,它都可以出于任何内部原因将数据消息分割成更小的数据包; 例如,用于传输缓冲区优化。 对于控制消息和数据消息,PBF 位应按照表 3 中的定义进行设置。

3.6 逻辑连接

逻辑连接用于在 DH 和 NFCC 之间交换数据消息。 逻辑连接为相关数据消息提供公共上下文。 根据逻辑连接建立期间交换的信息,NFCC 可以是数据通信的端点,或者必须将数据消息的有效负载转发到远程 NFC 端点或 NFCEE(后两者是主要用例) 用于逻辑连接)。

逻辑连接是通过 NFCC 和 DH 之间的协商建立的(如第 4.4 节所述)。 以下是逻辑连接概念的概述。 动态逻辑连接:

 DH 可以创建动态逻辑连接。

 NFCC 可以拒绝传入的连接请求。

 NFCC 将分配一个标识符(Conn ID)来标识动态逻辑连接,并且该标识符在动态逻辑连接的生命周期内保持有效。 当动态逻辑连接关闭时,Conn ID 被释放。

 DH 可以关闭动态逻辑连接。

 只有成功创建动态逻辑连接后才能传输数据。

 DH 和 NFCC 均应忽略未分配 Conn ID 的数据包。

静态射频连接:

 静态 RF 连接在 NFCC 初始化后就存在,无需使用连接控制消息(在第 4.4.2 节中定义)进行创建,并且永远不会关闭。

 静态 RF 连接的初始信用数和最大数据包有效负载大小由 NFCC 在每次发送 RF_INTF_ACTIVATED_NTF 时(重新)建立。

如果没有活动的 RF 接口,DH 不应通过静态 RF 连接发送数据。 参见第 7.3 节。

如果没有活动的 RF 接口,DH 和 NFCC 都应忽略具有静态 RF 连接的 Conn ID 的数据包。

注意 此版本规范中包含的所有 RF 接口仅使用静态 RF 连接。 但是,动态逻辑连接可能会被本规范未来版本中包含的 RF 接口使用。

静态 HCI 连接:

如果 NFCC 在 CORE_INIT_RSP 中报告它实现了 HCI 主机控制器(如 [ETSI_102622] 中定义),则:

 静态 HCI 连接在 NFCC 初始化后就存在,无需使用连接控制消息(在第 4.4.2 节中定义)进行创建,并且永远不会关闭。

 静态 HCI 连接的初始信用数和最大数据包有效负载大小由 CORE_INIT_RSP 中的 NFCC 报告(请参阅第 4.2 节)。

在静态 HCI 连接上发送的数据包的有效负载应为有效的主机控制器协议 (HCP) 数据包,如 [ETSI_102622] 中所定义。 每个数据包应包含一个 HCP 数据包。 NCI 分段和重组不得应用于任一方向的数据消息。 如果需要,可以使用 HCI 碎片机制。

Conn ID 的范围是 0 到 15(参见表 4)。 Conn ID 0 是为用于射频通信的静态射频连接保留的,该连接在NFCC 初始化后存在。 但是,除非激活 RF 接口,否则无法使用。 每个 RF 接口定义是否使用静态 RF 连接以及是否允许动态逻辑连接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/679430.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一起学SF框架系列4.7-模块context-MessageResource

Spring通过MessageSource接口提供了国际化(“i18n”)功能。搞明白MessageResource相关接口和类,基本就掌握了国际化功能。 MessageSource接口 定义了消息访问接口。 String getMessage(String code,Object[]args&…

全网唯一!Matlab原神配色包MGenshin

前段时间,在原神官网逛了一圈,发现里面角色的原画配色十分的好看,便突发奇想:要是把原神配色用在SCI论文插图上,emmmmm…… 于是,我默默打开了自己的Matlab,用TheColor工具箱的图片主题色提取功…

数据驱动的商业决策:BI在企业中的重要性

第一章:引言 在当今数字化时代,数据被广泛应用于各个行业和领域。对企业而言,数据是一项宝贵的资源,可以为其带来无限的商机和竞争优势。然而,海量的数据本身并不具备实际意义,只有通过有效的数据分析和洞…

亚马逊云科技中国峰会:Amazon DeepRacer-梦想加速度

零:前言 你是否憧憬在赛车赛道上开车,享受疾驰而过的感觉,感受无与伦比的驾驶乐趣? Amazon DeepRacer可以满足你的梦想,虚竹哥带你了解Amazon DeepRacer。 它为用户提供了一个虚拟仿真环境和一个真实赛车模型&#xf…

【JDK环境配置】| 两种JDK环境能在同一台电脑共存吗?(文末送书)

目录 🦁 前言🦁 基础环境🦁 安装JDK1.8Ⅰ. 下载Ⅱ. 安装 🦁 在项目里更改JDK版本---------------------------------------------福利在下面--------------------------------------------------🦁 福利(送…

《基于同态加密和秘密分享的纵向联邦LR协议研究》论文阅读

论文地址:https://xueshu.baidu.com/usercenter/paper/show?paperid1b7e04e0r41x0ax0976q0gy0m5242465 摘要 提出了一种新颖的两方纵向联邦逻辑回归协议,并在半诚实安全模型下证明了该协议的安全性, 包括模型训练流程和模型推理流程的安全性,且无需对非线性函数使…

C++四种基本类型转换

C四种基本类型转换 1.static_cast2.const_cast3.reinterpret_cast4 .dynamic_cast 1.static_cast 用法: static_cast<type_name> (expression) 说明:该运算符把expression转换为typen_name类型&#xff0c;static_cast在编译时使用类型信息执行转换,在转换执行必要的检测…

spring事务源码详解-spring原码(一)

前面说过了aop源码&#xff0c;这里再稍微回顾一下 我们会用注解EnableAspectJautoProxy开启aop 当我们用了proxytargetClass会强制cglib动态代理 源码里有Import 里面会注册AnnotionAwareAspectJAutoProxyCreator 后面会在beanDefinationMap获取到所有定义的Objects循环 …

2020新基建决赛-crypto-onepiece

onepiece 一、概要 1、标题&#xff1a;onepiece 2、关键字&#xff1a;e2&#xff0c;rabin&#xff0c;凯撒 3、比赛&#xff1a;2020新基建决赛 4、工具&#xff1a;python&#xff0c;米斯特工具 二、开始 1、题目分析 题目给了一个pubkey.pem和onepiece.enc&#xff…

C++右值引用 移动语义 完美转发 引用叠加

右值引用 MyString浅拷贝与深拷贝浅赋值与深赋值 左值与右值左值概念左值右值与函数的结合移动构造函数移动赋值函数移动构造和移动赋值的应用 移动语义 有点问题完美转发引用叠加 MyString 浅拷贝与深拷贝 s1先在堆区申请了空间&#xff0c;然后将p指针指向的字符串复制到该…

设计模式之责任链模式笔记

设计模式之责任链模式笔记 说明Chain of Responsibility(责任链)目录责任链模式示例类图请假条类抽象处理者类小组长类部门经理类总经理类测试类 说明 记录下学习设计模式-责任链模式的写法。JDK使用版本为1.8版本。 Chain of Responsibility(责任链) 意图:使多个对象都有机…

Vue搜索组件,显示热门、近期搜索(结合element ui)

&#x1f680; 注重版权&#xff0c;转载请注明原作者和原文链接 &#x1f96d; 作者&#xff1a;全栈小袁 &#x1f34e; 原创个人开源博客项目(目前V3.0版本)&#xff1a;https://github.com/yuanprogrammer/xiaoyuanboke &#x1f349; 开源项目觉得还行的话点点star&#x…

【P4】Windows 下搭建 DVWA 及命令注入漏洞详解

文章目录 一、Windows 下搭建 DVWA1.1、DVWA 靶场搭建1.2、六步快速搭建 DVWA1.2.1、下载并安装 PHPstudy&#xff1a;http://public.xp.cn/upgrades/PhpStudy2018.zip1.2.2、将解压后的 DVWA 原代码放置 phpstudy 安装目录的 WWW文件夹1.2.3、进入 DVWA/config 目录&#xff0…

2022前端趋势报告(下)

前端博主&#xff0c;热衷各种前端向的骚操作&#xff0c;经常想到哪就写到哪&#xff0c;如果有感兴趣的技术和前端效果可以留言&#xff5e;博主看到后会去代替大家踩坑的&#xff5e; 主页: oliver尹的主页 格言: 跌倒了爬起来就好&#xff5e; 一、前言 本文内容来自于《St…

springBoot学习——spring+springMVC 集成mybatis 拦截器

目录 引出入门案例&#xff1a;登陆和注册 & 用户信息分页 之 固定的步骤&#xff1a;&#xff08;1&#xff09;建普通项目配置pom.xml文件&#xff08;2&#xff09;写主启动类 application.yml文件【bug】pom.xml文件导了mybatis的包&#xff0c;但是application.yml文…

Drag Your GAN论文解读,基于点的交互式操作拖动到生成图像[DragGAN]

只需要鼠标的点击就可以自动修图的产品&#xff0c;火爆问世&#xff0c;可以说是超越PS&#xff0c;神一般的存在了&#xff0c;而且没有门槛&#xff0c;对于普通大众来说直接可以上手使用&#xff0c;这个是PS完全不具备的。更关键的是&#xff0c;这款产品跟PS明显区别在于…

如何系统地自学 Python?

&#x1f482; 个人网站:【海拥】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 目录 前言为什么选择Python作…

【Intel 黑客松大赛】基于YOLO的杂草-农作物检测分类系统

目录 一、赛题简介&#xff1a;计算机视觉挑战——检测并清除杂草二、基于YOLO的杂草-农作物检测分类2.1、YOLO简介2.2、基于YOLO的杂草-农作物检测分类解决方案 三、基于YOLO的杂草-农作物检测分类系统设计3.1、基于flask框架的demo应用程序后端3.2、基于Vue框架的demo应用程序…

Qt6.2教程——4.QT常用控件QPushButton

一&#xff0c;QPushButton简介 QPushButton是Qt框架中的一种基本控件&#xff0c;它是用户界面中最常见和最常用的控件之一。QPushButton提供了一个可点击的按钮&#xff0c;用户可以通过点击按钮来触发特定的应用程序操作。比如&#xff0c;你可能会在一个对话框中看到"…

Unity编辑器扩展-第七集-应用键/显示提示词

第六集链接&#xff1a;Unity编辑器扩展-第六集-创建窗口/批量填图_菌菌巧乐兹的博客-CSDN博客 一、本节目标效果展示 1.我们有时候需要多次使用编辑窗口&#xff0c;但是每次一点执行&#xff0c;就关掉了&#xff0c;就很烦&#xff0c;所以我们希望&#xff0c;点击按钮&…