HCI-Anforderungen

Die Host Controller Interface (HCI) wird für die Interaktion mit einem Bluetooth-Controller verwendet.

In diesem Dokument finden Sie eine Liste der HCI-Anforderungen für Bluetooth (BT) und Bluetooth Low Energy (BLE). Ziel ist es, dass Anbieter von Host-BT-Stacks und BT-Controllern diese Plattformanforderungen erfüllen, um die unten beschriebenen Funktionen nutzen zu können.

In diesem Dokument wird die Bluetooth Core 5.2-Spezifikation als „Spezifikation“ bezeichnet. Die Bluetooth 5.2-Kernspezifikation ist zusammen mit anderen übernommenen Dokumenten auf der Bluetooth SIG-Website verfügbar.

Allgemeine Designübersicht

Chipfunktionen und ‑konfiguration

Als offene Plattform bietet Android eine Matrix aus Softwareversionen, OEMs, Anbietern sowie Plattform- und Chipfunktionen.

Um die unterschiedlichen Anforderungen zu erfüllen und Migrationen zu verwalten, wird in diesem Dokument eine Designphilosophie beschrieben, die es BT-Controllern ermöglicht, ihre Funktionen (über die Standard-Bluetooth Core 5.2-Spezifikation hinaus) zu nutzen. Der Host-BT-Stack kann diese Funktionen dann verwenden, um zu bestimmen, welche Funktionen aktiviert werden sollen.

Offene Standards unterstützen

Ein Ziel von Android ist es, offene Standards nach der Ratifizierung in einer Bluetooth-Spezifikation zu unterstützen. Wenn eine unten beschriebene Funktion in einer zukünftigen Bluetooth-Spezifikation in Standard-HCI-Methoden verfügbar wird, werden wir diesen Ansatz wahrscheinlich zum Standard machen.

Anbieterspezifische Funktionen

Anbieterspezifischer Befehl: LE_Get_Vendor_Capabilities_Command

OpCode Command Field (OCF): 0x153

Befehlsparameter Größe Zweck
NA Leere Liste der Befehlsparameter

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
max_advt_instances
(Eingestellt)
1 Oktett Anzahl der unterstützten Anzeigeninstanzen.

Ab Version 0.98 reserviert.
Dieser Parameter ist in der Google-Funktionsspezifikation v0.98 und höher zugunsten von LE Extended Advertising (erweiterte LE-Werbung) verworfen, die in der BT-Spezifikation Version 5.0 und höher verfügbar ist.
offloaded_resolution_of_private-address
(Eingestellt)
1 Oktett BT-Chip-Funktion von RPA.
Wenn ein Chip unterstützt wird, muss er vom Host aktiviert werden.
0 = Nicht möglich
1 = Möglich

Ab Version 0.98 reserviert.
Dieser Parameter wird in der Google-Funktionsspezifikation v0.98 und höher zugunsten der Datenschutzfunktion eingestellt, die in der BT-Spezifikationsversion 4.2 und höher verfügbar ist.
total_scan_results_storage 2 Oktette Speicher für Scanergebnisse in Byte
max_irk_list_sz 1 Oktett Anzahl der in der Firmware unterstützten IRK-Einträge
filtering_support 1 Oktett Unterstützung für das Filtern im Controller
0 = Nicht unterstützt
1 = Unterstützt
max_filter 1 Oktett Anzahl der unterstützten Filter
activity_energy_info_support 1 Oktett Unterstützt die Berichterstellung von Aktivitäts- und Energieinformationen
0 = Nicht möglich
1 = Möglich
version_supported 2 Oktette Gibt die Version der unterstützten Google-Funktionsspezifikation an
byte[0] = Hauptnummer
byte[1] = Nebennummer

v1.05
byte[0] = 0x01
byte[1] = 0x05

Funktionserweiterungen in den folgenden Versionen:
v1.05:
  • iso_link_feedback_support
  • BQRv7
  • sniff_offload_support
V1.04:
  • BQRv6
total_num_of_advt_tracked 2 Oktette Gesamtzahl der Werbetreibenden, die für OnLost/OnFound-Zwecke erfasst werden
extended_scan_support 1 Oktett Unterstützt ein erweitertes Scanfenster und ‑intervall
debug_logging_supported 1 Oktett Unterstützt die Protokollierung binärer Debugging-Informationen vom Controller
LE_address_generation_offloading_support
(Eingestellt)
1 Oktett 0 = Nicht unterstützt
1 = Unterstützt

Ab Version 0.98 reserviert.
Dieser Parameter wird in der Google-Funktionsspezifikation v0.98 und höher zugunsten der Datenschutzfunktion eingestellt, die in der BT-Spezifikationsversion 4.2 und höher verfügbar ist.
A2DP_source_offload_capability_mask 4 Oktette Bitmasken für unterstützte Codec-Typen
Bit 0 – SBC
Bit 1 – AAC
Bit 2 – APTX
Bit 3 – APTX HD
Bit 4 – LDAC
Bit 5–31 sind reserviert
bluetooth_quality_report_support 1 Oktett Unterstützt die Meldung von Bluetooth-Qualitätsereignissen
0 = Nicht möglich
1 = Möglich
dynamic_audio_buffer_support 4 Oktette Unterstützt dynamischen Audio-Puffer im Bluetooth-Controller
Bitmasken für unterstützte Codec-Typen
Bit 0: SBC
Bit 1: AAC
Bit 2: APTX
Bit 3: APTX HD
Bit 4: LDAC
Bit 5–31 sind reserviert
a2dp_offload_v2_support 1 Oktett Unterstützt A2DP-Offload-v2-Befehle im Bluetooth-Controller (siehe A2DP-Offload starten, A2DP-Offload beenden)
0 = Nicht unterstützt
1 = Unterstützt
iso_link_feedback_support 1 Oktett Unterstützt das Ereignis ISO Link Feedback
0 = Nicht unterstützt
1 = Unterstützt
sniff_offload_support 1 Oktett Unterstützt Sniff Offload-Befehle in einem Bluetooth-Controller
0 = Nicht unterstützt
1 = Unterstützt

Batch-Scanergebnisse

Ein Designziel ist es, die Benachrichtigungen über das Bluetooth LE Scan Response-Ereignis an den Host zu optimieren, um Strom auf dem Host zu sparen.

Wenn der Controller den Host-App-Prozessor seltener über Scanergebnisse benachrichtigt, kann der Host-App-Prozessor länger im Leerlauf-/Ruhezustand bleiben. Dadurch wird der Stromverbrauch des Hosts reduziert. Der Rückgabeparameter total_scan_results_storage von LE_Get_Vendor_Capabilities_Command gibt die Chipfunktion zum Speichern von Scanergebnissen an.

Diese Funktion konzentriert sich auf die Verwaltung und Konfiguration des Speichers für LE-Scanergebnisse im Bluetooth-Controller. Der Speicher wird verwendet, um Werbedaten und Scandaten sowie Metadaten, die vom Controller empfangen werden, vorübergehend zu bündeln und später an den Host zu senden.

Die Firmware muss zwei Arten von Batching unterstützen, die gleichzeitig verwendet werden können:

  • Abgeschnitten. Enthält die folgenden Informationselemente: {MAC, TX Power, RSSI, Timestamp}
  • Vollständig Enthält die folgenden Informationselemente: {MAC, TX Power, RSSI, Timestamp, Adv Data, Scan Response}

LE_Batch_Scan_Command

OCF: 0x156

Befehlsparameter Größe Zweck
Batch_Scan_opcode 1 Oktett 0x1 – Kundenspezifische Funktion aktivieren
0x2 – Batch-Scan-Speicherparameter festlegen
0x3 – Batch-Scan-Parameter festlegen
0x4 – Batch-Scan-Ergebnisparameter lesen

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert. Durch Aktivieren der kundenspezifischen Funktion wird der Scan nicht gestartet.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Batch_Scan_opcode 1 Oktett 0x1 – Kundenspezifische Funktion aktivieren
0x2 – Batch-Scan-Speicherparameter festlegen
0x3 – Batch-Scan-Parameter festlegen
0x4 – Batch-Scan-Ergebnisparameter lesen

LE_Batch_Scan_Command: Kundenspezifische Funktion aktivieren

Untergeordneter OCF: 0x01

Unterbefehlsparameter Größe Zweck
enable_customer_specific_feature_set 1 Oktett 0x01 – Batch-Scan-Funktion aktivieren
0x00 – Batch-Scan-Funktion deaktivieren

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Batch_Scan_opcode 1 Oktett 0x1 – Kundenspezifische Funktion aktivieren
0x2 – Batch-Scan-Speicherparameter festlegen
0x3 – Batch-Scan-Parameter festlegen
0x4 – Batch-Scan-Ergebnisparameter lesen

LE_Batch_Scan_Command: Unterbefehl zum Festlegen des Speicherparameters für den Batch-Scan

Untergeordneter OCF: 0x02

Unterbefehlsparameter Größe Zweck
Batch_Scan_Full_Max 1 Oktett Maximaler Speicherplatz (in %), der dem vollständigen Stil zugewiesen wird
[Bereich: 0–100]
Batch_Scan_Truncated_Max 1 Oktett Maximaler Speicherplatz (in %), der dem gekürzten Stil zugewiesen wird
[Bereich: 0–100]
Batch_Scan_Notify_Threshold 1 Oktett Richte den Benachrichtigungsgrad (in %) für den einzelnen Speicherpool ein.
[Bereich: 0–100]
Wenn du den Wert auf 0 setzt, werden Benachrichtigungen deaktiviert. Anbieterspezifisches HCI-Ereignis wird generiert (Unterereignis „Speichergrenzwert überschritten“)

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Batch_scan_opcode 1 Oktett 0x02 [Set Batch Scan parameters]

LE_Batch_Scan_Command: Unterbefehl zum Festlegen des Batch-Scan-Parameters

Untergeordneter OCF: 0x03

Unterbefehlsparameter Größe Zweck
Batch_Scan_Mode 1 Oktett 0x00 – Batch-Scan ist deaktiviert
0x01 – Der gekürzte Modus ist aktiviert
0x02 – Der vollständige Modus ist aktiviert
0x03 – Der gekürzte und der vollständige Modus sind aktiviert
Duty_cycle_scan_window 4 Oktette Scanzeit für Batch-Scan (Anzahl der Slots)
Duty_cyle_scan_interval 4 Oktette Batch-Scanintervallzeitraum (Anzahl der Slots)
own_address_type 1 Oktett 0x00 – Öffentliche Geräteadresse
0x01 – Zufällige Geräteadresse
Batch_scan_Discard_Rule 1 Oktett 0 – Älteste Anzeige verwerfen
1 – Anzeige mit dem schwächsten RSSI verwerfen

Mit diesem Unterbefehl wird das Batch-Scannen gestartet, sofern es aktiviert ist. Beim gekürzten Scan werden die Ergebnisse in gekürzter Form gespeichert. Der eindeutige Schlüssel für „Truncated style“ ist {BD_ADDR, scan_interval}. Das bedeutet, dass für jedes Scanintervall nur ein BD_ADDR will erfasst wird. Der Datensatz, der im gekürzten Modus beibehalten werden soll, ist der folgende: {BD_ADDR, Tx Power, RSSI, Timestamp}

Wenn der vollständige Modus aktiviert ist, wird der aktive Scan verwendet und Scan-Antworten werden aufgezeichnet. Der eindeutige Schlüssel für den Stil „Vollständig“ ist „{MAC, Ad packet}“, unabhängig vom Scanintervall. Der Datensatz, der für den vollständigen Modus beibehalten werden soll, ist {BD_ADDR, Tx Power, RSSI, Timestamp, Ad packet, Scan Response}. Im Full-Stil wird dasselbe AD-Paket, wenn es in verschiedenen Scanintervallen mehrmals gesehen wird, nur einmal aufgezeichnet. Im gekürzten Modus ist jedoch die Sichtbarkeit von BA_ADDR in verschiedenen Scanintervallen von Interesse (einmal pro Scanintervall). Der RSSI ist der Durchschnittswert aller Duplikate einer eindeutigen Werbung innerhalb eines Scanintervalls.

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Batch_scan_opcode 1 Oktett 0x03 [Set Batch Scan Parameters]

LE_Batch_Scan_Command: Unterbefehl zum Lesen von Batch-Scanergebnissen

Unter-OCF: 0x04

Unterbefehlsparameter Größe Zweck
Batch_Scan_Data_read 1 Oktett 0x01 – Daten im abgeschnittenen Modus
0x02 – Daten im vollständigen Modus

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert. Wenn der Host diesen Befehl ausgibt, passen möglicherweise nicht alle Ergebnisse im Controller in ein Command Complete-Ereignis. Der Host wiederholt die Ausführung dieses Befehls, bis die entsprechenden Ergebnisse im Ereignis „Command Complete“ (Befehl abgeschlossen) 0 in der Anzahl der Datensätze angeben. Das bedeutet, dass der Controller keine weiteren Datensätze mehr an den Host senden muss. Jedes „Command Complete“-Ereignis kann mehrere Datensätze mit nur einem Datentyp (vollständig oder gekürzt) enthalten.

Die Zeitreferenzen von Controller und Host sind nicht synchronisiert. Die Einheit des Zeitstempels ist 50 ms. Der Wert des Zeitstempels basiert darauf, wann der Host die Read_Batch_Scan_Results_Sub_cmd angegeben hat. Wenn die Ankunftszeit eines Befehls in der Firmware T_c ist, ist die tatsächliche Zeit, zu der der Zeitstempel in der Firmware erfasst wurde, T_fw. Der Berichtszeitraum ist: (T_c – T_fw). T_c und T_fw sind im Zeitbereich der Firmware. So kann der Host berechnen, wie lange das Ereignis her ist.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Batch_scan_opcode 1 Oktett 0x03 [Set Batch Scan parameters]
Batch_Scan_data_read 1 Oktett Gibt das Format an (gekürzt oder vollständig).
num_of_records 1 Oktett Anzahl der Datensätze von Batch_Scan_data_read
format_of_data Variable Gekürzter Modus:
Address[0]: 6 Oktette
Address_Type[0]: 1 Oktett
Tx_Pwr[0]: 1 Oktett
RSSI[0] : 1 Oktett
Timestamp[0]: 2 Oktette
[mehrere Datensätze (num_of_records) mit dem oben genannten Format]

Vollständiger Modus:
Address[0]: 6 Oktette
Address_Type[0]: 1 Oktett
Tx_Pwr[0]: 1 Oktett
RSSI[0]: 1 Oktett
Timestamp[0]: 2 Oktette
Adv packet_len[0]: 1 Oktett
Adv_packet[0]: Adv_packet_len Oktette
Scan_data_resp_len[0]: 1 Oktett
Scan_data_resp[0]: Scan_data_resp  Oktette
[mehrere Datensätze mit dem oben genannten Format (num_of_records)]

Inhaltsfilter für Werbepakete

Damit können Sie den Advertising Packet Content Filter (APCF) im Controller aktivieren, deaktivieren oder einrichten. APCF-Filter filtern Werbeberichte im Controller, aber nicht periodische Werbung.

LE_APCF_Command

OCF: 0x157

Befehlsparameter Größe Zweck
APCF_opcode 1 Oktett 0x00 – APCF Enable
0x01 – APCF Set Filtering parameters
0x02 – APCF Broadcaster Address
0x03 – APCF Service UUID
0x04 – APCF Service Solicitation UUID
0x05 – APCF Local Name
0x06 – APCF Manufacturer Data
0x07 – APCF Service Data
0x08 – APCF Transport Discovery Service
0x09 – APCF AD Type Filter
0x10 – 0xAF – Für zukünftige Verwendung reserviert
0xB0 – 0xDF – Für Anbieter reserviert
0xE0 – 0xFE – Für zukünftige Verwendung reserviert
0xFF – APCF Read extended Features

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Retourenstatus
APCF_opcode 1 Oktett 0x00 – APCF Enable
0x01 – APCF Set Filtering parameters
0x02 – APCF Broadcaster Address
0x03 – APCF Service UUID
0x04 – APCF Service Solicitation UUID
0x05 – APCF Local Name
0x06 – APCF Manufacturer Data
0x07 – APCF Service Data
0x08 – APCF Transport Discovery Service
0x09 – APCF AD Type Filter
0x10 – 0xAF – Für zukünftige Verwendung reserviert
0xB0 – 0xDF – Für Anbieter reserviert
0xE0 – 0xFE – Für zukünftige Verwendung reserviert
0xFF – APCF Read extended Features

