Требования HCI

Интерфейс хост-контроллера (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

Параметр команды Размер Цель
NA Пустой список параметров команды

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

Возвращаемый параметр Размер Цель
Status 1 октет Статус завершения команды
max_advt_instances
(Устарело)
1 октет Количество поддерживаемых экземпляров рекламы.

Зарезервировано после версии 0.98.
Этот параметр устарел в спецификации функций Google версии 0.98 и выше в пользу расширенной рекламы LE, доступной в спецификации BT версии 5.0 и выше.
offloaded_resolution_of_private-address
(Устарело)
1 октет Возможности чипа BT 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.
байт[0] = основной номер
byte[1] = Младший номер

v1.04
байт[0] = 0x01
байт[1] = 0x04
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–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–31 зарезервированы.
a2dp_offload_v2_support 1 октет Поддерживает команды A2dp Offload v2 в контроллере Bluetooth (см. «Начать разгрузку A2DP» , «Остановить разгрузку A2DP »).
0 = не поддерживается
1 = поддерживается

Пакетирование результатов сканирования

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

Уменьшая частоту уведомления контроллером процессора главного приложения о результатах сканирования, процессор главного приложения может дольше оставаться в режиме ожидания/сна. Это снижает энергопотребление хоста. Возвращаемый параметр total_scan_results_storage команды LE_Get_Vendor_Capabilities_Command указывает на способность чипа хранить результаты сканирования.

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

Прошивка должна поддерживать два типа пакетной обработки, которые можно использовать одновременно:

  • Усечено. Содержит следующие информационные элементы: {MAC, TX Power, RSSI, Timestamp}
  • Полный. Содержит следующие информационные элементы: {MAC, мощность передачи, RSSI, временная метка, рекламные данные, ответ сканирования}

LE_Batch_Scan_Command

ОКФ: 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 отключит уведомление. Генерируется событие HCI, зависящее от поставщика (подсобытие нарушения порога хранилища)

Для этой команды будет сгенерировано событие 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, Ad package}, независимо от интервала сканирования. Для полного режима следует сохранять запись { BD_ADDR , Tx Power, RSSI, Timestamp, Ad package, Scan Response}. В полном стиле один и тот же пакет AD, просматриваемый несколько раз в разные интервалы сканирования, записывается только один раз. Однако в усеченном режиме интерес представляет видимость 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 в количестве записей, что указывает на то, что у контроллера больше нет записей для передачи хосту. Каждое событие выполнения команды может содержать несколько записей только одного типа данных (полные или усеченные).

Привязки времени контроллера и хоста не синхронизированы. Единица отметки времени — 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 октетов
Тип_адреса[0]: 1 октет
Tx_Pwr[0]: 1 октет
RSSI[0]: 1 октет
Временная метка[0]: 2 октета.
[несколько записей ( num_of_records ) в указанном выше формате]

Полный режим:
Адрес[0]: 6 октетов
Тип_адреса[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) в контроллере. APCF фильтрует отчеты о рекламе в контроллере, но не фильтрует периодическую рекламу.

LE_APCF_Команда

ОКФ: 0x157

Параметр команды Размер Цель
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 Чтение расширенных функций

Для этой команды будет сгенерировано событие 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

Дополнительный 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 — Очистить
Удалить очистит конкретный фильтр вместе со связанными записями функций в других таблицах.
Очистить очистит все фильтры и связанные записи в других таблицах.
APCF_Filter_Index 1 октет Индекс фильтра (0, max_filter-1 )
APCF_Feature_Selection 2 октета Битовые маски для выбранных функций:
Бит 0: установлен для включения фильтра широковещательного адреса.
Бит 1: установлен для включения фильтра изменения служебных данных.
Бит 2: установлен для включения проверки UUID службы.
Бит 3: установлен для включения проверки UUID запроса службы.
Бит 4: установлен для включения проверки локального имени.
Бит 5: установлен для включения проверки данных производителя.
Бит 6: установлен для включения проверки служебных данных.
Бит 7: установлен для включения проверки службы обнаружения транспорта.
Бит 8: установлен для включения проверки типа AD.
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 октет 0x01 — параметры фильтрации установки APCF
APCF_Action 1 октет APCF_Action команды Echo Back
APCF_AvailableSpaces 1 октет Количество доступных записей в таблице фильтров

