HCI-Anforderungen

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

Dieses Dokument enthält eine Liste der Anforderungen für Bluetooth (BT) und Bluetooth Low Energy (BLE) HCI. Host-BT-Stack-Anbieter und BT-Controller-Anbieter müssen diese Plattformanforderungen erfüllen, um den unten beschriebenen Feature-Set nutzen zu können.

In diesem Dokument wird die Bluetooth Core 5.2-Spezifikation als „Spezifikation“ bezeichnet. Die Bluetooth Core 5.2-Spezifikation ist auf der Bluetooth SIG-Website sowie in anderen gängigen Dokumenten verfügbar.

Allgemeiner Überblick über das Design

Chipfunktionen und -konfiguration

Als offene Plattform bietet Android eine Reihe von Software-Releases, OEMs, Anbietern sowie Plattform- und Chipfunktionen.

In diesem Dokument wird eine Designphilosophie beschrieben, nach der BT-Controller ihre Funktionen (über die standardmäßige Bluetooth Core 5.2-Spezifikation hinaus) zur Verfügung stellen können, um die variierenden Umgebungen und Migrationen zu verwalten. Der BT-Stack auf dem Host kann diese Funktionen dann verwenden, um zu bestimmen, welche Features aktiviert werden sollen.

Offene Standards unterstützen

Ein Ziel von Android besteht darin, offene Standards zu unterstützen, nachdem diese in einer Bluetooth-Spezifikation zertifiziert wurden. Wenn eine unten beschriebene Funktion in den standardmäßigen HCI-Methoden in einer zukünftigen Bluetooth-Spezifikation verfügbar wird, werden wir diesen Ansatz als Standard verwenden.

Anbieterspezifische Funktionen

Anbieterspezifischer Befehl: LE_Get_Vendor_Capabilities_Command

OpCode-Befehlsfeld (OCF): 0x153

Befehlsparameter Größe Zweck
Leere Befehlsparameterliste

Für diesen Befehl wird ein Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
max_advt_instances
(eingestellt)
1 Oktett Anzahl der unterstützten Advertising-Instanzen.

Nach Version 0.98 reserviert.
Dieser Parameter wird in der Google-Funktionsspezifikation ab Version 0.98 eingestellt und durch LE Extended Advertising ersetzt, die ab der BT-Spezifikation Version 5.0 verfügbar ist.
offloaded_resolution_of_private-address
(eingestellt)
1 Oktett BT-Chip-Funktion von RPA.
Wenn dies von einem Chip unterstützt wird, muss er vom Host aktiviert werden.
0 = Nicht geeignet
1 = fähig

Reserviert nach Version 0.98.
Dieser Parameter wird in der Google-Funktionsspezifikation ab Version 0.98 zugunsten der Datenschutzfunktion eingestellt, die ab Version 4.2 der BT-Spezifikation 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 Filterung 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 Berichte zu Aktivitäts- und Energieinformationen
0 = Nicht geeignet
1 = Fähig
version_supported 2 Oktette Gibt die Version der unterstützten Google-Featurespezifikation an
byte[0] = Hauptnummer
byte[1] = Nebennummer

v1.04
byte[0] = 0x01
byte[1] = 0x04
total_num_of_advt_tracked 2 Oktette Gesamtzahl der für OnLost von OnFound erfassten Werbetreibenden
extended_scan_support 1 Oktett Unterstützt erweitertes Scanfenster und erweitertes Scan-Intervall
debug_logging_supported 1 Oktett Unterstützt das Logging von Binär-Debug-Informationen vom Controller
LE_address_generation_offloading_support
(eingestellt)
1 Oktett 0 = Nicht unterstützt
1 = Unterstützt

Nach v0.98 reserviert
Dieser Parameter wird in der Google-Funktionsspezifikation ab Version 0.98 zugunsten der Datenschutzfunktion eingestellt, die ab Version 4.2 der BT-Spezifikation verfügbar ist.
A2DP_source_offload_capability_mask 4 Oktette Bitmasken für Codec-Typen werden unterstützt
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 Berichte zu Bluetooth-Qualitätsereignissen
0 = Nicht möglich
1 = Fähig
dynamic_audio_buffer_support 4 Oktette Unterstützt dynamische Audiozwischenspeicher im Bluetooth-Controller
Bitmasken für unterstützte Codec-Typen
Bit 0 – SBC
Bit 1 bis AAC
Bit 2 bis APTX
Bit 3 bis APTX HD
Bit 4 bis LDAC
Bit 5–31 sind reserviert
a2dp_offload_v2_support 1 Oktett Unterstützt A2dp Offload v2-Befehle im Bluetooth-Controller (siehe A2DP-Auslagerung starten, A2DP-Auslagerung beenden)
0 = Nicht unterstützt
1 = Unterstützt

Batchverarbeitung von Scanergebnissen

Ein Designziel besteht darin, die Übermittlung von Bluetooth LE-Scan-Antwortereignisbenachrichtigungen an den Host zu verbessern, um Energie im Host zu sparen.

Indem der Controller den Hostanwendungsprozessor weniger benachrichtigt, um Ergebnisse zu scannen, kann er länger im Leerlauf oder im Ruhezustand bleiben. Dadurch wird der Stromverbrauch im Host 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 der Speichereinrichtung für LE-Scanergebnisse im Bluetooth-Controller. Der Speicher wird verwendet, um vorübergehend Werbedaten im Batch zu präsentieren und Daten und Metadaten zu scannen, die vom Controller zur späteren Übermittlung an den Host empfangen werden.

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

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

LE_Batch_Scan_Befehl

OCF: 0x156

Befehlsparameter Größe Zweck
Batch_Scan_opcode 1 Oktett 0x1 – kundenspezifisches Feature aktivieren
0x2 – Batchscan-Speicherparameter festlegen
0x3 – Batchscan-Parameter festlegen
0x4 – Ergebnisse der Batchscan-Ergebnisse lesen

Für diesen Befehl wird ein Ereignis zum Abschluss des Befehls generiert. Durch das Aktivieren des kundenspezifischen Features wird der Scan nicht gestartet.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
Batch_Scan_opcode 1 Oktett 0x1 – kundenspezifisches Feature aktivieren
0x2 – Batchscan-Speicherparameter festlegen
0x3 – Batchscan-Parameter festlegen
0x4 – Ergebnisse der Batchscan-Ergebnisse lesen

LE_Batch_Scan_Command: Kundenspezifische Funktion aktivieren

Unter-OBF: 0 x 01

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 Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
Batch_Scan_opcode 1 Oktett 0x1 – kundenspezifisches Feature aktivieren
0x2 – Batchscan-Speicherparameter festlegen
0x3 – Batchscan-Parameter festlegen
0x4 – Ergebnisse der Batchscan-Ergebnisse lesen

LE_Batch_Scan_Command: Unterbefehl für Batch-Scan-Speicherparameter festlegen

Unter-OBF: 0 x 02

Unterbefehlsparameter Größe Zweck
Batch_Scan_Full_Max 1 Oktett Maximaler Speicherplatz (in %) der vollständigen Version
[Bereich: 0–100]
Batch_Scan_Truncated_Max 1 Oktett Maximaler Speicherplatz (in %), der dem abgeschnittenen Stil zugewiesen ist
[Bereich: 0–100]
Batch_Scan_Notify_Threshold 1 Oktett Benachrichtigungsstufe (in %) für individuellen Speicherpool einrichten
[Bereich: 0–100]
Wenn Sie 0 festlegen, wird die Benachrichtigung deaktiviert. Anbieterspezifisches HCI-Ereignis wird generiert (Teilereignis wegen Verstoß gegen Speichergrenzwert)

Für diesen Befehl wird ein Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
Batch_scan_opcode 1 Oktett 0x02 [Batch-Scanparameter festlegen]

LE_Batch_Scan_Command: Unterbefehl für Batch-Scan-Parameter festlegen

Unter-OBF: 0 x 03

