Требования к HCI

Интерфейс хост-контроллера (HCI) используется для взаимодействия с контроллером Bluetooth.

В этом документе приведены требования к интерфейсу хоста контроллера (HCI) Bluetooth (BT) и Bluetooth с низким энергопотреблением (BLE). Поставщики стека Bluetooth и контроллеров Bluetooth должны соблюдать эти требования, чтобы использовать описанный ниже набор функций.

В этом документе спецификация Bluetooth Core 5.2 называется "спецификацией". Спецификация Bluetooth Core 5.2 и другие принятые документы доступны на сайте Bluetooth SIG.

Общие сведения о дизайне

Возможности и конфигурация чипа

Android – открытая платформа, поэтому в ней используется множество версий ПО, устройств от разных производителей, поставщиков, а также возможностей платформы и чипов.

Чтобы управлять меняющейся средой и переносами, в этом документе описана философия проектирования, позволяющая контроллерам BT раскрывать свои возможности (помимо стандартной спецификации Bluetooth Core 5.2). Затем стек Bluetooth хоста может использовать эти возможности, чтобы определить, какие функции включить.

Поддержка открытых стандартов

Одна из целей Android – поддержка открытых стандартов после их ратификации в спецификации Bluetooth. Если описанная ниже функция станет доступна в стандартных методах HCI в будущей спецификации Bluetooth, мы, скорее всего, сделаем этот подход вариантом по умолчанию.

Функции, связанные с определенным поставщиком

Команда для определенного поставщика: LE_Get_Vendor_Capabilities_Command

Поле команды OpCode (OCF): 0x153

Параметр команды Размер Назначение
– Пустой список параметров команды

Для этой команды будет сгенерировано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
max_advt_instances
(поддержка прекращена)
1 октет Количество поддерживаемых экземпляров объявлений.

Зарезервировано после версии 0.98.
Этот параметр устарел в спецификации функций Google версии 0.98 и более поздних. Вместо него рекомендуется использовать расширенную рекламу LE, доступную в спецификации BT версии 5.0 и более поздних.
offloaded_resolution_of_private-address
(поддержка прекращена)
1 октет Возможности чипа Bluetooth в RPA.
Если чип поддерживает эту функцию, ее нужно включить на хосте.
0 = Не поддерживается
1 = Поддерживается

Зарезервировано после версии 0.98
Этот параметр устарел в спецификации функций Google версии 0.98 и более поздних. Вместо него рекомендуется использовать функцию конфиденциальности, доступную в спецификации BT версии 4.2 и более поздних.
total_scan_results_storage 2 октета Хранилище для результатов сканирования в байтах.
max_irk_list_sz 1 октет Количество записей IRK, поддерживаемых встроенным ПО.
filtering_support 1 октет Поддержка фильтрации в контроллере:
0 – не поддерживается;
1 – поддерживается.
max_filter 1 октет Количество поддерживаемых фильтров
activity_energy_info_support 1 октет Поддерживает отчеты об активности и энергопотреблении
0 – не поддерживает
1 – поддерживает
version_supported 2 октета Указывает версию спецификации функций Google, которая поддерживается.
byte[0] = Основной номер
byte[1] = Дополнительный номер

v1.06
byte[0] = 0x01
byte[1] = 0x06

Добавленные функции в следующих версиях:
v1.06:
  • big_set_channel_map_classification_support
  • vendor_connection_handle_min
  • vendor_connection_handle_max
  • connection_proximity_threshold_support
v1.05:
  • iso_link_feedback_support
  • BQRv7
  • sniff_offload_support
V1.04:
  • BQRv6
total_num_of_advt_tracked 2 октета Общее количество рекламодателей, отслеживаемых для целей OnLost/OnFound
extended_scan_support 1 октет Поддерживает расширенное окно сканирования и интервал
debug_logging_supported 1 октет Поддерживает ведение журнала двоичных сведений для отладки от контроллера.
LE_address_generation_offloading_support
(поддержка прекращена)
1 октет 0 – не поддерживается;
1 – поддерживается.

Зарезервировано после версии 0.98.
Этот параметр не поддерживается в спецификации функций Google версии 0.98 и более поздних. Вместо него используется функция конфиденциальности, доступная в спецификации BT версии 4.2 и более поздних.
A2DP_source_offload_capability_mask 4 октета Битовые маски для поддерживаемых типов кодеков:
Бит 0 – SBC
Бит 1 – AAC
Бит 2 – APTX
Бит 3 – APTX HD
Бит 4 – LDAC
Бит 5 – Opus
Биты 6–31 зарезервированы.
bluetooth_quality_report_support 1 октет Поддерживает отчеты о событиях, связанных с качеством Bluetooth.
0 – не поддерживает.
1 – поддерживает.
dynamic_audio_buffer_support 4 октета Поддержка динамического аудио буфера в контроллере Bluetooth
Битовые маски для поддерживаемых типов кодеков
Бит 0 – SBC
Бит 1 – AAC
Бит 2 – APTX
Бит 3 – APTX HD
Бит 4 – LDAC
Бит 5 – Opus
Биты 6–31 зарезервированы
a2dp_offload_v2_support 1 октет Поддержка команд A2DP offload v2 в контроллере Bluetooth (см. Start A2DP offload, Stop A2DP offload).
0 – не поддерживается.
1 – поддерживается.
iso_link_feedback_support 1 октет Поддерживает событие ISO Link Feedback.
0 – не поддерживается.
1 – поддерживается.
sniff_offload_support 1 октет Поддержка команд Sniff Offload в контроллере Bluetooth.
0 – не поддерживается.
1 – поддерживается.
big_set_channel_map_classification_support 2 октета Поддерживает sub_opcode функции LE Broadcast Channel Map Classification
Бит 0 – поддерживает sub_opcode 0x01 (Set BIG channel map by LE ACL Connection Handles)
Биты 1–15 – зарезервированы
Значение бита: 0
0 – не поддерживается
1 – поддерживается
vendor_connection_handle_min 2 октета Сообщать о минимальном значении дескрипторов подключения поставщика для событий поставщика HCI, полученных через пакеты ACL. Дескриптор 0 указывает на отсутствие поддержки отчетов о событиях поставщика в пакетах данных ACL.
vendor_connection_handle_max 2 октета Сообщать о максимальном значении дескрипторов подключения поставщика для событий поставщика HCI, полученных через пакеты ACL. Дескриптор 0 используется, чтобы указать на отсутствие поддержки отчетов о событиях поставщика через пакеты данных ACL.
connection_proximity_threshold_support 1 октет Поддерживает ли чип пороговое значение близости подключения:
0 – не поддерживается;
1 – поддерживается.

Результаты пакетного сканирования

Цель разработки – улучшить способ доставки уведомлений о событиях Bluetooth LE Scan Response на хост, чтобы экономить его энергию.

Если контроллер будет реже уведомлять процессор хост-приложения о необходимости сканировать результаты, процессор сможет дольше находиться в режиме ожидания или сна. Это снижает энергопотребление хоста. Параметр return total_scan_results_storage из LE_Get_Vendor_Capabilities_Command указывает на возможность чипа хранить результаты сканирования.

Эта функция предназначена для управления и настройки хранилища результатов сканирования LE в контроллере Bluetooth. Хранилище используется для временной пакетной обработки данных объявлений, а также данных сканирования и метаданных, полученных контроллером, для последующей передачи хосту.

Встроенное ПО должно поддерживать два типа пакетной обработки, которые могут использоваться одновременно:

  • Обрезано. Содержит следующие элементы информации: {MAC, TX Power, RSSI, Timestamp}.
  • Полный. Содержит следующие элементы информации: {MAC, TX Power, RSSI, Timestamp, Adv Data, Scan Response}

LE_Batch_Scan_Command

OCF: 0x156

Параметр команды Размер Назначение
Batch_Scan_opcode 1 октет 0x1 – включить функцию, относящуюся к определенному клиенту
0x2 – задать параметры хранения пакетного сканирования
0x3 – задать параметры пакетного сканирования
0x4 – прочитать параметры результатов пакетного сканирования

Для этой команды будет создано событие Command Complete. Включение функции для клиента не запускает сканирование.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
Batch_Scan_opcode 1 октет 0x1 – включить функцию, предназначенную для клиента.
0x2 – задать параметры хранилища для пакетного сканирования.
0x3 – задать параметры пакетного сканирования.
0x4 – прочитать параметры результатов пакетного сканирования.

LE_Batch_Scan_Command: включение функции, относящейся к определенному клиенту

Sub OCF: 0x01

Параметр подкоманды Размер Назначение
enable_customer_specific_feature_set 1 октет 0x01 – включить функцию пакетного сканирования
0x00 – отключить функцию пакетного сканирования

Для этой команды будет сгенерировано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
Batch_Scan_opcode 1 октет 0x1 – включить функцию, относящуюся к определенному клиенту
0x2 – задать параметры хранения пакетного сканирования
0x3 – задать параметры пакетного сканирования
0x4 – прочитать параметры результатов пакетного сканирования

LE_Batch_Scan_Command: подкоманда для настройки параметра хранилища пакетного сканирования

Sub OCF: 0x02

Параметр подкоманды Размер Назначение
Batch_Scan_Full_Max 1 октет Максимальный объем хранилища (в %), выделенный для полного стиля
[Диапазон: 0–100]
Batch_Scan_Truncated_Max 1 октет Максимальный объем хранилища (в %), выделенный для усеченного стиля
[Диапазон: 0–100]
Batch_Scan_Notify_Threshold 1 октет Настройте уровень уведомлений (в %) для отдельного пула хранилища.
[Диапазон: 0–100]
Если задать значение 0, уведомления будут отключены. Создано событие HCI, относящееся к определенному поставщику (подсобытие нарушения порогового значения хранилища)

Для этой команды будет сгенерировано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
Batch_scan_opcode 1 октет 0x02 [Set Batch Scan parameters]

LE_Batch_Scan_Command: подкоманда для настройки параметров пакетного сканирования

Sub OCF: 0x03

Параметр подкоманды Размер Назначение
Batch_Scan_Mode 1 октет 0x00 – пакетное сканирование отключено
0x01 – включен усеченный режим
0x02 – включен полный режим
0x03 – включены усеченный и полный режимы
Duty_cycle_scan_window 4 октета Время сканирования пакета (количество слотов)
Duty_cyle_scan_interval 4 октета Интервал пакетного сканирования (количество слотов)
own_address_type 1 октет 0x00 – общедоступный адрес устройства
0x01 – случайный адрес устройства
Batch_scan_Discard_Rule 1 октет 0 – отбрасывать самое старое объявление
1 – отбрасывать объявление с самым слабым сигналом RSSI

Эта подкоманда запускает пакетное сканирование, если оно включено. При сканировании в усеченном виде результаты хранятся в усеченном формате, где уникальный ключ для усеченного стиля = {BD_ADDR, scan_interval}. Это означает, что за каждый интервал сканирования будет регистрироваться только одно значение BD_ADDR will. В режиме Truncated сохраняется следующая запись: {BD_ADDR, Tx Power, RSSI, Timestamp}.

Если включен полный режим, будет использоваться активное сканирование и записываться ответы на сканирование. Уникальный ключ для стиля "Полный" = {MAC, пакет объявлений}, независимо от интервала сканирования. В полном режиме сохраняется запись {BD_ADDR, Tx Power, RSSI, Timestamp, Ad packet, Scan Response}. В режиме "Полный" один и тот же пакет AD, который показывается несколько раз в разные интервалы сканирования, регистрируется только один раз. Однако в усеченном режиме нас интересует видимость BA_ADDR в разные интервалы сканирования (один раз за интервал). RSSI – это среднее значение всех дубликатов уникального объявления в интервале сканирования.

Для этой команды будет создано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
Batch_scan_opcode 1 октет 0x03 [Задать параметры пакетного сканирования]

LE_Batch_Scan_Command: подкоманда для чтения результатов пакетного сканирования

Sub OCF: 0x04

Параметр подкоманды Размер Назначение
Batch_Scan_Data_read 1 октет 0x01 – данные в усеченном режиме
0x02 – данные в полном режиме

Для этой команды будет создано событие Command Complete. Когда хост отправляет эту команду, все результаты, полученные от контроллера, могут не поместиться в одно событие Command Complete. Хост будет повторять эту команду, пока в событии Command Complete не будет указано, что количество записей равно нулю. Это означает, что контроллеру больше нечего передавать хосту. Каждое событие Command Complete может содержать несколько записей только одного типа данных (полных или усеченных).

Временные метки контроллера и хоста не синхронизированы. Единица временной метки – 50 мс. Временная метка основана на том, когда хост предоставил значение Read_Batch_Scan_Results_Sub_cmd. Если время получения команды T_c в прошивке, то фактическое время, когда была сделана отметка времени в прошивке, – T_fw. Время отчета будет: (T_c - T_fw). T_c и T_fw указаны в часовом поясе встроенного ПО. Это позволяет организатору определить, как давно произошло событие.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
Batch_scan_opcode 1 октет 0x03 [Задать параметры пакетного сканирования]
Batch_Scan_data_read 1 октет Определяет формат (усеченный или полный).
num_of_records 1 октет Количество записей Batch_Scan_data_read
format_of_data Переменная Сокращенный режим:
Address[0]: 6 октетов
Address_Type[0]: 1 октет
Tx_Pwr[0]: 1 октет
RSSI[0] : 1 октет
Timestamp[0]: 2 октета
[несколько записей (num_of_records) в указанном выше формате]

Полный режим:
Address[0]: 6 октетов
Address_Type[0]: 1 октет
Tx_Pwr[0]: 1 октет
RSSI[0]: 1 октет
Timestamp[0]: 2 октета
Adv packet_len[0]: 1 октет
Adv_packet[0]: Adv_packet_len октетов
Scan_data_resp_len[0]: 1 октет
Scan_data_resp[0]: Scan_data_resp октетов
[несколько записей в указанном выше формате (num_of_records)]

Фильтр контента рекламных пакетов

Используется для включения, отключения или настройки фильтра содержимого рекламных пакетов (APCF) в контроллере. Фильтры APCF применяются к отчетам об объявлениях в контроллере, но не к периодической рекламе.

LE_APCF_Command

OCF: 0x157

Параметр команды Размер Назначение
APCF_opcode 1 октет 0x00 – APCF Enable
0x01 – APCF Set Filtering parameters
0x02 – APCF Broadcaster Address
0x03 – APCF Service UUID
0x04 – APCF Service Solicitation UUID
0x05 – APCF Local Name
0x06 – APCF Manufacturer Data
0x07 – APCF Service Data
0x08 – APCF Transport Discovery Service
0x09 – APCF AD Type Filter
0x10 ~ 0xAF – зарезервировано для будущего использования
0xB0 ~ 0xDF – зарезервировано для поставщика
0xE0 ~ 0xFE – зарезервировано для будущего использования
0xFF – APCF Read extended Features

