A Host Controller Interface (HCI) é usada para interagir com um controlador Bluetooth.
Este documento fornece uma lista de requisitos de HCI para Bluetooth (BT) e Bluetooth Low Energy (BLE). O objetivo é que os fornecedores de pilha Host BT e os fornecedores de controladores BT estejam em conformidade com esses requisitos de plataforma para usar o conjunto de recursos descrito abaixo.
Este documento refere-se à especificação Bluetooth Core 5.2 como "especificação". A especificação Bluetooth Core 5.2 está disponível no site da Bluetooth SIG junto com outros documentos adotados.
Visão geral do projeto
Capacidades e configuração do chip
Como uma plataforma aberta, o Android possui uma matriz de lançamentos de software, OEMs, fornecedores e recursos de plataforma e chip.
Para gerenciar o cenário variado e gerenciar migrações, uma filosofia de design que permite aos controladores BT expor suas capacidades (além da especificação Bluetooth Core 5.2 padrão) é descrita neste documento. A pilha BT do host pode então usar esses recursos para determinar quais recursos ativar.
Apoiando padrões abertos
Um dos objetivos do Android é oferecer suporte a padrões abertos após a ratificação de uma especificação Bluetooth. Se um recurso descrito abaixo estiver disponível nos métodos HCI padrão em uma especificação Bluetooth futura, tenderemos a tornar essa abordagem o padrão.
Capacidades específicas do fornecedor
Comando específico do fornecedor: LE_Get_Vendor_Capabilities_Command
Campo de comando OpCode (OCF): 0x153
Parâmetro de comando | Tamanho | Propósito |
---|---|---|
N / D | Lista de parâmetros de comando vazia |
Um evento Command Complete será gerado para este comando.
Parâmetro de retorno | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Status completo do comando |
max_advt_instances (Descontinuada) | 1 octeto | Número de instâncias de anúncio suportadas. Reservado após v0.98. Este parâmetro foi descontinuado na especificação de recursos do Google v0.98 e superior em favor do LE Extended Advertising disponível na especificação BT versão 5.0 e superior. |
offloaded_resolution_of_private-address (Descontinuada) | 1 octeto | Capacidade de chip BT de RPA. Se for suportado por um chip, ele precisa ser habilitado pelo host. 0 = Não é capaz 1 = Capaz Reservado após v0.98. Este parâmetro foi descontinuado na especificação de recursos do Google v0.98 e superior em favor do recurso Privacidade disponível na especificação BT versão 4.2 e superior. |
total_scan_results_storage | 2 octetos | Armazenamento para resultados de verificação em bytes |
max_irk_list_sz | 1 octeto | Número de entradas IRK suportadas no firmware |
filtering_support | 1 octeto | Suporte para filtragem no controlador 0 = Não suportado 1 = Suportado |
max_filter | 1 octeto | Número de filtros suportados |
activity_energy_info_support | 1 octeto | Suporta relatórios de atividades e informações de energia 0 = Não é capaz 1 = Capaz |
version_supported | 2 octetos | Especifica a versão da especificação de recurso do Google compatível byte[0] = número principal byte[1] = número menor v1.04 byte[0] = 0x01 byte[1] = 0x04 |
total_num_of_advt_tracked | 2 octetos | Número total de anunciantes rastreados para fins OnLost / OnFound |
extended_scan_support | 1 octeto | Suporta janela e intervalo de varredura estendidos |
debug_logging_supported | 1 octeto | Suporta registro de informações de depuração binária do controlador |
LE_address_generation_offloading_support (Descontinuada) | 1 octeto | 0 = Não suportado 1 = Suportado Reservado após v0.98. Este parâmetro foi descontinuado na especificação de recursos do Google v0.98 e superior em favor do recurso Privacidade disponível na especificação BT versão 4.2 e superior. |
A2DP_source_offload_capability_mask | 4 octetos | Máscaras de bits para tipos de codec suportados Bit 0 - SBC Bit 1 - AAC Bit 2 - APTX Bit 3 - APTX HD Bit 4 - LDAC Bit 5-31 são reservados |
bluetooth_quality_report_support | 1 octeto | Suporta relatórios de eventos de qualidade Bluetooth 0 = Não é capaz 1 = Capaz |
dynamic_audio_buffer_support | 4 octetos | Suporta buffer de áudio dinâmico no controlador Bluetooth Máscaras de bits para tipos de codec suportados Bit 0 - SBC Bit 1 - AAC Bit 2 - APTX Bit 3 - APTX HD Bit 4 - LDAC Bit 5-31 são reservados |
a2dp_offload_v2_support | 1 octeto | Suporta comandos A2dp Offload v2 no controlador Bluetooth (consulte Iniciar A2DP Offload , Parar A2DP Offload ) 0 = Não suportado 1 = Suportado |
Lote de resultados de verificação
Um objetivo do design é aprimorar a forma como as notificações de eventos de resposta de varredura do Bluetooth LE são entregues ao host, a fim de economizar energia no host.
Ao reduzir a frequência com que o controlador notifica o processador do aplicativo host para verificar os resultados, o processador do aplicativo host pode permanecer inativo/hiberno 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 chip para armazenamento dos resultados da varredura.
Este recurso se concentra no gerenciamento e configuração do recurso de armazenamento LE Scan Results no controlador Bluetooth. O armazenamento é usado para agrupar temporariamente dados de anúncio e digitalizar dados e metadados que são recebidos pelo controlador para entrega posterior ao host.
O firmware deve suportar dois tipos de lote, que podem ser ativados simultaneamente:
- Truncado. Contém os seguintes elementos de informação: {MAC, TX Power, RSSI, Timestamp}
- Completo. 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 | Propósito |
---|---|---|
Batch_Scan_opcode | 1 octeto | 0x1 – Habilitar recurso específico do cliente 0x2 - Definir parâmetros de armazenamento de digitalização em lote 0x3 - Definir parâmetros de digitalização em lote 0x4 - Ler parâmetros do resultado da verificação em lote |
Um evento Command Complete será gerado para este comando. A ativação do recurso específico do cliente não inicia a verificação.
Parâmetro de retorno | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Status completo do comando |
Batch_Scan_opcode | 1 octeto | 0x1 – Habilitar recurso específico do cliente 0x2 - Definir parâmetros de armazenamento de digitalização em lote 0x3 - Definir parâmetros de digitalização em lote 0x4 - Ler parâmetros do resultado da verificação em lote |
LE_Batch_Scan_Command: Habilitar recurso específico do cliente
Sub OCF: 0x01
Parâmetro de subcomando | Tamanho | Propósito |
---|---|---|
enable_customer_specific_feature_set | 1 octeto | 0x01 - Habilitar recurso de digitalização em lote 0x00 - Desativar recurso de digitalização em lote |
Um evento Command Complete será gerado para este comando.
Parâmetro de retorno | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Status completo do comando |
Batch_Scan_opcode | 1 octeto | 0x1 – Habilitar recurso específico do cliente 0x2 - Definir parâmetros de armazenamento de digitalização em lote 0x3 - Definir parâmetros de digitalização em lote 0x4 - Ler parâmetros do resultado da verificação em lote |
LE_Batch_Scan_Command: Definir subcomando parâmetro de armazenamento de digitalização em lote
Sub OCF: 0x02
Parâmetro de subcomando | Tamanho | Propósito |
---|---|---|
Batch_Scan_Full_Max | 1 octeto | Espaço máximo de armazenamento (em%) alocado para estilo completo [Intervalo: 0-100] |
Batch_Scan_Truncated_Max | 1 octeto | Espaço máximo de armazenamento (em%) alocado para estilo truncado [Intervalo: 0-100] |
Batch_Scan_Notify_Threshold | 1 octeto | Nível de notificação de configuração (em%) para pool de armazenamento individual [Intervalo: 0-100] Definir como 0 desativará a notificação. O evento HCI específico do fornecedor é gerado (subevento de violação do limite de armazenamento) |
Um evento Command Complete será gerado para este comando.
Parâmetro de retorno | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Status completo do comando |
Batch_scan_opcode | 1 octeto | 0x02 [Definir parâmetros de digitalização em lote] |
LE_Batch_Scan_Command: Definir subcomando Parâmetro de digitalização em lote
Sub OCF: 0x03
Parâmetro de subcomando | Tamanho | Propósito |
---|---|---|
Batch_Scan_Mode | 1 octeto | 0x00 – A verificação em lote está desativada 0x01 – O modo truncado está habilitado 0x02 – O modo completo está ativado 0x03 – Os modos Truncado e Completo estão habilitados |
Duty_cycle_scan_window | 4 octetos | Tempo de varredura da varredura em lote (nº de slot) |
Duty_cyle_scan_interval | 4 octetos | Período de intervalo de varredura em lote (nº de slot) |
own_address_type | 1 octeto | 0x00 - Endereço do dispositivo público 0x01 - Endereço aleatório do dispositivo |
Batch_scan_Discard_Rule | 1 octeto | 0 - Descartar anúncio mais antigo 1 – Descarte propaganda com RSSI mais fraco |
Este subcomando iniciará a digitalização em lote, se habilitado. Na verificação truncada, os resultados são armazenados em formato truncado, onde a chave exclusiva para o estilo truncado = { BD_ADDR,
scan_interval}. Isto significa que apenas um BD_ADDR will
gravado para cada intervalo de varredura. 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 registradas. A chave exclusiva de estilo completo = {MAC, pacote de anúncios}, independentemente do intervalo de varredura. O registro a ser mantido no modo Completo é { BD_ADDR
, Tx Power, RSSI, Timestamp, Ad packet, Scan Response}. No estilo Full, o mesmo pacote AD, quando visto diversas vezes em diferentes intervalos de varredura, é registrado apenas uma vez. Entretanto, no modo Truncado, é a visibilidade de BA_ADDR
em diferentes intervalos de varredura que é de interesse (uma vez por intervalo de varredura). O RSSI é o valor médio de todas as duplicatas de um anúncio exclusivo dentro de um intervalo de varredura.
Um evento Command Complete será gerado para este comando.
Parâmetro de retorno | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Status completo do comando |
Batch_scan_opcode | 1 octeto | 0x03 [Definir parâmetros de digitalização em lote] |
LE_Batch_Scan_Command: subcomando Ler resultados da verificação em lote
Sub OCF: 0x04
Parâmetro de subcomando | Tamanho | Propósito |
---|---|---|
Batch_Scan_Data_read | 1 octeto | 0x01 – Dados do modo truncado 0x02 – Dados de modo completo |
Um evento Command Complete será gerado para este comando. Quando o host emite esse comando, todos os resultados no controlador podem não caber em um evento Command Complete. O host irá iterar emitindo este 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 possui mais registros para comunicar ao host. Cada evento Command Complete pode conter vários registros de apenas um tipo de dados (Completo ou Truncado).
As referências de horário 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 em quando Read_Batch_Scan_Results_Sub_cmd
é fornecido pelo host. Se a hora de chegada de um comando for T_c
no firmware, a hora real em que o carimbo de data/hora foi obtido no firmware será T_fw
. O horário 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 | Propósito |
---|---|---|
Status | 1 octeto | Status completo do comando |
Batch_scan_opcode | 1 octeto | 0x03 [Definir parâmetros de digitalizaçã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: Endereço[0]: 6 octetos Address_Type[0]: 1 octeto Tx_Pwr[0]: 1 octeto RSSI[0]: 1 octeto Timestamp[0]: 2 octetos [múltiplos registros ( num_of_records ) com formato acima]Modo Completo: Endereço[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]: octetos Adv_packet_len Scan_data_resp_len[0]: 1 octeto Scan_data_resp[0]: octetos Scan_data_resp [vários registros com formato acima ( num_of_records )] |
Filtro de conteúdo de pacote publicitário
Use isto para ativar/desativar/configurar o Filtro de Conteúdo de Pacote de Publicidade (APCF) no controlador. A 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 | Propósito |
---|---|---|
APCF_opcode | 1 octeto | 0x00 - Ativar APCF 0x01 - APCF Definir parâmetros de filtragem 0x02 - Endereço da emissora APCF 0x03 - UUID do serviço APCF 0x04 - UUID de solicitação de serviço APCF 0x05 - Nome Local APCF 0x06 - Dados do fabricante APCF 0x07 - Dados de serviço APCF 0x08 - Serviço de descoberta de transporte APCF 0x09 - Filtro de tipo AD APCF 0x10 ~ 0xAF – Reservado para uso futuro 0xB0 ~ 0xDF – Reservado para fornecedor 0xE0 ~ 0xFE – Reservado para uso futuro 0xFF - Recursos estendidos de leitura APCF |
Um evento Command Complete será gerado para este comando.
Parâmetro de retorno | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Status de devolução |
APCF_opcode | 1 octeto | 0x00 - Ativar APCF 0x01 - APCF Definir parâmetros de filtragem 0x02 - Endereço da emissora APCF 0x03 - UUID do serviço APCF 0x04 - UUID de solicitação de serviço APCF 0x05 - Nome Local APCF 0x06 - Dados do fabricante APCF 0x07 - Dados de serviço APCF 0x08 - Serviço de descoberta de transporte APCF 0x09 - Filtro de tipo AD APCF 0x10 ~ 0xAF – Reservado para uso futuro 0xB0 ~ 0xDF – Reservado para fornecedor 0xE0 ~ 0xFE – Reservado para uso futuro 0xFF - Recursos estendidos de leitura APCF |
LE_APCF_Command: Enable_sub_cmd
Sub OCF: 0x00
Parâmetro de subcomando | Tamanho | Propósito |
---|---|---|
APCF_enable | 1 octeto | 0x01 - Habilitar recurso APCF 0x00 - Desativar recurso APCF |
Um evento Command Complete será gerado para este comando.
Parâmetro de retorno | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Status completo do comando |
APCF_opcode | 1 octeto | 0x0 - Ativar APCF |
APCF_Enable | 1 octeto | Ativar/desativar é definido via APCF_enable |
LE_APCF_Command: set_filtering_parameters_sub_cmd
Este 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 | Propósito |
---|---|---|
APCF_Action | 1 octeto | 0x00 - Adicionar 0x01 - Excluir 0x02 - Limpar Excluir limpará o filtro específico junto com as entradas de recursos associadas em outras tabelas. Limpar limpará todos os filtros e entradas associadas em outras tabelas. |
APCF_Filter_Index | 1 octeto | Índice de 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 alteração de dados de serviço Bit 2: definido para ativar a verificação de UUID de serviço Bit 3: definido para ativar a verificação UUID de solicitação de serviço Bit 4: definido para ativar a verificação do nome local Bit 5: definido para ativar a verificação de dados do fabricante Bit 6: definido para ativar a verificação de dados de serviço Bit 7: definido para ativar a verificação do serviço de descoberta de transporte Bit 8: definido para ativar a verificação de tipo de AD |
APCF_List_Logic_Type | 2 octetos | Operação lógica para cada seleção de recurso (posição por bit) especificada em APCF_Feature_Selection .Válido somente quando um recurso está habilitado. Valor da posição do bit: 0: OU 1: E Se a lógica "AND" for selecionada, um pacote ADV passará pelo filtro somente se contiver TODAS as entradas na lista. Se a lógica "OR" for selecionada, um pacote ADV passará no filtro se contiver alguma das entradas na lista. |
APCF_Filter_Logic_Type | 1 octeto | 0x00: OU 0x01: E Nota: O tipo de lógica é N/A para os três primeiros campos de APCF_Feature_Selection , que é sempre lógica "AND". Eles são aplicáveis apenas para (Bit 3 - Bit 6) quatro campos de APCF_Feature_Selection . |
rssi_high_thresh | 1 octeto | [em dBm] O anunciante é considerado visto apenas se o sinal for superior ao limite alto do RSSI. Caso contrário, o firmware deverá se comportar como se nunca tivesse visto. |
delivery_mode | 1 octeto | 0x00 - immediate 0x01 on_found 0x02 - batched |
onfound_timeout | 2 octetos | Válido somente se delivery_mode for on_found .[em milissegundos] É hora do firmware demorar e coletar anúncios adicionais antes de reportar. |
onfound_timeout_cnt | 1 octeto | Válido somente se delivery_mode for on_found .[contar] 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 , será relatado OnFound imediatamente em seguida. |
rssi_low_thresh | 1 octeto | Válido somente se delivery_mode for on_found .[em dBm] O pacote do anunciante é considerado não visto se o RSSI do pacote recebido não estiver acima do limite baixo de RSSI. |
onlost_timeout | 2 octetos | Válido somente se delivery_mode for on_found .[em milissegundos] Se um anúncio, após ser encontrado, não for visto de forma contígua durante o período lost_timeout , ele será imediatamente reportado como perdido. |
num_of_tracking_entries | 2 octetos | Válido somente se delivery_mode for on_found .[contar] Número total de anunciantes a serem rastreados por filtro. |
Os valores RSSI devem usar complemento de 2 para representar valores negativos.
O host deverá ser capaz de configurar vários filtros com APCF_Application_Address_type
definido como 0x02 (para todos os endereços de radiodifusor) para gerenciar várias combinações de filtros.
Filtragem, lote e relatórios são conceitos inter-relacionados. Cada anúncio e resposta de verificação relacionada terão 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 os seguintes: report_immediately
, batch
e onFound
. O valor OnLost
está relacionado ao OnFound
no sentido de que virá depois OnFound
quando for perdido.
Este fluxo de processamento descreve o modelo conceitual:
Quando um quadro de anúncio (ou resposta de varredura) é 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 lote do mesmo devido a uma ação de filtro diferente.
Os limites de nível RSSI (alto e baixo) permitem controlar quando o quadro está visível para processamento de filtro, mesmo quando um pacote válido é recebido pelo controlador. No caso do modo de entrega ser definido como imediato ou em lote, o RSSI de um quadro é considerado para processamento posterior do controlador. Aplicativos diferentes precisam de relatórios e comportamentos de lote diferentes. Isso permite que vários aplicativos tenham relatórios diretos e/ou lotes de resultados no firmware, simultaneamente. Um exemplo é o caso em que uma verificação em lote está ativa em um aplicativo e, posteriormente, uma verificação LE regular é emitida por outro aplicativo. Antes de uma verificação em lote ser emitida, a estrutura/aplicativo define os filtros apropriados. Mais tarde, quando o segundo aplicativo emitir uma verificação regular, o lote anterior continuará. No entanto, devido à verificação regular, é semelhante a adicionar conceitualmente um filtro nulo (junto com todos os filtros existentes) junto com o comando LE scan. Os parâmetros do comando LE scan têm precedência quando ativos. Quando a varredura LE regular é desativada, o controlador reverterá para uma varredura em lote anterior, se ela existir.
O modo de entrega OnFound
é baseado em filtros configurados. Uma combinação que aciona o sucesso da ação de um filtro é considerada a entidade a ser rastreada para onLost
. O evento correspondente é o subevento de rastreamento LE Advt.
A transição OnFound/OnLost
para um filtro (se habilitado) terá a seguinte aparência:
Um evento Command Complete será gerado para este comando.
Parâmetro de retorno | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Status completo do comando |
APCF_opcode | 1 octeto | 0x01 - APCF define parâmetros de filtragem |
APCF_Action | 1 octeto | Ecoar APCF_Action do comando back |
APCF_AvailableSpaces | 1 octeto | Número de entradas disponíveis na tabela de filtros |
LE_APCF_Command: broadcast_address_sub_cmd
Este subcomando é usado para adicionar ou excluir um endereço de anunciante ou para limpar a lista de endereços do anunciante para filtragem no chip.
Sub OCF: 0x02
Parâmetro de subcomando | Tamanho | Propósito |
---|---|---|
APCF_Action | 1 octeto | 0x00 - Adicionar 0x01 - Excluir 0x02 - Limpar Excluir excluirá o endereço da emissora especificado no filtro especificado. Limpar limpará todos os endereços de emissoras no filtro especificado. |
APCF_Filter_Index | 1 octeto | Índice de filtro (0, max_filter-1 ) |
APCF_Broadcaster_Address | 6 octeto | Endereço de 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 (tipo de endereço não aplicável) |
Um evento Command Complete será gerado para este comando.
Parâmetro de retorno | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Status completo do comando |
APCF_opcode | 1 octeto | 0x02 - Endereço da emissora APCF |
APCF_Action | 1 octeto | Ecoar APCF_Action do comando back |
APCF_AvailableSpaces | 1 octeto | Número de entradas gratuitas ainda disponíveis na tabela de endereços de transmissão |
LE_APCF_Command: service_uuid_sub_cmd
Este subcomando é usado para adicionar ou excluir um UUID de serviço ou para limpar uma lista de UUID de serviço para filtragem no chip.
Sub OCF: 0x03
Parâmetro de subcomando | Tamanho | Propósito |
---|---|---|
APCF_Action | 1 octeto | 0x00 - Adicionar 0x01 - Excluir 0x02 - Limpar Excluir excluirá o endereço UUID de serviço especificado no filtro especificado. Limpar limpará todos os UUIDs de serviço no filtro especificado. |
APCF_Filter_Index | 1 octeto | Índice de filtro (0, max_filter -1) |
APCF_UUID | 2,4,16 octeto | O UUID de serviço (16 bits, 32 bits ou 128 bits) para adicionar ou excluir da lista. |
APCF_UUID_MASK | 2,4,16 octeto | A máscara UUID de serviço (16 bits, 32 bits ou 128 bits) a ser adicionada à lista. Deve ter o mesmo comprimento que APCF_UUID. |
Um evento Command Complete será gerado para este comando.
Parâmetro de retorno | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Status completo do comando |
APCF_opcode | 1 octeto | 0x03 - UUID do serviço APCF |
APCF_Action | 1 octeto | Ecoar APCF_Action do comando back |
APCF_AvailableSpaces | 1 octeto | Número de entradas gratuitas ainda disponíveis na tabela UUID de serviço |
LE_APCF_Command: solicitação_uuid_sub_cmd
Este subcomando é usado para adicionar ou excluir um UUID de solicitação ou para limpar uma lista de UUID de solicitação para filtragem no chip.
Sub OCF: 0x04
Parâmetro de subcomando | Tamanho | Propósito |
---|---|---|
APCF_Action | 1 octeto | 0x00 - Adicionar 0x01 - Excluir 0x02 - Limpar Excluir excluirá o endereço UUID da solicitação no filtro especificado. Limpar limpará todos os UUIDs de solicitação no filtro especificado. |
APCF_Filter_Index | 1 octeto | Índice de filtro (0, max_filter -1) |
APCF_UUID | 2,4,16 octeto | O UUID de solicitação (16 bits, 32 bits ou 128 bits) a ser adicionado ou excluído da lista. |
APCF_UUID_MASK | 2,4,16 octeto | A máscara UUID de solicitação (16 bits, 32 bits ou 128 bits) a ser adicionada à lista. Deve ter o mesmo comprimento que APCF_UUID . |
Um evento Command Complete será gerado para este comando.
Parâmetro de retorno | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Status completo do comando |
APCF_opcode | 1 octeto | 0x04 - UUID de solicitação APCF |
APCF_Action | 1 octeto | Ecoar APCF_Action do comando back |
APCF_AvailableSpaces | 1 octeto | Número de entradas gratuitas ainda disponíveis na tabela UUID de Solicitação |
LE_APCF_Command: local_name_sub_cmd
Este subcomando é usado para adicionar ou excluir uma sequência de nomes locais ou para limpar a lista de sequências de nomes locais para filtragem no chip.
Sub OCF: 0x05
Parâmetro de subcomando | Tamanho | Propósito |
---|---|---|
APCF_Action | 1 octeto | 0x00 - Adicionar 0x01 - Excluir 0x02 - Limpar Excluir excluirá a sequência de nome local especificada no filtro especificado. Limpar limpará todas as sequências de nomes locais no filtro especificado. |
APCF_Filter_Index | 1 octeto | Índice de filtro (0, max_filter -1) |
APCF_LocName_Mandata_or_SerData | Tamanho variável | Uma sequência de caracteres para o nome local. Notas:
|
Um evento Command Complete será gerado para este comando.
Parâmetro de retorno | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Status completo do comando |
APCF_opcode | 1 octeto | 0x05 - Nome Local APCF |
APCF_Action | 1 octeto | Ecoar APCF_Action do comando back |
APCF_AvailableSpaces | 1 octeto | Número de entradas gratuitas ainda disponíveis na tabela de nomes locais |
LE_APCF_Command: manf_data_sub_cmd
Este subcomando é usado para adicionar ou excluir uma sequência de dados do fabricante ou para limpar a lista de sequências de dados do fabricante para filtragem no chip.
Sub OCF: 0x06
Parâmetro de subcomando | Tamanho | Propósito |
---|---|---|
APCF_Action | 1 octeto | 0x00 - Adicionar 0x01 - Excluir 0x02 - Limpar Excluir excluirá a sequência de dados do fabricante especificada no filtro especificado. Limpar limpará todas as sequências de dados do fabricante no filtro especificado. |
APCF_Filter_Index | 1 octeto | Índice de filtro (0, max_filter -1) |
APCF_LocName_Mandata_or_SerData | Tamanho variável | Uma sequência de caracteres para dados do fabricante. Notas:
|
APCF_ManData_Mask | Tamanho variável | A máscara de dados de fabricação a ser adicionada à lista. Deve ter o mesmo comprimento que APCF_LocName_or_ManData_or_SerData . |
Um evento Command Complete será gerado para este comando.
Parâmetro de retorno | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Status completo do comando |
APCF_opcode | 1 octeto | 0x06 - Dados do fabricante APCF |
APCF_Action | 1 octeto | Ecoar APCF_Action do comando back |
APCF_AvailableSpaces | 1 octeto | Número de entradas gratuitas ainda disponíveis na tabela Dados do Fabricante |
LE_APCF_Command: service_data_sub_cmd
Este subcomando é usado para adicionar ou excluir uma sequência de dados de serviço ou para limpar a lista de sequências de dados de serviço para filtragem no chip.
Sub OCF: 0x07
Parâmetro de subcomando | Tamanho | Propósito |
---|---|---|
APCF_Action | 1 octeto | 0x00 - Adicionar 0x01 - Excluir 0x02 - Limpar Excluir excluirá a sequência de dados de serviço especificada no filtro especificado. Limpar limpará todas as sequências de dados de serviço no filtro especificado. |
APCF_Filter_Index | 1 octeto | Índice de filtro (0, max_filter -1) |
APCF_LocName_Mandata_or_SerData | Tamanho variável | Uma sequência de caracteres para dados de serviço. Notas:
|
APCF_LocName_Mandata_or_SerData_Mask | Tamanho variável | A máscara de dados de serviço a ser adicionada à lista. Deve ter o mesmo comprimento que APCF_LocName_or_ManData_or_SerData. |
Um evento Command Complete será gerado para este comando.
Parâmetro de retorno | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Status completo do comando |
APCF_opcode | 1 octeto | 0x07 - Dados de serviço APCF |
APCF_Action | 1 octeto | Ecoar APCF_Action do comando back |
APCF_AvailableSpaces | 1 octeto | Número de entradas gratuitas ainda disponíveis para tabela de dados de serviço |
LE_APCF_Command: ad_type_sub_cmd
Este subcomando é usado para adicionar ou excluir um tipo de AD ou para limpar uma lista de tipos de AD para filtragem no chip. Use read_extended_features_sub_cmd
para verificar se este comando é compatível ou não.
Sub OCF: 0x09
Parâmetro de subcomando | Tamanho | Propósito |
---|---|---|
APCF_Action | 1 octeto | 0x00 - Adicionar 0x01 - Excluir 0x02 - Limpar Excluir excluirá o tipo de AD especificado no filtro especificado. Limpar limpará todos os tipos de AD no filtro especificado. |
APCF_Filter_Index | 1 octeto | Índice de filtro (0, max_filter -1) |
APCF_AD_TYPE | 1 octeto | O tipo de AD para adicionar ou excluir da lista. Ignorar quando APCF_Action for 0x02 (Limpar) |
APCF_AD_DATA_Length | Tamanho variável | 0x00 - significa não filtrar o conteúdo dos dados Ignorar quando APCF_Action for 0x02 (Limpar) |
APCF_AD_DATA | Tamanho variável | Ignorar quando APCF_Action for 0x02 (Limpar) |
APCF_AD_DATA_MASK | Tamanho variável | Ignorar quando APCF_Action for 0x02 (Limpar) Deve ter o mesmo comprimento que APCF_AD_DATA . |
Um evento Command Complete será gerado para este comando.
Parâmetro de retorno | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Status completo do comando |
APCF_opcode | 1 octeto | 0x09 - Tipo de anúncio APCF |
APCF_Action | 1 octeto | Ecoar APCF_Action do comando back |
APCF_AvailableSpaces | 1 octeto | Número de entradas gratuitas ainda disponíveis na tabela Tipo de AD |
LE_APCF_Command: read_extended_features_sub_cmd
Este subcomando é usado para ler recursos APCF estendidos.
Sub OCF: 0xFF
Parâmetro de subcomando | Tamanho | Propósito |
---|---|---|
Não aplicável | Parâmetro de comando vazio. |
Um evento Command Complete será gerado para este comando.
Parâmetro de retorno | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Status completo do comando |
APCF_opcode | 1 octeto | 0xFF -APCF_Read_Extended_Features |
APCF_extended_features | 2 octetos | Máscaras de bits para recursos estendidos suportados:
Valor do bit
|
Atividade do controlador e comando de informações de energia
O objetivo destas informações é que funções superiores do sistema host analisem as atividades totais de todos os componentes, incluindo o controlador BT e seu estado macro, em conjunto com o que está acontecendo nos aplicativos e na estrutura. Para fazer isso, as seguintes informações são necessárias da pilha BT e do controlador:
- Pilha BT: relatando o estado macrooperacional atual do controlador
- Firmware: Relatório de atividades agregadas e informações de energia
Estados da macro da pilha de host BT, conforme determinado no nível do usuário:
- Inativo: [varredura de página, LE advt, varredura de consulta]
- Digitalizar: [paginação/consulta/tentando conectar]
- Ativo: [link ACL ativado, link SCO em andamento, modo sniff]
As atividades que o controlador acompanha ao longo de sua vida são tempo Tx, tempo Rx, tempo ocioso e energia total consumida. Eles são apagados quando lidos no host.
LE_Get_Controller_Activity_Energy_Info
Este é um comando específico do fornecedor.
OCF: 0x159
Parâmetro de subcomando | Tamanho | Propósito |
---|---|---|
N / D | Parâmetros de comando vazios |
Um evento Command Complete será gerado para este comando.
Parâmetro de retorno | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Status completo do comando |
total_tx_time_ms | 4 octetos | Tempo total realizando Tx |
total_rx_time_ms | 4 octetos | Tempo total realizando Rx |
total_idle_time_ms | 4 octetos | Tempo total em modo inativo (estados de baixo consumo de energia sem suspensão) |
total_energy_used | 4 octetos | Energia total utilizada [produto de corrente (mA), tensão (V) e tempo (ms)] |
Comando de configuração estendida de parâmetros de varredura LE
Este comando pode ser usado para ativar uma janela e intervalo de varredura maiores no controlador. De acordo com a especificação BT Core 5.2, uma janela e intervalo de varredura têm um limite superior de 10,24 segundos, o que dificulta intervalos de varredura mais longos dos aplicativos, além de 10,24 segundos.
Referência base: Especificação BT Core 5.2, página 2493 (comando LE Set Scan Parameters)
OCF: 0x15A
Parâmetro de comando | Tamanho | Propósito |
---|---|---|
LE_Ex_Scan_Type | 1 octeto | 0x00 - Verificação passiva. Nenhum pacote SCAN_REQ deve 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 desde o momento em que o Controlador iniciou sua última varredura LE até iniciar a varredura LE subsequente. Faixa: 0x0004 a 0x00FFFFFF Padrão: 0x0010 (10ms) Tempo = N * 0,625ms Intervalo de tempo: 2,5 ms a 10.442,25 segundos |
LE_Ex_Scan_Window | 4 octetos | A duração da varredura LE. LE_Scan_Window deve ser menor ou igual a LE_Scan_Interval .Faixa: 0x0004 a 0xFFFF Padrão: 0x0010 (10ms) Tempo = N * 0,625ms 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 aleatório do dispositivo |
LE_Ex_Scan_Filter_Policy | 0x00 – Aceita todos os pacotes de anúncios (padrão). Pacotes de publicidade direcionada que não sejam endereçados para este dispositivo serão ignorados. 0x01 - Ignora pacotes de anúncios de dispositivos que não estão na lista Somente Lista Branca. Pacotes de publicidade direcionada que não sejam endereçados para este dispositivo serão ignorados. |
Um evento Command Complete será gerado para este comando.
Parâmetro de retorno | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Status completo do comando |
Obtenha o comando de informações de depuração do controlador
O objetivo deste 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 através do evento (subevento Controller Debug Info) ou de forma autônoma quando desejado pelo controlador. Exemplos de uso podem ser para relatar informações de estado de firmware, informações de crash dump, informações de registro, etc.
OCF: 0x15B
Parâmetro de comando | Tamanho | Propósito |
---|---|---|
N / D | Lista de parâmetros de comando vazia |
Um evento Command Complete será gerado para este comando.
Parâmetro de retorno | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Status completo do comando |
Suporte para descarregamento de hardware A2DP
O recurso A2DP Offload suporta o 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 passa diretamente do processador de áudio para o controlador BT sem o envolvimento do host BT. O BT Host ainda é responsável pela configuração e controle da sessão A2DP. Duas versões dos comandos estão disponíveis. Os comandos legados com Sub OCF 0x01-0x02 suportam apenas codecs de código aberto. As versões com Sub-OCF 0x02-0x03 são independentes do codec configurado.
FCO: 0x15D
Iniciar descarregamento A2DP (legado)
Sub OCF: 0x01
Use este comando para configurar o processo de descarregamento A2DP e para iniciar o fluxo A2DP.
Parâmetro de comando | Tamanho | Propósito |
---|---|---|
Codec | 4 octetos | Especifica o tipo de codec 0x01 - SBC 0x02 - AAC 0x04 - APTX 0x08 - APTXHD 0x10-LDAC |
Max_Latency | 2 octetos | Latência máxima permitida (em ms). Um valor zero desativa a liberação. |
SCMS-T_Enable | 2 octetos | Octeto 0: Flag que permite adição de cabeçalho SCMS-T.
Octeto 1: Valor do cabeçalho SCMS-T, quando habilitado. |
Sampling_Frequency | 4 octetos | 0x01 - 44100Hz 0x02 - 48.000Hz 0x04 - 88.200Hz 0x08 - 96.000Hz |
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 codificado em bits por segundo. 0x00000000 - A taxa de bits de áudio não foi especificada/não utilizada. 0x00000001 - 0x00FFFFFF - Taxa de bits de áudio codificada em bits por segundo. 0x01000000 - 0xFFFFFFFF - Reservado. |
Connection_Handle | 2 octetos | Identificador de conexão da conexão A2DP 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 do L2CAP MTU 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 Octeto 4-5: ID do Codec Octeto 6: Índice de taxa de bits: Octeto 7: Modo de canal LDAC Octeto 8-31: reservado Todos os outros codecs: Octeto 0-31: reservado |
Um evento Command Complete será gerado para este comando.
Parâmetro de retorno | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Status completo do comando |
Sub_Opcode | 1 octeto | 0x01 - Iniciar descarregamento A2DP |
Iniciar descarregamento A2DP
Sub OCF: 0x03
Use este comando para configurar o processo de descarregamento A2DP e para iniciar o fluxo A2DP.
Parâmetro de comando | Tamanho | Propósito |
---|---|---|
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/Mesclagem AVDTP) 0x01 - Entrada (coletor/divisão AVDTP) |
Peer_MTU | 2 octetos | Tamanho máximo dos pacotes L2CAP, negociados com o peer. |
CP_Enable_SCMS_T | 1 octeto | 0x00 - Desativar cabeçalho de proteção de conteúdo SCMS-T 0x01 - Habilitar 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á habilitado ( 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 Bluetooth Assigned Numbers, seção 6.3.2.Ignorado quando a proteção de conteúdo SCMS-T não está habilitada. |
Vendor_Specific_Parameters_Length | 1 octeto | Comprimento dos Parâmetros Específicos do Fornecedor, na faixa de 0 a 128. O valor 0 é usado quando nenhum parâmetro adicional é fornecido. |
Vendor_Specific_Parameters | 0-128 octetos | Parâmetros específicos do fornecedor fornecidos pelo HAL de áudio Bluetooth, CodecParameters.vendorSpecificParameters[] . |
Um evento Command Complete será gerado para este comando.
Parâmetro de retorno | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Status completo do comando |
Sub_Opcode | 1 octeto | 0x03 - Iniciar descarregamento A2DP |
Interromper o descarregamento de A2DP (legado)
Sub OCF: 0x02
Este comando é usado para interromper o fluxo de descarregamento A2DP.
Parâmetro de comando | Tamanho | Propósito |
---|---|---|
N / D | Lista de parâmetros de comando vazia. |
Nenhum parâmetro está definido para este comando.
Um evento Command Complete será gerado para este comando.
Parâmetro de retorno | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Status completo do comando |
Sub_Opcode | 1 octeto | 0x02 - Parar descarregamento A2DP |
Interromper o descarregamento A2DP
Sub OCF: 0x04
Este comando é usado para interromper o fluxo de descarregamento A2DP.
Parâmetro de comando | Tamanho | Propósito |
---|---|---|
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/Mesclagem AVDTP) 0x01 - Entrada (coletor/divisão AVDTP) |
Um evento Command Complete será gerado para este comando.
Parâmetro de retorno | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Status completo do comando |
Sub_Opcode | 1 octeto | 0x04 - Parar descarregamento A2DP |
Comando Relatório de qualidade Bluetooth
O recurso de comando BT Quality Report inicia o mecanismo no controlador Bluetooth para relatar eventos de qualidade Bluetooth ao host. Você pode ativar quatro opções:
- Modo de monitoramento de qualidade: O controlador envia periodicamente um subevento BQR relacionado à qualidade do link para o host.
- Approaching LSTO: Se nenhum pacote for recebido do dispositivo BT conectado por mais da metade do valor Link Supervision TimeOut (LSTO), o controlador reportará um evento Approaching LSTO ao host.
- A2DP Audio Choppy: Quando o controlador detecta fatores que causam áudio instável, o controlador relata um evento A2DP Audio Choppy ao host.
- (e)SCO Voice Choppy: Quando o controlador detecta fatores que causam voz instável, o controlador relata um evento (e)SCO Voice Choppy ao host.
- Inflamação de raiz: Este evento é enviado pelo controlador para a pilha quando o HAL ou o controlador encontra um erro fatal e precisa reiniciar o Bluetooth.
- Rastreio de mensagem LMP/LL: O controlador envia a mensagem de manutenção da mensagem LMP/LL com o dispositivo remoto para o host.
- Bluetooth Multi-Profile/Coex Scheduling Rastrear: O controlador envia suas informações de agendamento sobre como lidar com vários perfis Bluetooth e coexistência sem fio na banda de 2,4 GHz para o host.
- Mecanismo de informação de depuração do controlador: Quando ativado, o controlador pode relatar informações de log de depuração autonomamente por meio da sub-evento do Controller Debug Info para o host.
OCF: 0x15E
Parâmetro de comando | Tamanho | Propósito |
---|---|---|
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 limpe tudo. 0x00 - Adicionar A Excluir limpará os relatórios de qualidade específicos da qualidade. |
BQR_Quality_Event_Mask | 4 octetos | Máscaras de bits para os relatórios de eventos de qualidade selecionados. 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 deve relatar o próximo evento dentro do intervalo de tempo definido. A configuração de intervalo deve ser respectiva e dedicada aos eventos de qualidade (s) que estão sendo adicionados. Unidade: MS |
BQR_Vendor_Specific_Quality_Event_Mask | 4 octetos | Máscaras de bits para os relatórios de eventos de qualidade específicos do fornecedor selecionados. Este parâmetro é válido apenas quando o bit 15 de BQR_Quality_Event_Mask estiver definido.Bit 0 ~ 31: Reservado. |
BQR_Vendor_Specific_Trace_Mask | 4 octetos | Máscaras de bits para os relatórios de rastreamento específicos do fornecedor selecionados. Este parâmetro é válido apenas quando o bit 31 de BQR_Quality_Event_Mask estiver definido.Bit 0 ~ 31: Reservado. |
Um evento completo de comando será gerado para este comando.
Retornar parâmetro | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Comando status completo |
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: Aproximando -se de relatórios de eventos LSTO está ativado. BIT 2: A2DP Relatórios de eventos agitados de áudio está ativado. Bit 3: (e) Sco Voice Chappy Event Relatórios está ativado. Bit 4: Relatórios de eventos de inflamação raiz estão ativados. Bit 5: o modo de monitoramento de energia está ativado. Bit 6: LE Audio Choppy Event Reporting está ativado. Bit 7: Connect Fail Event. Bit 8 ~ 14: Reservado. Bit 15: Os relatórios de eventos de qualidade específicos do fornecedor estão ativados. BIT 16: O rastreamento da mensagem LMP/LL está ativado. BIT 17: O rastreamento de agendamento Bluetooth Multi-Link/Coex está ativado. Bit 18: o mecanismo de informação de depuração do controlador está ativado. Bit 19 ~ 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. |
Comando de buffer de áudio dinâmico
O buffer de áudio dinâmico reduz as falhas de áudio, alterando o tamanho do buffer de áudio no controlador Bluetooth com base em vários cenários.
OCF: 0x15f
Obtenha capacidade de tempo de buffer de áudio
Sub OCF: 0x01
Use este comando para obter a capacidade de tempo do buffer de áudio do controlador Bluetooth.
Parâmetro de comando | Tamanho | Propósito |
---|---|---|
N / D | Lista de parâmetros de comando vazia |
Um evento completo de comando será gerado para este comando.
Retornar parâmetro | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Comando status completo |
Dynamic_Audio_Buffer_opcode | 1 octeto | 0x01 - Obtenha tempo de buffer de áudio |
Audio_Codec_Type_Supported | 4 octetos | Máscaras de bits para os tipos de codec suportados Bit 0 - SBC Bit 1 - AAC Bit 2 - Aptx Bit 3 - Aptx HD Bit 4 - LDAC Bit 5-31 são reservados |
Audio_Codec_Buffer_Default_Time_For_Bit_0 | 2 octetos | Hora do buffer padrão do tipo de codec bit 0 especificado em audio_codec_type_supported. Este valor deve ser 0 se o tipo de codec bit 0 não for suportado. 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. Este valor deve ser 0 se o tipo de codec bit 0 não for suportado. 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. Este valor deve ser 0 se o tipo de codec bit 0 não for suportado. Unidade: MS |
Audio_Codec_Buffer_Default_Time_For_Bit_1 | 2 octetos | Hora do buffer padrão do tipo Bit 1 Codec especificado em AUDIO_CODEC_TYPE_SUPPORTED. Este valor deve ser 0 se o tipo de codec bit 1 não for suportado. Unidade: MS |
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 | 2 octetos | Tempo máximo de buffer do tipo Bit 1 Codec especificado em AUDIO_CODEC_TYPE_SUPPORTED. Este valor deve ser 0 se o tipo de codec bit 1 não for suportado. Unidade: MS |
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 | 2 octetos | Tempo mínimo do buffer do tipo Bit 1 Codec especificado em AUDIO_CODEC_TYPE_SUPPORTED. Este valor deve ser 0 se o tipo de codec bit 1 não for suportado. Unidade: MS |
...... | ...... | ...... |
Audio_Codec_Buffer_Default_Time_For_Bit_31 | 2 octetos | Hora do buffer padrão do tipo Bit 31 Codec especificado em AUDIO_CODEC_TYPE_SUPPORTED. Este valor deve ser 0 se o tipo de codec de bit 31 não for suportado. Unidade: MS |
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 | 2 octetos | Tempo máximo de buffer do tipo 31 de codec especificado em AUDIO_CODEC_TYPE_SUPPORTED. Este valor deve ser 0 se o tipo de codec de bit 31 não for suportado. Unidade: MS |
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 | 2 octetos | Tempo mínimo do buffer do tipo 31 de codec especificado em audio_codec_type_supported. Este valor deve ser 0 se o tipo de codec de bit 31 não for suportado. Unidade: MS |
Defina 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 | Propósito |
---|---|---|
Audio_Codec_Buffer_Time | 2 octetos | Solicitado tempo de buffer de áudio para o codec usado atual. Unidade: MS |
Um evento completo de comando será gerado para este comando.
Retornar parâmetro | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Comando status completo |
Dynamic_Audio_Buffer_opcode | 1 octeto | 0x02 - Defina o tempo de buffer de áudio |
Audio_Codec_Buffer_Time | 2 octetos | Tempo atual de buffer de áudio no controlador Bluetooth. Unidade: MS |
Evento HCI (específico do fornecedor)
Os 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 sub-evento, com base no qual o restante do evento HCI é decodificado.
Parâmetro de evento | Tamanho | Propósito |
---|---|---|
HCI_vendor_specific_event_code | 1 octeto | 0xFF |
sub_event_code | 1 octeto | Um código de sub-evento terá 1 octeto em tamanho, o byte imediatamente após o comprimento do parâmetro no pacote de eventos HCI. |
Limite de armazenamento Sub-evento de violação
Este evento indica que o limite de armazenamento foi violado.
Código do Sub-evento = 0x54
Parâmetro sub-evento | Tamanho | Propósito |
---|---|---|
Nenhum |
Sub-evento de mudança de estado de multi-advertência
Este evento indica que uma instância de publicidade mudou seu estado. No momento, este evento é usado apenas para indicar qual instância de publicidade foi interrompida como resultado de uma conexão.
Código do Sub-evento = 0x55
Parâmetro sub-evento | Tamanho | Propósito |
---|---|---|
Advertising_instance | 1 octeto | Identifica a instância de publicidade específica Os valores válidos são 0 através 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álido) |
Sub-evento de rastreamento de anúncios
Este evento indica quando um anunciante é encontrado ou perdido.
Código do Sub Evento = 0x56
Parâmetro sub-evento | Tamanho | Propósito |
---|---|---|
APCF_Filter_Index | 1 octeto | Índice de filtro (0, max_filter -1) |
Advertiser_State | 1 octeto | 0x00: anunciante encontrado 0x01: Anunciante perdido |
Advt_Info_Present | 1 octeto | 0x00: 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 OctesScan_data_resp_len[0] : 1 octetoScan_data_resp[0] : Scan_data_resp OCTETOS |
Sub-evento de informações de depuração do controlador
Este evento é usado por um controlador para fornecer informações de depuração binária a um host.
Sub-evento Código = 0x57
Parâmetro sub-evento | Tamanho | Propósito |
---|---|---|
debug_block_byte_offset_start | 2 octetos | Debug Block Byte Offset 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 |
Sub-evento do relatório de qualidade Bluetooth
Este evento indica um dos seguintes: Ocorreu um evento de qualidade Bluetooth, o controlador enviou o rastreamento da mensagem LMP/LL e o rastreamento de agendamento multi-link/coex bluetooth, ou o controlador despejou dados de informações de depuração.
Código sub-evento = 0x58 [Quality_report_id = 0x01 ~ 0x04, Evento relacionado à qualidade do link]
Parâmetro sub-evento | Tamanho | Propósito |
---|---|---|
Quality_Report_Id | 1 octeto | 0x01: Relatórios de qualidade no modo de monitoramento. 0x02: Aproximando -se de Lsto. 0x03: áudio A2DP Chappy. 0x04: (e) Sco Voice Chappy. 0x05 ~ 0x06: Reservado. 0x07: le áudio agitado. 0x08: Connect Fail. 0x09 ~ 0xFF: Reservado. |
Packet_Types | 1 octeto | 0x01: id 0x02: nulo 0x03: Enquete 0x04: fhs 0x05: hv1 0x06: hv2 0x07: hv3 0x08: DV 0x09: EV3 0x0a: ev4 0x0b: ev5 0x0c: 2-EV3 0x0d: 2-EV5 0x0E: 3-EV3 0x0f: 3-EV5 0x11: dh1 0x12: DM3 0x13: dh3 0x14: DM5 0x15: dh5 0x16: aux1 0x17: 2-dh1 0x18: 2-dh3 0x19: 2-dh5 0x1a: 3-dh1 0x1b: 3-dh3 0x1c: 3-dh5 0x1d ~ 0x50: reservado 0x51: ISO Packet 0x52 ~ 0xff: reservado |
Connection_Handle | 2 octetos | ACL/(E) SCO/ISO ISO INSULTRA. |
Connection_Role | 1 octeto | Desempenhando o papel da conexão. 0x00: Central 0x01: periférico 0x02 ~ 0xFF: Reservado. |
TX_Power_Level | 1 octeto | Nível de potência de transmissão atual para a conexão especificada_handle. Este valor deve ser o mesmo que a resposta do controlador ao comando hci_read_transmit_power_level hci. |
RSSI | 1 octeto | [em DBM] RSSI (RSSI) Valor da força de força do sinal (RSSI) para a conexão especificada_handle. |
SNR | 1 octeto | [em db] Valor da relação sinal-ruído (SNR) para a conexão especificada_handle. |
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 são interferidos e têm má qualidade, mas ainda são selecionados para AFH. O número mínimo de canais permitidos pela especificação Bluetooth é 20, portanto, mesmo que todos os 79 canais sejam interferidos e tenham má qualidade, o controlador ainda precisa escolher pelo menos 20 canais para AFH. |
LSTO | 2 octetos | Configuração atual do tempo limite da supervisão do link. 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. Este valor deve ser o mesmo que a resposta do controlador ao comando hci_read_clock hci com parâmetro "que_clock" de 0x01 (relógio Piconet). Unidade: N * 0,3125 ms (1 relógio Bluetooth) |
Retransmission_Count | 4 octetos | O número de retransmissões desde o último evento. Esta contagem será redefinida após relatar ao host. |
No_RX_Count | 4 octetos | Sem contagem de RX desde o último evento. A contagem aumenta quando nenhum pacote é recebido no horário programado ou o pacote recebido é corrompido. Esta contagem será redefinida após relatar ao host. |
NAK_Count | 4 octetos | Nak (reconhecimento negativo) contam desde o último evento. Esta contagem será redefinida após relatar ao host. |
Last_TX_ACK_Timestamp | 4 octetos | Timestamp do último TX ACK. É baseado no relógio Bluetooth do Central Piconet (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 (parada) desde o último evento. Esta contagem será redefinida após relatar ao host. |
Last_Flow_On_Timestamp | 4 octetos | Timestamp do último fluxo (GO). É baseado no relógio Bluetooth do Central Piconet (CLK). Unidade: N * 0,3125 ms (1 relógio Bluetooth) |
Buffer_Overflow_Bytes | 4 octetos | [In Byte] Contagem de transbordamento de buffer desde o último evento. |
Buffer_Underflow_Bytes | 4 octetos | [In Byte] Contagem de subfluxo de buffer desde o último evento. |
bdaddr | 6 octetos | Endereço do dispositivo remoto |
cal_failed_item_count | 1 octeto | A contagem de itens com falha na calibração |
TX_Total_Packets | 4 octetos | O número de pacotes que são enviados. |
TX_UnAcked_Packets | 4 octetos | O número de pacotes que não recebem um reconhecimento. Esta contagem é redefinida após se reportar ao host. |
TX_Flushed_Packets | 4 octetos | O número de pacotes que não são enviados pelo seu ponto de descarga. Esta contagem é redefinida após se reportar ao host. |
TX_Last_Subevent_Packets | 4 octetos | O número de pacotes que vinculam a camada transmite um PDU de dados CIS no último subevent de um evento CIS. Esta contagem é redefinida após se reportar ao host. O valor é zero se não houver 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. Esta contagem é redefinida após se reportar ao host. |
RX_Duplicate_Packets | 4 octetos | O número de pacotes duplicados (retransmissão) recebidos desde o último evento. Esta contagem é redefinida após se reportar ao host. |
Parâmetro específico do fornecedor | (Parâmetro Comprimento total - TBD) * Octetos | Para o fornecedor do controlador obter mais parâmetros específicos do fornecedor. |
Sub-evento Código = 0x58 [Quality_report_id = 0x05, evento de inflamação raiz]
Este evento indica que o Bluetooth HAL ou o controlador encontrou um erro fatal e precisa de pilha Bluetooth para gravar essa situação e reiniciar. O controlador deve enviar uma pilha root_inflammation_event para o 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 relatado no HAL/Controller, 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/Controller. Ele deve definir como 0 se o parâmetro error_code não for 0. Os parâmetros error_code e vendor_specific_error_code não devem ser 0.
Parâmetro sub-evento | Tamanho | Propósito |
---|---|---|
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: falha do controlador ocorreu. Consulte a especificação Bluetooth [VOL 2] Parte D, códigos de erro para uma lista de códigos e descrições de erro. |
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 | (Parâmetro Comprimento total - 4) * Octetos | Para o fornecedor do controlador obter mais parâmetros específicos do fornecedor. |
Código sub-evento = 0x58 [Quality_report_id = 0x11 ~ 0x13, Evento relacionado ao despejo de log]
Parâmetro sub-evento | Tamanho | Propósito |
---|---|---|
Quality_Report_Id | 1 octeto | 0x00 ~ 0x10: Reservado. 0x11: rastreamento da mensagem LMP/LL. 0x12: rastreamento de agendamento multi-link/coex bluetooth/coex. 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 | (Parâmetro Comprimento total - 4) * Octetos | Formato específico do fornecedor do rastreamento da mensagem LMP, Bluetooth Multi-Link/Coex Scheduling Trace e Data Information Data Dump. |
Suporte multi-advertido
Os objetivos do suporte a vários advertências são os seguintes:
- Capacidade de suportar vários anúncios (
max_advt_instances
) - Diferentes poderes de transmissão para permitir uma faixa variável
- 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 existentes, são fornecidos os seguintes comandos específicos do fornecedor. Eles são derivados da especificação Bluetooth Core 4.1.
LE_MULTI_ADVT_COMMAND
OCF: 0x154
Parâmetro de comando | Tamanho | Propósito |
---|---|---|
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 completo de comando será gerado para este comando.
Retornar parâmetro | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Comando status completo |
Multi_advt_opcode | 1 octeto | 0x01 - Set_Advt_Param_Multi_Command 0x02 - Set_Advt_Data_Multi_Command 0x03 - Set_Scan_Resp_Data_Multi_Command 0x04 - Set_Random_Addr_Multi_Command 0x05 - Set_Advt_Enable_Multi_Command |
LE_MULTI_ADVT_COMMAND: SET_ADVT_PARAM_MULTI_SUB_CMD
Referência de base: especificação Bluetooth Core 4.1, página 964 (LE Set Publicidade Parâmetro Comando)
Sub OCF: 0x01
Parâmetro de subcomando | Tamanho | Propósito |
---|---|---|
Advertising_Interval_Min | Por espec | Por espec |
Advertising_Interval_Max | Por espec | Por espec |
Advertising_Type | Por espec | Por espec |
Own_Address_Type | Por espec | Por espec |
Own_Address | Por espec | Por espec |
Direct_Address_Type | Por espec | Por espec |
Direct_Address | Por espec | Por espec |
Advertising_Channel_Map | Por espec | Por espec |
Adverstising_Filter_Policy | Por espec | Por espec |
Advertising_Instance | 1 octeto | Especifica a aplicabilidade dos parâmetros acima para uma instância |
Tx_power | 1 octeto | Potência de transmissão Unidade - em DBM (número inteiro assinado) Intervalo (-70 a +20) |
O parâmetro Own_Address
pode ser um endereço configurado no host no momento da configuração desta instância de multi-advertência. Isso fornece a capacidade de ter um endereço privado resolvível no momento da transmissão do primeiro farol. O anúncio em uma instância continuará independentemente da conexão. A pilha BT do host pode emitir um comando para iniciar o anúncio em uma instância, Post Connection.
Um evento completo de comando será gerado para este comando, conforme especificado na especificação Bluetooth Core 4.1, de acordo com o comando acima. O controlador responderá com um código não sucedido (parâmetro inválido) se a instância de publicidade ou os parâmetros Tx_Power
forem inválidos.
Retornar parâmetro | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Comando status completo |
Multi_advt_opcode | 1 octeto | 0x01 [ Set_Advt_Param_Multi_Sub_Cmd] |
LE_MULTI_ADVT_COMMAND: SET_ADVT_DATA_MULTI_SUB_CMD
Referência base: especificação Bluetooth Core 4.1, página 969 (LE Set Publisity Data Command)
Sub OCF: 0x02
Parâmetro de subcomando | Tamanho | Propósito |
---|---|---|
Advertising_Data_Length | Por espec | Por espec |
Advertising_Data | Por espec | Por espec |
Advertising_Instance | 1 octeto | Especifica a aplicabilidade dos parâmetros acima para uma instância |
Um evento completo de comando será gerado para este comando, conforme especificado na especificação Bluetooth Core 4.1, de acordo com o comando acima. O controlador responderá com um código não-sucesso se a instância de publicidade ou os parâmetros Tx_Power
forem inválidos.
Retornar parâmetro | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Comando status completo |
Multi_advt_opcode | 1 octeto | 0x02 [ Set_Advt_Data_Multi_Sub_Cmd] |
LE_MULTI_ADVT_COMAND: 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 do conjunto de varredura)
Sub OCF: 0x03
Parâmetro de subcomando | Tamanho | Propósito |
---|---|---|
Scan_Response_Data_Length | Por espec | Por espec |
Scan_Response_Data | Por espec | Por espec |
Advertising_Instance | 1 octeto | Especifica a aplicabilidade dos parâmetros acima para uma instância |
Um evento completo de comando será gerado para este comando, conforme especificado na especificação Bluetooth Core 4.1, de acordo com o comando acima. O controlador responderá com um código não-sucesso (parâmetro inválido) se a instância de publicidade ou os parâmetros Tx_Power
forem inválidos.
Retornar parâmetro | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Comando status completo |
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 base: especificação Bluetooth Core 4.1, página 963 (LE Set Random Endereço Comando)
Sub OCF: 0x04
Parâmetro de subcomando | Tamanho | Propósito |
---|---|---|
Endereço aleatório | Por espec | Por espec |
Advertising_Instance | 1 octeto | Especifica a aplicabilidade dos parâmetros acima para uma instância |
Um evento completo de comando será gerado para este comando.
Retornar parâmetro | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Comando status completo |
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 (LE Set Anuncie Enable Command nessa especificação principal)
OCF: 0x05
Parâmetro de subcomando | Tamanho | Propósito |
---|---|---|
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 em uma instância. Instância 0 significa uma instância HCI padrão. |
Um evento completo de comando será gerado para este comando.
Retornar parâmetro | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Comando status completo |
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 privado no firmware ou hardware do controlador, que fornece os seguintes benefícios:
- Latência envolvida com o host na resolução de um endereço privado
- Economizando o poder, abstendo -se de acordar o host
Le_set_rpa_timeout
OCF: 0x15C
Parâmetro de comando | Tamanho | Propósito |
---|---|---|
LE_local_IRK | 16 octeto | O dispositivo local Irk usado para gerar os endereços resolvíveis aleatórios. |
tRPA_min | 2 octetos | O tempo de tempo de geração RPA mínima em segundos. O controlador deve gerar novos endereços resolvíveis para quaisquer eventos de publicidade/digitalização/conexão no ou após esse tempo limite. Faixa válida: 300-1800 |
tRPA_max | 2 octetos | O tempo limite máximo de geração de RPA em segundos. O controlador deve gerar novos endereços resolvíveis para quaisquer eventos de publicidade/varredura/conexão no ou antes deste tempo limite. Faixa válida: tRPA_min -1800 |
Retornar parâmetro | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | O status do comando. Valores de status HCI sugeridos: 0x00 sucesso 0x01 Comando desconhecido (se não for suportado) 0x12 parâmetros de comando inválidos (se algum parâmetros estiver fora do intervalo especificado) |
LE_RPA_OFFLOOFLOAD_COMAND
OCF: 0x155
Parâmetro de comando | Tamanho | Propósito |
---|---|---|
RPA_offload_opcode | 1 octeto | 0x1 - Ativar recurso específico do cliente 0x2 - Adicione Irk à lista 0x3 - Remova a Irk da lista 0x4 - Lista de Irk Clear 0x5 - Leia a entrada da lista IRK |
Um evento completo de comando será gerado para este comando.
Retornar parâmetro | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Comando status completo |
Event_RPA_offload_opcode | 1 octeto | 0x1 - Ativar recurso específico do cliente 0x2 - Adicione Irk à lista 0x3 - Remova a Irk da lista 0x4 - Lista de Irk Clear 0x5 - Leia a entrada da lista IRK |
LE_RPA_OFFLOAD: enable_cust_specific_sub_command
Sub OCF: 0x01
Parâmetro de subcomando | Tamanho | Propósito |
---|---|---|
enable_customer_specific_feature_set | 1 octeto | 0x01 - Ativar recurso RPA descarregado 0x00 - Desativar o recurso RPA descarregado |
É necessário que o RPA descarregue o host, com base na capacidade do chip. Consulte o LE_Get_Vendor_Capabilities_Command
. Cada chip pode ter um max_irk_list_sz
variado no firmware.
Um evento completo de comando será gerado para este comando.
Retornar parâmetro | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Comando status completo |
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 | Propósito |
---|---|---|
LE_IRK | 16 octetos | Le Irk (1º byte LSB) |
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 à IRK (1º byte LSB) |
Um evento completo de comando será gerado para este comando.
Retornar parâmetro | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Comando status completo |
Event_cust_specific_feature_opcode | 1 octeto | 0x02 [Adicione Irk à lista] |
LE_IrkList_AvailableSpaces | 1 octeto | Entradas de lista IRL disponível após a operação atual |
LE_RPA_OFFLOAD: RETROTIVO_IRK_TO_LIST_SUB_COMMAND
Sub OCF: 0x03
Parâmetro de subcomando | Tamanho | Propósito |
---|---|---|
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 que se associa à Irk |
Um evento completo de comando será gerado para este comando.
Retornar parâmetro | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Comando status completo |
Event_cust_specific_feature_opcode | 1 octeto | 0x03 [Remova Irk da lista] |
LE_IrkList_AvailableSpaces | 1 octeto | Entradas de lista IRL disponível após a operação atual |
LE_RPA_OFFLOAD: CLEAR_IRK_LIST_SUB_COMAND
Sub OCF: 0x04
Parâmetro de subcomando | Tamanho | Propósito |
---|---|---|
Nenhum |
Um evento completo de comando será gerado para este comando.
Retornar parâmetro | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Comando status completo |
Event_cust_specific_feature_opcode | 1 octeto | 0x04 [Clear IRK List] |
LE_IrkList_AvailableSpaces | 1 octeto | Entradas da lista IRL disponível 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 | Propósito |
---|---|---|
LE_read_IRK_list_entry-index | 1 octeto | Índice da lista IRK [0, max_irk_list_sz-1] |
Um evento completo de comando será gerado para este comando.
Retornar parâmetro | Tamanho | Propósito |
---|---|---|
Status | 1 octeto | Comando status completo |
Event_cust_specific_feature_opcode | 1 octeto | 0x05 [Leia a entrada da lista IRK] |
LE_Read_IRK_List_entry | 1 octeto | Índice da IRK que o host deseja ler de volta (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 à Irk |
LE_Resolved_Private_Address | 6 octetos | Endereço privado resolvido resolvido |