Requisitos de HCI

La interfaz de controlador de host (HCI) se usa para interactuar con un controlador Bluetooth.

En este documento, se proporciona una lista de los requisitos de HCI de Bluetooth (BT) y Bluetooth de bajo consumo (BLE). El objetivo es que los proveedores de pilas de BT de host y los proveedores de controladores de BT cumplan con estos requisitos de la plataforma para usar el conjunto de funciones que se describe a continuación.

En este documento, se hace referencia a la especificación Bluetooth Core 5.2 como la “especificación”. La especificación Bluetooth Core 5.2 está disponible en el sitio web de Bluetooth SIG junto con otros documentos adoptados.

Descripción general del diseño general

Funciones y configuración del chip

Como plataforma abierta, Android tiene una matriz de lanzamientos de software, OEM, proveedores y capacidades de plataforma y chip.

Para administrar el panorama cambiante y las migraciones, en este documento se describe una filosofía de diseño que permite que los controladores de BT expongan sus capacidades (más allá de la especificación estándar de Bluetooth Core 5.2). Luego, la pila de BT del host puede usar estas funciones para determinar qué funciones habilitar.

Compatibilidad con estándares abiertos

Uno de los objetivos de Android es admitir estándares abiertos después de la ratificación en una especificación de Bluetooth. Si una función que se describe a continuación está disponible en métodos de HCI estándar en una especificación futura de Bluetooth, nos inclinaremos a que ese enfoque sea el predeterminado.

Funciones específicas del proveedor

Comando específico del proveedor: LE_Get_Vendor_Capabilities_Command

Campo de comando de OpCode (OCF): 0x153

Parámetro de comando Tamaño Propósito
NA Lista de parámetros de comando vacía

Se generará un evento de comando completo para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
max_advt_instances
(Obsoleto)
1 octeto Cantidad de instancias de anuncios admitidas.

Reservado después de la versión 0.98.
Este parámetro dejó de estar disponible en la versión 0.98 de las especificaciones de funciones de Google y versiones posteriores a favor de la publicidad extendida de LE disponible en la versión 5.0 de las especificaciones de BT y versiones posteriores.
offloaded_resolution_of_private-address
(Obsoleto)
1 octeto Función del chip BT de RPA.
Si es compatible con un chip, el host debe habilitarlo.
0 = No es compatible
1 = Es compatible

Reservado después de la versión 0.98.
Este parámetro dejó de estar disponible en la versión 0.98 de las especificaciones de funciones de Google y versiones posteriores en favor de la función de privacidad disponible en la versión 4.2 de las especificaciones de BT y versiones posteriores.
total_scan_results_storage 2 octetos Almacenamiento de los resultados del análisis en bytes
max_irk_list_sz 1 octeto Cantidad de entradas de IRK compatibles con el firmware
filtering_support 1 octeto Compatibilidad con el filtrado en el controlador
0 = No se admite
1 = Se admite
max_filter 1 octeto Cantidad de filtros admitidos
activity_energy_info_support 1 octeto Admite informes de información de actividad y energía
0 = No es compatible
1 = Es compatible
version_supported 2 octetos Especifica la versión de la especificación de funciones de Google que se admite
byte[0] = Número mayor
byte[1] = Número menor

v1.04
byte[0] = 0x01
byte[1] = 0x04
total_num_of_advt_tracked 2 octetos Cantidad total de anunciantes a los que se les hizo un seguimiento para fines de OnLost/OnFound
extended_scan_support 1 octeto Admite la ventana y el intervalo de análisis extendidos
debug_logging_supported 1 octeto Admite el registro de información de depuración binaria desde el controlador
LE_address_generation_offloading_support
(Obsoleto)
1 octeto 0 = No compatible
1 = Compatible

Reservado después de la versión 0.98.
Este parámetro dejó de estar disponible en la versión 0.98 de las especificaciones de funciones de Google y versiones posteriores en favor de la función de privacidad disponible en la versión 4.2 de las especificaciones de BT y versiones posteriores.
A2DP_source_offload_capability_mask 4 octetos Máscaras de bits para los tipos de códecs admitidos
Bit 0: SBC
Bit 1: AAC
Bit 2: APTX
Bit 3: APTX HD
Bit 4: LDAC
Los bits del 5 al 31 están reservados
bluetooth_quality_report_support 1 octeto Admite informes de eventos de calidad de Bluetooth
0 = No es compatible
1 = Es compatible
dynamic_audio_buffer_support 4 octetos Admite búfer de audio dinámico en el controlador Bluetooth
Máscaras de bits para los tipos de códec compatibles
Bit 0: SBC
Bit 1: AAC
Bit 2: APTX
Bit 3: APTX HD
Bit 4: LDAC
Los bits 5 a 31 están reservados
a2dp_offload_v2_support 1 octeto Admite los comandos de transferencia A2DP v2 en el controlador Bluetooth (consulta Iniciar transferencia A2DP y Detener transferencia A2DP).
0 = No se admite
1 = Se admite

Resultados del análisis por lotes

Un objetivo de diseño es mejorar la forma en que se entregan las notificaciones del evento de respuesta de la búsqueda de Bluetooth LE al host para ahorrar energía en el host.

Cuando se reduce la frecuencia con la que el controlador notifica al procesador de la app host para analizar los resultados, el procesador de la app host puede permanecer inactivo o en modo de suspensión durante más tiempo. Esto reduce el consumo de energía en el host. El parámetro que se muestra total_scan_results_storage de LE_Get_Vendor_Capabilities_Command indica la capacidad del chip para almacenar los resultados del análisis.

Esta función se enfoca en la administración y configuración de la función de almacenamiento de resultados de la búsqueda LE en el controlador Bluetooth. El almacenamiento se usa para agrupar temporalmente los datos de anuncios y analizar los datos y metadatos que recibe el controlador para enviarlos más tarde al host.

El firmware debe admitir dos tipos de lotes, que se pueden activar de forma simultánea:

  • Truncado. Contiene los siguientes elementos de información: {MAC, TX Power, RSSI, Timestamp}
  • Completo. Contiene los siguientes elementos de información: {MAC, TX Power, RSSI, Timestamp, Adv Data, Scan Response}

LE_Batch_Scan_Command

OCF: 0x156

Parámetro de comando Tamaño Propósito
Batch_Scan_opcode 1 octeto 0x1: Habilita la función específica del cliente.
0x2: Establece los parámetros de almacenamiento de análisis por lotes.
0x3: Establece los parámetros de análisis por lotes.
0x4: Lee los parámetros de resultados del análisis por lotes.

Se generará un evento de comando completo para este comando. Si habilitas la función específica del cliente, no se iniciará el análisis.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
Batch_Scan_opcode 1 octeto 0x1: Habilita la función específica del cliente.
0x2: Establece los parámetros de almacenamiento de análisis por lotes.
0x3: Establece los parámetros de análisis por lotes.
0x4: Lee los parámetros de resultados del análisis por lotes.

LE_Batch_Scan_Command: Habilita la función específica del cliente.

Sub-OCF: 0x01

Parámetro de subcomando Tamaño Propósito
enable_customer_specific_feature_set 1 octeto 0x01: Habilita la función de análisis por lotes.
0x00: Inhabilita la función de análisis por lotes.

Se generará un evento de comando completo para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
Batch_Scan_opcode 1 octeto 0x1: Habilita la función específica del cliente.
0x2: Establece los parámetros de almacenamiento de análisis por lotes.
0x3: Establece los parámetros de análisis por lotes.
0x4: Lee los parámetros de resultados del análisis por lotes.

LE_Batch_Scan_Command: Establece el subcomando de parámetros de almacenamiento de análisis por lotes

Sub OCF: 0x02

Parámetro de subcomando Tamaño Propósito
Batch_Scan_Full_Max 1 octeto Es el espacio de almacenamiento máximo (en %) asignado al estilo completo.
[Rango: 0-100]
Batch_Scan_Truncated_Max 1 octeto Es el espacio de almacenamiento máximo (en %) asignado al estilo truncado.
[Rango: 0-100]
Batch_Scan_Notify_Threshold 1 octeto Establece el nivel de notificación (en %) para un grupo de almacenamiento individual.
[Rango: 0-100]
Si estableces el valor en 0, se inhabilitará la notificación. Se genera un evento de HCI específico del proveedor (subevento de incumplimiento del umbral de almacenamiento)

Se generará un evento de comando completo para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
Batch_scan_opcode 1 octeto 0x02 [Establece parámetros de análisis por lotes]

LE_Batch_Scan_Command: Establece el subcomando de parámetros de análisis por lotes

Sub OCF: 0x03

Parámetro de subcomando Tamaño Propósito
Batch_Scan_Mode 1 octeto 0x00: El análisis por lotes está inhabilitado.
0x01: El modo truncado está habilitado.
0x02: El modo completo está habilitado.
0x03: Los modos truncado y completo están habilitados.
Duty_cycle_scan_window 4 octetos Tiempo de análisis por lotes (cantidad de ranuras)
Duty_cyle_scan_interval 4 octetos Período del intervalo de análisis por lotes (cantidad de ranuras)
own_address_type 1 octeto 0x00: Dirección pública del dispositivo
0x01: Dirección aleatoria del dispositivo
Batch_scan_Discard_Rule 1 octeto 0: Descarta el anuncio más antiguo.
1: Descarta el anuncio con el RSSI más débil.

Este subcomando iniciará el análisis por lotes, si está habilitado. En el escaneo truncado, los resultados se almacenan de forma truncada, donde la clave única para el estilo truncado = {BD_ADDR, scan_interval}. Esto significa que solo se registrará un BD_ADDR will para cada intervalo de análisis. El registro que se debe conservar para el modo truncado es el siguiente: {BD_ADDR, Tx Power, RSSI, Timestamp}.

