Requisitos de HCI

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

En este documento, se proporciona una lista de los requisitos de HCI para Bluetooth (BT) y Bluetooth de bajo consumo (BLE). El objetivo es que los proveedores de la pila Host BT y los proveedores de controladores 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 de Bluetooth Core 5.2 como la "especificación". La especificación de Bluetooth Core 5.2 está disponible en el sitio web de Bluetooth SIG junto con otros documentos adoptados.

Descripción general del diseño

Capacidades y configuración de los chips

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

Para administrar el entorno variable y las migraciones, en este documento, se describe una filosofía de diseño que permite que los controladores BT expongan sus capacidades (más allá de la especificación estándar de Bluetooth Core 5.2). La pila de BT del host puede usar estas capacidades 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 los métodos de HCI estándar en una especificación de Bluetooth futura, nos inclinaremos por hacer que ese enfoque sea el predeterminado.

Capacidades específicas del proveedor

Comando específico del proveedor: LE_Get_Vendor_Capabilities_Command

Campo de comando del código de operación (OCF): 0x153

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

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

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
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 las especificaciones de funciones de Google v0.98 y versiones posteriores, en 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 capacidad de chip BT de RPA.
Si un chip lo admite, es necesario que el host lo habilite.
0 = No se puede.
1 = Capaable

Se reserva después de la versión 0.98.
Este parámetro dejó de estar disponible en las especificaciones de funciones de Google v0.98 y versiones posteriores, en favor de la función de privacidad disponible en la versión 4.2 de la especificación de BT y versiones posteriores.
total_scan_results_storage 2 octetos Almacenamiento de resultados de análisis en bytes
max_irk_list_sz 1 octeto Cantidad de entradas de IRK admitidas en el firmware
filtering_support 1 octeto Compatibilidad con filtros en el control
0 = No compatible
1 = Compatible
max_filter 1 octeto Cantidad de filtros compatibles
activity_energy_info_support 1 octeto Admite la generación de informes de información de actividad y energía
0 = No capaz
1 = Apto
version_supported 2 octetos Especifica la versión compatible de las especificaciones de las características de Google
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 los fines de OnLost/OnFound
extended_scan_support 1 octeto Admite intervalos y períodos 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 admitido
1 = Compatible

Reservado después de la versión 0.98.
Este parámetro dejó de estar disponible en las especificaciones de funciones de Google v0.98 y versiones posteriores, en favor de la función de privacidad disponible en la versión 4.2 de la especificación de BT y versiones posteriores.
A2DP_source_offload_capability_mask 4 octetos Máscaras de bits para tipos de códecs admitidos
Bit 0 - SBC
Bit 1 - AAC
Bit 2 - APTX
Bit 3 - APTX HD
Bit 4 - LDAC
Los bits 5-31 están reservados
bluetooth_quality_report_support 1 octeto Admite la generación de informes de eventos de calidad de Bluetooth
0 = No compatible
1 = Admite los eventos de calidad
dynamic_audio_buffer_support 4 octetos Admite búfer de audio dinámico en el controlador Bluetooth
Máscaras de bits para tipos de códec admitidos
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 comandos A2dp Offload v2 en el controlador Bluetooth (consulta Iniciar descarga A2DP y Detener descarga A2DP)
0 = No compatible
1 = Compatible

Agrupación en lotes de los resultados del análisis

Un objetivo de diseño es mejorar la forma en que se entregan las notificaciones de eventos de respuesta de escaneo de Bluetooth de bajo consumo al host para ahorrar energía en el host.

Al reducir la frecuencia con la que el controlador notifica al procesador de la aplicación host para analizar los resultados, el procesador de la aplicación host puede permanecer inactivo o suspendido por más tiempo. Esto reduce el consumo de energía en el host. El parámetro de retorno total_scan_results_storage de LE_Get_Vendor_Capabilities_Command indica la capacidad del chip para el almacenamiento de los resultados del análisis.

Esta función se centra en la administración y configuración de la instalación de almacenamiento de resultados de LE Scan en el control Bluetooth. El almacenamiento se usa para agrupar temporalmente los datos de anuncios y analizar los datos y metadatos que recibe el controlador para entregarlos 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}.
  • Completa. Contiene los siguientes elementos de información: {MAC, TX Power, RSSI, Timestamp, Adv Data, Scan Response}.

Comando de búsqueda por lotes LE_Batch

OCF: 0x156

Parámetro del comando Tamaño Propósito
Batch_Scan_opcode 1 octeto 0x1 - Habilitar función específica del cliente
0x2 - Establecer parámetros de almacenamiento para análisis por lotes
0x3 - Establecer parámetros de análisis por lotes
0x4 - Leer parámetros de resultados de análisis por lotes

Se generará un evento de Comando completado para este comando. La habilitación de la función específica del cliente no inicia el análisis.

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
Batch_Scan_opcode 1 octeto 0x1 - Habilitar función específica del cliente
0x2 - Establecer parámetros de almacenamiento para análisis por lotes
0x3 - Establecer parámetros de análisis por lotes
0x4 - Leer parámetros de resultados de análisis por lotes

LE_Batch_Scan_Command: Habilitar función específica del cliente

Sub OCF: 0x01

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

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

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
Batch_Scan_opcode 1 octeto 0x1 - Habilitar función específica del cliente
0x2 - Establecer parámetros de almacenamiento para análisis por lotes
0x3 - Establecer parámetros de análisis por lotes
0x4 - Leer parámetros de resultados de análisis por lotes

LE_Batch_Scan_Command: Establecer el subcomando Parámetro de almacenamiento del análisis por lotes

Sub OCF: 0x02

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

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

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
Batch_scan_opcode 1 octeto 0x02 [Configurar parámetros de análisis por lotes]

LE_Batch_Scan_Command: Establecer subcomando del parámetro de análisis por lotes

Sub OCF: 0x03

Parámetro del 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: El modo truncado y el completo están habilitados
Duty_cycle_scan_window 4 octetos Tiempo de análisis del análisis por lotes (cantidad de ranura)
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: Descartar el anuncio más antiguo
1: Descartar el anuncio con el RSSI más débil