Для этой команды будет сгенерировано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус возврата
APCF_opcode 1 октет 0x00 – включить APCF
0x01 – задать параметры фильтрации APCF
0x02 – широковещательный адрес APCF
0x03 – UUID сервиса APCF
0x04 – UUID запроса сервиса APCF
0x05 – локальное имя APCF
0x06 – данные производителя APCF
0x07 – данные сервиса APCF
0x08 – сервис обнаружения транспорта APCF
0x09 – фильтр типа объявления AD APCF
0x10 ~ 0xAF – зарезервировано для использования в будущем
0xB0 ~ 0xDF – зарезервировано для поставщика
0xE0 ~ 0xFE – зарезервировано для использования в будущем
0xFF – прочитать расширенные функции APCF

LE_APCF_Command: Enable_sub_cmd

Sub OCF: 0x00

Параметр подкоманды Размер Назначение
APCF_enable 1 октет 0x01 – включить функцию APCF
0x00 – отключить функцию APCF

Для этой команды будет сгенерировано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
APCF_opcode 1 октет 0x0 – включение APCF
APCF_Enable 1 октет Включение и отключение выполняется с помощью параметра APCF_enable.

LE_APCF_Command: set_filtering_parameters_sub_cmd

Эта подкоманда используется, чтобы добавить или удалить спецификацию фильтра или очистить список фильтров для фильтрации на чипе.

Sub OCF: 0x01

Параметр подкоманды Размер Назначение
APCF_Action 1 октет 0x00 – добавить
0x01 – удалить
0x02 – очистить
При удалении будет очищен определенный фильтр, а также связанные с ним записи объектов в других таблицах.
При выборе варианта "Очистить" будут удалены все фильтры и связанные записи в других таблицах.
APCF_Filter_Index 1 октет Индекс фильтра (0, max_filter-1)
APCF_Feature_Selection 2 октета Битовые маски для выбранных функций:
Бит 0: включить фильтр широковещательных адресов
Бит 1: включить фильтр изменения данных сервиса
Бит 2: включить проверку UUID сервиса
Бит 3: включить проверку UUID запроса сервиса
Бит 4: включить проверку локального имени
Бит 5: включить проверку данных производителя
Бит 6: включить проверку данных сервиса
Бит 7: включить проверку сервиса обнаружения транспорта
Бит 8: включить проверку типа объявления
APCF_List_Logic_Type 2 октета Логическая операция для каждого выбора функции (для каждой позиции бита), указанная в APCF_Feature_Selection.
Действительно, только если функция включена.
Значение позиции бита:
0: ИЛИ
1: И
Если выбрана логика "И", пакет ADV пройдет фильтр, только если он содержит ВСЕ записи из списка.
Если выбран оператор ИЛИ, пакет ADV пройдет фильтрацию, если он содержит хотя бы одну запись из списка.
APCF_Filter_Logic_Type 1 октет 0x00: ИЛИ
0x01: И
Примечание. Тип логики не применяется к первым трем полям APCF_Feature_Selection, для которых всегда используется логика "И". Они применяются только к четырем полям (биты 3–6) APCF_Feature_Selection.
rssi_high_thresh 1 октет [в дБм]
Рекламодатель считается замеченным, только если сигнал выше верхнего порогового значения RSSI. В противном случае встроенное ПО должно вести себя так, как будто оно никогда не видело этот пакет.
delivery_mode 1 октет 0x00 - immediate
0x01 - on_found
0x02 - batched
onfound_timeout 2 октета Действительно, только если delivery_mode имеет значение on_found.
[в миллисекундах]
Время, в течение которого встроенное ПО должно оставаться активным и собирать дополнительную рекламу, прежде чем отправлять отчет.
onfound_timeout_cnt 1 октет Действительно, только если для delivery_mode задано значение on_found.
[count]
Если объявление в onFound задерживается во встроенном ПО на время onfound_timeout, оно собирает несколько объявлений, и их количество проверяется. Если количество превышает onfound_timeout_cnt, то OnFound сообщается сразу после этого.
rssi_low_thresh 1 октет Действительно, только если delivery_mode имеет значение on_found.
[в дБм]
Пакет рекламодателя считается невидимым, если RSSI полученного пакета не превышает нижний порог RSSI.
onlost_timeout 2 октета Действительно, только если delivery_mode имеет значение on_found.
[в миллисекундах]
Если после обнаружения реклама не показывается непрерывно в течение lost_timeout, она сразу же считается потерянной.
num_of_tracking_entries 2 октета Действительно, только если delivery_mode имеет значение on_found.
[count]
Общее количество рекламодателей, отслеживаемых по фильтру.

Для представления отрицательных значений RSSI необходимо использовать дополнительный код.

Хост должен иметь возможность настраивать несколько фильтров с параметром APCF_Application_Address_type, установленным в значение 0x02 (для всех адресов широковещательной рассылки), чтобы управлять различными комбинациями фильтров.

Фильтрация, пакетная обработка и создание отчетов – взаимосвязанные понятия. Каждое объявление и связанный с ним ответ на сканирование должны пройти через все фильтры по очереди. Таким образом, полученные действия (delivery_mode) тесно связаны с фильтрацией. Доступны следующие способы доставки: report_immediately, batch и onFound. Значение OnLost связано со значением OnFound в том смысле, что оно будет следовать за OnFound в случае проигрыша.

На схеме ниже показана концептуальная модель обработки данных.

Когда фрейм объявления (или ответ на сканирование) получен, он применяется ко всем фильтрам в последовательном порядке. Возможно, что одно объявление вызовет немедленную отправку отчета на основе одного фильтра и пакетную отправку на основе другого.

Пороговые значения уровня RSSI (высокое и низкое) позволяют контролировать, когда кадр виден для обработки фильтром, даже если контроллер получил действительный пакет. Если выбран режим немедленной или пакетной отправки, то при дальнейшей обработке контроллером учитывается RSSI фрейма. Для разных приложений требуются разные отчеты и пакетная обработка. Это позволяет нескольким приложениям одновременно отправлять отчеты и/или пакеты результатов в прошивку. Например, пакетное сканирование активно в одном приложении, а затем другое приложение запускает обычное сканирование LE. Перед запуском пакетного сканирования фреймворк или приложение устанавливает подходящие фильтры. Затем, когда второе приложение выполнит обычное сканирование, пакетная обработка продолжится. Однако из-за регулярного сканирования это похоже на добавление нулевого фильтра (вместе со всеми существующими фильтрами) к команде сканирования с низким энергопотреблением. Параметры команды сканирования LE имеют приоритет, когда она активна. Если обычное сканирование LE отключено, контроллер вернется к предыдущему пакетному сканированию, если оно существовало.

Способ отправки данных OnFound основан на настроенных фильтрах. Сочетание, которое приводит к успешному выполнению действия фильтра, считается объектом, который нужно отслеживать для onLost. Соответствующее событие – это вложенное событие отслеживания рекламы LE.

Переход OnFound/OnLost для фильтра (если он включен) будет выглядеть следующим образом:

Для этой команды будет сгенерировано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
APCF_opcode 1 октет 0x01 – APCF Set Filtering Parameters
APCF_Action 1 октет Команда "Повтори" APCF_Action
APCF_AvailableSpaces 1 октет Количество доступных записей в таблице фильтров

LE_APCF_Command: broadcast_address_sub_cmd

Эта подкоманда используется для добавления или удаления адреса рекламодателя или для очистки списка адресов рекламодателей для фильтрации на чипе.

Sub OCF: 0x02

Параметр подкоманды Размер Назначение
APCF_Action 1 октет 0x00 – добавить
0x01 – удалить
0x02 – очистить
При удалении будет удален указанный широковещательный адрес в указанном фильтре.
Очистить – удаляет все широковещательные адреса в указанном фильтре.
APCF_Filter_Index 1 октет Индекс фильтра (0, max_filter-1)
APCF_Broadcaster_Address 6 октетов 6-байтовый адрес устройства, который нужно добавить в список широковещательных адресов или удалить из него.
APCF_Application_Address_type 1 октет 0x00: общедоступный
0x01: случайный
0x02: не применимо (игнорировать тип адреса)
Чтобы фильтровать отчеты о рекламе по типам идентификационных адресов (0x02, 0x03). Чтобы получить отчеты о рекламе с типами адресов 0x02 и 0x03, задайте для этого поля значение 0x02: NA (игнорировать тип адреса).

Для этой команды будет создано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
APCF_opcode 1 октет 0x02 – широковещательный адрес APCF
APCF_Action 1 октет Команда "Повтори" APCF_Action
APCF_AvailableSpaces 1 октет Количество свободных записей в таблице широковещательных адресов.

LE_APCF_Command: service_uuid_sub_cmd

Эта подкоманда используется для добавления или удаления UUID сервиса или для очистки списка UUID сервисов для фильтрации на чипе.

Sub OCF: 0x03

Параметр подкоманды Размер Назначение
APCF_Action 1 октет 0x00 – добавить
0x01 – удалить
0x02 – очистить
При удалении будет удален указанный адрес UUID сервиса в указанном фильтре.
Clear – удалить все UUID сервисов в указанном фильтре.
APCF_Filter_Index 1 октет Индекс фильтра (0, max_filter-1)
APCF_UUID 2,4,16 октет UUID сервиса (16-, 32- или 128-битный) для добавления в список или удаления из него.
APCF_UUID_MASK 2,4,16 октет Маска UUID сервиса (16-, 32- или 128-битная), которую нужно добавить в список. Его длина должна быть такой же, как у APCF_UUID..

Для этой команды будет создано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
APCF_opcode 1 октет 0x03 – UUID сервиса APCF
APCF_Action 1 октет Команда "Повтори" APCF_Action
APCF_AvailableSpaces 1 октет Количество бесплатных записей, доступных в таблице UUID сервиса

LE_APCF_Command: solicitation_uuid_sub_cmd

Эта подкоманда используется для добавления или удаления UUID запроса или для очистки списка UUID запросов для фильтрации на чипе.

Sub OCF: 0x04

Параметр подкоманды Размер Назначение
APCF_Action 1 октет 0x00 – добавить
0x01 – удалить
0x02 – очистить
При выборе варианта "Удалить" UUID-адрес запроса будет удален из указанного фильтра.
Команда clear удалит все UUID запросов в указанном фильтре.
APCF_Filter_Index 1 октет Индекс фильтра (0, max_filter-1)
APCF_UUID 2,4,16 октет UUID запроса (16-, 32- или 128-битный), который нужно добавить в список или удалить из него.
APCF_UUID_MASK 2,4,16 октет Маска UUID запроса (16-, 32- или 128-битная), которую нужно добавить в список. Его длина должна быть такой же, как у APCF_UUID.

Для этой команды будет сгенерировано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
APCF_opcode 1 октет 0x04 – UUID запроса APCF
APCF_Action 1 октет Команда "Повтори" APCF_Action
APCF_AvailableSpaces 1 октет Количество свободных записей, доступных в таблице UUID запросов

LE_APCF_Command: local_name_sub_cmd

Эта подкоманда используется для добавления или удаления строки локального имени или для очистки списка строк локальных имен для фильтрации на чипе.

Sub OCF: 0x05

Параметр подкоманды Размер Назначение
APCF_Action 1 октет 0x00 – добавить
0x01 – удалить
0x02 – очистить
Удаление приведет к удалению указанной строки локального имени в указанном фильтре.
Команда "Очистить" удалит все строки с локальными названиями в указанном фильтре.
APCF_Filter_Index 1 октет Индекс фильтра (0, max_filter-1)
APCF_LocName_Mandata_or_SerData Размер переменной Строка символов для локального названия.

Примечания
  • Сейчас максимальное количество символов в строке локального имени – 29.
  • Неприменимо, если действие – "Очистить" (0x2).

Для этой команды будет создано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
APCF_opcode 1 октет 0x05 – локальное имя APCF
APCF_Action 1 октет Команда "Повтори" APCF_Action
APCF_AvailableSpaces 1 октет Количество бесплатных записей, доступных в таблице "Местное название"

LE_APCF_Command: manf_data_sub_cmd

Эта подкоманда используется для добавления или удаления строки данных производителя или для очистки списка строк данных производителя для фильтрации на чипе.

Sub OCF: 0x06

Параметр подкоманды Размер Назначение
APCF_Action 1 октет 0x00 – добавить;
0x01 – удалить;
0x02 – очистить.
При выборе варианта "Удалить" будет удалена указанная строка данных производителя в указанном фильтре.
Clear – удаляет все строки данных производителя в указанном фильтре.
APCF_Filter_Index 1 октет Индекс фильтра (0, max_filter-1)
APCF_LocName_Mandata_or_SerData Переменный размер Строка символов для данных производителя.

Примечания
  • Сейчас максимальное количество символов в строке локального имени – 29.
  • Неприменимо, если действие – "Очистить" (0x2).
APCF_ManData_Mask Переменный размер Маска данных производителя, которую нужно добавить в список. Длина должна быть такой же, как у APCF_LocName_or_ManData_or_SerData.

Для этой команды будет сгенерировано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
APCF_opcode 1 октет 0x06 – данные производителя APCF
APCF_Action 1 октет Команда "Повтори" APCF_Action
APCF_AvailableSpaces 1 октет Количество бесплатных записей, доступных в таблице данных производителя

LE_APCF_Command: service_data_sub_cmd

Эта подкоманда используется для добавления или удаления строки данных сервиса или для очистки списка строк данных сервиса для фильтрации на чипе.

Sub OCF: 0x07

Параметр подкоманды Размер Назначение
APCF_Action 1 октет 0x00 – добавить
0x01 – удалить
0x02 – очистить
При удалении указанная строка данных сервиса будет удалена из указанного фильтра.
Команда Clear удалит все строки данных сервиса в указанном фильтре.
APCF_Filter_Index 1 октет Индекс фильтра (0, max_filter-1)
APCF_LocName_Mandata_or_SerData Переменный размер Строка символов для данных сервиса.

Примечания
  • Сейчас максимальное количество символов в строке локального имени – 29.
  • Неприменимо, если действие – "Очистить" (0x2).
APCF_LocName_Mandata_or_SerData_Mask Размер переменной Маска данных сервиса, которую нужно добавить в список. Длина должна быть такой же, как у APCF_LocName_or_ManData_or_SerData..

Для этой команды будет создано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
APCF_opcode 1 октет 0x07 – данные сервиса APCF
APCF_Action 1 октет Команда "Повтори" APCF_Action
APCF_AvailableSpaces 1 октет Количество бесплатных записей, доступных для таблицы "Данные сервиса"

LE_APCF_Command: transport_discovery_service_sub_cmd

Эта подкоманда используется для добавления или удаления фильтра сервиса обнаружения транспорта (TDS) или для очистки списка фильтров TDS для фильтрации на чипе. Используйте read_extended_features_sub_cmd, чтобы проверить, поддерживается ли эта команда.

Sub OCF: 0x08

