Интерфейс хост-контроллера (HCI) используется для взаимодействия с контроллером Bluetooth.
В этом документе приведен список требований Bluetooth (BT) и Bluetooth Low Energy (BLE) HCI. Цель состоит в том, чтобы поставщики стека Host BT и поставщики контроллеров BT соответствовали этим требованиям платформы, чтобы использовать набор функций, описанный ниже.
В этом документе спецификация Bluetooth Core 5.2 называется «спецификацией». Спецификация Bluetooth Core 5.2 доступна на веб- сайте Bluetooth SIG вместе с другими принятыми документами.
Общий обзор конструкции
Возможности и конфигурация чипа
Как открытая платформа, Android имеет матрицу выпусков программного обеспечения, OEM-производителей, поставщиков, а также возможностей платформы и чипа.
В этом документе описывается философия проектирования, позволяющая контроллерам BT раскрывать свои возможности (выходящие за рамки стандартной спецификации Bluetooth Core 5.2), для управления изменяющимся ландшафтом и миграцией. Затем хост-стек BT может использовать эти возможности, чтобы определить, какие функции включить.
Поддержка открытых стандартов
Одной из целей Android является поддержка открытых стандартов после их ратификации в спецификации Bluetooth. Если функция, описанная ниже, станет доступной в стандартных методах HCI в будущей спецификации Bluetooth, мы будем склоняться к тому, чтобы сделать этот подход по умолчанию.
Возможности конкретного поставщика
Команда конкретного поставщика: LE_Get_Vendor_Capabilities_Command
Поле команды OpCode (OCF): 0x153
Параметр команды | Размер | Цель |
---|---|---|
нет данных | Пустой список параметров команды |
Для этой команды будет сгенерировано событие Command Complete.
Возвращаемый параметр | Размер | Цель |
---|---|---|
Status | 1 октет | Статус выполнения команды |
max_advt_instances (устарело) | 1 октет | Количество поддерживаемых экземпляров рекламы. Зарезервировано после v0.98. Этот параметр устарел в спецификации функций Google версии 0.98 и более поздних. Вместо него используется расширенная реклама LE , доступная в спецификации BT версии 5.0 и более поздних. |
offloaded_resolution_of_private-address (устарело) | 1 октет | Возможности чипа BT RPA. Если поддерживается чипом, он должен быть включен хостом. 0 = не может 1 = Способный Зарезервировано после v0.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.00 байт[0] = 0x01 байт[1] = 0x00 |
total_num_of_advt_tracked | 2 октета | Общее количество рекламодателей, отслеживаемых для OnLost / OnFound |
extended_scan_support | 1 октет | Поддерживает расширенное окно и интервал сканирования |
debug_logging_supported | 1 октет | Поддерживает регистрацию бинарной отладочной информации с контроллера |
LE_address_generation_offloading_support (устарело) | 1 октет | 0 = не поддерживается 1 = поддерживается Зарезервировано после v0.98. Этот параметр устарел в спецификации функций Google версии 0.98 и более поздних в пользу функции конфиденциальности, доступной в спецификации BT версии 4.2 и более поздних. |
A2DP_source_offload_capability_mask | 4 октета | Битовые маски для поддерживаемых типов кодеков Бит 0 — СБК Бит 1 — ААС Бит 2 — АПТХ Бит 3 — APTX HD Бит 4 — LDAC Биты 5-31 зарезервированы |
bluetooth_quality_report_support | 1 октет | Поддерживает отчеты о событиях качества Bluetooth. 0 = не может 1 = Способный |
dynamic_audio_buffer_support | 4 октета | Поддерживает динамический аудиобуфер в контроллере Bluetooth Битовые маски для поддерживаемых типов кодеков Бит 0 — СБК Бит 1 — ААС Бит 2 — АПТХ Бит 3 — APTX HD Бит 4 — LDAC Биты 5-31 зарезервированы |
Пакетирование результатов сканирования
Целью разработки является улучшение способа доставки уведомлений о событиях Bluetooth LE Scan Response на хост для экономии энергии на хосте.
Благодаря уменьшению частоты, с которой контроллер уведомляет процессор хост-приложений о результатах сканирования, процессор хост-приложений может дольше оставаться в бездействии/спящем режиме. Это снижает энергопотребление хоста. Возвращаемый параметр total_scan_results_storage
команды LE_Get_Vendor_Capabilities_Command
указывает возможности чипа для хранения результатов сканирования.
Эта функция фокусируется на управлении и настройке хранилища результатов сканирования LE в контроллере Bluetooth. Хранилище используется для временного пакетирования данных рекламы и сканирования данных и метаданных, полученных контроллером для последующей доставки на хост.
Прошивка должна поддерживать два типа пакетирования, которые могут быть задействованы одновременно:
- Усеченный. Содержит следующие информационные элементы: {MAC, мощность передачи, RSSI, метка времени}.
- Полный. Содержит следующие информационные элементы: {MAC, мощность передачи, RSSI, отметка времени, дополнительные данные, ответ сканирования}
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: включить функцию, специфичную для клиента
Суб 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: Подкоманда установки параметров хранения пакетного сканирования
Суб OCF: 0x02
Параметр подкоманды | Размер | Цель |
---|---|---|
Batch_Scan_Full_Max | 1 октет | Максимальное пространство для хранения (в %), выделенное для полного стиля [Диапазон: 0-100] |
Batch_Scan_Truncated_Max | 1 октет | Максимальное пространство для хранения (в %), выделенное для усеченного стиля [Диапазон: 0-100] |
Batch_Scan_Notify_Threshold | 1 октет | Настройка уровня уведомления (в %) для отдельного пула хранения [Диапазон: 0-100] Установка на 0 отключит уведомление. Генерируется событие гиперконвергентной инфраструктуры поставщика (подсобытие нарушения порога хранения) |
Для этой команды будет сгенерировано событие Command Complete.
Возвращаемый параметр | Размер | Цель |
---|---|---|
Status | 1 октет | Статус выполнения команды |
Batch_scan_opcode | 1 октет | 0x02 [Установить параметры пакетного сканирования] |
LE_Batch_Scan_Command: установка подкоманды параметров пакетного сканирования
Суб 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
. Запись для усеченного режима следующая: { BD_ADDR
, Tx Power, RSSI, Timestamp}
Когда включен полный режим, будет использоваться активное сканирование и будут записываться ответы сканирования. Уникальный ключ полного стиля = {MAC, рекламный пакет}, независимо от интервала сканирования. Запись для полного режима: { BD_ADDR
, Tx Power, RSSI, Timestamp, Ad packet, Scan Response}. В полном стиле один и тот же пакет AD, просматриваемый несколько раз с разными интервалами сканирования, записывается только один раз. Однако в режиме Truncated интерес представляет видимость BA_ADDR
в разных интервалах сканирования (один раз за интервал сканирования). RSSI — это усредненное значение всех дубликатов уникальной рекламы в пределах интервала сканирования.
Для этой команды будет сгенерировано событие Command Complete.
Возвращаемый параметр | Размер | Цель |
---|---|---|
Status | 1 октет | Статус выполнения команды |
Batch_scan_opcode | 1 октет | 0x03 [Установить параметры пакетного сканирования] |
LE_Batch_Scan_Command: Подкоманда чтения результатов пакетного сканирования
Суб OCF: 0x04
Параметр подкоманды | Размер | Цель |
---|---|---|
Batch_Scan_Data_read | 1 октет | 0x01 — усеченные данные режима 0x02 — данные полного режима |
Для этой команды будет сгенерировано событие Command Complete. Когда хост выдает эту команду, все результаты в контроллере могут не уместиться в одном событии Command Complete. Хост будет повторять выдачу этой команды до тех пор, пока соответствующие результаты в событии Command Complete не укажут 0 в количестве записей, что указывает на то, что у контроллера больше нет записей для связи с хостом. Каждое событие Command Complete может содержать несколько записей только одного типа данных (Full или Truncated).
Ссылки времени контроллера и хоста не синхронизированы. Единица временной метки составляет 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 | Переменная | Усеченный режим: Адрес[0]: 6 октетов Address_Type[0]: 1 октет Tx_Pwr[0]: 1 октет RSSI[0]: 1 октет Отметка времени[0]: 2 октета [несколько записей ( num_of_records ) в указанном выше формате]Полный режим: Адрес[0]: 6 октетов Address_Type[0]: 1 октет Tx_Pwr[0]: 1 октет RSSI[0]: 1 октет Отметка времени[0]: 2 октета Adv package_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) в контроллере.
LE_APCF_Command
OCF: 0x157
Параметр команды | Размер | Цель |
---|---|---|
APCF_opcode | 1 октет | 0x00 - Включить APCF 0x01 - APCF Установить параметры фильтрации 0x02 — адрес вещателя APCF 0x03 — UUID службы APCF 0x04 — UUID запроса службы APCF 0x05 — локальное имя APCF 0x06 — Данные производителя APCF 0x07 — служебные данные APCF |
Для этой команды будет сгенерировано событие 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 |
LE_APCF_Command: Enable_sub_cmd
Суб-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
Эта подкоманда используется для добавления или удаления спецификации фильтра или очистки списка фильтров для встроенной фильтрации.
Суб OCF: 0x01
Параметр подкоманды | Размер | Цель |
---|---|---|
APCF_Action | 1 октет | 0x00 — добавить 0x01 — Удалить 0x02 — очистить Удалить очистит конкретный фильтр вместе со связанными записями функций в других таблицах. Clear очистит все фильтры и связанные записи в других таблицах. |
APCF_Filter_Index | 1 октет | Индекс фильтра (0, max_filter-1 ) |
APCF_Feature_Selection | 2 октета | Битовые маски для выбранных признаков: Бит 0: установите, чтобы включить фильтр широковещательных адресов. Бит 1: установите, чтобы включить фильтр изменения служебных данных. Бит 2: установите, чтобы включить проверку UUID службы. Бит 3: Установите, чтобы включить проверку UUID запроса службы. Бит 4: Установите, чтобы включить проверку локального имени Бит 5: Установите, чтобы включить проверку данных производителя Бит 6: Установите, чтобы включить проверку служебных данных. |
APCF_List_Logic_Type | 2 октета | Логическая операция для каждого выбора функции (побитовая позиция), указанной в APCF_Feature_Selection .Действует только при включенной функции. Значение позиции бита: 0: ИЛИ 1: И Если выбрана логика «И», пакет ADV пройдет фильтр, только если он содержит ВСЕ записи в списке. Если выбрана логика «ИЛИ», пакет ADV пройдет фильтр, если он содержит любую из записей в списке. |
APCF_Filter_Logic_Type | 1 октет | 0x00: ИЛИ 0x01: И Примечание. Тип логики — N/A для первых трех полей APCF_Feature_Selection , что всегда является логикой «И». Они применимы только для (бит 3 - бит 6) четырех полей APCF_Feature_Selection . |
rssi_high_thresh | 1 октет | [в дБм] Рекламодатель считается замеченным, только если сигнал выше верхнего порога RSSI. В противном случае прошивка должна вести себя так, как будто никогда ее не видела. |
delivery_mode | 1 октет | 0x00 - immediate 0x01 — on_found 0x02 - batched |
onfound_timeout | 2 октета | Действителен, только если delivery_mode установлено on_found .[в миллисекундах] Пора прошивке задержаться и собрать дополнительную рекламу перед отчетом. |
onfound_timeout_cnt | 1 октет | Действителен, только если delivery_mode установлено on_found .[считать] Если реклама в 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 .[считать] Общее количество рекламодателей для отслеживания по фильтру. |
Значения RSSI должны использовать дополнение до 2 для представления отрицательных значений.
Хост должен иметь возможность настроить несколько фильтров с APCF_Application_Address_type
, установленным на 0x02 (для всех адресов вещательных компаний), чтобы управлять различными комбинациями фильтров.
Фильтрация, пакетная обработка и отчетность являются взаимосвязанными понятиями. Каждая реклама и связанный с ней ответ сканирования должны будут пройти через все фильтры, один за другим. Таким образом, результирующие действия ( delivery_mode
) тесно связаны с фильтрацией. Доступны следующие режимы доставки: report_immediately
, batch
и onFound
. Значение OnLost
связано с OnFound
в том смысле, что при потере оно будет идти после OnFound
.
Этот поток обработки изображает концептуальную модель:
При получении кадра объявления (или ответа сканирования) он применяется ко всем фильтрам в последовательном порядке. Возможно, реклама может вызвать немедленную отчетность на основе одного фильтра и их пакетную обработку из-за другого действия фильтра.
Пороговые значения уровня RSSI (высокий и низкий) дают возможность контролировать, когда кадр виден для обработки фильтром, даже когда контроллер получает допустимый пакет. В случае установки режима доставки «немедленный» или «пакетный» RSSI кадра учитывается для дальнейшей обработки контроллером. Разным приложениям требуется разное поведение отчетов и пакетной обработки. Это позволяет нескольким приложениям одновременно получать прямые отчеты и/или группировать результаты во встроенном программном обеспечении. Примером может служить случай, когда пакетное сканирование активно из одного приложения, а затем обычное сканирование LE выдается другим приложением. Перед запуском пакетного сканирования фреймворк/приложение устанавливает соответствующие фильтры. Позже, когда второе приложение выполнит обычное сканирование, предыдущая пакетная обработка продолжится. Однако из-за регулярного сканирования это сродни концептуальному добавлению нулевого фильтра (вместе со всеми существующими фильтрами) вместе с командой сканирования LE. Параметры команды сканирования LE имеют приоритет, когда они активны. Когда обычное сканирование LE отключено, контроллер вернется к предыдущему пакетному сканированию, если оно существовало.
Режим доставки OnFound
основан на настроенных фильтрах. Комбинация, которая приводит к успешному выполнению действия фильтра, считается сущностью для отслеживания onLost
. Соответствующее событие — это подсобытие отслеживания LE Advt.
Переход OnFound/OnLost
для фильтра (если включен) будет выглядеть следующим образом:
Для этой команды будет сгенерировано событие Command Complete.
Возвращаемый параметр | Размер | Цель |
---|---|---|
Status | 1 октет | Статус выполнения команды |
APCF_opcode | 1 октет | 0x02 - APCF Установить параметры фильтрации |
APCF_Action | 1 октет | Команда APCF_Action |
APCF_AvailableSpaces | 1 октет | Количество доступных записей в таблице фильтров |
LE_APCF_Command: широковещательный_адрес_под_команда
Эта подкоманда используется для добавления или удаления адреса рекламодателя или для очистки списка адресов рекламодателя для встроенной фильтрации.
Суб OCF: 0x02
Параметр подкоманды | Размер | Цель |
---|---|---|
APCF_Action | 1 октет | 0x00 — добавить 0x01 — Удалить 0x02 — очистить Удалить удалит указанный адрес вещателя в указанном фильтре. Clear очищает все адреса вещателей в указанном фильтре. |
APCF_Filter_Index | 1 октет | Индекс фильтра (0, max_filter-1 ) |
APCF_Broadcaster_Address | 6 октет | 6-байтовый адрес устройства для добавления или удаления из списка адресов вещательной компании |
APCF_Application_Address_type | 1 октет | 0x00: общедоступный 0x01: Случайный 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 службы для встроенной фильтрации.
Суб 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: запрос_uuid_sub_cmd
Эта подкоманда используется для добавления или удаления запрашиваемого UUID или для очистки списка запрашиваемых UUID для встроенной фильтрации.
Суб 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
Эта подкоманда используется для добавления или удаления строки локального имени или для очистки списка строк локального имени для встроенной фильтрации.
Суб-OCF: 0x05
Параметр подкоманды | Размер | Цель |
---|---|---|
APCF_Action | 1 октет | 0x00 — добавить 0x01 — Удалить 0x02 — очистить Удалить удалит указанную строку локального имени в указанном фильтре. Clear очистит все строки локальных имен в указанном фильтре. |
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
Эта подкоманда используется для добавления или удаления строки данных производителя или для очистки списка строк данных производителя для встроенной фильтрации.
Суб OCF: 0x06
Параметр подкоманды | Размер | Цель |
---|---|---|
APCF_Action | 1 октет | 0x00 — добавить 0x01 — Удалить 0x02 — очистить Удалить удалит указанную строку данных производителя в указанном фильтре. Очистить очистит все строки данных производителя в указанном фильтре. |
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
Эта подкоманда используется для добавления или удаления строки служебных данных или для очистки списка строк служебных данных для встроенной фильтрации.
Суб-OCF: 0x07
Параметр подкоманды | Размер | Цель |
---|---|---|
APCF_Action | 1 октет | 0x00 — добавить 0x01 — Удалить 0x02 — очистить Удалить удалит указанную строку данных службы в указанном фильтре. Очистить очистит все строки данных службы в указанном фильтре. |
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 октет | Количество свободных записей, все еще доступных для таблицы служебных данных |
Команда активности контроллера и информации об энергии
Цель этой информации состоит в том, чтобы высшие функции хост-системы анализировали общую активность всех компонентов, включая контроллер BT и его макросостояние, в сочетании с тем, что происходит в приложениях и среде. Для этого требуется следующая информация от стека BT и контроллера:
- Стек BT: отчет о текущем макрооперативном состоянии контроллера
- Прошивка: предоставление сводной информации об активности и энергопотреблении
Состояния макросов стека хоста BT, определенные на уровне пользователя:
- Бездействие: [сканирование страницы, реклама LE, сканирование запроса]
- Сканирование: [пейджинг/запрос/попытка подключения]
- Активно: [ссылка ACL включена, ссылка SCO активна, режим прослушивания]
Действия, которые контроллер отслеживает в течение своего жизненного цикла, — это время передачи, время приема, время простоя и общее потребление энергии. Они очищаются при чтении с хоста.
LE_Get_Controller_Activity_Energy_Info
Это команда производителя.
ОКФ: 0x159
Параметр подкоманды | Размер | Цель |
---|---|---|
нет данных | Пустые параметры команды |
Для этой команды будет сгенерировано событие Command Complete.
Возвращаемый параметр | Размер | Цель |
---|---|---|
Status | 1 октет | Статус выполнения команды |
total_tx_time_ms | 4 октета | Общее время выполнения Tx |
total_rx_time_ms | 4 октета | Общее время выполнения Rx |
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, до начала последующего сканирования 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.
Возвращаемый параметр | Размер | Цель |
---|---|---|
Статус | 1 октет | Статус выполнения команды |
Поддержка аппаратной разгрузки A2DP
Функция разгрузки A2DP поддерживает разгрузку процесса кодирования звука A2DP на аудиопроцессор, подключенный к контроллеру BT. Закодированный поток аудиоданных передается напрямую от аудиопроцессора к контроллеру BT без участия хоста BT. Хост BT по-прежнему отвечает за настройку и управление сеансом A2DP.
OCF: 0x15D
Начать разгрузку A2DP
Суб OCF: 0x01
Используйте эту команду как для настройки процесса разгрузки A2DP, так и для запуска потока A2DP.
Параметр команды | Размер | Цель |
---|---|---|
Кодек | 4 октета | Указывает тип кодека 0x01 — СБК 0x02 — ААС 0x04 — АПТХ 0x08 - APTX HD 0x10 — LDAC |
Max_Latency | 2 октета | Максимально допустимая задержка (в мс). Нулевое значение отключает сброс. |
SCMS-T_Enable | 2 октета | Октет 0: Флаг, разрешающий добавление заголовка SCMS-T.
Октет 1: значение заголовка SCMS-T, если он включен. |
Частота дискретизации | 4 октета | 0x01 - 44100 Гц 0x02 - 48000 Гц 0x04 - 88200 Гц 0x08 - 96000 Гц |
Bits_Per_Sample | 1 октет | 0x01 — 16 бит на выборку 0x02 — 24 бита на выборку 0x04 — 32 бита на выборку |
Channel_Mode | 1 октет | 0x01 — моно 0x02 — Стерео |
Кодированный_Аудио_Битрейт | 4 октета | Битрейт закодированного аудио в битах в секунду. 0x00000000 - Битрейт аудио не указан/не используется. 0x00000001 — 0x00FFFFFF — битрейт закодированного аудио в битах в секунду. 0x01000000 - 0xFFFFFFFF - Зарезервировано. |
Connection_Handle | 2 октета | Соединение Дескриптор настраиваемого соединения A2DP |
L2CAP_Channel_ID | 2 октета | Идентификатор канала L2CAP, который будет использоваться для этого соединения A2DP |
L2CAP_MTU_Размер | 2 октета | Максимальный размер L2CAP MTU, содержащий закодированные аудиопакеты |
Codec_Information | 32 октета | Информация о кодеке. Кодек SBC: Обратитесь к информационным элементам, относящимся к кодеку SBC, в A2DP v1.3. Кодек ААС: Обратитесь к информационным элементам, относящимся к кодеку AAC, в A2DP v1.3. Кодек LDAC: Октет 0–3: идентификатор поставщика Октет 4-5: идентификатор кодека Октет 6: Индекс битрейта: Октет 7: Режим канала LDAC Октет 8-31: зарезервировано Все остальные кодеки: Октет 0–31: зарезервировано |
Для этой команды будет сгенерировано событие Command Complete.
Возвращаемый параметр | Размер | Цель |
---|---|---|
Статус | 1 октет | Статус выполнения команды |
Sub_Opcode | 1 октет | 0x0- Начать разгрузку A2DP |
Остановить разгрузку A2DP
Суб OCF: 0x02
Эта команда используется для остановки потока разгрузки A2DP.
Параметр команды | Размер | Цель |
---|---|---|
Н/Д | Пустой список параметров команды. |
Для этой команды не определены параметры.
Для этой команды будет сгенерировано событие Command Complete.
Возвращаемый параметр | Размер | Цель |
---|---|---|
Статус | 1 октет | Статус выполнения команды |
Sub_Opcode | 1 октет | 0x02 — Остановить разгрузку A2DP |
Команда отчета о качестве Bluetooth
Командная функция отчета о качестве BT запускает механизм в контроллере Bluetooth, чтобы сообщать хосту о событиях качества Bluetooth. Вы можете включить четыре опции:
- Режим контроля качества: Контроллер периодически отправляет хосту подсобытие BQR, связанное с качеством связи.
- Приближение к LSTO: если пакеты не принимаются от подключенного устройства BT дольше, чем половина значения Link Supervision TimeOut (LSTO), контроллер сообщает хосту о событии «Приближение LSTO».
- A2DP Audio Choppy: Когда контроллер обнаруживает факторы, вызывающие прерывистый звук, контроллер сообщает хосту о событии A2DP Audio Choppy.
- (e)SCO Voice Choppy: когда контроллер обнаруживает факторы, вызывающие прерывание голоса, он сообщает хосту о событии (e)SCO Voice Choppy.
- Root Inflammation: это событие отправляется контроллером в стек, когда HAL или контроллер обнаруживает фатальную ошибку и требует перезапуска Bluetooth.
- Трассировка сообщения LMP/LL: Контроллер отправляет сообщение подтверждения связи LMP/LL с удаленным устройством на хост.
- Трассировка планирования Bluetooth Multi-profile/Coex: Контроллер отправляет хосту информацию о планировании обработки нескольких профилей Bluetooth и сосуществования беспроводных сетей в диапазоне 2,4 ГГц.
- Механизм отладочной информации контроллера: если он включен, контроллер может автономно сообщать хосту информацию журнала отладки через подсобытие «Отладочная информация контроллера».
OCF: 0x15E
Параметр команды | Размер | Цель |
---|---|---|
BQR_Report_Action | 1 октет | Действие по добавлению/удалению отчетов о событиях качества, заданных в параметре BQR_Quality_Event_Mask, или удаление всего. 0x00 — добавить Удалить очистит отчеты о конкретных событиях качества. |
BQR_Quality_Event_Mask | 4 октета | Битовые маски для выбранных отчетов о событиях качества. Бит 0: Установите для включения режима контроля качества. |
BQR_Minimum_Report_Interval | 2 октета | Определите минимальный временной интервал отчета о событиях качества для выбранных событий качества. Микропрограмма контроллера не должна сообщать о следующем событии в течение заданного интервала времени. Настройка интервала должна соответствовать добавляемому событию (событиям) качества и предназначаться для него. Единица: мс |
Для этой команды будет сгенерировано событие Command Complete.
Возвращаемый параметр | Размер | Цель |
---|---|---|
Статус | 1 октет | Статус выполнения команды |
Current_Quality_Event_Mask | 4 октета | Указывает текущую настройку битовой маски. Бит 0: Режим контроля качества включен. Бит 1: отчеты о событиях приближения LSTO включены. Бит 2: Отчет о событиях A2DP Audio Choppy включен. Бит 3: (e)сообщение о событиях SCO Voice Choppy включено. Бит 4: Отчет о воспалении корня включен. Бит 5 ~ 15: зарезервировано. Бит 16: включена трассировка сообщений LMP/LL. Бит 17: трассировка планирования Bluetooth Multi-link/Coex включена. Бит 18: Механизм отладочной информации контроллера включен. Бит 19 ~ 31: зарезервировано. |
Команда динамического аудиобуфера
The Dynamic Audio Buffer reduces audio glitching by changing the audio buffer size in the Bluetooth controller based on various scenarios.
OCF: 0x15F
Get audio buffer time capability
Sub OCF: 0x01
Use this command to get the audio buffer time capability from the Bluetooth controller.
Command parameter | Size | Цель |
---|---|---|
Н/Д | Empty Command parameter list |
A Command Complete event will be generated for this command.
Return parameter | Size | Цель |
---|---|---|
Status | 1 octet | Command Complete status |
Dynamic_Audio_Buffer_opcode | 1 octet | 0x01 - Get audio buffer time |
Audio_Codec_Type_Supported | 4 octets | Bit masks for the supported codec types Bit 0 - SBC Bit 1 - AAC Bit 2 - APTX Bit 3 - APTX HD Bit 4 - LDAC Bit 5-31 are reserved |
Audio_Codec_Buffer_Default_Time_For_Bit_0 | 2 octets | Default buffer time of the Bit 0 codec type specified in Audio_Codec_Type_Supported. This value shall be 0 if the Bit 0 codec type is not supported. Unit: ms |
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 | 2 octets | Maximum buffer time of the Bit 0 codec type specified in Audio_Codec_Type_Supported. This value shall be 0 if the Bit 0 codec type is not supported. Unit: ms |
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 | 2 octets | Minimum buffer time of the Bit 0 codec type specified in Audio_Codec_Type_Supported. This value shall be 0 if the Bit 0 codec type is not supported. Unit: ms |
Audio_Codec_Buffer_Default_Time_For_Bit_1 | 2 octets | Default buffer time of the Bit 1 codec type specified in Audio_Codec_Type_Supported. This value shall be 0 if the Bit 1 codec type is not supported. Unit: ms |
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 | 2 octets | Maximum buffer time of the Bit 1 codec type specified in Audio_Codec_Type_Supported. This value shall be 0 if the Bit 1 codec type is not supported. Unit: ms |
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 | 2 octets | Minimum buffer time of the Bit 1 codec type specified in Audio_Codec_Type_Supported. This value shall be 0 if the Bit 1 codec type is not supported. Unit: ms |
...... | ...... | ...... |
Audio_Codec_Buffer_Default_Time_For_Bit_31 | 2 octets | Default buffer time of the Bit 31 codec type specified in Audio_Codec_Type_Supported. This value shall be 0 if the Bit 31 codec type is not supported. Unit: ms |
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 | 2 octets | Maximum buffer time of the Bit 31 codec type specified in Audio_Codec_Type_Supported. This value shall be 0 if the Bit 31 codec type is not supported. Unit: ms |
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 | 2 octets | Minimum buffer time of the Bit 31 codec type specified in Audio_Codec_Type_Supported. This value shall be 0 if the Bit 31 codec type is not supported. Unit: ms |
Set audio buffer time
Sub OCF: 0x02
Use this command to set the audio buffer time to the Bluetooth controller.
Command parameter | Size | Цель |
---|---|---|
Audio_Codec_Buffer_Time | 2 octets | Requested audio buffer time for the current used codec. Unit: ms |
A Command Complete event will be generated for this command.
Return parameter | Size | Цель |
---|---|---|
Status | 1 octet | Command Complete status |
Dynamic_Audio_Buffer_opcode | 1 octet | 0x02 - Set audio buffer time |
Audio_Codec_Buffer_Time | 2 octets | Current audio buffer time in the Bluetooth controller. Unit: ms |
HCI event (vendor-specific)
Vendor-specific HCI events are required in some cases. Refer to Figure 5.4 on page 1897 of the BT Core 5.2 Specification. Event parameter 0 will always contain the first sub-event code, based on which the rest of the HCI event is decoded.
Event Parameter | Size | Цель |
---|---|---|
HCI_vendor_specific_event_code | 1 octet | 0xFF |
sub_event_code | 1 octet | A sub-event code will be 1 octet in size, the byte immediately following Parameter Length in the HCI event packet. |
Storage threshold breach sub-event
This event indicates that the storage threshold has been breached.
Sub-event code = 0x54
Sub-event Parameter | Size | Цель |
---|---|---|
None |
LE multi-advertising state change sub-event
This event indicates that an advertising instance has changed its state. At this time, this event is only used to indicate which advertising instance was stopped as a result of a connection.
Sub-event code = 0x55
Sub-event parameter | Size | Цель |
---|---|---|
Advertising_instance | 1 octet | Identifies the specific advertising instance Valid values are 0 through max_advt_instances -1 |
State_Change_Reason | 1 octet | 0x00: Connection received |
Connection_handle | 2 octets | Identifies the connection that caused the advt instance to be disabled (0xFFFF if invalid) |
LE advertisement tracking sub-event
This event indicates when an advertiser is found or lost.
Sub event code = 0x56
Sub-event Parameter | Size | Цель |
---|---|---|
APCF_Filter_Index | 1 octet | Filter Index (0, max_filter -1) |
Advertiser_State | 1 octet | 0x00: Advertiser found 0x01: Advertiser lost |
Advt_Info_Present | 1 octet | 0x00: Advertiser information ( Advt_Info ) present0x01: Advertiser information ( Advt_Info ) not present |
Advertiser_Address | 6 octets | Public or random address |
Advertiser_Address_Type | 1 octet | 0x00: Public address 0x01: Random address |
Advt_Info | Tx_Pwr[0] : 1 octetRSSI[0] : 1 octetTimestamp[0] : 2 octetsAdv packet_len[0] : 1 octetAdv_packet[0] : Adv_packet_len octetsScan_data_resp_len[0] : 1 octetScan_data_resp[0] : Scan_data_resp octets |
Controller debug info sub-event
This event is used by a Controller to provide binary debug information to a host.
Sub-event code = 0x57
Sub-event Parameter | Size | Цель |
---|---|---|
debug_block_byte_offset_start | 2 octets | Debug block byte offset from the start |
last_block | 1 octet | 0x00: More debug data present 0x01: Last binary block; no more debug data |
cur_pay_load_sz | 2 octets | Binary block size in a current event |
Debug_Data | Variable | Debug data of cur_payload_sz |
Bluetooth Quality Report sub-event
This event indicates one of the following: a Bluetooth quality event occurred, the controller uploaded the LMP/LL message trace and Bluetooth Multi-link/Coex scheduling trace, or the controller dumped debug information data.
Sub-event code = 0x58 [Quality_Report_Id = 0x01 ~ 0x04, Link Quality related event]
Sub-event Parameter | Size | Цель |
---|---|---|
Quality_Report_Id | 1 octet | 0x01: Quality reporting on the monitoring mode. 0x02: Approaching LSTO. 0x03: A2DP Audio Choppy. 0x04: (e)SCO Voice Choppy. 0x05 ~ 0xFF: Reserved. |
Packet_Types | 1 octet | 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 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 ~ 0xFF: Reserved. |
Connection_Handle | 2 octets | Connection Handle. |
Connection_Role | 1 octet | Performing Role for the connection. 0x00: Central 0x01: Peripheral 0x02 ~ 0xFF: Reserved. |
TX_Power_Level | 1 octet | Current transmit power level for the specified Connection_Handle. This value shall be the same as the controller's responding to the HCI_Read_Transmit_Power_Level HCI command. |
RSSI | 1 octet | [in dBm] Received Signal Strength Indication (RSSI) value for the specified Connection_Handle. |
SNR | 1 octet | [in dB] Signal-to-Noise Ratio (SNR) value for the specified Connection_Handle. |
Unused_AFH_Channel_Count | 1 octet | Indicates the number of unused channels in AFH_channel_map. 0x4F ~ 0xFF: Reserved. |
AFH_Select_Unideal_Channel_Count | 1 octet | Indicates the number of the channels which are interfered and have bad quality, but they are still selected for AFH. The minimum number of channels allowed by the Bluetooth specification is 20, so even if all 79 channels are interfered and have bad quality, the controller still needs to choose at least 20 channels for AFH. |
LSTO | 2 octets | Current Link Supervision Timeout Setting. Time = N * 0.625 ms Time Range: 0.625 ms to 40.9 s |
Connection_Piconet_Clock | 4 octets | Piconet Clock for the specified Connection_Handle. This value shall be the same as the controller's responding to HCI_Read_Clock HCI command with parameter "Which_Clock" of 0x01 (Piconet Clock). Unit: N * 0.3125 ms (1 Bluetooth Clock) |
Retransmission_Count | 4 octets | The number of retransmissions since the last event. This count shall be reset after reporting to the host. |
No_RX_Count | 4 octets | No RX count since the last event. The count increases when no packet is received at the scheduled time slot or the received packet is corrupted. This count shall be reset after reporting to the host. |
NAK_Count | 4 octets | NAK (Negative Acknowledge) count since the last event. This count shall be reset after reporting to the host. |
Last_TX_ACK_Timestamp | 4 octets | Timestamp of last TX ACK. It is based on the Bluetooth Clock of the piconet central (CLK). Unit: N * 0.3125 ms (1 Bluetooth Clock) |
Flow_Off_Count | 4 octets | The number of times the controller receives Flow-off (STOP) since the last event. This count shall be reset after reporting to the host. |
Last_Flow_On_Timestamp | 4 octets | Timestamp of last Flow-on (GO). It is based on the Bluetooth Clock of the piconet central (CLK). Unit: N * 0.3125 ms (1 Bluetooth Clock) |
Buffer_Overflow_Bytes | 4 octets | [in Byte] Buffer overflow count since the last event. |
Buffer_Underflow_Bytes | 4 octets | [in Byte] Buffer underflow count since the last event. |
Vendor Specific Parameter | (Parameter Total Length - 49) * octets | For the controller vendor to obtain more vendor specific parameters. |
Sub-event code = 0x58 [Quality_Report_Id = 0x05, Root Inflammation event]
This event indicates that Bluetooth HAL or the controller encountered a fatal error and needs Bluetooth stack to record this situation and restart. The controller must send a Root_Inflammation_Event to Bluetooth stack before sending the first fragment of the debug info events in any case.
The Error_Code parameter contains an error code reported from HAL/Controller, 0 if it is a chipset vendor specific error. The Vendor_Specific_Error_Code contains a chipset vendor specific error code from HAL/Controller. It should set as 0 if the parameter Error_Code is not 0. The parameters Error_Code and Vendor_Specific_Error_Code should not both be 0.
Sub-event Parameter | Size | Цель |
---|---|---|
Quality_Report_Id | 1 octet | 0x00 ~ 0x04: Reserved. 0x05: Root inflammation. 0x06 ~ 0xFF: Reserved. |
Error_Code | 1 octet | 0x00: Chipset vendor specific error code is included. 0x01 ~ 0xFF: Controller failure occurred. See Bluetooth Spec [Vol 2] Part D, Error Codes for a list of error codes and descriptions. |
Vendor_Specific_Error_Code | 1 octet | 0x00: No chipset vendor specific error code is included. 0x01 ~ 0xFF: Chipset vendor specific error code. |
Vendor Specific Parameter | (Parameter Total Length - 4) * octets | For the controller vendor to obtain more vendor specific parameters. |
Sub-event code = 0x58 [Quality_Report_Id = 0x11 ~ 0x13, Log Dump related event]
Sub-event Parameter | Size | Цель |
---|---|---|
Quality_Report_Id | 1 octet | 0x00 ~ 0x10: Reserved. 0x11: LMP/LL message trace. 0x12: Bluetooth Multi-link/Coex scheduling trace. 0x13: Controller Debug Information data dump. 0x14 ~ 0xFF: Reserved. |
Connection_Handle | 2 octets | Connection Handle. |
Vendor Specific Parameter | (Parameter Total Length - 4) * octets | Vendor Specific format of LMP message trace, Bluetooth Multi-link/Coex scheduling trace and Controller Debug Information data dump. |
Multi-advertiser support
The objectives of multi-advertiser support are the following:
- Ability to support multiple advertisements (
max_advt_instances
) - Different transmit powers to allow for a varying range
- Different advertising content
- An individualized response for each advertiser
- Privacy (non-trackable) for each advertiser
- Connectable
To keep this specification close to existing standards, the following vendor-specific commands are provided. They are derived from the Bluetooth Core 4.1 Specification.
LE_Multi_Advt_Command
OCF: 0x154
Command parameter | Size | Цель |
---|---|---|
Multi_advt_opcode | 1 octet | 0x01 - Set_Advt_Param_Multi_Sub_Cmd 0x02 - Set_Advt_Data_Multi_Sub_Cmd 0x03 - Set_Scan_Resp_Data_Multi_Sub_Cmd 0x04 - Set_Random_Addr_Multi_Sub_Cmd 0x05 - Set_Advt_Enable_Multi_Sub_Cmd |
A Command Complete event will be generated for this command.
Return parameter | Size | Цель |
---|---|---|
Status | 1 octet | Command Complete status |
Multi_advt_opcode | 1 octet | 0x01 - Set_Advt_Param_Multi_Command 0x02 - Set_Advt_Data_Multi_Command 0x03 - Set_Scan_Resp_Data_Multi_Command 0x04 - Set_Random_Addr_Multi_Command 0x05 - Set_Advt_Enable_Multi_Command |
LE_Multi_Advt_Command: Set_Advt_Param_Multi_Sub_Cmd
Base reference: Bluetooth Core 4.1 Specification, page 964 (LE Set Advertising Parameter Command)
Sub OCF: 0x01
Sub-command parameter | Size | Цель |
---|---|---|
Advertising_Interval_Min | Per spec | Per spec |
Advertising_Interval_Max | Per spec | Per spec |
Advertising_Type | Per spec | Per spec |
Own_Address_Type | Per spec | Per spec |
Own_Address | Per spec | Per spec |
Direct_Address_Type | Per spec | Per spec |
Direct_Address | Per spec | Per spec |
Advertising_Channel_Map | Per spec | Per spec |
Adverstising_Filter_Policy | Per spec | Per spec |
Advertising_Instance | 1 octet | Specifies the applicability of the above parameters to an instance |
Tx_power | 1 octet | Transmit_Power Unit - in dBm (signed integer) Range (-70 to +20) |
The Own_Address
parameter could be a host-configured address at the time of setting up this multi-advertisement instance. This provides the ability to have a resolvable private address at the time of the transmit of the first beacon. Advertisement on an instance will continue irrespective of the connection. The host BT stack could issue a command to start advertisement on an instance, post connection.
A Command Complete event will be generated for this command as specified in the Bluetooth Core 4.1 Specification, per the above command. The controller will respond with a non-success (invalid parameter) code if the advertising instance or Tx_Power
parameters are invalid.
Return parameter | Size | Цель |
---|---|---|
Status | 1 octet | Command Complete status |
Multi_advt_opcode | 1 octet | 0x01 [ Set_Advt_Param_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd
Base reference: Bluetooth Core 4.1 Specification, page 969 (LE Set Advertising Data Command)
Sub OCF: 0x02
Sub-command parameter | Size | Цель |
---|---|---|
Advertising_Data_Length | Per spec | Per spec |
Advertising_Data | Per spec | Per spec |
Advertising_Instance | 1 octet | Specifies the applicability of the above parameters to an instance |
A Command Complete event will be generated for this command as specified in the Bluetooth Core 4.1 Specification, per the above command. The controller will respond with a non-success code if the advertising instance or Tx_Power
parameters are invalid.
Return parameter | Size | Цель |
---|---|---|
Status | 1 octet | Command Complete status |
Multi_advt_opcode | 1 octet | 0x02 [ Set_Advt_Data_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd
Base reference: Bluetooth Core 4.1 Specification, page 970 (LE Set Scan Response Data Command)
Sub OCF: 0x03
Sub-command parameter | Size | Цель |
---|---|---|
Scan_Response_Data_Length | Per spec | Per spec |
Scan_Response_Data | Per spec | Per spec |
Advertising_Instance | 1 octet | Specifies the applicability of the above parameters to an instance |
A Command Complete event will be generated for this command as specified in the Bluetooth Core 4.1 Specification, per the above command. The controller will respond with a non-success code (invalid parameter) if the advertising instance or Tx_Power
parameters are invalid.
Return parameter | Size | Цель |
---|---|---|
Status | 1 octet | Command Complete status |
Multi_advt_opcode | 1 octet | 0x03 [ Set_Scan_Resp_Data_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd
Base reference: Bluetooth Core 4.1 Specification, page 963 (LE Set Random Address Command)
Sub OCF: 0x04
Sub-command parameter | Size | Цель |
---|---|---|
Random Address | Per spec | Per spec |
Advertising_Instance | 1 octet | Specifies the applicability of the above parameters to an instance |
A Command Complete event will be generated for this command.
Return parameter | Size | Цель |
---|---|---|
Status | 1 octet | Command Complete status |
Multi_advt_opcode | 1 octet | 0x04 [ Set_Random_Addr_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd
Base reference: Bluetooth Core 4.1 Specification, page 971 (LE Set Advertise Enable Command in that core specification)
OCF: 0x05
Sub-command parameter | Size | Цель |
---|---|---|
Advertising_Enable | 1 octet | A value of 1 means enable. Any other value means disable. |
Advertising_Instance | 1 octet | Specifies the applicability of the above parameters to an instance. Instance 0 means a standard HCI instance. |
A Command Complete event will be generated for this command.
Return parameter | Size | Цель |
---|---|---|
Status | 1 octet | Command Complete status |
Multi_advt_opcode | 1 octet | 0x05 [ Set_Advt_Enable_Multi_Sub_Cmd] |
Offloaded resolution of private address
This feature resolves a private address in the controller firmware or hardware, which provides the following benefits:
- Latency involved with the host in resolving a private address
- Saving power by refraining from waking up the host
LE_Set_RPA_Timeout
OCF: 0x15C
Command parameter | Size | Цель |
---|---|---|
LE_local_IRK | 16 octet | The local device IRK used to generate the random resolvable address(es). |
tRPA_min | 2 octets | The minimum RPA generation timeout in seconds. The controller must generate new resolvable addresses for any advertising/scanning/connection events on or after this timeout. Valid range: 300-1800 |
tRPA_max | 2 octets | The maximum RPA generation timeout in seconds. The controller must generate new resolvable addresses for any advertising/scanning/connection events on or before this timeout. Valid range: tRPA_min -1800 |
Return parameter | Size | Цель |
---|---|---|
Status | 1 octet | The status of the command. Suggested HCI status values: 0x00 Success 0x01 Unknown command (if not supported) 0x12 Invalid command parameters (if any parameters are outside the given range) |
LE_RPA_offload_Command
OCF: 0x155
Command parameter | Size | Цель |
---|---|---|
RPA_offload_opcode | 1 octet | 0x1 - Enable customer specific feature 0x2 - Add IRK to the list 0x3 - Remove IRK from the list 0x4 - Clear IRK list 0x5 - Read IRK list entry |
A Command Complete event will be generated for this command.
Return parameter | Size | Цель |
---|---|---|
Status | 1 octet | Command Complete status |
Event_RPA_offload_opcode | 1 octet | 0x1 - Enable customer specific feature 0x2 - Add IRK to the list 0x3 - Remove IRK from the list 0x4 - Clear IRK list 0x5 - Read IRK list entry |
LE_RPA_offload: Enable_cust_specific_sub_Command
Sub OCF: 0x01
Sub-command parameter | Size | Цель |
---|---|---|
enable_customer_specific_feature_set | 1 octet | 0x01 - Enable offloaded RPA feature 0x00 - Disable offloaded RPA feature |
RPA offload is required to be enabled by the host, based on the chip capability. Refer to the LE_Get_Vendor_Capabilities_Command
. Each chip can have a varying max_irk_list_sz
in the firmware.
A Command Complete event will be generated for this command.
Return parameter | Size | Цель |
---|---|---|
Status | 1 octet | Command Complete status |
Event_cust_specific_feature_opcode | 1 octet | 0x01 [Enable customer-specific feature] |
LE_RPA_offload: Add_IRK_to_list_sub_Command
Sub OCF: 0x02
Sub-command parameter | Size | Цель |
---|---|---|
LE_IRK | 16 octets | LE IRK (1st byte LSB) |
Address_Type | 1 octet | 0: Public address 1: Random address |
LE_Device_Address | 6 octets | Public or random address associated to the IRK (1st byte LSB) |
A Command Complete event will be generated for this command.
Return parameter | Size | Цель |
---|---|---|
Status | 1 octet | Command Complete status |
Event_cust_specific_feature_opcode | 1 octet | 0x02 [Add IRK to the list] |
LE_IrkList_AvailableSpaces | 1 octet | Available IRL list entries after current operation |
LE_RPA_offload: Remove_IRK_to_list_sub_Command
Sub OCF: 0x03
Sub-command parameter | Size | Цель |
---|---|---|
Address_Type | 1 octet | 0: Public address 1: Random address |
LE_Device_Address | 6 octets | Public or random address that associates to the IRK |
A Command Complete event will be generated for this command.
Return parameter | Size | Цель |
---|---|---|
Status | 1 octet | Command Complete status |
Event_cust_specific_feature_opcode | 1 octet | 0x03 [Remove IRK from the list] |
LE_IrkList_AvailableSpaces | 1 octet | Available IRL list entries after current operation |
LE_RPA_offload: Clear_IRK_list_sub_Command
Sub OCF: 0x04
Sub-command parameter | Size | Цель |
---|---|---|
None |
A Command Complete event will be generated for this command.
Return parameter | Size | Цель |
---|---|---|
Status | 1 octet | Command Complete status |
Event_cust_specific_feature_opcode | 1 octet | 0x04 [Clear IRK List] |
LE_IrkList_AvailableSpaces | 1 octet | Available IRL list entries after current operation [ max_irk_list_sz] |
LE_RPA_offload: Read_IRK_list_sub_Command
Sub OCF: 0x05
Sub-command parameter | Size | Цель |
---|---|---|
LE_read_IRK_list_entry-index | 1 octet | Index of the IRK list [0, max_irk_list_sz-1] |
A Command Complete event will be generated for this command.
Return parameter | Size | Цель |
---|---|---|
Status | 1 octet | Command Complete status |
Event_cust_specific_feature_opcode | 1 octet | 0x05 [Read IRK List Entry] |
LE_Read_IRK_List_entry | 1 octet | Index of the IRK that the host wants to read back (maximum IRK list size is 32) |
LE_IRK | 16 octets | IRK value |
Address_Type | 1 octet | 0: Public address 1: Random address |
LE_Device_Address | 6 octets | Public or random address associated to the IRK |
LE_Resolved_Private_Address | 6 octets | Current resolved resolvable private address of this IRK |