Unterbefehlsparameter Größe Zweck
Batch_Scan_Mode 1 Oktett 0x00 – Batch-Scan ist deaktiviert
0x01 – Abgeschnittener Modus ist aktiviert
0x02 – Modus „Vollständig“ ist aktiviert
0x03 – Abgeschnittener und vollständiger Modus sind aktiviert
Duty_cycle_scan_window 4 Oktette Batch-Scanzeit (Anzahl der Slots)
Duty_cyle_scan_interval 4 Oktette Intervall des Batchscans (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

Wenn dieser Unterbefehl aktiviert ist, wird das Batch-Scanning gestartet. Beim Abgeschnittenen Scannen werden die Ergebnisse abgeschnitten gespeichert, wobei der eindeutige Schlüssel für den abgeschnittenen Stil = {BD_ADDR, scan_interval} ist. Das bedeutet, dass für jedes Scanintervall nur ein BD_ADDR will aufgezeichnet wird. Der Datensatz, der für den abgeschnittenen Modus beibehalten werden muss, ist: {BD_ADDR, Tx Power, RSSI, Timestamp}

Wenn der Modus "Vollständig" aktiviert ist, wird ein aktives Scannen verwendet und Scanantworten werden aufgezeichnet. Eindeutiger Schlüssel des vollständigen Stils = {MAC, Anzeigenpaket}, unabhängig vom Scanintervall. Der für den Modus "Full" beizubehaltende Datensatz ist {BD_ADDR, Tx Power, RSSI, Timestamp, Ad package, Scan Response}. Im Modus „Vollständig“ wird dasselbe AD-Paket nur einmal aufgezeichnet, wenn es in verschiedenen Scanintervallen mehrmals gesehen wird. Im Modus „Abgeschnitten“ ist es jedoch die Sichtbarkeit von BA_ADDR über verschiedene Scanintervalle von Interesse (einmal pro Scanintervall). Der RSSI ist der Durchschnitt aller Duplikate einer eindeutigen Anzeige innerhalb eines Scanintervalls.

Für diesen Befehl wird ein Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
Batch_scan_opcode 1 Oktett 0x03 [Batch-Scanparameter festlegen]

LE_Batch_Scan_Command: Unterbefehl "Batch Scan-Ergebnisse" lesen

Unter-OBF: 0 x 04

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

Für diesen Befehl wird ein Ereignis zum Abschluss des Befehls generiert. Wenn der Host diesen Befehl ausgibt, passen möglicherweise nicht alle Ergebnisse im Controller in ein einziges Ereignis des abgeschlossenen Befehls. Der Host wiederholt diesen Befehl, bis die entsprechenden Ergebnisse im Ereignis "Befehl abgeschlossen" in der Anzahl der Datensätze 0 ergeben. Dies bedeutet, dass der Controller keine weiteren Datensätze für die Kommunikation mit dem Host hat. Jedes Ereignis des abgeschlossenen Befehls kann mehrere Datensätze mit nur einem Datentyp enthalten (vollständig oder abgeschnitten).

Zeitreferenzen zwischen Controller und Host werden nicht synchronisiert. Die Einheit für den Zeitstempel ist 50 ms. Der Wert des Zeitstempels basiert darauf, wenn der Read_Batch_Scan_Results_Sub_cmd vom Host angegeben wird. Wenn die Eingangszeit eines Befehls in der Firmware T_c ist, ist der tatsächliche Zeitpunkt, zu dem der Zeitstempel in der Firmware verwendet wurde, T_fw. Die Berichtszeit ist: (T_cT_fw). T_c und T_fw liegen in der Zeitdomain der Firmware. Dadurch kann der Host berechnen, wann das Ereignis stattgefunden hat.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
Batch_scan_opcode 1 Oktett 0x03 [Batch-Scanparameter festlegen]
Batch_Scan_data_read 1 Oktett Gibt das Format an (abgeschnitten oder vollständig)
num_of_records 1 Oktett Anzahl der Datensätze von Batch_Scan_data_read
format_of_data Variabel Abgeschnittener Modus:
Address[0]: 6 Oktetts-Zeichen
Address_Type[0]: 1 Oktett
Tx_Pwr[0]: 1 Oktett
RSSI[0]: 1 Oktett
Zeitstempel[0]: 2 Oktets-Scans (num_of_records) mit obigem Format:












num_of_recordsScan_data_resp

Filter für Werbepaketinhalt

Hiermit wird der Advertising Packet Content Filter (APCF) im Controller aktiviert/deaktiviert/eingerichtet. APCF filtert Werbeberichte im Controller, aber nicht regelmäßig Anzeigen.

LE_APCF_Befehl

OCF: 0x157

Befehlsparameter Größe Zweck
APCF_opcode 1 Oktett 0x00 – APCF-Dienst – APCF Aktivieren
0x01 – APCF – Reservierter Dienst CF X CF0, Reserviert / Reserviert APCF x CF0, für künftig nutzbare Filter, AA-Fx CF0, reserviert
0x02 – APCF-Broadcaster-Adresse
0x03 – APCF-Dienst-UUID
0x04 – APCF-Dienst-Anfrage-UUID
0x05 – APCF-Dienst-Anfrage-UUID
0x05 – APCF-Lokaler Name
0x06






Für diesen Befehl wird ein Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Retourenstatus
APCF_opcode 1 Oktett 0x00 – APCF-Dienst – APCF Aktivieren
0x01 – APCF – Reservierter Dienst CF X CF0, Reserviert / Reserviert APCF x CF0, für künftig nutzbare Filter, AA-Fx CF0, reserviert
0x02 – APCF-Broadcaster-Adresse
0x03 – APCF-Dienst-UUID
0x04 – APCF-Dienst-Anfrage-UUID
0x05 – APCF-Dienst-Anfrage-UUID
0x05 – APCF-Lokaler Name
0x06






LE_APCF_Befehl: Enable_sub_cmd

Unter-OBF: 0 x 00

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

Für diesen Befehl wird ein Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
APCF_opcode 1 Oktett 0x0 – APCF aktivieren
APCF_Enable 1 Oktett Aktivieren/Deaktivieren wird über APCF_enable eingestellt

LE_APCF_Befehl: 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 löschen.

Unter-OBF: 0 x 01

Unterbefehlsparameter Größe Zweck
APCF_Action 1 Oktett 0x00 – Hinzufügen
0x01 – Löschen
0x02 – Löschen
Mit „Delete“ werden der jeweilige Filter und die zugehörigen Featureeinträge in anderen Tabellen gelöscht.
Durch „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: Aktivierung des Filters für Übertragungsadressen
Bit 1: Aktivieren, um den Filter für Dienstdatenänderung zu aktivieren
Bit 2: Aktivierung der Dienst-UUID-Prüfung
Bit 3: Aktivierung der UUID-Prüfung für Serviceanfragen
Bit 4: Die Überprüfung lokaler Namen wird aktiviert
Bit 5: Setzen Sie Bit 5: Setzen Sie Bit 5: Setzen Sie


APCF_List_Logic_Type 2 Oktette Logische Operation für jede Featureauswahl (pro Bit-Position), die in APCF_Feature_Selection angegeben ist.
Nur gültig, wenn eine Funktion aktiviert ist.
Bit-Positionswert:
0: OR
1: AND
Wenn die AND-Logik ausgewählt ist, durchläuft ein ADV-Paket den Filter nur dann, wenn es ALLE Einträge in der Liste enthält.
Bei Auswahl der ODER-Logik übergibt ein ADV-Paket den Filter, sofern es einen Eintrag in der Liste enthält.
APCF_Filter_Logic_Type 1 Oktett 0x00: OR
0x01: AND
Hinweis: Der Logiktyp ist für die ersten drei Felder von APCF_Feature_Selection, also immer „AND“-Logik, „–“. Sie gelten nur für vier Felder von APCF_Feature_Selection (Bit 3 bis Bit 6).
rssi_high_thresh 1 Oktett [in dBm]
Der Werbetreibende wird nur dann als sichtbar angesehen, wenn das Signal über dem hohen RSSI-Grenzwert liegt. Andernfalls muss sich die Firmware so verhalten, als hätte sie sie nie gesehen.
delivery_mode 1 Oktett 0 x 00 – immediate
0 x 01 – on_found
0 x 02 – batched
onfound_timeout 2 Oktette Nur gültig, wenn delivery_mode gleich on_found ist.
[in Millisekunden]
Die Firmware hält vor der Meldung zusätzliche Anzeigen bereit.
onfound_timeout_cnt 1 Oktett Nur gültig, wenn delivery_mode gleich on_found ist.
[count]
Wenn eine Anzeige in onFound für die Dauer von onfound_timeout in der Firmware verbleibt, werden einige Werbeanzeigen erfasst und die Anzahl wird geprüft. Wenn die Anzahl onfound_timeout_cnt überschreitet, wird sofort im Anschluss der Wert OnFound gemeldet.
rssi_low_thresh 1 Oktett Nur gültig, wenn delivery_mode gleich on_found ist.
[in dBm]
Das Werbetreibendenpaket gilt als nicht sichtbar, wenn der RSSI des empfangenen Pakets nicht über dem unteren RSSI-Grenzwert liegt.
onlost_timeout 2 Oktette Nur gültig, wenn delivery_mode gleich on_found ist.
[in Millisekunden]
Wenn eine Anzeige für den Zeitraum lost_timeout nicht fortlaufend sichtbar ist, wird sie sofort als verloren gemeldet.
num_of_tracking_entries 2 Oktette Nur gültig, wenn delivery_mode gleich on_found ist.
[count]
Gesamtzahl der Werbetreibenden, die pro Filter erfasst werden sollen.

RSSI-Werte müssen das 2-Komplement verwenden, um negative Werte darzustellen.

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

Filter, Batchverarbeitung und Berichterstellung sind miteinander verwandte Konzepte. Jede Anzeige und die zugehörige Scanantwort müssen nacheinander alle Filter durchlaufen. Daher sind die resultierenden Aktionen (delivery_mode) eng mit der Filterung verbunden. Es gibt die folgenden Übermittlungsmodi: 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 Advertising-Frame (oder eine Scanantwort) empfangen wird, wird er der Reihe nach auf alle Filter angewendet. Es ist möglich, dass eine Anzeige aufgrund einer unterschiedlichen Filteraktion zu sofortigen Berichten basierend auf einem Filter und einer Batchverarbeitung desselben Filters führt.

Mit RSSI-Schwellenwerten (hoch und niedrig) kann gesteuert werden, wann der Frame für die Filterverarbeitung sichtbar ist, auch wenn ein gültiges Paket vom Controller empfangen wird. Wenn der Übermittlungsmodus auf „Sofort“ oder „Batched“ festgelegt ist, wird der RSSI eines Frames für die weitere Verarbeitung durch die Verarbeitung berücksichtigt. Verschiedene Anwendungen erfordern ein anderes Berichts- und Batchverhalten. Dadurch können Ergebnisse für mehrere Anwendungen gleichzeitig direkt in der Firmware gemeldet und/oder in Batches zusammengefasst werden. Ein Beispiel hierfür ist ein Fall, wenn ein Batchscan von einer Anwendung aus aktiv ist und später ein regulärer LE-Scan von einer anderen Anwendung ausgeführt wird. Bevor ein Batchscan ausgegeben wird, legt das Framework/die Anwendung entsprechende Filter fest. Wenn die zweite Anwendung später einen regulären Scan ausgibt, wird die vorherige Batchverarbeitung fortgesetzt. Aufgrund des regulären Scans ist dies jedoch vergleichbar mit dem konzeptionellen Hinzufügen eines Nullfilters (zusammen mit allen vorhandenen Filtern) zusammen mit dem Befehl LE scan. Die LE-Scan-Befehlsparameter haben Vorrang, wenn sie aktiv sind. Wenn der reguläre LE-Scan deaktiviert ist, wird der Controller auf einen vorherigen Batchscan zurückgesetzt, sofern dieser vorhanden war.

Der Übermittlungsmodus „OnFound“ basiert auf konfigurierten Filtern. Eine Kombination, die die erfolgreiche Aktion eines Filters auslöst, wird als die Entität betrachtet, die nach onLost verfolgt werden soll. Das entsprechende Ereignis ist das untergeordnete Ereignis für das LE-Ad-Tracking.

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

Für diesen Befehl wird ein Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
APCF_opcode 1 Oktett 0x01 - APCF hat Filterparameter festgelegt
APCF_Action 1 Oktett APCF_Action des Befehls „Echo-Back“ verwenden
APCF_AvailableSpaces 1 Oktett Anzahl der verfügbaren Einträge in der Filtertabelle

LE_APCF_Befehl: header_address_sub_cmd

Mit diesem Unterbefehl können Sie die Adresse eines Werbetreibenden hinzufügen oder löschen oder die Adressenliste des Werbetreibenden für die On-Chip-Filterung löschen.

Unter-OBF: 0 x 02

Unterbefehlsparameter Größe Zweck
APCF_Action 1 Oktett 0x00 – Hinzufügen
0x01 – Löschen
0x02 – Löschen
Mit „Delete“ wird die angegebene Senderadresse im angegebenen Filter gelöscht.
Wenn Sie die Option löschen, werden alle Senderadressen 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 Adressenliste des Senders hinzugefügt oder daraus gelöscht werden kann
APCF_Application_Address_type 1 Oktett 0x00: Öffentlich
0x01: Random
0x02: N/A (Adresstyp ignorieren)
Anzeigenberichte nach Adresstypen (0x02, 0x03) filtern Wenn Sie Werbeberichte mit den Adresstypen 0x02 und 0x03 erhalten möchten, setzen Sie dieses Feld auf „0x02: NA“ (Adresstyp ignorieren).

Für diesen Befehl wird ein Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
APCF_opcode 1 Oktett 0x02 - APCF-Senderadresse
APCF_Action 1 Oktett APCF_Action des Befehls „Echo-Back“ verwenden
APCF_AvailableSpaces 1 Oktett Anzahl der kostenlosen Einträge, die in der Tabelle „Broadcasting-Adressen“ noch verfügbar sind

LE_APCF_Befehl: service_uuid_sub_cmd

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

Unter-OBF: 0 x 03

Unterbefehlsparameter Größe Zweck
APCF_Action 1 Oktett 0x00 – Hinzufügen
0x01 – Löschen
0x02 – Löschen
Mit „Delete“ wird die angegebene Dienst-UUID-Adresse im angegebenen Filter gelöscht.
Durch „Löschen“ 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 Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
APCF_opcode 1 Oktett 0x03 – APCF-Dienst-UUID
APCF_Action 1 Oktett APCF_Action des Befehls „Echo-Back“ verwenden
APCF_AvailableSpaces 1 Oktett Anzahl der noch verfügbaren kostenlosen Einträge in der Dienst-UUID-Tabelle

LE_APCF_Befehl: requestation_uuid_sub_cmd

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

Unter-OBF: 0 x 04

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

Für diesen Befehl wird ein Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
APCF_opcode 1 Oktett 0x04 - APCF-Anfrage-UUID
APCF_Action 1 Oktett APCF_Action des Befehls „Echo-Back“ verwenden
APCF_AvailableSpaces 1 Oktett Anzahl der kostenlosen Einträge, die in der Tabelle der Spenden-UUID noch verfügbar sind

LE_APCF_Befehl: local_name_sub_cmd

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

Unter-OBF: 0 x 05

Unterbefehlsparameter Größe Zweck
APCF_Action 1 Oktett 0x00 – Hinzufügen
0x01 – Löschen
0x02 – Löschen
Mit „Delete“ wird der angegebene lokale Namensstring im angegebenen Filter gelöscht.
Wenn Sie „Löschen“ löschen, werden alle lokalen Namensstrings im angegebenen Filter gelöscht.
APCF_Filter_Index 1 Oktett Filterindex (0, max_filter–1)
APCF_LocName_Mandata_or_SerData Variablengröße Eine Zeichenfolge für den lokalen Namen.

Hinweise:
  • Derzeit sind in einem lokalen Namensstring maximal 29 Zeichen zulässig
  • Nicht zutreffend, wenn die Aktion "Löschen" (0x2) ist

Für diesen Befehl wird ein Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
APCF_opcode 1 Oktett 0x05 – Lokaler APCF-Name
APCF_Action 1 Oktett APCF_Action des Befehls „Echo-Back“ verwenden
APCF_AvailableSpaces 1 Oktett Anzahl der noch verfügbaren kostenlosen Einträge in der Tabelle mit den lokalen Namen

LE_APCF_Befehl: manf_data_sub_cmd

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

Unter-OBF: 0 x 06

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

Hinweise:
  • Derzeit sind in einem lokalen Namensstring maximal 29 Zeichen zulässig
  • Nicht zutreffend, wenn die Aktion "Löschen" (0x2) ist
APCF_ManData_Mask Variablengröße Die Herstellerdatenmaske, 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 Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
APCF_opcode 1 Oktett 0x06 - APCF-Herstellerdaten
APCF_Action 1 Oktett APCF_Action des Befehls „Echo-Back“ verwenden
APCF_AvailableSpaces 1 Oktett Anzahl der kostenlosen Einträge, die noch in der Tabelle „Herstellerdaten“ verfügbar sind

LE_APCF_Befehl: 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.

Unter-OBF: 0 x 07

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

Hinweise:
  • Derzeit sind in einem lokalen Namensstring maximal 29 Zeichen zulässig
  • Nicht zutreffend, wenn die Aktion "Löschen" (0x2) ist
APCF_LocName_Mandata_or_SerData_Mask Variablengröß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 Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
APCF_opcode 1 Oktett 0x07 – APCF-Dienstdaten
APCF_Action 1 Oktett APCF_Action des Befehls „Echo-Back“ verwenden
APCF_AvailableSpaces 1 Oktett Anzahl der noch verfügbaren kostenlosen Einträge für die Dienstdatentabelle

LE_APCF_Befehl: ad_type_sub_cmd

Mit diesem Unterbefehl können Sie einen AD-Typ hinzufügen oder löschen oder eine AD-Typliste für On-Chip-Filterung löschen. Prüfen Sie mit read_extended_features_sub_cmd, ob dieser Befehl unterstützt wird.
Wenn APCF_AD_DATA_Length 0 ist, filtern Sie APCF_AD_TYPE, ohne AD-Daten und AD-Datenmaske zu vergleichen. Wenn die Datenlänge des empfangenen ADV-Pakets AD_DATA_LENGTH überschreitet, vergleichen Sie nur die ersten AD_DATA_LENGTH Byte der AD-Daten und ignorieren Sie die verbleibenden Daten.

Unter-OBF: 0 x 09

Unterbefehlsparameter Größe Zweck
APCF_Action 1 Oktett 0x00 – Hinzufügen
0x01 – Löschen
0x02 – Löschen
Mit „Delete“ wird der angegebene Anzeigentyp im angegebenen Filter gelöscht.
Wenn Sie die Option löschen, werden alle Anzeigentypen im angegebenen Filter gelöscht.
APCF_Filter_Index 1 Oktett Filterindex (0, max_filter–1)
APCF_AD_TYPE 1 Oktett Anzeigentyp zum Hinzufügen oder Löschen aus der Liste Ignorieren, wenn APCF_Action 0x02 ist (Löschen)
APCF_AD_DATA_Length 1 Oktett 0 × 00 – bedeutet, dass Dateninhalte nicht gefiltert werden
Ignorieren, wenn APCF_Action 0 × 02 ist (Löschen)
APCF_AD_DATA Variablengröße Variable Größe basierend auf APCF_AD_DATA_Length
Ignorieren, wenn APCF_Action 0 x 02 ist (Löschen)
APCF_AD_DATA_MASK Variablengröße Variable Größe basierend auf APCF_AD_DATA_Length
Ignorieren, wenn APCF_Action 0 × 02 ist (Löschen)
Er sollte genauso lang sein wie APCF_AD_DATA.

Für diesen Befehl wird ein Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
APCF_opcode 1 Oktett 0x09 - APCF-Anzeigentyp
APCF_Action 1 Oktett APCF_Action des Befehls „Echo-Back“ verwenden
APCF_AvailableSpaces 1 Oktett Anzahl der noch verfügbaren kostenlosen Einträge in der Tabelle „Anzeigentyp“

LE_APCF_Befehl: read_extended_features_sub_cmd

Mit diesem Unterbefehl werden erweiterte APCF-Features gelesen.

Unter-OBF: 0xFF

Unterbefehlsparameter Größe Zweck
Nicht zutreffend Leerer Befehlsparameter.

Für diesen Befehl wird ein Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
APCF_opcode 1 Oktett 0xFF – APCF_Read_Extended_Features
APCF_extended_features 2 Oktett

Unterstützte Bitmasken für erweiterte Funktionen:

  • Bit 0: Transport Discovery Service-Filter unterstützen
  • Bit 1: Support-Filter für AD-Typ
  • Bit 2 ~15: Für zukünftige Verwendungen reserviert

Wert von Bit

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

Befehl „Controller-Aktivität“ und „Energieinformationen“

Mit diesen Informationen sollen Funktionen höherer Hostsysteme die Gesamtaktivitäten aller Komponenten, einschließlich des BT-Controllers und seines Makrostatus, in Verbindung mit den Vorgängen in den Anwendungen und dem Framework analysieren. Dazu werden die folgenden Informationen vom BT-Stack und vom Controller benötigt:

  • BT-Stack: Aktuellen Makro-Betriebsstatus des Controllers melden
  • Firmware: Berichterstellung mit aggregierten Aktivitäts- und Energieinformationen

BT-Host-Stack-Makrostatus, die auf Nutzerebene festgelegt werden:

  • Inaktiv: [Seitenscan, LE-Suche, Anfragescan, LE-Scan]
  • Scan: [Seitennummerierung/Anfrage/Verbindungsversuch]
  • Aktiv: [ACL-Link aktiviert, SCO-Link aktiv, Sniff-Modus]

Die Aktivitäten, die der Controller während seiner Lebensdauer verfolgt, sind die Transaktionszeit, die Rx-Zeit, die Inaktivitätszeit und der insgesamt verbrauchte 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
Leere Befehlsparameter

Für diesen Befehl wird ein Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
total_tx_time_ms 4 Oktette Gesamtzeit Tx
total_rx_time_ms 4 Oktette Gesamtzeit mit Rx
total_idle_time_ms 4 Oktette Gesamtzeit im Leerlauf (kein Ruhezustand)
total_energy_used 4 Oktette Insgesamt verbrauchte Energie [Produkt aus Strom (mA), Spannung (V) und Zeit (ms)]

LE-Befehl für erweiterte Set-Scanparameter

Mit diesem Befehl können Sie ein größeres Scanfenster und -intervall im Controller aktivieren. Gemäß der BT Core 5.2-Spezifikation haben ein Scanfenster und ein Scanintervall eine Obergrenze von 10,24 Sekunden, was die längeren Scanintervalle der Anwendungen über 10,24 Sekunden hinaus erschwert.

Referenz: BT Core 5.2-Spezifikation, Seite 2493 (LE – Befehl zum Festlegen der Scanparameter)

OCF: 0x15A

Befehlsparameter Größe Zweck
LE_Ex_Scan_Type 1 Oktett 0x00 – Passives Scannen. Es werden keine SCAN_REQ-Pakete gesendet (Standardeinstellung).
0x01 – Aktives Scannen. SCAN_REQ Pakete werden gesendet.
LE_Ex_Scan_Interval 4 Oktette Definiert als Zeitintervall zwischen dem Beginn des letzten LE-Scans des Controllers und dem Beginn des nachfolgenden LE-Scans.
Bereich: 0x0004 bis 0x00FFFFFF
Standard: 0x0010 (10 ms)
Zeit = N × 0,625 ms
Zeitraum: 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
Zeitraum: 2,5 ms bis 40,95 Sekunden
Own_Address_Type 1 Oktett 0x00 – Öffentliche Geräteadresse (Standardeinstellung)
0x01 – Zufällige Geräteadresse
LE_Ex_Scan_Filter_Policy 0x00 – Akzeptiert alle Advertising-Pakete (Standardeinstellung). Pakete für gerichtete Werbung, die nicht für dieses Gerät adressiert sind, werden ignoriert.
0x01 – Ignoriert Werbepakete von Geräten, die nicht auf der „Nur auf der Zulassungsliste“-Liste stehen. Pakete für gerichtete Werbung, die nicht für dieses Gerät adressiert sind, werden ignoriert.

Für diesen Befehl wird ein Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"

Befehl zur Fehlerbehebung für Controller abrufen

Dieses Informationselement dient dazu, Debug-Informationen für Controller durch einen Host in Binärform zur Nachverarbeitung und Analyse zu erhalten. Dies hilft beim Beheben von Fehlern vor Ort und stellt Entwicklern ein Toolkit zur Verfügung, mit dem sie Informationen für die Analyse protokollieren können. Ein Controller kann die Informationen bereitstellen, wenn er von einem Host über das Ereignis (Unterereignis „Controller-Fehlerbehebungsinformationen“) angefordert wird, oder selbstständig, wenn der Controller dies wünscht. Sie können beispielsweise Informationen zum Firmwarestatus, Crash-Dump-Informationen, Logging-Informationen usw. verwenden.

OCF: 0x15B

Befehlsparameter Größe Zweck
Liste der Befehlsparameter ist leer

Für diesen Befehl wird ein Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"

Unterstützung für A2DP-Hardware-Auslagerung

Die A2DP-Auslagerungsfunktion unterstützt die Übertragung des A2DP-Audiocodierungsprozesses auf einen Audioprozessor, der mit dem BT-Controller verbunden ist. Der codierte Audiodatenstream wird ohne Beteiligung des BT-Hosts direkt vom Audioprozessor zum BT-Controller übertragen. Der BT-Host ist weiterhin für die Konfiguration und Steuerung der A2DP-Sitzung verantwortlich. Es sind zwei Versionen der Befehle verfügbar. Die Legacy-Befehle mit Sub OCF 0x01-0x02 unterstützen nur Open-Source-Codecs. Die Versionen mit Sub-OCF 0x02-0x03 sind unabhängig vom konfigurierten Codec.

OCF: 0x15D

A2DP-Auslagerung starten (Legacy)

Unter-OBF: 0 x 01

Verwenden Sie diesen Befehl, um den A2DP-Offload-Prozess zu konfigurieren und den A2DP-Stream zu starten.

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). Mit dem Wert null wird die Leerung deaktiviert.
SCMS-T_Enable 2 Oktette Oktett 0: Flag, das das Hinzufügen des SCMS-T-Headers aktiviert.
  • 0x00 – SCMS-T-Header nicht enthalten.
  • 0x01 – SCMS-T-Header enthalten.