LE_APCF_Command: Broadcast_address_sub_cmd

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

Дополнительный 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: NA (тип адреса не применим)

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

Возвращаемый параметр Размер Цель
Status 1 октет Статус завершения команды
APCF_opcode 1 октет 0x02 — адрес вещательной компании APCF
APCF_Action 1 октет APCF_Action команды Echo Back
APCF_AvailableSpaces 1 октет Количество свободных записей, все еще доступных в таблице широковещательных адресов.

LE_APCF_Command: service_uuid_sub_cmd

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

Дополнительный OCF: 0x03

Параметр подкоманды Размер Цель
APCF_Action 1 октет 0x00 — Добавить
0x01 — Удалить
0x02 — Очистить
Удалить удалит указанный адрес UUID службы в указанном фильтре.
Очистить очистит все 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 команды Echo Back
APCF_AvailableSpaces 1 октет Количество свободных записей, которые все еще доступны в таблице UUID службы.

LE_APCF_Command: solicitation_uuid_sub_cmd

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

Дополнительный OCF: 0x04

Параметр подкоманды Размер Цель
APCF_Action 1 октет 0x00 — Добавить
0x01 — Удалить
0x02 — Очистить
Удалить удалит адрес UUID запроса в указанном фильтре.
Очистить очистит все 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 команды Echo Back
APCF_AvailableSpaces 1 октет Количество свободных записей, все еще доступных в таблице UUID запроса.

LE_APCF_Command: local_name_sub_cmd

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

Дополнительный OCF: 0x05

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

Примечания:
  • В настоящее время максимальное количество символов в строке локального имени составляет 29.
  • Неприменимо, если действие «Очистить» (0x2).

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

Возвращаемый параметр Размер Цель
Status 1 октет Статус завершения команды
APCF_opcode 1 октет 0x05 — локальное имя APCF
APCF_Action 1 октет APCF_Action команды Echo Back
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 Переменный размер Строка символов для данных производителя.

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

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

Возвращаемый параметр Размер Цель
Status 1 октет Статус завершения команды
APCF_opcode 1 октет 0x06 — данные производителя APCF
APCF_Action 1 октет APCF_Action команды Echo Back
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 Переменный размер Строка символов для служебных данных.

Примечания:
  • В настоящее время максимальное количество символов в строке локального имени составляет 29.
  • Неприменимо, если действие «Очистить» (0x2).
APCF_LocName_Mandata_or_SerData_Mask Переменный размер Маска служебных данных, добавляемая в список. Он должен иметь ту же длину, что и APCF_LocName_or_ManData_or_SerData.

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

Возвращаемый параметр Размер Цель
Status 1 октет Статус завершения команды
APCF_opcode 1 октет 0x07 — данные службы APCF
APCF_Action 1 октет APCF_Action команды Echo Back
APCF_AvailableSpaces 1 октет Количество свободных записей, доступных для таблицы служебных данных

LE_APCF_Command: ad_type_sub_cmd

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

Дополнительный OCF: 0x09

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

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

Возвращаемый параметр Размер Цель
Status 1 октет Статус завершения команды
APCF_opcode 1 октет 0x09 — Тип AD APCF
APCF_Action 1 октет APCF_Action команды Echo Back
APCF_AvailableSpaces 1 октет Количество свободных записей, все еще доступных в таблице типов AD.

LE_APCF_Command: read_extended_features_sub_cmd

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

Дополнительный OCF: 0xFF

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

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

Возвращаемый параметр Размер Цель
Status 1 октет Статус завершения команды
APCF_opcode 1 октет 0xFF — APCF_Read_Extended_Features
APCF_extended_features 2 октета

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

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

Значение бита

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

Действия контроллера и команда информации об энергии

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

  • Стек BT: отчет о текущем макрорабочем состоянии контроллера.
  • Прошивка: отчетность по совокупной активности и информации об энергопотреблении.

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

  • В режиме ожидания: [сканирование страницы, реклама LE, сканирование запроса]
  • Сканирование: [пейджинг/запрос/попытка подключения]
  • Активно: [связь ACL включена, связь SCO активна, режим отслеживания]