Cuando se habilita el modo completo, se usará el escaneo activo y se registrarán las respuestas de escaneo. La clave única de estilo completo = {MAC, paquete de anuncio}, independientemente del intervalo de análisis. El registro que se debe conservar para el modo completo es {BD_ADDR, Tx Power, RSSI, Timestamp, Ad packet, Scan Response}. En el estilo completo, el mismo paquete de anuncios, cuando se ve varias veces en diferentes intervalos de análisis, se registra solo una vez. Sin embargo, en el modo truncado, lo que interesa es la visibilidad de BA_ADDR en diferentes intervalos de análisis (una vez por intervalo de análisis). El RSSI es el valor promedio de todos los duplicados de un anuncio único dentro de un intervalo de análisis.

Se generará un evento de comando completo para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
Batch_scan_opcode 1 octeto 0x03 [Establece parámetros de análisis por lotes]

LE_Batch_Scan_Command: Subcomando para leer los resultados del análisis por lotes

Sub OCF: 0x04

Parámetro de subcomando Tamaño Propósito
Batch_Scan_Data_read 1 octeto 0x01: Datos del modo truncado
0x02: Datos del modo completo

Se generará un evento de comando completo para este comando. Cuando el host emite este comando, es posible que todos los resultados del controlador no se ajusten a un evento de comando completo. El host iterará la emisión de este comando hasta que los resultados correspondientes en el evento Command Complete indiquen 0 en la cantidad de registros, lo que indica que el controlador no tiene más registros para comunicarse con el host. Cada evento de comando completo puede contener varios registros de un solo tipo de datos (completo o truncado).

Las referencias de tiempo del controlador y del host no están sincronizadas. La unidad de la marca de tiempo es de 50 ms. El valor de la marca de tiempo se basa en el momento en que el host proporciona Read_Batch_Scan_Results_Sub_cmd. Si la hora de llegada de un comando es T_c en el firmware, la hora real en la que se tomó la marca de tiempo en el firmware es T_fw. El período del informe será (T_c - T_fw). T_c y T_fw están en el dominio de tiempo del firmware. Esto permite que el host calcule hace cuánto tiempo ocurrió el evento.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
Batch_scan_opcode 1 octeto 0x03 [Establece parámetros de análisis por lotes]
Batch_Scan_data_read 1 octeto Identifica el formato (truncado o completo).
num_of_records 1 octeto Cantidad de registros de Batch_Scan_data_read
format_of_data Variable Modo truncado:
Address[0]: 6 octetos
Address_Type[0]: 1 octeto
Tx_Pwr[0]: 1 octeto
RSSI[0] : 1 octeto
Timestamp[0]: 2 octetos
[multiple records (num_of_records) with above format]

Modo completo:
Address[0]: 6 octetos
Address_Type[0]: 1 octeto
Tx_Pwr[0]: 1 octeto
RSSI[0]: 1 octeto
Timestamp[0]: 2 octetos
Adv packet_len[0]: 1 octeto
Adv_packet[0]: Adv_packet_len octetos
Scan_data_resp_len[0]: 1 octeto
Scan_data_resp[0]: Scan_data_resp octetos
[multiple records with above format (num_of_records)]

Filtro de contenido de paquetes publicitarios

Úsalo para habilitar, inhabilitar o configurar el filtro de contenido de paquetes publicitarios (APCF) en el controlador. El APCF filtra los informes de publicidad en el controlador, pero no filtra la publicidad periódica.

LE_APCF_Command

OCF: 0x157

Parámetro de comando Tamaño Propósito
APCF_opcode 1 octeto 0x00: Habilitación de APCF
0x01: APCF establece parámetros de filtrado
0x02: Dirección del emisor de APCF
0x03: UUID del servicio de APCF
0x04: UUID de solicitud de servicio de APCF
0x05: Nombre local de APCF
0x06: Datos del fabricante de APCF
0x07: Datos del servicio de APCF
0x08: Servicio de descubrimiento de transporte de APCF
0x09: Filtro de tipo de anuncio de APCF
0x10 a 0xAF: Reservado para uso futuro
0xB0 a 0xDF: Reservado para el proveedor
0xE0 a 0xFE: Reservado para uso futuro
0xFF: APCF lee funciones extendidas

Se generará un evento de comando completo para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de la devolución
APCF_opcode 1 octeto 0x00: Habilitación de APCF
0x01: APCF establece parámetros de filtrado
0x02: Dirección del emisor de APCF
0x03: UUID del servicio de APCF
0x04: UUID de solicitud de servicio de APCF
0x05: Nombre local de APCF
0x06: Datos del fabricante de APCF
0x07: Datos del servicio de APCF
0x08: Servicio de descubrimiento de transporte de APCF
0x09: Filtro de tipo de anuncio de APCF
0x10 a 0xAF: Reservado para uso futuro
0xB0 a 0xDF: Reservado para el proveedor
0xE0 a 0xFE: Reservado para uso futuro
0xFF: APCF lee funciones extendidas

LE_APCF_Command: Enable_sub_cmd

Sub OCF: 0x00

Parámetro de subcomando Tamaño Propósito
APCF_enable 1 octeto 0x01: Habilita la función APCF.
0x00: Inhabilita la función APCF.

Se generará un evento de comando completado para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
APCF_opcode 1 octeto 0x0: Habilita APCF
APCF_Enable 1 octeto La habilitación o inhabilitación se establece a través de APCF_enable.

LE_APCF_Command: set_filtering_parameters_sub_cmd

Este subcomando se usa para agregar o borrar una especificación de filtro o borrar una lista de filtros para el filtrado en el chip.

Sub-OCF: 0x01

Parámetro de subcomando Tamaño Propósito
APCF_Action 1 octeto 0x00: Agregar
0x01: Borrar
0x02: Borrar
La opción Borrar borrará el filtro específico junto con las entradas de atributos asociadas en otras tablas.
Borrar borrará todos los filtros y las entradas asociadas en otras tablas.
APCF_Filter_Index 1 octeto Índice de filtro (0, max_filter-1)
APCF_Feature_Selection 2 octetos Máscaras de bits para las funciones seleccionadas:
Bit 0: Se establece para habilitar el filtro de dirección de transmisión.
Bit 1: Se establece para habilitar el filtro de cambio de datos de servicio.
Bit 2: Se establece para habilitar la verificación de UUID de servicio.
Bit 3: Se establece para habilitar la verificación de UUID de solicitud de servicio.
Bit 4: Se establece para habilitar la verificación de nombre local.
Bit 5: Se establece para habilitar la verificación de datos del fabricante.
Bit 6: Se establece para habilitar la verificación de datos de servicio.
Bit 7: Se establece para habilitar la verificación del servicio de descubrimiento de transporte.
Bit 8: Se establece para habilitar la verificación del tipo de anuncio.
APCF_List_Logic_Type 2 octetos Operación lógica para cada selección de atributos (posición por bit) especificada en APCF_Feature_Selection.
Solo es válido cuando se habilita una función.
Valor de la posición de bit:
0: O
1: Y
Si se selecciona la lógica "Y", un paquete de ADV pasará el filtro solo si contiene TODAS las entradas de la lista.
Si se selecciona la lógica "O", un paquete ADV pasará el filtro si contiene alguna de las entradas de la lista.
APCF_Filter_Logic_Type 1 octeto 0x00: O
0x01: Y
Nota: El tipo de lógica es N/A para los primeros tres campos de APCF_Feature_Selection, que siempre es la lógica "Y". Solo se aplican a los cuatro campos (bit 3 a bit 6) de APCF_Feature_Selection.
rssi_high_thresh 1 octeto [en dBm]
Se considera que el anunciante se vio solo si la señal es superior al umbral alto de RSSI. De lo contrario, el firmware debe comportarse como si nunca lo hubiera visto.
delivery_mode 1 octeto 0x00: immediate
0x01: on_found
0x02: batched
onfound_timeout 2 octetos Solo es válido si delivery_mode es on_found.
[en milisegundos]
Es el tiempo que tarda el firmware en permanecer y recopilar anuncios adicionales antes de generar informes.
onfound_timeout_cnt 1 octeto Solo es válido si delivery_mode es on_found.
[count]
Si un anuncio en onFound permanece en el firmware durante la duración de onfound_timeout, se recopilarán algunos anuncios y se verificará el recuento. Si el recuento supera onfound_timeout_cnt, se informa OnFound inmediatamente después.
rssi_low_thresh 1 octeto Solo es válido si delivery_mode es on_found.
[en dBm]
El paquete del anunciante se considera no visto si el RSSI del paquete recibido no está por encima del umbral bajo de RSSI.
onlost_timeout 2 octetos Solo es válido si delivery_mode es on_found.
[en milisegundos]
Si un anuncio, después de encontrarse, no se ve de forma contigua durante el período lost_timeout, se informará de inmediato que se perdió.
num_of_tracking_entries 2 octetos Solo es válido si delivery_mode es on_found.
[count]
Es la cantidad total de anunciantes a los que se les hará un seguimiento por filtro.

Los valores de RSSI deben usar el complemento a 2 para representar valores negativos.

El host debe poder configurar varios filtros con APCF_Application_Address_type establecido en 0x02 (para todas las direcciones de la emisora) para administrar varias combinaciones de filtros.

Los filtros, los lotes y los informes son conceptos relacionados entre sí. Cada anuncio y la respuesta de análisis relacionada deberán pasar por todos los filtros, uno tras otro. Por lo tanto, las acciones resultantes (delivery_mode) están estrechamente vinculadas al filtrado. Los modos de entrega son los siguientes: report_immediately, batch y onFound. El valor de OnLost se relaciona con OnFound en el sentido de que vendrá después de OnFound cuando se pierda.

Este flujo de procesamiento representa el modelo conceptual:

Cuando se recibe una trama de anuncio (o respuesta de análisis), se aplica a todos los filtros en orden serial. Es posible que un anuncio pueda generar informes inmediatos basados en un filtro y un procesamiento por lotes del mismo debido a una acción de filtro diferente.

