Condividi tramite


Estensioni HCI Bluetooth definite da Microsoft

Il Bluetooth Host-Controller Interface (HCI) 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 di aggiunta al registro 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 dal controller il valore assoluto di RSSI (Received Signal Strength Indication) per una connessione BR/EDR.

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 del comando Parametri restituiti
HCI_VS_MSFT_Leggi_Funzionalità_Supportate Codice di base scelto Subcommand_opcode Stato
Subcommand_opcode,
Funzionalità_supportate
Microsoft_event_prefix_length,
Microsoft_event_prefix

Parametri_di_comando

Subcommand_opcode (1 ottetto):

Valore Descrizione del parametro
0x00 Sottocomando codice operativo per HCI_VS_MSFT_Read_Supported_Features.

Parametri_di_Ritorno

Stato (1 byte):

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 operazione per HCI_VS_MSFT_Read_Supported_Features.

Supported_features (8 byte):

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 promozionale 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 della pubblicità continua degli annunci 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 LE eseguito contemporaneamente con altre attività radiofoniche, usando HCI_VS_MSFT_LE_Monitor_Advertisement [v2].
0xFFFFFFFF FFFFFF00 Bit riservati per una 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 del comando 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
Sottocomando_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 finché 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 nel 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 controller genererà un HCI_VS_MSFT_Rssi_Event periodicamente ogni RSSI_sampling_period. Questo evento deve contenere la media dell'RSSI calcolata 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 Codice operativo sottocomando 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 byte):

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 multipli di 100 millisecondi.
Periodo di tempo = N * 100 millisecondi
Intervallo obbligatorio: da 0x01 a 0xFE
0xFF Valore riservato.

Parametri_di_ritorno

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 di errore Il comando non è riuscito. Per informazioni dettagliate, vedere Codici di errore nella specifica Bluetooth Core.

Subcommand_opcode (1 octet):

Valore Descrizione del parametro
0x01 Codice operativo del 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 di 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 del comando Parametri di ritorno
HCI_VS_MSFT_Cancel_Monitor_Rssi Codice di base scelto Subcommand_opcode,
Gestore_di_Connessione
Stato
Subcommand_opcode

Parametri di comando

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 L'handle per la connessione di cui deve essere annullato il segnale RSSI.

Parametri_di_ritorno

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 richiede che il controller avvii il monitoraggio degli annunci che ricadono 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 quali annunci monitorati portano il controller a generare rapporti sugli annunci.

Comando Codice Parametri del comando 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,
Opzioni_monitor
Opzioni_di_filtro_del_rapporto_pubblicitario
Indirizzo_del_dispositivo_peer
Peer_device_address_type,
Peer_device_IRK,
Tipo_condizione
<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,
Intervallo di tempo soglia bassa RSSI
RSSI_sampling_period,
Tipo_di_condizione
<Parametri della condizione>
Stato
Subcommand_opcode,
Maniglia del monitor

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 controller inizierà a monitorare un annuncio solo quando l'RSSI ricevuto è maggiore o uguale a RSSI_threshold_high per un determinato dispositivo e le opzioni di monitoraggio Monitor_options coincidono (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 controllore trasmette il primo report pubblicitario di un annuncio monitorato all'host solo quando le Advertisement_report_filter_options corrispondono (vedere di seguito).

Le opzioni di monitoraggio per un filtro vengono considerate 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 controllore deve interrompere il monitoraggio per condizione se l'RSSI degli annunci ricevuti è uguale o scende al di sotto di RSSI_threshold_low per 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 controllore supporta almeno 30 istanze di Monitor_handle simultanee, almeno 30 dispositivi monitorati simultaneamente e almeno 20 annunci duplicati tracciati simultaneamente. Il Controller deve anche essere in grado di eseguire una scansione LE continua con un ciclo di lavoro del 10%.

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 Pubblicità Storiche 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 Enable 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 PDU nella catena di annunci. 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 deve propagare 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 di 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, avrà un comportamento uguale a quello 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 non duplicati dallo stesso dispositivo, confronterà ogni pacchetto pubblicitario con le 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 di 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 più elevato, 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.

Tipo di condizione e parametri di 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 includendo il tipo di dati e il byte iniziale del modello.
  • Il tipo di Active Directory specifica il campo Tipo di Active Directory.
  • Inizio del pattern specifica la posizione iniziale dei byte del pattern immediatamente successivo al tipo AD.
  • Il pattern ha una dimensione di (Length - 0x2) ed è il modello da trovare per il tipo di AD specificato all'interno del pacchetto di annuncio a partire 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 limitare il numero di AuxPtrs che seguono, per evitare di seguire catene eccessivamente lunghe di PDU.

  • 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 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 pubblicità host, il controllore cercherà l'UUID del servizio all'interno della parte della sezione AD che si trova nei primi 251 ottetti dei dati di pubblicità host e potrebbe cercare negli eventuali ottetti rimanenti dei dati di pubblicità host. Nota: in base alla frammentazione da parte dell'inserzionista, i primi 251 ottetti dei dati pubblicitari dell'host possono estendersi sugli 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 PDU.

  • 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 bit 1 o bit 3 di Monitor_options e Peer_device_IRK è impostato su un IRK non valido oppure 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
Opzioni_monitor Bit 5 impostato; tutti gli altri bit azzerati
Opzioni filtro rapporti pubblicitari Bit 1 e 2 impostati; tutti gli altri bit cancellati
Peer_device_IRK 0x0000000000000000 0000000000000000
Indirizzo_dispositivo_paritario 0x000000000000
Tipo_indirizzo_dispositivo_pari 0x00

Parametri_comando

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 byte):

Valore Descrizione del parametro
0x0F Codice operativo sottocomando per HCI_VS_MSFT_LE_Monitor_Advertisement [v2].

RSSI_threshold_high (1 byte):

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 byte):

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 byte):

Valore Descrizione del parametro
0x00 Il titolare del trattamento propaga tutti gli annunci ricevuti all'host.
N = 0xXX Intervallo di campionamento in multipli di 100 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 Controller monitora i PDU pubblicitari in cui AdvA o il relativo indirizzo di identità risolto corrisponde a Peer_device_address e Peer_device_address_type e dove TargetA non è presente o, se presente, TargetA è consentito in base alla politica di filtro di scansione, se tali PDU corrispondono alla condizione specificata in Condition_Type.
1 Il controllore monitorerà le PDU pubblicitarie in cui AdvA è risolvibile con Peer_device_IRK e dove TargetA non è presente o, se presente, TargetA è consentito in base alla Politica del filtro di scansione, 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 deve monitorare le PDU pubblicitarie dirette in cui TargetA è consentito in base alla politica del filtro di scansione e dove AdvA o il relativo indirizzo di identità risolto corrisponde a Peer_device_address e Peer_device_address_type. Indipendentemente dal fatto che il PDU corrisponda alla condizione specificata in Condition_Type.
3 Il controllore monitorerà le PDU pubblicitarie dirette in cui il TargetA è consentito in base alla Politica del Filtro di Scansione e dove l'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 Controller monitora i PDUs pubblicitari da qualsiasi AdvA in cui TargetA non è presente o, se presente, TargetA è consentito in base alla Politica del Filtro di Scansione, se tali PDU corrispondono alla condizione specificata in Condition_Type.
Tutti gli altri bit Riservato per uso futuro

Opzioni_di_filtraggio_rapporto_annuncio (1 byte):

Numero di bit Descrizione del parametro
0 Filtra i PDUs 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 o HCI_LE_Extended_Advertising_Report per i PDUs pubblicitari legacy, se tali PDUs corrispondono alle Monitor_options specificate.
2 Il Controller genera eventi di HCI_LE_Extended_Advertising_Report per PDUs di annunci estesi, se tali PDUs corrispondono alle Monitor_options specificate.
3 Il Controller genererà eventi HCI_LE_Advertising_Report, HCI_LE_Directed_Advertising_Report o HCI_LE_Extended_Advertising_Report per le PDU pubblicitarie dirette, se tali PDU corrispondono alle opzioni dello specifico Monitor.
Tutti gli altri bit Riservato per uso futuro