Параметр подкоманды Размер Назначение
APCF_Action 1 октет 0x00 – добавить
0x01 – удалить
0x02 – очистить
При выборе варианта "Удалить" указанный фильтр TDS будет удален из указанного фильтра.
Очистить – удаляет все фильтры TDS в указанном фильтре.
APCF_Filter_Index 1 октет Индекс фильтра (0, max_filter-1)
Org_ID 1 октет Идентификатор организации, заданный Bluetooth SIG. Игнорируется, если APCF_Action имеет значение 0x02 (Clear).
TDS_Flags 1 октет Пометки TDS, которые нужно сопоставить. Игнорируется, если APCF_Action имеет значение 0x02 (Clear).
TDS_Flags_Mask 1 октет Маска для флагов TDS. Игнорируется, если APCF_Action имеет значение 0x02 (Clear).
Transport_Data_Length 1 октет Длина Transport_Data. Игнорируется, если параметр APCF_Action имеет значение 0x02 (Clear).
Transport_Data Размер переменной Размер зависит от Transport_Data_Length. Данные транспортного блока, которые нужно сопоставить. Игнорируется, если параметр APCF_Action имеет значение 0x02 (Clear).
Transport_Data_Mask_Length 1 октет Длина Transport_Data_Mask. Это значение должно быть равно Transport_Data_Length. Игнорируется, если параметр APCF_Action имеет значение 0x02 (Clear).
Transport_Data_Mask Переменный размер Размер зависит от Transport_Data_Mask_Length. Маска для данных транспортного блока. Длина должна быть такой же, как у Transport_Data. Игнорируется, если параметр APCF_Action имеет значение 0x02 (Clear).
Meta_Data_Type 1 октет 0x00 – недействительное значение.
0x01 – хеш Wi-Fi NAN.
Игнорировать, если APCF_Action имеет значение 0x02 (Clear).
Meta_Data_Length 1 октет Длина Meta_Data. Игнорируется, если APCF_Action имеет значение 0x02 (Clear).
Meta_Data Размер переменной Размер зависит от Meta_Data_Length. Метаданные для сопоставления. Игнорируется, если параметр APCF_Action имеет значение 0x02 (Clear).

Для этой команды будет сгенерировано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
APCF_opcode 1 октет 0x08 – служба обнаружения транспорта APCF
APCF_Action 1 октет Команда "Повтори" APCF_Action
APCF_AvailableSpaces 1 октет Количество свободных записей, доступных в таблице фильтров TDS

LE_APCF_Command: ad_type_sub_cmd

Эта подкоманда используется для добавления или удаления типа объявления или очистки списка типов объявлений для фильтрации на чипе. Чтобы проверить, поддерживается ли эта команда, используйте метод read_extended_features_sub_cmd.
Если APCF_AD_DATA_Length равно 0, отфильтруйте APCF_AD_TYPE без сравнения данных рекламы и маски данных рекламы. Если длина данных полученного пакета ADV превышает AD_DATA_LENGTH, сравните только первые AD_DATA_LENGTH байт данных AD и проигнорируйте остальные.

Sub OCF: 0x09

Параметр подкоманды Размер Назначение
APCF_Action 1 октет 0x00 – добавить
0x01 – удалить
0x02 – очистить
При удалении будет удален указанный тип объявления в указанном фильтре.
При выборе варианта "Очистить" будут удалены все типы объявлений в указанном фильтре.
APCF_Filter_Index 1 октет Индекс фильтра (0, max_filter-1)
APCF_AD_TYPE 1 октет Тип объявления, которое нужно добавить в список или удалить из него. Игнорировать, если APCF_Action – 0x02 (Очистить).
APCF_AD_DATA_Length 1 октет 0x00 – не фильтровать контент
Игнорировать, если APCF_Action – 0x02 (Очистить)
APCF_AD_DATA Размер переменной Переменный размер, зависит от APCF_AD_DATA_Length
. Игнорируется, если APCF_Action имеет значение 0x02 (Clear).
APCF_AD_DATA_MASK Переменный размер Переменная длина, зависит от APCF_AD_DATA_Length
Игнорируется, если APCF_Action имеет значение 0x02 (Clear)
Должна иметь ту же длину, что и APCF_AD_DATA.

Для этой команды будет сгенерировано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
APCF_opcode 1 октет 0x09 – тип объявления APCF
APCF_Action 1 октет Команда "Повтори" APCF_Action
APCF_AvailableSpaces 1 октет Количество свободных записей, доступных в таблице типов объявлений

LE_APCF_Command: read_extended_features_sub_cmd

Эта подкоманда используется для чтения расширенных функций APCF.

Sub OCF: 0xFF

Параметр подкоманды Размер Назначение
Неприменимо Пустой параметр команды.

Для этой команды будет сгенерировано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
APCF_opcode 1 октет 0xFF – APCF_Read_Extended_Features
APCF_extended_features 2 октета

Битовые маски для поддерживаемых расширенных функций:

  • Бит 0: поддержка фильтра сервиса обнаружения транспорта
  • Бит 1: поддержка фильтра по типу объявления
  • Биты 2–15: зарезервировано для будущего использования.

Ценность бита

  • 0 – не поддерживается.
  • 1 = поддерживается

Команда для получения информации о действиях контроллера и энергопотреблении

Цель этой информации – позволить функциям хост-системы анализировать все действия компонентов, включая контроллер Bluetooth и его макросостояние, в сочетании с тем, что происходит в приложениях и фреймворке. Для этого необходима следующая информация от стека Bluetooth и контроллера:

  • Стек Bluetooth: отчет о текущем макрооперационном состоянии контроллера.
  • Встроенное ПО: отчеты об агрегированных данных о действиях и энергопотреблении

Макросостояния стека хоста Bluetooth, определяемые на уровне пользователя:

  • Режим ожидания: [сканирование страницы, реклама с низким энергопотреблением, сканирование запроса, сканирование с низким энергопотреблением]
  • Сканирование: [вызов/запрос/попытка подключения]
  • Активный: [ACL link on, SCO link ongoing, sniff mode]

Контроллер отслеживает время передачи (Tx), время приема (Rx), время бездействия и общее потребление энергии. Они удаляются, когда хост считывает их.

LE_Get_Controller_Activity_Energy_Info

Это команда, относящаяся к определенному поставщику.

OCF: 0x159

Параметр подкоманды Размер Назначение
– Пустые параметры команды

Для этой команды будет сгенерировано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
total_tx_time_ms 4 октета Общее время выполнения Tx
total_rx_time_ms 4 октета Общее время выполнения рецепта
total_idle_time_ms 4 октета Общее время в режиме ожидания (не в энергосберегающем режиме сна)
total_energy_used 4 октета Общее потребление энергии [произведение тока (мА), напряжения (В) и времени (мс)]

Команда для расширенного набора параметров сканирования LE

Эта команда позволяет включить в контроллере более широкое окно сканирования и более длинный интервал. Согласно спецификации BT Core 5.2, верхний предел для окна и интервала сканирования составляет 10,24 секунды. Это мешает приложениям использовать интервалы сканирования, превышающие 10,24 секунды.

Базовый справочный материал: спецификация BT Core 5.2, стр. 2493 (команда LE Set Scan Parameters).

OCF: 0x15A

Параметр команды Размер Назначение
LE_Ex_Scan_Type 1 октет 0x00 – пассивное сканирование. Пакеты SCAN_REQ не отправляются (по умолчанию).
0x01 – активное сканирование. Может быть отправлено SCAN_REQ пакетов.
LE_Ex_Scan_Interval 4 октета Определяется как временной интервал между началом последнего сканирования LE и началом следующего.
Диапазон: от 0x0004 до 0x00FFFFFF
Значение по умолчанию: 0x0010 (10 мс)
Время = N * 0,625 мс
Диапазон времени: от 2,5 мс до 10442,25 секунды
LE_Ex_Scan_Window 4 октета Продолжительность сканирования LE. LE_Scan_Window должно быть меньше или равно LE_Scan_Interval.
Диапазон: от 0x0004 до 0xFFFF
Значение по умолчанию: 0x0010 (10 мс)
Время = N * 0,625 мс
Диапазон времени: от 2,5 мс до 40,95 с
Own_Address_Type 1 октет 0x00 – общедоступный адрес устройства (по умолчанию).
0x01 – случайный адрес устройства.
LE_Ex_Scan_Filter_Policy 0x00 – принимать все пакеты рекламы (по умолчанию). Пакеты направленной рекламы, не предназначенные для этого устройства, должны игнорироваться.
0x01 – игнорировать пакеты объявлений от устройств, которых нет в белом списке. Только список. Пакеты направленной рекламы, не предназначенные для этого устройства, должны игнорироваться.

Для этой команды будет сгенерировано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"

Команда для получения сведений для отладки контроллера

Цель этого элемента информации – получить от контроллера отладочную информацию в двоичном формате для последующей обработки и анализа. Это помогает устранять неполадки на местах и предоставляет инженерам набор инструментов для регистрации информации для анализа. Контролер может предоставить информацию по запросу хоста через событие (вложенное событие Controller Debug Info) или самостоятельно, если это необходимо. Например, с помощью этого сервиса можно передавать информацию о состоянии встроенного ПО, дампы памяти при сбоях, данные журналов и т. д.

OCF: 0x15B

Параметр команды Размер Назначение
Н/Д Пустой список параметров команды

Для этой команды будет сгенерировано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"

Поддержка аппаратной разгрузки A2DP

Функция разгрузки A2DP поддерживает перенос процесса кодирования аудио A2DP на аудиопроцессор, подключенный к контроллеру Bluetooth. Закодированный поток аудиоданных передается напрямую от аудиопроцессора к контроллеру Bluetooth без участия хоста Bluetooth. Хост Bluetooth по-прежнему отвечает за настройку и управление сеансом A2DP. Доступны две версии команд. Устаревшие команды с Sub OCF 0x01-0x02 поддерживают только кодеки с открытым исходным кодом. Версии с Sub-OCF 0x03-0x04 не зависят от настроенного кодека.

OCF: 0x15D

Запустить разгрузку A2DP (устаревшая функция)

Sub OCF: 0x01

Эта команда используется как для настройки процесса разгрузки A2DP, так и для запуска потока A2DP.

Параметр команды Размер Назначение
Codec 4 октета Тип кодека
0x01 – SBC
0x02 – AAC
0x04 – APTX
0x08 – APTX HD
0x10 – LDAC
0x20 – Opus
Max_Latency 2 октета Максимально допустимая задержка (в миллисекундах). Значение "0" отключает сброс.
SCMS-T_Enable 2 октета Октет 0: флаг, который позволяет добавить заголовок SCMS-T.
  • 0x00 – заголовок SCMS-T не включен.
  • 0x01 – заголовок SCMS-T включен.

Октет 1: значение заголовка SCMS-T, если он включен.

Sampling_Frequency 4 октета 0x01 – 44 100 Гц
0x02 – 48 000 Гц
0x04 – 88 200 Гц
0x08 – 96 000 Гц
Bits_Per_Sample 1 октет 0x01 – 16 бит на образец
0x02 – 24 бита на образец
0x04 – 32 бита на образец
Channel_Mode 1 октет 0x01 – моно
0x02 – стерео
Encoded_Audio_Bitrate 4 октета Битрейт закодированного аудио в битах в секунду.
0x00000000 – битрейт аудио не указан или не используется.
0x00000001 - 0x00FFFFFF - битрейт закодированного аудио в битах в секунду.
0x01000000 - 0xFFFFFFFF - зарезервировано.
Connection_Handle 2 октета Идентификатор подключения A2DP, которое настраивается.
L2CAP_Channel_ID 2 октета Идентификатор канала L2CAP, который будет использоваться для подключения A2DP.
L2CAP_MTU_Size 2 октета Максимальный размер MTU L2CAP, содержащего закодированные аудиопакеты
Codec_Information 32 октета Информация о кодеке.

Кодек SBC:

Ознакомьтесь с элементами информации о кодеке SBC в спецификации A2DP версии 1.3.
Октет 0: длина блока | поддиапазоны | метод распределения
Октет 1: минимальное значение Bitpool
Октет 2: максимальное значение Bitpool
Октет 3: частота дискретизации | режим канала
Октеты 4–31: зарезервировано

Кодек AAC:

Обратитесь к элементам информации о кодеке AAC в A2DP v1.3
Октет 0: тип объекта
Октет 1; b7: VBR
Октет 2–31: зарезервировано

Кодек LDAC

Октеты 0–3: идентификатор поставщика
0x0000012D

Октеты 4–5: идентификатор кодека
0x00AA – LDAC
Все остальные значения зарезервированы.

Октет 6: индекс битрейта:
0x00 – высокий
0x01 – средний
0x02 – низкий
0x03 – 0x7E – зарезервировано
0x7F – ABR (адаптивный битрейт)
0x80 – 0xFF – зарезервировано

Октет 7: режим канала LDAC
0x01 – стерео
0x02 – двойной
0x04 – моно
Другие зарезервированы

Октеты 8–31: зарезервировано.

Кодек Opus:

Октеты 0–3: идентификатор поставщика
0x000000E0

Октеты 4–5: идентификатор кодека
0x0001 – Opus
Все остальные значения зарезервированы

Октеты 6–31: зарезервировано

Все остальные кодеки:

Октеты 0–31: зарезервировано

Для этой команды будет создано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
Sub_Opcode 1 октет 0x01 – запуск разгрузки A2DP

Начать разгрузку A2DP

Sub OCF: 0x03

Эта команда используется как для настройки процесса разгрузки A2DP, так и для запуска потока A2DP.

Параметр команды Размер Назначение
Connection Handle 2 октета Дескриптор активного подключения HCI
L2CAP_Channel_ID 2 октета Идентификатор канала L2CAP, открытого для потоковой передачи A2DP
Data_Path_Direction 1 октет 0x00 – выход (источник/объединение AVDTP)
0x01 – вход (приемник/разделение AVDTP)
Peer_MTU 2 октета Максимальный размер пакетов L2CAP, согласованный с другим устройством.
CP_Enable_SCMS_T 1 октет 0x00 – отключить заголовок защиты контента SCMS-T
0x01 – включить заголовок защиты контента SCMS-T
CP_Header_SCMS_T 1 октет Если заголовок защиты контента SCMS-T включен (CP_SCMS_T_Enable имеет значение 0x01), определяет значение заголовка, предшествующего аудиоконтенту (см. раздел 3.2.1-2 спецификации A2DP), как определено в разделе 6.3.2 спецификации Bluetooth Assigned Numbers.
Игнорируется, если защита контента SCMS-T не включена.
Vendor_Specific_Parameters_Length 1 октет Длина параметров, относящихся к поставщику, в диапазоне от 0 до 128.
Если дополнительные параметры не указаны, используется значение 0.
Vendor_Specific_Parameters 0–128 октетов Параметры поставщика, предоставленные HAL Bluetooth Audio, CodecParameters.vendorSpecificParameters[].

Для этой команды будет создано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
Sub_Opcode 1 октет 0x03 – запуск разгрузки A2DP

Отключить разгрузку A2DP (устарело)

Sub OCF: 0x02

Эта команда используется для остановки потока A2DP.

Параметр команды Размер Назначение
Н/Д Пустой список параметров команды.

Для этой команды не заданы параметры.

Для этой команды будет сгенерировано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
Sub_Opcode 1 октет 0x02 – остановить разгрузку A2DP

Отключить разгрузку A2DP

Sub OCF: 0x04

Эта команда используется для остановки потока разгрузки A2DP.

Параметр команды Размер Назначение
Connection Handle 2 октета Дескриптор активного подключения HCI
L2CAP_Channel_ID 2 октета Идентификатор канала L2CAP, открытого для потоковой передачи A2DP
Data_Path_Direction 1 октет 0x00 – выход (источник/объединение AVDTP)
0x01 – вход (приемник/разделение AVDTP)