Los umbrales de nivel de RSSI (alto y bajo) permiten controlar cuándo la trama es visible para el procesamiento del filtro, incluso cuando el controlador recibe un paquete válido. En caso de que el modo de entrega se establezca como inmediato o por lotes, se considera el RSSI de una trama para un procesamiento adicional del controlador. Las diferentes apps necesitan diferentes informes y comportamientos de lotes. Esto permite que varias apps tengan informes directos o procesamiento por lotes de resultados en el firmware de forma simultánea. Un ejemplo es un caso en el que un análisis por lotes está activo desde una app y, más tarde, otra app emite un análisis de LE normal. Antes de que se emita un análisis por lotes, el framework o la app establecen los filtros adecuados. Más tarde, cuando la segunda app emite un análisis normal, continúa el procesamiento por lotes anterior. Sin embargo, debido al escaneo normal, es similar a agregar conceptualmente un filtro nulo (junto con todos los filtros existentes) junto con el comando de escaneo de LE. Los parámetros del comando de análisis de LE tienen prioridad cuando están activos. Cuando se inhabilita el análisis de LE normal, el controlador volverá a un análisis por lotes anterior, si existía.

El modo de publicación de OnFound se basa en los filtros configurados. Una combinación que activa la acción de un filtro para que se realice correctamente se considera la entidad a la que se debe hacer un seguimiento para onLost. El evento correspondiente es el subevento de seguimiento de anuncios de LE.

La transición OnFound/OnLost para un filtro (si está habilitada) se verá de la siguiente manera:

Se generará un evento de comando completo para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
APCF_opcode 1 octeto 0x01: APCF establece parámetros de filtrado
APCF_Action 1 octeto APCF_Action del comando de repetición
APCF_AvailableSpaces 1 octeto Cantidad de entradas disponibles en la tabla de filtros

LE_APCF_Command: broadcast_address_sub_cmd

Este subcomando se usa para agregar o borrar una dirección del anunciante o para borrar la lista de direcciones del anunciante para el filtrado integrado en el chip.

Sub OCF: 0x02

Parámetro de subcomando Tamaño Propósito
APCF_Action 1 octeto 0x00: Agregar
0x01: Borrar
0x02: Borrar
La opción Borrar borrará la dirección del emisor especificada en el filtro especificado.
La opción Borrar borrará todas las direcciones de los transmisores en el filtro especificado.
APCF_Filter_Index 1 octeto Índice de filtro (0, max_filter-1)
APCF_Broadcaster_Address 6 octetos Es la dirección de 6 bytes del dispositivo que se agregará o quitará de la lista de direcciones del emisor.
APCF_Application_Address_type 1 octeto 0x00: Público
0x01: Aleatorio
0x02: N/A (ignora el tipo de dirección)
Para filtrar informes publicitarios con tipos de direcciones de identidad (0x02, 0x03). Para obtener informes publicitarios con los tipos de direcciones 0x02 y 0x03, establece este campo en 0x02: NA (ignora el tipo de dirección).

Se generará un evento de comando completo para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
APCF_opcode 1 octeto 0x02: Dirección del emisor de APCF
APCF_Action 1 octeto APCF_Action del comando de repetición
APCF_AvailableSpaces 1 octeto Cantidad de entradas libres que aún están disponibles en la tabla de direcciones de transmisión

LE_APCF_Command: service_uuid_sub_cmd

Este subcomando se usa para agregar o borrar un UUID de servicio o para borrar una lista de UUID de servicio para el filtrado en el chip.

Sub OCF: 0x03

Parámetro de subcomando Tamaño Propósito
APCF_Action 1 octeto 0x00: Agregar
0x01: Borrar
0x02: Borrar
La opción Borrar borrará la dirección UUID del servicio especificada en el filtro especificado.
Clear borrará todos los UUIDs de servicio en el filtro especificado.
APCF_Filter_Index 1 octeto Índice de filtro (0, max_filter-1)
APCF_UUID 2, 4 y 16 octetos El UUID del servicio (16, 32 o 128 bits) para agregarlo a la lista o borrarlo de ella
APCF_UUID_MASK 2, 4 y 16 octetos La máscara de UUID del servicio (16 bits, 32 bits o 128 bits) que se agregará a la lista. Debe tener la misma longitud que APCF_UUID..

Se generará un evento de comando completo para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
APCF_opcode 1 octeto 0x03: UUID del servicio de APCF
APCF_Action 1 octeto APCF_Action del comando de repetición
APCF_AvailableSpaces 1 octeto Cantidad de entradas libres que aún están disponibles en la tabla UUID del servicio

LE_APCF_Command: solicitation_uuid_sub_cmd

Este subcomando se usa para agregar o borrar un UUID de solicitud o para borrar una lista de UUID de solicitud para el filtrado en el chip.

Sub OCF: 0x04

Parámetro de subcomando Tamaño Propósito
APCF_Action 1 octeto 0x00: Agregar
0x01: Borrar
0x02: Borrar
La opción Borrar borrará la dirección UUID de solicitud en el filtro especificado.
La opción Borrar borrará todos los UUID de solicitud en el filtro especificado.
APCF_Filter_Index 1 octeto Índice de filtro (0, max_filter-1)
APCF_UUID 2, 4 y 16 octetos El UUID de solicitud (de 16, 32 o 128 bits) que se agregará a la lista o se borrará de ella
APCF_UUID_MASK 2, 4 y 16 octetos Es la máscara de UUID de solicitud (de 16, 32 o 128 bits) que se agregará a la lista. Debe tener la misma longitud que APCF_UUID.

Se generará un evento de comando completo para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
APCF_opcode 1 octeto 0x04: UUID de solicitud de APCF
APCF_Action 1 octeto APCF_Action del comando de repetición
APCF_AvailableSpaces 1 octeto Cantidad de entradas gratuitas que aún están disponibles en la tabla de UUID de solicitud

LE_APCF_Command: local_name_sub_cmd

Este subcomando se usa para agregar o borrar una cadena de nombre local o para borrar la lista de cadenas de nombre local para el filtrado en el chip.

Sub OCF: 0x05

Parámetro de subcomando Tamaño Propósito
APCF_Action 1 octeto 0x00: Agregar
0x01: Borrar
0x02: Borrar
La acción Borrar borrará la cadena de nombre local especificada en el filtro especificado.
Clear borrará todas las cadenas de nombres locales del filtro especificado.
APCF_Filter_Index 1 octeto Índice de filtro (0, max_filter-1)
APCF_LocName_Mandata_or_SerData Tamaño variable Es una cadena de caracteres para el nombre local.

Notas:
  • Actualmente, la cantidad máxima de caracteres en una cadena de nombre local es de 29.
  • No se aplica cuando la acción es "Borrar" (0x2).

Se generará un evento de comando completo para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
APCF_opcode 1 octeto 0x05: Nombre local de APCF
APCF_Action 1 octeto APCF_Action del comando de repetición
APCF_AvailableSpaces 1 octeto Cantidad de entradas gratuitas que aún están disponibles en la tabla de nombres locales

LE_APCF_Command: manf_data_sub_cmd

Este subcomando se usa para agregar o borrar una cadena de datos del fabricante o para borrar la lista de cadenas de datos del fabricante para el filtrado en el chip.

Sub OCF: 0x06

Parámetro de subcomando Tamaño Propósito
APCF_Action 1 octeto 0x00: Agregar
0x01: Borrar
0x02: Borrar
La opción Borrar borrará la cadena de datos del fabricante especificada en el filtro especificado.
Clear borrará todas las cadenas de datos del fabricante en el filtro especificado.
APCF_Filter_Index 1 octeto Índice de filtro (0, max_filter-1)
APCF_LocName_Mandata_or_SerData Tamaño variable Es una cadena de caracteres para los datos del fabricante.

Notas:
  • Actualmente, la cantidad máxima de caracteres en una cadena de nombre local es de 29.
  • No se aplica cuando la acción es "Borrar" (0x2).
APCF_ManData_Mask Tamaño variable La máscara de datos de fabricación que se agregará a la lista. Debe tener la misma longitud que APCF_LocName_or_ManData_or_SerData.

Se generará un evento de comando completo para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
APCF_opcode 1 octeto 0x06: Datos del fabricante de APCF
APCF_Action 1 octeto APCF_Action del comando de repetición
APCF_AvailableSpaces 1 octeto Cantidad de entradas gratuitas que aún están disponibles en la tabla Datos del fabricante

LE_APCF_Command: service_data_sub_cmd

Este subcomando se usa para agregar o borrar una cadena de datos de servicio o para borrar la lista de cadenas de datos de servicio para el filtrado en chip.

Sub OCF: 0x07

Parámetro de subcomando Tamaño Propósito
APCF_Action 1 octeto 0x00: Agregar
0x01: Borrar
0x02: Borrar
La acción Borrar borrará la cadena de datos de servicio especificada en el filtro especificado.
Clear borrará todas las cadenas de datos de servicio en el filtro especificado.
APCF_Filter_Index 1 octeto Índice de filtro (0, max_filter-1)
APCF_LocName_Mandata_or_SerData Tamaño variable Es una cadena de caracteres para los datos del servicio.

Notas:
  • Actualmente, la cantidad máxima de caracteres en una cadena de nombre local es de 29.
  • No se aplica cuando la acción es "Borrar" (0x2).
APCF_LocName_Mandata_or_SerData_Mask Tamaño variable Es la máscara de datos del servicio que se agregará a la lista. Debe tener la misma longitud que APCF_LocName_or_ManData_or_SerData..

Se generará un evento de comando completo para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
APCF_opcode 1 octeto 0x07: Datos del servicio de APCF
APCF_Action 1 octeto APCF_Action del comando de repetición
APCF_AvailableSpaces 1 octeto Cantidad de entradas gratuitas que aún están disponibles para la tabla Datos de servicio

LE_APCF_Command: ad_type_sub_cmd

