NCI Architecture

news2025/1/14 9:38:08

2.1 组成部分

NCI 可分为以下逻辑组件:

 NCI 核心

NCI 核心定义了设备主机 (DH) 和 NFC 控制器 (NFCC) 之间通信的基本功能。 这使得 NFCC 和 DH 之间能够进行控制消息(命令、响应和通知)和数据消息交换。

 传输映射

传输映射定义 NCI 消息传递如何映射到底层 NCI 传输,这是 DH 和 NFCC 之间的物理连接(以及可选的关联协议)。 每个传输映射都与特定的 NCI 传输相关联。

 NCI 模块

NCI 模块构建在 NCI 核心提供的功能之上。 每个模块都为 DH 提供明确定义的功能。 NCI 模块提供配置 NFCC 以及发现远程 NFC 端点或本地 NFCEE 并与之通信的功能。 一些 NCI 模块是 NCI 实现的强制部分,其他模块是可选的。 NCI 模块之间也可能存在依赖关系,即一个模块只有在同时实现了其他模块时才有用。 例如,所有处理与远程 NFC 端点(RF 接口模块)通信的模块都依赖于 RF Discovery 的存在。

 

2.2.1 控制消息

DH 使用 NCI 控制消息来管理和配置 NFCC。 控制消息由命令、响应和通知组成。 命令只允许在 DH 到 NFCC 的方向上发送,响应和通知只允许在另一个方向上发送。 控制消息在NCI控制数据包中传输,NCI支持将控制消息分段为多个数据包。

NCI 核心定义了一组基本的控制消息(例如,用于设置和检索 NFCC 配置参数)。 NCI 模块可以定义附加控制消息。

 

2.2.2 数据消息

数据消息用于将数据传输到远程 NFC 端点(在 NCI 中称为“RF 通信”)或 NFCEE(在 NCI 中称为“NFCEE 通信”)。 NCI 定义了数据包,可以将数据消息分割成多个数据包。

数据消息只能在逻辑连接的上下文中交换。 在发送任何数据消息之前必须建立逻辑连接。 一种逻辑连接(静态 RF 连接)始终在 NCI 初始化期间建立。 静态射频连接专用于射频通信。 可以为 RF 和/或 NFCEE 通信创建附加逻辑连接。

逻辑连接为从 DH 到 NFCC 方向的数据消息提供流量控制。

2.2.3 接口

NCI 模块可能包含单个接口。 每个接口定义 DH 如何通过 NCI 与远程 NFC 端点或 NFCEE 进行通信。 每个接口都被定义为支持特定协议,并且只能用于这些协议(大多数接口仅支持一种协议)。 NCI 定义了两种类型的接口:RF 接口和 NFCEE 接口。

用于与远程 NFC 端点通信的协议称为 RF 协议。 用于与 NFCEE 通信的协议称为 NFCEE 协议。

NFCEE 接口与 NFCEE 协议具有一对一的关系。 然而,一种 RF 协议可能有多个 RF 接口。 多个 RF 接口允许 NCI 支持 NFCC 和 DH 之间协议实现的不同划分。 NFCC 上的 NCI 实现包括与 NFCC 上实现的功能相匹配的 RF 接口。

接口在使用前需要激活,在不再使用时需要停用。

接口可以定义自己的配置参数和控制消息。 但是,最重要的是,它定义了数据消息有效负载到相应 RF 或 NFCEE 协议有效负载的映射,以及在 RF 通信的情况下,是否使用静态 RF 连接和/或动态逻辑连接来交换这些连接 DH 和 NFCC 之间的数据消息

2.2.4 射频接口扩展

RF 接口扩展向一个或多个 RF 接口添加一组特定的、明确定义的功能。 每个 RF 接口扩展定义了它可以扩展哪些 RF 接口。

RF 接口扩展的可用性取决于这些 RF 接口之一被激活的时间。 可用性还可以取决于其他条件,例如 当前射频通信中使用的协议。 如果 RF 接口处于活动状态,则 DH 可以启动和停止可用的 RF 接口扩展。 RF 接口扩展永远不会自动启动,而是在 RF 接口停用时停止。 每个 RF 接口扩展都定义了用于启动和停止其功能的控制消息。

