Share via


Von Microsoft definierte Bluetooth HCI-Erweiterungen

Die Bluetooth Host-Controller Interface (HCI) gibt alle Interaktionen zwischen einem Host und einem Bluetooth-Funkcontroller an. Bluetooth-Spezifikationen ermöglichen vom Hersteller definierte HCI-Befehle und -Ereignisse, die nicht standardisierte Interaktion zwischen Hosts und Controllern zu ermöglichen. Microsoft definiert herstellerspezifische HCI-Befehle und -Ereignisse, die von Windows genutzt werden. Bluetooth-Controllerimplementierer können diese Erweiterungen verwenden, um spezielle Features zu implementieren.

Anforderungen

Bluetooth HCI-Befehle werden durch einen 16-Bit-Befehlscode identifiziert. Die Bluetooth-organization definiert Werte im Bereich, der bis 0xFBFF 0x0000. Anbieter definieren Werte im Bereich 0xFC00 bis 0xFFFF, sodass 1024 verschiedene vom Anbieter zugewiesene Befehlscodes möglich sind.

Der Anbieter muss den Wert des von Microsoft definierten Befehlscodes auswählen. Microsoft kann keinen Befehlscode auswählen und davon ausgehen, dass kein anderer Anbieter den Code für einen konfliktierenden Zweck verwendet. Es ist unsicher, einen herstellerspezifischen Befehl auszuweisen, und es ist davon abhängig, dass der Controller den Befehl ablehnt, wenn er ihn nicht versteht. Der Controller könnte den Befehl als destruktiver Vorgang interpretieren, z. B. das Aktualisieren der Firmware des Controllers.

Der Anbieter muss den ausgewählten Wert über eine andere Methode als den Controller kommunizieren. Microsoft gibt nicht an, wie der ausgewählte Code abgerufen werden soll.

Benachrichtigen des Windows Bluetooth-Stapels über den herstellerspezifischen Befehlscode

Der Windows Bluetooth-Stapel liest den herstellerspezifischen Befehlscode aus einem Registrierungsschlüssel, VsMsftOpCode.

Der VsMsftOpCode Registrierungsschlüssel weist einen Typ von REG_DWORD auf, und die Schlüsseldaten sind der anbieterspezifische Opcode.

Um den anbieterspezifischen Opcode anzugeben, verwenden Sie die AddReg Anweisung im Abschnitt DDInstall.HW im INF des Treibers. Der Abschnitt "Registrierung hinzufügen" sollte Folgendes enthalten:

HKR,,"VsMsftOpCode",0x00010001,<Vendor Specific Opcode>

Beispiel:

[radio.NTamd64.HW]
AddReg=radio.NTamd64.HW.AddReg
[radio.NTamd64.HW.AddReg]
HKR,,"VsMsftOpCode",0x00010001,<Vendor Specific Opcode>

Von Microsoft definierte HCI-Befehle

HCI-Befehle Beschreibung
HCI_VS_MSFT_Read_Supported_Features Stellt eine Bitmap bereit, die beschreibt, welche von Microsoft definierten Features der Controller unterstützt, und gibt das Präfix für von Microsoft definierte Ereignisse an, die vom Controller zurückgegeben werden.
HCI_VS_MSFT_Monitor_Rssi Fordert an, dass der Controller mit der Überwachung des gemessenen Link-RSSI für eine angegebene Verbindung beginnt und ein Ereignis generiert, wenn der RSSI für den gemessenen Link der Verbindung außerhalb der angegebenen Grenzen verläuft.
HCI_VS_MSFT_Cancel_Monitor_Rssi Bricht einen zuvor ausgestellten HCI_VS_MSFT_Monitor_Rssi-Befehl ab.
HCI_VS_MSFT_LE_Monitor_Advertisement Fordert an, dass der Controller mit der Überwachung für Werbung beginnt, die innerhalb des angegebenen RSSI-Bereichs liegen und auch andere Anforderungen erfüllen.
HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement Bricht einen zuvor ausgestellten HCI_VS_MSFT_LE_Monitor_Advertisement-Befehl ab.
HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable Legt den Status der Ankündigungsfilter fest.
HCI_VS_MSFT_Read_Absolute_RSSI Liest den absoluten RSSI-Wert (Received Signal Strength Indication) für eine BR/EDR-Verbindung vom Controller.

Von Microsoft definierte HCI-Befehle und Unterbefehle

Der Controller weiß, dass es nur einen Microsoft-spezifischen HCI-Befehl gibt. Der Microsoft-spezifische Befehlssatz wird mithilfe von opcode erweitert. Der erste Befehlsparameter für den von Microsoft definierten HCI-Befehl ist ein Opcode, der den Unterbefehl angibt.

Controller müssen HCI_VS_MSFT_Read_Supported_Features unterstützen, um andere Microsoft HCI-Unterbefehle zu unterstützen. Die Unterstützung für andere Befehle ist optional und hängt von den von HCI_VS_MSFT_Read_Supported_Features zurückgegebenen Werten ab. Windows sendet keine von Microsoft definierten Unterbefehle, es sei denn, der Controller gibt die Unterstützung für den Unterbefehl durch eine Antwort auf HCI_VS_MSFT_Read_Supported_Features an.

HCI_VS_MSFT_Read_Supported_Features

HCI_VS_MSFT_Read_Supported_Features stellt eine Bitmap bereit, die beschreibt, welche von Microsoft definierten Features der Controller unterstützt, und gibt das Präfix für von Microsoft definierte Ereignisse an, die vom Controller zurückgegeben werden.

Der Controller muss diesen Befehl immer sofort mit einem Command Completed-Ereignis abschließen.

Get-Help Code Befehlsparameter Rückgabeparameter
HCI_VS_MSFT_Read_Supported_Features Ausgewählter Basiscode Subcommand_opcode Status
Subcommand_opcode
Supported_features
Microsoft_event_prefix_length
Microsoft_event_prefix

Command_parameters

Subcommand_opcode (1 Oktett):

Wert Parameterbeschreibung
0x00 Der Unterbefehl opcode für HCI_VS_MSFT_Read_Supported_Features.

Return_parameters

Status (1 Oktett):

Wert Parameterbeschreibung
0x00 Der Befehl war erfolgreich.
0x01 zu 0xFF Fehler bei Befehl. Weitere Informationen finden Sie unter Fehlercodes in der Bluetooth Core-Spezifikation.

Subcommand_opcode (1 Oktett):

Wert Parameterbeschreibung
0x00 Der Unterbefehl opcode für HCI_VS_MSFT_Read_Supported_Features.

Supported_features (8 Oktette):

Wert Parameterbeschreibung
0x00000000 00000001 Der Controller unterstützt die RSSI-Überwachungsfunktion für BR/EDR-Verbindungen. Darüber hinaus unterstützt der Controller HCI_VS_MSFT_Read_Absolute_RSSI zum Lesen der absoluten RSSI-Metrik einer BR/EDR-Verbindung.
0x00000000 00000002 Der Controller unterstützt die RSSI-Überwachungsfunktion für LE-Verbindungen.
0x00000000 00000004 Der Controller unterstützt die RSSI-Überwachung von LE-Legacy-Ankündigungen.
0x00000000 00000008 Der Controller unterstützt die Werbeüberwachung von älteren LE-Ankündigungen.
0x00000000 00000010 Der Controller unterstützt die Überprüfung der Gültigkeit der öffentlichen X- und Y-Koordinaten auf der Kurve während des Kopplungsprozesses "Secure Simple" für P-192 und P-256.
Weitere Informationen finden Sie unter Bluetooth Core Specification Erratum 10734.
0x00000000 00000020 Der Controller unterstützt die kontinuierliche Werbeüberwachung von LE-Werbung, die gleichzeitig mit anderen Funkaktivitäten unter Verwendung von HCI_VS_MSFT_LE_Monitor_Advertisement [v1] ausgeführt wird.
0x00000000 00000040 Reserviert.
0x00000000 00000080 Reserviert.
0x00000000 00000100 Reserviert.
0x00000000 00000200 Reserviert.
0x00000000 00000400 Der Controller unterstützt HCI_VS_MSFT_LE_Monitor_Advertisement [v2]. Darüber hinaus unterstützt der Controller die kontinuierliche Werbeüberwachung von LE-Anzeigen, die gleichzeitig mit anderen Radioaktivitäten unter Verwendung von HCI_VS_MSFT_LE_Monitor_Advertisement [v2] durchgeführt werden.
0xFFFFFFFF FFFFF800 Für zukünftige Definition reservierte Bits. Muss Null sein.

Microsoft_event_prefix_length (1 Oktett):

Wert Parameterbeschreibung
0x00 zum 0x20 Anzahl der Bytes im Feld "Microsoft-Ereignispräfix", wie im zurückgegebenen Microsoft_event_prefix angegeben. Dies ist die Anzahl der Bytes konstanter Informationen am Anfang jedes von Microsoft angegebenen HCI-Ereignisses.

Microsoft_event_prefix (variable Länge):

Wert Parameterbeschreibung
Ereignispräfixwert Die konstanten Informationen, die am Anfang jedes von Microsoft definierten Ereignisses zu erwarten sind. Diese Informationen werden verwendet, um von Microsoft definierte Ereignisse von anderen benutzerdefinierten Ereignissen zu unterscheiden.

HCI_VS_MSFT_Monitor_Rssi