Este subcomando se usa para agregar o borrar un tipo de AD o para borrar una lista de tipos de AD para el filtrado en chip. Usa read_extended_features_sub_cmd para verificar si este comando es compatible o no.
Cuando APCF_AD_DATA_Length es 0, filtra APCF_AD_TYPE sin comparar los datos de AD y la máscara de datos de AD. Si la longitud de los datos del paquete ADV recibido supera AD_DATA_LENGTH, compara solo los primeros AD_DATA_LENGTH bytes de los datos del anuncio y, luego, ignora los datos restantes.

Sub OCF: 0x09

Parámetro de subcomando Tamaño Propósito
APCF_Action 1 octeto 0x00: Agregar
0x01: Borrar
0x02: Borrar
La acción Borrar borrará el tipo de AD especificado en el filtro especificado.
La opción Borrar borrará todos los tipos de anuncios del filtro especificado.
APCF_Filter_Index 1 octeto Índice de filtro (0, max_filter-1)
APCF_AD_TYPE 1 octeto Es el tipo de anuncio para agregar a la lista o borrar de ella. Ignora cuando APCF_Action sea 0x02 (Borrar).
APCF_AD_DATA_Length 1 octeto 0x00: Significa que no se filtra el contenido de los datos.
Se ignora cuando APCF_Action es 0x02 (Borrar).
APCF_AD_DATA Tamaño variable De tamaño variable, según APCF_AD_DATA_Length
Se ignora cuando APCF_Action es 0x02 (Borrar)
APCF_AD_DATA_MASK Tamaño variable De tamaño variable, según APCF_AD_DATA_Length
Se ignora cuando APCF_Action es 0x02 (Clear)
Debe tener la misma longitud que APCF_AD_DATA.

Se generará un evento de comando completado para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
APCF_opcode 1 octeto 0x09: Tipo de anuncio de APCF
APCF_Action 1 octeto APCF_Action del comando de repetición
APCF_AvailableSpaces 1 octeto Cantidad de entradas gratuitas que aún están disponibles en la tabla de tipos de anuncios

LE_APCF_Command: read_extended_features_sub_cmd

Este subcomando se usa para leer funciones de APCF extendidas.

Sub OCF: 0xFF

Parámetro de subcomando Tamaño Propósito
No aplicable Parámetro de comando vacío.

Se generará un evento de comando completo para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
APCF_opcode 1 octeto 0xFF: APCF_Read_Extended_Features
APCF_extended_features 2 octetos

Máscaras de bits para funciones extendidas compatibles:

  • Bit 0: Admite el filtro de servicio de descubrimiento de transporte
  • Bit 1: Admite el filtro de tipo de anuncio
  • Bits 2 a 15: Reservados para uso futuro

Valor del bit

  • 0 = No se admite
  • 1 = Compatible

Comando de información de energía y actividad del controlador

El objetivo de esta información es que las funciones superiores del sistema host analicen las actividades totales de todos los componentes, incluido el controlador de BT y su estado de macro, junto con lo que sucede en las apps y el framework. Para ello, se requiere la siguiente información de la pila de BT y el controlador:

  • Pila de BT: Informa el estado macrooperativo actual del controlador
  • Firmware: Informe de información de actividad y energía agregadas

Estados de macro de pila de host de BT, según se determine a nivel del usuario:

  • Inactivo: [análisis de páginas, anuncio de LE, análisis de consultas, análisis de LE]
  • Escaneo: [paging/inquiry/trying to connect]
  • Activo: [vínculo de LCA activado, vínculo de SCO en curso, modo de sniff]

Las actividades de las que el controlador realiza un seguimiento durante su vida útil son el tiempo de Tx, el tiempo de Rx, el tiempo inactivo y la energía total consumida. Se borran cuando se leen del host.

LE_Get_Controller_Activity_Energy_Info

Este es un comando específico del proveedor.

OCF: 0x159

Parámetro de subcomando Tamaño Propósito
NA Parámetros de comando vacíos

Se generará un evento de comando completo para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
total_tx_time_ms 4 octetos Tiempo total de Tx
total_rx_time_ms 4 octetos Tiempo total de ejecución de Rx
total_idle_time_ms 4 octetos Tiempo total en estado inactivo (estados de bajo consumo que no son de suspensión)
total_energy_used 4 octetos Energía total utilizada [producto de la corriente (mA), el voltaje (V) y el tiempo (ms)]

Comando de parámetros de análisis de conjuntos extendidos de LE

Este comando se puede usar para habilitar una ventana de análisis y un intervalo más grandes en el controlador. Según la especificación BT Core 5.2, una ventana de análisis y un intervalo tienen un límite superior de 10.24 segundos, lo que dificulta los intervalos de análisis superiores a 10.24 segundos para las apps.

Referencia básica: Especificación de BT Core 5.2, página 2493 (comando LE Set Scan Parameters)

OCF: 0x15A

Parámetro de comando Tamaño Propósito
LE_Ex_Scan_Type 1 octeto 0x00: Análisis pasivo. No se deben enviar paquetes SCAN_REQ (predeterminado).
0x01: Análisis activo. Se pueden enviar SCAN_REQ paquetes.
LE_Ex_Scan_Interval 4 octetos Se define como el intervalo de tiempo desde que el controlador inició su último análisis de LE hasta que comenzó el siguiente análisis de LE.
Rango: De 0x0004 a 0x00FFFFFF
Valor predeterminado: 0x0010 (10 ms)
Tiempo = N × 0.625 ms
Rango de tiempo: De 2.5 ms a 10,442.25 segundos
LE_Ex_Scan_Window 4 octetos Es la duración del análisis de LE. LE_Scan_Window debe ser menor o igual que LE_Scan_Interval.
Rango: De 0x0004 a 0xFFFF
Valor predeterminado: 0x0010 (10 ms)
Tiempo = N × 0.625 ms
Rango de tiempo: De 2.5 ms a 40.95 segundos
Own_Address_Type 1 octeto 0x00: Dirección pública del dispositivo (predeterminada)
0x01: Dirección aleatoria del dispositivo
LE_Ex_Scan_Filter_Policy 0x00: Acepta todos los paquetes de anuncios (predeterminado). Se deben ignorar los paquetes de publicidad dirigidos que no se dirijan a este dispositivo.
0x01: Ignora los paquetes de anuncios de los dispositivos que no están en la lista Solo de la lista blanca. Se deben ignorar los paquetes de publicidad dirigidos que no se dirijan a este dispositivo.

Se generará un evento de comando completo para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo

Comando para obtener información de depuración del controlador

El objetivo de este elemento de información es que un host adquiera información de depuración del controlador, en formato binario, para el procesamiento posterior y el análisis. Esto ayuda a depurar problemas en el campo y les proporciona a los ingenieros un kit de herramientas para registrar información para el análisis. Un controlador puede proporcionar la información cuando un host lo solicita a través del evento (subevento de información de depuración del controlador) o de forma autónoma cuando el controlador lo desee. Algunos ejemplos de uso podrían ser informar información sobre el estado del firmware, información sobre volcados de fallas, información de registro, etcétera.

OCF: 0x15B

Parámetro de comando Tamaño Propósito
N/A Lista de parámetros de comando vacía

Se generará un evento de comando completado para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo

Compatibilidad con la descarga de hardware de A2DP

La función de descarga de A2DP admite la descarga del proceso de codificación de audio A2DP a un procesador de audio conectado al controlador de BT. La transmisión de datos de audio codificados pasa directamente del procesador de audio al controlador de BT sin la participación del host de BT. El host de BT sigue siendo responsable de la configuración y el control de la sesión de A2DP. Hay dos versiones de los comandos disponibles. Los comandos heredados con sub-OCF 0x01-0x02 solo admiten códecs de código abierto. Las versiones con Sub-OCF 0x03-0x04 son independientes del códec configurado.

OCF: 0x15D

Inicio de la transferencia A2DP (heredado)

Sub-OCF: 0x01

Usa este comando para configurar el proceso de descarga de A2DP y para iniciar la transmisión de A2DP.

Parámetro de comando Tamaño Propósito
Codec 4 octetos Especifica el tipo de códec
0x01: SBC
0x02: AAC
0x04: APTX
0x08: APTX HD
0x10: LDAC
Max_Latency 2 octetos Latencia máxima permitida (en ms). Un valor de cero inhabilita el volcado.
SCMS-T_Enable 2 octetos Octeto 0: Es una marca que habilita la adición del encabezado SCMS-T.
  • 0x00: No se incluye el encabezado SCMS-T.
  • 0x01: Se incluye el encabezado SCMS-T.

Octeto 1: Es el valor del encabezado SCMS-T cuando está habilitado.

Sampling_Frequency 4 octetos 0x01: 44,100 Hz
0x02: 48,000 Hz
0x04: 88,200 Hz
0x08: 96,000 Hz
Bits_Per_Sample 1 octeto 0x01: 16 bits por muestra
0x02: 24 bits por muestra
0x04: 32 bits por muestra
Channel_Mode 1 octeto 0x01: Mono
0x02: Estéreo
Encoded_Audio_Bitrate 4 octetos Es la tasa de bits de audio codificada en bits por segundo.
0x00000000: La tasa de bits de audio no se especifica o no se usa.
0x00000001 - 0x00FFFFFF: Es la tasa de bits de audio codificada en bits por segundo.
0x01000000 - 0xFFFFFFFF: Reservado.
Connection_Handle 2 octetos Control de conexión de la conexión A2DP que se está configurando
L2CAP_Channel_ID 2 octetos Es el ID de canal L2CAP que se usará para esta conexión A2DP.
L2CAP_MTU_Size 2 octetos Tamaño máximo de la MTU de L2CAP que contiene paquetes de audio codificados
Codec_Information 32 octetos Información específica del códec

Códec SBC:

Consulta los elementos de información específicos del códec SBC en A2DP v1.3.
Octeto 0: Longitud del bloque | Subbandas | Método de asignación
Octeto 1: Valor mínimo del grupo de bits
Octeto 2: Valor máximo del grupo de bits
Octeto 3: Frecuencia de muestreo | Modo de canal
Octetos 4 a 31: reservados

Códec AAC:

Consulta los elementos de información específicos del códec AAC en A2DP v1.3
Octeto 0: Tipo de objeto
Octeto 1: b7: VBR
Octetos 2 a 31: reservados

Códec LDAC:

Octetos del 0 al 3: ID del proveedor
0x0000012D

Octetos 4 y 5: ID de códec
0x00AA: LDAC
Todos los demás valores están reservados

Octeto 6: Índice de tasa de bits:
0x00: Alto
0x01: Medio
0x02: Bajo
0x03 - 0x7E: Reservado
0x7F: ABR (tasa de bits adaptable)
0x80 - 0xFF: Reservado

Octeto 7: Modo de canal de LDAC
0x01: Estéreo
0x02: Doble
0x04: Mono
Se reservan los demás

Octetos del 8 al 31: reservados

Todos los demás códecs:

Octetos del 0 al 31: reservados

Se generará un evento de comando completo para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
Sub_Opcode 1 octeto 0x01: Inicio de la transferencia A2DP

Cómo iniciar la transferencia A2DP

Sub OCF: 0x03

Usa este comando para configurar el proceso de descarga de A2DP y para iniciar la transmisión de A2DP.

Parámetro de comando Tamaño Propósito
Connection Handle 2 octetos Control de la conexión HCI activa
L2CAP_Channel_ID 2 octetos Es el identificador del canal L2CAP abierto para la transmisión de A2DP.
Data_Path_Direction 1 octeto 0x00: Salida (fuente/combinación de AVDTP)
0x01: Entrada (sumidero/división de AVDTP)
Peer_MTU 2 octetos Es el tamaño máximo de los paquetes L2CAP negociados con el par.
CP_Enable_SCMS_T 1 octeto 0x00: Inhabilita el encabezado de protección de contenido SCMS-T.
0x01: Habilita el encabezado de protección de contenido SCMS-T.
CP_Header_SCMS_T 1 octeto Cuando el encabezado de protección de contenido SCMS-T está habilitado (CP_SCMS_T_Enable se establece en 0x01), define el valor del encabezado que precede al contenido de audio (consulta A2DP, sección 3.2.1-2) como se define en la sección 6.3.2 de Números asignados de Bluetooth.
Se ignora cuando no está habilitada la protección de contenido SCMS-T.
Vendor_Specific_Parameters_Length 1 octeto Es la longitud de los parámetros específicos del proveedor, que oscila entre 0 y 128.
El valor 0 se usa cuando no se proporcionan parámetros adicionales.
Vendor_Specific_Parameters De 0 a 128 octetos Parámetros específicos del proveedor que proporciona el HAL de audio Bluetooth, CodecParameters.vendorSpecificParameters[].

Se generará un evento de comando completo para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
Sub_Opcode 1 octeto 0x03: Iniciar la transferencia A2DP

Detener la transferencia A2DP (heredado)

Sub OCF: 0x02

Este comando se usa para detener la transmisión de descarga de A2DP.

Parámetro de comando Tamaño Propósito
N/A Lista de parámetros de comando vacía.

No se definen parámetros para este comando.

Se generará un evento de comando completo para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
Sub_Opcode 1 octeto 0x02: Detener la transferencia A2DP

Detener la transferencia A2DP

Sub OCF: 0x04

Este comando se usa para detener la transmisión de descarga de A2DP.

Parámetro de comando Tamaño Propósito
Connection Handle 2 octetos Control de la conexión HCI activa
L2CAP_Channel_ID 2 octetos Es el identificador del canal L2CAP abierto para la transmisión de A2DP.
Data_Path_Direction 1 octeto 0x00: Salida (fuente/combinación de AVDTP)
0x01: Entrada (sumidero/división de AVDTP)

Se generará un evento de comando completado para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
Sub_Opcode 1 octeto 0x04: Detener la transferencia A2DP

Comando de informe de calidad de Bluetooth

La función de comando del informe de calidad de BT inicia el mecanismo en el controlador Bluetooth para informar eventos de calidad de Bluetooth al host. Puedes habilitar cuatro opciones:

  • Modo de supervisión de calidad: El controlador envía periódicamente un subevento de BQR relacionado con la calidad del vínculo al host.
  • LSTO inminente: Si no se reciben paquetes del dispositivo BT conectado durante más de la mitad del valor de tiempo de espera de supervisión de vínculo (LSTO), el controlador informa un evento de LSTO inminente al host.
  • Audio entrecortado de A2DP: Cuando el controlador detecta factores que causan audio entrecortado, informa un evento de audio entrecortado de A2DP al host.
  • Voz entrecortada de (e)SCO: Cuando el controlador detecta factores que causan voz entrecortada, informa un evento de voz entrecortada de (e)SCO al host.
  • Inflamación de la raíz: El controlador envía este evento a la pila cuando el HAL o el controlador encuentran un error irrecuperable y deben reiniciar Bluetooth.
  • Registro de mensajes LMP/LL: El controlador envía el protocolo de enlace de mensajes LMP/LL con el dispositivo remoto al host.
  • Registro de programación de varios perfiles o coexistencia de Bluetooth: El controlador envía al host su información de programación para controlar varios perfiles de Bluetooth y la coexistencia inalámbrica en la banda de 2.4 GHz.
  • Mecanismo de información de depuración del controlador: Cuando está habilitado, el controlador puede informar de forma autónoma la información de registro de depuración al host a través del subevento de información de depuración del controlador.
  • Audio LE entrecortado: Cuando el controlador detecta factores que causan audio entrecortado, informa un evento de audio LE entrecortado al host.
  • Modo de estadísticas de RF avanzadas: El controlador informa su información relacionada con las estadísticas de RF al host y admite dos casos de uso de informes:
    • Informes periódicos
    • Activadores de eventos (inicio y detención de la transmisión y activación de eventos de calidad del vínculo)
  • BQR_Report_Action del comando de informe de calidad de Bluetooth: El host puede usar este comando HCI para obtener una consulta única para el modo de supervisión de calidad, el modo de monitor de energía o un modo de estadísticas de RF avanzadas.

OCF: 0x15E

Parámetro de comando Tamaño Propósito
BQR_Report_Action 1 octeto Acción para agregar o borrar informes de eventos de calidad establecidos en el parámetro BQR_Quality_Event_Mask, o bien borrarlos todos.

0x00: Agregar
0x01: Borrar
0x02: Borrar
0x03: Consulta única

Si borras los informes, se borrarán los informes de eventos de calidad específicos.
La opción Borrar borrará todos los informes de eventos de calidad (se puede ignorar el parámetro BQR_Quality_Event_Mask).

BQR_Quality_Event_Mask 4 octetos Máscaras de bits para los informes de eventos de calidad seleccionados.

Bit 0: Se establece para habilitar el modo de supervisión de calidad.
Bit 1: Se establece para habilitar el evento de LSTO inminente (para ACL/(e)SCO/ISO).
Bit 2: Se establece para habilitar el evento de audio entrecortado de A2DP.
Bit 3: Se establece para habilitar el evento de voz entrecortada de (e)SCO.
Bit 4: Se establece para habilitar el evento de inflamación de la raíz.
Bit 5: Se establece para habilitar el modo de supervisión de energía.
Bit 6: Se establece para habilitar el evento de audio LE entrecortado.
Bit 7: Se establece para habilitar el evento de falla de conexión.
Bit 8: Se establece para habilitar el activador de eventos del modo de estadísticas de RF avanzadas.
El bit 9 se establece para habilitar el informe periódico de estadísticas de RF avanzadas.
Los bits 10 a 14 están reservados.
Bit 15: Se establece para habilitar eventos de calidad específicos del proveedor.
Bit 16: Se establece para habilitar el registro de mensajes de LMP/LL.
Bit 17: Se establece para habilitar el registro de programación de Bluetooth Multi-link/Coex.
Bit 18: Se establece para habilitar el mecanismo de información de depuración del controlador.
Los bits del 19 al 30 están reservados.
Bit 31: Se establece para habilitar el seguimiento específico del proveedor.

BQR_Minimum_Report_Interval 2 octetos Define el intervalo de tiempo mínimo de los informes de eventos de calidad para los eventos de calidad seleccionados. El firmware del controlador no debe informar el siguiente evento dentro del intervalo de tiempo definido. La configuración del intervalo debe ser respectiva y exclusiva para los eventos de calidad que se agregan.

Unidad: ms
Valor predeterminado: 0 (sin limitación para el intervalo)
Rango: De 0 a 65,535 ms

BQR_Vendor_Specific_Quality_Event_Mask 4 octetos Son máscaras binarias para los informes de eventos de calidad específicos del proveedor seleccionados.
Este parámetro solo es válido cuando se establece el bit 15 de BQR_Quality_Event_Mask.

Los bits del 0 al 31 están reservados.

BQR_Vendor_Specific_Trace_Mask 4 octetos Máscaras de bits para los informes de seguimiento específicos del proveedor seleccionados.
Este parámetro solo es válido cuando se establece el bit 31 de BQR_Quality_Event_Mask.

Los bits del 0 al 31 están reservados.

Report_interval_multiple 4 octetos Es el multiplicador de BQR_Minimum_Report_Interval. Cuando este valor es >= 1, el intervalo de informes de BQR sigue el formato
. BQR_Report_Interval = BQR_Minimum_Report_Interval x Report_interval_multiple.
El firmware del controlador no debe informar el siguiente evento dentro del intervalo de tiempo definido. El parámetro de configuración de intervalo está dedicado específicamente a los eventos de calidad agregados.

Unidad: ms
Predeterminado: 1
Rango: De 0 a 4294967295 (0: es igual a 1)