Действия, которые контроллер отслеживает в течение всего срока службы, — это время передачи, время приема, время простоя и общий объем потребляемой энергии. Они очищаются при чтении с хоста.

LE_Get_Controller_Activity_Energy_Info

Это команда конкретного поставщика.

ОКФ: 0x159

Параметр подкоманды Размер Цель
NA Пустые параметры команды

Для этой команды будет сгенерировано событие 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).

ОКФ: 0x15А

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

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

Возвращаемый параметр Размер Цель
Status 1 октет Статус завершения команды

Получить команду отладочной информации контроллера

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

ОКФ: 0x15B

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

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

Возвращаемый параметр Размер Цель
Status 1 октет Статус завершения команды

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

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

ОКФ: 0x15D

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

Дополнительный OCF: 0x01

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

Параметр команды Размер Цель
Codec 4 октета Указывает тип кодека
0x01 — СБК
0x02 — ААС
0x04 — АПТХ
0x08 — APTX HD
0x10 — ЛДАК
Max_Latency 2 октета Макс. допустимая задержка (в мс). Значение 0 отключает сброс.
SCMS-T_Enable 2 октета Октет 0: Флаг, разрешающий добавление заголовка SCMS-T.
  • 0x00 — заголовок SCMS-T не включен.
  • 0x01 — включен заголовок SCMS-T.

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

Sampling_Frequency 4 октета 0x01 – 44100 Гц
0x02 – 48000 Гц
0x04 – 88200 Гц
0x08 – 96000 Гц
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 октета Максимальный размер L2CAP MTU, содержащий закодированные аудиопакеты
Codec_Information 32 октета Информация о кодеке.

Кодек SBC:

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

Кодек AAC:

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

Кодек LDAC:

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

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

Октет 6: Индекс битрейта:
0x00 — высокий
0x01 — Середина
0x02 — Низкий
0x03 – 0x7E – Зарезервировано
0x7F — ABR (адаптивная скорость передачи данных)
0x80 – 0xFF – Зарезервировано

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

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

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

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

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

Возвращаемый параметр Размер Цель
Status 1 октет Статус завершения команды
Sub_Opcode 1 октет 0x01 — начать разгрузку A2DP

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

Дополнительный 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), определяет значение заголовка, которое предшествует аудиоконтенту (см. A2DP, раздел 3.2.1-2), как определено в разделе «Назначенные номера Bluetooth», раздел 6.3.2.
Игнорируется, если защита содержимого SCMS-T не включена.
Vendor_Specific_Parameters_Length 1 октет Длина параметров, специфичных для поставщика, в диапазоне от 0 до 128.
Значение 0 используется, когда дополнительные параметры не указаны.
Vendor_Specific_Parameters 0–128 октетов Параметры, специфичные для поставщика, предоставляемые Bluetooth Audio HAL, CodecParameters.vendorSpecificParameters[] .

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

Возвращаемый параметр Размер Цель
Status 1 октет Статус завершения команды
Sub_Opcode 1 октет 0x03 — начать разгрузку A2DP

Остановить разгрузку A2DP (устаревшая версия)

Дополнительный OCF: 0x02

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

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

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

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

Возвращаемый параметр Размер Цель
Status 1 октет Статус завершения команды
Sub_Opcode 1 октет 0x02 — остановить разгрузку A2DP

Остановить разгрузку A2DP

Дополнительный OCF: 0x04

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

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

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

Возвратный параметр Размер Цель
Status 1 октет Команда полного статуса
Sub_Opcode 1 октет 0x04 - остановить разгрузку A2DP

Команда отчета о качеством Bluetooth

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

  • Режим мониторинга качества: контроллер периодически отправляет на хост соединенный подразделение BQR, связанное с качеством.
  • Приближаясь к LSTO: Если с подключенного устройства BT не получается пакеты на более чем половину значения временного анаут (LSTO), контроллер сообщает о приближающемся событии LSTO для хоста.
  • A2DP Audio Chappy: Когда контроллер обнаруживает факторы, которые вызывают прерывистый звук, контроллер сообщает об хосте A2DP -прерывистое событие.
  • (e) Голосовой голос SCO: когда контроллер обнаруживает факторы, которые вызывают изменчивой голос, контроллер сообщает о (E) SCO голосовое событие для хоста.
  • Воспаление корня: это событие отправляется контроллером в стек, когда HAL или контроллер сталкиваются с фатальной ошибкой и необходимо перезапустить Bluetooth.
  • След в сообщении LMP/LL: Контроллер отправляет дистанционное управление сообщением LMP/LL с удаленным устройством на хост.
  • Bluetooth Multi-Profile/Coex Prackuling Trace: Контроллер отправляет информацию о планировании для обработки нескольких профилей Bluetooth и беспроводного сосуществования в диапазоне 2,4 ГГц на хост.
  • Информационный механизм отладки контроллера: при включении контроллер может автономно сообщать о информации о ведении журнала через подразделение информации отладки контроллера для хоста.

OCF: 0x15e

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

0x00 - добавить
0x01 - Удалить
0x02 - ясно

DELETE очистит конкретные отчеты о качествах.
CLEAR очистит все качественные отчеты о событиях (параметр BQR_QUALIT_EVENT_MASK может быть проигнорирован).

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

Бит 0: Установите, чтобы включить режим мониторинга качества.
Бит 1: Установите, чтобы включить приближение к LSTO Event (для ACL/(E) SCO/ISO).
Бит 2: Установите для включения A2DP Audio Creampy Event.
Бит 3: Установите, чтобы включить (e) SCO Voice Creamppy Event.
Бит 4: Установите, чтобы включить событие воспаления корня.
Бит 5: Установите для включения режима мониторинга энергии.
Бит 6: Установите, чтобы включить le audio.
Бит 7: Установите для включения события подключения.
Бит 8 ~ 14: зарезервировано.
Бит 15: Установите, чтобы включить качественные события, специфичные для поставщика.
Бит 16: Установите для включения трассировки сообщений LMP/LL.
Бит 17: Установите, чтобы включить трассу Bluetooth с мультисвязанными/коэксами.
Бит 18: Установлено, чтобы включить информационный механизм отладки контроллера.
Бит 19 ~ 30: зарезервировано.
Бит 31: Установка для включения следов поставщика.

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

Блок: MS
По умолчанию: 0 (нет ограничения для интервала.)
Диапазон: 0 ~ 65535 мс

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: зарезервирован.

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

Возвратный параметр Размер Цель
Status 1 октет Команда полного статуса
Current_Quality_Event_Mask 4 октета Указывает текущую настройку битовой маски.
Бит 0: режим мониторинга качества включен.
Бит 1: Подход к отчетности о событиях LSTO включена.
Бит 2: A2DP Audio.
Бит 3: (e) SCO голос.
Бит 4: Отчеты о событиях воспаления корня включена.
Бит 5: Режим мониторинга энергии включен.
Бит 6: LE Audio Crappy Comply Reporting включена.
Бит 7: Событие подключения Fail.
Бит 8 ~ 14: зарезервировано.
Бит 15: включена отчетность по качеству, специфичное для поставщика.
Бит 16: LMP/LL Trace включена.
Бит 17: Bluetooth Multi-Link/Coex Prackuling Trace включена.
Бит 18: Информационный механизм отладки контроллера включен.
Бит 19 ~ 30: зарезервировано.
Бит 31: Трассия, специфичная для поставщика, включена.
Current_Vendor_Specific_Quality_Event_Mask 4 октета Указывает текущую настройку битовой маски.
Current_Vendor_Specific_Trace_Mask 4 октета Указывает текущую настройку битовой маски.

Динамическая команда аудио буфера

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

OCF: 0x15f

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

Sub OCF: 0x01

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

Параметр команды Размер Цель
Н/Д Список параметров пустых команд

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

Возвратный параметр Размер Цель
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 октета Время буфера по умолчанию типа кода бита 0, указанного в Audio_codec_type_supported.
Это значение должно быть 0, если тип кода бита 0 не поддерживается.
Блок: MS
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 2 октета Максимальное время буфера типа кода бита 0, указанного в Audio_codec_type_supported.
Это значение должно быть 0, если тип кода бита 0 не поддерживается.
Блок: MS
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 2 октета Минимальное время буфера типа кода бита 0, указанного в Audio_codec_type_supported.
Это значение должно быть 0, если тип кода бита 0 не поддерживается.
Блок: MS
Audio_Codec_Buffer_Default_Time_For_Bit_1 2 октета Время буфера по умолчанию типа бита 1 кодек, указанный в Audio_codec_type_supported.
Это значение должно быть 0, если тип кода бита 1 не поддерживается.
Блок: MS
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 2 октета Максимальное время буфера типа 1 бита 1, указанное в Audio_Codec_type_Supported.
Это значение должно быть 0, если тип кода бита 1 не поддерживается.
Блок: MS
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 2 октета Минимальное время буфера типа кода 1 бита 1, указанного в Audio_codec_type_supported.
Это значение должно быть 0, если тип кода бита 1 не поддерживается.
Блок: MS
...... ...... ......
Audio_Codec_Buffer_Default_Time_For_Bit_31 2 октета Время буфера по умолчанию типа кода 31, указанный в Audio_codec_type_supported.
Это значение должно быть 0, если тип кодека BIT 31 не поддерживается.
Блок: MS
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 2 октета Максимальное время буфера типа кода 31, указанное в AUDIO_CODEC_TYPE_SUPPORTED.
Это значение должно быть 0, если тип кодека BIT 31 не поддерживается.
Блок: MS
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 2 октета Минимальное время буфера типа кода 31, указанное в AUDIO_CODEC_TYPE_SUPPORTED.
Это значение должно быть 0, если тип кодека BIT 31 не поддерживается.
Блок: MS

Установите время буфера аудио

Sub OCF: 0x02

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

Параметр команды Размер Цель
Audio_Codec_Buffer_Time 2 октета Запрашивается время буфера аудио для текущего используемого кодека.
Блок: MS

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

Возвратный параметр Размер Цель
Status 1 октет Команда полного статуса
Dynamic_Audio_Buffer_opcode 1 октет 0x02 - Установите время буфера аудио
Audio_Codec_Buffer_Time 2 октета Текущий аудио буферный время в контроллере Bluetooth.
Блок: MS

Событие HCI (специфичный для поставщика)

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

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

Порог хранения подразделения нарушения

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

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

Параметр суб-события Размер Цель
Никто

LE Multe-Adversing State Come-Event

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

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

Параметр суб-события Размер Цель
Advertising_instance 1 октет Определяет конкретный рекламный экземпляр
Допустимые значения: от 0 до max_advt_instances -1
State_Change_Reason 1 октет 0x00: Полученное соединение
Connection_handle 2 октета Определяет соединение, которое вызвало отключение экземпляра advt (0xffff, если недействителен)

LE Advertision Bultiing Sub-Event

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

Код субъекта = 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 octets
Scan_data_resp_len[0] : 1 октет
Scan_data_resp[0] : Scan_data_resp octets

Информация о отладке контроллера подразделение

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

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

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

Bluetooth Quality Report Sub-Event

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

Параметр суб-события Размер Цель
Quality_Report_Id 1 октет 0x01: качественная отчетность в режиме мониторинга.
0x02: приближается к LSTO.
0x03: A2DP Audio Chappy.
0x04: (e) Шоу голос SCO.
0x05 ~ 0x06: зарезервирован.
0x07: LE Audio Chappy.
0x08: подключить сбой.
0x09 ~ 0xff: зарезервирован.
Packet_Types 1 октет 0x01: id
0x02: NULL
0x03: опрос
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 ~ 0x50: зарезервированный
0x51: ISO Packet
0x52 ~ 0xff: зарезервирован
Connection_Handle 2 октета ACL/(E) SCO/ISO -рукоятка подключения.
Connection_Role 1 октет Выполнение роли для связи.
0x00: Центральный
0x01: периферийное
0x02 ~ 0xff: зарезервирован.
TX_Power_Level 1 октет Текущий уровень передачи мощности для указанного connection_handle.

Это значение должно быть таким же, как и контроллер, отвечающий на команду HCI_READ_TRANST_POWER_LEVEL HCI.

RSSI 1 октет [в DBM]

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

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

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

