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:
|
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:
|
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:
|
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:
Valor del bit
|
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.
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. Códec AAC:
Consulta los elementos de información específicos del códec AAC en A2DP v1.3 Códec LDAC:
Octetos del 0 al 3: ID del proveedor
Octetos 4 y 5: ID de códec
Octeto 6: Índice de tasa de bits:
Octeto 7: Modo de canal de LDAC 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
Si borras los informes, se borrarán los informes de eventos de calidad específicos. |
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. |
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 |
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 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á presente0x01: 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 octetoRSSI[0] : 1 octetoTimestamp[0] : 2 octetosAdv packet_len[0] : 1 octetoAdv_packet[0] : Adv_packet_len octetosScan_data_resp_len[0] : 1 octetoScan_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.
Código de subevento = 0x58 [Quality_Report_Id = 0x01 ~ 0x04, evento relacionado con la calidad del vínculo]
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. |
SNR |
1 octeto |
[en dB]
Es el valor de la relación señal/ruido (SNR) para el Connection_Handle especificado. |
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. |
Buffer_Underflow_Bytes |
4 octetos |
[en bytes]
Es el recuento de desbordamientos del búfer desde el último evento. |
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. |
Código de subevento = 0x58 [Quality_Report_Id = 0x11 ~ 0x13, evento relacionado con el volcado de registro]
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 |