Compartir a través de


Extensiones HCI Bluetooth definidas por Microsoft

La interfaz del controlador de host de Bluetooth (HCI) especifica todas las interacciones entre un host y un controlador de radio Bluetooth. Las especificaciones Bluetooth permiten el uso de comandos y eventos HCI definidos por el proveedor para posibilitar una interacción no estandarizada entre hosts y controladores. Microsoft define los comandos y eventos de HCI específicos del proveedor que consume Windows. Los implementadores de controladores Bluetooth pueden utilizar estas extensiones para implementar funciones especiales.

Requisitos

Los comandos HCI Bluetooth se identifican mediante un código de comando de 16 bits. La organización Bluetooth define valores en el rango de 0x0000 a 0xFBFF. Los proveedores definen valores en el rango de 0xFC00 a 0xFFFF, lo que permite 1024 códigos de comando diferentes asignados por el proveedor.

El proveedor debe elegir el valor del código de comando definido por Microsoft. Microsoft no puede elegir un código de comando y suponer que ningún otro proveedor usa el código para un fin conflictivo. No es seguro emitir un comando específico de un proveedor y depender de que el controlador rechace el comando si no lo entiende. El controlador podría interpretar el comando como una operación destructiva, como actualizar el firmware del controlador.

El vendedor debe comunicar el valor elegido a través de un método distinto del controlador. Microsoft no especifica cómo obtener el código elegido.

Notificación a la pila Bluetooth de Windows del código de comando específico del proveedor

La pila de Bluetooth de Windows lee el código de comando específico del proveedor de una clave del registro, VsMsftOpCode.

La clave de registro VsMsftOpCode tiene un tipo REG_DWORD y los datos de la clave son el código de operación específico del proveedor.

Para especificar el código operativo específico del fabricante, use la directiva AddReg de la sección DDInstall.HW del archivo INF del controlador. La sección para agregar registro debe contener:

HKR,,"VsMsftOpCode",0x00010001,<Vendor Specific Opcode>

Ejemplo:

[radio.NTamd64.HW]
AddReg=radio.NTamd64.HW.AddReg
[radio.NTamd64.HW.AddReg]
HKR,,"VsMsftOpCode",0x00010001,<Vendor Specific Opcode>

Comandos HCI definidos por Microsoft

Comandos HCI Descripción
HCI_VS_MSFT_Read_Supported_Features Proporciona un mapa de bits que describe las características definidas por Microsoft que admite el controlador y especifica el prefijo de los eventos definidos por Microsoft que devuelve el controlador.
HCI_VS_MSFT_Monitor_Rssi Solicita que el controlador comience a supervisar el RSSI del vínculo medido para una conexión especificada, y genera un evento cuando el RSSI de vínculo medido de la conexión sale de los límites especificados.
HCI_VS_MSFT_Cancel_Monitor_Rssi Cancela un comando HCI_VS_MSFT_Monitor_Rssi emitido anteriormente.
HCI_VS_MSFT_LE_Monitor_Advertisement Solicita que el controlador comience a supervisar anuncios que se encuentren dentro del rango RSSI especificado y que también satisfagan otros requisitos.
HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement Cancela un comando HCI_VS_MSFT_LE_Monitor_Advertisement emitido anteriormente.
HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable Establece el estado de los filtros de anuncios.
HCI_VS_MSFT_Read_Absolute_RSSI Lee del controlador el valor absoluto de la indicación de intensidad de señal recibida (RSSI) para una conexión BR/EDR.

Comandos y subcomandos de HCI definidos por Microsoft

El controlador entiende que solo hay un comando HCI específico de Microsoft. El conjunto de comandos específico de Microsoft se extiende mediante un código de operación. El primer parámetro de comando para el comando HCI definido por Microsoft es un código de operación que especifica el subcomando.

Los controladores deben ser compatibles con HCI_VS_MSFT_Read_Supported_Features para admitir cualquier otro subcomando de Microsoft HCI. La compatibilidad con otros comandos es opcional y depende de los valores devueltos por HCI_VS_MSFT_Read_Supported_Features. Windows no envía ningún subcomando definido por Microsoft a menos que el controlador indique que admite el subcomando mediante una respuesta a HCI_VS_MSFT_Read_Supported_Features.

HCI_VS_MSFT_Read_Supported_Features

HCI_VS_MSFT_Read_Supported_Features proporciona un mapa de bits que describe qué características definidas por Microsoft admite el controlador y especifica el prefijo de los eventos definidos por Microsoft que devuelve el controlador.

El controlador siempre completará este comando rápidamente con un evento de Command Completed.

Get-Help Código Parámetros de comando Parámetros de devolución
HCI_VS_MSFT_Read_Supported_Features Código base elegido Subcommand_opcode Status,
Subcommand_opcode,
Supported_features,
Microsoft_event_prefix_length,
Microsoft_event_prefix

Command_parameters

Subcommand_opcode (1 octeto):

Valor Descripción de los parámetros
0x00 Código de operación de subcomando para HCI_VS_MSFT_Read_Supported_Features.

Return_parameters

Status (1 octeto):

Valor Descripción de los parámetros
0x00 El comando se ha ejecutado correctamente.
0x01 a 0xFF Error en el comando. Consulte Códigos de error en la especificación de Bluetooth Core para obtener más información.

Subcommand_opcode (1 octeto):

Valor Descripción de los parámetros
0x00 Código de operación de subcomando para HCI_VS_MSFT_Read_Supported_Features.

Supported_features (8 octetos):

Valor Descripción de los parámetros
0x00000000 00000001 El controlador es compatible con la característica de supervisión RSSI para las conexiones BR/EDR. Además, el controlador admite HCI_VS_MSFT_Read_Absolute_RSSI para leer la métrica RSSI absoluta de una conexión BR/EDR.
0x00000000 00000002 El controlador admite la característica de supervisión RSSI para las conexiones LE.
0x00000000 00000004 El controlador admite la supervisión RSSI de anuncios heredados de LE.
0x00000000 00000008 El controlador admite la supervisión de publicidad de los anuncios heredados de LE.
0x00000000 00000010 El controlador admite la verificación de la validez de las coordenadas X e Y públicas en la curva durante el proceso de emparejamiento Secure Simple para P-192 y P-256.
Para obtener más información, consulte Bluetooth Core Specification Erratum 10734.
0x00000000 00000020 El controlador admite la supervisión continua de la publicidad de los anuncios LE realizados simultáneamente con otras actividades de radio, mediante HCI_VS_MSFT_LE_Monitor_Advertisement [v1].
0x00000000 00000040 Reservado.
0x00000000 00000080 El controlador admite la descarga AVDTP y los comandos HCI_VS_MSFT_Avdtp_* descritos en este documento.
0x00000000 00000100 Reservado.
0x00000000 00000200 Reservado.
0x00000000 00000400 El controlador admite HCI_VS_MSFT_LE_Monitor_Advertisement [v2]. Además, el controlador admite la supervisión continua de la publicidad de los anuncios LE realizados simultáneamente con otras actividades de radio, mediante HCI_VS_MSFT_LE_Monitor_Advertisement [v2].
0xFFFFFFFF FFFFFF00 Bits reservados para la definición futura. Debe ser cero.

Microsoft_event_prefix_length (1 octeto):

Valor Descripción de los parámetros
0x00 a 0x20 Número de bytes en el campo de prefijo de evento de Microsoft tal como se especifica en el Microsoft_event_prefix devuelto. Este es el número de bytes de información constante al principio de cada evento HCI especificado por Microsoft.

Microsoft_event_prefix (longitud variable):

Valor Descripción de los parámetros
Valor de prefijo de evento Información constante que se espera al principio de cada evento definido por Microsoft. Esta información se usa para distinguir los eventos definidos por Microsoft de otros eventos personalizados.

HCI_VS_MSFT_Monitor_Rssi

HCI_VS_MSFT_Monitor_Rssi solicita que el controlador comience a supervisar el RSSI de vínculo medido para una conexión especificada y genera un evento cuando el RSSI de vínculo medido de la conexión sale de los límites especificados.

Get-Help Código Parámetros de comando Parámetros de devolución
HCI_VS_MSFT_Monitor_Rssi Código base elegido Subcommand_opcode,
Connection_Handle,
RSSI_threshold_high,
RSSI_threshold_low,
RSSI_threshold_low_time_interval,
RSSI_sampling_period
Status,
Subcommand_opcode

El controlador notificará al host del valor RSSI con un evento generado periódicamente (basado en el RSSI_sampling_period). El vínculo medido RSSI será el valor absoluto de la intensidad de señal del receptor en dBm para la conexión BR/EDR.

En respuesta a un comando HCI_VS_MSFT_Monitor_Rssi, el controlador generará un evento Command Complete con un estado igual a cero si el controlador puede comenzar la supervisión, o un estado distinto de cero en caso contrario. Si el valor de estado es distinto de cero, el controlador no generará un HCI_VS_MSFT_Rssi_Event en respuesta a este comando.

El controlador rechazará el comando si otro comando de HCI_VS_MSFT_Monitor_Rssi con el mismo Connection_Handle está pendiente o si el identificador de conexión especificado no es válido. El controlador también puede rechazar el comando por otros motivos, como el agotamiento de los recursos.

