Интерфейс контроллера NFC (NCI) используется для взаимодействия с контроллером NFC (NFCC). На этой странице описаны спецификации фирменных команд NCI Android.
Определения NCI
Фирменные команды 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 перечислены в следующей таблице. Спецификация каждого пакета представлена в следующих разделах.
Команда «Получить возможности»
Хост использует 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 октет | Длина (м) значения | |||||
Ценить | m октетов | Ценность возможности |
Собственные возможности Android
Имя возможности | ИДЕНТИФИКАТОР | Размер | Значение/описание | |||||
---|---|---|---|---|---|---|---|---|
Режим наблюдения | 0x00 | 1 октет | Поддержка режима наблюдения. 0x00 (по умолчанию) — не поддерживает эту функцию. 0x01 — Поддерживает функцию деактивации RF с хоста (требуется для Android 15). 0x02 — поддерживает функцию без деактивации RF со стороны хоста (требуется для Android 16 и выше). Все остальные значения — RFU. | |||||
Уведомление о кадре опроса | 0x01 | 1 октет | Поддержка уведомлений о кадрах опроса. 0x01 — если поддерживается, 0x00 (по умолчанию) — если не поддерживается. Все остальные значения — RFU. | |||||
Режим энергосбережения | 0x02 | 1 октет | Поддержка режима энергосбережения. 0x01 — если поддерживается, 0x00 (по умолчанию) — если не поддерживается. Все остальные значения — RFU. | |||||
Фильтр цикла опроса Autotransact | 0x03 | 1 октет | Поддержка фильтров цикла опроса в прошивке для обхода режима наблюдения для определенных шаблонов, когда режим наблюдения включен глобально. 0x00 (по умолчанию) — не поддерживает эту функцию 0x01 — Поддержка фильтров опроса цикла Все остальные значения являются RFU | |||||
Количество поддерживаемых записей выходного кадра | 0x04 | 1 октет | Поддерживаемое количество записей выходных кадров. Требуется минимум пять записей выходных кадров. | |||||
Аннотация режима чтения | 0x05 | 1 октет | Поддержка аннотаций в режиме чтения. 0x00 (по умолчанию) — не поддерживает эту функцию. 0x01 — Поддерживает эту функцию. Все остальные значения — RFU. | |||||
0x06..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 октета | Метка времени, измеряемая в миллисекундах с момента получения запросов на опрос, big endian. | |||||
Прирост | 1 октет | Сила запроса на опрос. 0xFF указывает, что значение недоступно. | |||||
Данные | м - 5 октетов | Возвращает идентифицируемые данные, присутствующие в запросе на опрос. |
Типы рам
Опросная рамка | Тип | Размер | Значение/Описание | |
---|---|---|---|---|
Удаленное поле | 0x00 | 1 октет | 0x00 | Поле выключено |
0x01 | Поле на | |||
0x02..0xFF | РФС | |||
NFC-A | 0x01 | n октетов | Значение должно включать команду ISO 14443-3 (например, REQ или WUP) | |
NFC-B | 0x02 | n октетов | Значение должно включать байт AIF и команду ISO 14443-3 (например, REQ или WUP). | |
NFC-F | 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 | б7 | |
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 октет | Битовая маска, указывающая, для каких технологий включен режим наблюдения:
|
Установить команду «Технологии пассивного наблюдателя»
Для настройки технологий пассивного наблюдения хост может использовать команду NCI_ANDROID_SET_PASSIVE_OBSERVER_TECH_CMD
. Эта команда включает или выключает режим наблюдения для указанных технологий, не требуя RF_DEACTIVATE_CMD
. NFCC должен ответить командой NCI_ANDROID_SET_PASSIVE_OBSERVER_TECH_RSP
с кодом состояния, указывающим на успешность или неудачу.
NCI_ANDROID_SET_PASSIVE_OBSERVER_TECH_CMD
Поля полезной нагрузки | Размер | Значение/описание | |||||
---|---|---|---|---|---|---|---|
Технология Маска | 1 октет | Битовая маска, указывающая, для каких технологий следует включить режим наблюдения:
|
NCI_ANDROID_SET_PASSIVE_OBSERVER_TECH_RSP
Поля полезной нагрузки | Размер | Значение/описание | |
---|---|---|---|
Статус | 1 октет | См. коды статуса в таблице 140 Спецификации NCI . |
Установить команду выхода из кадра пассивного наблюдателя
Для настройки таблицы кадров выхода из режима наблюдения хост может использовать команду NCI_ANDROID_SET_PASSIVE_OBSERVER_EXIT_FRAME_CMD
. Эта команда определяет RF-кадры, которые запускают выход из режима наблюдения. Эта команда может быть отправлена только в RFST_IDLE
. NFCC должен ответить командой NCI_ANDROID_SET_PASSIVE_OBSERVER_EXIT_FRAME_RSP
с кодом состояния, указывающим на успешность или неудачу.
NCI_ANDROID_SET_PASSIVE_OBSERVER_EXIT_FRAME_CMD
Поля полезной нагрузки | Размер | Значение/описание | |||||
---|---|---|---|---|---|---|---|
Более | 1 октет | 0x00 - Последнее сообщение 0x01 — Дальше будут сообщения | |||||
Тайм-аут | 2 октета | Время ожидания в мс для восстановления режима наблюдения (прямой порядок байтов). | |||||
Количество записей RF-фрейма | 1 октет | Количество полей записи RF-кадра, которые необходимо отследить (n). 0x00 сбрасывает таблицу. | |||||
Запись RF-кадра [0..n] | (2+x)*n октетов | ||||||
Тип квалификатора | 1 октет | Определяет тип кадра и параметры соответствия. | |||||
Длина значения | 1 октет | Длина «x» поля «Значение». | |||||
Ценить | x октетов | Состояние питания (1), Справочные данные (n), Маска (n). 1 <= n <= 16. |
NCI_ANDROID_SET_PASSIVE_OBSERVER_EXIT_FRAME_RSP
Поля полезной нагрузки | Размер | Значение/описание | |
---|---|---|---|
Статус | 1 октет | См. коды состояния в таблице 140 спецификации NCI . |
Получить команду выхода из кадра пассивного наблюдателя
Чтобы получить текущую конфигурацию таблицы кадров выхода из режима наблюдения, хост может использовать команду NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_CMD
. NFCC должен ответить командой NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_RSP
, а затем NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_NTF
.
NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_CMD
Поля полезной нагрузки | Размер | Значение/описание | |||||
---|---|---|---|---|---|---|---|
Н/Д | 0 октетов |
NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_RSP
Поля полезной нагрузки | Размер | Значение/описание | |
---|---|---|---|
Статус | 1 октет | См. коды состояния в таблице 140 спецификации NCI . |
NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_NTF
Поля полезной нагрузки | Размер | Значение/описание | |
---|---|---|---|
Количество записей кадров выхода из режима наблюдения | 1 октет | Число полей записи выхода из режима наблюдения, которые необходимо отследить (n). | |
Запись [0..n] | x+2 октета | Квалификатор-Тип (1), Длина (1), Значение (x). |
Пустая команда NCI
Для очистки NCI хост может использовать команду NCI_ANDROID_BLANK_NCI_CMD
. NFCC должен ответить командой NCI_ANDROID_BLANK_NCI_RSP
с кодом состояния, указывающим на успешность или неудачу.
NCI_ANDROID_BLANK_NCI_CMD
Поля полезной нагрузки | Размер | Значение/описание | |||||
---|---|---|---|---|---|---|---|
Длина кадра | 1 октет | Длина данных кадра | |||||
Данные кадра | n октетов | Данные кадра |
NCI_ANDROID_BLANK_NCI_RSP
Поля полезной нагрузки | Размер | Значение/описание | |
---|---|---|---|
Статус | 1 октет | См. коды состояния в таблице 140 спецификации NCI . |
Установить команду аннотации цикла опроса
Чтобы задать аннотацию цикла опроса, хост может использовать команду NCI_ANDROID_SET_POLLING_LOOP_ANNOTATION_CMD
для заполнения таблицы пользовательских кадров опроса. Эта таблица определяет пользовательские кадры RF, которые должны быть вставлены в стандартный цикл обнаружения. Эта команда может быть отправлена только в состоянии RFST_IDLE
. NFCC должен ответить командой NCI_ANDROID_SET_POLLING_LOOP_ANNOTATION_RSP
с кодом состояния, указывающим на успешность или неудачу.
NCI_ANDROID_SET_POLLING_LOOP_ANNOTATION_CMD
Поля полезной нагрузки | Размер | Значение/описание | ||
---|---|---|---|---|
Количество записей RF-кадра | 1 октет | Количество последующих записей (n) от 0 до 4. n=0 отключает функцию. | ||
Запись RF-кадра [1..n] | 2+x октетов | |||
Тип квалификатора | 1 октет | Определяет тип кадра, технологию и положение в цикле обнаружения. | ||
Длина | 1 октет | Длина значения (x). | ||
Ценить | x октетов | Время ожидания (1 байт) и RF-кадр (1-16 байт). |
NCI_ANDROID_SET_POLLING_LOOP_ANNOTATION_RSP
Поля полезной нагрузки | Размер | Значение/описание | |
---|---|---|---|
Статус | 1 октет | См. коды состояния в таблице 140 спецификации NCI . |
Запрос команды энергосбережения
Для запроса режима энергосбережения хост может использовать команду NCI_ANDROID_QUERY_POWER_SAVING_CMD
. NFCC должен ответить командой NCI_ANDROID_QUERY_POWER_SAVING_RSP
с кодом состояния, указывающим на успешность или неудачу.
NCI_ANDROID_QUERY_POWER_SAVING_CMD
Поля полезной нагрузки | Размер | Значение/описание | |||||
---|---|---|---|---|---|---|---|
Н/Д | 0 октетов |
NCI_ANDROID_QUERY_POWER_SAVING_RSP
Поля полезной нагрузки | Размер | Значение/описание | |
---|---|---|---|
Статус | 1 октет | См. коды состояния в таблице 140 спецификации NCI . |
Пассивный наблюдатель приостановил уведомление
При обнаружении кадра выхода NFCC должен отправить хосту уведомление NCI_ANDROID_PASSIVE_OBSERVER_SUSPENDED_NTF
, что приведет к приостановке режима наблюдения.
NCI_ANDROID_PASSIVE_OBSERVER_SUSPENDED_NTF
Поля полезной нагрузки | Размер | Значение/описание | |||||
---|---|---|---|---|---|---|---|
Тип | 1 октет | Тип кадра: 0x00=Тип-A, 0x01=Тип-B | |||||
Длина | 1 октет | Длина значения (n) | |||||
Ценить | n октетов | Получен кадр, соответствующий записи выходного кадра. |
Пассивный наблюдатель возобновил уведомление
NFCC должен отправить хосту уведомление NCI_ANDROID_PASSIVE_OBSERVER_RESUMED_NTF
, когда пассивный наблюдатель возобновляет работу после истечения времени ожидания или других условий.
NCI_ANDROID_PASSIVE_OBSERVER_RESUMED_NTF
Поля полезной нагрузки | Размер | Значение/описание | |||||
---|---|---|---|---|---|---|---|
Н/Д | 0 октетов |
Получить команду аннотации цикла опроса
Для чтения таблицы пользовательских кадров опроса NFCC хост может использовать команду NCI_ANDROID_GET_POLLING_LOOP_ANNOTATION_CMD
. Эта команда может быть отправлена только в RFST_IDLE
. NFCC должен ответить командой NCI_ANDROID_GET_POLLING_LOOP_ANNOTATION_RSP
с кодом состояния, указывающим на успешность или неудачу, и информацией о пользовательском кадре опроса.
NCI_ANDROID_GET_POLLING_LOOP_ANNOTATION_CMD
Поля полезной нагрузки | Размер | Значение/описание | |||||
---|---|---|---|---|---|---|---|
Н/Д | 0 октетов |
NCI_ANDROID_GET_POLLING_LOOP_ANNOTATION_RSP
Поля полезной нагрузки | Размер | Значение/описание | ||
---|---|---|---|---|
Статус | 1 октет | См. коды состояния в таблице 140 спецификации NCI . | ||
Количество записей RF-кадра | 1 октет | Количество последующих записей (n) от 0 до 4. n=0 отключает функцию. | ||
Запись RF-кадра [1..n] | 2+x октетов | Тип квалификатора | 1 октет | Определяет тип кадра, технологию и положение в цикле обнаружения. |
Длина | 1 октет | Длина значения (x). | ||
Ценить | x октетов | Время ожидания (1 байт) и RF-кадр (1-16 байт). |
Выполнение
Для эталонных реализаций см. следующее:
,Интерфейс контроллера NFC (NCI) используется для взаимодействия с контроллером NFC (NFCC). На этой странице описаны спецификации фирменных команд NCI Android.
Определения NCI
Фирменные команды 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 перечислены в следующей таблице. Спецификация каждого пакета представлена в следующих разделах.
Команда «Получить возможности»
Хост использует 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 октет | Длина (м) значения | |||||
Ценить | m октетов | Ценность возможности |
Собственные возможности Android
Имя возможности | ИДЕНТИФИКАТОР | Размер | Значение/описание | |||||
---|---|---|---|---|---|---|---|---|
Режим наблюдения | 0x00 | 1 октет | Поддержка режима наблюдения. 0x00 (по умолчанию) — не поддерживает эту функцию. 0x01 — Поддерживает функцию деактивации RF с хоста (требуется для Android 15). 0x02 — поддерживает функцию без деактивации RF со стороны хоста (требуется для Android 16 и выше). Все остальные значения — RFU. | |||||
Уведомление о кадре опроса | 0x01 | 1 октет | Поддержка уведомлений о кадрах опроса. 0x01 — если поддерживается, 0x00 (по умолчанию) — если не поддерживается. Все остальные значения — RFU. | |||||
Режим энергосбережения | 0x02 | 1 октет | Поддержка режима энергосбережения. 0x01 — если поддерживается, 0x00 (по умолчанию) — если не поддерживается. Все остальные значения — RFU. | |||||
Фильтр цикла опроса Autotransact | 0x03 | 1 октет | Поддержка фильтров цикла опроса в прошивке для обхода режима наблюдения для определенных шаблонов, когда режим наблюдения включен глобально. 0x00 (по умолчанию) — не поддерживает эту функцию 0x01 — Поддержка фильтров опроса цикла Все остальные значения являются RFU | |||||
Количество поддерживаемых записей выходного кадра | 0x04 | 1 октет | Поддерживаемое количество записей выходных кадров. Требуется минимум пять записей выходных кадров. | |||||
Аннотация режима чтения | 0x05 | 1 октет | Поддержка аннотаций в режиме чтения. 0x00 (по умолчанию) — не поддерживает эту функцию. 0x01 — Поддерживает эту функцию. Все остальные значения — RFU. | |||||
0x06..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 октета | Метка времени, измеряемая в миллисекундах с момента получения запросов на опрос, big endian. | |||||
Прирост | 1 октет | Сила запроса на опрос. 0xFF указывает, что значение недоступно. | |||||
Данные | м - 5 октетов | Возвращает идентифицируемые данные, присутствующие в запросе на опрос. |
Типы рам
Опросная рамка | Тип | Размер | Значение/Описание | |
---|---|---|---|---|
Удаленное поле | 0x00 | 1 октет | 0x00 | Поле выключено |
0x01 | Поле на | |||
0x02..0xFF | РФС | |||
NFC-A | 0x01 | n октетов | Значение должно включать команду ISO 14443-3 (например, REQ или WUP) | |
NFC-B | 0x02 | n октетов | Значение должно включать байт AIF и команду ISO 14443-3 (например, REQ или WUP). | |
NFC-F | 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 | б7 | |
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 октет | Битовая маска, указывающая, для каких технологий включен режим наблюдения:
|
Установить команду «Технологии пассивного наблюдателя»
Для настройки технологий пассивного наблюдения хост может использовать команду NCI_ANDROID_SET_PASSIVE_OBSERVER_TECH_CMD
. Эта команда включает или выключает режим наблюдения для указанных технологий, не требуя RF_DEACTIVATE_CMD
. NFCC должен ответить командой NCI_ANDROID_SET_PASSIVE_OBSERVER_TECH_RSP
с кодом состояния, указывающим на успешность или неудачу.
NCI_ANDROID_SET_PASSIVE_OBSERVER_TECH_CMD
Поля полезной нагрузки | Размер | Значение/описание | |||||
---|---|---|---|---|---|---|---|
Технология Маска | 1 октет | Битовая маска, указывающая, для каких технологий следует включить режим наблюдения:
|
NCI_ANDROID_SET_PASSIVE_OBSERVER_TECH_RSP
Поля полезной нагрузки | Размер | Значение/описание | |
---|---|---|---|
Статус | 1 октет | См. коды статуса в таблице 140 Спецификации NCI . |
Установить команду выхода из кадра пассивного наблюдателя
Для настройки таблицы кадров выхода из режима наблюдения хост может использовать команду NCI_ANDROID_SET_PASSIVE_OBSERVER_EXIT_FRAME_CMD
. Эта команда определяет RF-кадры, которые запускают выход из режима наблюдения. Эта команда может быть отправлена только в RFST_IDLE
. NFCC должен ответить командой NCI_ANDROID_SET_PASSIVE_OBSERVER_EXIT_FRAME_RSP
с кодом состояния, указывающим на успешность или неудачу.
NCI_ANDROID_SET_PASSIVE_OBSERVER_EXIT_FRAME_CMD
Поля полезной нагрузки | Размер | Значение/описание | |||||
---|---|---|---|---|---|---|---|
Более | 1 октет | 0x00 - Последнее сообщение 0x01 — Дальше будут сообщения | |||||
Тайм-аут | 2 октета | Время ожидания в мс для восстановления режима наблюдения (прямой порядок байтов). | |||||
Количество записей RF-фрейма | 1 октет | Количество полей записи RF-кадра, которые необходимо отследить (n). 0x00 сбрасывает таблицу. | |||||
Запись RF-кадра [0..n] | (2+x)*n октетов | ||||||
Тип квалификатора | 1 октет | Определяет тип кадра и параметры соответствия. | |||||
Длина значения | 1 октет | Длина «x» поля «Значение». | |||||
Ценить | x октетов | Состояние питания (1), Справочные данные (n), Маска (n). 1 <= n <= 16. |
NCI_ANDROID_SET_PASSIVE_OBSERVER_EXIT_FRAME_RSP
Поля полезной нагрузки | Размер | Значение/описание | |
---|---|---|---|
Статус | 1 октет | См. коды состояния в таблице 140 спецификации NCI . |
Получить команду выхода из кадра пассивного наблюдателя
Чтобы получить текущую конфигурацию таблицы кадров выхода из режима наблюдения, хост может использовать команду NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_CMD
. NFCC должен ответить командой NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_RSP
, а затем NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_NTF
.
NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_CMD
Поля полезной нагрузки | Размер | Значение/описание | |||||
---|---|---|---|---|---|---|---|
Н/Д | 0 октетов |
NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_RSP
Поля полезной нагрузки | Размер | Значение/описание | |
---|---|---|---|
Статус | 1 октет | См. коды состояния в таблице 140 спецификации NCI . |
NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_NTF
Поля полезной нагрузки | Размер | Значение/описание | |
---|---|---|---|
Количество записей кадров выхода из режима наблюдения | 1 октет | Число полей записи выхода из режима наблюдения, которые необходимо отследить (n). | |
Запись [0..n] | x+2 октета | Квалификатор-Тип (1), Длина (1), Значение (x). |
Пустая команда NCI
Для очистки NCI хост может использовать команду NCI_ANDROID_BLANK_NCI_CMD
. NFCC должен ответить командой NCI_ANDROID_BLANK_NCI_RSP
с кодом состояния, указывающим на успешность или неудачу.
NCI_ANDROID_BLANK_NCI_CMD
Поля полезной нагрузки | Размер | Значение/описание | |||||
---|---|---|---|---|---|---|---|
Длина кадра | 1 октет | Длина данных кадра | |||||
Данные кадра | n октетов | Данные кадра |
NCI_ANDROID_BLANK_NCI_RSP
Поля полезной нагрузки | Размер | Значение/описание | |
---|---|---|---|
Статус | 1 октет | См. коды состояния в таблице 140 спецификации NCI . |
Установить команду аннотации цикла опроса
Чтобы задать аннотацию цикла опроса, хост может использовать команду NCI_ANDROID_SET_POLLING_LOOP_ANNOTATION_CMD
для заполнения таблицы пользовательских кадров опроса. Эта таблица определяет пользовательские кадры RF, которые должны быть вставлены в стандартный цикл обнаружения. Эта команда может быть отправлена только в состоянии RFST_IDLE
. NFCC должен ответить командой NCI_ANDROID_SET_POLLING_LOOP_ANNOTATION_RSP
с кодом состояния, указывающим на успешность или неудачу.
NCI_ANDROID_SET_POLLING_LOOP_ANNOTATION_CMD
Поля полезной нагрузки | Размер | Значение/описание | ||
---|---|---|---|---|
Количество записей RF-кадра | 1 октет | Количество последующих записей (n) от 0 до 4. n=0 отключает функцию. | ||
Запись RF-кадра [1..n] | 2+x октетов | |||
Тип квалификатора | 1 октет | Определяет тип кадра, технологию и положение в цикле обнаружения. | ||
Длина | 1 октет | Длина значения (x). | ||
Ценить | x октетов | Время ожидания (1 байт) и RF-кадр (1-16 байт). |
NCI_ANDROID_SET_POLLING_LOOP_ANNOTATION_RSP
Поля полезной нагрузки | Размер | Значение/описание | |
---|---|---|---|
Статус | 1 октет | См. коды состояния в таблице 140 спецификации NCI . |
Запрос команды энергосбережения
Для запроса режима энергосбережения хост может использовать команду NCI_ANDROID_QUERY_POWER_SAVING_CMD
. NFCC должен ответить командой NCI_ANDROID_QUERY_POWER_SAVING_RSP
с кодом состояния, указывающим на успешность или неудачу.
NCI_ANDROID_QUERY_POWER_SAVING_CMD
Поля полезной нагрузки | Размер | Значение/описание | |||||
---|---|---|---|---|---|---|---|
Н/Д | 0 октетов |
NCI_ANDROID_QUERY_POWER_SAVING_RSP
Поля полезной нагрузки | Размер | Значение/описание | |
---|---|---|---|
Статус | 1 октет | См. коды состояния в таблице 140 спецификации NCI . |
Пассивный наблюдатель приостановил уведомление
При обнаружении кадра выхода NFCC должен отправить хосту уведомление NCI_ANDROID_PASSIVE_OBSERVER_SUSPENDED_NTF
, что приведет к приостановке режима наблюдения.
NCI_ANDROID_PASSIVE_OBSERVER_SUSPENDED_NTF
Поля полезной нагрузки | Размер | Значение/описание | |||||
---|---|---|---|---|---|---|---|
Тип | 1 октет | Тип кадра: 0x00=Тип-A, 0x01=Тип-B | |||||
Длина | 1 октет | Длина значения (n) | |||||
Ценить | n октетов | Получен кадр, соответствующий записи выходного кадра. |
Пассивный наблюдатель возобновил уведомление
NFCC должен отправить хосту уведомление NCI_ANDROID_PASSIVE_OBSERVER_RESUMED_NTF
, когда пассивный наблюдатель возобновляет работу после истечения времени ожидания или других условий.
NCI_ANDROID_PASSIVE_OBSERVER_RESUMED_NTF
Поля полезной нагрузки | Размер | Значение/описание | |||||
---|---|---|---|---|---|---|---|
Н/Д | 0 октетов |
Получить команду аннотации цикла опроса
Для чтения таблицы пользовательских кадров опроса NFCC хост может использовать команду NCI_ANDROID_GET_POLLING_LOOP_ANNOTATION_CMD
. Эта команда может быть отправлена только в RFST_IDLE
. NFCC должен ответить командой NCI_ANDROID_GET_POLLING_LOOP_ANNOTATION_RSP
с кодом состояния, указывающим на успешность или неудачу, и информацией о пользовательском кадре опроса.
NCI_ANDROID_GET_POLLING_LOOP_ANNOTATION_CMD
Поля полезной нагрузки | Размер | Значение/описание | |||||
---|---|---|---|---|---|---|---|
Н/Д | 0 октетов |
NCI_ANDROID_GET_POLLING_LOOP_ANNOTATION_RSP
Поля полезной нагрузки | Размер | Значение/описание | ||
---|---|---|---|---|
Статус | 1 октет | См. коды состояния в таблице 140 спецификации NCI . | ||
Количество записей RF-кадра | 1 октет | Количество последующих записей (n) от 0 до 4. n=0 отключает функцию. | ||
Запись RF-кадра [1..n] | 2+x октетов | Тип квалификатора | 1 октет | Определяет тип кадра, технологию и положение в цикле обнаружения. |
Длина | 1 октет | Длина значения (x). | ||
Ценить | x октетов | Время ожидания (1 байт) и RF-кадр (1-16 байт). |
Выполнение
Для эталонных реализаций см. следующее: