Requisitos de HCI

A Interface de controlador do host (HCI, na sigla em inglês) é usada para interagir com um controlador Bluetooth.

Este documento fornece uma lista dos requisitos de HCI do Bluetooth (BT) e do Bluetooth de baixa energia (BLE). O objetivo é que os fornecedores de pilha de BT host e os fornecedores de controladores de BT estejam em conformidade com esses requisitos de plataforma para usar o conjunto de recursos descrito abaixo.

Este documento se refere à especificação Bluetooth Core 5.2 como "especificação". A especificação Bluetooth Core 5.2 está disponível no site do Bluetooth SIG (em inglês), além de outros documentos adotados.

Visão geral do design

Recursos e configuração do chip

Como uma plataforma aberta, o Android tem uma matriz de versões de software, OEMs, fornecedores e recursos de plataforma e chip.

Para gerenciar o cenário variável e gerenciar migrações, uma filosofia de design que permite que os controladores de BT exponham os recursos (além da especificação padrão do Bluetooth Core 5.2) é descrita neste documento. A pilha BT do host pode usar essas funcionalidades para determinar quais serão ativados.

Apoio a padrões abertos

Um objetivo do Android é oferecer suporte a padrões abertos após a ratificação em uma especificação Bluetooth. Se um recurso descrito abaixo se tornar disponível em métodos HCI padrão em uma futura especificação Bluetooth, vamos nos esforçar para tornar essa abordagem padrão.

Recursos específicos do fornecedor

Comando específico do fornecedor: LE_Get_Vendor_Capabilities_Command

Campo de comando OpCode (OCF): 0x153

Parâmetro de comando Tamanho Objetivo
NA Lista de parâmetros de comando vazia

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
max_advt_instances
(descontinuado)
1 octeto Número de instâncias de publicidade suportadas.

Reservado após a v0.98.
Esse parâmetro foi descontinuado na especificação de recurso do Google v0.98 e mais recentes e foi substituído pela Publicidade estendida de LE, disponível na versão 5.0 e mais recentes de especificação de BT.
offloaded_resolution_of_private-address
(descontinuado)
1 octeto Capacidade do chip BT do RPA.
Se compatível com um ícone, ele precisa ser ativado pelo host.
0 = Incapaz
1 = Com capacidade

Reservado após a v0.98
Este parâmetro foi descontinuado na especificação de recurso do Google v0.98 e mais recentes. Agora ele tem o recurso de privacidade disponível na especificação de BT versão 4.2 e mais recentes.
total_scan_results_storage 2 octetos Armazenamento dos resultados da verificação em bytes
max_irk_list_sz 1 octeto Número de entradas IRK suportadas no firmware
filtering_support 1 octeto Compatibilidade com filtragem no controlador
0 = Incompatível
1 = Compatível
max_filter 1 octeto Número de filtros compatíveis
activity_energy_info_support 1 octeto Oferece suporte a relatórios de informações de atividade e energia
0 = Incapaz
1 = Capacidade
version_supported 2 octetos Especifica a versão da especificação de recursos do Google compatível
byte[0] = número principal
byte[1] = número secundário

v1.04
byte[0] = 0x01
byte[1] = 0x04
total_num_of_advt_tracked 2 octetos Número total de anunciantes monitorados para fins OnLost/OnFound
extended_scan_support 1 octeto Oferece suporte à janela e ao intervalo de verificação estendidos
debug_logging_supported 1 octeto Suporte à geração de registros de informações de depuração binárias do controlador
LE_address_generation_offloading_support
(descontinuado)
1 octeto 0 = Incompatível
1 = Compatível

Reservado após a v0.98.
Este parâmetro foi descontinuado na especificação de recurso do Google v0.98 e mais recentes. Agora ele tem o recurso de privacidade disponível na especificação de BT versão 4.2 e mais recentes.
A2DP_source_offload_capability_mask 4 octetos Bitmass para tipos de codecs compatíveis
Bit 0 - SBC
Bit 1 - AAC
Bit 2 - APTX
Bit 3 - APTX HD
Bit 4 - LDAC
Bit 5 a 31 são reservados
bluetooth_quality_report_support 1 octeto Oferece suporte a relatórios de eventos de qualidade do Bluetooth
0 = Incapaz
1 = Capacidade
dynamic_audio_buffer_support 4 octetos Oferece suporte ao buffer de áudio dinâmico no controlador Bluetooth
Bitmask para tipos de codec com suporte
Bit 0 - SBC
Bit 1 - AAC
Bit 2 - APTX
Bit 3: APTX HD
Bit 4: LDAC
Bit 5 a 31 são reservados
a2dp_offload_v2_support 1 octeto Oferece suporte a comandos de descarregamento A2dp v2 no controlador Bluetooth (consulte Iniciar o descarregamento A2DP, Interromper o descarregamento A2DP)
0 = Incompatível
1 = Compatível

Agrupamento em lote de resultados da verificação

Uma meta de design é melhorar a forma como as notificações de evento de resposta de verificação Bluetooth LE são enviadas ao host, para economizar energia.

Ao reduzir a frequência com que o controlador notifica o processador do aplicativo host para verificar os resultados, ele pode ficar inativo por mais tempo. Isso reduz o consumo de energia no host. O parâmetro de retorno total_scan_results_storage de LE_Get_Vendor_Capabilities_Command indica a capacidade do ícone para armazenar os resultados da verificação.

Esse recurso se concentra no gerenciamento e na configuração do recurso de armazenamento de resultados da verificação LE no controlador Bluetooth. O armazenamento é usado para agrupar temporariamente os dados de publicidade e verificar os dados e metadados recebidos pelo controlador para entrega posterior ao host.

O firmware precisa ser compatível com dois tipos de lotes, que podem ser usados simultaneamente:

  • Truncada. Contém os seguintes elementos de informação: {MAC, TX Power, RSSI, Timestamp}
  • Cheio. Contém os seguintes elementos de informação: {MAC, TX Power, RSSI, Timestamp, Adv Data, Scan Response}

Comando de verificação em lote LE

OCF: 0x156

Parâmetro de comando Tamanho Objetivo
Batch_Scan_opcode 1 octeto 0x1: ativar recurso específico do cliente
0x2: definir parâmetros de armazenamento da verificação em lote
0x3: definir parâmetros de verificação em lote
0x4: ler parâmetros de resultado da verificação em lote

Um evento "Comando completo" será gerado para este comando. Ativar o recurso específico do cliente não inicia a verificação.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
Batch_Scan_opcode 1 octeto 0x1: ativar recurso específico do cliente
0x2: definir parâmetros de armazenamento da verificação em lote
0x3: definir parâmetros de verificação em lote
0x4: ler parâmetros de resultado da verificação em lote

LE_Batch_Scan_Command: ativar recurso específico do cliente

Sub OCF: 0x01

Parâmetro do subcomando Tamanho Objetivo
enable_customer_specific_feature_set 1 octeto 0x01: ativar o recurso de verificação em lote
0x00: desativar o recurso de verificação em lote

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
Batch_Scan_opcode 1 octeto 0x1: ativar recurso específico do cliente
0x2: definir parâmetros de armazenamento da verificação em lote
0x3: definir parâmetros de verificação em lote
0x4: ler parâmetros de resultado da verificação em lote

LE_Batch_Scan_Command: definir subcomando do parâmetro de armazenamento da verificação em lote

Sub OCF: 0x02

Parâmetro do subcomando Tamanho Objetivo
Batch_Scan_Full_Max 1 octeto Espaço máximo de armazenamento (em %) alocado para o estilo completo
[Intervalo: 0-100]
Batch_Scan_Truncated_Max 1 octeto Espaço de armazenamento máximo (em %) alocado ao estilo truncado
[Intervalo: 0-100]
Batch_Scan_Notify_Threshold 1 octeto Configure o nível de notificação (em %) do pool de armazenamento individual
[Intervalo: 0-100]
Definir como 0 desativa a notificação. É gerado um evento HCI específico do fornecedor (subevento de violação do limite de armazenamento).

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
Batch_scan_opcode 1 octeto 0x02 [Definir parâmetros de verificação em lote]

LE_Batch_Scan_Command: definir subcomando do parâmetro de verificação em lote

Sub OCF: 0x03

Parâmetro do subcomando Tamanho Objetivo
Batch_Scan_Mode 1 octeto 0x00: verificação em lote desativada
0x01: modo truncado está ativado
0x02: modo completo ativado
0x03: modo truncado e completo estão ativados
Duty_cycle_scan_window 4 octetos Tempo de verificação da verificação em lote (no de slots)
Duty_cyle_scan_interval 4 octetos Período de intervalo da verificação em lote (no de slots)
own_address_type 1 octeto 0x00: endereço público do dispositivo
0x01: endereço de dispositivo aleatório
Batch_scan_Discard_Rule 1 octeto 0 - Descartar anúncio mais antigo
1 - Descartar anúncio com RSSI mais fraco

Este subcomando iniciará a verificação em lote, se ativado. Na verificação truncada, os resultados são armazenados de forma truncada, em que a chave exclusiva do estilo truncado = {BD_ADDR, scan_interval}. Isso significa que apenas um BD_ADDR will será gravado para cada intervalo de verificação. O registro a ser mantido para o modo truncado é o seguinte: {BD_ADDR, Tx Power, RSSI, Timestamp}