Este subcomando iniciará el análisis por lotes, si está habilitado. En el análisis truncado, los resultados se almacenan en formato truncado, en el que la clave única para el estilo truncado es igual a {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 el modo completo esté habilitado, se usará el análisis activo y se registrarán las respuestas de análisis. La clave única de estilo completo = {MAC, Ad package}, independientemente del intervalo de análisis. El registro que se debe conservar en el modo Full es {BD_ADDR, Tx Power, RSSI, Timestamp, Ad package, Scan Response}. En el estilo completo, el mismo paquete de AD, cuando se ve varias veces en diferentes intervalos de análisis, se registra solo una vez. Sin embargo, en el modo truncado, la visibilidad de BA_ADDR en diferentes intervalos de análisis es de interés (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 completado para este comando.

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
Batch_scan_opcode 1 octeto 0x03 [Configurar parámetros de análisis por lotes]

LE_Batch_Scan_Command: Subcomando de lectura de los resultados del análisis por lotes

Sub OCF: 0x04

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

Se generará un evento de Comando completado para este comando. Cuando el host emite este comando, es posible que todos los resultados en el controlador no quepan en un evento de Comando completado. El host repetirá la emisión de este comando hasta que los resultados correspondientes en el evento Comando completado indiquen 0 en la cantidad de registros, lo que indica que el controlador no tiene más registros para comunicar con el host. Cada evento de comando completado puede contener varios registros de un solo tipo de datos (completos o truncados).

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

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
Batch_scan_opcode 1 octeto 0x03 [Configurar 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 Truncated Mode:
Address[0]: 6 octetos
Address_Type[0]: 1 octeto
Tx_Pwr[0]: 1 octeto
RSSI[0] : 1 octeto
Marca de tiempo[0]: 2 octetos: 2 octetos: 2 octetos
[Varios registros (num_of_records) con el formato anterior: 0] Octet_0 octetos:
[Scan_0] octetos: 0 octetos
[varios registros (num_of_records) 0] octeto 0 [to_data_0] [dirección_completo_0] [Tx_Pwr[0]: 1 octeto] [Marca de tiempo [0]: [0] octetos: 2 octetos
[varios registros (num_of_records) 0]








Scan_data_resp

Filtro de contenido del paquete de publicidad

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

Comando_LE_APCF

OCF: 0x157

Parámetro del comando Tamaño Propósito
APCF_opcode 1 octeto ~0x00 - Habilitar APCF
0x01 - APCF Configurar parámetros de filtrado
0x02 - Dirección del emisor de APCF
0x03 - UUID del servicio APCF
0x04 - Solicitud de servicio de APCF UUID
0x05 - UUID de solicitud de servicio de APCF
0x05 - Filtro de servicio APCF - 0x05 - Reserva del servicio APCF







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

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de la devolución
APCF_opcode 1 octeto ~0x00 - Habilitar APCF
0x01 - APCF Configurar parámetros de filtrado
0x02 - Dirección del emisor de APCF
0x03 - UUID del servicio APCF
0x04 - Solicitud de servicio de APCF UUID
0x05 - UUID de solicitud de servicio de APCF
0x05 - Filtro de servicio APCF - 0x05 - Reserva del servicio APCF







LE_APCF_Command: enable_sub_cmd

Sub OCF: 0x00

Parámetro del subcomando Tamaño Propósito
APCF_enable 1 octeto 0x01: Habilitar la función APCF
0x00: Inhabilitar la función APCF

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

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
APCF_opcode 1 octeto 0x0: Habilitación de APCF
APCF_Enable 1 octeto La habilitación o inhabilitación se establece mediante 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 del subcomando Tamaño Propósito
APCF_Action 1 octeto 0x00: Agregar
0x01: Borrar
0x02: Borrar
Borrar borrará el filtro específico junto con las entradas de atributos asociados en otras tablas.
Borrar borrará todos los filtros y las entradas asociadas de otras tablas.
APCF_Filter_Index 1 octeto Índice del filtro (0, max_filter-1)
APCF_Feature_Selection 2 octetos Máscaras de bits para las funciones seleccionadas:
Bit 0: Establecer para habilitar el filtro de dirección de transmisión
Bit 1: Configurar para habilitar el filtro de cambio de datos de servicio
Bit 2: Configurar para habilitar la verificación de UUID de servicio
Bit 3: Definir para habilitar la verificación de UUID de solicitud de servicio
Bit 4: Configurar para habilitar la verificación de nombre local
Bit 5: Configurar para habilitar la Verificación de datos del fabricante
Bit 8: Establecer como Verificación de datos del fabricante

APCF_List_Logic_Type 2 octetos Operación lógica para cada selección de atributos (posición por bits) especificada en APCF_Feature_Selection.
Válido solo cuando una función está habilitada.
Valor de posición del bit:
0: O
1: AND
Si se selecciona la lógica "AND", un paquete ADV pasará el filtro solo si contiene TODAS las entradas de la lista.
Si se selecciona la lógica “OR”, un paquete de ADV pasará el filtro si contiene alguna de las entradas de la lista.
APCF_Filter_Logic_Type 1 octeto 0x00: O
0x01: AND
Nota: El tipo de lógica es N/A para los primeros tres campos de APCF_Feature_Selection, que siempre es la lógica "AND". Solo se aplican a cuatro campos de APCF_Feature_Selection (Bit 3, Bit 6).
rssi_high_thresh 1 octeto [en dBm]
El anunciante solo se considera visto si la señal supera el 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 recopilarse 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, recopilará 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]
Se considera que el paquete del anunciante no se ve si el RSSI del paquete recibido no supera el umbral mínimo 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 manera contigua durante el período de 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]
Cantidad total de anunciantes a los que se les hace un seguimiento por filtro.

Los valores de RSSI deben usar el complemento de 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 las emisoras) para administrar varias combinaciones de filtros.

El filtrado, el procesamiento por lotes y los informes son conceptos interrelacionados. Cada anuncio y cada respuesta de análisis relacionada tendrán que pasar por todos los filtros, uno después del otro. Por lo tanto, las acciones resultantes (delivery_mode) están estrechamente relacionadas con el filtrado. Los modos de entrega son los siguientes: report_immediately, batch y onFound. El valor OnLost está relacionado con OnFound en el sentido de que aparecerá después de OnFound cuando se pierda.

Este flujo de procesamiento representa el modelo conceptual:

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

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

El modo de entrega OnFound se basa en los filtros configurados. Una combinación que activa una acción de filtro para tener éxito se considera la entidad a la que se le realizará un seguimiento de onLost. El evento correspondiente es el subevento de seguimiento LE Advt.

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

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

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
APCF_opcode 1 octeto 0x01: APCF establece parámetros de filtrado
APCF_Action 1 octeto APCF_Action del comando echo-back
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 de anunciante o borrar la lista de direcciones de anunciantes para el filtrado en el chip.

Sub OCF: 0x02

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

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

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
APCF_opcode 1 octeto 0x02: Dirección del emisor de APCF
APCF_Action 1 octeto APCF_Action del comando echo-back
APCF_AvailableSpaces 1 octeto Número de entradas gratuitas que aún están disponibles en la tabla de direcciones de emisión

LE_APCF_Comando: service_uuid_sub_cmd

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

Sub OCF: 0x03

Parámetro del subcomando Tamaño Propósito
APCF_Action 1 octeto 0x00 - Agregar
0x01 - Borrar
0x02 - Borrar
Borrar borrará la dirección especificada del UUID del servicio en el filtro especificado.
Si borras esta opción, se borrarán todos los UUID de servicio del filtro especificado.
APCF_Filter_Index 1 octeto Índice del filtro (0, max_filter-1)
APCF_UUID 2,4,16 octetos El UUID del servicio (16, 32 bits o 128 bits) para agregar a la lista o borrarla de ella.
APCF_UUID_MASK 2,4,16 octetos La máscara del UUID del servicio (16, 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 completado para este comando.

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
APCF_opcode 1 octeto 0x03: UUID del servicio de APCF
APCF_Action 1 octeto APCF_Action del comando echo-back
APCF_AvailableSpaces 1 octeto Cantidad de entradas gratuitas que aún están disponibles en la tabla de UUID del servicio

LE_APCF_Command: solicitudtion_uuid_sub_cmd

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

Sub OCF: 0x04

Parámetro del subcomando Tamaño Propósito
APCF_Action 1 octeto 0x00 - Agregar
0x01 - Borrar
0x02 - Borrar
Borrar borrará la dirección del UUID de solicitud en el filtro especificado.
Borrar borrará todos los UUID de solicitud del filtro especificado.
APCF_Filter_Index 1 octeto Índice del filtro (0, max_filter-1)
APCF_UUID 2,4,16 octetos El UUID de solicitud (16, 32 bits o 128 bits) que se agregará o borrará de la lista.
APCF_UUID_MASK 2,4,16 octetos La máscara de UUID de solicitud (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 completado para este comando.

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
APCF_opcode 1 octeto 0x04: UUID de solicitud de APCF
APCF_Action 1 octeto APCF_Action del comando echo-back
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 borrar la lista de cadenas de nombre local para el filtrado en el chip.

Sub OCF: 0x05

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

Notas:
  • Actualmente, la cantidad máxima de caracteres en una string de nombre local es 29.
  • No aplicable cuando la acción es "Borrar" (0 × 2)

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

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
APCF_opcode 1 octeto 0x05: Nombre local de APCF
APCF_Action 1 octeto APCF_Action del comando echo-back
APCF_AvailableSpaces 1 octeto Cantidad de entradas gratuitas que aún están disponibles en la tabla Nombre local

LE_APCF_Comando: manf_data_sub_cmd

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

Sub OCF: 0x06

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

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

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

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
APCF_opcode 1 octeto 0x06: Datos del fabricante de APCF
APCF_Action 1 octeto APCF_Action del comando echo-back
APCF_AvailableSpaces 1 octeto Cantidad de entradas gratuitas que aún están disponibles en la tabla de datos del fabricante

LE_APCF_Comando: service_data_sub_cmd

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

Sub OCF: 0x07

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

Notas:
  • Actualmente, la cantidad máxima de caracteres en una string de nombre local es 29.
  • No aplicable cuando la acción es "Borrar" (0 × 2)
APCF_LocName_Mandata_or_SerData_Mask Tamaño de la variable La máscara de datos de 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 completado para este comando.

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
APCF_opcode 1 octeto 0x07: Datos del servicio de APCF
APCF_Action 1 octeto APCF_Action del comando echo-back
APCF_AvailableSpaces 1 octeto Cantidad de entradas gratuitas que aún están disponibles para la tabla de datos del servicio

LE_APCF_Command: ad_type_sub_cmd

Este subcomando se usa para agregar o borrar un tipo de AD o borrar una lista de tipos de AD para el filtrado en el chip. Usa read_extended_features_sub_cmd para verificar si este comando es compatible o no.
Cuando APCF_AD_DATA_Length sea 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 de ADV recibido excede AD_DATA_LENGTH, compara solo los primeros AD_DATA_LENGTH bytes de datos de AD y, luego, ignora los datos restantes.

Sub OCF: 0x09

Parámetro del subcomando Tamaño Propósito
APCF_Action 1 octeto 0x00 - Agregar
0x01 - Borrar
0x02 - Borrar
Borrar borrará el tipo de AD especificado en el filtro indicado.
Si borras esta opción, se borrarán todos los tipos de AD del filtro especificado.
APCF_Filter_Index 1 octeto Índice del filtro (0, max_filter-1)
APCF_AD_TYPE 1 octeto El tipo de AD para agregar o borrar de la lista. Ignorar cuando APCF_Action es 0x02 (borrar)
APCF_AD_DATA_Length 1 octeto 0x00: Significa que no filtrar el contenido de los datos
Se ignora cuando APCF_Action es 0x02 (borrar)
APCF_AD_DATA Tamaño de la variable Tamaño variable, basado en APCF_AD_DATA_Length
Se ignora cuando APCF_Action es 0x02 (borrar)
APCF_AD_DATA_MASK Tamaño de la variable Tamaño variable, basado en APCF_AD_DATA_Length
Se ignora cuando APCF_Action es 0x02 (borrado)
Debe tener la misma longitud que APCF_AD_DATA.

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

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
APCF_opcode 1 octeto 0x09: Tipo de anuncio de APCF
APCF_Action 1 octeto APCF_Action del comando echo-back
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 las funciones extendidas de APCF.

Sub OCF: 0xFF

Parámetro del subcomando Tamaño Propósito
No aplicable El parámetro del comando está vacío.

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

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
APCF_opcode 1 octeto 0xFF: Funciones APCF_Read_Extended_Features
APCF_extended_features 2 octetos

Máscaras de bits para funciones extendidas compatibles:

  • Bit 0: Admite el filtro del servicio de detección de transporte
  • Bit 1: Admite el filtro de tipo de AD
  • Bit 2 ~15: Reservado para uso futuro

Valor del bit

  • 0 = No compatible
  • 1 = Compatible

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

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 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 control.
  • Firmware: Cómo informar información agregada sobre la actividad y la energía

Estados de macro de pila de host de BT, según lo determinado a nivel del usuario:

  • Inactivo: [análisis de la página, LE advt, análisis de consultas, análisis LE]
  • Escanear: [paging/consulta/intento de conexión]
  • Activo: [vínculo de LCA activado, vínculo de SCO en curso, modo de sniff]

Las actividades que el control realiza un seguimiento a lo largo de su vida útil son el tiempo de transacción, el tiempo de receta, el tiempo de inactividad y la energía total consumida. Se borran cuando se leen desde el host.

LE_Get_Controller_Activity_Energy_Info

Este es un comando específico para el proveedor.

OCF: 0x159

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

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

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
total_tx_time_ms 4 octetos Tiempo total de la transacción
total_rx_time_ms 4 octetos Tiempo total en el que se realizó la receta
total_idle_time_ms 4 octetos Tiempo total inactivo (estados de bajo consumo no suspendidos)
total_energy_used 4 octetos Energía total usada [producto de la corriente (mA), voltaje (V) y tiempo (ms)]

Comando de parámetros de análisis de conjunto extendido de LE

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

Referencia base: Especificación de BT Core 5.2, página 2493 (Comando de parámetros de análisis de configuración de LE)

OCF: 0x15A

Parámetro del comando Tamaño Propósito
LE_Ex_Scan_Type 1 octeto 0x00: Escaneo 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 análisis de LE posterior.
Rango: 0x0004 a 0x00FFFFFF
Predeterminado: 0x0010 (10 ms)
Tiempo = N * 0.625 ms
Intervalo de tiempo: 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: 0x0004 a 0xFFFF
Predeterminado: 0x0010 (10 ms)
Tiempo = N * 0.625 ms
Intervalo de tiempo: 2.5 ms a 40.95 segundos
Own_Address_Type 1 octeto 0x00: dirección pública del dispositivo (predeterminado)
0x01: dirección aleatoria del dispositivo
LE_Ex_Scan_Filter_Policy 0x00: Acepta todos los paquetes de anuncios (predeterminado). Se deberán ignorar los paquetes de publicidad dirigida que no estén dirigidos a este dispositivo.
0x01: Ignora los paquetes de anuncios de los dispositivos que no están en la lista Solo la lista blanca. Se ignorarán los paquetes de publicidad dirigida que no estén dirigidos a este dispositivo.

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

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado

Obtener el comando de información de depuración del controlador

El objetivo de este elemento de información es adquirir información de depuración del controlador por parte de un host, en formato binario, para el procesamiento posterior y el análisis. Esto ayuda a depurar problemas en el campo y proporciona a los ingenieros un kit de herramientas para registrar información para su análisis. Un Responsable del Tratamiento de Datos puede proporcionar la información cuando un host la 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 usos pueden ser generar informes sobre el estado del firmware, el volcado de fallas, la información de registro, etcétera.

OCF: 0x15 mil millones

Parámetro del 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 retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado

Compatibilidad con descarga de hardware A2DP

La función de descarga A2DP admite la descarga del proceso de codificación de audio A2DP en un procesador de audio conectado al controlador BT. La transmisión de datos de audio codificada 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 estos comandos disponibles. Los comandos heredados con OCF secundario 0x01-0x02 solo admiten códecs de código abierto. Las versiones con Sub-OCF 0x02-0x03 son independientes del códec configurado.

OCF: 0x15D

Iniciar descarga 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 del 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 vaciado.
SCMS-T_Enable 2 octetos Octeto 0: Marca que permite agregar un encabezado SCMS-T.
  • 0x00: Encabezado del SCMS-T no incluido.
  • 0x01: Encabezado del SCMS-T incluido.

Octeto 1: Valor del encabezado de 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 De 0x01 a 16 bits por muestra
0x02 a 24 bits por muestra
0x04 a 32 bits por muestra
Channel_Mode 1 octeto 0x01 - Mono
0x02 - Estéreo
Encoded_Audio_Bitrate 4 octetos La tasa de bits de audio codificada expresada en bits por segundo.
0x00000000: No se especificó la tasa de bits de audio.
0x00000001 - 0x00FFFFFF: Tasa de bits de audio codificada en bits por segundo.
0x01000000 - 0xFFFFFFFF: Reservado.
Connection_Handle 2 octetos Controlador de conexión de la conexión A2DP que se está configurando
L2CAP_Channel_ID 2 octetos ID del canal L2CAP que se usará para esta conexión A2DP
L2CAP_MTU_Size 2 octetos Tamaño máximo de la MTU 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ífica del códec SBC en A2DP v1.3.
Octeto 0: Longitud del bloque | Subbandas | Método de asignación
Octeto 1: Valor mínimo de grupo de bits
Octeto 2: Valor máximo del grupo de bits
Octeto 3: Frecuencia de muestreo | Modo de canal
Octeto 4 al 31: reservado

Códec AAC:

Consulta los elementos de información específica del códec AAC en A2DP v1.3
Octeto 0: Tipo de objeto
1 de octubre; b7: VBR
2 al 31 de octubre: reservado

Códec de LDAC:

Octeto 0-3: ID del proveedor
0x0000012D

Del 4 al 5 de octubre: ID de códec
0x00AA - LDAC
Todos los demás valores están reservados

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

Octeto 7: Modo de canal LDAC
0x01 - Estéreo
0x02 - Dual
0x04 - Mono
Otros están reservados

Del 8 al 31 de octubre: reservado

Todos los demás códecs:

Del 0 al 31 de octubre: reservado

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

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
Sub_Opcode 1 octeto 0x01: Iniciar descarga de A2DP

Iniciar descarga 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 del comando Tamaño Propósito
Connection Handle 2 octetos Identificador de la conexión HCI activa
L2CAP_Channel_ID 2 octetos Identificador del canal L2CAP abierto para la transmisión A2DP
Data_Path_Direction 1 octeto 0x00: salida (fuente/combinación de AVDTP)
0x01: entrada (receptor/división de AVDTP)
Peer_MTU 2 octetos Tamaño máximo de paquetes L2CAP, negociados con el par.
CP_Enable_SCMS_T 1 octeto 0x00: Inhabilitar el encabezado de protección de contenido del SCMS-T
0x01: Habilitar el encabezado de protección de contenido de SCMS-T
CP_Header_SCMS_T 1 octeto Cuando el encabezado de protección de contenido de SCMS-T está habilitado (CP_SCMS_T_Enable establecido en 0x01), define el valor del encabezado que precede al contenido de audio (consulta a A2DP, sección 3.2.1-2), como se define en Números asignados por Bluetooth, sección 6.3.2.
Se ignora cuando la protección del contenido de SCMS-T no está habilitada.
Vendor_Specific_Parameters_Length 1 octeto Es la longitud de los parámetros específicos del proveedor, en el rango de 0 a 128.
Se usa el valor 0 cuando no se proporcionan parámetros adicionales.
Vendor_Specific_Parameters De 0 a 128 octetos Parámetros específicos del proveedor proporcionados por la HAL de audio Bluetooth, CodecParameters.vendorSpecificParameters[].

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

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
Sub_Opcode 1 octeto 0x03: Iniciar descarga de A2DP

Detener descarga A2DP (heredado)

Sub OCF: 0x02

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

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

No se definen parámetros para este comando.

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

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
Sub_Opcode 1 octeto 0x02: Detener descarga de A2DP

Detener descarga A2DP

Sub OCF: 0x04

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

Parámetro del comando Tamaño Propósito
Connection Handle 2 octetos Identificador de la conexión HCI activa
L2CAP_Channel_ID 2 octetos Identificador del canal L2CAP abierto para la transmisión A2DP
Data_Path_Direction 1 octeto 0x00: salida (fuente/combinación de AVDTP)
0x01: entrada (receptor/división de AVDTP)

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

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
Sub_Opcode 1 octeto 0x04: Detener descarga de A2DP

Comando del informe de calidad de Bluetooth

La función de comando Informe de calidad de Bluetooth inicia el mecanismo en el control de Bluetooth para informar los 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 BQR relacionado con la calidad del vínculo al host.
  • Acercarse a la LSTO: 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ínculos (LSTO), el controlador informa al host un evento de Acerca de la LSTO.
  • Audio entrecortado A2DP: Cuando el controlador detecta factores que causan audio entrecortado, el controlador informa un evento de audio entrecortado A2DP al host.
  • (e)SCO Voice entrecortado: Cuando el controlador detecta factores que causan una voz entrecortada, el controlador informa un evento (e)SCO entrecortado al host.
  • Inflamación raíz: El control envía este evento a la pila cuando la HAL o el controlador encuentran un error fatal y deben reiniciar Bluetooth.
  • Seguimiento de mensajes LMP/LL: El controlador envía el protocolo de enlace del mensaje LMP/LL con el dispositivo remoto al host.
  • Seguimiento de programación de Coex/perfil múltiple de Bluetooth: El controlador envía su información de programación sobre el manejo de varios perfiles Bluetooth y la coexistencia inalámbrica en la banda de 2.4 GHz al host.
  • Mecanismo de información de depuración del controlador: Cuando se habilita, 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.
  • LE Audio entrecortado: Cuando el control detecta factores que causan un audio entrecortado, el controlador informa un evento LE Audio entrecortado al host.
  • Modo de estadísticas de RF avanzadas: El control envía información relacionada con sus 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 activador de evento de calidad de 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 supervisión de energía o un modo avanzado de estadísticas de RF.

OCF: 0x15E

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

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

La opción Borrar borrará los informes de eventos de calidad específicos.
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 aproximación de LSTO (para LCA/(e)SCO/ISO).
Bit 2: Se establece para habilitar el evento de audio entrecortado de A2DP.
Bit 3: Configúralo para habilitar el evento (e)SCO Voice entrecortado.
Bit 4: Se establece para habilitar el evento de inflamación raíz.
Bit 5: Se establece para habilitar el modo de supervisión de energía.
Bit 6: Se establece para habilitar el evento entrecortado de LE Audio.
Bit 7: Se configura para habilitar el evento de falla de conexión.
Bit 8: Se establece para habilitar el activador de eventos del modo Advance RF Stats.
Bit 9: Se establece para habilitar el informe periódico de estadísticas avanzadas de RF.
Bit 10 ~ 14: Reservado.
Bit 15: Se establece para habilitar eventos de calidad específicos del proveedor.
Bit 16: Se establece para habilitar el seguimiento de mensajes LMP/LL.
Bit 17: Se establece para habilitar el seguimiento de programación de Coex/multi-link de Bluetooth.
Bit 18: Se establece para habilitar el mecanismo de información de depuración del controlador.
Bit 19 ~ 30: Reservado.
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 control no debería 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
Predeterminado: 0 (el intervalo no tiene limitación).
Rango: 0 ~ 65,535 ms

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

Bit 0 ~ 31: Reservado.

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

Bit 0 ~ 31: Reservado.

Report_interval_multiple 4 octetos El multiplicador para BQR_Minimum_Report_Interval. Cuando este valor >= 1, el intervalo de informes de BQR sigue el formato
Intervalo de informe de BQR = BQR_Minimum_Report_Interval x Report_interval_multiple.
El firmware del controlador no debe informar el próximo evento dentro del intervalo definido. La configuración del intervalo está dedicada específicamente a los eventos de calidad agregados.

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

Nota: Si la configuración de BQR_Report_Interval es mayor que la capacidad del control, este debe mostrar el tiempo máximo de BQR_Report_Interval al completar el comando.

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

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
Current_Quality_Event_Mask 4 octetos Indica la configuración actual de la máscara binaria.
Bit 0: Se habilitó el modo de supervisión de calidad.
Bit 1: Se acerca a los informes de eventos de LSTO.
Bit 2: Se habilitan los informes de eventos de audio entrecortado A2DP.
Bit 3: (e)Los informes de eventos entrecortados de voz SCO están habilitados.
Bit 4: Se habilita el informe de eventos de inflamación raíz.
Bit 5: El modo de supervisión de energía está habilitado.
Bit 6: Se habilitan los informes de eventos entrecortados de LE Audio.
Bit 7: Evento de falla de conexión.
Bit 8: Se establece para habilitar el activador de eventos del modo Advance RF Stats.
Bit 9: Se establece para habilitar el informe periódico de estadísticas avanzadas de RF.
Bit 10 ~ 14: Reservado.
Bit 15: Se habilitan los informes de eventos de calidad específicos del proveedor.
Bit 16: El seguimiento de mensajes de LMP/LL está habilitado.
Bit 17: Se habilitó el seguimiento de programación de Coex o multivínculo de Bluetooth.
Bit 18: Se habilitó el mecanismo de información de depuración del controlador.
Bit 19 ~ 30: Reservado.
Bit 31: El seguimiento específico del proveedor está habilitado.
Current_Vendor_Specific_Quality_Event_Mask 4 octetos Indica la configuración actual de la máscara binaria.
Current_Vendor_Specific_Trace_Mask 4 octetos Indica la configuración actual de la máscara binaria.
BQR_Report_interval 4 octetos Indica la configuración actual de la máscara binaria.
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 control.

Comando del búfer de audio dinámico

El búfer de audio dinámico reduce las fallas de audio cambiando el tamaño del búfer de audio en el controlador Bluetooth en función de diversas situaciones.

OCF: 0x15F

Obtén la función de tiempo de búfer de audio

Sub OCF: 0x01

Usa este comando para obtener la función de tiempo de búfer de audio desde el control Bluetooth.

Parámetro del 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 retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
Dynamic_Audio_Buffer_opcode 1 octeto 0x01: Se obtiene el tiempo de búfer de audio.
Audio_Codec_Type_Supported 4 octetos 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-31 están reservados
Audio_Codec_Buffer_Default_Time_For_Bit_0 2 octetos Tiempo de búfer predeterminado del tipo de códec 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 de búfer máximo del tipo de códec 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 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 Tiempo de búfer predeterminado del tipo de códec 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 de búfer máximo del tipo de códec 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 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 Tiempo de búfer predeterminado del tipo de códec Bit 31 especificado en Audio_Codec_Type_Supported.
Este valor debe ser 0 si no se admite el tipo de códec de Bit 31.
Unidad: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 2 octetos Es el tiempo de búfer máximo del tipo de códec Bit 31 especificado en Audio_Codec_Type_Supported.
Este valor debe ser 0 si no se admite el tipo de códec de Bit 31.
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 Bit 31 especificado en Audio_Codec_Type_Supported.
Este valor debe ser 0 si no se admite el tipo de códec de Bit 31.
Unidad: ms

Establece el tiempo de búfer de audio

Sub OCF: 0x02

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

Parámetro del comando Tamaño Propósito
Audio_Codec_Buffer_Time 2 octetos Tiempo de búfer de audio solicitado para el códec utilizado actualmente.
Unidad: ms

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

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
Dynamic_Audio_Buffer_opcode 1 octeto 0x02: Establece el tiempo de búfer de audio
Audio_Codec_Buffer_Time 2 octetos Tiempo de búfer de audio actual en el control Bluetooth.
Unidad: ms

Evento de HCI (específico del proveedor)

En algunos casos, los eventos de HCI específicos del proveedor son obligatorios. Consulta la Figura 5.4 en la página 1897 de la especificación de BT Core 5.2. El parámetro 0 del evento 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 le sigue inmediatamente a la longitud del parámetro en el paquete de eventos de HCI.

Subevento de incumplimiento del umbral de almacenamiento

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

Código del subevento = 0x54

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

Subevento de cambio de estado de varios anuncios de LE

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

Código del subevento = 0x55

Parámetro de subevento Tamaño Propósito
Advertising_instance 1 octeto Identifica la instancia de publicidad específica.
Los valores válidos son del 0 al max_advt_instances-1.
State_Change_Reason 1 octeto 0x00: Conexión recibida
Connection_handle 2 octetos Identifica la conexión que provocó la inhabilitación de la instancia 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 secundario del evento = 0x56

Parámetro del subevento Tamaño Propósito
APCF_Filter_Index 1 octeto Índice del filtro (0, max_filter-1)
Advertiser_State 1 octeto 0x00: Se encontró el anunciante
0x01: Pérdida del anunciante
Advt_Info_Present 1 octeto 0x00: Información del anunciante (Advt_Info) presente
0x01: Información del anunciante (Advt_Info) ausente
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 la información de depuración del control

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

Código del subevento = 0x57

Parámetro del subevento Tamaño Propósito
debug_block_byte_offset_start 2 octetos Depurar el desplazamiento de bytes del bloque desde el inicio
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 de objeto 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 control subió el seguimiento de mensajes LMP/LL y el seguimiento de programación de Coex/multivínculo de Bluetooth, o bien el controlador volcó los datos de información de depuración.

Parámetro del subevento Tamaño Propósito
Quality_Report_Id 1 octeto 0x01: Informes de calidad en el modo de supervisión.
0x02: Se acerca a LSTO.
0x03: Audio A2DP entrecortado.
0x04: (e)Voz entrecortada SCO.
0x05 ~ 0x06: Reservado.
0x07: Audio de bajo consumo entrecortado.
0x08: Falló la conexión.
0x09 ~ 0xFF: Reservado.
Packet_Types 1 octeto 0x01: ID
0x02: NULL
0x03: POLL
0x04: FHS
0x05: HV1
0x06: HV2
0x07: HV3
0x08: DV57x0x0: 0x08: DV3-0-3: EV3-0x
H0-4: EV3-0x
D-5H0-3: D-5H0-3: D-5H0-3: Dv3: 0x05: 0x05: HV1 x07: 0x02 Reserva



















Connection_Handle 2 octetos Controlador de conexión LCA/(e)SCO/ISO.
Connection_Role 1 octeto Realización de la función para la conexión.
0x00: Central
0x01: Periférico
0x02 ~ 0xFF: Reservado.
TX_Power_Level 1 octeto Nivel de potencia de transmisión actual para el Connection_Handle especificado.

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

RSSI 1 octeto [en dBm]

Valor de indicación de intensidad de la señal (RSSI) recibido para el Connection_Handle especificado.
Este valor debe ser un valor absoluto de 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 control proporcionará la SNR promedio de todos los canales que usa el vínculo.

Unused_AFH_Channel_Count 1 octeto Indica el número de canales sin utilizar en AFH_channel_map.
0x4F ~ 0xFF: Reservado.
AFH_Select_Unideal_Channel_Count 1 octeto Indica la cantidad de canales que presentan interferencias y tienen mala calidad, pero que siguen seleccionados para la AFH.
La cantidad mínima de canales permitida por la especificación de Bluetooth es 20, por lo que, incluso si los 79 canales interfieren y tienen mala calidad, el control debe elegir al menos 20 canales para AFH.
LSTO 2 octetos Parámetro de configuración actual del tiempo de espera de la supervisión de vínculos.
Tiempo = N * 0.625 ms
Rango de tiempo: 0.625 ms a 40.9 s
Connection_Piconet_Clock 4 octetos Reloj Piconet para el Connection_Handle especificado.
Este valor debe ser el mismo que el que responde el controlador al comando HCI_Read_Clock con el parámetro “What_Clock” de 0x01 (Reloj 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 debe restablecer después de informar al host.
No_RX_Count 4 octetos No hay registros de recepción desde el último evento.
El recuento aumenta cuando no se recibe ningún paquete en el horario programado o cuando el paquete recibido se daña.
Este recuento se debe restablecer después de informar al host.
NAK_Count 4 octetos Recuento de NAK (confirmación negativa) desde el último evento.
Este recuento se debe restablecer después de informar al host.
Last_TX_ACK_Timestamp 4 octetos Marca de tiempo del último ACK de transmisión. Se basa en el reloj Bluetooth de la piconet central (CLK).
Unidad: N * 0.3125 ms (1 reloj Bluetooth)
Flow_Off_Count 4 octetos La cantidad de veces que el controlador recibe un flujo de salida (STOP) desde el último evento.
Este recuento se debe restablecer después de informar al host.
Last_Flow_On_Timestamp 4 octetos Marca de tiempo del último flujo de encendido (GO). Se basa en el reloj Bluetooth de la piconet central (CLK).
Unidad: N * 0.3125 ms (1 reloj Bluetooth)
Buffer_Overflow_Bytes 4 octetos [en bytes]

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

Buffer_Underflow_Bytes 4 octetos [en bytes]

Recuento de subdesbordamiento del búfer desde el último evento.
Este recuento se debe restablecer después de informar al host.

bdaddr 6 octetos Dirección del dispositivo remoto
cal_failed_item_count 1 octeto La cantidad de elementos con errores de calibración
TX_Total_Packets 4 octetos La cantidad de paquetes que se envían.
TX_UnAcked_Packets 4 octetos La cantidad de paquetes que no reciben una confirmación.
Este recuento se restablece después de informar al host.
TX_Flushed_Packets 4 octetos La cantidad de paquetes que el punto de vaciado no envía.
Este recuento se restablece después de informar al host.
TX_Last_Subevent_Packets 4 octetos La cantidad de paquetes que la capa de vínculos transmite una PDU de datos del 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 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 La cantidad de paquetes duplicados (retransmisión) 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 el mismo que el parámetro del comando LE READ ISO Link Quality (consulta la versión 5.4 de la especificación de Bluetooth Core). Las transmisiones asociadas 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 descarga (en un CIS) o al final del evento con el que está asociada (en un BIS; consulta la versión 5.4, vol 6, parte B, sección 4.4.6.6 de la especificación de Bluetooth Core).
Coex_Info_Mask 2 octetos Bit 0, CoexInvolvement: Se establece para indicar que se sospecha que las actividades coex están involucradas cuando se genera este informe (por ejemplo, A2DP Chops y Approaching LSTO).
Bit 1 - WL 2G Radio Active: Se establece para indicar que la radio WLAN 2G está activa.
Bit 2 - WL 2G conectado: Se establece para indicar que la radio WLAN 2G está activa y conectada.
Bit 3 - WL 5G/6G Radio Active: Se establece para indicar que la radio WLAN 5G/6G está activa.
Bit 4-15 - Reservado
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 del subevento = 0x58 [Quality_Report_Id = 0x05, evento de inflamación raíz]

Este evento indica que el control o la HAL de Bluetooth encontraron un error fatal y necesitan la pila Bluetooth para registrar esta situación y reiniciarse. En cualquier caso, el control 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 la HAL o el controlador; 0 si es un error específico del proveedor de conjuntos de chips. Vendor_Specific_Error_Code contiene un código de error específico del proveedor del chipset de HAL/Controller. Debe establecerse en 0 si el parámetro Error_Code no es 0. Los parámetros Error_Code y Vendor_Specific_Error_Code no deben ser 0.

Parámetro del subevento Tamaño Propósito
Quality_Report_Id 1 octeto 0x00 ~ 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 un error en el control. Consulta las especificaciones 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 del subevento Tamaño Propósito
Quality_Report_Id 1 octeto 0x00 ~ 0x10: Reservado.
0x11: Seguimiento de mensajes LMP/LL.
0x12: Seguimiento de programación de Coex/multivínculo de Bluetooth.
0x13: Volcado de datos de la información de depuración del controlador.
0x14 ~ 0xFF: Reservado.
Connection_Handle 2 octetos Controlador de conexión.
Parámetro específico del proveedor (Longitud total del parámetro - 4) * octetos El formato específico del proveedor del seguimiento de mensajes LMP, el seguimiento de programación de varios vínculos de Bluetooth y Coex, y el volcado de datos de la información de depuración del controlador

Asistencia para varios anunciantes

Los objetivos de la asistencia para varios anunciantes son los siguientes:

  • Capacidad de admitir varios anuncios (max_advt_instances)
  • Diferentes potencias de transmisión para permitir un rango variable
  • Diferente contenido publicitario
  • Una respuesta individual para cada anunciante
  • Privacidad (no de la que se puede hacer un seguimiento) 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 de Bluetooth Core 4.1.

LE_Multi_Advt_Command

OCF: 0x154

Parámetro del 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 completado para este comando.

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
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 base: Especificación de Bluetooth Core 4.1, página 964 (Comando de parámetros de publicidad LE Set)

Sub OCF: 0x01

Parámetro del subcomando Tamaño Propósito
Advertising_Interval_Min Según la especificación Según la especificación
Advertising_Interval_Max Según la especificación Según la especificación
Advertising_Type Según la especificación Según la especificación
Own_Address_Type Según la especificación Según la especificación
Own_Address Según la especificación Según la especificación
Direct_Address_Type Según la especificación Según la especificación
Direct_Address Según la especificación Según la especificación
Advertising_Channel_Map Según la especificación Según la especificación
Adverstising_Filter_Policy Según la especificación Según la 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 cuando se configuró esta instancia de varios anuncios. Esto permite tener una dirección privada que se puede resolver en el momento de la transmisión de la primera baliza. El anuncio en una instancia continuará independientemente de la conexión. La pila de Bluetooth del host podría emitir un comando para iniciar el anuncio en una instancia, después de la conexión.

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

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
Multi_advt_opcode 1 octeto 0 × 01 [Set_Advt_Param_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd

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

Sub OCF: 0x02

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

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

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
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 de Bluetooth Core 4.1, página 970 (Comando de datos de respuesta de análisis de LE Set)

Sub OCF: 0x03

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

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

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
Multi_advt_opcode 1 octeto 0x03 [Set_Scan_Resp_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd

Referencia base: Especificación de Bluetooth Core 4.1, página 963 (LE Set Random Address Command)

Sub OCF: 0x04

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

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

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
Multi_advt_opcode 1 octeto 0x04 [Set_Random_Addr_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd

Referencia base: Especificación de Bluetooth Core 4.1, página 971 (LE Set Advertising Enable Command en esa especificación principal)

OCF: 0x05

Parámetro del 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 completado para este comando.

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
Multi_advt_opcode 1 octeto 0 × 05 [Set_Advt_Enable_Multi_Sub_Cmd]

Resolución descargada de la dirección privada

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

  • La latencia involucrada con el host en la resolución de una dirección privada
  • Evitar activar el host para ahorrar energía

LE_Set_RPA_Timeout

OCF: 0x15C

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

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

Comando LE_RPA_offload

OCF: 0x155

Parámetro del comando Tamaño Propósito
RPA_offload_opcode 1 octeto 0x1: Habilitar función específica del cliente
0x2: Agregar IRK a la lista
0x3: Quitar IRK de la lista
0x4: Borrar la lista de IRK
0x5: Leer la entrada de la lista de IRK

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

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
Event_RPA_offload_opcode 1 octeto 0x1: Habilitar función específica del cliente
0x2: Agregar IRK a la lista
0x3: Quitar IRK de la lista
0x4: Borrar la lista de IRK
0x5: Leer la entrada de la lista de IRK

LE_RPA_offload: Enable_cust_specific_sub_Command

Sub OCF: 0x01

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

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

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

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
Event_cust_specific_feature_opcode 1 octeto 0x01 [Habilitar función específica del cliente]

LE_RPA_offload: Agrega_IRK_to_list_sub_Command

Sub OCF: 0x02

Parámetro del subcomando Tamaño Propósito
LE_IRK 16 octetos LE IRK (LSB de 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 primer byte)

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

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
Event_cust_specific_feature_opcode 1 octeto 0x02 [Agrega IRK a la lista]
LE_IrkList_AvailableSpaces 1 octeto Entradas disponibles de la lista de contactos presenciales después de la operación actual

LE_RPA_offload: Quitar_IRK_to_list_sub_Command

Sub OCF: 0x03

Parámetro del 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 IRK

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

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
Event_cust_specific_feature_opcode 1 octeto 0x03 [Quita IRK de la lista]
LE_IrkList_AvailableSpaces 1 octeto Entradas disponibles de la lista de contactos presenciales después de la operación actual

LE_RPA_offload: Borrar_IRK_list_sub_Command

Sub OCF: 0x04

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

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

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
Event_cust_specific_feature_opcode 1 octeto 0x04 [Borrar lista de IRK]
LE_IrkList_AvailableSpaces 1 octeto Entradas disponibles de la lista de contactos presenciales después de la operación actual [max_irk_list_sz]

LE_RPA_offload: Read_IRK_list_sub_Command

Sub OCF: 0x05

Parámetro del 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 completado para este comando.

Parámetro de retorno Tamaño Propósito
Status 1 octeto Estado de Comando completado
Event_cust_specific_feature_opcode 1 octeto 0x05 [Leer entrada de la lista de IRK]
LE_Read_IRK_List_entry 1 octeto Índice de la IRK que el host desea volver a leer (el tamaño máximo de la lista de IRK es 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 a IRK
LE_Resolved_Private_Address 6 octetos Dirección privada actual resuelta que se puede resolver de este IRK