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:
|
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:
|
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:
|
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:
Valor do bit
|
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.
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. Codec AAC:
Consulte os elementos de informações específicos do codec AAC no A2DP v1.3 Codec LDAC:
Octeto 0 a 3: ID do fornecedor
Octeto 4-5: ID do codec
Octeto 6: índice de taxa de bits:
Octeto 7: modo de canal LDAC 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
A exclusão vai limpar os relatórios de eventos de qualidade específicos. |
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. |
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 |
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 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 ) presentes0x01: 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 octetoRSSI[0] : 1 octetoTimestamp[0] : 2 octetosAdv packet_len[0] : 1 octetoAdv_packet[0] : Adv_packet_len octetosScan_data_resp_len[0] : 1 octetoScan_data_resp[0] : Scan_data_resp octetos
|
Subevento de 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.
Código do subevento = 0x58 [Quality_Report_Id = 0x01 ~ 0x04, evento relacionado à qualidade do link]
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. |
SNR |
1 octeto |
[em dB]
Valor da relação sinal-ruído (SNR) para o
Connection_Handle especificado. |
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. |
Buffer_Underflow_Bytes |
4 octetos |
[em Byte]
Contagem de buffer underflow desde o último evento. |
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. |
Código do subevento = 0x58 [Quality_Report_Id = 0x11 ~ 0x13, Log Dump related event]
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 |