启动后,RF 接口扩展可以推翻活动 RF 接口的定义以提供其功能。 RF接口扩展可以定义接口自己的配置参数和控制消息。 它们还可以提供与 RF 接口定义的格式不同的数据消息格式。 然而,RF 接口扩展不能否决活动接口的停用行为。

对于给定的 RF 接口,可以有多个 RF 接口扩展。 可以同时启动多个 RF 接口扩展,只要它们不互相排斥。 每个 RF 接口扩展都定义了它可以与哪个其他 RF 接口扩展一起使用。

然而,扩展过程不能复合:RF 接口扩展并不旨在扩展其他 RF 接口扩展的功能。

2.2.5 射频通讯

RF 通信是通过配置和运行 RF Discovery 进程来启动的。 RF Discovery 是一个 NCI 模块,用于发现和枚举远程 NFC 端点。

对于每个远程 NFC 端点,RF 发现过程向 DH 提供在 RF 发现过程中收集的远程 NFC 端点信息。 此信息包括用于与远程 NFC 端点通信的 RF 协议。 在 RF 发现配置期间,DH 设置一个映射,将每个 RF 协议的 RF 接口关联起来。 如果在发现周期内仅检测到单个远程 NFC 端点,则该端点的 RF 接口将自动激活。 如果在轮询模式下检测到多个远程 NFC 端点,DH 可以选择它想要与之通信的端点。 此选择还会触发映射接口的激活。

激活 RF 接口后,DH 可以使用激活的 RF 接口与远程 NFC 端点通信。 已激活的 RF 接口可由 DH 或 NFCC(例如,代表远程 NFC 端点)停用。 然而,每个 RF 接口都可以定义允许使用哪些方法。 停用选项会有所不同,具体取决于 DH 上执行的协议栈部分。 例如,如果在 DH 上处理断开通信的协议命令,则 DH 将停用 RF 接口。 如果在 NFCC 上处理此类命令,NFCC 将停用该接口。

本规范以状态机的形式描述了射频通信可能的控制消息序列。

2.2.6 NFCEE通信

DH 可以通过使用 NFCEE Discovery 模块了解连接到 NFCC 的 NFCEE。 在 NFCEE 发现期间,NFCC 为每个 NFCEE 分配一个标识符。 当 DH 想要与 NFCEE 通信时,它会打开到 NFCEE 的逻辑连接,其中包括相应的标识符并指定要使用的 NFCEE 协议。

打开与 NFCEE 的逻辑连接会自动激活与指定协议关联的 NFCEE 接口。 由于 NFCEE 协议和接口之间始终存在一对一的关系,因此不需要映射步骤(与 RF 接口激活不同)。

接口激活后,DH可以使用激活的接口与NFCEE进行通信。

关闭与 NFCEE 接口的连接会停用 NFCEE 接口。

NCI 还包括允许 DH 启用或禁用 NFCEE 和 NFCC 之间通信的功能。

2.2.7 标识符

NCI 对远程 NFC 端点和 NFCEE 使用不同的标识符。 这些标识符由 NFCC 动态分配。 DH 在 RF Discovery 和 NFCEE Discovery 的背景下学习它们。 远程 NFC 端点的标识符称为 RF 发现 ID。 它们的生命周期通常很短,因为它们仅在 DH 希望能够与远程 NFC 端点通信时有效。 相反,NFCEE 的标识符具有更长的生命周期,因为 NFCEE 通常不会频繁地添加到设备或从设备中删除。 NFCEE 的标识符称为“NFCEE ID”。 有一个保留的静态 NFCEE ID,值 0,代表 DH-NFCEE。

逻辑连接采用第三种类型的标识符(目标类型)作为第一个参数来标识数据的目标。 根据目标类型,可以有第二个参数用于标识数据目标。 例如,如果目标类型是“远程 NFC 端点”,则第二个参数将是 RF 发现 ID。

2.2.8 NFCC 作为共享资源