Peer_device_address (6 byte)

Valore Descrizione del parametro
0xXXXXXXXXXXXX Indirizzo pubblico del dispositivo o indirizzo casuale del dispositivo da abbinare.

Peer_device_address_type (1 ottetto):

Valore Descrizione del parametro
0x00 Indirizzo dispositivo pubblico
0x01 Indirizzo casuale del dispositivo
Tutti gli altri valori Riservato per uso futuro

Peer_device_IRK (16 byte):

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 confrontare. Peer_device_address e Peer_device_address_type devono essere popolati.

Tipo_condizione (1 ottetto):

Valore Descrizione del parametro
0x01 La condizione è uno schema che deve essere rispettato nell'annuncio pubblicitario.
0x02 La condizione è del tipo UUID e comprende un UUID.
0x03 La condizione è la risoluzione di un IRK. Escluso se uno dei bit di Monitor_options 0, 1, 2 o 3 è impostato.
0x04 La condizione è un tipo di indirizzo Bluetooth e un indirizzo Bluetooth. Escluso se viene impostato uno dei bit di 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.

Numero_di_modelli (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 schema.
Tipo di dati Tipo di dati della sezione dell'annuncio. I valori sono elencati nel documento Numeri assegnati Bluetooth.
Byte iniziale Posizione iniziale del modello da confrontare per il tipo di dati specificato.
Modello Modello da associare (dimensione della lunghezza - 0x2 byte).

UUID_type (1 byte):

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 byte):

Valore Descrizione del parametro
0xXXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX IRK da usare per risolvere l'indirizzo privato.

Tipo_di_indirizzo (1 octet):

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
0xXXXXXXXXXXXX Indirizzo Bluetooth del dispositivo da monitorare.

Parametri_di_ritorno

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 di errore Il comando non è riuscito. Per informazioni dettagliate, vedere Codici di errore nella specifica Bluetooth Core.

Subcommand_opcode (1 octet):

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 byte):

Valore Descrizione del parametro
0x00 a 0xFF Riferimento 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_Annulla_Monitor_Pubblicità

HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement annulla un comando HCI_VS_MSFT_LE_Monitor_Advertisement rilasciato in precedenza.

Comando Codice Parametri del comando Parametri di ritorno
HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement Codice di base scelto Subcommand_opcode,
Maniglia del monitor
Stato
Subcommand_opcode

Il controller genererà tempestivamente un evento Command Completed in risposta a questo comando.

Parametri_comando

Subcommand_opcode (1 byte):

Valore Descrizione del parametro
0x04 Il codice operativo del sottocomando per HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement.

Connection_Handle (1 byte):

Valore Descrizione del parametro
0xXX La maniglia per il filtro che viene annullato.

Parametri_di_ritorno

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 di errore Il comando non è riuscito. Per informazioni dettagliate, vedere Codici di errore nella specifica Bluetooth Core.

Subcommand_opcode (1 byte)

Valore Descrizione del parametro
0x04 Codice operativo del sottocomando per HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement.

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_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 del comando 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 controllore genera un HCI_VS_MSFT_LE_Monitor_Device_Event con Monitor_state impostato su 1 se viene monitorato un nuovo dispositivo. L'host può emettere HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable con Enable 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 alterna 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.

Parametri_comando

Subcommand_opcode (1 byte):

Valore Descrizione del parametro
0x05 Codice operativo sottocomando per HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable.

Abilita (1 ottetto):

Valore Descrizione del parametro
0x00 Ripristinare il comportamento dell'elenco di accettazione del filtro corrente, ma continuare a monitorare i dispositivi basandosi sulla condizione dei comandi HCI_VS_MSFT_LE_Monitor_Advertisement.
0x01 Abilitare tutti i comandi HCI_VS_MSFT_LE_Monitor_Advertisement rilasciati nel controller.

Parametro_di_ritorno

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 di 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 Codice operativo sottocomando per HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable.

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_Set_Advertisement_Filter_Enable .

HCI_VS_MSFT_Read_Absolute_RSSI

HCI_VS_MSFT_Read_Absolute_RSSI legge il valore dell'Indicatore del Livello del Segnale Ricevuto (RSSI) assoluto per una connessione BR/EDR dal controller.

Comando Codice Parametri del comando 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 ± precisione 6 dB. 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.

Parametri_comando

Subcommand_opcode (1 byte)

Valore Descrizione del parametro
0x06 Codice operativo sottocomando per HCI_VS_MSFT_Read_Absolute_RSSI.

Connection_Handle (2 ottetti):

Valore Descrizione del parametro
0xXXXX L'handle della connessione BR/EDR di cui deve essere letto l'RSSI.

Parametri_di_ritorno

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 octet):

Valore Descrizione del parametro
0x06 Codice operativo del sottocomando per HCI_VS_MSFT_Read_Absolute_RSSI.

Gestione_connessione (2 byte):

Valore Descrizione del parametro
0xXXXX Handle per la connessione BR/EDR di cui è stato letto il 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 genera 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.

Evento Codice evento Codice evento Microsoft Parametri di evento
HCI_VS_MSFT_RSSI_Event 0xFF 0x01 Event_prefix,
Microsoft_event_code,
Stato
Connection_Handle,
Responsabile della Sicurezza dei Sistemi Informativi (RSSI)

Parametri_evento

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 Completato. Il valore RSSI della connessione ha soddisfatto una delle condizioni seguenti. L'RSSI ha raggiunto o superato RSSI_threshold_high.
L'RSSI ha raggiunto o è sceso sotto RSSI_threshold_low in un periodo di 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 Fallimento. 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 byte):

Valore Descrizione del parametro
0xXXXX La maniglia per la connessione di cui si desidera monitorare l'RSSI.

RSSI (1 Ottetto):

Valore Descrizione del parametro
0xXX Il valore RSSI misurato del collegamento 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.

Evento Codice evento Codice evento Microsoft Parametri di evento
HCI_VS_MSFT_LE_Monitor_Device_Event 0xFF 0x02 Event_prefix,
Microsoft_event_code,
Tipo_di_indirizzo
BD_ADDR,
Monitor_handle,
Stato del monitoraggio

Il controller non genera 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 byte):

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 Maniglia per il filtro specificato per il comando HCI_VS_MSFT_LE_Monitor_Advertisement.

Stato_monitoraggio (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 seguenti comandi HCI AVDTP forniscono supporto per il trasferimento A2DP della banda laterale 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 scaricamento 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.

parametri_comando

External_codec_count (1 byte):

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 capacità 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 Il numero di parametri dell'interfaccia audio 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.

Parametri_di_ritorno

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 octet)

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 Il numero di blocchi di Internal_codec_capability che seguono.

Internal_codec_capability (lunghezza variabile):

valore Descrizione del parametro
Blocco di capacità codec Blocco di informazioni sulle funzionalità del codec come descritto in Audio Sideband A2DP Offload. 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 Il numero di parametri Audio_interface 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.

Parametri_comando

Connection_handle (2 ottetti)

valore Descrizione del parametro
0xXXXX Identifica 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 byte)

valore Descrizione del parametro
0xXXXX MTU del canale multimediale L2CAP AVDTP

Configured_codec_capability (lunghezza variabile):

valore Descrizione del parametro
Blocco delle capacità del codec Blocco di informazioni sulle funzionalità codec, come descritto in Audio Sideband A2DP Offload. Descrive il codec configurato per i media AVDTP.

Audio_interface_parameter_count (1 ottet):

valore Descrizione del parametro
0x00-0xFF Il numero di parametri dell'interfaccia audio 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.

Parametri_di_Ritorno

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 Codice operazione del sottocomando per HCI_VS_MSFT_Avdtp_Open.

Avdtp_offload_handle (2 byte):

valore Descrizione del parametro
0xXXXX Identifica la risorsa allocata per il flusso scaricato.

Audio_interface_parameter_count (1 byte):

valore Descrizione del parametro
0x00-0xFF Numero dei parametri dell'interfaccia audio 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 la sessione del flusso.

Questa struttura di dati si ripete per un numero di volte pari a Audio_interface_parameter_count.

HCI_VS_MSFT_Avdtp_Start

Questo comando avvia lo streaming audio dal trasporto audio ai pacchetti AVDTP multimediali 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 frame codificati dal trasporto audio.
  • Assembla i frame codificati in payload multimediali AVDTP
  • Costruisce e trasmette pacchetti multimediali AVDTP contenenti i payload multimediali

Parametri_comando

Avdtp_offload_handle (2 ottetti):

valore Descrizione del parametro
0xXXXX Identifica la risorsa allocata per il flusso trasferito.

Parametri_di_ritorno

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 Codice operativo del sottocomando per HCI_VS_MSFT_Avdtp_Start.

HCI_VS_MSFT_Avdtp_Suspend

Arresta l'attività di streaming avviata da HCI_VS_MSFT_Avdtp_Start.

Parametri_comando

Avdtp_offload_handle (2 byte):

valore Descrizione del parametro
0xXXXX Identifica la risorsa allocata per il flusso scaricato

Parametri_di_ritorno

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 operazione per HCI_VS_MSFT_Avdtp_Suspend.

HCI_VS_MSFT_Avdtp_Close

Rilascia le risorse di offload AVDTP allocate da HCI_VS_MSFT_Avdtp_Open.

Parametri_comando

Avdtp_offload_handle (2 ottoctetti):

valore Descrizione del parametro
0xXXXX Nota: questo valore non è più valido al termine di questo comando.

Parametri_di_ritorno

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 octeto):

valore Descrizione del parametro
0x0B Il codice operativo del 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: Modelli 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 del sottocomando per HCI_VS_MSFT_LE_Monitor_Advertisement
RSSI_threshold_high 0x01 1dB
Soglia_RSSI_bassa 0xCE -50dB
Intervallo_di_tempo_soglia_bassa_RSSI 0x05 5 secondi
Periodo di campionamento RSSI 0xFF Nessun campionamento
Tipo_condizione 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 seguendo il tipo di AD
0x01 Primo modello da abbinare
0x06 Lunghezza del secondo modello, inclusi il tipo di AD e la posizione iniziale
0xFF Tipo AD (dati specifici del produttore)
0x00 Posizione iniziale in base al tipo AD
0x00 Secondo modello da abbinare
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 del primo modello di cui trovare la corrispondenza 0x01
Lunghezza del primo modello da abbinare 0x03 - 0x02 = 0x01 byte
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 da abbinare 0xFF (dati specifici del produttore)
Lunghezza del secondo modello da associare 0x06 - 0x02 = 0x04 byte
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 da abbinare 0x03 - 0x02 = 0x01 byte
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 AD da abbinare 0xFF (dati specifici del produttore)
Lunghezza del secondo modello da associare 0x06 - 0x02 = 0x04 byte
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 da abbinare 0x03 - 0x02 = 0x01 byte
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 Indefinito. L'annuncio non dispone di dati con il tipo di AD 0x01.
Tipo di secondo modello da abbinare 0xFF (dati specifici del produttore)
Lunghezza del secondo modello da associare 0x06 - 0x02 = 0x04 byte
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 (si applica solo il secondo modello)

Valutazione della corrispondenza per il pacchetto pubblicitario [D]

Descrizione Valore
Tipo di primo modello da abbinare 0x01
Lunghezza del primo modello di cui trovare la corrispondenza 0x03 - 0x02 = 0x01 byte
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 abbinare 0x06 - 0x02 = 0x04 byte
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 (nessun modello corrisponde)

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.