Este diagrama de estado muestra los estados de transición en el controlador cuando se supervisa RSSI para una conexión.

El diagrama de estado muestra los estados de transición en el controlador cuando se supervisa RSSI para una conexión.

El controlador generará un HCI_VS_MSFT_Rssi_Event cuando el RSSI recibido sea mayor o igual que el RSSI_threshold_high especificado. Después de que se haya generado este evento, el controlador no generará un nuevo HCI_VS_MSFT_Rssi_Event para especificar que se ha superado el RSSI_threshold_high hasta que genere un HCI_VS_MSFT_Rssi_Event que especifique que el RSSI ha caído por debajo de RSSI_threshold_low.

El controlador generará un HCI_VS_MSFT_Rssi_Event cuando el RSSI recibido sea igual o inferior al RSSI_threshold_low especificado durante el RSSI_threshold_low_time_interval. Una vez generado este evento, el controlador no generará un nuevo HCI_VS_MSFT_Rssi_Event para especificar que el RSSI ha caído por debajo del RSSI_threshold_low hasta que se genere un evento HCI_VS_MSFT_Rssi_Event para especificar que se ha alcanzado o superado el RSSI_threshold_high.

Si el RSSI_sampling_period está entre 0x01 y 0xFE, el controlador generará un HCI_VS_MSFT_Rssi_Event periódicamente cada RSSI_sampling_period. Este evento contendrá el promedio del RSSI calculado sobre el RSSI_sampling_period. Si el RSSI_sampling_period es 0x00 o 0xFF, el controlador no notificará al anfitrión periódicamente con HCI_VS_MSFT_Rssi_Event.

Command_parameters

Subcommand_opcode (1 octeto):

Valor Descripción de los parámetros
0x01 Código de operación de subcomando para HCI_VS_MSFT_Monitor_Rssi.

Connection_Handle (2 octetos):

Valor Descripción de los parámetros
0xXXXX Identificador de la conexión cuyo RSSI debe supervisarse.

RSSI_threshold_high (1 octeto):

Valor Descripción de los parámetros
0xXX Valor RSSI máximo esperado. El controlador genera un evento si el RSSI observado pasa a ser mayor o igual que este valor.
Unidad: dBm
Intervalo BR/EDR: -128 a 127 (entero con signo)
Intervalo LE: -127 a 20 (entero con signo)

RSSI_threshold_low (1 octeto):

Valor Descripción de los parámetros
0xXX Valor RSSI mínimo esperado. El controlador genera un evento si el RSSI observado pasa a ser menor o igual que este valor.
Unidad: dBm
Intervalo obligatorio BR/EDR: -128 a 127 (entero con signo)
Intervalo obligatorio LE: -127 a 20 (entero con signo)

RSSI_threshold_low_time_interval (1 octeto):

Valor Descripción de los parámetros
0x00 Valor reservado.
N = 0xXX Tiempo en segundos en el que el valor RSSI debe estar por debajo de RSSI_threshold_low antes de que se genere un HCI_VS_MSFT_Rssi_Event.
Período de tiempo = N * 1 segundo
Intervalo obligatorio: 0x01 a 0x3C

RSSI_sampling_period (1 octeto):

Valor Descripción de los parámetros
0x00 Valor reservado.
N = 0xXX Intervalo de muestreo en milisegundos.
Período de tiempo = N * 100 milisegundos
Intervalo obligatorio: 0x01 a 0xFE
0xFF Valor reservado.

Return_parameters

Status (1 octeto):

Valor Descripción de los parámetros
0x00 El comando se ha ejecutado correctamente.
0x01 a 0xFF Error en el comando. Consulte Códigos de error en la especificación de Bluetooth Core para obtener más información.
0x07 El controlador devolverá la capacidad de memoria superada si no tiene suficiente memoria para procesar el comando.
Código de error Error en el comando. Consulte Códigos de error en la especificación de Bluetooth Core para obtener más información.

Subcommand_opcode (1 octeto):

Valor Descripción de los parámetros
0x01 Código de operación de subcomando para HCI_VS_MSFT_Monitor_Rssi.

Eventos generados a menos que se enmascaren

El controlador generará rápidamente un evento Command Complete cuando se recibe el comando HCI_VS_MSFT_Monitor_Rssi. Si el evento Command Complete devuelve un estado 0, el controlador generará un HCI_VS_MSFT_Rssi_Event cuando se produzca una de las condiciones siguientes.

  • El RSSI observado para el dispositivo a través de RSSI_threshold_low_time_interval se convierte en igual o menor que el valor de RSSI_threshold_low especificado.
  • El RSSI observado para el dispositivo se vuelve mayor o igual que el valor de RSSI_threshold_high especificado.
  • RSSI_sampling_period es válido y expira el período de muestreo.

El controlador debe realizar toda la limpieza necesaria si se pierde la conectividad con el dispositivo especificado. En este caso, no se envía un comando HCI_VS_MSFT_Cancel_Monitor_Rssi al controlador.

HCI_VS_MSFT_Cancel_Monitor_Rssi

HCI_VS_MSFT_Cancel_Monitor_Rssi cancela un comando de HCI_VS_MSFT_Monitor_Rssi emitido anteriormente. El controlador generará rápidamente un evento Command Completed en respuesta a este comando.

Get-Help Código Parámetros de comando Parámetros de devolución
HCI_VS_MSFT_Cancel_Monitor_Rssi Código base elegido Subcommand_opcode,
Connection_Handle
Status,
Subcommand_opcode

Command_parameters

Subcommand_opcode (1 octeto):

Valor Descripción de los parámetros
0x02 Código de operación de subcomando para HCI_VS_MSFT_Cancel_Monitor_Rssi.

Connection_Handle (2 octetos):

Valor Descripción de los parámetros
0xXXXX Identificador de la conexión cuyo RSSI debe cancelarse.

Return_parameters

Status (1 octeto):

Valor Descripción de los parámetros
0x00 El comando se ha ejecutado correctamente.
0x01 a 0xFF Error en el comando. Consulte Códigos de error en la especificación de Bluetooth Core para obtener más información.

Subcommand_opcode (1 octeto):

Valor Descripción de los parámetros
0x02 Código de operación de subcomando para HCI_VS_MSFT_Cancel_Monitor_Rssi.

Eventos generados a menos que se enmascaren

El controlador generará un evento Command Complete cuando se reciba el comando HCI_VS_MSFT_Cancel_Monitor_RSSI.

HCI_VS_MSFT_LE_Monitor_Advertisement

HCI_VS_MSFT_LE_Monitor_Advertisement solicita que el controlador comience a supervisar los anuncios que se encuentren dentro del intervalo RSSI especificado y que también cumplan una de las siguientes condiciones:

  • Se puede hacer coincidir un patrón especificado con el paquete de publicidad recibido.
  • Se puede hacer coincidir un UUID especificado con el paquete de publicidad recibido.
  • Se puede utilizar una Clave de Resolución de Identidad (IRK) especificada para resolver la dirección privada del dispositivo del que procede el paquete de publicidad.
  • Una dirección Bluetooth especificada puede coincidir con el paquete de publicidad recibido.

El comando v2 permite al Host combinar algunas de las condiciones anteriores con opciones que gobiernan el origen del anuncio y el objetivo de un anuncio dirigido, para refinar aún más los anuncios que se supervisan. El comando v2 también permite al Host filtrar los anuncios supervisados que hacen que el controlador genere informes de anuncios.

Get-Help Código Parámetros de comando Parámetros de devolución
HCI_VS_MSFT_LE_Monitor_Advertisement [v2] Código base elegido Subcommand_opcode_v2,
RSSI_threshold_high,
RSSI_threshold_low,
RSSI_threshold_low_time_interval,
RSSI_sampling_period,
Monitor_options,
Advertisement_report_filtering_options,
Peer_device_address,
Peer_device_address_type,
Peer_device_IRK,
Condition_type,
<Parámetros Condition>
Status,
Subcommand_opcode,
Monitor_Handle
HCI_VS_MSFT_LE_Monitor_Advertisement [v1] Código base elegido Subcommand_opcode_v1,
RSSI_threshold_high,
RSSI_threshold_low,
RSSI_threshold_low_time_interval,
RSSI_sampling_period,
Condition_type,
<Parámetros Condition>
Status,
Subcommand_opcode,
Monitor_Handle

El controlador generará un evento Command Complete en respuesta a este comando. El valor de estado debe ser cero si el controlador puede iniciar la supervisión, o un estado distinto de cero en caso contrario. Si el controlador no admite la supervisión RSSI de anuncios LE, omitirá los valores de parámetro RSSI_threshold_high, RSSI_threshold_low, RSSI_threshold_low_time_interval y RSSI_sampling_period.

En este diagrama de estado se muestran los estados de transición en el controlador al supervisar RSSI para un anuncio.

Diagrama de estado que muestra los estados de transición para HCI_VS_MSFT_LE_Monitor_Advertisement.