Nota: Si el parámetro de configuración de BQR_Report_Interval es mayor que la capacidad del controlador, este debe mostrar el tiempo máximo de BQR_Report_Interval cuando se completa el comando.

Se generará un evento de comando completado para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
Current_Quality_Event_Mask 4 octetos Indica la configuración actual de la máscara de bits.
Bit 0: El modo de supervisión de calidad está habilitado.
Bit 1: Se habilitaron los informes de eventos de LSTO cercanos.
Bit 2: Los informes de eventos de audio entrecortado de A2DP están habilitados.
Bit 3: Los informes de eventos de voz entrecortada de (e)SCO están habilitados.
Bit 4: Los informes de eventos de inflamación de la raíz están habilitados.
Bit 5: El modo de supervisión de energía está habilitado.
Bit 6: Los informes de eventos de audio LE entrecortados están habilitados.
Bit 7: Evento de conexión fallida.
Bit 8: Se establece para habilitar el activador de eventos del modo de estadísticas de RF avanzadas.
Bit 9: Se establece para habilitar el informe periódico de estadísticas de RF avanzadas.
Los bits 10 a 14 están reservados.
Bit 15: Los informes de eventos de calidad específicos del proveedor están habilitados.
Bit 16: El registro de mensajes de LMP/LL está habilitado.
Bit 17: El registro de programación de Bluetooth Multi-link/Coex está habilitado.
Bit 18: El mecanismo de información de depuración del controlador está habilitado.
Los bits del 19 al 30 están reservados.
Bit 31: El registro específico del proveedor está habilitado.
Current_Vendor_Specific_Quality_Event_Mask 4 octetos Indica la configuración actual de la máscara de bits.
Current_Vendor_Specific_Trace_Mask 4 octetos Indica la configuración actual de la máscara de bits.
BQR_Report_interval 4 octetos Indica la configuración actual de la máscara de bits.
Current_Vendor_Specific_Trace_Mask 4 octetos La configuración de BQR_Report_interval. Debe ser el valor mínimo entre BQR_Minimum_Report_Interval × Report_interval_multiple o el intervalo de compatibilidad máximo del controlador.

Comando de búfer de audio dinámico

El búfer de audio dinámico reduce los errores de audio cambiando el tamaño del búfer de audio en el controlador Bluetooth según varias situaciones.

OCF: 0x15F

Obtén la capacidad de tiempo de almacenamiento en búfer de audio

Sub-OCF: 0x01

Usa este comando para obtener la función de tiempo de búfer de audio del controlador Bluetooth.

Parámetro de comando Tamaño Propósito
N/A Lista de parámetros de comando vacía

Se generará un evento de comando completo para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
Dynamic_Audio_Buffer_opcode 1 octeto 0x01: Obtén el tiempo de búfer de audio.
Audio_Codec_Type_Supported 4 octetos Máscaras de bits para los tipos de códecs admitidos
Bit 0: SBC
Bit 1: AAC
Bit 2: APTX
Bit 3: APTX HD
Bit 4: LDAC
Los bits del 5 al 31 están reservados
Audio_Codec_Buffer_Default_Time_For_Bit_0 2 octetos Es el tiempo de búfer predeterminado del tipo de códec de bit 0 especificado en Audio_Codec_Type_Supported.
Este valor debe ser 0 si no se admite el tipo de códec de bit 0.
Unidad: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 2 octetos Es el tiempo máximo de búfer del tipo de códec de bit 0 especificado en Audio_Codec_Type_Supported.
Este valor debe ser 0 si no se admite el tipo de códec de bit 0.
Unidad: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 2 octetos Es el tiempo de búfer mínimo del tipo de códec de bit 0 especificado en Audio_Codec_Type_Supported.
Este valor debe ser 0 si no se admite el tipo de códec de bit 0.
Unidad: ms
Audio_Codec_Buffer_Default_Time_For_Bit_1 2 octetos Es el tiempo de búfer predeterminado del tipo de códec de bit 1 especificado en Audio_Codec_Type_Supported.
Este valor debe ser 0 si no se admite el tipo de códec de bit 1.
Unidad: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 2 octetos Es el tiempo máximo de búfer del tipo de códec de bit 1 especificado en Audio_Codec_Type_Supported.
Este valor debe ser 0 si no se admite el tipo de códec de bit 1.
Unidad: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 2 octetos Es el tiempo de búfer mínimo del tipo de códec de bit 1 especificado en Audio_Codec_Type_Supported.
Este valor debe ser 0 si no se admite el tipo de códec de bit 1.
Unidad: ms
...... ...... ......
Audio_Codec_Buffer_Default_Time_For_Bit_31 2 octetos Es el tiempo de búfer predeterminado del tipo de códec de bits 31 especificado en Audio_Codec_Type_Supported.
Este valor debe ser 0 si no se admite el tipo de códec de 31 bits.
Unidad: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 2 octetos Es el tiempo máximo de búfer del tipo de códec de bits 31 especificado en Audio_Codec_Type_Supported.
Este valor debe ser 0 si no se admite el tipo de códec de 31 bits.
Unidad: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 2 octetos Es el tiempo de búfer mínimo del tipo de códec de bits 31 especificado en Audio_Codec_Type_Supported.
Este valor debe ser 0 si no se admite el tipo de códec de 31 bits.
Unidad: ms

Cómo establecer el tiempo del búfer de audio

Sub OCF: 0x02

Usa este comando para establecer el tiempo de búfer de audio en el controlador Bluetooth.

Parámetro de comando Tamaño Propósito
Audio_Codec_Buffer_Time 2 octetos Es el tiempo de búfer de audio solicitado para el códec que se usa actualmente.
Unidad: ms

Se generará un evento de comando completo para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
Dynamic_Audio_Buffer_opcode 1 octeto 0x02: Establece el tiempo del búfer de audio.
Audio_Codec_Buffer_Time 2 octetos Es el tiempo de búfer de audio actual en el controlador Bluetooth.
Unidad: ms

Evento de HCI (específico del proveedor)

En algunos casos, se requieren eventos de HCI específicos del proveedor. Consulta la Figura 5.4 en la página 1897 de la Especificación BT Core 5.2. El parámetro de evento 0 siempre contendrá el primer código de subevento, en función del cual se decodifica el resto del evento de HCI.

Parámetro del evento Tamaño Propósito
HCI_vendor_specific_event_code 1 octeto 0xFF
sub_event_code 1 octeto Un código de subevento tendrá un tamaño de 1 octeto, el byte que sigue inmediatamente a la longitud del parámetro en el paquete de eventos HCI.

Subevento de incumplimiento del umbral de almacenamiento

Este evento indica que se superó el umbral de almacenamiento.

Código de subevento = 0x54

Parámetro de subevento Tamaño Propósito
Ninguno

Subevento de cambio de estado de publicidad múltiple de LE

Este evento indica que una instancia publicitaria cambió de estado. Por el momento, este evento solo se usa para indicar qué instancia publicitaria se detuvo como resultado de una conexión.

Código de evento secundario = 0x55

Parámetro de subevento Tamaño Propósito
Advertising_instance 1 octeto Identifica la instancia publicitaria específica.
Los valores válidos son de 0 a max_advt_instances-1.
State_Change_Reason 1 octeto 0x00: Se recibió la conexión
Connection_handle 2 octetos Identifica la conexión que causó que se inhabilite la instancia de advt (0xFFFF si no es válida).

Subevento de seguimiento de anuncios de LE

Este evento indica cuándo se encuentra o se pierde un anunciante.

Código de evento secundario = 0x56

Parámetro de subevento Tamaño Propósito
APCF_Filter_Index 1 octeto Índice de filtro (0, max_filter-1)
Advertiser_State 1 octeto 0x00: Se encontró el anunciante
0x01: Se perdió el anunciante
Advt_Info_Present 1 octeto 0x00: La información del anunciante (Advt_Info) está presente
0x01: La información del anunciante (Advt_Info) no está presente
Advertiser_Address 6 octetos Dirección pública o aleatoria
Advertiser_Address_Type 1 octeto 0x00: Dirección pública
0x01: Dirección aleatoria
Advt_Info Tx_Pwr[0]: 1 octeto
RSSI[0]: 1 octeto
Timestamp[0]: 2 octetos
Adv packet_len[0]: 1 octeto
Adv_packet[0]: Adv_packet_len octetos
Scan_data_resp_len[0]: 1 octeto
Scan_data_resp[0]: Scan_data_resp octetos

Subevento de información de depuración del controlador

Un controlador usa este evento para proporcionar información de depuración binaria a un host.

Código de subevento = 0x57

Parámetro de subevento Tamaño Propósito
debug_block_byte_offset_start 2 octetos Desplazamiento de bytes del bloque de depuración desde el principio
last_block 1 octeto 0x00: Hay más datos de depuración
0x01: Último bloque binario; no hay más datos de depuración
cur_pay_load_sz 2 octetos Tamaño del bloque binario en un evento actual
Debug_Data Variable Datos de depuración de cur_payload_sz

Subevento del informe de calidad de Bluetooth

Este evento indica una de las siguientes situaciones: se produjo un evento de calidad de Bluetooth, el controlador subió el registro de mensajes LMP/LL y el registro de programación de Bluetooth multilink/coex, o bien el controlador volcó datos de información de depuración.