Для этой команды будет сгенерировано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
Sub_Opcode 1 октет 0x04 – отключение разгрузки A2DP

Команда для создания отчета о качестве Bluetooth

Команда BT Quality Report запускает в контроллере Bluetooth механизм, который передает хосту информацию о событиях, связанных с качеством связи Bluetooth. Вы можете включить четыре параметра:

  • Режим контроля качества. Контроллер периодически отправляет хосту подсобытие BQR, связанное с качеством связи.
  • Приближение к LSTO. Если от подключенного устройства Bluetooth не поступают пакеты в течение времени, превышающего половину значения параметра Link Supervision TimeOut (LSTO), контроллер сообщает хосту о событии Approaching LSTO.
  • A2DP Audio Choppy. Когда контроллер обнаруживает факторы, вызывающие прерывистый звук, он сообщает хосту о событии A2DP Audio Choppy.
  • (e)SCO Voice Choppy (Прерывистый звук (e)SCO). Когда контроллер обнаруживает факторы, вызывающие прерывистый звук, он сообщает хосту о событии (e)SCO Voice Choppy.
  • Root Inflammation. Это событие отправляется контроллером в стек, когда HAL или контроллер сталкивается с критической ошибкой и требуется перезапуск Bluetooth.
  • Трассировка сообщений LMP/LL: контроллер отправляет хосту сообщение LMP/LL, устанавливая связь с удаленным устройством.
  • Трассировка планирования нескольких профилей Bluetooth/совместного использования.Контроллер отправляет хосту информацию о планировании обработки нескольких профилей Bluetooth и совместного использования беспроводной связи в диапазоне 2,4 ГГц.
  • Механизм отладочной информации контроллера. Если он включен, контроллер может самостоятельно отправлять хосту отладочную информацию через подсобытие отладочной информации контроллера.
  • LE Audio Choppy (LE Audio с прерываниями). Когда контроллер обнаруживает факторы, вызывающие прерывания звука, он сообщает об этом хосту.
  • Расширенный режим статистики радиочастот. Контроллер передает хосту информацию о радиочастотах. Поддерживаются два варианта использования отчетов:
    • Периодические отчеты
    • Триггеры событий (начало/остановка трансляции и триггер события качества связи).
  • Механизм мониторинга состояния контроллера предоставляет хосту информацию о состоянии с помощью двух типов событий: периодических отчетов и отчетов, запускаемых событиями.
  • BQR_Report_Action команды Bluetooth Quality Report: хост может использовать эту команду HCI, чтобы получить одноразовый запрос для режима мониторинга качества, режима мониторинга энергопотребления или режима расширенной статистики радиочастот.

OCF: 0x15E

Параметр команды Размер Назначение
BQR_Report_Action 1 октет Действие для добавления или удаления отчетов о событиях качества, заданных в параметре BQR_Quality_Event_Mask, или для удаления всех отчетов.

0x00 – добавить
0x01 – удалить
0x02 – очистить
0x03 – однократный запрос

При выборе варианта "Удалить" отчеты о событиях, связанных с качеством, будут удалены.
При выборе варианта "Очистить" будут удалены все отчеты о событиях качества (параметр BQR_Quality_Event_Mask можно игнорировать).

BQR_Quality_Event_Mask 4 октета Битовые маски для выбранных отчетов о событиях, связанных с качеством.

Бит 0: включить режим мониторинга качества.
Бит 1: включение события приближения к LSTO (для ACL/(e)SCO/ISO).
Бит 2: включение события прерывистого воспроизведения аудио A2DP.
Бит 3: включение события прерывистого звука eSCO.
Бит 4: включение события воспаления корня.
Бит 5: включение режима мониторинга энергопотребления.
Бит 6: включить событие прерывания LE Audio.
Бит 7: включить событие сбоя подключения.
Бит 8: включение триггера события для расширенного режима статистики радиочастот.
Бит 9: включить периодический отчет о расширенной статистике радиочастот.
Бит 10: задайте, чтобы включить триггер событий механизма мониторинга состояния контроллера. (добавлено в BQRv7)
Бит 11: включить периодическое создание отчетов о состоянии контроллера. (добавлено в BQRv7)
Биты 12–14: зарезервированы.
Бит 15. Включите события качества, относящиеся к определенному поставщику.
Бит 16: включение трассировки сообщений LMP/LL.
Бит 17: включить трассировку планирования Bluetooth Multi-link/Coex.
Бит 18: включение механизма отладочной информации контроллера.
Бит 19: зарезервирован для сведений для отладки разгрузки.
Бит 20: триггер события дампа истории UART. (добавлено в BQRv7)
Биты 21–30: зарезервировано.
Бит 31: включение трассировки для определенного поставщика.

BQR_Minimum_Report_Interval 2 октета Укажите минимальный временной интервал для регистрации выбранных событий, связанных с качеством. Прошивка контроллера не должна сообщать о следующем событии в течение заданного временного интервала. Настройка интервала должна быть отдельной для каждого добавляемого события качества.

Единица измерения: мс.
Значение по умолчанию: 0 (интервал не ограничен).
Диапазон: 0–65 535 мс

BQR_Vendor_Specific_Quality_Event_Mask 4 октета Битовые маски для выбранных отчетов о событиях качества, относящихся к определенному поставщику.
Этот параметр действителен, только если задан бит 15 параметра BQR_Quality_Event_Mask.

Биты 0–31: зарезервировано.

BQR_Vendor_Specific_Trace_Mask 4 октета Битовые маски для выбранного отчета об отслеживании, относящегося к определенному поставщику.
Этот параметр действителен, только если задан бит 31 параметра BQR_Quality_Event_Mask.

Биты 0–31: зарезервировано.

Report_interval_multiple 4 октета Множитель для BQR_Minimum_Report_Interval. Если это значение больше или равно 1, интервал отчетов BQR будет иметь формат
Интервал отчетов BQR = Минимальный интервал отчетов BQR x Множитель интервала отчетов.
Встроенное ПО контроллера не должно сообщать о следующем событии в течение заданного временного интервала. Настройка интервала предназначена специально для добавленных событий качества.

Единица измерения: мс
Значение по умолчанию: 1
Диапазон: 0–4294967295 (0 эквивалентно 1)

Примечание. Если значение параметра BQR_Report_Interval превышает возможности контроллера, то по завершении команды контроллер должен вернуть максимальное время BQR_Report_Interval.

Для этой команды будет сгенерировано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
Current_Quality_Event_Mask 4 октета Указывает текущую настройку битовой маски.
Бит 0: режим мониторинга качества включен.
Бит 1: включена отправка отчетов о событиях, связанных с приближением даты окончания поддержки.
Бит 2: включена передача отчета о событиях, связанных с прерыванием воспроизведения аудио по протоколу A2DP.
Бит 3: включена отправка отчетов о событиях, связанных с прерывистой передачей голоса по каналу eSCO.
Бит 4: включены отчеты о событиях воспаления корня.
Бит 5: включен режим мониторинга энергопотребления.
Бит 6: включена отправка отчетов о событиях прерывания звука LE Audio.
Бит 7: событие сбоя подключения.
Бит 8: включить триггер события для расширенного режима статистики радиочастот.
Бит 9: включение периодической отправки расширенной статистики радиочастот.
Бит 10: задает триггер события для включенного механизма мониторинга состояния контроллера.
Бит 11: включить периодическую отправку отчетов о состоянии контроллера.
Биты 12–14: зарезервировано.
Бит 15: включена передача данных о качестве событий, относящихся к определенному поставщику.
Бит 16: включена трассировка сообщений LMP/LL.
Бит 17: включена трассировка планирования Bluetooth Multi-link/Coex.
Бит 18: включен механизм отладки контроллера.
Бит 19: зарезервировано для сведений для отладки о разгрузке
Бит 20: триггер события дампа истории UART
Биты 21–30: зарезервировано.
Бит 31: включена трассировка, относящаяся к определенному поставщику.
Current_Vendor_Specific_Quality_Event_Mask 4 октета Текущая настройка битовой маски.
Current_Vendor_Specific_Trace_Mask 4 октета Текущая настройка битовой маски.
BQR_Report_interval 4 октета Текущая настройка битовой маски.
Current_Vendor_Specific_Trace_Mask 4 октета Настройка BQR_Report_interval. Это должно быть минимальное значение между BQR_Minimum_Report_Interval * Report_interval_multiple или максимальным поддерживаемым интервалом контроллера.

Команда динамической буферизации аудио

Динамический аудио буфер уменьшает количество звуковых дефектов, изменяя размер буфера в контроллере Bluetooth в зависимости от различных сценариев.

OCF: 0x15F

Получить возможность буферизации аудио

Sub OCF: 0x01

Эта команда позволяет получить информацию о возможности буферизации аудио от контроллера Bluetooth.

Параметр команды Размер Назначение
Н/Д Пустой список параметров команды

Для этой команды будет сгенерировано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
Dynamic_Audio_Buffer_opcode 1 октет 0x01 – получить время буферизации аудио
Audio_Codec_Type_Supported 4 октета Битовые маски для поддерживаемых типов кодеков
Бит 0 – SBC
Бит 1 – AAC
Бит 2 – APTX
Бит 3 – APTX HD
Бит 4 – LDAC
Биты 5–31 зарезервированы
Audio_Codec_Buffer_Default_Time_For_Bit_0 2 октета Буферное время по умолчанию для типа кодека Bit 0, указанного в Audio_Codec_Type_Supported.
Если тип кодека Bit 0 не поддерживается, значение должно быть равно 0.
Единица измерения: мс
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 2 октета Максимальное время буферизации для типа кодека Bit 0, указанного в Audio_Codec_Type_Supported.
Это значение должно быть равно 0, если кодек типа Bit 0 не поддерживается.
Единица измерения: мс
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 2 октета Минимальное время буферизации для типа кодека Bit 0, указанного в Audio_Codec_Type_Supported.
Это значение должно быть равно 0, если кодек типа Bit 0 не поддерживается.
Единица измерения: мс.
Audio_Codec_Buffer_Default_Time_For_Bit_1 2 октета Время буферизации по умолчанию для кодека типа Bit 1, указанного в Audio_Codec_Type_Supported.
Это значение должно быть равно 0, если кодек типа Bit 1 не поддерживается.
Единица измерения: мс.
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 2 октета Максимальное время буферизации для типа кодека Bit 1, указанного в Audio_Codec_Type_Supported.
Это значение должно быть равно 0, если кодек типа Bit 1 не поддерживается.
Единица измерения: мс
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 2 октета Минимальное время буферизации для типа кодека Bit 1, указанного в Audio_Codec_Type_Supported.
Это значение должно быть равно 0, если кодек типа Bit 1 не поддерживается.
Единица измерения: мс
...... ...... ......
Audio_Codec_Buffer_Default_Time_For_Bit_31 2 октета Время буферизации по умолчанию для типа кодека Bit 31, указанного в Audio_Codec_Type_Supported.
Это значение должно быть равно 0, если кодек типа Bit 31 не поддерживается.
Единица измерения: мс.
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 2 октета Максимальное время буферизации для типа кодека Bit 31, указанного в Audio_Codec_Type_Supported.
Это значение должно быть равно 0, если кодек типа Bit 31 не поддерживается.
Единица измерения: мс
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 2 октета Минимальное время буферизации для типа кодека Bit 31, указанного в Audio_Codec_Type_Supported.
Это значение должно быть равно 0, если кодек типа Bit 31 не поддерживается.
Единица измерения: мс.

Как задать время буферизации аудио

Sub OCF: 0x02

Используйте эту команду, чтобы задать время буферизации аудио для контроллера Bluetooth.

Параметр команды Размер Назначение
Audio_Codec_Buffer_Time 2 октета Запрошенное время буферизации аудио для текущего кодека.
Единица измерения: миллисекунды.

Для этой команды будет сгенерировано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
Dynamic_Audio_Buffer_opcode 1 октет 0x02 – задать время буферизации аудио
Audio_Codec_Buffer_Time 2 октета Текущее время буферизации аудио в контроллере Bluetooth.
Единица измерения: мс.

Порог близости подключения (версия 1.06)

LE_Add_Device_To_Filter_Accept_List_With_Proximity_Threshold_Command

Эту команду можно использовать, чтобы указать пороговое значение близости подключения (потери пути и RSSI) при добавлении устройства в список разрешенных фильтров.

Подключение должно выполняться только в том случае, если значение потерь сигнала ниже порогового.

Если TxPower недоступен или используется значение No Path Loss filtering, подключение должно выполняться только в том случае, если значение RSSI выше указанного порогового значения RSSI.

Эту команду можно использовать вместо стандартной команды Bluetooth LE Add Device To Filter Accept List command.

Если эта команда вызывается с разными пороговыми значениями, когда устройство уже находится в списке разрешенных фильтров, пороговые значения должны быть обновлены.

Основной источник: спецификация BT Core 6.2, 7.8.16 (команда LE Add Device To Filter Accept List).

Эту команду не следует использовать в следующих случаях:

  • если в правилах фильтрации рекламы используется список разрешенных фильтров и реклама включена;
  • правило фильтрации сканирования использует список разрешенных фильтров и сканирование включено;
  • правила фильтрации инициатора используют список разрешенных фильтров, а команда HCI_LE_Create_Connection или HCI_LE_Extended_Create_Connection находится в ожидании.

LE Remove Device From Filter Accept List должен удалить устройство из списка разрешенных фильтров, добавленного этой командой.

Код операции: 0xFD66 (OCF: 0x166)

Параметр команды Размер Назначение
Address_Type 1 октет 0x00 – публичный адрес устройства
0x01 – случайный адрес устройства
0xFF – устройства, отправляющие анонимную рекламу
Все остальные значения зарезервированы для использования в будущем.
LE_Device_Address 6 октетов Публичный или случайный адрес
Адрес игнорируется, если для параметра Address_Type задано значение 0xFF.
Connection_Path_Loss_Threshold 1 октет Диапазон: от 0 до +100, +127 [в дБ]
Обозначает пороговое значение потерь на пути сигнала, при котором устанавливается подключение к обнаруженному устройству (от 0 до +100). Чтобы установить соединение, значение параметра "Потери на трассе" должно быть ниже. Значение +127 используется для обозначения No Path Loss filtering. Если значение TxPower недоступно или равно +127, команда должна использовать фильтрацию RSSI, описанную ниже.
Connection_RSSI_Threshold 1 октет Диапазон: от -127 до +20, +127 [в дБм]
Обозначает пороговое значение RSSI для подключения к устройству при его обнаружении. от -127 до +20. Для подключения требуется более высокое значение RSSI. Фильтрация по RSSI используется, когда TxPower недоступен или когда для порога потери пути задано значение +127. Значение +127 используется для обозначения No RSSI filtering.

Если для порогового значения потери пути и порогового значения RSSI задано значение +127, эта команда должна работать так же, как стандарт Bluetooth LE Add Device To Filter Accept List command.

Для этой команды будет сгенерировано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"

Событие HCI (зависит от поставщика)

В некоторых случаях требуются события HCI, относящиеся к поставщику. См. рисунок 5.4 на странице 1897 спецификации BT Core 5.2. Параметр события 0 всегда будет содержать первый код подсобытия, на основе которого декодируется остальная часть события HCI.