El controlador comenzará a supervisar un anuncio solo cuando el RSSI recibido sea mayor o igual que RSSI_threshold_high para un dispositivo determinado y la coincidencia de Monitor_options (consulte a continuación). El controlador generará un HCI_VS_MSFT_LE_Monitor_Device_Event con Monitor_state establecido en 1 y Monitor_handle establecido en el controlador para esta Condition, para notificar al host que el controlador está supervisando este dispositivo en particular para la Condition. Además, el Controlador propagará el primer informe de anuncio de un anuncio supervisado al Host solo cuando Advertisement_report_filter_options coincida (consulte a continuación).

Monitor_options de un filtro se considera una coincidencia en función de la siguiente lógica (en pseudocódigo):

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)

Y para un anuncio supervisado, Advertisement_report_filter_options se considera una coincidencia basada en la siguiente lógica (en pseudocódigo):

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)

El controlador dejará de supervisar la Condition si el RSSI de los anuncios recibidos es igual o inferior a RSSI_threshold_low durante RSSI_threshold_low_interval para el dispositivo concreto. El controlador generará un HCI_VS_MSFT_LE_Monitor_Device_Event con Monitor_state para notificar al host que el controlador ha dejado de supervisar el dispositivo determinado para la Condition. Después de que el controlador especifique el HCI_VS_MSFT_LE_Monitor_Device_Event con Monitor_state establecido en 0, el controlador no permitirá que fluyan más paquetes de anuncios al host para el dispositivo hasta que el controlador haya notificado al host que el RSSI para el dispositivo en particular ha aumentado hasta o por encima de RSSI_threshold_high para el dispositivo en particular de la Condition.

Además, el controlador generará un HCI_VS_MSFT_LE_Monitor_Device_Event con Monitor_state establecido en 0 para notificar al host que el controlador ha dejado de supervisar el dispositivo para la Condition si el RSSI_threshold_low_time_interval especificado expira sin recibir ningún paquete de publicidad del dispositivo. Si el controlador supervisa un dispositivo para una condición determinada, las siguientes declaraciones son ciertas.

Si el controlador admite la supervisión RSSI de anuncios extendidos LE sin muestreo, el controlador propagará paquetes de anuncios anónimos al host si el valor RSSI del paquete es mayor o igual que RSSI_threshold_high. No se realizará el seguimiento de anuncios anónimos y no se generará el evento HCI_VS_MSFT_LE_Monitor_Device_Event.

Si el controlador admite la supervisión RSSI de anuncios LE sin muestreo, el controlador generará un informe de publicidad truncado en el caso de que el fragmento o fragmentos recibidos del anuncio coincidan, pero no se haya recibido correctamente el anuncio completo.

El controlador admitirá un mínimo de 30 Monitor_handles simultáneos, un mínimo de 30 dispositivos de los que se hace seguimiento simultáneos y un mínimo de 20 anuncios duplicados de los que se hace seguimiento simultáneos. El Controlador también podrá realizar una exploración LE continua en un ciclo de trabajo del 10 %.

Si la resolución de direcciones está activada en el controlador y el host pretende supervisar un dispositivo remoto con su IRK almacenado correctamente en la lista de resolución del controlador, el host deberá proporcionar los parámetros Peer_Identity_Address y Peer_Identity_Address_Type de la entrada de la lista de resolución del dispositivo remoto como los parámetros Peer_device_address y Peer_device_address_type, respectivamente.

RSSI_sampling_period Anuncios heredados Anuncios extendidos (no anónimos) Anuncios extendidos (anónimos)
0x00 El controlador propagará todos los paquetes de anuncios recibidos al host del dispositivo para esta Condition a menos que el controlador haya recibido previamente un comando HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable con Enable establecido en 0x00. El controlador propagará un paquete de publicidad al host aunque el RSSI recibido sea menor o igual que RSSI_threshold_low siempre que RSSI_threshold_low_time_interval no haya expirado para el dispositivo en particular de esta Condition. El valor RSSI de este paquete de publicidad será el valor RSSI del anuncio recibido. Si el controlador admite la supervisión RSSI de anuncios extendidos de LE sin muestreo, el mismo comportamiento que la columna Anuncios heredados excepto que un paquete de publicidad se define como todas las PDU de la cadena de publicidad. Si el controlador admite la supervisión de RSSI de anuncios LE ampliados sin muestreo, el controlador propagará todos los paquetes de publicidad recibidos al host para el dispositivo para esta Condition a menos que el controlador haya recibido previamente un comando HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable con Enable establecido en 0x00.
0x01 a 0xFE El controlador propagará los paquetes de anuncios heredados al host cada RSSI_sampling_period especificado a menos que el controlador haya recibido previamente un comando HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable con Enable establecido en 0x00. El valor RSSI especificado para el anuncio será la media del valor RSSI recibido durante este intervalo de muestreo. Si el controlador no recibe ningún paquete de publicidad durante el período de muestreo, no propagará ningún anuncio al host. Es posible que RSSI_sampling_period sea menor que RSSI_threshold_low_time_interval y todos los anuncios recibidos durante RSSI_sampling_period tengan RSSI por debajo de RSSI_threshold_low. El controlador seguirá propagando el anuncio con la media del valor RSSI recibido durante este intervalo de muestreo. Si el controlador admite la supervisión RSSI de anuncios extendidos LE sin muestreo, el controlador se comportará como si RSSI_sampling_period fuera 0x00. Si el controlador admite la supervisión RSSI de anuncios extendidos LE sin muestreo, el controlador se comportará como si RSSI_sampling_period fuera 0x00.
0xFF El controlador no permitirá que fluyan más paquetes de anuncios al host del dispositivo para la Condition hasta que el controlador haya notificado al host que el RSSI del dispositivo en particular ha caído por debajo de RSSI_threshold_low para RSSI_threshold_low_time_interval para el dispositivo en particular de esta Condition. Esta notificación se realiza mediante la generación de un HCI_VS_MSFT_LE_Monitor_Device_Event con Monitor_state establecido en 0. Si el controlador admite la supervisión RSSI de anuncios extendidos de LE sin muestreo, el mismo comportamiento que la columna Anuncios heredados. Si el controlador admite la supervisión RSSI de anuncios extendidos LE sin muestreo, el controlador se comportará como si RSSI_sampling_period fuera 0x00.

Si el controlador ha recibido previamente un comando HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable con Enable establecido en 0x00, el temporizador del período de muestreo no se detendrá. Consulte el ejemplo: HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable sobre filtros con período de muestreo para obtener más información. Si el controlador recibe paquetes de anuncios no duplicados del mismo dispositivo, comparará cada paquete de publicidad con las condiciones almacenadas en el controlador.

Si el controlador recibe un paquete de publicidad de un dispositivo que coincide con múltiples Condiciones, entonces el controlador generará un HCI_VS_MSFT_LE_Monitor_Device_Event para cada Condition que coincida, con Monitor_handle establecido en la Condition que coincida.

Si el controlador no puede supervisar los valores RSSI de todos los dispositivos del intervalo que coinciden con la Condition, mantiene la supervisión de tantos dispositivos como pueda. La decisión sobre qué dispositivos deben supervisarse dependerá de los valores RSSI de los anuncios recibidos. El controlador supervisará los dispositivos con mayor intensidad de señal recibida.

Si el controlador ha notificado al host sobre un dispositivo en particular (A) y está supervisando dispositivos a la máxima capacidad de hardware, y si otro dispositivo (B) entra en el rango con un valor RSSI más alto, entonces el controlador notificará al host que ha dejado de supervisar el dispositivo (A), lo que genera un HCI_VS_MSFT_LE_Monitor_Device_Event con Monitor_state establecido en 0. El controlador también generará un HCI_VS_MSFT_LE_Monitor_Device_Event con Monitor_state establecido en 1 para notificar al host que el dispositivo (B) se está supervisando.

Parámetros Condition Type y Condition

El parámetro Condition_type especifica si el parámetro Condition especifica un patrón, UUID, IRK o BD_ADDR.

Si el parámetro Condition_type especifica un patrón, la Condition contiene dos secciones que incluyen el número de patrones presentes en la Condition y los datos del patrón.

Diagrama que ilustra el diseño de datos de condición de patrón para HCI_VS_MSFT_LE_Monitor_Advertisement.

Número de patrones especifica el número de patrones que deben coincidir.

Datos del patrón tiene el siguiente formato.

  • Longitud especifica que la longitud de este patrón incluye el tipo de datos y el byte inicial del patrón.
  • Tipo AD especifica el campo Tipo AD.
  • Inicio de patrón especifica la posición del byte inicial del patrón inmediatamente posterior a Tipo AD.
  • El Patrón tiene un tamaño de (Longitud - 0x2) y es el patrón que debe coincidir con el Tipo AD especificado dentro del paquete de publicidad desde el byte inicial especificado.

Si se especifican varios patrones, el controlador se asegurará de que al menos uno de ellos coincida con el anuncio recibido.