NFCC 不仅可以由 DH 使用,还可以由设备中的 NFCEE 使用(在这种情况下,NFCC 是共享资源)。 NFCEE 与 NFCC 的连接方式有所不同,此类链路上使用的协议决定了 NFCEE 如何使用 NFCC。 例如,某些协议允许 NFCEE 向 NFCC 提供其自己的 RF 参数配置(类似于用于 RF 发现的 NCI 配置参数)。 在其他情况下,NFCEE 可能不会提供此类信息。

NFCC 在如何处理来自 DH 和 NFCEE 的多种配置方面可以有不同的实现。 例如,他们可能会在这些配置之间进行切换,以便一次只有一个配置处于活动状态,或者他们可能会尝试合并不同的配置。 在初始化期间,NCI 向 DH 提供有关其提供的配置是否是唯一的信息,或者 NFCC 是否也支持 NFCEE 的配置的信息。

NCI 包括一个名为“侦听模式路由”的模块,DH 可以使用该模块定义当设备在侦听模式下激活时将接收到的数据路由到何处。 侦听模式路由允许 DH 在 NFCC 上维护路由表。 路由可以基于传入流量的技术或协议、基于系统代码(如果使用 T3T 协议)或基于应用程序标识符(如果在 ISO-DEP 之上使用 7816-4 APDU 命令)来完成。

此外,NCI 使 DH 能够获知 NFCEE 和远程 NFC 端点之间是否发生通信。

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

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

相关文章

Excel百万级别数据的导入和导出【详细代码】

代码层级结构 DurationAspect package com.zhouyu.aspect;import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.A…

MFC 截图功能实现(2)

上篇文章里面所用的截图是点击按钮就截取当前打开的界面,链接: MFC 截图功能实现_春蕾夏荷_728297725的博客-CSDN博客 这里所用的截图是可以选中区域,另存为目录等的操作: 效果: 选中区域: 菜单&#xf…

javaee 任务调度,定时任务 多个任务同时执行

错误的写法 如果按照下图的写法,两个任务不会同时执行,因为是一个线程,两个任务是串行的关系。 可以看到第二个任务是等第一个任务执行完以后,才执行的。 正确的写法 使用线程池,为每一个任务创建一个线程 可以看…

Markdown中使用 LaTeX 编辑数学公式

Markdown中使用 LaTeX 编辑数学公式 1 介绍TeX(计算机排版系统)LaTeX(TeX宏集)KaTeX 和 MathJax 2 注意点单双美元符号包裹问题KaTeX 有些不支持 3 语法保留字符希腊字母希伯来字母二元运算符二元关系符几何符号逻辑符号集合符号箭…

Linux下一切皆文件的理解

目录 一. 回顾上文 Linux底层进程和被打开文件的映射关系图: Linux部分源代码示意图如下: ​编辑 二.Linux下一切皆文件的核心理解 一. 回顾上文 在前两篇文章中,我论述了Linux系统中关于文件基础IO的一些内容: 1.有关于文件…

RT-Thread-05-空闲线程和两个常用的钩子函数

空闲线程和两个钩子函数 空闲线程是一个比较特殊的系统线程,它具备最低优先级,当系统中无其他就绪线程可运行时,调度器将调度到空闲线程;空闲线程还负责一些系统资源回收以及将一些处于关闭状态的线程从线程调度列表中移除&#x…

Nautilus Chain:模块化Layer3架构为RWA赛道构建基础设施

DeFi Summer后,加密行业经历了新一轮的爆发、增长后,整体的发展逐渐陷入滞缓。传统金融是一个经过了上百年发展的成熟市场,将800万亿美元体量的传统金融不断引入到链上有望推动加密行业迎来新一轮的质变。将传统资产以加密代币化的形式引入到…

【从零开始学习JAVA | 第十七篇】抽象类与抽象方法

目录 前言: 抽象类与抽象方法: 抽象类: 抽象方法: 特点: 抽象类 抽象方法 注意事项 抽象类 与 抽象方法的意义 抽象类 抽象方法 前言: 在之前,如果我们要构建两个相同类型的类的时候&…

【C++】泛型编程——模板进阶