LE_APCF_Command: Enable_sub_cmd

Sub-OCF: 0x00

Unterbefehlsparameter Größe Zweck
APCF_enable 1 Oktett 0x01 – APCF-Funktion aktivieren
0x00 – APCF-Funktion deaktivieren

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
APCF_opcode 1 Oktett 0x0 – APCF aktivieren
APCF_Enable 1 Oktett Aktivieren/Deaktivieren über APCF_enable

LE_APCF_Command: set_filtering_parameters_sub_cmd

Mit diesem Unterbefehl können Sie eine Filterspezifikation hinzufügen oder löschen oder eine Filterliste für die On-Chip-Filterung leeren.

Untergeordneter OCF: 0x01

Unterbefehlsparameter Größe Zweck
APCF_Action 1 Oktett 0x00 – Hinzufügen
0x01 – Löschen
0x02 – Leeren
Beim Löschen wird der jeweilige Filter zusammen mit den zugehörigen Feature-Einträgen in anderen Tabellen gelöscht.
Mit „Löschen“ werden alle Filter und zugehörigen Einträge in anderen Tabellen gelöscht.
APCF_Filter_Index 1 Oktett Filter index (0, max_filter-1)
APCF_Feature_Selection 2 Oktette Bitmasken für die ausgewählten Funktionen:
Bit 0: Aktiviert den Broadcast-Adressfilter
Bit 1: Aktiviert den Filter für Änderungen an Dienstdaten
Bit 2: Aktiviert die Prüfung der Dienst-UUID
Bit 3: Aktiviert die Prüfung der Dienst-Solicitation-UUID
Bit 4: Aktiviert die Prüfung des lokalen Namens
Bit 5: Aktiviert die Prüfung der Herstellerdaten
Bit 6: Aktiviert die Prüfung der Dienstdaten
Bit 7: Aktiviert die Prüfung des Transport Discovery Service
Bit 8: Aktiviert die Prüfung des Anzeigentyps
APCF_List_Logic_Type 2 Oktette Logischer Vorgang für jede Merkmalsauswahl (pro Bitposition), die in APCF_Feature_Selection angegeben ist.
Nur gültig, wenn eine Funktion aktiviert ist.
Bitpositionswert:
0: ODER
1: UND
Wenn die UND-Logik ausgewählt ist, wird ein ADV-Paket nur dann durch den Filter geleitet, wenn es ALLE Einträge in der Liste enthält.
Wenn die ODER-Logik ausgewählt ist, wird ein ADV-Paket vom Filter durchgelassen, wenn es einen der Einträge in der Liste enthält.
APCF_Filter_Logic_Type 1 Oktett 0x00: ODER
0x01: UND
Hinweis: Der Logiktyp ist für die ersten drei Felder von APCF_Feature_Selection, die immer die UND-Logik verwenden, nicht verfügbar. Sie gelten nur für die vier Felder (Bit 3 bis Bit 6) von APCF_Feature_Selection.
rssi_high_thresh 1 Oktett [in dBm]
Die Anzeige wird nur dann als gesehen betrachtet, wenn das Signal über dem hohen RSSI-Schwellenwert liegt. Andernfalls muss sich die Firmware so verhalten, als hätte sie das Ereignis nie gesehen.
delivery_mode 1 Oktett 0x00 – immediate
0x01 – on_found
0x02 – batched
onfound_timeout 2 Oktette Nur gültig, wenn delivery_mode on_found ist.
[in milliseconds]
Zeit, die die Firmware benötigt, um zusätzliche Anzeigen zu erfassen, bevor sie einen Bericht sendet.
onfound_timeout_cnt 1 Oktett Nur gültig, wenn delivery_mode on_found ist.
[count]
Wenn eine Anzeige in onFound für die Dauer von onfound_timeout in der Firmware verbleibt, werden einige Anzeigen erfasst und die Anzahl wird geprüft. Wenn die Anzahl onfound_timeout_cnt überschreitet, wird sie sofort danach gemeldet.OnFound
rssi_low_thresh 1 Oktett Nur gültig, wenn delivery_mode on_found ist.
[in dBm]
Das Werbetreibendenpaket wird als nicht gesehen betrachtet, wenn der RSSI des empfangenen Pakets nicht über dem niedrigen RSSI-Grenzwert liegt.
onlost_timeout 2 Oktette Nur gültig, wenn delivery_mode on_found ist.
[in milliseconds]
If an advertisement, after being found, is not seen contiguously for the lost_timeout period, it will immediately be reported lost.
num_of_tracking_entries 2 Oktette Nur gültig, wenn delivery_mode on_found ist.
[count]
Gesamtzahl der Werbetreibenden, die pro Filter erfasst werden sollen.

Für RSSI-Werte muss das Zweierkomplement verwendet werden, um negative Werte darzustellen.

Der Host muss in der Lage sein, mehrere Filter mit APCF_Application_Address_type auf 0x02 (für alle Broadcaster-Adressen) zu konfigurieren, um verschiedene Filterkombinationen zu verwalten.

Filterung, Batching und Berichterstellung sind miteinander verbundene Konzepte. Jede Anzeige und die zugehörige Scan-Antwort muss alle Filter nacheinander durchlaufen. Die resultierenden Aktionen (delivery_mode) sind daher eng mit der Filterung verbunden. Die Bereitstellungsmodi sind report_immediately, batch und onFound. Der Wert OnLost bezieht sich auf OnFound in dem Sinne, dass er nach OnFound kommt, wenn er verloren geht.

Dieser Verarbeitungsablauf stellt das konzeptionelle Modell dar:

Wenn ein Frame für eine Anzeige (oder eine Scanantwort) empfangen wird, wird er in serieller Reihenfolge auf alle Filter angewendet. Es ist möglich, dass eine Anzeige aufgrund eines Filters sofort gemeldet wird, während dieselbe Anzeige aufgrund eines anderen Filters in einem Batch verarbeitet wird.

Mit den RSSI-Pegelschwellen (hoch und niedrig) können Sie steuern, wann der Frame für die Filterverarbeitung sichtbar ist, auch wenn ein gültiges Paket vom Controller empfangen wird. Wenn der Bereitstellungsmodus auf „Sofort“ oder „Batch“ festgelegt ist, wird der RSSI eines Frames für die weitere Verarbeitung durch den Controller berücksichtigt. Für verschiedene Apps sind unterschiedliche Berichts- und Batching-Verhaltensweisen erforderlich. Dadurch können mehrere Apps gleichzeitig direkt Berichte erstellen und/oder Ergebnisse in der Firmware zusammenfassen. Ein Beispiel ist ein Fall, in dem ein Batch-Scan von einer App aktiv ist und später ein regulärer LE-Scan von einer anderen App ausgegeben wird. Bevor ein Batch-Scan ausgegeben wird, legt das Framework/die App entsprechende Filter fest. Wenn die zweite App später einen regulären Scan ausführt, wird die Batch-Verarbeitung fortgesetzt. Aufgrund des regelmäßigen Scans ist es jedoch so, als würde dem LE-Scanbefehl konzeptionell ein Nullfilter (zusammen mit allen vorhandenen Filtern) hinzugefügt. Die Parameter des LE-Scanbefehls haben Vorrang, wenn sie aktiv sind. Wenn der reguläre LE-Scan deaktiviert ist, wird der Controller auf einen vorherigen Batch-Scan zurückgesetzt, sofern dieser vorhanden war.

Der OnFound-Zustellungsmodus basiert auf konfigurierten Filtern. Eine Kombination, die die Aktion eines Filters auslöst, gilt als die zu verfolgende Einheit für onLost. Das entsprechende Ereignis ist das untergeordnete Ereignis „LE Advt tracking“.

Der OnFound/OnLost-Übergang für einen Filter (falls aktiviert) sieht so aus:

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
APCF_opcode 1 Oktett 0x01 – APCF Set Filtering Parameters
APCF_Action 1 Oktett Gib APCF_Action als Antwort auf den Befehl aus.
APCF_AvailableSpaces 1 Oktett Anzahl der verfügbaren Einträge in der Filtertabelle

LE_APCF_Command: broadcast_address_sub_cmd

Mit diesem Unterbefehl wird eine Werbetreibendenadresse hinzugefügt oder gelöscht oder die Liste der Werbetreibendenadressen für die On-Chip-Filterung gelöscht.

Untergeordnetes OCF: 0x02

Unterbefehlsparameter Größe Zweck
APCF_Action 1 Oktett 0x00 – Hinzufügen
0x01 – Löschen
0x02 – Leeren
Mit „Löschen“ wird die angegebene Broadcaster-Adresse im angegebenen Filter gelöscht.
Mit „Clear“ werden alle Broadcaster-Adressen im angegebenen Filter gelöscht.
APCF_Filter_Index 1 Oktett Filter index (0, max_filter-1)
APCF_Broadcaster_Address 6 Oktett 6‑Byte-Geräteadresse, die der Liste der Broadcaster-Adressen hinzugefügt oder daraus gelöscht werden soll
APCF_Application_Address_type 1 Oktett 0x00: Öffentlich
0x01: Zufällig
0x02: Nicht zutreffend (Adressentyp ignorieren)
Zum Filtern von Werbeberichten mit Identitätsadressentypen (0x02, 0x03). Wenn Sie Werbeberichte mit den Adresstypen 0x02 und 0x03 abrufen möchten, legen Sie dieses Feld auf 0x02 fest: NA (Adresstyp ignorieren).

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
APCF_opcode 1 Oktett 0x02 – APCF-Broadcaster-Adresse
APCF_Action 1 Oktett Gib APCF_Action als Antwort auf den Befehl aus.
APCF_AvailableSpaces 1 Oktett Anzahl der noch verfügbaren kostenlosen Einträge in der Tabelle „Broadcast Address“

LE_APCF_Command: service_uuid_sub_cmd

Mit diesem Unterbefehl wird eine Dienst-UUID hinzugefügt oder gelöscht oder eine Dienst-UUID-Liste für die On-Chip-Filterung gelöscht.

Untergeordneter OCF: 0x03

Unterbefehlsparameter Größe Zweck
APCF_Action 1 Oktett 0x00 – Hinzufügen
0x01 – Löschen
0x02 – Leeren
Mit „Löschen“ wird die angegebene Dienst-UUID-Adresse im angegebenen Filter gelöscht.
Mit „Clear“ werden alle Dienst-UUIDs im angegebenen Filter gelöscht.
APCF_Filter_Index 1 Oktett Filterindex (0, max_filter–1)
APCF_UUID 2,4,16 Oktett Die Dienst-UUID (16‑Bit, 32‑Bit oder 128‑Bit) zum Hinzufügen oder Löschen aus der Liste.
APCF_UUID_MASK 2,4,16 Oktett Die Dienst-UUID-Maske (16 Bit, 32 Bit oder 128 Bit), die der Liste hinzugefügt werden soll. Es muss dieselbe Länge wie APCF_UUID. haben.

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
APCF_opcode 1 Oktett 0x03 – APCF-Dienst-UUID
APCF_Action 1 Oktett Gib APCF_Action als Antwort auf den Befehl aus.
APCF_AvailableSpaces 1 Oktett Anzahl der noch verfügbaren kostenlosen Einträge in der Tabelle „Service-UUID“

LE_APCF_Command: solicitation_uuid_sub_cmd

Mit diesem Unterbefehl können Sie eine Aufforderungs-UUID hinzufügen oder löschen oder eine Liste von Aufforderungs-UUIDs für die On-Chip-Filterung löschen.

Unter-OCF: 0x04

Unterbefehlsparameter Größe Zweck
APCF_Action 1 Oktett 0x00 – Hinzufügen
0x01 – Löschen
0x02 – Leeren
Beim Löschen wird die Aufforderungs-UUID-Adresse im angegebenen Filter gelöscht.
Mit „Clear“ werden alle UUIDs für Anfragen im angegebenen Filter gelöscht.
APCF_Filter_Index 1 Oktett Filterindex (0, max_filter–1)
APCF_UUID 2,4,16 Oktett Die Solicitation-UUID (16‑Bit, 32‑Bit oder 128‑Bit), die der Liste hinzugefügt oder daraus gelöscht werden soll.
APCF_UUID_MASK 2,4,16 Oktett Die Solicitation-UUID-Maske (16‑Bit, 32‑Bit oder 128‑Bit), die der Liste hinzugefügt werden soll. Es sollte dieselbe Länge wie APCF_UUID haben.

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
APCF_opcode 1 Oktett 0x04 – APCF-Anfrage-UUID
APCF_Action 1 Oktett Gib APCF_Action als Antwort auf den Befehl aus.
APCF_AvailableSpaces 1 Oktett Anzahl der noch verfügbaren kostenlosen Einträge in der Tabelle mit der Aufforderungs-UUID

LE_APCF_Command: local_name_sub_cmd

Mit diesem Unterbefehl können Sie einen lokalen Namen hinzufügen oder löschen oder die Liste der lokalen Namen für die On-Chip-Filterung löschen.

Unter-OCF: 0x05

Unterbefehlsparameter Größe Zweck
APCF_Action 1 Oktett 0x00 – Hinzufügen
0x01 – Löschen
0x02 – Leeren
Beim Löschen wird der angegebene lokale Namensstring im angegebenen Filter gelöscht.
Mit „Clear“ werden alle lokalen Namensstrings im angegebenen Filter gelöscht.
APCF_Filter_Index 1 Oktett Filterindex (0, max_filter–1)
APCF_LocName_Mandata_or_SerData Variable Größe Ein String für den lokalen Namen.

Hinweise:
  • Derzeit darf ein lokaler Name maximal 29 Zeichen lang sein.
  • Nicht zutreffend, wenn die Aktion „Clear“ (0x2) ist.

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
APCF_opcode 1 Oktett 0x05 – APCF Local Name
APCF_Action 1 Oktett Gib APCF_Action als Antwort auf den Befehl aus.
APCF_AvailableSpaces 1 Oktett Anzahl der noch verfügbaren kostenlosen Einträge in der Tabelle „Lokaler Name“

LE_APCF_Command: manf_data_sub_cmd

Mit diesem Unterbefehl kann ein Herstellerdatenstring hinzugefügt oder gelöscht oder die Liste der Herstellerdatenstrings für die On-Chip-Filterung gelöscht werden.

Sub-OCF: 0x06

Unterbefehlsparameter Größe Zweck
APCF_Action 1 Oktett 0x00 – Hinzufügen
0x01 – Löschen
0x02 – Leeren
Mit „Löschen“ wird der angegebene Herstellerdatenstring im angegebenen Filter gelöscht.
Mit „Clear“ werden alle Herstellerdatenstrings im angegebenen Filter gelöscht.
APCF_Filter_Index 1 Oktett Filterindex (0, max_filter–1)
APCF_LocName_Mandata_or_SerData Variable Größe Eine Zeichenfolge für Herstellerdaten.

Hinweise:
  • Derzeit darf ein lokaler Name maximal 29 Zeichen lang sein.
  • Nicht zutreffend, wenn die Aktion „Clear“ (0x2) ist.
APCF_ManData_Mask Variable Größe Die Maske für Herstellerdaten, die der Liste hinzugefügt werden soll. Sie sollte dieselbe Länge wie APCF_LocName_or_ManData_or_SerData haben.

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
APCF_opcode 1 Oktett 0x06 – APCF Manufacturer Data
APCF_Action 1 Oktett Gib APCF_Action als Antwort auf den Befehl aus.
APCF_AvailableSpaces 1 Oktett Anzahl der noch verfügbaren kostenlosen Einträge in der Tabelle „Herstellerdaten“

