Estensioni HCI Bluetooth definite da Microsoft
L'interfaccia HCI (Bluetooth Host-Controller Interface) specifica tutte le interazioni tra un host e un controller di radio Bluetooth. Le specifiche Bluetooth consentono ai comandi e agli eventi HCI definiti dal fornitore di abilitare l'interazione non standard tra host e controller. Microsoft definisce comandi ed eventi HCI specifici del fornitore utilizzati da Windows. Gli implementatori del controller Bluetooth possono usare queste estensioni per implementare funzionalità speciali.
Requisiti
I comandi Bluetooth HCI sono identificati da un codice di comando a 16 bit. L'organizzazione Bluetooth definisce i valori nell'intervallo 0x0000 tramite 0xFBFF. I fornitori definiscono i valori nell'intervallo 0xFC00 tramite 0xFFFF, consentendo 1024 diversi codici di comando assegnati dal fornitore.
Il fornitore deve scegliere il valore del codice di comando definito da Microsoft. Microsoft non può scegliere un codice di comando e presupporre che nessun altro fornitore usi il codice per uno scopo in conflitto. Non è sicuro eseguire un comando specifico del fornitore e dipende dal controller per rifiutare il comando se non lo riconosce. Il controller potrebbe interpretare il comando come operazione distruttiva, ad esempio l'aggiornamento del firmware del controller.
Il fornitore deve comunicare il valore scelto tramite un metodo diverso dal controller. Microsoft non specifica come ottenere il codice scelto.
Notifica allo stack Bluetooth di Windows del codice di comando specifico del fornitore
Lo stack Bluetooth di Windows legge il codice di comando specifico del fornitore da una chiave del Registro di sistema, VsMsftOpCode
.
La VsMsftOpCode
chiave del Registro di sistema ha un tipo di REG_DWORD e i dati della chiave sono il codice operativo specifico del fornitore.
Per specificare il codice operativo specifico del fornitore, usare la AddReg
direttiva nella sezione DDInstall.HW nel codice INF del driver. La sezione add registry deve contenere:
HKR,,"VsMsftOpCode",0x00010001,<Vendor Specific Opcode>
Esempio:
[radio.NTamd64.HW]
AddReg=radio.NTamd64.HW.AddReg
[radio.NTamd64.HW.AddReg]
HKR,,"VsMsftOpCode",0x00010001,<Vendor Specific Opcode>
Comandi HCI definiti da Microsoft
Comandi HCI | Descrizione |
---|---|
HCI_VS_MSFT_Read_Supported_Features | Fornisce una bitmap che descrive le funzionalità definite da Microsoft supportate dal controller e specifica il prefisso per gli eventi definiti da Microsoft restituiti dal controller. |
HCI_VS_MSFT_Monitor_Rssi | Richiede che il controller avvii il monitoraggio del collegamento misurato RSSI per una connessione specificata e generi un evento quando il collegamento misurato della connessione RSSI non rientra nei limiti specificati. |
HCI_VS_MSFT_Cancel_Monitor_Rssi | Annulla un comando HCI_VS_MSFT_Monitor_Rssi rilasciato in precedenza. |
HCI_VS_MSFT_LE_Monitor_Advertisement | Richiede che il controller avvii il monitoraggio degli annunci che rientrano nell'intervallo RSSI specificato e soddisfi anche altri requisiti. |
HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement | Annulla un comando HCI_VS_MSFT_LE_Monitor_Advertisement rilasciato in precedenza. |
HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable | Imposta lo stato dei filtri degli annunci pubblicitari. |
HCI_VS_MSFT_Read_Absolute_RSSI | Legge il valore RSSI (Received Signal Strength Indication) assoluto per una connessione BR/EDR dal controller. |
Comandi e sottocomandi HCI definiti da Microsoft
Il controller riconosce che è presente un solo comando HCI specifico di Microsoft. Il set di comandi specifico di Microsoft viene esteso usando un codice operativo. Il primo parametro di comando per il comando HCI definito da Microsoft è un codice operativo che specifica il sottocomando.
I controller devono supportare HCI_VS_MSFT_Read_Supported_Features per supportare qualsiasi altro sottocomando Microsoft HCI. Il supporto per altri comandi è facoltativo e dipende dai valori restituiti da HCI_VS_MSFT_Read_Supported_Features. Windows non invia comandi secondari definiti da Microsoft a meno che il controller non indichi il supporto per il sottocomando tramite una risposta a HCI_VS_MSFT_Read_Supported_Features.
HCI_VS_MSFT_Read_Supported_Features
HCI_VS_MSFT_Read_Supported_Features fornisce una bitmap che descrive le funzionalità definite da Microsoft supportate dal controller e specifica il prefisso per gli eventi definiti da Microsoft restituiti dal controller.
Il controller completerà sempre questo comando tempestivamente con un evento Command Completed.
Comando | Codice | Parametri dei comandi | Parametri restituiti |
---|---|---|---|
HCI_VS_MSFT_Read_Supported_Features | Codice di base scelto | Subcommand_opcode | Stato Subcommand_opcode, Supported_features, Microsoft_event_prefix_length, Microsoft_event_prefix |
Command_parameters
Subcommand_opcode (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x00 | Sottocomando codice operativo per HCI_VS_MSFT_Read_Supported_Features. |
Return_parameters
Stato (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x00 | Il comando è riuscito. |
0x01 a 0xFF | Il comando non è riuscito. Per informazioni dettagliate, vedere Codici di errore nella specifica Bluetooth Core. |
Subcommand_opcode (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x00 | Sottocomando codice operativo per HCI_VS_MSFT_Read_Supported_Features. |
Supported_features (8 ottetti):
Valore | Descrizione del parametro |
---|---|
0x00000000 00000001 | Il controller supporta la funzionalità di monitoraggio RSSI per le connessioni BR/EDR. Inoltre, il controller supporta HCI_VS_MSFT_Read_Absolute_RSSI per leggere la metrica RSSI assoluta di una connessione BR/EDR. |
0x00000000 00000002 | Il controller supporta la funzionalità di monitoraggio RSSI per le connessioni LE. |
0x00000000 00000004 | Il controller supporta il monitoraggio RSSI degli annunci legacy LE. |
0x00000000 00000008 | Il controller supporta il monitoraggio della pubblicità degli annunci legacy LE. |
0x00000000 00000010 | Il controller supporta la verifica della validità delle coordinate X e Y pubbliche sulla curva durante il processo di associazione Secure Simple per P-192 e P-256. Per altre informazioni, vedere Bluetooth Core Specification Erratum 10734. |
0x00000000 00000020 | Il controller supporta il monitoraggio continuo degli annunci pubblicitari le eseguiti simultaneamente con altre attività radio, usando HCI_VS_MSFT_LE_Monitor_Advertisement [v1]. |
0x00000000 00000040 | Riservato. |
0x00000000 00000080 | Il controller supporta l'offload AVDTP e i comandi HCI_VS_MSFT_Avdtp_* descritti in questo documento. |
0x00000000 00000100 | Riservato. |
0x00000000 00000200 | Riservato. |
0x00000000 00000400 | Il controller supporta HCI_VS_MSFT_LE_Monitor_Advertisement [v2]. Inoltre, il controller supporta il monitoraggio continuo degli annunci pubblicitari LE eseguiti simultaneamente con altre attività radio, usando HCI_VS_MSFT_LE_Monitor_Advertisement [v2]. |
0xFFFFFFFF FFFFFF00 | Bit riservati per la definizione futura. Deve essere zero. |
Microsoft_event_prefix_length (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x00 a 0x20 | Numero di byte nel campo prefisso dell'evento Microsoft come specificato nel Microsoft_event_prefix restituito. Questo è il numero di byte di informazioni costanti all'inizio di ogni evento HCI specificato da Microsoft. |
Microsoft_event_prefix (lunghezza variabile):
Valore | Descrizione del parametro |
---|---|
Valore del prefisso dell'evento | Informazioni costanti previste all'inizio di ogni evento definito da Microsoft. Queste informazioni vengono usate per distinguere gli eventi definiti da Microsoft da altri eventi personalizzati. |
HCI_VS_MSFT_Monitor_Rssi
HCI_VS_MSFT_Monitor_Rssi richiede che il controller avvii il monitoraggio del collegamento misurato RSSI per una connessione specificata e generi un evento quando il collegamento misurato della connessione RSSI non rientra nei limiti specificati.
Comando | Codice | Parametri dei comandi | Parametri restituiti |
---|---|---|---|
HCI_VS_MSFT_Monitor_Rssi | Codice di base scelto | Subcommand_opcode, Connection_Handle, RSSI_threshold_high, RSSI_threshold_low, RSSI_threshold_low_time_interval, RSSI_sampling_period |
Stato Subcommand_opcode |
Il controller deve notificare all'host il valore RSSI con un evento generato periodicamente (in base al RSSI_sampling_period). Il collegamento misurato RSSI deve essere il valore assoluto di potenza del segnale ricevitore in dBm per la connessione BR/EDR.
In risposta a un comando HCI_VS_MSFT_Monitor_Rssi, il controller genererà un evento Command Complete con stato uguale a zero se il controller può iniziare il monitoraggio o uno stato diverso da zero. Se il valore di stato è diverso da zero, il controller non genererà un HCI_VS_MSFT_Rssi_Event in risposta a questo comando.
Il controller rifiuterà il comando se un altro comando HCI_VS_MSFT_Monitor_Rssi con lo stesso Connection_Handle è in sospeso o se l'handle di connessione specificato non è valido. Il controller può anche rifiutare il comando per altri motivi, ad esempio l'esaurimento delle risorse.
Questo diagramma di stato mostra gli stati di transizione nel controller quando si monitora RSSI per una connessione.
Il controller genera un HCI_VS_MSFT_Rssi_Event quando l'RSSI ricevuto è maggiore o uguale al RSSI_threshold_high specificato. Dopo la generazione di questo evento, il controller non genererà un nuovo HCI_VS_MSFT_Rssi_Event per specificare che il RSSI_threshold_high è stato superato fino a quando non genera un HCI_VS_MSFT_Rssi_Event che specifica che l'RSSI è sceso sotto RSSI_threshold_low.
Il controller genera un HCI_VS_MSFT_Rssi_Event quando l'RSSI ricevuto è uguale o scende al di sotto del RSSI_threshold_low specificato rispetto al RSSI_threshold_low_time_interval specificato. Dopo la generazione di questo evento, il controller non genererà un nuovo HCI_VS_MSFT_Rssi_Event per specificare che l'RSSI è sceso al di sotto del RSSI_threshold_low fino a quando non viene generato un evento HCI_VS_MSFT_Rssi_Event per specificare che RSSI_threshold_high è stato raggiunto o superato.
Se il RSSI_sampling_period è compreso tra 0x01 e 0xFE, il titolare del trattamento genererà periodicamente un HCI_VS_MSFT_Rssi_Event ogni RSSI_sampling_period. Questo evento deve contenere la media del RSSI calcolato sul RSSI_sampling_period. Se il RSSI_sampling_period è 0x00 o 0xFF, il titolare del trattamento non notifica periodicamente all'host con HCI_VS_MSFT_Rssi_Event.
Command_parameters
Subcommand_opcode (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x01 | Sottocomando codice operativo per HCI_VS_MSFT_Monitor_Rssi. |
Connection_Handle (2 ottetti):
Valore | Descrizione del parametro |
---|---|
0xXXXX | Handle per la connessione di cui deve essere monitorato RSSI. |
RSSI_threshold_high (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0xXX | Valore RSSI massimo previsto. Il controller genera un evento se l'RSSI osservato diventa maggiore o uguale a questo valore. Unità: dBm Intervallo BR/EDR: da -128 a 127 (intero con segno) Intervallo LE: da -127 a 20 (intero con segno) |
RSSI_threshold_low (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0xXX | Valore RSSI minimo previsto. Il controller genera un evento se l'RSSI osservato diventa minore o uguale a questo valore. Unità: dBm Intervallo obbligatorio BR/EDR: da -128 a 127 (intero con segno) Intervallo obbligatorio LE: da -127 a 20 (intero con segno) |
RSSI_threshold_low_time_interval (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x00 | Valore riservato. |
N = 0xXX | Tempo in secondi in cui il valore RSSI deve essere inferiore RSSI_threshold_low prima che venga generato un HCI_VS_MSFT_Rssi_Event . Periodo di tempo = N * 1 secondo Intervallo obbligatorio: da 0x01 a 0x3C |
RSSI_sampling_period (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x00 | Valore riservato. |
N = 0xXX | Intervallo di campionamento in millisecondi. Periodo di tempo = N * 100 millisecondi Intervallo obbligatorio: da 0x01 a 0xFE |
0xFF | Valore riservato. |
Return_parameters
Stato (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x00 | Il comando è riuscito. |
0x01 a 0xFF | Il comando non è riuscito. Per informazioni dettagliate, vedere Codici di errore nella specifica Bluetooth Core. |
0x07 | Il controller restituirà La capacità di memoria superata se non dispone di memoria sufficiente per elaborare il comando. |
Codice errore | Il comando non è riuscito. Per informazioni dettagliate, vedere Codici di errore nella specifica Bluetooth Core. |
Subcommand_opcode (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x01 | Codice operativo sottocomando per HCI_VS_MSFT_Monitor_Rssi. |
Eventi generati a meno che non siano stati mascherati
Il controller genera tempestivamente un evento Command Complete quando viene ricevuto il comando HCI_VS_MSFT_Monitor_Rssi . Se l'evento Command Complete restituisce lo stato 0, il controller genererà un HCI_VS_MSFT_Rssi_Event quando si verifica una delle condizioni seguenti.
- L'RSSI osservato per il dispositivo su RSSI_threshold_low_time_interval diventa uguale o minore del valore RSSI_threshold_low specificato.
- L'RSSI osservato per il dispositivo diventa maggiore o uguale al valore RSSI_threshold_high specificato.
- Il RSSI_sampling_period è valido e il periodo di campionamento scade.
Il controller deve eseguire tutte le operazioni di pulizia necessarie se la connettività con il dispositivo specificato viene persa. In questo caso, un comando HCI_VS_MSFT_Cancel_Monitor_Rssi non viene inviato al controller.
HCI_VS_MSFT_Cancel_Monitor_Rssi
HCI_VS_MSFT_Cancel_Monitor_Rssi annulla un comando HCI_VS_MSFT_Monitor_Rssi rilasciato in precedenza. Il controller genererà tempestivamente un evento Command Completed in risposta a questo comando.
Comando | Codice | Parametri dei comandi | Parametri restituiti |
---|---|---|---|
HCI_VS_MSFT_Cancel_Monitor_Rssi | Codice di base scelto | Subcommand_opcode, Connection_Handle |
Stato Subcommand_opcode |
Command_parameters
Subcommand_opcode (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x02 | Codice operativo sottocomando per HCI_VS_MSFT_Cancel_Monitor_Rssi. |
Connection_Handle (2 ottetti):
Valore | Descrizione del parametro |
---|---|
0xXXXX | Handle per la connessione il cui RSSI deve essere annullato. |
Return_parameters
Stato (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x00 | Il comando è riuscito. |
0x01 a 0xFF | Il comando non è riuscito. Per informazioni dettagliate, vedere Codici di errore nella specifica Bluetooth Core. |
Subcommand_opcode (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x02 | Codice operativo sottocomando per HCI_VS_MSFT_Cancel_Monitor_Rssi. |
Eventi generati a meno che non siano stati mascherati
Il controller genera un evento Command Complete quando viene ricevuto il comando HCI_VS_MSFT_Cancel_Monitor_RSSI .
HCI_VS_MSFT_LE_Monitor_Advertisement
HCI_VS_MSFT_LE_Monitor_Advertisement richieste che il controller avvia il monitoraggio per gli annunci che rientrano nell'intervallo RSSI specificato e soddisfano anche una delle condizioni seguenti:
- Un criterio specificato può essere abbinato al pacchetto di annunci ricevuti.
- Un UUID specificato può essere abbinato al pacchetto di annuncio ricevuto.
- È possibile usare una chiave IRK (Identity Resolution Key) specificata per risolvere l'indirizzo privato del dispositivo da cui ha avuto origine il pacchetto pubblicitario.
- Un indirizzo Bluetooth specificato può essere abbinato al pacchetto di annunci ricevuti.
Il comando v2 consente all'host di combinare alcune delle condizioni precedenti con opzioni che regolano l'origine dell'annuncio e la destinazione di un annuncio diretto, per perfezionare ulteriormente gli annunci monitorati. Il comando v2 consente inoltre all'host di filtrare gli annunci monitorati in modo che il controller generi report pubblicitari.
Comando | Codice | Parametri dei comandi | Parametri restituiti |
---|---|---|---|
HCI_VS_MSFT_LE_Monitor_Advertisement [v2] | Codice di base scelto | Subcommand_opcode_v2, RSSI_threshold_high, RSSI_threshold_low, RSSI_threshold_low_time_interval, RSSI_sampling_period, Monitor_options, Advertisement_report_filtering_options, Peer_device_address, Peer_device_address_type, Peer_device_IRK, Condition_type, <Parametri della condizione> |
Stato Subcommand_opcode, Monitor_Handle |
HCI_VS_MSFT_LE_Monitor_Advertisement [v1] | Codice di base scelto | Subcommand_opcode_v1, RSSI_threshold_high, RSSI_threshold_low, RSSI_threshold_low_time_interval, RSSI_sampling_period, Condition_type, <Parametri della condizione> |
Stato Subcommand_opcode, Monitor_Handle |
Il controller genererà un evento Command Complete in risposta a questo comando. Il valore di stato deve essere impostato su zero se il controller può iniziare il monitoraggio o uno stato diverso da zero in caso contrario. Se il controller non supporta il monitoraggio RSSI per gli annunci LE, ignorerà i valori dei parametri RSSI_threshold_high, RSSI_threshold_low, RSSI_threshold_low_time_interval e RSSI_sampling_period .
Questo diagramma di stato mostra gli stati di transizione nel controller quando si monitora RSSI per un annuncio pubblicitario.
Il titolare del trattamento inizierà a monitorare un annuncio solo quando l'RSSI ricevuto è maggiore o uguale a RSSI_threshold_high per un determinato dispositivo e la corrispondenza Monitor_options (vedere di seguito). Il controller genererà un HCI_VS_MSFT_LE_Monitor_Device_Event con Monitor_state impostato su 1 e Monitor_handle impostato sull'handle per questa condizione, per notificare all'host che il controller sta monitorando questo particolare dispositivo per Condizione. Inoltre, il titolare del trattamento propaga il primo rapporto pubblicitario di un annuncio pubblicitario monitorato all'host solo quando il Advertisement_report_filter_options corrisponde (vedere di seguito).
Il Monitor_options per un filtro viene considerato una corrispondenza in base alla logica seguente (in pseudocodice):
MatchesCondition = (PDU Matches Condition Parameters)
IsAdvAMatch = ((Monitor_options bit 0 is set) && ((AdvA == Peer_device_address) && (TxAdd == Peer_device_address_type))) ||
((Monitor_options bit 1 is set) && (AdvA resolvable with Peer_device_IRK))
IsDirectedAdvAMatch = (TargetA is permitted based on the Scanning Filter Policy) &&
(((Monitor_options bit 2 is set) && ((AdvA == Peer_device_address) && (TxAdd == Peer_device_address_type))) ||
((Monitor_options bit 3 is set) && (AdvA resolvable with Peer_device_IRK)))
IsDirectedTargetAMatch = (Monitor_options bit 4 is set) &&
(TargetA is permitted based on the Scanning Filter Policy)
MonitorOptionsMatch = (MatchesCondition && IsAdvAMatch) ||
IsDirectedAdvAMatch ||
IsDirectedTargetAMatch ||
((Monitor_options bit 5 is set) && MatchesCondition)
E per un annuncio monitorato, i Advertisement_report_filter_options vengono considerati una corrispondenza in base alla logica seguente (in pseudocodice):
IsDuplicateFilterSatisfied = (Advertisement_report_filter_options bit 0 is NOT set || PDU is not a duplicate)
ShouldGenerateLegacyReport = (Advertisement_report_filter_options bit 1 is set) &&
(PDU is Legacy) &&
MonitorOptionsMatch
ShouldGenerateExtendedReport = (Advertisement_report_filter_options bit 2 is set) &&
(PDU is Extended) &&
MonitorOptionsMatch
ShouldGenerateDirectedReport = (Advertisement_report_filter_options bit 3 is set) &&
(PDU is Directed) &&
MonitorOptionsMatch
AdvertisementReportFilterOptionsMatch = IsDuplicateFilterSatisfied &&
(ShouldGenerateLegacyReport || ShouldGenerateExtendedReport || ShouldGenerateDirectedReport)
Il titolare del trattamento deve interrompere il monitoraggio della condizione se l'RSSI degli annunci ricevuti è uguale o scende al di sotto di RSSI_threshold_low RSSI_threshold_low_interval per il dispositivo specifico. Il controller genererà un HCI_VS_MSFT_LE_Monitor_Device_Event con Monitor_state impostato su 0 per notificare all'host che il controller ha interrotto il monitoraggio del dispositivo specifico per la condizione. Dopo che il controller specifica il HCI_VS_MSFT_LE_Monitor_Device_Event con Monitor_state impostato su 0, il controller non consentirà l'invio di ulteriori pacchetti pubblicitari all'host per il dispositivo fino a quando il controller non ha comunicato all'host che l'RSSI per il dispositivo specifico è aumentato o superiore RSSI_threshold_high per il dispositivo specifico per la condizione.
Inoltre, il controller genera un HCI_VS_MSFT_LE_Monitor_Device_Event con Monitor_state impostato su 0 per notificare all'host che il controller ha interrotto il monitoraggio del dispositivo per la condizione se il RSSI_threshold_low_time_interval specificato scade senza ricevere pacchetti pubblicitari dal dispositivo. Se il controller monitora un dispositivo per una determinata condizione, le istruzioni seguenti sono vere.
Se il controller supporta il monitoraggio RSSI degli annunci estesi LE senza campionamento, il controller propaga pacchetti pubblicitari anonimi all'host se il valore RSSI per il pacchetto è maggiore o uguale a RSSI_threshold_high. Gli annunci anonimi non verranno rilevati e l'evento HCI_VS_MSFT_LE_Monitor_Device_Event non verrà generato.
Se il titolare del trattamento supporta il monitoraggio RSSI degli annunci LE senza campionamento, il titolare del trattamento genera un rapporto pubblicitario troncato nel caso in cui i frammenti ricevuti dell'annuncio corrispondano, ma in cui l'intero annuncio non è stato ricevuto correttamente.
Il titolare del trattamento supporta almeno 30 Monitor_handles simultanee, almeno 30 dispositivi monitorati simultaneamente e almeno 20 annunci duplicati rilevati contemporaneamente. Il titolare del trattamento deve anche essere in grado di eseguire un'analisi A LE continua al 10% del ciclo di lavoro.
Se la risoluzione degli indirizzi è abilitata nel controller e l'host intende monitorare un dispositivo remoto con il relativo IRK archiviato correttamente nell'elenco di risoluzione del controller, l'host fornirà i parametri Peer_Identity_Address e Peer_Identity_Address_Type dalla voce dell'elenco di risoluzione del dispositivo remoto come parametri Peer_device_address e Peer_device_address_type, rispettivamente.
RSSI_sampling_period | Annunci legacy | Annunci estesi (non anonimi) | Annunci estesi (anonimo) |
---|---|---|---|
0x00 | Il controller propaga tutti i pacchetti di annunci ricevuti all'host per il dispositivo per questa condizione , a meno che il controller non abbia ricevuto in precedenza un comando HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable con Abilita impostato su 0x00. Il controller propaga un pacchetto pubblicitario all'host anche se l'RSSI ricevuto è minore o uguale a RSSI_threshold_low purché RSSI_threshold_low_time_interval non sia scaduto per il dispositivo specifico per questa condizione. Il valore RSSI di questo pacchetto pubblicitario sarà il valore RSSI dell'annuncio ricevuto. | Se il controller supporta il monitoraggio RSSI degli annunci estesi LE senza campionamento, lo stesso comportamento della colonna Annunci legacy, ad eccezione del fatto che un pacchetto pubblicitario è definito come tutte le CPU nella catena di annunci pubblicitari. | Se il controller supporta il monitoraggio RSSI degli annunci estesi LE senza campionamento, il controller propaga tutti i pacchetti pubblicitari ricevuti all'host per il dispositivo per questa condizione , a meno che il controller non abbia ricevuto in precedenza un comando HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable con Enable impostato su 0x00. |
0x01 a 0xFE | Il controller propaga pacchetti pubblicitari legacy all'host ogni RSSI_sampling_period specificato, a meno che il controller non abbia ricevuto in precedenza un comando HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable con Enable impostato su 0x00. Il valore RSSI specificato per l'annuncio sarà la media del valore RSSI ricevuto durante questo intervallo di campionamento. Se il controller non riceve un pacchetto pubblicitario durante il periodo di campionamento, non propaga un annuncio all'host. È possibile che RSSI_sampling_period sia minore di RSSI_threshold_low_time_interval e che tutti gli annunci ricevuti durante il RSSI_sampling_period abbiano RSSI sotto RSSI_threshold_low. Il controller deve comunque propagare l'annuncio con la media del valore RSSI ricevuto durante questo intervallo di campionamento. | Se il controller supporta il monitoraggio RSSI degli annunci estesi LE senza campionamento, il controller si comporta come se il RSSI_sampling_period fosse 0x00. | Se il controller supporta il monitoraggio RSSI degli annunci estesi LE senza campionamento, il controller si comporta come se il RSSI_sampling_period fosse 0x00. |
0xFF | Il controller non consentirà l'invio di ulteriori pacchetti pubblicitari all'host per il dispositivo per la condizione fino a quando il controller non ha comunicato all'host che l'RSSI del dispositivo specifico è sceso al di sotto del RSSI_threshold_low per RSSI_threshold_low_time_interval per il dispositivo specifico per questa condizione. Questa notifica viene eseguita generando un HCI_VS_MSFT_LE_Monitor_Device_Event con Monitor_state impostato su 0. | Se il controller supporta il monitoraggio RSSI degli annunci estesi LE senza campionamento, lo stesso comportamento della colonna Annunci legacy. | Se il controller supporta il monitoraggio RSSI degli annunci estesi LE senza campionamento, il controller si comporta come se il RSSI_sampling_period fosse 0x00. |
Se il controller ha ricevuto in precedenza un comando HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable con Enable impostato su 0x00, il timer del periodo di campionamento non verrà arrestato. Per altre informazioni, vedere Esempio: HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable sui filtri con periodo di campionamento. Se il controller riceve pacchetti pubblicitari nonduplicati dallo stesso dispositivo, corrisponderà a ogni pacchetto pubblicitario rispetto alle condizioni archiviate nel controller.
Se il controller riceve un pacchetto pubblicitario da un dispositivo che corrisponde a più condizioni, il controller genererà un HCI_VS_MSFT_LE_Monitor_Device_Event per ogni condizione corrispondente, con Monitor_handle impostato sulla condizione corrispondente.
Se il controller non è in grado di monitorare i valori RSSI per tutti i dispositivi nell'intervallo che corrispondono alla condizione, mantiene il monitoraggio del numero di dispositivi possibile. La decisione sui dispositivi da monitorare dipenderà dai valori RSSI degli annunci ricevuti. Il controller monitorerà i dispositivi con maggiore potenza del segnale ricevuto.
Se il controller ha informato l'host su un particolare dispositivo (A) e monitora i dispositivi con capacità hardware massima e se un altro dispositivo (B) entra in un intervallo con un valore RSSI superiore, il controller notifica all'host che ha interrotto il monitoraggio del dispositivo (A) generando un HCI_VS_MSFT_LE_Monitor_Device_Event con Monitor_state impostato su 0. Il controller genererà anche un HCI_VS_MSFT_LE_Monitor_Device_Event con Monitor_state impostato su 1 per notificare all'host che il dispositivo (B) è attualmente monitorato.
Parametri di tipo condizione e condizione
Il parametro Condition_type specifica se il parametro Condition specifica un criterio, un UUID, un IRK o un BD_ADDR.
Se il parametro Condition_type specifica un criterio, la condizione contiene due sezioni che contengono il numero di modelli presenti all'interno della condizione e i dati del modello.
Number of Patterns specifica il numero di modelli che devono essere confrontati.
Pattern Data ha il formato seguente.
- La lunghezza specifica la lunghezza di questo modello includono il tipo di dati e il byte iniziale del modello.
- Il tipo di Active Directory specifica il campo Tipo di Active Directory.
- L'inizio di Pattern specifica la posizione iniziale dei byte del criterio immediatamente successivo al tipo di Active Directory.
- Il criterio ha una dimensione (Length - 0x2) ed è il modello da trovare per il tipo di AD specificato all'interno del pacchetto di annuncio dal byte iniziale specificato.
Se sono specificati più modelli, il controller deve assicurarsi che almeno un modello corrisponda all'annuncio ricevuto.
Se il controller supporta il monitoraggio RSSI degli annunci estesi LE senza campionamento:
Il titolare del trattamento cercherà il modello nei primi 251 ottetti dei dati della pubblicità host e potrà cercare in eventuali ottetti rimanenti dei dati della pubblicità host. Se la sezione AD si estende oltre i primi 251 ottetti dei dati di Host Advertising Data, il titolare del trattamento cercherà il modello all'interno della parte della sezione AD che si trova nei primi 251 ottetti dei dati di Host Advertising e potrebbe cercare eventuali ottetti rimanenti dei dati di Host Advertising Data. Nota: in base alla frammentazione da parte dell'inserzionista, i primi 251 ottetti dei dati della pubblicità host possono estendersi attraverso AdvData di più PDU pubblicitari. Gli scanner devono prestare attenzione a limitare il numero di AuxPtrs che seguono, per evitare di seguire catene eccessivamente lunghe di GPU.
Il titolare del trattamento deve tenere traccia in base a un indirizzo per dispositivo per ogni set di annunci pubblicitari. Il titolare del trattamento propaga un HCI_VS_MSFT_LE_Monitor_Device_Event per ogni set di annunci pubblicitari che corrisponde al modello anche se l'annuncio proviene dallo stesso indirizzo del dispositivo.
Se il parametro Condition_type specifica un UUID, il parametro Condition contiene un tipo UUID e un UUID. Il tipo UUID specifica se l'UUID è a 16 bit, a 32 bit o a 128 bit. Il controller analizzerà l'UUID del servizio del pacchetto di annuncio per verificare la presenza dell'UUID specificato. Se il tipo UUID è definito come 0x01, il controller analizzerà l'elenco incompleto degli UUID del servizio a 16 bit e l'elenco completo degli UUID del servizio a 16 bit specificati nel tipo di AD UUID del servizio. Se il tipo UUID è definito come 0x02, il controller analizzerà l'elenco incompleto degli UUID del servizio a 32 bit e l'elenco completo degli UUID a 32 bit specificati nel tipo di AD UUID del servizio. Se il tipo UUID specificato è 0x03, il controller analizzerà l'elenco incompleto degli UUID del servizio a 128 bit e l'elenco completo degli UUID del servizio a 128 bit specificati nel tipo di AD UUID del servizio.
Se il controller supporta il monitoraggio RSSI degli annunci estesi LE senza campionamento:
Il titolare del trattamento cercherà l'UUID del servizio nei primi 251 ottetti dei dati della pubblicità host e potrà cercare eventuali ottetti rimanenti dei dati della pubblicità host. Se la sezione AD si estende oltre i primi 251 ottetti dei dati di Annunci host, il titolare del trattamento cercherà l'UUID del servizio all'interno della parte della sezione DI AD che si trova nei primi 251 ottetti dei dati della pubblicità host e potrebbe cercare eventuali ottetti rimanenti dei dati della pubblicità host. Nota: in base alla frammentazione da parte dell'inserzionista, i primi 251 ottetti dei dati della pubblicità host possono estendersi su AdvData di più PDU pubblicitari. Gli scanner devono prestare attenzione a limitare il numero di AuxPtrs che seguono, per evitare di seguire catene eccessivamente lunghe di GPU.
Il titolare del trattamento deve tenere traccia in base a un indirizzo per dispositivo per ogni set di annunci pubblicitari. Il controller propaga un HCI_VS_MSFT_LE_Monitor_Device_Event per ogni set di annunci che corrisponde all'UUID del servizio anche se l'annuncio proviene dallo stesso dispositivo.
Se il parametro Condition_type specifica un IRK, il parametro Condition contiene l'IRK.
Se il parametro Condition_type specifica un indirizzo Bluetooth, il parametro Condition contiene il tipo di indirizzo e BD_ADDR.
Il titolare del trattamento deve mantenere il monitoraggio in base alle condizioni, anche quando l'analisi (attiva o passiva) è abilitata. Quando l'analisi attiva è abilitata, la risposta di analisi per un annuncio pubblicitario corrispondente a un filtro deve essere propagata all'host.
Se il controller riceve un comando HCI_VS_MSFT_LE_Monitor_Advertisement quando i filtri sono disabilitati (a causa di un comando HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable ricevuto in precedenza con Abilita impostato su 0x00), il controller accetterà il comando, se possibile, ma lo imposta su uno stato disabilitato. Il controller può anche rifiutare il comando per altri motivi, ad esempio l'esaurimento delle risorse.
Se tutti i bit di Monitor_options sono chiari, il controller deve restituire il codice di errore Parametri di comando HCI non validi (0x12).
Se è impostato il bit 1 o 3 bit 3 di Monitor_options e Peer_device_IRK è impostato su un IRK non valido o nessuno dei bit di Monitor_options è impostato, il controller deve restituire il codice di errore Parametri di comando HCI non validi (0x12).
Se è impostato bit 0 o bit 1 o bit 2 o bit 3 di Monitor_options e Condition_type è impostato su 0x03 o 0x04, il controller deve restituire il codice di errore Parametri di comando HCI non validi (0x12).
Se viene impostato il bit 0 di Advertisement_report_filter_options e RSSI_sampling_period è un valore diverso da 0x00, il controller deve restituire il codice di errore Parametri di comando HCI non validi (0x12).
Parametri mancanti
Quando viene eseguita una versione di questo comando che non include tutti i parametri, è necessario usare quanto segue:
Parametro | Valore |
---|---|
Monitor_options | Bit 5 set; tutti gli altri bit cancellati |
Advertisement_report_filter_options | Bit 1 e 2 impostati; tutti gli altri bit cancellati |
Peer_device_IRK | 0x0000000000000000 0000000000000000 |
Peer_device_address | 0x000000000000 |
Peer_device_address_type | 0x00 |
Command_parameters
Subcommand_opcode_v1 (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x03 | Codice operativo sottocomando per HCI_VS_MSFT_LE_Monitor_Advertisement [v1]. |
Subcommand_opcode_v2 (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x0F | Codice operativo sottocomando per HCI_VS_MSFT_LE_Monitor_Advertisement [v2]. |
RSSI_threshold_high (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0xXX | Valore RSSI massimo previsto. Il controller genera un evento se l'RSSI osservato diventa maggiore o uguale a questo valore. Unità: dBm Intervallo obbligatorio: da -127 a 20 (intero con segno) |
RSSI_threshold_low (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0xXX | Valore RSSI minimo previsto. Il controller genera un evento se l'RSSI osservato diventa minore o uguale a questo valore. Unità: dBm Intervallo obbligatorio: da -127 a 20 (intero con segno) |
RSSI_threshold_low_time_interval (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x00 | Valore riservato. |
N = 0xXX | Tempo in secondi in cui il valore RSSI deve essere inferiore RSSI_threshold_low prima che venga generato un HCI_VS_MSFT_Rssi_Event Periodo di tempo = N * 1 secondo Intervallo obbligatorio: 0x01 da 0x3C. |
RSSI_sampling_period (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x00 | Il titolare del trattamento propaga tutti gli annunci ricevuti all'host. |
N = 0xXX | Intervallo di campionamento in millisecondi. Periodo di tempo = N * 100 millisecondi. Intervallo obbligatorio: da 0x01 a 0xFE |
0xFF | Il titolare del trattamento non propaga alcun annuncio ricevuto all'host. |
Monitor_options (1 ottetto):
Numero di bit | Descrizione del parametro |
---|---|
0 | Il titolare del trattamento monitora la pubblicità pdu in cui AdvA o il relativo indirizzo di identità risolto corrisponde Peer_device_address e Peer_device_address_type e dove TargetA non è presente o, se presente, TargetA è consentito in base ai criteri di filtro di analisi, se tali PDU corrispondono alla condizione specificata in Condition_Type. |
1 | Il titolare del trattamento monitorerà le PDU pubblicitarie in cui AdvA è risolvibile con Peer_device_IRK e dove TargetA non è presente o, se presente, TargetA è consentito in base ai criteri di filtro di analisi, se tali PDU corrispondono alla condizione specificata in Condition_Type. Questo bit non deve essere impostato se la privacy del livello di collegamento è in uso nel controller. |
2 | Il controller monitorerà le PDU pubblicitarie dirette in cui targetA è consentito in base ai criteri di filtro di analisi e dove AdvA o il relativo indirizzo di identità risolto corrisponde Peer_device_address e Peer_device_address_type. Indipendentemente dal fatto che il PDU corrisponda alla condizione specificata in Condition_Type. |
3 | Il titolare del trattamento monitorerà le PDU pubblicitarie dirette in cui targetA è consentito in base ai criteri di filtro di analisi e dove AdvA è risolvibile con Peer_device_IRK. Indipendentemente dal fatto che il PDU corrisponda alla condizione specificata in Condition_Type. Questo bit non deve essere impostato se la privacy del livello di collegamento è in uso nel controller. |
4 | Il titolare del trattamento monitorerà le PDU pubblicitarie dirette in cui targetA è consentito in base ai criteri di filtro di analisi, indipendentemente dal valore di Peer_device_address e Peer_device_address_type o Peer_device_IRK e indipendentemente dal fatto che il PDU corrisponda alla condizione specificata in Condition_Type. |
5 | Il titolare del trattamento monitora la pubblicità di PDU da qualsiasi advA in cui TargetA non è presente o, se presente, targetA è consentito in base ai criteri di filtro di analisi, se tali PDU corrispondono alla condizione specificata in Condition_Type. |
Tutti gli altri bit | Prenotato per un futuro utilizzo |
Advertisement_report_filtering_options (1 ottetto):
Numero di bit | Descrizione del parametro |
---|---|
0 | Filtra pdu pubblicitari duplicati. Questo bit verrà impostato solo se RSSI_sampling_period è 0x00. |
1 | Il controller genererà eventi HCI_LE_Advertising_Report o HCI_LE_Directed_Advertising_Report eventi o HCI_LE_Extended_Advertising_Report per le CPU pubblicitarie legacy, se tali CPU corrispondono al Monitor_options specificato. |
2 | Il titolare del trattamento genera HCI_LE_Extended_Advertising_Report eventi per pdu annunci estesi, se tali PPU corrispondono al Monitor_options specificato. |
3 | Il titolare del trattamento genererà eventi HCI_LE_Advertising_Report o HCI_LE_Directed_Advertising_Report eventi o HCI_LE_Extended_Advertising_Report eventi per le PDU pubblicitarie dirette, se tali PPU corrispondono al Monitor_options specificato. |
Tutti gli altri bit | Prenotato per un futuro utilizzo |
Peer_device_address (6 ottetti):
Valore | Descrizione del parametro |
---|---|
0xXXXXXXXXXXXXXXX | Indirizzo del dispositivo pubblico o Indirizzo dispositivo casuale in modo che corrisponda. |
Peer_device_address_type (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x00 | Indirizzo dispositivo pubblico |
0x01 | Indirizzo dispositivo casuale |
Tutti gli altri valori | Prenotato per un futuro utilizzo |
Peer_device_IRK (16 ottetti):
Valore | Descrizione del parametro |
---|---|
0x0000000000000000 0000000000000000 | IRK non valido. Non deve essere il valore quando viene impostato Monitor_options bit 1 o quando viene impostato Monitor_options bit 3. |
0xXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXX | IRK del dispositivo da trovare. Peer_device_address e Peer_device_address_type devono essere popolati. |
Condition_type (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x01 | La condizione è un modello che deve essere confrontato sull'annuncio pubblicitario. |
0x02 | La condizione è un tipo UUID e un UUID. |
0x03 | La condizione è la risoluzione di un IRK. Escluso se vengono impostati uno dei bit Monitor_options 0, 1, 2 o 3. |
0x04 | La condizione è un tipo di indirizzo Bluetooth e un indirizzo Bluetooth. Escluso se vengono impostati uno dei bit Monitor_options 0, 1, 2 o 3. |
Condizione: i campi applicabili per Condizione dipendono dal valore di Condition_type. Per altre informazioni, vedere la sezione parametri Condition_type e Condition.
Number_of_patterns (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0xXX | Numero di modelli specificati all'interno del parametro Pattern_data. |
Pattern_data (>3 ottetti):
Valore | Descrizione del parametro |
---|---|
Durata | Lunghezza di questo modello. |
Tipo di dati | Tipo di dati della sezione dell'annuncio. I valori sono elencati nel documento Numeri assegnati Bluetooth. |
Byte iniziale | Posizione iniziale del criterio da trovare per il tipo di dati specificato. |
Modello | Modello da associare (dimensioni di lunghezza - byte 0x2). |
UUID_type (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x01 | L'UUID è un servizio a 16 bit. |
0x02 | L'UUID è un servizio a 32 bit. |
0x03 | L'UUID è un servizio a 128 bit. |
UUID (2, 4 o 16 ottetti):
Valore | Descrizione del parametro |
---|---|
0xXXXX | 2 byte se UUID_type è 0x01. 4 byte se UUID_type è 0x02. 16 byte se UUID_type è 0x03. |
IRK (16 ottetti):
Valore | Descrizione del parametro |
---|---|
0xXXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX | IRK da usare per risolvere l'indirizzo privato. |
Address_type (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x00 | Indirizzo del dispositivo pubblico. |
0x01 | Indirizzo casuale del dispositivo. |
0x02 a 0xFF | Valori riservati per uso futuro. |
BD_ADDR (6 ottetti):
Valore | Descrizione del parametro |
---|---|
0xXXXXXXXXXXXXXXX | Indirizzo Bluetooth del dispositivo da monitorare. |
Return_parameters
Stato (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x00 | Il comando è riuscito. |
0x07 | Il controller restituirà La capacità di memoria superata se non dispone di memoria sufficiente per elaborare il comando. |
Codice errore | Il comando non è riuscito. Per informazioni dettagliate, vedere Codici di errore nella specifica Bluetooth Core. |
Subcommand_opcode (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x03 o 0x0F | Codice operativo sottocomando per HCI_VS_MSFT_LE_Monitor_Advertisement [v1] o HCI_VS_MSFT_LE_Monitor_Advertisement [v2], a seconda del comando inviato. |
Monitor_handle (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x00 a 0xFF | Handle per questa regola. Questo handle viene usato come parametro per HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement per annullare il monitoraggio dell'annuncio. Questo parametro è valido solo se Status è 0x00. |
Eventi generati a meno che non siano stati mascherati
Quando viene ricevuto il comando HCI_VS_MSFT_LE_Monitor_Advertisement , il controller genererà un evento Command Complete.
HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement
HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement annulla un comando HCI_VS_MSFT_LE_Monitor_Advertisement rilasciato in precedenza.
Comando | Codice | Parametri dei comandi | Parametri restituiti |
---|---|---|---|
HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement | Codice di base scelto | Subcommand_opcode, Monitor_handle |
Stato Subcommand_opcode |
Il controller genererà tempestivamente un evento Command Completed in risposta a questo comando.
Command_parameters
Subcommand_opcode (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x04 | Codice operativo sottocomando per HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement. |
Connection_Handle (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0xXX | Handle per il filtro che viene annullato. |
Return_parameters
Stato (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x00 | Il comando è riuscito. |
0x07 | Il controller restituirà La capacità di memoria superata se non dispone di memoria sufficiente per elaborare il comando. |
Codice errore | Il comando non è riuscito. Per informazioni dettagliate, vedere Codici di errore nella specifica Bluetooth Core. |
Subcommand_opcode (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x04 | Codice operativo sottocomando per HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement. |
Eventi generati a meno che non siano stati mascherati
Il controller genererà un evento Command Complete quando viene ricevuto il comando HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement .
HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable
HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable imposta lo stato dei filtri degli annunci pubblicitari.
Comando | Codice | Parametri dei comandi | Parametri restituiti |
---|---|---|---|
HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable | Codice di base scelto | Subcommand_opcode, Abilitare |
Stato Subcommand_opcode |
Se Enable è impostato su 0x00, il controller propaga gli annunci ricevuti all'host in base alle impostazioni dell'elenco di accettazione dei filtri esistenti. Il controller continuerà a monitorare i dispositivi attualmente monitorati e generare un HCI_VS_MSFT_LE_Monitor_Device_Event con Monitor_state impostato su 0 se il dispositivo non viene più monitorato. Il titolare del trattamento genera un HCI_VS_MSFT_LE_Monitor_Device_Event con Monitor_state impostato su 1 se viene monitorato un nuovo dispositivo. L'host può rilasciare HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable con Abilita impostato su 0x01 per riabilitare tutte le condizioni di filtro.
Se Enable è impostato su 0x01, questo comando abilita tutti i filtri impostati con un comando HCI_VS_MSFT_LE_Monitor_Advertisement rilasciato in precedenza. Il controller rifiuterà un comando HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable se non attiva o disattiva lo stato del filtro:
- Il controller rifiuterà un comando HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable con Enable impostato su 0x01 se in precedenza riceveva un comando HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable con Enable impostato su 0x01.
- Il controller rifiuterà il comando HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable con Enable impostato su 0x00 se in precedenza riceveva un comando HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable con Enable impostato su 0x00.
Lo stato predefinito del filtro di annuncio deve essere disattivato. Questo stato equivale al controller che riceve in precedenza un comando HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable con Abilita impostato su 0x00. Il controller genererà tempestivamente un evento Command Completed in risposta a questo comando.
Command_parameters
Subcommand_opcode (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x05 | Sottocomando codice operativo per HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable. |
Abilita (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x00 | Ripristinare il comportamento dell'elenco accettare il filtro corrente, ma continuare a monitorare i dispositivi in base alla condizione dai comandi di HCI_VS_MSFT_LE_Monitor_Advertisement . |
0x01 | Abilitare tutti i comandi HCI_VS_MSFT_LE_Monitor_Advertisement rilasciati nel controller. |
Return_parameter
Stato (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x00 | Il comando è riuscito. |
0x0C | Il controller restituisce Command Disallowed se il controller ha rifiutato il comando perché in precedenza ha visto un comando HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable con Enable impostato sullo stesso valore di questo comando. |
Codice errore | Il comando non è riuscito. Per informazioni dettagliate, vedere Codici di errore nella specifica Bluetooth Core. |
Subcommand_opcode (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x05 | Sottocomando codice operativo per HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable. |
Eventi generati a meno che non siano stati mascherati
Il controller genera un evento Command Complete quando viene ricevuto il comando HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable .
HCI_VS_MSFT_Read_Absolute_RSSI
HCI_VS_MSFT_Read_Absolute_RSSI legge il valore rssI (Received Signal Strength Indication) assoluto per una connessione BR/EDR dal controller.
Comando | Codice | Parametri dei comandi | Parametri restituiti |
---|---|---|---|
HCI_VS_MSFT_Read_Absolute_RSSI | Codice di base scelto | Subcommand_opcode, Connection_Handle |
Stato Subcommand_opcode, Connection_Handle, RSSI |
Un handle di connessione viene fornito sia come comando che come parametro restituito per identificare la connessione ACL di cui viene letto RSSI. La metrica RSSI è la forza assoluta del segnale ricevitore in dBm per ± 6 dB accuratezza. Se non è possibile leggere l'RSSI, la metrica RSSI verrà impostata su 127. Il controller completerà sempre questo comando tempestivamente con un evento Command Completed.
Command_parameters
Subcommand_opcode (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x06 | Codice operativo sottocomando per HCI_VS_MSFT_Read_Absolute_RSSI. |
Connection_Handle (2 ottetti):
Valore | Descrizione del parametro |
---|---|
0xXXXX | Handle per la connessione BR/EDR di cui deve essere letto RSSI. |
Return_parameters
Stato (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x00 | Il comando è riuscito. |
0x01 a 0xFF | Il comando non è riuscito. Per informazioni dettagliate, vedere Codici di errore nella specifica Bluetooth Core. |
Subcommand_opcode (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x06 | Sottocomando codice operativo per HCI_VS_MSFT_Read_Absolute_RSSI. |
Connection_Handle (2 ottetti):
Valore | Descrizione del parametro |
---|---|
0xXXXX | Handle per la connessione BR/EDR di cui è stato letto RSSI. |
RSSI (1 ottetto):
Valore | Descrizione del parametro |
---|---|
N = 0xXX | Valore RSSI per la connessione BR/EDR. Unità: dBm Intervallo obbligatorio: da -128 a 127 (intero con segno) |
Eventi generati a meno che non siano stati mascherati
Il controller genererà un evento Command Complete al termine del comando HCI_VS_MSFT_Read_Absolute_RSSI .
Eventi HCI Bluetooth definiti da Microsoft
Tutti gli eventi Bluetooth HCI definiti da Microsoft sono eventi definiti dal fornitore e usano il codice evento 0xFF. I dati dell'evento per gli eventi Microsoft iniziano sempre con una stringa costante di byte per distinguere gli eventi definiti da Microsoft da altri eventi definiti dal fornitore. La lunghezza e il valore della stringa costante vengono definiti dall'implementatore del controller e restituiti in risposta a HCI_VS_MSFT_Read_Supported_Features.
Evento HCI | Descrizione |
---|---|
HCI_VS_MSFT_Rssi_Event | HCI_VS_MSFT_RSSI_Event indica che un comando HCI_VS_MSFT_Monitor_Rssi è stato completato. |
HCI_VS_MSFT_LE_Monitor_Device_Event | HCI_VS_MSFT_LE_Monitor_Device_Event indica che il controller ha avviato o arrestato il monitoraggio di un dispositivo Bluetooth LE. |
HCI_VS_MSFT_RSSI_Event
HCI_VS_MSFT_RSSI_Event indica che un comando HCI_VS_MSFT_Monitor_Rssi è stato completato. Se il parametro Status è zero, il comando è stato completato perché il valore RSSI per il dispositivo remoto è stato modificato in un valore esterno all'intervallo specificato. Se il parametro Status è diverso da zero, il comando è stato completato perché il valore RSSI della connessione non può più essere monitorato.
Event | Codice evento | Codice evento Microsoft | Parametri di evento |
---|---|---|---|
HCI_VS_MSFT_RSSI_Event | 0xFF | 0x01 | Event_prefix, Microsoft_event_code, Stato Connection_Handle, RSSI |
Event_parameters
Event_prefix (dimensione variabile):
Valore | Descrizione del parametro |
---|---|
Prefisso dell'evento | Prefisso dell'evento che contrassegna questo evento come definito da Microsoft. Le dimensioni e il valore vengono restituiti dal comando HCI_VS_MSFT_Read_Supported_Features . |
Microsoft_event_code (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x01 | Codice evento per HCI_VS_MSFT_RSSI_Event. |
Stato (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x00 | Esito positivo. Il valore RSSI della connessione ha soddisfatto una delle condizioni seguenti. L'RSSI ha raggiunto o superato RSSI_threshold_high. L'RSSI è stato raggiunto o eliminato sotto RSSI_threshold_low RSSI_threshold_low_time_interval secondi. Il RSSI_sampling_period è scaduto e questo evento è stato generato per notificare all'host il valore RSSI. |
0x01 a 0xFF | Esito negativo. Il valore RSSI della connessione non può più essere monitorato. Il codice di errore è in genere uno dei codici che descrive il motivo per cui la connessione ACL sottostante è stata persa. |
Connection_Handle (2 ottetti):
Valore | Descrizione del parametro |
---|---|
0xXXXX | Handle per la connessione di cui monitorare RSSI. |
RSSI (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0xXX | Valore RSSI del collegamento misurato per la connessione. Unità: dBm Intervallo BR/EDR: da -128 a 127 (intero con segno) Intervallo LE: da -127 a 20 (intero con segno) |
HCI_VS_MSFT_LE_Monitor_Device_Event
HCI_VS_MSFT_LE_Monitor_Device_Event indica che il controller ha avviato o arrestato il monitoraggio di un dispositivo Bluetooth LE.
Se il valore del parametro Monitor_state è 1, il controller ha avviato il monitoraggio del dispositivo Bluetooth con il BD_ADDR specificato. Se il valore del parametro Monitor_state è 0, il controller ha arrestato il monitoraggio del dispositivo Bluetooth con il BD_ADDR specificato.
Event | Codice evento | Codice evento Microsoft | Parametri di evento |
---|---|---|---|
HCI_VS_MSFT_LE_Monitor_Device_Event | 0xFF | 0x02 | Event_prefix, Microsoft_event_code, Address_type, BD_ADDR, Monitor_handle, Monitor_state |
Il controller non genererà un HCI_VS_MSFT_LE_Monitor_Device_Event con il parametro Monitor_state impostato su 0 se non è già stato generato un HCI_VS_MSFT_LE_Monitor_Device_Event con Monitor_state impostato su 1.
Event_parameters
Event_prefix (dimensione variabile):
Valore | Descrizione del parametro |
---|---|
Prefisso dell'evento | Prefisso dell'evento che contrassegna questo evento come definito da Microsoft. Le dimensioni e il valore vengono restituiti dal comando HCI_VS_MSFT_Read_Supported_Features . |
Microsoft_event_code (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x02 | Codice evento per HCI_VS_MSFT_LE_Monitor_Device_Event. |
Address_type (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x00 | Indirizzo del dispositivo pubblico. |
0x01 | Indirizzo casuale del dispositivo. |
0x02 a 0xFF | Valori riservati per uso futuro. |
BD_ADDR (6 ottetti):
Valore | Descrizione del parametro |
---|---|
0xXXXXXXXXXXXXXXX | Indirizzo Bluetooth del dispositivo. |
Monitor_handle (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0xXX | Handle per il filtro specificato per il comando HCI_VS_MSFT_LE_Monitor_Advertisement . |
Monitor_state (1 ottetto):
Valore | Descrizione del parametro |
---|---|
0x00 | Il controller ha arrestato il monitoraggio del dispositivo specificato da BD_ADDR e Monitor_handle. |
0x01 | Il controller ha avviato il monitoraggio del dispositivo specificato da BD_ADDR e Monitor_handle. |
Comandi HCI AVDTP definiti da Microsoft
I comandi HCI AVDTP seguenti forniscono il supporto per l'offload A2DP della banda audio. Per altre informazioni, vedere Audio Sideband A2DP Offload.
Comandi AVDTP HCI | Descrizione |
---|---|
HCI_VS_MSFT_Avdtp_Capabilities_Configuration | Configura l'interfaccia di trasporto audio e restituisce le funzionalità codec del controller Bluetooth, che è un elenco di blocchi di informazioni sui codec. |
HCI_VS_MSFT_Avdtp_Open | Alloca e configura le risorse di offload AVDTP all'interno del controller. |
HCI_VS_MSFT_Avdtp_Start | Avvia lo streaming audio dal trasporto audio ai pacchetti multimediali AVDTP trasmessi. |
HCI_VS_MSFT_Avdtp_Suspend | Arresta l'attività di streaming avviata da HCI_VS_MSFT_Avdtp_Start. |
HCI_VS_MSFT_Avdtp_Close | Rilascia le risorse di offload AVDTP allocate da HCI_VS_MSFT_Avdtp_Open. |
HCI_VS_MSFT_Avdtp_Capabilities_Configuration
HCI_VS_MSFT_Avdtp_Capabilities_Configuration configura l'interfaccia del trasporto audio e restituisce le funzionalità codec del controller Bluetooth, che è un elenco di blocchi di informazioni sui codec. Ogni blocco di informazioni sul codec descrive un codec supportato.
Alcuni parametri riportati di seguito sono matrici di strutture con lunghezza variabile, quindi si presuppone che tutti questi parametri siano ancora inseriti in un comando HCI e in un evento HCI corrispondente.
Command_parameters
External_codec_count (1 ottetto):
valore | Descrizione del parametro |
---|---|
0x00-0xFF | Numero di blocchi di Codec_capability che seguono. |
External_codec_capability (lunghezza variabile):
valore | Descrizione del parametro |
---|---|
Blocco di funzionalità codec | Blocco di informazioni sulle funzionalità codec, come descritto nelle informazioni sulle funzionalità codec. Questo descrive un singolo codec supportato dal dispositivo collegato all'interfaccia audio. |
Questa struttura di dati si ripete External_codec_count volte.
Audio_interface_parameter_count (1 ottetto):
valore | Descrizione del parametro |
---|---|
0x00-0xFF | Numero di Audio_interface_parameters che seguono. |
Audio_interface_parameter (lunghezza variabile)
valore | Descrizione del parametro |
---|---|
Parametro dell'interfaccia audio | Parametro di interfaccia audio come descritto in precedenza, impostato dal dispositivo connesso all'interfaccia audio. |
Questa struttura di dati si ripete Audio_interface_parameter_count volte.
Return_parameters
Stato (1 ottetto):
valore | Descrizione del parametro |
---|---|
0x00 | Il comando è riuscito. |
0x01-0xFF | Il comando non è riuscito. Per informazioni dettagliate, vedere Codici di errore nella specifica Bluetooth Core. |
Subcommand_opcode _ (1 ottetto):
valore | Descrizione del parametro |
---|---|
0x07 | Codice operativo sottocomando per HCI_VS_MSFT_Avdtp_Capabilities_Configuration. |
Internal_codec_count (1 ottetto):
valore | Descrizione del parametro |
---|---|
0x00-0xFF | Numero di blocchi di Internal_codec_capability che seguono. |
Internal_codec_capability (lunghezza variabile):
valore | Descrizione del parametro |
---|---|
Blocco di funzionalità codec | Blocco di informazioni sulle funzionalità codec, come descritto in Offload A2DP audio sideband. Questo descrive un singolo codec supportato dal controller Bluetooth. |
Questa struttura di dati si ripete Internal_codec_count volte.
Audio_interface_parameter_count (1 ottetto):
valore | Descrizione del parametro |
---|---|
0x00-0xFF | Numero di Audio_interface_parameters che seguono. |
Audio_interface_parameter (lunghezza variabile)
valore | Descrizione del parametro |
---|---|
Parametro dell'interfaccia audio | Parametro di interfaccia audio come descritto in precedenza. Il software host passa questo parametro al dispositivo connesso all'interfaccia audio. |
Questa struttura di dati si ripete Audio_interface_parameter_count volte.
HCI_VS_MSFT_Avdtp_Open
Alloca e configura le risorse di offload AVDTP all'interno del controller.
Alcuni parametri riportati di seguito sono matrici di strutture con lunghezza variabile, quindi si presuppone che tutti questi parametri siano ancora inseriti in un comando HCI e in un evento HCI corrispondente.
Command_parameters
Connection_handle (2 ottetti)
valore | Descrizione del parametro |
---|---|
0xXXXX | IIdentifia il canale L2CAP multimediale AVDTP connesso al dispositivo remoto. |
L2cap_destination_cid (2 ottetti)
valore | Descrizione del parametro |
---|---|
0xXXXX | CID di destinazione L2CAP del canale multimediale AVDTP |
L2cap_mtu (2 ottetti)
valore | Descrizione del parametro |
---|---|
0xXXXX | MTU del canale multimediale AVDTP L2CAP |
Configured_codec_capability (lunghezza variabile):
valore | Descrizione del parametro |
---|---|
Blocco di funzionalità codec | Blocco di informazioni sulle funzionalità codec, come descritto in Offload A2DP audio sideband. Descrive il codec configurato per il supporto AVDTP. |
Audio_interface_parameter_count (1 ottetto):
valore | Descrizione del parametro |
---|---|
0x00-0xFF | Numero di Audio_interface_parameters che seguono. |
Audio_interface_parameter (lunghezza variabile)
valore | Descrizione del parametro |
---|---|
Parametro dell'interfaccia audio | Parametro di interfaccia audio come descritto in precedenza. Il dispositivo connesso all'interfaccia audio specifica questi parametri per una particolare istanza del flusso. |
Questa struttura di dati si ripete Audio_interface_parameter_count volte.
Return_parameters
Stato (1 ottetto):
valore | Descrizione del parametro |
---|---|
0x00 | Il comando è riuscito. |
0x01-0xFF | Il comando non è riuscito. Per informazioni dettagliate, vedere Codici di errore nella specifica Bluetooth Core. |
Subcommand_opcode (1 ottetto):
valore | Descrizione del parametro |
---|---|
0x08 | Sottocomando codice operativo per HCI_VS_MSFT_Avdtp_Open. |
Avdtp_offload_handle (2 ottetti):
valore | Descrizione del parametro |
---|---|
0xXXXX | Identifica la risorsa allocata per il flusso offloaded. |
Audio_interface_parameter_count (1 ottetto):
valore | Descrizione del parametro |
---|---|
0x00-0xFF | Numero di Audio_interface_parameters che seguono. |
Audio_interface_parameter (lunghezza variabile)
valore | Descrizione del parametro |
---|---|
Parametro dell'interfaccia audio | Parametro di interfaccia audio come descritto in precedenza. Il software host passa questo parametro al dispositivo connesso all'interfaccia audio per l'istanza del flusso. |
Questa struttura di dati si ripete Audio_interface_parameter_count volte.
HCI_VS_MSFT_Avdtp_Start
Questo comando avvia lo streaming audio dal trasporto audio ai pacchetti multimediali AVDTP trasmessi. Dopo l'esecuzione di questo comando, il controller Bluetooth avvia l'attività seguente.
- Riceve i dati audio dal trasporto audio
- Se il codificatore si trova nel controller Bluetooth, codifica i dati ricevuti dal trasporto audio per produrre frame codificati
- Se il codificatore si trova nel DSP audio, estrae fotogrammi codificati dal trasporto audio
- Assembla i frame codificati in payload multimediali AVDTP
- Costruisce e trasmette pacchetti multimediali AVDTP contenenti i payload multimediali
Command_parameters
Avdtp_offload_handle (2 ottetti):
valore | Descrizione del parametro |
---|---|
0xXXXX | Identifica la risorsa allocata per il flusso offloaded. |
Return_parameters
Stato (1 ottetto):
valore | Descrizione del parametro |
---|---|
0x00 | Il comando è riuscito. |
0x01-0xFF | Il comando non è riuscito. Per informazioni dettagliate, vedere Codici di errore nella specifica Bluetooth Core. |
Subcommand_opcode (1 ottetto):
valore | Descrizione del parametro |
---|---|
0x09 | Sottocomando codice operativo per HCI_VS_MSFT_Avdtp_Start. |
HCI_VS_MSFT_Avdtp_Suspend
Arresta l'attività di streaming avviata da HCI_VS_MSFT_Avdtp_Start.
Command_parameters
Avdtp_offload_handle (2 ottetti):
valore | Descrizione del parametro |
---|---|
0xXXXX | Identifica la risorsa allocata per il flusso scaricato |
Return_parameters
Stato (1 ottetto):
valore | Descrizione del parametro |
---|---|
0x00 | Il comando è riuscito. |
0x01-0xFF | Il comando non è riuscito. Per informazioni dettagliate, vedere Codici di errore nella specifica Bluetooth Core. |
Subcommand_opcode (1 ottetto):
valore | Descrizione del parametro |
---|---|
0x0A | Sottocomando codice operativo per HCI_VS_MSFT_Avdtp_Suspend. |
HCI_VS_MSFT_Avdtp_Close
Rilascia le risorse di offload AVDTP allocate da HCI_VS_MSFT_Avdtp_Open.
Command_parameters
Avdtp_offload_handle (2 ottetti):
valore | Descrizione del parametro |
---|---|
0xXXXX | Nota: questo valore non è più valido al termine di questo comando. |
Return_parameters
Stato (1 ottetto):
valore | Descrizione del parametro |
---|---|
0x00 | Il comando è riuscito. |
0x01-0xFF | Il comando non è riuscito. Per informazioni dettagliate, vedere Codici di errore nella specifica Bluetooth Core. |
Subcommand_opcode (1 ottetto):
valore | Descrizione del parametro |
---|---|
0x0B | Codice operativo sottocomando per HCI_VS_MSFT_Avdtp_Close. |
Valore | Descrizione del parametro |
---|---|
0x00 | |
0x01 | Il controller ha avviato il monitoraggio del dispositivo specificato da BD_ADDR e Monitor_handle. |
Appendice
Questa sezione contiene esempi e diagrammi di estensione HCI Bluetooth definiti da Microsoft.
Esempio: Criteri di corrispondenza per HCI_VS_MSFT_LE_Monitor_Advertisement
Questo esempio mostra un comando HCI_VS_MSFT_LE_Monitor_Advertisement ricevuto e le valutazioni di tre pacchetti di annunci pubblicitari diversi rispetto ai parametri del comando.
Ricevuto HCI_VS_MSFT_LE_Monitor_Advertisement comando Un comando HCI_VS_MSFT_LE_Monitor_Advertisement viene ricevuto dal controller e contiene i parametri seguenti.
Parametro | Valore | Note |
---|---|---|
Subcommand_opcode | 0x03 | Codice operativo sottocomando per HCI_VS_MSFT_LE_Monitor_Advertisement |
RSSI_threshold_high | 0x01 | 1dB |
RSSI_threshold_low | 0xCE | -50dB |
RSSI_threshold_low_time_interval | 0x05 | 5 secondi |
RSSI_sampling_period | 0xFF | Nessun campionamento |
Condition_type | 0x01 | Condizione |
Condizione | 0x02 | Devono essere abbinati due modelli |
0x03 | Lunghezza del primo modello, incluso il tipo di Active Directory e la posizione iniziale | |
0x01 | Tipo di AD | |
0x00 | Posizione iniziale dopo il tipo di ACTIVE Directory | |
0x01 | Primo modello a cui trovare la corrispondenza | |
0x06 | Lunghezza del secondo modello, incluso il tipo di ACTIVE Directory e la posizione iniziale | |
0xFF | Tipo AD (dati specifici del produttore) | |
0x00 | Posizione iniziale dopo il tipo di ACTIVE Directory | |
0x00 | Secondo modello da associare | |
0x06 | ||
0xFF | ||
0xFF |
Il controller riceve quindi i pacchetti di annunci seguenti.
Pacchetto pubblicitario [A]
0x02 0x01 0x01 0x07 0x09 0x54 0x61 0x62 0x6C 0x65 0x74 0x05 0xFF 0x00 0x06 0xFF 0xFF
Pacchetto pubblicitario [B]
0x02 0x01 0x01 0x07 0x09 0x54 0x61 0x62 0x6C 0x65 0x74 0x04 0xFF 0x00 0x06 0xFF
Pacchetto pubblicitario [C]
0x07 0x09 0x54 0x61 0x62 0x6C 0x65 0x74 0x05 0xFF 0x00 0x06 0xFF 0xFF
Pacchetto pubblicitario [D]
0x02 0x01 0x02 0x05 0xFF 0x00 0x06 0xFF 0x01
Valutazione della corrispondenza per il pacchetto di annunci pubblicitari [A]
Descrizione | valore |
---|---|
Tipo di Active Directory del primo modello di cui trovare la corrispondenza | 0x01 |
Lunghezza del primo modello di cui trovare la corrispondenza | 0x03 - 0x02 = byte 0x01 |
Modello da trovare in corrispondenza della posizione 0x00 per il tipo di Active Directory 0x01 | 0x01 |
Byte in corrispondenza della posizione 0x00 per il tipo di Active Directory 0x01 | 0x01 (MATCH!) |
Tipo di secondo modello di Active Directory a cui trovare la corrispondenza | 0xFF (dati specifici del produttore) |
Lunghezza del secondo modello da associare | 0x06 - 0x02 = byte 0x04 |
Modello da trovare in corrispondenza della posizione 0x00 per il tipo di Active Directory 0xFF | 0x00 0x06 0xFF 0xFF |
Byte in corrispondenza della posizione 0x00 per il tipo di Active Directory 0xFF | 0x00 0x06 0xFF 0xFF (MATCH!) |
Verdetto: PASS (entrambi i modelli corrispondono)
Valutazione della corrispondenza per il pacchetto di annunci pubblicitari [B]
Descrizione | valore |
---|---|
Tipo di Active Directory del primo modello di cui trovare la corrispondenza | 0x01 |
Lunghezza del primo modello di cui trovare la corrispondenza | 0x03 - 0x02 = byte 0x01 |
Modello da trovare in corrispondenza della posizione 0x00 per il tipo di Active Directory 0x01 | 0x01 |
Byte in corrispondenza della posizione 0x00 per il tipo di Active Directory 0x01 | 0x01 (MATCH!) |
Tipo di secondo modello di Active Directory a cui trovare la corrispondenza | 0xFF (dati specifici del produttore) |
Lunghezza del secondo modello da associare | 0x06 - 0x02 = byte 0x04 |
Modello da trovare in corrispondenza della posizione 0x00 per il tipo di Active Directory 0xFF | 0x00 0x06 0xFF 0xFF |
Byte in corrispondenza della posizione 0x00 per il tipo di Active Directory 0xFF | 0x00 0x06 0xFF (nessuna corrispondenza) |
Verdetto: PASS (solo corrispondenze di primo criterio)
Valutazione della corrispondenza per il pacchetto di annunci pubblicitari [C]
Descrizione | valore |
---|---|
Tipo di Active Directory del primo modello di cui trovare la corrispondenza | 0x01 |
Lunghezza del primo modello di cui trovare la corrispondenza | 0x03 - 0x02 = byte 0x01 |
Modello da trovare in corrispondenza della posizione 0x00 per il tipo di Active Directory 0x01 | 0x01 |
Byte in corrispondenza della posizione 0x00 per il tipo di Active Directory 0x01 | Undefined. L'annuncio non dispone di dati con il tipo di ACTIVE Directory 0x01. |
Tipo di secondo modello di Active Directory a cui trovare la corrispondenza | 0xFF (dati specifici del produttore) |
Lunghezza del secondo modello da associare | 0x06 - 0x02 = byte 0x04 |
Modello da trovare in corrispondenza della posizione 0x00 per il tipo di Active Directory 0xFF | 0x00 0x06 0xFF 0xFF |
Byte in corrispondenza della posizione 0x00 per il tipo di Active Directory 0xFF | 0x00 0x06 0xFF 0xFF (MATCH!) |
Verdetto: PASS (solo second pattern matches)
Valutazione della corrispondenza per il pacchetto annuncio [D]
Descrizione | valore |
---|---|
Tipo di Active Directory del primo modello di cui trovare la corrispondenza | 0x01 |
Lunghezza del primo modello di cui trovare la corrispondenza | 0x03 - 0x02 = byte 0x01 |
Modello da trovare in corrispondenza della posizione 0x00 per il tipo di Active Directory 0x01 | 0x01 |
Byte in corrispondenza della posizione 0x00 per il tipo di Active Directory 0x01 | 0x02 (nessuna corrispondenza) |
Tipo di secondo modello di Active Directory a cui trovare la corrispondenza | 0xFF (dati specifici del produttore) |
Lunghezza del secondo modello da associare | 0x06 - 0x02 = byte 0x04 |
Modello da trovare in corrispondenza della posizione 0x00 per il tipo di Active Directory 0xFF | 0x00 0x06 0xFF 0xFF |
Byte in corrispondenza della posizione 0x00 per il tipo di Active Directory 0xFF | 0x00 0x06 0xFF 0x01 (nessuna corrispondenza) |
Verdetto: FAIL (nessuna delle corrispondenze dei criteri)
Esempio: monitoraggio degli annunci pubblicitari
Questo esempio illustra il monitoraggio degli annunci RSSI. Di seguito sono riportati i valori RSSI per gli annunci ricevuti corrispondenti a una condizione specificata.
Ore | RSSI (dB) |
---|---|
1 | -100 |
2 | - 90 |
3 | -5 |
4 | -15 |
5 | -30 |
6 | -15 |
7 | -45 |
8 | -20 |
9 | 65 |
10 | -45 |
11 | -70 |
12 | -85 |
13 | -85 |
14 | -85 |
15 | - 90 |
16 | - 90 |
17 | -70 |
Parametro | Valore |
---|---|
RSSI_threshold_high | -10dB |
RSSI_threshold_low | -80dB |
RSSI_threshold_low_time_interval | 3 secondi |
RSSI_sampling_period | 2 secondi |
L'annuncio RSSI è maggiore di RSSI_threshold_high alla volta 3. Il timer periodico per il campionamento inizia all'ora 3. Ogni 2 secondi, il timer periodico scade e il valore RSSI medio dell'annuncio ricevuto viene propagato allo stack.
Quando il timer periodico scade al momento 5, la media degli annunci RSSI ricevuti durante questo periodo (-23dB) viene propagata allo stack.
Quando il timer periodico scade al momento 13, la media degli annunci RSSI ricevuti durante questo intervallo di tempo è inferiore RSSI_threshold_low (-80dB). La media dell'annuncio RSSI (-85 dB) deve essere propagata all'host.
Quando RSSI_threshold_low_time_interval scade all'istante 15, un annuncio viene propagato all'host con RSSI pari a -85dB. In questo esempio non vengono inviati altri annunci all'host.
Esempio: Monitoraggio degli annunci BAP da un dispositivo
Mentre è stato associato a un acceptor CAP, ma non connesso, un host potrebbe monitorare gli annunci BAP da tale dispositivo.
Parametro | Valore |
---|---|
Subcommand_opcode_v2 | 0x0F |
RSSI_threshold_high | -127 |
RSSI_threshold_low | -127 |
RSSI_threshold_low_time_interval | 0x05 |
RSSI_sampling_period | 0x00 |
Monitor_options | Bit 0 impostato; Bit 1 impostato se il dispositivo ha distribuito un IRK |
Advertisement_report_filtering_options | Bit 0, 1 e 2 set |
Peer_device_address | <address> |
Peer_device_address_type | <tipo di indirizzo> |
Peer_device_IRK | <IRK, se è impostato bit 1> |
Condition_type | 0x01 |
Number_of_patterns | 0x01 |
Pattern_data | 0x04 (lunghezza) 0x16 (Dati del servizio - UUID a 16 bit) 0x00 (byte iniziale) 0x4E (byte basso di ASCS UUID) 0x18 (byte elevato di ASCS UUID) |
Esempio: Monitoraggio degli annunci CAP da un dispositivo
Durante il legame con un comandante CAP, ma non connesso, un host potrebbe monitorare gli annunci CAP da tale dispositivo.
Parametro | Valore |
---|---|
Subcommand_opcode_v2 | 0x0F |
RSSI_threshold_high | -127 |
RSSI_threshold_low | -127 |
RSSI_threshold_low_time_interval | 0x05 |
RSSI_sampling_period | 0x00 |
Monitor_options | Bit 0 impostato; Bit 1 impostato se il dispositivo ha distribuito un IRK |
Advertisement_report_filtering_options | Bit 0, 1 e 2 set |
Peer_device_address | <address> |
Peer_device_address_type | <tipo di indirizzo> |
Peer_device_IRK | <IRK, se è impostato bit 1> |
Condition_type | 0x01 |
Number_of_patterns | 0x01 |
Pattern_data | 0x04 (lunghezza) 0x16 (Dati del servizio - UUID a 16 bit) 0x00 (byte iniziale) 0x53 (byte basso di UUID CAS) 0x18 (byte elevato di CAS UUID) |
Diagramma di flusso: annuncio pubblicitario e filtro accettano filtri elenco
Questo diagramma di flusso fornisce un'implementazione controller di esempio di filtro degli annunci pubblicitari e filtro accetta filtro elenco quando viene ricevuto un annuncio.
Un controller può implementare questa logica in modo diverso, purché l'host riceve una notifica dell'annuncio o HCI_VS_MSFT_LE_Monitor_Device_Event come specificato dal diagramma di flusso.
Diagramma sequenza: Propagare la risposta di analisi associata all'annuncio pubblicitario
Diagramma sequenza: Propagare la risposta di analisi associata all'annuncio pubblicitario
Questo diagramma di sequenza mostra una risposta di analisi propagata associata a un annuncio pubblicitario che soddisfa un filtro pubblicitario quando è abilitata l'analisi attiva. Questo diagramma mostra solo la sequenza prevista di eventi tra controller e host e non mostra gli eventi tra il controller e un determinato dispositivo. Si supponga che ci sia un annuncio A che soddisfi un filtro pubblicitario e un annuncio B che non soddisfa il filtro pubblicitario.