1. Okt.: 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 Bit 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 Audio-Bitrate in Bit pro Sekunde.
0x00000000 – Die Audio-Bitrate ist nicht angegeben. / unused.
0x00000001 – 0x00FFFFFF – Codierte Audio-Bitrate in Bit pro Sekunde.
0x01000000 – 0xFFFFFFFF – Reserviert.
Connection_Handle 2 Oktette Handle der A2DP-Verbindung, die konfiguriert wird
L2CAP_Channel_ID 2 Oktette L2CAP-Kanal-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:

Siehe SBC-Codec-spezifische Informationselemente in A2DP v1.3.
0. Okt.: Blocklänge | Teilbänder | Zuordnungsmethode
1. Oktett: Minimaler Bitpoolwert
2. Okt.: Maximaler Bitpoolwert
3. Okt.: Abtastrate | Kanalmodus
4.–31. Okt.: reserviert

AAC-Codec:

AAC-Codec-spezifische Informationselemente in A2DP v1.3
0. Okt.: Objekttyp
1. Okt.; b7: VBR
2.–31. Okt.: reserviert

LDAC-Codec:

0.–3. Oktober: Anbieter-ID
0x0000012D

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

6. Okt.: Bitratenindex:
0 × 00 – Hoch
0 × 01 – Mittel
0 × 02 – Niedrig
0 × 03 – 0 × 7E – Reserviert
0 × 7F – ABR (Adaptive Bitrate)
0 × 80 – 0xFF – Reserviert

7. Okt.: LDAC-Kanalmodus
0 x 01 – Stereo
0 x 02 – Dual
0 x 04 – Mono
Andere sind reserviert

8.–31. Okt.: reserviert

Alle anderen Codecs:

0.–31. Okt.: reserviert

Für diesen Befehl wird ein Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
Sub_Opcode 1 Oktett 0x01 - A2DP-Auslagerung starten

A2DP-Auslagerung starten

Unter-OBF: 0 x 03

Verwenden Sie diesen Befehl, um den A2DP-Offload-Prozess zu konfigurieren und den A2DP-Stream zu starten.

Befehlsparameter Größe Zweck
Connection Handle 2 Oktette Alias der aktiven HCI-Verbindung
L2CAP_Channel_ID 2 Oktette ID des L2CAP-Kanals, der für A2DP-Streaming geöffnet ist
Data_Path_Direction 1 Oktett 0x00 – Ausgabe (AVDTP-Quelle/Merge)
0x01 – Eingang (AVDTP-Senke/Split)
Peer_MTU 2 Oktette Maximale Größe von L2CAP-Paketen, ausgehandelt mit dem Peer.
CP_Enable_SCMS_T 1 Oktett 0x00 – SCMS-T-Inhaltsschutzheader deaktivieren
0x01 – SCMS-T-Inhaltsschutzheader aktivieren
CP_Header_SCMS_T 1 Oktett Wenn der SCMS-T Content Protection Header aktiviert (CP_SCMS_T_Enable auf 0x01 gesetzt) ist, 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 werden.
Vendor_Specific_Parameters 0–128 Oktette Anbieterspezifische Parameter, die vom Bluetooth Audio HAL CodecParameters.vendorSpecificParameters[] bereitgestellt werden.