LE_APCF_Command: service_data_sub_cmd

Mit diesem Unterbefehl können Sie einen Dienstdatenstring hinzufügen oder löschen oder die Liste der Dienstdatenstrings für die On-Chip-Filterung löschen.

Untergeordneter OCF: 0x07

Unterbefehlsparameter Größe Zweck
APCF_Action 1 Oktett 0x00 – Hinzufügen
0x01 – Löschen
0x02 – Leeren
Mit „Löschen“ wird der angegebene Dienstdatenstring im angegebenen Filter gelöscht.
Mit „Clear“ werden alle Dienstdaten-Strings im angegebenen Filter gelöscht.
APCF_Filter_Index 1 Oktett Filterindex (0, max_filter–1)
APCF_LocName_Mandata_or_SerData Variable Größe Eine Zeichenfolge für Dienstdaten.

Hinweise:
  • Derzeit darf ein lokaler Name maximal 29 Zeichen lang sein.
  • Nicht zutreffend, wenn die Aktion „Clear“ (0x2) ist.
APCF_LocName_Mandata_or_SerData_Mask Variable Größe Die Dienstdatenmaske, die der Liste hinzugefügt werden soll. Es muss dieselbe Länge wie APCF_LocName_or_ManData_or_SerData. haben.

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
APCF_opcode 1 Oktett 0x07 – APCF-Dienstdaten
APCF_Action 1 Oktett Gib APCF_Action als Antwort auf den Befehl aus.
APCF_AvailableSpaces 1 Oktett Anzahl der noch verfügbaren kostenlosen Einträge für die Tabelle „Dienstdaten“

LE_APCF_Command: ad_type_sub_cmd

Mit diesem Unterbefehl können Sie einen AD-Typ hinzufügen oder löschen oder die Liste der AD-Typen für die On-Chip-Filterung löschen. Verwenden Sie read_extended_features_sub_cmd, um zu prüfen, ob dieser Befehl unterstützt wird.
Wenn APCF_AD_DATA_Length = 0 ist, wird APCF_AD_TYPE gefiltert, ohne AD-Daten und AD-Datenmaske zu vergleichen. Wenn die Datenlänge des empfangenen ADV-Pakets AD_DATA_LENGTH überschreitet, vergleiche nur die ersten AD_DATA_LENGTH Bytes der AD-Daten und ignoriere die restlichen Daten.

Unter-OCF: 0x09

Unterbefehlsparameter Größe Zweck
APCF_Action 1 Oktett 0x00 – Hinzufügen
0x01 – Löschen
0x02 – Leeren
Mit „Löschen“ wird der angegebene Anzeigentyp im angegebenen Filter gelöscht.
Mit „Clear“ werden alle Anzeigentypen im angegebenen Filter gelöscht.
APCF_Filter_Index 1 Oktett Filterindex (0, max_filter–1)
APCF_AD_TYPE 1 Oktett Der Anzeigentyp zum Hinzufügen oder Löschen aus der Liste. Ignorieren, wenn APCF_Action = 0x02 (Clear)
APCF_AD_DATA_Length 1 Oktett 0x00: Dateninhalte nicht filtern
Ignorieren, wenn APCF_Action = 0x02 (Clear)
APCF_AD_DATA Variable Größe Variable Größe, basierend auf APCF_AD_DATA_Length
Wird ignoriert, wenn APCF_Action = 0x02 (Löschen)
APCF_AD_DATA_MASK Variable Größe Variable Größe, basierend auf APCF_AD_DATA_Length
Wird ignoriert, wenn APCF_Action = 0x02 (Clear)
Muss dieselbe Länge wie APCF_AD_DATA haben.

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
APCF_opcode 1 Oktett 0x09 – APCF-Anzeigentyp
APCF_Action 1 Oktett Gib APCF_Action als Antwort auf den Befehl aus.
APCF_AvailableSpaces 1 Oktett Anzahl der noch verfügbaren kostenlosen Einträge in der Tabelle „Anzeigentyp“

LE_APCF_Command: read_extended_features_sub_cmd

Mit diesem Unterbefehl werden erweiterte APCF-Funktionen gelesen.

Untergeordneter OCF: 0xFF

Unterbefehlsparameter Größe Zweck
Nicht zutreffend Der Befehlsparameter ist leer.

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
APCF_opcode 1 Oktett 0xFF – APCF_Read_Extended_Features
APCF_extended_features 2 Oktett

Bitmasken für unterstützte erweiterte Funktionen:

  • Bit 0: Filter für Transport Discovery Service unterstützen
  • Bit 1: Unterstützung des Filters „Anzeigentyp“
  • Bit 2 bis 15: Reserviert für zukünftige Verwendung

Wert des Bits

  • 0 = Nicht unterstützt
  • 1 = Unterstützt

Befehl für Controller-Aktivität und Energieinformationen

Ziel dieser Informationen ist es, dass übergeordnete Hostsystemfunktionen die Gesamtaktivitäten aller Komponenten analysieren können, einschließlich des BT-Controllers und seines Makrozustands, in Verbindung mit dem, was in den Apps und im Framework passiert. Dazu sind die folgenden Informationen vom BT-Stack und vom Controller erforderlich:

  • BT-Stack: Melden des aktuellen Makrobetriebszustands des Controllers
  • Firmware: Zusammengefasste Aktivitäts- und Energiedaten melden

Makrozustände des BT-Host-Stacks, die auf Nutzerebene bestimmt werden:

  • Im Leerlauf: [Seitenscan, LE-Werbung, Anfragescan, LE-Scan]
  • Scan: [Paging/Anfrage/Verbindungsversuch]
  • Aktiv: [ACL-Verbindung aktiv, SCO-Verbindung läuft, Sniff-Modus]

Der Controller erfasst während seines Lebenszyklus die Sendezeit, die Empfangszeit, die Leerlaufzeit und den gesamten Energieverbrauch. Sie werden gelöscht, wenn sie vom Host gelesen werden.

LE_Get_Controller_Activity_Energy_Info

Dies ist ein anbieterspezifischer Befehl.

OCF: 0x159

Unterbefehlsparameter Größe Zweck
NA Leere Befehlsparameter

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
total_tx_time_ms 4 Oktette Gesamtzeit für die Durchführung von Transaktionen
total_rx_time_ms 4 Oktette Gesamtzeit für Rx
total_idle_time_ms 4 Oktette Gesamtzeit im Leerlauf (Energiesparmodi ohne Schlaf)
total_energy_used 4 Oktette Gesamtenergieverbrauch [Produkt aus Strom (mA), Spannung (V) und Zeit (ms)]

Befehl für LE-Scanparameter für erweiterten Satz

Mit diesem Befehl kann ein größeres Scanfenster und ‑intervall im Controller aktiviert werden. Gemäß der BT Core 5.2-Spezifikation haben Scanfenster und ‑intervalle eine Obergrenze von 10,24 Sekunden, was Scanintervalle über 10,24 Sekunden für Apps erschwert.

Grundlegende Referenz: BT Core 5.2 Specification, Seite 2493 (LE Set Scan Parameters Command)

OCF: 0x15A

Befehlsparameter Größe Zweck
LE_Ex_Scan_Type 1 Oktett 0x00 – Passives Scannen. Es werden keine SCAN_REQ-Pakete gesendet (Standard).
0x01 – Aktives Scannen. Es werden möglicherweise SCAN_REQ Pakete gesendet.
LE_Ex_Scan_Interval 4 Oktette Definiert als das Zeitintervall vom Beginn des letzten LE-Scans des Controllers bis zum Beginn des nachfolgenden LE-Scans.
Bereich: 0x0004 bis 0x00FFFFFF
Standard: 0x0010 (10 ms)
Zeit = N × 0,625 ms
Zeitbereich: 2,5 ms bis 10.442,25 Sekunden
LE_Ex_Scan_Window 4 Oktette Die Dauer des LE-Scans. LE_Scan_Window muss kleiner oder gleich LE_Scan_Interval sein.
Bereich: 0x0004 bis 0xFFFF
Standard: 0x0010 (10 ms)
Zeit = N × 0,625 ms
Zeitbereich: 2,5 ms bis 40,95 Sekunden
Own_Address_Type 1 Oktett 0x00 – Öffentliche Geräteadresse (Standard)
0x01 – Zufällige Geräteadresse
LE_Ex_Scan_Filter_Policy 0x00 – Alle Werbepakete annehmen (Standard). Direkte Werbepakete, die nicht für dieses Gerät bestimmt sind, müssen ignoriert werden.
0x01 – Werbepakete von Geräten, die nicht auf der Zulassungsliste stehen, ignorieren Nur Liste. Pakete für Direktwerbung, die nicht für dieses Gerät bestimmt sind, müssen ignoriert werden.

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“

Befehl zum Abrufen von Controller-Debugging-Informationen

Ziel dieses Informationselements ist es, Controller-Debugging-Informationen von einem Host in binärer Form für die Nachbearbeitung und Analyse zu erhalten. So können Probleme vor Ort behoben werden und Entwickler erhalten ein Toolkit zum Protokollieren von Informationen für die Analyse. Ein Verantwortlicher kann die Informationen auf Anfrage eines Hosts über das Ereignis (Unterereignis „Controller Debug Info“) oder autonom bereitstellen, wenn er dies wünscht. Beispiele für Anwendungsfälle sind das Melden von Informationen zum Firmwarestatus, Informationen zum Absturz-Dump, Protokollierungsinformationen usw.

OCF: 0x15B

Befehlsparameter Größe Zweck
Leere Liste von Befehlsparametern

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“

Unterstützung für A2DP-Hardware-Offload

Die A2DP-Offload-Funktion unterstützt das Auslagern der A2DP-Audio-Codierung an einen Audioprozessor, der an den BT-Controller angeschlossen ist. Der codierte Audio-Datenstream wird direkt vom Audioprozessor an den Bluetooth-Controller übergeben, ohne dass der Bluetooth-Host beteiligt ist. Der BT-Host ist weiterhin für die Konfiguration und Steuerung der A2DP-Sitzung verantwortlich. Es gibt zwei Versionen der Befehle. Die alten Befehle mit Sub-OCF 0x01–0x02 unterstützen nur Open-Source-Codecs. Die Versionen mit Sub-OCF 0x03–0x04 sind unabhängig vom konfigurierten Codec.

OCF: 0x15D

A2DP-Offload starten (alt)

Untergeordneter OCF: 0x01

Mit diesem Befehl konfigurieren Sie sowohl den A2DP-Offload-Prozess als auch den A2DP-Stream.

Befehlsparameter Größe Zweck
Codec 4 Oktette Gibt den Codec-Typ an.
0x01 – SBC
0x02 – AAC
0x04 – APTX
0x08 – APTX HD
0x10 – LDAC
Max_Latency 2 Oktette Maximal zulässige Latenz (in ms). Ein Wert von null deaktiviert das Leeren.
SCMS-T_Enable 2 Oktette Byte 0: Flag, das das Hinzufügen des SCMS-T-Headers ermöglicht.
  • 0x00 – SCMS-T-Header nicht enthalten.
  • 0x01 – SCMS-T-Header enthalten.

Oktett 1: Wert für den SCMS-T-Header, wenn er aktiviert ist.

Sampling_Frequency 4 Oktette 0x01 – 44.100 Hz
0x02 – 48.000 Hz
0x04 – 88.200 Hz
0x08 – 96.000 Hz
Bits_Per_Sample 1 Oktett 0x01 – 16 Bits pro Sample
0x02 – 24 Bits pro Sample
0x04 – 32 Bits pro Sample
Channel_Mode 1 Oktett 0x01 – Mono
0x02 – Stereo
Encoded_Audio_Bitrate 4 Oktette Die codierte Audiobitrate in Bits pro Sekunde.
0x00000000: Die Audio-Bitrate ist nicht angegeben oder wird nicht verwendet.
0x00000001 – 0x00FFFFFF: Bitrate des codierten Audiosignals in Bits pro Sekunde.
0x01000000 – 0xFFFFFFFF – Reserviert.
Connection_Handle 2 Oktette Verbindungs-Handle der konfigurierten A2DP-Verbindung
L2CAP_Channel_ID 2 Oktette L2CAP-Channel-ID, die für diese A2DP-Verbindung verwendet werden soll
L2CAP_MTU_Size 2 Oktette Maximale Größe der L2CAP-MTU mit codierten Audiopaketen
Codec_Information 32 Oktette Codec-spezifische Informationen.

SBC-Codec:

Informationen zu SBC-Codec-spezifischen Informationselementen finden Sie in A2DP v1.3.
Oktett 0: Blocklänge | Unterbänder | Zuweisungsmethode
Oktett 1: Minimaler Bitpool-Wert
Oktett 2: Maximaler Bitpool-Wert
Oktett 3: Sampling-Frequenz | Kanalmodus
Oktett 4–31: reserviert

AAC-Codec:

Informationselemente für den AAC-Codec in A2DP v1.3
Byte 0: Object Type
Byte 1; b7: VBR
Byte 2–31: reserviert

LDAC-Codec:

Oktet 0–3: Anbieter-ID
0x0000012D

Oktett 4–5: Codec-ID
0x00AA – LDAC
Alle anderen Werte sind reserviert.

6. Oktett: Bitratenindex:
0x00 – Hoch
0x01 – Mittel
0x02 – Niedrig
0x03 – 0x7E – Reserviert
0x7F – ABR (Adaptive Bitrate)
0x80 – 0xFF – Reserviert

Oktett 7: LDAC-Kanalmodus
0x01 – Stereo
0x02 – Dual
0x04 – Mono
Andere sind reserviert

Oktette 8–31: reserviert

Alle anderen Codecs:

Oktetts 0–31: reserviert

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Sub_Opcode 1 Oktett 0x01 – A2DP-Offload starten

A2DP-Offload starten

Untergeordneter OCF: 0x03

Mit diesem Befehl konfigurieren Sie sowohl den A2DP-Offload-Prozess als auch den A2DP-Stream.

Befehlsparameter Größe Zweck
Connection Handle 2 Oktette Handle der aktiven HCI-Verbindung
L2CAP_Channel_ID 2 Oktette Kennung des für das A2DP-Streaming geöffneten L2CAP-Kanals
Data_Path_Direction 1 Oktett 0x00 – Ausgabe (AVDTP-Quelle/Merge)
0x01 – Eingabe (AVDTP-Senke/Split)
Peer_MTU 2 Oktette Die maximale Größe von L2CAP-Paketen, die mit dem Peer ausgehandelt wurde.
CP_Enable_SCMS_T 1 Oktett 0x00 – SCMS-T-Header für Inhaltsschutz deaktivieren
0x01 – SCMS-T-Header für Inhaltsschutz aktivieren
CP_Header_SCMS_T 1 Oktett Wenn der SCMS-T-Inhaltsschutz-Header aktiviert ist (CP_SCMS_T_Enable auf 0x01 gesetzt), wird der Headerwert definiert, der dem Audioinhalt vorangestellt ist (siehe A2DP, Abschnitt 3.2.1–2), wie in Bluetooth Assigned Numbers, Abschnitt 6.3.2, definiert.
Wird ignoriert, wenn der SCMS‑T-Inhaltsschutz nicht aktiviert ist.
Vendor_Specific_Parameters_Length 1 Oktett Länge der anbieterspezifischen Parameter im Bereich von 0 bis 128.
Der Wert 0 wird verwendet, wenn keine zusätzlichen Parameter angegeben sind.
Vendor_Specific_Parameters 0–128 Oktette Anbieterspezifische Parameter, die von der Bluetooth Audio HAL bereitgestellt werden, CodecParameters.vendorSpecificParameters[].

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Sub_Opcode 1 Oktett 0x03 – A2DP-Offload starten

A2DP-Offload beenden (Legacy)

Untergeordneter OCF: 0x02

Mit diesem Befehl wird der A2DP-Offload-Stream beendet.

Befehlsparameter Größe Zweck
Leere Liste der Befehlsparameter.

Für diesen Befehl sind keine Parameter definiert.

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Sub_Opcode 1 Oktett 0x02 – A2DP-Offload beenden

A2DP-Offload beenden

Unter-OCF: 0x04

Mit diesem Befehl wird der A2DP-Offload-Stream beendet.

Befehlsparameter Größe Zweck
Connection Handle 2 Oktette Handle der aktiven HCI-Verbindung
L2CAP_Channel_ID 2 Oktette Kennung des für das A2DP-Streaming geöffneten L2CAP-Kanals
Data_Path_Direction 1 Oktett 0x00 – Ausgabe (AVDTP-Quelle/Merge)
0x01 – Eingabe (AVDTP-Senke/Split)

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Sub_Opcode 1 Oktett 0x04 – A2DP-Offload beenden

Befehl für Bluetooth-Qualitätsbericht

Mit dem Befehl „BT Quality Report“ wird der Mechanismus im Bluetooth-Controller gestartet, um Bluetooth-Qualitätsereignisse an den Host zu melden. Sie können vier Optionen aktivieren:

  • Qualitätsüberwachungsmodus: Der Controller sendet regelmäßig ein BQR-Unterereignis, das sich auf die Linkqualität bezieht, an den Host.
  • LSTO wird erreicht: Wenn länger als die Hälfte des LSTO-Werts (Link Supervision TimeOut) keine Pakete vom verbundenen Bluetooth-Gerät empfangen werden, meldet der Controller dem Host ein „Approaching LSTO“-Ereignis.
  • A2DP-Audio ruckelt: Wenn der Controller Faktoren erkennt, die zu ruckelndem Audio führen, meldet er ein A2DP-Audio-ruckelt-Ereignis an den Host.
  • (e)SCO Voice Choppy: Wenn der Controller Faktoren erkennt, die zu einer abgehackten Sprachausgabe führen, meldet er dem Host das Ereignis „(e)SCO Voice Choppy“.
  • Root-Entzündung: Dieses Ereignis wird vom Controller an den Stack gesendet, wenn im HAL oder im Controller ein schwerwiegender Fehler auftritt und Bluetooth neu gestartet werden muss.
  • LMP-/LL-Nachrichtentrace: Der Controller sendet die LMP-/LL-Nachricht, die mit dem Remote-Gerät per Handshake ausgetauscht wird, an den Host.
  • Bluetooth-Multi-Profile-/Coex-Scheduling-Trace: Der Controller sendet seine Scheduling-Informationen zur Verarbeitung mehrerer Bluetooth-Profile und zur drahtlosen Koexistenz im 2,4-GHz-Band an den Host.
  • Mechanismus für Controller-Debug-Informationen: Wenn diese Option aktiviert ist, kann der Controller dem Host autonom Debug-Logging-Informationen über das Unterereignis „Controller-Debug-Informationen“ melden.
  • LE Audio Choppy: Wenn der Controller Faktoren erkennt, die zu abgehackten Audioinhalten führen, meldet er dem Host das Ereignis „LE Audio Choppy“.
  • Erweiterter RF-Statistikmodus: Der Controller meldet seine Informationen zu RF-Statistiken an den Host und unterstützt zwei Anwendungsfälle für Berichte:
    • Regelmäßige Berichte
    • Ereignistrigger (Stream-Start/-Stopp und Linkqualität).
  • Der Mechanismus zur Überwachung des Controllerstatus stellt dem Host statusbezogene Informationen über zwei Arten von Ereignissen zur Verfügung: regelmäßige Berichte und ereignisgesteuerte Berichte.
  • BQR_Report_Action des Bluetooth Quality Report-Befehls: Der Host kann diesen HCI-Befehl verwenden, um eine einmalige Abfrage für den Qualitätsüberwachungsmodus, den Energiemonitormodus oder einen erweiterten HF-Statistikmodus zu erhalten.

OCF: 0x15E

Befehlsparameter Größe Zweck
BQR_Report_Action 1 Oktett Aktion zum Hinzufügen / Löschen von Berichten zu Qualitätsereignissen, die im Parameter „BQR_Quality_Event_Mask“ festgelegt sind, oder zum Löschen aller Berichte.

0x00 – Hinzufügen
0x01 – Löschen
0x02 – Leeren
0x03 – Einmalige Abfrage

Durch das Löschen werden bestimmte Berichte zu Qualitätsereignissen entfernt.
Mit „Clear“ werden alle Berichte zu Qualitätsereignissen gelöscht. (Der Parameter „BQR_Quality_Event_Mask“ kann ignoriert werden.)

BQR_Quality_Event_Mask 4 Oktette Bitmasken für die ausgewählte Meldung von Qualitätsereignissen.

Bit 0: Legen Sie diesen Wert fest, um den Qualitätsüberwachungsmodus zu aktivieren.
Bit 1: Legen Sie diesen Wert fest, um das Ereignis „Approaching LSTO“ (für ACL/(e)SCO/ISO) zu aktivieren.
Bit 2: Legen Sie diesen Wert fest, um das Ereignis „A2DP Audio Choppy“ zu aktivieren.
Bit 3: Legen Sie diesen Wert fest, um das Ereignis „(e)SCO Voice Choppy“ zu aktivieren.
Bit 4: Legen Sie diesen Wert fest, um das Ereignis „Wurzelentzündung“ zu aktivieren.
Bit 5: Auf „1“ setzen, um den Energiemonitoring-Modus zu aktivieren.
Bit 6: Legen Sie diesen Wert fest, um das LE-Audio-Ereignis „Choppy“ zu aktivieren.
Bit 7: Legen Sie diesen Wert fest, um das Ereignis „Verbindungsfehler“ zu aktivieren.
Bit 8: Legen Sie diesen Wert fest, um den Ereignistrigger für den erweiterten RF-Statistikmodus zu aktivieren.
Bit 9: Legen Sie diesen Wert fest, um den periodischen Bericht zu erweiterten RF-Statistiken zu aktivieren.
Bit 10: Wird festgelegt, um die Ereignisauslösung des Mechanismus zur Überwachung des Controllerstatus zu aktivieren. (in BQRv7 hinzugefügt)
Bit 11: Wird festgelegt, damit der Mechanismus zur Überwachung des Controller-Status regelmäßig Berichte erstellt. (in BQRv7 hinzugefügt)
Bit 12 bis 14: Reserviert.
Bit 15: Wird festgelegt, um anbieterspezifische Qualitätsereignisse zu aktivieren.
Bit 16: Legen Sie diesen Wert fest, um die LMP/LL-Nachrichtenverfolgung zu aktivieren.
Bit 17: Wird festgelegt, um den Bluetooth-Multi-Link-/Coex-Planungstrace zu aktivieren.
Bit 18: Wird festgelegt, um den Mechanismus für Controller-Debug-Informationen zu aktivieren.
Bit 19: Reserviert für Debugging-Informationen zum Offload.
Bit 20: UART-Verlaufsdump-Event-Trigger. (in BQRv7 hinzugefügt)
Bit 21 bis 30: Reserviert.
Bit 31: Legen Sie diesen Wert fest, um anbieterspezifische Traces zu aktivieren.

BQR_Minimum_Report_Interval 2 Oktette Definieren Sie das Mindestzeitintervall für die Meldung von Qualitätsereignissen für die ausgewählten Qualitätsereignisse. Die Controller-Firmware sollte das nächste Ereignis nicht innerhalb des definierten Zeitintervalls melden. Die Intervalleinstellung muss für die hinzuzufügenden Qualitätsereignisse spezifisch sein.

Einheit: ms
Standard: 0 (Keine Einschränkung für das Intervall.)
Bereich: 0 bis 65.535 ms

BQR_Vendor_Specific_Quality_Event_Mask 4 Oktette Bitmasken für die ausgewählte anbieterspezifische Meldung von Qualitätsereignissen.
Dieser Parameter ist nur gültig, wenn Bit 15 von BQR_Quality_Event_Mask festgelegt ist.

Bit 0 bis 31: Reserviert.

BQR_Vendor_Specific_Trace_Mask 4 Oktette Bitmasken für die ausgewählte anbieterspezifische Tracing-Berichterstellung.
Dieser Parameter ist nur gültig, wenn Bit 31 von BQR_Quality_Event_Mask festgelegt ist.

Bit 0 bis 31: Reserviert.

Report_interval_multiple 4 Oktette Der Multiplikator für BQR_Minimum_Report_Interval. Wenn dieser Wert >= 1 ist, folgt das BQR-Berichtsintervall dem Format
. BQR-Berichtsintervall = BQR_Minimum_Report_Interval × Report_interval_multiple.
Die Controller-Firmware darf das nächste Ereignis nicht innerhalb des definierten Zeitintervalls melden. Die Intervalleinstellung ist speziell für die hinzugefügten Qualitätsereignisse vorgesehen.

Einheit: ms
Standard: 1
Bereich: 0 – 4294967295 (0 entspricht 1)

Hinweis: Wenn der Wert von BQR_Report_Interval größer als die Fähigkeit des Controllers ist, muss der Controller nach Abschluss des Befehls die maximale BQR_Report_Interval-Zeit zurückgeben.

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Current_Quality_Event_Mask 4 Oktette Gibt die aktuelle Bitmaskeneinstellung an.
Bit 0: Der Qualitätsüberwachungsmodus ist aktiviert.
Bit 1: Berichte über bevorstehende LSTO-Ereignisse sind aktiviert.
Bit 2: Die Berichterstellung für das Ereignis „A2DP Audio Choppy“ ist aktiviert.
Bit 3: Die Berichterstellung für das Ereignis „(e)SCO Voice Choppy“ ist aktiviert.
Bit 4: Die Berichterstellung für Ereignisse mit Wurzelentzündung ist aktiviert.
Bit 5: Der Energiemonitoring-Modus ist aktiviert.
Bit 6: Die Berichterstellung für LE-Audio-Stotterereignisse ist aktiviert.
Bit 7: Ereignis „Verbindungsaufbau fehlgeschlagen“.
Bit 8: Legen Sie diesen Wert fest, um den Ereignistrigger für den erweiterten RF-Statistikmodus zu aktivieren.
Bit 9: Legen Sie diesen Wert fest, um die regelmäßige Berichterstellung von erweiterten RF-Statistiken zu aktivieren.
Bit 10: Auf „Aktiviert“ gesetzt, um den Ereignistrigger für den Mechanismus zur Überwachung des Controllerstatus zu aktivieren.
Bit 11: Auf „Aktiviert“ gesetzt, damit der Mechanismus zur Überwachung des Controllerstatus regelmäßig Berichte erstellt.
Bit 12 bis 14: Reserviert.
Bit 15: Die Meldung von anbieterspezifischen Qualitätsereignissen ist aktiviert.
Bit 16: LMP/LL-Nachrichten-Trace ist aktiviert.
Bit 17: Der Trace für die Bluetooth-Multi-Link-/Coex-Planung ist aktiviert.
Bit 18: Der Mechanismus für Controller-Debug-Informationen ist aktiviert.
Bit 19: Für das Offloaden von Debugging-Informationen reserviert
Bit 20: UART-Verlaufsdump-Ereignistrigger
Bit 21–30: Reserviert.
Bit 31: Anbieterspezifische Ablaufverfolgung ist aktiviert.
Current_Vendor_Specific_Quality_Event_Mask 4 Oktette Gibt die aktuelle Bitmaskeneinstellung an.
Current_Vendor_Specific_Trace_Mask 4 Oktette Gibt die aktuelle Bitmaskeneinstellung an.
BQR_Report_interval 4 Oktette Gibt die aktuelle Bitmaskeneinstellung an.
Current_Vendor_Specific_Trace_Mask 4 Oktette Die Einstellung von BQR_Report_interval. Er muss der Mindestwert zwischen BQR_Minimum_Report_Interval * Report_interval_multiple oder dem maximalen unterstützten Intervall des Controllers sein.

Befehl für dynamischen Audio-Puffer

Der dynamische Audio-Puffer reduziert Audiofehler, indem die Größe des Audio-Puffers im Bluetooth-Controller je nach Szenario angepasst wird.

OCF: 0x15F

Funktion für Audio-Pufferzeit nutzen

Untergeordneter OCF: 0x01

Mit diesem Befehl können Sie die Audio-Pufferzeitfunktion vom Bluetooth-Controller abrufen.

Befehlsparameter Größe Zweck
Leere Liste der Befehlsparameter

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Dynamic_Audio_Buffer_opcode 1 Oktett 0x01 – Audio-Pufferzeit abrufen
Audio_Codec_Type_Supported 4 Oktette Bitmasken für die unterstützten Codec-Typen
Bit 0 – SBC
Bit 1 – AAC
Bit 2 – APTX
Bit 3 – APTX HD
Bit 4 – LDAC
Bit 5–31 sind reserviert
Audio_Codec_Buffer_Default_Time_For_Bit_0 2 Oktette Standardpufferzeit des Bit 0-Codec-Typs, der in Audio_Codec_Type_Supported angegeben ist.
Dieser Wert muss 0 sein, wenn der Bit 0-Codec-Typ nicht unterstützt wird.
Einheit: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 2 Oktette Maximale Pufferzeit des Bit 0-Codec-Typs, der in Audio_Codec_Type_Supported angegeben ist.
Dieser Wert muss 0 sein, wenn der Bit 0-Codec-Typ nicht unterstützt wird.
Einheit: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 2 Oktette Minimale Pufferzeit des Bit 0-Codec-Typs, der in Audio_Codec_Type_Supported angegeben ist.
Dieser Wert muss 0 sein, wenn der Bit 0-Codec-Typ nicht unterstützt wird.
Einheit: ms
Audio_Codec_Buffer_Default_Time_For_Bit_1 2 Oktette Standardpufferzeit des in Audio_Codec_Type_Supported angegebenen Bit 1-Codec-Typs.
Dieser Wert muss 0 sein, wenn der Bit 1-Codec-Typ nicht unterstützt wird.
Einheit: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 2 Oktette Maximale Pufferzeit des Bit 1-Codec-Typs, der in Audio_Codec_Type_Supported angegeben ist.
Dieser Wert muss 0 sein, wenn der Bit 1-Codec-Typ nicht unterstützt wird.
Einheit: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 2 Oktette Minimale Pufferzeit des Bit 1-Codec-Typs, der in Audio_Codec_Type_Supported angegeben ist.
Dieser Wert muss 0 sein, wenn der Bit 1-Codec-Typ nicht unterstützt wird.
Einheit: ms
...... ...... ......
Audio_Codec_Buffer_Default_Time_For_Bit_31 2 Oktette Standardpufferzeit des in Audio_Codec_Type_Supported angegebenen Bit 31-Codec-Typs.
Dieser Wert muss 0 sein, wenn der Bit 31-Codec-Typ nicht unterstützt wird.
Einheit: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 2 Oktette Maximale Pufferzeit des in Audio_Codec_Type_Supported angegebenen Codec-Typs „Bit 31“.
Dieser Wert muss 0 sein, wenn der Bit 31-Codec-Typ nicht unterstützt wird.
Einheit: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 2 Oktette Mindestpufferzeit des in Audio_Codec_Type_Supported angegebenen Bit 31-Codec-Typs.
Dieser Wert muss 0 sein, wenn der Bit 31-Codec-Typ nicht unterstützt wird.
Einheit: ms

Audio-Pufferzeit festlegen

Untergeordnetes OCF: 0x02

Verwenden Sie diesen Befehl, um die Audio-Pufferzeit für den Bluetooth-Controller festzulegen.

Befehlsparameter Größe Zweck
Audio_Codec_Buffer_Time 2 Oktette Angefragte Audio-Pufferzeit für den aktuell verwendeten Codec.
Einheit: ms

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Dynamic_Audio_Buffer_opcode 1 Oktett 0x02 – Audio-Pufferzeit festlegen
Audio_Codec_Buffer_Time 2 Oktette Aktuelle Audio-Pufferzeit im Bluetooth-Controller.
Einheit: ms

HCI-Ereignis (anbieterspezifisch)

In einigen Fällen sind anbieterspezifische HCI-Ereignisse erforderlich. Weitere Informationen finden Sie in Abbildung 5.4 auf Seite 1897 der BT Core 5.2-Spezifikation. Ereignisparameter 0 enthält immer den ersten Unterereigniscode, anhand dessen der Rest des HCI-Ereignisses decodiert wird.

Ereignisparameter Größe Zweck
HCI_vendor_specific_event_code 1 Oktett 0xFF
sub_event_code 1 Oktett Ein Unterereigniscode hat eine Größe von 1 Oktett, dem Byte, das unmittelbar auf die Parameterlänge im HCI-Ereignispaket folgt.

Unterereignis für Überschreitung des Speichergrenzwerts

Dieses Ereignis gibt an, dass der Speichergrenzwert überschritten wurde.

Unterereigniscode = 0x54

Parameter für untergeordnete Ereignisse Größe Zweck
Keine

Unterereignis für Statusänderung bei mehreren Anzeigen von Rechtseinheiten

Dieses Ereignis gibt an, dass sich der Status einer Werbeinstanz geändert hat. Derzeit wird dieses Ereignis nur verwendet, um anzugeben, welche Werbeinstanz aufgrund einer Verbindung beendet wurde.

Unterereigniscode = 0x55

Parameter für untergeordnete Ereignisse Größe Zweck
Advertising_instance 1 Oktett Gibt die spezifische Werbeinstanz an.
Gültige Werte sind 0 bis max_advt_instances–1.
State_Change_Reason 1 Oktett 0x00: Verbindung empfangen
Connection_handle 2 Oktette Gibt die Verbindung an, die dazu geführt hat, dass die advt-Instanz deaktiviert wurde (0xFFFF, wenn ungültig).

Unterereignis für das Tracking von LE-Werbung

Dieses Ereignis gibt an, wann ein Werbetreibender gefunden oder verloren wurde.

Unterereigniscode = 0x56

Parameter für untergeordnete Ereignisse Größe Zweck
APCF_Filter_Index 1 Oktett Filterindex (0, max_filter–1)
Advertiser_State 1 Oktett 0x00: Werbetreibender gefunden
0x01: Werbetreibender nicht mehr gefunden
Advt_Info_Present 1 Oktett 0x00: Werbetreibendeninformationen (Advt_Info) vorhanden
0x01: Werbetreibendeninformationen (Advt_Info) nicht vorhanden
Advertiser_Address 6 Oktette Öffentliche oder zufällige Adresse
Advertiser_Address_Type 1 Oktett 0x00: Öffentliche Adresse
0x01: Zufällige Adresse
Advt_Info Tx_Pwr[0]: 1 Oktett
RSSI[0]: 1 Oktett
Timestamp[0]: 2 Oktette
Adv packet_len[0]: 1 Oktett
Adv_packet[0]: Adv_packet_len Oktette
Scan_data_resp_len[0]: 1 Oktett
Scan_data_resp[0]: Scan_data_resp Oktette

Unterereignis „Controller-Debugging-Informationen“

Dieses Ereignis wird von einem Controller verwendet, um binäre Debugging-Informationen an einen Host zu senden.

Subevent-Code = 0x57

Parameter für untergeordnete Ereignisse Größe Zweck
debug_block_byte_offset_start 2 Oktette Byte-Offset des Blocks vom Start aus debuggen
last_block 1 Oktett 0x00: Weitere Debugging-Daten vorhanden
0x01: Letzter binärer Block; keine weiteren Debugging-Daten
cur_pay_load_sz 2 Oktette Binärblockgröße in einem aktuellen Ereignis
Debug_Data Variable Debug-Daten von cur_payload_sz

Unterereignis „Bluetooth Quality Report“

Dieses Ereignis weist auf eines der folgenden Szenarien hin: Es ist ein Bluetooth-Qualitätsereignis aufgetreten, der Controller hat den LMP/LL-Nachrichten-Trace und den Bluetooth-Multi-Link-/Coex-Planungs-Trace hochgeladen oder der Controller hat Debug-Informationen ausgegeben.

Parameter für untergeordnete Ereignisse Größe Zweck
Quality_Report_Id 1 Oktett 0x01: Qualitätsberichte zum Monitormodus.
0x02: LSTO wird erreicht.
0x03: A2DP-Audio abgehackt.
0x04: (e)SCO Voice Choppy.
0x05 – 0x06: Reserviert.
0x07: LE-Audio abgehackt.
0x08: Verbindungsfehler.
0x09 – 0xFF: Reserviert.
Packet_Types 1 Oktett 0x01: ID
0x02: NULL
0x03: POLL
0x04: FHS
0x05: HV1
0x06: HV2
0x07: HV3
0x08: DV
0x09: EV3
0x0A: EV4
0x0B: EV5
0x0C: 2-EV3
0x0D: 2-EV5
0x0E: 3-EV3
0x0F: 3-EV5
0x10: DM1
0x11: DH1
0x12: DM3
0x13: DH3
0x14: DM5
0x15: DH5
0x16: AUX1
0x17: 2-DH1
0x18: 2-DH3
0x19: 2-DH5
0x1A: 3-DH1
0x1B: 3-DH3
0x1C: 3-DH5
0x1D – 0x50: Reserviert
0x51: ISO-Paket
0x52: 1M PHY
0x53: 2M PHY
0x54: Codec PHY S=2
0x55: Codec PHY S=8
0x56 – 0xFF: Reserviert
Connection_Handle 2 Oktette ACL/(e)SCO/ISO-Verbindungs-Handle.
Connection_Role 1 Oktett Die Rolle, die für die Verbindung ausgeführt wird.
0x00: Central
0x01: Peripheral
0x02 – 0xFF: Reserved.
TX_Power_Level 1 Oktett Aktueller Sendestrompegel für den angegebenen Connection_Handle.

Dieser Wert muss mit dem Wert übereinstimmen, den der Controller als Antwort auf den HCI-Befehl HCI_Read_Transmit_Power_Level zurückgibt.

RSSI 1 Oktett [in dBm]

RSSI-Wert (Received Signal Strength Indication) für den angegebenen Connection_Handle.
Dieser Wert muss ein absoluter Wert für die Empfängersignalstärke sein.
Bereich: -127 bis +20

SNR 1 Oktett [in dB]

Signal-Rausch-Verhältnis (SNR) für den angegebenen Connection_Handle.
Der Controller muss den durchschnittlichen SNR aller vom Link verwendeten Kanäle angeben.

Unused_AFH_Channel_Count 1 Oktett Gibt die Anzahl der nicht verwendeten Channels in AFH_channel_map an.
0x4F – 0xFF: Reserviert.
AFH_Select_Unideal_Channel_Count 1 Oktett Gibt die Anzahl der Kanäle an, die gestört sind und eine schlechte Qualität haben, aber trotzdem für AFH ausgewählt wurden.
Die Mindestanzahl der von der Bluetooth-Spezifikation zulässigen Kanäle beträgt 20. Selbst wenn also alle 79 Kanäle gestört sind und eine schlechte Qualität aufweisen, muss der Controller mindestens 20 Kanäle für AFH auswählen.
LSTO 2 Oktette Aktuelle Einstellung für das Zeitlimit für die Link-Aufsicht.
Zeit = N × 0,625 ms
Zeitbereich: 0,625 ms bis 40,9 s
Connection_Piconet_Clock 4 Oktette Piconet-Takt für den angegebenen Connection_Handle.
Dieser Wert muss mit dem Wert übereinstimmen, den der Controller als Antwort auf den HCI-Befehl HCI_Read_Clock mit dem Parameter „Which_Clock“ von 0x01 (Piconet Clock) zurückgibt.
Einheit: N × 0,3125 ms (1 Bluetooth-Takt)
Retransmission_Count 4 Oktette Die Anzahl der Neuübertragungen seit dem letzten Ereignis.
Diese Anzahl wird nach der Meldung an den Host zurückgesetzt.
No_RX_Count 4 Oktette Seit dem letzten Ereignis wurde keine RX-Anzahl erfasst.
Der Zähler wird erhöht, wenn im geplanten Zeitfenster kein Paket empfangen wird oder das empfangene Paket beschädigt ist.
Diese Anzahl wird nach der Meldung an den Host zurückgesetzt.
NAK_Count 4 Oktette Anzahl der NAKs (Negative Acknowledge) seit dem letzten Ereignis.
Diese Anzahl wird nach der Meldung an den Host zurückgesetzt.
Last_TX_ACK_Timestamp 4 Oktette Zeitstempel der letzten TX ACK. Sie basiert auf der Bluetooth-Uhr des Piconet-Zentrums (CLK).
Einheit: N × 0,3125 ms (1 Bluetooth-Takt)
Flow_Off_Count 4 Oktette Die Anzahl der Flow-off-Signale (STOP), die der Controller seit dem letzten Ereignis empfangen hat.
Diese Anzahl wird nach der Meldung an den Host zurückgesetzt.
Last_Flow_On_Timestamp 4 Oktette Zeitstempel der letzten Weiterleitung (GO). Sie basiert auf der Bluetooth-Uhr des Piconet-Zentrums (CLK).
Einheit: N × 0,3125 ms (1 Bluetooth-Takt)
Buffer_Overflow_Bytes 4 Oktette [in Byte]

Anzahl der Pufferüberläufe seit dem letzten Ereignis.
Der Controller zählt, wie viele Byte an Daten verworfen werden.
Diese Anzahl wird nach der Meldung an den Host zurückgesetzt.

Buffer_Underflow_Bytes 4 Oktette [in Byte]

Anzahl der Pufferunterläufe seit dem letzten Ereignis.
Diese Anzahl wird nach der Meldung an den Host zurückgesetzt.

bdaddr 6 Oktette Adresse des Remote-Geräts
cal_failed_item_count 1 Oktett Anzahl der Elemente, bei denen die Kalibrierung fehlgeschlagen ist
TX_Total_Packets 4 Oktette Die Anzahl der gesendeten Pakete.
TX_UnAcked_Packets 4 Oktette Die Anzahl der Pakete, für die keine Bestätigung empfangen wird.
Dieser Zähler wird nach der Meldung an den Host zurückgesetzt.
TX_Flushed_Packets 4 Oktette Die Anzahl der Pakete, die nicht vom Flush-Punkt gesendet werden.
Dieser Zähler wird nach der Meldung an den Host zurückgesetzt.
TX_Last_Subevent_Packets 4 Oktette Die Anzahl der Pakete, die die Link Layer in der letzten Unterveranstaltung eines CIS-Ereignisses in einer CIS-Daten-PDU überträgt.
Dieser Zähler wird nach der Meldung an den Host zurückgesetzt.
Der Wert ist null, wenn kein gültiger Wert für den Link vorhanden ist.
CRC_Error_Packets 4 Oktette Die Anzahl der empfangenen Pakete mit CRC-Fehler seit dem letzten Ereignis.
Dieser Zähler wird nach der Meldung an den Host zurückgesetzt.
RX_Duplicate_Packets 4 Oktette Die Anzahl der doppelten (erneut übertragenen) Pakete, die seit dem letzten Ereignis empfangen wurden.
Dieser Zähler wird nach der Meldung an den Host zurückgesetzt.
RX_Unreceived_Packets 4 Oktette Die Anzahl der nicht empfangenen Pakete entspricht dem Parameter des Befehls „LE READ ISO Link Quality“ (siehe Bluetooth Core Specification Version 5.4). Die zugehörigen Streams sind CIS und BIS.
Wenn dieser Wert erhöht wird, empfängt die Link Layer bis zum Flush-Punkt (bei einem CIS) oder am Ende des zugehörigen Ereignisses (bei einem BIS; siehe Bluetooth Core Specification Version 5.4, Vol. 6, Part B, Section 4.4.6.6) keine bestimmte Nutzlast.
Coex_Info_Mask 2 Oktette Bit 0 – CoexInvolvement: Wird festgelegt, um anzugeben, dass bei der Generierung dieses Berichts der Verdacht besteht, dass Coex-Aktivitäten beteiligt sind (z. B. A2DP-Chops und Annäherung an LSTO).
Bit 1 – WL 2G Radio Active (WL 2G-Funk aktiv): Wird festgelegt, um anzugeben, dass der WL 2G-Funk aktiv ist.
Bit 2 – WL 2G Connected: Wird festgelegt, um anzugeben, dass das WLAN-2G-Funkmodul aktiv und verbunden ist.
Bit 3 – WL 5G/6G Radio Active (WL 5G/6G-Funk aktiv): Wird festgelegt, um anzugeben, dass das WLAN 5G/6G-Funkgerät aktiv ist.
Bit 4–15 – Reserviert
Anbieterspezifischer Parameter (Gesamtlänge des Parameters – noch festzulegen) * Oktette Damit der Controlleranbieter weitere anbieterspezifische Parameter erhält.

Unterereigniscode = 0x58 [Quality_Report_Id = 0x05, Root Inflammation event]

Dieses Ereignis weist darauf hin, dass in der Bluetooth-HAL oder im Controller ein schwerwiegender Fehler aufgetreten ist. Der Bluetooth-Stack muss diese Situation aufzeichnen und neu starten. Der Controller muss in jedem Fall ein Root_Inflammation_Event an den Bluetooth-Stack senden, bevor er das erste Fragment der Debug-Info-Ereignisse sendet.

Der Parameter „Error_Code“ enthält einen Fehlercode, der von HAL/Controller gemeldet wird. Er ist „0“, wenn es sich um einen chipset-anbieterspezifischen Fehler handelt. Der „Vendor_Specific_Error_Code“ enthält einen chipset-anbieterspezifischen Fehlercode aus HAL/Controller. Er sollte auf 0 gesetzt werden, wenn der Parameter „Error_Code“ nicht 0 ist. Die Parameter „Error_Code“ und „Vendor_Specific_Error_Code“ dürfen nicht beide 0 sein.

Parameter für untergeordnete Ereignisse Größe Zweck
Quality_Report_Id 1 Oktett 0x00 – 0x04: Reserviert.
0x05: Wurzelentzündung.
0x06 – 0xFF: Reserviert.
Error_Code 1 Oktett 0x00: Der chipsatzspezifische Fehlercode des Anbieters ist enthalten.
0x01 – 0xFF: Es ist ein Controller-Fehler aufgetreten. Eine Liste der Fehlercodes und Beschreibungen finden Sie in der Bluetooth-Spezifikation [Band 2], Teil D, Fehlercodes.
Vendor_Specific_Error_Code 1 Oktett 0x00: Es ist kein chipsatzanbieterspezifischer Fehlercode enthalten.
0x01 – 0xFF: Chipsatzanbieterspezifischer Fehlercode.
Anbieterspezifischer Parameter (Parametergesamtlänge – 4) * Oktette Damit der Controlleranbieter weitere anbieterspezifische Parameter erhält.

Unterereigniscode = 0x58 [Quality_Report_Id = 0x06, Energy monitor event]

Dieses Ereignis bietet einen Überblick über den Stromverbrauch und die Betriebsstatus des Bluetooth-Controllers über einen bestimmten Zeitraum. Mit diesem Ereignis können Entwickler und Techniker analysieren, wie der Controller die Stromversorgung verwaltet, ermitteln, welche Aktivitäten am meisten Energie verbrauchen, und Probleme im Zusammenhang mit der Stromversorgung beheben.