Parámetro de subevento Tamaño Propósito
Quality_Report_Id 1 octeto 0x01: Informes de calidad en el modo de supervisión.
0x02: Se acerca el LSTO.
0x03: Audio A2DP entrecortado.
0x04: Voz entrecortada de (e)SCO.
0x05 ~ 0x06: Reservado.
0x07: Audio LE entrecortado.
0x08: Falla de conexión.
0x09 ~ 0xFF: Reservado.
Packet_Types 1 octeto 0x01: ID
0x02: NULL
0x03: POLL
0x04: FHS
0x05: HV1
0x06: HV2
0x07: HV3
0x08: DV
0x09: EV3
0x0A: EV4
0x0B: EV5
0x0C: 2-EV3
0x0D: 2-EV5
0x0E: 3-EV3
0x0F: 3-EV5
0x11: DH1
0x12: DM3
0x13: DH3
0x14: DM5
0x15: DH5
0x16: AUX1
0x17: 2-DH1
0x18: 2-DH3
0x19: 2-DH5
0x1A: 3-DH1
0x1B: 3-DH3
0x1C: 3-DH5
0x1D ~ 0x50: Reservado
0x51: Paquete ISO
0x52 ~ 0xFF: Reservado
Connection_Handle 2 octetos Control de acceso de ACL/(e)SCO/ISO.
Connection_Role 1 octeto Rol de la conexión.
0x00: Central
0x01: Periférico
0x02 a 0xFF: Reservado
TX_Power_Level 1 octeto Es el nivel de potencia de transmisión actual para el Connection_Handle especificado.

Este valor debe ser el mismo que el del controlador que responde al comando HCI_Read_Transmit_Power_Level.

RSSI 1 octeto [en dBm]

Es el valor de la indicación de intensidad de señal recibida (RSSI) para el Connection_Handle especificado.
Este valor debe ser un valor absoluto de la intensidad de la señal del receptor.
Rango: De -127 a +20

SNR 1 octeto [en dB]

Es el valor de la relación señal/ruido (SNR) para el Connection_Handle especificado.
El controlador debe proporcionar la SNR promedio de todos los canales que usa el vínculo.

Unused_AFH_Channel_Count 1 octeto Indica la cantidad de canales sin usar en AFH_channel_map.
0x4F ~ 0xFF: Reservado.
AFH_Select_Unideal_Channel_Count 1 octeto Indica la cantidad de canales que tienen interferencias y una calidad deficiente, pero que aún se seleccionan para la AFH.
La cantidad mínima de canales permitida por la especificación de Bluetooth es de 20, por lo que, incluso si se interfieren los 79 canales y tienen mala calidad, el controlador aún debe elegir al menos 20 canales para el AFH.
LSTO 2 octetos Configuración actual del tiempo de espera de la supervisión de vínculos
Tiempo = N × 0.625 ms
Rango de tiempo: De 0.625 ms a 40.9 s
Connection_Piconet_Clock 4 octetos Reloj de piconet para el Connection_Handle especificado.
Este valor debe ser el mismo que el del controlador que responde al comando HCI_Read_Clock con el parámetro "Which_Clock" de 0x01 (reloj de piconet).
Unidad: N × 0.3125 ms (1 reloj Bluetooth)
Retransmission_Count 4 octetos Es la cantidad de retransmisiones desde el último evento.
Este recuento se restablecerá después de informar al host.
No_RX_Count 4 octetos No hay recuento de RX desde el último evento.
El recuento aumenta cuando no se recibe ningún paquete en el horario programado o cuando el paquete recibido está dañado.
Este recuento se restablecerá después de informar al host.
NAK_Count 4 octetos Es el recuento de NAK (acuse de recibo negativo) desde el último evento.
Este recuento se restablecerá después de informar al host.
Last_TX_ACK_Timestamp 4 octetos Marca de tiempo del último ACK de TX. Se basa en el reloj Bluetooth de la picored central (CLK).
Unidad: N × 0.3125 ms (1 reloj Bluetooth)
Flow_Off_Count 4 octetos Es la cantidad de veces que el controlador recibe el estado de flujo desactivado (STOP) desde el último evento.
Este recuento se restablecerá después de informar al host.
Last_Flow_On_Timestamp 4 octetos Marca de tiempo del último flujo continuo (GO). Se basa en el reloj Bluetooth de la picored central (CLK).
Unidad: N × 0.3125 ms (1 reloj Bluetooth)
Buffer_Overflow_Bytes 4 octetos [en bytes]

Es el recuento de desbordamientos del búfer desde el último evento.
El controlador cuenta cuántos bytes de datos se descartan.
Este recuento se restablecerá después de informar al host.

Buffer_Underflow_Bytes 4 octetos [en bytes]

Es el recuento de desbordamientos del búfer desde el último evento.
Este recuento se restablecerá después de informar al host.

bdaddr 6 octetos Dirección del dispositivo remoto
cal_failed_item_count 1 octeto Es el recuento de elementos con errores de calibración.
TX_Total_Packets 4 octetos Es la cantidad de paquetes que se envían.
TX_UnAcked_Packets 4 octetos Es la cantidad de paquetes que no reciben un acuse de recibo.
Este recuento se restablece después de informar al host.
TX_Flushed_Packets 4 octetos Es la cantidad de paquetes que no se envían por su punto de limpieza.
Este recuento se restablece después de informar al host.
TX_Last_Subevent_Packets 4 octetos Es la cantidad de paquetes que la capa de vínculo transmite una PDU de datos de CIS en el último subevento de un evento de CIS.
Este recuento se restablece después de informar al host.
El valor es cero si no hay un valor válido para el vínculo.
CRC_Error_Packets 4 octetos Es la cantidad de paquetes recibidos con error de CRC desde el último evento.
Este recuento se restablece después de informar al host.
RX_Duplicate_Packets 4 octetos Es la cantidad de paquetes duplicados (retransmisiones) recibidos desde el último evento.
Este recuento se restablece después de informar al host.
RX_Unreceived_Packets 4 octetos La cantidad de paquetes no recibidos es la misma que el parámetro del comando LE READ ISO Link Quality (consulta la versión 5.4 de la Especificación principal de Bluetooth). Los flujos asociados son CIS y BIS.
Cuando se incrementa este valor, la capa de vínculo no recibe una carga útil específica por su punto de limpieza (en un CIS) o al final del evento con el que está asociada (en un BIS; consulta la Especificación principal de Bluetooth versión 5.4, vol. 6, parte B, sección 4.4.6.6).
Coex_Info_Mask 2 octetos Bit 0: CoexInvolvement: Se establece para indicar que se sospecha que las actividades de coexistencia están involucradas cuando se genera este informe (por ejemplo, A2DP Chops y Approaching LSTO).
Bit 1: Radio WL 2G activa: Se establece para indicar que la radio WLAN 2G está activa.
Bit 2: WL 2G Connected: Se establece para indicar que la radio WLAN 2G está activa y conectada.
Bit 3: Radio WL 5G/6G activa: Se establece para indicar que la radio WLAN 5G/6G está activa.
Los bits 4 a 15 están reservados.
Parámetro específico del proveedor (longitud total del parámetro - por definir) × octetos Para que el proveedor del controlador obtenga más parámetros específicos del proveedor.

Código de subevento = 0x58 [Quality_Report_Id = 0x05, Root Inflammation event]

Este evento indica que el HAL de Bluetooth o el controlador encontraron un error fatal y que la pila de Bluetooth debe registrar esta situación y reiniciarse. En cualquier caso, el controlador debe enviar un Root_Inflammation_Event a la pila de Bluetooth antes de enviar el primer fragmento de los eventos de información de depuración.

El parámetro Error_Code contiene un código de error informado desde el controlador o HAL, 0 si se trata de un error específico del proveedor del chipset. El código de error específico del proveedor contiene un código de error específico del proveedor del chipset de HAL/Controlador. Debe establecerse como 0 si el parámetro Error_Code no es 0. Los parámetros Error_Code y Vendor_Specific_Error_Code no deben ser ambos 0.

Parámetro de subevento Tamaño Propósito
Quality_Report_Id 1 octeto De 0x00 a 0x04: Reservado.
0x05: Inflamación de la raíz.
0x06 ~ 0xFF: Reservado.
Error_Code 1 octeto 0x00: Se incluye el código de error específico del proveedor del chipset.
0x01 ~ 0xFF: Se produjo una falla del controlador. Consulta la especificación de Bluetooth [Vol. 2] Parte D, Códigos de error para obtener una lista de códigos de error y descripciones.
Vendor_Specific_Error_Code 1 octeto 0x00: No se incluye ningún código de error específico del proveedor del chipset.
0x01 ~ 0xFF: Código de error específico del proveedor del chipset.
Parámetro específico del proveedor (Longitud total del parámetro - 4) * octetos Para que el proveedor del controlador obtenga más parámetros específicos del proveedor.
Parámetro de subevento Tamaño Propósito
Quality_Report_Id 1 octeto De 0x00 a 0x10: Reservado.
0x11: Registro de mensajes de LMP/LL.
0x12: Registro de programación de Bluetooth Multi-link/Coex.
0x13: volcado de datos de información de depuración del controlador.
0x14 ~ 0xFF: Reservado.
Connection_Handle 2 octetos Control de conexión.
Parámetro específico del proveedor (Longitud total del parámetro - 4) * octetos Formato específico del proveedor del seguimiento de mensajes LMP, seguimiento de programación de Bluetooth Multi-link/Coex y volcado de datos de información de depuración del controlador.

Compatibilidad con varios anunciantes

Los objetivos de la compatibilidad con varios anunciantes son los siguientes:

  • Capacidad de admitir varios anuncios (max_advt_instances)
  • Diferentes potencias de transmisión para permitir un rango variable
  • Contenido publicitario diferente
  • Una respuesta individualizada para cada anunciante
  • Privacidad (no rastreable) para cada anunciante
  • Conectable

Para mantener esta especificación cerca de los estándares existentes, se proporcionan los siguientes comandos específicos del proveedor. Se derivan de la especificación Bluetooth Core 4.1.

LE_Multi_Advt_Command

OCF: 0x154

Parámetro de comando Tamaño Propósito
Multi_advt_opcode 1 octeto 0x01: Set_Advt_Param_Multi_Sub_Cmd
0x02: Set_Advt_Data_Multi_Sub_Cmd
0x03: Set_Scan_Resp_Data_Multi_Sub_Cmd
0x04: Set_Random_Addr_Multi_Sub_Cmd
0x05: Set_Advt_Enable_Multi_Sub_Cmd

