Интерфейс хост-контроллера (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:
|
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 - immediate0x01 - on_found0x02 - 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 |
Размер переменной |
Строка символов для локального названия. Примечания
|
Для этой команды будет создано событие 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 |
Переменный размер |
Строка символов для данных производителя. Примечания
|
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 |
Переменный размер |
Строка символов для данных сервиса. Примечания
|
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 октета |
Битовые маски для поддерживаемых расширенных функций:
Ценность бита
|
Команда для получения информации о действиях контроллера и энергопотреблении
Цель этой информации – позволить функциям хост-системы анализировать все действия компонентов, включая контроллер 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.
Октет 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. Кодек AAC:
Обратитесь к элементам информации о кодеке AAC в A2DP v1.3 Кодек LDAC
Октеты 0–3: идентификатор поставщика
Октеты 4–5: идентификатор кодека
Октет 6: индекс битрейта:
Октет 7: режим канала LDAC Октеты 8–31: зарезервировано. Кодек Opus:
Октеты 0–3: идентификатор поставщика
Октеты 4–5: идентификатор кодека Октеты 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 – добавить
При выборе варианта "Удалить" отчеты о событиях, связанных с качеством, будут удалены. |
BQR_Quality_Event_Mask |
4 октета |
Битовые маски для выбранных отчетов о событиях, связанных с качеством.
Бит 0: включить режим мониторинга качества. |
BQR_Minimum_Report_Interval |
2 октета |
Укажите минимальный временной интервал для регистрации выбранных событий, связанных с качеством. Прошивка контроллера не должна сообщать о следующем событии в течение заданного временного интервала. Настройка интервала должна быть отдельной для каждого добавляемого события качества.
Единица измерения: мс. |
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 Множитель интервала отчетов. Встроенное ПО контроллера не должно сообщать о следующем событии в течение заданного временного интервала. Настройка интервала предназначена специально для добавленных событий качества.
Единица измерения: мс 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; контроллер сбросил данные отладочной информации.
Код подсобытия = 0x58 [Quality_Report_Id = 0x01 ~ 0x04, событие, связанное с качеством связи]
| Параметр подсобытия | Размер | Назначение |
|---|---|---|
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. |
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. |
Код подсобытия = 0x58 [Quality_Report_Id = 0x11 ~ 0x13, событие, связанное с дампом журнала]
| Параметр подсобытия | Размер | Назначение |
|---|---|---|
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 октета | Зарезервировано |
Дополнительное событие "Отзыв о ссылке ISO"
Код дополнительного события: 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_Cmd0x02 - Set_Advt_Data_Multi_Sub_Cmd0x03 - Set_Scan_Resp_Data_Multi_Sub_Cmd0x04 - Set_Random_Addr_Multi_Sub_Cmd0x05 - Set_Advt_Enable_Multi_Sub_Cmd
|
Для этой команды будет сгенерировано событие Command Complete.
| Параметр возврата | Размер | Назначение |
|---|---|---|
Status |
1 октет | Статус "Команда выполнена" |
Multi_advt_opcode |
1 октет |
0x01 - Set_Advt_Param_Multi_Command0x02 - Set_Advt_Data_Multi_Command0x03 - Set_Scan_Resp_Data_Multi_Command0x04 - Set_Random_Addr_Multi_Command0x05 - 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. |