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 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 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:
|
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:
|
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:
|
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:
Valore del bit
|
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.
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. Codec AAC:
Fai riferimento agli elementi di informazioni specifiche del codec AAC in A2DP v1.3 Codec LDAC:
Ottetto 0-3: ID fornitore
Ottetti 4-5: ID codec
Ottetto 6: indice di velocità in bit:
Ottetto 7: modalità canale LDAC 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
L'eliminazione comporta l'eliminazione dei report relativi a eventi di qualità specifici. |
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à. |
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 |
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 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 ) presenti0x01: 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 ottettoRSSI[0] : 1 ottettoTimestamp[0] : 2 ottettiAdv packet_len[0] : 1 ottettoAdv_packet[0] : Adv_packet_len ottettiScan_data_resp_len[0] : 1 ottettoScan_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.
Codice evento secondario = 0x58 [Quality_Report_Id = 0x01 ~ 0x04, Link Quality related event]
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. |
SNR |
1 ottetto |
[in dB]
Valore del rapporto segnale/rumore (SNR) per il valore
Connection_Handle specificato. |
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. |
Buffer_Underflow_Bytes |
4 ottetti |
[in byte]
Conteggio degli errori di sottoflusso del buffer dall'ultimo evento. |
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. |
Codice evento secondario = 0x58 [Quality_Report_Id = 0x11 ~ 0x13, evento relativo al dump del log]
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 |