文章目录 前言1. 模板参数的分类2. 非类型模板参数2.1 非类型模板参数的概念2.2 铺垫2.2 非类型模板参数的使用2.4 注意2.5 array的了解 3. 模板的特化3.1 概念3.2 函数模板特化3.3 类模板特化3.3.1 全特化3.3.2 偏特化部分特化参数更进一步的限制 4. 模板分离编译4.1 什么是分…

基于TF-IDF算法个人文件管理系统——机器学习+人工智能+神经网络(附Python工程全部源码)

目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. 数据预处理2. 词频计算与数据处理3. 数据计算与对比验证 系统测试工程源代码下载其它资料下载 前言 本项目旨在通过应用TF-IDF算法,将新下载的课件进行自动分类整理。我们的方法是通过比较新文件中的…

Matlab统计分析-相关系数

统计分析-相关系数 相关系数 (pearson与spearman) 皮尔逊 person相关系数和斯皮尔曼spearman等级相关系数,它们可用来衡量两个变量之间的**(线性)**相关性的大小,根据数据满足的不同条件,我们要选择不同的相关系数进行计算和分析。 基础概…

C生万物 | 常见的六种动态内存错误

学习过C语言中的动态内存函数,例如【malloc】、【calloc】、【realloc】、【free】,那它们在使用的过程中会碰到哪些问题呢,本本文我们一起来探讨下~ 1、对NULL指针的解引用操作 代码: void test() {int *p (int *)malloc(INT_…

Sui链上事务处理概述

Sui通过其混合式交易处理方法,实现比其他区块链更快速和高效的性能。这种方法使得Sui的交易测试吞吐率达到每秒297,000次。从实际应用的角度来看,使用Sui的用户在apps和游戏中几乎能够获得实时响应。 在区块链世界中,交易是apps运作的基础&a…

AutoHotKey脚本的循环:While和Loop

While AHK提供三种循环方法,分别是Loop, While和For,其中While和For在其他语言中都很常见,下面通过while循环,实现一个鼠标框选矩形尺寸的脚本 ; 来自官网的案例 CoordMode "Mouse", "Screen"~LButton:: {M…

【文献分享】基于感知质量的滚动优化无人机导航

论文题目:Perception-aware Receding Horizon Navigation for MAVs 作者:Zhang, Zichao ; Scaramuzza, Davide 作者机构:苏黎世大学 论文链接:https://files.ifi.uzh.ch/rpg/website/rpg.ifi.uzh.ch/html/docs/ICRA18_Zhang.pd…

【雕爷学编程】Arduino动手做(122)---BH1750光照传感器

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

使用近10年,说说向大家推荐Linux系统的理由

使用linux已经快十年了,一直想推荐身边的使用linux,但是一直没有分享。但是现在我想分享推荐了。下面我们一起聊聊为什么我向大家推荐linux。 为什么现在我想推荐了呢?是因为我自认为相对于同龄人来说,我使用桌面版的时间算是挺长的了&#…

彻底搞懂什么是阿里云服务器vCPU?

阿里云ECS服务器vCPU和CPU是什么意思?CPU和vCPU有什么区别?一台云服务器ECS实例的CPU选项由CPU物理核心数和每核线程数决定,CPU是中央处理器,一个CPU可以包含若干个物理核,通过超线程HT(Hyper-Threading&am…

走向计算机视觉的通用人工智能:从GPT和大型语言模型中汲取的经验教训 (下)...

点击蓝字 关注我们 关注并星标 从此不迷路 计算机视觉研究院 公众号ID|计算机视觉研究院 学习群|扫码在主页获取加入方式 论文地址:https://arxiv.org/pdf/2306.08641.pdf 计算机视觉研究院专栏 Column of Computer Vision Institute 人工智能…

Matlab预测模型-灰色预测模型

预测模型-灰色预测模型 灰色预测是对既含有已知信息又含有不确定信息的系统进行预测,就是对在一定范围内变化的、与时间有关的灰色过程进行预测。灰色预测对原始数据进行生成处理来寻找系统变动的规律,并生成有较强规律性的数据序列,然后建立…