Requisitos de HCI

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

Este documento proporciona una lista de requisitos de HCI de Bluetooth (BT) y Bluetooth de bajo consumo (BLE). El objetivo es que los proveedores de pilas Host BT y los proveedores de controladores BT cumplan con estos requisitos de plataforma para poder utilizar el conjunto de funciones que se describe a continuación.

Este documento 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

Capacidades 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 gestionar el panorama cambiante y gestionar las migraciones, en este documento se describe una filosofía de diseño que permite a los controladores BT exponer sus capacidades (más allá de la especificación estándar Bluetooth Core 5.2). La pila BT del host puede usar estas capacidades para determinar qué funciones habilitar.

Apoyando estándares abiertos

Uno de los objetivos de Android es admitir estándares abiertos después de la ratificación en una especificación Bluetooth. Si una característica que se describe a continuación está disponible en los métodos HCI estándar en una futura especificación de Bluetooth, 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 de código de operación (OCF): 0x153

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

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

Parámetro de retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
max_advt_instances
(Obsoleto)
1 octeto Número de instancias de publicidad admitidas.

Reservado después de v0.98.
Este parámetro está obsoleto en la especificación de funciones de Google v0.98 y superiores en favor de LE Extended Advertising disponible en la versión de especificación BT 5.0 y superiores.
offloaded_resolution_of_private-address
(Obsoleto)
1 octeto Capacidad de chip BT de RPA.
Si es compatible con un chip, necesita la habilitación del host.
0 = No capaz
1 = Capaz

Reservado después de v0.98.
Este parámetro está obsoleto en la especificación de funciones de Google v0.98 y superiores en favor de la función de Privacidad disponible en la versión de especificaciones de BT 4.2 y superiores.
total_scan_results_storage 2 octetos Almacenamiento de resultados de análisis en bytes
max_irk_list_sz 1 octeto Número de entradas IRK admitidas en el firmware
filtering_support 1 octeto Soporte para filtrado en el controlador.
0 = No compatible
1 = Compatible
max_filter 1 octeto Número de filtros admitidos
activity_energy_info_support 1 octeto Admite informes de actividad y información energética.
0 = No capaz
1 = Capaz
version_supported 2 octetos Especifica la versión de la especificación de función de Google admitida.
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 Número total de anunciantes rastreados con fines de OnLost / OnFound
extended_scan_support 1 octeto Admite intervalos y ventanas de escaneo 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 v0.98.
Este parámetro está obsoleto en la especificación de funciones de Google v0.98 y superiores en favor de la función de Privacidad disponible en la versión de especificaciones de BT 4.2 y superiores.
A2DP_source_offload_capability_mask 4 octetos Se admiten máscaras de bits para tipos de códecs
Bit 0 - SBC
Bit 1 - CAA
Bit 2 - APTX
Bit 3: APTX HD
Bit 4: LDAC
Los bits 5-31 están reservados
bluetooth_quality_report_support 1 octeto Admite informes de eventos de calidad de Bluetooth
0 = No capaz
1 = Capaz
dynamic_audio_buffer_support 4 octetos Admite búfer de audio dinámico en el controlador Bluetooth
Se admiten máscaras de bits para tipos de códecs
Bit 0 - SBC
Bit 1 - CAA
Bit 2 - APTX
Bit 3: APTX HD
Bit 4: LDAC
Los bits 5-31 están reservados
a2dp_offload_v2_support 1 octeto Admite comandos A2dp Offload v2 en el controlador Bluetooth (consulte Iniciar descarga A2DP , Detener descarga A2DP )
0 = No compatible
1 = Compatible

Lote de resultados de escaneo

Un objetivo del diseño es mejorar la forma en que las notificaciones de eventos de Bluetooth LE Scan Response se entregan al host, para ahorrar energía en el host.

Al reducir la frecuencia con la que el controlador notifica al procesador de aplicaciones del host los resultados del escaneo, el procesador de aplicaciones del host puede permanecer inactivo/en suspensión 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 almacenar los resultados del escaneo.

Esta función se centra en la gestión y configuración de la instalación de almacenamiento de resultados de escaneo LE en el controlador Bluetooth. El almacenamiento se utiliza para agrupar temporalmente datos publicitarios y escanear datos y metadatos que recibe el controlador para su posterior entrega al host.

El firmware admitirá dos tipos de procesamiento por lotes, que se pueden realizar simultáneamente:

  • Truncado. Contiene los siguientes elementos de información: {MAC, TX Power, RSSI, Timestamp}
  • Lleno. 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 Objetivo
Batch_Scan_opcode 1 octeto 0x1: habilitar función específica del cliente
0x2: configurar los parámetros de almacenamiento del escaneo por lotes
0x3 - Establecer parámetros de escaneo por lotes
0x4: leer los parámetros del resultado del análisis por lotes

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

Parámetro de retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
Batch_Scan_opcode 1 octeto 0x1: habilitar función específica del cliente
0x2: configurar los parámetros de almacenamiento del escaneo por lotes
0x3 - Establecer parámetros de escaneo por lotes
0x4: leer los parámetros del resultado del análisis por lotes

LE_Batch_Scan_Command: Habilitar función específica del cliente

Sub-OCF: 0x01

Parámetro de subcomando Tamaño Objetivo
enable_customer_specific_feature_set 1 octeto 0x01: habilitar la función de escaneo por lotes
0x00: deshabilitar la función de escaneo por lotes

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

Parámetro de retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
Batch_Scan_opcode 1 octeto 0x1: habilitar función específica del cliente
0x2: configurar los parámetros de almacenamiento del escaneo por lotes
0x3 - Establecer parámetros de escaneo por lotes
0x4: leer los parámetros del resultado del análisis por lotes

LE_Batch_Scan_Command: Establecer el subcomando Parámetro de almacenamiento de escaneo por lotes

Sub-OCF: 0x02

Parámetro de subcomando Tamaño Objetivo
Batch_Scan_Full_Max 1 octeto Espacio máximo de almacenamiento (en %) asignado al estilo 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 Nivel de notificación de configuración (en %) para el grupo de almacenamiento individual
[Rango: 0-100]
Si se establece en 0, se desactivará la notificación. Se genera un evento de HCI específico del proveedor (subevento de infracción del umbral de almacenamiento)

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

Parámetro de retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
Batch_scan_opcode 1 octeto 0x02 [Establecer parámetros de escaneo por lotes]

LE_Batch_Scan_Command: Establecer el subcomando Parámetro de escaneo por lotes

Sub-OCF: 0x03