Si el controlador admite la supervisión RSSI de anuncios ampliados LE sin muestreo:

  • El controlador buscará el patrón en los primeros 251 octetos de los datos de publicidad del host y podrá buscar en los octetos restantes de los datos de publicidad del host. Si la sección AD se extiende más allá de los primeros 251 octetos de los datos de publicidad del host, el controlador buscará el patrón dentro de la parte de la sección AD que se encuentra en los primeros 251 octetos de los datos de publicidad del host y podrá buscar en cualquier octeto restante de los datos de publicidad del host. Nota: en función de la fragmentación por parte del anunciante, los primeros 251 octetos de los datos de publicidad del host pueden extenderse a través de AdvData de varias PTU de publicidad. Los detectores deben tener cuidado de limitar el número de AuxPtrs que siguen, para evitar seguir cadenas excesivamente largas de PDU.

  • El controlador realizará un seguimiento basado en una dirección por dispositivo y por conjunto de anuncios. El controlador propagará un HCI_VS_MSFT_LE_Monitor_Device_Event para cada conjunto de publicidad que coincida con el patrón incluso si el anuncio procede de la misma dirección del dispositivo.

Si el parámetro Condition_type especifica un UUID, el parámetro Condition contiene un tipo UUID y un UUID. El tipo de UUID especifica si el UUID es de 16, 32 o 128 bits. El controlador analizará el UUID de servicio del paquete de publicidad para comprobar si existe el UUID especificado. Si el tipo UUID se define como 0x01, el controlador analizará la lista incompleta de UUID de servicio de 16 bits y la lista completa de UUID de servicio de 16 bits especificados en el tipo de AD de UUID de servicio. Si el tipo UUID se define como 0x02, el controlador analizará la lista incompleta de UUID de servicio de 32 bits y la lista completa de UUID de servicio de 32 bits especificados en el tipo de AD de UUID de servicio. Si el tipo UUID especificado es 0x03, el controlador analizará la lista incompleta de UUID de servicio de 128 bits y la lista completa de UUID de servicio de 128 bits especificados en el tipo de AD de UUID de servicio.

Si el controlador admite la supervisión RSSI de anuncios ampliados LE sin muestreo:

  • El controlador buscará el UUID de servicio en los primeros 251 octetos de los datos de publicidad del host y podrá buscar en los octetos restantes de los datos de publicidad del host. Si la sección AD se extiende más allá de los primeros 251 octetos de los datos de publicidad del host, el controlador buscará el UUID de servicio dentro de la parte de la sección AD que se encuentra en los primeros 251 octetos de los datos de publicidad del host y podrá buscar en cualquier octeto restante de los datos de publicidad del host. Nota: en función de la fragmentación por parte del anunciante, los primeros 251 octetos de los datos de publicidad del host pueden extenderse por AdvData de varias PTU de publicidad. Los detectores deben tener cuidado de limitar el número de AuxPtrs que siguen, para evitar seguir cadenas excesivamente largas de PDU.

  • El controlador realizará un seguimiento basado en una dirección por dispositivo y por conjunto de anuncios. El controlador propagará un HCI_VS_MSFT_LE_Monitor_Device_Event para cada conjunto de publicidad que coincida con el UUID de servicio incluso si el anuncio procede del mismo dispositivo.

Si el parámetro Condition_type especifica un IRK, el parámetro Condition contiene el IRK.

Si el parámetro Condition_type especifica una dirección Bluetooth, el parámetro Condition contiene el tipo de dirección y BD_ADDR.

El controlador mantendrá la supervisión en función de las condiciones, incluso cuando la exploración (Activa o Pasiva) esté activada. Cuando la exploración activa está habilitada, la respuesta de exploración para un anuncio que coincida con un filtro se propagará al host.

Si el controlador recibe un comando HCI_VS_MSFT_LE_Monitor_Advertisement cuando los filtros están deshabilitados (debido a un comando de HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable recibido previamente con Enable establecido en 0x00), el controlador aceptará el comando si puede, pero establézcalo en un estado deshabilitado. El controlador también puede rechazar el comando por otros motivos como el agotamiento de los recursos.

Si todos los bits de Monitor_options están desactivados, el controlador devolverá el código de error Parámetros de comando HCI no válidos (0x12).

Si se establece el bit 1 o bit 3 de Monitor_options y Peer_device_IRK se establece en un IRK no válido o ninguno de los bits de Monitor_options está establecido, el controlador debe devolver el código de error Parámetros de comando HCI no válidos (0x12).

Si se establece bit 0 o bit 1 o bit 2 o bit 3 de Monitor_options y Condition_type se establece en 0x03 o 0x04, el controlador debe devolver el código de error Parámetros de comando HCI no válidos (0x12).

Si se establece el bit 0 de Advertisement_report_filter_options y RSSI_sampling_period es cualquier valor distinto de 0x00, el controlador debe devolver el código de error Parámetros de comando HCI no válidos (0x12).

Faltan parámetros

Cuando se emite una versión de este comando que no incluya todos los parámetros, se usará lo siguiente:

Parámetro Valor
Monitor_options Bit 5 activado; todos los demás bits desactivados
Advertisement_report_filter_options Bits 1 y 2 activados; resto de bits desactivados
Peer_device_IRK 0x0000000000000000 0000000000000000
Peer_device_address 0x000000000000
Peer_device_address_type 0x00

Command_parameters

Subcommand_opcode_v1 (1 octeto):

Valor Descripción de los parámetros
0x03 Código de operación de subcomando para HCI_VS_MSFT_LE_Monitor_Advertisement [v1].

Subcommand_opcode_v2 (1 octeto):

Valor Descripción de los parámetros
0x0F Código de operación de subcomando para HCI_VS_MSFT_LE_Monitor_Advertisement [v2].

RSSI_threshold_high (1 octeto):

Valor Descripción de los parámetros
0xXX Valor RSSI máximo esperado. El controlador genera un evento si el RSSI observado pasa a ser mayor o igual que este valor.
Unidad: dBm
Intervalo obligatorio: -127 a 20 (entero con signo)

RSSI_threshold_low (1 octeto):

Valor Descripción de los parámetros
0xXX Valor RSSI mínimo esperado. El controlador genera un evento si el RSSI observado pasa a ser menor o igual que este valor.
Unidad: dBm
Intervalo obligatorio: -127 a 20 (entero con signo)

RSSI_threshold_low_time_interval (1 octeto):

Valor Descripción de los parámetros
0x00 Valor reservado.
N = 0xXX Tiempo en segundos en el que el valor RSSI debe estar por debajo de RSSI_threshold_low antes de que se genere un HCI_VS_MSFT_Rssi_Event
Período de tiempo = N * 1 segundo
Intervalo obligatorio: 0x01 a 0x3C.

RSSI_sampling_period (1 octeto):

Valor Descripción de los parámetros
0x00 El controlador propagará todos los anuncios recibidos al host.
N = 0xXX Intervalo de muestreo en milisegundos.
Período de tiempo = N * 100 milisegundos.
Intervalo obligatorio: 0x01 a 0xFE
0xFF El controlador no propagará ninguno de los anuncios recibidos al host.

Monitor_options (1 octeto):

Número de bits Descripción de los parámetros
0 El controlador supervisará las PDU de publicidad en las que AdvA o su dirección de identidad resuelta coincidan con Peer_device_address y Peer_device_address_type y en las que TargetA no esté presente o, si está presente, se permita TargetA en función de la política de filtro de exploración, si esas PDU coinciden con la condición especificada en Condition_Type.
1 El controlador supervisará las PDU de publicidad en las que AdvA se puede resolver con Peer_device_IRK y en las que TargetA no está presente o, si está presente, se permite TargetA en función de la política de filtro de exploración, si esas PDU coinciden con la condición especificada en Condition_Type. Este bit no se establecerá si se usa la privacidad de capa de vínculo en el controlador.
2 El controlador supervisará las PDU de publicidad dirigida en las que el TargetA esté permitido en función de la política de filtro de exploración y en las que AdvA o su dirección de identidad resuelta coincidan con Peer_device_address y Peer_device_address_type. Esto es independientemente de si la PDU coincide con la condición especificada en Condition_Type.
3 El controlador supervisará las PDU de publicidad dirigida en las que el TargetA esté permitido en función de la política de filtro de exploración y en las que el AdvA pueda resolverse con Peer_device_IRK. Esto es independientemente de si la PDU coincide con la condición especificada en Condition_Type. Este bit no se establecerá si se usa la privacidad de capa de vínculo en el controlador.
4 El controlador supervisará las PDU de publicidad dirigida en las que el TargetA esté permitido en función de la política de filtro de exploración, independientemente del valor de Peer_device_address y Peer_device_address_type o Peer_device_IRK y de si la PDU cumple la condición especificada en Condition_Type.
5 El controlador supervisará las PDU de publicidad de cualquier AdvA en el que TargetA no esté presente o, si está presente, el TargetA esté permitido en función de la política de filtro de exploración, si esas PDU coinciden con la condición especificada en Condition_Type.
Todos los demás bits Reservada para uso futuro

Advertisement_report_filtering_options (1 octeto):

