Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Интерфейс Bluetooth Host-Controller (HCI) указывает все взаимодействия между хостом и радиоконтроллером Bluetooth. Спецификации Bluetooth позволяют определяемым поставщиком командам и событиям HCI обеспечить нестандартное взаимодействие между узлами и контроллерами. Корпорация Майкрософт определяет команды и события HCI для конкретного поставщика, используемые Windows. Средства реализации контроллера Bluetooth могут использовать эти расширения для реализации специальных функций.
Требования
Команды Bluetooth HCI определяются 16-разрядным кодом команды. Организация Bluetooth определяет значения в диапазоне 0x0000 через 0xFBFF. Поставщики определяют значения в диапазоне 0xFC00 через 0xFFFF, что позволяет использовать 1024 различные коды команд, назначенных поставщиком.
Поставщик должен выбрать значение определяемого корпорацией Майкрософт кода команды. Корпорация Майкрософт не может выбрать код команды и предположить, что ни один другой поставщик не использует код для конфликтующей цели. Небезопасно использовать команду для конкретного поставщика и полагаться на то, что контроллер отклонит её, если команда непонятна. Контроллер может интерпретировать команду как деструктивную операцию, например обновление встроенного ПО контроллера.
Поставщик должен сообщить выбранное значение с помощью метода, отличного от контроллера. Корпорация Майкрософт не указывает, как получить выбранный код.
Уведомление стеках Windows Bluetooth о специфическом коде команды поставщика
Стек Bluetooth Windows считывает код команды производителя из раздела реестра VsMsftOpCode
.
Раздел реестра VsMsftOpCode
имеет тип REG_DWORD, а данные ключа — это конкретный код поставщика.
Чтобы указать конкретный код поставщика, используйте директиву AddReg
в разделе DDInstall.HW в INF драйвера. Раздел "Добавить реестр" должен содержать следующее:
HKR,,"VsMsftOpCode",0x00010001,<Vendor Specific Opcode>
Пример:
[radio.NTamd64.HW]
AddReg=radio.NTamd64.HW.AddReg
[radio.NTamd64.HW.AddReg]
HKR,,"VsMsftOpCode",0x00010001,<Vendor Specific Opcode>
команды HCI, определяемые корпорацией Майкрософт
Команды HCI | Описание |
---|---|
HCI_VS_MSFT_Read_Supported_Features | Предоставляет растровое изображение, описывающее, какие функции, определенные корпорацией Майкрософт, поддерживает контроллер, и задает префикс для определенных корпорацией Майкрософт событий, возвращаемых контроллером. |
HCI_VS_MSFT_Monitor_Rssi | Запрашивается, чтобы контроллер начал мониторинг измеренного RSSI канала для указанного соединения и генерировал событие, когда измеренный RSSI соединения выходит за пределы указанных границ. |
HCI_VS_MSFT_Cancel_Monitor_Rssi | Отменяет ранее выпущенную команду HCI_VS_MSFT_Monitor_Rssi. |
HCI_VS_MSFT_LE_Monitor_Advertisement | Запрашивает, что контроллер запускает мониторинг рекламных объявлений, которые входят в указанный диапазон RSSI, а также удовлетворяют другим требованиям. |
HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement | Отменяет ранее выданную команду HCI_VS_MSFT_LE_Monitor_Advertisement. |
HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable | Задает состояние фильтров рекламы. |
HCI_VS_MSFT_Read_Absolute_RSSI | Считывает абсолютное значение параметра "Уровень сигнала" (RSSI) для соединения BR/EDR от контроллера. |
Команды и подкоманды HCI, определённые компанией Microsoft
Контроллер считает, что существует только одна HCI-команда, специфичная для Microsoft. Набор команд, определенный корпорацией Майкрософт, расширяется с помощью кода opcode. Первый параметр команды, определенной корпорацией Майкрософт, — это опкод, который указывает подкоманду.
Контроллеры должны поддерживать HCI_VS_MSFT_Read_Supported_Features, чтобы поддерживать любые другие подкоманды Microsoft HCI. Поддержка других команд является необязательной и зависит от значений, возвращаемых HCI_VS_MSFT_Read_Supported_Features. Windows не отправляет подкоманды, определенные корпорацией Майкрософт, если контроллер не указывает на поддержку подкоманд через ответ на HCI_VS_MSFT_Read_Supported_Features.
HCI_VS_MSFT_Read_Supported_Features
HCI_VS_MSFT_Read_Supported_Features предоставляет растровое изображение, описывающее, какие функции, определенные корпорацией Майкрософт, поддерживает контроллер, и задает префикс для определенных корпорацией Майкрософт событий, возвращаемых контроллером.
Контроллер всегда должен быстро выполнить эту команду с событием "Завершено командой".
Приказ | Код | Параметры команды | Возвращаемые параметры |
---|---|---|---|
HCI_VS_MSFT_Read_Supported_Features | Выбранный базовый код | Subcommand_opcode | Статус Subcommand_opcode, Поддерживаемые функции Microsoft_event_prefix_length, Microsoft_event_prefix |
Параметры команды
Subcommand_opcode (1 октет):
Ценность | Описание параметра |
---|---|
0x00 | Операционный код субкоманды для HCI_VS_MSFT_Read_Supported_Features. |
Параметры_возврата
состояние (1 октет):
Ценность | Описание параметра |
---|---|
0x00 | Команда завершилась успешно. |
0x01 – 0xFF | Не удалось выполнить команду. Дополнительные сведения см. в разделе Коды ошибок в спецификации Bluetooth Core. |
Subcommand_opcode (1 октет):
Ценность | Описание параметра |
---|---|
0x00 | Код операции подкоманды для HCI_VS_MSFT_Read_Supported_Features. |
Supported_features (8 октетов):
Ценность | Описание параметра |
---|---|
0x00000000 00000001 | Контроллер поддерживает функцию мониторинга RSSI для подключений BR/EDR. Кроме того, контроллер поддерживает HCI_VS_MSFT_Read_Absolute_RSSI для чтения абсолютного значения RSSI подключения BR/EDR. |
0x00000000 00000002 | Контроллер поддерживает функцию мониторинга RSSI для подключений LE. |
0x00000000 00000004 | Контроллер поддерживает мониторинг RSSI устаревших объявлений LE. |
0x00000000 00000008 | Контроллер поддерживает мониторинг рекламы устаревших объявлений LE. |
0x00000000 00000010 | Контроллер поддерживает проверку допустимости общедоступных координат X и Y в кривой во время процесса связывания "Безопасный простой" для P-192 и P-256. Дополнительные сведения см. в спецификации Bluetooth Core Erratum 10734. |
0x00000000 00000020 | Контроллер поддерживает непрерывный мониторинг объявлений LE, выполняемых параллельно с другими действиями радиосвязи, используя HCI_VS_MSFT_LE_Monitor_Advertisement [v1]. |
0x00000000 00000040 | Зарезервировано. |
0x00000000 00000080 | Контроллер поддерживает разгрузку AVDTP и команды HCI_VS_MSFT_Avdtp_*, описанные в этом документе. |
0x00000000 00000100 | Зарезервировано. |
0x00000000 00000200 | Зарезервировано. |
0x00000000 00000400 | Контроллер поддерживает HCI_VS_MSFT_LE_Monitor_Advertisement [v2]. Кроме того, контроллер поддерживает непрерывный мониторинг рекламы LE, осуществляемый одновременно с другими радиосвязными действиями, используя HCI_VS_MSFT_LE_Monitor_Advertisement [v2]. |
0xFFFFFFFF FFFFFF00 | Биты, зарезервированные для будущего определения. Должно быть равно нулю. |
Microsoft_event_prefix_length (1 октет):
Ценность | Описание параметра |
---|---|
0x00 до 0x20 | Число байтов в поле префикса события Майкрософт, указанное в возвращенном Microsoft_event_prefix. Это число байтов константной информации в начале каждого события HCI, указанного корпорацией Майкрософт. |
Microsoft_event_prefix (переменная длина):
Ценность | Описание параметра |
---|---|
Значение префикса события | Константная информация, ожидаемая в начале каждого события, определенного корпорацией Майкрософт. Эти сведения используются для различения событий, определенных корпорацией Майкрософт, от других пользовательских событий. |
HCI_VS_MSFT_Monitor_Rssi
HCI_VS_MSFT_Monitor_Rssi запрашивает, чтобы контроллер начал мониторинг силы сигнала (RSSI) для указанного соединения и сгенерировал событие, когда измеренная сила сигнала соединения выходит за пределы указанных границ.
Приказ | Код | Параметры команды | Возвращаемые параметры |
---|---|---|---|
HCI_VS_MSFT_Monitor_Rssi | Выбранный базовый код | Subcommand_opcode, Connection_Handle, Порог высокой RSSI (RSSI_threshold_high) RSSI_threshold_low, Пороговое значение RSSI для низкого временного интервала Период выборки RSSI |
Статус Subcommand_opcode |
Контроллер должен оповещать хост о значении RSSI с помощью регулярно создаваемого события (на основе RSSI_sampling_period). Измеряемая связь RSSI должна быть абсолютным значением силы сигнала приемника в dBm для подключения BR/EDR.
В ответ на команду HCI_VS_MSFT_Monitor_Rssi контроллер должен создать событие Command Complete с состоянием равно нулю, если контроллер может начать мониторинг или ненулевое состояние в противном случае. Если значение состояния ненулевое, контроллер не должен создавать HCI_VS_MSFT_Rssi_Event в ответ на эту команду.
Контроллер должен отказаться от команды, если другая команда HCI_VS_MSFT_Monitor_Rssi с тем же Connection_Handle уже находится в обработке или если указанный дескриптор подключения недействителен. Контроллер также может отказаться от команды по другим причинам, таким как исчерпание ресурсов.
На этой диаграмме состояний показаны состояния перехода на контроллере при мониторинге RSSI подключения.
Контроллер должен создать HCI_VS_MSFT_Rssi_Event, если уровень полученного RSSI больше или равен заданному RSSI_threshold_high. После создания этого события контроллер не должен создавать новый HCI_VS_MSFT_Rssi_Event, чтобы указать, что RSSI_threshold_high превышен до тех пор, пока он не создаст HCI_VS_MSFT_Rssi_Event, указывающий, что RSSI упал ниже RSSI_threshold_low.
Контроллер должен создать HCI_VS_MSFT_Rssi_Event, если полученный RSSI равен или меньше указанного RSSI_threshold_low по указанному RSSI_threshold_low_time_interval. После создания этого события контроллер не должен создавать новый HCI_VS_MSFT_Rssi_Event, чтобы указать, что RSSI упал под RSSI_threshold_low, пока не будет создано событие HCI_VS_MSFT_Rssi_Event, чтобы указать, что RSSI_threshold_high достигнут или превышен.
Если RSSI_sampling_period находится в диапазоне от 0x01 до 0xFE, контроллер должен регулярно генерировать HCI_VS_MSFT_Rssi_Event каждый RSSI_sampling_period. Это событие должно содержать среднее значение RSSI, рассчитанное за период выборки RSSI_sampling_period. Если RSSI_sampling_period 0x00 или 0xFF, контроллер не должен уведомлять хост периодически с HCI_VS_MSFT_Rssi_Event.
Параметры команды
Подкоманда_opcode (1 октет):
Ценность | Описание параметра |
---|---|
0x01 | Код операции подкоманды для HCI_VS_MSFT_Monitor_Rssi. |
Connection_Handle (2 октета):
Ценность | Описание параметра |
---|---|
0xXXXX | Идентификатор подключения, RSSI которого необходимо отслеживать. |
RSSI_threshold_high (1 октет):
Ценность | Описание параметра |
---|---|
0xXX | Максимальное ожидаемое значение RSSI. Контроллер создает событие, если наблюдаемый RSSI становится больше или равен этому значению. Единица: dBm Диапазон BR/EDR: от -128 до 127 (целое число со знаком) Диапазон LE: -127 до 20 (целое число со знаком) |
RSSI_threshold_low (1 байт):
Ценность | Описание параметра |
---|---|
0xXX | Минимальное ожидаемое значение RSSI. Контроллер создает событие, если наблюдаемый RSSI становится меньше или равен этому значению. Единица: dBm Обязательный диапазон для BR/EDR: от -128 до 127 (целое число со знаком) Обязательный диапазон LE: от -127 до 20 (целое число со знаком) |
RSSI_threshold_low_time_interval (1 байт)
Ценность | Описание параметра |
---|---|
0x00 | Зарезервированное значение. |
N = 0xXXX | Время в секундах, в течение которого значение RSSI должно быть ниже RSSI_threshold_low, прежде чем будет создано HCI_VS_MSFT_Rssi_Event. Период времени = N * 1 секунда Обязательный диапазон: 0x01 до 0x3C |
RSSI_sampling_period (1 октет):
Ценность | Описание параметра |
---|---|
0x00 | Зарезервированное значение. |
N = 0xXXX | Интервал выборки в кратных 100 миллисекунд. Период времени = N * 100 миллисекунд Обязательный диапазон: 0x01 до 0xFE |
0xFF | Зарезервированное значение. |
Параметры_возврата
Состояние (1 октет):
Ценность | Описание параметра |
---|---|
0x00 | Команда завершилась успешно. |
0x01 до 0xFF | Не удалось выполнить команду. Дополнительные сведения см. в разделе Коды ошибок в спецификации Bluetooth Core. |
0x07 | Контроллер должен возвращать Превышение объема памяти, если для обработки команды недостаточно памяти. |
Код ошибки | Не удалось выполнить команду. Дополнительные сведения см. в разделе Коды ошибок в спецификации Bluetooth Core. |
Subcommand_opcode (1 октет):
Ценность | Описание параметра |
---|---|
0x01 | Код подкоманды для HCI_VS_MSFT_Monitor_Rssi. |
События, созданные без маскировки
Контроллер должен незамедлительно создать событие «Завершение команды» при получении команды HCI_VS_MSFT_Monitor_Rssi. Если событие Command Complete возвращает состояние 0, контроллер должен создать HCI_VS_MSFT_Rssi_Event при возникновении одного из следующих условий.
- Наблюдаемый RSSI для устройства по сравнению с RSSI_threshold_low_time_interval становится равным или меньше заданного значения RSSI_threshold_low.
- Наблюдаемый RSSI для устройства становится больше или равен указанному значению RSSI_threshold_high.
- RSSI_sampling_period действителен, и период выборки истекает.
Контроллер должен выполнить все необходимые очистки, если подключение к указанному устройству потеряно. В этом случае команда HCI_VS_MSFT_Cancel_Monitor_Rssi не отправляется контроллеру.
HCI_VS_MSFT_Cancel_Monitor_Rssi
HCI_VS_MSFT_Cancel_Monitor_Rssi отменяет ранее выданную команду HCI_VS_MSFT_Monitor_Rssi. Контроллер должен быстро создать событие завершения команды в ответ на эту команду.
Приказ | Код | Параметры команды | Возвращаемые параметры |
---|---|---|---|
HCI_VS_MSFT_Cancel_Monitor_Rssi | Выбранный базовый код | Subcommand_opcode, Connection_Handle |
Статус Subcommand_opcode |
Параметры команды
Subcommand_opcode (1 октет):
Ценность | Описание параметра |
---|---|
0x02 | Операционный код подкоманды для HCI_VS_MSFT_Cancel_Monitor_Rssi. |
Connection_Handle (2 октета):
Ценность | Описание параметра |
---|---|
0xXXXX | Дескриптор подключения, RSSI которого должен быть отменен. |
Параметры_возврата
Состояние (1 октет):
Ценность | Описание параметра |
---|---|
0x00 | Команда завершилась успешно. |
0x01 до 0xFF | Не удалось выполнить команду. Дополнительные сведения см. в разделе Коды ошибок в спецификации Bluetooth Core. |
Подкоманда_опкод (1 октет)
Ценность | Описание параметра |
---|---|
0x02 | Код операции подкоманды для HCI_VS_MSFT_Cancel_Monitor_Rssi. |
События, созданные без маскировки
Контроллер должен создать событие "Завершение команды" при получении команды HCI_VS_MSFT_Cancel_Monitor_RSSI.
Монитор_рекламы_HCI_VS_MSFT_LE
HCI_VS_MSFT_LE_Monitor_Advertisement запрашивает, что контроллер запускает мониторинг рекламных объявлений, которые входят в указанный диапазон RSSI, а также удовлетворяют одному из следующих условий:
- Указанный шаблон можно сопоставить с полученным пакетом рекламы.
- Указанный UUID можно сопоставить с полученным пакетом рекламы.
- Указанный ключ разрешения личности (IRK) можно использовать для разрешения частного адреса устройства, от которого произошел рекламный пакет.
- Указанный адрес Bluetooth можно сопоставить с полученным пакетом рекламы.
Команда версии 2 позволяет узлу объединить некоторые из указанных выше условий с параметрами, определяющими источник рекламы и цель направленной рекламы, чтобы дополнительно уточнить, какие объявления отслеживаются. Команда версии 2 также позволяет хосту фильтровать отслеживаемые рекламные объявления, в результате чего контроллер генерирует отчеты о рекламной деятельности.
Приказ | Код | Параметры команды | Возвращаемые параметры |
---|---|---|---|
HCI_VS_MSFT_LE_Monitor_Advertisement [версия 2] | Выбранный базовый код | Subcommand_opcode_v2, RSSI_порог_высокий Пороговое_значение_RSSI_низкий Порог низкого уровня RSSI_интервал времени Период выборки RSSI Параметры_монитора Настройки фильтрации отчётов о рекламе Peer_device_address, Тип_адреса_устройства_партнера Peer_device_IRK, Условие_тип Параметры условий <> |
Статус Subcommand_opcode, Ручка монитора |
HCI_VS_MSFT_LE_Monitor_Advertisement [v1] | Выбранный базовый код | Subcommand_opcode_v1, Порог RSSI высокий Порог_RSSI_низкий (RSSI_threshold_low) Интервал времени для низкого порога RSSI RSSI_sampling_period, Тип_условия Параметры условий <> |
Статус Subcommand_opcode, Монитор_Ручка |
Контроллер должен создать событие "Завершить команду" в ответ на эту команду. Значение состояния должно быть равно нулю, если контроллер может начать мониторинг или ненулевое состояние в противном случае. Если контроллер не поддерживает мониторинг RSSI для объявлений LE, он должен игнорировать значения параметров RSSI_threshold_high, RSSI_threshold_low, RSSI_threshold_low_time_intervalи RSSI_sampling_period.
На этой диаграмме состояний показаны переходы состояния на контроллере при мониторинге уровня RSSI для рекламного сообщения.
диаграмма состояний
Контроллер должен начать мониторинг объявления только в том случае, если полученный RSSI больше или равен RSSI_threshold_high для конкретного устройства, и Monitor_options совпадают (см. ниже). Контроллер должен создать HCI_VS_MSFT_LE_Monitor_Device_Event с Monitor_state, установленным в 1, и Monitor_handle, назначенным как дескриптор для данного состояния, чтобы уведомить узел о том, что контроллер отслеживает это конкретное устройство с учетом состояния. Кроме того, контроллер должен передавать первый отчет об отслеживаемой рекламе на узел только в том случае, если совпадают Advertisement_report_filter_options (см. ниже).
Параметры мониторинга фильтра считаются совпадением согласно следующей логике (в псевдокоде):
MatchesCondition = (PDU Matches Condition Parameters)
IsAdvAMatch = ((Monitor_options bit 0 is set) && ((AdvA == Peer_device_address) && (TxAdd == Peer_device_address_type))) ||
((Monitor_options bit 1 is set) && (AdvA resolvable with Peer_device_IRK))
IsDirectedAdvAMatch = (TargetA is permitted based on the Scanning Filter Policy) &&
(((Monitor_options bit 2 is set) && ((AdvA == Peer_device_address) && (TxAdd == Peer_device_address_type))) ||
((Monitor_options bit 3 is set) && (AdvA resolvable with Peer_device_IRK)))
IsDirectedTargetAMatch = (Monitor_options bit 4 is set) &&
(TargetA is permitted based on the Scanning Filter Policy)
MonitorOptionsMatch = (MatchesCondition && IsAdvAMatch) ||
IsDirectedAdvAMatch ||
IsDirectedTargetAMatch ||
((Monitor_options bit 5 is set) && MatchesCondition)
В случае отслеживаемого рекламного объявления Advertisement_report_filter_options рассматриваются как совпадение на основе следующей логики (в псевдокоде):
IsDuplicateFilterSatisfied = (Advertisement_report_filter_options bit 0 is NOT set || PDU is not a duplicate)
ShouldGenerateLegacyReport = (Advertisement_report_filter_options bit 1 is set) &&
(PDU is Legacy) &&
MonitorOptionsMatch
ShouldGenerateExtendedReport = (Advertisement_report_filter_options bit 2 is set) &&
(PDU is Extended) &&
MonitorOptionsMatch
ShouldGenerateDirectedReport = (Advertisement_report_filter_options bit 3 is set) &&
(PDU is Directed) &&
MonitorOptionsMatch
AdvertisementReportFilterOptionsMatch = IsDuplicateFilterSatisfied &&
(ShouldGenerateLegacyReport || ShouldGenerateExtendedReport || ShouldGenerateDirectedReport)
Контроллер должен прекратить мониторинг состояния , если RSSI полученных объявлений равен или меньше RSSI_threshold_low более RSSI_threshold_low_interval для конкретного устройства. Контроллер должен создать HCI_VS_MSFT_LE_Monitor_Device_Event с Monitor_state установлено значение 0, чтобы уведомить узел о том, что контроллер перестал отслеживать конкретное устройство для условия. После указания контроллера HCI_VS_MSFT_LE_Monitor_Device_Event с Monitor_state задано значение 0, контроллер не должен разрешать дальнейшим рекламным пакетам передаваться на хост для устройства, пока контроллер не уведомит хост, что RSSI для конкретного устройства поднялся до или выше RSSI_threshold_high для данного устройства при Условии.
Кроме того, контроллер должен создать HCI_VS_MSFT_LE_Monitor_Device_Event, установив Monitor_state в 0, чтобы уведомить хост о том, что контроллер остановил мониторинг устройства для условия , если указанный RSSI_threshold_low_time_interval истекает без получения рекламных пакетов от устройства. Если контроллер отслеживает устройство для обнаружения определенного состояния, то следующие утверждения являются истинными.
Если контроллер поддерживает мониторинг RSSI для расширенных объявлений LE без выборки, то контроллер должен передавать анонимные рекламные пакеты на узел, если значение RSSI для пакета больше или равно RSSI_threshold_high. Анонимные объявления не должны отслеживаться, и событие HCI_VS_MSFT_LE_Monitor_Device_Event не должно быть создано.
Если контроллер поддерживает мониторинг RSSI рекламы без дискретизации, контроллер должен создать усеченный рекламный отчет в том случае, если полученные фрагменты объявления соответствуют, но все объявление не было полностью получено.
Контроллер должен поддерживать не менее 30 одновременных Monitor_handles, не менее 30 одновременных отслеживаемых устройств и не менее 20 одновременных отслеживаемых дублирующихся рекламных сообщений. Контроллер также должен быть способен выполнять непрерывную проверку LE в 10% цикле обязанностей.
Если разрешение адреса включено в контроллере и если узел намерен отслеживать удаленное устройство, при условии что его IRK успешно хранится в списке разрешения контроллера, то узел должен предоставить параметры Peer_Identity_Address и Peer_Identity_Address_Type из записи списка разрешения удаленного устройства в качестве параметров Peer_device_address и Peer_device_address_type соответственно.
RSSI_sampling_period | Устаревшие объявления | Расширенные объявления (неанонимные) | Расширенные объявления (анонимные) |
---|---|---|---|
0x00 | Контроллер должен распространять все полученные рекламные пакеты на узел для устройства согласно этому условию , если контроллер ранее не получил команду HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable с Включить установлено на 0x00. Контроллер должен распространять рекламный пакет на хост, даже если полученный RSSI меньше или равен RSSI_threshold_low, пока RSSI_threshold_low_time_interval не истек для конкретного устройства в этом Условии. Значение RSSI этого пакета рекламы должно быть значением RSSI полученного объявления. | Если контроллер поддерживает мониторинг RSSI для расширенных объявлений LE без выборки, поведение аналогично столбцу устаревших объявлений, за исключением того, что рекламный пакет определяется как все PDUs в рекламной цепочке. | Если контроллер поддерживает мониторинг RSSI расширенных рекламных пакетов LE без выборки, он должен передавать все полученные пакеты на хост устройства при этом условии, если контроллер ранее не получил команду HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable с параметром Enable, установленным в 0x00. |
0x01 - 0xFE | Контроллер должен распространять устаревшие рекламные пакеты на хост с периодичностью RSSI_sampling_period, если контроллер ранее не получил команду HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable с Enable, установленным в 0x00. Значение RSSI, указанное для объявления, должно быть средним значением RSSI, полученным в течение этого интервала выборки. Если контроллер не получает рекламный пакет в течение периода выборки, то он не должен распространять рекламу хосту. Возможно, что RSSI_sampling_period меньше RSSI_threshold_low_time_interval, а все объявления, полученные во время RSSI_sampling_period, имеют RSSI ниже RSSI_threshold_low. Контроллер по-прежнему распространяет объявление со средним значением RSSI, полученным в течение этого интервала выборки. | Если контроллер поддерживает мониторинг RSSI расширенных объявлений LE без выборки, контроллер должен вести себя так, как если бы RSSI_sampling_period был 0x00. | Если контроллер поддерживает мониторинг RSSI расширенных объявлений LE без выборки, контроллер должен вести себя так, как если бы RSSI_sampling_period был 0x00. |
0xFF | Контроллер не должен позволять передавать дополнительные пакеты рекламы на хост для устройства в соответствии с условием , пока контроллер не уведомит хост о том, что RSSI конкретного устройства упал ниже RSSI_threshold_low в течение RSSI_threshold_low_time_interval для данного устройства в этом условии . Это уведомление выполняется путем создания HCI_VS_MSFT_LE_Monitor_Device_Event с Monitor_state равным 0. | Если контроллер поддерживает мониторинг RSSI для расширенных объявлений LE без выборки, то поведение аналогично поведению в столбце для устаревших объявлений. | Если контроллер поддерживает мониторинг RSSI расширенных объявлений LE без выборки, контроллер должен вести себя так, как если бы RSSI_sampling_period был 0x00. |
Если контроллер ранее получил команду HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable с параметром Enable, установленным равным 0x00, таймер выборки не должен быть остановлен. См. пример HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable для получения дополнительных сведений о фильтрах с периодом выборки. Если контроллер получает уникальные пакеты рекламы с одного устройства, он должен сопоставлять каждый пакет на соответствие условиям, хранящимся на контроллере.
Если контроллер получает пакет рекламы от устройства, который соответствует нескольким условиям, то контроллер должен создать HCI_VS_MSFT_LE_Monitor_Device_Event для каждого условия, которое соответствует, с Monitor_handle, установленным для условия, которое соответствует.
Если контроллер не может отслеживать значения RSSI для всех устройств в диапазоне, которые соответствуют условию , он продолжает отслеживать столько устройств, сколько это возможно. Решение о том, какие устройства следует отслеживать, будет зависеть от значений RSSI полученных объявлений. Контроллер должен отслеживать устройства с большей мощностью полученного сигнала.
Если контроллер уведомил узел о конкретном устройстве (A) и он отслеживает устройства с максимальной пропускной способностью оборудования, а если другое устройство (B) входит в диапазон с более высоким значением RSSI, контроллер должен уведомить узел о том, что он остановил мониторинг устройства (A) путем создания HCI_VS_MSFT_LE_Monitor_Device_Event с Monitor_state задано значение 0. Контроллер также должен создать HCI_VS_MSFT_LE_Monitor_Device_Event с Monitor_state установлен в значение 1, чтобы уведомить хост о том, что устройство (B) теперь отслеживается.
Тип условия и параметры условия
Параметр Condition_type указывает, является ли параметр Condition шаблоном, UUID, IRK или BD_ADDR.
Если параметр Condition_type задает шаблон, условие содержит два раздела, которые содержат количество шаблонов, присутствующих в условии, и данные шаблона.
число шаблонов указывает количество шаблонов, которые необходимо сопоставить.
Формат данных шаблона следующий.
- Длина указывает длину этого шаблона, включая тип данных и начальный байт шаблона.
- тип AD указывает поле типа AD.
- Начало шаблона указывает начальную позицию байтов шаблона сразу после типа AD.
- шаблон имеет размер (длина - 0x2) и является шаблоном, который должен совпадать с указанным типом AD в пакете рекламы, начиная с указанного стартового байта.
Если задано несколько шаблонов, контроллер должен убедиться, что по крайней мере один шаблон соответствует полученному объявлению.
Если контроллер поддерживает мониторинг RSSI расширенных объявлений LE без выборки:
Контроллер должен искать шаблон в первых 251 октете рекламных данных узла и может искать в любых оставшихся октетах рекламных данных узла. Если раздел AD превышает первые 251 октет данных о рекламе узла, контроллер должен искать паттерн в части раздела AD, которая находится в первых 251 октетах данных о рекламе узла, и может искать в любых оставшихся октетах данных о рекламе узла. Примечание: на основе фрагментации рекламодателем первые 251 октет данных хост-рекламы могут распределяться по AdvData нескольких рекламных PDU. Сканерам следует внимательно ограничивать количество AuxPtrs, чтобы избежать следования чрезмерно длинным цепочкам НДП.
Контроллер должен отслеживать на основе адреса каждого устройства для каждого рекламного набора. Контроллер должен распространять HCI_VS_MSFT_LE_Monitor_Device_Event для каждого набора рекламы, соответствующего шаблону, даже если рекламное сообщение поступает с того же адреса устройства.
Если параметр Condition_type указывает на идентификатор UUID, параметр Condition содержит тип UUID и идентификатор UUID. Тип UUID указывает, является ли UUID 16-разрядным, 32-разрядным или 128-разрядным. Контроллер должен проанализировать идентификатор UUID службы в пакете рекламного уведомления для проверки указанного UUID. Если тип UUID определен как 0x01, контроллер должен проанализировать неполный список 16-разрядных идентификаторов службы и полный список 16-разрядных UUID-служб, указанных в типе AD Service UUID. Если тип UUID определен как 0x02, контроллер должен проанализировать неполный список 32-разрядных UUID-служб и полный список 32-разрядных UUID, указанных в типе AD Service UUID. Если указан тип UUID 0x03, контроллер должен проанализировать неполный список 128-разрядных UUID служб и полный список 128-разрядных UUID служб, указанных в типе AD Service UUID.
Если контроллер поддерживает мониторинг RSSI расширенных объявлений LE без выборки:
Контроллер должен искать UUID службы в первых 251 октете рекламных данных узла и может искать в любых оставшихся октетах рекламных данных узла. Если раздел AD выходит за рамки первых 251 октета данных рекламы узла, контроллер должен искать идентификатор UUID службы в части раздела AD, который находится в первых 251 октетах данных рекламы узла, и может искать в любых оставшихся октетах данных рекламы узла. Примечание: на основе фрагментации рекламодателем первые 251 октет хостовых рекламных данных может охватывать AdvData нескольких рекламных PDU. Сканеры должны обеспечить ограничение количества AuxPtrs, за которыми они следуют, чтобы избежать чрезмерно длинных цепочек НДП.
Контроллер должен отслеживать на основе адреса каждого устройства и каждого рекламного набора. Контроллер должен распространять HCI_VS_MSFT_LE_Monitor_Device_Event для каждого набора объявлений, соответствующего идентификатору UUID службы, даже если это объявление исходит от одного и того же устройства.
Если параметр Condition_type указывает IRK, параметр Condition содержит IRK.
Если параметр Condition_type указывает адрес Bluetooth, параметр условия содержит тип адреса и BD_ADDR.
Контроллер должен продолжать мониторинг в соответствии с условиями, даже если включено сканирование (Активное или Пассивное). Если включено активное сканирование, ответ сканирования на объявление, соответствующее фильтру, должен распространяться на хост.
Если контроллер получает команду HCI_VS_MSFT_LE_Monitor_Advertisement при отключении фильтров (из-за ранее полученной команды HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable с Включить задано значение 0x00), контроллер должен принять команду, если это возможно, но задать ему отключенное состояние. Контроллер также может отказаться от команды по другим причинам, таким как исчерпание ресурсов.
Если все биты Monitor_options ясны, контроллер должен вернуть код ошибки недопустимые параметры команды HCI (0x12).
Если установлен бит 1 или бит 3 Monitor_options, и Peer_device_IRK задан как недопустимый IRK, или ни один из битов Monitor_options не установлен, контроллер должен вернуть код ошибки недопустимые параметры команд HCI (0x12).
Если установлен бит 0 или бит 1 или бит 2 или бит 3 параметра Monitor_options и параметр Condition_type имеет значение 0x03 или 0x04, Контроллер должен вернуть код ошибки недопустимые параметры команд HCI (0x12).
Если бит 0 Advertisement_report_filter_options установлен и RSSI_sampling_period принимает любое значение кроме 0x00, контроллер должен вернуть код ошибки Invalid HCI Command Parameters (0x12).
Отсутствующие параметры
Если выдается версия этой команды, которая не включает все параметры, используется следующее:
Параметр | Ценность |
---|---|
Опции монитора | Бит 5 установлен; все остальные биты сброшены |
Параметры_фильтра_отчета_рекламы | Биты 1 и 2 установлены; все остальные биты сброшены |
Peer_device_IRK | 0x0000000000000000 000000000000000000000000 |
Адрес_устройства_партнера | 0x000000000000 |
Тип_адреса_устройства_партнера | 0x00 |
Параметры_команды
Subcommand_opcode_v1 (1 октет):
Ценность | Описание параметра |
---|---|
0x03 | Код операции подкоманды для HCI_VS_MSFT_LE_Monitor_Advertisement [v1]. |
Subcommand_opcode_v2 (1 октет):
Ценность | Описание параметра |
---|---|
0x0F | Код подкоманды для HCI_VS_MSFT_LE_Monitor_Advertisement [v2]. |
RSSI_threshold_high (1 октет):
Ценность | Описание параметра |
---|---|
0xXX | Максимальное ожидаемое значение RSSI. Контроллер создает событие, если наблюдаемый RSSI становится больше или равен этому значению. Единица: dBm Обязательный диапазон: -127 до 20 (целое число со знаком) |
RSSI_threshold_low (1 октет):
Ценность | Описание параметра |
---|---|
0xXX | Минимальное ожидаемое значение RSSI. Контроллер создает событие, если наблюдаемый RSSI становится меньше или равен этому значению. Единица: dBm Обязательный диапазон: -127 до 20 (целое число со знаком) |
RSSI_threshold_low_time_interval (1 октет):
Ценность | Описание параметра |
---|---|
0x00 | Зарезервированное значение. |
N = 0xXXX | Время в секундах, в течение которого значение RSSI должно быть ниже RSSI_threshold_low до создания HCI_VS_MSFT_Rssi_Event Период времени = N * 1 секунда Обязательный диапазон: от 0x01 до 0x3C. |
RSSI_sampling_period (1 октет):
Ценность | Описание параметра |
---|---|
0x00 | Контроллер должен передавать все полученные объявления хосту. |
N = 0xXXX | Интервал выборки в кратных 100 миллисекунд. Период времени = N * 100 миллисекунды. Обязательный диапазон: 0x01 до 0xFE |
0xFF | Контроллер не должен распространять какие-либо полученные объявления на хост. |
Параметры_монитора (1 байт):
Битовое число | Описание параметра |
---|---|
0 | Контроллер должен отслеживать рекламные PDU, где AdvA или его разрешенный идентификационный адрес соответствует Peer_device_address и Peer_device_address_type, и где TargetA отсутствует или, если он присутствует, использование TargetA разрешено на основе политики фильтрации при сканировании, если эти PDU соответствуют условию, указанному в Condition_Type. |
1 | Контроллер должен отслеживать рекламные PDUs, в которых AdvA разрешимо с Peer_device_IRK и где TargetA отсутствует или, если он присутствует, TargetA разрешено на основе политики фильтра сканирования, если эти PDUs соответствуют условию, указанному в Condition_Type. Этот бит не должен быть задан, если в контроллере используется конфиденциальность уровня ссылок. |
2 | Контроллер должен отслеживать направленные рекламные PDU, где TargetA разрешен на основе политики фильтра сканирования и где AdvA или его разрешенный адрес удостоверения личности соответствует Peer_device_address и Peer_device_address_type. Это независимо от того, соответствует ли PDU условию, указанному в Condition_Type. |
3 | Контроллер должен отслеживать рекламные ПДУ с направленной рассылкой, где TargetA разрешено на основе политики фильтрации сканирования, и где AdvA может быть разрешено с помощью Peer_device_IRK. Это независимо от того, соответствует ли PDU условию, указанному в Condition_Type. Этот бит не должен быть задан, если в контроллере используется конфиденциальность уровня ссылок. |
4 | Контроллер должен отслеживать направленные рекламные ПДУ, где TargetA разрешён в соответствии с Политикой фильтрации сканирования, независимо от значения Peer_device_address и Peer_device_address_type или Peer_device_IRK и независимо от того, соответствует ли ПДУ условию, указанному в Condition_Type. |
5 | Контроллер должен отслеживать рекламные PDUs от любого AdvA, где TargetA отсутствует или, если он присутствует, TargetA разрешен на основе политики сканирования фильтров, если эти PDUs соответствуют условию, указанному в Condition_Type. |
Все остальные биты | Зарезервировано для дальнейшего использования |
Advertisement_report_filtering_options (1 байт):
Битовое число | Описание параметра |
---|---|
0 | Фильтровать повторяющиеся рекламные PDU. Этот бит должен устанавливаться только в том случае, если период выборки RSSI равен 0x00. |
1 | Контроллер должен генерировать события HCI_LE_Advertising_Report, HCI_LE_Directed_Advertising_Report или HCI_LE_Extended_Advertising_Report для Legacy рекламных PDUs, если эти PDUs соответствуют указанным Monitor_options. |
2 | Контроллер должен создавать события HCI_LE_Extended_Advertising_Report для расширенных рекламных ПДУ, если эти ПДУ соответствуют указанным параметрам мониторинга. |
3 | Контроллер должен генерировать события HCI_LE_Advertising_Report, HCI_LE_Directed_Advertising_Report или HCI_LE_Extended_Advertising_Report для направленных рекламных PDU, если эти PDU соответствуют указанным Monitor_options. |
Все остальные биты | Зарезервировано для дальнейшего использования |
Peer_device_address (6 октетов):
Ценность | Описание параметра |
---|---|
0xXXXXXXXXXXXXX | Общедоступный адрес устройства или случайный адрес устройства для сопоставления. |
Тип_адреса_устройства_партнера (1 октет):
Ценность | Описание параметра |
---|---|
0x00 | Общедоступный адрес устройства |
0x01 | Случайный адрес устройства |
Все остальные значения | Зарезервировано для дальнейшего использования |
Peer_device_IRK (16 октетов):
Ценность | Описание параметра |
---|---|
0x0000000000000000 000000000000000000000000 | Недопустимый IRK. Не должно быть значением, если задан Monitor_options бит 1 или если задано Monitor_options бит 3. |
0xXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX | IRK устройства для сопоставления. Peer_device_address и Peer_device_address_type должны быть заполнены. |
Тип_условия (1 октет)
Ценность | Описание параметра |
---|---|
0x01 | Условие — это шаблон, который должен соответствовать рекламе. |
0x02 | Условие — тип UUID и UUID. |
0x03 | Условие — разрешение IRK. Исключается, если установлено любое из значений битов 0, 1, 2 или 3 в "Monitor_options". |
0x04 | Условие — это тип Bluetooth-адреса и сам Bluetooth-адрес. Исключается, если установлены биты 0, 1, 2 или 3 в параметрах Monitor_options. |
Условие: применимые поля для условия зависят от значения Condition_type. Дополнительные сведения см. в разделе параметров Condition_type и Condition.
Количество_шаблонов (1 октет)
Ценность | Описание параметра |
---|---|
0xXX | Количество шаблонов, указанных в параметре Pattern_data. |
Pattern_data (>3 байта):
Ценность | Описание параметра |
---|---|
Длина | Длина этого шаблона. |
Тип данных | Тип данных раздела объявления. Значения перечислены в документе "Назначенные номера Bluetooth". |
Начальный байт | Начальная позиция шаблона для совпадения с указанным типом данных. |
Рисунок | Шаблон для сопоставления (размер длины — 0x2 байтов). |
UUID_type (1 октет):
Ценность | Описание параметра |
---|---|
0x01 | UUID — это 16-разрядная служба. |
0x02 | UUID — это 32-разрядная служба. |
0x03 | UUID — это 128-разрядная служба. |
UUID (2, 4 или 16 октетов):
Ценность | Описание параметра |
---|---|
0xXXXX | 2 байта, если UUID_type 0x01. 4 байта, если UUID_type 0x02. 16 байт, если UUID_type 0x03. |
IRK (16 октетов):
Ценность | Описание параметра |
---|---|
0xXXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX | IRK, используемый для определения частного адреса. |
Тип_адреса (1 октет)
Ценность | Описание параметра |
---|---|
0x00 | Общедоступный адрес устройства. |
0x01 | Случайный адрес устройства. |
0x02 до 0xFF | Зарезервированные значения для дальнейшего использования. |
BD_ADDR (6 октетов):
Ценность | Описание параметра |
---|---|
0xXXXXXXXXXXXX | Адрес Bluetooth устройства, который необходимо отслеживать. |
Параметры_возврата
Состояние (1 октет):
Ценность | Описание параметра |
---|---|
0x00 | Команда выполнилась успешно. |
0x07 | Контроллер должен возвращать сообщение "Превышена емкость памяти", если у него недостаточно памяти для обработки команды. |
Код ошибки | Не удалось выполнить команду. Дополнительные сведения см. в разделе Коды ошибок в спецификации Bluetooth Core. |
Subcommand_opcode (1 октет):
Ценность | Описание параметра |
---|---|
0x03 или 0x0F | В зависимости от того, какая команда была отправлена, оператор подкоманды для HCI_VS_MSFT_LE_Monitor_Advertisement [v1] или HCI_VS_MSFT_LE_Monitor_Advertisement [v2]. |
Monitor_handle (1 октет):
Ценность | Описание параметра |
---|---|
от 0x00 до 0xFF | Дескриптор этого правила. Этот дескриптор используется в качестве параметра для HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement для отмены мониторинга объявления. Этот параметр действителен только в том случае, если состояние 0x00. |
События, созданные без маскировки
При получении команды HCI_VS_MSFT_LE_Monitor_Advertisement контроллер должен создать событие "Завершить команду".
HCI_VS_MSFT_LE_Отменить_Монитор_Реклама
HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement отменяет ранее выданную команду HCI_VS_MSFT_LE_Monitor_Advertisement.
Приказ | Код | Параметры команды | Возвращаемые параметры |
---|---|---|---|
HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement | Выбранный базовый код | Subcommand_opcode, Дескриптор_монитора |
Статус Subcommand_opcode |
Контроллер должен быстро создать событие завершения команды в ответ на эту команду.
Параметры_команды
Subcommand_opcode (1 байт):
Ценность | Описание параметра |
---|---|
0x04 | Код операции подкоманды для HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement. |
Connection_Handle (1 октет):
Ценность | Описание параметра |
---|---|
0xXX | Дескриптор фильтра, который отменяется. |
параметры_возврата
Состояние (1 октет):
Ценность | Описание параметра |
---|---|
0x00 | Команда завершилась успешно. |
0x07 | Контроллер будет возвращать сообщение "Превышена емкость памяти," если у него недостаточно памяти для обработки команды. |
Код ошибки | Не удалось выполнить команду. Дополнительные сведения см. в разделе Коды ошибок в спецификации Bluetooth Core. |
Subcommand_opcode (1 октет):
Ценность | Описание параметра |
---|---|
0x04 | Код операции подкоманды для HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement. |
События, созданные без маскировки
Контроллер должен сгенерировать событие "Command Complete" при получении команды HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement.
HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable
HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable задает состояние фильтров рекламы.
Приказ | Код | Параметры команды | Возвращаемые параметры |
---|---|---|---|
HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable | Выбранный базовый код | Subcommand_opcode, Включить |
Статус Субкоманда_опкод |
Если переключатель установлен в положение 0x00, контроллер должен передавать полученные объявления на хост на основе существующих параметров списка принятых фильтров. Контроллер должен продолжать отслеживать устройства, которые в настоящее время отслеживаются, и создавать HCI_VS_MSFT_LE_Monitor_Device_Event, с значением Monitor_state, установленным в 0, если устройство больше не находится под наблюдением. Контроллер должен создать HCI_VS_MSFT_LE_Monitor_Device_Event с Monitor_state установить значение 1, если отслеживается новое устройство. Ведущий может выдавать HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable, устанавливая параметр Enable на 0x01 для повторного включения всех условий фильтра.
Если Enable установлено в 0x01, эта команда включает все фильтры, которые были заданы с помощью ранее выданной команды HCI_VS_MSFT_LE_Monitor_Advertisement. Контроллер должен отклонить команду HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable, если она не переключает состояние фильтра:
- Контроллер должен отклонить команду HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable с Enable установленным на 0x01, если он ранее получил команду HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable с Enable установленным на 0x01.
- Контроллер должен отклонить команду HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable с Включить, установленной в 0x00, если ранее он получил команду HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable с Включить, установленной в 0x00.
Состояние фильтра рекламы по умолчанию отключено. Это состояние эквивалентно контроллеру, ранее получившему команду HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable с Enable, установленным на 0x00. Контроллер должен быстро создать событие завершения команды в ответ на эту команду.
Параметры_команды
Subcommand_opcode (1 октет):
Ценность | Описание параметра |
---|---|
0x05 | Код операции подкоманды для HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable. |
Включить (1 октет):
Ценность | Описание параметра |
---|---|
0x00 | Вернитесь к текущему поведению списка принятия фильтров, но продолжайте мониторинг устройств на основе условия из команд HCI_VS_MSFT_LE_Monitor_Advertisement. |
0x01 | Включите на контроллере все команды HCI_VS_MSFT_LE_Monitor_Advertisement, которые были выданы. |
Return_parameter
Состояние (1 октет):
Ценность | Описание параметра |
---|---|
0x00 | Команда завершилась успешно. |
0x0C | Контроллер должен возвращать команду запрещено, если контроллер отклонил команду, потому что ранее он получил команду HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable с параметром Включить, установленным на то же значение, что и в этой команде. |
Код ошибки | Не удалось выполнить команду. Дополнительные сведения см. в разделе Коды ошибок в спецификации Bluetooth Core. |
Subcommand_opcode (1 октет):
Ценность | Описание параметра |
---|---|
0x05 | Код операции подкоманды для HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable. |
События, созданные без маскировки
Контроллер должен сгенерировать событие завершения команды при получении команды HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable.
HCI_VS_MSFT_Read_Absolute_RSSI
HCI_VS_MSFT_Read_Absolute_RSSI считывает абсолютное значение показателя уровня полученного сигнала (RSSI) для соединения BR/EDR от контроллера.
Приказ | Код | Параметры команды | Возвращаемые параметры |
---|---|---|---|
HCI_VS_MSFT_Read_Absolute_RSSI | Выбранный базовый код | Subcommand_opcode, Connection_Handle |
Статус Subcommand_opcode, Connection_Handle, RSSI |
Дескриптор соединения предоставляется как параметр команды, так и параметр возврата для идентификации соединения ACL, RSSI которого считывается. Метрика RSSI — это абсолютная мощность сигнала приемника в dBm с точностью до ± 6 dB. Если rsSI не удается прочитать, то для метрики RSSI должно быть задано значение 127. Контроллер всегда должен быстро выполнить эту команду с событием "Завершено командой".
Параметры команды
Подкоманда_опкод (1 октет)
Ценность | Описание параметра |
---|---|
0x06 | Код операции подкоманды для HCI_VS_MSFT_Read_Absolute_RSSI. |
Connection_Handle (2 октета):
Ценность | Описание параметра |
---|---|
0xXXXX | Дескриптор подключения BR/EDR, rsSI которого необходимо считывать. |
Параметры_возврата
Состояние (1 октет):
Ценность | Описание параметра |
---|---|
0x00 | Команда выполнена успешно. |
от 0x01 до 0xFF | Не удалось выполнить команду. Дополнительные сведения см. в разделе Коды ошибок в спецификации Bluetooth Core. |
Subcommand_opcode (1 octet)
Ценность | Описание параметра |
---|---|
0x06 | Код операции подкоманды для HCI_VS_MSFT_Read_Absolute_RSSI. |
Connection_Handle (2 октета):
Ценность | Описание параметра |
---|---|
0xXXXX | Дескриптор подключения BR/EDR, RSSI которого был считыван. |
RSSI (1 октет)
Ценность | Описание параметра |
---|---|
N = 0xXXX | Значение RSSI для подключения BR/EDR. Единица: dBm Обязательный диапазон: -128 до 127 (целое число со знаком) |
События, созданные без маскировки
Контроллер должен создать событие "Завершение команды" при завершении команды HCI_VS_MSFT_Read_Absolute_RSSI.
События Bluetooth HCI, определенные корпорацией Майкрософт
Все события Bluetooth HCI, определенные корпорацией Майкрософт, являются событиями, определенными поставщиком, и используют код события 0xFF. Данные о событиях Майкрософт всегда начинаются с постоянной строки байтов, чтобы различать события, определенные корпорацией Майкрософт, от других событий, определенных поставщиком. Длина и значение строки константы определяются реализатором контроллера и возвращаются в ответ на HCI_VS_MSFT_Read_Supported_Features.
Событие HCI | Описание |
---|---|
HCI_VS_MSFT_Rssi_Event | HCI_VS_MSFT_RSSI_Event указывает, что команда HCI_VS_MSFT_Monitor_Rssi завершена. |
HCI_VS_MSFT_LE_Monitor_Device_Event | HCI_VS_MSFT_LE_Monitor_Device_Event указывает, что контроллер либо начал, либо остановил мониторинг устройства Bluetooth LE. |
HCI_VS_MSFT_RSSI_Event
HCI_VS_MSFT_RSSI_Event указывает, что команда HCI_VS_MSFT_Monitor_Rssi завершена. Если параметр состояния равен нулю, команда завершилась, так как значение RSSI для удаленного устройства изменилось на значение за пределами указанного диапазона. Если параметр Status не является ненулевой, команда завершилась, так как значение RSSI подключения больше не может быть отслеживаемо.
Событие | Код события | Код события Майкрософт | Параметры события |
---|---|---|---|
HCI_VS_MSFT_RSSI_Event | 0xFF | 0x01 | Event_prefix, Microsoft_event_code, Статус Connection_Handle, RSSI |
Параметры_события
Event_prefix (размер переменной):
Ценность | Описание параметра |
---|---|
Префикс события | Префикс события, который помечает это событие как определяемое корпорацией Майкрософт. Размер и значение возвращаются командой HCI_VS_MSFT_Read_Supported_Features. |
Microsoft_event_code (1 октет):
Ценность | Описание параметра |
---|---|
0x01 | Код события для HCI_VS_MSFT_RSSI_Event. |
Состояние (1 октет):
Ценность | Описание параметра |
---|---|
0x00 | Успех. Значение RSSI подключения соответствует одному из следующих условий. Значение RSSI достигло или превысило RSSI_threshold_high. RSSI достиг или опустился ниже RSSI_threshold_low в течение RSSI_threshold_low_time_interval секунд. Срок действия RSSI_sampling_period истёк, и это событие было создано для уведомления хоста о значении RSSI. |
0x01 до 0xFF | Неудача. Значение RSSI подключения больше не может отслеживаться. Код ошибки обычно является одним из кодов, описывающих, почему базовое соединение ACL было потеряно. |
Connection_Handle (2 октета):
Ценность | Описание параметра |
---|---|
0xXXXX | Идентификатор соединения, для которого необходимо отслеживать RSSI. |
RSSI (1 октет):
Ценность | Описание параметра |
---|---|
0xXX | Значение RSSI, измеренное для соединения. Единица: dBm Диапазон BR/EDR: -128 до 127 (целое число со знаком) Диапазон LE: -127 до 20 (целое число со знаком) |
HCI_VS_MSFT_LE_Monitor_Device_Event
HCI_VS_MSFT_LE_Monitor_Device_Event указывает, что контроллер либо начал, либо остановил мониторинг устройства Bluetooth LE.
Если значение параметра Monitor_state равно 1, контроллер начал отслеживать устройство Bluetooth с указанным BD_ADDR. Если значение параметра Monitor_state равно 0, контроллер перестал отслеживать устройство Bluetooth с указанным BD_ADDR.
Событие | Код события | Код события Майкрософт | Параметры события |
---|---|---|---|
HCI_VS_MSFT_LE_Monitor_Device_Event | 0xFF | 0x02 | Event_prefix, Microsoft_event_code, Тип_адреса BD_ADDR, Monitor_handle, Состояние_монитора |
Контроллер не должен создавать HCI_VS_MSFT_LE_Monitor_Device_Event с параметром Monitor_state значение 0, если он еще не создал HCI_VS_MSFT_LE_Monitor_Device_Event с Monitor_state значение 1.
Параметры_события
Event_prefix (размер переменной):
Ценность | Описание параметра |
---|---|
Префикс события | Префикс события, который помечает это событие как определяемое корпорацией Майкрософт. Размер и значение возвращаются командой HCI_VS_MSFT_Read_Supported_Features. |
Microsoft_event_code (1 байт):
Ценность | Описание параметра |
---|---|
0x02 | Код события для HCI_VS_MSFT_LE_Monitor_Device_Event. |
Тип_адреса (1 октет)
Ценность | Описание параметра |
---|---|
0x00 | Общедоступный адрес устройства. |
0x01 | Случайный адрес устройства. |
0x02 до 0xFF | Зарезервированные значения для дальнейшего использования. |
BD_ADDR (6 октетов):
Ценность | Описание параметра |
---|---|
0xXXXXXXXXXXXXX | Адрес Bluetooth устройства. |
Monitor_handle (1 байт):
Ценность | Описание параметра |
---|---|
0xXX | Дескриптор фильтра, который был указан для команды HCI_VS_MSFT_LE_Monitor_Advertisement. |
Состояние_монитора (1 октет):
Ценность | Описание параметра |
---|---|
0x00 | Контроллер остановил мониторинг устройства, указанного BD_ADDR и Monitor_handle. |
0x01 | Контроллер начал отслеживать устройство, заданное параметрами BD_ADDR и Monitor_handle. |
Заданные корпорацией Майкрософт команды AVDTP HCI
Следующие команды AVDTP HCI обеспечивают поддержку разгрузки звуковой боковой полосы A2DP. Дополнительные сведения см. в разделе Разгрузка аудио боковой полосы A2DP.
Команды HCI AVDTP | Описание |
---|---|
HCI_VS_MSFT_Avdtp_Capabilities_Configuration | Настраивает интерфейс аудиопередачи и возвращает возможности кодека контроллера Bluetooth, который представляет собой список информационных блоков кодека. |
HCI_VS_MSFT_Avdtp_Open | Выделяет и настраивает ресурсы разгрузки AVDTP в контроллере. |
HCI_VS_MSFT_Avdtp_Start | Начинает потоковую передачу звука из аудиотранспорта на передаваемые пакеты мультимедиа AVDTP. |
HCI_VS_MSFT_Avdtp_Suspend | Останавливает процесс потоковой передачи, инициированный HCI_VS_MSFT_Avdtp_Start. |
HCI_VS_MSFT_Avdtp_Close | Освобождает ресурсы разгрузки AVDTP, выделенные с помощью HCI_VS_MSFT_Avdtp_Open. |
Возможности_Конфигурация_HCI_VS_MSFT_Avdtp
HCI_VS_MSFT_Avdtp_Capabilities_Configuration настраивает интерфейс аудиотранспорта и возвращает возможности кодека контроллера Bluetooth, представленные в виде списка блоков информации кодека. Каждый блок сведений кодека описывает один поддерживаемый кодек.
Ниже приведены массивы структур с переменной длиной, поэтому предполагается, что все эти параметры по-прежнему будут соответствовать одной команде HCI и одному соответствующему событию HCI.
Параметры_команды
External_codec_count (1 октет):
Value | описание параметра |
---|---|
0x00-0xFF | Количество блоков Codec_capability, идущих следом. |
External_codec_capability (переменная длина):
Value | описание параметра |
---|---|
Блок возможностей Codec | Блок сведений о возможностях кодека, как описано в сведениях о возможностях Codec. В этом разделе описывается один кодек, поддерживаемый устройством, подключенным к звуковому интерфейсу. |
Эта структура данных повторяется External_codec_count раз.
Audio_interface_parameter_count (1 октет):
Value | описание параметра |
---|---|
0x00-0xFF | Количество параметров Audio_interface_parameters, следующих далее. |
Audio_interface_parameter (переменная длина)
Value | описание параметра |
---|---|
Параметр звукового интерфейса | Параметр звукового интерфейса, как описано выше, задается устройством, подключенным к звуковому интерфейсу. |
Эта структура данных повторяется Audio_interface_parameter_count раз.
Параметры_возврата
Состояние (1 октет):
Value | описание параметра |
---|---|
0x00 | Команда завершилась успешно. |
0x01-0xFF | Не удалось выполнить команду. Дополнительные сведения см. в разделе "Коды ошибок" в спецификации Bluetooth Core. |
Subcommand_opcode _ (1 октет):
Value | описание параметра |
---|---|
0x07 | Код подкоманды для HCI_VS_MSFT_Avdtp_Capabilities_Configuration. |
Internal_codec_count (1 октет):
Value | описание параметра |
---|---|
0x00-0xFF | Количество блоков Internal_codec_capability, следующих дальше. |
Internal_codec_capability (переменная длина):
Value | описание параметра |
---|---|
Блок функций кодека | Блок информации о возможностях кодека, как описано в разделе — Разгрузка аудиосигнала побочного канала A2DP. В этом разделе описывается один кодек, поддерживаемый контроллером Bluetooth. |
Эта структура данных повторяется Internal_codec_count раз.
Количество_параметров_аудиоинтерфейса (1 октет):
Value | описание параметра |
---|---|
0x00-0xFF | Количество параметров Audio_interface, которые следуют за этим. |
Параметр_аудио_интерфейса (переменная длина)
Value | описание параметра |
---|---|
Параметр звукового интерфейса | Параметр звукового интерфейса, как описано выше. Программное обеспечение узла передает этот параметр устройству, подключенного к звуковому интерфейсу. |
Эта структура данных повторяется Audio_interface_parameter_count раз.
HCI_VS_MSFT_Avdtp_Open
Выделяет и настраивает ресурсы разгрузки AVDTP в контроллере.
Ниже приведены массивы структур с переменной длиной, поэтому предполагается, что все эти параметры по-прежнему будут соответствовать одной команде HCI и одному соответствующему событию HCI.
Параметры команды
Connection_handle (2 октета)
Value | описание параметра |
---|---|
0xXXXX | Идентифицирует канал L2CAP для медиапотока AVDTP, подключенный к удаленному устройству. |
L2cap_destination_cid (2 октета)
Value | описание параметра |
---|---|
0xXXXX | CID назначения L2CAP канала мультимедиа AVDTP |
L2cap_mtu (2 октета)
Value | описание параметра |
---|---|
0xXXXX | MTU канала L2CAP AVDTP для мультимедиа |
Настроенная_возможность_кодека (переменная длина):
Value | описание параметра |
---|---|
Блок возможностей Codec | Блок информации о возможностях кодека, как описано в разделе Выгрузка аудиосигнала A2DP. В этом разделе описывается кодек, настроенный для носителя AVDTP. |
Параметр_аудио_интерфейса_количество (1 октет):
Value | описание параметра |
---|---|
0x00-0xFF | Количество параметров интерфейса аудио, которые следуют. |
Параметр_аудиоинтерфейса (переменная длина)
Value | описание параметра |
---|---|
Параметр звукового интерфейса | Параметр звукового интерфейса, как описано выше. Устройство, подключенное к звуковому интерфейсу, указывает эти параметры для определенного экземпляра потока. |
Эта структура данных повторяется Audio_interface_parameter_count раз.
Возвращаемые_параметры
Состояние (1 октет):
Value | описание параметра |
---|---|
0x00 | Команда завершилась успешно. |
0x01-0xFF | Не удалось выполнить команду. Дополнительные сведения см. в разделе "Коды ошибок" в спецификации Bluetooth Core. |
Subcommand_opcode (1 октет):
Value | описание параметра |
---|---|
0x08 | Код операции подкоманды для HCI_VS_MSFT_Avdtp_Open. |
Avdtp_offload_handle (2 октета):
Value | описание параметра |
---|---|
0xXXXX | Определяет ресурс, выделенный для разгрузки потока. |
Количество_параметров_аудиоинтерфейса (1 октет):
Value | описание параметра |
---|---|
0x00-0xFF | Количество параметров аудио интерфейса, следующих за этим. |
Аудио_интерфейс_параметр (переменная длина)
Value | описание параметра |
---|---|
Параметр звукового интерфейса | Параметр звукового интерфейса, как описано выше. Программное обеспечение хоста передает этот параметр устройству, подключенному к аудиоинтерфейсу для экземпляра потока. |
Эта структура данных повторяется Audio_interface_parameter_count раз.
HCI_VS_MSFT_Avdtp_Start
Эта команда начинает потоковую передачу звука из аудиотранспорта на передаваемые пакеты мультимедиа AVDTP. После выполнения этой команды контроллер Bluetooth начинает следующее действие.
- Получает звуковые данные из аудиопередачи
- Если кодировщик находится в контроллере Bluetooth, кодирует данные, полученные от звукового транспорта, чтобы создать закодированные кадры.
- Если кодировщик находится в звуковом DSP, то он извлекает закодированные кадры из транспорта потока аудио данных.
- Собирает закодированные кадры в мультимедиа-пакеты AVDTP.
- Создает и передает пакеты мультимедиа AVDTP, содержащие данные мультимедиа
Командные_параметры
Avdtp_offload_handle (2 октета):
Value | описание параметра |
---|---|
0xXXXX | Определяет ресурс, выделенный для разгрузки потока. |
Параметры_возврата
Состояние (1 октет):
Value | описание параметра |
---|---|
0x00 | Команда завершилась успешно. |
0x01-0xFF | Не удалось выполнить команду. Дополнительные сведения см. в разделе "Коды ошибок" в спецификации Bluetooth Core. |
Subcommand_opcode (1 октет):
Value | описание параметра |
---|---|
0x09 | Код операции подкоманды для HCI_VS_MSFT_Avdtp_Start. |
HCI_VS_MSFT_Avdtp_Suspend
Останавливает потоковую передачу, инициированную HCI_VS_MSFT_Avdtp_Start.
Параметры_команды
Avdtp_offload_handle (2 октета):
Value | описание параметра |
---|---|
0xXXXX | Определяет ресурс, выделенный для разгрузки потока. |
параметры возврата
Состояние (1 октет):
Value | описание параметра |
---|---|
0x00 | Команда завершилась успешно. |
0x01-0xFF | Не удалось выполнить команду. Дополнительные сведения см. в разделе "Коды ошибок" в спецификации Bluetooth Core. |
Subcommand_opcode (1 октет):
Value | описание параметра |
---|---|
0x0A | Опкод подкоманды для HCI_VS_MSFT_Avdtp_Suspend. |
HCI_VS_MSFT_Avdtp_Close
Освобождает ресурсы разгрузки AVDTP, выделенные HCI_VS_MSFT_Avdtp_Open.
Параметры_команды
Avdtp_offload_handle (2 октета):
Value | описание параметра |
---|---|
0xXXXX | Примечание. Это значение больше не является допустимым после завершения этой команды. |
Возврат_параметров
Состояние (1 октет):
Value | описание параметра |
---|---|
0x00 | Команда завершилась успешно. |
0x01-0xFF | Не удалось выполнить команду. Дополнительные сведения см. в разделе "Коды ошибок" в спецификации Bluetooth Core. |
Код_подкоманды (1 октет):
Value | описание параметра |
---|---|
0x0B | Операционный код подкоманды для HCI_VS_MSFT_Avdtp_Close. |
Ценность | Описание параметра |
---|---|
0x00 | |
0x01 | Контроллер начал отслеживать устройство, указанное BD_ADDR и Monitor_handle. |
Приложение
В этом разделе содержатся примеры и схемы расширения Bluetooth HCI, определенные корпорацией Майкрософт.
Пример: Сопоставление шаблонов для HCI_VS_MSFT_LE_Monitor_Advertisement
В этом примере показана полученная команда HCI_VS_MSFT_LE_Monitor_Advertisement и оценки трех разных пакетов рекламы по параметрам команды.
Контроллер получает команду HCI_VS_MSFT_LE_Monitor_Advertisement, которая содержит следующие параметры из команды HCI_VS_MSFT_LE_Monitor_Advertisement.
Параметр | Ценность | Примечания. |
---|---|---|
Subcommand_opcode | 0x03 | Подкоманда opcode для HCI_VS_MSFT_LE_Monitor_Advertisement |
Порог уровня RSSI высокий | 0x01 | 1dB |
Порог_RSSI_низкий | 0xCE | -50dB |
RSSI_threshold_low_time_interval | 0x05 | 5 секунд |
RSSI_sampling_period | 0xFF | Выборка отсутствует |
Тип_условия | 0x01 | Состояние |
Условие | 0x02 | Необходимо сопоставить два шаблона. |
0x03 | Длина первого шаблона, включая тип AD и начальную позицию | |
0x01 | Тип AD | |
0x00 | Начальная позиция после типа AD | |
0x01 | Первый шаблон для сопоставления | |
0x06 | Длина второго шаблона, включая тип AD и начальную позицию | |
0xFF | Тип AD (данные производителя) | |
0x00 | Начальная позиция, следующая за типом AD | |
0x00 | Второй шаблон для сопоставления | |
0x06 | ||
0xFF | ||
0xFF |
Затем контроллер получает следующие пакеты рекламы.
Пакет рекламы [A]
0x02 0x01 0x01 0x07 0x09 0x54 0x61 0x62 0x6C 0x65 0x74 0x05 0xFF 0x00 0x06 0xFF 0xFF
Пакет рекламы [B]
0x02 0x01 0x01 0x07 0x09 0x54 0x61 0x62 0x6C 0x65 0x74 0x04 0xFF 0x00 0x06 0xFF
Пакет рекламы [C]
0x07 0x09 0x54 0x61 0x62 0x6C 0x65 0x74 0x05 0xFF 0x00 0x06 0xFF 0xFF
Пакет рекламы [D]
0x02 0x01 0x02 0x05 0xFF 0x00 0x06 0xFF 0x01
Оценка соответствия рекламного пакета [A]
Описание | Ценность |
---|---|
Тип AD первого шаблона для сопоставления | 0x01 |
Длина первого шаблона для сопоставления | 0x03 — 0x02 = байт 0x01 |
Шаблон, который должен соответствовать на позиции 0x00 для типа AD 0x01 | 0x01 |
Байты на позиции 0x00 для типа AD 0x01 | 0x01 (СОВПАДЕНИЕ!) |
Тип AD для сопоставления второго шаблона | 0xFF (данные, характерные для производителя) |
Длина второго шаблона для сопоставления | 0x06 — 0x02 = 0x04 байт |
Шаблон, соответствующий позиции 0x00 для типа AD 0xFF | 0x00 0x06 0xFF 0xFF |
Байты в позиции 0x00 для 0xFF типа AD | 0x00 0x06 0xFF 0xFF (СОВПАДЕНИЕ!) |
Вердикт: PASS (оба шаблона соответствуют)
Оценка соответствия пакету рекламы [B]
Описание | Ценность |
---|---|
Тип AD первого сопоставляемого шаблона | 0x01 |
Длина первого шаблона для сопоставления | 0x03 — 0x02 = байт 0x01 |
Шаблон, соответствующий по позиции 0x00 для типа AD 0x01 | 0x01 |
Байты на позиции 0x00 для типа AD 0x01 | 0x01 (MATCH!) |
Тип AD для второго сопоставляемого шаблона | 0xFF (специфические данные производителя) |
Длина второго шаблона для сопоставления | 0x06 — 0x02 = 0x04 байт |
Шаблон, соответствующий позиции 0x00 для типа AD с кодом 0xFF | 0x00 0x06 0xFF 0xFF |
Байты на позиции 0x00 для типа AD 0xFF | 0x00 0x06 0xFF (нет совпадения) |
Вердикт: PASS (совпадает только первый шаблон)
Оценка совпадения для пакета рекламы [C]
Описание | Ценность |
---|---|
Тип AD первого шаблона для сопоставления | 0x01 |
Длина первого шаблона для сопоставления | 0x03 — 0x02 = байт 0x01 |
Шаблон, соответствующий по позиции 0x00 для типа AD 0x01 | 0x01 |
Байты на позиции 0x00 для типа AD 0x01 | Неопределенный. В объявлении нет данных типа AD 0x01. |
Тип AD для сопоставления второго шаблона | 0xFF (специфические данные производителя) |
Длина второго шаблона для сопоставления | 0x06 — 0x02 = 0x04 байт |
Шаблон, соответствующий в позиции 0x00 для типа AD 0xFF | 0x00 0x06 0xFF 0xFF |
Байты на позиции 0x00 для типа AD с кодом 0xFF | 0x00 0x06 0xFF 0xFF (MATCH!) |
Вердикт: PASS (только второй шаблон совпадает)
Оценка соответствия для пакета рекламы [D]
Описание | Ценность |
---|---|
Тип AD первого шаблона, который необходимо сопоставить | 0x01 |
Длина первого шаблона для сопоставления | 0x03 — 0x02 = байт 0x01 |
Шаблон, который должен совпадать с позицией 0x00 для типа AD 0x01 | 0x01 |
Байты на позиции 0x00 для типа AD 0x01 | 0x02 (без соответствия) |
Тип AD для сопоставления второго шаблона | 0xFF (специфические данные производителя) |
Длина второго шаблона для сопоставления | 0x06 — 0x02 = 0x04 байт |
Шаблон, который соответствует позиции 0x00 для типа AD 0xFF | 0x00 0x06 0xFF 0xFF |
Байты на позиции 0x00 для типа AD 0xFF | 0x00 0x06 0xFF 0x01 (нет совпадения) |
Вердикт: FAIL (ни один шаблон не совпадает)
Пример: мониторинг рекламы
В этом примере показан мониторинг рекламы RSSI. Ниже показаны значения RSSI для полученных объявлений, которые соответствуют указанному условию.
Время (s) | RSSI (индикатор силы принимаемого сигнала) (дБ) |
---|---|
1 | -100 |
2 | -90 |
3 | -5 |
4 | -15 |
5 | -30 |
6 | -15 |
7 | -45 |
8 | -20 |
9 | -35 |
10 | -45 |
11 | -70 |
12 | -85 |
13 | -85 |
14 | -85 |
15 | -90 |
16 | -90 |
17 | -70 |
Параметр | Ценность |
---|---|
RSSI_threshold_high | -10dB |
Порог_RSSI_низкий | -80dB |
RSSI_threshold_low_time_interval | 3 секунды |
RSSI_sampling_period | 2 секунды |
Реклама RSSI больше, чем RSSI_threshold_high за раз 3. Периодический таймер выборки начинается с 3. Каждые 2 секунды срок действия таймера истекает, а среднее значение RSSI полученного объявления распространяется на стек.
Когда срок действия периодического таймера истекает в момент времени 5, среднее значение RSSI объявления, полученное в течение этого времени (-23dB), передается в стек.
Когда периодический таймер истекает в время 13, среднее значение RSSI рекламных сообщений, полученное в течение этого периода, ниже RSSI_threshold_low (-80dB). Среднее значение RSSI рекламы (-85 dB) должно передаваться на хост.
Когда в момент 15 истекает срок действия RSSI_threshold_low_time_interval, реклама распространяется на хост с RSSI -85dB. В этом примере дополнительные объявления больше не отправляются на хост.
Пример. Мониторинг объявлений BAP с устройства
Будучи связанным с акцептором CAP, но не подключенным, узел может отслеживать объявления BAP с этого устройства.
Параметр | Ценность |
---|---|
Subcommand_opcode_v2 | 0x0F |
Пороговое значение RSSI (Received Signal Strength Indicator)_высокое | -127 |
Порог_RSSI_низкий | -127 |
пороговое_значение_RSSI_низкий_интервал_времени | 0x05 |
RSSI_период_выборки | 0x00 |
Настройки_монитора | Бит 0 установлен; Бит 1 установлен, если устройство выдало IRK |
Параметры фильтрации отчётов по рекламе | Биты 0, 1 и 2 установлены |
Адрес_устройства_партнёра | <адрес> |
Тип_адреса_устройства_партнёра | <типа адреса> |
Peer_device_IRK | <IRK, если бит 1 установлен> |
Тип_условия | 0x01 |
Количество_шаблонов | 0x01 |
Шаблон_данные | 0x04 (длина) 0x16 (данные службы — 16-разрядный UUID) 0x00 (начальный байт) 0x4E (низкий байт ASCS UUID) 0x18 (высокий байт UUID ASCS) |
Пример. Мониторинг объявлений CAP с устройства
Хотя хост связан с командиром CAP, но не подключён, он может отслеживать объявления CAP с этого устройства.
Параметр | Ценность |
---|---|
Subcommand_opcode_v2 | 0x0F |
RSSI_порог_высокий | -127 |
Порог_RSSI_низкий | -127 |
интервал времени низкого порога RSSI | 0x05 |
Период выборки RSSI | 0x00 |
Параметры_монитора | Бит 0 установлен; Бит 1 установлен, если устройство распространило IRK |
Опции_фильтрации_отчета_о_рекламе | Биты 0, 1 и 2 включены |
Адрес_устройства_равного_узла | <адрес> |
Тип_адреса_устройства_партнера | <типа адреса> |
Peer_device_IRK | <IRK, если установлен бит 1> |
Тип_условия | 0x01 |
Количество_шаблонов | 0x01 |
Данные_шаблона | 0x04 (длина) 0x16 (данные службы — 16-разрядный UUID) 0x00 (начальный байт) 0x53 (низкий байт CAS UUID) 0x18 (высокий байт CAS UUID) |
Блок-схема: реклама и фильтрация по белому списку фильтров
Эта блок-схема демонстрирует пример реализации контроллера для фильтрации рекламы и фильтрации на основе списка разрешений при получении рекламы.
Контроллер может реализовать эту логику по-другому, если узел уведомляется о объявлении или HCI_VS_MSFT_LE_Monitor_Device_Event, как указано блок-схемой.
Схема последовательности: распространение ответа сканирования, связанного с объявлением
Схема последовательности: распространение ответа сканирования, связанного с рекламным объявлением
На этой диаграмме последовательности показан ответ на распространённое сканирование, который связан с рекламой, удовлетворяющей фильтру объявлений при включённом активном сканировании. На этой схеме показана только ожидаемая последовательность событий между контроллером и узлом, а события между контроллером и определенным устройством не отображаются. Предположим, что есть реклама A, которая удовлетворяет фильтру рекламы, и объявление B, которая не удовлетворяет фильтру рекламы.