HCI_VS_MSFT_Monitor_Rssi fordert an, dass der Controller die Überwachung der gemessenen Link-RSSI für eine angegebene Verbindung beginnt, und generiert ein Ereignis, wenn die RSSI für den gemessenen Link der Verbindung die angegebenen Grenzen überschreitet.

Get-Help Code Befehlsparameter Rückgabeparameter
HCI_VS_MSFT_Monitor_Rssi Ausgewählter Basiscode Subcommand_opcode
Connection_Handle,
RSSI_threshold_high,
RSSI_threshold_low,
RSSI_threshold_low_time_interval,
RSSI_sampling_period
Status
Subcommand_opcode

Der Verantwortliche teilt dem Host den RSSI-Wert mit einem regelmäßig generierten Ereignis (basierend auf dem RSSI_sampling_period) mit. Die gemessene Link-RSSI muss der absolute Empfängersignalstärkewert in dBm für die BR/EDR-Verbindung sein.

Als Reaktion auf einen HCI_VS_MSFT_Monitor_Rssi Befehl generiert der Controller ein Command Complete-Ereignis mit status gleich Null, wenn der Controller mit der Überwachung beginnen kann, oder andernfalls ein status ungleich null. Wenn der status Wert ungleich null ist, darf der Controller als Reaktion auf diesen Befehl keine HCI_VS_MSFT_Rssi_Event generieren.

Der Controller muss den Befehl ablehnen, wenn ein anderer HCI_VS_MSFT_Monitor_Rssi Befehl mit demselben Connection_Handle aussteht oder das angegebene Verbindungshandle ungültig ist. Der Controller kann den Befehl auch aus anderen Gründen ablehnen, z. B. aus Ressourcenauslastung.

Dieses Zustandsdiagramm zeigt die Übergangszustände auf dem Controller beim Überwachen der RSSI für eine Verbindung.

Zustandsdiagramm mit Übergangszuständen auf dem Controller beim Überwachen der RSSI für eine Verbindung.

Der Verantwortliche generiert eine HCI_VS_MSFT_Rssi_Event , wenn die empfangene RSSI größer oder gleich der angegebenen RSSI_threshold_high ist. Nachdem dieses Ereignis generiert wurde, darf der Controller keine neue HCI_VS_MSFT_Rssi_Event generieren, um anzugeben, dass die RSSI_threshold_high überschritten wurde, bis ein HCI_VS_MSFT_Rssi_Event generiert wird, der angibt, dass die RSSI unter RSSI_threshold_low gefallen ist.

Der Verantwortliche generiert eine HCI_VS_MSFT_Rssi_Event , wenn die empfangene RSSI den angegebenen RSSI_threshold_low über die angegebene RSSI_threshold_low_time_interval entspricht oder unterschreitet. Nachdem dieses Ereignis generiert wurde, darf der Controller keine neue HCI_VS_MSFT_Rssi_Event generieren, um anzugeben, dass die RSSI unter die RSSI_threshold_low gefallen ist, bis ein HCI_VS_MSFT_Rssi_Event-Ereignis generiert wird, um anzugeben, dass RSSI_threshold_high erreicht oder überschritten wurde.

Liegt der RSSI_sampling_period zwischen 0x01 und 0xFE, so generiert der Für die Verarbeitung Verantwortliche in regelmäßigen Abständen bei jedem RSSI_sampling_period eine HCI_VS_MSFT_Rssi_Event. Dieses Ereignis muss den Mittelwert der RSSI enthalten, der über die RSSI_sampling_period berechnet wird. Ist die RSSI_sampling_period 0x00 oder 0xFF, so darf der Verantwortliche den Host nicht regelmäßig mit HCI_VS_MSFT_Rssi_Event benachrichtigen.

Command_parameters

Subcommand_opcode (1 Oktett):

Wert Parameterbeschreibung
0x01 Der Unterbefehl opcode für HCI_VS_MSFT_Monitor_Rssi.

Connection_Handle (2 Oktette):

Wert Parameterbeschreibung
0xXXXX Das Handle für die Verbindung, deren RSSI überwacht werden muss.

RSSI_threshold_high (1 Oktett):

Wert Parameterbeschreibung
0xXX Der maximal erwartete RSSI-Wert. Der Controller generiert ein Ereignis, wenn die beobachtete RSSI größer oder gleich diesem Wert wird.
Einheit: dBm
BR/EDR-Bereich: -128 bis 127 (ganze Zahl mit Vorzeichen)
LE-Bereich: -127 bis 20 (ganze Zahl mit Vorzeichen)

RSSI_threshold_low (1 Oktett):

Wert Parameterbeschreibung
0xXX Der minimale erwartete RSSI-Wert. Der Controller generiert ein Ereignis, wenn die beobachtete RSSI kleiner oder gleich diesem Wert ist.
Einheit: dBm
BR/EDR Obligatorischer Bereich: -128 bis 127 (ganze Zahl mit Vorzeichen)
LE Obligatorischer Bereich: -127 bis 20 (ganze Zahl mit Vorzeichen)

RSSI_threshold_low_time_interval (1 Oktett):

Wert Parameterbeschreibung
0x00 Reservierter Wert.
N = 0xXX Die Zeit in Sekunden, in der der RSSI-Wert unter RSSI_threshold_low liegen soll, bevor ein HCI_VS_MSFT_Rssi_Event generiert wird.
Zeitraum = N * 1 Sekunde
Obligatorischer Bereich: 0x01 zu 0x3C

RSSI_sampling_period (1 Oktett):

Wert Parameterbeschreibung
0x00 Reservierter Wert.
N = 0xXX Das Samplingintervall in Millisekunden.
Zeitraum = N * 100 Millisekunden
Obligatorischer Bereich: 0x01 zu 0xFE
0xFF Reservierter Wert.

Return_parameters

Status (1 Oktett):

Wert Parameterbeschreibung
0x00 Der Befehl war erfolgreich.
0x01 zu 0xFF Fehler bei Befehl. Weitere Informationen finden Sie unter Fehlercodes in der Bluetooth Core-Spezifikation.
0x07 Der Controller gibt die Speicherkapazität überschritten zurück, wenn er nicht über genügend Arbeitsspeicher für die Verarbeitung des Befehls verfügt.
Fehlercode Fehler bei Befehl. Weitere Informationen finden Sie unter Fehlercodes in der Bluetooth Core-Spezifikation.

Subcommand_opcode (1 Oktett):

Wert Parameterbeschreibung
0x01 Der Unterbefehl opcode für HCI_VS_MSFT_Monitor_Rssi.

Generierte Ereignisse, sofern nicht maskiert

Der Controller generiert sofort ein Command Complete-Ereignis, wenn der befehl HCI_VS_MSFT_Monitor_Rssi empfangen wird. Wenn das Command Complete-Ereignis den status 0 zurückgibt, generiert der Controller eine HCI_VS_MSFT_Rssi_Event, wenn eine der folgenden Bedingungen auftritt.

  • Die beobachtete RSSI für das Gerät über RSSI_threshold_low_time_interval ist gleich oder kleiner als der angegebene RSSI_threshold_low Wert.
  • Die beobachtete RSSI für das Gerät wird größer oder gleich dem angegebenen RSSI_threshold_high Wert.
  • Die RSSI_sampling_period ist gültig, und der Stichprobenzeitraum läuft ab.

Der Controller sollte alle erforderlichen Cleanups durchführen, wenn die Konnektivität mit dem angegebenen Gerät unterbrochen wird. In diesem Fall wird kein HCI_VS_MSFT_Cancel_Monitor_Rssi-Befehl an den Controller gesendet.

HCI_VS_MSFT_Cancel_Monitor_Rssi

HCI_VS_MSFT_Cancel_Monitor_Rssi bricht einen zuvor ausgegebenen HCI_VS_MSFT_Monitor_Rssi-Befehl ab. Der Controller muss als Reaktion auf diesen Befehl unverzüglich ein Command Completed-Ereignis generieren.

Get-Help Code Befehlsparameter Rückgabeparameter
HCI_VS_MSFT_Cancel_Monitor_Rssi Ausgewählter Basiscode Subcommand_opcode
Connection_Handle
Status
Subcommand_opcode

Command_parameters

Subcommand_opcode (1 Oktett):

Wert Parameterbeschreibung
0x02 Der Unterbefehl opcode für HCI_VS_MSFT_Cancel_Monitor_Rssi.

Connection_Handle (2 Oktette):

Wert Parameterbeschreibung
0xXXXX Das Handle für die Verbindung, deren RSSI abgebrochen werden muss.

Return_parameters

Status (1 Oktett):

Wert Parameterbeschreibung
0x00 Der Befehl war erfolgreich.
0x01 zu 0xFF Fehler bei Befehl. Weitere Informationen finden Sie unter Fehlercodes in der Bluetooth Core-Spezifikation.

Subcommand_opcode (1 Oktett):

Wert Parameterbeschreibung
0x02 Der Unterbefehl opcode für HCI_VS_MSFT_Cancel_Monitor_Rssi.

Generierte Ereignisse, sofern nicht maskiert

Der Controller generiert ein Command Complete-Ereignis, wenn der befehl HCI_VS_MSFT_Cancel_Monitor_RSSI empfangen wird.

HCI_VS_MSFT_LE_Monitor_Advertisement

