NFC CX 序列处理

来自不同供应商的 NFCC 固件实现的大多数非标准 NCI 功能和扩展都与芯片集配置、固件下载和硬件优化相关。 NFC 客户端驱动程序可以通过注册 NFC CX 公开的特定驱动程序序列来支持这些非标准扩展。 客户端驱动程序通过 NfcCxRegisterSequenceHandler 函数注册特定序列处理程序。 它通常在初始化期间完成,应在 NfcCxDeviceInitialize 之后调用。 这些处理程序在设备关闭期间通过调用 NfcCxUnRegisterSequenceHandler 取消注册。 调用客户端驱动程序的序列处理程序回调后,NFC CX 驱动程序将不会发出任何 NCI 命令,直到 NFC 客户端驱动程序完成其处理。 这些序列处理程序回调设计为异步,从而允许客户端在通知 NFC CX 其完成之前向控制器发出任意数量的 I/O 请求。 NFC CX 使用监视器计时器机制来确定挂起状态。 如果监视器计时器在客户端完成序列处理程序之前过期,则会触发 bug 检查,UMDF 框架将终止 UMDF 主机进程。

以下是 NFC 客户端驱动程序在将任何其他逻辑作为序列处理程序的一部分实现时的要求:

  • 处理这些序列时 NFC 客户端发送的任何 NCI 命令都应确保不违反 NFC CX 指定的当前状态的完整性。 因此,NFC 客户端必须满足此要求,以确保 NFC 设备正常运行。 例如,在处理初始化完成序列时,客户端驱动程序不应发出 NCI CORE_RESET_CMD来重置芯片集。
  • NFC 客户端驱动程序需要确保它发送到控制器的 NCI 命令生成的 NCI 响应和通知不会发送到 NFC CX 的 NfcCxNciReadNotification 函数。 这是必需的,因为否则 NFC CX NCI 状态机会与它与 NFCC 交换的命令不同步。