Интерфейс контроллера NFC (NCI) используется для взаимодействия с контроллером NFC (NFCC). На этой странице описаны характеристики собственных команд NCI Android.
Определения НЦИ
Собственные команды NCI Android используют идентификатор собственной группы (GID) 0xF
и кодовое пространство идентификатора кода операции Android (OID) 0xC
.
Общий формат пакета
Формат пакета Android NCI соответствует спецификации NCI для пакетов управления, использующих собственный Group_ID 0xF
и Opcode_ID 0x0C
. Для каждого собственного сообщения Android первый байт полезных данных пакета должен быть установлен в код операции Android ( 0x0C
). Пакеты управления Android используют Message_Type
и PBF
для идентификации команд, ответов и уведомлений аналогично стандартным командам.
Формат пакета Android показан в следующей таблице:
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Message_Type | PBF | Group_ID = 0xF (PROPRIETARY) | |||||
зарезервировано для будущего использования (RFU) | Opcode_ID = 0x0C (ANDROID) | ||||||
Payload_Length | |||||||
Android_Opcode_ID | |||||||
Android_Payload | |||||||
Назначенные идентификаторы кодов операций Android перечислены в следующей таблице. Спецификация каждого пакета приведена в следующих разделах.
Android OID | Тип сообщения | Имя сообщения |
---|---|---|
0x00 | НЦИ_MT_CMD | NCI_ANDROID_GET_CAPS_CMD |
НЦИ_MT_RSP | NCI_ANDROID_GET_CAPS_RSP | |
0x01 | НЦИ_MT_CMD | NCI_ANDROID_POWER_SAVING_CMD |
НЦИ_MT_RSP | NCI_ANDROID_POWER_SAVING_RSP | |
0x02 | НЦИ_MT_CMD | NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD |
НЦИ_MT_RSP | NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP | |
0x03 | НЦИ_MT_NTF | NCI_ANDROID_POLLING_FRAME_NTF |
0x04 | НЦИ_MT_CMD | NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD |
НЦИ_MT_RSP | NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP |
Получить команду возможностей
Хост использует NCI_ANDROID_GET_CAPS_CMD
для запроса списка собственных функций Android, поддерживаемых NFCC. Команда NCI_ANDROID_GET_CAPS_CMD
не принимает никаких параметров.
NFCC должен ответить ответом NCI_ANDROID_GET_CAPS_RSP
со статусом STATUS_OK
и списком поддерживаемых возможностей и функций.
Если NFCC не поддерживает NCI_ANDROID_GET_CAPS_CMD
, хост должен предположить, что каждая из возможностей принимает указанное значение по умолчанию. Если указанная возможность не возвращается NFCC в ответе, хост должен предположить, что эта возможность имеет указанное значение по умолчанию.
NCI_ANDROID_GET_CAPS_CMD
Поля полезной нагрузки | Размер | Значение/описание | |||||
---|---|---|---|---|---|---|---|
Н/Д | 0 октетов |
NCI_ANDROID_GET_CAPS_RSP
Поля полезной нагрузки | Размер | Значение/описание | |||||
---|---|---|---|---|---|---|---|
Статус | 1 октет | См. коды состояния в таблице 140 спецификации NCI . | |||||
Android_Version | 2 октета | Определяет версию требований Android, реализованную NFCC. | |||||
0x0000 | Андроид 15 | ||||||
Количество возможностей | 1 октет | Количество (n) поддерживаемых возможностей | |||||
Возможности[0..n] | (m + 2) * n октетов | Поддерживаемые возможности | |||||
Тип | 1 октет | Идентификатор возможности | |||||
Лен | 1 октет | Длина (м) значения | |||||
Ценить | м октетов | Ценность возможности |
Собственные возможности Android
Имя возможности | ИДЕНТИФИКАТОР | Размер | Значение/описание | |||||
---|---|---|---|---|---|---|---|---|
Режим наблюдения | 0x00 | 1 октет | Поддержка режима наблюдения. 0x00 (по умолчанию) — не поддерживает эту функцию. 0x01 — поддерживает функцию деактивации RF с хоста (требуется для Android 15 или выше). Все остальные значения — RFU. | |||||
Уведомление о кадре опроса | 0x01 | 1 октет | Поддержка уведомлений о кадрах опроса. 0x01, если поддерживается, 0x00 (по умолчанию), если не поддерживается. Все остальные значения — RFU. | |||||
Режим энергосбережения | 0x02 | 1 октет | Поддержка режима энергосбережения. 0x01, если поддерживается, 0x00 (по умолчанию), если не поддерживается. Все остальные значения — RFU. | |||||
Фильтр цикла опроса Auotransact | 0x03 | 1 октет | Поддержка фильтров цикла опроса в микропрограмме для обхода режима наблюдения для определенных шаблонов, когда режим наблюдения включен глобально. 0x00 (по умолчанию) — не поддерживает эту функцию. 0x01 — поддерживает фильтры цикла опроса. Все остальные значения — RFU. | |||||
0x04..0xFF | 0 октетов | Зарезервировано для будущего использования |
Команда энергосбережения
Чтобы перевести NFCC в режим энергосбережения, хост может использовать команду NCI_ANDROID_POWER_SAVING_CMD
. NFCC должен ответить NCI_ANDROID_POWER_SAVING_RSP
с кодом состояния, указывающим успех или неудачу.
В режиме энергосбережения хост не должен отправлять какие-либо команды на NFCC, а NFCC не должен отправлять хосту какие-либо уведомления или ответы. NFCC или встроенный элемент безопасности (eSE) могут автоматически принимать входящие платежные запросы в соответствии с конфигурацией маршрутизации, установленной перед включением режима энергосбережения.
Чтобы вернуться в режим полной мощности, хост может сбросить или повторно инициализировать NFCC.
NCI_ANDROID_POWER_SAVING_CMD
Поля полезной нагрузки | Размер | Значение/описание | |
---|---|---|---|
Режим энергосбережения | 1 октет | 0x00 | Отключить режим энергосбережения |
0x01 | Включить режим энергосбережения |
NCI_ANDROID_POWER_SAVING_RSP
Поля полезной нагрузки | Размер | Значение/описание | |||||
---|---|---|---|---|---|---|---|
Статус | 1 октет | См. коды состояния в таблице 140 спецификации NCI . |
Установить команду режима наблюдения
Чтобы активировать или деактивировать режим наблюдения, хост может использовать команду NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD
. NFCC должен ответить NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP
с кодом состояния, указывающим успех или неудачу.
Когда режим наблюдения отключен, NFCC должен реализовать стандартную деятельность в режиме прослушивания согласно Технической спецификации деятельности .
Когда режим наблюдения активен, NFCC не должен отвечать ни на какие запросы опроса во время цикла опроса в режиме прослушивания, пока это не будет явно разрешено хостом. NFCC должен отправить уведомление RF_FIELD_INFO_NTF
(как определено в разделе 5.3 спецификации NCI ), когда он обнаруживает активацию поля. Если обнаружение режима опроса активно, NFCC должен реализовать активность режима опроса в соответствии с Технической спецификацией деятельности . NFCC может кэшировать информацию опроса, чтобы немедленно приступить к активации устройства, как только режим наблюдения будет деактивирован.
NFCC должен отключить режим наблюдения, если хост отключается по какой-либо причине (например, из-за разряда батареи или отключения по инициативе пользователя), чтобы транзакции SE могли продолжиться.
NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD
Поля полезной нагрузки | Размер | Значение/описание | |
---|---|---|---|
режим наблюдения | 1 октет | 0x00 | Отключить режим наблюдения (по умолчанию) |
0x01 | Включить режим наблюдения |
NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP
Поля полезной нагрузки | Размер | Значение/описание | |||||
---|---|---|---|---|---|---|---|
Статус | 1 октет | См. коды состояния в таблице 140 спецификации NCI . |
Уведомление о цикле опроса
NFCC должен отправить уведомление NCI_ANDROID_POLLING_FRAME_NTF
хосту после каждого кадра цикла опроса. Когда генерируются оба уведомления RF_FIELD_INFO_NTF
и NCI_ANDROID_POLLING_FRAME_NTF
, NFCC должен отправить NCI_ANDROID_POLLING_FRAME_NTF
после RF_FIELD_INFO_NTF
.
Уведомление NCI_ANDROID_POLLING_FRAME_NTF
не зависит от того, активен режим наблюдения или нет. Когда режим наблюдения активен, NFCC всегда должен отправлять уведомление NCI_ANDROID_POLLING_FRAME_NTF
прежде чем продолжить транзакцию.
NCI_ANDROID_POLLING_FRAME_NTF
Поля полезной нагрузки | Размер | Значение/описание | |||||
---|---|---|---|---|---|---|---|
Данные опроса[0..n] | (m +3) * n октетов | Список запросов на опрос, полученных с момента последнего уведомления. В каждом результате указывается тип (технология) полученных запросов и идентифицируемые данные запроса в зависимости от технологии. | |||||
Тип | 1 октет | См. типы кадров . | |||||
Флаги | 1 октет | См . байт флага . | |||||
Длина | 1 октет | Длина (м) отчета с данными опроса, включая метку времени и поля усиления. | |||||
Временная метка | 4 октета | Временная метка, измеряемая в миллисекундах приема запросов опроса, с прямым порядком байтов. | |||||
Прирост | 1 октет | Сила запроса на опрос. 0xFF указывает, что значение недоступно. | |||||
Данные | м - 5 октетов | Возвращает идентифицируемые данные, присутствующие в запросе опроса. |
Типы рамок
Рамка опроса | Тип | Размер | Значение/Описание | |
---|---|---|---|---|
Удаленное поле | 0x00 | 1 октет | 0x00 | Поле выключено |
0x01 | Поле включено | |||
0x02..0xFF | РФС | |||
NFC-А | 0x01 | n октетов | Значение должно включать команду ISO 14443-3 (например, REQ или WUP). | |
NFC-Б | 0x02 | n октетов | Значение должно включать байт AIF и команду ISO 14443-3 (например, REQ или WUP). | |
NFC-Ф | 0x03 | n октетов | Значение должно включать команду ISO 14443-3 (например, REQ или WUP). | |
NFC-V | 0x04 | n октетов | Значение должно включать команду ISO 14443-3 (например, REQ или WUP). | |
Неизвестный | 0x07 | n октетов | Необработанные данные кадра |
Определение байта флага
Флаги | ||||||||
---|---|---|---|---|---|---|---|---|
б0 | б1 | б2 | б3 | б4 | б5 | б6 | b7 | |
0 | Короткая рамка | РФС | РФС | РФС | РФС | РФС | РФС | РФС |
1 | Длинная рама |
Команда запроса статуса режима наблюдения
Чтобы получить текущий статус режима пассивного заказа, хост может использовать команду NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD
. NFCC должен ответить NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP
с кодом состояния, указывающим на успех или сбой.
NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD
Поля полезной нагрузки | Размер | Значение/описание | |||||
---|---|---|---|---|---|---|---|
Н/Д | 0 октетов |
NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP
Поля полезной нагрузки | Размер | Значение/описание | |
---|---|---|---|
Статус | 1 октет | См. коды состояния в таблице 140 спецификации NCI . | |
режим наблюдения | 1 октет | 0x00 | Режим наблюдения отключен |
0x01 | Режим наблюдения включен |