さまざまなベンダーの NFCC ファームウェアによって実装されるほとんどの標準以外の NCI 機能と拡張機能は、チップセットの構成、ファームウェアのダウンロード、ハードウェアチューニングに関連します。 これらの非標準拡張機能は、NFC CX によって公開される特定のドライバー シーケンスに登録することで、NFC クライアント ドライバーでサポートできます。 クライアント ドライバーは、 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 と交換するコマンドと同期しなくなるため、これが必要です。