Tempo (s) RSSI (dB)
1 -100
2 -90
3 -5
4 -15
5 -30
6 -15
7 -45
8 -20
9 -35
10 -45
11 -70
12 -85
13 -85
14 -85
15 -90
16 -90
17 -70
Parametro Valore
RSSI_threshold_high -10dB
soglia_bassa_RSSI -80dB
Intervallo_di_tempo_soglia_bassa_RSSI 3 secondi
RSSI_sampling_period 2 secondi

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

Il valore RSSI dell'annuncio è maggiore di RSSI_threshold_high al momento 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 all'ora 13, la media degli annunci RSSI ricevuti durante questo intervallo di tempo è inferiore RSSI_threshold_low (-80dB). La media dell'RSSI dell'annuncio (-85 dB) deve essere propagata all'host.

Quando RSSI_threshold_low_time_interval scade all'istante 15, un annuncio viene inviato all'host con un RSSI di -85 dB. In questo esempio non vengono inviati altri annunci all'host.

Esempio: Monitoraggio degli annunci BAP da un dispositivo

Mentre è associato a un CAP Acceptor, ma non connesso, un host potrebbe monitorare gli Annunci BAP da quel dispositivo.

Parametro Valore
Subcommand_opcode_v2 0x0F
Soglia_alta_RSSI -127
Soglia_bassa_RSSI -127
Intervallo_di_tempo_basso_soglia_RSSI 0x05
RSSI_periodo_di_campionamento 0x00
Opzioni di monitoraggio Bit 0 impostato; Bit 1 impostato se il dispositivo ha distribuito un IRK
Opzioni_di_filtraggio_report_pubblicitari Bit 0, 1 e 2 impostati
Indirizzo_dispositivo_peer <indirizzo>
Tipo_indirizzo_dispositivo_peer <tipo di indirizzo>
Peer_device_IRK <IRK, se il bit 1 è impostato>
Tipo_di_condizione 0x01
Numero_di_modelli 0x01
Pattern_data 0x04 (lunghezza)
0x16 (Dati del servizio - UUID a 16 bit)
0x00 (byte iniziale)
0x4E (byte basso di ASCS UUID)
0x18 (byte alto di ASCS UUID)

Esempio: Monitoraggio degli annunci CAP da un dispositivo

Durante un legame con un comandante CAP, pur senza essere connesso, un host potrebbe monitorare gli annunci CAP da quel dispositivo.

Parametro Valore
Subcomando_opcode_v2 0x0F
Soglia_alta_RSSI -127
RSSI_soglia_basso -127
Intervallo_di_tempo_soglia_bassa_RSSI 0x05
Periodo di campionamento RSSI 0x00
Opzioni_di_monitoraggio Bit 0 impostato; Bit 1 impostato se il dispositivo ha distribuito un IRK
Opzioni_di_filtro_raccomandazione_annuncio Bit 0, 1 e 2 impostati
indirizzo_dispositivo_peer <indirizzo>
Peer_device_address_type <tipo di indirizzo>
Peer_device_IRK <IRK, se il bit 1 è impostato>
Tipo_di_condizione 0x01
Numero_di_modelli 0x01
Dati_modello 0x04 (lunghezza)
0x16 (Dati del servizio - UUID a 16 bit)
0x00 (byte iniziale)
0x53 (byte più basso dell'UUID CAS)
0x18 (byte alto di CAS UUID)

Diagramma di flusso: filtraggio di annunci e lista di accettazione

Questo diagramma di flusso fornisce un esempio di implementazione del controller per il filtraggio degli annunci pubblicitari e il filtraggio tramite l'elenco di accettazione dei filtri 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 di sequenza: Propagare la risposta di scansione associata all'annuncio

Diagramma di sequenza: Propagare la risposta di scannerizzazione associata alla pubblicità

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 alla scansione HCI associata all'annuncio.