Quando o modo completo estiver ativado, a verificação ativa será usada e as respostas da verificação serão gravadas. A chave exclusiva de estilo completo = {MAC, Ad package}, independentemente do intervalo de verificação. O registro a ser mantido para o modo completo é {BD_ADDR, Tx Power, RSSI, carimbo de data/hora, pacote de anúncios, resposta de verificação}. No estilo completo, o mesmo pacote AD, quando visto várias vezes em diferentes intervalos de verificação, é gravado apenas uma vez. No entanto, no modo truncado, é interessante a visibilidade de BA_ADDR em diferentes intervalos de verificação (uma vez por intervalo de verificação). O RSSI é o valor médio de todas as cópias de uma divulgação exclusiva dentro de um intervalo de verificação.

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
Batch_scan_opcode 1 octeto 0x03 [Definir parâmetros de verificação em lote]

LE_Batch_Scan_Command: ler subcomando de resultados da verificação em lote

Sub OCF: 0x04

Parâmetro do subcomando Tamanho Objetivo
Batch_Scan_Data_read 1 octeto 0x01: dados de modo truncado
0x02: dados de modo completo

Um evento "Comando completo" será gerado para este comando. Quando o host emite esse comando, todos os resultados no controlador podem não caber em um evento de comando completo. O host vai iterar emitindo esse comando até que os resultados correspondentes no evento "Comando concluído" indiquem 0 no número de registros, o que indica que o controlador não tem mais registros para se comunicar com o host. Cada evento de comando completo pode conter vários registros de apenas um tipo de dados (completos ou truncados).

As referências de horário do controlador e do host não são sincronizadas. A unidade do carimbo de data/hora é 50ms. O valor do carimbo de data/hora é baseado quando o Read_Batch_Scan_Results_Sub_cmd é fornecido pelo host. Se um horário de chegada de comando for T_c no firmware, o horário real em que o carimbo de data/hora foi registrado no firmware será T_fw. O tempo do relatório será: (T_c - T_fw). T_c e T_fw estão no domínio de tempo do firmware. Isso permite que o host calcule há quanto tempo o evento aconteceu.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
Batch_scan_opcode 1 octeto 0x03 [Definir parâmetros de verificação em lote]
Batch_Scan_data_read 1 octeto Identifica o formato (com truncamento ou completo)
num_of_records 1 octeto Número de registros de Batch_Scan_data_read
format_of_data Variável Truncat octet1 octet1 octet1: octeto1

















num_of_recordsnum_of_recordsScan_data_resp

Filtro de conteúdo do pacote de publicidade

Use para ativar/desativar/configurar o Filtro de Conteúdo do Pacote de Publicidade (APCF, na sigla em inglês) no controlador. O APCF filtra relatórios de publicidade no controlador, mas não filtra a publicidade periódica.

Comando LE_APCF

OCF: 0x157

Parâmetro de comando Tamanho Objetivo
APCF_opcode 1 octeto 0x00 - APCF Ativar
0x01 - APCF Conjunto de parâmetros de filtragem ~ 0x












Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status da devolução
APCF_opcode 1 octeto 0x00 - APCF Ativar
0x01 - APCF Conjunto de parâmetros de filtragem ~ 0x












LE_APCF_Comando: Enable_sub_cmd

Sub OCF: 0x00

Parâmetro do subcomando Tamanho Objetivo
APCF_enable 1 octeto 0x01 - Ativar recurso APCF
0x00: Desativar recurso APCF

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
APCF_opcode 1 octeto 0x0 - APCF ativado
APCF_Enable 1 octeto A ativação/desativação é definida por APCF_enable

LE_APCF_Comando: set_filtering_parameters_sub_cmd

Esse subcomando é usado para adicionar ou excluir uma especificação de filtro ou limpar uma lista de filtros para filtragem nos chips.

Sub OCF: 0x01

Parâmetro do subcomando Tamanho Objetivo
APCF_Action 1 octeto 0x00 - Adicionar
0x01 - Excluir
0x02 - Limpar
Excluir limpa o filtro específico junto com as entradas de atributos associados em outras tabelas.
Limpar limpa todos os filtros e entradas associadas em outras tabelas.
APCF_Filter_Index 1 octeto Índice do filtro (0, max_filter-1)
APCF_Feature_Selection 2 octetos Bitmask para os recursos selecionados:
Bit 0: defina para ativar o filtro de endereço de transmissão
Bit 1: defina para ativar o filtro de mudança de dados de serviço
Bit 2: defina para ativar a verificação de UUID de serviço
Bit 3: defina para ativar a verificação de UUID da solicitação de serviço
Bit 4: defina para ativar a verificação do tipo de serviço de transporte do AD
Bit 5: defina para ativar a verificação do tipo de serviço de transporte do AD
Bit 7: defina para ativar a verificação do tipo de serviço de transporte do AD
Bit 7: definir para ativar a verificação do tipo de serviço de transporte do AD
APCF_List_Logic_Type 2 octetos Operação lógica para cada seleção de recursos (posição por bit) especificada em APCF_Feature_Selection.
Válido apenas quando um recurso estiver ativado.
Valor da posição de bit:
0: OR
1: AND
Se a lógica "AND" for selecionada, um pacote ADV passará no filtro somente se ele contiver TODAS as entradas na lista.
Se a lógica "OU" for selecionada, um pacote ADV passará no filtro se ele contiver alguma das entradas na lista.
APCF_Filter_Logic_Type 1 octeto 0x00: OR
0x01: AND
Observação: o tipo de lógica é N/A para os três primeiros campos de APCF_Feature_Selection, que é sempre a lógica "AND". Elas são aplicáveis apenas aos quatro campos (Bit 3 - Bit 6) do APCF_Feature_Selection.
rssi_high_thresh 1 octeto [em dBm]
O anunciante será considerado visto somente se o sinal for maior que o limite alto do RSSI. Caso contrário, o firmware precisará se comportar como se nunca o tivesse visto.
delivery_mode 1 octeto 0 x 00 – immediate
0 x 01 - on_found
0 x 02 - batched
onfound_timeout 2 octetos Válido apenas se delivery_mode for on_found.
[em milissegundos]
Tempo até que o firmware permaneça e colete outros anúncios antes de gerar relatórios.
onfound_timeout_cnt 1 octeto Válido apenas se delivery_mode for on_found.
[count]
Se um anúncio no onFound permanecer no firmware durante onfound_timeout, ele coletará alguns anúncios e a contagem será verificada. Se a contagem exceder onfound_timeout_cnt, ela vai ser informada OnFound imediatamente em seguida.
rssi_low_thresh 1 octeto Válido apenas se delivery_mode for on_found.
[em dBm]
O pacote do anunciante não será visto se o RSSI do pacote recebido não estiver acima do limite inferior do RSSI.
onlost_timeout 2 octetos Válido apenas se delivery_mode for on_found.
[em milissegundos]
Se um anúncio, depois de ser encontrado, não for visto de maneira contígua no período lost_timeout, será imediatamente informado como perdido.
num_of_tracking_entries 2 octetos Válido apenas se delivery_mode for on_found.
[count]
Número total de anunciantes que serão rastreados por filtro.

Os valores de RSSI devem usar o complemento de 2 para representar valores negativos.

O host precisa ser capaz de configurar vários filtros com APCF_Application_Address_type definido como 0x02 (para todos os endereços de emissora) para gerenciar várias combinações de filtros.

Filtragem, lotes e relatórios são conceitos inter-relacionados. Cada anúncio e resposta de verificação relacionada precisará passar por todos os filtros, um após o outro. Assim, as ações resultantes (delivery_mode) estão intimamente vinculadas à filtragem. Os modos de transferência são os seguintes: report_immediately, batch e onFound. O valor OnLost está relacionado a OnFound no sentido de que virá depois de OnFound quando perdido.

Este fluxo de processamento descreve o modelo conceitual:

Quando um frame de divulgação (ou resposta de verificação) é recebido, ele é aplicado a todos os filtros em ordem serial. É possível que um anúncio gere relatórios imediatos com base em um filtro e em lotes devido a uma ação de filtro diferente.

Os limites de nível do RSSI (alto e baixo) permitem controlar quando o frame fica visível para o processamento do filtro, mesmo quando um pacote válido é recebido pelo controlador. No caso do modo de transferência ser definido como imediato ou em lote, o RSSI de um frame é considerado para processamento adicional do controlador. Apps diferentes precisam de relatórios e comportamentos de lotes diferentes. Isso permite que vários apps tenham relatórios diretos e/ou lotes de resultados no firmware simultaneamente. Um exemplo é um caso em que uma verificação em lote está ativa em um app e, mais tarde, uma verificação normal de LE é emitida por outro app. Antes da emissão de uma verificação em lote, o framework/app define os filtros apropriados. Mais tarde, quando o segundo app emitir uma verificação regular, os lotes anteriores continuarão. No entanto, devido à verificação regular, isso equivale a adicionar conceitualmente um filtro nulo (junto com todos os filtros atuais) junto com o comando LE scan. Os parâmetros do comando de verificação de LE têm precedência quando estiverem ativos. Quando a verificação normal de LE estiver desativada, o controlador voltará a uma verificação em lote anterior, se ela existia.

O modo de transferência OnFound é baseado em filtros configurados. Uma combinação que aciona a ação de um filtro é considerada a entidade a ser rastreada para onLost. O evento correspondente é o subevento de rastreamento da LE Advt.

