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:
|
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:
|
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:
|
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:
valor del bit
|
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.
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. Códec AAC: Consulte los elementos de información específicos del códec AAC en A2DP v1.3. Códec LDAC: Octeto 0-3: ID del proveedor Octeto 4-5: ID de códec Octeto 6: Índice de tasa de bits: Octeto 7: Modo de canal LDAC 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 Eliminar borrará los informes de eventos de calidad específicos. |
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. |
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 |
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 ) presente0x01: la información del anunciante ( Advt_Info ) no está presente |
Advertiser_Address | 6 octetos | Dirección pública o aleatoria |
Advertiser_Address_Type | 1 octeto | 0x00: dirección pública 0x01: dirección aleatoria |
Advt_Info | Tx_Pwr[0] : 1 octetoRSSI[0] : 1 octetoTimestamp[0] : 2 octetosAdv packet_len[0] : 1 octetoAdv_packet[0] : octetos Adv_packet_len Scan_data_resp_len[0] : 1 octetoScan_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.
Código de subevento = 0x58 [Quality_Report_Id = 0x01 ~ 0x04, evento relacionado con la calidad del enlace]
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. |
SNR | 1 octeto | [en dB] Valor de relación señal-ruido (SNR) para el Connection_Handle especificado. |
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. |
Buffer_Underflow_Bytes | 4 octetos | [en bytes] Recuento de desbordamiento del búfer desde el último evento. |
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. |
Código de subevento = 0x58 [Quality_Report_Id = 0x11 ~ 0x13, evento relacionado con el volcado de registros]
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 |