Für diesen Befehl wird ein Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
Sub_Opcode 1 Oktett 0x03 - A2DP-Auslagerung starten

A2DP-Auslagerung beenden (Legacy)

Unter-OBF: 0 x 02

Dieser Befehl wird verwendet, um den A2DP Offload-Stream zu stoppen.

Befehlsparameter Größe Zweck
Leere Befehlsparameterliste.

Für diesen Befehl sind keine Parameter definiert.

Für diesen Befehl wird ein Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
Sub_Opcode 1 Oktett 0x02 - A2DP-Auslagerung stoppen

A2DP-Auslagerung beenden

Unter-OBF: 0 x 04

Dieser Befehl wird verwendet, um den A2DP Offload-Stream zu stoppen.

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

Für diesen Befehl wird ein Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
Sub_Opcode 1 Oktett 0x04 - A2DP-Auslagerung stoppen

Befehl für den Bluetooth-Qualitätsbericht

Die Befehlsfunktion für den BT-Qualitätsbericht startet im Bluetooth-Controller den Mechanismus, der Bluetooth-Qualitätsereignisse an den Host meldet. Sie können vier Optionen aktivieren:

  • Modus zur Qualitätsüberwachung: Der Controller sendet regelmäßig ein BQR-Unterereignis im Zusammenhang mit der Linkqualität an den Host.
  • Annäherung an LSTO: Wenn vom verbundenen BT-Gerät länger als die Hälfte des LSTO-Werts (Link Supervision TimeOut) keine Pakete empfangen werden, meldet der Controller ein Ereignis, das sich kurz bevorsteht, an den Host.
  • A2DP Audio abgehackt: Wenn der Controller Faktoren erkennt, die zu einer stockenden Audiowiedergabe führen, meldet der Controller ein A2DP Audio Aussetzer-Ereignis an den Host.
  • (e)SCO Voice Choppy: Wenn der Controller Faktoren erkennt, die eine abgehackte Stimme verursachen, meldet der Controller ein (e)SCO Voice Choppy-Ereignis an den Host.
  • Wurzelentzündung: Dieses Ereignis wird vom Controller an den Stack gesendet, wenn beim HAL oder dem Controller ein schwerwiegender Fehler auftritt und Bluetooth neu gestartet werden muss.
  • LMP/LL-Nachrichten-Trace: Der Controller sendet die LMP/LL-Nachricht per Handshake mit dem Remote-Gerät an den Host.
  • Bluetooth-Mehrfachprofil-/Coex-Planungs-Trace: Der Controller sendet seine Planungsinformationen zur Verarbeitung mehrerer Bluetooth-Profile und zur kabellosen Koexistenz im 2,4-GHz-Band an den Host.
  • Mechanismus zur Fehlerbehebung für Controller: Wenn diese Option aktiviert ist, kann der Controller selbst über das Unterereignis „Debug-Informationen des Controllers“ Informationen zur Fehlerbehebung an den Host melden.
  • LE Audio abgehackt: Wenn der Controller Faktoren erkennt, die zu einem stockenden Ton führen, meldet der Controller dem Host ein „LE Audio Choppy“-Ereignis.
  • Erweiterter Modus für HF-Statistiken: Der Controller meldet seine HF-Statistiken an den Host und unterstützt zwei Anwendungsfälle für Berichte:
    • Regelmäßige Berichte
    • Ereignistrigger (Start/Stopp des Streams und Trigger für die Linkqualität)
  • BQR_Report_Action des Bluetooth-Qualitätsberichtsbefehls: Der Host kann diesen HCI-Befehl verwenden, um eine einmalige Abfrage für den Qualitätsüberwachungsmodus, den Energieüberwachungsmodus oder den erweiterten Modus für HF-Statistiken zu erhalten.

OCF: 0x15E

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

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

Mit „Löschen“ werden bestimmte Berichte zu Ereignissen mit hoher Qualität gelöscht.
Wenn Sie „Löschen“ löschen, 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ählten Qualitätsereignisberichte.

Bit 0: Wird eingestellt, um den Modus zur Qualitätsüberwachung zu aktivieren.
Bit 1: Wird aktiviert, um das Ereignis „Approaching LSTO“ zu aktivieren (für ACL/(e)SCO/ISO).
Bit 2: Aktiviere das Ereignis „A2DP Audio Choppy“.
Bit 3: „(e)SCO Voice Choppy“ wird aktiviert.
Bit 4: Aktivieren, um eine Entzündung der Wurzel zu aktivieren.
Bit 5: Aktivieren, um den Energiemonitoring-Modus zu aktivieren.
Bit 6: Wird so eingestellt, dass in LE Audio abgehacktes Ereignis aktiviert wird.
Bit 7: Wird so eingestellt, dass das Ereignis „Verbindungsfehler“ aktiviert wird.
Bit 8: Wird so eingestellt, dass ein Ereignis im Modus „Erweiterte HF-Statistik“ aktiviert wird.
Bit 9: Wird aktiviert, um den regelmäßigen Bericht zur Funktion „Vorab-HF-Statistik“ zu aktivieren.
Bit 10 ~ 14: Reserviert.
Bit 15: Wird so eingestellt, dass anbieterspezifische Qualitätsereignisse aktiviert werden.
Bit 16: Wird so eingestellt, dass das LMP/LL-Nachrichten-Trace aktiviert wird.
Bit 17: Aktivieren des Bluetooth-Multi-Link-/Coex-Traces.
Bit 18: Wird so eingestellt, dass der Mechanismus zur Fehlerbehebung für Controller aktiviert wird.
Bit 19–30: Reserviert.
Bit 31: Wird so eingestellt, dass anbieterspezifisches Trace aktiviert wird.

BQR_Minimum_Report_Interval 2 Oktette Definieren Sie das minimale Zeitintervall für die Berichterstellung zu Qualitätsereignissen für die ausgewählten Qualitätsereignisse. Die Firmware des Controllers sollte das nächste Ereignis nicht innerhalb des festgelegten Zeitintervalls melden. Die Intervalleinstellung muss für die hinzugefügten Qualitätsereignisse gelten und auf sie abgestimmt sein.

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

BQR_Vendor_Specific_Quality_Event_Mask 4 Oktette Bitmasken für die ausgewählten anbieterspezifischen Berichte zu Qualitätsereignissen.
Dieser Parameter ist nur gültig, wenn Bit 15 von BQR_Quality_Event_Mask gesetzt ist.

Bit 0 ~ 31: Reserviert.

BQR_Vendor_Specific_Trace_Mask 4 Oktette Bitmasken für die ausgewählten anbieterspezifischen Trace-Berichte.
Dieser Parameter ist nur gültig, wenn Bit 31 von BQR_Quality_Event_Mask gesetzt ist.

Bit 0 ~ 31: Reserviert.

Report_interval_multiple 4 Oktette Der Multiplikator für BQR_Minimum_Report_Interval. Wenn dieser Wert größer als 1 ist, hat das BQR-Berichtsintervall das Format
BQR-Berichtsintervall = BQR_Minimum_Report_Interval x Report_interval_multiple.
Die Firmware des Controllers darf das nächste Ereignis nicht innerhalb des festgelegten Zeitintervalls melden. Die Intervalleinstellung gilt speziell für die hinzugefügten Qualitätsereignisse.

Einheit: ms
Standard: 1
Bereich: 0–4294967295 (0: ist gleich 1)

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

