Собственные команды Android NCI

Интерфейс контроллера 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 Режим наблюдения включен