A transição OnFound/OnLost de um filtro, se ativada, será semelhante a esta:

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
APCF_opcode 1 octeto 0x01 - Parâmetros de filtragem do conjunto APCF
APCF_Action 1 octeto Repetir o comando APCF_Action de retorno
APCF_AvailableSpaces 1 octeto Número de entradas disponíveis na tabela de filtros

LE_APCF_Comando: broadcast_address_sub_cmd

Este subcomando é usado para adicionar ou excluir o endereço de um anunciante ou limpar a lista de endereços do anunciante para filtragem no chip.

Sub OCF: 0x02

Parâmetro do subcomando Tamanho Objetivo
APCF_Action 1 octeto 0x00 - Adicionar
0x01 - Excluir
0x02 - Limpar
Excluir exclui o endereço do transmissor especificado no filtro especificado.
Limpar limpa todos os endereços de transmissor no filtro especificado.
APCF_Filter_Index 1 octeto Índice do filtro (0, max_filter-1)
APCF_Broadcaster_Address 6 octetos Endereço do dispositivo de 6 bytes para adicionar ou excluir da lista de endereços da emissora
APCF_Application_Address_type 1 octeto 0x00: público
0x01: aleatório
0x02: NA (ignorar o tipo de endereço)
Para filtrar relatórios de publicidade com tipos de endereço de identidade (0x02, 0x03). Para gerar relatórios de publicidade com os tipos de endereço 0x02 e 0x03, defina esse campo como 0x02: NA (ignore o tipo de endereço).

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
APCF_opcode 1 octeto 0x02 - Endereço da emissora do APCF
APCF_Action 1 octeto Repetir o comando APCF_Action de retorno
APCF_AvailableSpaces 1 octeto Número de entradas sem custo financeiro ainda disponíveis na tabela "Endereço de transmissão"

LE_APCF_Comando: service_uuid_sub_cmd

Esse subcomando é usado para adicionar ou excluir um UUID de serviço ou limpar uma lista de UUIDs de serviço para filtragem no chip.

Sub OCF: 0x03

Parâmetro do subcomando Tamanho Objetivo
APCF_Action 1 octeto 0x00 - Adicionar
0x01 - Excluir
0x02 - Limpar
Excluir excluirá o endereço UUID de serviço especificado no filtro especificado.
A opção "Limpar" limpa todos os UUIDs de serviço no filtro especificado.
APCF_Filter_Index 1 octeto Índice do filtro (0, max_filter-1)
APCF_UUID 2,4,16 octetos O UUID de serviço (16, 32 ou 128 bits) para adicionar ou excluir a lista.
APCF_UUID_MASK 2,4,16 octetos A máscara do UUID de serviço (16, 32 ou 128 bits) a ser adicionada à lista. Ele precisa ter o mesmo comprimento que APCF_UUID..

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
APCF_opcode 1 octeto 0x03: UUID de serviço APCF
APCF_Action 1 octeto Repetir o comando APCF_Action de retorno
APCF_AvailableSpaces 1 octeto Número de entradas sem custo financeiro ainda disponíveis na tabela UUID de serviço

LE_APCF_Comando: solicitação_uuid_sub_cmd

Esse subcomando é usado para adicionar ou excluir um UUID de solicitação ou limpar uma lista de UUID de solicitação para filtragem no chip.

Sub OCF: 0x04

Parâmetro do subcomando Tamanho Objetivo
APCF_Action 1 octeto 0x00: adicionar
0x01 - excluir
0x02: limpar
"Excluir" vai remover o endereço do UUID de solicitação no filtro especificado.
A opção "Limpar" limpa todos os UUIDs de solicitação no filtro especificado.
APCF_Filter_Index 1 octeto Índice do filtro (0, max_filter-1)
APCF_UUID 2,4,16 octetos O UUID de solicitação (16, 32 ou 128 bits) a ser adicionado ou excluído da lista.
APCF_UUID_MASK 2,4,16 octetos A máscara do UUID de solicitação (16, 32 ou 128 bits) a ser adicionada à lista. Ele precisa ter o mesmo comprimento que o APCF_UUID.

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
APCF_opcode 1 octeto 0x04: UUID de solicitação da APCF
APCF_Action 1 octeto Repetir o comando APCF_Action de retorno
APCF_AvailableSpaces 1 octeto Número de entradas sem custo financeiro que ainda estão disponíveis na tabela UUID de solicitação

LE_APCF_Comando: nome_local_sub_cmd

Esse subcomando é usado para adicionar ou excluir uma string de nome local ou limpar a lista de strings de nomes locais para filtragem no chip.

Sub OCF: 0x05

Parâmetro do subcomando Tamanho Objetivo
APCF_Action 1 octeto 0x00 - Adicionar
0x01 - Excluir
0x02 - Limpar
Excluir exclui a string de nome local especificada no filtro especificado.
"Limpar" limpa todas as strings de nome local no filtro especificado.
APCF_Filter_Index 1 octeto Índice do filtro (0, max_filter-1)
APCF_LocName_Mandata_or_SerData Tamanho da variável Uma string de caracteres para o nome local.

Observações:
  • Atualmente, o número máximo de caracteres em uma string de nome local é 29
  • Não aplicável quando a ação é "Limpar" (0x2)

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
APCF_opcode 1 octeto 0x05 - Nome local do APCF
APCF_Action 1 octeto Repetir o comando APCF_Action de retorno
APCF_AvailableSpaces 1 octeto Número de entradas sem custo financeiro ainda disponíveis na tabela "Nome local"

LE_APCF_Comando: manf_data_sub_cmd

Esse subcomando é usado para adicionar ou excluir uma string de dados do fabricante ou limpar a lista de strings de dados do fabricante para filtragem no chip.

Sub OCF: 0x06

Parâmetro do subcomando Tamanho Objetivo
APCF_Action 1 octeto 0x00: adicionar
0x01 - excluir
0x02: limpar
"Excluir" vai excluir a string de dados do fabricante especificada no filtro especificado.
A opção "Limpar" limpa todas as strings de dados do fabricante no filtro especificado.
APCF_Filter_Index 1 octeto Índice do filtro (0, max_filter-1)
APCF_LocName_Mandata_or_SerData Tamanho da variável Uma string de caracteres para dados do fabricante.

Observações:
  • Atualmente, o número máximo de caracteres em uma string de nome local é 29
  • Não aplicável quando a ação é "Limpar" (0x2)
APCF_ManData_Mask Tamanho da variável A máscara de dados do fabricante a ser adicionada à lista. Ele precisa ter o mesmo comprimento que APCF_LocName_or_ManData_or_SerData.

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
APCF_opcode 1 octeto 0x06: dados do fabricante de APCF
APCF_Action 1 octeto Repetir o comando APCF_Action de retorno
APCF_AvailableSpaces 1 octeto Número de entradas sem custo financeiro que ainda estão disponíveis na tabela de dados do fabricante

LE_APCF_Comando: service_data_sub_cmd

Esse subcomando é usado para adicionar ou excluir uma string de dados de serviço ou limpar a lista de strings de dados de serviço para filtragem no chip.

Sub OCF: 0x07

Parâmetro do subcomando Tamanho Objetivo
APCF_Action 1 octeto 0x00 - Adicionar
0x01 - Excluir
0x02 - Limpar
Excluir excluirá a string de dados de serviço especificada no filtro especificado.
A opção "Limpar" limpa todas as strings de dados de serviço no filtro especificado.
APCF_Filter_Index 1 octeto Índice do filtro (0, max_filter-1)
APCF_LocName_Mandata_or_SerData Tamanho da variável Uma string de caracteres para dados de serviço.

Observações:
  • Atualmente, o número máximo de caracteres em uma string de nome local é 29
  • Não aplicável quando a ação é "Limpar" (0x2)
APCF_LocName_Mandata_or_SerData_Mask Tamanho da variável A máscara de dados do serviço a ser adicionada à lista. Ele precisa ter o mesmo comprimento de APCF_LocName_or_ManData_or_SerData..

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
APCF_opcode 1 octeto 0x07 - Dados de serviço APCF
APCF_Action 1 octeto Repetir o comando APCF_Action de retorno
APCF_AvailableSpaces 1 octeto Número de entradas sem custo financeiro ainda disponíveis para a tabela "Dados do serviço"

LE_APCF_Comando: ad_type_sub_cmd

Esse subcomando é usado para adicionar ou excluir um tipo de AD ou limpar uma lista de tipos de AD para filtragem de chips. Use read_extended_features_sub_cmd para verificar se esse comando é compatível ou não.
Quando APCF_AD_DATA_Length for 0, filtre APCF_AD_TYPE sem comparar os dados do AD e a máscara de dados do AD. Se o comprimento de dados do pacote ADV recebido exceder AD_DATA_LENGTH, compare apenas os primeiros AD_DATA_LENGTH bytes dos dados do AD e ignore os dados restantes.

Sub OCF: 0x09

