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

Интерфейс контроллера 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 перечислены в следующей таблице. Спецификация каждого пакета представлена ​​в следующих разделах.

Android OID Тип сообщения Имя сообщения
0x00 NCI_MT_CMD NCI_ANDROID_GET_CAPS_CMD
NCI_MT_RSP NCI_ANDROID_GET_CAPS_RSP
0x01 NCI_MT_CMD NCI_ANDROID_POWER_SAVING_CMD
NCI_MT_RSP NCI_ANDROID_POWER_SAVING_RSP
0x02 NCI_MT_CMD NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD
NCI_MT_RSP NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP
0x03 NCI_MT_NTF NCI_ANDROID_POLLING_FRAME_NTF
0x04 NCI_MT_CMD NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD
NCI_MT_RSP NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP
0x05 NCI_MT_CMD NCI_ANDROID_SET_PASSIVE_OBSERVER_TECH_CMD
NCI_MT_RSP NCI_ANDROID_SET_PASSIVE_OBSERVER_TECH_RSP
0x06 NCI_MT_CMD NCI_ANDROID_SET_PASSIVE_OBSERVER_EXIT_FRAME_CMD
NCI_MT_RSP NCI_ANDROID_SET_PASSIVE_OBSERVER_EXIT_FRAME_RSP
0x07 NCI_MT_CMD NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_CMD
NCI_MT_RSP NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_RSP
0x08 NCI_MT_CMD NCI_ANDROID_BLANK_NCI_CMD
NCI_MT_RSP NCI_ANDROID_BLANK_NCI_RSP
0x09 NCI_MT_CMD NCI_ANDROID_SET_POLLING_LOOP_ANNOTATION_CMD
NCI_MT_RSP NCI_ANDROID_SET_POLLING_LOOP_ANNOTATION_RSP
0x0A NCI_MT_CMD NCI_ANDROID_QUERY_POWER_SAVING_CMD
NCI_MT_RSP NCI_ANDROID_QUERY_POWER_SAVING_RSP
0x0B NCI_MT_NTF NCI_ANDROID_PASSIVE_OBSERVER_SUSPENDED_NTF
0x0C NCI_MT_NTF NCI_ANDROID_PASSIVE_OBSERVER_RESUMED_NTF
0x0D NCI_MT_CMD NCI_ANDROID_GET_POLLING_LOOP_ANNOTATION_CMD
NCI_MT_RSP NCI_ANDROID_GET_POLLING_LOOP_ANNOTATION_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 октет Длина (м) значения
Ценить 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 октет Битовая маска, указывающая, для каких технологий включен режим наблюдения:
  • Бит 0: NFC-A
  • Бит 1: NFC-B
  • Бит 2: NFC-F
  • Бит 3: NFC-V

Установить команду «Технологии пассивного наблюдателя»

Для настройки технологий пассивного наблюдения хост может использовать команду 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 октет Битовая маска, указывающая, для каких технологий следует включить режим наблюдения:
  • Бит 0: NFC-A
  • Бит 1: NFC-B
  • Бит 2: NFC-F
  • Бит 3: NFC-V
Технологии, не установленные в маске, должны продолжать работать в режиме прослушивания.

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 перечислены в следующей таблице. Спецификация каждого пакета представлена ​​в следующих разделах.

Android OID Тип сообщения Имя сообщения
0x00 NCI_MT_CMD NCI_ANDROID_GET_CAPS_CMD
NCI_MT_RSP NCI_ANDROID_GET_CAPS_RSP
0x01 NCI_MT_CMD NCI_ANDROID_POWER_SAVING_CMD
NCI_MT_RSP NCI_ANDROID_POWER_SAVING_RSP
0x02 NCI_MT_CMD NCI_ANDROID_PASSIVE_OBSERVE_MODE_CMD
NCI_MT_RSP NCI_ANDROID_PASSIVE_OBSERVE_MODE_RSP
0x03 NCI_MT_NTF NCI_ANDROID_POLLING_FRAME_NTF
0x04 NCI_MT_CMD NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_CMD
NCI_MT_RSP NCI_ANDROID_QUERY_PASSIVE_OBSERVER_STATUS_RSP
0x05 NCI_MT_CMD NCI_ANDROID_SET_PASSIVE_OBSERVER_TECH_CMD
NCI_MT_RSP NCI_ANDROID_SET_PASSIVE_OBSERVER_TECH_RSP
0x06 NCI_MT_CMD NCI_ANDROID_SET_PASSIVE_OBSERVER_EXIT_FRAME_CMD
NCI_MT_RSP NCI_ANDROID_SET_PASSIVE_OBSERVER_EXIT_FRAME_RSP
0x07 NCI_MT_CMD NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_CMD
NCI_MT_RSP NCI_ANDROID_GET_PASSIVE_OBSERVER_EXIT_FRAME_RSP
0x08 NCI_MT_CMD NCI_ANDROID_BLANK_NCI_CMD
NCI_MT_RSP NCI_ANDROID_BLANK_NCI_RSP
0x09 NCI_MT_CMD NCI_ANDROID_SET_POLLING_LOOP_ANNOTATION_CMD
NCI_MT_RSP NCI_ANDROID_SET_POLLING_LOOP_ANNOTATION_RSP
0x0A NCI_MT_CMD NCI_ANDROID_QUERY_POWER_SAVING_CMD
NCI_MT_RSP NCI_ANDROID_QUERY_POWER_SAVING_RSP
0x0B NCI_MT_NTF NCI_ANDROID_PASSIVE_OBSERVER_SUSPENDED_NTF
0x0C NCI_MT_NTF NCI_ANDROID_PASSIVE_OBSERVER_RESUMED_NTF
0x0D NCI_MT_CMD NCI_ANDROID_GET_POLLING_LOOP_ANNOTATION_CMD
NCI_MT_RSP NCI_ANDROID_GET_POLLING_LOOP_ANNOTATION_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 октет Длина (м) значения
Ценить 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 октет Битовая маска, указывающая, для каких технологий включен режим наблюдения:
  • Бит 0: NFC-A
  • Бит 1: NFC-B
  • Бит 2: NFC-F
  • Бит 3: NFC-V

Установить команду «Технологии пассивного наблюдателя»

Для настройки технологий пассивного наблюдения хост может использовать команду 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 октет Битовая маска, указывающая, для каких технологий следует включить режим наблюдения:
  • Бит 0: NFC-A
  • Бит 1: NFC-B
  • Бит 2: NFC-F
  • Бит 3: NFC-V
Технологии, не установленные в маске, должны продолжать работать в режиме прослушивания.

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 байт).

Выполнение

Для эталонных реализаций см. следующее: