Requisitos de HCI

A interface de controlador do host (HCI) é usada para interagir com um controlador Bluetooth.

Este documento apresenta uma lista de requisitos de HCI para Bluetooth (BT) e Bluetooth de baixa energia (BLE). O objetivo é que os fornecedores de pilha de BT do host e os fornecedores de controladores de BT se conformem a esses requisitos da plataforma para usar o conjunto de recursos descrito abaixo.

Este documento se refere à especificação do Bluetooth Core 5.2 como "especificação". A especificação Bluetooth Core 5.2 está disponível no site do Bluetooth SIG e em outros documentos adotados.

Visão geral do design geral

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 a variação de cenário e as migrações, uma filosofia de design que permite que os controladores BT exponham os recursos (além da especificação padrão do Bluetooth Core 5.2) é descrita neste documento. A pilha de BT do host pode usar esses recursos para determinar quais recursos ativar.

Oferecer suporte a padrões abertos

Um dos objetivos do Android é oferecer suporte a padrões abertos após a ratificação em uma especificação Bluetooth. Se um recurso descrito abaixo ficar disponível em métodos de HCI padrão em uma futura especificação do Bluetooth, vamos adotar essa abordagem como padrão.

Recursos específicos do fornecedor

Comando específico do fornecedor: LE_Get_Vendor_Capabilities_Command

Campo de comando de OpCode (OCF): 0x153

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

Um evento "Comando concluído" será gerado para esse comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status de conclusão do comando
max_advt_instances
(Uso suspenso)
1 octeto Número de instâncias de anúncios com suporte.

Reservados após a v0.98.
Esse parâmetro foi descontinuado na especificação de recurso v0.98 e mais recentes do Google em favor da publicidade estendida LE disponível na especificação de BT versão 5.0 e mais recentes.
offloaded_resolution_of_private-address
(Uso suspenso)
1 octeto Capacidade de chip BT da RPA.
Se tiver suporte de um chip, ele precisa ser ativado pelo host.
0 = Não é compatível
1 = É compatível

Reservada após a v0.98.
Esse parâmetro foi descontinuado na especificação de recurso v0.98 do Google e mais recentes em favor do recurso de privacidade disponível na especificação BT versão 4.2 e mais recentes.
total_scan_results_storage 2 octetos Armazenamento para resultados da verificação em bytes
max_irk_list_sz 1 octeto Número de entradas de IRK com suporte no firmware
filtering_support 1 octeto Suporte a filtragem no controlador
0 = Não compatí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 = Não compatível
1 = Compatível
version_supported 2 octetos Especifica a versão da especificação de recurso do Google com suporte
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 rastreados para fins de OnLost/OnFound
extended_scan_support 1 octeto Suporte a janela e intervalo de verificação estendidos
debug_logging_supported 1 octeto Suporte para registro de informações de depuração binária do controlador
LE_address_generation_offloading_support
(Uso suspenso)
1 octeto 0 = Não tem suporte
1 = Tem suporte

Reservados após a v0.98.
Esse parâmetro foi descontinuado na especificação de recurso v0.98 do Google e mais recentes em favor do recurso de privacidade disponível na especificação BT versão 4.2 e mais recentes.
A2DP_source_offload_capability_mask 4 octetos Máscaras de bits para tipos de codec compatíveis
Bit 0: SBC
Bit 1: AAC
Bit 2: APTX
Bit 3: APTX HD
Bit 4: LDAC
Os bits 5 a 31 estão reservados
bluetooth_quality_report_support 1 octeto Suporte a relatórios de eventos de qualidade do Bluetooth
0 = Não compatível
1 = Compatível
dynamic_audio_buffer_support 4 octetos Suporte a buffer de áudio dinâmico no controlador Bluetooth
Máscaras de bits para tipos de codec compatíveis
Bit 0: SBC
Bit 1: AAC
Bit 2: APTX
Bit 3: APTX HD
Bit 4: LDAC
Os bits 5 a 31 estão reservados
a2dp_offload_v2_support 1 octeto Suporte a comandos de descarregamento A2DP v2 no controlador Bluetooth (consulte Iniciar o descarregamento A2DP, Interromper o descarregamento A2DP).
0 = Não oferece suporte
1 = Oferece suporte

Resultados da verificação em lote

O objetivo do design é melhorar a forma como as notificações do evento de resposta de verificação do Bluetooth LE são enviadas ao host para economizar energia nele.

Ao reduzir a frequência com que o controlador notifica o processador do app host para verificar os resultados, o processador do app host pode permanecer ocioso/em suspensão 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 o recurso do chip para armazenamento de resultados de verificação.

Esse recurso se concentra no gerenciamento e na configuração da facilidade de armazenamento de resultados de verificação LE no controlador Bluetooth. O armazenamento é usado para agrupar temporariamente dados de anúncios e dados e metadados de verificação que são recebidos pelo controlador para entrega posterior ao host.

O firmware precisa oferecer suporte a dois tipos de lote, que podem ser ativados simultaneamente:

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

LE_Batch_Scan_Command

OCF: 0x156

Parâmetro de comando Tamanho Objetivo
Batch_Scan_opcode 1 octeto 0x1: ativar o recurso específico do cliente
0x2: definir parâmetros de armazenamento de 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 concluído" será gerado para esse comando. Ativar o recurso específico do cliente não inicia a verificação.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status de conclusão do comando
Batch_Scan_opcode 1 octeto 0x1: ativar o recurso específico do cliente
0x2: definir parâmetros de armazenamento de 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 o recurso específico do cliente

Sub OCF: 0x01

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

Um evento "Comando concluído" será gerado para esse comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status de conclusão do comando
Batch_Scan_opcode 1 octeto 0x1: ativar o recurso específico do cliente
0x2: definir parâmetros de armazenamento de 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: define o subcomando do parâmetro de armazenamento de verificação em lote

Sub OCF: 0x02

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

Um evento "Comando concluído" será gerado para esse comando.

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

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

Sub OCF: 0x03

Parâmetro de subcomando Tamanho Objetivo
Batch_Scan_Mode 1 octeto 0x00: a verificação em lote está desativada
0x01: o modo truncado está ativado
0x02: o modo completo está ativado
0x03: os modos truncado e completo estão ativados
Duty_cycle_scan_window 4 octetos Tempo de verificação da verificação em lote (número de slots)
Duty_cyle_scan_interval 4 octetos Intervalo de verificação em lote (número de slots)
own_address_type 1 octeto 0x00: endereço de dispositivo público
0x01: endereço de dispositivo aleatório
Batch_scan_Discard_Rule 1 octeto 0: descartar o anúncio mais antigo
1: descartar o anúncio com o RSSI mais fraco

