A Interface de controlador do host (HCI, na sigla em inglês) é usada para interagir com um controlador Bluetooth.
Este documento fornece uma lista dos requisitos de HCI do Bluetooth (BT) e do Bluetooth de baixa energia (BLE). O objetivo é que os fornecedores de pilha de BT host e os fornecedores de controladores de BT estejam em conformidade com esses requisitos de plataforma para usar o conjunto de recursos descrito abaixo.
Este documento se refere à especificação Bluetooth Core 5.2 como "especificação". A especificação Bluetooth Core 5.2 está disponível no site do Bluetooth SIG (em inglês), além de outros documentos adotados.
Visão geral do design
Recursos e configuração do chip
Como uma plataforma aberta, o Android tem uma matriz de versões de software, OEMs, fornecedores e recursos de plataforma e chip.
Para gerenciar o cenário variável e gerenciar migrações, uma filosofia de design que permite que os controladores de BT exponham os recursos (além da especificação padrão do Bluetooth Core 5.2) é descrita neste documento. A pilha BT do host pode usar essas funcionalidades para determinar quais serão ativados.
Apoio a padrões abertos
Um objetivo do Android é oferecer suporte a padrões abertos após a ratificação em uma especificação Bluetooth. Se um recurso descrito abaixo se tornar disponível em métodos HCI padrão em uma futura especificação Bluetooth, vamos nos esforçar para tornar essa abordagem padrão.
Recursos específicos do fornecedor
Comando específico do fornecedor: LE_Get_Vendor_Capabilities_Command
Campo de comando OpCode (OCF): 0x153
Parâmetro de comando | Tamanho | Objetivo |
---|---|---|
NA | Lista de parâmetros de comando vazia |
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
max_advt_instances (descontinuado) |
1 octeto |
Número de instâncias de publicidade suportadas. Reservado após a v0.98. Esse parâmetro foi descontinuado na especificação de recurso do Google v0.98 e mais recentes e foi substituído pela Publicidade estendida de LE, disponível na versão 5.0 e mais recentes de especificação de BT. |
offloaded_resolution_of_private-address (descontinuado) |
1 octeto |
Capacidade do chip BT do RPA. Se compatível com um ícone, ele precisa ser ativado pelo host. 0 = Incapaz 1 = Com capacidade Reservado após a v0.98 Este parâmetro foi descontinuado na especificação de recurso do Google v0.98 e mais recentes. Agora ele tem o recurso de privacidade disponível na especificação de BT versão 4.2 e mais recentes. |
total_scan_results_storage |
2 octetos | Armazenamento dos resultados da verificação em bytes |
max_irk_list_sz |
1 octeto | Número de entradas IRK suportadas no firmware |
filtering_support |
1 octeto |
Compatibilidade com filtragem no controlador 0 = Incompatível 1 = Compatível |
max_filter |
1 octeto | Número de filtros compatíveis |
activity_energy_info_support |
1 octeto |
Oferece suporte a relatórios de informações de atividade e energia 0 = Incapaz 1 = Capacidade |
version_supported |
2 octetos |
Especifica a versão da especificação de recursos do Google compatível byte[0] = número principal byte[1] = número secundário v1.04 byte[0] = 0x01 byte[1] = 0x04 |
total_num_of_advt_tracked |
2 octetos |
Número total de anunciantes monitorados para fins OnLost /OnFound
|
extended_scan_support |
1 octeto | Oferece suporte à janela e ao intervalo de verificação estendidos |
debug_logging_supported |
1 octeto | Suporte à geração de registros de informações de depuração binárias do controlador |
LE_address_generation_offloading_support (descontinuado) |
1 octeto |
0 = Incompatível 1 = Compatível Reservado após a v0.98. Este parâmetro foi descontinuado na especificação de recurso do Google v0.98 e mais recentes. Agora ele tem o recurso de privacidade disponível na especificação de BT versão 4.2 e mais recentes. |
A2DP_source_offload_capability_mask |
4 octetos |
Bitmass para tipos de codecs compatíveis Bit 0 - SBC Bit 1 - AAC Bit 2 - APTX Bit 3 - APTX HD Bit 4 - LDAC Bit 5 a 31 são reservados |
bluetooth_quality_report_support |
1 octeto |
Oferece suporte a relatórios de eventos de qualidade do Bluetooth 0 = Incapaz 1 = Capacidade |
dynamic_audio_buffer_support |
4 octetos |
Oferece suporte ao buffer de áudio dinâmico no controlador Bluetooth Bitmask para tipos de codec com suporte Bit 0 - SBC Bit 1 - AAC Bit 2 - APTX Bit 3: APTX HD Bit 4: LDAC Bit 5 a 31 são reservados |
a2dp_offload_v2_support |
1 octeto |
Oferece suporte a comandos de descarregamento A2dp v2 no controlador Bluetooth (consulte
Iniciar o descarregamento A2DP,
Interromper o descarregamento A2DP) 0 = Incompatível 1 = Compatível |
Agrupamento em lote de resultados da verificação
Uma meta de design é melhorar a forma como as notificações de evento de resposta de verificação Bluetooth LE são enviadas ao host, para economizar energia.
Ao reduzir a frequência com que o controlador notifica o processador do aplicativo host para verificar os resultados, ele pode ficar inativo por mais tempo. Isso reduz o consumo de energia no host. O parâmetro de retorno total_scan_results_storage
de LE_Get_Vendor_Capabilities_Command
indica a capacidade do ícone para armazenar os resultados da verificação.
Esse recurso se concentra no gerenciamento e na configuração do recurso de armazenamento de resultados da verificação LE no controlador Bluetooth. O armazenamento é usado para agrupar temporariamente os dados de publicidade e verificar os dados e metadados recebidos pelo controlador para entrega posterior ao host.
O firmware precisa ser compatível com dois tipos de lotes, que podem ser usados simultaneamente:
- Truncada. Contém os seguintes elementos de informação: {MAC, TX Power, RSSI, Timestamp}
- Cheio. Contém os seguintes elementos de informação: {MAC, TX Power, RSSI, Timestamp, Adv Data, Scan Response}
Comando de verificação em lote LE
OCF: 0x156
Parâmetro de comando | Tamanho | Objetivo |
---|---|---|
Batch_Scan_opcode |
1 octeto |
0x1: ativar recurso específico do cliente 0x2: definir parâmetros de armazenamento da verificação em lote 0x3: definir parâmetros de verificação em lote 0x4: ler parâmetros de resultado da verificação em lote |
Um evento "Comando completo" será gerado para este comando. Ativar o recurso específico do cliente não inicia a verificação.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
Batch_Scan_opcode |
1 octeto |
0x1: ativar recurso específico do cliente 0x2: definir parâmetros de armazenamento da verificação em lote 0x3: definir parâmetros de verificação em lote 0x4: ler parâmetros de resultado da verificação em lote |
LE_Batch_Scan_Command: ativar recurso específico do cliente
Sub OCF: 0x01
Parâmetro do subcomando | Tamanho | Objetivo |
---|---|---|
enable_customer_specific_feature_set |
1 octeto |
0x01: ativar o recurso de verificação em lote 0x00: desativar o recurso de verificação em lote |
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
Batch_Scan_opcode |
1 octeto |
0x1: ativar recurso específico do cliente 0x2: definir parâmetros de armazenamento da verificação em lote 0x3: definir parâmetros de verificação em lote 0x4: ler parâmetros de resultado da verificação em lote |
LE_Batch_Scan_Command: definir subcomando do parâmetro de armazenamento da verificação em lote
Sub OCF: 0x02
Parâmetro do subcomando | Tamanho | Objetivo |
---|---|---|
Batch_Scan_Full_Max |
1 octeto |
Espaço máximo de armazenamento (em %) alocado para o estilo completo [Intervalo: 0-100] |
Batch_Scan_Truncated_Max |
1 octeto |
Espaço de armazenamento máximo (em %) alocado ao estilo truncado [Intervalo: 0-100] |
Batch_Scan_Notify_Threshold |
1 octeto |
Configure o nível de notificação (em %) do pool de armazenamento individual
[Intervalo: 0-100] Definir como 0 desativa a notificação. É gerado um evento HCI específico do fornecedor (subevento de violação do limite de armazenamento). |
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
Batch_scan_opcode |
1 octeto | 0x02 [Definir parâmetros de verificação em lote] |
LE_Batch_Scan_Command: definir subcomando do parâmetro de verificação em lote
Sub OCF: 0x03
Parâmetro do subcomando | Tamanho | Objetivo |
---|---|---|
Batch_Scan_Mode |
1 octeto |
0x00: verificação em lote desativada 0x01: modo truncado está ativado 0x02: modo completo ativado 0x03: modo truncado e completo estão ativados |
Duty_cycle_scan_window |
4 octetos | Tempo de verificação da verificação em lote (no de slots) |
Duty_cyle_scan_interval |
4 octetos | Período de intervalo da verificação em lote (no de slots) |
own_address_type |
1 octeto |
0x00: endereço público do dispositivo 0x01: endereço de dispositivo aleatório |
Batch_scan_Discard_Rule |
1 octeto |
0 - Descartar anúncio mais antigo 1 - Descartar anúncio com RSSI mais fraco |
Este subcomando iniciará a verificação em lote, se ativado. Na verificação truncada, os resultados são armazenados de forma truncada, em que a chave exclusiva do estilo truncado = {BD_ADDR,
scan_interval}. Isso significa que apenas um BD_ADDR will
será gravado para cada intervalo de verificação. O
registro a ser mantido para o modo truncado é o seguinte: {BD_ADDR
,
Tx Power, RSSI, Timestamp}
Quando o modo completo estiver ativado, a verificação ativa será usada e as respostas
da verificação serão gravadas. A chave exclusiva de estilo completo = {MAC, Ad package},
independentemente do intervalo de verificação. O registro a ser mantido para o modo completo é
{BD_ADDR
, Tx Power, RSSI, carimbo de data/hora, pacote de anúncios, resposta
de verificação}. No estilo completo, o mesmo pacote AD, quando visto várias vezes em diferentes intervalos de verificação, é gravado apenas uma vez. No entanto, no modo truncado, é interessante a visibilidade de BA_ADDR
em diferentes intervalos de verificação (uma vez por intervalo de verificação). O RSSI é o valor médio de todas as cópias de uma divulgação exclusiva dentro de um intervalo de verificação.
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
Batch_scan_opcode |
1 octeto | 0x03 [Definir parâmetros de verificação em lote] |
LE_Batch_Scan_Command: ler subcomando de resultados da verificação em lote
Sub OCF: 0x04
Parâmetro do subcomando | Tamanho | Objetivo |
---|---|---|
Batch_Scan_Data_read |
1 octeto |
0x01: dados de modo truncado 0x02: dados de modo completo |
Um evento "Comando completo" será gerado para este comando. Quando o host emite esse comando, todos os resultados no controlador podem não caber em um evento de comando completo. O host vai iterar emitindo esse comando até que os resultados correspondentes no evento "Comando concluído" indiquem 0 no número de registros, o que indica que o controlador não tem mais registros para se comunicar com o host. Cada evento de comando completo pode conter vários registros de apenas um tipo de dados (completos ou truncados).
As referências de horário do controlador e do host não são sincronizadas. A unidade do carimbo de data/hora é 50ms. O valor do carimbo de data/hora é baseado quando o
Read_Batch_Scan_Results_Sub_cmd
é fornecido pelo host. Se um horário de chegada de comando for T_c
no firmware, o horário real em que o carimbo de data/hora foi registrado no firmware será T_fw
. O tempo do relatório será:
(T_c
- T_fw
). T_c
e
T_fw
estão no domínio de tempo do firmware. Isso permite que o host
calcule há quanto tempo o evento aconteceu.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
Batch_scan_opcode |
1 octeto | 0x03 [Definir parâmetros de verificação em lote] |
Batch_Scan_data_read |
1 octeto | Identifica o formato (com truncamento ou completo) |
num_of_records |
1 octeto | Número de registros de Batch_Scan_data_read |
format_of_data |
Variável |
Truncat
octet1
octet1
octet1: octeto1num_of_records num_of_records Scan_data_resp
|
Filtro de conteúdo do pacote de publicidade
Use para ativar/desativar/configurar o Filtro de Conteúdo do Pacote de Publicidade (APCF, na sigla em inglês) no controlador. O APCF filtra relatórios de publicidade no controlador, mas não filtra a publicidade periódica.
Comando LE_APCF
OCF: 0x157
Parâmetro de comando | Tamanho | Objetivo |
---|---|---|
APCF_opcode |
1 octeto |
0x00 - APCF Ativar 0x01 - APCF Conjunto de parâmetros de filtragem ~ 0x |
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status da devolução |
APCF_opcode |
1 octeto |
0x00 - APCF Ativar 0x01 - APCF Conjunto de parâmetros de filtragem ~ 0x |
LE_APCF_Comando: Enable_sub_cmd
Sub OCF: 0x00
Parâmetro do subcomando | Tamanho | Objetivo |
---|---|---|
APCF_enable |
1 octeto |
0x01 - Ativar recurso APCF 0x00: Desativar recurso APCF |
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
APCF_opcode |
1 octeto | 0x0 - APCF ativado |
APCF_Enable |
1 octeto | A ativação/desativação é definida por APCF_enable |
LE_APCF_Comando: set_filtering_parameters_sub_cmd
Esse subcomando é usado para adicionar ou excluir uma especificação de filtro ou limpar uma lista de filtros para filtragem nos chips.
Sub OCF: 0x01
Parâmetro do subcomando | Tamanho | Objetivo |
---|---|---|
APCF_Action |
1 octeto |
0x00 - Adicionar 0x01 - Excluir 0x02 - Limpar Excluir limpa o filtro específico junto com as entradas de atributos associados em outras tabelas. Limpar limpa todos os filtros e entradas associadas em outras tabelas. |
APCF_Filter_Index |
1 octeto | Índice do filtro (0, max_filter-1 ) |
APCF_Feature_Selection |
2 octetos |
Bitmask para os recursos selecionados: Bit 0: defina para ativar o filtro de endereço de transmissão Bit 1: defina para ativar o filtro de mudança de dados de serviço Bit 2: defina para ativar a verificação de UUID de serviço Bit 3: defina para ativar a verificação de UUID da solicitação de serviço Bit 4: defina para ativar a verificação do tipo de serviço de transporte do AD Bit 5: defina para ativar a verificação do tipo de serviço de transporte do AD Bit 7: defina para ativar a verificação do tipo de serviço de transporte do AD Bit 7: definir para ativar a verificação do tipo de serviço de transporte do AD |
APCF_List_Logic_Type |
2 octetos |
Operação lógica para cada seleção de recursos (posição por bit) especificada em APCF_Feature_Selection .
Válido apenas quando um recurso estiver ativado. Valor da posição de bit: 0: OR 1: AND Se a lógica "AND" for selecionada, um pacote ADV passará no filtro somente se ele contiver TODAS as entradas na lista. Se a lógica "OU" for selecionada, um pacote ADV passará no filtro se ele contiver alguma das entradas na lista. |
APCF_Filter_Logic_Type |
1 octeto |
0x00: OR 0x01: AND Observação: o tipo de lógica é N/A para os três primeiros campos de APCF_Feature_Selection , que é sempre a lógica "AND". Elas
são aplicáveis apenas aos quatro campos (Bit 3 - Bit 6) do
APCF_Feature_Selection .
|
rssi_high_thresh |
1 octeto |
[em dBm] O anunciante será considerado visto somente se o sinal for maior que o limite alto do RSSI. Caso contrário, o firmware precisará se comportar como se nunca o tivesse visto. |
delivery_mode |
1 octeto |
0 x 00 – immediate 0 x 01 - on_found 0 x 02 - batched
|
onfound_timeout |
2 octetos |
Válido apenas se delivery_mode for
on_found .[em milissegundos] Tempo até que o firmware permaneça e colete outros anúncios antes de gerar relatórios. |
onfound_timeout_cnt |
1 octeto |
Válido apenas se delivery_mode for
on_found .[count] Se um anúncio no onFound permanecer no firmware durante
onfound_timeout , ele coletará alguns
anúncios e a contagem será verificada. Se a contagem exceder
onfound_timeout_cnt , ela vai ser informada
OnFound imediatamente em seguida.
|
rssi_low_thresh |
1 octeto |
Válido apenas se delivery_mode for
on_found .[em dBm] O pacote do anunciante não será visto se o RSSI do pacote recebido não estiver acima do limite inferior do RSSI. |
onlost_timeout |
2 octetos |
Válido apenas se delivery_mode for
on_found .[em milissegundos] Se um anúncio, depois de ser encontrado, não for visto de maneira contígua no período lost_timeout , será imediatamente informado como perdido.
|
num_of_tracking_entries |
2 octetos |
Válido apenas se delivery_mode for
on_found .[count] Número total de anunciantes que serão rastreados por filtro. |
Os valores de RSSI devem usar o complemento de 2 para representar valores negativos.
O host precisa ser capaz de configurar vários filtros com
APCF_Application_Address_type
definido como 0x02 (para todos os
endereços de emissora) para gerenciar várias combinações de filtros.
Filtragem, lotes e relatórios são conceitos inter-relacionados. Cada anúncio e resposta de verificação relacionada precisará passar por todos os filtros, um após o outro. Assim, as ações resultantes
(delivery_mode
) estão intimamente vinculadas à filtragem. Os modos de transferência são os seguintes: report_immediately
, batch
e onFound
. O valor OnLost
está relacionado a OnFound
no sentido de que virá depois de OnFound
quando perdido.
Este fluxo de processamento descreve o modelo conceitual:
![](https://source.android.com/static/docs/core/connect/bluetooth/images/bt_filter_batch_report.png?authuser=0&hl=pt-br)
Quando um frame de divulgação (ou resposta de verificação) é recebido, ele é aplicado a todos os filtros em ordem serial. É possível que um anúncio gere relatórios imediatos com base em um filtro e em lotes devido a uma ação de filtro diferente.
Os limites de nível do RSSI (alto e baixo) permitem controlar quando o frame fica visível para o processamento do filtro, mesmo quando um pacote válido é recebido pelo controlador. No caso do modo de transferência ser definido como imediato ou em lote, o RSSI de um frame é considerado para processamento adicional do controlador. Apps diferentes precisam de relatórios e comportamentos de lotes diferentes. Isso permite que vários apps tenham relatórios diretos e/ou lotes de resultados no firmware simultaneamente. Um exemplo é um caso em que uma verificação em lote está ativa em um app e, mais tarde, uma verificação normal de LE é emitida por outro app. Antes da emissão de uma verificação em lote, o framework/app define os filtros apropriados. Mais tarde, quando o segundo app emitir uma verificação regular, os lotes anteriores continuarão. No entanto, devido à verificação regular, isso equivale a adicionar conceitualmente um filtro nulo (junto com todos os filtros atuais) junto com o comando LE scan. Os parâmetros do comando de verificação de LE têm precedência quando estiverem ativos. Quando a verificação normal de LE estiver desativada, o controlador voltará a uma verificação em lote anterior, se ela existia.
O modo de transferência OnFound
é baseado em filtros configurados. Uma combinação que aciona a ação de um filtro é considerada a entidade a ser rastreada para onLost
. O evento correspondente é o subevento de rastreamento da LE Advt.
A transição OnFound/OnLost
de um filtro, se ativada, será semelhante a esta:
![](https://source.android.com/static/docs/core/connect/bluetooth/images/bt_onfound_onlost.png?authuser=0&hl=pt-br)
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
APCF_opcode |
1 octeto | 0x01 - Parâmetros de filtragem do conjunto APCF |
APCF_Action |
1 octeto | Repetir o comando APCF_Action de retorno |
APCF_AvailableSpaces |
1 octeto | Número de entradas disponíveis na tabela de filtros |
LE_APCF_Comando: broadcast_address_sub_cmd
Este subcomando é usado para adicionar ou excluir o endereço de um anunciante ou limpar a lista de endereços do anunciante para filtragem no chip.
Sub OCF: 0x02
Parâmetro do subcomando | Tamanho | Objetivo |
---|---|---|
APCF_Action |
1 octeto |
0x00 - Adicionar 0x01 - Excluir 0x02 - Limpar Excluir exclui o endereço do transmissor especificado no filtro especificado. Limpar limpa todos os endereços de transmissor no filtro especificado. |
APCF_Filter_Index |
1 octeto | Índice do filtro (0, max_filter-1 ) |
APCF_Broadcaster_Address |
6 octetos | Endereço do dispositivo de 6 bytes para adicionar ou excluir da lista de endereços da emissora |
APCF_Application_Address_type |
1 octeto |
0x00: público 0x01: aleatório 0x02: NA (ignorar o tipo de endereço) Para filtrar relatórios de publicidade com tipos de endereço de identidade (0x02, 0x03). Para gerar relatórios de publicidade com os tipos de endereço 0x02 e 0x03, defina esse campo como 0x02: NA (ignore o tipo de endereço). |
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
APCF_opcode |
1 octeto | 0x02 - Endereço da emissora do APCF |
APCF_Action |
1 octeto | Repetir o comando APCF_Action de retorno |
APCF_AvailableSpaces |
1 octeto | Número de entradas sem custo financeiro ainda disponíveis na tabela "Endereço de transmissão" |
LE_APCF_Comando: service_uuid_sub_cmd
Esse subcomando é usado para adicionar ou excluir um UUID de serviço ou limpar uma lista de UUIDs de serviço para filtragem no chip.
Sub OCF: 0x03
Parâmetro do subcomando | Tamanho | Objetivo |
---|---|---|
APCF_Action |
1 octeto |
0x00 - Adicionar 0x01 - Excluir 0x02 - Limpar Excluir excluirá o endereço UUID de serviço especificado no filtro especificado. A opção "Limpar" limpa todos os UUIDs de serviço no filtro especificado. |
APCF_Filter_Index |
1 octeto | Índice do filtro (0, max_filter -1) |
APCF_UUID |
2,4,16 octetos | O UUID de serviço (16, 32 ou 128 bits) para adicionar ou excluir a lista. |
APCF_UUID_MASK |
2,4,16 octetos |
A máscara do UUID de serviço (16, 32 ou 128 bits) a ser adicionada à lista.
Ele precisa ter o mesmo comprimento que APCF_UUID. .
|
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
APCF_opcode |
1 octeto | 0x03: UUID de serviço APCF |
APCF_Action |
1 octeto | Repetir o comando APCF_Action de retorno |
APCF_AvailableSpaces |
1 octeto | Número de entradas sem custo financeiro ainda disponíveis na tabela UUID de serviço |
LE_APCF_Comando: solicitação_uuid_sub_cmd
Esse subcomando é usado para adicionar ou excluir um UUID de solicitação ou limpar uma lista de UUID de solicitação para filtragem no chip.
Sub OCF: 0x04
Parâmetro do subcomando | Tamanho | Objetivo |
---|---|---|
APCF_Action |
1 octeto |
0x00: adicionar 0x01 - excluir 0x02: limpar "Excluir" vai remover o endereço do UUID de solicitação no filtro especificado. A opção "Limpar" limpa todos os UUIDs de solicitação no filtro especificado. |
APCF_Filter_Index |
1 octeto | Índice do filtro (0, max_filter -1) |
APCF_UUID |
2,4,16 octetos | O UUID de solicitação (16, 32 ou 128 bits) a ser adicionado ou excluído da lista. |
APCF_UUID_MASK |
2,4,16 octetos |
A máscara do UUID de solicitação (16, 32 ou 128 bits) a ser adicionada à
lista. Ele precisa ter o mesmo comprimento que o APCF_UUID .
|
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
APCF_opcode |
1 octeto | 0x04: UUID de solicitação da APCF |
APCF_Action |
1 octeto | Repetir o comando APCF_Action de retorno |
APCF_AvailableSpaces |
1 octeto | Número de entradas sem custo financeiro que ainda estão disponíveis na tabela UUID de solicitação |
LE_APCF_Comando: nome_local_sub_cmd
Esse subcomando é usado para adicionar ou excluir uma string de nome local ou limpar a lista de strings de nomes locais para filtragem no chip.
Sub OCF: 0x05
Parâmetro do subcomando | Tamanho | Objetivo |
---|---|---|
APCF_Action |
1 octeto |
0x00 - Adicionar 0x01 - Excluir 0x02 - Limpar Excluir exclui a string de nome local especificada no filtro especificado. "Limpar" limpa todas as strings de nome local no filtro especificado. |
APCF_Filter_Index |
1 octeto | Índice do filtro (0, max_filter -1) |
APCF_LocName_Mandata_or_SerData |
Tamanho da variável |
Uma string de caracteres para o nome local. Observações:
|
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
APCF_opcode |
1 octeto | 0x05 - Nome local do APCF |
APCF_Action |
1 octeto | Repetir o comando APCF_Action de retorno |
APCF_AvailableSpaces |
1 octeto | Número de entradas sem custo financeiro ainda disponíveis na tabela "Nome local" |
LE_APCF_Comando: manf_data_sub_cmd
Esse subcomando é usado para adicionar ou excluir uma string de dados do fabricante ou limpar a lista de strings de dados do fabricante para filtragem no chip.
Sub OCF: 0x06
Parâmetro do subcomando | Tamanho | Objetivo |
---|---|---|
APCF_Action |
1 octeto |
0x00: adicionar 0x01 - excluir 0x02: limpar "Excluir" vai excluir a string de dados do fabricante especificada no filtro especificado. A opção "Limpar" limpa todas as strings de dados do fabricante no filtro especificado. |
APCF_Filter_Index |
1 octeto | Índice do filtro (0, max_filter -1) |
APCF_LocName_Mandata_or_SerData |
Tamanho da variável |
Uma string de caracteres para dados do fabricante. Observações:
|
APCF_ManData_Mask |
Tamanho da variável |
A máscara de dados do fabricante a ser adicionada à lista. Ele precisa ter o mesmo comprimento que APCF_LocName_or_ManData_or_SerData .
|
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
APCF_opcode |
1 octeto | 0x06: dados do fabricante de APCF |
APCF_Action |
1 octeto | Repetir o comando APCF_Action de retorno |
APCF_AvailableSpaces |
1 octeto | Número de entradas sem custo financeiro que ainda estão disponíveis na tabela de dados do fabricante |
LE_APCF_Comando: service_data_sub_cmd
Esse subcomando é usado para adicionar ou excluir uma string de dados de serviço ou limpar a lista de strings de dados de serviço para filtragem no chip.
Sub OCF: 0x07
Parâmetro do subcomando | Tamanho | Objetivo |
---|---|---|
APCF_Action |
1 octeto |
0x00 - Adicionar 0x01 - Excluir 0x02 - Limpar Excluir excluirá a string de dados de serviço especificada no filtro especificado. A opção "Limpar" limpa todas as strings de dados de serviço no filtro especificado. |
APCF_Filter_Index |
1 octeto | Índice do filtro (0, max_filter -1) |
APCF_LocName_Mandata_or_SerData |
Tamanho da variável |
Uma string de caracteres para dados de serviço. Observações:
|
APCF_LocName_Mandata_or_SerData_Mask |
Tamanho da variável |
A máscara de dados do serviço a ser adicionada à lista. Ele precisa ter o mesmo
comprimento de APCF_LocName_or_ManData_or_SerData. .
|
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
APCF_opcode |
1 octeto | 0x07 - Dados de serviço APCF |
APCF_Action |
1 octeto | Repetir o comando APCF_Action de retorno |
APCF_AvailableSpaces |
1 octeto | Número de entradas sem custo financeiro ainda disponíveis para a tabela "Dados do serviço" |
LE_APCF_Comando: ad_type_sub_cmd
Esse subcomando é usado para adicionar ou excluir um tipo de AD ou limpar uma lista de tipos de AD para filtragem de chips. Use read_extended_features_sub_cmd
para verificar se esse comando é compatível ou não.
Quando APCF_AD_DATA_Length
for 0, filtre APCF_AD_TYPE
sem comparar os dados do AD e a máscara de dados do AD.
Se o comprimento de dados do pacote ADV recebido exceder AD_DATA_LENGTH
, compare
apenas os primeiros AD_DATA_LENGTH
bytes dos dados do AD e ignore os dados restantes.
Sub OCF: 0x09
Parâmetro do subcomando | Tamanho | Objetivo |
---|---|---|
APCF_Action |
1 octeto |
0x00 - Adicionar 0x01 - Excluir 0x02 - Limpar Excluir excluirá o tipo de AD especificado no filtro especificado. A opção "Limpar" remove todos os tipos de anúncios no filtro especificado. |
APCF_Filter_Index |
1 octeto | Índice do filtro (0, max_filter -1) |
APCF_AD_TYPE |
1 octeto | O tipo de anúncio para adicionar ou excluir a lista. Ignorar quando APCF_Action for 0x02 (Limpar) |
APCF_AD_DATA_Length |
1 octeto |
0x00 significa que o conteúdo dos dados não é filtrado Ignorar quando APCF_Action for 0x02 (Limpar)
|
APCF_AD_DATA |
Tamanho da variável |
Tamanho variável com base em APCF_AD_DATA_Length Ignorar quando APCF_Action for 0x02 (Limpar) |
APCF_AD_DATA_MASK |
Tamanho da variável |
Tamanho variável, com base em APCF_AD_DATA_Length Ignorar quando APCF_Action for 0x02 (Limpar)Ele precisa ter o mesmo comprimento que APCF_AD_DATA .
|
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
APCF_opcode |
1 octeto | 0x09 - tipo de anúncio APCF |
APCF_Action |
1 octeto | Repetir o comando APCF_Action de retorno |
APCF_AvailableSpaces |
1 octeto | Número de entradas sem custo financeiro ainda disponíveis na tabela "Tipo de anúncio" |
LE_APCF_Comando: read_extended_features_sub_cmd
Esse subcomando é usado para ler recursos de APCF estendidos.
Sub OCF: 0xFF
Parâmetro do subcomando | Tamanho | Objetivo |
---|---|---|
Não relevante | Parâmetro de comando vazio. |
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
APCF_opcode |
1 octeto | 0xFF: APCF_Read_Extended_Features |
APCF_extended_features |
2 octetos |
Bitmasks para recursos estendidos compatíveis:
Valor do bit
|
Comando de informações sobre energia e atividade do controlador
O objetivo dessas informações é que as funções do sistema host superior analisem o total de atividades de todos os componentes, incluindo o controlador BT e seu estado macro, em conjunto com o que está acontecendo nos apps e no framework. Para fazer isso, são necessárias as seguintes informações da pilha BT e do controlador:
- Pilha BT: relatando o estado macrooperacional atual do controlador
- Firmware: relatórios de informações agregadas de energia e atividade
Estados da macro de pilha de host BT, conforme determinado no nível do usuário:
- Inativo: [page scan, LE advt, Investigation scan, LE scan]
- Verificação: [paginação/consulta/tentando se conectar]
- Ativo: [link da ACL ativado, link de SCO em andamento, modo de detecção]
As atividades que o controlador monitora ao longo da vida útil são o tempo Tx, o tempo Rx, o tempo de inatividade e o total de energia consumida. Eles são apagados quando lidos do host.
LE_Get_Controller_Activity_Energy_Info
Esse é um comando específico do fornecedor.
OCF: 0x159
Parâmetro do subcomando | Tamanho | Objetivo |
---|---|---|
NA | Parâmetros de comando vazios |
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
total_tx_time_ms |
4 octetos | Tempo total de execução da transação |
total_rx_time_ms |
4 octetos | Tempo total de execução de Rx |
total_idle_time_ms |
4 octetos | Tempo total em inatividade (estados de baixo consumo de energia não suspenso) |
total_energy_used |
4 octetos | Energia total usada [produto da corrente (mA), tensão (V) e tempo (ms)] |
Comando de parâmetros de verificação do conjunto estendido de LE
Esse comando pode ser usado para ativar uma janela e um intervalo de verificação maiores no controlador. De acordo com a especificação BT Core 5.2, uma janela e um intervalo de verificação têm um limite superior de 10,24 segundos, o que prejudica intervalos mais longos de verificação dos aplicativos além de 10,24 segundos.
Referência de base: especificação BT Core 5.2, página 2493 (comando LE Set Scan Parameters)
OCF: 0x15A
Parâmetro de comando | Tamanho | Objetivo |
---|---|---|
LE_Ex_Scan_Type |
1 octeto |
0 x 00 - Leitura passiva. Nenhum pacote SCAN_REQ será
enviado (padrão).0x01: verificação ativa. SCAN_REQ pacotes podem ser enviados.
|
LE_Ex_Scan_Interval |
4 octetos |
Definido como o intervalo de tempo entre o momento em que o controlador iniciou a última
verificação de LE até o início da verificação de LE subsequente. Intervalo: 0x0004 a 0x00FFFFFF Padrão: 0x0010 (10 ms) Tempo = N * 0,625 ms Intervalo de tempo: 2,5 ms a 10442,25 segundos |
LE_Ex_Scan_Window |
4 octetos |
A duração da verificação de LE. LE_Scan_Window precisa ser menor
ou igual a LE_Scan_Interval .
Intervalo: 0x0004 a 0xFFFF Padrão: 0x0010 (10 ms) Tempo = N * 0,625 ms Intervalo de tempo: 2,5 ms a 40,95 segundos |
Own_Address_Type |
1 octeto |
0x00: endereço público do dispositivo (padrão) 0x01: endereço aleatório do dispositivo |
LE_Ex_Scan_Filter_Policy |
0x00 - aceita todos os pacotes de divulgação (padrão). Os pacotes de publicidade direta que não forem endereçados para este dispositivo serão ignorados. 0x01: ignora os pacotes de publicidade de dispositivos que não estão na lista Apenas da Lista de permissões. Os pacotes de publicidade direta que não forem endereçados para este dispositivo serão ignorados. |
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
Receber comando de informações de depuração do controlador
O objetivo desse elemento de informação é adquirir informações de depuração do controlador por um host, em formato binário, para pós-processamento e análise. Isso ajuda a depurar problemas em campo e fornece aos engenheiros um kit de ferramentas para registrar informações para análise. Um controlador pode fornecer as informações quando solicitado por um host por meio do evento (subevento de informações de depuração do controlador) ou de forma autônoma, quando desejado pelo controlador. Exemplos de usos podem ser para relatar informações do estado do firmware, informações de crash dump, informações de registro etc.
OCF: 0x15B
Parâmetro de comando | Tamanho | Objetivo |
---|---|---|
N/A | Lista de parâmetros de comando vazia |
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
Suporte a descarregamento de hardware A2DP
O recurso de descarregamento A2DP oferece suporte ao descarregamento do processo de codificação de áudio A2DP para um processador de áudio conectado ao controlador BT. O fluxo de dados de áudio codificado é transmitido diretamente do processador de áudio para o controlador BT sem o envolvimento do host BT. O host do BT ainda é responsável pela configuração e pelo controle da sessão A2DP. Há duas versões dos comandos disponíveis. Os comandos legados com Sub OCF 0x01-0x02 são compatíveis apenas com codecs de código aberto. As versões com Sub-OCF 0x02-0x03 são independentes do codec configurado.
OCF: 0x15D
Iniciar o descarregamento do A2DP (legado)
Sub OCF: 0x01
Use esse comando para configurar o processo de descarregamento A2DP e iniciar o fluxo de A2DP.
Parâmetro de comando | Tamanho | Objetivo |
---|---|---|
Codec |
4 octetos |
Especifica o tipo de codec 0x01 - SBC 0x02 - AAC 0x04 - APTX 0x08 - APTX HD 0x10 - LDAC |
Max_Latency |
2 octetos | Latência máxima permitida (em ms). O valor zero desativa a limpeza. |
SCMS-T_Enable |
2 octetos |
Octeto 0: flag que permite a adição do cabeçalho SCMS-T.
Octeto 1: valor do cabeçalho SCMS-T, quando está ativado. |
Sampling_Frequency |
4 octetos |
0x01 a 44.100 Hz 0x02 - 48.000 Hz 0x04 a 88.200 Hz 0x08 a 96.000 Hz |
Bits_Per_Sample |
1 octeto |
0x01 - 16 bits por amostra 0x02 - 24 bits por amostra 0x04 - 32 bits por amostra |
Channel_Mode |
1 octeto |
0x01 - Mono 0x02: estéreo |
Encoded_Audio_Bitrate |
4 octetos |
A taxa de bits de áudio codificada em bits por segundo. 0x00000000: a taxa de bits de áudio não foi especificada / unused. 0x00000001 - 0x00FFFFFF: é a taxa de bits de áudio codificada em bits por segundo. 0x01000000 - 0xFFFFFFFF: reservado. |
Connection_Handle |
2 octetos | Cabo de conexão da conexão A2DP que está sendo configurada |
L2CAP_Channel_ID |
2 octetos | ID do canal L2CAP a ser usado para esta conexão A2DP |
L2CAP_MTU_Size |
2 octetos | Tamanho máximo de MTU L2CAP contendo pacotes de áudio codificados |
Codec_Information |
32 octetos |
Informações específicas do codec.
Codec SBC:
Consulte os elementos de informação específicos do Codec SBC no A2DP v1.3. Codec AAC:
Consulte os elementos de informação específicos do Codec AAC em A2DP v1.3 Codec LDAC:
Octeto 0-3: ID do fornecedor
Outubro 4 a 5: ID do codec
Octeto 6: índice da taxa de bits:
7 de outubro: modo de canal LDAC 8 a 31 de outubro: reservado Todos os outros codecs: 0 a 31 de outubro: reservado |
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
Sub_Opcode |
1 octeto | 0x01 - Iniciar descarregamento A2DP |
Iniciar o descarregamento A2DP
Sub OCF: 0x03
Use esse comando para configurar o processo de descarregamento A2DP e iniciar o fluxo de A2DP.
Parâmetro de comando | Tamanho | Objetivo |
---|---|---|
Connection Handle |
2 octetos | Identificador da conexão HCI ativa |
L2CAP_Channel_ID |
2 octetos | Identificador do canal L2CAP aberto para transmissão A2DP |
Data_Path_Direction |
1 octeto |
0x00: saída (origem/mesclagem do AVDTP) 0x01: entrada (coletor/divisão do AVDTP) |
Peer_MTU |
2 octetos | Tamanho máximo de pacotes L2CAP, negociado com o peering. |
CP_Enable_SCMS_T |
1 octeto |
0x00: desativar o cabeçalho de proteção de conteúdo SCMS-T 0x01: ativar cabeçalho de proteção de conteúdo SCMS-T |
CP_Header_SCMS_T |
1 octeto |
Quando o cabeçalho de proteção de conteúdo SCMS-T está ativado (CP_SCMS_T_Enable
definido como 0x01), define o valor do cabeçalho que precede o conteúdo de áudio (consulte
A2DP, seção 3.2.1-2), conforme definido por "Números atribuídos por Bluetooth", seção
6.3.2.Ignorado quando a proteção de conteúdo do SCMS-T não está ativada. |
Vendor_Specific_Parameters_Length |
1 octeto |
Tamanho dos parâmetros específicos do fornecedor, no intervalo de 0 a 128. O valor 0 é usado quando nenhum outro parâmetro é fornecido. |
Vendor_Specific_Parameters |
0 a 128 octetos |
Parâmetros específicos do fornecedor fornecidos pela HAL de áudio Bluetooth,
CodecParameters.vendorSpecificParameters[] .
|
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
Sub_Opcode |
1 octeto | 0x03 - Iniciar descarregamento A2DP |
Interromper o descarregamento A2DP (legado)
Sub OCF: 0x02
Esse comando é usado para interromper o fluxo de descarregamento do A2DP.
Parâmetro de comando | Tamanho | Objetivo |
---|---|---|
N/A | Lista de parâmetros de comando vazia. |
Nenhum parâmetro foi definido para este comando.
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
Sub_Opcode |
1 octeto | 0x02 - Interromper o descarregamento A2DP |
Interromper o descarregamento A2DP
Sub OCF: 0x04
Esse comando é usado para interromper o fluxo de descarregamento do A2DP.
Parâmetro de comando | Tamanho | Objetivo |
---|---|---|
Connection Handle |
2 octetos | Identificador da conexão HCI ativa |
L2CAP_Channel_ID |
2 octetos | Identificador do canal L2CAP aberto para transmissão A2DP |
Data_Path_Direction |
1 octeto |
0x00: saída (origem/mesclagem do AVDTP) 0x01: entrada (coletor/divisão do AVDTP) |
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
Sub_Opcode |
1 octeto | 0x04 - Interromper o descarregamento A2DP |
Comando do Relatório de qualidade do Bluetooth
O recurso de comando do Relatório de qualidade de BT inicia o mecanismo no controlador Bluetooth para relatar eventos de qualidade do Bluetooth para o host. Há quatro opções que podem ser ativadas:
- Modo de monitoramento de qualidade: o controlador envia periodicamente um subevento do BQR relacionado à qualidade do link para o host.
- Aproximando-se do LSTO: se nenhum pacote for recebido do dispositivo BT conectado por mais da metade do valor do tempo limite da supervisão de link (LSTO, na sigla em inglês), o controlador informará um evento LSTO próximo ao host.
- Áudio entrecortado (A2DP): quando o controlador detecta fatores que causam áudio entrecortado, ele informa um evento entrecortado no áudio A2DP ao host.
- (e) Voz entrecortada no SCO: quando o controlador detecta fatores que causam instabilidade na voz, ele relata um evento de voz entrecortada (e) SCO entrecortada pelo organizador.
- Inflamação raiz: esse evento é enviado pelo controlador para a pilha quando a HAL ou o controlador encontra um erro fatal e precisa reiniciar o Bluetooth.
- Rastreamento de mensagens LMP/LL: o controlador envia a mensagem do LMP/LL no handshake com o dispositivo remoto para o host.
- Rastro de programação de vários perfis/coex Bluetooth: o controle envia ao host informações de programação sobre como lidar com vários perfis Bluetooth e a coexistência de redes sem fio na banda de 2,4 Ghz.
- Mecanismo de informações de depuração do controlador: quando ativado, o controlador pode relatar de forma autônoma informações de registro de depuração por meio do subevento de informações de depuração do controlador para o host.
- LE Audio entrecortado: quando o controlador detecta fatores que causam áudio entrecortado, ele informa um evento de LE Audio entrecortado ao host.
-
Modo avançado de estatísticas de RF: o controlador relata informações relacionadas a estatísticas de RF ao host, aceitando dois casos de uso de relatório:
- Relatórios periódicos
- Acionadores de eventos (início/interrupção do stream e acionador de evento de qualidade do link).
- BQR_Report_Action do comando do relatório de qualidade do Bluetooth: o host pode usar esse comando HCI para receber uma consulta única para o modo de monitoramento de qualidade, o modo de monitoramento de energia ou um modo avançado de estatísticas de RF.
OCF: 0x15E
Parâmetro de comando | Tamanho | Objetivo |
---|---|---|
BQR_Report_Action |
1 octeto |
Ação para adicionar / excluir relatórios de eventos de qualidade definidos no
parâmetro BQR_Quality_Event_Mask ou limpar tudo.
0x00 - Adicionar
Excluir remove os relatórios de eventos de qualidade específicos. |
BQR_Quality_Event_Mask |
4 octetos |
Bitmasks para o relatório de evento de qualidade selecionado.
Bit 0: defina para ativar o modo de monitoramento de qualidade. |
BQR_Minimum_Report_Interval |
2 octetos |
Defina o intervalo de tempo mínimo dos relatórios de eventos de qualidade para os eventos de qualidade selecionados. O firmware do controlador não pode informar
o próximo evento dentro do intervalo de tempo definido. A configuração do intervalo precisa ser específica e dedicada aos eventos de qualidade que estão sendo adicionados.
Unidade: ms |
BQR_Vendor_Specific_Quality_Event_Mask |
4 octetos |
Bitmasks para o relatório de evento de qualidade específico do fornecedor selecionado. Esse parâmetro é válido somente quando o bit 15 do BQR_Quality_Event_Mask está definido.
Bit 0 ~ 31: Reservado. |
BQR_Vendor_Specific_Trace_Mask |
4 octetos |
Bitmasks para o relatório de rastreamento específico do fornecedor selecionado. Esse parâmetro é válido somente quando o bit 31 do BQR_Quality_Event_Mask está definido.
Bit 0 ~ 31: Reservado. |
Report_interval_multiple |
4 octetos |
O multiplicador de BQR_Minimum_Report_Interval . Quando esse valor é maior ou igual a 1,
o intervalo do relatório do BQR segue o formato Intervalo do relatório do BQR = BQR_Minimum_Report_Interval x Report_interval_multiple. O firmware do controlador não pode informar o próximo evento dentro do intervalo de tempo definido. A configuração de intervalo é dedicada especificamente aos eventos de qualidade adicionados.
Unidade: ms BQR_Report_Interval for maior que a capacidade do controlador, ele precisará retornar o tempo máximo de BQR_Report_Interval após a conclusão do comando.
|
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
Current_Quality_Event_Mask |
4 octetos |
Indica a configuração atual da bitmask. Bit 0: o modo de monitoramento de qualidade está ativado. Bit 1: o envio de relatórios de eventos de LSTO está ativado. Bit 2: o relatório de eventos de áudio A2DP está ativado. Bit 3: (e) Os relatórios de eventos de voz entrecortada na SCO estão ativados. Bit 4: os relatórios de eventos de inflamação raiz estão ativados. Bit 5: o modo de monitoramento de energia está ativado. Bit 6: o relatório de eventos de baixa fluidez do áudio de LE está ativado. Bit 7: evento de falha na conexão. Bit 8: defina para ativar o gatilho de eventos do modo "Advanced RF Stats". Bit 9: defina para ativar o relatório periódico de estatísticas avançadas de RF. Bit 10 ~ 14: reservado. Bit 15: os relatórios de eventos de qualidade específicos do fornecedor estão ativados. Bit 16: o trace de mensagens LMP/LL está ativado. Bit 17: o trace de programação de multilink/coex Bluetooth está ativado. Bit 18: o mecanismo de informações de depuração do controlador está ativado. Bit 19 ~ 30: reservado. Bit 31: o trace específico do fornecedor está ativado. |
Current_Vendor_Specific_Quality_Event_Mask |
4 octetos | Indica a configuração atual da bitmask. |
Current_Vendor_Specific_Trace_Mask |
4 octetos | Indica a configuração atual da bitmask. |
BQR_Report_interval |
4 octetos | Indica a configuração atual da bitmask. |
Current_Vendor_Specific_Trace_Mask |
4 octetos |
A configuração de BQR_Report_interval . Precisa ser o valor mínimo entre BQR_Minimum_Report_Interval * Report_interval_multiple ou o intervalo máximo de suporte do controlador. |
Comando dinâmico do buffer de áudio
O buffer de áudio dinâmico reduz as falhas de áudio mudando o tamanho do buffer de áudio no controle Bluetooth com base em vários cenários.
OCF: 0x15F
Usar o recurso de tempo de buffer de áudio
Sub OCF: 0x01
Use esse comando para obter o recurso de tempo de buffer de áudio do controlador Bluetooth.
Parâmetro de comando | Tamanho | Objetivo |
---|---|---|
N/A | Lista de parâmetros de comando vazia |
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
Dynamic_Audio_Buffer_opcode |
1 octeto | 0x01 - Obtenha tempo de buffer de áudio |
Audio_Codec_Type_Supported |
4 octetos |
Bitmask para os tipos de codecs compatíveis Bit 0 - SBC Bit 1 - AAC Bit 2 - APTX Bit 3: APTX HD Bit 4: LDAC Bit 5 a 31 são reservados |
Audio_Codec_Buffer_Default_Time_For_Bit_0 |
2 octetos |
Tempo de buffer padrão do tipo de codec Bit 0 especificado em Audio_Codec_Type_supported. Esse valor será 0 se o tipo de codec Bit 0 não for compatível. Unidade: ms |
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 |
2 octetos |
Tempo máximo de buffer do tipo de codec do Bit 0 especificado em Audio_Codec_Type_supported. Esse valor será 0 se o tipo de codec Bit 0 não for compatível. Unidade: ms |
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 |
2 octetos |
Tempo mínimo de buffer do tipo de codec Bit 0 especificado em Audio_Codec_Type_supported. Esse valor será 0 se o tipo de codec Bit 0 não for compatível. Unidade: ms |
Audio_Codec_Buffer_Default_Time_For_Bit_1 |
2 octetos |
Tempo de buffer padrão do tipo de codec do Bit 1 especificado em Audio_Codec_Type_supported. Esse valor será 0 se o tipo de codec do Bit 1 não for compatível. Unidade: ms |
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 |
2 octetos |
Tempo máximo de buffer do tipo de codec do Bit 1 especificado em Audio_Codec_Type_Supported. Esse valor será 0 se o tipo de codec do Bit 1 não for compatível. Unidade: ms |
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 |
2 octetos |
Tempo mínimo de buffer do tipo de codec do Bit 1 especificado em Audio_Codec_Type_Supported. Esse valor será 0 se o tipo de codec do Bit 1 não for compatível. Unidade: ms |
... | ... | ... |
Audio_Codec_Buffer_Default_Time_For_Bit_31 |
2 octetos |
Tempo de buffer padrão do tipo de codec do Bit 31 especificado em Audio_Codec_Type_supported. Esse valor será 0 se o tipo de codec do Bit 31 não for compatível. Unidade: ms |
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 |
2 octetos |
Tempo máximo de buffer do tipo de codec do Bit 31 especificado em Audio_Codec_Type_Supported. Esse valor será 0 se o tipo de codec do Bit 31 não for compatível. Unidade: ms |
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 |
2 octetos |
Tempo mínimo de buffer do tipo de codec Bit 31 especificado em Audio_Codec_Type_supported. Esse valor será 0 se o tipo de codec do Bit 31 não for compatível. Unidade: ms |
Definir tempo de buffer de áudio
Sub OCF: 0x02
Use este comando para definir o tempo de buffer de áudio para o controlador Bluetooth.
Parâmetro de comando | Tamanho | Objetivo |
---|---|---|
Audio_Codec_Buffer_Time |
2 octetos |
Tempo de buffer de áudio solicitado para o codec atual usado. Unidade: ms |
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
Dynamic_Audio_Buffer_opcode |
1 octeto | 0x02 - Define o tempo de buffer do áudio |
Audio_Codec_Buffer_Time |
2 octetos |
Tempo atual do buffer de áudio no controle Bluetooth. Unidade: ms |
Evento HCI (específico do fornecedor)
Eventos HCI específicos do fornecedor são necessários em alguns casos. Consulte a Figura 5.4 na página 1897 da especificação BT Core 5.2. O parâmetro de evento 0 sempre conterá o primeiro código de subevento, com base no qual o restante do evento HCI é decodificado.
Parâmetro de evento | Tamanho | Objetivo |
---|---|---|
HCI_vendor_specific_event_code |
1 octeto | 0xFF |
sub_event_code |
1 octeto | Um código de subevento terá 1 octeto de tamanho, o byte imediatamente após o Tamanho do parâmetro no pacote de eventos da HCI. |
Subevento de violação do limite de armazenamento
Esse evento indica que o limite de armazenamento foi excedido.
Código do subevento = 0x54
Parâmetro de subevento | Tamanho | Objetivo |
---|---|---|
Nenhum |
Subevento de mudança de estado de várias publicidades LE
Esse evento indica que uma instância de publicidade mudou de estado. No momento, esse evento só é usado para indicar qual instância de publicidade foi interrompida como resultado de uma conexão.
Código do subevento = 0x55
Parâmetro do subevento | Tamanho | Objetivo |
---|---|---|
Advertising_instance |
1 octeto |
Identifica a instância de publicidade específica Os valores válidos são de 0 a max_advt_instances -1
|
State_Change_Reason |
1 octeto | 0x00: conexão recebida |
Connection_handle |
2 octetos |
Identifica a conexão que causou a desativação da instância advt (0xFFFF se for inválida)
|
Subevento de acompanhamento de publicidade LE
Este evento indica quando um anunciante é encontrado ou perdido.
Código do subevento = 0x56
Parâmetro de subevento | Tamanho | Objetivo |
---|---|---|
APCF_Filter_Index |
1 octeto | Índice do filtro (0, max_filter -1) |
Advertiser_State |
1 octeto |
0x00: anunciante encontrado 0x01: anunciante perdido |
Advt_Info_Present |
1 octeto |
0x00: informações do anunciante (Advt_Info ) presentes0x01: informações do anunciante ( Advt_Info ) ausentes
|
Advertiser_Address |
6 octetos | Endereço público ou aleatório |
Advertiser_Address_Type |
1 octeto |
0x00: endereço público 0x01: endereço aleatório |
Advt_Info |
Tx_Pwr[0] : 1 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 controlador
Este evento é usado por um controlador para fornecer informações de depuração binárias a um host.
Código do subevento = 0x57
Parâmetro de subevento | Tamanho | Objetivo |
---|---|---|
debug_block_byte_offset_start |
2 octetos | Depurar o deslocamento de byte do bloco desde o início |
last_block |
1 octeto |
0x00: mais dados de depuração presentes 0x01: último bloco binário; não há mais dados de depuração |
cur_pay_load_sz |
2 octetos | Tamanho do bloco binário em um evento atual |
Debug_Data |
Variável | Dados de depuração de cur_payload_sz |
Subevento do Relatório de qualidade do Bluetooth
Esse evento indica uma das seguintes situações: ocorreu um evento de qualidade do Bluetooth, o controlador fez upload do rastreamento de mensagens LMP/LL e do trace de programação Bluetooth multilink/Coex ou o controlador despejou dados de informações de depuração.
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: chegando ao LSTO. 0x03: o áudio A2DP está entrecortado. 0x04: (e)A voz do SCO está instável. 0x05 ~ 0x06: reservado. 0x07: o áudio LE fica entrecortado. 0x08: falha na conexão. 0x09 ~ 0xFF: reservado. |
Packet_Types |
1 octeto |
0x01: ID 0x02: NULL 0x03: POLL-0x03: POLL 0x04: FHS 0x05: HV1 0x06: HV2 0x07: HV3 0x08: DV3 0x09: EV3 0x09: EV3 0x09: EV3 0x09: EV3 |
Connection_Handle |
2 octetos | Identificador de conexão ACL/(e)SCO/ISO. |
Connection_Role |
1 octeto |
Execução do papel para a conexão. 0x00: central 0x01: periférico 0x02 ~ 0xFF: reservado. |
TX_Power_Level |
1 octeto |
Nível atual de potência de transmissão para o Connection_Handle especificado.
Esse valor será o mesmo que o controlador respondendo ao comando HCI_Read_Transmitir_Power_Level HCI. |
RSSI |
1 octeto |
[em dBm]
Valor de indicação de intensidade de sinal (RSSI, na sigla em inglês) recebido para o Connection_Handle especificado. |
SNR |
1 octeto |
[em dB]
Valor da relação sinal-ruído (SNR, na sigla em inglês) para o Connection_Handle especificado. |
Unused_AFH_Channel_Count |
1 octeto |
Indica o número de canais não utilizados em AFH_channel_map. 0x4F ~ 0xFF: reservado. |
AFH_Select_Unideal_Channel_Count |
1 octeto |
Indica o número de canais que sofreram interferência e têm má qualidade, mas ainda estão selecionados para AFH. O número mínimo de canais permitidos pela especificação Bluetooth é 20. Assim, mesmo que todos os 79 canais tenham interferência e tenham má qualidade, o controle ainda precisará escolher pelo menos 20 canais para AFH. |
LSTO |
2 octetos |
Configuração atual do tempo limite de supervisão da vinculação. Tempo = N * 0,625 ms Intervalo de tempo: 0,625 ms a 40,9 s |
Connection_Piconet_Clock |
4 octetos |
Relógio Piconet para o Connection_Handle especificado. Esse valor será o mesmo que a resposta do controlador ao comando HCI_Read_Clock HCI com o parâmetro "What_Clock" de 0x01 (Piconet Clock). Unidade: N * 0,3125 ms (1 relógio Bluetooth) |
Retransmission_Count |
4 octetos |
O número de retransmissões desde o último evento. Essa contagem será redefinida após informar o host. |
No_RX_Count |
4 octetos |
Nenhuma contagem de RX desde o último evento. A contagem aumenta quando nenhum pacote é recebido no horário agendado ou o pacote recebido está corrompido. Essa contagem será redefinida após informar o host. |
NAK_Count |
4 octetos |
Contagem de NAK (negativa confirmada) desde o último evento. Essa contagem será redefinida após informar o host. |
Last_TX_ACK_Timestamp |
4 octetos |
Carimbo de data/hora do último TX ACK. Ele é baseado no relógio Bluetooth da
Piconet Central (CLK). Unidade: N * 0,3125 ms (1 relógio Bluetooth) |
Flow_Off_Count |
4 octetos |
O número de vezes que o controlador recebe fluxo desligado (STOP) desde o último evento. Essa contagem será redefinida após informar o host. |
Last_Flow_On_Timestamp |
4 octetos |
Carimbo de data/hora do último fluxo (GO). Ele é baseado no relógio Bluetooth da
Piconet Central (CLK). Unidade: N * 0,3125 ms (1 relógio Bluetooth) |
Buffer_Overflow_Bytes |
4 octetos |
[em byte]
Contagem de estouro de buffer desde o último evento. |
Buffer_Underflow_Bytes |
4 octetos |
[em byte]
Contagem de estouro do buffer desde o último evento. |
bdaddr |
6 octetos | Endereço do dispositivo remoto |
cal_failed_item_count |
1 octeto | Número de itens com falha na calibração |
TX_Total_Packets |
4 octetos | O número de pacotes enviados. |
TX_UnAcked_Packets |
4 octetos |
O número de pacotes que não recebem uma confirmação. Essa contagem é redefinida após a denúncia ao host. |
TX_Flushed_Packets |
4 octetos |
O número de pacotes que não são enviados pelo ponto de limpeza. Essa contagem é redefinida após a denúncia ao host. |
TX_Last_Subevent_Packets |
4 octetos |
O número de pacotes que a camada de enlace transmite uma PDU de dados do CIS no último subevento de um evento de CIS. Essa contagem é redefinida após a denúncia ao host. O valor será zero se não houver um valor válido para o link. |
CRC_Error_Packets |
4 octetos |
O número de pacotes recebidos com erro de CRC desde o último evento. Essa contagem é redefinida após a denúncia ao host. |
RX_Duplicate_Packets |
4 octetos |
O número de pacotes duplicados (retransmissão) recebidos desde o último evento. Essa contagem é redefinida após a denúncia ao host. |
RX_Unreceived_Packets |
4 octetos |
O número de pacotes não recebidos é o mesmo que o parâmetro do comando LE READ ISO Link Quality (consulte a versão 5.4 da especificação do núcleo do Bluetooth). Os streams associados
são CIS e BIS. Quando esse valor é incrementado, a camada de links não recebe um payload específico pelo ponto de liberação (em uma CIS) ou ao final do evento a que está associada (em um BIS; consulte a especificação do núcleo do Bluetooth versão 5.4 Vol 6 parte B, Seção 4.4.6.6). |
Coex_Info_Mask |
2 octetos |
Bit 0 - CoexInvolvement: definido para indicar que há suspeita de que atividades do coex estejam envolvidas
quando este relatório for gerado (por exemplo, Chops A2DP e se aproximando da LSTO). Bit 1: rádio WL 2G ativo: defina para indicar que o rádio WLAN 2G está ativo. Bit 2 — WL 2G conectado: defina para indicar que o rádio WLAN 2G está ativo e conectado. Bit 3 — Radio WL 5G/6G ativo: defina para indicar que o rádio WLAN 5G/6G está ativo. Bit 4 a 15: Reservado |
Parâmetro específico do fornecedor | (comprimento total do parâmetro - a definir) * octetos | Para que o fornecedor do controlador receba mais parâmetros específicos do fornecedor. |
Código do subevento = 0x58 [Quality_Report_Id = 0x05, Root Inflammation event]
Esse evento indica que a HAL de Bluetooth ou o controlador encontrou um erro fatal e precisa da pilha Bluetooth para gravar essa situação e reiniciar. Em qualquer caso, o controlador precisa enviar um Root_Inflammation_Event para a pilha Bluetooth antes de enviar o primeiro fragmento dos eventos de informações de depuração.
O parâmetro Error_Code contém um código de erro relatado pelo HAL/controlador, "0" se for um erro específico do fornecedor de chipset. O Vendor_Specific_Error_Code contém um código de erro específico do fornecedor de chipset de HAL/Controller. Ele precisa ser definido como 0 se o parâmetro Error_Code não for 0. Os parâmetros Error_Code e Vendor_Specific_Error_Code não podem ser 0.
Parâmetro de subevento | Tamanho | Objetivo |
---|---|---|
Quality_Report_Id |
1 octeto |
0x00 ~ 0x04: reservado. 0x05: inflamação da raiz. 0x06 ~ 0xFF: reservado. |
Error_Code |
1 octeto |
0x00: o código de erro específico do fornecedor do chipset é incluído. 0x01 ~ 0xFF: ocorreu uma falha no controlador. Consulte a parte D da especificação Bluetooth [Vol 2], códigos de erro, para ver uma lista de códigos de erro e descrições. |
Vendor_Specific_Error_Code |
1 octeto |
0x00: nenhum código de erro específico do fornecedor do chipset está incluído. 0x01 ~ 0xFF: código de erro específico do fornecedor do chipset. |
Parâmetro específico do fornecedor | (Comprimento total do parâmetro - 4) * octetos | Para que o fornecedor do controlador receba mais parâmetros específicos do fornecedor. |
Código do subevento = 0x58 [Quality_Report_Id = 0x11 ~ 0x13, evento relacionado a despejo de registro]
Parâmetro de subevento | Tamanho | Objetivo |
---|---|---|
Quality_Report_Id |
1 octeto |
0x00 ~ 0x10: reservado. 0x11: trace de mensagens LMP/LL. 0x12: rastro de programação de vários links/Coex Bluetooth. 0x13: despejo de dados de informações de depuração do controlador. 0x14 ~ 0xFF: reservado. |
Connection_Handle |
2 octetos | Identificador de conexão. |
Parâmetro específico do fornecedor | (Comprimento total do parâmetro - 4) * octetos | Formato específico do fornecedor de trace de mensagens LMP, rastreamento de programação Bluetooth multilink/Coex e despejo de dados de informações de depuração do controlador. |
Suporte para vários anunciantes
Os objetivos do suporte para vários anunciantes são os seguintes:
-
Capacidade de oferecer suporte a várias publicidades
(
max_advt_instances
) - Diferentes potências de transmissão para permitir um intervalo variado
- Conteúdo de publicidade diferente
- Uma resposta individualizada para cada anunciante
- Privacidade (não rastreável) para cada anunciante
- Conectável
Para manter essa especificação próxima aos padrões atuais, são fornecidos os seguintes comandos específicos do fornecedor. Eles são derivados da especificação Bluetooth Core 4.1.
Comando de vários anúncios LE_Multi_Advt
OCF: 0x154
Parâmetro de comando | Tamanho | Objetivo |
---|---|---|
Multi_advt_opcode |
1 octeto |
0x01 – Set_Advt_Param_Multi_Sub_Cmd 0x02 - Set_Advt_Data_Multi_Sub_Cmd 0x03 - Set_Scan_Resp_Data_Multi_Sub_Cmd 0x04 - Set_Random_Addr_Multi_Sub_Cmd 0x05 - Set_Advt_Enable_Multi_Sub_Cmd
|
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
Multi_advt_opcode |
1 octeto |
0x01 – Set_Advt_Param_Multi_Command 0x02 - Set_Advt_Data_Multi_Command 0x03 - Set_Scan_Resp_Data_Multi_Command 0x04 - Set_Random_Addr_Multi_Command 0x05 - Set_Advt_Enable_Multi_Command
|
LE_Multi_Advt_Command: Set_Advt_Param_Multi_Sub_Cmd
Referência de base: especificação Bluetooth Core 4.1, página 964 (comando de parâmetro de publicidade LE Set)
Sub OCF: 0x01
Parâmetro do subcomando | Tamanho | Objetivo |
---|---|---|
Advertising_Interval_Min |
De acordo com a especificação | De acordo com a especificação |
Advertising_Interval_Max |
De acordo com a especificação | De acordo com a especificação |
Advertising_Type |
De acordo com a especificação | De acordo com a especificação |
Own_Address_Type |
De acordo com a especificação | De acordo com a especificação |
Own_Address |
De acordo com a especificação | De acordo com a especificação |
Direct_Address_Type |
De acordo com a especificação | De acordo com a especificação |
Direct_Address |
De acordo com a especificação | De acordo com a especificação |
Advertising_Channel_Map |
De acordo com a especificação | De acordo com a especificação |
Adverstising_Filter_Policy |
De acordo com a especificação | De acordo com a especificação |
Advertising_Instance |
1 octeto | Especifica a aplicabilidade dos parâmetros acima a uma instância |
Tx_power |
1 octeto |
Transmitir_Power Unidade: em dBm (número inteiro assinado) Intervalo (-70 a +20) |
O parâmetro Own_Address
pode ser um endereço configurado pelo host no momento da configuração dessa instância de várias divulgações. Isso permite ter um endereço particular resolvível no momento da transmissão do primeiro beacon. A publicidade em uma instância continuará, independentemente da conexão. A pilha BT do host pode emitir um comando para iniciar a divulgação em uma instância após a conexão.
Um evento "Command Complete" será gerado para esse comando, conforme especificado
na especificação Bluetooth Core 4.1, conforme o comando acima. O controlador responderá com um código de falha (parâmetro inválido) se a instância de publicidade ou os parâmetros Tx_Power
forem inválidos.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
Multi_advt_opcode |
1 octeto | 0x01 [Set_Advt_Param_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd
Referência de base: especificação Bluetooth Core 4.1, página 969 (LE Set Advertising Data Command)
Sub OCF: 0x02
Parâmetro do subcomando | Tamanho | Objetivo |
---|---|---|
Advertising_Data_Length |
De acordo com a especificação | De acordo com a especificação |
Advertising_Data |
De acordo com a especificação | De acordo com a especificação |
Advertising_Instance |
1 octeto | Especifica a aplicabilidade dos parâmetros acima a uma instância |
Um evento "Command Complete" será gerado para esse comando, conforme especificado
na especificação Bluetooth Core 4.1, conforme o comando acima. O controlador responderá com um código de falha se a instância de publicidade ou os parâmetros Tx_Power
forem inválidos.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
Multi_advt_opcode |
1 octeto | 0x02 [Set_Advt_Data_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd
Referência de base: especificação Bluetooth Core 4.1, página 970 (comando de dados de resposta de verificação LE Set)
Sub OCF: 0x03
Parâmetro do subcomando | Tamanho | Objetivo |
---|---|---|
Scan_Response_Data_Length |
De acordo com a especificação | De acordo com a especificação |
Scan_Response_Data |
De acordo com a especificação | De acordo com a especificação |
Advertising_Instance |
1 octeto | Especifica a aplicabilidade dos parâmetros acima a uma instância |
Um evento "Command Complete" será gerado para esse comando, conforme especificado
na especificação Bluetooth Core 4.1, conforme o comando acima. O controlador responderá com um código de falha (parâmetro inválido) se a instância de publicidade ou os parâmetros Tx_Power
forem inválidos.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
Multi_advt_opcode |
1 octeto | 0x03 [Set_Scan_Resp_Data_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd
Referência de base: especificação Bluetooth Core 4.1, página 963 (LE Set Random Address Command)
Sub OCF: 0x04
Parâmetro do subcomando | Tamanho | Objetivo |
---|---|---|
Endereço aleatório | De acordo com a especificação | De acordo com a especificação |
Advertising_Instance |
1 octeto | Especifica a aplicabilidade dos parâmetros acima a uma instância |
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
Multi_advt_opcode |
1 octeto | 0x04 [Set_Random_Addr_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd
Referência de base: especificação Bluetooth Core 4.1, página 971 (comando "Ativar anúncio" de LE Set nessa especificação principal)
OCF: 0x05
Parâmetro do subcomando | Tamanho | Objetivo |
---|---|---|
Advertising_Enable |
1 octeto | Um valor de 1 significa ativar. Qualquer outro valor significa "desativar". |
Advertising_Instance |
1 octeto | Especifica a aplicabilidade dos parâmetros acima a uma instância. Instância 0 significa uma instância HCI padrão. |
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
Multi_advt_opcode |
1 octeto | 0x05 [Set_Advt_Enable_Multi_Sub_Cmd] |
Resolução descarregada do endereço privado
Esse recurso resolve um endereço particular no firmware ou hardware do controlador, o que oferece os seguintes benefícios:
- Latência envolvida com o host na resolução de um endereço privado
- Economizando energia ao não ativar o host
LE_Set_RPA_Tempo limite
OCF: 0x15C
Parâmetro de comando | Tamanho | Objetivo |
---|---|---|
LE_local_IRK |
16 octetos | O IRK do dispositivo local usado para gerar os endereços resolvíveis aleatórios. |
tRPA_min |
2 octetos |
O tempo limite mínimo da geração de RPA em segundos. O controlador precisa
gerar novos endereços resolvíveis para qualquer
evento de publicidade/verificação/conexão após esse tempo limite. Intervalo válido: 300 a 1800 |
tRPA_max |
2 octetos |
O tempo limite máximo da geração de RPA em segundos. O controlador precisa gerar novos endereços resolvíveis para qualquer evento de publicidade/verificação/conexão nesse tempo limite ou antes dele. Intervalo válido: tRPA_min -1800
|
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto |
O status do comando. Valores de status HCI sugeridos: 0x00 Sucesso 0x01 Comando desconhecido (se não houver suporte) 0x12 Parâmetros de comando inválidos (se algum parâmetro estiver fora do intervalo fornecido) |
LE_RPA_offload_Command
OCF: 0x155
Parâmetro de comando | Tamanho | Objetivo |
---|---|---|
RPA_offload_opcode |
1 octeto |
0x1: ativar recurso específico do cliente 0x2: adicionar IRK à lista 0x3: remover IRK da lista 0x4: limpar lista IRK 0x5: ler a entrada da lista IRK |
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
Event_RPA_offload_opcode |
1 octeto |
0x1: ativar recurso específico do cliente 0x2: adicionar IRK à lista 0x3: remover IRK da lista 0x4: limpar lista IRK 0x5: ler a entrada da lista IRK |
LE_RPA_offload: Enable_cust_specific_sub_Command
Sub OCF: 0x01
Parâmetro do subcomando | Tamanho | Objetivo |
---|---|---|
enable_customer_specific_feature_set |
1 octeto |
0x01: ativar recurso de RPA descarregado 0x00: desativar o recurso de RPA descarregado |
O descarregamento de RPA precisa ser ativado pelo host, com base na capacidade
do chip. Consulte o LE_Get_Vendor_Capabilities_Command
.
Cada chip pode ter um max_irk_list_sz
variável no firmware.
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
Event_cust_specific_feature_opcode |
1 octeto | 0x01 [Ativar recurso específico do cliente] |
LE_RPA_offload: Add_IRK_to_list_sub_Command
Sub OCF: 0x02
Parâmetro do subcomando | Tamanho | Objetivo |
---|---|---|
LE_IRK |
16 octetos | LE IRK (LSB de primeiro byte) |
Address_Type |
1 octeto |
0: Endereço público 1: Endereço aleatório |
LE_Device_Address |
6 octetos | Endereço público ou aleatório associado ao IRK (LSB de primeiro byte) |
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
Event_cust_specific_feature_opcode |
1 octeto | 0x02 [Adicionar IRK à lista] |
LE_IrkList_AvailableSpaces |
1 octeto | Entradas da lista de treinamentos presenciais disponíveis após a operação atual |
LE_RPA_offload: Remove_IRK_to_list_sub_Command
Sub OCF: 0x03
Parâmetro do subcomando | Tamanho | Objetivo |
---|---|---|
Address_Type |
1 octeto |
0: Endereço público 1: Endereço aleatório |
LE_Device_Address |
6 octetos | Endereço público ou aleatório associado ao IRK |
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
Event_cust_specific_feature_opcode |
1 octeto | 0x03 [Remover IRK da lista] |
LE_IrkList_AvailableSpaces |
1 octeto | Entradas da lista de treinamentos presenciais disponíveis após a operação atual |
LE_RPA_offload: Clear_IRK_list_sub_Command
Sub OCF: 0x04
Parâmetro do subcomando | Tamanho | Objetivo |
---|---|---|
Nenhum |
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
Event_cust_specific_feature_opcode |
1 octeto | 0x04 [Limpar lista IRK] |
LE_IrkList_AvailableSpaces |
1 octeto |
Entradas da lista de lugares reais disponíveis após a operação atual [max_irk_list_sz]
|
LE_RPA_offload: Read_IRK_list_sub_Command
Sub OCF: 0x05
Parâmetro do subcomando | Tamanho | Objetivo |
---|---|---|
LE_read_IRK_list_entry-index |
1 octeto | Índice da lista IRK [0, max_irk_list_sz-1] |
Um evento "Comando completo" será gerado para este comando.
Parâmetro de retorno | Tamanho | Objetivo |
---|---|---|
Status |
1 octeto | Status do comando concluído |
Event_cust_specific_feature_opcode |
1 octeto | 0x05 [Ler entrada da lista IRK] |
LE_Read_IRK_List_entry |
1 octeto | Índice do IRK que o host quer ler (o tamanho máximo da lista IRK é 32) |
LE_IRK |
16 octetos | Valor IRK |
Address_Type |
1 octeto |
0: Endereço público 1: Endereço aleatório |
LE_Device_Address |
6 octetos | Endereço público ou aleatório associado ao IRK |
LE_Resolved_Private_Address |
6 octetos | Endereço particular resolvido atualmente resolvido deste IRK |