Parâmetro do subcomando Tamanho Objetivo
APCF_Action 1 octeto 0x00 - Adicionar
0x01 - Excluir
0x02 - Limpar
Excluir excluirá o tipo de AD especificado no filtro especificado.
A opção "Limpar" remove todos os tipos de anúncios no filtro especificado.
APCF_Filter_Index 1 octeto Índice do filtro (0, max_filter-1)
APCF_AD_TYPE 1 octeto O tipo de anúncio para adicionar ou excluir a lista. Ignorar quando APCF_Action for 0x02 (Limpar)
APCF_AD_DATA_Length 1 octeto 0x00 significa que o conteúdo dos dados não é filtrado
Ignorar quando APCF_Action for 0x02 (Limpar)
APCF_AD_DATA Tamanho da variável Tamanho variável com base em APCF_AD_DATA_Length
Ignorar quando APCF_Action for 0x02 (Limpar)
APCF_AD_DATA_MASK Tamanho da variável Tamanho variável, com base em APCF_AD_DATA_Length
Ignorar quando APCF_Action for 0x02 (Limpar)
Ele precisa ter o mesmo comprimento que APCF_AD_DATA.

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
APCF_opcode 1 octeto 0x09 - tipo de anúncio APCF
APCF_Action 1 octeto Repetir o comando APCF_Action de retorno
APCF_AvailableSpaces 1 octeto Número de entradas sem custo financeiro ainda disponíveis na tabela "Tipo de anúncio"

LE_APCF_Comando: read_extended_features_sub_cmd

Esse subcomando é usado para ler recursos de APCF estendidos.

Sub OCF: 0xFF

Parâmetro do subcomando Tamanho Objetivo
Não relevante Parâmetro de comando vazio.

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
APCF_opcode 1 octeto 0xFF: APCF_Read_Extended_Features
APCF_extended_features 2 octetos

Bitmasks para recursos estendidos compatíveis:

  • Bit 0: filtro do serviço de descoberta de transporte de suporte
  • Bit 1: filtro "Suporte ao tipo de anúncio"
  • Bit 2 ~15: Reservado para uso futuro

Valor do bit

  • 0 = incompatível
  • 1 = Compatível

Comando de informações sobre energia e atividade do controlador

O objetivo dessas informações é que as funções do sistema host superior analisem o total de atividades de todos os componentes, incluindo o controlador BT e seu estado macro, em conjunto com o que está acontecendo nos apps e no framework. Para fazer isso, são necessárias as seguintes informações da pilha BT e do controlador:

  • Pilha BT: relatando o estado macrooperacional atual do controlador
  • Firmware: relatórios de informações agregadas de energia e atividade

Estados da macro de pilha de host BT, conforme determinado no nível do usuário:

  • Inativo: [page scan, LE advt, Investigation scan, LE scan]
  • Verificação: [paginação/consulta/tentando se conectar]
  • Ativo: [link da ACL ativado, link de SCO em andamento, modo de detecção]

As atividades que o controlador monitora ao longo da vida útil são o tempo Tx, o tempo Rx, o tempo de inatividade e o total de energia consumida. Eles são apagados quando lidos do host.

LE_Get_Controller_Activity_Energy_Info

Esse é um comando específico do fornecedor.

OCF: 0x159

Parâmetro do subcomando Tamanho Objetivo
NA Parâmetros de comando vazios

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
total_tx_time_ms 4 octetos Tempo total de execução da transação
total_rx_time_ms 4 octetos Tempo total de execução de Rx
total_idle_time_ms 4 octetos Tempo total em inatividade (estados de baixo consumo de energia não suspenso)
total_energy_used 4 octetos Energia total usada [produto da corrente (mA), tensão (V) e tempo (ms)]

Comando de parâmetros de verificação do conjunto estendido de LE

Esse comando pode ser usado para ativar uma janela e um intervalo de verificação maiores no controlador. De acordo com a especificação BT Core 5.2, uma janela e um intervalo de verificação têm um limite superior de 10,24 segundos, o que prejudica intervalos mais longos de verificação dos aplicativos além de 10,24 segundos.

Referência de base: especificação BT Core 5.2, página 2493 (comando LE Set Scan Parameters)

OCF: 0x15A

Parâmetro de comando Tamanho Objetivo
LE_Ex_Scan_Type 1 octeto 0 x 00 - Leitura passiva. Nenhum pacote SCAN_REQ será enviado (padrão).
0x01: verificação ativa. SCAN_REQ pacotes podem ser enviados.
LE_Ex_Scan_Interval 4 octetos Definido como o intervalo de tempo entre o momento em que o controlador iniciou a última verificação de LE até o início da verificação de LE subsequente.
Intervalo: 0x0004 a 0x00FFFFFF
Padrão: 0x0010 (10 ms)
Tempo = N * 0,625 ms
Intervalo de tempo: 2,5 ms a 10442,25 segundos
LE_Ex_Scan_Window 4 octetos A duração da verificação de LE. LE_Scan_Window precisa ser menor ou igual a LE_Scan_Interval.
Intervalo: 0x0004 a 0xFFFF
Padrão: 0x0010 (10 ms)
Tempo = N * 0,625 ms
Intervalo de tempo: 2,5 ms a 40,95 segundos
Own_Address_Type 1 octeto 0x00: endereço público do dispositivo (padrão)
0x01: endereço aleatório do dispositivo
LE_Ex_Scan_Filter_Policy 0x00 - aceita todos os pacotes de divulgação (padrão). Os pacotes de publicidade direta que não forem endereçados para este dispositivo serão ignorados.
0x01: ignora os pacotes de publicidade de dispositivos que não estão na lista Apenas da Lista de permissões. Os pacotes de publicidade direta que não forem endereçados para este dispositivo serão ignorados.

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído

Receber comando de informações de depuração do controlador

O objetivo desse elemento de informação é adquirir informações de depuração do controlador por um host, em formato binário, para pós-processamento e análise. Isso ajuda a depurar problemas em campo e fornece aos engenheiros um kit de ferramentas para registrar informações para análise. Um controlador pode fornecer as informações quando solicitado por um host por meio do evento (subevento de informações de depuração do controlador) ou de forma autônoma, quando desejado pelo controlador. Exemplos de usos podem ser para relatar informações do estado do firmware, informações de crash dump, informações de registro etc.

OCF: 0x15B

Parâmetro de comando Tamanho Objetivo
N/A Lista de parâmetros de comando vazia

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído

Suporte a descarregamento de hardware A2DP

O recurso de descarregamento A2DP oferece suporte ao descarregamento do processo de codificação de áudio A2DP para um processador de áudio conectado ao controlador BT. O fluxo de dados de áudio codificado é transmitido diretamente do processador de áudio para o controlador BT sem o envolvimento do host BT. O host do BT ainda é responsável pela configuração e pelo controle da sessão A2DP. Há duas versões dos comandos disponíveis. Os comandos legados com Sub OCF 0x01-0x02 são compatíveis apenas com codecs de código aberto. As versões com Sub-OCF 0x02-0x03 são independentes do codec configurado.

OCF: 0x15D

Iniciar o descarregamento do A2DP (legado)

Sub OCF: 0x01

Use esse comando para configurar o processo de descarregamento A2DP e iniciar o fluxo de A2DP.

Parâmetro de comando Tamanho Objetivo
Codec 4 octetos Especifica o tipo de codec
0x01 - SBC
0x02 - AAC
0x04 - APTX
0x08 - APTX HD
0x10 - LDAC
Max_Latency 2 octetos Latência máxima permitida (em ms). O valor zero desativa a limpeza.
SCMS-T_Enable 2 octetos Octeto 0: flag que permite a adição do cabeçalho SCMS-T.
  • 0x00: cabeçalho SCMS-T não incluído.
  • 0x01: cabeçalho SCMS-T incluído.

Octeto 1: valor do cabeçalho SCMS-T, quando está ativado.

Sampling_Frequency 4 octetos 0x01 a 44.100 Hz
0x02 - 48.000 Hz
0x04 a 88.200 Hz
0x08 a 96.000 Hz
Bits_Per_Sample 1 octeto 0x01 - 16 bits por amostra
0x02 - 24 bits por amostra
0x04 - 32 bits por amostra
Channel_Mode 1 octeto 0x01 - Mono
0x02: estéreo
Encoded_Audio_Bitrate 4 octetos A taxa de bits de áudio codificada em bits por segundo.
0x00000000: a taxa de bits de áudio não foi especificada / unused.
0x00000001 - 0x00FFFFFF: é a taxa de bits de áudio codificada em bits por segundo.
0x01000000 - 0xFFFFFFFF: reservado.
Connection_Handle 2 octetos Cabo de conexão da conexão A2DP que está sendo configurada
L2CAP_Channel_ID 2 octetos ID do canal L2CAP a ser usado para esta conexão A2DP
L2CAP_MTU_Size 2 octetos Tamanho máximo de MTU L2CAP contendo pacotes de áudio codificados
Codec_Information 32 octetos Informações específicas do codec.

Codec SBC:

Consulte os elementos de informação específicos do Codec SBC no A2DP v1.3.
Oututo 0: comprimento do bloco | Subbandas | Método de alocação
Oututo 1: valor mínimo de Bitpool
Outubro 2: valor máximo do Bitpool
3 de outubro: frequência de amostragem | Modo do canal
4 a 31 de outubro: reservado

Codec AAC:

Consulte os elementos de informação específicos do Codec AAC em A2DP v1.3
Octeto 0: tipo de objeto
Oututo 1; b7: VBR
2 a 31 de outubro: reservado

Codec LDAC:

Octeto 0-3: ID do fornecedor
0x0000012D