Esse subcomando vai iniciar a verificação em lote, se ativado. Na verificação truncada, os resultados são armazenados em forma truncada, em que a chave exclusiva para o estilo truncado é {BD_ADDR, scan_interval}. Isso significa que apenas uma BD_ADDR will é gravada 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 está ativado, a verificação ativa é usada, e as respostas da verificação são gravadas. A chave exclusiva de estilo completo = {MAC, pacote de anúncios}, independente do intervalo de verificação. O registro a ser mantido para o modo "Full" é {BD_ADDR, Tx Power, RSSI, Timestamp, Ad packet, Scan Response}. No estilo "completo", o mesmo pacote de anúncios, quando visto várias vezes em diferentes intervalos de verificação, é registrado apenas uma vez. No entanto, no modo truncado, é a visibilidade de BA_ADDR em diferentes intervalos de verificação que é de interesse (uma vez por intervalo de verificação). O RSSI é o valor médio de todas as duplicações de um anúncio exclusivo em um intervalo de verificação.

Um evento "Comando concluído" será gerado para esse comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status de conclusão do comando
Batch_scan_opcode 1 octeto 0x03 [Set Batch Scan Parameters]

LE_Batch_Scan_Command: subcomando "Read batch scan results"

Sub OCF: 0x04

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

Um evento "Comando concluído" será gerado para esse comando. Quando o host emite esse comando, todos os resultados no controlador podem não caber em um evento de comando concluído. O host vai iterar a emissão desse comando até que os resultados correspondentes no evento "Command Complete" 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 concluído pode conter vários registros de apenas um tipo de dados (completo ou truncado).

As referências de tempo do controlador e do host não estão sincronizadas. A unidade do carimbo de data/hora é 50ms. O valor do carimbo de data/hora é baseado no momento em que o Read_Batch_Scan_Results_Sub_cmd é fornecido pelo host. Se o tempo de chegada de um comando for T_c no firmware, o tempo real em que o carimbo de data/hora foi registrado no firmware será T_fw. O tempo de 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 ocorreu.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status de conclusão do comando
Batch_scan_opcode 1 octeto 0x03 [Definir parâmetros de verificação em lote]
Batch_Scan_data_read 1 octeto Identifica o formato (truncado ou completo)
num_of_records 1 octeto Número de registros de Batch_Scan_data_read
format_of_data Variável Modo truncado:
Address[0]: 6 octetos
Address_Type[0]: 1 octeto
Tx_Pwr[0]: 1 octeto
RSSI[0] : 1 octeto
Timestamp[0]: 2 octetos
[vários registros (num_of_records) com o formato acima]

Modo completo:
Address[0]: 6 octetos
Address_Type[0]: 1 octeto
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
[vários registros com o formato acima (num_of_records)]

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 publicidade periódica.

LE_APCF_Command

OCF: 0x157

Parâmetro de comando Tamanho Objetivo
APCF_opcode 1 octeto 0x00: Ativação do APCF
0x01: Configura os parâmetros de filtragem do APCF
0x02: Endereço do transmissor do APCF
0x03: UUID do serviço do APCF
0x04: UUID da solicitação de serviço do APCF
0x05: Nome local do APCF
0x06: Dados do fabricante do APCF
0x07: Dados do serviço do APCF
0x08: Serviço de descoberta de transporte do APCF
0x09: Filtro de tipo de anúncio do APCF
0x10 a 0xAF: Reservado para uso futuro
0xB0 a 0xDF: Reservado para o fornecedor
0xE0 a 0xFE: Reservado para uso futuro
0xFF: Recursos estendidos de leitura do APCF

Um evento "Comando concluído" será gerado para esse comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status da devolução
APCF_opcode 1 octeto 0x00: Ativação do APCF
0x01: Configura os parâmetros de filtragem do APCF
0x02: Endereço do transmissor do APCF
0x03: UUID do serviço do APCF
0x04: UUID da solicitação de serviço do APCF
0x05: Nome local do APCF
0x06: Dados do fabricante do APCF
0x07: Dados do serviço do APCF
0x08: Serviço de descoberta de transporte do APCF
0x09: Filtro de tipo de anúncio do APCF
0x10 a 0xAF: Reservado para uso futuro
0xB0 a 0xDF: Reservado para o fornecedor
0xE0 a 0xFE: Reservado para uso futuro
0xFF: Recursos estendidos de leitura do APCF

LE_APCF_Command: Enable_sub_cmd

Sub OCF: 0x00

Parâmetro de subcomando Tamanho Objetivo
APCF_enable 1 octeto 0x01: ativar o recurso APCF
0x00: desativar o recurso APCF

Um evento "Comando concluído" será gerado para esse comando.

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

LE_APCF_Command: 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 no chip.

Sub OCF: 0x01

Parâmetro de subcomando Tamanho Objetivo
APCF_Action 1 octeto 0x00: adicionar
0x01: excluir
0x02: limpar
A exclusão limpa o filtro específico e as entradas de recurso associadas em outras tabelas.
Limpar vai limpar 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 Máscaras de bits para os recursos selecionados:
Bit 0: definido para ativar o filtro de endereço de transmissão
Bit 1: definido para ativar o filtro de mudança de dados do serviço
Bit 2: definido para ativar a verificação de UUID do serviço
Bit 3: definido para ativar a verificação de UUID da solicitação de serviço
Bit 4: definido para ativar a verificação de nome local
Bit 5: definido para ativar a verificação de dados do fabricante
Bit 6: definido para ativar a verificação de dados do serviço
Bit 7: definido para ativar a verificação do tipo de AD
APCF_List_Logic_Type 2 octetos Operação lógica para cada seleção de elemento (por posição de bit) especificada em APCF_Feature_Selection.
Válido apenas quando um recurso está ativado.
Valor da posição do bit:
0: OU
1: E
Se a lógica "E" for selecionada, um pacote ADV vai passar pelo filtro somente se ele contiver TODAS as entradas da lista.
Se a lógica "OR" for selecionada, um pacote ADV vai passar pelo filtro se ele contiver qualquer uma 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 para quatro campos de APCF_Feature_Selection (Bit 3 a 6).
rssi_high_thresh 1 octeto [em dBm]
O anunciante é considerado visto apenas se o sinal for maior que o limite máximo de RSSI. Caso contrário, o firmware precisa se comportar como se nunca tivesse visto.
delivery_mode 1 octeto 0x00 - immediate
0x01 - on_found
0x02 - batched
onfound_timeout 2 octetos Válido apenas se delivery_mode for on_found.
[em milissegundos]
Tempo para o firmware permanecer e coletar outras propagandas 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 por o tempo de onfound_timeout, ele vai coletar alguns anúncios e a contagem será verificada. Se a contagem exceder onfound_timeout_cnt, ela será informada OnFound imediatamente depois.
rssi_low_thresh 1 octeto Válido apenas se delivery_mode for on_found.
[em dBm]
O pacote do anunciante é considerado como não visto se o RSSI do pacote recebido não estiver acima do limite baixo do RSSI.
onlost_timeout 2 octetos Válido apenas se delivery_mode for on_found.
[em milissegundos]
Se um anúncio, depois de encontrado, não for visto continuamente durante o período lost_timeout, ele será informado como perdido.
num_of_tracking_entries 2 octetos Válido apenas se delivery_mode for on_found.
[count]
Número total de anunciantes a serem rastreados por filtro.