Parámetro de subcomando Tamaño Objetivo
Batch_Scan_Mode 1 octeto 0x00: el escaneo por lotes está deshabilitado
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 escaneo del escaneo por lotes (# de ranura)
Duty_cyle_scan_interval 4 octetos Período de intervalo de escaneo por lotes (# de ranura)
own_address_type 1 octeto 0x00 - Dirección de dispositivo público
0x01: dirección de dispositivo aleatoria
Batch_scan_Discard_Rule 1 octeto 0: descartar el anuncio más antiguo
1 - Descartar anuncio con RSSI más débil

Este subcomando iniciará el escaneo por lotes, si está habilitado. En el escaneo truncado, los resultados se almacenan en 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 escaneo. 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 utilizará el escaneo activo y se registrarán las respuestas del escaneo. La clave única de estilo completo = {MAC, paquete de anuncios}, independientemente del intervalo de escaneo. El registro que se debe conservar para el modo completo es { BD_ADDR , Tx Power, RSSI, marca de tiempo, paquete de anuncios, respuesta de escaneo}. En el estilo completo, el mismo paquete AD, cuando se ve varias veces en diferentes intervalos de escaneo, se registra solo una vez. Sin embargo, en el modo Truncado, lo que interesa es la visibilidad de BA_ADDR en diferentes intervalos de escaneo (una vez por intervalo de escaneo). El RSSI es el valor promedio de todos los duplicados de un anuncio único dentro de un intervalo de escaneo.

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

Parámetro de retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
Batch_scan_opcode 1 octeto 0x03 [Establecer parámetros de escaneo por lotes]

LE_Batch_Scan_Command: subcomando Leer resultados del análisis por lotes

Sub-OCF: 0x04

Parámetro de subcomando Tamaño Objetivo
Batch_Scan_Data_read 1 octeto 0x01 – Datos en modo truncado
0x02 – Datos en 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 quepan en un evento de comando completo. El host repetirá la emisión de este comando hasta que los resultados correspondientes en el evento Comando completo indiquen 0 en el número de registros, lo que indica que el controlador no tiene más registros para comunicar al host. Cada evento de comando completo podría contener múltiples registros de un solo tipo de datos (completo o truncado).

Las referencias horarias 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 Read_Batch_Scan_Results_Sub_cmd . Si la hora de llegada de un comando es T_c en el firmware, entonces la hora real en que se tomó la marca de tiempo en el firmware es T_fw . El tiempo de reporte será: ( T_c - T_fw ). T_c y T_fw están en el dominio temporal del firmware. Esto permite al anfitrión calcular cuánto tiempo hace que ocurrió el evento.

Parámetro de retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
Batch_scan_opcode 1 octeto 0x03 [Establecer parámetros de escaneo por lotes]
Batch_Scan_data_read 1 octeto Identifica el formato (Truncado o Completo)
num_of_records 1 octeto Número de registros de Batch_Scan_data_read
format_of_data Variable Modo truncado:
Dirección[0]: 6 octetos
Tipo_dirección[0]: 1 octeto
Tx_Pwr[0]: 1 octeto
RSSI[0] : 1 octeto
Marca de tiempo[0]: 2 octetos
[múltiples registros ( num_of_records ) con el formato anterior]

Modo completo:
Dirección[0]: 6 octetos
Tipo_dirección[0]: 1 octeto
Tx_Pwr[0]: 1 octeto
RSSI[0]: 1 octeto
Marca de tiempo[0]: 2 octetos
Adv package_len[0]: 1 octeto
Adv_packet[0]: octetos Adv_packet_len
Scan_data_resp_len[0]: 1 octeto
Scan_data_resp[0]: octetos Scan_data_resp
[múltiples registros con el formato anterior ( num_of_records )]

Filtro de contenido de paquetes publicitarios

Utilícelo para habilitar/deshabilitar/configurar el filtro de contenido de paquetes publicitarios (APCF) en el controlador. APCF filtra los informes de publicidad en el controlador pero no filtra la publicidad periódica.

LE_APCF_Comando

OCF: 0x157

Parámetro de comando Tamaño Objetivo
APCF_opcode 1 octeto 0x00 - APCF habilitado
0x01 - APCF establece parámetros de filtrado
0x02 - Dirección de emisora ​​APCF
0x03 - UUID del servicio APCF
0x04 - UUID de solicitud de servicio APCF
0x05 - Nombre local APCF
0x06 - Datos del fabricante APCF
0x07 - Datos del servicio APCF
0x08 - Servicio de descubrimiento de transporte APCF
0x09 - Filtro de tipo AD APCF
0x10 ~ 0xAF - Reservado para uso futuro
0xB0 ~ 0xDF - Reservado para el proveedor
0xE0 ~ 0xFE - Reservado para uso futuro
0xFF - APCF Leer características extendidas

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

Parámetro de retorno Tamaño Objetivo
Status 1 octeto Estado de devolución
APCF_opcode 1 octeto 0x00 - APCF habilitado
0x01 - APCF establece parámetros de filtrado
0x02 - Dirección de emisora ​​APCF
0x03 - UUID del servicio APCF
0x04 - UUID de solicitud de servicio APCF
0x05 - Nombre local APCF
0x06 - Datos del fabricante APCF
0x07 - Datos del servicio APCF
0x08 - Servicio de descubrimiento de transporte APCF
0x09 - Filtro de tipo AD APCF
0x10 ~ 0xAF - Reservado para uso futuro
0xB0 ~ 0xDF - Reservado para el proveedor
0xE0 ~ 0xFE - Reservado para uso futuro
0xFF - APCF Leer características extendidas

LE_APCF_Command: habilitar_sub_cmd

Sub-OCF: 0x00

Parámetro de subcomando Tamaño Objetivo
APCF_enable 1 octeto 0x01: habilitar la función APCF
0x00: deshabilitar la función APCF

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

Parámetro de retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
APCF_opcode 1 octeto 0x0 - APCF habilitado
APCF_Enable 1 octeto Activar/desactivar se establece mediante APCF_enable

LE_APCF_Command: set_filtering_parameters_sub_cmd

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

Sub-OCF: 0x01

Parámetro de subcomando Tamaño Objetivo
APCF_Action 1 octeto 0x00 - Agregar
0x01 - Eliminar
0x02 - Borrar
Eliminar borrará el filtro específico junto con las entradas de funciones asociadas en otras tablas.
Borrar borrará todos los filtros y 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: configurado 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 del servicio
Bit 3: Configurar para habilitar la verificación de UUID de solicitud de servicio
Bit 4: Configurar para habilitar la verificación del nombre local
Bit 5: Configurar para habilitar la verificación de datos del fabricante
Bit 6: Configurar para habilitar la verificación de datos de servicio
Bit 7: Configurar para habilitar la verificación del servicio de descubrimiento de transporte
Bit 8: Configurar para habilitar la verificación de tipo AD
APCF_List_Logic_Type 2 octetos Operación lógica para cada selección de características (posición por bit) especificada en APCF_Feature_Selection .
Válido solo cuando una función está habilitada.
Valor de posición de bit:
0: O
1: Y
Si se selecciona la lógica "Y", un paquete ADV pasará el filtro sólo si contiene TODAS las entradas de la lista.
Si se selecciona la lógica "OR", 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 lógica "Y". Solo son aplicables para (Bit 3 - Bit 6) cuatro campos de APCF_Feature_Selection .
rssi_high_thresh 1 octeto [en dBm]
Se considera que el anunciante está visto solo si la señal es superior al umbral alto de RSSI. De lo contrario, el firmware debería comportarse como si nunca lo hubiera visto.
delivery_mode 1 octeto 0x00 - immediate
0x01 - on_found
0x02 - batched
onfound_timeout 2 octetos Válido solo si delivery_mode es on_found .
[en milisegundos]
Es hora de que el firmware permanezca y recopile anuncios adicionales antes de informar.
onfound_timeout_cnt 1 octeto Válido solo si delivery_mode es on_found .
[contar]
Si un anuncio en onFound permanece en el firmware durante el tiempo de espera onfound_timeout , recopilará algunos anuncios y se verificará el recuento. Si el recuento excede onfound_timeout_cnt , se informa como OnFound inmediatamente después.
rssi_low_thresh 1 octeto Válido solo si delivery_mode es on_found .
[en dBm]
El paquete del anunciante se considera no visto si el RSSI del paquete recibido no supera el umbral bajo de RSSI.
onlost_timeout 2 octetos Válido solo si delivery_mode es on_found .
[en milisegundos]
Si un anuncio, después de ser encontrado, no se ve de forma contigua durante el período lost_timeout , se informará inmediatamente como perdido.
num_of_tracking_entries 2 octetos Válido solo si delivery_mode es on_found .
[contar]
Número total de anunciantes para realizar un seguimiento por filtro.

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

El host podrá configurar múltiples filtros con APCF_Application_Address_type establecido en 0x02 (para todas las direcciones de emisoras) para administrar varias combinaciones de filtros.

El filtrado, el procesamiento por lotes y la generación de informes son conceptos interrelacionados. Cada anuncio y respuesta de escaneo relacionada tendrá que pasar por todos los filtros, uno tras otro. Por lo tanto, las acciones resultantes ( delivery_mode ) están estrechamente ligadas al 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 vendrá después de OnFound cuando se pierda.

Este flujo de procesamiento representa el modelo conceptual:

Cuando se recibe un cuadro de anuncio (o respuesta de escaneo), se aplica a todos los filtros en orden de serie. Es posible que un anuncio pueda generar informes inmediatos basados ​​en un filtro y en lotes del mismo debido a una acción de filtro diferente.

Los umbrales de nivel RSSI (alto y bajo) brindan la capacidad de 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 en inmediato o por lotes, el RSSI de una trama se considera para el procesamiento posterior del controlador. Diferentes aplicaciones necesitan diferentes comportamientos de generación de informes y procesamiento por lotes. Esto permite que varias aplicaciones tengan informes directos y/o procesamiento por lotes de resultados en el firmware, simultáneamente. Un ejemplo es un caso en el que un escaneo por lotes está activo desde una aplicación y luego otra aplicación emite un escaneo LE normal. Antes de emitir un análisis por lotes, el marco/la aplicación establece los filtros adecuados. Más tarde, cuando la segunda aplicación emite un escaneo regular, el procesamiento por lotes anterior continúa. Sin embargo, debido al escaneo regular, conceptualmente es similar a agregar un filtro nulo (junto con todos los filtros existentes) junto con el comando de escaneo LE. Los parámetros del comando de escaneo LE tienen prioridad cuando están activos. Cuando el escaneo LE normal está deshabilitado, el controlador volverá a un escaneo por lotes anterior, si existiera.

El modo de entrega OnFound se basa en filtros configurados. Una combinación que desencadena la acción de un filtro para que tenga éxito se considera la entidad a rastrear para onLost . El evento correspondiente es el subevento de seguimiento LE Advt.

La transición OnFound/OnLost para un filtro (si está habilitado) se verá así:

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

Parámetro de retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
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 Número de entradas disponibles en la tabla de filtros

LE_APCF_Command: transmisión_dirección_sub_cmd

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

Sub-OCF: 0x02

Parámetro de subcomando Tamaño Objetivo
APCF_Action 1 octeto 0x00 - Agregar
0x01 - Eliminar
0x02 - Borrar
Eliminar eliminará la dirección de emisora ​​especificada en el filtro especificado.
Borrar borrará todas las direcciones de emisoras en el filtro especificado.
APCF_Filter_Index 1 octeto Índice de filtro (0, max_filter-1 )
APCF_Broadcaster_Address 6 octeto Dirección de dispositivo de 6 bytes para agregar o eliminar de la lista de direcciones de emisoras
APCF_Application_Address_type 1 octeto 0x00: público
0x01: Aleatorio
0x02: NA (tipo de dirección no aplicable)

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

Parámetro de retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
APCF_opcode 1 octeto 0x02 - Dirección de emisora ​​APCF
APCF_Action 1 octeto APCF_Action del comando Echo Back
APCF_AvailableSpaces 1 octeto Número de entradas gratuitas aún disponibles en la tabla de direcciones de transmisión

LE_APCF_Command: service_uuid_sub_cmd

Este subcomando se utiliza para agregar o eliminar 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 Objetivo
APCF_Action 1 octeto 0x00 - Agregar
0x01 - Eliminar
0x02 - Borrar
Eliminar eliminará la dirección UUID del servicio especificado en el filtro especificado.
Borrar borrará todos los UUID de servicio en el filtro especificado.
APCF_Filter_Index 1 octeto Índice de filtro (0, max_filter -1)
APCF_UUID 2,4,16 octeto El UUID del servicio (16 bits, 32 bits o 128 bits) para agregar o eliminar de la lista.
APCF_UUID_MASK 2,4,16 octeto La máscara UUID del servicio (16 bits, 32 bits o 128 bits) para 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 retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
APCF_opcode 1 octeto 0x03 - UUID del servicio APCF
APCF_Action 1 octeto APCF_Action del comando Echo Back
APCF_AvailableSpaces 1 octeto Número de entradas gratuitas aún disponibles en la tabla UUID del servicio

LE_APCF_Command: solicitation_uuid_sub_cmd

Este subcomando se utiliza para agregar o eliminar 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 Objetivo
APCF_Action 1 octeto 0x00 - Agregar
0x01 - Eliminar
0x02 - Borrar
Eliminar eliminará la dirección UUID de solicitud en el filtro especificado.
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,16 octeto El UUID de solicitud (16 bits, 32 bits o 128 bits) para agregar o eliminar de la lista.
APCF_UUID_MASK 2,4,16 octeto La máscara UUID de solicitud (16 bits, 32 bits o 128 bits) para 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 retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
APCF_opcode 1 octeto 0x04 - UUID de solicitud APCF
APCF_Action 1 octeto APCF_Action del comando Echo Back
APCF_AvailableSpaces 1 octeto Número de entradas gratuitas aún disponibles en la tabla UUID de solicitud

LE_APCF_Command: nombre_local_sub_cmd

Este subcomando se utiliza para agregar o eliminar 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 Objetivo
APCF_Action 1 octeto 0x00 - Agregar
0x01 - Eliminar
0x02 - Borrar
Eliminar eliminará la cadena de nombre local especificada en el filtro especificado.
Borrar borrará todas las cadenas de nombres locales en el filtro especificado.
APCF_Filter_Index 1 octeto Índice de filtro (0, max_filter -1)
APCF_LocName_Mandata_or_SerData tamaño variable Una cadena de caracteres para el nombre local.

Notas:
  • Actualmente, el número máximo de caracteres en una cadena de nombre local es 29
  • No aplicable cuando la acción es "Borrar" (0x2)

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

Parámetro de retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
APCF_opcode 1 octeto 0x05 - Nombre local APCF
APCF_Action 1 octeto APCF_Action del comando Echo Back
APCF_AvailableSpaces 1 octeto Número de entradas gratuitas aún disponibles en la tabla de nombres locales

LE_APCF_Command: manf_data_sub_cmd

Este subcomando se utiliza para agregar o eliminar 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 Objetivo
APCF_Action 1 octeto 0x00 - Agregar
0x01 - Eliminar
0x02 - Borrar
Eliminar eliminará la cadena de datos del fabricante especificada en el filtro especificado.
Borrar 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 Una cadena de caracteres para los datos del fabricante.

Notas:
  • Actualmente, el número máximo de caracteres en una cadena de nombre local es 29
  • No aplicable cuando la acción es "Borrar" (0x2)
APCF_ManData_Mask tamaño variable La máscara de datos de fabricación para 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 retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
APCF_opcode 1 octeto 0x06 - Datos del fabricante APCF
APCF_Action 1 octeto APCF_Action del comando Echo Back
APCF_AvailableSpaces 1 octeto Número de entradas gratuitas aún disponibles en la tabla de datos del fabricante

LE_APCF_Command: service_data_sub_cmd

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

Sub-OCF: 0x07

Parámetro de subcomando Tamaño Objetivo
APCF_Action 1 octeto 0x00 - Agregar
0x01 - Eliminar
0x02 - Borrar
Eliminar eliminará la cadena de datos del servicio especificado en el filtro especificado.
Borrar borrará todas las cadenas de datos del 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 Una cadena de caracteres para datos de servicio.

Notas:
  • Actualmente, el número máximo de caracteres en una cadena de nombre local es 29
  • No aplicable cuando la acción es "Borrar" (0x2)
APCF_LocName_Mandata_or_SerData_Mask tamaño variable La máscara de datos del servicio para 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 retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
APCF_opcode 1 octeto 0x07 - Datos del servicio APCF
APCF_Action 1 octeto APCF_Action del comando Echo Back
APCF_AvailableSpaces 1 octeto Número de entradas gratuitas aún disponibles para la tabla de datos de servicio

LE_APCF_Command: ad_type_sub_cmd

Este subcomando se utiliza para agregar o eliminar un tipo de AD o para borrar una lista de tipos de AD para el filtrado en el chip. Utilice read_extended_features_sub_cmd para comprobar si este comando es compatible o no.

Sub-OCF: 0x09

Parámetro de subcomando Tamaño Objetivo
APCF_Action 1 octeto 0x00 - Agregar
0x01 - Eliminar
0x02 - Borrar
Eliminar eliminará el tipo de AD especificado en el filtro especificado.
Borrar borrará todos los tipos de AD en el filtro especificado.
APCF_Filter_Index 1 octeto Índice de filtro (0, max_filter -1)
APCF_AD_TYPE 1 octeto El tipo de AD para agregar o eliminar de la lista. Ignorar cuando APCF_Action sea 0x02 (Borrar)
APCF_AD_DATA_Length tamaño variable 0x00 - significa no filtrar el contenido de los datos
Ignorar cuando APCF_Action sea 0x02 (Borrar)
APCF_AD_DATA tamaño variable Ignorar cuando APCF_Action sea 0x02 (Borrar)
APCF_AD_DATA_MASK tamaño variable Ignorar cuando APCF_Action sea 0x02 (Borrar)
Debe tener la misma longitud que APCF_AD_DATA .

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

Parámetro de retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
APCF_opcode 1 octeto 0x09 - Tipo de anuncio APCF
APCF_Action 1 octeto APCF_Action del comando Echo Back
APCF_AvailableSpaces 1 octeto Número de entradas gratuitas aún disponibles en la tabla Tipo AD

LE_APCF_Command: read_extended_features_sub_cmd

Este subcomando se utiliza para leer funciones APCF extendidas.

Sub-OCF: 0xFF

Parámetro de subcomando Tamaño Objetivo
No aplica Parámetro de comando vacío.

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

Parámetro de retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
APCF_opcode 1 octeto 0xFF - APCF_Read_Extended_Features
APCF_extended_features 2 octeto

Se admiten máscaras de bits para funciones ampliadas:

  • Bit 0: Filtro de servicio de descubrimiento de transporte compatible
  • Bit 1: admite filtro de tipo AD
  • Bit 2 ~15: Reservado para uso futuro

valor del bit

  • 0 = No compatible
  • 1 = Compatible

Comando de información de actividad y energía 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 BT y su estado macro, junto con lo que sucede en las aplicaciones y el marco. Para hacer esto, se requiere la siguiente información de la pila BT y del controlador:

  • Pila BT: informar del estado macrooperacional actual del controlador
  • Firmware: informes de actividad agregada e información energética

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

  • Inactivo: [escaneo de página, anuncio LE, escaneo de consulta]
  • Escanear: [localización/consulta/intentando conectarse]
  • Activo: [enlace ACL activado, enlace SCO en curso, modo de rastreo]

Las actividades que el controlador realiza un seguimiento a lo largo de su vida son el tiempo de Tx, el tiempo de Rx, 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 del proveedor.

OCF: 0x159

Parámetro de subcomando Tamaño Objetivo
N / A Parámetros de comando vacíos

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

Parámetro de retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
total_tx_time_ms 4 octetos Tiempo total realizando Tx
total_rx_time_ms 4 octetos Tiempo total realizando Rx
total_idle_time_ms 4 octetos Tiempo total en inactivo (estados de bajo consumo sin suspensión)
total_energy_used 4 octetos Energía total utilizada [producto de corriente (mA), voltaje (V) y tiempo (ms)]

Comando LE extendido para establecer parámetros de escaneo

Este comando se puede utilizar para habilitar una ventana e intervalo de escaneo más grandes en el controlador. Según la especificación BT Core 5.2, una ventana de escaneo y un intervalo tienen un límite superior de 10,24 segundos, lo que dificulta los intervalos de escaneo más largos de las aplicaciones, más allá de 10,24 segundos.

Referencia básica: Especificación BT Core 5.2, página 2493 (comando LE Establecer parámetros de escaneo)

OCF: 0x15A

Parámetro de comando Tamaño Objetivo
LE_Ex_Scan_Type 1 octeto 0x00 - Escaneo pasivo. No se enviarán paquetes SCAN_REQ (predeterminado).
0x01: escaneo activo. Se pueden enviar paquetes SCAN_REQ .
LE_Ex_Scan_Interval 4 octetos Definido como el intervalo de tiempo desde que el controlador inició su último escaneo LE hasta que comenzó el escaneo LE posterior.
Rango: 0x0004 a 0x00FFFFFF
Valor predeterminado: 0x0010 (10 ms)
Tiempo = N * 0,625 ms
Rango de tiempo: 2,5 ms a 10442,25 segundos
LE_Ex_Scan_Window 4 octetos La duración de la exploración LE. LE_Scan_Window será menor o igual que LE_Scan_Interval .
Rango: 0x0004 a 0xFFFF
Valor predeterminado: 0x0010 (10 ms)
Tiempo = N * 0,625 ms
Rango de tiempo: 2,5 ms a 40,95 segundos
Own_Address_Type 1 octeto 0x00 - Dirección de dispositivo público (predeterminado)
0x01 - Dirección de dispositivo aleatoria
LE_Ex_Scan_Filter_Policy 0x00: acepta todos los paquetes de publicidad (predeterminado). Se ignorarán los paquetes de publicidad dirigida que no estén dirigidos a este dispositivo.
0x01: ignora los paquetes de publicidad de los dispositivos que no están en la lista Sólo lista blanca. Se ignorarán los paquetes de publicidad dirigida que no estén dirigidos a este dispositivo.

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

Parámetro de retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo

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 forma binaria, para su posprocesamiento y análisis. Esto ayuda a depurar problemas en el campo y proporciona a los ingenieros un conjunto de herramientas para registrar información para su análisis. Un controlador puede proporcionar la información cuando la solicita un host a través del evento (subevento Información de depuración del controlador) o de forma autónoma cuando lo desea el controlador. Los usos de ejemplo podrían ser informar información sobre el estado del firmware, información de volcado de memoria, información de registro, etc.

OCF: 0x15B

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

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

Parámetro de retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo

Soporte de descarga de hardware 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 BT. El flujo de datos de audio codificado pasa directamente desde el procesador de audio al controlador BT sin la participación del host BT. El BT Host sigue siendo responsable de la configuración y el control de la sesión 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 0x02-0x03 son independientes del códec configurado.

OCF: 0x15D

Iniciar descarga de A2DP (heredado)

Sub-OCF: 0x01

Utilice este comando tanto para configurar el proceso de descarga de A2DP como para iniciar la transmisión de A2DP.

Parámetro de comando Tamaño Objetivo
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 desactiva la descarga.
SCMS-T_Enable 2 octetos Octeto 0: Bandera que permite agregar el encabezado SCMS-T.
  • 0x00: encabezado SCMS-T no incluido.
  • 0x01: encabezado SCMS-T incluido.

Octeto 1: Valor del encabezado SCMS-T, cuando está habilitado.

Sampling_Frequency 4 octetos 0x01 - 44100Hz
0x02 - 48000Hz
0x04 - 88200Hz
0x08 - 96000Hz
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 La tasa de bits de audio codificado en bits por segundo.
0x00000000: la tasa de bits de audio no está especificada/no se utiliza.
0x00000001 - 0x00FFFFFF - Velocidad de bits de audio codificado 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 de canal L2CAP que se utilizará para esta conexión A2DP
L2CAP_MTU_Size 2 octetos Tamaño máximo de MTU L2CAP que contiene paquetes de audio codificados
Codec_Information 32 octetos Información específica del códec.

Códec SBC:

Consulte los elementos de información específicos del códec SBC en A2DP v1.3.
Octeto 0: Longitud del bloque | Subbandas | Método de asignación
Octeto 1: Valor mínimo de Bitpool
Octeto 2: valor máximo de Bitpool
Octeto 3: Frecuencia de muestreo | Modo de canal
Octeto 4-31: reservado

Códec AAC:

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

Códec LDAC:

Octeto 0-3: ID del proveedor
0x0000012D

Octeto 4-5: ID de códec
0x00AA - LDAC
Los demás valores están reservados

Octeto 6: Índice de tasa de bits:
0x00 - alto
0x01 - Mediados
0x02 - Bajo
0x03 - 0x7E - Reservado
0x7F - ABR (tasa de bits adaptativa)
0x80 - 0xFF - Reservado

Octeto 7: Modo de canal LDAC
0x01 - Estéreo
0x02 - Doble
0x04 - Mono
otros estan reservados

Octeto 8-31: reservado

Todos los demás códecs:

Octeto 0-31: reservado

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

Parámetro de retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
Sub_Opcode 1 octeto 0x01 - Iniciar descarga de A2DP

Iniciar descarga A2DP

Sub-OCF: 0x03

Utilice este comando tanto para configurar el proceso de descarga de A2DP como para iniciar la transmisión de A2DP.

Parámetro de comando Tamaño Objetivo
Connection Handle 2 octetos Identificador de la conexión HCI activa
L2CAP_Channel_ID 2 octetos Identificador del canal L2CAP abierto para streaming A2DP
Data_Path_Direction 1 octeto 0x00 - Salida (fuente/fusión AVDTP)
0x01 - Entrada (sumidero/división AVDTP)
Peer_MTU 2 octetos Tamaño máximo de paquetes L2CAP negociados con el par.
CP_Enable_SCMS_T 1 octeto 0x00: deshabilitar el encabezado de protección de contenido SCMS-T
0x01: habilitar 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 establecido en 0x01), define el valor del encabezado que precede al contenido de audio (consulte A2DP, sección 3.2.1-2) según lo definido en Números asignados por Bluetooth, sección 6.3.2.
Se ignora cuando la protección de contenido SCMS-T no está habilitada.
Vendor_Specific_Parameters_Length 1 octeto Longitud de los parámetros específicos del proveedor, en el rango de 0 a 128.
El valor 0 se utiliza cuando no se proporcionan parámetros adicionales.
Vendor_Specific_Parameters 0-128 octetos Parámetros específicos del proveedor proporcionados por Bluetooth Audio HAL, CodecParameters.vendorSpecificParameters[] .

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

Parámetro de retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
Sub_Opcode 1 octeto 0x03 - Iniciar descarga de A2DP

Detener la descarga de A2DP (heredado)

Sub-OCF: 0x02

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

Parámetro de comando Tamaño Objetivo
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 retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
Sub_Opcode 1 octeto 0x02: detener la descarga de A2DP

Detener la descarga de A2DP

Sub-OCF: 0x04

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

Parámetro de comando Tamaño Objetivo
Connection Handle 2 octetos Identificador de la conexión HCI activa
L2CAP_Channel_ID 2 octetos Identificador del canal L2CAP abierto para streaming A2DP
Data_Path_Direction 1 octeto 0x00 - Salida (fuente/fusión AVDTP)
0x01 - Entrada (sumidero/división AVDTP)

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

Parámetro de retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
Sub_Opcode 1 octeto 0x04: detener la descarga de A2DP

Comando Informe de calidad de Bluetooth

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

  • Modo de monitoreo de calidad: el controlador envía periódicamente un subevento BQR relacionado con la calidad del enlace al host.
  • Acercándose a LSTO: si no se reciben paquetes desde el dispositivo BT conectado durante más de la mitad del valor del tiempo de espera de supervisión del enlace (LSTO), el controlador informa un evento de Acercándose a LSTO al host.
  • Audio entrecortado de A2DP: cuando el controlador detecta factores que causan audio entrecortado, el controlador informa un evento de audio entrecortado de A2DP al host.
  • (e)SCO Voice Choppy: cuando el controlador detecta factores que causan voz entrecortada, el controlador informa un evento (e)SCO Voice Choppy al host.
  • Inflamación de raíz: el controlador envía este evento a la pila cuando HAL o el controlador encuentra un error fatal y necesita 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 Bluetooth multiperfil/Coex: el controlador envía su información de programación sobre el manejo de múltiples 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 está habilitado, el controlador puede informar de forma autónoma información de registro de depuración a través del subevento Información de depuración del controlador al host.

OCF: 0x15E

Parámetro de comando Tamaño Objetivo
BQR_Report_Action 1 octeto Acción para agregar/eliminar informes de eventos de calidad establecidos en el parámetro BQR_Quality_Event_Mask, o borrar todo.

0x00 - Agregar
0x01 - Eliminar
0x02 - Borrar

Eliminar borrará los informes de eventos de calidad específicos.
Borrar borrará todos los informes de eventos de calidad (el parámetro BQR_Quality_Event_Mask se puede ignorar).

BQR_Quality_Event_Mask 4 octetos Máscaras de bits para el informe de eventos de calidad seleccionado.

Bit 0: configurado para habilitar el modo de monitoreo de calidad.
Bit 1: Configurado para habilitar el evento LSTO acercándose (para ACL/(e)SCO/ISO).
Bit 2: configúrelo para habilitar el evento A2DP Audio Choppy.
Bit 3: Configurado para habilitar el evento de voz entrecortada (e)SCO.
Bit 4: configúrelo para habilitar el evento de inflamación de raíz.
Bit 5: Configurado para habilitar el modo de monitoreo de energía.
Bit 6: configúrelo para habilitar el evento de audio entrecortado LE.
Bit 7: configurado para habilitar el evento de error de conexión.
Bits 8 ~ 14: Reservado.
Bit 15: configurado para habilitar eventos de calidad específicos del proveedor.
Bit 16: configurado para habilitar el seguimiento de mensajes LMP/LL.
Bit 17: Configurado para habilitar el seguimiento de programación Bluetooth Multi-link/Coex.
Bit 18: configurado para habilitar el mecanismo de información de depuración del controlador.
Bit 19 ~ 30: Reservado.
Bit 31: configurado para habilitar el seguimiento específico del proveedor.

BQR_Minimum_Report_Interval 2 octetos Defina el intervalo de tiempo mínimo de notificación 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 será respectiva y exclusiva para los eventos de calidad que se agreguen.

Unidad: ms
Valor predeterminado: 0 (sin limitación para el intervalo).
Rango: 0 ~ 65535 ms

BQR_Vendor_Specific_Quality_Event_Mask 4 octetos Máscaras de bits para los informes de eventos de calidad específicos del proveedor seleccionado.
Este parámetro solo es válido cuando se establece 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 solo es válido cuando se establece el bit 31 de BQR_Quality_Event_Mask .

Bit 0 ~ 31: Reservado.

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

Parámetro de retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
Current_Quality_Event_Mask 4 octetos Indica la configuración actual de la máscara de bits.
Bit 0: el modo de monitoreo de calidad está habilitado.
Bit 1: El informe de eventos LSTO de aproximación está habilitado.
Bit 2: El informe de eventos de audio entrecortado A2DP está habilitado.
Bit 3: (e)El informe de eventos de voz entrecortada de SCO está habilitado.
Bit 4: el informe de eventos de inflamación de raíz está habilitado.
Bit 5: El modo de monitoreo de energía está habilitado.
Bit 6: El informe de eventos de audio entrecortado de LE está habilitado.
Bit 7: evento de error de conexión.
Bits 8 ~ 14: Reservado.
Bit 15: El informe de eventos de calidad específicos del proveedor está habilitado.
Bit 16: el seguimiento de mensajes LMP/LL está habilitado.
Bit 17: El seguimiento de programación Bluetooth Multi-link/Coex está habilitado.
Bit 18: El mecanismo de información de depuración del controlador está habilitado.
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 de bits.
Current_Vendor_Specific_Trace_Mask 4 octetos Indica la configuración actual de la máscara de bits.

Comando Búfer de audio dinámico

El búfer de audio dinámico reduce los fallos de audio al cambiar el tamaño del búfer de audio en el controlador Bluetooth según varios escenarios.

OCF: 0x15F

Obtenga capacidad de tiempo de búfer de audio

Sub-OCF: 0x01

Utilice este comando para obtener la capacidad de tiempo del búfer de audio del controlador Bluetooth.

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

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

Parámetro de retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
Dynamic_Audio_Buffer_opcode 1 octeto 0x01 - Obtener tiempo de búfer de audio
Audio_Codec_Type_Supported 4 octetos Máscaras de bits para los tipos de códec admitidos
Bit 0 - SBC
Bit 1 - CAA
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 será 0 si no se soporta el tipo de códec Bit 0.
Unidad: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 2 octetos Tiempo máximo de búfer del tipo de códec Bit 0 especificado en Audio_Codec_Type_Supported.
Este valor será 0 si no se soporta el tipo de códec Bit 0.
Unidad: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 2 octetos Tiempo de búfer mínimo del tipo de códec Bit 0 especificado en Audio_Codec_Type_Supported.
Este valor será 0 si no se soporta el tipo de códec 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 será 0 si no se soporta el tipo de códec Bit 1.
Unidad: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 2 octetos Tiempo máximo de búfer del tipo de códec Bit 1 especificado en Audio_Codec_Type_Supported.
Este valor será 0 si no se soporta el tipo de códec Bit 1.
Unidad: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 2 octetos Tiempo mínimo de búfer del tipo de códec Bit 1 especificado en Audio_Codec_Type_Supported.
Este valor será 0 si no se soporta el tipo de códec 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 será 0 si no se soporta el tipo de códec Bit 31.
Unidad: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 2 octetos Tiempo máximo de búfer del tipo de códec Bit 31 especificado en Audio_Codec_Type_Supported.
Este valor será 0 si no se soporta el tipo de códec Bit 31.
Unidad: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 2 octetos Tiempo mínimo de búfer del tipo de códec Bit 31 especificado en Audio_Codec_Type_Supported.
Este valor será 0 si no se soporta el tipo de códec Bit 31.
Unidad: ms

Establecer el tiempo del búfer de audio

Sub-OCF: 0x02

Utilice este comando para configurar el tiempo del búfer de audio para el controlador Bluetooth.

Parámetro de comando Tamaño Objetivo
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 completo para este comando.

Parámetro de retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
Dynamic_Audio_Buffer_opcode 1 octeto 0x02: establecer el tiempo del búfer de audio
Audio_Codec_Buffer_Time 2 octetos 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. Consulte 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 HCI.

Parámetro de evento Tamaño Objetivo
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 evento HCI.

Subevento de infracción del umbral de almacenamiento

Este evento indica que se ha superado el umbral de almacenamiento.

Código de subevento = 0x54

Parámetro de subevento Tamaño Objetivo
Ninguno

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

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

Código de subevento = 0x55

Parámetro de subevento Tamaño Objetivo
Advertising_instance 1 octeto Identifica la instancia publicitaria específica.
Los valores válidos son 0 hasta max_advt_instances -1
State_Change_Reason 1 octeto 0x00: Conexión recibida
Connection_handle 2 octetos Identifica la conexión que provocó que la instancia advt se deshabilitara (0xFFFF si no es válida)

Subevento de seguimiento de publicidad LE

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

Código de subevento = 0x56

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

Subevento de información de depuración del controlador

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

Código de subevento = 0x57

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

Subevento Informe de calidad de Bluetooth

Este evento indica uno de los siguientes: ocurrió un evento de calidad de Bluetooth, el controlador cargó el seguimiento del mensaje LMP/LL y el seguimiento de programación Bluetooth Multi-link/Coex, o el controlador descargó datos de información de depuración.

Parámetro de subevento Tamaño Objetivo
Quality_Report_Id 1 octeto 0x01: Informes de calidad en el modo de monitoreo.
0x02: Acercándose a LSTO.
0x03: Audio A2DP entrecortado.
0x04: (e)SCO Voz entrecortada.
0x05 ~ 0x06: Reservado.
0x07: audio LE entrecortado.
0x08: Error de conexión.
0x09 ~ 0xFF: Reservado.
Packet_Types 1 octeto 0x01: identificación
0x02: NULO
0x03: ENCUESTA
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 Mango de conexión ACL/(e)SCO/ISO.
Connection_Role 1 octeto Rol de desempeño para la conexión.
0x00: Centro
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 será el mismo que el del controlador respondiendo al comando HCI_Read_Transmit_Power_Level HCI.

RSSI 1 octeto [en dBm]

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

SNR 1 octeto [en dB]

Valor de relación señal-ruido (SNR) para el Connection_Handle especificado.
El controlador proporcionará la SNR promedio de todos los canales utilizados por el enlace.

Unused_AFH_Channel_Count 1 octeto Indica el número de canales no utilizados en AFH_channel_map.
0x4F ~ 0xFF: Reservado.
AFH_Select_Unideal_Channel_Count 1 octeto Indica el número de canales que están interferidos y tienen mala calidad, pero aún están seleccionados para AFH.
El número mínimo de canales permitido por la especificación Bluetooth es 20, por lo que incluso si los 79 canales están interferidos y tienen mala calidad, el controlador aún necesita elegir al menos 20 canales para AFH.
LSTO 2 octetos Configuración del tiempo de espera de supervisión del enlace actual.
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 será el mismo que el del controlador respondiendo al comando HCI_Read_Clock HCI con el parámetro "Which_Clock" de 0x01 (Piconet Clock).
Unidad: N * 0,3125 ms (1 reloj Bluetooth)
Retransmission_Count 4 octetos El número de retransmisiones desde el último evento.
Este recuento se restablecerá después de informar al anfitrión.
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 intervalo de tiempo programado o el paquete recibido está dañado.
Este recuento se restablecerá después de informar al anfitrión.
NAK_Count 4 octetos Recuento de NAK (reconocimiento negativo) desde el último evento.
Este recuento se restablecerá después de informar al anfitrión.
Last_TX_ACK_Timestamp 4 octetos Marca de tiempo del último TX ACK. Está basado en el Reloj Bluetooth de la central piconet (CLK).
Unidad: N * 0,3125 ms (1 reloj Bluetooth)
Flow_Off_Count 4 octetos La cantidad de veces que el controlador recibe flujo apagado (STOP) desde el último evento.
Este recuento se restablecerá después de informar al anfitrión.
Last_Flow_On_Timestamp 4 octetos Marca de tiempo del último flujo (GO). Está basado en el Reloj Bluetooth de la central piconet (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 eliminan.
Este recuento se restablecerá después de informar al anfitrión.

Buffer_Underflow_Bytes 4 octetos [en bytes]

Recuento de desbordamiento del búfer desde el último evento.
Este recuento se restablecerá después de informar al anfitrión.

bdaddr 6 octetos Dirección del dispositivo remoto
cal_failed_item_count 1 octeto El recuento de elementos fallidos en la calibración.
TX_Total_Packets 4 octetos El número de paquetes que se envían.
TX_UnAcked_Packets 4 octetos La cantidad de paquetes que no reciben un acuse de recibo.
Este recuento se restablece después de informar al anfitrión.
TX_Flushed_Packets 4 octetos La cantidad de paquetes que no se envían por su punto de descarga.
Este recuento se restablece después de informar al anfitrión.
TX_Last_Subevent_Packets 4 octetos El número de paquetes que la capa de enlace transmite a una PDU de datos CIS en el último subevento de un evento CIS.
Este recuento se restablece después de informar al anfitrión.
El valor es cero si no hay ningún valor válido para el enlace.
CRC_Error_Packets 4 octetos La cantidad de paquetes recibidos con error CRC desde el último evento.
Este recuento se restablece después de informar al anfitrión.
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 anfitrión.
Parámetro específico del proveedor (longitud total del parámetro - TBD) * 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, evento de inflamación de raíz]

Este evento indica que Bluetooth HAL o el controlador encontraron un error fatal y necesitan una pila de Bluetooth para registrar esta situación y reiniciar. 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 HAL/Controlador, 0 si se trata de un error específico del proveedor del chipset. 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 ambos 0.

Parámetro de subevento Tamaño Objetivo
Quality_Report_Id 1 octeto 0x00 ~ 0x04: Reservado.
0x05: Inflamación de raíces.
0x06 ~ 0xFF: Reservado.
Error_Code 1 octeto 0x00: se incluye un código de error específico del proveedor del chipset.
0x01 ~ 0xFF: Se produjo una falla del controlador. Consulte 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 de subevento Tamaño Objetivo
Quality_Report_Id 1 octeto 0x00 ~ 0x10: Reservado.
0x11: seguimiento de mensajes LMP/LL.
0x12: Seguimiento de programación Bluetooth multienlace/Coex.
0x13: Volcado de datos de información de depuración del controlador.
0x14 ~ 0xFF: Reservado.
Connection_Handle 2 octetos Mango de conexión.
Parámetro específico del proveedor (Longitud total del parámetro - 4) * octetos Formato específico del proveedor de seguimiento de mensajes LMP, seguimiento de programación Bluetooth Multi-link/Coex y volcado de datos de información de depuración del controlador.

Soporte para múltiples anunciantes

Los objetivos del soporte multianunciante son los siguientes:

  • Capacidad para admitir múltiples anuncios ( max_advt_instances )
  • Diferentes potencias de transmisión para permitir un rango variable
  • Diferentes contenidos publicitarios.
  • 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 Objetivo
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 retorno Tamaño Objetivo
Status 1 octeto Estado del 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: Establecer_Advt_Param_Multi_Sub_Cmd

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

Sub-OCF: 0x01

Parámetro de subcomando Tamaño Objetivo
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 Transmisión_potencia
Unidad - en dBm (entero con signo)
Rango (-70 a +20)

El parámetro Own_Address podría ser una dirección configurada por el host al momento de configurar esta instancia de publicidad múltiple. Esto proporciona la capacidad de tener una dirección privada resoluble en el momento de la transmisión de la primera baliza. La publicidad en una instancia continuará independientemente de la conexión. La pila 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 fracaso (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 Objetivo
Status 1 octeto Estado del comando completo
Multi_advt_opcode 1 octeto 0x01 [ Set_Advt_Param_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Establecer_Advt_Data_Multi_Sub_Cmd

Referencia básica: Especificación Bluetooth Core 4.1, página 969 (comando LE para establecer datos publicitarios)

Sub-OCF: 0x02

Parámetro de subcomando Tamaño Objetivo
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 error si la instancia de publicidad o los parámetros Tx_Power no son válidos.

Parámetro de retorno Tamaño Objetivo
Status 1 octeto Estado del 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 básica: Especificación Bluetooth Core 4.1, página 970 (comando LE Establecer datos de respuesta de escaneo)

Sub-OCF: 0x03

Parámetro de subcomando Tamaño Objetivo
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 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 Objetivo
Status 1 octeto Estado del 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 Bluetooth Core 4.1, página 963 (comando LE para establecer direcciones aleatorias)

Sub-OCF: 0x04

Parámetro de subcomando Tamaño Objetivo
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 retorno Tamaño Objetivo
Status 1 octeto Estado del 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 Bluetooth Core 4.1, página 971 (LE Set Advertise Enable Command en esa especificación principal)

OCF: 0x05

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

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

Parámetro de retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
Multi_advt_opcode 1 octeto 0x05 [ Set_Advt_Enable_Multi_Sub_Cmd]

Resolución descargada de dirección privada

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

  • Latencia involucrada con el host en la resolución de una dirección privada
  • Ahorrar energía al abstenerse de despertar al anfitrión

LE_Set_RPA_Timeout

OCF: 0x15C

Parámetro de comando Tamaño Objetivo
LE_local_IRK 16 octeto El dispositivo local IRK utilizado para generar las direcciones aleatorias resolubles.
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/escaneo/conexión en o después de este tiempo de espera.
Rango válido: 300-1800
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/escaneo/conexión en o antes de este tiempo de espera.
Rango válido: tRPA_min -1800
Parámetro de retorno Tamaño Objetivo
Status 1 octeto El estado del comando.

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

LE_RPA_offload_Command

OCF: 0x155

Parámetro de comando Tamaño Objetivo
RPA_offload_opcode 1 octeto 0x1: habilitar función específica del cliente
0x2 - Agregar IRK a la lista
0x3: eliminar IRK de la lista
0x4 - Borrar lista IRK
0x5: leer la entrada de la lista IRK

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

Parámetro de retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
Event_RPA_offload_opcode 1 octeto 0x1: habilitar función específica del cliente
0x2 - Agregar IRK a la lista
0x3: eliminar IRK de la lista
0x4 - Borrar lista IRK
0x5: leer la entrada de la lista IRK

LE_RPA_offload: Enable_cust_specific_sub_Command

Sub-OCF: 0x01

Parámetro de subcomando Tamaño Objetivo
enable_customer_specific_feature_set 1 octeto 0x01: habilitar la función RPA descargada
0x00: deshabilitar la función RPA descargada

Es necesario que el host habilite la descarga de RPA, según la capacidad del chip. Consulte 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 retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
Event_cust_specific_feature_opcode 1 octeto 0x01 [Habilitar función específica del cliente]

LE_RPA_offload: Add_IRK_to_list_sub_Command

Sub-OCF: 0x02

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

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

Parámetro de retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
Event_cust_specific_feature_opcode 1 octeto 0x02 [Agregar IRK a la lista]
LE_IrkList_AvailableSpaces 1 octeto Entradas de la lista 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 Objetivo
Address_Type 1 octeto 0: megafonía
1: dirección aleatoria
LE_Device_Address 6 octetos Dirección pública o aleatoria que asocia al IRK

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

Parámetro de retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
Event_cust_specific_feature_opcode 1 octeto 0x03 [Eliminar IRK de la lista]
LE_IrkList_AvailableSpaces 1 octeto Entradas de la lista 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 Objetivo
Ninguno

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

Parámetro de retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
Event_cust_specific_feature_opcode 1 octeto 0x04 [Borrar lista IRK]
LE_IrkList_AvailableSpaces 1 octeto Entradas de la lista 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 Objetivo
LE_read_IRK_list_entry-index 1 octeto Índice de la lista IRK [0, max_irk_list_sz-1]

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

Parámetro de retorno Tamaño Objetivo
Status 1 octeto Estado del comando completo
Event_cust_specific_feature_opcode 1 octeto 0x05 [Leer entrada de lista IRK]
LE_Read_IRK_List_entry 1 octeto Índice del IRK que el anfitrión desea volver a leer (el tamaño máximo de la lista de IRK es 32)
LE_IRK 16 octetos valor IRK
Address_Type 1 octeto 0: megafonía
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 resuelta actual resuelta de este IRK