Outubro 4 a 5: ID do codec
0x00AA - LDAC
Todos os outros valores são reservados

Octeto 6: índice da taxa de bits:
0x00 - Alto
0x01 - Médio
0x02 - Baixo
0x03 - 0x7E - Reservado
0x7F - ABR (taxa de bits adaptável)
0x80 - 0xFF - Reservado

7 de outubro: modo de canal LDAC
0x01: estéreo
0x02: duplo
0x04: mono
Outros são reservados

8 a 31 de outubro: reservado

Todos os outros codecs:

0 a 31 de outubro: reservado

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
Sub_Opcode 1 octeto 0x01 - Iniciar descarregamento A2DP

Iniciar o descarregamento A2DP

Sub OCF: 0x03

Use esse comando para configurar o processo de descarregamento A2DP e iniciar o fluxo de A2DP.

Parâmetro de comando Tamanho Objetivo
Connection Handle 2 octetos Identificador da conexão HCI ativa
L2CAP_Channel_ID 2 octetos Identificador do canal L2CAP aberto para transmissão A2DP
Data_Path_Direction 1 octeto 0x00: saída (origem/mesclagem do AVDTP)
0x01: entrada (coletor/divisão do AVDTP)
Peer_MTU 2 octetos Tamanho máximo de pacotes L2CAP, negociado com o peering.
CP_Enable_SCMS_T 1 octeto 0x00: desativar o cabeçalho de proteção de conteúdo SCMS-T
0x01: ativar cabeçalho de proteção de conteúdo SCMS-T
CP_Header_SCMS_T 1 octeto Quando o cabeçalho de proteção de conteúdo SCMS-T está ativado (CP_SCMS_T_Enable definido como 0x01), define o valor do cabeçalho que precede o conteúdo de áudio (consulte A2DP, seção 3.2.1-2), conforme definido por "Números atribuídos por Bluetooth", seção 6.3.2.
Ignorado quando a proteção de conteúdo do SCMS-T não está ativada.
Vendor_Specific_Parameters_Length 1 octeto Tamanho dos parâmetros específicos do fornecedor, no intervalo de 0 a 128.
O valor 0 é usado quando nenhum outro parâmetro é fornecido.
Vendor_Specific_Parameters 0 a 128 octetos Parâmetros específicos do fornecedor fornecidos pela HAL de áudio Bluetooth, CodecParameters.vendorSpecificParameters[].

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
Sub_Opcode 1 octeto 0x03 - Iniciar descarregamento A2DP

Interromper o descarregamento A2DP (legado)

Sub OCF: 0x02

Esse comando é usado para interromper o fluxo de descarregamento do A2DP.

Parâmetro de comando Tamanho Objetivo
N/A Lista de parâmetros de comando vazia.

Nenhum parâmetro foi definido para este comando.

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
Sub_Opcode 1 octeto 0x02 - Interromper o descarregamento A2DP

Interromper o descarregamento A2DP

Sub OCF: 0x04

Esse comando é usado para interromper o fluxo de descarregamento do A2DP.

Parâmetro de comando Tamanho Objetivo
Connection Handle 2 octetos Identificador da conexão HCI ativa
L2CAP_Channel_ID 2 octetos Identificador do canal L2CAP aberto para transmissão A2DP
Data_Path_Direction 1 octeto 0x00: saída (origem/mesclagem do AVDTP)
0x01: entrada (coletor/divisão do AVDTP)

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
Sub_Opcode 1 octeto 0x04 - Interromper o descarregamento A2DP

Comando do Relatório de qualidade do Bluetooth

O recurso de comando do Relatório de qualidade de BT inicia o mecanismo no controlador Bluetooth para relatar eventos de qualidade do Bluetooth para o host. Há quatro opções que podem ser ativadas:

  • Modo de monitoramento de qualidade: o controlador envia periodicamente um subevento do BQR relacionado à qualidade do link para o host.
  • Aproximando-se do LSTO: se nenhum pacote for recebido do dispositivo BT conectado por mais da metade do valor do tempo limite da supervisão de link (LSTO, na sigla em inglês), o controlador informará um evento LSTO próximo ao host.
  • Áudio entrecortado (A2DP): quando o controlador detecta fatores que causam áudio entrecortado, ele informa um evento entrecortado no áudio A2DP ao host.
  • (e) Voz entrecortada no SCO: quando o controlador detecta fatores que causam instabilidade na voz, ele relata um evento de voz entrecortada (e) SCO entrecortada pelo organizador.
  • Inflamação raiz: esse evento é enviado pelo controlador para a pilha quando a HAL ou o controlador encontra um erro fatal e precisa reiniciar o Bluetooth.
  • Rastreamento de mensagens LMP/LL: o controlador envia a mensagem do LMP/LL no handshake com o dispositivo remoto para o host.
  • Rastro de programação de vários perfis/coex Bluetooth: o controle envia ao host informações de programação sobre como lidar com vários perfis Bluetooth e a coexistência de redes sem fio na banda de 2,4 Ghz.
  • Mecanismo de informações de depuração do controlador: quando ativado, o controlador pode relatar de forma autônoma informações de registro de depuração por meio do subevento de informações de depuração do controlador para o host.
  • LE Audio entrecortado: quando o controlador detecta fatores que causam áudio entrecortado, ele informa um evento de LE Audio entrecortado ao host.
  • Modo avançado de estatísticas de RF: o controlador relata informações relacionadas a estatísticas de RF ao host, aceitando dois casos de uso de relatório:
    • Relatórios periódicos
    • Acionadores de eventos (início/interrupção do stream e acionador de evento de qualidade do link).
  • BQR_Report_Action do comando do relatório de qualidade do Bluetooth: o host pode usar esse comando HCI para receber uma consulta única para o modo de monitoramento de qualidade, o modo de monitoramento de energia ou um modo avançado de estatísticas de RF.

OCF: 0x15E

Parâmetro de comando Tamanho Objetivo
BQR_Report_Action 1 octeto Ação para adicionar / excluir relatórios de eventos de qualidade definidos no parâmetro BQR_Quality_Event_Mask ou limpar tudo.

0x00 - Adicionar
0x01 - Excluir
0x02 - Limpar
0x03 - Consulta única

Excluir remove os relatórios de eventos de qualidade específicos.
"Limpar" limpa todos os relatórios de eventos de qualidade. O parâmetro BQR_Quality_Event_Mask pode ser ignorado).

BQR_Quality_Event_Mask 4 octetos Bitmasks para o relatório de evento de qualidade selecionado.

Bit 0: defina para ativar o modo de monitoramento de qualidade.
Bit 1: defina para ativar o evento LSTO que está se aproximando (para ACL/(e)SCO/ISO).
Bit 2: defina para ativar o evento de áudio A2DP entrecortado.
Bit 3: defina para ativar o evento de voz entrecortado (e)SCO.
Bit 4: defina para ativar o evento de inflamação raiz.
Bit 5: defina para ativar o modo de monitoramento de energia.
Bit 6: defina para ativar o evento de baixa fluidez do áudio de LE.
Bit 7: defina para ativar o evento de falha de conexão.
Bit 8: defina para ativar o gatilho de eventos do modo "Advanced RF Stats".
Bit 9: defina para ativar o relatório periódico das estatísticas avançadas de RF.
Bit 10 ~ 14: reservado.
Bit 15: configure para ativar eventos de qualidade específicos do fornecedor.
Bit 16: defina para ativar o rastreamento de mensagens LMP/LL.
Bit 17: defina para ativar o rastro de programação de multilink/Coex via Bluetooth.
Bit 18: configure para ativar o mecanismo de informações de depuração do controlador.
Bit 19 ~ 30: reservado.
Bit 31: defina para ativar o rastreamento específico do fornecedor.

BQR_Minimum_Report_Interval 2 octetos Defina o intervalo de tempo mínimo dos relatórios de eventos de qualidade para os eventos de qualidade selecionados. O firmware do controlador não pode informar o próximo evento dentro do intervalo de tempo definido. A configuração do intervalo precisa ser específica e dedicada aos eventos de qualidade que estão sendo adicionados.

Unidade: ms
Padrão: 0 (sem limitação para o intervalo)
Intervalo: 0 ~ 65535 ms

BQR_Vendor_Specific_Quality_Event_Mask 4 octetos Bitmasks para o relatório de evento de qualidade específico do fornecedor selecionado.
Esse parâmetro é válido somente quando o bit 15 do BQR_Quality_Event_Mask está definido.

Bit 0 ~ 31: Reservado.

BQR_Vendor_Specific_Trace_Mask 4 octetos Bitmasks para o relatório de rastreamento específico do fornecedor selecionado.
Esse parâmetro é válido somente quando o bit 31 do BQR_Quality_Event_Mask está definido.

Bit 0 ~ 31: Reservado.

Report_interval_multiple 4 octetos O multiplicador de BQR_Minimum_Report_Interval. Quando esse valor é maior ou igual a 1, o intervalo do relatório do BQR segue o formato
Intervalo do relatório do BQR = BQR_Minimum_Report_Interval x Report_interval_multiple.
O firmware do controlador não pode informar o próximo evento dentro do intervalo de tempo definido. A configuração de intervalo é dedicada especificamente aos eventos de qualidade adicionados.

Unidade: ms
Padrão: 1
Intervalo: 0 ~ 4294967295 (0: é igual a 1)