Os valores de RSSI precisam 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 transmissão) para gerenciar várias combinações de filtros.

Filtragem, agrupamento e geração de relatórios são conceitos relacionados. Cada anúncio e resposta de verificação relacionada terá que passar por todos os filtros, um após o outro. Assim, as ações resultantes (delivery_mode) estão intimamente ligadas à filtragem. Os modos de entrega são: report_immediately, batch e onFound. O valor OnLost está relacionado a OnFound no sentido de que ele vem depois de OnFound quando perdido.

Este fluxo de processamento mostra o modelo conceitual:

Quando um frame de anúncio (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 um lote do mesmo devido a uma ação de filtro diferente.

Os limites de nível de 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. Caso o modo de entrega seja definido como imediato ou em lote, o RSSI de um frame será considerado para processamento adicional do controlador. Aplicativos diferentes precisam de diferentes relatórios e comportamento de lote. 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 LE regular é emitida por outro app. Antes que uma verificação em lote seja emitida, o framework/app define os filtros apropriados. Mais tarde, quando o segundo app emitir uma verificação regular, o lote anterior vai continuar. No entanto, devido à verificação regular, é semelhante a adicionar conceitualmente um filtro nulo (com todos os filtros existentes) com o comando de verificação de LE. Os parâmetros do comando de verificação LE têm precedência quando estão ativos. Quando a verificação LE regular é desativada, o controlador volta para uma verificação em lote anterior, se houver.

O modo de entrega OnFound é baseado em filtros configurados. Uma combinação que aciona a ação de um filtro para ter sucesso é considerada a entidade a ser rastreada para onLost. O evento correspondente é o subevento de rastreamento de publicidade LE.

A transição OnFound/OnLost de um filtro (se ativada) vai ficar assim:

Um evento "Comando concluído" será gerado para esse comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status de conclusão do comando
APCF_opcode 1 octeto 0x01: APCF Set Filtering Parameters
APCF_Action 1 octeto APCF_Action do comando de eco de volta
APCF_AvailableSpaces 1 octeto Número de entradas disponíveis na tabela de filtros

LE_APCF_Command: broadcast_address_sub_cmd

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

Sub OCF: 0x02

Parâmetro de subcomando Tamanho Objetivo
APCF_Action 1 octeto 0x00: adicionar
0x01: excluir
0x02: limpar
A opção "Excluir" vai excluir o endereço de transmissão especificado no filtro especificado.
"Limpar" vai limpar todos os endereços de emissor no filtro especificado.
APCF_Filter_Index 1 octeto Índice do filtro (0, max_filter-1)
APCF_Broadcaster_Address 6 octetos Endereço de dispositivo de 6 bytes para adicionar ou excluir da lista de endereços do emissor
APCF_Application_Address_type 1 octeto 0x00: público
0x01: aleatório
0x02: não disponível (ignore o tipo de endereço)
Para filtrar relatórios de publicidade com tipos de endereço de identidade (0x02, 0x03). Para receber 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 concluído" será gerado para esse comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status de conclusão do comando
APCF_opcode 1 octeto 0x02: Endereço do transmissor do APCF
APCF_Action 1 octeto APCF_Action do comando de eco de volta
APCF_AvailableSpaces 1 octeto Número de entradas sem custo financeiro ainda disponíveis na tabela de endereços de transmissão

LE_APCF_Command: service_uuid_sub_cmd

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

Sub OCF: 0x03

Parâmetro de subcomando Tamanho Objetivo
APCF_Action 1 octeto 0x00: adicionar
0x01: excluir
0x02: limpar
A exclusão vai excluir o endereço UUID do serviço especificado no filtro.
"Limpar" vai limpar 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 do serviço (16, 32 ou 128 bits) para adicionar ou excluir da lista.
APCF_UUID_MASK 2,4,16 octetos A máscara de UUID do serviço (16, 32 ou 128 bits) a ser adicionada à lista. Ele precisa ter o mesmo comprimento de APCF_UUID..

Um evento "Comando concluído" será gerado para esse comando.

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

LE_APCF_Command: solicitation_uuid_sub_cmd

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

Sub OCF: 0x04

Parâmetro de subcomando Tamanho Objetivo
APCF_Action 1 octeto 0x00: adicionar
0x01: excluir
0x02: limpar
A exclusão vai excluir o endereço UUID da solicitação no filtro especificado.
"Limpar" vai limpar 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 da 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 de UUID da solicitação (16, 32 ou 128 bits) a ser adicionada à lista. Ele precisa ter o mesmo comprimento que o APCF_UUID.

Um evento "Comando concluído" será gerado para esse comando.

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

LE_APCF_Command: local_name_sub_cmd

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

Sub OCF: 0x05

Parâmetro de subcomando Tamanho Objetivo
APCF_Action 1 octeto 0x00: adicionar
0x01: excluir
0x02: limpar
A exclusão vai excluir a string de nome local especificada no filtro especificado.
"Clear" 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 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 é "Clear" (0x2).

Um evento "Comando concluído" será gerado para esse comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status de conclusão do comando
APCF_opcode 1 octeto 0x05 - Nome local do APCF
APCF_Action 1 octeto APCF_Action do comando de eco de volta
APCF_AvailableSpaces 1 octeto Número de entradas sem custo financeiro ainda disponíveis na tabela de nomes locais

LE_APCF_Command: 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 de subcomando Tamanho Objetivo
APCF_Action 1 octeto 0x00: adicionar
0x01: excluir
0x02: limpar
A exclusão vai excluir a string de dados do fabricante especificada no filtro especificado.
"Clear" 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 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 é "Clear" (0x2).
APCF_ManData_Mask Tamanho variável A máscara de dados de fabricação a ser adicionada à lista. Ele precisa ter o mesmo comprimento que APCF_LocName_or_ManData_or_SerData.

Um evento "Comando concluído" será gerado para esse comando.

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

LE_APCF_Command: 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 de subcomando Tamanho Objetivo
APCF_Action 1 octeto 0x00: adicionar
0x01: excluir
0x02: limpar
A exclusão vai excluir a string de dados de serviço especificada no filtro especificado.
"Limpar" vai limpar 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 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 é "Clear" (0x2).
APCF_LocName_Mandata_or_SerData_Mask Tamanho 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 concluído" será gerado para esse comando.

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

LE_APCF_Command: ad_type_sub_cmd

Esse subcomando é usado para adicionar ou excluir um tipo de anúncio ou limpar uma lista de tipos de anúncios para a filtragem no chip. Use read_extended_features_sub_cmd para verificar se esse comando tem suporte ou não.
Quando APCF_AD_DATA_Length é 0, o filtro APCF_AD_TYPE não compara os dados e a máscara de dados do AD. Se o comprimento dos dados do pacote ADV recebido exceder AD_DATA_LENGTH, compare apenas os primeiros AD_DATA_LENGTH bytes dos dados de AD e ignore os dados restantes.

Sub OCF: 0x09

Parâmetro de subcomando Tamanho Objetivo
APCF_Action 1 octeto 0x00: adicionar
0x01: excluir
0x02: limpar
A exclusão exclui o tipo de AD especificado no filtro especificado.
"Limpar" vai limpar 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 da lista. Ignorar quando APCF_Action for 0x02 (Limpar)
APCF_AD_DATA_Length 1 octeto 0x00: significa não filtrar o conteúdo dos dados
Ignore quando APCF_Action for 0x02 (Limpar).
APCF_AD_DATA Tamanho variável De tamanho variável, com base em APCF_AD_DATA_Length
Ignore quando APCF_Action for 0x02 (Limpar)
APCF_AD_DATA_MASK Tamanho variável Tamanho variável, com base em APCF_AD_DATA_Length
Ignore quando APCF_Action for 0x02 (Clear)
Deve ter o mesmo comprimento que APCF_AD_DATA.

Um evento "Comando concluído" será gerado para esse comando.

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

LE_APCF_Command: read_extended_features_sub_cmd

Esse subcomando é usado para ler recursos estendidos do APCF.

Sub OCF: 0xFF

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

Um evento "Comando concluído" será gerado para esse comando.

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

Máscaras de bits para recursos estendidos com suporte:

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

Valor do bit

  • 0 = não tem suporte
  • 1 = Compatível

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

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

  • Pilha BT: informar o estado macrooperacional atual do controlador
  • Firmware: como informar atividade agregada e informações de energia

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

  • Inativo: [verificação de página, anúncio de LE, verificação de consulta, verificação de LE]
  • Scan: [paging/inquiry/trying to connect]
  • Ativo: [vínculo de ACL ativado, vínculo de SCO em andamento, modo de detecção]

As atividades que o controlador monitora ao longo do ciclo de vida são o tempo de transmissão, o tempo de recepção, o tempo de inatividade e a energia total consumida. Eles são limpos quando são lidos do host.

LE_Get_Controller_Activity_Energy_Info

Este é um comando específico do fornecedor.

OCF: 0x159

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

Um evento "Comando concluído" será gerado para esse comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status de conclusão do comando
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 modo inativo (estados de baixa energia sem modo de suspensão)
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 estendidos do LE

Esse comando pode ser usado para ativar uma janela de verificação e um intervalo maiores no controlador. De acordo com a especificação do BT Core 5.2, uma janela de verificação e um intervalo têm um limite máximo de 10,24 segundos, o que dificulta intervalos de verificação além de 10,24 segundos para apps.

Referência de base: especificação do 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 0x00: verificação passiva. Nenhum pacote SCAN_REQ será enviado (padrão).
0x01: verificação ativa. Pacotes SCAN_REQ podem ser enviados.
LE_Ex_Scan_Interval 4 octetos Definido como o intervalo de tempo entre o início da última verificação LE pelo controlador e o início da verificação LE seguinte.
Faixa: 0x0004 a 0x00FFFFFF
Padrão: 0x0010 (10 ms)
Tempo = N * 0,625 ms
Faixa de tempo: 2,5 ms a 10.442,25 segundos
LE_Ex_Scan_Window 4 octetos A duração da verificação 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 de dispositivo público (padrão)
0x01: endereço de dispositivo aleatório
LE_Ex_Scan_Filter_Policy 0x00: aceita todos os pacotes de publicidade (padrão). Os pacotes de publicidade direcionada que não forem endereçados para este dispositivo serão ignorados.
0x01: ignora pacotes de publicidade de dispositivos que não estão na lista de permissões. Os pacotes de publicidade direcionada que não forem endereçados para este dispositivo serão ignorados.

Um evento "Comando concluído" será gerado para esse comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status de conclusão do comando

Comando "get controller debug info"

O objetivo desse elemento é 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 no 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 pelo evento (subevento de informações de depuração do controlador) ou de forma autônoma, quando desejado pelo controlador. Exemplos de uso podem ser para informar informações de 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 concluído" será gerado para esse comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status de conclusão do comando

Suporte a descarga de hardware A2DP

O recurso de transferência de A2DP oferece suporte ao processo de codificação de áudio A2DP para um processador de áudio anexado ao controlador de BT. O stream de dados de áudio codificado é transmitido diretamente do processador de áudio para o controlador de BT sem a participação do host de BT. O host de BT ainda é responsável pela configuração e pelo controle da sessão A2DP. Duas versões dos comandos estão disponíveis. Os comandos legados com Sub OCF 0x01-0x02 só oferecem suporte a codecs de código aberto. As versões com Sub-OCF 0x03-0x04 não dependem do codec configurado.

OCF: 0x15D

Iniciar o descarregamento A2DP (legado)

Sub OCF: 0x01

Use esse comando para configurar o processo de transferência de 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 o flush.
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 ativado.

Sampling_Frequency 4 octetos 0x01 - 44.100 Hz
0x02 - 48.000 Hz
0x04 - 88.200 Hz
0x08 - 96.000 Hz
Bits_Per_Sample 1 octeto 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: o bitrate de áudio não está especificado / não utilizado.
0x00000001 a 0x00FFFFFF: taxa de bits de áudio codificada em bits por segundo.
0x01000000 - 0xFFFFFFFF: reservado.
Connection_Handle 2 octetos O identificador de conexão da conexão A2DP está sendo configurado
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 da MTU L2CAP que contém pacotes de áudio codificados
Codec_Information 32 octetos Informações específicas do codec.

Codec SBC:

Consulte os elementos de informações específicos do codec SBC no A2DP v1.3.
Octeto 0: comprimento do bloco | Subbandas | Método de alocação
Octeto 1: valor mínimo de bitpool
Octeto 2: valor máximo de bitpool
Octeto 3: frequência de amostragem | Modo de canal
Octetos 4 a 31: reservados

Codec AAC:

Consulte os elementos de informações específicos do codec AAC no A2DP v1.3
Oitoteto 0: tipo de objeto
Oitoteto 1; b7: VBR
Oitoteto 2-31: reservado

Codec LDAC:

Octeto 0 a 3: ID do fornecedor
0x0000012D

Octeto 4-5: ID do codec
0x00AA - LDAC
Todos os outros valores estão reservados

Octeto 6: índice de taxa de bits:
0x00 - alta
0x01 - média
0x02 - baixa
0x03 a 0x7E - reservado
0x7F - taxa de bits adaptativa (ABR)
0x80 a 0xFF - reservado

Octeto 7: modo de canal LDAC
0x01: estéreo
0x02: duplo
0x04: mono
Os outros são reservados

Octeto 8 a 31: reservado

Todos os outros codecs:

Octeto 0 a 31: reservado

Um evento "Comando concluído" será gerado para esse comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status de conclusão do comando
Sub_Opcode 1 octeto 0x01: iniciar o descarregamento A2DP

Iniciar o descarregamento A2DP

Sub OCF: 0x03

Use esse comando para configurar o processo de transferência de 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 streaming A2DP
Data_Path_Direction 1 octeto 0x00: saída (fonte/fusão do AVDTP)
0x01: entrada (sink/divisão do AVDTP)
Peer_MTU 2 octetos Tamanho máximo de pacotes L2CAP, negociado com o peer.
CP_Enable_SCMS_T 1 octeto 0x00: desativa o cabeçalho de proteção de conteúdo SCMS-T.
0x01: ativa o 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), ele define o valor do cabeçalho que precede o conteúdo de áudio (consulte A2DP, seção 3.2.1-2) conforme definido pelos números atribuídos do 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 Comprimento dos parâmetros específicos do fornecedor, no intervalo de 0 a 128.
O valor 0 é usado quando nenhum parâmetro adicional é fornecido.
Vendor_Specific_Parameters 0 a 128 octetos Parâmetros específicos do fornecedor fornecidos pelo HAL de áudio Bluetooth, CodecParameters.vendorSpecificParameters[].