HCI_VS_MSFT_LE_Monitor_Advertisement fordert an, dass der Controller die Überwachung auf Anzeigen startet, die innerhalb des angegebenen RSSI-Bereichs liegen und außerdem eine der folgenden Bedingungen erfüllen:

  • Ein angegebenes Muster kann mit dem empfangenen Ankündigungspaket abgeglichen werden.
  • Eine angegebene UUID kann mit dem empfangenen Ankündigungspaket abgeglichen werden.
  • Ein angegebener Identitätsauflösungsschlüssel (IRK) kann verwendet werden, um die private Adresse des Geräts aufzulösen, von dem das Ankündigungspaket stammt.
  • Eine angegebene Bluetooth-Adresse kann mit dem empfangenen Ankündigungspaket abgeglichen werden.

Der Befehl v2 ermöglicht es dem Host, einige der oben genannten Bedingungen mit Optionen zu kombinieren, die die Quelle der Werbung und das Ziel einer gerichteten Werbung bestimmen, um die überwachten Anzeigen weiter zu verfeinern. Mit dem Befehl v2 kann der Host auch filtern, welche überwachten Ankündigungen dazu führen, dass der Controller Anzeigeberichte generiert.

Get-Help Code Befehlsparameter Rückgabeparameter
HCI_VS_MSFT_LE_Monitor_Advertisement [v2] Ausgewählter Basiscode 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,
<Bedingungsparameter>
Status
Subcommand_opcode
Monitor_Handle
HCI_VS_MSFT_LE_Monitor_Advertisement [v1] Ausgewählter Basiscode Subcommand_opcode_v1
RSSI_threshold_high
RSSI_threshold_low,
RSSI_threshold_low_time_interval
RSSI_sampling_period
Condition_type
<Bedingungsparameter>
Status
Subcommand_opcode
Monitor_Handle

Der Controller generiert als Reaktion auf diesen Befehl ein Command Complete-Ereignis. Der status Wert sollte auf 0 festgelegt werden, wenn der Controller mit der Überwachung beginnen kann, oder andernfalls ein nonzero status. Wenn der Controller die RSSI-Überwachung für LE-Anzeigen nicht unterstützt, ignoriert er die Parameterwerte RSSI_threshold_high, RSSI_threshold_low, RSSI_threshold_low_time_interval und RSSI_sampling_period .

Dieses Zustandsdiagramm zeigt die Übergangszustände auf dem Controller beim Überwachen von RSSI für eine Ankündigung.

Zustandsdiagramm mit Übergangszuständen für HCI_VS_MSFT_LE_Monitor_Advertisement.

Der Verantwortliche beginnt erst dann mit der Überwachung einer Werbung, wenn der empfangene RSSI größer oder gleich RSSI_threshold_high für ein bestimmtes Gerät ist und die Monitor_options übereinstimmen (siehe unten). Der Controller generiert eine HCI_VS_MSFT_LE_Monitor_Device_Event , wobei Monitor_state auf 1 festgelegt ist und Monitor_handle auf den Handle für diese Bedingung festgelegt ist, um den Host darüber zu informieren, dass der Controller dieses spezielle Gerät für Condition überwacht. Darüber hinaus wird der Controller den ersten Werbebericht einer überwachten Werbung nur dann an den Host weitergeben, wenn die Advertisement_report_filter_options übereinstimmen (siehe unten).

Die Monitor_options für einen Filter werden basierend auf der folgenden Logik (in Pseudocode) als Übereinstimmung betrachtet:

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)

Und für eine überwachte Werbung werden die Advertisement_report_filter_options basierend auf der folgenden Logik (in Pseudocode) als Übereinstimmung betrachtet:

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)

Der Controller beendet die Überwachung auf Bedingung , wenn der RSSI der empfangenen Werbung RSSI_threshold_lowRSSI_threshold_low_interval für das jeweilige Gerät entspricht oder darunter liegt. Der Controller generiert eine HCI_VS_MSFT_LE_Monitor_Device_Event mit Monitor_state auf 0 festgelegt, um den Host darüber zu informieren, dass der Controller die Überwachung des bestimmten Geräts für die Bedingung beendet hat. Nachdem der Controller die HCI_VS_MSFT_LE_Monitor_Device_Event mit Monitor_state auf 0 festgelegt hat, darf der Controller nicht zulassen, dass weitere Werbepakete für das Gerät an den Host übertragen werden, bis der Controller den Host darüber informiert hat, dass der RSSI für das jeweilige Gerät auf oder über RSSI_threshold_high für das jeweilige Gerät für die Bedingung gestiegen ist.

Darüber hinaus generiert der Controller eine HCI_VS_MSFT_LE_Monitor_Device_Event , wobei Monitor_state auf 0 festgelegt ist, um den Host darüber zu informieren, dass der Controller die Überwachung des Geräts für die Bedingung beendet hat, wenn die angegebene RSSI_threshold_low_time_interval abläuft, ohne Werbepakete vom Gerät zu erhalten. Wenn der Controller ein Gerät auf eine bestimmte Bedingung überwacht, sind die folgenden Anweisungen true.

Wenn der Controller die RSSI-Überwachung erweiterter LE-Werbung ohne Stichprobenentnahme unterstützt, verteilt der Controller anonyme Werbepakete an den Host, wenn der RSSI-Wert für das Paket größer oder gleich RSSI_threshold_high ist. Anonyme Werbung wird nicht nachverfolgt und das HCI_VS_MSFT_LE_Monitor_Device_Event Ereignisses wird nicht generiert.

Wenn der Verantwortliche die RSSI-Überwachung von LE-Anzeigen ohne Stichprobenentnahme unterstützt, erstellt der Verantwortliche einen gekürzten Werbebericht, wenn die empfangenen Fragmente der Werbung übereinstimmen, die gesamte Werbung jedoch nicht erfolgreich empfangen wurde.

Der Controller muss mindestens 30 gleichzeitige Monitor_handles, mindestens 30 gleichzeitig nachverfolgte Geräte und mindestens 20 gleichzeitig nachverfolgte doppelte Werbung unterstützen. Der Controller muss auch in der Lage sein, einen kontinuierlichen LE-Scan bei einem 10%-Tastzyklus durchzuführen.

Wenn die Adressauflösung im Controller aktiviert ist und der Host ein Remotegerät überwachen möchte, dessen IRK erfolgreich in der Auflösungsliste des Controllers gespeichert ist, stellt der Host die Peer_Identity_Address- und Peer_Identity_Address_Type Parameter aus dem Listeneintrag des Remotegeräts als Peer_device_address- und Peer_device_address_type-Parameter bereit. Bzw.

RSSI_sampling_period Ältere Ankündigungen Erweiterte Werbung (nicht anonym) Erweiterte Werbung (anonym)
0x00 Der Controller verteilt für diese Bedingung alle empfangenen Werbepakete an den Host für das Gerät, es sei denn, der Controller hat zuvor einen HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable-Befehl mit der Einstellung Aktivieren auf 0x00 erhalten. Der Controller verteilt ein Werbepaket an den Host, auch wenn der empfangene RSSI kleiner oder gleich RSSI_threshold_low ist, solange RSSI_threshold_low_time_interval für das jeweilige Gerät für diese Bedingung nicht abgelaufen ist. Der RSSI-Wert dieses Werbepakets ist der RSSI-Wert der empfangenen Werbung. Wenn der Controller die RSSI-Überwachung erweiterter LE-Werbung ohne Stichprobenentnahme unterstützt, gleiches Verhalten wie die Spalte Legacy Advertisings , mit der Ausnahme, dass ein Werbepaket als alle PDUs in der Werbekette definiert ist. Wenn der Controller die RSSI-Überwachung erweiterter LE-Werbung ohne Stichprobenentnahme unterstützt, verteilt der Controller für diese Bedingung alle empfangenen Werbepakete an den Host für das Gerät, es sei denn, der Controller hat zuvor einen HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable-Befehl mit der Einstellung Aktivieren auf 0x00 erhalten.
0x01 zu 0xFE Der Controller verteilt legacy-Werbepakete an den Host jedes RSSI_sampling_period angegeben, es sei denn, der Controller hat zuvor einen HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable-Befehl mit aktiviertem Wert auf 0x00 erhalten. Der für die Werbung angegebene RSSI-Wert muss der Durchschnitt des RSSI-Werts sein, der während dieses Stichprobenintervalls empfangen wird. Wenn der Controller während des Stichprobenzeitraums kein Werbepaket empfängt, darf er keine Werbung an den Host weitergeben. Es ist möglich, dass RSSI_sampling_period kleiner als RSSI_threshold_low_time_interval ist und alle Anzeigen, die während der RSSI_sampling_period empfangen werden, einen RSSI unter RSSI_threshold_low haben. Der Verantwortliche verteilt die Werbung weiterhin mit dem Durchschnitt des RSSI-Werts, der während dieses Stichprobenintervalls empfangen wurde. Unterstützt der Verantwortliche die RSSI-Überwachung erweiterter LE-Werbung ohne Stichprobenentnahme, so verhält sich der Für die Verarbeitung Verantwortliche so, als wäre die RSSI_sampling_period 0x00. Unterstützt der Verantwortliche die RSSI-Überwachung erweiterter LE-Werbung ohne Stichprobenentnahme, so verhält sich der Für die Verarbeitung Verantwortliche so, als wäre die RSSI_sampling_period 0x00.
0xFF Der Controller darf nicht zulassen, dass weitere Werbepakete für das Gerät für die Bedingung an den Host gesendet werden, bis der Controller den Host darüber informiert hat, dass der RSSI des jeweiligen Geräts unter RSSI_threshold_low für RSSI_threshold_low_time_interval für das jeweilige Gerät für diese Bedingung unterschritten ist. Diese Benachrichtigung erfolgt durch Generieren eines HCI_VS_MSFT_LE_Monitor_Device_Event mit Monitor_state auf 0 festgelegt. Wenn der Controller die RSSI-Überwachung erweiterter LE-Ankündigungen ohne Stichprobenentnahme unterstützt, ist das gleiche Verhalten wie die Spalte Legacy-Ankündigungen . Unterstützt der Verantwortliche die RSSI-Überwachung erweiterter LE-Werbung ohne Stichprobenentnahme, so verhält sich der Für die Verarbeitung Verantwortliche so, als wäre die RSSI_sampling_period 0x00.