Unused_AFH_Channel_Count 1 октет Указывает количество неиспользованных каналов в AFH_CHANLER_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 октета Piconet Clock для указанного connection_handle.
Это значение должно быть таким же, как и контроллер, отвечающий на команду HCI_READ_CLOCK HCI с параметрами "What_clock" 0x01 (Piconet Clock).
Блок: n * 0,3125 мс (1 часы Bluetooth)
Retransmission_Count 4 октета Количество ретрансмиссий с момента последнего события.
Этот счет должен быть сброшен после отчетности хозяину.
No_RX_Count 4 октета Нет количества RX с момента последнего события.
Подсчет увеличивается, когда пакет не получен в запланированном временном интервале или полученный пакет поврежден.
Этот счет должен быть сброшен после отчетности хозяину.
NAK_Count 4 октета Нак (негативное признание) считается с последнего события.
Этот счет должен быть сброшен после отчетности хозяину.
Last_TX_ACK_Timestamp 4 октета TimeStamp of Last TX ACK. Он основан на часах Bluetooth Piconet Central (CLK).
Блок: n * 0,3125 мс (1 часы Bluetooth)
Flow_Off_Count 4 октета Количество раз контроллер получает проточный офф (остановка) с последнего события.
Этот счет должен быть сброшен после отчетности хозяину.
Last_Flow_On_Timestamp 4 октета Временная метка последнего потока (Go). Он основан на часах Bluetooth Piconet Central (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 Data PDU в последнем субцененте события CIS.
Этот счет сброшен после отчетности хозяину.
Значение равно нулю, если нет допустимого значения для ссылки.
CRC_Error_Packets 4 октета Количество полученных пакетов с ошибкой CRC с момента последнего события.
Этот счет сброшен после отчетности хозяину.
RX_Duplicate_Packets 4 октета Количество дубликатов (ретрансмиссия), полученных с момента последнего события.
Этот счет сброшен после отчетности хозяину.
Специфический параметр поставщика (Параметр Общая длина - TBD) * октеты Для поставщика контроллера, чтобы получить больше специфических параметров поставщика.

Sub-Event Code = 0x58 [Quality_report_id = 0x05, Событие воспаления корня]

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

Параметр error_code содержит код ошибки, сообщаемый от HAL/Controller, 0, если это конкретная ошибка поставщика Chipset. Vendor_specific_error_code содержит конкретный код ошибки поставщика чипсета от HAL/Controller. Он должен установить как 0, если параметр error_code не равен 0. Параметры error_code и vendor_specific_error_code не должны быть 0.

Параметр суб-события Размер Цель
Quality_Report_Id 1 октет 0x00 ~ 0x04: зарезервирован.
0x05: воспаление корня.
0x06 ~ 0xff: зарезервирован.
Error_Code 1 октет 0x00: включен конкретный код ошибки поставщика Chipset.
0x01 ~ 0xff: произошел сбой контроллера. См. Spec Bluetooth [Vol 2] Часть D, коды ошибок для списка кодов ошибок и описаний.
Vendor_Specific_Error_Code 1 октет 0x00: Код ошибки по поставщику чипсетов не включен.
0x01 ~ 0xff: конкретный код ошибки поставщика чипсетов.
Специфический параметр поставщика (Параметр Общая длина - 4) * Октеты Для поставщика контроллера, чтобы получить больше специфических параметров поставщика.
Параметр суб-события Размер Цель
Quality_Report_Id 1 октет 0x00 ~ 0x10: зарезервирован.
0x11: LMP/LL Trace Message Trace.
0x12: Bluetooth Multi-Link/Coex Prackuling Trace.
0x13: Информационный дамт данных контроллера.
0x14 ~ 0xff: зарезервирован.
Connection_Handle 2 октета Подключение.
Специфический параметр поставщика (Параметр Общая длина - 4) * Октеты Специфический формат поставщика трассировки сообщений LMP, Bluetooth Multi-Link/Coex Pragection Trace и Debug Debug Data Data Data.

Поддержка с мультизвертификацией

Цели поддержки с мультизвертаксией следующие:

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

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

Le_multi_advt_command

OCF: 0x154

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

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

Возвратный параметр Размер Цель
Status 1 октет Команда полного статуса
Multi_advt_opcode 1 октет 0x01 - Set_Advt_Param_Multi_Command
0x02 - Set_Advt_Data_Multi_Command
0x03 - Set_Scan_Resp_Data_Multi_Command
0x04 - Set_Random_Addr_Multi_Command
0x05 - Set_Advt_Enable_Multi_Command

Le_multi_advt_command: set_advt_param_multi_sub_cmd

Базовая ссылка: Bluetooth Core 4.1 Спецификация, стр. 964 (команда Set Set Advertising Parameter)

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 октет Мощность передачи
Блок - в DBM (подписано целое число)
Диапазон (от -70 до +20)

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

Для этой команды будет сгенерировано командование, как указано в спецификации Bluetooth Core 4.1, согласно вышеуказанной команде. Контроллер ответит кодом без SUCCESS (неверный параметр), если экземпляр рекламы или параметры 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 Спецификация, стр. 969 (LE SET SET Adverting Data Command)

Sub OCF: 0x02

Параметр подкоманда Размер Цель
Advertising_Data_Length В соответствии с спецификацией В соответствии с спецификацией
Advertising_Data В соответствии с спецификацией В соответствии с спецификацией
Advertising_Instance 1 октет Указывает применимость приведенных выше параметров к экземпляру

Для этой команды будет сгенерировано командование, как указано в спецификации 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 (команда данных на SET SET SCAN)

Sub OCF: 0x03

Параметр подкоманда Размер Цель
Scan_Response_Data_Length В соответствии с спецификацией В соответствии с спецификацией
Scan_Response_Data В соответствии с спецификацией В соответствии с спецификацией
Advertising_Instance 1 октет Указывает применимость приведенных выше параметров к экземпляру

Для этой команды будет сгенерировано командование, как указано в спецификации 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 MANDED ADDREAD CONDARD)

