Requisiti HCI

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

Questo documento fornisce un elenco dei requisiti HCI per Bluetooth (BT) e Bluetooth Low Energy (BLE). L'obiettivo è che i fornitori di stack BT host e i fornitori di controller BT rispettino questi requisiti della piattaforma per poter utilizzare l'insieme di funzionalità descritto di seguito.

In questo documento, la specifica Bluetooth Core 5.2 è indicata come "spec." La specifica Bluetooth Core 5.2 è disponibile sul sito web di Bluetooth SIG insieme ad altri documenti adottati.

Panoramica generale del design

Funzionalità e configurazione del chip

In quanto piattaforma aperta, Android dispone di una matrice di release software, OEM, fornitori e funzionalità di piattaforme e chip.

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

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 diventa disponibile nei metodi HCI standard in una futura specifica Bluetooth, tenderemo a impostare questo approccio come predefinito.

Funzionalità specifiche del fornitore

Comando specifico del fornitore: LE_Get_Vendor_Capabilities_Command

OpCode Command Field (OCF): 0x153

Parametro comando Dimensioni Finalità
NA Elenco di parametri di comando vuoto

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
max_advt_instances
(Ritiro previsto)
1 ottetto Numero di istanze di annunci supportate.

Riservato dopo la versione 0.98.
Questo parametro è deprecato nella versione 0.98 e successive della specifica delle funzionalità di Google a favore della pubblicità estesa LE disponibile nella versione 5.0 e successive della specifica BT.
offloaded_resolution_of_private-address
(Ritiro previsto)
1 ottetto Capacità del chip BT di RPA.
Se supportato da un chip, deve essere attivato dall'host.
0 = Non supportato
1 = Supportato

Riservato dopo la versione 0.98.
Questo parametro è deprecato nella specifica delle funzionalità di Google 0.98 e versioni successive a favore della funzionalità Privacy disponibile nella specifica BT 4.2 e versioni 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 i filtri nel controller
0 = Non supportato
1 = Supportato
max_filter 1 ottetto Numero di filtri supportati
activity_energy_info_support 1 ottetto Supporta la generazione di report sulle informazioni su attività ed energia
0 = Non supportato
1 = Supportato
version_supported 2 ottetti Specifica la versione della specifica della funzionalità Google supportata
byte[0] = Numero maggiore
byte[1] = Numero minore

v1.04
byte[0] = 0x01
byte[1] = 0x04
total_num_of_advt_tracked 2 ottetti Numero totale di inserzionisti monitorati per finalità OnLost/OnFound
extended_scan_support 1 ottetto Supporta intervallo e finestra di scansione estesi
debug_logging_supported 1 ottetto Supporta il logging delle informazioni di debug binario dal controller
LE_address_generation_offloading_support
(Ritiro previsto)
1 ottetto 0 = Non supportato
1 = Supportato

Riservato dopo la versione 0.98.
Questo parametro è deprecato nella specifica delle funzionalità di Google 0.98 e versioni successive a favore della funzionalità Privacy disponibile nella specifica BT 4.2 e versioni successive.
A2DP_source_offload_capability_mask 4 ottetti Maschere di bit per i tipi di codec supportati
Bit 0 - SBC
Bit 1 - AAC
Bit 2 - APTX
Bit 3 - APTX HD
Bit 4 - LDAC
I bit 5-31 sono riservati
bluetooth_quality_report_support 1 ottetto Supporta la generazione di report sugli eventi di qualità Bluetooth
0 = Non supportato
1 = Supportato
dynamic_audio_buffer_support 4 ottetti Supporta il buffer audio dinamico nel controller Bluetooth
Maschere di bit per i tipi di codec supportati
Bit 0 - SBC
Bit 1 - AAC
Bit 2 - APTX
Bit 3 - APTX HD
Bit 4 - LDAC
I bit 5-31 sono riservati
a2dp_offload_v2_support 1 ottetto Supporta i comandi A2DP offload v2 nel controller Bluetooth (vedi Avvia l'offload A2DP, Interrompi l'offload A2DP)
0 = Non supportato
1 = Supportato

Risultati della scansione batch

Un obiettivo del design è migliorare il modo in cui le notifiche dell'evento di risposta alla ricerca Bluetooth LE vengono inviate all'host, in modo da risparmiare energia nell'host.

Riducendo la frequenza con cui il controller notifica al gestore dell'app di eseguire la scansione dei risultati, il gestore dell'app può rimanere in stato attivo/inattivo per più tempo. In questo modo si riduce il consumo di energia 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 sulla configurazione della funzionalità di archiviazione dei risultati della scansione LE nel controller Bluetooth. Lo spazio di archiviazione viene utilizzato per raggruppare temporaneamente i dati degli annunci e analizzare i dati e i metadati che vengono ricevuti dal controller per la successiva invio all'host.

Il firmware deve supportare due tipi di raggruppamento, che possono essere attivati contemporaneamente:

  • Troncato. Contiene i seguenti elementi di informazioni: {MAC, TX Power, RSSI, Timestamp}
  • Completo. Contiene i seguenti elementi di informazione: {MAC, TX Power, RSSI, Timestamp, Adv Data, Scan Response}

LE_Batch_Scan_Command

OCF: 0x156

Parametro comando Dimensioni Finalità
Batch_Scan_opcode 1 ottetto 0x1 - Attiva la funzionalità specifica per il cliente
0x2 - Imposta i parametri di archiviazione della ricerca batch
0x3 - Imposta i parametri di ricerca batch
0x4 - Leggi i parametri del risultato della ricerca batch

Per questo comando verrà generato un evento di completamento del comando. L'attivazione della funzionalità specifica per il cliente non avvia la scansione.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
Batch_Scan_opcode 1 ottetto 0x1 - Attiva la funzionalità specifica per il cliente
0x2 - Imposta i parametri di archiviazione della ricerca batch
0x3 - Imposta i parametri di ricerca batch
0x4 - Leggi i parametri del risultato della ricerca batch

LE_Batch_Scan_Command: attiva la funzionalità specifica per il cliente

OCF secondario: 0x01

Parametro del sottocomando Dimensioni Finalità
enable_customer_specific_feature_set 1 ottetto 0x01 - Attiva la funzionalità di scansione batch
0x00 - Disattiva la funzionalità di scansione batch

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
Batch_Scan_opcode 1 ottetto 0x1 - Attiva la funzionalità specifica per il cliente
0x2 - Imposta i parametri di archiviazione della ricerca batch
0x3 - Imposta i parametri di ricerca batch
0x4 - Leggi i parametri del risultato della ricerca batch

LE_Batch_Scan_Command: sottocomando per impostare il parametro di archiviazione della scansione batch

OCF secondario: 0x02

Parametro del sottocomando Dimensioni Finalità
Batch_Scan_Full_Max 1 ottetto Spazio di archiviazione massimo (in %) allocato allo stile completo
[Intervallo: 0-100]
Batch_Scan_Truncated_Max 1 ottetto Spazio di archiviazione massimo (in %) allocato allo stile troncato
[Intervallo: 0-100]
Batch_Scan_Notify_Threshold 1 ottetto Imposta il livello di notifica (in %) per il singolo pool di archiviazione
[Intervallo: 0-100]
Se imposti 0, la notifica viene disattivata. Viene generato un evento HCI specifico del fornitore (evento secondario di violazione della soglia di archiviazione)

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
Batch_scan_opcode 1 ottetto 0x02 [Imposta i parametri di scansione batch]

LE_Batch_Scan_Command: sottocomando per impostare il parametro di scansione batch

OCF secondario: 0x03

Parametro del sottocomando Dimensioni Finalità
Batch_Scan_Mode 1 ottetto 0x00 – La ricerca batch è disattivata
0x01 – La modalità troncata è attivata
0x02 – La modalità completa è attivata
0x03 – Le modalità Troncata e Completa sono attive
Duty_cycle_scan_window 4 ottetti Tempo di scansione della scansione batch (# di slot)
Duty_cyle_scan_interval 4 ottetti Periodo dell'intervallo di scansione batch (# di slot)
own_address_type 1 ottetto 0x00 - Indirizzo dispositivo pubblico
0x01 - Indirizzo dispositivo casuale
Batch_scan_Discard_Rule 1 ottetto 0 - Elimina la pubblicità più vecchia
1 - Elimina la pubblicità con RSSI più basso

Questo sottocomando avvia la scansione batch, se abilitata. Nella scansione con valori troncati, i risultati vengono memorizzati in forma troncata, dove la chiave univoca per lo stile troncato è {BD_ADDR, scan_interval}. Ciò significa che verrà registrato solo un 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 è attiva, verrà utilizzata la ricerca attiva e le risposte alla ricerca verranno registrate. La chiave univoca dello 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}. In stile Completo, lo stesso pacchetto AD, se visualizzato più volte in intervalli di scansione diversi, viene registrato una sola volta. Tuttavia, in modalità troncata, è la visibilità di BA_ADDR in intervalli di scansione diversi che è di interesse (una volta per intervallo di scansione). Il valore RSSI è la media di tutti i duplicati di un annuncio univoco all'interno di un intervallo di scansione.

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
Batch_scan_opcode 1 ottetto 0x03 [Imposta parametri di scansione batch]

