Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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.
Requirements
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.
To specify the vendor specific opcode, use the AddReg directive under DDInstall.HW section in the driver's INF. La sezione di aggiunta al registro deve contenere:
HKR,,"VsMsftOpCode",0x00010001,<Vendor Specific Opcode>
Example:
[radio.NTamd64.HW]
AddReg=radio.NTamd64.HW.AddReg
[radio.NTamd64.HW.AddReg]
HKR,,"VsMsftOpCode",0x00010001,<Vendor Specific Opcode>
Comandi HCI definiti da Microsoft
| HCI Commands | Description |
|---|---|
| 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 | Cancels a previously issued HCI_VS_MSFT_Monitor_Rssi command. |
| 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 | Cancels a previously issued HCI_VS_MSFT_LE_Monitor_Advertisement command. |
| 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.
Controllers must support HCI_VS_MSFT_Read_Supported_Features in order to support any other Microsoft HCI subcommands. 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.
| Command | Code | Command parameters | Return parameters |
|---|---|---|---|
| HCI_VS_MSFT_Read_Supported_Features | Codice di base scelto | Subcommand_opcode | Status, Subcommand_opcode, Supported_features, Microsoft_event_prefix_length, Microsoft_event_prefix |
Command_parameters
Subcommand_opcode (1 octet):
| Value | Parameter description |
|---|---|
| 0x00 | The subcommand opcode for HCI_VS_MSFT_Read_Supported_Features. |
Return_parameters
Status (1 octet):
| Value | Parameter description |
|---|---|
| 0x00 | Il comando è riuscito. |
| 0x01 a 0xFF | Il comando non è riuscito. See Error Codes in the Bluetooth Core specification for details. |
Subcommand_opcode (1 octet):
| Value | Parameter description |
|---|---|
| 0x00 | The subcommand opcode for HCI_VS_MSFT_Read_Supported_Features. |
Supported_features (8 octets):
| Value | Parameter description |
|---|---|
| 0x00000000 00000001 | Il controller supporta la funzionalità di monitoraggio RSSI per le connessioni BR/EDR. In addition, the controller supports HCI_VS_MSFT_Read_Absolute_RSSI to read the absolute RSSI metric of a BR/EDR connection. |
| 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 | Controller supports Continuous Advertising Monitoring of LE advertisements performed concurrently with other radio activities, using HCI_VS_MSFT_LE_Monitor_Advertisement [v1]. |
| 0x00000000 00000040 | Reserved. |
| 0x00000000 00000080 | Il controller supporta l'offload AVDTP e i comandi HCI_VS_MSFT_Avdtp_* descritti in questo documento. |
| 0x00000000 00000100 | Reserved. |
| 0x00000000 00000200 | Reserved. |
| 0x00000000 00000400 | Controller supports HCI_VS_MSFT_LE_Monitor_Advertisement [v2]. Additionally, the Controller supports Continuous Advertising Monitoring of LE advertisements performed concurrently with other radio activities, using HCI_VS_MSFT_LE_Monitor_Advertisement [v2]. |
| 0xFFFFFFFF FFFFFF00 | Bit riservati per una definizione futura. Deve essere zero. |
Microsoft_event_prefix_length (1 octet):
| Value | Parameter description |
|---|---|
| 0x00 a 0x20 | Number of bytes in the Microsoft event prefix field as specified in the returned Microsoft_event_prefix. Questo è il numero di byte di informazioni costanti all'inizio di ogni evento HCI specificato da Microsoft. |
Microsoft_event_prefix (variable length):
| Value | Parameter description |
|---|---|
| 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.
| Command | Code | Command parameters | Return parameters |
|---|---|---|---|
| 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 |
Status, Subcommand_opcode |
The controller shall notify the host of the RSSI value with a periodically generated event (based on the RSSI_sampling_period). The measured link RSSI shall be the absolute receiver signal strength value in dBm for the BR/EDR connection.
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. If the status value is nonzero, the controller shall not generate an HCI_VS_MSFT_Rssi_Event in response to this command.
The controller shall refuse the command if another HCI_VS_MSFT_Monitor_Rssi command with the same Connection_Handle is outstanding, or if the specified connection handle is invalid. 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.
The controller shall generate an HCI_VS_MSFT_Rssi_Event when the received RSSI is greater than or equal to the specified RSSI_threshold_high. After this event has been generated, the controller shall not generate a new HCI_VS_MSFT_Rssi_Event to specify that the RSSI_threshold_high has been exceeded until it generates an HCI_VS_MSFT_Rssi_Event that specifies the RSSI has fallen below RSSI_threshold_low.
The controller shall generate an HCI_VS_MSFT_Rssi_Event when the received RSSI equals or falls below the specified RSSI_threshold_low over the specified RSSI_threshold_low_time_interval. After this event has been generated, the controller shall not generate a new HCI_VS_MSFT_Rssi_Event to specify that the RSSI has fallen below the RSSI_threshold_low until an HCI_VS_MSFT_Rssi_Event event is generated to specify that RSSI_threshold_high has been reached or exceeded.
If the RSSI_sampling_period is between 0x01 and 0xFE, the controller shall generate an HCI_VS_MSFT_Rssi_Event periodically every RSSI_sampling_period. This event shall contain the average of the RSSI calculated over the RSSI_sampling_period. If the RSSI_sampling_period is 0x00 or 0xFF, the controller shall not notify the host periodically with HCI_VS_MSFT_Rssi_Event.
Command_parameters
Subcommand_opcode (1 ottetto):
| Value | Parameter description |
|---|---|
| 0x01 | The subcommand opcode for HCI_VS_MSFT_Monitor_Rssi. |
Connection_Handle (2 ottetti):
| Value | Parameter description |
|---|---|
| 0xXXXX | Handle per la connessione di cui deve essere monitorato RSSI. |
RSSI_threshold_high (1 ottetto):
| Value | Parameter description |
|---|---|
| 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):
| Value | Parameter description |
|---|---|
| 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):
| Value | Parameter description |
|---|---|
| 0x00 | Reserved value. |
| N = 0xXX | The time in seconds over which the RSSI value should be below RSSI_threshold_low before an HCI_VS_MSFT_Rssi_Event is generated. Time period = N * 1 second Intervallo obbligatorio: da 0x01 a 0x3C |
RSSI_sampling_period (1 ottetto):
| Value | Parameter description |
|---|---|
| 0x00 | Reserved value. |
| N = 0xXX | Intervallo di campionamento in multipli di 100 millisecondi. Time period = N * 100 milliseconds Intervallo obbligatorio: da 0x01 a 0xFE |
| 0xFF | Reserved value. |
Return_parameters
Stato (1 ottetto):
| Value | Parameter description |
|---|---|
| 0x00 | Il comando è riuscito. |
| 0x01 a 0xFF | Il comando non è riuscito. See Error Codes in the Bluetooth Core specification for details. |
| 0x07 | Il controller restituirà La capacità di memoria superata se non dispone di memoria sufficiente per elaborare il comando. |
| Error code | Il comando non è riuscito. See Error Codes in the Bluetooth Core specification for details. |
Subcommand_opcode (1 ottetto):
| Value | Parameter description |
|---|---|
| 0x01 | Codice operativo del sottocomando per HCI_VS_MSFT_Monitor_Rssi. |
Eventi generati a meno che non siano stati mascherati
The controller shall promptly generate a Command Complete event when the HCI_VS_MSFT_Monitor_Rssi command is received. If the Command Complete event returns a status of 0, the controller shall generate an HCI_VS_MSFT_Rssi_Event when one of the following conditions occurs.
- The observed RSSI for the device over RSSI_threshold_low_time_interval becomes equal to or less than the specified RSSI_threshold_low value.
- The observed RSSI for the device becomes greater than or equal to the specified RSSI_threshold_high value.
- The RSSI_sampling_period is valid and the sampling period expires.
Il controller deve eseguire tutte le operazioni di pulizia necessarie se la connettività con il dispositivo specificato viene persa. In this case, an HCI_VS_MSFT_Cancel_Monitor_Rssi command isn't sent to the controller.
HCI_VS_MSFT_Cancel_Monitor_Rssi
HCI_VS_MSFT_Cancel_Monitor_Rssi cancels a previously issued HCI_VS_MSFT_Monitor_Rssi command. Il controller genererà tempestivamente un evento Command Completed in risposta a questo comando.
| Command | Code | Command parameters | Return parameters |
|---|---|---|---|
| HCI_VS_MSFT_Cancel_Monitor_Rssi | Codice di base scelto | Subcommand_opcode, Connection_Handle |
Status, Subcommand_opcode |
Command_parameters
Subcommand_opcode (1 ottetto):
| Value | Parameter description |
|---|---|
| 0x02 | The subcommand opcode for HCI_VS_MSFT_Cancel_Monitor_Rssi. |
Connection_Handle (2 ottetti):
| Value | Parameter description |
|---|---|
| 0xXXXX | L'handle per la connessione di cui deve essere annullato il segnale RSSI. |
Return_parameters
Stato (1 ottetto):
| Value | Parameter description |
|---|---|
| 0x00 | Il comando è riuscito. |
| 0x01 a 0xFF | Il comando non è riuscito. See Error Codes in the Bluetooth Core specification for details. |
Subcommand_opcode (1 ottetto):
| Value | Parameter description |
|---|---|
| 0x02 | The subcommand opcode for HCI_VS_MSFT_Cancel_Monitor_Rssi. |
Eventi generati a meno che non siano stati mascherati
The controller shall generate a Command Complete event when the HCI_VS_MSFT_Cancel_Monitor_RSSI command is received.
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.
| Command | Code | Command parameters | Return parameters |
|---|---|---|---|
| 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> |
Status, 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> |
Status, 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. If the controller doesn't support RSSI monitoring for LE Advertisements, it shall ignore the RSSI_threshold_high, RSSI_threshold_low, RSSI_threshold_low_time_interval, and RSSI_sampling_period parameter values.
Questo diagramma di stato mostra gli stati di transizione nel controller quando si monitora RSSI per un annuncio pubblicitario.
The controller shall begin monitoring an advertisement only when the received RSSI is greater than or equal to RSSI_threshold_high for a particular device and the Monitor_options match (see below). The controller shall generate an HCI_VS_MSFT_LE_Monitor_Device_Event with Monitor_state set to 1 and Monitor_handle set to the handle for this Condition, to notify the host that the controller is monitoring this particular device for Condition. Additionally, the Controller shall propagate the first advertisement report of a monitored advertisement to the Host only when the Advertisement_report_filter_options match (see below).
The Monitor_options for a filter are considered a match based on the following logic (in pseudocode):
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)
And for a monitored advertisement, the Advertisement_report_filter_options are considered a match based on the following logic (in pseudocode):
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)
The controller shall stop monitoring for Condition if the RSSI of the received advertisements equals or falls below RSSI_threshold_low over RSSI_threshold_low_interval for the particular device. The controller shall generate an HCI_VS_MSFT_LE_Monitor_Device_Event with Monitor_state set to 0 to notify the host that the controller has stopped monitoring the particular device for the Condition. After the controller specifies the HCI_VS_MSFT_LE_Monitor_Device_Event with Monitor_state set to 0, the controller shall not allow further advertisement packets to flow to the host for the device until the controller has notified the host that the RSSI for the particular device has risen to or above RSSI_threshold_high for the particular device for the Condition.
Additionally, the controller shall generate an HCI_VS_MSFT_LE_Monitor_Device_Event with Monitor_state set to 0 to notify the host that the controller has stopped monitoring the device for the Condition if the specified RSSI_threshold_low_time_interval expires without receiving any advertising packets from the device. Se il controller monitora un dispositivo per una determinata condizione, le istruzioni seguenti sono vere.
If the controller supports the RSSI monitoring of LE extended advertisements without sampling, the controller shall propagate anonymous advertisement packets to the host if the RSSI value for the packet is greater than or equal to RSSI_threshold_high. Anonymous advertisements shall not be tracked and the HCI_VS_MSFT_LE_Monitor_Device_Event event shall not be generated.
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 | Legacy Advertisements | Annunci estesi (non anonimi) | Annunci estesi (anonimo) |
|---|---|---|---|
| 0x00 | The controller shall propagate all received advertisement packets to the host for the device for this Condition unless the controller previously received an HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable command with Enable set to 0x00. The controller shall propagate an advertisement packet to the host even if the received RSSI is less than or equal to RSSI_threshold_low as long as RSSI_threshold_low_time_interval hasn't expired for the particular device for this Condition. Il valore RSSI di questo pacchetto pubblicitario sarà il valore RSSI dell'annuncio ricevuto. | If the controller supports the RSSI monitoring of LE extended advertisements without sampling, same behavior as Legacy Advertisements column except that an advertisement packet is defined as all PDUs in the advertising chain. | If the controller supports the RSSI monitoring of LE extended advertisements without sampling, the controller shall propagate all received advertisement packets to the host for the device for this Condition unless the controller previously received an HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable command with Enable set to 0x00. |
| 0x01 a 0xFE | The controller shall propagate legacy advertisement packets to the host every RSSI_sampling_period specified unless the controller previously received an HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable command with Enable set to 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. It's possible that RSSI_sampling_period is less than RSSI_threshold_low_time_interval and all advertisements received during the RSSI_sampling_period have RSSI below RSSI_threshold_low. Il controller deve comunque propagare l'annuncio con la media del valore RSSI ricevuto durante questo intervallo di campionamento. | If the controller supports the RSSI monitoring of LE extended advertisements without sampling, the controller shall behave as if the RSSI_sampling_period was 0x00. | If the controller supports the RSSI monitoring of LE extended advertisements without sampling, the controller shall behave as if the RSSI_sampling_period was 0x00. |
| 0xFF | The controller shall not allow further advertisement packets to flow to the host for the device for the Condition until the controller has notified the host that the particular device's RSSI has fallen below RSSI_threshold_low for RSSI_threshold_low_time_interval for the particular device for this Condition. This notification is done by generating an HCI_VS_MSFT_LE_Monitor_Device_Event with Monitor_state set to 0. | If the controller supports the RSSI monitoring of LE extended advertisements without sampling, same behavior as Legacy Advertisements column. | If the controller supports the RSSI monitoring of LE extended advertisements without sampling, the controller shall behave as if the RSSI_sampling_period was 0x00. |
If the controller previously received an HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable command with Enable set to 0x00, the sampling period timer shall not be stopped. 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.
If the controller receives an advertisement packet from a device that matches multiple Conditions, then the controller shall generate an HCI_VS_MSFT_LE_Monitor_Device_Event for each Condition that matched, with Monitor_handle set to the Condition that matched.
If the controller is unable to monitor the RSSI values for all devices in range that match the Condition, it keeps monitoring as many devices as it can. La decisione sui dispositivi da monitorare dipenderà dai valori RSSI degli annunci ricevuti. Il controller monitorerà i dispositivi con maggiore potenza del segnale ricevuto.
If the controller has notified the host about a particular device (A) and it's monitoring devices at maximum hardware capacity, and if another device (B) comes into range with a higher RSSI value, then the controller shall notify the host that it has stopped monitoring the device (A) by generating an HCI_VS_MSFT_LE_Monitor_Device_Event with Monitor_state set to 0. The controller shall also generate an HCI_VS_MSFT_LE_Monitor_Device_Event with Monitor_state set to 1 to notify the host that the device (B) is now being monitored.
Tipo di condizione e parametri di condizione
The Condition_type parameter specifies whether the Condition parameter specifies a pattern, UUID, IRK, or BD_ADDR.
If the Condition_type parameter specifies a pattern, the Condition contains two sections that contain the number of patterns present within the Condition, and the pattern data.
Number of Patterns specifica il numero di modelli che devono essere confrontati.
Pattern Data has the following format.
- Length specifies the length of this pattern include the data type and start byte of the pattern.
- AD Type specifies the AD Type field.
- Inizio del pattern specifica la posizione iniziale dei byte del pattern immediatamente successivo al tipo AD.
- Pattern has a size of (Length - 0x2) and is the pattern to be matched for the specified AD Type within the advertisement packet from the specified starting byte.
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. The controller shall propagate a HCI_VS_MSFT_LE_Monitor_Device_Event for each advertising set that matches the pattern even if the advertisement comes from the same device address.
If the Condition_type parameter specifies a UUID, the Condition parameter contains a UUID Type and a 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 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. The controller shall propagate a HCI_VS_MSFT_LE_Monitor_Device_Event for each advertising set that matches the Service UUID even if the advertisement comes from the same device.
If the Condition_type parameter specifies an IRK, the Condition parameter contains the IRK.
If the Condition_type parameter specifies a Bluetooth Address, the Condition parameter contains the address type and 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.
If the controller receives a HCI_VS_MSFT_LE_Monitor_Advertisement command when the filters are disabled (due to a previously received HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable command with Enable set to 0x00), the controller shall accept the command if it can, but set it to a disabled state. 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).
Missing parameters
Quando viene eseguita una versione di questo comando che non include tutti i parametri, è necessario usare quanto segue:
| Parameter | Value |
|---|---|
| Monitor_options | Bit 5 impostato; tutti gli altri bit azzerati |
| 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):
| Value | Parameter description |
|---|---|
| 0x03 | The subcommand opcode for HCI_VS_MSFT_LE_Monitor_Advertisement [v1]. |
Subcommand_opcode_v2 (1 byte):
| Value | Parameter description |
|---|---|
| 0x0F | The subcommand opcode for HCI_VS_MSFT_LE_Monitor_Advertisement [v2]. |
RSSI_threshold_high (1 ottetto):
| Value | Parameter description |
|---|---|
| 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 byte):
| Value | Parameter description |
|---|---|
| 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):
| Value | Parameter description |
|---|---|
| 0x00 | Reserved value. |
| N = 0xXX | The time in seconds over which the RSSI value should be below RSSI_threshold_low before an HCI_VS_MSFT_Rssi_Event is generated Time period = N * 1 second Intervallo obbligatorio: 0x01 da 0x3C. |
RSSI_sampling_period (1 ottetto):
| Value | Parameter description |
|---|---|
| 0x00 | Il titolare del trattamento propaga tutti gli annunci ricevuti all'host. |
| N = 0xXX | Intervallo di campionamento in multipli di 100 millisecondi. Time period = N * 100 milliseconds. Intervallo obbligatorio: da 0x01 a 0xFE |
| 0xFF | Il titolare del trattamento non propaga alcun annuncio ricevuto all'host. |
Monitor_options (1 ottetto):
| Bit number | Parameter description |
|---|---|
| 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):
| Bit number | Parameter description |
|---|---|
| 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)
| Value | Parameter description |
|---|---|
| 0xXXXXXXXXXXXX | Indirizzo pubblico del dispositivo o indirizzo casuale del dispositivo da abbinare. |
Peer_device_address_type (1 ottetto):
| Value | Parameter description |
|---|---|
| 0x00 | Indirizzo dispositivo pubblico |
| 0x01 | Indirizzo casuale del dispositivo |
| Tutti gli altri valori | Riservato per uso futuro |
Peer_device_IRK (16 byte):
| Value | Parameter description |
|---|---|
| 0x0000000000000000 0000000000000000 | Invalid IRK. Non deve essere il valore quando viene impostato Monitor_options bit 1 o quando viene impostato Monitor_options bit 3. |
| 0xXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX | IRK del dispositivo da confrontare. Peer_device_address e Peer_device_address_type devono essere popolati. |
Tipo_condizione (1 ottetto):
| Value | Parameter description |
|---|---|
| 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 uno dei bit di Monitor_options 0, 1, 2 o 3 è impostato. |
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):
| Value | Parameter description |
|---|---|
| 0xXX | Numero di modelli specificati all'interno del parametro Pattern_data. |
Pattern_data (>3 ottetti):
| Value | Parameter description |
|---|---|
| Length | Lunghezza di questo schema. |
| Data type | Tipo di dati della sezione dell'annuncio. I valori sono elencati nel documento Numeri assegnati Bluetooth. |
| Start byte | Posizione iniziale del modello da confrontare per il tipo di dati specificato. |
| Pattern | Modello da associare (dimensione della lunghezza - 0x2 byte). |
UUID_type (1 byte):
| Value | Parameter description |
|---|---|
| 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):
| Value | Parameter description |
|---|---|
| 0xXXXX | 2 byte se UUID_type è 0x01. 4 byte se UUID_type è 0x02. 16 byte se UUID_type è 0x03. |
IRK (16 byte):
| Value | Parameter description |
|---|---|
| 0xXXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX | IRK da usare per risolvere l'indirizzo privato. |
Tipo_di_indirizzo (1 octet):
| Value | Parameter description |
|---|---|
| 0x00 | Indirizzo del dispositivo pubblico. |
| 0x01 | Indirizzo casuale del dispositivo. |
| 0x02 a 0xFF | Valori riservati per uso futuro. |
BD_ADDR (6 ottetti):
| Value | Parameter description |
|---|---|
| 0xXXXXXXXXXXXX | Indirizzo Bluetooth del dispositivo da monitorare. |
Return_parameters
Stato (1 ottetto):
| Value | Parameter description |
|---|---|
| 0x00 | Il comando è riuscito. |
| 0x07 | Il controller restituirà La capacità di memoria superata se non dispone di memoria sufficiente per elaborare il comando. |
| Error code | Il comando non è riuscito. See Error Codes in the Bluetooth Core specification for details. |
Subcommand_opcode (1 ottetto):
| Value | Parameter description |
|---|---|
| 0x03 o 0x0F | The subcommand opcode for HCI_VS_MSFT_LE_Monitor_Advertisement [v1] or HCI_VS_MSFT_LE_Monitor_Advertisement [v2], depending on which command was submitted. |
Monitor_handle (1 byte):
| Value | Parameter description |
|---|---|
| 0x00 a 0xFF | Riferimento per questa regola. This handle is used as a parameter for HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement to cancel monitoring the advertisement. Questo parametro è valido solo se Status è 0x00. |
Eventi generati a meno che non siano stati mascherati
When the HCI_VS_MSFT_LE_Monitor_Advertisement command is received, the controller shall generate a Command Complete event.
HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement
HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement cancels a previously issued HCI_VS_MSFT_LE_Monitor_Advertisement command.
| Command | Code | Command parameters | Return parameters |
|---|---|---|---|
| HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement | Codice di base scelto | Subcommand_opcode, Monitor_handle |
Status, Subcommand_opcode |
Il controller genererà tempestivamente un evento Command Completed in risposta a questo comando.
Command_parameters
Subcommand_opcode (1 ottetto):
| Value | Parameter description |
|---|---|
| 0x04 | The subcommand opcode for HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement. |
Connection_Handle (1 byte):
| Value | Parameter description |
|---|---|
| 0xXX | La maniglia per il filtro che viene annullato. |
Return_parameters
Stato (1 ottetto):
| Value | Parameter description |
|---|---|
| 0x00 | Il comando è riuscito. |
| 0x07 | Il controller restituirà La capacità di memoria superata se non dispone di memoria sufficiente per elaborare il comando. |
| Error code | Il comando non è riuscito. See Error Codes in the Bluetooth Core specification for details. |
Subcommand_opcode (1 ottetto):
| Value | Parameter description |
|---|---|
| 0x04 | The subcommand opcode for HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement. |
Eventi generati a meno che non siano stati mascherati
The controller shall generate a Command Complete event when the HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement command is received.
HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable
HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable imposta lo stato dei filtri degli annunci pubblicitari.
| Command | Code | Command parameters | Return parameters |
|---|---|---|---|
| HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable | Codice di base scelto | Subcommand_opcode, Enable |
Status, Subcommand_opcode |
If Enable is set to 0x00, the controller shall propagate received advertisements to the host based on existing filter accept list settings. The controller shall continue monitoring the devices that are currently being monitored and generate an HCI_VS_MSFT_LE_Monitor_Device_Event with Monitor_state set to 0 if the device is no longer being monitored. The controller shall generate an HCI_VS_MSFT_LE_Monitor_Device_Event with Monitor_state set to 1 if a new device is being monitored. The host may issue HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable with Enable set to 0x01 to reenable all the filter conditions.
If Enable is set to 0x01, this command enables all filters that were set with a previously issued HCI_VS_MSFT_LE_Monitor_Advertisement command. Il controller rifiuterà un comando HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable se non alterna lo stato del filtro.
- The controller shall reject an HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable command with Enable set to 0x01 if it previously received an HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable command with Enable set to 0x01.
- The controller shall reject the HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable command with Enable set to 0x00 if it previously received an HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable command with Enable set to 0x00.
Lo stato predefinito del filtro di annuncio deve essere disattivato. This state is equivalent to the controller previously receiving a HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable command with Enable set to 0x00. Il controller genererà tempestivamente un evento Command Completed in risposta a questo comando.
Command_parameters
Subcommand_opcode (1 ottetto):
| Value | Parameter description |
|---|---|
| 0x05 | The subcommand opcode for HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable. |
Abilita (1 ottetto):
| Value | Parameter description |
|---|---|
| 0x00 | Revert to current filter accept list behavior, but continue monitoring devices based on the Condition from HCI_VS_MSFT_LE_Monitor_Advertisement commands. |
| 0x01 | Enable all issued HCI_VS_MSFT_LE_Monitor_Advertisement commands on the controller. |
Return_parameter
Stato (1 ottetto):
| Value | Parameter description |
|---|---|
| 0x00 | Il comando è riuscito. |
| 0x0C | The controller shall return Command Disallowed if the controller rejected the command because it previously saw an HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable command with Enable set to the same value as this command. |
| Error code | Il comando non è riuscito. See Error Codes in the Bluetooth Core specification for details. |
Subcommand_opcode (1 ottetto):
| Value | Parameter description |
|---|---|
| 0x05 | The subcommand opcode for HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable. |
Eventi generati a meno che non siano stati mascherati
The controller shall generate a Command Complete event when the HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable command is received.
HCI_VS_MSFT_Read_Absolute_RSSI
HCI_VS_MSFT_Read_Absolute_RSSI reads the absolute Received Signal Strength Indication (RSSI) value for a BR/EDR connection from the controller.
| Command | Code | Command parameters | Return parameters |
|---|---|---|---|
| HCI_VS_MSFT_Read_Absolute_RSSI | Codice di base scelto | Subcommand_opcode, Connection_Handle |
Status, 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. The RSSI metric is the absolute receiver signal strength in dBm to ± 6 dB accuracy. 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):
| Value | Parameter description |
|---|---|
| 0x06 | Codice operativo sottocomando per HCI_VS_MSFT_Read_Absolute_RSSI. |
Connection_Handle (2 ottetti):
| Value | Parameter description |
|---|---|
| 0xXXXX | L'handle della connessione BR/EDR di cui deve essere letto l'RSSI. |
Return_parameters
Stato (1 ottetto):
| Value | Parameter description |
|---|---|
| 0x00 | Il comando è riuscito. |
| 0x01 a 0xFF | Il comando non è riuscito. See Error Codes in the Bluetooth Core specification for details. |
Subcommand_opcode (1 ottetto):
| Value | Parameter description |
|---|---|
| 0x06 | The subcommand opcode for HCI_VS_MSFT_Read_Absolute_RSSI. |
Connection_Handle (2 ottetti):
| Value | Parameter description |
|---|---|
| 0xXXXX | Handle per la connessione BR/EDR di cui è stato letto il RSSI. |
RSSI (1 ottetto):
| Value | Parameter description |
|---|---|
| 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
The controller shall generate a Command Complete event when the HCI_VS_MSFT_Read_Absolute_RSSI command has completed.
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. The length and value of the constant string are defined by the controller implementer and returned in response to HCI_VS_MSFT_Read_Supported_Features.
| HCI event | Description |
|---|---|
| HCI_VS_MSFT_Rssi_Event | HCI_VS_MSFT_RSSI_Event indicates that an HCI_VS_MSFT_Monitor_Rssi command has completed. |
| 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 indicates that an HCI_VS_MSFT_Monitor_Rssi command has completed. If the Status parameter is zero, the command completed because the RSSI value for the remote device changed to a value outside of the specified range. If the Status parameter is nonzero, the command completed because the RSSI value of the connection can no longer be monitored.
| Event | Event Code | Codice evento Microsoft | Event parameters |
|---|---|---|---|
| HCI_VS_MSFT_RSSI_Event | 0xFF | 0x01 | Event_prefix, Microsoft_event_code, Status, Connection_Handle, RSSI |
Event_parameters
Event_prefix (dimensione variabile):
| Value | Parameter description |
|---|---|
| Event prefix | Prefisso dell'evento che contrassegna questo evento come definito da Microsoft. The size and value are as returned by the HCI_VS_MSFT_Read_Supported_Features command. |
Microsoft_event_code (1 ottetto):
| Value | Parameter description |
|---|---|
| 0x01 | The event code for HCI_VS_MSFT_RSSI_Event. |
Stato (1 ottetto):
| Value | Parameter description |
|---|---|
| 0x00 | Success. Il valore RSSI della connessione ha soddisfatto una delle condizioni seguenti. The RSSI reached or exceeded RSSI_threshold_high. The RSSI reached or dropped below RSSI_threshold_low over RSSI_threshold_low_time_interval seconds. The RSSI_sampling_period has expired and this event was generated to notify the host of the RSSI value. |
| 0x01 a 0xFF | Failure. 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):
| Value | Parameter description |
|---|---|
| 0xXXXX | La maniglia per la connessione di cui si desidera monitorare l'RSSI. |
RSSI (1 ottetto):
| Value | Parameter description |
|---|---|
| 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.
If the Monitor_state parameter value is 1, the controller started monitoring the Bluetooth device with the specified BD_ADDR. If the Monitor_state parameter value is 0, the controller stopped monitoring the Bluetooth device with the specified BD_ADDR.
| Event | Event Code | Codice evento Microsoft | Event parameters |
|---|---|---|---|
| HCI_VS_MSFT_LE_Monitor_Device_Event | 0xFF | 0x02 | Event_prefix, Microsoft_event_code, Address_type, BD_ADDR, Monitor_handle, Monitor_state |
The controller shall not generate an HCI_VS_MSFT_LE_Monitor_Device_Event with the Monitor_state parameter set to 0 if it hasn't already generated an HCI_VS_MSFT_LE_Monitor_Device_Event with Monitor_state set to 1.
Event_parameters
Event_prefix (dimensione variabile):
| Value | Parameter description |
|---|---|
| Event prefix | Prefisso dell'evento che contrassegna questo evento come definito da Microsoft. The size and value are as returned by the HCI_VS_MSFT_Read_Supported_Features command. |
Microsoft_event_code (1 ottetto):
| Value | Parameter description |
|---|---|
| 0x02 | The event code for HCI_VS_MSFT_LE_Monitor_Device_Event. |
Tipo_di_indirizzo (1 octet):
| Value | Parameter description |
|---|---|
| 0x00 | Indirizzo del dispositivo pubblico. |
| 0x01 | Indirizzo casuale del dispositivo. |
| 0x02 a 0xFF | Valori riservati per uso futuro. |
BD_ADDR (6 ottetti):
| Value | Parameter description |
|---|---|
| 0xXXXXXXXXXXXX | Indirizzo Bluetooth del dispositivo. |
Monitor_handle (1 byte):
| Value | Parameter description |
|---|---|
| 0xXX | The handle to the filter that was specified for the HCI_VS_MSFT_LE_Monitor_Advertisement command. |
Stato_monitoraggio (1 ottetto):
| Value | Parameter description |
|---|---|
| 0x00 | The controller stopped monitoring the device specified by BD_ADDR and Monitor_handle. |
| 0x01 | The controller started monitoring the device specified by BD_ADDR and 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 | Description |
|---|---|
| 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.
Command_parameters
External_codec_count (1 byte):
| Value | Parameter description |
|---|---|
| 0x00-0xFF | Numero di blocchi di Codec_capability che seguono. |
External_codec_capability (lunghezza variabile)
| Value | Parameter description |
|---|---|
| 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. |
This data structure repeats External_codec_count times.
Audio_interface_parameter_count (1 ottetto):
| Value | Parameter description |
|---|---|
| 0x00-0xFF | Il numero di parametri dell'interfaccia audio che seguono. |
Audio_interface_parameter (lunghezza variabile)
| Value | Parameter description |
|---|---|
| Parametro dell'interfaccia audio | Parametro di interfaccia audio come descritto in precedenza, impostato dal dispositivo connesso all'interfaccia audio. |
This data structure repeats Audio_interface_parameter_count times.
Return_parameters
Stato (1 ottetto):
| Value | Parameter description |
|---|---|
| 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)
| Value | Parameter description |
|---|---|
| 0x07 | Codice operativo sottocomando per HCI_VS_MSFT_Avdtp_Capabilities_Configuration. |
Internal_codec_count (1 ottetto):
| Value | Parameter description |
|---|---|
| 0x00-0xFF | Il numero di blocchi di Internal_codec_capability che seguono. |
Internal_codec_capability (lunghezza variabile):
| Value | Parameter description |
|---|---|
| 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):
| Value | Parameter description |
|---|---|
| 0x00-0xFF | Il numero di parametri dell'interfaccia audio che seguono. |
Audio_interface_parameter (lunghezza variabile)
| Value | Parameter description |
|---|---|
| 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)
| Value | Parameter description |
|---|---|
| 0xXXXX | Identifica il canale L2CAP multimediale AVDTP connesso al dispositivo remoto. |
L2cap_destination_cid (2 ottetti)
| Value | Parameter description |
|---|---|
| 0xXXXX | CID di destinazione L2CAP del canale multimediale AVDTP |
L2cap_mtu (2 byte)
| Value | Parameter description |
|---|---|
| 0xXXXX | MTU del canale multimediale L2CAP AVDTP |
Configured_codec_capability (lunghezza variabile):
| Value | Parameter description |
|---|---|
| Blocco di capacità codec | Blocco di informazioni sulle funzionalità del codec come descritto in Audio Sideband A2DP Offload. Descrive il codec configurato per i media AVDTP. |
Audio_interface_parameter_count (1 ottetto):
| Value | Parameter description |
|---|---|
| 0x00-0xFF | Il numero di parametri dell'interfaccia audio che seguono. |
Audio_interface_parameter (lunghezza variabile)
| Value | Parameter description |
|---|---|
| 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):
| Value | Parameter description |
|---|---|
| 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):
| Value | Parameter description |
|---|---|
| 0x08 | Codice operazione del sottocomando per HCI_VS_MSFT_Avdtp_Open. |
Avdtp_offload_handle (2 byte):
| Value | Parameter description |
|---|---|
| 0xXXXX | Identifica la risorsa allocata per il flusso scaricato. |
Audio_interface_parameter_count (1 ottetto):
| Value | Parameter description |
|---|---|
| 0x00-0xFF | Il numero di parametri dell'interfaccia audio che seguono. |
Audio_interface_parameter (lunghezza variabile)
| Value | Parameter description |
|---|---|
| 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 Audio_interface_parameter_count volte.
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
Command_parameters
Avdtp_offload_handle (2 byte):
| Value | Parameter description |
|---|---|
| 0xXXXX | Identifica la risorsa allocata per il flusso scaricato. |
Return_parameters
Stato (1 ottetto):
| Value | Parameter description |
|---|---|
| 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):
| Value | Parameter description |
|---|---|
| 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.
Command_parameters
Avdtp_offload_handle (2 byte):
| Value | Parameter description |
|---|---|
| 0xXXXX | Identifica la risorsa allocata per il flusso scaricato |
Return_parameters
Stato (1 ottetto):
| Value | Parameter description |
|---|---|
| 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):
| Value | Parameter description |
|---|---|
| 0x0A | Sottocomando codice operazione per HCI_VS_MSFT_Avdtp_Suspend. |
HCI_VS_MSFT_Avdtp_Close
Rilascia le risorse di scaricamento AVDTP allocate da HCI_VS_MSFT_Avdtp_Open.
Command_parameters
Avdtp_offload_handle (2 byte):
| Value | Parameter description |
|---|---|
| 0xXXXX | Nota: questo valore non è più valido al termine di questo comando. |
Return_parameters
Stato (1 ottetto):
| Value | Parameter description |
|---|---|
| 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):
| Value | Parameter description |
|---|---|
| 0x0B | Il codice operativo del sottocomando per HCI_VS_MSFT_Avdtp_Close. |
| Value | Parameter description |
|---|---|
| 0x00 | |
| 0x01 | The controller started monitoring the device specified by BD_ADDR and Monitor_handle. |
Appendix
Questa sezione contiene esempi e diagrammi di estensione HCI Bluetooth definiti da Microsoft.
Esempio: Modelli di corrispondenza per HCI_VS_MSFT_LE_Monitor_Advertisement
This example shows a received HCI_VS_MSFT_LE_Monitor_Advertisement command and the evaluations of three different advertisement packets against the command parameters.
Received HCI_VS_MSFT_LE_Monitor_Advertisement command An HCI_VS_MSFT_LE_Monitor_Advertisement command is received by the controller and contains the following parameters.
| Parameter | Value | Notes |
|---|---|---|
| Subcommand_opcode | 0x03 | Subcommand opcode for HCI_VS_MSFT_LE_Monitor_Advertisement |
| RSSI_threshold_high | 0x01 | 1dB |
| RSSI_threshold_low | 0xCE | -50dB |
| RSSI_threshold_low_time_interval | 0x05 | 5 seconds |
| RSSI_sampling_period | 0xFF | No sampling |
| Condition_type | 0x01 | Condition |
| Condition | 0x02 | Devono essere abbinati due modelli |
| 0x03 | Lunghezza del primo modello, incluso il tipo di Active Directory e la posizione iniziale | |
| 0x01 | AD Type | |
| 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 seguendo il tipo di 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 0xFFPacchetto pubblicitario [B]
0x02 0x01 0x01 0x07 0x09 0x54 0x61 0x62 0x6C 0x65 0x74 0x04 0xFF 0x00 0x06 0xFFPacchetto pubblicitario [C]
0x07 0x09 0x54 0x61 0x62 0x6C 0x65 0x74 0x05 0xFF 0x00 0x06 0xFF 0xFFPacchetto pubblicitario [D]
0x02 0x01 0x02 0x05 0xFF 0x00 0x06 0xFF 0x01
Valutazione della corrispondenza per il pacchetto di annunci pubblicitari [A]
| Description | Value |
|---|---|
| Tipo del primo modello di cui trovare la corrispondenza | 0x01 |
| Lunghezza del primo modello da abbinare | 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 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!) |
Verdict: PASS (both patterns match)
Valutazione della corrispondenza per il pacchetto di annunci pubblicitari [B]
| Description | Value |
|---|---|
| Tipo del primo modello di cui trovare la corrispondenza | 0x01 |
| Lunghezza del primo modello da abbinare | 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 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 (no match) |
Verdict: PASS (only first pattern matches)
Valutazione della corrispondenza per il pacchetto di annunci pubblicitari [C]
| Description | Value |
|---|---|
| Tipo del primo modello di cui trovare la corrispondenza | 0x01 |
| Lunghezza del primo modello da abbinare | 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 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!) |
Verdict: PASS (only second pattern matches)
Valutazione della corrispondenza per il pacchetto pubblicitario [D]
| Description | Value |
|---|---|
| Tipo del primo modello di cui trovare la corrispondenza | 0x01 |
| Lunghezza del primo modello da abbinare | 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 (no 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 0x01 (no match) |
Verdict: FAIL (neither pattern matches)
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.
| Time (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 |
| Parameter | Value |
|---|---|
| RSSI_threshold_high | -10dB |
| RSSI_threshold_low | -80dB |
| RSSI_threshold_low_time_interval | 3 seconds |
| RSSI_sampling_period | 2 seconds |
The advertisement RSSI is greater than RSSI_threshold_high at time 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.
When the periodic timer expires at time 13, the average of the advertisement RSSIs received during this timeframe is below RSSI_threshold_low (-80dB). La media dell'RSSI dell'annuncio (-85 dB) deve essere propagata all'host.
When RSSI_threshold_low_time_interval expires at instant 15, an advertisement is propagated to the host with RSSI of -85dB. 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.
| Parameter | Value |
|---|---|
| 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 impostati |
| Peer_device_address | <indirizzo> |
| Peer_device_address_type | <tipo di indirizzo> |
| Peer_device_IRK | <IRK, se il bit 1 è impostato> |
| Condition_type | 0x01 |
| Number_of_patterns | 0x01 |
| Pattern_data | 0x04 (length) 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.
| Parameter | Value |
|---|---|
| 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 impostati |
| Peer_device_address | <indirizzo> |
| Peer_device_address_type | <tipo di indirizzo> |
| Peer_device_IRK | <IRK, se il bit 1 è impostato> |
| Condition_type | 0x01 |
| Number_of_patterns | 0x01 |
| Pattern_data | 0x04 (length) 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.
A controller can implement this logic differently, as long as the host is notified of the advertisement or HCI_VS_MSFT_LE_Monitor_Device_Event as specified by the flowchart.
Diagramma di sequenza: Propagare la risposta di scansione associata all'annuncio
Diagramma di sequenza: Propagare la risposta di scansione associata all'annuncio
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. Assume that there's an advertisement A that satisfies an advertisement filter, and an advertisement B that doesn't satisfy the advertisement filter.