Für diesen Befehl wird ein Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
Current_Quality_Event_Mask 4 Oktette Gibt die aktuelle Einstellung der Bitmaske an.
Bit 0: Der Modus für die Qualitätsüberwachung ist aktiviert.
Bit 1: Die Meldung von LSTO-Ereignissen ist aktiviert.
Bit 2: Berichte zu Ereignissen mit A2DP-Audio mit abgehackten Elementen sind aktiviert.
Bit 3: (e)SCO Voice Choppy Ereignisbericht ist aktiviert.
Bit 4: Die Meldung von Wurzelentzündungsereignissen ist aktiviert.
Bit 5: Der Energie-Monitoringmodus ist aktiviert.
Bit 6: Berichte zu abgehackten Ereignissen in LE Audio sind aktiviert.
Bit 7: Verbindungsausfall-Ereignis.
Bit 8: Wird so eingestellt, dass ein Ereignis im Modus „Erweiterte HF-Statistik“ aktiviert wird.
Bit 9: Wird so eingestellt, dass die Funktion „Erweiterte HF-Statistiken“ regelmäßig gemeldet wird.
Bit 10 ~ 14: Reserviert.
Bit 15: Anbieterspezifische Berichte zu Qualitätsereignissen sind aktiviert.
Bit 16: LMP/LL-Nachrichten-Trace ist aktiviert.
Bit 17: Trace für die Bluetooth-Multi-Link-/Coex-Planung ist aktiviert.
Bit 18: Der Mechanismus zur Fehlerbehebung für Controller ist aktiviert.
Bit 19–30: Reserviert.
Bit 31: Anbieterspezifischer Trace ist aktiviert.
Current_Vendor_Specific_Quality_Event_Mask 4 Oktette Gibt die aktuelle Einstellung der Bitmaske an.
Current_Vendor_Specific_Trace_Mask 4 Oktette Gibt die aktuelle Einstellung der Bitmaske an.
BQR_Report_interval 4 Oktette Gibt die aktuelle Einstellung der Bitmaske an.
Current_Vendor_Specific_Trace_Mask 4 Oktette Die Einstellung von BQR_Report_interval. Dies muss der Mindestwert zwischen BQR_Minimum_Report_Interval * Report_interval_multiple oder dem maximalen Unterstützungsintervall des Controllers sein.

Befehl „Dynamic Audio Buffer“

Der dynamische Audiozwischenspeicher reduziert Audiofehler, indem er die Größe des Audiopuffers im Bluetooth-Controller in Abhängigkeit von verschiedenen Szenarien ändert.

OCF: 0x15F

Funktion zur Audiozwischenspeicherung nutzen

Unter-OBF: 0 x 01

Verwenden Sie diesen Befehl, um die Funktion für die Audiozwischenspeicherung über den Bluetooth-Controller abzurufen.

Befehlsparameter Größe Zweck
Leere Befehlsparameterliste

Für diesen Befehl wird ein Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
Dynamic_Audio_Buffer_opcode 1 Oktett 0x01 – Pufferzeit für Audio 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 Standardzwischenspeicherzeit des Bit 0-Codec-Typs, der in „Audio_Codec_Type_Supported“ angegeben ist.
Dieser Wert ist 0, wenn der Codec-Typ Bit 0 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 ist 0, wenn der Codec-Typ Bit 0 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 ist 0, wenn der Codec-Typ Bit 0 nicht unterstützt wird.
Einheit: ms
Audio_Codec_Buffer_Default_Time_For_Bit_1 2 Oktette Standardzwischenspeicherzeit des Bit 1-Codec-Typs, der in „Audio_Codec_Type_Supported“ angegeben ist.
Dieser Wert ist 0, wenn der Codec-Typ Bit 1 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 ist 0, wenn der Codec-Typ Bit 1 nicht unterstützt wird.
Einheit: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 2 Oktette Minimale Pufferzeit des in Audio_Codec_Type_Supported angegebenen Bit 1-Codec-Typs.
Dieser Wert ist 0, wenn der Codec-Typ Bit 1 nicht unterstützt wird.
Einheit: ms
...... ...... ......
Audio_Codec_Buffer_Default_Time_For_Bit_31 2 Oktette Standardzwischenspeicherzeit des Bit 31-Codec-Typs, der in Audio_Codec_Type_Supported angegeben ist.
Dieser Wert ist 0, wenn der Codec-Typ Bit 31 nicht unterstützt wird.
Einheit: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 2 Oktette Maximale Pufferzeit des Bit 31-Codec-Typs, der in Audio_Codec_Type_Supported angegeben ist.
Dieser Wert ist 0, wenn der Codec-Typ Bit 31 nicht unterstützt wird.
Einheit: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 2 Oktette Minimale Pufferzeit des Bit 31-Codec-Typs, der in Audio_Codec_Type_Supported angegeben ist.
Dieser Wert ist 0, wenn der Codec-Typ Bit 31 nicht unterstützt wird.
Einheit: ms

Pufferzeit für Audio festlegen

Unter-OBF: 0 x 02

Mit diesem Befehl stellen Sie die Audiozwischenspeicherzeit für den Bluetooth-Controller ein.

Befehlsparameter Größe Zweck
Audio_Codec_Buffer_Time 2 Oktette Angeforderte Audiozwischenspeicherzeit für den aktuell verwendeten Codec
Einheit: ms

Für diesen Befehl wird ein Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
Dynamic_Audio_Buffer_opcode 1 Oktett 0x02 – Pufferzeit für Audio einstellen
Audio_Codec_Buffer_Time 2 Oktette Aktuelle Audiozwischenspeicherzeit im Bluetooth-Controller.
Einheit: ms

HCI-Ereignis (anbieterspezifisch)

In einigen Fällen sind anbieterspezifische HCI-Ereignisse erforderlich. Siehe Abbildung 5.4 auf Seite 1897 der BT Core 5.2-Spezifikation. Ereignisparameter 0 enthält immer den ersten Unterereigniscode, auf dessen Grundlage 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 ist 1 Oktett groß, also das Byte, das unmittelbar nach der Parameterlänge im HCI-Ereignispaket folgt.

Teilereignis „Verletzung des Speichergrenzwerts“

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

Code für untergeordnetes Ereignis = 0x54

Parameter für untergeordnetes Ereignis Größe Zweck
Keine

Untergeordnetes Ereignis zur Änderung des Status der Mehrfachwerbung – LE

Dieses Ereignis zeigt an, dass eine Werbeinstanz ihren Status geändert hat. Derzeit wird mit diesem Ereignis nur angegeben, welche Werbeinstanz aufgrund einer Verbindung beendet wurde.

Code für untergeordnetes Ereignis = 0x55

Parameter für untergeordnetes Ereignis Größe Zweck
Advertising_instance 1 Oktett Identifiziert die spezifische Werbeinstanz
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, durch die die Instanz advt deaktiviert wurde (0xFFFF, wenn ungültig)

Untergeordnetes Ereignis zum Anzeigen-Tracking von LE

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

Untergeordneter Ereigniscode = 0x56

