Requisiti dell'HCI

L'interfaccia controller host (HCI) viene utilizzata per interagire con un controller Bluetooth.

Questo documento fornisce un elenco dei requisiti HCI Bluetooth (BT) e Bluetooth Low Energy (BLE). L'obiettivo è che i fornitori di stack Host BT e di controller BT si conformino a questi requisiti della piattaforma per utilizzare il set di funzionalità descritto di seguito.

Questo documento fa riferimento alla specifica Bluetooth Core 5.2 come "specifica". La specifica Bluetooth Core 5.2 è disponibile sul sito Web Bluetooth SIG insieme ad altri documenti adottati.

Panoramica generale del progetto

Funzionalità e configurazione del chip

Essendo una piattaforma aperta, Android dispone di una matrice di versioni software, OEM, fornitori e funzionalità di piattaforma e chip.

Per gestire il panorama variabile e gestire le migrazioni, in questo documento viene descritta una filosofia di progettazione che consente ai controller BT di esporre le proprie capacità (oltre la specifica Bluetooth Core 5.2 standard). Lo stack BT host può quindi utilizzare queste funzionalità per determinare quali funzionalità abilitare.

Supportare standard aperti

Uno degli obiettivi di Android è supportare gli standard aperti dopo la ratifica in una specifica Bluetooth. Se una funzionalità descritta di seguito diventasse disponibile nei metodi HCI standard in una futura specifica Bluetooth, tenderemo a rendere tale approccio predefinito.

Funzionalità specifiche del fornitore

Comando specifico del fornitore: LE_Get_Vendor_Capabilities_Command

Campo comando OpCode (OCF): 0x153

Parametro di comando Misurare Scopo
N / A Elenco dei parametri di comando vuoto

Per questo comando verrà generato un evento Comando completo.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato di completamento del comando
max_advt_instances
(Deprecato)
1 ottetto Numero di istanze pubblicitarie supportate.

Riservato dopo la v0.98.
Questo parametro è deprecato nelle specifiche delle funzionalità di Google v0.98 e successive a favore della pubblicità estesa LE disponibile nelle specifiche BT versione 5.0 e successive.
offloaded_resolution_of_private-address
(Deprecato)
1 ottetto Funzionalità del chip BT di RPA.
Se supportato da un chip, necessita dell'abilitazione da parte dell'host.
0 = Non capace
1 = Capace

Riservato dopo la v0.98.
Questo parametro è deprecato nelle specifiche delle funzionalità Google v0.98 e successive a favore della funzionalità Privacy disponibile nelle specifiche BT versione 4.2 e successive.
total_scan_results_storage 2 ottetti Spazio di archiviazione per i risultati della scansione in byte
max_irk_list_sz 1 ottetto Numero di voci IRK supportate nel firmware
filtering_support 1 ottetto Supporto per il filtraggio nel controller
0 = Non supportato
1 = Supportato
max_filter 1 ottetto Numero di filtri supportati
activity_energy_info_support 1 ottetto Supporta la segnalazione di attività e informazioni sull'energia
0 = Non capace
1 = Capace
version_supported 2 ottetti Specifica la versione supportata delle specifiche delle funzionalità di Google
byte[0] = numero maggiore
byte[1] = numero minore

v1.03
byte[0] = 0x01
byte[1] = 0x03
total_num_of_advt_tracked 2 ottetti Numero totale di inserzionisti tracciati per scopi OnLost / OnFound
extended_scan_support 1 ottetto Supporta finestra e intervallo di scansione estesi
debug_logging_supported 1 ottetto Supporta la registrazione delle informazioni di debug binario dal controller
LE_address_generation_offloading_support
(Deprecato)
1 ottetto 0 = Non supportato
1 = Supportato

Riservato dopo la v0.98.
Questo parametro è deprecato nelle specifiche delle funzionalità Google v0.98 e successive a favore della funzionalità Privacy disponibile nelle specifiche BT versione 4.2 e successive.
A2DP_source_offload_capability_mask 4 ottetti Maschere di bit per i tipi di codec supportate
Bit 0: SBC
Parte 1 - CAA
Bit 2-APTX
Bit 3-APTX HD
Parte 4: LDAC
I bit 5-31 sono riservati
bluetooth_quality_report_support 1 ottetto Supporta la segnalazione di eventi di qualità Bluetooth
0 = Non capace
1 = Capace
dynamic_audio_buffer_support 4 ottetti Supporta il buffer audio dinamico nel controller Bluetooth
Maschere di bit per i tipi di codec supportate
Bit 0: SBC
Parte 1 - CAA
Bit 2-APTX
Bit 3-APTX HD
Parte 4: LDAC
I bit 5-31 sono riservati

Raggruppamento dei risultati della scansione

Uno degli obiettivi di progettazione è migliorare il modo in cui le notifiche degli eventi di risposta alla scansione Bluetooth LE vengono inviate all'host, al fine di risparmiare energia nell'host.

Riducendo la frequenza con cui il controller notifica al processore dell'applicazione host di scansionare i risultati, il processore dell'applicazione host può rimanere inattivo/sospeso più a lungo. Ciò riduce il consumo energetico nell'host. Il parametro di ritorno total_scan_results_storage di LE_Get_Vendor_Capabilities_Command indica la capacità del chip per l'archiviazione dei risultati della scansione.

Questa funzionalità si concentra sulla gestione e configurazione della struttura di archiviazione dei risultati della scansione LE nel controller Bluetooth. Lo spazio di archiviazione viene utilizzato per raggruppare temporaneamente i dati pubblicitari e scansionare dati e metadati ricevuti dal controller per la successiva consegna all'host.

Il firmware supporterà due tipi di batching, che possono essere attivati ​​contemporaneamente:

  • Troncato. Contiene i seguenti elementi informativi: {MAC, TX Power, RSSI, Timestamp}
  • Pieno. Contiene i seguenti elementi informativi: {MAC, TX Power, RSSI, Timestamp, Adv Data, Scan Response}

LE_Batch_Scan_Command

OCF: 0x156

Parametro di comando Misurare Scopo
Batch_Scan_opcode 1 ottetto 0x1: abilita la funzionalità specifica del cliente
0x2: imposta i parametri di archiviazione della scansione batch
0x3 - Imposta i parametri di scansione batch
0x4 - Leggi i parametri dei risultati della scansione batch

Verrà generato un evento Comando completo per questo comando. L'abilitazione della funzione specifica del cliente non avvia la scansione.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato di completamento del comando
Batch_Scan_opcode 1 ottetto 0x1: abilita la funzionalità specifica del cliente
0x2: imposta i parametri di archiviazione della scansione batch
0x3 - Imposta i parametri di scansione batch
0x4 - Leggi i parametri dei risultati della scansione batch

LE_Batch_Scan_Command: abilita la funzione specifica del cliente

OCF secondario: 0x01

Parametro del sottocomando Misurare Scopo
enable_customer_specific_feature_set 1 ottetto 0x01 - Abilita la funzione Scansione batch
0x00: disabilita la funzionalità di scansione batch

Verrà generato un evento Comando completo per questo comando.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato di completamento del comando
Batch_Scan_opcode 1 ottetto 0x1: abilita la funzionalità specifica del cliente
0x2: imposta i parametri di archiviazione della scansione batch
0x3 - Imposta i parametri di scansione batch
0x4 - Leggi i parametri dei risultati della scansione batch

LE_Batch_Scan_Command: imposta il sottocomando Batch Scan Storage Param

OCF secondario: 0x02

Parametro del sottocomando Misurare Scopo
Batch_Scan_Full_Max 1 ottetto Spazio di archiviazione massimo (in%) assegnato allo stile completo
[Intervallo: 0-100]
Batch_Scan_Truncated_Max 1 ottetto Spazio di archiviazione massimo (in%) assegnato allo stile troncato
[Intervallo: 0-100]
Batch_Scan_Notify_Threshold 1 ottetto Livello di notifica dell'impostazione (in %) per il singolo storage pool
[Intervallo: 0-100]
L'impostazione su 0 disabiliterà la notifica. Viene generato un evento HCI specifico del fornitore (sottoevento di violazione della soglia di archiviazione)

Per questo comando verrà generato un evento Comando completo.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato di completamento del comando
Batch_scan_opcode 1 ottetto 0x02 [Imposta parametri scansione batch]

LE_Batch_Scan_Command: imposta il sottocomando Batch Scan Param

OCF secondario: 0x03

Parametro del sottocomando Misurare Scopo
Batch_Scan_Mode 1 ottetto 0x00: la scansione batch è disabilitata
0x01 – La modalità troncata è abilitata
0x02 – La modalità completa è abilitata
0x03 – Le modalità Troncato e Completo sono abilitate
Duty_cycle_scan_window 4 ottetti Tempo di scansione scansione batch (n. di slot)
Duty_cyle_scan_interval 4 ottetti Periodo di intervallo di scansione batch (n. di slot)
own_address_type 1 ottetto 0x00 - Indirizzo del dispositivo pubblico
0x01 - Indirizzo casuale del dispositivo
Batch_scan_Discard_Rule 1 ottetto 0 - Elimina l'annuncio più vecchio
1 - Scarta la pubblicità con l'RSSI più debole

Questo sottocomando avvierà la scansione batch, se abilitato. Nella scansione troncata, i risultati vengono archiviati in forma troncata dove la chiave univoca per lo stile troncato = { BD_ADDR, scan_interval}. Ciò significa che BD_ADDR will per ciascun intervallo di scansione. Il record da conservare per la modalità Troncata è il seguente: { BD_ADDR , Tx Power, RSSI, Timestamp}

Quando è abilitata la modalità Completa, verrà utilizzata la scansione attiva e verranno registrate le risposte alla scansione. La chiave univoca in stile completo = {MAC, pacchetto di annunci}, indipendentemente dall'intervallo di scansione. Il record da conservare per la modalità completa è { BD_ADDR , Tx Power, RSSI, Timestamp, Ad packet, Scan Response}. Nello stile Completo, lo stesso pacchetto AD, se visualizzato più volte in diversi intervalli di scansione, viene registrato una sola volta. Tuttavia, in modalità Troncata, ciò che interessa è la visibilità di BA_ADDR attraverso diversi intervalli di scansione (una volta per intervallo di scansione). L'RSSI è il valore medio di tutti i duplicati di un annuncio pubblicitario unico all'interno di un intervallo di scansione.

Per questo comando verrà generato un evento Comando completo.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato di completamento del comando
Batch_scan_opcode 1 ottetto 0x03 [Imposta parametri scansione batch]

LE_Batch_Scan_Command: sottocomando Leggi i risultati della scansione batch

OCF secondario: 0x04

Parametro del sottocomando Misurare Scopo
Batch_Scan_Data_read 1 ottetto 0x01 – Dati in modalità troncata
0x02 – Dati in modalità completa

Per questo comando verrà generato un evento Comando completo. Quando l'host emette questo comando, tutti i risultati nel controller potrebbero non rientrare in un evento Command Complete. L'host ripeterà l'emissione di questo comando finché i risultati corrispondenti nell'evento Command Complete indicheranno 0 nel numero di record, il che indica che il controller non ha più record da comunicare all'host. Ciascun evento Command Complete può contenere più record di un solo tipo di dati (completo o troncato).

I riferimenti orari del controller e dell'host non sono sincronizzati. L'unità del timestamp è 50 ms. Il valore del timestamp si basa sul momento in cui Read_Batch_Scan_Results_Sub_cmd viene fornito dall'host. Se l'orario di arrivo di un comando è T_c nel firmware, l'ora effettiva in cui è stato acquisito il timestamp nel firmware è T_fw . L'orario di reporting sarà: ( T_c - T_fw ). T_c e T_fw si trovano nel dominio temporale del firmware. Ciò consente all'host di calcolare quanto tempo fa si è verificato l'evento.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato di completamento del comando
Batch_scan_opcode 1 ottetto 0x03 [Imposta parametri scansione batch]
Batch_Scan_data_read 1 ottetto Identifica il formato (Troncato o Completo)
num_of_records 1 ottetto Numero di record di Batch_Scan_data_read
format_of_data Variabile Modalità troncata:
Indirizzo[0]: 6 ottetti
Address_Type[0]: 1 ottetto
Tx_Pwr[0]: 1 ottetto
RSSI[0]: 1 ottetto
Timestamp[0]: 2 ottetti
[più record ( num_of_records ) con il formato sopra]

Modalità completa:
Indirizzo[0]: 6 ottetti
Address_Type[0]: 1 ottetto
Tx_Pwr[0]: 1 ottetto
RSSI[0]: 1 ottetto
Timestamp[0]: 2 ottetti
Adv packet_len[0]: 1 ottetto
Adv_packet[0]: Adv_packet_len ottetti
Scan_data_resp_len[0]: 1 ottetto
Scan_data_resp[0]: ottetti Scan_data_resp
[più record con il formato precedente ( num_of_records )]

Filtro contenuto pacchetto pubblicitario

Utilizzarlo per abilitare/disabilitare/configurare il filtro del contenuto del pacchetto pubblicitario (APCF) nel controller. APCF filtra i report pubblicitari nel controller ma non filtra la pubblicità periodica.

LE_APCF_Comando

OCF: 0x157

Parametro di comando Misurare Scopo
APCF_opcode 1 ottetto 0x00 - Abilita APCF
0x01 - APCF Imposta i parametri di filtraggio
0x02 - Indirizzo dell'emittente APCF
0x03 - UUID del servizio APCF
0x04 - UUID di sollecitazione del servizio APCF
0x05: nome locale APCF
0x06: dati del produttore APCF
0x07 - Dati servizio APCF
0x08: servizio di rilevamento del trasporto APCF
0x09: filtro tipo AD APCF
0x10 ~ 0xAF - Riservato per uso futuro
0xB0 ~ 0xDF - Riservato al fornitore
0xE0 ~ 0xFE - Riservato per uso futuro
0xFF - APCF Leggi funzionalità estese

Verrà generato un evento Comando completo per questo comando.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato reso
APCF_opcode 1 ottetto 0x00 - Abilita APCF
0x01 - APCF Imposta i parametri di filtraggio
0x02 - Indirizzo dell'emittente APCF
0x03 - UUID del servizio APCF
0x04 - UUID di sollecitazione del servizio APCF
0x05: nome locale APCF
0x06: dati del produttore APCF
0x07 - Dati servizio APCF
0x08: servizio di rilevamento del trasporto APCF
0x09: filtro tipo AD APCF
0x10 ~ 0xAF - Riservato per uso futuro
0xB0 ~ 0xDF - Riservato al fornitore
0xE0 ~ 0xFE - Riservato per uso futuro
0xFF - APCF Leggi funzionalità estese

Comando_LE_APCF: Enable_sub_cmd

OCF secondario: 0x00

Parametro del sottocomando Misurare Scopo
APCF_enable 1 ottetto 0x01 - Abilita la funzione APCF
0x00: disabilita la funzionalità APCF

Verrà generato un evento Comando completo per questo comando.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato di completamento del comando
APCF_opcode 1 ottetto 0x0 - APCF abilitato
APCF_Enable 1 ottetto Abilita/disabilita viene impostato tramite APCF_enable

LE_APCF_Command: set_filtering_parameters_sub_cmd

Questo sottocomando viene utilizzato per aggiungere o eliminare una specifica di filtro o cancellare un elenco di filtri per il filtraggio su chip.

OCF secondario: 0x01

Parametro del sottocomando Misurare Scopo
APCF_Action 1 ottetto 0x00 - Aggiungi
0x01 - Elimina
0x02 - Cancella
Elimina cancellerà il filtro specifico insieme alle voci delle funzionalità associate in altre tabelle.
Cancella cancellerà tutti i filtri e le voci associate in altre tabelle.
APCF_Filter_Index 1 ottetto Indice filtro (0, max_filter-1 )
APCF_Feature_Selection 2 ottetti Maschere di bit per le funzionalità selezionate:
Bit 0: impostare per abilitare il filtro dell'indirizzo di trasmissione
Bit 1: impostare per abilitare il filtro Modifica dati servizio
Bit 2: impostare per abilitare il controllo UUID del servizio
Bit 3: impostare per abilitare il controllo UUID della richiesta di servizio
Bit 4: impostare per abilitare il controllo del nome locale
Bit 5: impostare per abilitare il controllo dei dati del produttore
Bit 6: impostare per abilitare il controllo dei dati di servizio
Bit 7: impostare per abilitare il controllo del servizio di rilevamento del trasporto
Bit 8: impostare per abilitare il controllo del tipo AD
APCF_List_Logic_Type 2 ottetti Operazione logica per ogni selezione di funzionalità (posizione per bit) specificata in APCF_Feature_Selection .
Valido solo quando una funzionalità è abilitata.
Valore della posizione del bit:
0: OPPURE
1: E
Se viene selezionata la logica "AND", un pacchetto ADV passerà il filtro solo se contiene TUTTE le voci dell'elenco.
Se viene selezionata la logica "OR", un pacchetto ADV passerà il filtro se contiene una qualsiasi delle voci nell'elenco.
APCF_Filter_Logic_Type 1 ottetto 0x00: O
0x01: E
Nota: il tipo logico è N/D per i primi tre campi di APCF_Feature_Selection , che è sempre la logica "AND". Sono applicabili solo per (Bit 3 - Bit 6) quattro campi di APCF_Feature_Selection .
rssi_high_thresh 1 ottetto [in dBm]
L'inserzionista è considerato visto solo se il segnale è superiore alla soglia alta RSSI. Altrimenti il ​​firmware deve comportarsi come se non lo avesse mai visto.
delivery_mode 1 ottetto 0x00 - immediate
0x01 - on_found
0x02 - batched
onfound_timeout 2 ottetti Valido solo se delivery_mode è on_found .
[in millisecondi]
È tempo che il firmware si soffermi e raccolga ulteriori annunci pubblicitari prima di segnalare.
onfound_timeout_cnt 1 ottetto Valido solo se delivery_mode è on_found .
[contare]
Se un annuncio pubblicitario in onFound rimane nel firmware per la durata onfound_timeout , raccoglierà alcuni annunci pubblicitari e il conteggio verrà controllato. Se il conteggio supera onfound_timeout_cnt , viene segnalato OnFound immediatamente dopo.
rssi_low_thresh 1 ottetto Valido solo se delivery_mode è on_found .
[in dBm]
Il pacchetto inserzionista viene considerato non visto se l'RSSI del pacchetto ricevuto non è superiore alla soglia RSSI bassa.
onlost_timeout 2 ottetti Valido solo se delivery_mode è on_found .
[in millisecondi]
Se un annuncio, dopo essere stato trovato, non viene visto in modo contiguo per il periodo lost_timeout , verrà immediatamente segnalato come perso.
num_of_tracking_entries 2 ottetti Valido solo se delivery_mode è on_found .
[contare]
Numero totale di inserzionisti da monitorare per filtro.