Mit den Parametern im Bericht werden wichtige Messwerte erfasst, darunter:

  • Durchschnittlicher aktueller Verbrauch:Der vom Controller verwendete Gesamtstrom.
  • Zeit in verschiedenen Status:Die Gesamtzeit (in Millisekunden), die der Controller in einem inaktiven (Ruhe-/Energiespar-)Status im Vergleich zu einem aktiven Status (Verbinden, Senden oder Empfangen von Daten) verbringt.
  • Anzahl der Statusübergänge:Die Anzahl der Male, die der Controller zwischen Leerlauf- und Aktivstatus wechselt.
  • Zeit in bestimmten Funkstatus:Separate Messwerte für die Zeit, die mit dem Senden (Tx) und Empfangen (Rx) verbracht wurde, sowohl für BR/EDR- (Bluetooth Classic) als auch für LE-Verbindungen (Bluetooth Low Energy).
  • Durchschnittliche Sendeleistungspegel:Die durchschnittliche Leistung (in dBm), die für Übertragungen über BR/EDR- und LE-Verbindungen verwendet wird.
  • Detaillierte Informationen zur Chain-Aktivität:Berichte zur Zeit, die mit aktiven Sende- oder Empfangschains verbracht wurde, mit Unterscheidung zwischen Ein-Chain- und Zwei-Chain-Vorgängen sowie zwischen internen (iPA) und externen (ePA) Leistungsverstärkern.
  • Scan activity time (Zeit für Scanaktivität): Die Zeit, die der Controller mit dem aktiven Scannen nach BR/EDR- und LE-Geräten verbringt.

Durch die Analyse dieser Parameter können Ingenieure die Energieeffizienz des Controllers besser verstehen und seine Leistung optimieren.

Parameter für untergeordnete Ereignisse Größe Zweck
Quality_Report_Id 1 Oktett 0x06: Energieüberwachung
Average_Current_Consumption 2 Oktette [in mA] Durchschnittlicher Stromverbrauch aller vom Controller ausgeführten Aktivitäten
Idle_Total_Time (Schlaf) 4 Oktette [in ms] Total time in the idle (low power states, sleep) state.
Idle_Sate_Enter_Count 4 Oktette Gibt an, wie oft der Controller in den Leerlaufzustand wechselt.
Active_Total_Time 4 Oktette [in ms] Gesamtdauer im aktiven Status (Anfrage-, Paging-, ACL-/SCO-/eSCO-/BIS-/CIS-Traffic, Verarbeitung von Aufgaben).
Active_State_Enter_Count 4 Oktette Gibt an, wie oft der Controller in die aktiven Status wechselt.
BR_RDR_Tx_Total_Time 4 Oktette [in ms] Total time in the BR/EDR specific Tx(Transmitting for ACL/SCO/eSCO traffic)state.
BR_RDR_Tx_State_Enter_Count 4 Oktette Gibt an, wie oft der Controller in den BR/EDR-spezifischen Tx-Zustand wechselt.
BR_RDR_Tx_Average_Power_Level 1 Oktett [in dBm] Durchschnittlicher Tx-Leistungspegel aller BR/EDR-Verbindungen
BR_RDR_Rx_Total_Time 4 Oktette [in ms] Total time in the BR/EDR specific Rx (Receiving from ACL/SCO/eSCO traffic) state.
BR_RDR_Rx_State_Enter_Count 4 Oktette [in ms] Gibt an, wie oft der Controller in den BR/EDR-spezifischen Empfangszustand wechselt.
LE_Tx_Total_Time 4 Oktette [in ms] Gesamtzeit im LE-spezifischen Übertragungsstatus (Übertragung für ACL/BIS/CIS oder LE-Werbe-Traffic).
LE_Tx_State_Enter_Count 4 Oktette Gibt an, wie oft der Controller in den BR/EDR-spezifischen Empfangszustand wechselt.
LE_Tx_Average_Power_Level 1 Oktett [in dBm] Durchschnittlicher Tx-Leistungspegel aller LE-Verbindungen.
LE_Rx_Total_Time 4 Oktette [in ms] Total time in the LE specific Rx (Receiving from either ACL/BIS/CIS or LE scanning traffic) state.
LE_Rx_State_Enter_Count 4 Oktette [in ms] Gibt an, wie oft der Controller in den LE-spezifischen Empfangszustand wechselt.
Report_Time_Duration (Gesamtzeit) 4 Oktette [in ms] Die Gesamtdauer für das Erfassen von Informationen zum Stromverbrauch.
RX_Active_One_Chain_Time 4 Oktette [in ms] The time duration of RX active in one chain
RX_Active_Two_Chain_Time 4 Oktette [in ms] The time duration of RX active in two chain
TX_iPA_Active_One_Chain_Time 4 Oktette [in ms] The time duration of internal TX active in one chain
TX_iPA_Active_Two_Chain_Time 4 Oktette [in ms] The time duration of internal TX active in two chain
TX_ePA_Active_One_Chain_Time 4 Oktette [in ms] The time duration of external TX active in one chain
TX_ePA_Active_Two_Chain_Time 4 Oktette [in ms] Die Zeitdauer der externen TX, die in zwei Chains aktiv ist
BREDR_RX_Active_Scan_total_Time 4 Oktette [in ms] Zeitraum (ms) für die aktive Empfangszeit des BR/EDR-Scans
LE_RX_Active_Scan_total_Time 4 Oktette [in ms] Zeitraum (ms) für die aktive Zeit des LE-Scan-Empfangs

Unterereigniscode = 0x58 [Quality_Report_Id = 0x09~0x0A, Ereignis für erweiterte RF-Statistiken]

Das Ereignis „Bluetooth Advanced RF (Radio Frequency) Stats“ (Bluetooth-Statistiken zu erweiterten Funkfrequenzen) enthält detaillierte Leistungsmesswerte zum Funkverhalten des Bluetooth-Controllers. Das Ereignis kann auf zwei Arten ausgelöst werden:

  • Nach Trigger (0x09): Als Reaktion auf einen bestimmten Befehl wird ein einmaliger Bericht gesendet.
  • Nach Monitor (0x0A): Der Controller sendet in regelmäßigen Abständen Berichte.

Die Parameter des Ereignisses sind im Grunde Paketzähler, mit denen verschiedene Funkverhaltensweisen über einen bestimmten Zeitraum hinweg erfasst werden.

Wichtige Messwerte und ihr Zweck
  • Statistiken zur Sendeleistung:Diese Zähler erfassen Pakete, die mit verschiedenen Leistungskonfigurationen gesendet werden. Dabei wird zwischen internen (iPA) und externen (ePA) Leistungsverstärkern sowie verschiedenen Antennendiversity- (Div) oder Beamforming-Modi (BF) unterschieden. So lässt sich ermitteln, welche Leistungs- und Antenneneinstellungen am häufigsten verwendet werden.
  • RSSI-Bereiche (Received Signal Strength Indicator):Mit diesen Parametern werden empfangene Pakete anhand ihrer Signalstärke kategorisiert. Durch die Angabe der Anzahl der Pakete in bestimmten RSSI-Bereichen (z.B. unter -90 dBm, -70 bis -75 dBm) gibt der Bericht ein klares Bild der Verbindungsqualität. Eine hohe Anzahl in den Signalbereichen für „schwach“ (z. B. < –90 dBm) weist auf eine schlechte Verbindung hin.
  • RSSI-Delta:Dieser Messwert gibt die Differenz der Signalstärke zwischen den beiden Empfangsantennen an (falls zutreffend). Zähler erfassen, wie viele Pakete ein RSSI-Delta in verschiedenen Bereichen haben. Ein großes Delta (z.B. >11 dBm) kann auf Störungen oder eine physische Behinderung hinweisen, da eine Antenne ein viel stärkeres Signal empfängt als die andere.
  • Antennenumschaltung und erneute Übertragungen:Im Bericht wird gezählt, wie oft der Controller zwischen Antennen wechselt, und es werden neu übertragene (ReTX-)Pakete erfasst. Eine hohe Anzahl von erneuten Übertragungen deutet oft auf eine schwache oder unzuverlässige Verbindung hin, bei der Pakete noch einmal gesendet werden müssen.
  • Channelqualität:Diese Parameter bieten eine allgemeine Zusammenfassung des Zustands verschiedener Kommunikationskanäle und kategorisieren sie anhand ihres RSSI als „Gut“, „OK“, „Schlecht“ oder „Sehr schlecht“. So erhalten Sie sofort einen Überblick über die HF-Umgebung.
  • TX-Pufferwarteschlange:In diesem Abschnitt wird die Anzahl der Pakete überwacht, die im Übertragungspuffer des Controllers für verschiedene Linktypen wie ACL (Asynchronous Connection-oriented Logical Link), LECONN (LE Connection) und LEISOC (LE Isochronous) warten. Hohe Pufferzahlen können auf einen Engpass oder ein Problem mit dem Datenfluss vom Host zum Controller hinweisen.
Parameter für untergeordnete Ereignisse Größe Zweck
Quality_Report_Id 1 Oktett 0x09: Advance RF Stats By Trigger
0x0A: Advance RF Stats By Monitor
Extension_info 1 Oktett BQR-Versionsinformationen.
0x01 für BQRv6
0x02 für BQRv7
Report_Time_Period 4 Oktette Der Zeitraum, in dem Leistungsdaten erfasst werden. Einheit: ms
TX_Power_iPA_BF 4 Oktette Paketzähler von iPA BF
TX_Power_ePA_BF 4 Oktette Paketzähler des ePA BF
TX_Power_iPA_Div 4 Oktette Paketzähler der ePA-Abteilung
TX_Power_ePA_Div 4 Oktette Paketzähler der ePA-Abteilung
RSSI_chain_50 4 Oktette Paketzähler der RSSI-Kette > -50 dBm
RSSI_chain_50_55 4 Oktette Paketzähler der RSSI-Kette zwischen -50 dBm und >-55 dBm
RSSI_chain_55_60 4 Oktette Paketzähler der RSSI-Kette zwischen -55 dBm und >-60 dBm
RSSI_chain_60_65 4 Oktette Paketzähler der RSSI-Kette zwischen -60 dBm und >-65 dBm
RSSI_chain_65_70 4 Oktette Paketzähler der RSSI-Kette zwischen -65 dBm und >-70 dBm
RSSI_chain_70_75 4 Oktette Paketzähler der RSSI-Kette zwischen -70 dBm und >-75 dBm
RSSI_chain_75_80 4 Oktette Paketzähler der RSSI-Kette zwischen -75 dBm und >-80 dBm
RSSI_chain_80_85 4 Oktette Paketzähler der RSSI-Kette zwischen -80 dBm und >-85 dBm
RSSI_chain_85_90 4 Oktette Paketzähler der RSSI-Kette zwischen -85 dBm und >-90 dBm
RSSI_chain_90 4 Oktette Paketzähler der RSSI-Kette < -90 dBm
RSSI_delta_2 4 Oktette Paketzähler für RSSI-Delta < 2 dBm
RSSI_delta_2_5 4 Oktette Paketzähler für RSSI-Delta zwischen 2 dBm und 5 dBm
RSSI_delta_5_8 4 Oktette Paketzähler für RSSI-Delta zwischen 5 dBm und 8 dBm
RSSI_delta_8_11 4 Oktette Paketzähler für RSSI-Delta zwischen 8 dBm und 11 dBm
RSSI_delta_11 4 Oktette Paketzähler für RSSI-Delta > 11 dBm
Antenna_Switch_Count 4 Oktette Paketzähler des Antennenumschaltvorgangs
ReTX_iPA_BF 4 Oktette Paketzähler von ReTX_iPA_BF im letzten Zeitraum
ReTX_ePA_BF 4 Oktette Paketzähler von ReTX_ePA_BF im letzten Zeitraum
ReTX_iPA_Div 4 Oktette Paketzähler von ReTX_iPA_Div im letzten Zeitraum
ReTX_ePA_Div 4 Oktette Paketzähler von ReTX_ePA_Div im letzten Zeitraum
Channel_count_Good 1 Oktett Anzahl der Channels, deren RSSI in Bin 1 (< –90) fällt
Channel_count_OK 1 Oktett Anzahl der Kanäle, deren RSSI in Bin-2 (-90 ~ -76) liegt
Channel_count_Bad 1 Oktett Anzahl der Channels, deren RSSI in Bin 3 (-76 bis -50) liegt
Channel_count_VeryBad 1 Oktett Anzahl der Channels, deren RSSI in Bin 4 (> –50) fällt
TX_buffer_Queue_Count 4 Oktette Zähler für den Status des Pufferwarteschlangen-Controllers TX-Puffer im letzten Zeitraum [0:3] ACL_1 [4:7] ACL_2 [8:11] LECONN_1 [12:15] LECONN_2 [16:19] LEISOC_1 [20:23] LEISOC_2 [24:27] LEBroadcast [28:31] rsvd

Unterereigniscode = 0x58 [Quality_Report_Id = 0x0B~0x0C, Controller Health Monitoring event]

Das Ereignis „Bluetooth Controller Health Monitoring“ bietet eine Zusammenfassung des Betriebsstatus des Controllers. Das Ereignis kann auf zwei Arten ausgelöst werden:

  • Nach Trigger (0x09): Als Reaktion auf einen bestimmten Befehl wird ein einmaliger Bericht gesendet.
  • Nach Monitor (0x0A): Der Controller sendet in einem angegebenen Intervall regelmäßig Berichte.

Das Ereignis „Bluetooth Controller Health Monitoring“ ist ein Diagnosetool, das eine Zusammenfassung des Betriebsstatus des Controllers bietet. Dieses Ereignis ist Teil des Bluetooth Quality Report (BQR)-Frameworks und wird zum Debuggen von Verbindungs-, Energieverwaltungs- und Timing-Problemen verwendet. Er kann als einmaliger Bericht oder regelmäßig gesendet werden, um eine kontinuierliche Überwachung zu ermöglichen.

Wichtige Messwerte und ihr Zweck
  • HCI-Paketzähler:Das Ereignis erfasst die Gesamtzahl der Pakete, die vom Host zum Controller und umgekehrt gesendet werden. Diese Zähler sind wichtig, um Probleme mit dem HCI-Transport (Host Controller Interface) zu beheben. Das ist der Kommunikationskanal zwischen dem Softwarestack und dem Bluetooth-Controller-Chip.
  • Paketlängen:Das Ereignis meldet die Länge des letzten gesendeten und empfangenen HCI-Pakets. So lässt sich überprüfen, ob Daten korrekt übertragen werden und ob es keine unerwarteten Probleme mit der Größe gibt.
  • Anzahl der Aktivierungssignale:Der Bericht enthält die Gesamtzahl der Assertions der Pins BT_Wake und HOST_Wake. Diese physischen Signale sind für die Energieverwaltung von entscheidender Bedeutung, da sie verwendet werden, um die jeweiligen Einheiten aus dem Energiesparmodus zu reaktivieren. Wenn Sie diese Zähler im Blick behalten, können Sie Probleme im Zusammenhang mit dem Stromverbrauch beheben, z. B. unerwartete Aktivierungen oder Fehler beim Wechsel in den Ruhemodus.
  • Zeitstempel:Das Ereignis enthält mehrere Zeitstempel, darunter die Zeit des letzten Wecksignals und des letzten HCI-Resets. Diese Zeitstempel helfen bei der Fehlerbehebung von zeitbezogenen Problemen und bieten einen Referenzpunkt dafür, wann bestimmte Ereignisse aufgetreten sind.
  • Watchdog-Timer:Ein bestimmtes Flag gibt an, ob das Ereignis als Frühwarnung generiert wurde, dass der Watchdog-Timer des Controllers bald abläuft. Dies ist eine wichtige Warnung vor möglichen Controller-Fehlfunktionen oder dem Einfrieren des Controllers.
  • Link Status (Linkstatus): Der Bericht fasst den aktuellen Status aktiver Verbindungen zusammen, einschließlich der Gesamtzahl der BR/EDR-, LE- und CIS-Links (Connected Isochronous Stream). Außerdem wird angezeigt, ob SCO-Verbindungen (Synchronous Connection-Oriented) aktiv sind. Diese Informationen geben einen Überblick über die aktuelle Verbindungslast des Controllers.
