Обработка последовательности NFC CX
Большинство нестандартных функций и расширений NCI, реализованных встроенным ПО NFCC от разных поставщиков, относятся к конфигурации набора микросхем, загрузке встроенного ПО и настройке оборудования. Эти нестандартные расширения могут поддерживаться драйвером клиента NFC путем регистрации для определенных последовательностей драйверов, предоставляемых NFC CX. Драйвер клиента регистрируется для определенных обработчиков последовательности с помощью функции NfcCxRegisterSequenceHandler . Обычно это выполняется во время инициализации и должно вызываться после NfcCxDeviceInitialize. Эти обработчики отменяются путем вызова NfcCxUnRegisterSequenceHandler во время завершения работы устройства. После вызова обратного вызова обработчика последовательности драйвера клиента драйвер NFC CX не будет выдавать команды NCI, пока драйвер клиента NFC не завершит обработку. Эти обратные вызовы обработчика последовательности спроектированы как асинхронные, что позволяет клиенту выдавать контроллеру любое количество запросов ввода-вывода, прежде чем уведомлять NFC CX о его завершении. NFC CX использует механизм сторожевого таймера для определения зависающего состояния. Если срок действия сторожевого таймера истекает до завершения клиентом обработчика последовательности, активируется проверка ошибок, а процесс узла UMDF завершается платформой UMDF.
Ниже приведены требования к драйверу клиента NFC при реализации любой дополнительной логики в составе обработчика последовательности.
- Все команды NCI, отправляемые клиентом NFC при обработке этих последовательностей, должны гарантировать, что целостность текущего состояния, указанного в NFC CX, не нарушается. Таким образом, клиент NFC должен выполнить это требование, чтобы обеспечить надлежащее функционирование устройства NFC. Например, при обработке полной последовательности инициализации драйвер клиента не должен выдавать NCI CORE_RESET_CMD для сброса набора микросхем.
- Драйвер клиента NFC должен убедиться, что ответы NCI и уведомления, созданные командами NCI, которые он отправляет на контроллер, не отправляются в функцию NFC CX NfcCxNciReadNotification . Это необходимо, так как в противном случае конечный автомат NCI NFC CX выйдет из синхронизации с командами, которыми он обменивается с NFCC.