Observação: se a configuração de BQR_Report_Interval for maior que a capacidade do controlador, ele precisará retornar o tempo máximo de BQR_Report_Interval após a conclusão do comando.

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
Current_Quality_Event_Mask 4 octetos Indica a configuração atual da bitmask.
Bit 0: o modo de monitoramento de qualidade está ativado.
Bit 1: o envio de relatórios de eventos de LSTO está ativado.
Bit 2: o relatório de eventos de áudio A2DP está ativado.
Bit 3: (e) Os relatórios de eventos de voz entrecortada na SCO estão ativados.
Bit 4: os relatórios de eventos de inflamação raiz estão ativados.
Bit 5: o modo de monitoramento de energia está ativado.
Bit 6: o relatório de eventos de baixa fluidez do áudio de LE está ativado.
Bit 7: evento de falha na conexão.
Bit 8: defina para ativar o gatilho de eventos do modo "Advanced RF Stats".
Bit 9: defina para ativar o relatório periódico de estatísticas avançadas de RF.
Bit 10 ~ 14: reservado.
Bit 15: os relatórios de eventos de qualidade específicos do fornecedor estão ativados.
Bit 16: o trace de mensagens LMP/LL está ativado.
Bit 17: o trace de programação de multilink/coex Bluetooth está ativado.
Bit 18: o mecanismo de informações de depuração do controlador está ativado.
Bit 19 ~ 30: reservado.
Bit 31: o trace específico do fornecedor está ativado.
Current_Vendor_Specific_Quality_Event_Mask 4 octetos Indica a configuração atual da bitmask.
Current_Vendor_Specific_Trace_Mask 4 octetos Indica a configuração atual da bitmask.
BQR_Report_interval 4 octetos Indica a configuração atual da bitmask.
Current_Vendor_Specific_Trace_Mask 4 octetos A configuração de BQR_Report_interval. Precisa ser o valor mínimo entre BQR_Minimum_Report_Interval * Report_interval_multiple ou o intervalo máximo de suporte do controlador.

Comando dinâmico do buffer de áudio

O buffer de áudio dinâmico reduz as falhas de áudio mudando o tamanho do buffer de áudio no controle Bluetooth com base em vários cenários.

OCF: 0x15F

Usar o recurso de tempo de buffer de áudio

Sub OCF: 0x01

Use esse comando para obter o recurso de tempo de buffer de áudio do controlador Bluetooth.

Parâmetro de comando Tamanho Objetivo
N/A Lista de parâmetros de comando vazia

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
Dynamic_Audio_Buffer_opcode 1 octeto 0x01 - Obtenha tempo de buffer de áudio
Audio_Codec_Type_Supported 4 octetos Bitmask para os tipos de codecs compatíveis
Bit 0 - SBC
Bit 1 - AAC
Bit 2 - APTX
Bit 3: APTX HD
Bit 4: LDAC
Bit 5 a 31 são reservados
Audio_Codec_Buffer_Default_Time_For_Bit_0 2 octetos Tempo de buffer padrão do tipo de codec Bit 0 especificado em Audio_Codec_Type_supported.
Esse valor será 0 se o tipo de codec Bit 0 não for compatível.
Unidade: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 2 octetos Tempo máximo de buffer do tipo de codec do Bit 0 especificado em Audio_Codec_Type_supported.
Esse valor será 0 se o tipo de codec Bit 0 não for compatível.
Unidade: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 2 octetos Tempo mínimo de buffer do tipo de codec Bit 0 especificado em Audio_Codec_Type_supported.
Esse valor será 0 se o tipo de codec Bit 0 não for compatível.
Unidade: ms
Audio_Codec_Buffer_Default_Time_For_Bit_1 2 octetos Tempo de buffer padrão do tipo de codec do Bit 1 especificado em Audio_Codec_Type_supported.
Esse valor será 0 se o tipo de codec do Bit 1 não for compatível.
Unidade: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 2 octetos Tempo máximo de buffer do tipo de codec do Bit 1 especificado em Audio_Codec_Type_Supported.
Esse valor será 0 se o tipo de codec do Bit 1 não for compatível.
Unidade: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 2 octetos Tempo mínimo de buffer do tipo de codec do Bit 1 especificado em Audio_Codec_Type_Supported.
Esse valor será 0 se o tipo de codec do Bit 1 não for compatível.
Unidade: ms
... ... ...
Audio_Codec_Buffer_Default_Time_For_Bit_31 2 octetos Tempo de buffer padrão do tipo de codec do Bit 31 especificado em Audio_Codec_Type_supported.
Esse valor será 0 se o tipo de codec do Bit 31 não for compatível.
Unidade: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 2 octetos Tempo máximo de buffer do tipo de codec do Bit 31 especificado em Audio_Codec_Type_Supported.
Esse valor será 0 se o tipo de codec do Bit 31 não for compatível.
Unidade: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 2 octetos Tempo mínimo de buffer do tipo de codec Bit 31 especificado em Audio_Codec_Type_supported.
Esse valor será 0 se o tipo de codec do Bit 31 não for compatível.
Unidade: ms

Definir tempo de buffer de áudio

Sub OCF: 0x02

Use este comando para definir o tempo de buffer de áudio para o controlador Bluetooth.

Parâmetro de comando Tamanho Objetivo
Audio_Codec_Buffer_Time 2 octetos Tempo de buffer de áudio solicitado para o codec atual usado.
Unidade: ms

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
Dynamic_Audio_Buffer_opcode 1 octeto 0x02 - Define o tempo de buffer do áudio
Audio_Codec_Buffer_Time 2 octetos Tempo atual do buffer de áudio no controle Bluetooth.
Unidade: ms

Evento HCI (específico do fornecedor)

Eventos HCI específicos do fornecedor são necessários em alguns casos. Consulte a Figura 5.4 na página 1897 da especificação BT Core 5.2. O parâmetro de evento 0 sempre conterá o primeiro código de subevento, com base no qual o restante do evento HCI é decodificado.

Parâmetro de evento Tamanho Objetivo
HCI_vendor_specific_event_code 1 octeto 0xFF
sub_event_code 1 octeto Um código de subevento terá 1 octeto de tamanho, o byte imediatamente após o Tamanho do parâmetro no pacote de eventos da HCI.

Subevento de violação do limite de armazenamento

Esse evento indica que o limite de armazenamento foi excedido.

Código do subevento = 0x54

Parâmetro de subevento Tamanho Objetivo
Nenhum

Subevento de mudança de estado de várias publicidades LE

Esse evento indica que uma instância de publicidade mudou de estado. No momento, esse evento só é usado para indicar qual instância de publicidade foi interrompida como resultado de uma conexão.

Código do subevento = 0x55

Parâmetro do subevento Tamanho Objetivo
Advertising_instance 1 octeto Identifica a instância de publicidade específica
Os valores válidos são de 0 a max_advt_instances-1
State_Change_Reason 1 octeto 0x00: conexão recebida
Connection_handle 2 octetos Identifica a conexão que causou a desativação da instância advt (0xFFFF se for inválida)

Subevento de acompanhamento de publicidade LE

Este evento indica quando um anunciante é encontrado ou perdido.

Código do subevento = 0x56

Parâmetro de subevento Tamanho Objetivo
APCF_Filter_Index 1 octeto Índice do filtro (0, max_filter-1)
Advertiser_State 1 octeto 0x00: anunciante encontrado
0x01: anunciante perdido
Advt_Info_Present 1 octeto 0x00: informações do anunciante (Advt_Info) presentes
0x01: informações do anunciante (Advt_Info) ausentes
Advertiser_Address 6 octetos Endereço público ou aleatório
Advertiser_Address_Type 1 octeto 0x00: endereço público
0x01: endereço aleatório
Advt_Info Tx_Pwr[0]: 1 octeto
RSSI[0]: 1 octeto
Timestamp[0]: 2 octetos
Adv packet_len[0]: 1 octeto
Adv_packet[0]: Adv_packet_len octetos
Scan_data_resp_len[0]: 1 octeto
Scan_data_resp[0]: Scan_data_resp octetos

Subevento de informações de depuração do controlador

Este evento é usado por um controlador para fornecer informações de depuração binárias a um host.

Código do subevento = 0x57

Parâmetro de subevento Tamanho Objetivo
debug_block_byte_offset_start 2 octetos Depurar o deslocamento de byte do bloco desde o início
last_block 1 octeto 0x00: mais dados de depuração presentes
0x01: último bloco binário; não há mais dados de depuração
cur_pay_load_sz 2 octetos Tamanho do bloco binário em um evento atual
Debug_Data Variável Dados de depuração de cur_payload_sz

Subevento do Relatório de qualidade do Bluetooth

Esse evento indica uma das seguintes situações: ocorreu um evento de qualidade do Bluetooth, o controlador fez upload do rastreamento de mensagens LMP/LL e do trace de programação Bluetooth multilink/Coex ou o controlador despejou dados de informações de depuração.

Parâmetro de subevento Tamanho Objetivo
Quality_Report_Id 1 octeto 0x01: relatórios de qualidade no modo de monitoramento.
0x02: chegando ao LSTO.
0x03: o áudio A2DP está entrecortado.
0x04: (e)A voz do SCO está instável.
0x05 ~ 0x06: reservado.
0x07: o áudio LE fica entrecortado.
0x08: falha na conexão.
0x09 ~ 0xFF: reservado.
Packet_Types 1 octeto 0x01: ID
0x02: NULL
0x03: POLL-0x03: POLL
0x04: FHS
0x05: HV1
0x06: HV2
0x07: HV3
0x08: DV3
0x09: EV3
0x09: EV3
0x09: EV3
0x09: EV3

















