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:
|
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:
|
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:
|
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:
Valor del bit
|
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.
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. Códec AAC:
Consulta los elementos de información específica del códec AAC en A2DP v1.3 Códec de LDAC:
Octeto 0-3: ID del proveedor
Del 4 al 5 de octubre: ID de códec
Octeto 6: Índice de la tasa de bits:
Octeto 7: Modo de canal LDAC 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
La opción Borrar borrará los informes de eventos de calidad específicos. |
BQR_Quality_Event_Mask |
4 octetos |
Máscaras de bits para los informes de eventos de calidad seleccionados.
Bit 0: Se establece para habilitar el modo de supervisión de calidad. |
BQR_Minimum_Report_Interval |
2 octetos |
Define el intervalo de tiempo mínimo de los informes de eventos de calidad para los
eventos de calidad seleccionados. El firmware del 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 |
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 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 ) presente0x01: 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 octetoRSSI[0] : 1 octetoTimestamp[0] : 2 octetosAdv packet_len[0] : 1 octetoAdv_packet[0] : Adv_packet_len octetosScan_data_resp_len[0] : 1 octetoScan_data_resp[0] : Scan_data_resp octetos
|
Subevento de 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.
Código de subevento = 0x58 [Quality_Report_Id = 0x01 ~ 0x04, evento relacionado con la calidad del vínculo]
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. |
SNR |
1 octeto |
[en dB]
Es el valor de la relación señal/ruido (SNR) para el Connection_Handle especificado. |
Unused_AFH_Channel_Count |
1 octeto |
Indica 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. |
Buffer_Underflow_Bytes |
4 octetos |
[en bytes]
Recuento de subdesbordamiento del búfer desde el último evento. |
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 |
Código de subevento = 0x58 [Quality_Report_Id = 0x11 ~ 0x13, evento relacionado con el volcado de registros]
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 |