Se generará un evento de comando completo para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
Multi_advt_opcode 1 octeto 0x01: Set_Advt_Param_Multi_Command
0x02: Set_Advt_Data_Multi_Command
0x03: Set_Scan_Resp_Data_Multi_Command
0x04: Set_Random_Addr_Multi_Command
0x05: Set_Advt_Enable_Multi_Command

LE_Multi_Advt_Command: Set_Advt_Param_Multi_Sub_Cmd

Referencia básica: Especificación principal de Bluetooth 4.1, página 964 (comando de parámetro de publicidad de LE Set)

Sub-OCF: 0x01

Parámetro de subcomando Tamaño Propósito
Advertising_Interval_Min Por especificación Por especificación
Advertising_Interval_Max Por especificación Por especificación
Advertising_Type Por especificación Por especificación
Own_Address_Type Por especificación Por especificación
Own_Address Por especificación Por especificación
Direct_Address_Type Por especificación Por especificación
Direct_Address Por especificación Por especificación
Advertising_Channel_Map Por especificación Por especificación
Adverstising_Filter_Policy Por especificación Por especificación
Advertising_Instance 1 octeto Especifica la aplicabilidad de los parámetros anteriores a una instancia.
Tx_power 1 octeto Transmit_Power
Unidad: en dBm (número entero con signo)
Rango (de -70 a +20)

El parámetro Own_Address podría ser una dirección configurada por el host en el momento de configurar esta instancia de anuncios múltiples. Esto proporciona la capacidad de tener una dirección privada que se pueda resolver en el momento de la transmisión del primer píxel contador. Los anuncios en una instancia se seguirán publicando sin importar la conexión. La pila de BT del host podría emitir un comando para iniciar la publicidad en una instancia después de la conexión.

Se generará un evento de comando completo para este comando, como se especifica en la especificación Bluetooth Core 4.1, según el comando anterior. El controlador responderá con un código de no éxito (parámetro no válido) si la instancia publicitaria o los parámetros Tx_Power no son válidos.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
Multi_advt_opcode 1 octeto 0x01 [Set_Advt_Param_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd

Referencia base: Especificación principal de Bluetooth 4.1, página 969 (comando de datos de publicidad de LE Set)

Sub OCF: 0x02

Parámetro de subcomando Tamaño Propósito
Advertising_Data_Length Por especificación Por especificación
Advertising_Data Por especificación Por especificación
Advertising_Instance 1 octeto Especifica la aplicabilidad de los parámetros anteriores a una instancia.

Se generará un evento de comando completo para este comando, como se especifica en la especificación Bluetooth Core 4.1, según el comando anterior. El controlador responderá con un código de no éxito si la instancia publicitaria o los parámetros Tx_Power no son válidos.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
Multi_advt_opcode 1 octeto 0x02 [Set_Advt_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd

Referencia base: Especificación principal de Bluetooth 4.1, página 970 (comando de datos de respuesta de análisis de configuración de LE)

Sub OCF: 0x03

Parámetro de subcomando Tamaño Propósito
Scan_Response_Data_Length Por especificación Por especificación
Scan_Response_Data Por especificación Por especificación
Advertising_Instance 1 octeto Especifica la aplicabilidad de los parámetros anteriores a una instancia.

Se generará un evento de comando completo para este comando, como se especifica en la especificación Bluetooth Core 4.1, según el comando anterior. El controlador responderá con un código de no éxito (parámetro no válido) si la instancia publicitaria o los parámetros Tx_Power no son válidos.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
Multi_advt_opcode 1 octeto 0x03 [Set_Scan_Resp_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd

Referencia básica: Especificación principal de Bluetooth 4.1, página 963 (comando LE Set Random Address)

Sub OCF: 0x04

Parámetro de subcomando Tamaño Propósito
Dirección aleatoria Por especificación Por especificación
Advertising_Instance 1 octeto Especifica la aplicabilidad de los parámetros anteriores a una instancia.

Se generará un evento de comando completo para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
Multi_advt_opcode 1 octeto 0x04 [Set_Random_Addr_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd

Referencia básica: Especificación principal de Bluetooth 4.1, página 971 (comando de habilitación de anuncios de LE en esa especificación principal)

OCF: 0x05

Parámetro de subcomando Tamaño Propósito
Advertising_Enable 1 octeto Un valor de 1 significa habilitar. Cualquier otro valor significa inhabilitar.
Advertising_Instance 1 octeto Especifica la aplicabilidad de los parámetros anteriores a una instancia. La instancia 0 significa una instancia de HCI estándar.

Se generará un evento de comando completo para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
Multi_advt_opcode 1 octeto 0x05 [Set_Advt_Enable_Multi_Sub_Cmd]

Resolución de la dirección privada descargada

Esta función resuelve una dirección privada en el firmware o el hardware del controlador, lo que proporciona los siguientes beneficios:

  • Latencia involucrada con el host para resolver una dirección privada
  • Ahorrar energía evitando activar el host

LE_Set_RPA_Timeout

OCF: 0x15C

Parámetro de comando Tamaño Propósito
LE_local_IRK 16 octetos El IRK del dispositivo local que se usa para generar las direcciones aleatorias que se pueden resolver
tRPA_min 2 octetos Es el tiempo de espera mínimo de generación de RPA en segundos. El controlador debe generar direcciones nuevas que se puedan resolver para cualquier evento de publicidad, escaneo o conexión a partir de este tiempo de espera.
Rango válido: 300-1800
tRPA_max 2 octetos Es el tiempo de espera máximo de generación de RPA en segundos. El controlador debe generar direcciones nuevas que se puedan resolver para cualquier evento de publicidad, escaneo o conexión en o antes de este tiempo de espera.
Rango válido: tRPA_min-1800
Parámetro de devolución Tamaño Propósito
Status 1 octeto Es el estado del comando.

Valores de estado de HCI sugeridos:
0x00 Éxito
0x01 Comando desconocido (si no se admite)
0x12 Parámetros de comando no válidos (si algún parámetro está fuera del rango determinado)

LE_RPA_offload_Command

OCF: 0x155

Parámetro de comando Tamaño Propósito
RPA_offload_opcode 1 octeto 0x1: Habilita la función específica del cliente.
0x2: Agrega IRK a la lista.
0x3: Quita IRK de la lista.
0x4: Borra la lista de IRK.
0x5: Lee la entrada de la lista de IRK.

Se generará un evento de comando completo para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
Event_RPA_offload_opcode 1 octeto 0x1: Habilita la función específica del cliente.
0x2: Agrega IRK a la lista.
0x3: Quita IRK de la lista.
0x4: Borra la lista de IRK.
0x5: Lee la entrada de la lista de IRK.

LE_RPA_offload: Enable_cust_specific_sub_Command

Sub-OCF: 0x01

Parámetro de subcomando Tamaño Propósito
enable_customer_specific_feature_set 1 octeto 0x01: Habilita la función de RPA transferida.
0x00: Inhabilita la función de RPA transferida.

El host debe habilitar la descarga de RPA según la capacidad del chip. Consulta LE_Get_Vendor_Capabilities_Command. Cada chip puede tener un max_irk_list_sz variable en el firmware.

Se generará un evento de comando completo para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
Event_cust_specific_feature_opcode 1 octeto 0x01 [Habilita la función específica del cliente]

LE_RPA_offload: Add_IRK_to_list_sub_Command

Sub OCF: 0x02

Parámetro de subcomando Tamaño Propósito
LE_IRK 16 octetos IRK de LE (LSB del 1er byte)
Address_Type 1 octeto 0: Dirección pública
1: Dirección aleatoria
LE_Device_Address 6 octetos Dirección pública o aleatoria asociada al IRK (LSB del 1er byte)

Se generará un evento de comando completo para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
Event_cust_specific_feature_opcode 1 octeto 0x02 [Agrega IRK a la lista]
LE_IrkList_AvailableSpaces 1 octeto Entradas de la lista de IRL disponibles después de la operación actual

LE_RPA_offload: Remove_IRK_to_list_sub_Command

Sub OCF: 0x03

Parámetro de subcomando Tamaño Propósito
Address_Type 1 octeto 0: Dirección pública
1: Dirección aleatoria
LE_Device_Address 6 octetos Dirección pública o aleatoria que se asocia con el IRK

Se generará un evento de comando completo para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
Event_cust_specific_feature_opcode 1 octeto 0x03 [Quita IRK de la lista]
LE_IrkList_AvailableSpaces 1 octeto Entradas de la lista de IRL disponibles después de la operación actual

LE_RPA_offload: Clear_IRK_list_sub_Command

Sub OCF: 0x04

Parámetro de subcomando Tamaño Propósito
Ninguno

Se generará un evento de comando completo para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
Event_cust_specific_feature_opcode 1 octeto 0x04 [Borra la lista de IRK]
LE_IrkList_AvailableSpaces 1 octeto Entradas de la lista de IRL disponibles después de la operación actual [max_irk_list_sz]

LE_RPA_offload: Read_IRK_list_sub_Command

Sub OCF: 0x05

Parámetro de subcomando Tamaño Propósito
LE_read_IRK_list_entry-index 1 octeto Índice de la lista de IRK [0, max_irk_list_sz-1]

Se generará un evento de comando completo para este comando.

Parámetro de devolución Tamaño Propósito
Status 1 octeto Estado de comando completo
Event_cust_specific_feature_opcode 1 octeto 0x05 [Lee la entrada de la lista de IRK]
LE_Read_IRK_List_entry 1 octeto Es el índice del IRK que el host desea volver a leer (el tamaño máximo de la lista de IRK es de 32).
LE_IRK 16 octetos Valor de IRK
Address_Type 1 octeto 0: Dirección pública
1: Dirección aleatoria
LE_Device_Address 6 octetos Dirección pública o aleatoria asociada al IRK
LE_Resolved_Private_Address 6 octetos Dirección privada actual y resolvable de este IRK