Интерфейс хост-контроллера (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 | Пустой список параметров команды |
Для этой команды будет сгенерировано событие «Команда завершена».
Возврат параметра | Размер | Цель |
---|---|---|
Status | 1 октет | Статус «Команда завершена» |
max_advt_instances (Устаревшее) | 1 октет | Количество поддерживаемых экземпляров рекламы. Зарезервировано после v0.98. Этот параметр устарел в спецификации функций Google v0.98 и выше в пользу расширенной рекламы LE, доступной в спецификации BT версии 5.0 и выше. |
offloaded_resolution_of_private-address (Устаревшее) | 1 октет | Возможности чипа BT в RPA. Если чип поддерживает эту функцию, ее необходимо включить на хосте. 0 = Невозможно 1 = Способен Зарезервировано после v0.98. Этот параметр устарел в спецификации функций Google v0.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] = Младшее число версия 1.05 байт[0] = 0x01 байт[1] = 0x05 |
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 v0.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 offload , Остановка A2DP offload ) 0 = Не поддерживается 1 = Поддерживается |
iso_link_feedback_support | 1 октет | Поддерживает событие ISO Link Feedback 0 = Не поддерживается 1 = Поддерживается |
Результаты пакетного сканирования
Целью разработки является улучшение способа доставки уведомлений о событиях Bluetooth LE Scan Response на хост с целью экономии энергии хоста.
Уменьшая частоту уведомлений контроллера процессора хост-приложения о необходимости сканирования результатов, процессор хост-приложения может дольше оставаться в состоянии простоя/сна. Это снижает энергопотребление хоста. Возвращаемый параметр total_scan_results_storage
LE_Get_Vendor_Capabilities_Command
указывает на возможности чипа по хранению результатов сканирования.
Эта функция фокусируется на управлении и настройке хранилища результатов сканирования LE в контроллере Bluetooth. Хранилище используется для временного пакетирования рекламных данных, а также данных сканирования и метаданных, которые контроллер получает для последующей доставки на хост.
Прошивка должна поддерживать два типа пакетирования, которые могут быть задействованы одновременно:
- Усеченный. Содержит следующие элементы информации: {MAC, TX Power, RSSI, Timestamp}
- Полный. Содержит следующие элементы информации: {MAC, TX Power, RSSI, Timestamp, Adv Data, Scan Response}
LE_Batch_Scan_Command
ОФФ: 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 — Отключить функцию пакетного сканирования |
Для этой команды будет сгенерировано событие «Команда завершена».
Возврат параметра | Размер | Цель |
---|---|---|
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, специфичное для поставщика (подсобытие нарушения порога хранения) |
Для этой команды будет сгенерировано событие «Команда завершена».
Возврат параметра | Размер | Цель |
---|---|---|
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 packet}, независимо от интервала сканирования. Запись для сохранения для полного режима: { BD_ADDR
, Tx Power, RSSI, Timestamp, Ad packet, Scan Response}. В полном стиле один и тот же пакет AD, если он отображается несколько раз в разных интервалах сканирования, записывается только один раз. Однако в усеченном режиме интерес представляет видимость BA_ADDR
в разных интервалах сканирования (один раз за интервал сканирования). RSSI — это усредненное значение всех дубликатов уникальной рекламы в интервале сканирования.
Для этой команды будет сгенерировано событие «Команда завершена».
Возврат параметра | Размер | Цель |
---|---|---|
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 может содержать несколько записей только одного типа данных (полные или усеченные).
Ссылки на время контроллера и хоста не синхронизированы. Единица измерения временной метки — 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 packet_len[0]: 1 октет Adv_packet[0]: Adv_packet_len октетов Scan_data_resp_len[0]: 1 октет Scan_data_resp[0]: октеты Scan_data_resp [несколько записей в указанном выше формате ( num_of_records )] |
Фильтр содержимого рекламного пакета
Используйте это для включения/отключения/настройки фильтра содержимого рекламных пакетов (APCF) в контроллере. APCF фильтрует рекламные отчеты в контроллере, но не фильтрует периодическую рекламу.
LE_APCF_Команда
ОФФ: 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 - Фильтр типа APCF AD 0x10 ~ 0xAF — зарезервировано для будущего использования 0xB0 ~ 0xDF — Зарезервировано для поставщика 0xE0 ~ 0xFE — зарезервировано для будущего использования 0xFF - APCF Чтение расширенных функций |
Для этой команды будет сгенерировано событие «Команда завершена».
Возврат параметра | Размер | Цель |
---|---|---|
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 - Фильтр типа APCF AD 0x10 ~ 0xAF — зарезервировано для будущего использования 0xB0 ~ 0xDF — Зарезервировано для поставщика 0xE0 ~ 0xFE — зарезервировано для будущего использования 0xFF - APCF Чтение расширенных функций |
LE_APCF_Command: Включить_sub_cmd
Под OCF: 0x00
Параметр подкоманды | Размер | Цель |
---|---|---|
APCF_enable | 1 октет | 0x01 — Включить функцию APCF 0x00 - Отключить функцию APCF |
Для этой команды будет сгенерировано событие «Команда завершена».
Возврат параметра | Размер | Цель |
---|---|---|
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 , что всегда является логикой "И". Они применимы только для четырех полей APCF_Feature_Selection (бит 3 - бит 6). |
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 необходимо использовать двоичное дополнение.
Хост должен иметь возможность настраивать несколько фильтров с 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
для фильтра (если включен) будет выглядеть следующим образом:

Для этой команды будет сгенерировано событие «Команда завершена».
Возврат параметра | Размер | Цель |
---|---|---|
Status | 1 октет | Статус «Команда завершена» |
APCF_opcode | 1 октет | 0x01 - APCF устанавливает параметры фильтрации |
APCF_Action | 1 октет | Повторить команду APCF_Action |
APCF_AvailableSpaces | 1 октет | Количество доступных записей в таблице фильтров |
LE_APCF_Command: широковещательный_адрес_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 (игнорировать тип адреса) Для фильтрации рекламных отчетов с типами адресов идентификации (0x02, 0x03). Для получения рекламных отчетов с типами адресов 0x02 и 0x03 установите это поле на 0x02: NA (игнорировать тип адреса). |
Для этой команды будет сгенерировано событие «Команда завершена».
Возврат параметра | Размер | Цель |
---|---|---|
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 службы в указанном фильтре. Очистить очистит все 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. |
Для этой команды будет сгенерировано событие «Команда завершена».
Возврат параметра | Размер | Цель |
---|---|---|
Status | 1 октет | Статус «Команда завершена» |
APCF_opcode | 1 октет | 0x03 - UUID службы APCF |
APCF_Action | 1 октет | Повторить команду APCF_Action |
APCF_AvailableSpaces | 1 октет | Количество свободных записей, которые еще доступны в таблице UUID услуг |
LE_APCF_Command: solicitation_uuid_sub_cmd
Эта подкоманда используется для добавления или удаления UUID запроса или для очистки списка UUID запроса для фильтрации на чипе.
Под 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 . |
Для этой команды будет сгенерировано событие «Команда завершена».
Возврат параметра | Размер | Цель |
---|---|---|
Status | 1 октет | Статус «Команда завершена» |
APCF_opcode | 1 октет | 0x04 - UUID запроса APCF |
APCF_Action | 1 октет | Повторить команду APCF_Action |
APCF_AvailableSpaces | 1 октет | Количество свободных записей, которые еще доступны в таблице UUID заявок |
LE_APCF_Command: локальное_имя_sub_cmd
Эта подкоманда используется для добавления или удаления строки локального имени или для очистки списка строк локального имени для фильтрации на кристалле.
Под OCF: 0x05
Параметр подкоманды | Размер | Цель |
---|---|---|
APCF_Action | 1 октет | 0x00 - Добавить 0x01 - Удалить 0x02 - Очистить Delete удалит указанную строку локального имени в указанном фильтре. Очистить очистит все строки локальных имен в указанном фильтре. |
APCF_Filter_Index | 1 октет | Индекс фильтра (0, max_filter -1) |
APCF_LocName_Mandata_or_SerData | Переменный размер | Строка символов для локального имени. Примечания:
|
Для этой команды будет сгенерировано событие «Команда завершена».
Возврат параметра | Размер | Цель |
---|---|---|
Status | 1 октет | Статус «Команда завершена» |
APCF_opcode | 1 октет | 0x05 — Локальное имя APCF |
APCF_Action | 1 октет | Повторить команду APCF_Action |
APCF_AvailableSpaces | 1 октет | Количество свободных записей, которые еще доступны в таблице локальных имен |
LE_APCF_Команда: 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 . |
Для этой команды будет сгенерировано событие «Команда завершена».
Возврат параметра | Размер | Цель |
---|---|---|
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. |
Для этой команды будет сгенерировано событие «Команда завершена».
Возврат параметра | Размер | Цель |
---|---|---|
Status | 1 октет | Статус «Команда завершена» |
APCF_opcode | 1 октет | 0x07 - Данные службы APCF |
APCF_Action | 1 октет | Повторить команду APCF_Action |
APCF_AvailableSpaces | 1 октет | Количество свободных записей, доступных для таблицы служебных данных |
LE_APCF_Command: ad_type_sub_cmd
Эта подкоманда используется для добавления или удаления типа AD или для очистки списка типов AD для фильтрации на чипе. Используйте read_extended_features_sub_cmd
, чтобы проверить, поддерживается ли эта команда или нет.
Если APCF_AD_DATA_Length
равен 0, фильтровать APCF_AD_TYPE
без сравнения AD Data и AD Data Mask. Если длина данных полученного пакета ADV превышает AD_DATA_LENGTH
, сравнивать только первые байты AD_DATA_LENGTH
данных AD и игнорировать остальные данные.
Под 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 | 1 октет | 0x00 - означает не фильтровать содержимое данных Игнорировать, если APCF_Action равен 0x02 (Очистить) |
APCF_AD_DATA | Переменный размер | Переменного размера, на основе APCF_AD_DATA_Length Игнорировать, если APCF_Action равен 0x02 (Очистить) |
APCF_AD_DATA_MASK | Переменный размер | Переменного размера, на основе APCF_AD_DATA_Length Игнорировать, если APCF_Action равен 0x02 (Очистить)Он должен иметь ту же длину, что и APCF_AD_DATA . |
Для этой команды будет сгенерировано событие «Команда завершена».
Возврат параметра | Размер | Цель |
---|---|---|
Status | 1 октет | Статус «Команда завершена» |
APCF_opcode | 1 октет | 0x09 - Тип AD APCF |
APCF_Action | 1 октет | Повторить команду APCF_Action |
APCF_AvailableSpaces | 1 октет | Количество свободных записей, которые еще доступны в таблице типов AD |
LE_APCF_Command: read_extended_features_sub_cmd
Эта подкоманда используется для чтения расширенных функций APCF.
Под OCF: 0xFF
Параметр подкоманды | Размер | Цель |
---|---|---|
Непригодный | Пустой параметр команды. |
Для этой команды будет сгенерировано событие «Команда завершена».
Возврат параметра | Размер | Цель |
---|---|---|
Status | 1 октет | Статус «Команда завершена» |
APCF_opcode | 1 октет | 0xFF - APCF_Read_Extended_Features |
APCF_extended_features | 2 октета | Поддерживаются битовые маски для расширенных функций:
Значение бита
|
Команда активности контроллера и информации об энергии
Цель этой информации заключается в том, чтобы более высокие функции хост-системы анализировали общую активность всех компонентов, включая контроллер BT и его макросостояние, в сочетании с тем, что происходит в приложениях и фреймворке. Для этого требуется следующая информация из стека BT и контроллера:
- Стек BT: Отчет о текущем макрооперационном состоянии контроллера
- Прошивка: Отчетность по совокупной активности и информации об энергии
Состояния макросов стека хоста BT, определяемые на уровне пользователя:
- В режиме ожидания: [сканирование страницы, LE advt, сканирование запроса, LE scan]
- Сканирование: [пейджинг/запрос/попытка подключения]
- Активно: [ссылка ACL включена, ссылка SCO активна, режим прослушивания]
Действия, которые контроллер отслеживает в течение своей жизни, это время Tx, время Rx, время простоя и общее потребление энергии. Они очищаются при считывании с хоста.
LE_Get_Controller_Activity_Energy_Info
Это команда, специфичная для поставщика.
ОФФ: 0x159
Параметр подкоманды | Размер | Цель |
---|---|---|
NA | Пустые параметры команды |
Для этой команды будет сгенерировано событие «Команда завершена».
Возврат параметра | Размер | Цель |
---|---|---|
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)
ОФФ: 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 - Игнорировать рекламные пакеты от устройств, не входящих в список White List Only. Направленные рекламные пакеты, не адресованные данному устройству, будут игнорироваться. |
Для этой команды будет сгенерировано событие «Команда завершена».
Возврат параметра | Размер | Цель |
---|---|---|
Status | 1 октет | Статус «Команда завершена» |
Команда получения отладочной информации контроллера
Цель этого информационного элемента — получение хостом отладочной информации контроллера в двоичной форме для последующей обработки и анализа. Это помогает отлаживать проблемы на месте и предоставляет инженерам набор инструментов для регистрации информации для анализа. Контроллер может предоставлять информацию по запросу хоста через событие (подсобытие Controller Debug Info) или автономно по желанию контроллера. Примерами использования могут быть отчет о состоянии прошивки, информация о аварийном дампе, информация о регистрации и т. д.
ОФФ: 0x15B
Параметр команды | Размер | Цель |
---|---|---|
Н/Д | Пустой список параметров команды |
Для этой команды будет сгенерировано событие «Команда завершена».
Возврат параметра | Размер | Цель |
---|---|---|
Status | 1 октет | Статус «Команда завершена» |
Поддержка аппаратной разгрузки A2DP
Функция разгрузки A2DP поддерживает разгрузку процесса кодирования звука A2DP на аудиопроцессор, подключенный к контроллеру BT. Закодированный поток аудиоданных напрямую передается от аудиопроцессора к контроллеру BT без участия хоста BT. Хост BT по-прежнему отвечает за настройку и управление сеансом A2DP. Доступны две версии команд. Устаревшие команды с Sub OCF 0x01-0x02 поддерживают только кодеки с открытым исходным кодом. Версии с Sub-OCF 0x03-0x04 не зависят от настроенного кодека.
ОФФ: 0x15D
Запустить разгрузку A2DP (устаревшая версия)
Под OCF: 0x01
Используйте эту команду как для настройки процесса разгрузки A2DP, так и для запуска потока A2DP.
Параметр команды | Размер | Цель |
---|---|---|
Codec | 4 октета | Указывает тип кодека 0x01 - СБК 0x02 - ААС 0x04 - APTX 0x08 - APTX HD 0x10 - LDAC |
Max_Latency | 2 октета | Максимальная допустимая задержка (в мс). Значение ноль отключает очистку. |
SCMS-T_Enable | 2 октета | Октет 0: Флаг, разрешающий добавление заголовка 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. Кодек AAC: См. элементы информации, специфичные для кодека AAC, в A2DP v1.3. Кодек LDAC: Октет 0-3: Идентификатор поставщика Октет 4-5: идентификатор кодека Октет 6: Индекс битрейта: Октет 7: Режим канала LDAC Октет 8-31: зарезервирован Все остальные кодеки: Октет 0-31: зарезервирован |
Для этой команды будет сгенерировано событие «Команда завершена».
Возврат параметра | Размер | Цель |
---|---|---|
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 Sink/Split) |
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 Assigned Numbers, раздел 6.3.2.Игнорируется, если защита содержимого SCMS-T не включена. |
Vendor_Specific_Parameters_Length | 1 октет | Длина параметров, специфичных для поставщика, в диапазоне от 0 до 128. Значение 0 используется, если дополнительные параметры не указаны. |
Vendor_Specific_Parameters | 0-128 октетов | Специфические параметры поставщика, предоставляемые Bluetooth Audio HAL, CodecParameters.vendorSpecificParameters[] . |
Для этой команды будет сгенерировано событие «Команда завершена».
Возврат параметра | Размер | Цель |
---|---|---|
Status | 1 октет | Статус «Команда завершена» |
Sub_Opcode | 1 октет | 0x03 - Начать разгрузку A2DP |
Остановить разгрузку A2DP (устаревшая версия)
Под OCF: 0x02
Эта команда используется для остановки потока разгрузки A2DP.
Параметр команды | Размер | Цель |
---|---|---|
Н/Д | Пустой список параметров команды. |
Для этой команды не определены параметры.
Для этой команды будет создано полное событие команды.
Возвратный параметр | Размер | Цель |
---|---|---|
Status | 1 октет | Команда полного статуса |
Sub_Opcode | 1 октет | 0x02 - остановить разгрузку A2DP |
Остановите разгрузку A2DP
Sub OCF: 0x04
Эта команда используется для остановки потока разгрузки A2DP.
Параметр команды | Размер | Цель |
---|---|---|
Connection Handle | 2 октета | Ручка активного соединения HCI |
L2CAP_Channel_ID | 2 октета | Идентификатор канала L2CAP открылся для потоковой передачи A2DP |
Data_Path_Direction | 1 октет | 0x00 - выход (AVDTP Source/Merge) 0x01 - Вход (AVDTP -раковина/сплит) |
Для этой команды будет создано полное событие команды.
Возвратный параметр | Размер | Цель |
---|---|---|
Status | 1 октет | Команда полного статуса |
Sub_Opcode | 1 октет | 0x04 - остановить разгрузку A2DP |
Команда отчета о качеством Bluetooth
Функция команды отчета BT качества запускает механизм в контроллере Bluetooth, чтобы сообщить о событиях качества Bluetooth для хоста. Вы можете включить четыре варианта:
- Режим мониторинга качества: Контроллер периодически отправляет на хост связь, связанный с качеством, связанный с качеством.
- Приближаясь к 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 ГГц на хост.
- Информационный механизм отладки контроллера: при включении контроллер может автономно сообщать о ведении журнала отладки через информацию о отладке контроллера.
- LE Audio Choppy: Когда контроллер обнаруживает факторы, которые вызывают изменчивую аудио, контроллер сообщает о том, что LE Audio Crappy Event для хоста.
- Предварительный режим RF статистики: Контроллер сообщает о своей информации о статистике радиочастотной статистики на хосте, поддерживая два варианта использования отчетов:
- Периодические отчеты
- Триггеры события (Tream Start/STOP и STUCK CAVICE TRIGGER).
- BQR_REPORT_ACTION Команда отчета о качестве Bluetooth: хост может использовать эту команду HCI, чтобы получить единовременный запрос для режима мониторинга качества, режима мониторинга энергии или режима предварительной статистики RF.
OCF: 0x15e
Параметр команды | Размер | Цель |
---|---|---|
BQR_Report_Action | 1 октет | Действие по добавлению / удалению отчетности о качественных событиях, установленных в параметре bqr_quality_event_mask, или очистить все. 0x00 - добавить DELETE очистит конкретные отчеты о качествах. |
BQR_Quality_Event_Mask | 4 октета | Бит маски для выбранной качественной отчетности о событиях. Бит 0: Установите, чтобы включить режим мониторинга качества. |
BQR_Minimum_Report_Interval | 2 октета | Определите минимальный интервал времени качественной отчетности о событиях для выбранного события качества. Прошивка контроллера не должна сообщать о следующем событии в течение определенного интервала времени. Установка интервала должна быть соответствующей и выделенной для добавляемого качества событий. Блок: MS |
BQR_Vendor_Specific_Quality_Event_Mask | 4 октета | Бит маски для выбранной отчетности по качеству, специфичным для конкретного поставщика. Этот параметр действителен только тогда, когда установлен бит 15 из BQR_Quality_Event_Mask .Бит 0 ~ 31: зарезервирован. |
BQR_Vendor_Specific_Trace_Mask | 4 октета | Бит-маски для выбранной отчетности по следом поставщика. Этот параметр действителен только тогда, когда установлен бит 31 из BQR_Quality_Event_Mask .Бит 0 ~ 31: зарезервирован. |
Report_interval_multiple | 4 октета | Множитель для BQR_Minimum_Report_Interval . Когда это значение> = 1, интервал отчета BQR следует за форматомИнтервал отчета BQR = BQR_MINIMUM_REPORT_INTERVAL X Report_Interval_Multiple. Прошивка контроллера не должна сообщать о следующем событии в течение определенного интервала времени. Настройка интервала специально выделена для дополнительного качества событий. Блок: MS BQR_Report_Interval больше, чем способность контроллера, контроллер должен вернуть максимальное время BQR_Report_Interval по завершению команды. |
Для этой команды будет создано полное событие команды.
Возвратный параметр | Размер | Цель |
---|---|---|
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: Установите, чтобы включить запуск события Mode Advance Stats. Бит 9: Установка для периодического отчета о предоставлении Advance RF статистики. Бит 10 ~ 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 октета | Указывает текущую настройку битовой маски. |
BQR_Report_interval | 4 октета | Указывает текущую настройку битовой маски. |
Current_Vendor_Specific_Trace_Mask | 4 октета | Настройка BQR_Report_interval . Это должно быть минимальное значение между bqr_minimum_report_interval * report_interval_multiple или максимальным интервалом поддержки контроллера. |
Динамическая команда аудио буфера
Динамический звуковой буфер уменьшает звуковой сбой, изменяя размер звукового буфера в контроллере Bluetooth на основе различных сценариев.
OCF: 0x15f
Получите возможность времени буфера аудио
Sub OCF: 0x01
Используйте эту команду, чтобы получить возможность времени буфера аудио от контроллера Bluetooth.
Параметр команды | Размер | Цель |
---|---|---|
Н/Д | Список параметров пустых команд |
Для этой команды будет создано полное событие команды.
Возвратный параметр | Размер | Цель |
---|---|---|
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. |
Порог хранения.
Это событие указывает на то, что порог хранения был нарушен.
Subevent Code = 0x54
Параметр подв | Размер | Цель |
---|---|---|
Никто |
LE Multa-Adveding State Change Subsevent
Это событие указывает на то, что рекламный экземпляр изменил свое состояние. В настоящее время это событие используется только для того, чтобы указать, какой рекламный экземпляр был остановлен в результате соединения.
Subevent Code = 0x55
Параметр подв | Размер | Цель |
---|---|---|
Advertising_instance | 1 октет | Определяет конкретный рекламный экземпляр Допустимые значения: от 0 до max_advt_instances -1 |
State_Change_Reason | 1 октет | 0x00: Полученное соединение |
Connection_handle | 2 октета | Определяет соединение, которое вызвало отключение экземпляра advt (0xffff, если недействителен) |
LE Advertision отслеживание Subevent
Это событие указывает, когда рекламодатель найден или потерян.
Код субъекта = 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 octetsScan_data_resp_len[0] : 1 октетScan_data_resp[0] : Scan_data_resp octets |
Информация о отладке контроллера Subevent
Это событие используется контроллером для предоставления информации о бинарной отладке хозяину.
Subevent Code = 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 Subevent
Это событие указывает на одно из следующих действий: произошло событие качества Bluetooth, контроллер загрузил трассировку сообщений LMP/LL и трассировку по планированию мультисвязанного/компонента Bluetooth или данные о сброшенной информационной отладке контроллера.
Subevent Code = 0x58 [Quality_report_id = 0x01 ~ 0x04, Событие, связанное с качеством ссылки]
Параметр подв | Размер | Цель |
---|---|---|
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. |
SNR | 1 октет | [в дм] Значение отношения сигнал / шум (SNR) для указанного Connection_Handle. |
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 октета | Количество дубликатов (ретрансмиссия), полученных с момента последнего события. Этот счет сброшен после отчетности хозяину. |
RX_Unreceived_Packets | 4 октета | Количество незавершенных пакетов совпадает с параметром команды качества ссылки LE Read ISO (см. Спецификацию ядра Bluetooth версии 5.4). Соответствующие потоки являются цис и бис. Когда это значение увеличивается, слой ссылки не получает определенную полезную нагрузку по точке промывки (на цис) или в конце события он связан с (на BIS; см. Спецификацию сердечника Bluetooth версии 5.4 Объем 6 Часть B, раздел 4.4.6.6). |
Coex_Info_Mask | 2 октета | Бит 0 - Coexinvomement: установлено, чтобы указать, что Coex Actions предположительно участвует, когда этот отчет генерируется (например, A2DP -отбивные и приближающиеся к LSTO). Бит 1 - WL 2G Radio Active: установлено, чтобы указать, что WLAN 2G -радио активно. Бит 2 - WL 2G подключено: установлено, чтобы указать радио WLAN 2G активно и подключено. Бит 3 - WL 5G/6G Радио Active: Установлено, чтобы указать, что WLAN 5G/6G Радио активен. Бит 4-15 - зарезервированный |
Специфический параметр поставщика | (Параметр Общая длина - TBD) * октеты | Для поставщика контроллера, чтобы получить больше специфических параметров поставщика. |
Subevent 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) * Октеты | Для поставщика контроллера, чтобы получить больше специфических параметров поставщика. |
Код подсобытия = 0x58 [Quality_Report_Id = 0x11 ~ 0x13, Событие, связанное с дампом журнала]
Параметр подв | Размер | Цель |
---|---|---|
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. |
Обратная связь ISO Ссылка
Sub Event Code = 0x5c
При активации это событие должно генерироваться во время каждого интервала ISO.
Активация
Активация выполняется путем выбора кода поставщикаData_Path_ID
0x19
в стандартной команде HCI_LE_Setup_ISO_Data_Path
. Команда HCI_Configure_Data_Path
с установленной 0x19
Data_Path_ID
Vendor_Specific_Config_Length
должна быть 0
, даже если от контроллера не ожидается никаких действий после приема этой команды.Последовательный момент времени
Событие испускается с самого начала интервала ISO (CIG или Big Anchor Point), до следующего интервала ISO. Контроллер указывает задержку с эффективным началом интервала ISO с использованиемAnchor_Point_Delay
.Синхронизация контроллера
В начале интервала ISO контроллер вычисляет потоку SN , увеличивая текущее значение с помощью настроенногоISO_Interval ÷ SDU_Interval
; В первом интервале он инициализируется до 0.Затем для каждого пакета в ISO FIFO применяется следующее:
- Контроллер вычисляет разницу в разнице в обертке между двумя номерами последовательностей:
SN diff = (SDU SN - Stream SN + 0x10000) mod 0x10000
- Когда
(SN diff + (FT-1) × ISO_Interval ÷ SDU_Interval) mod 0x10000 <= (FT-1) × ISO_Interval ÷ SDU_Interval
:
Пакет находится в окне перевода. Это должно было быть назначено для передачи через предыдущие промежутки времени и теперь доступен для повторной передачи. Если это не так (это не было запланировано для передачи), она была поздно получена . Это должно быть сигнализировано хосту, используяIn_Status
. Такие пакеты могут быть отброшены или запланированы для передачи; Выбор определяется реализацией. - Или когда
SN diff < ISO_Interval ÷ SDU_Interval
:
Пакет запланирован для передачи с этого события до тех пор, пока не произойдет время -аут. - Или когда
SN diff >= ISO_Interval ÷ SDU_Interval
иSN diff <= Max_Forward_Buffers
:
Пакет в будущем; Он будет передаваться с последующим событием. Поскольку пакеты отправляются в порядке, это условие заканчивает поиск пакетов для этого интервала.
Буферы, используемые хостом, не передаются контроллеру, но ограниченыMax_Forward_Buffers = 16
. - Или когда ни одно из вышеперечисленных условий не выполнено:
Пакет отбрасывается, достигнут лимит тайм -аута промывки, или был получен узоловый пакет.
Параметр подв | Размер | Цель |
---|---|---|
Connection_Handle | 2 октета | Ручка соединения CIS или BIS Диапазон: от 0x0000 до 0x0EFF |
Sequence_Number | 2 октета | Номер последовательности потока, управляемый контроллером. Инициализируется до 0, когда создается цис или BIS и увеличивается по количеству SDU с помощью изохронного интервала ISO, определяемого как ISO_interval ÷ SDU_Interval , в каждом интервале ISO. |
Anchor_Point_Delay | 2 октета | Задержка в микросекундах между генерацией события и эффективной точкой с большим или сигартом или началом интервала ISO. Эффективная временная метка точки якоря определяется:Event generation time - Anchor_Point_Delay Диапазон: от 0 до ISO интервал в микросекундах |
In_Status | 2 октета | Контроллер ISO буферный статус В начале интервала ISO каждый бит B I устанавливается, когда доступен SDU (Sequence_Number + i) mod 0x10000 . Когда не доступен, SDU идентифицируется как Not received from the host .Значение I колеблется от 0 до ISO_Interval ÷ SDU_Interval - 1 Для других значений i биты установлены на 0. | Tx_Status | 2 октета | Состояние передачи относительно SDU с номерами последовательностей:(Sequence_Number - Flush_Timeout × ISO_Interval ÷ SDU_Interval + i + 0x10000) mod 0x10000 Каждый бит B I устанавливается, когда все PDU идентифицированного SDU, по номеру последовательности, были успешно переданы и признаны. Значение I колеблется от 0 до ISO_Interval ÷ SDU_Interval - 1 Для других значений i биты установлены на 0.В группе трансмиссии всегда должна быть признана передача. |
Поддержка с мультизвертификацией
Цели поддержки с мультизвертаксией следующие:
- Возможность поддерживать несколько рекламных объявлений (
max_advt_instances
) - Различные мощности передачи, чтобы обеспечить различный диапазон
- Различный рекламный контент
- Индивидуальный ответ для каждого рекламодателя
- Конфиденциальность (не отслеживаемой) для каждого рекламодателя
- Подключаемый
Чтобы сохранить эту спецификацию вблизи существующих стандартов, предоставляются следующие команды, специфичные для поставщика. Они получены из спецификации Bluetooth Core 4.1.
Le_multi_advt_command
OCF: 0x154
Параметр команды | Размер | Цель |
---|---|---|
Multi_advt_opcode | 1 октет | 0x01 - Set_Advt_Param_Multi_Sub_Cmd 0x02 - Set_Advt_Data_Multi_Sub_Cmd 0x03 - Set_Scan_Resp_Data_Multi_Sub_Cmd 0x04 - Set_Random_Addr_Multi_Sub_Cmd 0x05 - Set_Advt_Enable_Multi_Sub_Cmd |
Для этой команды будет создано полное событие команды.
Возвратный параметр | Размер | Цель |
---|---|---|
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 |