Wenn der Controller zuvor einen HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable-Befehl mit aktiviertem Wert auf 0x00 erhalten hat, wird der Timer für den Stichprobenzeitraum nicht beendet. Weitere Informationen finden Sie unter Beispiel: HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable für Filter mit Stichprobenzeitraum. Wenn der Controller nicht duplizierte Werbepakete vom gleichen Gerät empfängt, muss er jedes Werbepaket mit den auf dem Verantwortlichen gespeicherten Bedingungen abgleichen.

Wenn der Controller ein Werbepaket von einem Gerät empfängt, das mehreren Bedingungen entspricht, generiert der Controller eine HCI_VS_MSFT_LE_Monitor_Device_Event für jede Bedingung , die übereinstimmt, wobei Monitor_handle auf die bedingung festgelegt ist, die übereinstimmt.

Wenn der Controller nicht in der Lage ist, die RSSI-Werte für alle Geräte im Bereich zu überwachen, die der Bedingung entsprechen, überwacht er so viele Geräte wie möglich. Die Entscheidung, welche Geräte überwacht werden sollen, hängt von den RSSI-Werten der empfangenen Werbung ab. Der Controller überwacht Geräte mit der größeren empfangenen Signalstärke.

Wenn der Controller den Host über ein bestimmtes Gerät (A) benachrichtigt hat und Geräte mit maximaler Hardwarekapazität überwacht, und wenn ein anderes Gerät (B) mit einem höheren RSSI-Wert in Reichweite kommt, benachrichtigt der Controller den Host, dass er die Überwachung des Geräts (A) beendet hat, indem er eine HCI_VS_MSFT_LE_Monitor_Device_Event mit Monitor_state 0 generiert. Der Controller generiert außerdem eine HCI_VS_MSFT_LE_Monitor_Device_Event, wobei Monitor_state auf 1 festgelegt ist, um den Host darüber zu informieren, dass das Gerät (B) jetzt überwacht wird.

Bedingungstyp und Bedingungsparameter

Der parameter Condition_type gibt an, ob der Parameter Condition ein Muster, eine UUID, eine IRK oder BD_ADDR angibt.

Wenn der parameter Condition_type ein Muster angibt, enthält die Bedingung zwei Abschnitte, die die Anzahl der in der Bedingung vorhandenen Muster und die Musterdaten enthalten.

Diagramm, das das Layout der Musterbedingungsdaten für HCI_VS_MSFT_LE_Monitor_Advertisement veranschaulicht.

Die Anzahl von Mustern gibt die Anzahl der Muster an, die abgeglichen werden müssen.

Musterdaten haben das folgende Format.

  • Length gibt die Länge dieses Musters an, einschließlich des Datentyps und des Startbytes des Musters.
  • AD Type gibt das Feld AD-Typ an.
  • Start of Pattern gibt die Anfangsbyteposition des Musters an, das unmittelbar nach DEM AD-Typ folgt.
  • Das Muster hat eine Größe von (Length - 0x2) und ist das Muster, das für den angegebenen AD-Typ innerhalb des Ankündigungspakets aus dem angegebenen Startbyte abgeglichen werden soll.

Wenn mehrere Muster angegeben sind, stellt der Verantwortliche sicher, dass mindestens ein Muster mit der empfangenen Werbung übereinstimmt.

Wenn der Controller die RSSI-Überwachung erweiterter LE-Werbung ohne Stichprobenentnahme unterstützt:

  • Der Für die Verarbeitung Verantwortliche sucht nach dem Muster in den ersten 251 Oktetten der Werbedaten des Hosts und kann in allen verbleibenden Oktetten der Werbedaten des Hosts suchen. Wenn der AD-Abschnitt über die ersten 251 Oktette der Werbedaten des Hosts hinausgeht, sucht der Verantwortliche im Teil des AD-Abschnitts nach dem Muster, das sich in den ersten 251 Oktetten der Host Advertising-Daten befindet, und kann in allen verbleibenden Oktetten der Werbedaten des Hosts suchen. Hinweis: Basierend auf der Fragmentierung durch den Inserenten können sich die ersten 251 Oktette der Host Advertising-Daten auf die AdvData mehrerer Werbe-PDUs erstrecken. Scanner sollten darauf achten, die Anzahl der AuxPtrs, die sie befolgen, zu begrenzen, um zu lange PdUs-Ketten zu vermeiden.

  • Der Für die Verarbeitung Verantwortliche verfolgt anhand einer Geräteadresse pro Werbesatzbasis nach. Der Für die Verarbeitung Verantwortliche verteilt für jede Werbemenge eine HCI_VS_MSFT_LE_Monitor_Device_Event , die dem Muster entspricht, auch wenn die Werbung von derselben Geräteadresse stammt.

Wenn der parameter Condition_type eine UUID angibt, enthält der Parameter Condition einen UUID-Typ und eine UUID. Der UUID-Typ gibt an, ob die UUID 16-Bit, 32-Bit oder 128-Bit ist. Der Controller analysiert die Dienst-UUID des Werbepakets, um die angegebene UUID zu überprüfen. Wenn der UUID-Typ als 0x01 definiert ist, analysiert der Controller die unvollständige Liste der 16-Bit-Dienst-UUIDs und die vollständige Liste der 16-Bit-Dienst-UUIDs, die im Dienst-UUID-AD-Typ angegeben sind. Wenn der UUID-Typ als 0x02 definiert ist, analysiert der Controller die unvollständige Liste der 32-Bit-Dienst-UUIDs und die vollständige Liste der 32-Bit-UUIDs, die im Dienst-UUID-AD-Typ angegeben sind. Wenn der angegebene UUID-Typ 0x03 ist, analysiert der Controller die unvollständige Liste der 128-Bit-Dienst-UUIDs und die vollständige Liste der 128-Bit-Dienst-UUIDs, die im Dienst-UUID-AD-Typ angegeben sind.

Wenn der Controller die RSSI-Überwachung erweiterter LE-Werbung ohne Stichprobenentnahme unterstützt:

  • Der Controller sucht nach der Dienst-UUID in den ersten 251 Oktetten der Werbedaten des Hosts und kann in allen verbleibenden Oktetten der Host-Werbedaten suchen. Wenn der AD-Abschnitt über die ersten 251 Oktette der Werbedaten des Hosts hinausgeht, sucht der Verantwortliche im Teil des AD-Abschnitts, der sich in den ersten 251 Oktetten der Werbedaten des Hosts befindet, nach der Dienst-UUID und kann in allen verbleibenden Oktetten der Host-Werbedaten suchen. Hinweis: Basierend auf der Fragmentierung durch den Inserenten können die ersten 251 Oktette der Host Advertising-Daten die AdvData mehrerer Werbe-PDUs umfassen. Scanner sollten darauf achten, die Anzahl der AuxPtrs, die sie befolgen, zu begrenzen, um zu lange PdUs-Ketten zu vermeiden.

  • Der Für die Verarbeitung Verantwortliche verfolgt anhand einer Geräteadresse pro Werbesatzbasis nach. Der Controller verteilt eine HCI_VS_MSFT_LE_Monitor_Device_Event für jede Werbemenge, die der Dienst-UUID entspricht, auch wenn die Werbung von demselben Gerät stammt.

Wenn der parameter Condition_type einen IRK angibt, enthält der Parameter Condition den IRK.

Wenn der parameter Condition_type eine Bluetooth-Adresse angibt, enthält der Parameter Condition den Adresstyp und BD_ADDR.

Der Controller überwacht die Überwachung basierend auf den Bedingungen, auch wenn die Überprüfung (aktiv oder passiv) aktiviert ist. Wenn die aktive Überprüfung aktiviert ist, wird die Scanantwort für eine Ankündigung, die mit einem Filter übereinstimmt, an den Host weitergegeben.

Wenn der Controller einen HCI_VS_MSFT_LE_Monitor_Advertisement-Befehl empfängt, wenn die Filter deaktiviert sind (aufgrund eines zuvor empfangenen HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable-Befehls mit aktivierter Einstellung auf 0x00), akzeptiert der Controller den Befehl, sofern möglich, aber legt ihn auf einen deaktivierten Zustand fest. Der Controller kann den Befehl auch aus anderen Gründen ablehnen, z. B. aus Ressourcenauslastung.

Wenn alle Bits der Monitor_options eindeutig sind, sollte der Controller den Fehlercode Ungültige HCI-Befehlsparameter (0x12) zurückgeben.