Connection_Handle 2 octetos Identificador de conexão ACL/(e)SCO/ISO.
Connection_Role 1 octeto Execução do papel para a conexão.
0x00: central
0x01: periférico
0x02 ~ 0xFF: reservado.
TX_Power_Level 1 octeto Nível atual de potência de transmissão para o Connection_Handle especificado.

Esse valor será o mesmo que o controlador respondendo ao comando HCI_Read_Transmitir_Power_Level HCI.

RSSI 1 octeto [em dBm]

Valor de indicação de intensidade de sinal (RSSI, na sigla em inglês) recebido para o Connection_Handle especificado.
Esse valor precisa ser um valor absoluto da intensidade do sinal do receptor.
Intervalo: -127 a +20

SNR 1 octeto [em dB]

Valor da relação sinal-ruído (SNR, na sigla em inglês) para o Connection_Handle especificado.
O controlador precisa fornecer o SNR médio de todos os canais usados pelo link.

Unused_AFH_Channel_Count 1 octeto Indica o número de canais não utilizados em AFH_channel_map.
0x4F ~ 0xFF: reservado.
AFH_Select_Unideal_Channel_Count 1 octeto Indica o número de canais que sofreram interferência e têm má qualidade, mas ainda estão selecionados para AFH.
O número mínimo de canais permitidos pela especificação Bluetooth é 20. Assim, mesmo que todos os 79 canais tenham interferência e tenham má qualidade, o controle ainda precisará escolher pelo menos 20 canais para AFH.
LSTO 2 octetos Configuração atual do tempo limite de supervisão da vinculação.
Tempo = N * 0,625 ms
Intervalo de tempo: 0,625 ms a 40,9 s
Connection_Piconet_Clock 4 octetos Relógio Piconet para o Connection_Handle especificado.
Esse valor será o mesmo que a resposta do controlador ao comando HCI_Read_Clock HCI com o parâmetro "What_Clock" de 0x01 (Piconet Clock).
Unidade: N * 0,3125 ms (1 relógio Bluetooth)
Retransmission_Count 4 octetos O número de retransmissões desde o último evento.
Essa contagem será redefinida após informar o host.
No_RX_Count 4 octetos Nenhuma contagem de RX desde o último evento.
A contagem aumenta quando nenhum pacote é recebido no horário agendado ou o pacote recebido está corrompido.
Essa contagem será redefinida após informar o host.
NAK_Count 4 octetos Contagem de NAK (negativa confirmada) desde o último evento.
Essa contagem será redefinida após informar o host.
Last_TX_ACK_Timestamp 4 octetos Carimbo de data/hora do último TX ACK. Ele é baseado no relógio Bluetooth da Piconet Central (CLK).
Unidade: N * 0,3125 ms (1 relógio Bluetooth)
Flow_Off_Count 4 octetos O número de vezes que o controlador recebe fluxo desligado (STOP) desde o último evento.
Essa contagem será redefinida após informar o host.
Last_Flow_On_Timestamp 4 octetos Carimbo de data/hora do último fluxo (GO). Ele é baseado no relógio Bluetooth da Piconet Central (CLK).
Unidade: N * 0,3125 ms (1 relógio Bluetooth)
Buffer_Overflow_Bytes 4 octetos [em byte]

Contagem de estouro de buffer desde o último evento.
O controlador conta quantos bytes de dados são descartados.
Essa contagem será redefinida após informar o host.

Buffer_Underflow_Bytes 4 octetos [em byte]

Contagem de estouro do buffer desde o último evento.
Essa contagem será redefinida após informar o host.

bdaddr 6 octetos Endereço do dispositivo remoto
cal_failed_item_count 1 octeto Número de itens com falha na calibração
TX_Total_Packets 4 octetos O número de pacotes enviados.
TX_UnAcked_Packets 4 octetos O número de pacotes que não recebem uma confirmação.
Essa contagem é redefinida após a denúncia ao host.
TX_Flushed_Packets 4 octetos O número de pacotes que não são enviados pelo ponto de limpeza.
Essa contagem é redefinida após a denúncia ao host.
TX_Last_Subevent_Packets 4 octetos O número de pacotes que a camada de enlace transmite uma PDU de dados do CIS no último subevento de um evento de CIS.
Essa contagem é redefinida após a denúncia ao host.
O valor será zero se não houver um valor válido para o link.
CRC_Error_Packets 4 octetos O número de pacotes recebidos com erro de CRC desde o último evento.
Essa contagem é redefinida após a denúncia ao host.
RX_Duplicate_Packets 4 octetos O número de pacotes duplicados (retransmissão) recebidos desde o último evento.
Essa contagem é redefinida após a denúncia ao host.
RX_Unreceived_Packets 4 octetos O número de pacotes não recebidos é o mesmo que o parâmetro do comando LE READ ISO Link Quality (consulte a versão 5.4 da especificação do núcleo do Bluetooth). Os streams associados são CIS e BIS.
Quando esse valor é incrementado, a camada de links não recebe um payload específico pelo ponto de liberação (em uma CIS) ou ao final do evento a que está associada (em um BIS; consulte a especificação do núcleo do Bluetooth versão 5.4 Vol 6 parte B, Seção 4.4.6.6).
Coex_Info_Mask 2 octetos Bit 0 - CoexInvolvement: definido para indicar que há suspeita de que atividades do coex estejam envolvidas quando este relatório for gerado (por exemplo, Chops A2DP e se aproximando da LSTO).
Bit 1: rádio WL 2G ativo: defina para indicar que o rádio WLAN 2G está ativo.
Bit 2 — WL 2G conectado: defina para indicar que o rádio WLAN 2G está ativo e conectado.
Bit 3 — Radio WL 5G/6G ativo: defina para indicar que o rádio WLAN 5G/6G está ativo.
Bit 4 a 15: Reservado
Parâmetro específico do fornecedor (comprimento total do parâmetro - a definir) * octetos Para que o fornecedor do controlador receba mais parâmetros específicos do fornecedor.

Código do subevento = 0x58 [Quality_Report_Id = 0x05, Root Inflammation event]

Esse evento indica que a HAL de Bluetooth ou o controlador encontrou um erro fatal e precisa da pilha Bluetooth para gravar essa situação e reiniciar. Em qualquer caso, o controlador precisa enviar um Root_Inflammation_Event para a pilha Bluetooth antes de enviar o primeiro fragmento dos eventos de informações de depuração.

O parâmetro Error_Code contém um código de erro relatado pelo HAL/controlador, "0" se for um erro específico do fornecedor de chipset. O Vendor_Specific_Error_Code contém um código de erro específico do fornecedor de chipset de HAL/Controller. Ele precisa ser definido como 0 se o parâmetro Error_Code não for 0. Os parâmetros Error_Code e Vendor_Specific_Error_Code não podem ser 0.

Parâmetro de subevento Tamanho Objetivo
Quality_Report_Id 1 octeto 0x00 ~ 0x04: reservado.
0x05: inflamação da raiz.
0x06 ~ 0xFF: reservado.
Error_Code 1 octeto 0x00: o código de erro específico do fornecedor do chipset é incluído.
0x01 ~ 0xFF: ocorreu uma falha no controlador. Consulte a parte D da especificação Bluetooth [Vol 2], códigos de erro, para ver uma lista de códigos de erro e descrições.
Vendor_Specific_Error_Code 1 octeto 0x00: nenhum código de erro específico do fornecedor do chipset está incluído.
0x01 ~ 0xFF: código de erro específico do fornecedor do chipset.
Parâmetro específico do fornecedor (Comprimento total do parâmetro - 4) * octetos Para que o fornecedor do controlador receba mais parâmetros específicos do fornecedor.
Parâmetro de subevento Tamanho Objetivo
Quality_Report_Id 1 octeto 0x00 ~ 0x10: reservado.
0x11: trace de mensagens LMP/LL.
0x12: rastro de programação de vários links/Coex Bluetooth.
0x13: despejo de dados de informações de depuração do controlador.
0x14 ~ 0xFF: reservado.
Connection_Handle 2 octetos Identificador de conexão.
Parâmetro específico do fornecedor (Comprimento total do parâmetro - 4) * octetos Formato específico do fornecedor de trace de mensagens LMP, rastreamento de programação Bluetooth multilink/Coex e despejo de dados de informações de depuração do controlador.

Suporte para vários anunciantes

Os objetivos do suporte para vários anunciantes são os seguintes:

  • Capacidade de oferecer suporte a várias publicidades (max_advt_instances)
  • Diferentes potências de transmissão para permitir um intervalo variado
  • Conteúdo de publicidade diferente
  • Uma resposta individualizada para cada anunciante
  • Privacidade (não rastreável) para cada anunciante
  • Conectável

Para manter essa especificação próxima aos padrões atuais, são fornecidos os seguintes comandos específicos do fornecedor. Eles são derivados da especificação Bluetooth Core 4.1.

Comando de vários anúncios LE_Multi_Advt

OCF: 0x154

Parâmetro de comando Tamanho 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

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
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