Um evento "Comando concluído" será gerado para esse comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status de conclusão do comando
Sub_Opcode 1 octeto 0x03: iniciar o descarregamento A2DP

Interromper o descarregamento A2DP (legado)

Sub OCF: 0x02

Esse comando é usado para interromper o fluxo de transferência de dados 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 concluído" será gerado para esse comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status de conclusão do comando
Sub_Opcode 1 octeto 0x02: interromper o descarregamento A2DP

Interromper o descarregamento A2DP

Sub OCF: 0x04

Esse comando é usado para interromper o fluxo de transferência 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 streaming A2DP
Data_Path_Direction 1 octeto 0x00: saída (fonte/fusão do AVDTP)
0x01: entrada (sink/divisão do AVDTP)

Um evento "Comando concluído" será gerado para esse comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status de conclusão do comando
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 do Bluetooth inicia o mecanismo no controlador Bluetooth para informar eventos de qualidade do Bluetooth ao host. É possível ativar quatro opções:

  • Modo de monitoramento de qualidade: o controlador envia periodicamente um subevento de BQR relacionado à qualidade do link para o host.
  • LSTO aproximado: se nenhum pacote for recebido do dispositivo BT conectado por mais da metade do valor do tempo limite de supervisão de link (LSTO, na sigla em inglês), o controlador vai informar um evento de LSTO aproximado ao host.
  • Áudio A2DP irregular: quando o controlador detecta fatores que causam áudio irregular, ele informa um evento de áudio A2DP irregular ao host.
  • (e)SCO Voice Choppy: quando o controlador detecta fatores que causam voz irregular, ele informa um evento (e)SCO Voice Choppy ao host.
  • Inflamação raiz: esse evento é enviado pelo controlador para a pilha quando o HAL ou o controlador encontra um erro fatal e precisa reiniciar o Bluetooth.
  • Rastreamento de mensagem LMP/LL: o controlador envia a verificação de mensagens LMP/LL com o dispositivo remoto para o host.
  • Rastreamento de programação de vários perfis/Coex do Bluetooth: o controlador envia ao host as informações de programação sobre o processamento de vários perfis de Bluetooth e a coexistência sem fio na banda de 2,4 Ghz.
  • Mecanismo de informações de depuração do controlador: quando ativado, o controlador pode informar de forma autônoma informações de registro de depuração pelo subevento de informações de depuração do controlador para o host.
  • LE Audio Choppy: quando o controlador detecta fatores que causam áudio irregular, ele informa um evento LE Audio Choppy ao host.
  • Modo de estatísticas avançadas de RF: o controlador informa as informações relacionadas às estatísticas de RF ao host, oferecendo suporte a dois casos de uso de relatórios:
    • Relatórios periódicos
    • Acionadores de evento (início/parada de transmissão e acionador de evento de qualidade do link).
  • BQR_Report_Action do comando de 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 todos.