Wenn Bit 1 oder Bit 3 von Monitor_options festgelegt ist und Peer_device_IRK auf eine ungültige IRK festgelegt ist, oder keines der Bits von Monitor_options festgelegt ist, sollte der Controller den Fehlercode Invalid HCI Command Parameters (0x12) zurückgeben.

Wenn Bit 0 oder Bit 1 oder Bit 2 oder Bit 3 von Monitor_options festgelegt ist und Condition_type auf 0x03 oder 0x04 festgelegt ist, sollte der Controller den Fehlercode Ungültige HCI-Befehlsparameter (0x12) zurückgeben.

Wenn Bit 0 von Advertisement_report_filter_options festgelegt ist und RSSI_sampling_period ein anderer Wert als 0x00 ist, sollte der Controller den Fehlercode Ungültige HCI-Befehlsparameter (0x12) zurückgeben.

Fehlende Parameter

Wenn eine Version dieses Befehls ausgegeben wird, die nicht alle Parameter enthält, wird Folgendes verwendet:

Parameter Wert
Monitor_options Bit 5 festgelegt; alle anderen Bits gelöscht
Advertisement_report_filter_options Bits 1 und 2 gesetzt; alle anderen Bits gelöscht
Peer_device_IRK 0x0000000000000000 00000000000000000
Peer_device_address 0x000000000000
Peer_device_address_type 0x00

Command_parameters

Subcommand_opcode_v1 (1 Oktett):

Wert Parameterbeschreibung
0x03 Der Unterbefehl opcode für HCI_VS_MSFT_LE_Monitor_Advertisement [v1].

Subcommand_opcode_v2 (1 Oktett):

Wert Parameterbeschreibung
0x0F Der Unterbefehl opcode für HCI_VS_MSFT_LE_Monitor_Advertisement [v2].

RSSI_threshold_high (1 Oktett):

Wert Parameterbeschreibung
0xXX Der maximal erwartete RSSI-Wert. Der Controller generiert ein Ereignis, wenn die beobachtete RSSI größer oder gleich diesem Wert wird.
Einheit: dBm
Obligatorischer Bereich: -127 bis 20 (ganze Zahl mit Vorzeichen)

RSSI_threshold_low (1 Oktett):

Wert Parameterbeschreibung
0xXX Der minimale erwartete RSSI-Wert. Der Controller generiert ein Ereignis, wenn die beobachtete RSSI kleiner oder gleich diesem Wert ist.
Einheit: dBm
Obligatorischer Bereich: -127 bis 20 (ganze Zahl mit Vorzeichen)

RSSI_threshold_low_time_interval (1 Oktett):

Wert Parameterbeschreibung
0x00 Reservierter Wert.
N = 0xXX Die Zeit in Sekunden, in der der RSSI-Wert unter RSSI_threshold_low liegen soll, bevor ein HCI_VS_MSFT_Rssi_Event generiert wird.
Zeitraum = N * 1 Sekunde
Obligatorischer Bereich: 0x01 zu 0x3C.

RSSI_sampling_period (1 Oktett):

Wert Parameterbeschreibung
0x00 Der Verantwortliche hat alle empfangenen Anzeigen an den Host weiterzuverbreiten.
N = 0xXX Das Samplingintervall in Millisekunden.
Zeitraum = N * 100 Millisekunden.
Obligatorischer Bereich: 0x01 zu 0xFE
0xFF Der Verantwortliche darf keine der empfangenen Anzeigen an den Host weitergeben.

Monitor_options (1 Oktett):

Bitzahl Parameterbeschreibung
0 Der Controller überwacht Werbe-PDUs, bei denen AdvA oder seine aufgelöste Identitätsadresse mit Peer_device_address und Peer_device_address_type übereinstimmt und wenn TargetA nicht vorhanden ist oder, falls es vorhanden ist, das TargetA basierend auf der Scanfilterrichtlinie zulässig ist, wenn diese PDUs der in Condition_Type angegebenen Bedingung entsprechen.
1 Der Controller überwacht Werbe-PDUs, bei denen AdvA mit Peer_device_IRK auflösbar ist und TargetA nicht vorhanden ist, oder, wenn es vorhanden ist, das TargetA basierend auf der Scanfilterrichtlinie zulässig ist, wenn diese PDUs der in Condition_Type angegebenen Bedingung entsprechen. Dieses Bit wird nicht festgelegt, wenn link layer privacy im Controller verwendet wird.
2 Der Controller überwacht pdUs für gezielte Werbung, wenn das TargetA basierend auf der Scanfilterrichtlinie zulässig ist und wenn AdvA oder seine aufgelöste Identitätsadresse Peer_device_address und Peer_device_address_type. Dies ist unabhängig davon, ob die PDU mit der in Condition_Type angegebenen Bedingung übereinstimmt.
3 Der Controller überwacht die gerichteten Werbe-PDUs, wenn das TargetA basierend auf der Scanfilterrichtlinie zulässig ist und advA mit Peer_device_IRK aufgelöst werden kann. Dies ist unabhängig davon, ob die PDU mit der in Condition_Type angegebenen Bedingung übereinstimmt. Dieses Bit wird nicht festgelegt, wenn link layer privacy im Controller verwendet wird.
4 Der Controller überwacht gerichtete Werbe-PDUs, bei denen targetA basierend auf der Scanfilterrichtlinie zulässig ist, unabhängig vom Wert von Peer_device_address und Peer_device_address_type oder Peer_device_IRK und unabhängig davon, ob die PDU mit der in Condition_Type angegebenen Bedingung übereinstimmt.
5 Der Controller überwacht werbungsbasierte PDUs von advA, bei denen TargetA nicht vorhanden ist oder, falls es vorhanden ist, das TargetA basierend auf der Scanfilterrichtlinie zulässig ist, wenn diese PDUs der in Condition_Type angegebenen Bedingung entsprechen.
Alle anderen Bits Für die zukünftige Verwendung reserviert

Advertisement_report_filtering_options (1 Oktett):

Bitzahl Parameterbeschreibung
0 Doppelte Werbe-PDUs filtern. Dieses Bit wird nur festgelegt, wenn RSSI_sampling_period 0x00 ist.
1 Der Controller generiert HCI_LE_Advertising_Report Ereignisse oder HCI_LE_Directed_Advertising_Report Ereignisse oder HCI_LE_Extended_Advertising_Report Ereignisse für Legacy-Werbe-PDUs, wenn diese PDUs den angegebenen Monitor_options entsprechen.
2 Der Controller generiert HCI_LE_Extended_Advertising_Report Ereignisse für PDUs für erweiterte Werbung, wenn diese PDUs den angegebenen Monitor_options entsprechen.
3 Der Controller generiert HCI_LE_Advertising_Report Ereignisse oder HCI_LE_Directed_Advertising_Report Ereignisse oder HCI_LE_Extended_Advertising_Report Ereignisse für gerichtete Werbe-PDUs, wenn diese PDUs mit den angegebenen Monitor_options übereinstimmen.
Alle anderen Bits Für die zukünftige Verwendung reserviert

Peer_device_address (6 Oktette):

Wert Parameterbeschreibung
0xXXXXXXXXXXXXXXXXXX Öffentliche Geräteadresse oder zufällige Geräteadresse, die übereinstimmen soll.

Peer_device_address_type (1 Oktett):

Wert Parameterbeschreibung
0x00 Öffentliche Geräteadresse
0x01 Zufällige Geräteadresse
Alle anderen Werte Für die zukünftige Verwendung reserviert

Peer_device_IRK (16 Oktette):

Wert Parameterbeschreibung
0x0000000000000000 0000000000000000000 Ungültiger IRK. Darf nicht der Wert sein, wenn Monitor_options Bit 1 festgelegt ist oder wenn Monitor_options Bit 3 festgelegt ist.
0xXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXX IRK des zu übereinstimmenden Geräts. Peer_device_address und Peer_device_address_type werden aufgefüllt.

Condition_type (1 Oktett):

Wert Parameterbeschreibung
0x01 Die Bedingung ist ein Muster, das für die Anzeige abgeglichen werden muss.
0x02 Die Bedingung ist ein UUID-Typ und eine UUID.
0x03 Die Bedingung ist die Auflösung eines IRK. Ausgeschlossen, wenn eines der Monitor_options Bits 0, 1, 2 oder 3 festgelegt ist.
0x04 Die Bedingung ist ein Bluetooth-Adresstyp und eine Bluetooth-Adresse. Ausgeschlossen, wenn eines der Monitor_options Bits 0, 1, 2 oder 3 festgelegt ist.

Bedingung: Die anwendbaren Felder für Bedingung hängen vom Wert von Condition_type ab. Weitere Informationen finden Sie im Abschnitt Condition_type- und Condition-Parameter.

Number_of_patterns (1 Oktett):

Wert Parameterbeschreibung
0xXX Die Anzahl von Mustern, die im parameter Pattern_data angegeben sind.

Pattern_data (>3 Oktette):

Wert Parameterbeschreibung
Länge Länge dieses Musters.
Datentyp Datentyp des Ankündigungsabschnitts. Die Werte werden im Dokument Bluetooth Assigned Numbers aufgeführt.
Byte starten Startposition des Musters, das für den angegebenen Datentyp abgeglichen werden soll.
Muster Abzugleichende Muster (Längengröße – 0x2 Bytes).