Número de bits Descripción de los parámetros
0 Filtra los PDU de anuncios duplicados. Este bit solo se activará si RSSI_sampling_period es 0x00.
1 El controlador generará eventos HCI_LE_Advertising_Report o eventos HCI_LE_Directed_Advertising_Report o eventos HCI_LE_Extended_Advertising_Report para PDU de publicidad heredadas, si esas PDU coinciden con las Monitor_options especificadas.
2 El controlador generará eventos HCI_LE_Extended_Advertising_Report para PDU de publicidad extendida, si dichas PDU coinciden con las Monitor_options especificadas.
3 El controlador generará eventos HCI_LE_Advertising_Report o eventos HCI_LE_Directed_Advertising_Report o eventos HCI_LE_Extended_Advertising_Report para PDU de publicidad dirigida, si esas PDU coinciden con las Monitor_options especificadas.
Todos los demás bits Reservada para uso futuro

Peer_device_address (6 octetos):

Valor Descripción de los parámetros
0xXXXXXXXXXXXX Dirección del dispositivo público o Dirección de dispositivo aleatoria que debe coincidir.

Peer_device_address_type (1 octeto):

Valor Descripción de los parámetros
0x00 Dirección del dispositivo público
0x01 Dirección aleatoria del dispositivo
Todos los demás valores Reservada para uso futuro

Peer_device_IRK (16 octetos):

Valor Descripción de los parámetros
0x0000000000000000 0000000000000000 IRK no válido. No será el valor cuando el bit 1 de Monitor_options esté activado o cuando el bit 3 de Monitor_options esté activado.
0xXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX IRK del dispositivo que debe coincidir. Peer_device_address y Peer_device_address_type se rellenarán.

Condition_type (1 octeto):

Valor Descripción de los parámetros
0x01 La condición es un patrón que debe coincidir con el anuncio.
0x02 La condición es un tipo UUID y un UUID.
0x03 La condición es la resolución de IRK. Excluido si alguno de los bits 0, 1, 2 o 3 de Monitor_options está activado.
0x04 La condición es un tipo de dirección Bluetooth y una dirección Bluetooth. Excluido si alguno de los bits 0, 1, 2 o 3 de Monitor_options está activado.

Condition: los campos aplicables de Condition dependen del valor de Condition_type. Consulte la sección Parámetros Condition_type y Condition para obtener más información.

Number_of_patterns (1 octeto):

Valor Descripción de los parámetros
0xXX Número de patrones especificados en el parámetro Pattern_data.

Pattern_data (>3 octetos):

Valor Descripción de los parámetros
Length Longitud de este patrón.
Tipo de datos Tipo de datos de la sección de anuncios. Los valores se enumeran en el documento Números asignados por Bluetooth.
Byte inicial Posición inicial del patrón que debe compararse para el tipo de datos especificado.
Patrón Patrón que debe coincidir (tamaño de Longitud - 0x2 bytes).

UUID_type (1 octeto):

Valor Descripción de los parámetros
0x01 El UUID es un servicio de 16 bits.
0x02 El UUID es un servicio de 32 bits.
0x03 El UUID es un servicio de 128 bits.

UUID (2, 4 o 16 octetos):

Valor Descripción de los parámetros
0xXXXX 2 bytes si UUID_type es 0x01.
4 bytes si UUID_type es 0x02.
16 bytes si UUID_type es 0x03.

IRK (16 octetos):

Valor Descripción de los parámetros
0xXXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX IRK que se va a usar para resolver la dirección privada.

Address_type (1 octeto):

Valor Descripción de los parámetros
0x00 Dirección del dispositivo público:
0x01 Dirección aleatoria del dispositivo.
0x02 0xFF Valores reservados para uso futuro.

BD_ADDR (6 octetos):

Valor Descripción de los parámetros
0xXXXXXXXXXXXX Dirección Bluetooth del dispositivo que se va a supervisar.

Return_parameters

Status (1 octeto):

Valor Descripción de los parámetros
0x00 El comando se ha ejecutado correctamente.
0x07 El controlador devolverá Capacidad de memoria superada si no tiene suficiente memoria para procesar el comando.
Código de error Error en el comando. Consulte Códigos de error en la especificación de Bluetooth Core para obtener más información.

Subcommand_opcode (1 octeto):

Valor Descripción de los parámetros
0x03 o 0x0F Código de operación de subcomando para HCI_VS_MSFT_LE_Monitor_Advertisement [v1] o HCI_VS_MSFT_LE_Monitor_Advertisement [v2], en función del comando emitido.

Monitor_handle (1 octeto):

Valor Descripción de los parámetros
0x00 a 0xFF Identificador de esta regla. Este identificador se usa como parámetro de HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement para cancelar la supervisión del anuncio.
Este parámetro solo es válido si Status es 0x00.

Eventos generados a menos que se enmascaren

Cuando se reciba el comando HCI_VS_MSFT_LE_Monitor_Advertisement, el controlador generará un evento Command Complete.

HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement

HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement cancela un comando HCI_VS_MSFT_LE_Monitor_Advertisement emitido anteriormente.

Get-Help Código Parámetros de comando Parámetros de devolución
HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement Código base elegido Subcommand_opcode,
Monitor_handle
Status,
Subcommand_opcode

El controlador generará rápidamente un evento Command Completed en respuesta a este comando.

Command_parameters

Subcommand_opcode (1 octeto):

Valor Descripción de los parámetros
0x04 Código de operación de subcomando para HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement.

Connection_Handle (1 octeto):

Valor Descripción de los parámetros
0xXX Identificador del filtro que se va a cancelar.

Return_parameters

Status (1 octeto):

Valor Descripción de los parámetros
0x00 El comando se ha ejecutado correctamente.
0x07 El controlador devolverá Capacidad de memoria superada si no tiene suficiente memoria para procesar el comando.
Código de error Error en el comando. Consulte Códigos de error en la especificación de Bluetooth Core para obtener más información.

Subcommand_opcode (1 octeto):

Valor Descripción de los parámetros
0x04 Código de operación de subcomando para HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement.

Eventos generados a menos que se enmascaren

El controlador generará un evento Command Complete cuando se reciba el comando HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement.

HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable

HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable establece el estado de los filtros de anuncios.

Get-Help Código Parámetros de comando Parámetros de devolución
HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable Código base elegido Subcommand_opcode,
Habilitar
Status,
Subcommand_opcode

Si Enable está establecido en 0x00, el controlador propagará los anuncios recibidos al host en función de la configuración de la lista de aceptación de filtros existente. El controlador seguirá supervisando los dispositivos que se están supervisando actualmente y generará un HCI_VS_MSFT_LE_Monitor_Device_Event con Monitor_state establecido en 0 si el dispositivo ya no se está supervisando. El controlador generará un HCI_VS_MSFT_LE_Monitor_Device_Event con Monitor_state establecido en 1 si se supervisa un nuevo dispositivo. El host puede emitir HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable con Enable establecido en 0x01 para volver a habilitar todas las condiciones de filtro.

Si Enable se establece en 0x01, este comando habilita todos los filtros que se establecieron con un comando HCI_VS_MSFT_LE_Monitor_Advertisement emitido anteriormente. El controlador rechazará un comando HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable si no conmuta el estado del filtro:

  • El controlador rechazará un comando HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable con Enable establecido en 0x01 si anteriormente ha recibido un comando HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable con Enable establecido en 0x01.
  • El controlador rechazará el comando HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable con Enable establecido en 0x00 si anteriormente ha recibido un comando HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable con Enable establecido en 0x00.

El estado predeterminado del filtro de anuncios estará desactivado. Este estado es equivalente al controlador que recibió previamente un comando de HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable con Enable establecido en 0x00. El controlador generará rápidamente un evento Command Completed en respuesta a este comando.

Command_parameters

Subcommand_opcode (1 octeto):

Valor Descripción de los parámetros
0x05 Código de operación de subcomando para HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable.

Enable (1 octeto):

Valor Descripción de los parámetros
0x00 Vuelva al comportamiento actual de la lista de aceptación de filtros, pero siga supervisando los dispositivos en función de la Condition de los comandos HCI_VS_MSFT_LE_Monitor_Advertisement.
0x01 Habilite todos los comandos HCI_VS_MSFT_LE_Monitor_Advertisement emitidos en el controlador.

Return_parameter

Status (1 octeto):

Valor Descripción de los parámetros
0x00 El comando se ha ejecutado correctamente.
0x0C El controlador devolverá Command Disallowed si el controlador ha rechazado el comando porque anteriormente ha visto un comando HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable con Enable establecido en el mismo valor que este comando.
Código de error Error en el comando. Consulte Códigos de error en la especificación de Bluetooth Core para obtener más información.

Subcommand_opcode (1 octeto):

Valor Descripción de los parámetros
0x05 Código de operación de subcomando para HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable.

Eventos generados a menos que se enmascaren

El controlador generará un evento Command Complete cuando se reciba el comando HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement.

HCI_VS_MSFT_Read_Absolute_RSSI

HCI_VS_MSFT_Read_Absolute_RSSI lee el valor absolute de la Indicación de intensidad de señal recibida (RSSI) para una conexión BR/EDR desde el controlador.

Get-Help Código Parámetros de comando Parámetros de devolución
HCI_VS_MSFT_Read_Absolute_RSSI Código base elegido Subcommand_opcode,
Connection_Handle
Status,
Subcommand_opcode,
Connection_Handle,
RSSI