Параметр события Размер Назначение
HCI_vendor_specific_event_code 1 октет 0xFF
sub_event_code 1 октет Код подсобытия будет занимать один октет, байт, который следует сразу за длиной параметра в пакете события HCI.

Вложенное событие "Превышение порога использования хранилища"

Это событие означает, что пороговое значение хранилища было превышено.

Код подсобытия = 0x54

Параметр подсобытия Размер Назначение
Нет

Подобное событие изменения статуса рекламы в ограниченном режиме

Это событие означает, что рекламный экземпляр изменил свое состояние. В настоящее время это событие используется только для указания того, какой рекламный экземпляр был остановлен в результате подключения.

Код подсобытия = 0x55

Параметр подсобытия Размер Назначение
Advertising_instance 1 октет Идентификатор определенного экземпляра рекламы.
Допустимые значения: от 0 до max_advt_instances–1.
State_Change_Reason 1 октет 0x00: получено подключение
Connection_handle 2 октета Идентифицирует подключение, из-за которого экземпляр advt был отключен (0xFFFF, если подключение недействительно).

Подобъект отслеживания рекламы LE

Это событие регистрируется, когда рекламодатель найден или потерян.

Код дополнительного события – 0x56.

Параметр подсобытия Размер Назначение
APCF_Filter_Index 1 октет Индекс фильтра (0, max_filter-1)
Advertiser_State 1 октет 0x00: рекламодатель найден
0x01: рекламодатель потерян
Advt_Info_Present 1 октет 0x00 – информация о рекламодателе (Advt_Info) присутствует
0x01 – информация о рекламодателе (Advt_Info) отсутствует
Advertiser_Address 6 октетов Общедоступный или случайный адрес
Advertiser_Address_Type 1 октет 0x00 – публичный адрес
0x01 – случайный адрес
Advt_Info Tx_Pwr[0] – 1 октет
RSSI[0] – 1 октет
Timestamp[0] – 2 октета
Adv packet_len[0] – 1 октет
Adv_packet[0] – Adv_packet_len октетов
Scan_data_resp_len[0] – 1 октет
Scan_data_resp[0] – Scan_data_resp октетов

Дополнительное событие "Сведения для отладки контроллера"

Это событие используется контроллером для передачи хосту двоичных сведений для отладки.

Код подсобытия = 0x57

Параметр подсобытия Размер Назначение
debug_block_byte_offset_start 2 октета Смещение от начала блока отладки в байтах
last_block 1 октет 0x00: присутствуют дополнительные данные для отладки
0x01: последний двоичный блок; больше данных для отладки нет
cur_pay_load_sz 2 октета Размер двоичного блока в текущем событии
Debug_Data Переменная Данные для отладки cur_payload_sz

LE Broadcast Channel Map Classification (v1.06)

Уровень радиошума в каналах Bluetooth – критический фактор, определяющий успешность приема пакетов. Чтобы оптимизировать надежность передачи, необходимо классифицировать каналы по качеству. В стандартном сценарии источник трансляции LE Audio обычно не знает, какие устройства активно слушают его трансляцию. Поэтому источник трансляции должен полагаться исключительно на собственную оценку качества канала, чтобы определить карту каналов BIG. Однако карта BIG, определяемая исключительно источником, может быть неоптимальной для каждого приемника из-за различных условий окружающей среды или наличия местных источников помех рядом с отдельными приемниками. Если бы широковещательный приемник мог передавать информацию о классификации каналов источнику широковещательной рассылки, тот мог бы соответствующим образом адаптировать карту каналов BIG. Это значительно повысит устойчивость передачи и приема трансляций к помехам.

Например, в приложениях для персональной передачи аудио (PAS) между наушниками и источником трансляции устанавливается канал LE ACL (действующий как помощник по трансляции для синхронизации с локальным источником трансляции). Существующее подключение LE ACL можно использовать для передачи информации о классификации каналов от наушников (через пакеты LL_CHANNEL_STATUS_IND) к источнику трансляции. После этого источник трансляции может использовать эту информацию, чтобы уточнить карту каналов BIG.

Поэтому мы определяем LE_BIG_Set_Channel_Map_Classification_Command. Эта команда позволяет учитывать при управлении картой каналов в источнике BIG информацию о классификации каналов, полученную от периферийных устройств. Эта команда позволяет задать для контроллера определенный дескриптор подключения LE ACL. Получив эту информацию, контроллер определит карту каналов BIG на основе данных о классификации каналов, связанных с предоставленными подключениями LE ACL.

Реализация этого VSC обязывает источник трансляции учитывать несколько источников классификации каналов при построении карты каналов BIG. Например, контроллер может определить пересечение "хороших" классификаций каналов, о которых сообщают подключенные удаленные устройства, и применить это к карте каналов BIG. Конкретный алгоритм объединения классификаций каналов выбирает поставщик контроллера, что позволяет ему внедрять инновации и оптимизировать работу.

LE_BIG_Set_Channel_Map_Classification_Command

Код операции: 0xFD65 (OCF: 0x165)

Параметр команды Размер Назначение
Sub_opcode 1 октет 0x01 – задать карту каналов BIG с помощью дескрипторов подключений LE ACL
0x02–0x0E – зарезервировано для будущего использования
Set_BIG_Channel_Action 1 октет Действие, позволяющее добавить или удалить BD_ADDR или дескрипторы подключения LE ACL, или очистить все.
0x00 – добавить
0x01 – удалить
0x02 – очистить
0x03–0xFF – зарезервировано
BIG_Handle 1 октет Указывает дескриптор BIG, который нужно обновить с помощью классификации канала периферийного устройства.
Диапазон: от 0x00 до 0xEF.
cmd_para[] Переменная Переменные параметры зависят от Set_BIG_Channel_opcode

LE_BIG_Set_Channel_Map_Classification_Command_by_Conn_Handle

Sub OCF: 0x01

Параметр команды Размер Назначение
Sub_opcode 1 октет 0x01 – задать карту каналов BIG с помощью дескрипторов подключений LE ACL
0x02–0x0E – зарезервировано для будущего использования
Set_BIG_Channel_Action 1 октет Действие, позволяющее добавить или удалить дескрипторы подключений LE ACL или очистить все.
0x00 – добавить
0x01 – удалить
0x02 – очистить
0x03–0xFF – зарезервировано
BIG_Handle 1 октет Указывает дескриптор BIG, который нужно обновить, добавив классификацию канала периферийного устройства.
Диапазон: от 0x00 до 0xEF.
Number_of_LE_ACL_Connections 1 октет Указывает количество подключений LE ACL, которые будут использоваться для обновления карты большого канала.
Игнорируется, если для Set_BIG_Channel_Action задано значение Clear (0x02)
Диапазон: от 0x01 до 0xFF
LE_ACL_Connection_Handles Переменная (количество подключений LE ACL * 2 октета) Размер переменный, зависит от значения параметра Number_of_LE_ACL_Connections
Игнорировать, если для параметра Set_BIG_Channel_Action задано значение Clear (0x02)
Диапазон дескрипторов подключения: от 0x0000 до 0x0EFF

Для этой команды будет сгенерировано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус выполнения команды. Возвращает SUCCESS, когда добавлены все дескрипторы подключений LE ACL.
Set_BIG_Channel_opcode 1 октет Команда Echo возвращает код операции Set_BIG_Channel_opcode
Set_BIG_Channel_Action 1 октет Действие Set_BIG_Channel_Action команды Echo back
BIG_Handle 1 октет Возвращает BIG_Handle команды Echo

Подобное событие отчета о качестве Bluetooth

Это событие указывает на одно из следующих действий: произошло событие, связанное с качеством Bluetooth-соединения; контроллер загрузил трассировку сообщений LMP/LL и трассировку планирования Bluetooth Multi-link/Coex; контроллер сбросил данные отладочной информации.

Параметр подсобытия Размер Назначение
Quality_Report_Id 1 октет 0x01 – отчеты о качестве в режиме мониторинга.
0x02: приближается к LSTO.
0x03: A2DP Audio Choppy.
0x04: (e)SCO Voice Choppy.
0x05–0x06: зарезервировано.
0x07: LE audio choppy.
0x08: ошибка подключения.
0x09–0xFF: зарезервировано.
Packet_Types 1 октет 0x01: ID
0x02: NULL
0x03: POLL
0x04: FHS
0x05: HV1
0x06: HV2
0x07: HV3
0x08: DV
0x09: EV3
0x0A: EV4
0x0B: EV5
0x0C: 2-EV3
0x0D: 2-EV5
0x0E: 3-EV3
0x0F: 3-EV5
0x10: DM1
0x11: DH1
0x12: DM3
0x13: DH3
0x14: DM5
0x15: DH5
0x16: AUX1
0x17: 2-DH1
0x18: 2-DH3
0x19: 2-DH5
0x1A: 3-DH1
0x1B: 3-DH3
0x1C: 3-DH5
0x1D ~ 0x50: зарезервировано
0x51: пакет ISO
0x52: 1M PHY
0x53: 2M PHY
0x54: Codec PHY S=2
0x55: Codec PHY S=8
0x56 ~ 0xFF: зарезервировано
Connection_Handle 2 октета Дескриптор подключения ACL/(e)SCO/ISO.
Connection_Role 1 октет Роль, выполняемая для подключения.
0x00: центральное устройство
0x01: периферийное устройство
0x02–0xFF: зарезервировано.
TX_Power_Level 1 октет Текущий уровень мощности передачи для указанного параметра Connection_Handle.

Это значение должно совпадать с ответом контроллера на команду HCI_Read_Transmit_Power_Level HCI.

RSSI 1 октет [в дБм]

Значение индикатора мощности принимаемого сигнала (RSSI) для указанного параметра Connection_Handle.
Это значение должно быть абсолютным значением силы сигнала приемника.
Диапазон: от -127 до +20

SNR 1 октет [в дБ]

Значение отношения сигнал/шум (SNR) для указанного Connection_Handle.
Контроллер должен предоставлять среднее отношение сигнал/шум для всех каналов, используемых каналом связи.

Unused_AFH_Channel_Count 1 октет Количество неиспользуемых каналов в AFH_channel_map.
0x4F ~ 0xFF: зарезервировано.
AFH_Select_Unideal_Channel_Count 1 октет Указывает количество каналов, которые подвержены помехам и имеют плохое качество, но все равно выбраны для AFH.
Минимальное количество каналов, разрешенное спецификацией Bluetooth, – 20. Поэтому даже если все 79 каналов имеют помехи и низкое качество, контроллеру все равно необходимо выбрать не менее 20 каналов для AFH.
LSTO 2 октета Текущие настройки времени ожидания для родительского контроля.
Время = N * 0,625 мс
Диапазон времени: от 0,625 мс до 40,9 с
Connection_Piconet_Clock 4 октета Часы пикосети для указанного значения Connection_Handle.
Это значение должно совпадать с ответом контроллера на команду HCI_Read_Clock с параметром Which_Clock, равным 0x01 (Piconet Clock).
Единица измерения: N * 0,3125 мс (1 такт Bluetooth)
Retransmission_Count 4 октета Количество повторных передач с момента последнего события.
Этот счетчик сбрасывается после отправки отчета организатору.
No_RX_Count 4 октета С момента последнего события не было получено ни одного пакета.
Счетчик увеличивается, если пакет не получен в запланированное время или полученный пакет поврежден.
Этот счетчик сбрасывается после отправки отчета организатору.
NAK_Count 4 октета Количество отрицательных подтверждений с момента последнего события.
После отправки отчета на хост счетчик сбрасывается.
Last_TX_ACK_Timestamp 4 октета Временная метка последнего подтверждения передачи. Они основаны на часах Bluetooth центральной точки пикосети (CLK).
Единица измерения: N * 0,3125 мс (1 такт Bluetooth)
Flow_Off_Count 4 октета Количество случаев, когда контроллер получил сигнал Flow-off (STOP) с момента последнего события.
Этот счетчик сбрасывается после отправки отчета организатору.
Last_Flow_On_Timestamp 4 октета Временная метка последнего перехода к следующему видео. Оно основано на часах Bluetooth центрального устройства пикосети (CLK).
Единица измерения: N * 0,3125 мс (1 такт Bluetooth)
Buffer_Overflow_Bytes 4 октета [в байтах]

Количество переполнений буфера с момента последнего события.
Контроллер подсчитывает, сколько байтов данных было удалено.
После отправки отчета на хост счетчик сбрасывается.

Buffer_Underflow_Bytes 4 октета [в байтах]

Количество опустошений буфера с момента последнего события.
После отправки отчета на хост счетчик сбрасывается.

bdaddr 6 октетов Адрес удаленного устройства
cal_failed_item_count 1 октет Количество элементов, для которых не удалось выполнить калибровку.
TX_Total_Packets 4 октета Количество отправленных пакетов.
TX_UnAcked_Packets 4 октета Количество пакетов, для которых не было получено подтверждение.
Этот счетчик сбрасывается после отправки отчета организатору.
TX_Flushed_Packets 4 октета Количество пакетов, которые не были отправлены точкой сброса.
Этот счетчик сбрасывается после отправки отчета организатору.
TX_Last_Subevent_Packets 4 октета Количество пакетов, которые уровень канала передачи данных передает в последнем подсобытии события CIS.
Этот счетчик сбрасывается после отправки отчета организатору.
Если для ссылки нет действительного значения, то значение равно нулю.
CRC_Error_Packets 4 октета Количество полученных пакетов с ошибкой CRC с момента последнего события.
После отправки отчета на хост счетчик сбрасывается.
RX_Duplicate_Packets 4 октета Количество дублирующихся пакетов, полученных с момента последнего события.
Этот счетчик сбрасывается после отправки отчета организатору.
RX_Unreceived_Packets 4 октета Количество неполученных пакетов совпадает с параметром команды LE READ ISO Link Quality (см. спецификацию Bluetooth версии 5.4). Связанные потоки – CIS и BIS.
Когда это значение увеличивается, уровень связи не получает определенную полезную нагрузку к моменту сброса (в CIS) или в конце связанного с ним события (в BIS; см. спецификацию Bluetooth версии 5.4, том 6, часть Б, раздел 4.4.6.6).
Coex_Info_Mask 2 октета Бит 0 – CoexInvolvement. Указывает, что при создании отчета, вероятно, были задействованы действия, связанные с сосуществованием (например, A2DP Chops и Approaching LSTO).
Бит 1 – WL 2G Radio Active: указывает, что радиомодуль WLAN 2G активен.
Бит 2 – WL 2G Connected: указывает, что радиомодуль WLAN 2G активен и подключен.
Бит 3 – WL 5G/6G Radio Active: указывает, что радиомодуль WLAN 5G/6G активен.
Биты 4–15 – зарезервированы
Параметр Vendor Specific (общая длина параметра – подлежит уточнению) * октеты Поставщик контроллера может получить дополнительные параметры.

Код подсобытия = 0x58 [Идентификатор отчета о качестве = 0x05, событие воспаления корня]

Это событие указывает на то, что HAL Bluetooth или контроллер столкнулись с критической ошибкой и стеку Bluetooth необходимо записать эту ситуацию и перезапуститься. Контроллер должен отправить событие Root_Inflammation_Event в стек Bluetooth до отправки первого фрагмента событий со сведениями для отладки в любом случае.