UUID_type (1 Oktett):

Wert Parameterbeschreibung
0x01 Die UUID ist ein 16-Bit-Dienst.
0x02 Die UUID ist ein 32-Bit-Dienst.
0x03 Die UUID ist ein 128-Bit-Dienst.

UUID (2, 4 oder 16 Oktette):

Wert Parameterbeschreibung
0xXXXXXX 2 Bytes, wenn UUID_type 0x01 ist.
4 Bytes, wenn UUID_type 0x02 ist.
16 Bytes, wenn UUID_type 0x03 ist.

IRK (16 Oktette):

Wert Parameterbeschreibung
0xXXXXXXXXXX XXXXXXXX XXXXXXXX XXXXXXXX Der IRK, der zum Auflösen der privaten Adresse verwendet werden soll.

Address_type (1 Oktett):

Wert Parameterbeschreibung
0x00 Öffentliche Geräteadresse.
0x01 Zufällige Geräteadresse.
0x02 zu 0xFF Reservierte Werte für die zukünftige Verwendung.

BD_ADDR (6 Oktette):

Wert Parameterbeschreibung
0xXXXXXXXXXXXXXXXXXX Die Bluetooth-Adresse des zu überwachenden Geräts.

Return_parameters

Status (1 Oktett):

Wert Parameterbeschreibung
0x00 Der Befehl war erfolgreich.
0x07 Der Controller gibt die überschrittene Speicherkapazität zurück, wenn er nicht über genügend Arbeitsspeicher für die Verarbeitung des Befehls verfügt.
Fehlercode Fehler bei Befehl. Weitere Informationen finden Sie unter Fehlercodes in der Bluetooth Core-Spezifikation.

Subcommand_opcode (1 Oktett):

Wert Parameterbeschreibung
0x03 oder 0x0F Der Unterbefehl opcode für HCI_VS_MSFT_LE_Monitor_Advertisement [v1] oder HCI_VS_MSFT_LE_Monitor_Advertisement [v2], je nachdem, welcher Befehl übermittelt wurde.

Monitor_handle (1 Oktett):

Wert Parameterbeschreibung
0x00 zu 0xFF Das Handle für diese Regel. Dieses Handle wird als Parameter für HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement verwendet, um die Überwachung der Ankündigung abzubrechen.
Dieser Parameter ist nur gültig, wenn Status 0x00 ist.

Ereignisse, die generiert werden, wenn sie nicht maskiert sind

Wenn der HCI_VS_MSFT_LE_Monitor_Advertisement-Befehl empfangen wird, generiert der Controller ein Command Complete-Ereignis.

HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement

HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement bricht einen zuvor ausgestellten HCI_VS_MSFT_LE_Monitor_Advertisement-Befehl ab.

Get-Help Code Befehlsparameter Rückgabeparameter
HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement Ausgewählter Basiscode Subcommand_opcode
Monitor_handle
Status
Subcommand_opcode

Der Controller generiert als Reaktion auf diesen Befehl umgehend ein Ereignis "Command Completed".

Command_parameters

Subcommand_opcode (1 Oktett):

Wert Parameterbeschreibung
0x04 Der Unterbefehl opcode für HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement.

Connection_Handle (1 Oktett):

Wert Parameterbeschreibung
0xXX Das Handle für den Filter, der abgebrochen wird.

Return_parameters

Status (1 Oktett):

Wert Parameterbeschreibung
0x00 Der Befehl war erfolgreich.
0x07 Der Controller gibt die überschrittene Speicherkapazität zurück, wenn er nicht über genügend Arbeitsspeicher für die Verarbeitung des Befehls verfügt.
Fehlercode Fehler bei Befehl. Weitere Informationen finden Sie unter Fehlercodes in der Bluetooth Core-Spezifikation.

Subcommand_opcode (1 Oktett):

Wert Parameterbeschreibung
0x04 Der Unterbefehl opcode für HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement.

Ereignisse, die generiert werden, wenn sie nicht maskiert sind

Der Controller generiert ein Command Complete-Ereignis, wenn der HCI_VS_MSFT_LE_Cancel_Monitor_Advertisement-Befehl empfangen wird.

HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable

HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable legt den Status der Werbefilter fest.

Get-Help Code Befehlsparameter Rückgabeparameter
HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable Ausgewählter Basiscode Subcommand_opcode
Aktivieren
Status
Subcommand_opcode

Wenn Aktivieren auf 0x00 festgelegt ist, verteilt der Controller empfangene Werbung basierend auf vorhandenen Einstellungen der Filterakzeptierungsliste an den Host. Der Controller überwacht weiterhin die derzeit überwachten Geräte und generiert eine HCI_VS_MSFT_LE_Monitor_Device_Event mit Monitor_state auf 0 festgelegt, wenn das Gerät nicht mehr überwacht wird. Der Controller generiert eine HCI_VS_MSFT_LE_Monitor_Device_Event , bei der Monitor_state auf 1 festgelegt ist, wenn ein neues Gerät überwacht wird. Der Host gibt möglicherweise HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable aus , wobei Aktivieren auf 0x01 festgelegt ist, um alle Filterbedingungen erneut zu aktivieren.

Wenn Aktivieren auf 0x01 festgelegt ist, aktiviert dieser Befehl alle Filter, die mit einem zuvor ausgegebenen HCI_VS_MSFT_LE_Monitor_Advertisement-Befehl festgelegt wurden. Der Controller muss einen HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable-Befehl ablehnen, wenn er den Filterzustand nicht umschaltt:

  • Der Controller muss einen HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable-Befehl ablehnen, wobei Aktivieren auf 0x01 festgelegt ist, wenn er zuvor einen HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable-Befehl mit der Einstellung Aktivieren auf 0x01 erhalten hat.
  • Der Controller muss den Befehl HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable mit der Einstellung Aktivieren auf 0x00 ablehnen, wenn er zuvor einen HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable-Befehl mit der Einstellung Aktivieren auf 0x00 erhalten hat.

Der Standardzustand des Werbefilters muss deaktiviert sein. Dieser Zustand entspricht dem Controller, der zuvor einen HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable-Befehl empfangen hat, wobei Aktivieren auf 0x00 festgelegt ist. Der Controller generiert als Reaktion auf diesen Befehl umgehend ein Ereignis "Command Completed".

Command_parameters

Subcommand_opcode (1 Oktett):

Wert Parameterbeschreibung
0x05 Der Unterbefehl opcode für HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable.

Aktivieren (1 Oktett):

Wert Parameterbeschreibung
0x00 Zum aktuellen Verhalten der Filterakzeptierungsliste wiederherstellen, aber weiterhin die Überwachung von Geräten basierend auf der Bedingung von HCI_VS_MSFT_LE_Monitor_Advertisement Befehlen fortsetzen.
0x01 Aktivieren Sie alle ausgestellten HCI_VS_MSFT_LE_Monitor_Advertisement-Befehle auf dem Controller.

Return_parameter

Status (1 Oktett):

Wert Parameterbeschreibung
0x00 Der Befehl war erfolgreich.
0x0C Der Controller gibt Command Disallowed zurück, wenn der Controller den Befehl abgelehnt hat, da zuvor ein HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable Befehl mit Enable auf denselben Wert wie dieser Befehl festgelegt wurde.
Fehlercode Fehler bei Befehl. Weitere Informationen finden Sie unter Fehlercodes in der Bluetooth Core-Spezifikation.

Subcommand_opcode (1 Oktett):

Wert Parameterbeschreibung
0x05 Der Unterbefehl opcode für HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable.

Generierte Ereignisse, sofern nicht maskiert

Der Controller generiert ein Command Complete-Ereignis, wenn der befehl HCI_VS_MSFT_LE_Set_Advertisement_Filter_Enable empfangen wird.

HCI_VS_MSFT_Read_Absolute_RSSI

HCI_VS_MSFT_Read_Absolute_RSSI liest den absoluten RSSI-Wert (Received Signal Strength Indication) für eine BR/EDR-Verbindung vom Controller.

Get-Help Code Befehlsparameter Rückgabeparameter
HCI_VS_MSFT_Read_Absolute_RSSI Ausgewählter Basiscode Subcommand_opcode
Connection_Handle
Status
Subcommand_opcode
Connection_Handle,
RSSI

Ein Verbindungshandle wird sowohl als Befehl als auch als Rückgabeparameter bereitgestellt, um die ACL-Verbindung zu identifizieren, deren RSSI gelesen wird. Die RSSI-Metrik ist die absolute Empfangssignalstärke in dBm für ± Genauigkeit von 6 dB. Wenn die RSSI nicht gelesen werden kann, muss die RSSI-Metrik auf 127 festgelegt werden. Der Controller muss diesen Befehl immer sofort mit einem Command Completed-Ereignis abschließen.

Command_parameters

Subcommand_opcode (1 Oktett):

Wert Parameterbeschreibung
0x06 Der Unterbefehl opcode für HCI_VS_MSFT_Read_Absolute_RSSI.

Connection_Handle (2 Oktette):

Wert Parameterbeschreibung
0xXXXX Das Handle für die BR/EDR-Verbindung, deren RSSI gelesen werden muss.

Return_parameters

Status (1 Oktett):