Se proporciona un identificador de conexión como un comando y un parámetro de devolución para identificar la conexión de ACL cuya RSSI se está leyendo. La métrica RSSI es la intensidad absoluta de la señal del receptor en dBm para ± precisión de 6 dB. Si el RSSI no se puede leer, la métrica RSSI se establecerá en 127. El controlador siempre completará este comando rápidamente con un evento de Command Completed.

Command_parameters

Subcommand_opcode (1 octeto):

Valor Descripción de los parámetros
0x06 Código de operación de subcomando para HCI_VS_MSFT_Read_Absolute_RSSI.

Connection_Handle (2 octetos):

Valor Descripción de los parámetros
0xXXXX Identificador de la conexión BR/EDR cuya RSSI debe leerse.

Return_parameters

Status (1 octeto):

Valor Descripción de los parámetros
0x00 El comando se ha ejecutado correctamente.
0x01 a 0xFF Error en el comando. Consulte Códigos de error en la especificación de Bluetooth Core para obtener más información.

Subcommand_opcode (1 octeto):

Valor Descripción de los parámetros
0x06 Código de operación de subcomando para HCI_VS_MSFT_Read_Absolute_RSSI.

Connection_Handle (2 octetos):

Valor Descripción de los parámetros
0xXXXX Identificador de la conexión BR/EDR cuya RSSI se ha leído.

RSSI (1 octeto):

Valor Descripción de los parámetros
N = 0xXX Valor RSSI de la conexión BR/EDR.
Unidad: dBm
Intervalo obligatorio: -128 a 127 (entero con signo)

Eventos generados a menos que se enmascaren

El controlador generará un evento Command Complete cuando se haya completado el comando HCI_VS_MSFT_Read_Absolute_RSSI.

Eventos de Bluetooth HCI definidos por Microsoft

Todos los eventos de Bluetooth HCI definidos por Microsoft son eventos definidos por el proveedor y usan código de evento 0xFF. Los datos de evento de los eventos de Microsoft siempre comienzan con una cadena constante de bytes para distinguir los eventos definidos por Microsoft de otros eventos definidos por el proveedor. La longitud y el valor de la cadena constante se definen mediante el implementador del controlador y se devuelven en respuesta a HCI_VS_MSFT_Read_Supported_Features.

Evento del HCI Descripción
HCI_VS_MSFT_Rssi_Event HCI_VS_MSFT_RSSI_Event indica que un comando HCI_VS_MSFT_Monitor_Rssi se ha completado.
HCI_VS_MSFT_LE_Monitor_Device_Event HCI_VS_MSFT_LE_Monitor_Device_Event indica que el controlador ha iniciado o detenido la supervisión de un dispositivo Bluetooth LE.

HCI_VS_MSFT_RSSI_Event

HCI_VS_MSFT_RSSI_Event indica que un comando HCI_VS_MSFT_Monitor_Rssi se ha completado. Si el parámetro Status es cero, el comando se completó porque el valor RSSI del dispositivo remoto cambió a un valor fuera del intervalo especificado. Si el parámetro Status no es cero, el comando se completó porque el valor RSSI de la conexión ya no se puede supervisar.

Evento Código de evento Código de evento de Microsoft Parámetros de eventos
HCI_VS_MSFT_RSSI_Event 0xFF 0x01 Event_prefix,
Microsoft_event_code,
Status,
Connection_Handle,
RSSI

Event_parameters

Event_prefix (tamaño variable):

Valor Descripción de los parámetros
Event prefix Prefijo de evento que marca este evento como definido por Microsoft. El comando HCI_VS_MSFT_Read_Supported_Features devuelve el tamaño y el valor.

Microsoft_event_code (1 octeto):

Valor Descripción de los parámetros
0x01 Código de evento para HCI_VS_MSFT_RSSI_Event.

Status (1 octeto):

Valor Descripción de los parámetros
0x00 Correcto. El valor RSSI de la conexión ha cumplido una de las condiciones siguientes. El RSSI ha alcanzado o superado RSSI_threshold_high.
El RSSI ha alcanzado o bajado por debajo de RSSI_threshold_low durante RSSI_threshold_low_time_interval segundos.
El RSSI_sampling_period ha expirado y este evento se ha generado para notificar al host del valor RSSI.
0x01 a 0xFF Error. El valor RSSI de la conexión ya no se puede supervisar. El código de error suele ser uno de los códigos que describe por qué se perdió la conexión de ACL subyacente.

Connection_Handle (2 octetos):

Valor Descripción de los parámetros
0xXXXX Identificador de la conexión cuya RSSI se debe supervisar.

RSSI (1 octeto):

Valor Descripción de los parámetros
0xXX Valor RSSI del vínculo medido para la conexión.
Unidad: dBm
Intervalo BR/EDR: -128 a 127 (entero con signo)
Intervalo LE: -127 a 20 (entero con signo)

HCI_VS_MSFT_LE_Monitor_Device_Event

HCI_VS_MSFT_LE_Monitor_Device_Event indica que el controlador ha iniciado o detenido la supervisión de un dispositivo Bluetooth LE.

Si el valor del parámetro Monitor_state es 1, el controlador ha iniciado la supervisión del dispositivo Bluetooth con el BD_ADDR especificado. Si el valor del parámetro Monitor_state es 0, el controlador ha detenido la supervisión del dispositivo Bluetooth con el BD_ADDR especificado.

Evento Código de evento Código de evento de Microsoft Parámetros de eventos
HCI_VS_MSFT_LE_Monitor_Device_Event 0xFF 0x02 Event_prefix,
Microsoft_event_code,
Address_type,
BD_ADDR,
Monitor_handle,
Monitor_state

El controlador no generará un HCI_VS_MSFT_LE_Monitor_Device_Event con el parámetro Monitor_state establecido en 0 si aún no ha generado un HCI_VS_MSFT_LE_Monitor_Device_Event con Monitor_state establecido en 1.

Event_parameters

Event_prefix (tamaño variable):

Valor Descripción de los parámetros
Event prefix Prefijo de evento que marca este evento como definido por Microsoft. El comando HCI_VS_MSFT_Read_Supported_Features devuelve el tamaño y el valor.

Microsoft_event_code (1 octeto):

Valor Descripción de los parámetros
0x02 Código de evento de HCI_VS_MSFT_LE_Monitor_Device_Event.

Address_type (1 octeto):

Valor Descripción de los parámetros
0x00 Dirección del dispositivo público:
0x01 Dirección aleatoria del dispositivo.
0x02 0xFF Valores reservados para uso futuro.

BD_ADDR (6 octetos):

Valor Descripción de los parámetros
0xXXXXXXXXXXXX Dirección Bluetooth del dispositivo.

Monitor_handle (1 octeto):

Valor Descripción de los parámetros
0xXX Identificador del filtro especificado para el comando HCI_VS_MSFT_LE_Monitor_Advertisement.

Monitor_state (1 octeto):

Valor Descripción de los parámetros
0x00 El controlador ha detenido la supervisión del dispositivo especificado por BD_ADDR y Monitor_handle.
0x01 El controlador ha iniciado la supervisión del dispositivo especificado por BD_ADDR y Monitor_handle.

Comandos de AVDTP HCI definidos por Microsoft

Los siguientes comandos de AVDTP HCI proporcionan compatibilidad con la descarga de banda lateral de audio A2DP. Para obtener más información, consulte Descarga de banda lateral de audio A2DP.

Comandos de HCI AVDTP Descripción
HCI_VS_MSFT_Avdtp_Capabilities_Configuration Configura la interfaz de transporte de audio y devuelve las capacidades de códec del controlador Bluetooth, que es una lista de bloques de información de códec.
HCI_VS_MSFT_Avdtp_Open Asigna y configura los recursos de descarga de AVDTP dentro del controlador.
HCI_VS_MSFT_Avdtp_Start Comienza la transmisión de audio desde el transporte de audio a los paquetes multimedia AVDTP transmitidos.
HCI_VS_MSFT_Avdtp_Suspend Detiene la actividad de transmisión iniciada por HCI_VS_MSFT_Avdtp_Start.
HCI_VS_MSFT_Avdtp_Close Libera los recursos de descarga de AVDTP asignados por HCI_VS_MSFT_Avdtp_Open.

HCI_VS_MSFT_Avdtp_Capabilities_Configuration

HCI_VS_MSFT_Avdtp_Capabilities_Configuration configura la interfaz de transporte de audio y devuelve funcionalidades de códec del controlador Bluetooth, que es una lista de bloques de información de códec. Cada bloque de información de códec describe un códec admitido.

Algunos de los parámetros que aparecen a continuación son matrices de estructuras de longitud variable, por lo que se supone que todos estos parámetros cabrán en un comando HCI y en el evento HCI correspondiente.

Command_parameters

External_codec_count (1 octeto):

Valor Descripción de los parámetros
0x00-0xFF El recuento de bloques Codec_capability que siguen.

External_codec_capability (longitud variable):

Valor Descripción de los parámetros
Bloque de funcionalidad de códec Un bloque de información sobre la capacidad del códec, tal como se describe en la Información sobre las capacidades del códec. Describe un único códec compatible con el dispositivo conectado a la interfaz de audio.