LE_Batch_Scan_Command: sottocomando per leggere i risultati della scansione batch

OCF secondario: 0x04

Parametro del sottocomando Dimensioni Finalità
Batch_Scan_Data_read 1 ottetto 0x01 - Dati in modalità troncata
0x02 - Dati in modalità completa

Per questo comando verrà generato un evento di completamento del comando. Quando l'host emette questo comando, tutti i risultati nel controller potrebbero non rientrare in un singolo evento di completamento del comando. L'host eseguirà l'iterazione di questo comando finché i risultati corrispondenti nell'evento di completamento del comando non indicano 0 nel numero di record, il che indica che il controller non ha più record da comunicare all'host. Ogni evento di completamento del comando può contenere più record di un solo tipo di dati (completi o troncati).

I riferimenti di tempo 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'ora di arrivo di un comando è T_c nel firmware, l'ora effettiva in cui è stato acquisito il timestamp nel firmware è T_fw. Il momento del report sarà: (T_c - T_fw). T_c e T_fw sono nel dominio temporale del firmware. In questo modo l'organizzatore può calcolare da quanto tempo è avvenuto l'evento.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
Batch_scan_opcode 1 ottetto 0x03 [Imposta i parametri di 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:
Address[0]: 6 octal
Address_Type[0]: 1 octal
Tx_Pwr[0]: 1 octal
RSSI[0] : 1 octal
Timestamp[0]: 2 octal
[più record (num_of_records) con il formato sopra indicato]

Modalità completa:
Address[0]: 6 octal
Address_Type[0]: 1 octal
Tx_Pwr[0]: 1 octal
RSSI[0]: 1 octal
Timestamp[0]: 2 octal
Adv packet_len[0]: 1 octal
Adv_packet[0]: Adv_packet_len octal
Scan_data_resp_len[0]: 1 octal
Scan_data_resp[0]: Scan_data_resp octal
[più record con il formato sopra indicato (num_of_records)]

Filtro dei contenuti dei pacchetti pubblicitari

Utilizzalo per attivare/disattivare/configurare il filtro dei contenuti dei pacchetti pubblicitari (APCF) nel controller. APCF filtra i report pubblicitari nel controller, ma non filtra la pubblicità periodica.

LE_APCF_Command

OCF: 0x157

Parametro comando Dimensioni Finalità
APCF_opcode 1 ottetto 0x00 - Attivazione APCF
0x01 - Impostazione dei parametri di filtro APCF
0x02 - Indirizzo emittente APCF
0x03 - UUID servizio APCF
0x04 - UUID richiesta di servizio APCF
0x05 - Nome locale APCF
0x06 - Dati del produttore APCF
0x07 - Dati di servizio APCF
0x08 - Servizio di rilevamento del trasporto APCF
0x09 - Filtro tipo di annuncio APCF
0x10 ~ 0xAF - Riservato per uso futuro
0xB0 ~ 0xDF - Riservato per il fornitore
0xE0 ~ 0xFE - Riservato per uso futuro
0xFF - Lettura delle funzionalità estese APCF

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del reso
APCF_opcode 1 ottetto 0x00 - Attivazione APCF
0x01 - Impostazione dei parametri di filtro APCF
0x02 - Indirizzo emittente APCF
0x03 - UUID servizio APCF
0x04 - UUID richiesta di servizio APCF
0x05 - Nome locale APCF
0x06 - Dati del produttore APCF
0x07 - Dati di servizio APCF
0x08 - Servizio di rilevamento del trasporto APCF
0x09 - Filtro tipo di annuncio APCF
0x10 ~ 0xAF - Riservato per uso futuro
0xB0 ~ 0xDF - Riservato per il fornitore
0xE0 ~ 0xFE - Riservato per uso futuro
0xFF - Lettura delle funzionalità estese APCF

LE_APCF_Command: Enable_sub_cmd

Sub OCF: 0x00

Parametro del sottocomando Dimensioni Finalità
APCF_enable 1 ottetto 0x01 - Attiva la funzionalità APCF
0x00 - Disattiva la funzionalità APCF

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
APCF_opcode 1 ottetto 0x0 - Attivazione APCF
APCF_Enable 1 ottetto L'attivazione/la disattivazione è impostata tramite APCF_enable

LE_APCF_Command: set_filtering_parameters_sub_cmd

Questo sottocomando viene utilizzato per aggiungere o eliminare una specifica del filtro o per cancellare un elenco di filtri per il filtro on-chip.

OCF secondario: 0x01

Parametro del sottocomando Dimensioni Finalità
APCF_Action 1 ottetto 0x00 - Aggiungi
0x01 - Elimina
0x02 - Cancella
L'eliminazione cancella il filtro specifico insieme alle voci della funzionalità associata in altre tabelle.
Cancella consente di cancellare 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: impostato per attivare il filtro Indirizzo di trasmissione
Bit 1: impostato per attivare il filtro Modifica dati di servizio
Bit 2: impostato per attivare il controllo UUID servizio
Bit 3: impostato per attivare il controllo UUID richiesta di servizio
Bit 4: impostato per attivare il controllo del nome locale
Bit 5: impostato per attivare il controllo dei dati del produttore
Bit 6: impostato per attivare il controllo dei dati di servizio
Bit 7: impostato per attivare il controllo del servizio di rilevamento dei trasporti
Bit 8: impostato per attivare il controllo del tipo di annuncio
APCF_List_Logic_Type 2 ottetti Operazione logica per ogni selezione di funzionalità (per posizione in bit) specificata in APCF_Feature_Selection.
Valido solo quando una funzionalità è attivata.
Valore della posizione del bit:
0: OR
1: AND
Se è selezionata la logica "AND", un pacchetto ADV supererà il filtro solo se contiene TUTTE le voci dell'elenco.
Se è selezionata la logica "OR", un pacchetto ADV supererà il filtro se contiene una delle voci nell'elenco.
APCF_Filter_Logic_Type 1 ottetto 0x00: OR
0x01: AND
Nota: il tipo di logica è N/A per i primi tre campi diAPCF_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 viene considerato visto solo se il segnale è superiore alla soglia RSSI alta. In caso contrario, 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 necessario al firmware per rimanere in attesa e raccogliere annunci aggiuntivi prima di generare report.
onfound_timeout_cnt 1 ottetto Valido solo se delivery_mode è on_found.
[count]
Se un annuncio in onFound rimane nel firmware per la durata di onfound_timeout, raccoglierà alcuni annunci e il conteggio viene controllato. Se il conteggio supera onfound_timeout_cnt, viene registrato OnFound immediatamente dopo.
rssi_low_thresh 1 ottetto Valido solo se delivery_mode è on_found.
[in dBm]
Il pacchetto dell'inserzionista è considerato non visto se l'RSSI del pacchetto ricevuto non è superiore alla soglia bassa RSSI.
onlost_timeout 2 ottetti Valido solo se delivery_mode è on_found.
[in millisecondi]
Se un annuncio, dopo essere stato trovato, non viene visualizzato 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.
[count]
Numero totale di inserzionisti da monitorare per filtro.

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

L'host deve essere in grado di configurare più filtri conAPCF_Application_Address_type impostato su 0x02 (per tutti gli indirizzi dei broadcaster) per gestire varie combinazioni di filtri.

I filtri, i batch e i report sono concetti correlati. Ogni annunci e la relativa risposta alla scansione dovrà passare attraverso tutti i filtri, uno dopo l'altro. Di conseguenza, le azioni risultanti (delivery_mode) sono strettamente correlate al filtro. Le modalità di invio sono le seguenti: report_immediately, batch e onFound. Il valore OnLost è correlato a OnFound nel senso che verrà visualizzato dopo OnFound in caso di perdita.

Questo flusso di elaborazione mostra il modello concettuale:

Quando viene ricevuto un frame di un annuncio (o di una risposta alla scansione), viene applicato a tutti i filtri in ordine seriale. È possibile che un annuncio possa generare report immediati in base a un filtro e raggruppamenti dello stesso a causa di un'azione di filtro diversa.

Le soglie di livello RSSI (alto e basso) consentono di controllare quando il frame è visibile per l'elaborazione del filtro, anche quando un pacchetto valido viene ricevuto dal controller. Se la modalità di invio è impostata su immediata o batch, l'RSSI di un frame viene preso in considerazione per l'ulteriore elaborazione del controller. App diverse richiedono comportamenti di generazione di report e aggregazione diversi. In questo modo, più app possono avere report diretti e/o raggruppamento dei risultati nel firmware contemporaneamente. Un esempio è un caso in cui è attiva una ricerca collettiva da un'app e in seguito viene eseguita una ricerca LE normale da un'altra app. Prima che venga eseguita una ricerca collettiva, il framework/l'app imposta i filtri appropriati. In seguito, quando la seconda app esegue una scansione normale, il raggruppamento precedente continua. Tuttavia, a causa della ricerca regolare, è simile a concettualmente aggiungere un filtro nullo (insieme a tutti i filtri esistenti) insieme al comando di ricerca LE. I parametri del comando di ricerca LE hanno la precedenza quando sono attivi. Quando la normale scansione LE è disattivata, il controller tornerà a una scansione batch precedente, se esistente.

La modalità di pubblicazione OnFound si basa sui filtri configurati. Una combinazione che attiva l'azione di un filtro per il successo è considerata l'entità da monitorare per onLost. L'evento corrispondente è il sottoevento di monitoraggio degli annunci LE.

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

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
APCF_opcode 1 ottetto 0x01 - APCF Set Filtering Parameters
APCF_Action 1 ottetto Ripeti APCF_Action del comando
APCF_AvailableSpaces 1 ottetto Numero di voci disponibili nella tabella dei filtri

LE_APCF_Command: broadcast_address_sub_cmd

Questo sottocomando viene utilizzato per aggiungere o eliminare un indirizzo dell'inserzionista o per cancellare l'elenco degli indirizzi degli inserzionisti per il filtro on-chip.

OCF secondario: 0x02

Parametro del sottocomando Dimensioni Finalità
APCF_Action 1 ottetto 0x00 - Aggiungi
0x01 - Elimina
0x02 - Cancella
L'eliminazione consente di eliminare l'indirizzo del programma specificato nel filtro specificato.
L'opzione Cancella consente di cancellare tutti gli indirizzi dei broadcaster nel filtro specificato.
APCF_Filter_Index 1 ottetto Indice filtro (0, max_filter-1)
APCF_Broadcaster_Address 6 ottetti Indirizzo del dispositivo di 6 byte da aggiungere o eliminare dall'elenco di indirizzi del programmatore
APCF_Application_Address_type 1 ottetto 0x00: pubblico
0x01: casuale
0x02: NA (ignora il tipo di indirizzo)
Per filtrare i report pubblicitari con tipi di indirizzi di identità (0x02, 0x03). Per ottenere report pubblicitari con tipi di indirizzi 0x02 e 0x03, imposta questo campo su 0x02: NA (ignora il tipo di indirizzo).

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
APCF_opcode 1 ottetto 0x02 - Indirizzo emittente APCF
APCF_Action 1 ottetto Ripeti APCF_Action del comando
APCF_AvailableSpaces 1 ottetto Numero di voci senza costi ancora disponibili nella tabella Indirizzo di trasmissione

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 filtro on-chip.

OCF secondario: 0x03

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

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
APCF_opcode 1 ottetto 0x03 - UUID del servizio APCF
APCF_Action 1 ottetto Ripeti APCF_Action del comando
APCF_AvailableSpaces 1 ottetto Numero di voci senza costi ancora disponibili nella tabella UUID servizio

LE_APCF_Command: solicitation_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 filtro on-chip.

OCF secondario: 0x04

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

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
APCF_opcode 1 ottetto 0x04 - UUID richiesta APCF
APCF_Action 1 ottetto Ripeti APCF_Action del comando
APCF_AvailableSpaces 1 ottetto Numero di voci senza costi ancora disponibili nella tabella UUID della richiesta

LE_APCF_Command: local_name_sub_cmd

Questo sottocomando viene utilizzato per aggiungere o eliminare una stringa di nome locale o per cancellare l'elenco di stringhe di nome locale per il filtro on-chip.

OCF secondario: 0x05

Parametro del sottocomando Dimensioni Finalità
APCF_Action 1 ottetto 0x00 - Aggiungi
0x01 - Elimina
0x02 - Cancella
L'eliminazione elimina la stringa del nome locale specificata nel filtro specificato.
L'opzione Cancella consente di cancellare 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 Dimensioni variabili Una stringa di caratteri per il nome locale.

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

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
APCF_opcode 1 ottetto 0x05 - Nome locale APCF
APCF_Action 1 ottetto Ripeti APCF_Action del comando
APCF_AvailableSpaces 1 ottetto Numero di voci senza costi ancora disponibili nella tabella 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 di stringhe di dati del produttore per il filtro on-chip.

Sub OCF: 0x06

Parametro del sottocomando Dimensioni Finalità
APCF_Action 1 ottetto 0x00 - Aggiungi
0x01 - Elimina
0x02 - Cancella
L'eliminazione elimina la stringa di dati del produttore specificata nel filtro specificato.
L'opzione Cancella consente di cancellare tutte le stringhe di dati del produttore nel filtro specificato.
APCF_Filter_Index 1 ottetto Filtra indice (0, max_filter-1)
APCF_LocName_Mandata_or_SerData Dimensioni variabili Una stringa di caratteri per i dati del produttore.

Note:
  • Attualmente il numero massimo di caratteri in una stringa di nome locale è 29
  • Non applicabile quando l'azione è "Cancella" (0x2)
APCF_ManData_Mask Dimensioni variabili La maschera dei dati di produzione da aggiungere all'elenco. Deve avere la stessa lunghezza di APCF_LocName_or_ManData_or_SerData.

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
APCF_opcode 1 ottetto 0x06 - Dati del produttore APCF
APCF_Action 1 ottetto Ripeti APCF_Action del comando
APCF_AvailableSpaces 1 ottetto Numero di voci senza costi ancora disponibili nella tabella Dati del 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 filtro on-chip.

OCF secondario: 0x07

Parametro del sottocomando Dimensioni Finalità
APCF_Action 1 ottetto 0x00 - Aggiungi
0x01 - Elimina
0x02 - Cancella
L'eliminazione elimina la stringa di dati di servizio specificata nel filtro specificato.
L'opzione Cancella consente di cancellare tutte le stringhe di dati di servizio nel filtro specificato.
APCF_Filter_Index 1 ottetto Filtra indice (0, max_filter-1)
APCF_LocName_Mandata_or_SerData Dimensioni variabili Una stringa di caratteri per i dati di servizio.

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

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
APCF_opcode 1 ottetto 0x07 - Dati del servizio APCF
APCF_Action 1 ottetto Ripeti APCF_Action del comando
APCF_AvailableSpaces 1 ottetto Numero di voci senza costi 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 di annuncio o per cancellare un elenco di tipi di annunci per il filtro on-chip. Utilizza read_extended_features_sub_cmd per verificare se questo comando è supportato o meno.
Quando APCF_AD_DATA_Length è pari a 0, filtra APCF_AD_TYPE senza confrontare i dati AD e la maschera dei dati AD. Se la lunghezza dei dati del pacchetto ADV ricevuto supera AD_DATA_LENGTH, confronta solo i primi AD_DATA_LENGTH byte dei dati AD e ignora i dati rimanenti.

Sub OCF: 0x09

Parametro del sottocomando Dimensioni Finalità
APCF_Action 1 ottetto 0x00 - Aggiungi
0x01 - Elimina
0x02 - Cancella
L'eliminazione elimina il tipo di annuncio specificato nel filtro specificato.
L'opzione Cancella consente di eliminare tutti i tipi di annunci nel filtro specificato.
APCF_Filter_Index 1 ottetto Filtra indice (0, max_filter-1)
APCF_AD_TYPE 1 ottetto Il tipo di annuncio da aggiungere o eliminare dall'elenco. Ignora quando APCF_Action è 0x02 (chiaro)
APCF_AD_DATA_Length 1 ottetto 0x00: indica di non filtrare i contenuti dei dati
Da ignorare quando APCF_Action è 0x02 (chiaro)
APCF_AD_DATA Dimensioni variabili Di dimensioni variabili, in base a APCF_AD_DATA_Length
Da ignorare quando APCF_Action è 0x02 (chiaro)
APCF_AD_DATA_MASK Dimensioni variabili Di dimensioni variabili, in base a APCF_AD_DATA_Length
Da ignorare quando APCF_Action è 0x02 (chiaro)
Deve avere la stessa lunghezza di APCF_AD_DATA.

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
APCF_opcode 1 ottetto 0x09 - Tipo di annuncio APCF
APCF_Action 1 ottetto Ripeti APCF_Action del comando
APCF_AvailableSpaces 1 ottetto Numero di voci senza costi ancora disponibili nella tabella Tipo di annuncio

LE_APCF_Command: read_extended_features_sub_cmd

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

OCF secondario: 0xFF

Parametro del sottocomando Dimensioni Finalità
Non applicabile Parametro del comando vuoto.

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
APCF_opcode 1 ottetto 0xFF - APCF_Read_Extended_Features
APCF_extended_features 2 ottetti

Maschere di bit per le funzionalità estese supportate:

  • Bit 0: supporta il filtro del servizio di rilevamento dei trasporti
  • Bit 1: supporta il filtro Tipo di annuncio
  • Bit 2-15: riservati per uso futuro

Valore del bit

  • 0 = Non supportato
  • 1 = Supportato

Comando relativo all'attività e alle informazioni sull'energia del controller

Lo scopo di queste informazioni è consentire alle funzioni di sistema host di livello superiore di analizzare le attività totali di tutti i componenti, incluso il controller BT e il relativo stato macro, in combinazione con ciò che accade nelle app e nel framework. A questo scopo, sono necessarie le seguenti informazioni dallo stack BT e dal controller:

  • BT stack: generazione di report sullo stato macro-operativo corrente del controller
  • Firmware: generazione di report sulle informazioni aggregate relative all'attività e all'energia

Stati della macro dello stack host BT, come stabilito a livello di utente:

  • Inattivo: [scansione pagina, annuncio LE, scansione richiesta, scansione LE]
  • Scansione: [paging/inquiry/trying to connect]
  • Attivo: [collegamento ACL attivo, collegamento SCO in corso, modalità di rilevamento]

Le attività monitorate dal controller nel corso della sua vita sono il tempo di trasmissione, il tempo di ricezione, 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 Dimensioni Finalità
NA Parametri comando vuoti

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
total_tx_time_ms 4 ottetti Tempo totale di esecuzione della transazione
total_rx_time_ms 4 ottetti Tempo totale di esecuzione di Rx
total_idle_time_ms 4 ottetti Tempo totale di inattività (stati a basso consumo non in sospensione)
total_energy_used 4 ottetti Energia totale utilizzata [prodotto di corrente (mA), tensione (V) e tempo (ms)]

Comando di scansione dei parametri del set esteso LE

Questo comando può essere utilizzato per attivare una finestra di scansione e un intervallo più ampi nel controller. In base alla specifica BT Core 5.2, una finestra di scansione e un intervallo hanno un limite superiore di 10,24 secondi, il che impedisce di avere intervalli di scansione superiori a 10,24 secondi per le app.

Riferimento di base: BT Core 5.2 Specification, pagina 2493 (LE Set Scan Parameters Command)

OCF: 0x15A

Parametro comando Dimensioni Finalità
LE_Ex_Scan_Type 1 ottetto 0x00 - Scansione passiva. Non verranno inviati pacchetti SCAN_REQ (impostazione predefinita).
0x01 - Scansione attiva. Potrebbero essere inviati pacchetti SCAN_REQ.
LE_Ex_Scan_Interval 4 ottetti Definito come l'intervallo di tempo che va dall'avvio dell'ultima scansione LE da parte del controller fino all'avvio della scansione LE successiva.
Intervallo: da 0x0004 a 0x00FFFFFF
Valore predefinito: 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
Valore predefinito: 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 dispositivo pubblico (predefinito)
0x01 - Indirizzo dispositivo casuale
LE_Ex_Scan_Filter_Policy 0x00: accetta tutti i pacchetti di annunci (valore predefinito). I pacchetti di pubblicità mirata che non sono indirizzati a questo dispositivo devono essere ignorati.
0x01 - Ignora i pacchetti di annunci provenienti da dispositivi non inclusi nell'elenco Solo lista consentita. I pacchetti di pubblicità mirata non indirizzati per questo dispositivo devono essere ignorati.

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato

Comando per ottenere le informazioni di debug del controller

Lo scopo di questo elemento informativo è acquisire informazioni di debug del controller da un host, in formato binario, per la post-elaborazione e l'analisi. In questo modo è possibile eseguire il debug dei problemi sul campo e fornire agli ingegneri un kit di strumenti per registrare informazioni da analizzare. Un controller può fornire le informazioni quando richiesto da un host tramite l'evento (sottoevento Controller Debug Info) o autonomamente, se lo desidera. Alcuni esempi di utilizzo potrebbero essere: segnalare informazioni sullo stato del firmware, informazioni sul dump degli arresti anomali, informazioni su logging e così via.

OCF: 0x15B

Parametro comando Dimensioni Finalità
N/D Elenco dei parametri del comando vuoto

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato

Supporto dell'offload hardware A2DP

La funzionalità di offload A2DP supporta l'offload del processo di codifica audio A2DP su un processore audio collegato al controller BT. Lo stream di dati audio codificato passa direttamente dall'Audio Processor al BT Controller senza il coinvolgimento dell'host BT. L'host BT è ancora 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 0x03-0x04 sono indipendenti dal codec configurato.

OCF: 0x15D

Avvia l'offload A2DP (legacy)

OCF secondario: 0x01

Utilizza questo comando sia per configurare il processo di offload A2DP sia per avviare lo stream A2DP.

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

Ottetto 1: valore per l'intestazione SCMS-T, se abilitata.

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 codificata in bit al secondo.
0x00000000 - La velocità in bit audio non è specificata / non utilizzata.
0x00000001 - 0x00FFFFFF - Velocità in bit dell'audio codificata in bit al secondo.
0x01000000 - 0xFFFFFFFF - Riservato.
Connection_Handle 2 ottetti Handle di 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 Dimensioni massime dell'MTU L2CAP contenente pacchetti audio codificati
Codec_Information 32 ottetti Informazioni specifiche per codec.

Codec SBC:

Fai riferimento agli elementi di informazioni specifiche del codec SBC in A2DP v1.3.
Ottetto 0: lunghezza blocco | sottobande | metodo di allocazione
Ottetto 1: valore minimo del pool di bit
Ottetto 2: valore massimo del pool di bit
Ottetto 3: frequenza di campionamento | modalità canale
Ottetti 4-31: riservati

Codec AAC:

Fai riferimento agli elementi di informazioni specifiche del codec AAC in A2DP v1.3
Ottetto 0: tipo di oggetto
Ottetto 1; b7: VBR
Ottetti 2-31: riservati

Codec LDAC:

Ottetto 0-3: ID fornitore
0x0000012D

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

Ottetto 6: indice di velocità in bit:
0x00 - Alta
0x01 - Media
0x02 - Bassa
0x03 - 0x7E - Riservato
0x7F - ABR (Adaptive Bit Rate)
0x80 - 0xFF - Riservato

Ottetto 7: modalità canale LDAC
0x01 - Stereo
0x02 - Dual
0x04 - Mono
Gli altri sono riservati

Ottetto 8-31: riservato

Tutti gli altri codec:

Ottetto 0-31: riservato

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
Sub_Opcode 1 ottetto 0x01 - Avvia l'offload A2DP

Avvia l'offload A2DP

OCF secondario: 0x03

Utilizza questo comando sia per configurare il processo di offload A2DP sia per avviare lo stream A2DP.

Parametro comando Dimensioni Finalità
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 (sorgente/unione AVDTP)
0x01 - Ingresso (destinazione/partizione AVDTP)
Peer_MTU 2 ottetti Dimensioni massime dei pacchetti L2CAP, negoziate con il peer.
CP_Enable_SCMS_T 1 ottetto 0x00 - Disattiva l'intestazione SCMS-T Content Protection
0x01 - Attiva l'intestazione SCMS-T Content Protection
CP_Header_SCMS_T 1 ottetto Quando l'intestazione SCMS-T Content Protection è attivata (CP_SCMS_T_Enable impostato su 0x01), definisce il valore dell'intestazione che precede i contenuti audio (fai riferimento ad A2DP, sezione 3.2.1-2) come definito da Bluetooth Assigned Numbers, sezione 6.3.2.
Viene ignorato se la protezione dei contenuti 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[].

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
Sub_Opcode 1 ottetto 0x03 - Avvia l'offload A2DP

Interrompere l'offload A2DP (legacy)

OCF secondario: 0x02

Questo comando viene utilizzato per interrompere lo stream di offload A2DP.

Parametro comando Dimensioni Finalità
N/D Elenco dei parametri del comando vuoto.

Per questo comando non sono definiti parametri.

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
Sub_Opcode 1 ottetto 0x02 - Interrompi l'offload A2DP

Interrompi l'offload A2DP

OCF secondario: 0x04

Questo comando viene utilizzato per interrompere lo stream di offload A2DP.

Parametro comando Dimensioni Finalità
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 (sorgente/unione AVDTP)
0x01 - Ingresso (destinazione/partizione AVDTP)

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
Sub_Opcode 1 ottetto 0x04 - Interrompi l'offload A2DP

Comando del report sulla qualità Bluetooth

La funzionalità del comando BT Quality Report avvia il meccanismo nel controller Bluetooth per segnalare gli eventi di qualità Bluetooth all'host. Puoi attivare quattro opzioni:

  • Modalità di monitoraggio della qualità: il controller invia periodicamente all'host un sottoevento BQR correlato alla qualità del link.
  • Approaching LSTO: se non vengono ricevuti pacchetti dal dispositivo BT collegato per più della metà del valore del tempo di spegnimento della supervisione del link (LSTO), il controller segnala all'host un evento Approaching LSTO.
  • Audio A2DP discontinuo: quando il controller rileva fattori che causano audio discontinuo, segnala all'host un evento Audio A2DP discontinuo.
  • Voce (e)SCO discontinua: quando il controller rileva fattori che causano una voce discontinua, segnala un evento Voce (e)SCO discontinua all'host.
  • Infiammazione della radice: questo evento viene inviato dal controller allo stack quando l'HAL o il controller rileva un errore irreversibile e deve riavviare il Bluetooth.
  • Traccia del messaggio LMP/LL: il controller invia all'host il messaggio LMP/LL di accoppiamento con il dispositivo remoto.
  • Traccia di pianificazione Bluetooth multiprofilo/coesistenza: il controller invia all'host le proprie informazioni di pianificazione per la gestione di più profili Bluetooth e la coesistenza wireless nella banda a 2,4 GHz.
  • Meccanismo di informazioni di debug del controller: se abilitato, il controller può segnalare autonomamente all'host le informazioni di logging di debug tramite il subevento informazioni di debug del controller.
  • Audio discontinuo LE Audio: quando il controller rileva fattori che causano audio discontinuo, segnala un evento Audio discontinuo LE Audio all'host.
  • Modalità Statistiche RF avanzate: il controller segnala all'host le informazioni relative alle statistiche RF, supportando due casi d'uso dei report:
    • Report periodici
    • Attivatori di eventi (avvio/arresto dello stream e attivatore di eventi relativi alla qualità del link).
  • BQR_Report_Action del comando di report sulla qualità Bluetooth: l'host può utilizzare questo comando HCI per eseguire una query una tantum per la modalità di monitoraggio della qualità, la modalità di monitoraggio dell'energia o una modalità avanzata per le statistiche RF.

OCF: 0x15E

Parametro comando Dimensioni Finalità
BQR_Report_Action 1 ottetto Azione per aggiungere / eliminare la generazione di report sugli eventi di qualità impostati nel parametro BQR_Quality_Event_Mask oppure per cancellarli tutti.

0x00 - Aggiungi
0x01 - Elimina
0x02 - Cancella
0x03 - Query una tantum

L'eliminazione comporta l'eliminazione dei report relativi a eventi di qualità specifici.
Se selezioni Cancella, verranno cancellati tutti i report sugli eventi di qualità (il parametro BQR_Quality_Event_Mask può essere ignorato).

BQR_Quality_Event_Mask 4 ottetti Maschere di bit per i report sugli eventi di qualità selezionati.

Bit 0: impostato per attivare la modalità di monitoraggio della qualità.
Bit 1: impostato per attivare l'evento LSTO imminente (per ACL/(e)SCO/ISO).
Bit 2: impostato per attivare l'evento Audio Choppy A2DP.
Bit 3: impostato per attivare l'evento Voce (e)SCO discontinua.
Bit 4: impostato per attivare l'evento Infiammazione della radice.
Bit 5: impostato per attivare la modalità di monitoraggio dell'energia.
Bit 6: impostato per attivare l'evento audio LE discontinuo.
Bit 7: impostato per attivare l'evento di mancata connessione.
Bit 8: impostato per attivare l'attivatore di eventi della modalità Statistiche RF avanzate.
Bit 9: impostato per attivare il report periodico Statistiche RF avanzate.
Bit 10-14: riservati.
Bit 15: impostato per attivare gli eventi di qualità specifici del fornitore.
Bit 16: impostato per attivare la traccia dei messaggi LMP/LL.
Bit 17: impostato per attivare la traccia di pianificazione del Bluetooth Multi-link/Coex.
Bit 18: impostato per attivare il meccanismo di informazioni di debug del controller.
Bit 19-30: riservati.
Bit 31: impostato per attivare la traccia specifica del fornitore.

BQR_Minimum_Report_Interval 2 ottetti Definisci l'intervallo di tempo minimo per i report sugli eventi di qualità per gli eventi di qualità selezionati. Il firmware del controller non deve segnalare l'evento successivo nell'intervallo di tempo definito. L'impostazione dell'intervallo deve essere distinta e dedicata agli eventi di qualità che vengono aggiunti.

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

BQR_Vendor_Specific_Quality_Event_Mask 4 ottetti Maschere di bit per i report sugli eventi di qualità specifici del fornitore selezionati.
Questo parametro è valido solo quando il bit 15 di BQR_Quality_Event_Mask è impostato.

Bit 0-31: riservati.

BQR_Vendor_Specific_Trace_Mask 4 ottetti Maschere di bit per i report sulle tracce specifici del fornitore selezionati.
Questo parametro è valido solo quando il bit 31 di BQR_Quality_Event_Mask è impostato.

Bit 0-31: riservati.

Report_interval_multiple 4 ottetti Il moltiplicatore per BQR_Minimum_Report_Interval. Quando questo valore è >= 1, l'intervallo di generazione dei report BQR segue il formato
Intervallo di generazione dei report BQR = Intervallo_report_BQR_min x Multiplo_intervallo_report.
Il firmware del controller non deve segnalare l'evento successivo entro l'intervallo di tempo definito. L'impostazione dell'intervallo è dedicata specificamente agli eventi di qualità aggiunti.

Unità: ms
Predefinito: 1
Intervallo: 0 ~ 4294967295 (0: è uguale a 1)

Nota: se l'impostazione di BQR_Report_Interval è superiore alle capacità del controller, il controller deve restituire il tempo BQR_Report_Interval massimo al completamento del comando.

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
Current_Quality_Event_Mask 4 ottetti Indica l'impostazione corrente della maschera di bit.
Bit 0: la modalità di monitoraggio della qualità è abilitata.
Bit 1: il reporting sugli eventi di avvicinamento al LSTO è abilitato.
Bit 2: il reporting sugli eventi relativi all'audio A2DP discontinuo è abilitato.
Bit 3: la generazione di report sugli eventi relativi alla voce (e)SCO discontinua è attivata.
Bit 4: la generazione di report sugli eventi di infiammazione delle radici è abilitata.
Bit 5: la modalità di monitoraggio dell'energia è attivata.
Bit 6: il reporting sugli eventi audio LE con audio discontinuo è abilitato.
Bit 7: evento di connessione non riuscita.
Bit 8: impostato per attivare l'attivatore di eventi della modalità Statistiche RF avanzate.
Bit 9: impostato per attivare il report periodico Statistiche RF avanzate.
Bit 10-14: riservati.
Bit 15: i report sugli eventi di qualità specifici del fornitore sono abilitati.
Bit 16: la traccia dei messaggi LMP/LL è attivata.
Bit 17: la traccia di pianificazione del multilink/coesistenza Bluetooth è attivata.
Bit 18: il meccanismo di informazioni di debug del controller è abilitato.
Bit 19-30: riservati.
Bit 31: la traccia specifica del fornitore è attivata.
Current_Vendor_Specific_Quality_Event_Mask 4 ottetti Indica l'impostazione corrente della maschera di bit.
Current_Vendor_Specific_Trace_Mask 4 ottetti Indica l'impostazione corrente della maschera di bit.
BQR_Report_interval 4 ottetti Indica l'impostazione corrente della maschera di bit.
Current_Vendor_Specific_Trace_Mask 4 ottetti L'impostazione di BQR_Report_interval. Deve essere il valore minimo tra BQR_Minimum_Report_Interval * Report_interval_multiple o l'intervallo di supporto massimo del controller.

Comando del buffer audio dinamico

Il buffer audio dinamico riduce i problemi audio modificando le dimensioni del buffer audio nel controller Bluetooth in base a vari scenari.

OCF: 0x15F

Ottenere la funzionalità di tempo di buffer audio

OCF secondario: 0x01

Usa questo comando per ottenere la funzionalità del tempo del buffer audio dal controller Bluetooth.

Parametro comando Dimensioni Finalità
N/D Elenco di parametri di comando vuoto

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
Dynamic_Audio_Buffer_opcode 1 ottetto 0x01 - Ottieni il tempo di buffering audio
Audio_Codec_Type_Supported 4 ottetti Maschere di bit per i tipi di codec supportati
Bit 0 - SBC
Bit 1 - AAC
Bit 2 - APTX
Bit 3 - APTX HD
Bit 4 - LDAC
I bit 5-31 sono riservati
Audio_Codec_Buffer_Default_Time_For_Bit_0 2 ottetti Tempo di buffering predefinito 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_Maximum_Time_For_Bit_0 2 ottetti Tempo di buffering 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 di buffering minimo 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_Default_Time_For_Bit_1 2 ottetti Tempo di buffering predefinito del tipo di codec Bit 1 specificato in Audio_Codec_Type_Supported.
Questo valore deve essere 0 se il tipo di codec di Bit 1 non è supportato.
Unità: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 2 ottetti Tempo massimo del buffer del tipo di codec Bit 1 specificato in Audio_Codec_Type_Supported.
Questo valore deve essere 0 se il tipo di codec di Bit 1 non è supportato.
Unità: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 2 ottetti Tempo di buffering minimo del tipo di codec Bit 1 specificato in Audio_Codec_Type_Supported.
Questo valore deve essere 0 se il tipo di codec di Bit 1 non è supportato.
Unità: ms
...... ...... ......
Audio_Codec_Buffer_Default_Time_For_Bit_31 2 ottetti Tempo di buffering predefinito del tipo di codec di Bit 31 specificato in Audio_Codec_Type_Supported.
Questo valore deve essere 0 se il tipo di codec del bit 31 non è supportato.
Unità: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 2 ottetti Tempo massimo del buffer del tipo di codec di Bit 31 specificato in Audio_Codec_Type_Supported.
Questo valore deve essere 0 se il tipo di codec del bit 31 non è supportato.
Unità: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 2 ottetti Tempo di buffering minimo del tipo di codec di bit 31 specificato in Audio_Codec_Type_Supported.
Questo valore deve essere 0 se il tipo di codec del bit 31 non è supportato.
Unità: ms

Impostare il tempo del buffer audio

OCF secondario: 0x02

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

Parametro comando Dimensioni Finalità
Audio_Codec_Buffer_Time 2 ottetti Tempo del buffer audio richiesto per il codec attualmente in uso.
Unità: ms

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
Dynamic_Audio_Buffer_opcode 1 ottetto 0x02 - Imposta il tempo del buffer audio
Audio_Codec_Buffer_Time 2 ottetti Tempo di buffering audio corrente nel controller Bluetooth.
Unità: ms

Evento HCI (specifico del fornitore)

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

Parametro evento Dimensioni Finalità
HCI_vendor_specific_event_code 1 ottetto 0xFF
sub_event_code 1 ottetto Un codice evento secondario avrà una dimensione di 1 ottetto, il byte immediatamente successivo alla lunghezza del parametro nel pacchetto di eventi HCI.

Subevento di violazione della soglia di spazio di archiviazione

Questo evento indica che la soglia di spazio di archiviazione è stata superata.

Codice evento secondario = 0x54

Parametro evento secondario Dimensioni Finalità
Nessuno

Evento secondario di modifica dello stato della pubblicità multipla LE

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

Codice evento secondario = 0x55

Parametro evento secondario Dimensioni Finalità
Advertising_instance 1 ottetto Identifica l'istanza pubblicitaria specifica
I valori validi vanno 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 la disattivazione dell'istanza advt (0xFFFF se non valida)

Evento secondario di monitoraggio degli annunci LE

Questo evento indica quando un inserzionista viene trovato o perso.

Codice evento secondario = 0x56

Parametro evento secondario Dimensioni Finalità
APCF_Filter_Index 1 ottetto Filtra indice (0, max_filter-1)
Advertiser_State 1 ottetto 0x00: inserzionista trovato
0x01: inserzionista perso
Advt_Info_Present 1 ottetto 0x00: informazioni sull'inserzionista (Advt_Info) presenti
0x01: informazioni sull'inserzionista (Advt_Info) non presenti
Advertiser_Address 6 ottetti Indirizzo pubblico o casuale
Advertiser_Address_Type 1 ottetto 0x00: indirizzo pubblico
0x01: indirizzo casuale
Advt_Info Tx_Pwr[0]: 1 ottetto
RSSI[0]: 1 ottetto
Timestamp[0]: 2 ottetti
Adv packet_len[0]: 1 ottetto
Adv_packet[0]: Adv_packet_len ottetti
Scan_data_resp_len[0]: 1 ottetto
Scan_data_resp[0]: Scan_data_resp ottetti

Evento secondario informazioni di debug del controller

Questo evento viene utilizzato da un controller per fornire informazioni di debug in formato binario a un host.

Codice evento secondario = 0x57

Parametro evento secondario Dimensioni Finalità
debug_block_byte_offset_start 2 ottetti Offset in byte del blocco di debug dall'inizio
last_block 1 ottetto 0x00: sono presenti altri dati di debug
0x01: ultimo blocco binario; non sono presenti altri dati di debug
cur_pay_load_sz 2 ottetti Dimensioni del blocco binario in un evento corrente
Debug_Data Variabile Dati di debug di cur_payload_sz

Evento secondario del report sulla qualità Bluetooth

Questo evento indica uno dei seguenti casi: si è verificato un evento di qualità Bluetooth, il controller ha caricato la traccia dei messaggi LMP/LL e la traccia di pianificazione del multilink/coesistenza Bluetooth oppure il controller ha dumpato i dati di informazioni di debug.

Parametro evento secondario Dimensioni Finalità
Quality_Report_Id 1 ottetto 0x01: report sulla qualità della modalità di monitoraggio.
0x02: avvicinamento a LSTO.
0x03: audio A2DP discontinuo.
0x04: voce (e)SCO discontinua.
0x05 ~ 0x06: riservati.
0x07: audio LE discontinuo.
0x08: Connessione non riuscita.
0x09 ~ 0xFF: riservato.
Packet_Types 1 ottetto 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: Riservato
0x51: Pacchetto ISO
0x52 ~ 0xFF: Riservato
Connection_Handle 2 ottetti Handle di connessione ACL/(e)SCO/ISO.
Connection_Role 1 ottetto Ruolo di esecuzione per la connessione.
0x00: centrale
0x01: periferica
0x02 ~ 0xFF: riservato.
TX_Power_Level 1 ottetto Livello di potenza di trasmissione corrente per il Connection_Handle specificato.

Questo valore deve essere lo stesso del controller che risponde al comando HCI HCI_Read_Transmit_Power_Level.

RSSI 1 ottetto [in dBm]

Valore dell'indicatore di intensità del segnale ricevuto (RSSI) per il valore Connection_Handle specificato.
Questo valore deve essere un valore assoluto dell'intensità del segnale del ricevitore.
Intervallo: da -127 a +20

SNR 1 ottetto [in dB]

Valore del rapporto segnale/rumore (SNR) per il valore Connection_Handle specificato.
Il controller deve fornire il rapporto SNR medio di tutti i canali utilizzati dal link.

Unused_AFH_Channel_Count 1 ottetto Indica il numero di canali inutilizzati in AFH_channel_map.
0x4F ~ 0xFF: riservato.
AFH_Select_Unideal_Channel_Count 1 ottetto Indica il numero di canali con interferenze e di scarsa qualità, ma che sono comunque selezionati per l'HF.
Il numero minimo di canali consentiti dalla specifica Bluetooth è 20, quindi anche se tutti e 79 i canali sono soggetti a interferenze e hanno una qualità scadente, il controller deve comunque scegliere almeno 20 canali per l'AFH.
LSTO 2 ottetti Impostazione attuale del timeout della supervisione del link.
Tempo = N * 0,625 ms
Intervallo di tempo: da 0,625 ms a 40,9 s
Connection_Piconet_Clock 4 ottetti Orologio del piconet per il Connection_Handle specificato.
Questo valore deve essere uguale a quello del controller che risponde al comando HCI_Read_Clock con il parametro "Which_Clock" pari a 0x01 (Piconet Clock).
Unità: N * 0,3125 ms (1 orologio Bluetooth)
Retransmission_Count 4 ottetti Il numero di ritrasmissioni dall'ultimo evento.
Questo conteggio verrà reimpostato dopo la segnalazione all'organizzatore.
No_RX_Count 4 ottetti Nessun conteggio RX dall'ultimo evento.
Il conteggio aumenta quando non viene ricevuto alcun pacchetto nell'intervallo di tempo pianificato o se il pacchetto ricevuto è danneggiato.
Questo conteggio verrà reimpostato dopo la segnalazione all'organizzatore.
NAK_Count 4 ottetti Conteggio dei NAK (Negative Acknowledge) dall'ultimo evento.
Questo conteggio verrà reimpostato dopo la segnalazione all'organizzatore.
Last_TX_ACK_Timestamp 4 ottetti Timestamp dell'ultimo ACK di trasmissione. Si basa sull'orologio Bluetooth del piconet centrale (CLK).
Unità: N * 0,3125 ms (1 orologio Bluetooth)
Flow_Off_Count 4 ottetti Il numero di volte in cui il controller riceve il flusso in uscita (STOP) dall'ultimo evento.
Questo conteggio verrà reimpostato dopo la segnalazione all'organizzatore.
Last_Flow_On_Timestamp 4 ottetti Timestamp dell'ultimo flusso (GO). Si basa sull'orologio Bluetooth del piconet centrale (CLK).
Unità: N * 0,3125 ms (1 orologio Bluetooth)
Buffer_Overflow_Bytes 4 ottetti [in byte]

Conteggio degli overflow del buffer dall'ultimo evento.
Il controller conteggia quanti byte di dati vengono persi.
Questo conteggio verrà reimpostato dopo la segnalazione all'host.

Buffer_Underflow_Bytes 4 ottetti [in byte]

Conteggio degli errori di sottoflusso del buffer dall'ultimo evento.
Questo conteggio verrà reimpostato dopo la segnalazione all'host.

bdaddr 6 ottetti Indirizzo del dispositivo remoto
cal_failed_item_count 1 ottetto Il conteggio degli elementi con errori di calibrazione
TX_Total_Packets 4 ottetti Il numero di pacchetti inviati.
TX_UnAcked_Packets 4 ottetti Il numero di pacchetti che non ricevono un ack.
Questo conteggio viene reimpostato dopo la segnalazione all'organizzatore.
TX_Flushed_Packets 4 ottetti Il numero di pacchetti che non vengono inviati dal punto di svuotamento.
Questo conteggio viene reimpostato dopo la segnalazione all'organizzatore.
TX_Last_Subevent_Packets 4 ottetti Il numero di pacchetti che il livello di collegamento trasmette una PDU di dati CIS nell'ultimo sottoevento di un evento CIS.
Questo conteggio viene reimpostato dopo la segnalazione all'organizzatore.
Il valore è zero se non esiste un valore valido per il link.
CRC_Error_Packets 4 ottetti Il numero di pacchetti ricevuti con errore CRC dall'ultimo evento.
Questo conteggio viene reimpostato dopo la segnalazione all'organizzatore.
RX_Duplicate_Packets 4 ottetti Il numero di pacchetti duplicati (di ritrasmissione) ricevuti dall'ultimo evento.
Questo conteggio viene reimpostato dopo la segnalazione all'organizzatore.
RX_Unreceived_Packets 4 ottetti Il numero di pacchetti non ricevuti corrisponde al parametro del comando LE READ ISO Link Quality (vedi Bluetooth core Specification Version 5.4). Gli stream associati sono CIS e BIS.
Quando questo valore viene incrementato, il Link Layer non riceve un payload specifico al suo punto di aggiornamento (su un CIS) o alla fine dell'evento a cui è associato (su un BIS; consulta la versione 5.4 della specifica Bluetooth Core, Vol. 6, Parte B, Sezione 4.4.6.6).
Coex_Info_Mask 2 ottetti Bit 0 - CoexInvolvement: impostato per indicare che si sospettano attività di coesistenza quando viene generato questo report (ad esempio, A2DP Chops e Approaching LSTO).
Bit 1 - WL 2G Radio Active: impostato per indicare che la radio WLAN 2G è attiva.
Bit 2 - WL 2G Connected: impostato per indicare che la radio WLAN 2G è attiva e connessa.
Bit 3 - WL 5G/6G Radio Active: impostato per indicare che la radio WLAN 5G/6G è attiva.
Bit 4-15: riservati
Parametro specifico del fornitore (lunghezza totale del parametro - TBD) * ottetti Per consentire al fornitore del controller di ottenere più parametri specifici del fornitore.

Codice evento secondario = 0x58 [Quality_Report_Id = 0x05, Root Inflammation event]

Questo evento indica che l'HAL Bluetooth o il controller ha rilevato un errore fatale e che lo stack Bluetooth deve registrare questa situazione e riavviarsi. In ogni caso, il controller deve inviare un evento Root_Inflammation_Event allo stack Bluetooth prima di inviare il primo frammento degli eventi di informazioni di debug.

Il parametro Error_Code contiene un codice di errore segnalato da HAL/Controller, 0 se si tratta di un errore specifico del fornitore del chipset. Il codice Vendor_Specific_Error_Code contiene un codice di errore specifico del fornitore del chipset da HAL/Controller. Deve essere impostato su 0 se il parametro Error_Code non è uguale a 0. I parametri Error_Code e Vendor_Specific_Error_Code non devono essere entrambi uguali a 0.

Parametro evento secondario Dimensioni Finalità
Quality_Report_Id 1 ottetto 0x00 ~ 0x04: riservato.
0x05: infiammazione della radice.
0x06 ~ 0xFF: riservato.
Error_Code 1 ottetto 0x00: è incluso il codice di errore specifico del fornitore del chipset.
0x01 ~ 0xFF: si è verificato un errore del controller. Per un elenco dei codici di errore e delle relative descrizioni, consulta la Parte D, Codici di errore, della specifica Bluetooth [Vol 2].
Vendor_Specific_Error_Code 1 ottetto 0x00: non è incluso alcun codice di errore specifico del fornitore del chipset.
0x01 ~ 0xFF: codice di errore specifico del fornitore del chipset.
Parametro specifico del fornitore (Lunghezza totale del parametro - 4) * ottetti Per consentire al fornitore del controller di ottenere più parametri specifici del fornitore.
Parametro evento secondario Dimensioni Finalità
Quality_Report_Id 1 ottetto 0x00 ~ 0x10: riservato.
0x11: traccia del messaggio LMP/LL.
0x12: traccia di pianificazione Bluetooth Multi-link/Coex.
0x13: dump dei dati delle informazioni di debug del controller.
0x14 ~ 0xFF: riservato.
Connection_Handle 2 ottetti Handle di connessione.
Parametro specifico del fornitore (Lunghezza totale del parametro - 4) * ottetti Formato specifico del fornitore della traccia del messaggio LMP, della traccia di pianificazione del Bluetooth Multi-link/Coex e del dump dei dati delle informazioni di debug del controller.

Supporto di più inserzionisti

Gli obiettivi dell'assistenza per più inserzionisti sono i seguenti:

  • Possibilità di supportare più annunci (max_advt_instances)
  • Potenze di trasmissione diverse per consentire un raggio d'azione variabile
  • Contenuti pubblicitari diversi
  • Una risposta personalizzata per ogni inserzionista
  • Privacy (non tracciabile) per ciascun inserzionista
  • Collegabile

Per mantenere questa specifica vicina agli standard esistenti, sono forniti i seguenti comandi specifici del fornitore. Sono stati ricavati dalla specifica Bluetooth Core 4.1.

LE_Multi_Advt_Command

OCF: 0x154

Parametro comando Dimensioni Finalità
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

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
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 Specification, pagina 964 (LE Set Advertising Parameter Command)

OCF secondario: 0x01

Parametro del sottocomando Dimensioni Finalità
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 ottetto Specifica l'applicabilità dei parametri precedenti a un'istanza
Tx_power 1 ottetto Transmit_Power
Unità - in dBm (numero intero con segno)
Intervallo (da -70 a +20)

Il parametro Own_Address potrebbe essere un indirizzo configurato dall'host al momento della configurazione di questa istanza con più annunci. In questo modo, è possibile avere un indirizzo privato risolvibile al momento della trasmissione del primo beacon. La pubblicità su un'istanza continuerà indipendentemente dalla connessione. Lo stack BT host potrebbe emettere un comando per avviare la pubblicità su un'istanza dopo la connessione.

Per questo comando verrà generato un evento di completamento del comando come specificato nella specifica Bluetooth Core 4.1, in base al comando riportato sopra. Il controller risponderà con un codice di errore (parametro non valido) se l'istanza pubblicitaria o i parametri Tx_Power non sono validi.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
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 Specification, pagina 969 (LE Set Advertising Data Command)

OCF secondario: 0x02

Parametro del sottocomando Dimensioni Finalità
Advertising_Data_Length Per spec Per spec
Advertising_Data Per spec Per spec
Advertising_Instance 1 ottetto Specifica l'applicabilità dei parametri precedenti a un'istanza

Per questo comando verrà generato un evento di completamento del comando come specificato nella specifica Bluetooth Core 4.1, in base al comando riportato sopra. Il controller risponderà con un codice di errore se l'istanza pubblicitaria o i parametri Tx_Power non sono validi.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
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 Specification, pagina 970 (LE Set Scan Response Data Command)

OCF secondario: 0x03

Parametro del sottocomando Dimensioni Finalità
Scan_Response_Data_Length Per spec Per spec
Scan_Response_Data Per spec Per spec
Advertising_Instance 1 ottetto Specifica l'applicabilità dei parametri precedenti a un'istanza

Per questo comando verrà generato un evento di completamento del comando come specificato nella specifica Bluetooth Core 4.1, in base al comando riportato sopra. Il controller risponderà con un codice di errore (parametro non valido) se l'istanza pubblicitaria o i parametri Tx_Power non sono validi.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
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 Specification, pagina 963 (LE Set Random Address Command)

OCF secondario: 0x04

Parametro del sottocomando Dimensioni Finalità
Indirizzo casuale Per spec Per spec
Advertising_Instance 1 ottetto Specifica l'applicabilità dei parametri precedenti a un'istanza

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
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 Specification, pagina 971 (LE Set Advertise Enable Command in that core specification)

OCF: 0x05

Parametro del sottocomando Dimensioni Finalità
Advertising_Enable 1 ottetto Un valore pari a 1 indica l'attivazione. Con qualsiasi altro valore, la funzionalità viene disattivata.
Advertising_Instance 1 ottetto Specifica l'applicabilità dei parametri precedenti a un'istanza. L'istanza 0 indica un'istanza HCI standard.

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
Multi_advt_opcode 1 ottetto 0x05 [Set_Advt_Enable_Multi_Sub_Cmd]

Risoluzione offloaded dell'indirizzo privato

Questa funzionalità risolve un indirizzo privato nel firmware o nell'hardware del controller, offrendo i seguenti vantaggi:

  • La latenza associata all'host per la risoluzione di un indirizzo privato
  • Risparmiare energia evitando di svegliare l'host

LE_Set_RPA_Timeout

OCF: 0x15C

Parametro comando Dimensioni Finalità
LE_local_IRK 16 ottetti L'IRK del dispositivo locale utilizzato per generare gli indirizzi risolvibili casuali.
tRPA_min 2 ottetti Il timeout minimo per la generazione di RPA in secondi. Il controller deve generare nuovi indirizzi risolvibili per eventuali eventi di pubblicità/scansione/connessione a partire da questo timeout.
Intervallo valido: 300-1800
tRPA_max 2 ottetti Il timeout massimo per la generazione di RPA in secondi. Il controller deve generare nuovi indirizzi risolvibili per eventuali eventi di pubblicità/scansione/connessione entro questo timeout.
Intervallo valido: tRPA_min-1800
Parametro restituito Dimensioni Finalità
Status 1 ottetto Lo stato del comando.

Valori dello stato HCI suggeriti:
0x00 Successo
0x01 Comando sconosciuto (se non supportato)
0x12 Parametri di comando non validi (se eventuali parametri sono al di fuori dell'intervallo specificato)

LE_RPA_offload_Command

OCF: 0x155

Parametro comando Dimensioni Finalità
RPA_offload_opcode 1 ottetto 0x1 - Attiva la funzionalità specifica per il cliente
0x2 - Aggiungi IRK all'elenco
0x3 - Rimuovi IRK dall'elenco
0x4 - Cancella l'elenco IRK
0x5 - Leggi la voce dell'elenco IRK

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
Event_RPA_offload_opcode 1 ottetto 0x1 - Attiva la funzionalità specifica per il cliente
0x2 - Aggiungi IRK all'elenco
0x3 - Rimuovi IRK dall'elenco
0x4 - Cancella l'elenco IRK
0x5 - Leggi la voce dell'elenco IRK

LE_RPA_offload: Enable_cust_specific_sub_Command

OCF secondario: 0x01

Parametro del sottocomando Dimensioni Finalità
enable_customer_specific_feature_set 1 ottetto 0x01 - Abilita la funzionalità RPA offloaded
0x00 - Disattiva la funzionalità RPA offloaded

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

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
Event_cust_specific_feature_opcode 1 ottetto 0x01 [Attiva funzionalità specifica per il cliente]

LE_RPA_offload: Add_IRK_to_list_sub_Command

OCF secondario: 0x02

Parametro del sottocomando Dimensioni Finalità
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)

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
Event_cust_specific_feature_opcode 1 ottetto 0x02 [Aggiungi IRK all'elenco]
LE_IrkList_AvailableSpaces 1 ottetto Voci dell'elenco IRL disponibili dopo l'operazione corrente

LE_RPA_offload: Remove_IRK_to_list_sub_Command

OCF secondario: 0x03

Parametro del sottocomando Dimensioni Finalità
Address_Type 1 ottetto 0: indirizzo pubblico
1: indirizzo casuale
LE_Device_Address 6 ottetti Indirizzo pubblico o casuale associato all'IRK

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
Event_cust_specific_feature_opcode 1 ottetto 0x03 [Rimuovi IRK dall'elenco]
LE_IrkList_AvailableSpaces 1 ottetto Voci dell'elenco IRL disponibili dopo l'operazione corrente

LE_RPA_offload: Clear_IRK_list_sub_Command

OCF secondario: 0x04

Parametro del sottocomando Dimensioni Finalità
Nessuno

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
Event_cust_specific_feature_opcode 1 ottetto 0x04 [Cancella elenco IRK]
LE_IrkList_AvailableSpaces 1 ottetto Voci dell'elenco IRL disponibili dopo l'operazione corrente [max_irk_list_sz]

LE_RPA_offload: Read_IRK_list_sub_Command

OCF secondario: 0x05

Parametro del sottocomando Dimensioni Finalità
LE_read_IRK_list_entry-index 1 ottetto Indice dell'elenco IRK [0, max_irk_list_sz-1]

Per questo comando verrà generato un evento di completamento del comando.

Parametro restituito Dimensioni Finalità
Status 1 ottetto Stato del comando completato
Event_cust_specific_feature_opcode 1 ottetto 0x05 [Leggi voce elenco IRK]
LE_Read_IRK_List_entry 1 ottetto Indice dell'IRK che l'host vuole leggere (la dimensione massima dell'elenco di 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 risolto attuale di questo IRK