来自不同供应商的 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 交换的命令不同步。