Esta estructura de datos se repite External_codec_count veces.

Audio_interface_parameter_count (1 octeto):

Valor Descripción de los parámetros
0x00-0xFF El recuento de Audio_interface_parameters que siguen.

Audio_interface_parameter (longitud variable)

Valor Descripción de los parámetros
Parámetro de interfaz de audio Un parámetro de interfaz de audio, tal como se ha descrito anteriormente, establecido por el dispositivo conectado a la interfaz de audio.

Esta estructura de datos se repite Audio_interface_parameter_count veces.

Return_parameters

Status (1 octeto):

Valor Descripción de los parámetros
0x00 El comando se ha ejecutado correctamente.
0x01-0xFF Error en el comando. Consulte Códigos de error en la especificación de Bluetooth Core para obtener más información.

Subcommand_opcode _ (1 octeto):

Valor Descripción de los parámetros
0x07 Código de operación de subcomando para HCI_VS_MSFT_Avdtp_Capabilities_Configuration.

Internal_codec_count (1 octeto):

Valor Descripción de los parámetros
0x00-0xFF El recuento de bloques Internal_codec_capability que siguen.

Internal_codec_capability (longitud variable):

Valor Descripción de los parámetros
Bloque de funcionalidad de códec Bloque de información de funcionalidad de códec como se describe en Descarga de banda lateral de audio A2DP. Esto describe un único códec compatible con el controlador Bluetooth.

Esta estructura de datos se repite Internal_codec_count veces.

Audio_interface_parameter_count (1 octeto):

Valor Descripción de los parámetros
0x00-0xFF El recuento de Audio_interface_parameters que siguen.

Audio_interface_parameter (longitud variable)

Valor Descripción de los parámetros
Parámetro de interfaz de audio Un parámetro de interfaz de audio como se ha descrito anteriormente. El software del host pasa este parámetro al dispositivo conectado a la interfaz de audio.

Esta estructura de datos se repite Audio_interface_parameter_count veces.

HCI_VS_MSFT_Avdtp_Open

Asigna y configura los recursos de descarga de AVDTP dentro del controlador.

Algunos de los parámetros que aparecen a continuación son matrices de estructuras de longitud variable, por lo que se supone que todos estos parámetros cabrán en un comando HCI y en el evento HCI correspondiente.

Command_parameters

Connection_handle (2 octetos)

Valor Descripción de los parámetros
0xXXXX Identifica el canal L2CAP multimedia avDTP conectado al dispositivo remoto.

L2cap_destination_cid (2 octetos)

Valor Descripción de los parámetros
0xXXXX CID de destino L2CAP del canal de medios AVDTP

L2cap_mtu (2 octetos)

Valor Descripción de los parámetros
0xXXXX MTU del canal multimedia AVDTP L2CAP

Configured_codec_capability (longitud variable):

Valor Descripción de los parámetros
Bloque de funcionalidad de códec Bloque de información de funcionalidad de códec como se describe en Descarga de banda lateral de audio A2DP. Esto describe el códec configurado para el medio AVDTP.

Audio_interface_parameter_count (1 octeto):

Valor Descripción de los parámetros
0x00-0xFF El recuento de Audio_interface_parameters que siguen.

Audio_interface_parameter (longitud variable)

Valor Descripción de los parámetros
Parámetro de interfaz de audio Un parámetro de interfaz de audio como se ha descrito anteriormente. El dispositivo conectado a la interfaz de audio especifica estos parámetros para una instancia de secuencia determinada.

Esta estructura de datos se repite Audio_interface_parameter_count veces.

Return_parameters

Status (1 octeto):

Valor Descripción de los parámetros
0x00 El comando se ha ejecutado correctamente.
0x01-0xFF Error en el comando. Consulte Códigos de error en la especificación de Bluetooth Core para obtener más información.

Subcommand_opcode (1 octeto):

Valor Descripción de los parámetros
0x08 Código de operación de subcomando para HCI_VS_MSFT_Avdtp_Open.

Avdtp_offload_handle (2 octetos):

Valor Descripción de los parámetros
0xXXXX Identifica el recurso asignado para la secuencia descargada.

Audio_interface_parameter_count (1 octeto):

Valor Descripción de los parámetros
0x00-0xFF El recuento de Audio_interface_parameters que siguen.

Audio_interface_parameter (longitud variable)

Valor Descripción de los parámetros
Parámetro de interfaz de audio Un parámetro de interfaz de audio como se ha descrito anteriormente. El software de host pasa este parámetro al dispositivo conectado a la interfaz de audio de la instancia de secuencia.

Esta estructura de datos se repite Audio_interface_parameter_count veces.

HCI_VS_MSFT_Avdtp_Start

Este comando inicia la transmisión de audio desde el transporte de audio a los paquetes multimedia avDTP transmitidos. Al ejecutar este comando, el controlador Bluetooth comienza la siguiente actividad.

  • Recibe datos de audio del transporte de audio.
  • Si el codificador está en el controlador Bluetooth, codifica los datos recibidos del transporte de audio para generar fotogramas codificados.
  • Si el codificador está en el DSP de audio, extrae las tramas codificadas del transporte de audio
  • Ensambla fotogramas codificados en cargas multimedia avDTP
  • Construye y transmite paquetes multimedia AVDTP que contienen las cargas multimedia.

Command_parameters

Avdtp_offload_handle (2 octetos):

Valor Descripción de los parámetros
0xXXXX Identifica el recurso asignado para la secuencia descargada.

Return_parameters

Status (1 octeto):

Valor Descripción de los parámetros
0x00 El comando se ha ejecutado correctamente.
0x01-0xFF Error en el comando. Consulte Códigos de error en la especificación de Bluetooth Core para obtener más información.

Subcommand_opcode (1 octeto):

Valor Descripción de los parámetros
0x09 Código de operación de subcomando para HCI_VS_MSFT_Avdtp_Start.

HCI_VS_MSFT_Avdtp_Suspend

Detiene la actividad de transmisión iniciada por HCI_VS_MSFT_Avdtp_Start.

Command_parameters

Avdtp_offload_handle (2 octetos):

Valor Descripción de los parámetros
0xXXXX Identifica el recurso asignado para la secuencia descargada

Return_parameters

Status (1 octeto):

Valor Descripción de los parámetros
0x00 El comando se ha ejecutado correctamente.
0x01-0xFF Error en el comando. Consulte Códigos de error en la especificación de Bluetooth Core para obtener más información.

Subcommand_opcode (1 octeto):

Valor Descripción de los parámetros
0x0A Código de operación del subcomando para HCI_VS_MSFT_Avdtp_Suspend.

HCI_VS_MSFT_Avdtp_Close

Libera los recursos de descarga de AVDTP asignados por HCI_VS_MSFT_Avdtp_Open.

Command_parameters

Avdtp_offload_handle (2 octetos):

Valor Descripción de los parámetros
0xXXXX Nota: este valor ya no es válido una vez completado este comando.

Return_parameters

Status (1 octeto):

Valor Descripción de los parámetros
0x00 El comando se ha ejecutado correctamente.
0x01-0xFF Error en el comando. Consulte Códigos de error en la especificación de Bluetooth Core para obtener más información.

Subcommand_opcode (1 octeto):

Valor Descripción de los parámetros
0x0B Código de operación del subcomando para HCI_VS_MSFT_Avdtp_Close.
Valor Descripción de los parámetros
0x00
0x01 El controlador ha iniciado la supervisión del dispositivo especificado por BD_ADDR y Monitor_handle.

Apéndice

Esta sección contiene ejemplos y diagramas de extensión Bluetooth HCI definidos por Microsoft.

Ejemplo: patrones de coincidencia para HCI_VS_MSFT_LE_Monitor_Advertisement

En este ejemplo se muestra un comando HCI_VS_MSFT_LE_Monitor_Advertisement recibido y las evaluaciones de tres paquetes de anuncios diferentes con los parámetros de comando.

El controlador ha recibido los comandos HCI_VS_MSFT_LE_Monitor_Advertisement y HCI_VS_MSFT_LE_Monitor_Advertisement y contiene los siguientes parámetros.

Parámetro Value Notas
Subcommand_opcode 0x03 Código de operación de subcomando para HCI_VS_MSFT_LE_Monitor_Advertisement.
RSSI_threshold_high 0x01 1dB
RSSI_threshold_low 0xCE -50dB
RSSI_threshold_low_time_interval 0x05 5 segundos
RSSI_sampling_period 0xFF Sin muestreo
Condition_type 0x01 Condición
Condición 0x02 Deben coincidir dos patrones
0x03 Longitud del primer patrón, incluido el Tipo AD y la posición inicial
0x01 Tipo AD
0x00 Posición inicial después del Tipo AD
0x01 Primer patrón que debe coincidir
0x06 Longitud del segundo patrón, incluido el Tipo AD y la posición inicial
0xFF Tipo AD (datos específicos del fabricante)
0x00 Posición inicial después del Tipo AD
0x00 Segundo patrón que debe coincidir
0x06
0xFF
0xFF