I valori RSSI devono utilizzare il complemento a 2 per rappresentare valori negativi.

L'host dovrà essere in grado di configurare più filtri con APCF_Application_Address_type impostato su 0x02 (per tutti gli indirizzi dell'emittente) per gestire varie combinazioni di filtri.

Filtraggio, batch e reporting sono concetti correlati. Ogni annuncio pubblicitario e la relativa risposta di scansione dovranno passare attraverso tutti i filtri, uno dopo l'altro. Pertanto, le azioni risultanti ( delivery_mode ) sono strettamente legate al filtraggio. Le modalità di consegna sono le seguenti: report_immediately , batch e onFound . Il valore OnLost è correlato a OnFound nel senso che verrà dopo OnFound in caso di smarrimento.

Questo flusso di elaborazione descrive il modello concettuale:

Quando viene ricevuto un frame di annuncio (o risposta di scansione), viene applicato a tutti i filtri in ordine seriale. È possibile che un annuncio possa causare una segnalazione immediata basata su un filtro e il raggruppamento dello stesso a causa di una diversa azione del filtro.

Le soglie del livello RSSI (alta e bassa) danno la possibilità di controllare quando il frame è visibile per l'elaborazione del filtro, anche quando il controller riceve un pacchetto valido. Nel caso in cui la modalità di consegna sia impostata su immediata o batch, l'RSSI di un frame viene considerato per l'ulteriore elaborazione del controller. App diverse richiedono comportamenti di reporting e batch diversi. Ciò consente a più app di avere rapporti diretti e/o raggruppare i risultati nel firmware, contemporaneamente. Un esempio è il caso in cui una scansione batch è attiva da un'app e successivamente viene emessa una scansione LE regolare da un'altra app. Prima che venga emessa una scansione batch, il framework/l'app imposta i filtri appropriati. Successivamente, quando la seconda app esegue una scansione regolare, il batch precedente continua. Tuttavia, a causa della scansione regolare, è come aggiungere concettualmente un filtro nullo (insieme a tutti i filtri esistenti) insieme al comando LE scan. I parametri del comando di scansione LE hanno la precedenza quando sono attivi. Quando la scansione LE regolare è disabilitata, il controller tornerà alla scansione batch precedente, se esisteva.

La modalità di consegna OnFound si basa sui filtri configurati. Una combinazione che fa sì che l'azione di un filtro abbia successo è considerata l'entità da tracciare per onLost . L'evento corrispondente è il sottoevento di tracciamento LE Advt.

La transizione OnFound/OnLost per un filtro (se abilitato) sarà simile alla seguente:

Per questo comando verrà generato un evento Comando completo.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato di completamento del comando
APCF_opcode 1 ottetto 0x01 - APCF imposta i parametri di filtraggio
APCF_Action 1 ottetto Echo back del comando APCF_Action
APCF_AvailableSpaces 1 ottetto Numero di voci disponibili nella tabella dei filtri

Comando_LE_APCF: broadcast_address_sub_cmd

Questo sottocomando viene utilizzato per aggiungere o eliminare l'indirizzo di un inserzionista o per cancellare l'elenco degli indirizzi degli inserzionisti per il filtraggio su chip.

OCF secondario: 0x02

Parametro del sottocomando Misurare Scopo
APCF_Action 1 ottetto 0x00 - Aggiungi
0x01 - Elimina
0x02 - Cancella
Elimina eliminerà l'indirizzo dell'emittente specificato nel filtro specificato.
Cancella cancellerà tutti gli indirizzi delle emittenti nel filtro specificato.
APCF_Filter_Index 1 ottetto Indice filtro (0, max_filter-1 )
APCF_Broadcaster_Address 6 ottetto Indirizzo del dispositivo a 6 byte da aggiungere o eliminare dall'elenco degli indirizzi dell'emittente
APCF_Application_Address_type 1 ottetto 0x00: pubblico
0x01: casuale
0x02: NA (tipo di indirizzo non applicabile)

Per questo comando verrà generato un evento Comando completo.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato di completamento del comando
APCF_opcode 1 ottetto 0x02 - Indirizzo dell'emittente APCF
APCF_Action 1 ottetto Echo back del comando APCF_Action
APCF_AvailableSpaces 1 ottetto Numero di voci libere ancora disponibili nella tabella Indirizzo broadcast

LE_APCF_Command: service_uuid_sub_cmd

Questo sottocomando viene utilizzato per aggiungere o eliminare un UUID di servizio o per cancellare un elenco di UUID di servizio per il filtraggio su chip.

OCF secondario: 0x03

Parametro del sottocomando Misurare Scopo
APCF_Action 1 ottetto 0x00 - Aggiungi
0x01 - Elimina
0x02 - Cancella
Elimina eliminerà l'indirizzo UUID del servizio specificato nel filtro specificato.
Cancella cancellerà tutti gli UUID del servizio nel filtro specificato.
APCF_Filter_Index 1 ottetto Indice filtro (0, max_filter -1)
APCF_UUID 2,4,16 ottetto L'UUID del servizio (16 bit, 32 bit o 128 bit) per l'aggiunta o l'eliminazione dall'elenco.
APCF_UUID_MASK 2,4,16 ottetto La maschera UUID del servizio (16 bit, 32 bit o 128 bit) da aggiungere all'elenco. Dovrebbe avere la stessa lunghezza di APCF_UUID.

Per questo comando verrà generato un evento Comando completo.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato di completamento del comando
APCF_opcode 1 ottetto 0x03 - UUID del servizio APCF
APCF_Action 1 ottetto Echo back del comando APCF_Action
APCF_AvailableSpaces 1 ottetto Numero di voci libere ancora disponibili nella tabella UUID del servizio

LE_APCF_Command: sollecitation_uuid_sub_cmd

Questo sottocomando viene utilizzato per aggiungere o eliminare un UUID di sollecitazione o per cancellare un elenco di UUID di sollecitazione per il filtraggio su chip.

OCF secondario: 0x04

Parametro del sottocomando Misurare Scopo
APCF_Action 1 ottetto 0x00 - Aggiungi
0x01 - Elimina
0x02 - Cancella
Elimina eliminerà l'indirizzo UUID della richiesta nel filtro specificato.
Cancella cancellerà tutti gli UUID di sollecitazione nel filtro specificato.
APCF_Filter_Index 1 ottetto Indice filtro (0, max_filter -1)
APCF_UUID 2,4,16 ottetto L'UUID della sollecitazione (16 bit, 32 bit o 128 bit) da aggiungere o eliminare dall'elenco.
APCF_UUID_MASK 2,4,16 ottetto La maschera UUID di sollecitazione (16 bit, 32 bit o 128 bit) da aggiungere all'elenco. Dovrebbe avere la stessa lunghezza di APCF_UUID .

Per questo comando verrà generato un evento Comando completo.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato di completamento del comando
APCF_opcode 1 ottetto 0x04 - UUID di sollecitazione APCF
APCF_Action 1 ottetto Echo back del comando APCF_Action
APCF_AvailableSpaces 1 ottetto Numero di voci gratuite ancora disponibili nella tabella UUID di sollecitazione

Comando_LE_APCF: nome_locale_sub_cmd

Questo sottocomando viene utilizzato per aggiungere o eliminare una stringa di nomi locali o per cancellare l'elenco di stringhe di nomi locali per il filtraggio su chip.

OCF secondario: 0x05

Parametro del sottocomando Misurare Scopo
APCF_Action 1 ottetto 0x00 - Aggiungi
0x01 - Elimina
0x02 - Cancella
Elimina eliminerà la stringa del nome locale specificata nel filtro specificato.
Cancella cancellerà tutte le stringhe di nomi locali nel filtro specificato.
APCF_Filter_Index 1 ottetto Indice filtro (0, max_filter -1)
APCF_LocName_Mandata_or_SerData Dimensione variabile Una stringa di caratteri per il nome locale.

Appunti:
  • Attualmente il numero massimo di caratteri in una stringa di nome locale è 29
  • Non applicabile quando l'azione è "Cancella" (0x2)

Per questo comando verrà generato un evento Comando completo.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato di completamento del comando
APCF_opcode 1 ottetto 0x05: nome locale APCF
APCF_Action 1 ottetto Echo back del comando APCF_Action
APCF_AvailableSpaces 1 ottetto Numero di voci libere ancora disponibili nella tabella dei nomi locali

LE_APCF_Command: manf_data_sub_cmd

Questo sottocomando viene utilizzato per aggiungere o eliminare una stringa di dati del produttore o per cancellare l'elenco delle stringhe di dati del produttore per il filtraggio su chip.

OCF secondario: 0x06

Parametro del sottocomando Misurare Scopo
APCF_Action 1 ottetto 0x00 - Aggiungi
0x01 - Elimina
0x02 - Cancella
Elimina eliminerà la stringa di dati del produttore specificata nel filtro specificato.
Cancella cancellerà tutte le stringhe di dati del produttore nel filtro specificato.
APCF_Filter_Index 1 ottetto Indice filtro (0, max_filter -1)
APCF_LocName_Mandata_or_SerData Dimensione variabile Una stringa di caratteri per i dati del produttore.

Appunti:
  • Attualmente il numero massimo di caratteri in una stringa di nome locale è 29
  • Non applicabile quando l'azione è "Cancella" (0x2)
APCF_ManData_Mask Dimensione variabile La maschera dati di fabbricazione da aggiungere alla lista. Dovrebbe avere la stessa lunghezza di APCF_LocName_or_ManData_or_SerData .

Per questo comando verrà generato un evento Comando completo.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato di completamento del comando
APCF_opcode 1 ottetto 0x06: dati del produttore APCF
APCF_Action 1 ottetto Echo back del comando APCF_Action
APCF_AvailableSpaces 1 ottetto Numero di voci gratuite ancora disponibili nella tabella Dati produttore

LE_APCF_Command: service_data_sub_cmd

Questo sottocomando viene utilizzato per aggiungere o eliminare una stringa di dati di servizio o per cancellare l'elenco di stringhe di dati di servizio per il filtraggio su chip.

OCF secondario: 0x07

Parametro del sottocomando Misurare Scopo
APCF_Action 1 ottetto 0x00 - Aggiungi
0x01 - Elimina
0x02 - Cancella
Elimina eliminerà la stringa di dati del servizio specificata nel filtro specificato.
Cancella cancellerà tutte le stringhe di dati del servizio nel filtro specificato.
APCF_Filter_Index 1 ottetto Indice filtro (0, max_filter -1)
APCF_LocName_Mandata_or_SerData Dimensione variabile Una stringa di caratteri per i dati del servizio.

Appunti:
  • Attualmente il numero massimo di caratteri in una stringa di nome locale è 29
  • Non applicabile quando l'azione è "Cancella" (0x2)
APCF_LocName_Mandata_or_SerData_Mask Dimensione variabile La maschera dati del servizio da aggiungere all'elenco. Dovrebbe avere la stessa lunghezza di APCF_LocName_or_ManData_or_SerData.

Per questo comando verrà generato un evento Comando completo.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato di completamento del comando
APCF_opcode 1 ottetto 0x07 - Dati servizio APCF
APCF_Action 1 ottetto Echo back del comando APCF_Action
APCF_AvailableSpaces 1 ottetto Numero di voci libere ancora disponibili per la tabella Dati di servizio

LE_APCF_Command: ad_type_sub_cmd

Questo sottocomando viene utilizzato per aggiungere o eliminare un tipo AD o per cancellare un elenco di tipi AD per il filtraggio su chip. Utilizzare read_extended_features_sub_cmd per verificare se questo comando è supportato o meno.

OCF secondario: 0x09

Parametro del sottocomando Misurare Scopo
APCF_Action 1 ottetto 0x00 - Aggiungi
0x01 - Elimina
0x02 - Cancella
Elimina eliminerà il tipo di annuncio specificato nel filtro specificato.
Cancella cancellerà tutti i tipi di annunci nel filtro specificato.
APCF_Filter_Index 1 ottetto Indice filtro (0, max_filter -1)
APCF_AD_TYPE 1 ottetto Il tipo di annuncio per l'aggiunta o l'eliminazione dall'elenco. Ignora quando APCF_Action è 0x02 (Cancella)
APCF_AD_DATA_Length Dimensione variabile 0x00: significa non filtrare il contenuto dei dati
Ignora quando APCF_Action è 0x02 (Cancella)
APCF_AD_DATA Dimensione variabile Ignora quando APCF_Action è 0x02 (Cancella)
APCF_AD_DATA_MASK Dimensione variabile Ignora quando APCF_Action è 0x02 (Cancella)
Dovrebbe avere la stessa lunghezza di APCF_AD_DATA .

Per questo comando verrà generato un evento Comando completo.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato di completamento del comando
APCF_opcode 1 ottetto 0x09: tipo di annuncio APCF
APCF_Action 1 ottetto Echo back del comando APCF_Action
APCF_AvailableSpaces 1 ottetto Numero di voci libere ancora disponibili nella tabella Tipo AD

LE_APCF_Command: read_extended_features_sub_cmd

Questo sottocomando viene utilizzato per leggere le funzionalità APCF estese.

OCF secondario: 0xFF

Parametro del sottocomando Misurare Scopo
Non applicabile Parametro di comando vuoto.

Per questo comando verrà generato un evento Comando completo.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato di completamento del comando
APCF_opcode 1 ottetto 0xFF - APCF_Read_Extended_Features
APCF_extended_features 2 ottetto

Maschere di bit per funzionalità estese supportate:

  • Bit 0: supporta il filtro del servizio Transport Discovery
  • Bit 1: supporta il filtro del tipo AD
  • Bit 2 ~15: riservato per uso futuro

Valore del bit

  • 0 = Non supportato
  • 1 = Supportato

Attività del controller e comando delle informazioni sull'energia

L'obiettivo di queste informazioni è che le funzioni superiori del sistema host analizzino le attività totali di tutti i componenti, incluso il controller BT e il suo stato macro, insieme a ciò che accade nelle app e nel framework. A tale scopo, sono necessarie le seguenti informazioni dallo stack BT e dal controller:

  • Stack BT: riporta lo stato macrooperativo corrente del controller
  • Firmware: reporting dell'attività aggregata e delle informazioni sull'energia

Stati delle macro dello stack host BT, come determinato a livello utente:

  • Inattivo: [scansione pagina, annuncio LE, scansione richiesta]
  • Scansione: [cercapersone/richiesta/tentativo di connessione]
  • Attivo: [collegamento ACL attivo, collegamento SCO in corso, modalità sniff]

Le attività di cui il controller tiene traccia nel corso della sua vita sono il tempo Tx, il tempo Rx, il tempo di inattività e l'energia totale consumata. Vengono cancellati quando vengono letti dall'host.

LE_Get_Controller_Activity_Energy_Info

Questo è un comando specifico del fornitore.

OCF: 0x159

Parametro del sottocomando Misurare Scopo
N / A Parametri di comando vuoti

Per questo comando verrà generato un evento Comando completo.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato di completamento del comando
total_tx_time_ms 4 ottetti Tempo totale di esecuzione della trasmissione
total_rx_time_ms 4 ottetti Tempo totale di esecuzione della Rx
total_idle_time_ms 4 ottetti Tempo totale di inattività (stati di basso consumo non in modalità sospensione)
total_energy_used 4 ottetti Energia totale utilizzata [prodotto di corrente (mA), tensione (V) e tempo (ms)]

LE comando esteso dei parametri di scansione del set