0x00: adicionar
0x01: excluir
0x02: limpar
0x03: consulta única

A exclusão vai limpar os relatórios de eventos de qualidade específicos.
Limpar vai limpar todos os relatórios de eventos de qualidade. O parâmetro BQR_Quality_Event_Mask pode ser ignorado.

BQR_Quality_Event_Mask 4 octetos Máscaras de bits para o relatório de eventos de qualidade selecionado.

Bit 0: definido para ativar o modo de monitoramento de qualidade.
Bit 1: definido para ativar o evento Approaching LSTO (para ACL/(e)SCO/ISO).
Bit 2: definido para ativar o evento A2DP Audio Choppy.
Bit 3: definido para ativar o evento (e)SCO Voice Choppy.
Bit 4: definido para ativar o evento de inflamação da raiz.
Bit 5: definido para ativar o modo de monitoramento de energia.
Bit 6: definido para ativar o evento de áudio LE irregular.
Bit 7: definido para ativar o evento de falha de conexão.
Bit 8: definido para ativar o gatilho de evento do modo "Advance RF Stats".
Bit 9: definido para ativar o relatório periódico de estatísticas avançadas de RF.
Bit 10 a 14: reservado.
Bit 15: definido para ativar eventos de qualidade específicos do fornecedor.
Bit 16: definido para ativar o rastreamento de mensagens LMP/LL.
Bit 17: definido para ativar o rastreamento de programação de Bluetooth Multi-link/Coex.
Bit 18: definido para ativar o mecanismo de informações de depuração do controlador.
Bit 19 a 30: reservado.
Bit 31: definido para ativar o rastreamento específico do fornecedor.