Referência de base: especificação Bluetooth Core 4.1, página 964 (comando de parâmetro de publicidade LE Set)

Sub OCF: 0x01

Parâmetro do subcomando Tamanho Objetivo
Advertising_Interval_Min De acordo com a especificação De acordo com a especificação
Advertising_Interval_Max De acordo com a especificação De acordo com a especificação
Advertising_Type De acordo com a especificação De acordo com a especificação
Own_Address_Type De acordo com a especificação De acordo com a especificação
Own_Address De acordo com a especificação De acordo com a especificação
Direct_Address_Type De acordo com a especificação De acordo com a especificação
Direct_Address De acordo com a especificação De acordo com a especificação
Advertising_Channel_Map De acordo com a especificação De acordo com a especificação
Adverstising_Filter_Policy De acordo com a especificação De acordo com a especificação
Advertising_Instance 1 octeto Especifica a aplicabilidade dos parâmetros acima a uma instância
Tx_power 1 octeto Transmitir_Power
Unidade: em dBm (número inteiro assinado)
Intervalo (-70 a +20)

O parâmetro Own_Address pode ser um endereço configurado pelo host no momento da configuração dessa instância de várias divulgações. Isso permite ter um endereço particular resolvível no momento da transmissão do primeiro beacon. A publicidade em uma instância continuará, independentemente da conexão. A pilha BT do host pode emitir um comando para iniciar a divulgação em uma instância após a conexão.

Um evento "Command Complete" será gerado para esse comando, conforme especificado na especificação Bluetooth Core 4.1, conforme o comando acima. O controlador responderá com um código de falha (parâmetro inválido) se a instância de publicidade ou os parâmetros Tx_Power forem inválidos.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
Multi_advt_opcode 1 octeto 0x01 [Set_Advt_Param_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd

Referência de base: especificação Bluetooth Core 4.1, página 969 (LE Set Advertising Data Command)

Sub OCF: 0x02

Parâmetro do subcomando Tamanho Objetivo
Advertising_Data_Length De acordo com a especificação De acordo com a especificação
Advertising_Data De acordo com a especificação De acordo com a especificação
Advertising_Instance 1 octeto Especifica a aplicabilidade dos parâmetros acima a uma instância

Um evento "Command Complete" será gerado para esse comando, conforme especificado na especificação Bluetooth Core 4.1, conforme o comando acima. O controlador responderá com um código de falha se a instância de publicidade ou os parâmetros Tx_Power forem inválidos.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
Multi_advt_opcode 1 octeto 0x02 [Set_Advt_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd

Referência de base: especificação Bluetooth Core 4.1, página 970 (comando de dados de resposta de verificação LE Set)

Sub OCF: 0x03

Parâmetro do subcomando Tamanho Objetivo
Scan_Response_Data_Length De acordo com a especificação De acordo com a especificação
Scan_Response_Data De acordo com a especificação De acordo com a especificação
Advertising_Instance 1 octeto Especifica a aplicabilidade dos parâmetros acima a uma instância

Um evento "Command Complete" será gerado para esse comando, conforme especificado na especificação Bluetooth Core 4.1, conforme o comando acima. O controlador responderá com um código de falha (parâmetro inválido) se a instância de publicidade ou os parâmetros Tx_Power forem inválidos.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
Multi_advt_opcode 1 octeto 0x03 [Set_Scan_Resp_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd

Referência de base: especificação Bluetooth Core 4.1, página 963 (LE Set Random Address Command)

Sub OCF: 0x04

Parâmetro do subcomando Tamanho Objetivo
Endereço aleatório De acordo com a especificação De acordo com a especificação
Advertising_Instance 1 octeto Especifica a aplicabilidade dos parâmetros acima a uma instância

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
Multi_advt_opcode 1 octeto 0x04 [Set_Random_Addr_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd

Referência de base: especificação Bluetooth Core 4.1, página 971 (comando "Ativar anúncio" de LE Set nessa especificação principal)

OCF: 0x05

Parâmetro do subcomando Tamanho Objetivo
Advertising_Enable 1 octeto Um valor de 1 significa ativar. Qualquer outro valor significa "desativar".
Advertising_Instance 1 octeto Especifica a aplicabilidade dos parâmetros acima a uma instância. Instância 0 significa uma instância HCI padrão.

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
Multi_advt_opcode 1 octeto 0x05 [Set_Advt_Enable_Multi_Sub_Cmd]

Resolução descarregada do endereço privado

Esse recurso resolve um endereço particular no firmware ou hardware do controlador, o que oferece os seguintes benefícios:

  • Latência envolvida com o host na resolução de um endereço privado
  • Economizando energia ao não ativar o host

LE_Set_RPA_Tempo limite

OCF: 0x15C

Parâmetro de comando Tamanho Objetivo
LE_local_IRK 16 octetos O IRK do dispositivo local usado para gerar os endereços resolvíveis aleatórios.
tRPA_min 2 octetos O tempo limite mínimo da geração de RPA em segundos. O controlador precisa gerar novos endereços resolvíveis para qualquer evento de publicidade/verificação/conexão após esse tempo limite.
Intervalo válido: 300 a 1800
tRPA_max 2 octetos O tempo limite máximo da geração de RPA em segundos. O controlador precisa gerar novos endereços resolvíveis para qualquer evento de publicidade/verificação/conexão nesse tempo limite ou antes dele.
Intervalo válido: tRPA_min-1800
Parâmetro de retorno Tamanho Objetivo
Status 1 octeto O status do comando.

Valores de status HCI sugeridos:
0x00 Sucesso
0x01 Comando desconhecido (se não houver suporte)
0x12 Parâmetros de comando inválidos (se algum parâmetro estiver fora do intervalo fornecido)

LE_RPA_offload_Command

OCF: 0x155

Parâmetro de comando Tamanho Objetivo
RPA_offload_opcode 1 octeto 0x1: ativar recurso específico do cliente
0x2: adicionar IRK à lista
0x3: remover IRK da lista
0x4: limpar lista IRK
0x5: ler a entrada da lista IRK

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
Event_RPA_offload_opcode 1 octeto 0x1: ativar recurso específico do cliente
0x2: adicionar IRK à lista
0x3: remover IRK da lista
0x4: limpar lista IRK
0x5: ler a entrada da lista IRK

LE_RPA_offload: Enable_cust_specific_sub_Command

Sub OCF: 0x01

Parâmetro do subcomando Tamanho Objetivo
enable_customer_specific_feature_set 1 octeto 0x01: ativar recurso de RPA descarregado
0x00: desativar o recurso de RPA descarregado

O descarregamento de RPA precisa ser ativado pelo host, com base na capacidade do chip. Consulte o LE_Get_Vendor_Capabilities_Command. Cada chip pode ter um max_irk_list_sz variável no firmware.

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
Event_cust_specific_feature_opcode 1 octeto 0x01 [Ativar recurso específico do cliente]

LE_RPA_offload: Add_IRK_to_list_sub_Command

Sub OCF: 0x02

Parâmetro do subcomando Tamanho Objetivo
LE_IRK 16 octetos LE IRK (LSB de primeiro byte)
Address_Type 1 octeto 0: Endereço público
1: Endereço aleatório
LE_Device_Address 6 octetos Endereço público ou aleatório associado ao IRK (LSB de primeiro byte)

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
Event_cust_specific_feature_opcode 1 octeto 0x02 [Adicionar IRK à lista]
LE_IrkList_AvailableSpaces 1 octeto Entradas da lista de treinamentos presenciais disponíveis após a operação atual

LE_RPA_offload: Remove_IRK_to_list_sub_Command

Sub OCF: 0x03

Parâmetro do subcomando Tamanho Objetivo
Address_Type 1 octeto 0: Endereço público
1: Endereço aleatório
LE_Device_Address 6 octetos Endereço público ou aleatório associado ao IRK

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
Event_cust_specific_feature_opcode 1 octeto 0x03 [Remover IRK da lista]
LE_IrkList_AvailableSpaces 1 octeto Entradas da lista de treinamentos presenciais disponíveis após a operação atual

LE_RPA_offload: Clear_IRK_list_sub_Command

Sub OCF: 0x04

Parâmetro do subcomando Tamanho Objetivo
Nenhum

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
Event_cust_specific_feature_opcode 1 octeto 0x04 [Limpar lista IRK]
LE_IrkList_AvailableSpaces 1 octeto Entradas da lista de lugares reais disponíveis após a operação atual [max_irk_list_sz]

LE_RPA_offload: Read_IRK_list_sub_Command

Sub OCF: 0x05

Parâmetro do subcomando Tamanho Objetivo
LE_read_IRK_list_entry-index 1 octeto Índice da lista IRK [0, max_irk_list_sz-1]

Um evento "Comando completo" será gerado para este comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status do comando concluído
Event_cust_specific_feature_opcode 1 octeto 0x05 [Ler entrada da lista IRK]
LE_Read_IRK_List_entry 1 octeto Índice do IRK que o host quer ler (o tamanho máximo da lista IRK é 32)
LE_IRK 16 octetos Valor IRK
Address_Type 1 octeto 0: Endereço público
1: Endereço aleatório
LE_Device_Address 6 octetos Endereço público ou aleatório associado ao IRK
LE_Resolved_Private_Address 6 octetos Endereço particular resolvido atualmente resolvido deste IRK