Parameter für untergeordnete Ereignisse Größe Zweck
Quality_Report_Id 1 Oktett 0xB~0xC
0x0B: Einmalige oder ereignisgesteuerte Berichte
0x0C: Regelmäßige Berichte.
Packet_Count_Host_to_Controller 4 Oktette Gesamtzahl der Pakete, die vom Host über den HCI-Transport an den Controller gesendet werden. Dieses Feld wird zum Debuggen von HCI-Problemen (z. B. UART) verwendet. Verhalten: Die Zähler werden zurückgesetzt, wenn der Controller ein HCI-Reset empfangen hat.
Packet_Count_Controller_to_Host 4 Oktette Gesamtzahl der an den Host gesendeten HCI-Ereignispakete. Dieses Feld wird zur Fehlerbehebung bei HCI verwendet (z.B. UART) auftreten. Verhalten: Die Zähler werden zurückgesetzt, wenn der Controller ein HCI-Reset empfangen hat.
Last_Packet_Length_Host_to_Controller 2 Oktette Länge des letzten HCI-Pakets, das an den Host-UART gesendet wurde. Hinweis: Die maximale HCI-Paketlänge beträgt 2 Oktette (HCI, ACL, SCO, ISO).
Last_Packet_Length_Controller_To_host 2 Oktette Länge des letzten HCI-Pakets, das vom Host-UART empfangen wurde. Hinweis: Die maximale Länge des HCI-Pakets beträgt 2 Oktets (einschließlich HCI, ACL, SCO, ISO).
Total_BT_Wake_Count 4 Oktette Die Gesamtzahl der BT_Wake-Pin-Assertions durch die Host-Entität. Dieses Feld dient als Diagnosetool zur Behebung von Problemen im Zusammenhang mit der Stromversorgung. Verhalten: Die Zähler werden zurückgesetzt, wenn der Controller ein HCI-Reset empfangen hat.
Total_HOST_Wake_Count 4 Oktette Aggregierte Berechnung der vom Controller initiierten Host_Wake-Pin-Assertions. Dieses Feld dient als Diagnosetool zur Behebung von Problemen im Zusammenhang mit der Stromversorgung. Verhalten: Die Zähler werden zurückgesetzt, wenn der Controller ein HCI-Reset empfangen hat.
Last_BT_Wake_TimeStamp 4 Oktette Zeitstempel des letzten Zeitpunkts, zu dem der Host den BT_Wake-Pin aktiviert hat.Dieses Feld wird zur Fehlerbehebung bei Stromversorgungsproblemen verwendet.
Last_HOST_Wake_TimeStamp 4 Oktette Der letzte Zeitstempel, zu dem der Controller den Host_Wake-Pin aktiviert hat. Dieses Feld wird zur Behebung von Stromversorgungsproblemen verwendet.
Reset_Timestamp 4 Oktette Zeitstempel, der angibt, wann der letzte HCI-Reset abgeschlossen wurde. Dieses Feld wird ausschließlich verwendet, um die Behebung von zeitbezogenen Problemen zu erleichtern. Sie sollte als erster Aufzeichnungspunkt dienen, auf den sich alle anderen Elemente beziehen.
Current_Timestamp 4 Oktette Die aktuelle Zeit, zu der dieses Ereignis generiert wird. Dieses Feld wird verwendet, um Zeitabweichungen zu beheben. Sie sollte als Trigger-Aufnahmepunkt dienen, auf den sich alle anderen Elemente beziehen.
Is_WatchDog_Timer_About_To_Expire 4 Oktette Flag, das angibt, dass dieses Ereignis zum Gesundheitsstatus vom Controller als Frühwarnung vor dem Ablauf des Watchdogs generiert wird. Der aktuelle Zeitstempel gibt den Zeitpunkt des Auftretens an.
Coex_Status_Mask 2 Oktette Bit 0 – Reserviert
Total_Links_BR_EDR_LE_Active 1 Oktett Gesamtzahl der BR/EDR/LE-Verbindungen im Status „Aktiv“.
Total_Links_BR_EDR_Sniff 1 Oktett Gesamtzahl der BR/EDR-Verbindungen im Sniff-/Leerlaufstatus.
Total_Links_CIS 1 Oktett Gesamtzahl der Links in der ISO.
Is_SCO_Active 1 Oktett Anzeige, die angibt, ob die SCO-Verbindung derzeit aktiviert ist.
Parameter für untergeordnete Ereignisse Größe Zweck
Quality_Report_Id 1 Oktett 0x00 – 0x10: Reserviert.
0x11: LMP/LL-Nachrichtentrace.
0x12: Bluetooth-Multi-Link-/Coex-Planungs-Trace.
0x13: Controller-Debugging-Informationen.
0x14 – 0xFF: Reserviert.
Connection_Handle 2 Oktette Verbindungs-Handle.
Anbieterspezifischer Parameter (Parametergesamtlänge – 4) * Oktette Anbieterspezifisches Format des LMP-Nachrichtentrace, Bluetooth-Multi-Link-/Coex-Scheduling-Trace und Controller-Debug-Informationen-Dump.

Unterereigniscode = 0x5C

Wenn dieses Ereignis aktiviert ist, muss es während jedes ISO-Intervalls generiert werden.

Aktivierung
Die Aktivierung erfolgt durch Auswahl des Anbietercodes Data_Path_ID 0x19 im Standardbefehl HCI_LE_Setup_ISO_Data_Path. Der HCI_Configure_Data_Path-Befehl mit Data_Path_ID auf 0x19 und Vendor_Specific_Config_Length auf 0 muss akzeptiert werden, auch wenn vom Controller nach dem Empfang dieses Befehls keine Aktion erwartet wird.
Zeitpunkt der Auslösung
Das Ereignis wird ab dem Beginn eines ISO-Intervalls (CIG- oder BIG-Ankerpunkt) bis zum folgenden ISO-Intervall ausgegeben. Der Controller gibt die Verzögerung mit dem effektiven Beginn des ISO-Intervalls mit Anchor_Point_Delay an.
Controller-Synchronisierung
Zu Beginn eines ISO-Intervalls berechnet der Controller StreamSN, indem er den aktuellen Wert um den konfigurierten ISO_Interval ÷ SDU_Interval erhöht. Im ersten Intervall wird er auf 0 initialisiert.
Für jedes Paket im ISO-FIFO gilt Folgendes:
  • Der Controller berechnet die Differenz SNdiff zwischen den beiden Sequenznummern:
    SNdiff = (SDUSN - StreamSN + 0x10000) mod 0x10000
  • Wenn (SNdiff + (FT-1) × ISO_Interval ÷ SDU_Interval) mod 0x10000 <= (FT-1) × ISO_Interval ÷ SDU_Interval:
    Das Paket befindet sich im Fenster für die erneute Übertragung. Sie sollte in früheren Intervallen zur Übertragung geplant gewesen sein und ist jetzt für die erneute Übertragung verfügbar. Wenn das nicht der Fall ist (die Übertragung wurde nicht geplant), wurde die Sendung zu spät empfangen. Dies muss dem Host mit dem In_Status signalisiert werden. Solche Pakete können verworfen oder für die Übertragung geplant werden. Die Auswahl ist implementierungsdefiniert.
  • Oder wenn SNdiff < ISO_Interval ÷ SDU_Interval:
    Das Paket wird ab diesem Ereignis bis zum Ablauf des Flush-Time-outs für die Übertragung geplant.
  • Oder wenn SNdiff >= ISO_Interval ÷ SDU_Interval und SNdiff <= Max_Forward_Buffers:
    Das Paket liegt in der Zukunft und wird mit einem nachfolgenden Ereignis übertragen. Da die Pakete in der richtigen Reihenfolge gesendet werden, wird die Suche nach Paketen für dieses Intervall durch diese Bedingung beendet.
    Die vom Host verwendeten Puffer werden dem Controller nicht mitgeteilt, sind aber auf Max_Forward_Buffers = 16 begrenzt.
  • Oder wenn keine der oben genannten Bedingungen erfüllt ist:
    Das Paket wird verworfen, das Flush-Zeitlimit wird erreicht oder ein fehlerhaftes Paket wurde empfangen.

Parameter für untergeordnete Ereignisse Größe Zweck
Connection_Handle 2 Oktette Verbindungs-Handle des CIS oder BIS
Bereich: 0x0000 bis 0x0EFF
Sequence_Number 2 Oktette Sequenznummer des Streams, die vom Controller verwaltet wird.

Wird beim Erstellen des CIS oder BIS auf 0 initialisiert und bei jedem ISO-Intervall um die Anzahl der SDUs durch das synchrone ISO-Intervall erhöht, das als ISO_interval ÷ SDU_Interval definiert ist.
Anchor_Point_Delay 2 Oktette Verzögerung in Mikrosekunden zwischen der Generierung des Ereignisses und dem effektiven BIG- oder CIG-Ankerpunkt oder dem Beginn des ISO-Intervalls. Der effektive Ankerpunkt-Zeitstempel wird so definiert:
Event generation time - Anchor_Point_Delay

Bereich: 0 bis ISO-Intervall in Mikrosekunden
In_Status 2 Oktette Controller-ISO-Pufferstatus

Zu Beginn eines ISO-Intervalls wird jedes Bit bi festgelegt, wenn die SDU (Sequence_Number + i) mod 0x10000 verfügbar ist. Wenn sie nicht verfügbar ist, wird die SDU als Not received from the host identifiziert.

Der Wert i liegt zwischen 0 und ISO_Interval ÷ SDU_Interval - 1. Für andere Werte von i werden die Bits auf 0 gesetzt.
Tx_Status 2 Oktette Übertragungsstatus in Bezug auf die SDUs mit Sequenznummern:
(Sequence_Number - Flush_Timeout × ISO_Interval ÷ SDU_Interval + i + 0x10000) mod 0x10000

Jedes Bit bi wird festgelegt, wenn alle PDUs der identifizierten SDU anhand ihrer Sequenznummer erfolgreich übertragen und bestätigt wurden.

Der Wert i liegt zwischen 0 und ISO_Interval ÷ SDU_Interval - 1. Für andere Werte von i werden die Bits auf 0 gesetzt.
In einer Broadcast-Gruppe muss die Übertragung immer bestätigt werden.

Unterstützung mehrerer Werbetreibender

Die Ziele der Unterstützung mehrerer Werbetreibender sind:

  • Unterstützung mehrerer Anzeigen (max_advt_instances)
  • Unterschiedliche Sendeleistungen für unterschiedliche Reichweiten
  • Unterschiedliche Werbeinhalte
  • Individuelle Antwort für jeden Werbetreibenden
  • Datenschutz (nicht nachverfolgbar) für jeden Werbetreibenden
  • Verbindbar

Damit diese Spezifikation an bestehende Standards angelehnt ist, werden die folgenden anbieterspezifischen Befehle bereitgestellt. Sie basieren auf der Bluetooth 4.1-Spezifikation.

LE_Multi_Advt_Command

OCF: 0x154

Befehlsparameter Größe Zweck
Multi_advt_opcode 1 Oktett 0x01 – Set_Advt_Param_Multi_Sub_Cmd
0x02 – Set_Advt_Data_Multi_Sub_Cmd
0x03 – Set_Scan_Resp_Data_Multi_Sub_Cmd
0x04 – Set_Random_Addr_Multi_Sub_Cmd
0x05 – Set_Advt_Enable_Multi_Sub_Cmd

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Multi_advt_opcode 1 Oktett 0x01 – Set_Advt_Param_Multi_Command
0x02 – Set_Advt_Data_Multi_Command
0x03 – Set_Scan_Resp_Data_Multi_Command
0x04 – Set_Random_Addr_Multi_Command
0x05 – Set_Advt_Enable_Multi_Command

LE_Multi_Advt_Command: Set_Advt_Param_Multi_Sub_Cmd

Grundlegende Referenz: Bluetooth Core 4.1 Specification, Seite 964 (LE Set Advertising Parameter Command)

Untergeordneter OCF: 0x01

Unterbefehlsparameter Größe Zweck
Advertising_Interval_Min Pro Spezifikation Pro Spezifikation
Advertising_Interval_Max Pro Spezifikation Pro Spezifikation
Advertising_Type Pro Spezifikation Pro Spezifikation
Own_Address_Type Pro Spezifikation Pro Spezifikation
Own_Address Pro Spezifikation Pro Spezifikation
Direct_Address_Type Pro Spezifikation Pro Spezifikation
Direct_Address Pro Spezifikation Pro Spezifikation
Advertising_Channel_Map Pro Spezifikation Pro Spezifikation
Adverstising_Filter_Policy Pro Spezifikation Pro Spezifikation
Advertising_Instance 1 Oktett Gibt an, ob die oben genannten Parameter für eine Instanz gelten.
Tx_power 1 Oktett Transmit_Power
Einheit: dBm (Ganzzahl mit Vorzeichen)
Bereich: -70 bis +20