BQR_Minimum_Report_Interval 2 octetos Defina o intervalo mínimo de tempo dos relatórios de eventos de qualidade para os eventos de qualidade selecionados. O firmware do controlador não deve informar o próximo evento no 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 a 65.535 ms

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

Bit 0 a 31: reservado.

BQR_Vendor_Specific_Trace_Mask 4 octetos Máscaras de bits para os relatórios de rastreamento específicos do fornecedor selecionado.
Esse parâmetro é válido apenas quando o bit 31 de BQR_Quality_Event_Mask está definido.

Bit 0 a 31: reservado.

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

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

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

Um evento "Comando concluído" será gerado para esse comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status de conclusão do comando
Current_Quality_Event_Mask 4 octetos Indica a configuração atual da máscara de bits.
Bit 0: o modo de monitoramento de qualidade está ativado.
Bit 1: o relatório de eventos de aproximação da LSTO está ativado.
Bit 2: o relatório de eventos de áudio irregular do A2DP está ativado.
Bit 3: o relatório de eventos de voz Choppy (e)SCO está ativado.
Bit 4: o relatório de eventos de inflamação da raiz está ativado.
Bit 5: o modo de monitoramento de energia está ativado.
Bit 6: o relatório de eventos de áudio LE irregular está ativado.
Bit 7: evento de falha de conexão.
Bit 8: definido para ativar o gatilho de evento do modo "Advance RF Stats".
Bit 9: definido para ativar o relatório periódico de estatísticas avançadas de RF.
Bit 10 a 14: reservado.
Bit 15: os relatórios de eventos de qualidade específicos do fornecedor estão ativados.
Bit 16: o rastreamento de mensagens LMP/LL está ativado.
Bit 17: o rastreamento de programação de Bluetooth Multi-link/Coex está ativado.
Bit 18: o mecanismo de informações de depuração do controlador está ativado.
Bit 19 a 30: reservado.
Bit 31: o rastreamento específico do fornecedor está ativado.
Current_Vendor_Specific_Quality_Event_Mask 4 octetos Indica a configuração atual da máscara de bits.
Current_Vendor_Specific_Trace_Mask 4 octetos Indica a configuração atual da máscara de bits.
BQR_Report_interval 4 octetos Indica a configuração atual da máscara de bits.
Current_Vendor_Specific_Trace_Mask 4 octetos A configuração de BQR_Report_interval. Ele precisa ser o valor mínimo entre BQR_Minimum_Report_Interval * Report_interval_multiple ou o intervalo de suporte máximo do controlador.

Comando de buffer de áudio dinâmico

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

OCF: 0x15F

Receber o recurso de tempo de buffer de áudio

Sub OCF: 0x01

Use este comando para receber 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 concluído" será gerado para esse comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status de conclusão do comando
Dynamic_Audio_Buffer_opcode 1 octeto 0x01: receber o tempo de buffer de áudio
Audio_Codec_Type_Supported 4 octetos Máscaras de bits para os tipos de codec compatíveis
Bit 0: SBC
Bit 1: AAC
Bit 2: APTX
Bit 3: APTX HD
Bit 4: LDAC
Os bits 5 a 31 estã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 de bit 0 não tiver suporte.
Unidade: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 2 octetos Tempo máximo de buffer do tipo de codec Bit 0 especificado em Audio_Codec_Type_Supported.
Esse valor será 0 se o tipo de codec de bit 0 não tiver suporte.
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 de bit 0 não tiver suporte.
Unidade: ms
Audio_Codec_Buffer_Default_Time_For_Bit_1 2 octetos Tempo de buffer padrão do tipo de codec de bit 1 especificado em Audio_Codec_Type_Supported.
Esse valor será 0 se o tipo de codec de 1 bit 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 de bit 1 especificado em Audio_Codec_Type_Supported.
Esse valor será 0 se o tipo de codec de 1 bit 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 de bit 1 especificado em Audio_Codec_Type_Supported.
Esse valor será 0 se o tipo de codec de 1 bit 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 de 31 bits especificado em Audio_Codec_Type_Supported.
Esse valor será 0 se o tipo de codec de 31 bits não tiver suporte.
Unidade: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 2 octetos Tempo máximo de buffer do tipo de codec de 31 bits especificado em Audio_Codec_Type_Supported.
Esse valor será 0 se o tipo de codec de 31 bits não tiver suporte.
Unidade: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 2 octetos Tempo mínimo de buffer do tipo de codec de 31 bits especificado em Audio_Codec_Type_Supported.
Esse valor será 0 se o tipo de codec de 31 bits não tiver suporte.
Unidade: ms

Definir o 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 usado atualmente.
Unidade: ms

Um evento "Comando concluído" será gerado para esse comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status de conclusão do comando
Dynamic_Audio_Buffer_opcode 1 octeto 0x02: define o tempo de buffer de áudio.
Audio_Codec_Buffer_Time 2 octetos Tempo de buffer de áudio atual no controlador Bluetooth.
Unidade: ms