A continuación, el controlador recibe los siguientes paquetes de anuncios.

  • Paquete de publicidad [A]

    0x02 0x01 0x01 0x07 0x09 0x54 0x61 0x62 0x6C 0x65 0x74 0x05 0xFF 0x00 0x06 0xFF 0xFF

  • Paquete de publicidad [B]

    0x02 0x01 0x01 0x07 0x09 0x54 0x61 0x62 0x6C 0x65 0x74 0x04 0xFF 0x00 0x06 0xFF

  • Paquete de publicidad [C]

    0x07 0x09 0x54 0x61 0x62 0x6C 0x65 0x74 0x05 0xFF 0x00 0x06 0xFF 0xFF

  • Paquete de publicidad [D]

    0x02 0x01 0x02 0x05 0xFF 0x00 0x06 0xFF 0x01

Evaluación de la coincidencia para el paquete de publicidad [A]

Descripción Valor
Tipo AD del primer patrón que debe coincidir 0x01
Longitud del primer patrón que debe coincidir 0x03 - 0x02 = 0x01 byte
Patrón que debe coincidir en la posición 0x00 para 0x01 de Tipo AD 0x01
Bytes en la posición 0x00 para 0x01 de Tipo AD 0x01 (MATCH!)
Tipo AD del segundo patrón que debe coincidir 0xFF (datos específicos del fabricante)
Longitud del segundo patrón que debe coincidir 0x06 - 0x02 = 0x04 bytes
Patrón que debe coincidir en la posición 0x00 para la 0x01 de Tipo AD 0x00 0x06 0xFF 0xFF
Bytes en la posición 0x00 para 0xFF de Tipo AD 0x00 0x06 0xFF 0xFF (MATCH!)

Veredicto: PASS (ambos patrones coinciden)

Evaluación de la coincidencia para el paquete de publicidad [B]

Descripción Valor
Tipo AD del primer patrón que debe coincidir 0x01
Longitud del primer patrón que debe coincidir 0x03 - 0x02 = 0x01 byte
Patrón que debe coincidir en la posición 0x00 para 0x01 de Tipo AD 0x01
Bytes en la posición 0x00 para 0x01 de Tipo AD 0x01 (MATCH!)
Tipo AD del segundo patrón que debe coincidir 0xFF (datos específicos del fabricante)
Longitud del segundo patrón que debe coincidir 0x06 - 0x02 = 0x04 bytes
Patrón que debe coincidir en la posición 0x00 para la 0x01 de Tipo AD 0x00 0x06 0xFF 0xFF
Bytes en la posición 0x00 para 0xFF de Tipo AD 0x00 0x06 0xFF (sin coincidencia)

Veredicto: PASS (solo coincidencias de primer patrón)

Evaluación de la coincidencia para el paquete de publicidad [C]

Descripción Valor
Tipo AD del primer patrón que debe coincidir 0x01
Longitud del primer patrón que debe coincidir 0x03 - 0x02 = 0x01 byte
Patrón que debe coincidir en la posición 0x00 para 0x01 de Tipo AD 0x01
Bytes en la posición 0x00 para 0x01 de Tipo AD Undefined. El anuncio no tiene datos con 0x01 de Tipo AD.
Tipo AD del segundo patrón que debe coincidir 0xFF (datos específicos del fabricante)
Longitud del segundo patrón que debe coincidir 0x06 - 0x02 = 0x04 bytes
Patrón que debe coincidir en la posición 0x00 para la 0x01 de Tipo AD 0x00 0x06 0xFF 0xFF
Bytes en la posición 0x00 para 0xFF de Tipo AD 0x00 0x06 0xFF 0xFF (MATCH!)

Veredicto: PASS (solo coincidencias de segundo patrón)

Evaluación de la coincidencia para el paquete de publicidad [D]

Descripción Valor
Tipo AD del primer patrón que debe coincidir 0x01
Longitud del primer patrón que debe coincidir 0x03 - 0x02 = 0x01 byte
Patrón que debe coincidir en la posición 0x00 para 0x01 de Tipo AD 0x01
Bytes en la posición 0x00 para 0x01 de Tipo AD 0x02 (sin coincidencia)
Tipo AD del segundo patrón que debe coincidir 0xFF (datos específicos del fabricante)
Longitud del segundo patrón que debe coincidir 0x06 - 0x02 = 0x04 bytes
Patrón que debe coincidir en la posición 0x00 para la 0x01 de Tipo AD 0x00 0x06 0xFF 0xFF
Bytes en la posición 0x00 para 0xFF de Tipo AD 0x00 0x06 0xFF 0x01 (sin coincidencia)

Veredicto: FAIL (ninguna coincidencia de patrón)

Ejemplo: supervisión de anuncios

En este ejemplo se muestra la supervisión de anuncios RSSI. A continuación se muestran los valores RSSI de los anuncios recibidos que coinciden con una condición especificada.

Tiempo (s) RSSI (dB)
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
Parámetro Valor
RSSI_threshold_high -10dB
RSSI_threshold_low -80dB
RSSI_threshold_low_time_interval 3 segundos
RSSI_sampling_period 2 segundos

Gráfico que muestra el seguimiento de la publicidad con los valores RSSI a lo largo del tiempo.

El RSSI del anuncio es mayor que RSSI_threshold_high en el tiempo 3. El temporizador periódico para el muestreo comienza en el tiempo 3. Cada 2 segundos, el temporizador periódico expira y el valor RSSI medio del anuncio recibido se propaga a la pila.

Cuando el temporizador periódico expira en el tiempo 5, se propaga a la pila la media de las RSSI de anuncio recibidas durante este tiempo (-23dB).

Cuando el temporizador periódico expira en el tiempo 13, el promedio de los RSS de anuncios recibidos durante este período de tiempo es inferior a RSSI_threshold_low (-80dB). El promedio del anuncio RSSI (-85 dB) debe propagarse al host.

Cuando RSSI_threshold_low_time_interval expira en el instante 15, se propaga un anuncio al host con RSSI de -85dB. No se envían más anuncios al host en este ejemplo.

Ejemplo: supervisión de anuncios de BAP desde un dispositivo

Aunque está unido a un CAP Acceptor, pero no conectado, un host podría supervisar los anuncios de BAP desde ese dispositivo.

Parámetro Valor
Subcommand_opcode_v2 0x0F
RSSI_threshold_high -127
RSSI_threshold_low -127
RSSI_threshold_low_time_interval 0x05
RSSI_sampling_period 0x00
Monitor_options Bit 0 establecido; Bit 1 establecido si el dispositivo distribuyó un IRK
Advertisement_report_filtering_options Bit 0, 1 y 2 establecido
Peer_device_address <address>
Peer_device_address_type <tipo de dirección>
Peer_device_IRK <IRK, si se establece el bit 1>
Condition_type 0x01
Number_of_patterns 0x01
Pattern_data 0x04 (longitud)
0x16 (Datos de servicio: UUID de 16 bits)
0x00 (byte inicial)
0x4E (byte bajo de ASCS UUID)
0x18 (byte alto de ASCS UUID)

Ejemplo: supervisión de anuncios de CAP desde un dispositivo

Aunque está unido a un CAP Commander, pero no conectado, un host podría supervisar los anuncios de CAP desde ese dispositivo.

Parámetro Valor
Subcommand_opcode_v2 0x0F
RSSI_threshold_high -127
RSSI_threshold_low -127
RSSI_threshold_low_time_interval 0x05
RSSI_sampling_period 0x00
Monitor_options Bit 0 establecido; Bit 1 establecido si el dispositivo distribuyó un IRK
Advertisement_report_filtering_options Bit 0, 1 y 2 establecido
Peer_device_address <address>
Peer_device_address_type <tipo de dirección>
Peer_device_IRK <IRK, si se establece el bit 1>
Condition_type 0x01
Number_of_patterns 0x01
Pattern_data 0x04 (longitud)
0x16 (Datos de servicio: UUID de 16 bits)
0x00 (byte inicial)
0x53 (byte bajo de CAS UUID)
0x18 (byte alto de CAS UUID)

Diagrama de flujo: filtrado de listas de aceptación de anuncios y filtros

Este diagrama de flujo proporciona una implementación de controlador de ejemplo de filtrado de anuncios y filtrado de listas de aceptación de filtros cuando se recibe un anuncio.

Un controlador puede implementar esta lógica de forma diferente, siempre y cuando se notifique al host del anuncio o HCI_VS_MSFT_LE_Monitor_Device_Event según lo especificado por el diagrama de flujo.

Diagrama de flujo que muestra el proceso de filtrado de extensiones de Microsoft HCI.

Diagrama de secuencia: propagación de la respuesta de la exploración asociada con el anuncio

Diagrama de secuencia: propagación de la respuesta de la exploración asociada con el anuncio

Este diagrama de secuencia muestra una respuesta de exploración de propagación que está asociada con un anuncio que satisface un filtro de anuncios cuando la exploración activa está activada. Este diagrama solo muestra la secuencia esperada de eventos entre el controlador y el host, y no muestra los eventos entre el controlador y un dispositivo en particular. Supongamos que hay un anuncio A que satisface un filtro de anuncios y un anuncio B que no satisface el filtro de anuncio.

Diagrama de secuencia que muestra cómo el HCI propaga la respuesta de exploración asociada al anuncio.