Параметр Error_Code содержит код ошибки, полученный от HAL/контроллера, или 0, если это ошибка, связанная с поставщиком чипсета. Vendor_Specific_Error_Code содержит код ошибки, относящийся к поставщику чипсета, из HAL/контроллера. Если параметр Error_Code не равен 0, то для этого параметра должно быть задано значение 0. Параметры Error_Code и Vendor_Specific_Error_Code не должны одновременно иметь значение 0.

Параметр вложенного события Размер Назначение
Quality_Report_Id 1 октет 0x00–0x04: зарезервировано.
0x05: воспаление корня.
0x06 ~ 0xFF: зарезервировано.
Error_Code 1 октет 0x00: включен код ошибки, относящийся к поставщику чипсета.
0x01 ~ 0xFF: произошла ошибка контроллера. Список кодов ошибок и их описаний можно найти в спецификации Bluetooth [Vol 2], Part D, Error Codes.
Vendor_Specific_Error_Code 1 октет 0x00 – код ошибки поставщика чипсета не включен.
0x01 ~ 0xFF: код ошибки, относящийся к поставщику чипсета.
Параметр, заданный поставщиком (Общая длина параметра – 4) * октеты Поставщик контроллера может получить дополнительные параметры.

Код подсобытия = 0x58 [Quality_Report_Id = 0x06, событие мониторинга энергопотребления]

Это событие содержит информацию о потреблении энергии и состоянии контроллера Bluetooth за определенный период времени. Это событие помогает разработчикам и инженерам анализировать, как контроллер управляет питанием, определять, какие действия потребляют больше всего энергии, и устранять неполадки, связанные с питанием.

Параметры в отчете отслеживают ключевые показатели, в том числе:

  • Среднее текущее потребление. Общий ток, используемый контроллером.
  • Время, проведенное в разных состояниях. Общее время (в миллисекундах), в течение которого контроллер находится в неактивном (спящем или энергосберегающем) состоянии и в активном состоянии (подключение, передача или получение данных).
  • Количество переходов между состояниями. Сколько раз контроллер переходил из неактивного состояния в активное и наоборот.
  • Время, проведенное в определенных состояниях радиомодуля. Отдельные показатели времени, затраченного на передачу (Tx) и прием (Rx) для подключений BR/EDR (наушники Bluetooth) и LE (Bluetooth с низким энергопотреблением).
  • Средние уровни мощности передачи. Средняя мощность (в дБм), используемая для передачи по каналам BR/EDR и LE.
  • Подробные данные о работе цепочки. Отчеты о времени, затраченном на активную передачу или прием цепочек, с разделением на операции с одной и двумя цепочками, а также на внутренние (iPA) и внешние (ePA) усилители мощности.
  • Время сканирования. Время, в течение которого контроллер активно сканировал устройства BR/EDR и LE.

Изучая эти параметры, инженеры могут получить представление об энергоэффективности контроллера и оптимизировать его работу.

Параметр подсобытия Размер Назначение
Quality_Report_Id 1 октет 0x06: мониторинг энергопотребления
Average_Current_Consumption 2 октета [в мА] Среднее потребление тока всех действий, выполняемых контроллером
Idle_Total_Time (сон) 4 октета [в мс] Общее время в режиме ожидания (состояния низкого энергопотребления, спящий режим).
Idle_Sate_Enter_Count 4 октета Показывает, сколько раз контроллер переходил в режим ожидания.
Active_Total_Time 4 октета [в мс] Общее время в активном состоянии (запрос, вызов, трафик ACL/SCO/eSCO/BIS/CIS, обработка задач).
Active_State_Enter_Count 4 октета Показывает, сколько раз контроллер переходил в активное состояние.
BR_RDR_Tx_Total_Time 4 октета [в мс] Общее время в состоянии передачи Tx(передача трафика ACL/SCO/eSCO), относящемся к BR/EDR.
BR_RDR_Tx_State_Enter_Count 4 октета Показывает, сколько раз контроллер переходил в определенное состояние передачи BR/EDR.
BR_RDR_Tx_Average_Power_Level 1 октет [в дБм] Средний уровень мощности передачи всех каналов BR/EDR
BR_RDR_Rx_Total_Time 4 октета [в мс] Общее время, проведенное в состоянии приема данных BR/EDR (получение трафика ACL/SCO/eSCO).
BR_RDR_Rx_State_Enter_Count 4 октета [в мс] Указывает, сколько раз контроллер переходит в состояние приема BR/EDR.
LE_Tx_Total_Time 4 октета [в мс] Общее время, проведенное в состоянии передачи данных LE (передача трафика рекламы ACL/BIS/CIS или LE).
LE_Tx_State_Enter_Count 4 октета Указывает, сколько раз контроллер переходит в состояние Rx, характерное для BR/EDR.
LE_Tx_Average_Power_Level 1 октет [в дБм] Средний уровень мощности передачи всех каналов LE.
LE_Rx_Total_Time 4 октета [в мс] Общее время, проведенное в состоянии приема данных LE (от ACL/BIS/CIS или трафика сканирования LE).
LE_Rx_State_Enter_Count 4 октета [в мс] Указывает, сколько раз контроллер переходит в состояние Rx, характерное для LE.
Report_Time_Duration (общее время) 4 октета [в мс] Общая продолжительность сбора информации о питании.
RX_Active_One_Chain_Time 4 октета [в мс] Время, в течение которого приемник активен в одной цепочке.
RX_Active_Two_Chain_Time 4 октета [в мс] Время, в течение которого приемник активен в двух цепочках.
TX_iPA_Active_One_Chain_Time 4 октета [в мс] Продолжительность внутренней передачи, активной в одной цепочке.
TX_iPA_Active_Two_Chain_Time 4 октета [в мс] Длительность внутренней передачи, активной в двух цепочках.
TX_ePA_Active_One_Chain_Time 4 октета [в мс] Продолжительность активности внешнего передатчика в одной цепочке
TX_ePA_Active_Two_Chain_Time 4 октета [в мс] Продолжительность активности внешнего передатчика в двух цепочках
BREDR_RX_Active_Scan_total_Time 4 октета [в мс] Период времени (в мс) для активного времени приема при сканировании BR/EDR
LE_RX_Active_Scan_total_Time 4 октета [в мс] Период времени (в мс) для активного времени приема при сканировании LE

Код подсобытия = 0x58 [Quality_Report_Id = 0x09~0x0A, событие расширенной статистики радиочастот]

Событие "Расширенная статистика радиочастот Bluetooth" содержит подробные показатели эффективности радиомодуля контроллера Bluetooth. Событие может быть активировано двумя способами:

  • По триггеру (0x09). Однократный отчет отправляется в ответ на определенную команду.
  • По монитору (0x0A). Контроллер периодически отправляет отчеты с заданным интервалом.

Параметры события – это счетчики пакетов, которые отслеживают различные действия радиомодуля за определенный период времени.

Основные показатели и их назначение
  • Статистика мощности передачи. Эти счетчики отслеживают пакеты, отправленные с использованием различных конфигураций мощности, различая внутренние (iPA) и внешние (ePA) усилители мощности, а также различные режимы разнесения антенн (Div) или формирования направленного сигнала (BF). Это помогает определить, какие настройки мощности и антенны используются чаще всего.
  • Корзины индикатора мощности принимаемого сигнала (RSSI). Эти параметры позволяют классифицировать полученные пакеты на основе мощности сигнала. В отчете указывается количество пакетов в определенных диапазонах RSSI (например, менее -90 дБм, от -70 до -75 дБм), что позволяет получить четкое представление о качестве связи. Высокое значение в столбцах со слабым сигналом (например, < -90 дБм) указывает на плохое подключение.
  • Разница в уровне принимаемого сигнала (RSSI). Этот показатель отражает разницу в мощности сигнала между двумя приемными антеннами (если они есть). Счетчики отслеживают, сколько пакетов имеют дельту RSSI в разных диапазонах. Большая разница (например, более 11 дБм) может указывать на помехи или физическое препятствие, поскольку одна антенна получает гораздо более сильный сигнал, чем другая.
  • Переключение антенн и повторная передача. В отчете указано, как часто контроллер переключается между антеннами и отслеживает повторно переданные пакеты (ReTX). Большое количество повторных передач часто указывает на слабое или ненадежное соединение, требующее повторной отправки пакетов.
  • Качество канала. Эти параметры позволяют получить общее представление о состоянии разных каналов связи, которые классифицируются как "Хорошее", "Нормальное", "Плохое" или "Очень плохое" на основе показателя RSSI. Это позволяет сразу получить представление о радиочастотной среде.
  • Очередь буфера TX. В этом разделе отслеживается количество пакетов, ожидающих в буфере передачи контроллера для разных типов каналов, таких как ACL (асинхронный логический канал, ориентированный на подключение), LECONN (подключение LE) и LEISOC (изохронный канал LE). Большое количество буферов может указывать на узкое место или проблему с передачей данных от хоста к контроллеру.
Параметр подсобытия Размер Назначение
Quality_Report_Id 1 октет 0x09: Advance RF Stats By Trigger
0x0A: Advance RF Stats By Monitor
Extension_info 1 октет Информация о версии BQR.
0x01 для BQRv6
0x02 для BQRv7
Report_Time_Period 4 октета Период времени, за который собираются данные об эффективности. Единица измерения: миллисекунды.
TX_Power_iPA_BF 4 октета Счетчик пакетов iPA BF
TX_Power_ePA_BF 4 октета Счетчик пакетов ePA BF
TX_Power_iPA_Div 4 октета Счетчик пакетов в контейнере ePA Div
TX_Power_ePA_Div 4 октета Счетчик пакетов в контейнере ePA Div
RSSI_chain_50 4 октета Счетчик пакетов цепи RSSI > -50 дБм
RSSI_chain_50_55 4 октета Счетчик пакетов для диапазона RSSI от -50 до -55 дБм.
RSSI_chain_55_60 4 октета Счетчик пакетов цепочки RSSI в диапазоне от -55 дБм до >-60 дБм
RSSI_chain_60_65 4 октета Счетчик пакетов цепочки RSSI между -60 дБм и >-65 дБм
RSSI_chain_65_70 4 октета Счетчик пакетов цепочки RSSI между -65 дБм и >-70 дБм
RSSI_chain_70_75 4 октета Счетчик пакетов цепочки RSSI между -70 дБм и >-75 дБм
RSSI_chain_75_80 4 октета Счетчик пакетов цепочки RSSI между -75 дБм и >-80 дБм
RSSI_chain_80_85 4 октета Счетчик пакетов для цепочки RSSI в диапазоне от -80 дБм до >-85 дБм
RSSI_chain_85_90 4 октета Счетчик пакетов цепочки RSSI между -85 дБм и >-90 дБм
RSSI_chain_90 4 октета Счетчик пакетов в цепи RSSI < -90 дБм
RSSI_delta_2 4 октета Счетчик пакетов с разницей RSSI < 2 дБм
RSSI_delta_2_5 4 октета Счетчик пакетов с разницей RSSI от 2 до 5 дБм
RSSI_delta_5_8 4 октета Счетчик пакетов с разницей RSSI от 5 до 8 дБм
RSSI_delta_8_11 4 октета Счетчик пакетов дельты RSSI между 8 дБм и 11 дБм
RSSI_delta_11 4 октета Счетчик пакетов дельты RSSI > 11 дБм
Antenna_Switch_Count 4 октета Счетчик пакетов для события переключения антенны
ReTX_iPA_BF 4 октета Счетчик пакетов ReTX_iPA_BF за последний период времени
ReTX_ePA_BF 4 октета Счетчик пакетов ReTX_ePA_BF за последний период времени
ReTX_iPA_Div 4 октета Счетчик пакетов ReTX_iPA_Div за последний период времени
ReTX_ePA_Div 4 октета Счетчик пакетов ReTX_ePA_Div за последний период времени
Channel_count_Good 1 октет Количество каналов, RSSI которых попадает в Bin-4 (>-50)
Channel_count_OK 1 октет Количество каналов, RSSI которых попадает в диапазон Bin-3 (-76~-50)
Channel_count_Bad 1 октет Количество каналов, уровень RSSI которых находится в диапазоне Bin-2 (-90~-76).
Channel_count_VeryBad 1 октет Количество каналов, уровень RSSI которых находится в диапазоне Bin-1 (<-90)
TX_buffer_Queue_Count 4 октета Счетчик статуса буфера очереди – буфер TX контроллера за последний период времени [0:3] ACL_1 [4:7] ACL_2 [8:11] LECONN_1 [12:15] LECONN_2 [16:19] LEISOC_1 [20:23] LEISOC_2 [24:27] LEBroadcast [28:31] rsvd

Код подсобытия = 0x58 [Quality_Report_Id = 0x0B~0x0C, событие мониторинга работоспособности контроллера]

Событие мониторинга состояния контроллера Bluetooth предоставляет сводку о рабочем состоянии контроллера. Событие может быть активировано двумя способами:

  • По триггеру (0x09). Однократный отчет отправляется в ответ на определенную команду.
  • По монитору (0x0A). Контроллер периодически отправляет отчеты с заданным интервалом.

Событие Bluetooth Controller Health Monitoring – это инструмент диагностики, который предоставляет сводку о рабочем состоянии контроллера. Это событие является частью отчета о качестве связи по Bluetooth (BQR) и используется для отладки проблем с подключением, управлением питанием и синхронизацией. Его можно отправить один раз или настроить регулярную отправку для постоянного мониторинга.

Основные показатели и их назначение
  • Счетчики пакетов HCI. Событие отслеживает общее количество пакетов, отправленных хостом контроллеру и наоборот. Эти счетчики необходимы для отладки проблем с транспортным уровнем интерфейса хост-контроллера (HCI), который представляет собой канал связи между стеком программного обеспечения и чипом контроллера Bluetooth.
  • Длина пакетов. В отчете о событии указывается длина последнего отправленного и полученного пакета HCI. Это помогает убедиться, что данные передаются правильно и не возникают неожиданные проблемы с размером.
  • Количество сигналов пробуждения. В отчете приводится общее количество случаев, когда были активированы контакты BT_Wake и HOST_Wake. Эти физические сигналы необходимы для управления питанием, поскольку они используются для вывода соответствующих объектов из состояний с низким энергопотреблением. Отслеживание этих показателей помогает устранять неполадки, связанные с питанием, например неожиданные выходы из спящего режима или сбои при переходе в него.
  • Временные метки. Событие содержит несколько временных меток, в том числе время последнего сигнала пробуждения и последнего сброса HCI. Эти временные метки помогают устранять неполадки, связанные со временем, и позволяют определить, когда произошли определенные события.
  • Таймер сторожевого устройства. Специальный флаг указывает, было ли событие сгенерировано в качестве раннего предупреждения о том, что срок действия таймера сторожевого устройства контроллера скоро истечет. Это критическое оповещение о возможных зависаниях или сбоях контроллера.
  • Статус подключения. В отчете приводится сводная информация о текущем состоянии активных подключений, в том числе общее количество подключений BR/EDR, LE и CIS (подключений изохронного потока). Также указывается, активны ли какие-либо ссылки SCO (Synchronous Connection-Oriented). Эта информация позволяет оценить текущую нагрузку на контроллер.