Evento de HCI (específico do fornecedor)

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

Parâmetro de evento Tamanho Objetivo
HCI_vendor_specific_event_code 1 octeto 0xFF
sub_event_code 1 octeto O código de um subevento tem o tamanho de 1 octeto, o byte imediatamente após o parâmetro "Parameter Length" no pacote de eventos 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 publicidade múltipla do LE

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

Código do subevento = 0x55

Parâmetro de 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 fez com que a instância advt fosse desativada (0xFFFF se inválida).

Subevento de acompanhamento de anúncios de LE

Esse 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) não presentes
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 controle

Esse evento é usado por um controlador para fornecer informações de depuração binária 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 de 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 Depurar dados de cur_payload_sz

Subevento do relatório de qualidade do Bluetooth

Esse evento indica uma das seguintes situações: um evento de qualidade do Bluetooth ocorreu, o controlador fez upload do rastro de mensagem LMP/LL e do rastro de programação multilink/Coex do Bluetooth 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: Aproximação da LSTO.
0x03: áudio A2DP entrecortado.
0x04: (e)SCO Voice Choppy.
0x05 ~ 0x06: reservado.
0x07: áudio LE irregular.
0x08: falha na conexão.
0x09 ~ 0xFF: reservado.
Packet_Types 1 octeto 0x01: ID
0x02: NULL
0x03: POLL
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: Reserved
0x51: ISO packet
0x52 ~ 0xFF: Reserved
Connection_Handle 2 octetos Identificador de conexão ACL/(e)SCO/ISO.
Connection_Role 1 octeto Papel de execução para a conexão.
0x00: central
0x01: periférico
0x02 ~ 0xFF: reservado.
TX_Power_Level 1 octeto Nível de transmissão atual para o Connection_Handle especificado.

Esse valor precisa ser o mesmo que o controlador responde ao comando HCI HCI_Read_Transmit_Power_Level.

RSSI 1 octeto [em dBm]

Valor de indicação de intensidade do sinal recebido (RSSI) para o Connection_Handle especificado.
Esse valor precisa ser um valor absoluto de intensidade do sinal do receptor.
Intervalo: -127 a +20

SNR 1 octeto [em dB]

Valor da relação sinal-ruído (SNR) para o Connection_Handle especificado.
O controlador deve 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 usados no AFH_channel_map.
0x4F ~ 0xFF: reservado.
AFH_Select_Unideal_Channel_Count 1 octeto Indica o número de canais que têm interferência e qualidade ruim, mas ainda estão selecionados para AFH.
O número mínimo de canais permitidos pela especificação do Bluetooth é 20. Portanto, mesmo que todos os 79 canais tenham interferência e tenham má qualidade, o controlador ainda precisa escolher pelo menos 20 canais para a AFH.
LSTO 2 octetos A configuração atual do tempo limite de supervisão de vinculação.
Tempo = N * 0,625 ms
Período: de 0,625 ms a 40,9 s
Connection_Piconet_Clock 4 octetos Relógio da piconet para o Connection_Handle especificado.
Esse valor precisa ser o mesmo que o controlador responde ao comando HCI_Read_Clock com o parâmetro "Which_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 o envio de relatório ao host.
No_RX_Count 4 octetos Nenhuma contagem de RX desde o último evento.
A contagem aumenta quando nenhum pacote é recebido no horário programado ou quando o pacote recebido está corrompido.
Essa contagem será redefinida após o envio de relatório ao host.
NAK_Count 4 octetos Contagem de NAK (confirmação negativa) desde o último evento.
Essa contagem será redefinida após o envio de relatório ao host.
Last_TX_ACK_Timestamp 4 octetos Carimbo de data/hora do último TX ACK. Ele é baseado no relógio Bluetooth do 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 interrompido (STOP) desde o último evento.
Essa contagem será redefinida após o envio de relatório ao host.
Last_Flow_On_Timestamp 4 octetos Carimbo de data/hora do último Flow-on (GO). Ele é baseado no relógio Bluetooth do piconet central (CLK).
Unidade: N * 0,3125 ms (1 relógio Bluetooth)
Buffer_Overflow_Bytes 4 octetos [in Byte]

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

Buffer_Underflow_Bytes 4 octetos [em Byte]

Contagem de buffer underflow desde o último evento.
Essa contagem será redefinida após o envio para o host.

bdaddr 6 octetos Endereço do dispositivo remoto
cal_failed_item_count 1 octeto Contagem 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 um aviso.
Essa contagem é redefinida após o envio de relatórios para o 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 o envio de relatórios para o 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 do CIS.
Essa contagem é redefinida após o envio de relatórios para o 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 CRC desde o último evento.
Essa contagem é redefinida após o envio de relatórios para o host.
RX_Duplicate_Packets 4 octetos O número de pacotes duplicados (retransmissões) recebidos desde o último evento.
Essa contagem é redefinida após o envio de relatórios para o host.
RX_Unreceived_Packets 4 octetos O número de pacotes não recebidos é o mesmo do parâmetro do comando LE READ ISO Link Quality (consulte a versão 5.4 da especificação principal do Bluetooth). Os streams associados são CIS e BIS.
Quando esse valor é incrementado, a camada de link não recebe um payload específico pelo ponto de limpeza (em um CIS) ou no final do evento ao qual está associado (em um BIS). Consulte a especificação principal do Bluetooth, versão 5.4, volume 6, parte B, seção 4.4.6.6.
Coex_Info_Mask 2 octetos Bit 0: CoexInvolvement. É definido para indicar que atividades de coex são suspeitas de estar envolvidas quando este relatório é gerado (por exemplo, cortes de A2DP e Approaching LSTO).
Bit 1: rádio 2G do WL ativo. É definido para indicar que o rádio 2G da WLAN está ativo.
Bit 2: WL 2G conectado: definido para indicar que o rádio WLAN 2G está ativo e conectado.
Bit 3: rádio WL 5G/6G ativo. Define se o rádio WLAN 5G/6G está ativo.
Bits 4 a 15: reservado
Parâmetro específico do fornecedor (parâmetro comprimento total - TBD) * 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 o HAL do Bluetooth ou o controlador encontrou um erro fatal e precisa da pilha do Bluetooth para registrar essa situação e reiniciar. O controlador precisa enviar um Root_Inflammation_Event para a pilha de Bluetooth antes de enviar o primeiro fragmento dos eventos de informações de depuração em qualquer caso.