Wert Parameterbeschreibung
0x00 Der Befehl war erfolgreich.
0x01 zu 0xFF Fehler bei Befehl. Weitere Informationen finden Sie unter Fehlercodes in der Bluetooth Core-Spezifikation.

Subcommand_opcode (1 Oktett):

Wert Parameterbeschreibung
0x06 Der Unterbefehl opcode für HCI_VS_MSFT_Read_Absolute_RSSI.

Connection_Handle (2 Oktette):

Wert Parameterbeschreibung
0xXXXX Das Handle für die BR/EDR-Verbindung, deren RSSI gelesen wurde.

RSSI (1 Oktett):

Wert Parameterbeschreibung
N = 0xXX Der RSSI-Wert für die BR/EDR-Verbindung.
Einheit: dBm
Obligatorischer Bereich: -128 bis 127 (ganze Zahl mit Vorzeichen)

Generierte Ereignisse, sofern nicht maskiert

Der Controller generiert ein Command Complete-Ereignis, wenn der befehl HCI_VS_MSFT_Read_Absolute_RSSI abgeschlossen ist.

Von Microsoft definierte Bluetooth HCI-Ereignisse

Alle von Microsoft definierten Bluetooth HCI-Ereignisse sind vom Hersteller definierte Ereignisse und verwenden Ereigniscode 0xFF. Die Ereignisdaten für Microsoft-Ereignisse beginnen immer mit einer konstanten Bytezeichenfolge, um die von Microsoft definierten Ereignisse von anderen vom Anbieter definierten Ereignissen zu unterscheiden. Länge und Wert der konstanten Zeichenfolge werden vom Controllerimplementierer definiert und als Reaktion auf HCI_VS_MSFT_Read_Supported_Features zurückgegeben.

HCI-Ereignis BESCHREIBUNG
HCI_VS_MSFT_Rssi_Event HCI_VS_MSFT_RSSI_Event gibt an, dass ein HCI_VS_MSFT_Monitor_Rssi-Befehl abgeschlossen wurde.
HCI_VS_MSFT_LE_Monitor_Device_Event HCI_VS_MSFT_LE_Monitor_Device_Event gibt an, dass der Controller die Überwachung eines Bluetooth LE-Geräts gestartet oder beendet hat.

HCI_VS_MSFT_RSSI_Event

HCI_VS_MSFT_RSSI_Event gibt an, dass ein HCI_VS_MSFT_Monitor_Rssi-Befehl abgeschlossen wurde. Wenn der Status-Parameter null ist, wurde der Befehl abgeschlossen, da der RSSI-Wert für das Remotegerät in einen Wert außerhalb des angegebenen Bereichs geändert wurde. Wenn der Status-Parameter ungleich null ist, wurde der Befehl abgeschlossen, da der RSSI-Wert der Verbindung nicht mehr überwacht werden kann.

Ereignis Ereigniscode Microsoft-Ereigniscode Ereignisparameter
HCI_VS_MSFT_RSSI_Event 0xFF 0x01 Event_prefix,
Microsoft_event_code,
Status
Connection_Handle,
RSSI

Event_parameters

Event_prefix (Variablengröße):

Wert Parameterbeschreibung
Ereignispräfix Das Ereignispräfix, das dieses Ereignis als von Microsoft definiert kennzeichnet. Größe und Wert werden vom Befehl HCI_VS_MSFT_Read_Supported_Features zurückgegeben.

Microsoft_event_code (1 Oktett):

Wert Parameterbeschreibung
0x01 Der Ereigniscode für HCI_VS_MSFT_RSSI_Event.

Status (1 Oktett):

Wert Parameterbeschreibung
0x00 Erfolg. Der RSSI-Wert der Verbindung hat eine der folgenden Bedingungen erfüllt. Die RSSI hat RSSI_threshold_high erreicht oder überschritten.
Die RSSI hat innerhalb von RSSI_threshold_low_time_interval Sekunden RSSI_threshold_low erreicht oder darunter abgelegt.
Die RSSI_sampling_period ist abgelaufen, und dieses Ereignis wurde generiert, um den Host über den RSSI-Wert zu benachrichtigen.
0x01 zu 0xFF Fehler. Der RSSI-Wert der Verbindung kann nicht mehr überwacht werden. Der Fehlercode ist in der Regel einer von Codes, der beschreibt, warum die zugrunde liegende ACL-Verbindung unterbrochen wurde.

Connection_Handle (2 Oktette):

Wert Parameterbeschreibung
0xXXXX Das Handle für die Verbindung, deren RSSI überwacht werden soll.

RSSI (1 Oktett):

Wert Parameterbeschreibung
0xXX Der gemessene Link RSSI-Wert für die Verbindung.
Einheit: dBm
BR/EDR-Bereich: -128 bis 127 (ganze Zahl mit Vorzeichen)
LE-Bereich: -127 bis 20 (ganze Zahl mit Vorzeichen)

HCI_VS_MSFT_LE_Monitor_Device_Event

HCI_VS_MSFT_LE_Monitor_Device_Event gibt an, dass der Controller die Überwachung eines Bluetooth LE-Geräts gestartet oder beendet hat.

Wenn der Monitor_state Parameterwert 1 ist, begann der Controller mit der Überwachung des Bluetooth-Geräts mit dem angegebenen BD_ADDR. Wenn der Monitor_state Parameterwert 0 ist, hat der Controller die Überwachung des Bluetooth-Geräts mit dem angegebenen BD_ADDR beendet.

Ereignis Ereigniscode Microsoft-Ereigniscode Ereignisparameter
HCI_VS_MSFT_LE_Monitor_Device_Event 0xFF 0x02 Event_prefix,
Microsoft_event_code,
Address_type
BD_ADDR,
Monitor_handle,
Monitor_state

Der Controller darf keine HCI_VS_MSFT_LE_Monitor_Device_Event generieren, bei der der parameter Monitor_state auf 0 festgelegt ist, wenn er noch keinen HCI_VS_MSFT_LE_Monitor_Device_Event generiert hat, bei dem Monitor_state auf 1 festgelegt ist.

Event_parameters

Event_prefix (Variablengröße):

Wert Parameterbeschreibung
Ereignispräfix Das Ereignispräfix, das dieses Ereignis als von Microsoft definiert kennzeichnet. Größe und Wert werden vom Befehl HCI_VS_MSFT_Read_Supported_Features zurückgegeben.

Microsoft_event_code (1 Oktett):

Wert Parameterbeschreibung
0x02 Der Ereigniscode für HCI_VS_MSFT_LE_Monitor_Device_Event.

Address_type (1 Oktett):

Wert Parameterbeschreibung
0x00 Öffentliche Geräteadresse.
0x01 Zufällige Geräteadresse.
0x02 zu 0xFF Reservierte Werte für die zukünftige Verwendung.

BD_ADDR (6 Oktette):

Wert Parameterbeschreibung
0xXXXXXXXXXXXXXXXXXXXXXX Die Bluetooth-Adresse des Geräts.

Monitor_handle (1 Oktett):

Wert Parameterbeschreibung
0xXX Das Handle für den Filter, der für den Befehl HCI_VS_MSFT_LE_Monitor_Advertisement angegeben wurde.

Monitor_state (1 Oktett):

Wert Parameterbeschreibung
0x00 Der Controller hat die Überwachung des durch BD_ADDR und Monitor_handle angegebenen Geräts beendet.
0x01 Der Controller hat mit der Überwachung des durch BD_ADDR und Monitor_handle angegebenen Geräts begonnen.

Anhang

Dieser Abschnitt enthält Beispiele und Diagramme für die von Microsoft definierte Bluetooth HCI-Erweiterung.

Beispiel: Abgleichsmuster für HCI_VS_MSFT_LE_Monitor_Advertisement

Dieses Beispiel zeigt einen empfangenen HCI_VS_MSFT_LE_Monitor_Advertisement Befehl und die Auswertungen von drei verschiedenen Ankündigungspaketen für die Befehlsparameter.

Empfangen HCI_VS_MSFT_LE_Monitor_Advertisement Befehl Ein HCI_VS_MSFT_LE_Monitor_Advertisement Befehl wird vom Controller empfangen und enthält die folgenden Parameter.

Parameter Wert Hinweise
Subcommand_opcode 0x03 Unterbefehl opcode für HCI_VS_MSFT_LE_Monitor_Advertisement
RSSI_threshold_high 0x01 1dB
RSSI_threshold_low 0xCE -50dB
RSSI_threshold_low_time_interval 0x05 5 Sekunden
RSSI_sampling_period 0xFF Keine Stichprobenentnahme
Condition_type 0x01 Bedingung
Condition 0x02 Zwei Muster sollten übereinstimmen
0x03 Länge des ersten Musters, einschließlich AD-Typ und Startposition
0x01 AD-Typ
0x00 Startposition nach dem AD-Typ
0x01 Erstes Muster, das abgeglichen werden soll
0x06 Länge des zweiten Musters, einschließlich AD-Typ und Startposition
0xFF AD-Typ (herstellerspezifische Daten)
0x00 Startposition nach dem AD-Typ
0x00 Zweites Muster, das abgeglichen werden soll
0x06
0xFF
0xFF