Questo comando può essere utilizzato per abilitare una finestra e un intervallo di scansione più ampi nel controller. Secondo la specifica BT Core 5.2, una finestra di scansione e un intervallo hanno un limite superiore di 10,24 secondi, il che ostacola gli intervalli di scansione più lunghi delle applicazioni oltre 10,24 secondi.

Riferimento di base: Specifiche BT Core 5.2, pagina 2493 (comando LE Imposta parametri di scansione)

OCF: 0x15A

Parametro di comando Misurare Scopo
LE_Ex_Scan_Type 1 ottetto 0x00 - Scansione passiva. Non verrà inviato alcun pacchetto SCAN_REQ (impostazione predefinita).
0x01 - Scansione attiva. I pacchetti SCAN_REQ possono essere inviati.
LE_Ex_Scan_Interval 4 ottetti Definito come l'intervallo di tempo da quando il controller ha avviato l'ultima scansione LE fino all'inizio della successiva scansione LE.
Intervallo: da 0x0004 a 0x00FFFFFF
Impostazione predefinita: 0x0010 (10 ms)
Tempo = N * 0,625 ms
Intervallo di tempo: da 2,5 ms a 10442,25 secondi
LE_Ex_Scan_Window 4 ottetti La durata della scansione LE. LE_Scan_Window deve essere inferiore o uguale a LE_Scan_Interval .
Intervallo: da 0x0004 a 0xFFFF
Impostazione predefinita: 0x0010 (10 ms)
Tempo = N * 0,625 ms
Intervallo di tempo: da 2,5 ms a 40,95 secondi
Own_Address_Type 1 ottetto 0x00 - Indirizzo del dispositivo pubblico (predefinito)
0x01 - Indirizzo dispositivo casuale
LE_Ex_Scan_Filter_Policy 0x00: accetta tutti i pacchetti pubblicitari (impostazione predefinita). I pacchetti pubblicitari diretti che non sono indirizzati a questo dispositivo verranno ignorati.
0x01 - Ignora i pacchetti pubblicitari provenienti da dispositivi non presenti nell'elenco Solo lista bianca. I pacchetti pubblicitari diretti che non sono indirizzati a questo dispositivo verranno ignorati.

Per questo comando verrà generato un evento Comando completo.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato di completamento del comando

Ottieni il comando delle informazioni di debug del controller

L'obiettivo di questo elemento informativo è acquisire informazioni di debug del controller da un host, in formato binario, per la post-elaborazione e l'analisi. Ciò aiuta a eseguire il debug dei problemi sul campo e fornisce agli ingegneri un kit di strumenti per registrare le informazioni per l'analisi. Un controller può fornire le informazioni quando richiesto da un host tramite l'evento (sottoevento Controller Debug Info) o autonomamente quando richiesto dal controller. Esempi di utilizzo potrebbero essere quello di riportare informazioni sullo stato del firmware, informazioni sul dump di arresto anomalo del sistema, informazioni di registrazione, ecc.

OCF: 0x15B

Parametro di comando Misurare Scopo
N / A Elenco dei parametri di comando vuoto

Per questo comando verrà generato un evento Comando completo.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato di completamento del comando

Supporto per l'offload dell'hardware A2DP

La funzione A2DP Offload supporta l'offload del processo di codifica audio A2DP su un processore audio collegato al controller BT. Il flusso di dati audio codificati passa direttamente dal processore audio al controller BT senza il coinvolgimento dell'host BT. L'host BT è comunque responsabile della configurazione e del controllo della sessione A2DP. Sono disponibili due versioni dei comandi. I comandi legacy con Sub OCF 0x01-0x02 supportano solo codec open source. Le versioni con Sub-OCF 0x02-0x03 sono indipendenti dal codec configurato.

OCF: 0x15D

Avvia l'offload A2DP (legacy)

OCF secondario: 0x01

Utilizzare questo comando sia per configurare il processo di offload A2DP sia per avviare il flusso A2DP.

Parametro di comando Misurare Scopo
Codec 4 ottetti Specifica il tipo di codec
0x01 - SBC
0x02 - CAA
0x04-APTX
0x08 - APTXHD
0x10-LDAC
Max_Latency 2 ottetti Latenza massima consentita (in ms). Un valore pari a zero disabilita lo svuotamento.
SCMS-T_Enable 2 ottetti Ottetto 0: flag che consente l'aggiunta dell'intestazione SCMS-T.
  • 0x00: intestazione SCMS-T non inclusa.
  • 0x01 - Intestazione SCMS-T inclusa.

Ottetto 1: valore per l'intestazione SCMS-T, quando è abilitato.

Sampling_Frequency 4 ottetti 0x01 - 44100 Hz
0x02 - 48000 Hz
0x04 - 88200 Hz
0x08 - 96000 Hz
Bits_Per_Sample 1 ottetto 0x01 - 16 bit per campione
0x02 - 24 bit per campione
0x04 - 32 bit per campione
Channel_Mode 1 ottetto 0x01 - Mono
0x02 -Stereo
Encoded_Audio_Bitrate 4 ottetti La velocità in bit dell'audio codificato in bit al secondo secondo.
0x00000000 - Il bitrate audio non è specificato/non utilizzato.
0x00000001 - 0x00FFFFFF - Bitrate audio codificato in bit al secondo.
0x01000000 - 0xFFFFFFFF - Riservato.
Connection_Handle 2 ottetti Handle di connessione della connessione A2DP in fase di configurazione
L2CAP_Channel_ID 2 ottetti ID canale L2CAP da utilizzare per questa connessione A2DP
L2CAP_MTU_Size 2 ottetti Dimensione massima della MTU L2CAP contenente pacchetti audio codificati
Codec_Information 32 ottetti Informazioni specifiche sul codec.

Codec SBC:

Fare riferimento agli elementi informativi specifici del codec SBC in A2DP v1.3.
Ottetto 0: lunghezza del blocco | Sottobande | Metodo di allocazione
Ottetto 1: valore minimo Bitpool
Ottetto 2: valore massimo di Bitpool
Ottetto 3: Frequenza di campionamento | Modalità canale
Ottetto 4-31: riservato

Codec AAC:

Fare riferimento agli elementi informativi specifici del codec AAC in A2DP v1.3
Ottetto 0: Tipo di oggetto
Ottetto 1; b7: VBR
Ottetto 2-31: riservato

Codec LDAC:

Ottetto 0-3: ID fornitore
0x0000012D

Ottetto 4-5: ID codec
0x00AA-LDAC
Tutti gli altri valori sono riservati

Ottetto 6: Indice bitrate:
0x00 - Alto
0x01 - Metà
0x02 - Basso
0x03 - 0x7E - Riservato
0x7F - ABR (velocità in bit adattiva)
0x80 - 0xFF - Riservato

Ottetto 7: modalità canale LDAC
0x01 -Stereo
0x02 - Doppio
0x04 -Mono
Altri sono riservati

Ottetto 8-31: riservato

Tutti gli altri codec:

Ottetto 0-31: riservato

Verrà generato un evento Comando completo per questo comando.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato di completamento del comando
Sub_Opcode 1 ottetto 0x01: avvia lo scaricamento A2DP

Avvia lo scaricamento A2DP

OCF secondario: 0x03

Utilizzare questo comando sia per configurare il processo di offload A2DP sia per avviare il flusso A2DP.

Parametro di comando Misurare Scopo
Connection Handle 2 ottetti Handle della connessione HCI attiva
L2CAP_Channel_ID 2 ottetti Identificatore del canale L2CAP aperto per lo streaming A2DP
Data_Path_Direction 1 ottetto 0x00 - Uscita (origine/unione AVDTP)
0x01 - Ingresso (AVDTP sink/diviso)
Peer_MTU 2 ottetti Dimensione massima dei pacchetti L2CAP, negoziata con il peer.
CP_Enable_SCMS_T 1 ottetto 0x00: disabilita l'intestazione di protezione del contenuto SCMS-T
0x01: abilita l'intestazione di protezione del contenuto SCMS-T
CP_Header_SCMS_T 1 ottetto Quando l'intestazione di protezione del contenuto SCMS-T è abilitata ( CP_SCMS_T_Enable impostato su 0x01), definisce il valore dell'intestazione che precede il contenuto audio (fare riferimento a A2DP, sezione 3.2.1-2) come definito da Numeri assegnati Bluetooth, sezione 6.3.2.
Ignorato quando la protezione del contenuto SCMS-T non è abilitata.
Vendor_Specific_Parameters_Length 1 ottetto Lunghezza dei parametri specifici del fornitore, nell'intervallo da 0 a 128.
Il valore 0 viene utilizzato quando non vengono forniti parametri aggiuntivi.
Vendor_Specific_Parameters 0-128 ottetti Parametri specifici del fornitore forniti dall'HAL audio Bluetooth, CodecParameters.vendorSpecificParameters[] .

Verrà generato un evento Comando completo per questo comando.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato di completamento del comando
Sub_Opcode 1 ottetto 0x03: avvia lo scaricamento A2DP

Arresta l'offload A2DP (legacy)

OCF secondario: 0x02

Questo comando viene utilizzato per interrompere il flusso A2DP Offload.

Parametro di comando Misurare Scopo
N / A Elenco dei parametri di comando vuoto.

Nessun parametro definito per questo comando.

Verrà generato un evento Comando completo per questo comando.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato di completamento del comando
Sub_Opcode 1 ottetto 0x02: interrompe lo scaricamento A2DP

Arresta lo scaricamento A2DP

OCF secondario: 0x04

Questo comando viene utilizzato per interrompere il flusso A2DP Offload.

Parametro di comando Misurare Scopo
Connection Handle 2 ottetti Handle della connessione HCI attiva
L2CAP_Channel_ID 2 ottetti Identificatore del canale L2CAP aperto per lo streaming A2DP
Data_Path_Direction 1 ottetto 0x00 - Uscita (origine/unione AVDTP)
0x01 - Ingresso (AVDTP sink/diviso)

Verrà generato un evento Comando completo per questo comando.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato di completamento del comando
Sub_Opcode 1 ottetto 0x04: interrompe lo scaricamento A2DP

Comando Rapporto qualità Bluetooth

La funzione di comando del report di qualità BT avvia il meccanismo nel controller Bluetooth per segnalare eventi di qualità Bluetooth all'host. Puoi abilitare quattro opzioni:

  • Modalità di monitoraggio della qualità: il controller invia periodicamente un sotto-evento BQR relativo al collegamento all'host.
  • Avvicinamento a LSTO: se non vengono ricevuti pacchetti dal dispositivo BT collegato per un valore più lungo della metà del timeout di supervisione del collegamento (LSTO), il controller riporta un evento LSTO in avvicinamento all'host.
  • A2DP Audio Chioppy: quando il controller rileva i fattori che causano audio mosso, il controller riporta un evento A2DP Audio Chioppy all'host.
  • (E) SCO Voice Choppy: quando il controller rileva i fattori che causano voce muta, il controller riporta un evento mosso (e) SCO Voice all'host.
  • Infiammazione delle root: questo evento viene inviato dal controller allo stack quando HAL o il controller incontra un errore fatale e deve riavviare Bluetooth.
  • Traccia del messaggio LMP/LL: il controller invia la stretta di mano LMP/LL con il dispositivo remoto all'host.
  • Traccia di pianificazione multi-profilo/coex Bluetooth: il controller invia le informazioni di pianificazione sulla gestione di più profili Bluetooth e coesistenza wireless nella banda da 2,4 GHz all'host.
  • Meccanismo delle informazioni sul debug del controller: quando abilitato, il controller può segnalare autonomamente le informazioni di registrazione del debug attraverso il sotto-evento delle informazioni di debug controller nell'host.

OCF: 0x15e

Parametro di comando Misurare Scopo
BQR_Report_Action 1 ottetto Azione per aggiungere / eliminare i report di eventi di qualità impostati nel parametro BQR_QUILITY_EVENT_MASK o cancellare tutto.

0x00 - Aggiungi
0x01 - Elimina
0x02 - Clear

Elimina eliminerà gli eventi di qualità specifici.
Clear eliminerà tutti i report eventi di qualità (il parametro BQR_quality_event_mask può essere ignorato).

BQR_Quality_Event_Mask 4 ottetti Maschere bit per il report eventi di qualità selezionato.

Bit 0: impostare per abilitare la modalità di monitoraggio della qualità.
Bit 1: impostato su abilitare l'evento LSTO in avvicinamento (per ACL/(E) SCO/ISO).
Bit 2: impostare per abilitare l'evento bloccante audio A2DP.
Bit 3: Imposta per abilitare (e) evento miscuglio SCO.
Bit 4: impostare per abilitare l'evento di infiammazione radicale.
Bit 5: impostare per abilitare la modalità di monitoraggio energetico.
Bit 6: impostato per abilitare l'evento bloccante di Le audio.
BIT 7: Imposta per abilitare Event Connect Fail.
Bit 8 ~ 14: riservato.
Bit 15: impostare per abilitare eventi di qualità specifici del fornitore.
Bit 16: impostato per abilitare la traccia del messaggio LMP/LL.
Bit 17: impostare per abilitare la traccia di pianificazione multi-link/coex Bluetooth.
Bit 18: impostato per abilitare il meccanismo di informazione del debug del controller.
Bit 19 ~ 30: riservato.
Bit 31: impostare per abilitare la traccia specifica del fornitore.

BQR_Minimum_Report_Interval 2 ottetti Definire l'intervallo di tempo minimo dei report eventi di qualità per gli eventi di qualità selezionati. Il firmware del controller non deve segnalare il prossimo evento entro l'intervallo di tempo definito. L'impostazione dell'intervallo deve essere rispettivamente e dedicata per gli eventi di qualità che vengono aggiunti.

