Требования 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 Пустой список параметров команды

Для этой команды будет сгенерировано событие «Команда завершена».

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

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

Для этой команды будет сгенерировано событие «Команда завершена».

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

Примечания:
  • В настоящее время максимальное количество символов в строке локального имени составляет 29.
  • Неприменимо, если действие «Очистить» (0x2)
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 Переменный размер Строка символов для служебных данных.

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

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

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

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

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

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

Цель этой информации заключается в том, чтобы более высокие функции хост-системы анализировали общую активность всех компонентов, включая контроллер 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.
  • 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: Минимальное значение Bitpool
Октет 2: Максимальное значение Bitpool
Октет 3: Частота дискретизации | Режим канала
Октет 4-31: зарезервирован

Кодек AAC:

См. элементы информации, специфичные для кодека AAC, в A2DP v1.3.
Октет 0: Тип объекта
Октет 1; b7: VBR
Октет 2-31: зарезервирован

Кодек LDAC:

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

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

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

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

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

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

Октет 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 - добавить
0x01 - Удалить
0x02 - ясно
0x03 - один раз запрос

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: Установите, чтобы включить запуск события Mode Advance Stats.
Бит 9: Установка для обеспечения периодического отчета о предварительной статистике RF.
Бит 10 ~ 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: зарезервирован.

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

Блок: MS
По умолчанию: 1
Диапазон: 0 ~ 4294967295 (0: равен равна 1)

Примечание. Если настройка 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 octets
Scan_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 или данные о сброшенной информационной отладке контроллера.

Параметр подв Размер Цель
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 октета Количество дубликатов (ретрансмиссия), полученных с момента последнего события.
Этот счет сброшен после отчетности хозяину.
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) * Октеты Для поставщика контроллера, чтобы получить больше специфических параметров поставщика.
Параметр подв Размер Цель
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.

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