Der Controller empfängt dann die folgenden Ankündigungspakete.

  • Werbepaket [A]

    0x02 0x01 0x01 0x07 0x09 0x54 0x61 0x62 0x6C 0x65 0x74 0x05 0xFF 0x00 0x06 0xFF 0xFF

  • Werbepaket [B]

    0x02 0x01 0x01 0x07 0x09 0x54 0x61 0x62 0x6C 0x65 0x74 0x04 0xFF 0x00 0x06 0xFF

  • Werbepaket [C]

    0x07 0x09 0x54 0x61 0x62 0x6C 0x65 0x74 0x05 0xFF 0x00 0x06 0xFF 0xFF

  • Werbepaket [D]

    0x02 0x01 0x02 0x05 0xFF 0x00 0x06 0xFF 0x01

Auswerten der Übereinstimmung für das Werbepaket [A]

Beschreibung Wert
AD-Typ des ersten Musters, das abgeglichen werden soll 0x01
Länge des ersten musters, das abgeglichen werden soll 0x03 – 0x02 = 0x01 Byte
Muster, das an position 0x00 für AD Type 0x01 0x01
Bytes an 0x00 Position für die AD-Typ-0x01 0x01 (MATCH!)
AD-Typ des zweiten Musters, das abgeglichen werden soll 0xFF (herstellerspezifische Daten)
Länge des zweiten Musters, das abgeglichen werden soll 0x06 – 0x02 = 0x04 Bytes
Muster, das an position 0x00 für AD Type 0xFF 0x00 0x06 0xFF 0xFF
Bytes an 0x00 Position für den AD-Typ 0xFF 0x00 0x06 0xFF 0xFF (MATCH!)

Urteil: PASS (beide Muster stimmen überein)

Auswerten der Übereinstimmung für das Werbepaket [B]

BESCHREIBUNG Wert
AD-Typ des ersten Musters, das abgeglichen werden soll 0x01
Länge des ersten musters, das abgeglichen werden soll 0x03 – 0x02 = 0x01 Byte
Muster, das an position 0x00 für AD Type 0x01 0x01
Bytes an 0x00 Position für die AD-Typ-0x01 0x01 (MATCH!)
AD-Typ des zweiten Musters, das abgeglichen werden soll 0xFF (herstellerspezifische Daten)
Länge des zweiten Musters, das abgeglichen werden soll 0x06 – 0x02 = 0x04 Bytes
Muster, das an position 0x00 für AD Type 0xFF 0x00 0x06 0xFF 0xFF
Bytes an 0x00 Position für den AD-Typ 0xFF 0x00 0x06 0xFF (keine Übereinstimmung)

Urteil: PASS (nur übereinstimmungen mit dem ersten Muster)

Auswerten der Übereinstimmung für das Werbepaket [C]

BESCHREIBUNG Wert
AD-Typ des ersten Musters, das abgeglichen werden soll 0x01
Länge des ersten musters, das abgeglichen werden soll 0x03 – 0x02 = 0x01 Byte
Muster, das an position 0x00 für AD Type 0x01 0x01
Bytes an 0x00 Position für die AD-Typ-0x01 Nicht definiert. Die Ankündigung enthält keine Daten mit dem AD-Typ 0x01.
AD-Typ des zweiten Musters, das abgeglichen werden soll 0xFF (herstellerspezifische Daten)
Länge des zweiten Musters, das abgeglichen werden soll 0x06 – 0x02 = 0x04 Bytes
Muster, das an position 0x00 für ad type 0xFF 0x00 0x06 0xFF 0xFF
Bytes an position 0x00 für die AD-Typ-0xFF 0x00 0x06 0xFF 0xFF (MATCH!)

Bewertung: PASS (nur zweite Musterüberstimmungen)

Auswerten der Übereinstimmung für das Ankündigungspaket [D]

Beschreibung Wert
AD-Typ des ersten Musters, das abgeglichen werden soll 0x01
Länge des ersten abzugleichenden Musters 0x03 – 0x02 = 0x01 Byte
Muster, das an position 0x00 für AD Type 0x01 0x01
Bytes an position 0x00 für die AD-Typ-0x01 0x02 (keine Übereinstimmung)
AD-Typ des zweiten Musters, das abgeglichen werden soll 0xFF (herstellerspezifische Daten)
Länge des abzugleichenden zweiten Musters 0x06 – 0x02 = 0x04 Bytes
Muster, das an position 0x00 für ad type 0xFF 0x00 0x06 0xFF 0xFF
Bytes an position 0x00 für die AD-Typ-0xFF 0x00 0x06 0xFF 0x01 (keine Übereinstimmung)

Urteil: FAIL (keines der Muster stimmt überein)

Beispiel: Anzeigenüberwachung

In diesem Beispiel wird die RSSI-Ankündigungsüberwachung veranschaulicht. Die RSSI-Werte für empfangene Ankündigungen, die mit einer angegebenen Bedingung übereinstimmen, sind unten dargestellt.

Zeit (in Sekunden) 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 Wert
RSSI_threshold_high -10db
RSSI_threshold_low -80dB
RSSI_threshold_low_time_interval 3 Sekunden
RSSI_sampling_period 2 Sekunden

Diagramm: Anzeigenüberwachung mit RSSI-Werten im Zeitverlauf.

Die Anzeigen-RSSI ist zum Zeitpunkt 3 größer als RSSI_threshold_high . Der periodische Timer für die Stichprobenentnahme beginnt beim Zeitpunkt 3. Alle 2 Sekunden läuft der periodische Timer ab, und der durchschnittliche RSSI-Wert der empfangenen Ankündigung wird an den Stapel weitergegeben.

Wenn der periodische Timer zum Zeitpunkt 5 abläuft, wird der Durchschnitt der während dieser Zeit empfangenen RSSIs (-23 dB) an den Stapel weitergegeben.

Wenn der periodische Timer zum Zeitpunkt 13 abläuft, liegt der Durchschnitt der während dieses Zeitraums empfangenen Anzeigen-RSSIs unter RSSI_threshold_low (-80 dB). Der Durchschnitt der Ankündigungs-RSSI (-85 dB) sollte an den Host weitergegeben werden.

Wenn RSSI_threshold_low_time_interval um 15 Uhr abläuft, wird eine Ankündigung mit einer RSSI von -85 dB an den Host weitergegeben. In diesem Beispiel werden keine weiteren Ankündigungen an den Host gesendet.

Beispiel: Überwachen von BAP-Ankündigungen von einem Gerät aus

Obwohl er mit einem CAP-Acceptor verbunden, aber nicht verbunden ist, kann ein Host BAP-Ankündigungen von diesem Gerät aus überwachen.

Parameter Wert
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 festgelegt; Bit 1 legt fest, ob das Gerät eine IRK verteilt hat
Advertisement_report_filtering_options Bit 0, 1 und 2
Peer_device_address <address>
Peer_device_address_type <Adresstyp>
Peer_device_IRK <IRK, wenn Bit 1 festgelegt ist>
Condition_type 0x01
Number_of_patterns 0x01
Pattern_data 0x04 (Länge)
0x16 (Dienstdaten – 16-Bit-UUID)
0x00 (Startbyte)
0x4E (niedriges Byte von ASCS UUID)
0x18 (hohes Byte von ASCS UUID)

Beispiel: Überwachen von CAP-Ankündigungen von einem Gerät aus

Obwohl er mit einem CAP Commander verbunden, aber nicht verbunden ist, konnte ein Host CAP-Ankündigungen von diesem Gerät aus überwachen.

Parameter Wert
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 festgelegt; Bit 1 legt fest, ob das Gerät eine IRK verteilt hat
Advertisement_report_filtering_options Bit 0, 1 und 2
Peer_device_address <address>
Peer_device_address_type <Adresstyp>
Peer_device_IRK <IRK, wenn Bit 1 festgelegt ist>
Condition_type 0x01
Number_of_patterns 0x01
Pattern_data 0x04 (Länge)
0x16 (Dienstdaten – 16-Bit-UUID)
0x00 (Startbyte)
0x53 (niedriges Byte von CAS UUID)
0x18 (hohes Byte von CAS UUID)

Flussdiagramm: Filterung von Ankündigungs- und Filterakzepterlisten

Dieses Flussdiagramm enthält ein Beispiel für die Controllerimplementierung der Filterung von Ankündigungs- und Filterakzepterlisten, wenn eine Ankündigung empfangen wird.

Ein Controller kann diese Logik anders implementieren, solange der Host über die Ankündigung oder HCI_VS_MSFT_LE_Monitor_Device_Event benachrichtigt wird, wie im Flussdiagramm angegeben.

Flussdiagramm, das den Filterprozess der Microsoft HCI-Erweiterung zeigt.

Sequenzdiagramm: Weitergabe der Scanantwort, die der Ankündigung zugeordnet ist

Sequenzdiagramm: Weitergabe der Scanantwort, die der Ankündigung zugeordnet ist

Dieses Sequenzdiagramm zeigt eine Weitergabeüberprüfungsantwort, die einer Ankündigung zugeordnet ist, die einem Ankündigungsfilter entspricht, wenn die aktive Überprüfung aktiviert ist. Dieses Diagramm zeigt nur die erwartete Abfolge von Ereignissen zwischen Controller und Host und zeigt keine Ereignisse zwischen dem Controller und einem bestimmten Gerät an. Angenommen, es gibt eine Anzeige A , die einen Werbefilter erfüllt, und eine Anzeige B , die den Werbefilter nicht erfüllt.

Sequenzdiagramm, das die HCI-Weitergabe der Scanantwort zeigt, die der Ankündigung zugeordnet ist.