通过


NFC CX 序列处理

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

以下是在序列处理程序中添加额外逻辑时 NFC 客户端驱动程序的要求:

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