Параметр подсобытия Размер Назначение
Quality_Report_Id 1 октет 0xB~0xC
0x0B – однократные отчеты или отчеты, активируемые событиями
0x0C – периодические отчеты.
Packet_Count_Host_to_Controller 4 октета Общее количество пакетов, отправленных хостом контроллеру по транспортному протоколу HCI. Это поле используется для отладки проблем с HCI (например, UART). Поведение: счетчики сбрасываются, когда контроллер получает сброс HCI.
Packet_Count_Controller_to_Host 4 октета Общее количество пакетов событий HCI, отправленных на хост. Это поле используется для отладки проблем с HCI (например, UART). Поведение: счетчики сбрасываются, когда контроллер получает команду сброса HCI.
Last_Packet_Length_Host_to_Controller 2 октета Длина последнего пакета HCI, отправленного в UART хоста. Примечание. Максимальная длина пакета HCI – 2 октета (включая HCI, ACL, SCO, ISO)
Last_Packet_Length_Controller_To_host 2 октета Длина последнего пакета HCI, полученного от UART хоста. Примечание. Максимальная длина пакета HCI – 2 октета (включая HCI, ACL, SCO, ISO).
Total_BT_Wake_Count 4 октета Суммарное количество утверждений пин-кода BT_Wake, сделанных объектом Host. Это поле используется для диагностики проблем с питанием. Поведение: счетчики сбрасываются, когда контроллер получает команду сброса HCI.
Total_HOST_Wake_Count 4 октета Агрегированное вычисление утверждений пина Host_Wake, инициированных контроллером. Это поле используется для диагностики проблем с питанием. Поведение: счетчики сбрасываются, когда контроллер получает команду сброса HCI.
Last_BT_Wake_TimeStamp 4 октета Временная метка, показывающая, когда хост подтвердил контакт BT_Wake.Это поле реализовано для отладки проблем с питанием.
Last_HOST_Wake_TimeStamp 4 октета Последняя временная метка, когда контроллер подтвердил контакт Host_Wake. Это поле используется для отладки проблем с питанием.
Reset_Timestamp 4 октета Временная метка, указывающая на завершение последнего сброса HCI. Это поле используется исключительно для устранения проблем, связанных со временем. Она должна быть первой записью, с которой сравниваются все остальные.
Current_Timestamp 4 октета Текущее время, когда было сгенерировано событие. Это поле используется для устранения расхождений во времени. Он должен служить точкой регистрации триггера, на которую ссылаются все остальные элементы.
Is_WatchDog_Timer_About_To_Expire 4 октета Флаг, указывающий, что событие статуса работоспособности создано контроллером в качестве раннего предупреждения об истечении срока действия сторожевого таймера. Текущая временная метка указывает время возникновения.
Coex_Status_Mask 2 октета Бит 0 – зарезервировано.
Total_Links_BR_EDR_LE_Active 1 октет Общее количество активных ссылок BR/EDR/LE.
Total_Links_BR_EDR_Sniff 1 октет Общее количество ссылок BR/EDR в состоянии Sniff/Idle.
Total_Links_CIS 1 октет Общее количество ссылок на ISO.
Is_SCO_Active 1 октет Индикатор, позволяющий проверить, активирована ли ссылка на SCO.
Параметр подсобытия Размер Назначение
Quality_Report_Id 1 октет 0x00–0x10: зарезервировано.
0x11 – трассировка сообщений LMP/LL.
0x12 – трассировка планирования многоканального подключения Bluetooth/совместного использования.
0x13: дамп данных отладочной информации контроллера.
0x14 ~ 0xFF: зарезервировано.
Connection_Handle 2 октета Дескриптор подключения.
Параметр Vendor Specific (Общая длина параметра – 4) * октеты Формат трассировки сообщений LMP, трассировки планирования Bluetooth Multi-link/Coex и дампа данных отладочной информации контроллера, используемый определенным поставщиком.

Код подсобытия = 0x58 [Quality_Report_Id = 0x16, событие источника трансляции LEA]

Параметры BIG Handle–Timestamp позволяют контроллеру заблаговременно сообщать информацию об источнике широковещательной рассылки, в том числе адрес BD_ADDR, передаваемый по беспроводной сети, и используемую в данный момент карту каналов BIG. Параметры от Broadcast ID of Broadcast Receiver Subscribed до RSSI предназначены для широковещательного приемника, чтобы сообщать информацию об источнике BIG, на который оформлена подписка. Эта информация должна передаваться от широковещательного приемника к источнику BIG через PAwR, подключение LE ACL или другие подходящие методы.

Параметр вложенного события Размер Назначение
Quality_Report_Id 1 октет 0x16 – событие источника трансляции LEA.
BIG_Handle 1 октет Дескриптор BIG, выделенный хостом.
Broadcast_Source_BD_ADDR_Type 1 октет Тип BD_ADDR источника трансляции (дескриптор BIG), отправленного в эфир.
Broadcast_Source_BD_ADDR 6 октетов BD_ADDR источника трансляции (дескриптор BIG), отправленный по воздуху.
BIG_Source_Prefer_Channel_Map 5 октетов Карта большого канала, которая выбрана контроллером и обнаружена классификацией каналов.
BIG_Source_Used_Channel_Map 5 октетов Канал BIG, используемый контроллером.
BIG_TX_Power 1 октет Текущая мощность передачи, используемая в идентификаторе трансляции.
Timestamp 4 октета Временная метка (часы пикосети) для указанного дескриптора BIG. Это значение должно совпадать с ответом контроллера на команду HCI HCI_Read_Clock с параметром Which_Clock 0x01 (часы пикосети).
Единица измерения: N * 0,3125 мс (1 такт Bluetooth)
Broadcast_ID_of_Broadcast_Receiver_Subscribed 3 октета Идентификатор трансляции, на которую подписано клиентское устройство.
Недопустимое значение: 0xFFFFFF
Broadcast_Receiver_BD_ADDR_Type 1 октет Тип BD_ADDR широковещательного приемника.
Недопустимое значение: 0xFF
Broadcast_Receiver_BD_ADDR 6 октетов BD_ADDR широковещательного приемника.
Недопустимое значение: 0x000000000000
Time_Duration 4 октета Продолжительность периода, за который собирается информация об эффективности.
Единица измерения: мс.
Недопустимое значение: 0xFFFFFFFF
BIS_Choppy_count 4 октета BIS Choppy count (Количество прерываний): количество прерываний с Time_Duration.
Недопустимое значение: 0xFFFFFFFF
PER 4 октета Доля ошибок пакетов (PER) в течение периода Time_Duration.
Недопустимое значение: 0xFFFFFFFF
No_Sync 4 октета Количество случаев, когда RX не синхронизирован.
Недопустимое значение: 0xFFFFFFFF
Receiver_Prefer_Channel_Map 5 октетов Указывает карту каналов широковещательного приемника.
Недопустимое значение: 0x0000000000
Receiver_Tx_Power 1 октет Указывает уровень мощности, при котором пакет с данными передается от широковещательного приемника.
Недопустимое значение: 0xFF
RSSI 1 октет RSSI полученных пакетов от широковещательного приемника.
Недопустимое значение: 0x7F
Reserved 4 октета Зарезервировано

Код дополнительного события: 0x5C.

При активации это событие должно генерироваться во время каждого интервала ISO.

Активация
Активация выполняется путем выбора кода поставщика Data_Path_ID 0x19 в HCI_LE_Setup_ISO_Data_Path стандартной команде. Команда HCI_Configure_Data_Path с параметром Data_Path_ID, установленным на значение 0x19, и параметром Vendor_Specific_Config_Length, установленным на значение 0, должна быть принята, даже если после получения этой команды от контроллера не ожидается никаких действий.
Время отправки
Событие генерируется от начала интервала ISO (опорная точка CIG или BIG) до следующего интервала ISO. Контроллер указывает задержку с эффективным началом интервала ISO, используя Anchor_Point_Delay.
Синхронизация контроллера
В начале интервала ISO контроллер вычисляет StreamSN, увеличивая текущее значение на настроенное ISO_Interval ÷ SDU_Interval. В первом интервале оно инициализируется как 0.
Затем для каждого пакета в очереди FIFO ISO применяются следующие правила:
  • Контроллер вычисляет разницу циклического переноса SNdiff между двумя порядковыми номерами:
    SNdiff = (SDUSN - StreamSN + 0x10000) mod 0x10000
  • Когда (SNdiff + (FT-1) × ISO_Interval ÷ SDU_Interval) mod 0x10000 <= (FT-1) × ISO_Interval ÷ SDU_Interval:
    Пакет находится в окне повторной передачи. Он должен был быть запланирован для передачи с предыдущими интервалами и теперь доступен для повторной передачи. Если это не так (передача не была запланирована), то событие считается полученным с опозданием. Об этом необходимо сообщить хосту с помощью In_Status. Такие пакеты могут быть отброшены или запланированы для передачи; выбор определяется реализацией.
  • Или в SNdiff < ISO_Interval ÷ SDU_Interval:
    Пакет будет отправлен после этого события до истечения времени ожидания сброса.
  • Или когда SNdiff >= ISO_Interval ÷ SDU_Interval и SNdiff <= Max_Forward_Buffers:
    Пакет относится к будущему и будет передан со следующим событием. Поскольку пакеты отправляются по порядку, это условие завершает поиск пакетов для этого интервала.
    Буферы, используемые хостом, не передаются контроллеру, но ограничены значением Max_Forward_Buffers = 16.
  • Или если ни одно из условий выше не выполняется:
    Пакет отбрасывается, достигнут лимит времени ожидания сброса или получен неправильно сформированный пакет.

Параметр вложенного события Размер Назначение
Connection_Handle 2 октета Дескриптор подключения CIS или BIS
Диапазон: 0x0000–0x0EFF
Sequence_Number 2 октета Порядковый номер потока, управляемый контроллером.

Инициализируется значением 0 при создании CIS или BIS и увеличивается на количество SDU с помощью изохронного интервала ISO, определенного как ISO_interval ÷ SDU_Interval, при каждом интервале ISO.
Anchor_Point_Delay 2 октета Задержка в микросекундах между созданием события и эффективной точкой привязки BIG или CIG или началом интервала ISO. Временная метка эффективной точки привязки определяется следующим образом:
Event generation time - Anchor_Point_Delay

Диапазон: от 0 до интервала ISO в микросекундах
In_Status 2 октета Статус буфера ISO контроллера

В начале интервала ISO каждый бит bi устанавливается, когда доступен блок данных службы (SDU)(Sequence_Number + i) mod 0x10000. Если он недоступен, SDU идентифицируется как Not received from the host.

Значение i варьируется от 0 до ISO_Interval ÷ SDU_Interval - 1. Для других значений i биты устанавливаются в 0.
Tx_Status 2 октета Статус передачи относительно SDU с порядковыми номерами:
(Sequence_Number - Flush_Timeout × ISO_Interval ÷ SDU_Interval + i + 0x10000) mod 0x10000

Каждый бит bi устанавливается, когда все блоки данных протокола (PDU) идентифицированного блока данных службы (SDU) с определенным порядковым номером успешно переданы и подтверждены.

Значение i варьируется от 0 до ISO_Interval ÷ SDU_Interval - 1. Для других значений i биты устанавливаются в 0.
В группе для трансляции всегда должно быть подтверждение передачи.

Поддержка нескольких рекламодателей

Поддержка нескольких рекламодателей позволяет:

  • Поддержка нескольких объявлений (max_advt_instances)
  • Различные мощности передачи для обеспечения разного диапазона.
  • разный рекламный контент;
  • Индивидуальный ответ для каждого рекламодателя
  • Конфиденциальность (без отслеживания) для каждого рекламодателя
  • Подключаемые

Чтобы сохранить соответствие существующим стандартам, мы добавили следующие команды, относящиеся к определенным поставщикам. Они соответствуют спецификации Bluetooth Core 4.1.

LE_Multi_Advt_Command

OCF: 0x154

Параметр команды Размер Назначение
Multi_advt_opcode 1 октет 0x01 - Set_Advt_Param_Multi_Sub_Cmd
0x02 - Set_Advt_Data_Multi_Sub_Cmd
0x03 - Set_Scan_Resp_Data_Multi_Sub_Cmd
0x04 - Set_Random_Addr_Multi_Sub_Cmd
0x05 - Set_Advt_Enable_Multi_Sub_Cmd

Для этой команды будет сгенерировано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
Multi_advt_opcode 1 октет 0x01 - Set_Advt_Param_Multi_Command
0x02 - Set_Advt_Data_Multi_Command
0x03 - Set_Scan_Resp_Data_Multi_Command
0x04 - Set_Random_Addr_Multi_Command
0x05 - Set_Advt_Enable_Multi_Command

LE_Multi_Advt_Command: Set_Advt_Param_Multi_Sub_Cmd

Основной источник: спецификация Bluetooth Core 4.1, страница 964 (команда LE Set Advertising Parameter Command)

Sub OCF: 0x01

Параметр подкоманды Размер Назначение
Advertising_Interval_Min Согласно спецификации Согласно спецификации
Advertising_Interval_Max Согласно спецификации Согласно спецификации
Advertising_Type Согласно спецификации Согласно спецификации
Own_Address_Type Согласно спецификации Согласно спецификации
Own_Address Согласно спецификации Согласно спецификации
Direct_Address_Type Согласно спецификации Согласно спецификации
Direct_Address Согласно спецификации Согласно спецификации
Advertising_Channel_Map Согласно спецификации Согласно спецификации
Adverstising_Filter_Policy Согласно спецификации Согласно спецификации
Advertising_Instance 1 октет Указывает, применимы ли перечисленные выше параметры к экземпляру.
Tx_power 1 октет Transmit_Power
Единица измерения – дБм (целое число со знаком).
Диапазон: от -70 до +20.

Параметр Own_Address может представлять собой адрес, настроенный хостом во время создания этого экземпляра с несколькими объявлениями. Это позволяет иметь разрешимый частный адрес во время передачи первого сигнала. Реклама в экземпляре будет показываться независимо от подключения. Хост-стек Bluetooth может отправить команду на запуск рекламы в экземпляре после подключения.

