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:
|
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:
|
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:
|
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:
Valore del bit
|
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.
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. Codec AAC: Fare riferimento agli elementi informativi specifici del codec AAC in A2DP v1.3 Codec LDAC: Ottetto 0-3: ID fornitore Ottetto 4-5: ID codec Ottetto 6: Indice bitrate: Ottetto 7: modalità canale LDAC 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 Elimina eliminerà gli eventi di qualità specifici. |
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à. |
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 |
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 ) Presente0x01: 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 ottettoRSSI[0] : 1 ottettoTimestamp[0] : 2 ottettiAdv packet_len[0] : 1 ottettoAdv_packet[0] : Adv_packet_len OCTETSScan_data_resp_len[0] : 1 ottettoScan_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.
Sub-event Code = 0x58 [Quality_report_id = 0x01 ~ 0x04, evento relativo alla qualità del collegamento]
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. |
SNR | 1 ottetto | [in db] Valore rapporto segnale-rumore (SNR) per la connessione_handle specificata. |
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. |
Buffer_Underflow_Bytes | 4 ottetti | [in byte] Conta di underflow buffer dall'ultimo evento. |
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. |
Sub-event Code = 0x58 [Quality_Report_id = 0x11 ~ 0x13, Evento correlato del dump log]
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:
|
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:
|
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:
|
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:
Value of bit
|
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.
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. AAC Codec: Refer to AAC Codec specific information elements in A2DP v1.3 LDAC Codec: Octet 0-3: Vendor ID Octet 4-5: Codec ID Octet 6: Bitrate Index: Octet 7: LDAC Channel Mode 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 Delete will clear specific quality event(s) reporting. |
BQR_Quality_Event_Mask | 4 octets | Bit masks for the selected quality event reporting. Bit 0: Set to enable quality monitoring mode. |
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 |
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 ) present0x01: 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 octetRSSI[0] : 1 octetTimestamp[0] : 2 octetsAdv packet_len[0] : 1 octetAdv_packet[0] : Adv_packet_len octetsScan_data_resp_len[0] : 1 octetScan_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 code = 0x58 [Quality_Report_Id = 0x01 ~ 0x04, Link Quality related event]
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. |
SNR | 1 octet | [in dB] Signal-to-Noise Ratio (SNR) value for the specified Connection_Handle. |
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. |
Buffer_Underflow_Bytes | 4 octets | [in Byte] Buffer underflow count since the last event. |
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 code = 0x58 [Quality_Report_Id = 0x11 ~ 0x13, Log Dump related event]
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 |