O parâmetro Error_Code contém um código de erro informado pelo HAL/controlador, 0 se for um erro específico do fornecedor do chipset. O Vendor_Specific_Error_Code contém um código de erro específico do fornecedor do chipset do HAL/controlador. 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 está incluído.
0x01 ~ 0xFF: ocorreu uma falha no controlador. Consulte a especificação Bluetooth [Vol 2] Parte D, Códigos de erro para conferir 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 (Parameter Total Length - 4) * octets 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: rastreamento de mensagem LMP/LL.
0x12: Rastreamento de programação de Bluetooth Multi-link/Coex.
0x13: despejo de dados de informações de depuração do controlador.
0x14 ~ 0xFF: reservado.
Connection_Handle 2 octetos Alça de conexão.
Parâmetro específico do fornecedor (Parameter Total Length - 4) * octets Formato específico do fornecedor do rastreamento de mensagens LMP, rastreamento de programação Bluetooth Multi-link/Coex e despejo de dados de informações de depuração do controlador.

Suporte a vários anunciantes

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

  • Compatibilidade com vários anúncios (max_advt_instances)
  • Diferentes potências de transmissão para permitir um alcance variável
  • Conteúdo publicitário diferente
  • Uma resposta individual para cada anunciante
  • Privacidade (não rastreável) para cada anunciante
  • Conectável

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

LE_Multi_Advt_Command

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 concluído" será gerado para esse comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status de conclusão do comando
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 do núcleo do Bluetooth 4.1, página 964 (comando de parâmetro de publicidade de configuração LE)

Sub OCF: 0x01

Parâmetro de subcomando Tamanho Objetivo
Advertising_Interval_Min Por especificação Por especificação
Advertising_Interval_Max Por especificação Por especificação
Advertising_Type Por especificação Por especificação
Own_Address_Type Por especificação Por especificação
Own_Address Por especificação Por especificação
Direct_Address_Type Por especificação Por especificação
Direct_Address Por especificação Por especificação
Advertising_Channel_Map Por especificação Por especificação
Adverstising_Filter_Policy Por especificação Por especificação
Advertising_Instance 1 octeto Especifica a aplicabilidade dos parâmetros acima a uma instância
Tx_power 1 octeto Transmit_Power
Unidade: em dBm (número inteiro assinado)
Faixa (-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 anúncios múltiplos. Isso permite ter um endereço particular solucionável no momento da transmissão do primeiro farol. A publicidade em uma instância vai continuar independentemente da conexão. A pilha BT do host pode emitir um comando para iniciar a publicidade em uma instância após a conexão.

Um evento de comando concluído será gerado para esse comando, conforme especificado na especificação do Bluetooth Core 4.1, conforme o comando acima. O controlador vai 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 de conclusão do comando
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 do núcleo Bluetooth 4.1, página 969 (comando de dados de publicidade de configuração LE)

Sub OCF: 0x02

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

Um evento de comando concluído será gerado para esse comando, conforme especificado na especificação do Bluetooth Core 4.1, conforme o comando acima. O controlador vai 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 de conclusão do comando
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 do núcleo do Bluetooth 4.1, página 970 (comando de dados de resposta de configuração de busca LE)

Sub OCF: 0x03

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

Um evento de comando concluído será gerado para esse comando, conforme especificado na especificação do Bluetooth Core 4.1, conforme o comando acima. O controlador vai 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 de conclusão do comando
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 do núcleo Bluetooth 4.1, página 963 (comando LE Set Random Address)

Sub OCF: 0x04

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

Um evento "Comando concluído" será gerado para esse comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status de conclusão do comando
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 de Bluetooth Core 4.1, página 971 (comando LE Set "Advertise Enable" na especificação principal)

OCF: 0x05

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

Um evento "Comando concluído" será gerado para esse comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status de conclusão do comando
Multi_advt_opcode 1 octeto 0x05 [Set_Advt_Enable_Multi_Sub_Cmd]

Resolução de endereço particular desativada

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 particular
  • Economizar energia evitando ativar o host

LE_Set_RPA_Timeout

OCF: 0x15C

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

Valores de status do 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 o recurso específico do cliente
0x2: adicionar IRK à lista
0x3: remover IRK da lista
0x4: limpar a lista de IRK
0x5: ler a entrada da lista de IRK

Um evento "Comando concluído" será gerado para esse comando.

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

LE_RPA_offload: Enable_cust_specific_sub_Command

Sub OCF: 0x01

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

O offload de RPA precisa ser ativado pelo host com base na capacidade do chip. Consulte a LE_Get_Vendor_Capabilities_Command. Cada chip pode ter uma max_irk_list_sz variável no firmware.

Um evento "Comando concluído" será gerado para esse comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status de conclusão do comando
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 de subcomando Tamanho Objetivo
LE_IRK 16 octetos IRK de LE (LSB do 1º 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 (1º byte LSB)

Um evento "Comando concluído" será gerado para esse comando.

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

LE_RPA_offload: Remove_IRK_to_list_sub_Command

Sub OCF: 0x03

Parâmetro de 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 concluído" será gerado para esse comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status de conclusão do comando
Event_cust_specific_feature_opcode 1 octeto 0x03 [Remove IRK from the list]
LE_IrkList_AvailableSpaces 1 octeto Entradas de lista de IRL disponíveis após a operação atual

LE_RPA_offload: Clear_IRK_list_sub_Command

Sub OCF: 0x04

Parâmetro de subcomando Tamanho Objetivo
Nenhum

Um evento "Comando concluído" será gerado para esse comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status de conclusão do comando
Event_cust_specific_feature_opcode 1 octeto 0x04 [Clear IRK List]
LE_IrkList_AvailableSpaces 1 octeto As entradas disponíveis na lista de IRL após a operação atual [max_irk_list_sz]

LE_RPA_offload: Read_IRK_list_sub_Command

Sub OCF: 0x05

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

Um evento "Comando concluído" será gerado para esse comando.

Parâmetro de retorno Tamanho Objetivo
Status 1 octeto Status de conclusão do comando
Event_cust_specific_feature_opcode 1 octeto 0x05 [Ler entrada da lista de IRK]
LE_Read_IRK_List_entry 1 octeto Índice do IRK que o host quer ler novamente (o tamanho máximo da lista de IRK é 32)
LE_IRK 16 octetos Valor da 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 atual resolvido desta IRK