Condividi tramite


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.

Diagramma dello stato che mostra gli stati di transizione nel controller durante il monitoraggio di 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.

Diagramma dello stato che mostra gli stati di transizione per HCI_VS_MSFT_LE_Monitor_Advertisement.

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.

Diagramma che illustra il layout dei dati della condizione del modello per HCI_VS_MSFT_LE_Monitor_Advertisement.

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

Grafico che mostra il monitoraggio degli annunci pubblicitari con i valori RSSI nel tempo.

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 di flusso che mostra il processo di filtro delle estensioni Microsoft HCI.

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.

Diagramma di sequenza che mostra la propagazione della risposta di analisi HCI associata all'annuncio pubblicitario.