Для этой команды будет сгенерировано событие Command Complete, как указано в спецификации Bluetooth Core 4.1. Если рекламный экземпляр или параметры Tx_Power недействительны, контроллер ответит кодом ошибки (недопустимый параметр).

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
Multi_advt_opcode 1 октет 0x01 [Set_Advt_Param_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd

Базовый справочный материал: Bluetooth Core 4.1 Specification, стр. 969 (LE Set Advertising Data Command).

Sub OCF: 0x02

Параметр подкоманды Размер Назначение
Advertising_Data_Length Согласно спецификации Согласно спецификации
Advertising_Data Согласно спецификации Согласно спецификации
Advertising_Instance 1 октет Указывает, применимы ли перечисленные выше параметры к экземпляру.

Для этой команды будет сгенерировано событие Command Complete, как указано в спецификации Bluetooth Core 4.1. Если экземпляр рекламы или параметры Tx_Power недействительны, контроллер вернет код ошибки.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
Multi_advt_opcode 1 октет 0x02 [Set_Advt_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd

Основной источник: спецификация Bluetooth Core 4.1, страница 970 (команда LE Set Scan Response Data)

Sub OCF: 0x03

Параметр подкоманды Размер Назначение
Scan_Response_Data_Length Согласно спецификации Согласно спецификации
Scan_Response_Data Согласно спецификации Согласно спецификации
Advertising_Instance 1 октет Указывает, применимы ли перечисленные выше параметры к экземпляру.

Для этой команды будет сгенерировано событие Command Complete, как указано в спецификации Bluetooth Core 4.1. Если экземпляр рекламы или параметры Tx_Power недействительны, контроллер вернет код ошибки (недопустимый параметр).

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
Multi_advt_opcode 1 октет 0x03 [Set_Scan_Resp_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd

Основной источник: спецификация Bluetooth Core 4.1, страница 963 (команда LE Set Random Address).

Sub OCF: 0x04

Параметр подкоманды Размер Назначение
Случайный адрес Согласно спецификации Согласно спецификации
Advertising_Instance 1 октет Указывает, применимы ли указанные выше параметры к экземпляру.

Для этой команды будет создано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
Multi_advt_opcode 1 октет 0x04 [Set_Random_Addr_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd

Базовый справочный материал: спецификация Bluetooth Core 4.1, стр. 971 (команда LE Set Advertise Enable в этой спецификации).

OCF: 0x05

Параметр подкоманды Размер Назначение
Advertising_Enable 1 октет Значение 1 означает, что функция включена. Любое другое значение означает отключение.
Advertising_Instance 1 октет Указывает, применимы ли перечисленные выше параметры к экземпляру. Экземпляр 0 – это стандартный экземпляр HCI.

Для этой команды будет создано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
Multi_advt_opcode 1 октет 0x05 [Set_Advt_Enable_Multi_Sub_Cmd]

Разрешение частного адреса перенесено на сервер

Эта функция позволяет разрешать частный адрес в прошивке или аппаратном обеспечении контроллера, что дает следующие преимущества:

  • Задержка, связанная с хостом при разрешении частного адреса
  • Экономия энергии за счет того, что устройство-хост не выходит из спящего режима.

LE_Set_RPA_Timeout

OCF: 0x15C

Параметр команды Размер Назначение
LE_local_IRK 16 октетов Ключ IRK локального устройства, используемый для генерации случайных разрешаемых адресов.
tRPA_min 2 октета Минимальное время ожидания создания RPA в секундах. Контроллер должен генерировать новые разрешаемые адреса для любых событий рекламы, сканирования или подключения, которые происходят после этого тайм-аута.
Допустимый диапазон: 300–1800
tRPA_max 2 октета Максимальное время ожидания генерации RPA в секундах. Контроллер должен генерировать новые разрешаемые адреса для любых событий рекламы, сканирования или подключения до истечения этого времени ожидания.
Допустимый диапазон: tRPA_min–1800
Параметр возврата Размер Назначение
Status 1 октет Статус команды.

Рекомендуемые значения статуса HCI:
0x00 Success (Успешно)
0x01 Unknown command (Неизвестная команда) (если не поддерживается)
0x12 Invalid command parameters (Недействительные параметры команды) (если какие-либо параметры выходят за пределы заданного диапазона)

LE_RPA_offload_Command

OCF: 0x155

Параметр команды Размер Назначение
RPA_offload_opcode 1 октет 0x1 – включить функцию для клиента
0x2 – добавить IRK в список
0x3 – удалить IRK из списка
0x4 – очистить список IRK
0x5 – прочитать запись в списке IRK

Для этой команды будет сгенерировано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
Event_RPA_offload_opcode 1 октет 0x1 – включить функцию для клиента
0x2 – добавить IRK в список
0x3 – удалить IRK из списка
0x4 – очистить список IRK
0x5 – прочитать запись в списке IRK

LE_RPA_offload: Enable_cust_specific_sub_Command

Sub OCF: 0x01

Параметр подкоманды Размер Назначение
enable_customer_specific_feature_set 1 октет 0x01 – включить функцию разгрузки RPA;
0x00 – отключить функцию разгрузки RPA.

Разгрузку RPA должен включить хост на основе возможностей чипа. Подробная информация размещена по ссылке LE_Get_Vendor_Capabilities_Command. У каждого чипа может быть разная max_irk_list_sz во встроенном ПО.

Для этой команды будет создано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
Event_cust_specific_feature_opcode 1 октет 0x01 [Включить функцию для клиента]

LE_RPA_offload: Add_IRK_to_list_sub_Command

Sub OCF: 0x02

Параметр подкоманды Размер Назначение
LE_IRK 16 октетов LE IRK (первый байт LSB)
Address_Type 1 октет 0 – публичный адрес
1 – случайный адрес
LE_Device_Address 6 октетов Общедоступный или случайный адрес, связанный с IRK (первый байт LSB)

Для этой команды будет сгенерировано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
Event_cust_specific_feature_opcode 1 октет 0x02 [Добавить IRK в список]
LE_IrkList_AvailableSpaces 1 октет Доступные записи в списке IRL после текущей операции

LE_RPA_offload: Remove_IRK_to_list_sub_Command

Sub OCF: 0x03

Параметр подкоманды Размер Назначение
Address_Type 1 октет 0 – публичный адрес
1 – случайный адрес
LE_Device_Address 6 октетов Общедоступный или случайный адрес, связанный с IRK.

Для этой команды будет создано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
Event_cust_specific_feature_opcode 1 октет 0x03 [Удалить IRK из списка]
LE_IrkList_AvailableSpaces 1 октет Доступные записи в списке IRL после текущей операции

LE_RPA_offload: Clear_IRK_list_sub_Command

Sub OCF: 0x04

Параметр подкоманды Размер Назначение
Нет

Для этой команды будет создано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
Event_cust_specific_feature_opcode 1 октет 0x04 [Очистить список IRK]
LE_IrkList_AvailableSpaces 1 октет Доступные записи списка IRL после текущей операции [max_irk_list_sz]

LE_RPA_offload: Read_IRK_list_sub_Command

Sub OCF: 0x05

Параметр подкоманды Размер Назначение
LE_read_IRK_list_entry-index 1 октет Индекс списка IRK [0, max_irk_list_sz-1]

Для этой команды будет создано событие Command Complete.

Параметр возврата Размер Назначение
Status 1 октет Статус "Команда выполнена"
Event_cust_specific_feature_opcode 1 октет 0x05 [Read IRK List Entry]
LE_Read_IRK_List_entry 1 октет Индекс IRK, который хост хочет прочитать (максимальный размер списка IRK – 32).
LE_IRK 16 октетов Значение IRK
Address_Type 1 октет 0 – публичный адрес
1 – случайный адрес
LE_Device_Address 6 октетов Общедоступный или случайный адрес, связанный с IRK.
LE_Resolved_Private_Address 6 октетов Текущий разрешенный частный адрес этого IRK

Sniff Offload

Функция Sniff Offload переносит управление режимом Sniff со стека хоста Bluetooth на контроллер Bluetooth. Это позволяет контроллеру управлять временем входа и выхода из режима Sniff и применять настраиваемые параметры Sniff и Sniff sub-rating, а хост сохраняет контроль над выбором параметров на основе изменений активности профиля Bluetooth.

Статусы переноса сканирования

В этом разделе описаны состояния контроллера Bluetooth, связанные с функцией Sniff Offload. Определены два глобальных состояния, позволяющих определить статус контроллера Bluetooth в отношении функции Sniff Offload. Для определения статуса подключения BR/EDR, когда контроллер Bluetooth находится в состоянии Sniff Offload Enabled, были заданы два состояния, относящихся к подключению.

Глобальные состояния

Для определения статуса контроллера Bluetooth в отношении включения Sniff Offload определены два глобальных состояния.

Sniff Offload Disabled State

По умолчанию контроллер Bluetooth находится в состоянии "Передача данных в режиме ожидания отключена". Ожидается, что контроллер Bluetooth будет обрабатывать команды HCI_Sniff_Mode, HCI_Exit_Sniff_Mode и HCI_Sniff_Subrating, отправленные с хоста Bluetooth. Контроллер Bluetooth также должен пересылать хосту Bluetooth события HCI_Mode_Change и HCI_Sniff_Subrating в соответствии с маской событий, заданной хостом Bluetooth.

Состояние функции "Перенос сканирования"

Контроллер Bluetooth считается находящимся в состоянии "Передача данных в режиме Sniff Offload включена" после того, как он успешно обработал команду WriteSniffOffloadEnable для включения режима Sniff Offload. В этом состоянии контроллер Bluetooth должен пересылать события HCI_Mode_Change и HCI_Sniff_Subrating на хост Bluetooth, как определено функцией логического И маски событий, установленной хостом Bluetooth, и флагов подавления событий.

Статусы подключения

Когда контроллер Bluetooth находится в состоянии Sniff Offload Enabled, каждый активный ACL может находиться в одном из двух описанных ниже состояний.

Состояние ожидания параметра

ACL считается в состоянии "Ожидание параметров", когда контроллер Bluetooth находится в состоянии "Передача в режим ожидания включена", но хост Bluetooth не выдал хотя бы один раз для текущего ACL команду поставщика WriteSniffOffloadParameters.

Состояние "Управление запущено"

Список контроля доступа считается в состоянии "Управление запущено", когда контроллер Bluetooth находится в состоянии "Передача пакетов отключена", а хост Bluetooth хотя бы один раз отправил для текущего списка контроля доступа команду поставщика "WriteSniffOffloadParameters".

WriteSniffOffloadEnable

OCF: 0x310

Параметр команды Размер Назначение
Enable_Sniff_Offload 1 октет 0x00 – отключить;
0x01 – включить.
Subrating_Max_Latency 2 октета Параметр "Максимальная задержка" используется для расчета максимальной скорости передачи данных, которую может использовать удаленное устройство. Значение по умолчанию: T*sniff* Latency = N × 0,625 мс (1 слот базовой полосы) Диапазон: от 0x0002 до 0xFFFE. Диапазон времени: от 1,25 мс до 40,9 с.
Subrating_Min_Remote_Timeout 2 октета Минимальное время ожидания в режиме сканирования (T*sniff_mode_timeout*), которое может использовать удаленное устройство. Значение по умолчанию: 0x0000. Время ожидания = N × 0,625 мс (1 слот основной полосы). Диапазон: от 0x0000 до 0xFFFE. Диапазон времени: от 0 до 40,9 с.
Subrating_Min_Local_Timeout 2 октета Минимальное время ожидания в режиме сканирования (T*sniff_mode_timeout*), которое может использовать локальное устройство. Значение по умолчанию: 0x0000. Время ожидания = N × 0,625 мс (1 слот базовой полосы). Диапазон: от 0x0000 до 0xFFFE. Диапазон времени: от 0 до 40,9 с.
Suppress_Mode_Change_Event 1 октет 0x00 – контроллер Bluetooth должен сообщать хосту о событии HCI Mode_Change в соответствии с конфигурацией, заданной в команде HCI_Set_Event_Mask.
0x01 – контроллер Bluetooth не должен сообщать хосту о событии HCI Mode_Change.
Suppress_Sniff_Subrating_Event 1 октет 0x00 – контроллер Bluetooth должен сообщать о событии HCI Sniff_Subrating хосту в соответствии с конфигурацией, заданной в команде HCI_Set_Event_Mask.
0x01 – контроллер Bluetooth не должен сообщать о событии HCI Sniff_Subrating хосту.

WriteSniffOffloadParameters

OCF: 0x311

Параметр команды Размер Назначение
Connection_Handle 2 октета 16-битный дескриптор подключения BR/EDR ACL. Диапазон: 0x0000–0x0EFF.
Sniff_Max_Interval 2 октета – Диапазон, определенный Bluetooth SIG, обычно используется для перехода в режим Sniff. Диапазон: от 0x0002 до 0xFFFE; допустимы только четные значения. Обязательный диапазон: от 0x0006 до 0x0540. Время = N × 0,625 мс. Диапазон времени: от 1,25 мс до 40,9 с. Особые случаи : 0x0000 – используется для выбора режима Push-Active Sniff-Offload. 0x0001 – используется для выбора режима Sniff-Offload "Предпочитать активный".
Sniff_Min_Interval 2 октета Диапазон: 0x0002–0xFFFE; допустимы только четные значения. Обязательный диапазон: 0x0006–0x0540. Время = N × 0,625 мс. Диапазон времени: 1,25 мс – 40,9 с.
Sniff_Attempts 2 октета Количество слотов приема базовой полосы частот для попытки перехвата. Длина = N × 1,25 мс. Диапазон: от 0x0001 до 0x7FFF. Диапазон времени: от 1,25 мс до 40,9 с. Обязательный диапазон для контроллера: от 1 до T*sniff* ÷ 2.
Sniff_Timeout 2 октета Количество слотов приема основной полосы частот для тайм-аута режима ожидания. Длина = N × 1,25 мс. Диапазон: от 0x0000 до 0x7FFF. Диапазон времени: от 0 мс до 40,9 с. Обязательный диапазон для контроллера: от 0 до 0x0028.
Link_Inactivity_Timeout 2 октета Значение времени ожидания в миллисекундах. Таймер Link_Inactivity запускается или сбрасывается при каждой транзакции HCI-ACL. По истечении этого времени контроллер должен перейти в режим Sniff.
Subrating_Max_Latency 2 октета Параметр "Максимальная задержка" используется для расчета максимальной скорости передачи данных, которую может использовать удаленное устройство. Значение по умолчанию: T*sniff* Latency = N × 0,625 мс (1 слот базовой полосы) Диапазон: от 0x0002 до 0xFFFE. Диапазон времени: от 1,25 мс до 40,9 с.
Subrating_Min_Remote_Timeout 2 октета Минимальное время ожидания в режиме сканирования (T*sniff_mode_timeout*), которое может использовать удаленное устройство. Значение по умолчанию: 0x0000. Время ожидания = N × 0,625 мс (1 слот основной полосы). Диапазон: от 0x0000 до 0xFFFE. Диапазон времени: от 0 до 40,9 с.
Subrating_Min_Local_Timeout 2 октета Минимальное время ожидания в режиме сканирования (T*sniff_mode_timeout*), которое может использовать локальное устройство. Значение по умолчанию: 0x0000. Время ожидания = N × 0,625 мс (1 слот базовой полосы). Диапазон: от 0x0000 до 0xFFFE. Диапазон времени: от 0 до 40,9 с.
Allow_Exit_Sniff_On_Rx 1 октет Флаг для управления выходом из режима Sniff при получении транзакции HCI-ACL в направлении приема. 0x00 – не выходить из режима прослушивания при получении данных. 0x01 : выход из режима Sniff при получении HCI-ACL в направлении Rx определяется как передача пакета ACL от контроллера к хосту через HCI.
Allow_Exit_Sniff_On_Tx 1 октет Флаг, позволяющий управлять выходом из режима Sniff при передаче данных по каналу HCI-ACL. 0x00 : не выходить из режима перехвата при передаче. 0x01 : выход из режима Sniff при передаче. HCI-ACL в направлении передачи определяется как передача пакета ACL от хоста к контроллеру через HCI.