Unità: MS
Predefinito: 0 (nessuna limitazione per l'intervallo.)
Intervallo: 0 ~ 65535 ms

BQR_Vendor_Specific_Quality_Event_Mask 4 ottetti Maschere bit per il report eventi di qualità specifico per il fornitore selezionato.
Questo parametro è valido solo quando è impostato il bit 15 di BQR_Quality_Event_Mask .

Bit 0 ~ 31: riservato.

BQR_Vendor_Specific_Trace_Mask 4 ottetti Maschere bit per il report di traccia specifico del fornitore selezionato.
Questo parametro è valido solo quando è impostato il bit 31 di BQR_Quality_Event_Mask .

Bit 0 ~ 31: riservato.

Un evento completo di comando verrà generato per questo comando.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato completo del comando
Current_Quality_Event_Mask 4 ottetti Indica l'impostazione della maschera bit corrente.
Bit 0: la modalità di monitoraggio della qualità è abilitata.
Bit 1: è abilitato l'avvicinarsi del report di eventi LSTO.
Bit 2: il reporting A2DP Audio Chioppy è abilitato.
Bit 3: (e) SCO Voice Choppy Event Reporting è abilitato.
Bit 4: il reporting per eventi di infiammazione root è abilitato.
Bit 5: la modalità di monitoraggio energetico è abilitata.
BIT 6: il report evento bernutico LE è abilitato.
Bit 7: Connect Fail Event.
Bit 8 ~ 14: riservato.
BIT 15: il reporting per eventi di qualità specifico del fornitore è abilitato.
Bit 16: LMP/LL Message Trace è abilitato.
Bit 17: la traccia di pianificazione multi-link/coex Bluetooth è abilitata.
Bit 18: il meccanismo di informazione del debug controller è abilitato.
Bit 19 ~ 30: riservato.
Bit 31: la traccia specifica del fornitore è abilitata.
Current_Vendor_Specific_Quality_Event_Mask 4 ottetti Indica l'impostazione della maschera bit corrente.
Current_Vendor_Specific_Trace_Mask 4 ottetti Indica l'impostazione della maschera bit corrente.

Comando dinamico del buffer audio

Il tampone audio dinamico riduce gli anomalie audio modificando la dimensione del tampone audio nel controller Bluetooth in base a vari scenari.

OCF: 0x15f

Ottieni capacità di tempo del buffer audio

Sub OCF: 0x01

Utilizzare questo comando per ottenere la capacità di tempo del buffer audio dal controller Bluetooth.

Parametro di comando Misurare Scopo
N / A Elenco parametri di comando vuoto

Un evento completo di comando verrà generato per questo comando.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato completo del comando
Dynamic_Audio_Buffer_opcode 1 ottetto 0x01 - Ottieni tempo di buffer audio
Audio_Codec_Type_Supported 4 ottetti Maschere bit per i tipi di codec supportati
Bit 0 - SBC
Bit 1 - AAC
Bit 2 - aptx
Bit 3 - APTX HD
Bit 4 - LDAC
Bit 5-31 sono riservati
Audio_Codec_Buffer_Default_Time_For_Bit_0 2 ottetti Tempo di buffer predefinito del tipo di codec Bit 0 specificato in Audio_Codec_Type_Supportated.
Questo valore deve essere 0 se il tipo di codec bit 0 non è supportato.
Unità: MS
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 2 ottetti Tempo di buffer massimo del tipo di codec Bit 0 specificato in Audio_Codec_Type_Supported.
Questo valore deve essere 0 se il tipo di codec bit 0 non è supportato.
Unità: MS
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 2 ottetti Tempo minimo del buffer del tipo di codec Bit 0 specificato in Audio_Codec_Type_Supportated.
Questo valore deve essere 0 se il tipo di codec bit 0 non è supportato.
Unità: MS
Audio_Codec_Buffer_Default_Time_For_Bit_1 2 ottetti Tempo di buffer predefinito del tipo di codec Bit 1 specificato in Audio_Codec_Type_Supportated.
Questo valore deve essere 0 se il tipo di codec bit 1 non è supportato.
Unità: MS
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 2 ottetti Tempo di buffer massimo del tipo di codec Bit 1 specificato in Audio_Codec_Type_Supported.
Questo valore deve essere 0 se il tipo di codec bit 1 non è supportato.
Unità: MS
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 2 ottetti Tempo minimo del buffer del tipo di codec Bit 1 specificato in Audio_Codec_Type_Supportated.
Questo valore deve essere 0 se il tipo di codec bit 1 non è supportato.
Unità: MS
...... ...... ......
Audio_Codec_Buffer_Default_Time_For_Bit_31 2 ottetti Tempo di buffer predefinito del tipo di codec Bit 31 specificato in Audio_Codec_Type_Supported.
Questo valore deve essere 0 se il tipo di codec Bit 31 non è supportato.
Unità: MS
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 2 ottetti Tempo di buffer massimo del tipo di codec Bit 31 specificato in Audio_Codec_Type_Supported.
Questo valore deve essere 0 se il tipo di codec Bit 31 non è supportato.
Unità: MS
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 2 ottetti Tempo minimo del buffer del tipo di codec Bit 31 specificato in Audio_Codec_Type_Supportated.
Questo valore deve essere 0 se il tipo di codec Bit 31 non è supportato.
Unità: MS

Imposta il tempo del buffer audio

Sub OCF: 0x02

Utilizzare questo comando per impostare il tempo del buffer audio sul controller Bluetooth.

Parametro di comando Misurare Scopo
Audio_Codec_Buffer_Time 2 ottetti Tempo di buffer audio richiesto per il codec utilizzato corrente.
Unità: MS

Un evento completo di comando verrà generato per questo comando.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato completo del comando
Dynamic_Audio_Buffer_opcode 1 ottetto 0x02 - Imposta tempo di buffer audio
Audio_Codec_Buffer_Time 2 ottetti Tempo di buffer audio corrente nel controller Bluetooth.
Unità: MS

Evento HCI (specifico del fornitore)

In alcuni casi sono richiesti eventi HCI specifici del fornitore. Fare riferimento alla Figura 5.4 a pagina 1897 della specifica BT Core 5.2. Il parametro dell'evento 0 conterrà sempre il primo codice sotto-evento, in base al quale viene decodificato il resto dell'evento HCI.

Parametro dell'evento Misurare Scopo
HCI_vendor_specific_event_code 1 ottetto 0xFF
sub_event_code 1 ottetto Un codice di sotto-evento avrà una dimensione di 1 ottetto, il byte immediatamente seguente la lunghezza dei parametri nel pacchetto di eventi HCI.

Sub-evento della soglia di archiviazione

Questo evento indica che la soglia di archiviazione è stata violata.

Codice sub-evento = 0x54

Parametro sub-evento Misurare Scopo
Nessuno

LE MULTI-ADVERTING STATO CAMBIAMENTO SUB-EVENT

Questo evento indica che un'istanza pubblicitaria ha cambiato il suo stato. Al momento, questo evento viene utilizzato solo per indicare quale istanza pubblicitaria è stata fermata a seguito di una connessione.

Codice sub-evento = 0x55

Parametro sub-evento Misurare Scopo
Advertising_instance 1 ottetto Identifica l'istanza pubblicitaria specifica
I valori validi sono da 0 a max_advt_instances -1
State_Change_Reason 1 ottetto 0x00: connessione ricevuta
Connection_handle 2 ottetti Identifica la connessione che ha causato il disabilitato dell'istanza advt (0xFFFF se non valido)

LE PUNZIONE PER MONOSCIMENTO SUB-EVENT

Questo evento indica quando un inserzionista viene trovato o perso.

Codice evento sub = 0x56

Parametro sub-evento Misurare Scopo
APCF_Filter_Index 1 ottetto Filtro Index (0, max_filter -1)
Advertiser_State 1 ottetto 0x00: inserzionista trovato
0x01: inserzionista perso
Advt_Info_Present 1 ottetto 0x00: Inserzionista Informazioni ( Advt_Info ) Presente
0x01: Inserzionista Informazioni ( Advt_Info ) Non presente
Advertiser_Address 6 ottetti Indirizzo pubblico o casuale
Advertiser_Address_Type 1 ottetto 0x00: indirizzo pubblico
0x01: indirizzo casuale
Advt_Info Tx_Pwr[0] : 1 ottetto
RSSI[0] : 1 ottetto
Timestamp[0] : 2 ottetti
Adv packet_len[0] : 1 ottetto
Adv_packet[0] : Adv_packet_len OCTETS
Scan_data_resp_len[0] : 1 ottetto
Scan_data_resp[0] : Scan_data_resp ottetti

Controller Debug Info Sub-Event

Questo evento viene utilizzato da un controller per fornire informazioni binarie di debug a un host.

Sub-Event Code = 0x57

Parametro sub-evento Misurare Scopo
debug_block_byte_offset_start 2 ottetti Offset byte a blocchi di debug dall'inizio
last_block 1 ottetto 0x00: altri dati di debug presenti
0x01: ultimo blocco binario; Niente più dati di debug
cur_pay_load_sz 2 ottetti Dimensione del blocco binario in un evento attuale
Debug_Data Variabile Dati di debug di cur_payload_sz

Sub-evento del rapporto di qualità Bluetooth

Questo evento indica uno dei seguenti: si è verificato un evento di qualità Bluetooth, il controller ha caricato la traccia di messaggi LMP/LL e la traccia di pianificazione multi-link/coex Bluetooth o i dati delle informazioni di debug scaricate controller.

Parametro sub-evento Misurare Scopo
Quality_Report_Id 1 ottetto 0x01: Rapporti di qualità in modalità monitoraggio.
0x02: avvicinamento a LSTO.
0x03: A2DP Audio Chioppy.
0x04: (e) SCO Voice Choppy.
0x05 ~ 0x06: riservato.
0x07: Leudio meli.
0x08: Connetti Fail.
0x09 ~ 0xFF: riservato.
Packet_Types 1 ottetto 0x01: id
0x02: null
0x03: sondaggio
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: riservato
0x51: pacchetto ISO
0x52 ~ 0xff: riservato
Connection_Handle 2 ottetti ACL/(E) Handle di connessione SCO/ISO.
Connection_Role 1 ottetto Eseguire il ruolo per la connessione.
0x00: centrale
0x01: periferico
0x02 ~ 0xFF: riservato.
TX_Power_Level 1 ottetto TRASFERIMENTO DI CORRENTE TRASFERIMENTO LIVELLO DI PROPRIETÀ PER LA CONNESSIONE_SUNCIFICAZIONE.

Questo valore sarà lo stesso del controllo del controller al comando HCI_Read_Transmit_Power_Level.

RSSI 1 ottetto [in DBM]

Valore indicativo di resistenza del segnale ricevuta (RSSI) per la connessione_handle specificata.
Questo valore deve essere un valore di potenza del segnale del ricevitore assoluto.
Intervallo: da -127 a +20

SNR 1 ottetto [in db]

Valore rapporto segnale-rumore (SNR) per la connessione_handle specificata.
Il controller deve fornire il SNR medio di tutti i canali utilizzati dal collegamento.

Unused_AFH_Channel_Count 1 ottetto Indica il numero di canali non utilizzati in AFH_Channel_map.
0x4f ~ 0xff: riservato.
AFH_Select_Unideal_Channel_Count 1 ottetto Indica il numero dei canali che sono interferiti e hanno una cattiva qualità, ma sono ancora selezionati per AFH.
Il numero minimo di canali consentiti dalla specifica Bluetooth è 20, quindi anche se tutti i 79 canali sono interferiti e hanno una cattiva qualità, il controller deve ancora scegliere almeno 20 canali per AFH.
LSTO 2 ottetti Impostazione timeout di supervisione del collegamento corrente.
Tempo = n * 0,625 ms
Intervallo di tempo: 0,625 ms a 40,9 s
Connection_Piconet_Clock 4 ottetti Piconet Clock per la connessione specificata_handle.
Questo valore deve essere lo stesso del comando HCI_Read_Clock HCI con il parametro "Wha_Clock" di 0x01 (orologio piconet).
Unità: N * 0,3125 ms (1 orologio Bluetooth)
Retransmission_Count 4 ottetti Il numero di ritrasmissioni dall'ultimo evento.
Questo conteggio deve essere ripristinato dopo aver riferito all'host.
No_RX_Count 4 ottetti Nessun conteggio RX dall'ultimo evento.
Il conteggio aumenta quando non viene ricevuto alcun pacchetto nella fascia oraria programmata o il pacchetto ricevuto è corrotto.
Questo conteggio deve essere ripristinato dopo aver riferito all'host.
NAK_Count 4 ottetti Nak (negativo riconoscimento) conta dall'ultimo evento.
Questo conteggio deve essere ripristinato dopo aver riferito all'host.
Last_TX_ACK_Timestamp 4 ottetti Timestamp dell'ultimo TX Ack. Si basa sull'orologio Bluetooth di Piconet Central (CLK).
Unità: N * 0,3125 ms (1 orologio Bluetooth)
Flow_Off_Count 4 ottetti Il numero di volte in cui il controller riceve flusso (fermata) dall'ultimo evento.
Questo conteggio deve essere ripristinato dopo aver riferito all'host.
Last_Flow_On_Timestamp 4 ottetti Timestamp dell'ultimo flusso-on (GO). Si basa sull'orologio Bluetooth di Piconet Central (CLK).
Unità: N * 0,3125 ms (1 orologio Bluetooth)
Buffer_Overflow_Bytes 4 ottetti [in byte]

Conta di overflow del buffer dall'ultimo evento.
Il controller conta quanti byte di dati vengono eliminati.
Questo conteggio deve essere ripristinato dopo aver riferito all'host.

Buffer_Underflow_Bytes 4 ottetti [in byte]

Conta di underflow buffer dall'ultimo evento.
Questo conteggio deve essere ripristinato dopo aver riferito all'host.

bdaddr 6 ottetti Indirizzo del dispositivo remoto
cal_failed_item_count 1 ottetto Il conteggio degli oggetti non riusciti di calibrazione
TX_Total_Packets 4 ottetti Il numero di pacchetti che vengono inviati.
TX_UnAcked_Packets 4 ottetti Il numero di pacchetti che non ricevono un riconoscimento.
Questo conteggio viene ripristinato dopo aver riferito all'host.
TX_Flushed_Packets 4 ottetti Il numero di pacchetti che non vengono inviati dal suo punto di scarico.
Questo conteggio viene ripristinato dopo aver riferito all'host.
TX_Last_Subevent_Packets 4 ottetti Il numero di pacchetti che collegano il livello trasmette una PDU di dati della CSI nell'ultimo sottovento di un evento CIS.
Questo conteggio viene ripristinato dopo aver riferito all'host.
Il valore è zero se non esiste un valore valido per il collegamento.
CRC_Error_Packets 4 ottetti Il numero di pacchetti ricevuti con errore CRC dall'ultimo evento.
Questo conteggio viene ripristinato dopo aver riferito all'host.
RX_Duplicate_Packets 4 ottetti Il numero di pacchetti duplicati (ritrasmissione) ricevuti dall'ultimo evento.
Questo conteggio viene ripristinato dopo aver riferito all'host.
Parametro specifico del fornitore (Parametro Lunghezza totale - TBD) * Ottetti Per il fornitore del controller per ottenere parametri specifici più fornitori.

Sub-event Code = 0x58 [Quality_report_id = 0x05, evento di infiammazione root]

Questo evento indica che Bluetooth Hal o il controller hanno riscontrato un errore fatale e necessita di uno stack Bluetooth per registrare questa situazione e riavviare. Il controller deve inviare uno stack root_infiammation_event allo stack Bluetooth prima di inviare il primo frammento degli eventi di informazioni di debug in ogni caso.

Il parametro Error_Code contiene un codice di errore riportato da HAL/controller, 0 se si tratta di un errore specifico del fornitore di chipset. Vendor_Specific_error_code contiene un codice di errore specifico del fornitore di chipset da HAL/controller. Dovrebbe impostare come 0 se il parametro Error_Code non è 0. I parametri ERROR_CODE e VENDOR_SPECIFIC_ERROR_CODE non dovrebbero essere entrambi 0.

Parametro sub-evento Misurare Scopo
Quality_Report_Id 1 ottetto 0x00 ~ 0x04: riservato.
0x05: infiammazione delle radici.
0x06 ~ 0xff: riservato.
Error_Code 1 ottetto 0x00: è incluso il codice di errore specifico del fornitore di chipset.
0x01 ~ 0xFF: si è verificato un errore del controller. Vedere Bluetooth Spec [Vol 2] Parte D, Codici di errore per un elenco di codici di errore e descrizioni.
Vendor_Specific_Error_Code 1 ottetto 0x00: non è incluso alcun codice di errore specifico del fornitore di chipset.
0x01 ~ 0xFF: codice di errore specifico del fornitore di chipset.
Parametro specifico del fornitore (Parametro Lunghezza totale - 4) * Ottetti Per il fornitore del controller per ottenere parametri specifici più fornitori.
Parametro sub-evento Misurare Scopo
Quality_Report_Id 1 ottetto 0x00 ~ 0x10: riservato.
0x11: traccia di messaggio LMP/LL.
0x12: traccia di pianificazione multi-link/coex Bluetooth.
0x13: dump dati di debug per il debug del controller.
0x14 ~ 0xff: riservato.
Connection_Handle 2 ottetti MANUSA DI CONNEGGIO.
Parametro specifico del fornitore (Parametro Lunghezza totale - 4) * Ottetti Formato specifico del fornitore di traccia di messaggi LMP, traccia bluetooth multi-link/coex di pianificazione e dump dati di debug per il debug.

Supporto multi-avvocato

Gli obiettivi del supporto multi-avvistamento sono i seguenti:

  • Capacità di supportare più pubblicità ( max_advt_instances )
  • Diversi poteri di trasmissione per consentire un intervallo variabile
  • Contenuti pubblicitari diversi
  • Una risposta personalizzata per ogni inserzionista
  • Privacy (non trackabile) per ogni inserzionista
  • Collegabile

Per mantenere questa specifica vicina agli standard esistenti, vengono forniti i seguenti comandi specifici del fornitore. Sono derivati ​​dalla specifica Bluetooth Core 4.1.

Le_multi_advt_command

OCF: 0x154

Parametro di comando Misurare Scopo
Multi_advt_opcode 1 ottetto 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

Un evento completo di comando verrà generato per questo comando.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato completo del comando
Multi_advt_opcode 1 ottetto 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

Riferimento di base: Bluetooth Core 4.1 Specifica, pagina 964 (comando parametro pubblicitario set Le set)

Sub OCF: 0x01

Parametro sub-comando Misurare Scopo
Advertising_Interval_Min Per specifico Per specifico
Advertising_Interval_Max Per specifico Per specifico
Advertising_Type Per specifico Per specifico
Own_Address_Type Per specifico Per specifico
Own_Address Per specifico Per specifico
Direct_Address_Type Per specifico Per specifico
Direct_Address Per specifico Per specifico
Advertising_Channel_Map Per specifico Per specifico
Adverstising_Filter_Policy Per specifico Per specifico
Advertising_Instance 1 ottetto Specifica l'applicabilità dei parametri di cui sopra in un'istanza
Tx_power 1 ottetto Transmit_Power
Unità - in DBM (intero firmato)
Intervallo (da -70 a +20)

Il parametro Own_Address potrebbe essere un indirizzo configurato con l'host al momento della configurazione di questa istanza multi-pubblicazione. Ciò fornisce la possibilità di avere un indirizzo privato risolvibile al momento della trasmissione del primo faro. La pubblicità su un'istanza continuerà indipendentemente dalla connessione. Lo stack BT host potrebbe emettere un comando per avviare la pubblicità su un'istanza, pubblicare connessione.

Un evento completo di comando verrà generato per questo comando come specificato nella specifica Bluetooth Core 4.1, secondo il comando sopra. Il controller risponderà con un codice non di successo (parametro non valido) se l'istanza pubblicitaria o i parametri Tx_Power non sono validi.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato completo del comando
Multi_advt_opcode 1 ottetto 0x01 [ Set_Advt_Param_Multi_Sub_Cmd]

Le_multi_advt_command: set_advt_data_multi_sub_cmd

Riferimento di base: Bluetooth Core 4.1 Specifica, pagina 969 (comando dati pubblicitario set Le set)

Sub OCF: 0x02

Parametro sub-comando Misurare Scopo
Advertising_Data_Length Per specifico Per specifico
Advertising_Data Per specifico Per specifico
Advertising_Instance 1 ottetto Specifica l'applicabilità dei parametri di cui sopra in un'istanza

Un evento completo di comando verrà generato per questo comando come specificato nella specifica Bluetooth Core 4.1, secondo il comando sopra. Il controller risponderà con un codice non di successo se l'istanza pubblicitaria o i parametri Tx_Power non sono validi.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato completo del comando
Multi_advt_opcode 1 ottetto 0x02 [ Set_Advt_Data_Multi_Sub_Cmd]

Le_multi_advt_command: set_scan_resp_data_multi_sub_cmd

Riferimento di base: Bluetooth Core 4.1 Specifica, pagina 970 (comando dati di risposta scansione set Le)

Sub OCF: 0x03

Parametro sub-comando Misurare Scopo
Scan_Response_Data_Length Per specifico Per specifico
Scan_Response_Data Per specifico Per specifico
Advertising_Instance 1 ottetto Specifica l'applicabilità dei parametri di cui sopra in un'istanza

Un evento completo di comando verrà generato per questo comando come specificato nella specifica Bluetooth Core 4.1, secondo il comando sopra. Il controller risponderà con un codice non di successo (parametro non valido) se l'istanza pubblicitaria o i parametri Tx_Power non sono validi.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato completo del comando
Multi_advt_opcode 1 ottetto 0x03 [ Set_Scan_Resp_Data_Multi_Sub_Cmd]

Le_multi_advt_command: set_random_addr_multi_sub_cmd

Riferimento di base: Bluetooth Core 4.1 Specifica, pagina 963 (comando di indirizzo casuale Le set)

Sub OCF: 0x04

Parametro sub-comando Misurare Scopo
Indirizzo casuale Per specifico Per specifico
Advertising_Instance 1 ottetto Specifica l'applicabilità dei parametri di cui sopra in un'istanza

Un evento completo di comando verrà generato per questo comando.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato completo del comando
Multi_advt_opcode 1 ottetto 0x04 [ Set_Random_Addr_Multi_Sub_Cmd]

Le_multi_advt_command: set_advt_enable_multi_sub_cmd

Riferimento di base: Bluetooth Core 4.1 Specifica, pagina 971 (Le set pubblicizzare il comando in quella specifica principale)

OCF: 0x05

Parametro sub-comando Misurare Scopo
Advertising_Enable 1 ottetto Un valore di 1 mezzi abilita. Qualsiasi altro valore significa disabilitare.
Advertising_Instance 1 ottetto Specifica l'applicabilità dei parametri di cui sopra in un'istanza. Istanza 0 indica un'istanza HCI standard.

Un evento completo di comando verrà generato per questo comando.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato completo del comando
Multi_advt_opcode 1 ottetto 0x05 [ Set_Advt_Enable_Multi_Sub_Cmd]

Risoluzione scaricata dell'indirizzo privato

Questa funzione risolve un indirizzo privato nel firmware o nell'hardware del controller, che offre i seguenti vantaggi:

  • Latenza coinvolta con l'host nella risoluzione di un indirizzo privato
  • Risparmio di potenza astenendosi dal risveglio dell'host

Le_set_rpa_timeout

OCF: 0x15c

Parametro di comando Misurare Scopo
LE_local_IRK 16 Ottetto L'irk del dispositivo locale utilizzato per generare l'indirizzo risolvibile casuale (ES).
tRPA_min 2 ottetti Il timeout minimo di generazione RPA in pochi secondi. Il controller deve generare nuovi indirizzi risolvibili per eventuali eventi di pubblicità/scansione/connessione su o dopo questo timeout.
Intervallo valido: 300-1800
tRPA_max 2 ottetti Il timeout di generazione RPA massimo in pochi secondi. Il controller deve generare nuovi indirizzi risolvibili per eventuali eventi di pubblicità/scansione/connessione entro o prima di questo timeout.
Intervallo valido: tRPA_min -1800
Parametro di ritorno Misurare Scopo
Status 1 ottetto Lo stato del comando.

Valori di stato HCI suggeriti:
0x00 successo
0x01 Comando sconosciuto (se non supportato)
0x12 Parametri di comando non validi (se qualche parametri non è al di fuori dell'intervallo dato)

Le_rpa_offload_command

OCF: 0x155

Parametro di comando Misurare Scopo
RPA_offload_opcode 1 ottetto 0x1 - Abilita la funzione specifica del cliente
0x2 - Aggiungi Irk all'elenco
0x3 - Rimuovere l'Irk dall'elenco
0x4 - Cancella Elenco Irk
0x5 - Leggi la voce dell'elenco Irk

Un evento completo di comando verrà generato per questo comando.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato completo del comando
Event_RPA_offload_opcode 1 ottetto 0x1 - Abilita la funzione specifica del cliente
0x2 - Aggiungi Irk all'elenco
0x3 - Rimuovere l'Irk dall'elenco
0x4 - Cancella Elenco Irk
0x5 - Leggi la voce dell'elenco Irk

Le_rpa_offload: abilita_cust_specific_sub_command

Sub OCF: 0x01

Parametro sub-comando Misurare Scopo
enable_customer_specific_feature_set 1 ottetto 0x01 - Abilita la funzione RPA scaricata
0x00 - Disabilita la funzione RPA scaricata

L'offload RPA deve essere abilitato dall'host, in base alla capacità del chip. Fare riferimento a LE_Get_Vendor_Capabilities_Command . Ogni chip può avere un max_irk_list_sz variabile nel firmware.

Un evento completo di comando verrà generato per questo comando.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato completo del comando
Event_cust_specific_feature_opcode 1 ottetto 0x01 [Abilita funzione specifica del cliente]

Le_rpa_offload: add_irk_to_list_sub_command

Sub OCF: 0x02

Parametro sub-comando Misurare Scopo
LE_IRK 16 ottetti Le Irk (1 ° byte LSB)
Address_Type 1 ottetto 0: indirizzo pubblico
1: indirizzo casuale
LE_Device_Address 6 ottetti Indirizzo pubblico o casuale associato all'Irk (1 ° byte LSB)

Un evento completo di comando verrà generato per questo comando.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato completo del comando
Event_cust_specific_feature_opcode 1 ottetto 0x02 [Aggiungi Irk all'elenco]
LE_IrkList_AvailableSpaces 1 ottetto Voci di elenco IRL disponibili dopo l'operazione corrente

Le_rpa_offload: remove_irk_to_list_sub_command

Sub OCF: 0x03

Parametro sub-comando Misurare Scopo
Address_Type 1 ottetto 0: indirizzo pubblico
1: indirizzo casuale
LE_Device_Address 6 ottetti Indirizzo pubblico o casuale che si associa all'irk

Un evento completo di comando verrà generato per questo comando.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato completo del comando
Event_cust_specific_feature_opcode 1 ottetto 0x03 [Rimuovi l'IRK dall'elenco]
LE_IrkList_AvailableSpaces 1 ottetto Voci di elenco IRL disponibili dopo l'operazione corrente

Le_rpa_offload: clear_irk_list_sub_command

Sub OCF: 0x04

Parametro sub-comando Misurare Scopo
Nessuno

Un evento completo di comando verrà generato per questo comando.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato completo del comando
Event_cust_specific_feature_opcode 1 ottetto 0x04 [Clear Irk List]
LE_IrkList_AvailableSpaces 1 ottetto Voci di elenco IRL disponibili dopo l'operazione corrente [ max_irk_list_sz]

Le_rpa_offload: read_irk_list_sub_command

Sub OCF: 0x05

Parametro sub-comando Misurare Scopo
LE_read_IRK_list_entry-index 1 ottetto Indice dell'elenco Irk [0, max_irk_list_sz-1]

Un evento completo di comando verrà generato per questo comando.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato completo del comando
Event_cust_specific_feature_opcode 1 ottetto 0x05 [Leggi la voce dell'elenco Irk]
LE_Read_IRK_List_entry 1 ottetto Indice dell'Irk che l'host vuole leggere indietro (la dimensione massima dell'elenco dell'irk è 32)
LE_IRK 16 ottetti Valore irk
Address_Type 1 ottetto 0: indirizzo pubblico
1: indirizzo casuale
LE_Device_Address 6 ottetti Indirizzo pubblico o casuale associato all'irk
LE_Resolved_Private_Address 6 ottetti Indirizzo privato risolvibile risolto corrente di questo Irk
,

L'interfaccia del controller host (HCI) viene utilizzata per l'interazione con un controller Bluetooth.

Questo documento fornisce un elenco di requisiti HCI Bluetooth (BT) e Bluetooth a bassa energia (BLE). L'obiettivo è per i fornitori di stack BT host e i fornitori di controller BT per essere conformi a questi requisiti della piattaforma al fine di utilizzare il set di funzionalità descritto di seguito.

Questo documento si riferisce alla specifica Bluetooth Core 5.2 come "Spec". La specifica Bluetooth Core 5.2 è disponibile sul sito Web Bluetooth SIG insieme ad altri documenti adottati.

Panoramica del design generale

Funzionalità e configurazione di chip

Come piattaforma aperta, Android ha una matrice di versioni di software, OEM, fornitori e funzionalità di piattaforma e chip.

Per gestire il paesaggio variabile e gestire le migrazioni, in questo documento è descritta una filosofia di progettazione per consentire ai controller BT di esporre le loro capacità (al di là delle specifiche standard Bluetooth Core 5.2). Lo stack BT host può quindi utilizzare queste funzionalità per determinare quali caratteristiche abilitare.

Supportare gli standard aperti

Un obiettivo di Android è supportare gli standard aperti dopo la ratifica in una specifica Bluetooth. Se una caratteristica descritta di seguito diventa disponibile nei metodi HCI standard in una futura specifica Bluetooth, ci appoggeremo a fare questo approccio al default.

Capacità specifiche del fornitore

Comando specifico del fornitore: LE_Get_Vendor_Capabilities_Command

Campo comandi OpCode (OCF): 0x153

Parametro di comando Misurare Scopo
N / A Elenco parametri di comando vuoto

Un evento completo di comando verrà generato per questo comando.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato completo del comando
max_advt_instances
(Deprecato)
1 ottetto Numero di istanze pubblicitarie supportate.

Riservato dopo V0.98.
Questo parametro è deprecato nella Funzione Google Spec v0.98 e superiore a favore della pubblicità estesa LE disponibile nella versione 5.0 BT Spec e superiore.
offloaded_resolution_of_private-address
(Deprecato)
1 ottetto Capacità del chip BT di RPA.
Se supportato da un chip, ha bisogno di abilitazione da parte dell'host.
0 = non capace
1 = capace

Riservato dopo V0.98.
Questo parametro è deprecato nella funzionalità di Google Spec v0.98 e superiore a favore della funzione Privacy disponibile nella versione BT Spec versione 4.2 e superiore.
total_scan_results_storage 2 ottetti La memoria per la scansione risulta in byte
max_irk_list_sz 1 ottetto Numero di voci Irk supportate nel firmware
filtering_support 1 ottetto Supporto per il filtro nel controller
0 = non supportato
1 = supportato
max_filter 1 ottetto Numero di filtri supportati
activity_energy_info_support 1 ottetto Supporta la segnalazione di informazioni sull'attività e l'energia
0 = non capace
1 = capace
version_supported 2 ottetti Specifica la versione delle specifiche della funzione Google supportate
byte [0] = numero maggiore
byte [1] = numero minore

v1.03
byte [0] = 0x01
byte [1] = 0x03
total_num_of_advt_tracked 2 ottetti Numero totale di inserzionisti monitorati per scopi OnLost / OnFound
extended_scan_support 1 ottetto Supporta la finestra e l'intervallo di scansione estesi
debug_logging_supported 1 ottetto Supporta la registrazione delle informazioni sul debug binario dal controller
LE_address_generation_offloading_support
(Deprecato)
1 ottetto 0 = non supportato
1 = supportato

Riservato dopo V0.98.
Questo parametro è deprecato nella funzionalità di Google Spec v0.98 e superiore a favore della funzione Privacy disponibile nella versione BT Spec versione 4.2 e superiore.
A2DP_source_offload_capability_mask 4 ottetti Maschere bit per tipi di codec supportati
Bit 0 - SBC
Bit 1 - AAC
Bit 2 - aptx
Bit 3 - APTX HD
Bit 4 - LDAC
Bit 5-31 sono riservati
bluetooth_quality_report_support 1 ottetto Supporta la reporting di eventi di qualità Bluetooth
0 = non capace
1 = capace
dynamic_audio_buffer_support 4 ottetti Supporta il buffer audio dinamico nel controller Bluetooth
Maschere bit per tipi di codec supportati
Bit 0 - SBC
Bit 1 - AAC
Bit 2 - aptx
Bit 3 - APTX HD
Bit 4 - LDAC
Bit 5-31 sono riservati

Batching dei risultati della scansione

Un obiettivo di progettazione è quello di migliorare il modo in cui le notifiche di evento di risposta Bluetooth Le Scan vengono consegnate all'host, al fine di risparmiare energia nell'host.

Riducendo la frequenza con cui il controller notifica il processore di applicazione host per scansionare i risultati, il processore di applicazione host può rimanere inattivo/sonno più a lungo. Ciò riduce il consumo di energia nell'ospite. Il parametro di ritorno total_scan_results_storage di LE_Get_Vendor_Capabilities_Command indica la capacità del chip per la memorizzazione dei risultati della scansione.

Questa funzione si concentra sulla gestione e la configurazione della funzione di archiviazione dei risultati della scansione LE nel controller Bluetooth. L'archiviazione viene utilizzata per intuire temporaneamente i dati pubblicitari e i dati di scansione e i metadati che vengono ricevuti dal controller per la consegna successiva all'host.

Il firmware deve supportare due tipi di batch, che possono essere coinvolti contemporaneamente:

  • Troncato. Contiene i seguenti elementi informativi: {Mac, TX Power, RSSI, Timestamp}
  • Pieno. Contiene i seguenti elementi di informazione: {Mac, TX Power, RSSI, Timestamp, ADV Data, Scanal Response}

Le_batch_scan_command

OCF: 0x156

Parametro di comando Misurare Scopo
Batch_Scan_opcode 1 ottetto 0x1 - Abilita la funzione specifica del cliente
0x2 - Imposta parametri di archiviazione scansione batch
0x3 - Imposta parametri di scansione batch
0x4 - Leggi i parametri del risultato della scansione batch

Un evento completo di comando verrà generato per questo comando. Abilitare la funzione specifica del cliente non avvia la scansione.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato completo del comando
Batch_Scan_opcode 1 ottetto 0x1 - Abilita la funzione specifica del cliente
0x2 - Imposta parametri di archiviazione scansione batch
0x3 - Imposta parametri di scansione batch
0x4 - Leggi i parametri del risultato della scansione batch

Le_batch_scan_command: abilita la funzione specifica del cliente

Sub OCF: 0x01

Parametro sub-comando Misurare Scopo
enable_customer_specific_feature_set 1 ottetto 0x01 - Abilita funzione di scansione batch
0x00 - Disabilita la funzione di scansione batch

Un evento completo di comando verrà generato per questo comando.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato completo del comando
Batch_Scan_opcode 1 ottetto 0x1 - Abilita la funzione specifica del cliente
0x2 - Imposta parametri di archiviazione scansione batch
0x3 - Imposta parametri di scansione batch
0x4 - Leggi i parametri del risultato della scansione batch

Le_batch_scan_command: imposta il sottocomando parametri di archiviazione scansione batch

Sub OCF: 0x02

Parametro sub-comando Misurare Scopo
Batch_Scan_Full_Max 1 ottetto Spazio di archiviazione massimo (in %) allocato a pieno stile
[Intervallo: 0-100]
Batch_Scan_Truncated_Max 1 ottetto Spazio di archiviazione massimo (in %) assegnato allo stile troncato
[Intervallo: 0-100]
Batch_Scan_Notify_Threshold 1 ottetto Livello di notifica di configurazione (in %) per il pool di archiviazione individuale
[Intervallo: 0-100]
L'impostazione su 0 disabiliterà la notifica. Viene generato un evento HCI specifico del fornitore (Superio di violazione della soglia di archiviazione)

Un evento completo di comando verrà generato per questo comando.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato completo del comando
Batch_scan_opcode 1 ottetto 0x02 [Imposta parametri di scansione batch]

Le_batch_scan_command: Imposta il sottocomando Param scansione batch

Sub OCF: 0x03

Parametro sub-comando Misurare Scopo
Batch_Scan_Mode 1 ottetto 0x00 - La scansione batch è disabilitata
0x01 - La modalità troncata è abilitata
0x02 - La modalità completa è abilitata
0x03 - Modalità troncata e completa sono abilitati
Duty_cycle_scan_window 4 ottetti Tempo di scansione batch di scansione (# di slot)
Duty_cyle_scan_interval 4 ottetti Periodo di intervallo di scansione batch (# di slot)
own_address_type 1 ottetto 0x00 - Indirizzo del dispositivo pubblico
0x01 - Indirizzo del dispositivo casuale
Batch_scan_Discard_Rule 1 ottetto 0 - scartare la pubblicità più antica
1 - Scartare la pubblicità con RSSI più debole

Questo sotto-comando inizierà la scansione batch, se abilitato. Nella scansione troncata, i risultati sono archiviati in forma troncata in cui la chiave univoca per lo stile troncato = { BD_ADDR, scan_interval}. Ciò significa che BD_ADDR will per ogni intervallo di scansione. Il record da conservare per la modalità troncata è il seguente: { BD_ADDR , tx power, rssi, timestamp}

Quando la modalità completa è abilitata, verrà utilizzata la scansione attiva e verrà registrata le risposte di scansione. Il tasto unico in stile Full Style = {Mac, AD Packet}, indipendentemente dall'intervallo di scansione. Il record da conservare per la modalità completa è { BD_ADDR , TX Power, RSSI, timestamp, pacchetto di annunci, risposta a scansione}. In stile pieno, lo stesso pacchetto di annunci, se visto più volte su diversi intervalli di scansione, viene registrato una sola volta. Tuttavia, in modalità troncata, è la visibilità di BA_ADDR attraverso diversi intervalli di scansione che è di interesse (una volta per intervallo di scansione). L'RSSI è il valore medio di tutti i duplicati di una pubblicità unica entro un intervallo di scansione.

Un evento completo di comando verrà generato per questo comando.

Parametro di ritorno Misurare Scopo
Status 1 ottetto Stato completo del comando
Batch_scan_opcode 1 ottetto 0x03 [Imposta parametri di scansione batch]

Le_batch_scan_command: leggi i risultati della scansione batch sotto-comando

Sub OCF: 0x04

Parametro sub-comando Misurare Scopo
Batch_Scan_Data_read 1 ottetto 0x01 - Dati in modalità troncata
0x02 – Full mode data

A Command Complete event will be generated for this command. When the host issues this command, all the results in the controller may not fit in one Command Complete event. The host will iterate issuing this command until the corresponding results in the Command Complete event indicate 0 in the number of records, which indicates the controller has no more records to communicate to the host. Each Command Complete event could contain multiple records of only one type of data (Full or Truncated).

Controller and host time references are not synchronized. The unit of the timestamp is 50ms. The value of the timestamp is based off when the Read_Batch_Scan_Results_Sub_cmd is given by the host. If a command arrival time is T_c in the firmware, then the actual time the timestamp was taken in the firmware is T_fw . The reporting time will be: ( T_c - T_fw ). T_c and T_fw are in the firmware time domain. This lets the host compute how long ago the event happened.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
Batch_scan_opcode 1 octet 0x03 [Set Batch Scan parameters]
Batch_Scan_data_read 1 octet Identifies the format (Truncated or Full)
num_of_records 1 octet Number of records of Batch_Scan_data_read
format_of_data Variabile Truncated Mode:
Address[0]: 6 octets
Address_Type[0]: 1 octet
Tx_Pwr[0]: 1 octet
RSSI[0] : 1 octet
Timestamp[0]: 2 octets
[multiple records ( num_of_records ) with above format]

Full Mode:
Address[0]: 6 octets
Address_Type[0]: 1 octet
Tx_Pwr[0]: 1 octet
RSSI[0]: 1 octet
Timestamp[0]: 2 octets
Adv packet_len[0]: 1 octet
Adv_packet[0]: Adv_packet_len octets
Scan_data_resp_len[0]: 1 octet
Scan_data_resp[0]: Scan_data_resp octets
[multiple records with above format ( num_of_records )]

Advertising Packet Content Filter

Use this to enable/disable/setup the Advertising Packet Content Filter (APCF) in the controller. APCF filters advertising reports in the controller but doesn't filter periodic advertising.

LE_APCF_Command

OCF: 0x157

Command parameter Misurare Scopo
APCF_opcode 1 octet 0x00 - APCF Enable
0x01 - APCF Set Filtering parameters
0x02 - APCF Broadcaster Address
0x03 - APCF Service UUID
0x04 - APCF Service Solicitation UUID
0x05 - APCF Local Name
0x06 - APCF Manufacturer Data
0x07 - APCF Service Data
0x08 - APCF Transport Discovery Service
0x09 - APCF AD Type Filter
0x10 ~ 0xAF - Reserved for future use
0xB0 ~ 0xDF - Reserved for vendor
0xE0 ~ 0xFE - Reserved for future use
0xFF - APCF Read extended Features

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Stato reso
APCF_opcode 1 octet 0x00 - APCF Enable
0x01 - APCF Set Filtering parameters
0x02 - APCF Broadcaster Address
0x03 - APCF Service UUID
0x04 - APCF Service Solicitation UUID
0x05 - APCF Local Name
0x06 - APCF Manufacturer Data
0x07 - APCF Service Data
0x08 - APCF Transport Discovery Service
0x09 - APCF AD Type Filter
0x10 ~ 0xAF - Reserved for future use
0xB0 ~ 0xDF - Reserved for vendor
0xE0 ~ 0xFE - Reserved for future use
0xFF - APCF Read extended Features

LE_APCF_Command: Enable_sub_cmd

Sub OCF: 0x00

Sub-command parameter Misurare Scopo
APCF_enable 1 octet 0x01 - Enable APCF feature
0x00 - Disable APCF feature

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
APCF_opcode 1 octet 0x0 - APCF Enable
APCF_Enable 1 octet Enable/disable is set via APCF_enable

LE_APCF_Command: set_filtering_parameters_sub_cmd

This subcommand is used to add or delete a filter specification or clear a filter list for on-chip filtering.

Sub OCF: 0x01

Sub-command parameter Misurare Scopo
APCF_Action 1 octet 0x00 - Add
0x01 - Delete
0x02 - Clear
Delete will clear the specific filter along with associated feature entries in other tables.
Clear will clear all the filters and associated entries in other tables.
APCF_Filter_Index 1 octet Filter index (0, max_filter-1 )
APCF_Feature_Selection 2 octets Bit masks for the selected features:
Bit 0: Set to enable Broadcast Address filter
Bit 1: Set to enable Service Data Change filter
Bit 2: Set to enable Service UUID check
Bit 3: Set to enable Service Solicitation UUID check
Bit 4: Set to enable Local Name check
Bit 5: Set to enable Manufacturer Data Check
Bit 6: Set to enable Service Data Check
Bit 7: Set to enable Transport Discovery Service Check
Bit 8: Set to enable AD Type Check
APCF_List_Logic_Type 2 octets Logic operation for each feature selection (per-bit position) specified in APCF_Feature_Selection .
Valid only when a feature is enabled.
Bit position value:
0: OR
1: AND
If "AND" logic is selected, an ADV packet will pass the filter only if it contains ALL of the entries in the list.
If "OR" logic is selected, an ADV packet will pass the filter if it contains any of the entries in the list.
APCF_Filter_Logic_Type 1 octet 0x00: OR
0x01: AND
Note: The logic type is N/A for the first three fields of APCF_Feature_Selection , which is always "AND" logic. They are only applicable for (Bit 3 - Bit 6) four fields of APCF_Feature_Selection .
rssi_high_thresh 1 octet [in dBm]
The advertiser is considered seen only if the signal is higher than the RSSI high threshold. Otherwise, the firmware must behave as if it never saw it.
delivery_mode 1 octet 0x00 - immediate
0x01 - on_found
0x02 - batched
onfound_timeout 2 octets Valid only if delivery_mode is on_found .
[in milliseconds]
Time for firmware to linger and collect additional advertisements before reporting.
onfound_timeout_cnt 1 octet Valid only if delivery_mode is on_found .
[contare]
If an advertisement in onFound lingers in firmware for the onfound_timeout duration, it will collect a few advertisements and the count is checked. If the count exceeds onfound_timeout_cnt , it's reported OnFound immediately thereafter.
rssi_low_thresh 1 octet Valid only if delivery_mode is on_found .
[in dBm]
The advertiser packet is considered as not seen if the RSSI of the received packet is not above the RSSI low threshold.
onlost_timeout 2 octets Valid only if delivery_mode is on_found .
[in milliseconds]
If an advertisement, after being found, is not seen contiguously for the lost_timeout period, it will immediately be reported lost.
num_of_tracking_entries 2 octets Valid only if delivery_mode is on_found .
[contare]
Total number of advertisers to track per filter.

RSSI values must use 2's complement to represent negative values.

Host shall be able to configure multiple filters with APCF_Application_Address_type set to 0x02 (for all broadcaster addresses) to manage various filter combinations.

Filtering, batching and reporting are inter-related concepts. Every advertisement and related scan response will have to go through all the filters, one after the other. Thus, resulting actions ( delivery_mode ) are closely tied to filtering. The delivery modes are the following: report_immediately , batch , and onFound . The OnLost value is related to OnFound in the sense that it will come after OnFound when lost.

This processing flow depicts the conceptual model:

When an advertisement (or scan response) frame is received, it is applied to all the filters in serial order. It's possible that an advertisement can cause immediate reporting based on one filter and batching of the same due to a different filter action.

RSSI level thresholds (high and low) give the ability to control when the frame is visible for filter processing, even when a valid packet is received by the controller. In case of delivery mode being set to immediate or batched, the RSSI of a frame is considered for further controller processing. Different apps need different reporting and batching behavior. This allows multiple apps to have direct reporting and/or batching of results in firmware, concurrently. An example is a case when a batch scan is active from one app and later a regular LE scan is issued by another app. Before a batch scan is issued, the framework/app sets appropriate filters. Later, when the second app issues a regular scan, previous batching continues. However, due to the regular scan, it is akin to conceptually adding a null filter (along with all the existing filters) along with the LE scan command. The LE scan command parameters take precedence when active. When the regular LE scan is disabled, the controller will revert back to a previous batch scan, if it existed.

The OnFound delivery mode is based on configured filters. A combination that triggers a filter's action to succeed is considered the entity to track for onLost . The corresponding event is the LE Advt tracking subevent.

The OnFound/OnLost transition for a filter (if enabled) will look like the following:

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
APCF_opcode 1 octet 0x01 - APCF Set Filtering Parameters
APCF_Action 1 octet Echo back command's APCF_Action
APCF_AvailableSpaces 1 octet Number of available entries in the filters table

LE_APCF_Command: broadcast_address_sub_cmd

This subcommand is used to add or delete an advertiser address or to clear the advertiser address list for on-chip filtering.

Sub OCF: 0x02

Sub-command parameter Misurare Scopo
APCF_Action 1 octet 0x00 - Add
0x01 - Delete
0x02 - Clear
Delete will delete the specified broadcaster address in the specified filter.
Clear will clear all the broadcaster addresses in the specified filter.
APCF_Filter_Index 1 octet Filter index (0, max_filter-1 )
APCF_Broadcaster_Address 6 octet 6-byte device address to add to or delete from the broadcaster address list
APCF_Application_Address_type 1 octet 0x00: Public
0x01: Random
0x02: NA (addresses type not applicable)

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
APCF_opcode 1 octet 0x02 - APCF Broadcaster Address
APCF_Action 1 octet Echo back command's APCF_Action
APCF_AvailableSpaces 1 octet Number of free entries still available in the Broadcast Address table

LE_APCF_Command: service_uuid_sub_cmd

This subcommand is used to add or delete a service UUID or to clear a service UUID list for on-chip filtering.

Sub OCF: 0x03

Sub-command parameter Misurare Scopo
APCF_Action 1 octet 0x00 - Add
0x01 - Delete
0x02 - Clear
Delete will delete the specified service UUID address in the specified filter.
Clear will clear all the service UUIDs in the specified filter.
APCF_Filter_Index 1 octet Filter index (0, max_filter -1)
APCF_UUID 2,4,16 octet The Service UUID (16-bit, 32-bit, or 128-bit) for adding to, or deleting from, the list.
APCF_UUID_MASK 2,4,16 octet The Service UUID Mask (16-bit, 32-bit, or 128-bit) to add to the list. It should have the same length as APCF_UUID.

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
APCF_opcode 1 octet 0x03 - APCF Service UUID
APCF_Action 1 octet Echo back command's APCF_Action
APCF_AvailableSpaces 1 octet Number of free entries still available in the Service UUID table

LE_APCF_Command: solicitation_uuid_sub_cmd

This subcommand is used to add or delete a solicitation UUID or to clear a solicitation UUID list for on-chip filtering.

Sub OCF: 0x04

Sub-command parameter Misurare Scopo
APCF_Action 1 octet 0x00 - Add
0x01 - Delete
0x02 - Clear
Delete will delete the solicitation UUID address in the specified filter.
Clear will clear all the solicitation UUIDs in the specified filter.
APCF_Filter_Index 1 octet Filter index (0, max_filter -1)
APCF_UUID 2,4,16 octet The Solicitation UUID (16-bit, 32-bit, or 128-bit) to add to or delete from the list.
APCF_UUID_MASK 2,4,16 octet The Solicitation UUID Mask (16-bit, 32-bit, or 128-bit) to add to the list. It should have the same length as the APCF_UUID .

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
APCF_opcode 1 octet 0x04 - APCF Solicitation UUID
APCF_Action 1 octet Echo back command's APCF_Action
APCF_AvailableSpaces 1 octet Number of free entries still available in the Solicitation UUID table

LE_APCF_Command: local_name_sub_cmd

This sub-command is used to add or delete a local name string or to clear the local name string list for on-chip filtering.

Sub OCF: 0x05

Sub-command parameter Misurare Scopo
APCF_Action 1 octet 0x00 - Add
0x01 - Delete
0x02 - Clear
Delete will delete the specified local name string in the specified filter.
Clear will clear all the local name strings in the specified filter.
APCF_Filter_Index 1 octet Filter index (0, max_filter -1)
APCF_LocName_Mandata_or_SerData Variable size A character string for local name.

Appunti:
  • Currently the max number of characters in a local name string is 29
  • Not applicable when action is "Clear" (0x2)

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
APCF_opcode 1 octet 0x05 - APCF Local Name
APCF_Action 1 octet Echo back command's APCF_Action
APCF_AvailableSpaces 1 octet Number of free entries still available in the Local name table

LE_APCF_Command: manf_data_sub_cmd

This subcommand is used to add or delete a manufacturer data string or to clear the manufacturer data string list for on-chip filtering.

Sub OCF: 0x06

Sub-command parameter Misurare Scopo
APCF_Action 1 octet 0x00 - Add
0x01 - Delete
0x02 - Clear
Delete will delete the specified manufacturer data string in the specified filter.
Clear will clear all the manufacturer data strings in the specified filter.
APCF_Filter_Index 1 octet Filter Index (0, max_filter -1)
APCF_LocName_Mandata_or_SerData Variable size A character string for manufacturer data.

Appunti:
  • Currently the max number of characters in a local name string is 29
  • Not applicable when action is "Clear" (0x2)
APCF_ManData_Mask Variable size The manufacture data mask to add to the list. It should have the same length as APCF_LocName_or_ManData_or_SerData .

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
APCF_opcode 1 octet 0x06 - APCF Manufacturer Data
APCF_Action 1 octet Echo back command's APCF_Action
APCF_AvailableSpaces 1 octet Number of free entries still available in the Manufacturer Data table

LE_APCF_Command: service_data_sub_cmd

This subcommand is used to add or delete a service data string or to clear the service data string list for on-chip filtering.

Sub OCF: 0x07

Sub-command parameter Misurare Scopo
APCF_Action 1 octet 0x00 - Add
0x01 - Delete
0x02 - Clear
Delete will delete the specified service data string in the specified filter.
Clear will clear all the service data strings in the specified filter.
APCF_Filter_Index 1 octet Filter Index (0, max_filter -1)
APCF_LocName_Mandata_or_SerData Variable size A character string for service data.

Appunti:
  • Currently the max number of characters in a local name string is 29
  • Not applicable when action is "Clear" (0x2)
APCF_LocName_Mandata_or_SerData_Mask Variable size The service data mask to add to the list. It should have the same length as APCF_LocName_or_ManData_or_SerData.

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
APCF_opcode 1 octet 0x07 - APCF Service Data
APCF_Action 1 octet Echo back command's APCF_Action
APCF_AvailableSpaces 1 octet Number of free entries still available for Service Data table

LE_APCF_Command: ad_type_sub_cmd

This subcommand is used to add or delete an AD type or to clear an AD type list for on-chip filtering. Use read_extended_features_sub_cmd to check if this command is supported or not.

Sub OCF: 0x09

Sub-command parameter Misurare Scopo
APCF_Action 1 octet 0x00 - Add
0x01 - Delete
0x02 - Clear
Delete will delete the specified AD type in the specified filter.
Clear will clear all the AD types in the specified filter.
APCF_Filter_Index 1 octet Filter Index (0, max_filter -1)
APCF_AD_TYPE 1 octet The AD Type for adding to, or deleting from, the list. Ignore when APCF_Action is 0x02 (Clear)
APCF_AD_DATA_Length Variable size 0x00 - means do not filter data content
Ignore when APCF_Action is 0x02 (Clear)
APCF_AD_DATA Variable size Ignore when APCF_Action is 0x02 (Clear)
APCF_AD_DATA_MASK Variable size Ignore when APCF_Action is 0x02 (Clear)
It should have the same length as APCF_AD_DATA .

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
APCF_opcode 1 octet 0x09 - APCF AD Type
APCF_Action 1 octet Echo back command's APCF_Action
APCF_AvailableSpaces 1 octet Number of free entries still available in the AD Type table

LE_APCF_Command: read_extended_features_sub_cmd

This subcommand is used to read extended APCF features.

Sub OCF: 0xFF

Sub-command parameter Misurare Scopo
Non applicabile Empty command parameter.

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
APCF_opcode 1 octet 0xFF - APCF_Read_Extended_Features
APCF_extended_features 2 octet

Bit masks for extended features supported:

  • Bit 0: Support Transport Discovery Service filter
  • Bit 1: Support AD Type filter
  • Bit 2 ~15: Reserved for future use

Value of bit

  • 0 = Not supported
  • 1 = Supported

Controller activity and energy information command

The objective of this information is for higher host system functions to analyze the total activities of all components, including the BT controller and its macro state, in conjunction with what is happening in the apps and framework. To do this, the following information is required from the BT stack and the controller:

  • BT stack: Reporting the current macro-operational state of the controller
  • Firmware: Reporting aggregate activity and energy information

BT host stack macro states, as determined at the user level:

  • Idle: [page scan, LE advt, inquiry scan]
  • Scan: [paging/inquiry/trying to connect]
  • Active: [ACL link on, SCO link ongoing, sniff mode]

The activities that the controller keeps track of over its life are Tx time, Rx time, idle time, and total energy consumed. They are cleared when read from the host.

LE_Get_Controller_Activity_Energy_Info

This is a vendor-specific command.

OCF: 0x159

Sub-command parameter Misurare Scopo
N / A Empty command params

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
total_tx_time_ms 4 octets Total time performing Tx
total_rx_time_ms 4 octets Total time performing Rx
total_idle_time_ms 4 octets Total time in idle (non-sleep low power states)
total_energy_used 4 octets Total energy used [product of current (mA), voltage (V) and time (ms)]

LE extended set scan parameters command

This command can be used to enable a larger scan window and interval in the controller. Per the BT Core 5.2 Specification, a scan window and interval have an upper bound limit of 10.24 seconds, which hampers applications' longer scan intervals beyond 10.24 seconds.

Base reference: BT Core 5.2 Specification, page 2493 (LE Set Scan Parameters Command)

OCF: 0x15A

Command Parameter Misurare Scopo
LE_Ex_Scan_Type 1 octet 0x00 - Passive scanning. No SCAN_REQ packets shall be sent (default).
0x01 - Active scanning. SCAN_REQ packets may be sent.
LE_Ex_Scan_Interval 4 octets Defined as the time interval from when the Controller started its last LE scan until it began the subsequent LE scan.
Range: 0x0004 to 0x00FFFFFF
Default: 0x0010 (10 ms)
Time = N * 0.625 ms
Time range: 2.5 ms to 10442.25 seconds
LE_Ex_Scan_Window 4 octets The duration of the LE scan. LE_Scan_Window shall be less than or equal to LE_Scan_Interval .
Range: 0x0004 to 0xFFFF
Default: 0x0010 (10 ms)
Time = N * 0.625 ms
Time Range: 2.5 ms to 40.95 seconds
Own_Address_Type 1 octet 0x00 - Public Device Address (default)
0x01 - Random Device Address
LE_Ex_Scan_Filter_Policy 0x00 - Accept all advertisement packets (default). Directed advertising packets which are not addressed for this device shall be ignored.
0x01 - Ignore advertisement packets from devices not in the White List Only list. Directed advertising packets which are not addressed for this device shall be ignored.

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Command Complete status

Get controller debug info command

The objective of this information element is to acquire controller debug information by a host, in binary form, for post-processing and analysis. This helps debug on-field issues and provides engineers with a toolkit to log information for analysis. A Controller can provide the information when requested by a host via the event (Controller Debug Info sub-event) or autonomously when desired by the controller. Example uses could be to report firmware state information, crash dump information, logging information, etc.

OCF: 0x15B

Command parameter Misurare Scopo
N / A Empty command parameter list

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Command Complete status

A2DP Hardware Offload Support

The A2DP Offload feature supports the offload of the A2DP audio encoding process to an audio processor attached to the BT Controller. The encoded audio data stream passes directly from the Audio processor to the BT Controller without the BT host's involvement. The BT Host is still responsible for the configuration and control of the A2DP session. Two versions of the commands are available. The legacy commands with Sub OCF 0x01-0x02 only support open-source codecs. The versions with Sub-OCF 0x02-0x03 are agnostic to the configured codec.

OCF: 0x15D

Start A2DP Offload (legacy)

Sub OCF: 0x01

Use this command both to configure the A2DP Offload process and to start the A2DP stream.

Command parameter Misurare Scopo
Codec 4 octets Specifies Codec type
0x01 - SBC
0x02 - AAC
0x04 - APTX
0x08 - APTX HD
0x10 - LDAC
Max_Latency 2 octets Max Latency Allowed (in ms). A value of zero disables flush.
SCMS-T_Enable 2 octets Octet 0: Flag that enables addition of SCMS-T header.
  • 0x00 - SCMS-T Header not included.
  • 0x01 - SCMS-T Header included.

Octet 1: Value for the SCMS-T header, when it's enabled.

Sampling_Frequency 4 octets 0x01 - 44100 Hz
0x02 - 48000 Hz
0x04 - 88200 Hz
0x08 - 96000 Hz
Bits_Per_Sample 1 octet 0x01 - 16 bits per sample
0x02 - 24 bits per sample
0x04 - 32 bits per sample
Channel_Mode 1 octet 0x01 - Mono
0x02 - Stereo
Encoded_Audio_Bitrate 4 octets The encoded audio bitrate in bits per second second.
0x00000000 - The audio bitrate is not specified / unused.
0x00000001 - 0x00FFFFFF - Encoded audio bitrate in bits per second.
0x01000000 - 0xFFFFFFFF - Reserved.
Connection_Handle 2 octets Connection Handle of A2DP connection being configured
L2CAP_Channel_ID 2 octets L2CAP Channel ID to be used for this A2DP connection
L2CAP_MTU_Size 2 octets Maximum size of L2CAP MTU containing encoded audio packets
Codec_Information 32 octets Codec-specific Information.

SBC Codec:

Refer to SBC Codec specific information elements in A2DP v1.3.
Octet 0: Block length | Subbands | Allocation Method
Octet 1: Minimum Bitpool value
Octet 2: Maximum Bitpool value
Octet 3: Sampling Frequency | Channel Mode
Octet 4-31: reserved

AAC Codec:

Refer to AAC Codec specific information elements in A2DP v1.3
Octet 0: Object Type
Octet 1; b7: VBR
Octet 2-31: reserved

LDAC Codec:

Octet 0-3: Vendor ID
0x0000012D

Octet 4-5: Codec ID
0x00AA - LDAC
Tutti gli altri valori sono riservati

Octet 6: Bitrate Index:
0x00 - High
0x01 - Mid
0x02 - Low
0x03 - 0x7E - Reserved
0x7F - ABR (Adaptive Bit Rate)
0x80 - 0xFF - Reserved

Octet 7: LDAC Channel Mode
0x01 - Stereo
0x02 - Dual
0x04 - Mono
Others are reserved

Octet 8-31: reserved

All other codecs:

Octet 0-31: reserved

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
Sub_Opcode 1 octet 0x01 - Start A2DP Offload

Start A2DP Offload

Sub OCF: 0x03

Use this command both to configure the A2DP Offload process and to start the A2DP stream.

Command parameter Misurare Scopo
Connection Handle 2 octets Handle of the active HCI connection
L2CAP_Channel_ID 2 octets Identifier of the L2CAP Channel opened for A2DP streaming
Data_Path_Direction 1 octet 0x00 - Output (AVDTP Source/Merge)
0x01 - Input (AVDTP Sink/Split)
Peer_MTU 2 octets Maximum size of L2CAP packets, negotiated with the peer.
CP_Enable_SCMS_T 1 octet 0x00 - Disable SCMS-T Content Protection Header
0x01 - Enable SCMS-T Content Protection Header
CP_Header_SCMS_T 1 octet When SCMS-T Content Protection Header is enabled ( CP_SCMS_T_Enable set to 0x01), defines the header value that precedes the audio content (refer to A2DP, section 3.2.1-2) as defined by Bluetooth Assigned Numbers, section 6.3.2.
Ignored when SCMS-T Content protection isn't enabled.
Vendor_Specific_Parameters_Length 1 octet Length of Vendor Specific Parameters, in the range from 0 to 128.
The value 0 is used when no additional parameters are provided.
Vendor_Specific_Parameters 0-128 octets Vendor Specific Parameters provided by the Bluetooth Audio HAL, CodecParameters.vendorSpecificParameters[] .

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
Sub_Opcode 1 octet 0x03 - Start A2DP Offload

Stop A2DP Offload (legacy)

Sub OCF: 0x02

This command is used to stop the A2DP Offload stream.

Command parameter Misurare Scopo
N / A Empty command parameter list.

No parameters are defined for this command.

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
Sub_Opcode 1 octet 0x02 - Stop A2DP Offload

Stop A2DP Offload

Sub OCF: 0x04

This command is used to stop the A2DP Offload stream.

Command parameter Misurare Scopo
Connection Handle 2 octets Handle of the active HCI connection
L2CAP_Channel_ID 2 octets Identifier of the L2CAP Channel opened for A2DP streaming
Data_Path_Direction 1 octet 0x00 - Output (AVDTP Source/Merge)
0x01 - Input (AVDTP Sink/Split)

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
Sub_Opcode 1 octet 0x04 - Stop A2DP Offload

Bluetooth Quality Report command

The BT Quality Report command feature starts the mechanism in the Bluetooth controller to report Bluetooth Quality events to the host. You can enable four options:

  • Quality Monitoring Mode: The controller periodically sends a Link Quality related BQR sub-event to the host.
  • Approaching LSTO: If no packets are received from the connected BT device for longer than half of the Link Supervision TimeOut (LSTO) value, the controller reports an Approaching LSTO event to the host.
  • A2DP Audio Choppy: When the controller detects factors that cause choppy audio, the controller reports an A2DP Audio Choppy event to the host.
  • (e)SCO Voice Choppy: When the controller detects factors that cause choppy voice, the controller reports an (e)SCO Voice Choppy event to the host.
  • Root Inflammation: This event is sent by the controller to the stack when the HAL or the controller encounters a fatal error and needs to restart Bluetooth.
  • LMP/LL message trace: The controller sends the LMP/LL message handshaking with the remote device to the host.
  • Bluetooth Multi-profile/Coex scheduling trace: The controller sends its scheduling information on handling multiple Bluetooth profiles and wireless coexistence in the 2.4 Ghz band to the host.
  • Controller Debug Information mechanism: When enabled, the controller can autonomously report debug logging information through the Controller debug info sub-event to the host.

OCF: 0x15E

Command parameter Misurare Scopo
BQR_Report_Action 1 octet Action to add / delete reporting of quality event(s) set in BQR_Quality_Event_Mask parameter, or clear all.

0x00 - Add
0x01 - Delete
0x02 - Clear

Delete will clear specific quality event(s) reporting.
Clear will clear all quality events reporting (BQR_Quality_Event_Mask parameter can be ignored).

BQR_Quality_Event_Mask 4 octets Bit masks for the selected quality event reporting.

Bit 0: Set to enable quality monitoring mode.
Bit 1: Set to enable Approaching LSTO event (for ACL/(e)SCO/ISO).
Bit 2: Set to enable A2DP Audio Choppy event.
Bit 3: Set to enable (e)SCO Voice Choppy event.
Bit 4: Set to enable Root inflammation event.
Bit 5: Set to enable energy monitoring mode.
Bit 6: Set to enable LE audio choppy event.
Bit 7: Set to enable connect fail event.
Bit 8 ~ 14: Reserved.
Bit 15: Set to enable vendor-specific quality events.
Bit 16: Set to enable LMP/LL message trace.
Bit 17: Set to enable Bluetooth Multi-link/Coex scheduling trace.
Bit 18: Set to enable the Controller Debug Information mechanism.
Bit 19 ~ 30: Reserved.
Bit 31: Set to enable vendor-specific trace.

BQR_Minimum_Report_Interval 2 octets Define the minimum time interval of quality event reporting for the selected quality event(s). The controller Firmware should not report the next event within the defined time interval. The interval setting shall be respective and dedicated for the quality event(s) which are being added.

Unit: ms
Default: 0 (No limitation for the interval.)
Range: 0 ~ 65535 ms

BQR_Vendor_Specific_Quality_Event_Mask 4 octets Bit masks for the selected vendor-specific quality event reporting.
This parameter is valid only when bit 15 of BQR_Quality_Event_Mask is set.

Bit 0 ~ 31: Reserved.

BQR_Vendor_Specific_Trace_Mask 4 octets Bit masks for the selected vendor-specific trace reporting.
This parameter is valid only when bit 31 of BQR_Quality_Event_Mask is set.

Bit 0 ~ 31: Reserved.

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
Current_Quality_Event_Mask 4 octets Indicates current bit mask setting.
Bit 0: Quality monitoring mode is enabled.
Bit 1: Approaching LSTO event reporting is enabled.
Bit 2: A2DP Audio Choppy event reporting is enabled.
Bit 3: (e)SCO Voice Choppy event reporting is enabled.
Bit 4: Root inflammation event reporting is enabled.
Bit 5: Energy monitoring mode is enabled.
Bit 6: LE audio choppy event reporting is enabled.
Bit 7: Connect fail event.
Bit 8 ~ 14: Reserved.
Bit 15: Vendor-specific quality event reporting is enabled.
Bit 16: LMP/LL message trace is enabled.
Bit 17: Bluetooth Multi-link/Coex scheduling trace is enabled.
Bit 18: Controller Debug Information mechanism is enabled.
Bit 19 ~ 30: Reserved.
Bit 31: Vendor-specific trace is enabled.
Current_Vendor_Specific_Quality_Event_Mask 4 octets Indicates current bit mask setting.
Current_Vendor_Specific_Trace_Mask 4 octets Indicates current bit mask setting.

Dynamic Audio Buffer command

The Dynamic Audio Buffer reduces audio glitching by changing the audio buffer size in the Bluetooth controller based on various scenarios.

OCF: 0x15F

Get audio buffer time capability

Sub OCF: 0x01

Use this command to get the audio buffer time capability from the Bluetooth controller.

Command parameter Misurare Scopo
N / A Empty Command parameter list

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
Dynamic_Audio_Buffer_opcode 1 octet 0x01 - Get audio buffer time
Audio_Codec_Type_Supported 4 octets Bit masks for the supported codec types
Bit 0 - SBC
Bit 1 - AAC
Bit 2 - APTX
Bit 3 - APTX HD
Bit 4 - LDAC
Bit 5-31 are reserved
Audio_Codec_Buffer_Default_Time_For_Bit_0 2 octets Default buffer time of the Bit 0 codec type specified in Audio_Codec_Type_Supported.
This value shall be 0 if the Bit 0 codec type is not supported.
Unit: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 2 octets Maximum buffer time of the Bit 0 codec type specified in Audio_Codec_Type_Supported.
This value shall be 0 if the Bit 0 codec type is not supported.
Unit: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 2 octets Minimum buffer time of the Bit 0 codec type specified in Audio_Codec_Type_Supported.
This value shall be 0 if the Bit 0 codec type is not supported.
Unit: ms
Audio_Codec_Buffer_Default_Time_For_Bit_1 2 octets Default buffer time of the Bit 1 codec type specified in Audio_Codec_Type_Supported.
This value shall be 0 if the Bit 1 codec type is not supported.
Unit: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 2 octets Maximum buffer time of the Bit 1 codec type specified in Audio_Codec_Type_Supported.
This value shall be 0 if the Bit 1 codec type is not supported.
Unit: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 2 octets Minimum buffer time of the Bit 1 codec type specified in Audio_Codec_Type_Supported.
This value shall be 0 if the Bit 1 codec type is not supported.
Unit: ms
...... ...... ......
Audio_Codec_Buffer_Default_Time_For_Bit_31 2 octets Default buffer time of the Bit 31 codec type specified in Audio_Codec_Type_Supported.
This value shall be 0 if the Bit 31 codec type is not supported.
Unit: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 2 octets Maximum buffer time of the Bit 31 codec type specified in Audio_Codec_Type_Supported.
This value shall be 0 if the Bit 31 codec type is not supported.
Unit: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 2 octets Minimum buffer time of the Bit 31 codec type specified in Audio_Codec_Type_Supported.
This value shall be 0 if the Bit 31 codec type is not supported.
Unit: ms

Set audio buffer time

Sub OCF: 0x02

Use this command to set the audio buffer time to the Bluetooth controller.

Command parameter Misurare Scopo
Audio_Codec_Buffer_Time 2 octets Requested audio buffer time for the current used codec.
Unit: ms

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
Dynamic_Audio_Buffer_opcode 1 octet 0x02 - Set audio buffer time
Audio_Codec_Buffer_Time 2 octets Current audio buffer time in the Bluetooth controller.
Unit: ms

HCI event (vendor-specific)

Vendor-specific HCI events are required in some cases. Refer to Figure 5.4 on page 1897 of the BT Core 5.2 Specification. Event parameter 0 will always contain the first sub-event code, based on which the rest of the HCI event is decoded.

Event Parameter Misurare Scopo
HCI_vendor_specific_event_code 1 octet 0xFF
sub_event_code 1 octet A sub-event code will be 1 octet in size, the byte immediately following Parameter Length in the HCI event packet.

Storage threshold breach sub-event

This event indicates that the storage threshold has been breached.

Sub-event code = 0x54

Sub-event Parameter Misurare Scopo
Nessuno

LE multi-advertising state change sub-event

This event indicates that an advertising instance has changed its state. At this time, this event is only used to indicate which advertising instance was stopped as a result of a connection.

Sub-event code = 0x55

Sub-event parameter Misurare Scopo
Advertising_instance 1 octet Identifies the specific advertising instance
Valid values are 0 through max_advt_instances -1
State_Change_Reason 1 octet 0x00: Connection received
Connection_handle 2 octets Identifies the connection that caused the advt instance to be disabled (0xFFFF if invalid)

LE advertisement tracking sub-event

This event indicates when an advertiser is found or lost.

Sub event code = 0x56

Sub-event Parameter Misurare Scopo
APCF_Filter_Index 1 octet Filter Index (0, max_filter -1)
Advertiser_State 1 octet 0x00: Advertiser found
0x01: Advertiser lost
Advt_Info_Present 1 octet 0x00: Advertiser information ( Advt_Info ) present
0x01: Advertiser information ( Advt_Info ) not present
Advertiser_Address 6 octets Public or random address
Advertiser_Address_Type 1 octet 0x00: Public address
0x01: Random address
Advt_Info Tx_Pwr[0] : 1 octet
RSSI[0] : 1 octet
Timestamp[0] : 2 octets
Adv packet_len[0] : 1 octet
Adv_packet[0] : Adv_packet_len octets
Scan_data_resp_len[0] : 1 octet
Scan_data_resp[0] : Scan_data_resp octets

Controller debug info sub-event

This event is used by a Controller to provide binary debug information to a host.

Sub-event code = 0x57

Sub-event Parameter Misurare Scopo
debug_block_byte_offset_start 2 octets Debug block byte offset from the start
last_block 1 octet 0x00: More debug data present
0x01: Last binary block; no more debug data
cur_pay_load_sz 2 octets Binary block size in a current event
Debug_Data Variabile Debug data of cur_payload_sz

Bluetooth Quality Report sub-event

This event indicates one of the following: a Bluetooth quality event occurred, the controller uploaded the LMP/LL message trace and Bluetooth Multi-link/Coex scheduling trace, or the controller dumped debug information data.

Sub-event Parameter Misurare Scopo
Quality_Report_Id 1 octet 0x01: Quality reporting on the monitoring mode.
0x02: Approaching LSTO.
0x03: A2DP Audio Choppy.
0x04: (e)SCO Voice Choppy.
0x05 ~ 0x06: Reserved.
0x07: LE audio choppy.
0x08: Connect fail.
0x09 ~ 0xFF: Reserved.
Packet_Types 1 octet 0x01: ID
0x02: NULL
0x03: POLL
0x04: FHS
0x05: HV1
0x06: HV2
0x07: HV3
0x08: DV
0x09: EV3
0x0A: EV4
0x0B: EV5
0x0C: 2-EV3
0x0D: 2-EV5
0x0E: 3-EV3
0x0F: 3-EV5
0x11: DH1
0x12: DM3
0x13: DH3
0x14: DM5
0x15: DH5
0x16: AUX1
0x17: 2-DH1
0x18: 2-DH3
0x19: 2-DH5
0x1A: 3-DH1
0x1B: 3-DH3
0x1C: 3-DH5
0x1D ~ 0x50: Reserved
0x51: ISO packet
0x52 ~ 0xFF: Reserved
Connection_Handle 2 octets ACL/(e)SCO/ISO connection handle.
Connection_Role 1 octet Performing Role for the connection.
0x00: Central
0x01: Peripheral
0x02 ~ 0xFF: Reserved.
TX_Power_Level 1 octet Current transmit power level for the specified Connection_Handle.

This value shall be the same as the controller's responding to the HCI_Read_Transmit_Power_Level HCI command.

RSSI 1 octet [in dBm]

Received Signal Strength Indication (RSSI) value for the specified Connection_Handle.
This value shall be an absolute receiver signal strength value.
Range: -127 to +20

SNR 1 octet [in dB]

Signal-to-Noise Ratio (SNR) value for the specified Connection_Handle.
The controller shall provide the average SNR of all the channels used by the link.

Unused_AFH_Channel_Count 1 octet Indicates the number of unused channels in AFH_channel_map.
0x4F ~ 0xFF: Reserved.
AFH_Select_Unideal_Channel_Count 1 octet Indicates the number of the channels which are interfered and have bad quality, but they are still selected for AFH.
The minimum number of channels allowed by the Bluetooth specification is 20, so even if all 79 channels are interfered and have bad quality, the controller still needs to choose at least 20 channels for AFH.
LSTO 2 octets Current Link Supervision Timeout Setting.
Time = N * 0.625 ms
Time Range: 0.625 ms to 40.9 s
Connection_Piconet_Clock 4 octets Piconet Clock for the specified Connection_Handle.
This value shall be the same as the controller's responding to HCI_Read_Clock HCI command with parameter "Which_Clock" of 0x01 (Piconet Clock).
Unit: N * 0.3125 ms (1 Bluetooth Clock)
Retransmission_Count 4 octets The number of retransmissions since the last event.
This count shall be reset after reporting to the host.
No_RX_Count 4 octets No RX count since the last event.
The count increases when no packet is received at the scheduled time slot or the received packet is corrupted.
This count shall be reset after reporting to the host.
NAK_Count 4 octets NAK (Negative Acknowledge) count since the last event.
This count shall be reset after reporting to the host.
Last_TX_ACK_Timestamp 4 octets Timestamp of last TX ACK. It is based on the Bluetooth Clock of the piconet central (CLK).
Unit: N * 0.3125 ms (1 Bluetooth Clock)
Flow_Off_Count 4 octets The number of times the controller receives Flow-off (STOP) since the last event.
This count shall be reset after reporting to the host.
Last_Flow_On_Timestamp 4 octets Timestamp of last Flow-on (GO). It is based on the Bluetooth Clock of the piconet central (CLK).
Unit: N * 0.3125 ms (1 Bluetooth Clock)
Buffer_Overflow_Bytes 4 octets [in Byte]

Buffer overflow count since the last event.
The controller counts how many bytes of data are dropped.
This count shall be reset after reporting to host.

Buffer_Underflow_Bytes 4 octets [in Byte]

Buffer underflow count since the last event.
This count shall be reset after reporting to host.

bdaddr 6 octets Remote device address
cal_failed_item_count 1 octet The count of calibration failed items
TX_Total_Packets 4 octets The number of packets that are sent out.
TX_UnAcked_Packets 4 octets The number of packets that don't receive an acknowledgment.
This count is reset after reporting to the host.
TX_Flushed_Packets 4 octets The number of packets that aren't sent out by its flush point.
This count is reset after reporting to the host.
TX_Last_Subevent_Packets 4 octets The number of packets that Link Layer transmits a CIS data PDU in the last subevent of a CIS event.
This count is reset after reporting to the host.
The value is zero if there's no valid value for the link.
CRC_Error_Packets 4 octets The number of received packages with CRC error since the last event.
This count is reset after reporting to the host.
RX_Duplicate_Packets 4 octets The number of duplicate (retransmission) packages received since the last event.
This count is reset after reporting to the host.
Vendor Specific Parameter (parameter total length - TBD) * octets For the controller vendor to obtain more vendor specific parameters.

Sub-event code = 0x58 [Quality_Report_Id = 0x05, Root Inflammation event]

This event indicates that Bluetooth HAL or the controller encountered a fatal error and needs Bluetooth stack to record this situation and restart. The controller must send a Root_Inflammation_Event to Bluetooth stack before sending the first fragment of the debug info events in any case.

The Error_Code parameter contains an error code reported from HAL/Controller, 0 if it is a chipset vendor specific error. The Vendor_Specific_Error_Code contains a chipset vendor specific error code from HAL/Controller. It should set as 0 if the parameter Error_Code is not 0. The parameters Error_Code and Vendor_Specific_Error_Code should not both be 0.

Sub-event Parameter Misurare Scopo
Quality_Report_Id 1 octet 0x00 ~ 0x04: Reserved.
0x05: Root inflammation.
0x06 ~ 0xFF: Reserved.
Error_Code 1 octet 0x00: Chipset vendor specific error code is included.
0x01 ~ 0xFF: Controller failure occurred. See Bluetooth Spec [Vol 2] Part D, Error Codes for a list of error codes and descriptions.
Vendor_Specific_Error_Code 1 octet 0x00: No chipset vendor specific error code is included.
0x01 ~ 0xFF: Chipset vendor specific error code.
Vendor Specific Parameter (Parameter Total Length - 4) * octets For the controller vendor to obtain more vendor specific parameters.
Sub-event Parameter Misurare Scopo
Quality_Report_Id 1 octet 0x00 ~ 0x10: Reserved.
0x11: LMP/LL message trace.
0x12: Bluetooth Multi-link/Coex scheduling trace.
0x13: Controller Debug Information data dump.
0x14 ~ 0xFF: Reserved.
Connection_Handle 2 octets Connection Handle.
Vendor Specific Parameter (Parameter Total Length - 4) * octets Vendor Specific format of LMP message trace, Bluetooth Multi-link/Coex scheduling trace and Controller Debug Information data dump.

Multi-advertiser support

The objectives of multi-advertiser support are the following:

  • Ability to support multiple advertisements ( max_advt_instances )
  • Different transmit powers to allow for a varying range
  • Different advertising content
  • An individualized response for each advertiser
  • Privacy (non-trackable) for each advertiser
  • Collegabile

To keep this specification close to existing standards, the following vendor-specific commands are provided. They are derived from the Bluetooth Core 4.1 Specification.

LE_Multi_Advt_Command

OCF: 0x154

Command parameter Misurare Scopo
Multi_advt_opcode 1 octet 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

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
Multi_advt_opcode 1 octet 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

Base reference: Bluetooth Core 4.1 Specification, page 964 (LE Set Advertising Parameter Command)

Sub OCF: 0x01

Sub-command parameter Misurare Scopo
Advertising_Interval_Min Per spec Per spec
Advertising_Interval_Max Per spec Per spec
Advertising_Type Per spec Per spec
Own_Address_Type Per spec Per spec
Own_Address Per spec Per spec
Direct_Address_Type Per spec Per spec
Direct_Address Per spec Per spec
Advertising_Channel_Map Per spec Per spec
Adverstising_Filter_Policy Per spec Per spec
Advertising_Instance 1 octet Specifies the applicability of the above parameters to an instance
Tx_power 1 octet Transmit_Power
Unit - in dBm (signed integer)
Range (-70 to +20)

The Own_Address parameter could be a host-configured address at the time of setting up this multi-advertisement instance. This provides the ability to have a resolvable private address at the time of the transmit of the first beacon. Advertisement on an instance will continue irrespective of the connection. The host BT stack could issue a command to start advertisement on an instance, post connection.

A Command Complete event will be generated for this command as specified in the Bluetooth Core 4.1 Specification, per the above command. The controller will respond with a non-success (invalid parameter) code if the advertising instance or Tx_Power parameters are invalid.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
Multi_advt_opcode 1 octet 0x01 [ Set_Advt_Param_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd

Base reference: Bluetooth Core 4.1 Specification, page 969 (LE Set Advertising Data Command)

Sub OCF: 0x02

Sub-command parameter Misurare Scopo
Advertising_Data_Length Per spec Per spec
Advertising_Data Per spec Per spec
Advertising_Instance 1 octet Specifies the applicability of the above parameters to an instance

A Command Complete event will be generated for this command as specified in the Bluetooth Core 4.1 Specification, per the above command. The controller will respond with a non-success code if the advertising instance or Tx_Power parameters are invalid.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
Multi_advt_opcode 1 octet 0x02 [ Set_Advt_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd

Base reference: Bluetooth Core 4.1 Specification, page 970 (LE Set Scan Response Data Command)

Sub OCF: 0x03

Sub-command parameter Misurare Scopo
Scan_Response_Data_Length Per spec Per spec
Scan_Response_Data Per spec Per spec
Advertising_Instance 1 octet Specifies the applicability of the above parameters to an instance

A Command Complete event will be generated for this command as specified in the Bluetooth Core 4.1 Specification, per the above command. The controller will respond with a non-success code (invalid parameter) if the advertising instance or Tx_Power parameters are invalid.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
Multi_advt_opcode 1 octet 0x03 [ Set_Scan_Resp_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd

Base reference: Bluetooth Core 4.1 Specification, page 963 (LE Set Random Address Command)

Sub OCF: 0x04

Sub-command parameter Misurare Scopo
Random Address Per spec Per spec
Advertising_Instance 1 octet Specifies the applicability of the above parameters to an instance

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
Multi_advt_opcode 1 octet 0x04 [ Set_Random_Addr_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd

Base reference: Bluetooth Core 4.1 Specification, page 971 (LE Set Advertise Enable Command in that core specification)

OCF: 0x05

Sub-command parameter Misurare Scopo
Advertising_Enable 1 octet A value of 1 means enable. Any other value means disable.
Advertising_Instance 1 octet Specifies the applicability of the above parameters to an instance. Instance 0 means a standard HCI instance.

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
Multi_advt_opcode 1 octet 0x05 [ Set_Advt_Enable_Multi_Sub_Cmd]

Offloaded resolution of private address

This feature resolves a private address in the controller firmware or hardware, which provides the following benefits:

  • Latency involved with the host in resolving a private address
  • Saving power by refraining from waking up the host

LE_Set_RPA_Timeout

OCF: 0x15C

Command parameter Misurare Scopo
LE_local_IRK 16 octet The local device IRK used to generate the random resolvable address(es).
tRPA_min 2 octets The minimum RPA generation timeout in seconds. The controller must generate new resolvable addresses for any advertising/scanning/connection events on or after this timeout.
Valid range: 300-1800
tRPA_max 2 octets The maximum RPA generation timeout in seconds. The controller must generate new resolvable addresses for any advertising/scanning/connection events on or before this timeout.
Valid range: tRPA_min -1800
Return parameter Misurare Scopo
Status 1 octet The status of the command.

Suggested HCI status values:
0x00 Success
0x01 Unknown command (if not supported)
0x12 Invalid command parameters (if any parameters are outside the given range)

LE_RPA_offload_Command

OCF: 0x155

Command parameter Misurare Scopo
RPA_offload_opcode 1 octet 0x1 - Enable customer specific feature
0x2 - Add IRK to the list
0x3 - Remove IRK from the list
0x4 - Clear IRK list
0x5 - Read IRK list entry

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
Event_RPA_offload_opcode 1 octet 0x1 - Enable customer specific feature
0x2 - Add IRK to the list
0x3 - Remove IRK from the list
0x4 - Clear IRK list
0x5 - Read IRK list entry

LE_RPA_offload: Enable_cust_specific_sub_Command

Sub OCF: 0x01

Sub-command parameter Misurare Scopo
enable_customer_specific_feature_set 1 octet 0x01 - Enable offloaded RPA feature
0x00 - Disable offloaded RPA feature

RPA offload is required to be enabled by the host, based on the chip capability. Refer to the LE_Get_Vendor_Capabilities_Command . Each chip can have a varying max_irk_list_sz in the firmware.

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
Event_cust_specific_feature_opcode 1 octet 0x01 [Enable customer-specific feature]

LE_RPA_offload: Add_IRK_to_list_sub_Command

Sub OCF: 0x02

Sub-command parameter Misurare Scopo
LE_IRK 16 octets LE IRK (1st byte LSB)
Address_Type 1 octet 0: Public address
1: Random address
LE_Device_Address 6 octets Public or random address associated to the IRK (1st byte LSB)

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
Event_cust_specific_feature_opcode 1 octet 0x02 [Add IRK to the list]
LE_IrkList_AvailableSpaces 1 octet Available IRL list entries after current operation

LE_RPA_offload: Remove_IRK_to_list_sub_Command

Sub OCF: 0x03

Sub-command parameter Misurare Scopo
Address_Type 1 octet 0: Public address
1: Random address
LE_Device_Address 6 octets Public or random address that associates to the IRK

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
Event_cust_specific_feature_opcode 1 octet 0x03 [Remove IRK from the list]
LE_IrkList_AvailableSpaces 1 octet Available IRL list entries after current operation

LE_RPA_offload: Clear_IRK_list_sub_Command

Sub OCF: 0x04

Sub-command parameter Misurare Scopo
Nessuno

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
Event_cust_specific_feature_opcode 1 octet 0x04 [Clear IRK List]
LE_IrkList_AvailableSpaces 1 octet Available IRL list entries after current operation [ max_irk_list_sz]

LE_RPA_offload: Read_IRK_list_sub_Command

Sub OCF: 0x05

Sub-command parameter Misurare Scopo
LE_read_IRK_list_entry-index 1 octet Index of the IRK list [0, max_irk_list_sz-1]

A Command Complete event will be generated for this command.

Return parameter Misurare Scopo
Status 1 octet Command Complete status
Event_cust_specific_feature_opcode 1 octet 0x05 [Read IRK List Entry]
LE_Read_IRK_List_entry 1 octet Index of the IRK that the host wants to read back (maximum IRK list size is 32)
LE_IRK 16 octets IRK value
Address_Type 1 octet 0: Public address
1: Random address
LE_Device_Address 6 octets Public or random address associated to the IRK
LE_Resolved_Private_Address 6 octets Current resolved resolvable private address of this IRK