NFC-NCI协议和源码分析

NFC-NCI协议和源码分析

概览

NCI在NFC源码中所处的位置

net/nfc/nci

├── core.c
├── data.c
├── lib.c
├── ntf.c
├── rsp.c
└── spi.c

include/net/nfc

├── nci_core.h
└── nci.h

NCI架构

NFC-NCI协议和源码分析_第1张图片
NCI-concepts.png
NFC-NCI协议和源码分析_第2张图片
NCI-scope.png

名词解释

nci(NFC Controller Interface):在DH和NFCC之间的接口

nci core:NCI的基本功能

NCI中的数据流

NCI中的数据流是以packet的形式进行传递,包括Control messages 和 Data Messages。

NCI Control Messages

Control Messages是Control Packet的有效载荷

Control Messages包括commands,respones,notification

DH发送一条Commands来控制NFCC执行特定行为。NFCC每收到一条Commands,都会回发一条Response来通知DH它已接受到Command,这条Respones
可以包含由于该条Commands所导致NCI所发生的变化。

Notification只能从NFCC发送到DH,里面的信息可以和Command有关,也可以无关

NFC-NCI协议和源码分析_第3张图片
Control-Message-Exchange.png

控制规则

控制规则中没有packet层面的规则

  • 当DH发送了一条Command, DH在接受到该Command所对应的Respones前不能发送其他的Command。(通过计时器实现)
  • DH在发送完一条Command后,它能够接受一条Respones
  • 在发送完一条Respones后,NFCC准备好接受下一条来自DH的Command
  • DH在任何时候都准备好接守一条来自NFCC的Command

NCI Data Messages

在DH和NFCC之间通过Data Message来传送数据,一个Data Packet的有效载荷包含一条Data Message的全体或者部分。
当Logic Connection建立成功后,在任何时候DH或者NFCC都能发送Data Message。

DH能够接受来自NFCC的任意长度的数据,对于一个Logical Connection而言:
NFCC所能接受的最大数据长度=一个数据包最大有效载荷 * NFCC对于该连接的unused credits

控制规则

credit只对于从DH发送到NFCC的数据,因为NFCC可能出现缓存区溢出,而DH则假设不会。每一个packet都会消耗掉一个credit

你可能感兴趣的:(NFC-NCI协议和源码分析)