Parameter für untergeordnetes Ereignis Größe Zweck
APCF_Filter_Index 1 Oktett Filterindex (0, max_filter–1)
Advertiser_State 1 Oktett 0x00: Werbetreibender gefunden
0x01: Werbetreibender verloren
Advt_Info_Present 1 Oktett 0x00: Informationen zum Werbetreibenden (Advt_Info) vorhanden
0x01: Informationen zum Werbetreibenden (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

Untergeordnetes Ereignis zu Debug-Informationen für Controller

Dieses Ereignis wird von einem Controller verwendet, um einem Host binäre Fehlerbehebungsinformationen bereitzustellen.

Code für untergeordnetes Ereignis = 0x57

Parameter für untergeordnetes Ereignis Größe Zweck
debug_block_byte_offset_start 2 Oktette Byte-Offset der Fehlerbehebung vom Anfang
last_block 1 Oktett 0x00: Mehr Debug-Daten vorhanden
0x01: Letzter Binärblock, keine weiteren Debug-Daten
cur_pay_load_sz 2 Oktette Binärblockgröße in einem aktuellen Ereignis
Debug_Data Variabel Debug-Daten für cur_payload_sz

Untergeordnetes Ereignis zum Bluetooth-Qualitätsbericht

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

Parameter für untergeordnetes Ereignis Größe Zweck
Quality_Report_Id 1 Oktett 0x01: Qualitätsberichte im Überwachungsmodus
0x02: LSTO fast erreicht.
0x03: A2DP Audio abgehackt.
0x04: (e)SCO Voice Choppy.
0 x 05 ~ 0 x 06: Reserviert.
0 x 07: LE-Audio ist abgehackt.
0x08: Verbindungsfehler.
0x09 ~ 0xFF: Reserviert.
Packet_Types 1 Oktett 0x01: ID
0x02: NULL
0x03: POLL = 0x04 x 0 x 0
optimiert x 0 x 0 x 0 x 0

0x09: EV3:
0x09: EV3:
0 x 0





















Connection_Handle 2 Oktette ACL/(e)SCO/ISO-Verbindungs-Handle.
Connection_Role 1 Oktett Ausführende Rolle für die Verbindung.
0x00: Central
0x01: Peripheriegerät
0x02 ~ 0xFF: Reserviert.
TX_Power_Level 1 Oktett Aktueller Übertragungsleistungsgrad für den angegebenen Connection_Handle.

Dieser Wert muss mit der Antwort des Controllers auf den HCI-Befehl HCI_Read_Transmit_Power_Level übereinstimmen.

RSSI 1 Oktett [in dBm]

RSSI-Wert (Received Signalstärke Indication)-Wert für das angegebene Connection_Handle.
Dieser Wert ist ein absoluter Wert für die Signalstärke des Empfängers.
Bereich: -127 bis +20

SNR 1 Oktett [in dB]

SNR-Wert (Signal-toise Ratio) für das angegebene Connection_Handle.
Der Datenverantwortliche gibt den durchschnittlichen SNR-Fehler aller Kanäle an, die von der Verknüpfung genutzt werden.

Unused_AFH_Channel_Count 1 Oktett Gibt die Anzahl der ungenutzten Kanäle 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 wurden und von schlechter Qualität sind, die aber trotzdem für AFH ausgewählt sind.
Die Mindestanzahl von Kanälen gemäß der Bluetooth-Spezifikation beträgt 20. Selbst wenn alle 79 Kanäle gestört werden und eine schlechte Qualität haben, muss der Controller trotzdem mindestens 20 Kanäle für AFH auswählen.
LSTO 2 Oktette Aktuelle Zeitüberschreitungseinstellung für die Verknüpfungsüberwachung.
Zeit = N × 0,625 ms
Zeitraum: 0,625 ms bis 40,9 s
Connection_Piconet_Clock 4 Oktette Piconet-Uhr für den angegebenen Connection_Handle.
Dieser Wert muss mit der Antwort des Controllers auf den HCI-Befehl „HCI_Read_Clock“ mit dem Parameter „Which_Clock“ von 0x01 (Piconet Clock) übereinstimmen.
Einheit: N × 0,3125 ms (1 Bluetooth-Uhr)
Retransmission_Count 4 Oktette Die Anzahl der erneuten Übertragungen seit dem letzten Ereignis.
Dieser Zähler wird nach der Meldung an den Host zurückgesetzt.
No_RX_Count 4 Oktette Keine RX-Anzahl seit dem letzten Ereignis.
Die Zählung erhöht sich, wenn im geplanten Zeitraum kein Paket empfangen wird oder das empfangene Paket beschädigt ist.
Dieser Zähler wird nach der Meldung an den Host zurückgesetzt.
NAK_Count 4 Oktette NAK-Anzahl (Negative Bestätigung) seit dem letzten Ereignis.
Dieser Zähler wird nach der Meldung an den Host zurückgesetzt.
Last_TX_ACK_Timestamp 4 Oktette Zeitstempel der letzten TX-Bestätigung. Sie basiert auf der Bluetooth-Uhr des Piconet Central (CLK).
Einheit: N × 0,3125 ms (1 Bluetooth-Uhr)
Flow_Off_Count 4 Oktette Die Häufigkeit, mit der der Controller seit dem letzten Ereignis einen Flow-off (STOPP) empfangen hat.
Dieser Zähler wird nach der Meldung an den Host zurückgesetzt.
Last_Flow_On_Timestamp 4 Oktette Zeitstempel des letzten Flow-On (GO). Sie basiert auf der Bluetooth-Uhr des Piconet Central (CLK).
Einheit: N × 0,3125 ms (1 Bluetooth-Uhr)
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 gelöscht 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, die bei der Kalibrierung fehlgeschlagen sind
TX_Total_Packets 4 Oktette Die Anzahl der gesendeten Pakete.
TX_UnAcked_Packets 4 Oktette Die Anzahl der Pakete, die keine Bestätigung erhalten.
Dieser Zähler wird nach der Meldung an den Host zurückgesetzt.
TX_Flushed_Packets 4 Oktette Die Anzahl der Pakete, die nicht von seinem Flushpoint 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 Linkschicht im letzten Teilereignis eines CIS-Ereignisses eine PDU für CIS-Daten ü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 die Verknüpfung vorhanden ist.
CRC_Error_Packets 4 Oktette Die Anzahl der empfangenen Pakete mit CRC-Fehlern 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 (erneuten) 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 LE READ ISO-Befehls zur Linkqualität (siehe Bluetooth Core Specification Version 5.4). Die zugehörigen Streams sind CIS und BIS.
Wenn dieser Wert erhöht wird, erhält die Linkebene keine spezifische Nutzlast durch ihren Flushpoint (in einem CIS) oder am Ende des Ereignisses, mit dem sie verknüpft ist (bei einem BIS; siehe Bluetooth Core Specification Version 5.4 Vol 6 Teil B, Abschnitt 4.4.6.6).
Coex_Info_Mask 2 Oktette Bit 0 – CoexInvolvement: Wird festgelegt, um anzugeben, dass beim Erstellen dieses Berichts Coex-Aktivitäten vermutet werden (z. B. A2DP Chops und Approaching LSTO).
Bit 1 – WL 2G Radio aktiv: Hiermit wird angezeigt, dass WLAN 2G aktiviert ist.
Bit 2 – WL 2G verbunden: Diese Option gibt an, dass die 2G-WLAN-Funkschnittstelle aktiv und verbunden ist.
Bit 3 – WL 5G/6G Radio aktiv: Hiermit wird angegeben, dass WLAN 5G/6G aktiviert ist.
Bit 4–15 – reserviert
Anbieterspezifischer Parameter (Parameter total length - TBD) * Oktette Damit der Controller-Anbieter weitere anbieterspezifische Parameter anfordern kann.

Untergeordnetes Ereigniscode = 0x58 [Quality_Report_Id = 0x05, Wurzelentzündungsereignis]

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

Der Parameter „Error_Code“ enthält einen vom HAL/Controller gemeldeten Fehlercode. Der Parameter „0“ ist ein anbieterspezifischer Chipsatzfehler. „Vendor_Specific_Error_Code“ enthält einen anbieterspezifischen Fehlercode vom HAL/Controller. Er sollte auf 0 festgelegt werden, wenn der Parameter Error_Code nicht 0 ist. Die Parameter Error_Code und Vendor_Specific_Error_Code sollten nicht beide 0 sein.

Parameter für untergeordnetes Ereignis Größe Zweck
Quality_Report_Id 1 Oktett 0x00 ~ 0x04: Reserviert.
0x05: Wurzelentzündung.
0x06 ~ 0xFF: Reserviert.
Error_Code 1 Oktett 0x00: Anbieterspezifischer Fehlercode des Chipsatzes ist enthalten.
0x01 ~ 0xFF: Ein Controllerfehler ist aufgetreten. In den Bluetooth-Spezifikationen [Vol 2] Teil D, Fehlercodes finden Sie eine Liste der Fehlercodes und Beschreibungen.
Vendor_Specific_Error_Code 1 Oktett 0x00: Es ist kein anbieterspezifischer Fehlercode für den Chipsatz enthalten.
0x01 ~ 0xFF: anbieterspezifischer Fehlercode des Chipsatzes.
Anbieterspezifischer Parameter (Parameter Total Length - 4) * Oktette Damit der Controller-Anbieter weitere anbieterspezifische Parameter anfordern kann.
Parameter für untergeordnetes Ereignis Größe Zweck
Quality_Report_Id 1 Oktett 0x00 ~ 0x10: Reserviert.
0x11: LMP/LL-Nachrichten-Trace.
0x12: Bluetooth-Multi-Link-/Coex-Planungs-Trace.
0x13: Datendump für Informationen zur Fehlerbehebung des Controllers.
0x14 ~ 0xFF: Reserviert.
Connection_Handle 2 Oktette Verbindungs-Handle.
Anbieterspezifischer Parameter (Parameter Total Length - 4) * Oktette Anbieterspezifisches Format des LMP-Nachrichten-Trace, Bluetooth-Multi-Link-/Coex-Planungs-Trace und des Datendumps der Debug-Informationen des Controllers.

Unterstützung für mehrere Werbetreibende

Mit der Unterstützung mehrerer Werbetreibender werden folgende Ziele erreicht:

  • Möglichkeit zur Unterstützung mehrerer Anzeigen (max_advt_instances)
  • Unterschiedliche Übertragungsleistungen für eine unterschiedliche Reichweite
  • Unterschiedliche Werbeinhalte
  • Eine individuelle Antwort für jeden Werbetreibenden
  • Datenschutz (nicht nachverfolgbar) für jeden Werbetreibenden
  • Anbindung

Damit diese Spezifikation nahe an bestehenden Standards bleibt, werden die folgenden anbieterspezifischen Befehle bereitgestellt. Sie wurden aus der Bluetooth Core 4.1-Spezifikation abgeleitet.

LE_Multi_Advt_Befehl

OCF: 0x154

Befehlsparameter Größe Zweck
Multi_advt_opcode 1 Oktett 0 x 01 – Set_Advt_Param_Multi_Sub_Cmd
0 x 02 – Set_Advt_Data_Multi_Sub_Cmd
0 x 03 – Set_Scan_Resp_Data_Multi_Sub_Cmd
0 x 04 – Set_Random_Addr_Multi_Sub_Cmd
0 x 05 – Set_Advt_Enable_Multi_Sub_Cmd

Für diesen Befehl wird ein Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
Multi_advt_opcode 1 Oktett 0 x 01 – Set_Advt_Param_Multi_Command
0 x 02 – Set_Advt_Data_Multi_Command
0 x 03 – Set_Scan_Resp_Data_Multi_Command
0 x 04 – Set_Random_Addr_Multi_Command
0 x 05 – Set_Advt_Enable_Multi_Command

LE_Multi_Advt_Command: Set_Advt_Param_Multi_Sub_Cmd

Basisreferenz: Bluetooth Core 4.1-Spezifikation, Seite 964 (LE – Befehl „Werbeparameter festlegen“)

Unter-OBF: 0 x 01

Unterbefehlsparameter Größe Zweck
Advertising_Interval_Min Gemäß Spezifikation Gemäß Spezifikation
Advertising_Interval_Max Gemäß Spezifikation Gemäß Spezifikation
Advertising_Type Gemäß Spezifikation Gemäß Spezifikation
Own_Address_Type Gemäß Spezifikation Gemäß Spezifikation
Own_Address Gemäß Spezifikation Gemäß Spezifikation
Direct_Address_Type Gemäß Spezifikation Gemäß Spezifikation
Direct_Address Gemäß Spezifikation Gemäß Spezifikation
Advertising_Channel_Map Gemäß Spezifikation Gemäß Spezifikation
Adverstising_Filter_Policy Gemäß Spezifikation Gemäß Spezifikation
Advertising_Instance 1 Oktett Gibt die Anwendbarkeit der oben genannten Parameter auf eine Instanz an
Tx_power 1 Oktett Transmit_Power
Einheit – in dBm (vorzeichenbehaftete Ganzzahl)
Bereich (-70 bis +20)

Der Parameter Own_Address kann eine vom Host konfigurierte Adresse zum Zeitpunkt der Einrichtung dieser Instanz für mehrere Anzeigen sein. Dadurch haben Sie die Möglichkeit, zum Zeitpunkt der Übertragung des ersten Beacons eine auflösbare Privatadresse zu haben. Das Advertising auf einer Instanz läuft unabhängig von der Verbindung weiter. Der Host-BT-Stack könnte einen Befehl zum Starten von Advertising auf einer Instanz nach der Verbindung ausgeben.

Für diesen Befehl wird gemäß dem obigen Befehl ein Ereignis abgeschlossen, wie in der Bluetooth Core 4.1-Spezifikation angegeben. Der Controller gibt einen ungültigen Parameter zurück, wenn die Werbeinstanz oder die Tx_Power-Parameter ungültig sind.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
Multi_advt_opcode 1 Oktett 0x01 [Set_Advt_Param_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd

Basisreferenz: Bluetooth Core 4.1-Spezifikation, Seite 969 (LE Set Advertising Data Command)

Unter-OBF: 0 x 02

Unterbefehlsparameter Größe Zweck
Advertising_Data_Length Gemäß Spezifikation Gemäß Spezifikation
Advertising_Data Gemäß Spezifikation Gemäß Spezifikation
Advertising_Instance 1 Oktett Gibt die Anwendbarkeit der oben genannten Parameter auf eine Instanz an

Für diesen Befehl wird gemäß dem obigen Befehl ein Ereignis abgeschlossen, wie in der Bluetooth Core 4.1-Spezifikation angegeben. Wenn die Werbeinstanz oder die Tx_Power-Parameter ungültig sind, gibt der Controller einen Nicht-Erfolgscode zurück.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
Multi_advt_opcode 1 Oktett 0x02 [Set_Advt_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd

Basisreferenz: Bluetooth Core 4.1-Spezifikation, Seite 970 (LE – Befehl zum Festlegen von Scanantwortdaten)

Unter-OBF: 0 x 03

Unterbefehlsparameter Größe Zweck
Scan_Response_Data_Length Gemäß Spezifikation Gemäß Spezifikation
Scan_Response_Data Gemäß Spezifikation Gemäß Spezifikation
Advertising_Instance 1 Oktett Gibt die Anwendbarkeit der oben genannten Parameter auf eine Instanz an

Für diesen Befehl wird gemäß dem obigen Befehl ein Ereignis abgeschlossen, wie in der Bluetooth Core 4.1-Spezifikation angegeben. Der Controller antwortet mit einem Nicht-Erfolgscode (ungültiger Parameter), wenn die Werbeinstanz oder die Tx_Power-Parameter ungültig sind.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
Multi_advt_opcode 1 Oktett 0x03 [Set_Scan_Resp_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd

Basisreferenz: Bluetooth Core 4.1-Spezifikation, Seite 963 (LE – Zufalls-Adressbefehl festlegen)

Unter-OBF: 0 x 04

Unterbefehlsparameter Größe Zweck
Zufallsadresse Gemäß Spezifikation Gemäß Spezifikation
Advertising_Instance 1 Oktett Gibt die Anwendbarkeit der oben genannten Parameter auf eine Instanz an

Für diesen Befehl wird ein Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
Multi_advt_opcode 1 Oktett 0x04 [Set_Random_Addr_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd

Basisreferenz: Bluetooth Core 4.1-Spezifikation, Seite 971 (LE Set Werbung Enable-Befehl in dieser Core-Spezifikation)

OCF: 0x05

Unterbefehlsparameter Größe Zweck
Advertising_Enable 1 Oktett Ein Wert von 1 bedeutet, dass die Funktion aktiviert ist. Jeder andere Wert bedeutet „Deaktivieren“.
Advertising_Instance 1 Oktett Gibt die Anwendbarkeit der oben genannten Parameter auf eine Instanz an. Instanz 0 steht für eine standardmäßige HCI-Instanz.

Für diesen Befehl wird ein Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
Multi_advt_opcode 1 Oktett 0x05 [Set_Advt_Enable_Multi_Sub_Cmd]

Auflösung der Privatadresse ausgelagert

Diese Funktion löst eine private Adresse in der Firmware oder Hardware des Controllers auf, was folgende Vorteile bietet:

  • Latenz des Hosts beim Auflösen einer Privatadresse
  • Strom sparen, indem der Host nicht aufgeweckt 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 Adressen verwendet wird.
tRPA_min 2 Oktette Das minimale Zeitlimit für die RPA-Generierung in Sekunden. Der Controller muss nach diesem Zeitlimit neue auflösbare Adressen für alle Werbe-, Scan- und Verbindungsereignisse generieren.
Gültiger Bereich: 300–1.800
tRPA_max 2 Oktette Das maximale Zeitlimit für die RPA-Generierung in Sekunden. Der Controller muss innerhalb oder vor diesem Zeitlimit neue auflösbare Adressen für alle Werbe-, Scan- und Verbindungsereignisse generieren.
Gültiger Bereich: tRPA_min–1.800
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 (wenn 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 Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "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: Spezifische_Unterbefehl_einrichten

Unter-OBF: 0 x 01

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 je nach Chipfunktion vom Host aktiviert werden. Weitere Informationen finden Sie im LE_Get_Vendor_Capabilities_Command. Jeder Chip kann unterschiedliche max_irk_list_sz in der Firmware haben.

Für diesen Befehl wird ein Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
Event_cust_specific_feature_opcode 1 Oktett 0x01 [Kundenspezifische Funktion aktivieren]

LE_RPA_offload: Add_IRK_to_list_sub_Command

Unter-OBF: 0 x 02

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 Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
Event_cust_specific_feature_opcode 1 Oktett 0x02 [IRK der Liste hinzufügen]
LE_IrkList_AvailableSpaces 1 Oktett Verfügbare IRL-Listeneinträge nach aktuellem Vorgang

LE_RPA_offload: Befehl_IRK_to_list_sub_Command entfernen

Unter-OBF: 0 x 03

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 Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
Event_cust_specific_feature_opcode 1 Oktett 0x03 [IRK aus der Liste entfernen]
LE_IrkList_AvailableSpaces 1 Oktett Verfügbare IRL-Listeneinträge nach aktuellem Vorgang

LE_RPA_offload: Clear_IRK_list_sub_Command

Unter-OBF: 0 x 04

Unterbefehlsparameter Größe Zweck
Keine

Für diesen Befehl wird ein Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
Event_cust_specific_feature_opcode 1 Oktett 0x04 [IRK-Liste löschen]
LE_IrkList_AvailableSpaces 1 Oktett Verfügbare IRL-Listeneinträge nach aktuellem Vorgang [max_irk_list_sz]

LE_RPA_offload: Read_IRK_list_sub_Command

Unter-OBF: 0 x 05

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 Ereignis zum Abschluss des Befehls generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status des Befehls "Abgeschlossen"
Event_cust_specific_feature_opcode 1 Oktett 0x05 [IRK-Listeneintrag lesen]
LE_Read_IRK_List_entry 1 Oktett Index des IRK, den der Host zurücklesen möchte (maximale Größe der IRK-Liste 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 dem IRK zugeordnet ist
LE_Resolved_Private_Address 6 Oktette Aktuell aufgelöste auflösbare Privatadresse dieses IRK