Sub OCF: 0x04

Параметр подкоманда Размер Цель
Случайный адрес В соответствии с спецификацией В соответствии с спецификацией
Advertising_Instance 1 октет Указывает применимость приведенных выше параметров к экземпляру

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

Возвратный параметр Размер Цель
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 ADMALISE Включить команду в этой спецификации CORE)

OCF: 0x05

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

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

Возвратный параметр Размер Цель
Status 1 октет Команда полного статуса
Multi_advt_opcode 1 октет 0x05 [ Set_Advt_Enable_Multi_Sub_Cmd]

Разгруженное разрешение частного адреса

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

  • Задержка, связанная с хостом в разрешении частного адреса
  • Сохранение мощности, воздерживаясь от пробуждения хоста

LE_SET_RPA_TIMEOUT

OCF: 0x15c

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

Предлагаемые значения статуса HCI:
0x00 успех
0x01 Неизвестная команда (если не поддерживается)
0x12 Неверные параметры команды (если какие -либо параметры находятся за пределами данного диапазона)

LE_RPA_OFFLOAD_COMMAND

OCF: 0x155

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

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

Возвратный параметр Размер Цель
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 в прошивке.

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

Возвратный параметр Размер Цель
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 (1 -й байт LSB)
Address_Type 1 октет 0: публичный адрес
1: случайный адрес
LE_Device_Address 6 октетов Публичный или случайный адрес, связанный с IRK (1 -й байт LSB)

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

Возвратный параметр Размер Цель
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

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

Возвратный параметр Размер Цель
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

Параметр подкоманда Размер Цель
Никто

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

Возвратный параметр Размер Цель
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]

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

Возвратный параметр Размер Цель
Status 1 октет Команда полного статуса
Event_cust_specific_feature_opcode 1 октет 0x05 [Читать запись в списке IRK]
LE_Read_IRK_List_entry 1 октет Индекс IRK, который хост хочет прочитать обратно (максимальный размер списка IRK - 32)
LE_IRK 16 октетов IRK Value
Address_Type 1 октет 0: публичный адрес
1: случайный адрес
LE_Device_Address 6 октетов Публичный или случайный адрес, связанный с IRK
LE_Resolved_Private_Address 6 октетов Текущий разрешенный разрешенный частный адрес этого IRK