Der Parameter Own_Address kann eine vom Host konfigurierte Adresse sein, wenn diese Multi-Anzeigen-Instanz eingerichtet wird. Dadurch ist es möglich, dass zum Zeitpunkt der Übertragung des ersten Beacons eine auflösbare private Adresse vorhanden ist. Anzeigen auf einer Instanz werden unabhängig von der Verbindung weiterhin ausgeliefert. Der Host-BT-Stack kann nach der Verbindung einen Befehl zum Starten der Werbung auf einer Instanz ausgeben.

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert, wie in der Bluetooth Core 4.1-Spezifikation angegeben. Der Controller antwortet mit einem Fehlercode (ungültiger Parameter), wenn die Werbeinstanz oder die Tx_Power-Parameter ungültig sind.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Multi_advt_opcode 1 Oktett 0x01 [Set_Advt_Param_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd

Grundlegende Referenz: Bluetooth Core 4.1 Specification, Seite 969 (LE Set Advertising Data Command)

Untergeordnetes OCF: 0x02

Unterbefehlsparameter Größe Zweck
Advertising_Data_Length Pro Spezifikation Pro Spezifikation
Advertising_Data Pro Spezifikation Pro Spezifikation
Advertising_Instance 1 Oktett Gibt an, ob die oben genannten Parameter für eine Instanz gelten.

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert, wie in der Bluetooth Core 4.1-Spezifikation angegeben. Der Controller antwortet mit einem Nicht-Erfolgscode, wenn die Werbeinstanz oder die Tx_Power-Parameter ungültig sind.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Multi_advt_opcode 1 Oktett 0x02 [Set_Advt_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd

Grundlegende Referenz: Bluetooth Core 4.1 Specification, Seite 970 (LE Set Scan Response Data Command)

Untergeordneter OCF: 0x03

Unterbefehlsparameter Größe Zweck
Scan_Response_Data_Length Pro Spezifikation Pro Spezifikation
Scan_Response_Data Pro Spezifikation Pro Spezifikation
Advertising_Instance 1 Oktett Gibt an, ob die oben genannten Parameter für eine Instanz gelten.

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert, wie in der Bluetooth Core 4.1-Spezifikation angegeben. Der Controller antwortet mit einem Fehlercode (ungültiger Parameter), wenn die Werbeinstanz oder die Tx_Power-Parameter ungültig sind.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Multi_advt_opcode 1 Oktett 0x03 [Set_Scan_Resp_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd

Grundlegende Referenz: Bluetooth Core 4.1 Specification, Seite 963 (LE Set Random Address Command)

Unter-OCF: 0x04

Unterbefehlsparameter Größe Zweck
Zufällige Adresse Pro Spezifikation Pro Spezifikation
Advertising_Instance 1 Oktett Gibt an, ob die oben genannten Parameter für eine Instanz gelten.

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Multi_advt_opcode 1 Oktett 0x04 [Set_Random_Addr_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd

Grundlegende Referenz: Bluetooth Core 4.1 Specification, Seite 971 (LE Set Advertise Enable Command in dieser Core-Spezifikation)

OCF: 0x05

Unterbefehlsparameter Größe Zweck
Advertising_Enable 1 Oktett Ein Wert von 1 bedeutet „aktivieren“. Jeder andere Wert bedeutet „Deaktivieren“.
Advertising_Instance 1 Oktett Gibt an, ob die oben genannten Parameter für eine Instanz gelten. Instanz 0 steht für eine Standard-HCI-Instanz.

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Multi_advt_opcode 1 Oktett 0x05 [Set_Advt_Enable_Multi_Sub_Cmd]

Ausgelagerte Auflösung privater Adressen

Diese Funktion löst eine private Adresse in der Controller-Firmware oder ‑Hardware auf und bietet folgende Vorteile:

  • Latenz, die mit dem Host bei der Auflösung einer privaten Adresse verbunden ist
  • Strom sparen, indem der Host nicht aktiviert wird

LE_Set_RPA_Timeout

OCF: 0x15C

Befehlsparameter Größe Zweck
LE_local_IRK 16 Oktett Der lokale Geräte-IRK, der zum Generieren der zufälligen auflösbaren Adresse(n) verwendet wird.
tRPA_min 2 Oktette Das minimale Zeitlimit für die RPA-Generierung in Sekunden. Der Controller muss für alle Werbe-, Scan- und Verbindungsereignisse nach diesem Zeitlimit neue auflösbare Adressen generieren.
Gültiger Bereich: 300–1.800
tRPA_max 2 Oktette Die maximale Zeitüberschreitung für die RPA-Generierung in Sekunden. Der Controller muss vor Ablauf dieses Zeitlimits neue auflösbare Adressen für alle Werbe-, Scan- und Verbindungsereignisse generieren.
Gültiger Bereich: tRPA_min–1800
Rückgabeparameter Größe Zweck
Status 1 Oktett Der Status des Befehls.

Vorgeschlagene HCI-Statuswerte:
0x00 Erfolg
0x01 Unbekannter Befehl (falls nicht unterstützt)
0x12 Ungültige Befehlsparameter (falls Parameter außerhalb des angegebenen Bereichs liegen)

LE_RPA_offload_Command

OCF: 0x155

Befehlsparameter Größe Zweck
RPA_offload_opcode 1 Oktett 0x1 – Kundenspezifische Funktion aktivieren
0x2 – IRK der Liste hinzufügen
0x3 – IRK aus der Liste entfernen
0x4 – IRK-Liste löschen
0x5 – IRK-Listeneintrag lesen

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Event_RPA_offload_opcode 1 Oktett 0x1 – Kundenspezifische Funktion aktivieren
0x2 – IRK der Liste hinzufügen
0x3 – IRK aus der Liste entfernen
0x4 – IRK-Liste löschen
0x5 – IRK-Listeneintrag lesen

LE_RPA_offload: Enable_cust_specific_sub_Command

Untergeordneter OCF: 0x01

Unterbefehlsparameter Größe Zweck
enable_customer_specific_feature_set 1 Oktett 0x01 – Ausgelagerte RPA-Funktion aktivieren
0x00 – Ausgelagerte RPA-Funktion deaktivieren

Die RPA-Auslagerung muss vom Host basierend auf den Chipfunktionen aktiviert werden. Weitere Informationen finden Sie unter LE_Get_Vendor_Capabilities_Command. Jeder Chip kann eine unterschiedliche max_irk_list_sz in der Firmware haben.

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Event_cust_specific_feature_opcode 1 Oktett 0x01 [Kundenspezifische Funktion aktivieren]

LE_RPA_offload: Add_IRK_to_list_sub_Command

Untergeordnetes OCF: 0x02

Unterbefehlsparameter Größe Zweck
LE_IRK 16 Oktette LE IRK (1. Byte LSB)
Address_Type 1 Oktett 0: Öffentliche Adresse
1: Zufällige Adresse
LE_Device_Address 6 Oktette Öffentliche oder zufällige Adresse, die dem IRK zugeordnet ist (1. Byte LSB)

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Event_cust_specific_feature_opcode 1 Oktett 0x02 [Add IRK to the list]
LE_IrkList_AvailableSpaces 1 Oktett Verfügbare IRL-Listeneinträge nach dem aktuellen Vorgang

LE_RPA_offload: Remove_IRK_to_list_sub_Command

Untergeordneter OCF: 0x03

Unterbefehlsparameter Größe Zweck
Address_Type 1 Oktett 0: Öffentliche Adresse
1: Zufällige Adresse
LE_Device_Address 6 Oktette Öffentliche oder zufällige Adresse, die mit dem IRK verknüpft ist

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Event_cust_specific_feature_opcode 1 Oktett 0x03 [Remove IRK from the list]
LE_IrkList_AvailableSpaces 1 Oktett Verfügbare IRL-Listeneinträge nach dem aktuellen Vorgang

LE_RPA_offload: Clear_IRK_list_sub_Command

Unter-OCF: 0x04

Unterbefehlsparameter Größe Zweck
Keine

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Event_cust_specific_feature_opcode 1 Oktett 0x04 [Clear IRK List]
LE_IrkList_AvailableSpaces 1 Oktett Verfügbare IRL-Listeneinträge nach dem aktuellen Vorgang [max_irk_list_sz]

LE_RPA_offload: Read_IRK_list_sub_Command

Unter-OCF: 0x05

Unterbefehlsparameter Größe Zweck
LE_read_IRK_list_entry-index 1 Oktett Index der IRK-Liste [0, max_irk_list_sz-1]

Für diesen Befehl wird ein „Command Complete“-Ereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Event_cust_specific_feature_opcode 1 Oktett 0x05 [Read IRK List Entry]
LE_Read_IRK_List_entry 1 Oktett Index des IRK, das der Host zurücklesen möchte (die maximale IRK-Listengröße beträgt 32).
LE_IRK 16 Oktette IRK-Wert
Address_Type 1 Oktett 0: Öffentliche Adresse
1: Zufällige Adresse
LE_Device_Address 6 Oktette Öffentliche oder zufällige Adresse, die mit dem IRK verknüpft ist
LE_Resolved_Private_Address 6 Oktette Aktuelle aufgelöste, auflösbare private Adresse dieses IRK

Sniff Offload

Die Funktion „Sniff Offload“ lagert die Verwaltung des Sniff-Modus vom Bluetooth-Host-Stack auf den Bluetooth-Controller aus. Dadurch kann der Controller das Timing für den Eintritt in den und den Austritt aus dem Sniff-Modus verwalten und konfigurierbare Sniff- und Sniff-Unterbewertungsparameter anwenden, während der Host die Kontrolle über die Parameterauswahl basierend auf Änderungen der Bluetooth-Profilaktivität behält.

Sniff Offload-Status

In diesem Abschnitt werden die Status eines Bluetooth-Controllers in Bezug auf die Funktion „Sniff Offload“ definiert. Es wurden zwei globale Status definiert, um den Status eines Bluetooth-Controllers in Bezug auf die Aktivierung von Sniff Offload zu identifizieren. Es wurden zwei verbindungsspezifische Status definiert, um den Status einer BR/EDR-Verbindung zu identifizieren, wenn sich der Bluetooth-Controller im Status „Sniff Offload Enabled“ befindet.

Globale Status

Es wurden zwei globale Status definiert, um den Status eines Bluetooth-Controllers in Bezug auf die Aktivierung von Sniff Offload zu identifizieren.

Status „Sniff Offload Disabled“ (Sniff Offload deaktiviert)

Ein Bluetooth-Controller befindet sich standardmäßig im Status „Sniff Offload Disabled“. Es wird erwartet, dass der Bluetooth-Controller die Befehle HCI_Sniff_Mode, HCI_Exit_Sniff_Mode und HCI_Sniff_Subrating verarbeitet, die von einem Bluetooth-Host ausgegeben werden. Der Bluetooth-Controller muss die Ereignisse HCI_Mode_Change und HCI_Sniff_Subrating auch an einen Bluetooth-Host weiterleiten, wie durch die vom Bluetooth-Host festgelegte Ereignismaske festgelegt.

Status der Aktivierung von Sniff Offload

Ein Bluetooth-Controller befindet sich im Status „Sniff Offload Enabled“, nachdem er erfolgreich einen „WriteSniffOffloadEnable“-Befehl zur Aktivierung von Sniff Offload verarbeitet hat. In diesem Zustand wird erwartet, dass der Bluetooth-Controller die Ereignisse „HCI_Mode_Change“ und „HCI_Sniff_Subrating“ an einen Bluetooth-Host weiterleitet, wie durch eine logische AND-Funktion der vom Bluetooth-Host festgelegten Ereignismaske und der Event Suppression Flags (Flags zur Unterdrückung von Ereignissen) entschieden wird.

Verbindungsspezifische Status

Wenn sich ein Bluetooth-Controller im Status „Sniff Offload Enabled“ befindet, kann sich jeder aktive ACL in einem der beiden unten beschriebenen Status befinden.

Status „Ausstehend“ für Parameter

Eine ACL hat den Status „Ausstehende Parameter“, wenn sich der Bluetooth-Controller im Status „Sniff Offload Enabled“ befindet, aber der Bluetooth-Host für die aktuelle ACL noch nicht mindestens einmal den anbieterspezifischen Befehl „WriteSniffOffloadParameters“ ausgegeben hat.

Status „Kontrollgruppe: Gestartet“

Eine ACL befindet sich im Status „Control-Started“, wenn sich der Bluetooth-Controller im Status „Sniff Offload Enabled“ befindet und der Bluetooth-Host für die aktuelle ACL mindestens einmal den anbieterspezifischen Befehl „WriteSniffOffloadParameters“ ausgegeben hat.

WriteSniffOffloadEnable

OCF: 0x310

Befehlsparameter Größe Zweck
Enable_Sniff_Offload 1 Oktett 0x00 : Deaktivieren
0x01 : Aktivieren
Subrating_Max_Latency 2 Oktette Der Parameter „Maximale Latenz“ wird verwendet, um die maximale Sniff-Subrate zu berechnen, die das Remote-Gerät verwenden darf. Standard: T*sniff* Latency = N × 0,625 ms (1 Baseband-Slot) Bereich: 0x0002 bis 0xFFFE Zeitbereich: 1,25 ms bis 40,9 s
Subrating_Min_Remote_Timeout 2 Oktette Mindest-Timeout für den Sniff-Modus (T*sniff_mode_timeout*), das das Remote-Gerät verwenden darf Standard: 0x0000 Timeout = N × 0,625 ms (1 Baseband-Slot) Bereich: 0x0000 bis 0xFFFE Zeitbereich: 0 s bis 40,9 s
Subrating_Min_Local_Timeout 2 Oktette Mindest-Timeout für den Sniff-Modus (T*sniff_mode_timeout*), das das lokale Gerät verwenden darf. Standard: 0x0000 Timeout = N × 0,625 ms (1 Baseband-Slot) Bereich: 0x0000 bis 0xFFFE Zeitbereich: 0 s bis 40,9 s
Suppress_Mode_Change_Event 1 Oktett 0x00 : Der Bluetooth-Controller meldet das HCI-Ereignis „Mode_Change“ an den Host, sofern die im Befehl „HCI_Set_Event_Mask“ festgelegte Konfiguration dies zulässt.
0x01 : Der Bluetooth-Controller meldet das HCI-Ereignis „Mode_Change“ nicht an den Host.
Suppress_Sniff_Subrating_Event 1 Oktett 0x00 : Der Bluetooth-Controller muss das HCI-Sniff_Subrating-Ereignis an den Host melden, sofern die im Befehl „HCI_Set_Event_Mask“ festgelegte Konfiguration dies vorsieht.
0x01 : Der Bluetooth-Controller darf das HCI-Sniff_Subrating-Ereignis nicht an den Host melden.

WriteSniffOffloadParameters

OCF: 0x311

Befehlsparameter Größe Zweck
Connection_Handle 2 Oktette 16-Bit-BR/EDR-ACL-Verbindungs-Handle. Bereich: 0x0000 bis 0x0EFF
Sniff_Max_Interval 2 Oktette – Von Bluetooth SIG definierter Bereich, der normalerweise für den Eintritt in den Sniff-Modus verwendet wird. Bereich: 0x0002 bis 0xFFFE; nur gerade Werte sind gültig. Erforderlicher Bereich: 0x0006 bis 0x0540. Zeit = N × 0,625 ms. Zeitbereich: 1,25 ms bis 40,9 s. Sonderfälle: 0x0000: Wird verwendet, um den Sniff-Offload-Modus „Push-Active“ auszuwählen. 0x0001 : Wird verwendet, um den Sniff-Offload-Modus „Prefer-Active“ (Aktiv bevorzugen) auszuwählen.
Sniff_Min_Interval 2 Oktette Bereich: 0x0002 bis 0xFFFE; nur gerade Werte sind gültig. Erforderlicher Bereich: 0x0006 bis 0x0540 Zeit = N × 0,625 ms Zeitbereich: 1,25 ms bis 40,9 s
Sniff_Attempts 2 Oktette Anzahl der Baseband-Empfangsslots für den Sniff-Versuch. Länge = N × 1,25 ms Bereich: 0x0001 bis 0x7FFF Zeitraum: 1,25 ms bis 40,9 s Erforderlicher Bereich für Controller: 1 bis T*sniff* ÷ 2
Sniff_Timeout 2 Oktette Anzahl der Baseband-Empfangsslots für Sniff-Timeout. Länge = N × 1,25 ms Bereich: 0x0000 bis 0x7FFF Zeitraum: 0 ms bis 40,9 s Pflichtbereich für Controller: 0 bis 0x0028
Link_Inactivity_Timeout 2 Oktette Zeitlimit in Millisekunden. Der Link_Inactivity-Timer wird bei jeder HCI-ACL-Transaktion gestartet/zurückgesetzt. Nach Ablauf dieses Timers muss der Controller den Eintritt in den Sniff-Modus einleiten.
Subrating_Max_Latency 2 Oktette Der Parameter „Maximale Latenz“ wird verwendet, um die maximale Sniff-Subrate zu berechnen, die das Remote-Gerät verwenden darf. Standard: T*sniff* Latency = N × 0,625 ms (1 Baseband-Slot) Bereich: 0x0002 bis 0xFFFE Zeitbereich: 1,25 ms bis 40,9 s
Subrating_Min_Remote_Timeout 2 Oktette Mindest-Timeout für den Sniff-Modus (T*sniff_mode_timeout*), das das Remote-Gerät verwenden darf Standard: 0x0000 Timeout = N × 0,625 ms (1 Baseband-Slot) Bereich: 0x0000 bis 0xFFFE Zeitbereich: 0 s bis 40,9 s
Subrating_Min_Local_Timeout 2 Oktette Mindest-Timeout für den Sniff-Modus (T*sniff_mode_timeout*), das das lokale Gerät verwenden darf. Standard: 0x0000 Timeout = N × 0,625 ms (1 Baseband-Slot) Bereich: 0x0000 bis 0xFFFE Zeitbereich: 0 s bis 40,9 s
Allow_Exit_Sniff_On_Rx 1 Oktett Flagge zur Steuerung des Beendens des Sniff-Modus bei einer HCI-ACL-Transaktion in Empfangsrichtung. 0x00 : Sniffing bei Empfang nicht beenden. 0x01 : Beenden des Sniffing bei Empfang von HCI-ACL in Rx-Richtung. HCI-ACL ist als ACL-Paketübertragung vom Controller zum Host über HCI definiert.
Allow_Exit_Sniff_On_Tx 1 Oktett Flag zum Steuern des Beendens des Sniff-Modus bei einer HCI-ACL-Transaktion in Senderichtung. 0x00 : Sniff-Vorgang bei Tx nicht beenden. 0x01 : Beenden des Sniffing bei der Übertragungsrichtung „Tx“. HCI-ACL ist als ACL-Paketübertragung vom Host zum Controller über HCI definiert.