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 BT-Stacks für Hosts und BT-Controller 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 Core 5.2-Spezifikation ist zusammen mit anderen angenommenen Dokumenten auf der Website der Bluetooth SIG verfügbar.

Allgemeine Designübersicht

Chipfunktionen und -konfiguration

Als offene Plattform bietet Android eine Matrix aus Softwarereleases, 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 präsentieren. Der BT-Stack des Hosts kann dann anhand dieser Funktionen ermitteln, welche Funktionen aktiviert werden sollen.

Unterstützung offener Standards

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 standardmäßigen HCI-Methoden verfügbar wird, werden wir diesen Ansatz wahrscheinlich als Standard festlegen.

Anbieterspezifische Funktionen

Anbieterspezifischer Befehl: LE_Get_Vendor_Capabilities_Command

OpCode-Befehlsfeld (OCF): 0x153

Befehlsparameter Größe Zweck
Leere Liste der Befehlsparameter

Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.

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

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

Nach Version 0.98 reserviert.
Dieser Parameter wird in der Google-Funktionsspezifikation Version 0.98 und höher zugunsten der Datenschutzfunktion eingestellt, die in der BT-Spezifikation Version 4.2 und höher verfügbar ist.
total_scan_results_storage 2 Oktette Speicherplatz für Scanergebnisse in Byte
max_irk_list_sz 1 Oktett Anzahl der IRK-Einträge, die in der Firmware unterstützt werden
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 unterstützte Version der Google-Funktionsspezifikation an
byte[0] = Hauptversion
byte[1] = Nebenversion

v1.04
byte[0] = 0x01
byte[1] = 0x04
total_num_of_advt_tracked 2 Oktette Gesamtzahl der Werbetreibenden, die zu OnLost/OnFound-Zwecken erfasst wurden
extended_scan_support 1 Oktett Unterstützt erweitertes Scanfenster und ‑intervall
debug_logging_supported 1 Oktett Unterstützt das Logging von binären Debug-Informationen vom Controller
LE_address_generation_offloading_support
(Eingestellt)
1 Oktett 0 = Nicht unterstützt
1 = Unterstützt

Nach Version 0.98 reserviert.
Dieser Parameter wird in der Google-Funktionsspezifikation Version 0.98 und höher zugunsten der Datenschutzfunktion eingestellt, die in der BT-Spezifikation Version 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 Audiopuffer 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

Ergebnisse der Batch-Suche

Ein Designziel besteht darin, die Zustellung von Benachrichtigungen zu Bluetooth LE-Scan-Antwortereignissen an den Host zu verbessern, um Strom zu sparen.

Wenn der Controller den Host-App-Prozessor seltener zum Scannen von Ergebnissen benachrichtigt, kann der Host-App-Prozessor länger im Ruhemodus bleiben. Dadurch wird der Stromverbrauch des Hosts reduziert. Der Rückgabeparameter total_scan_results_storage von LE_Get_Vendor_Capabilities_Command gibt die Speicherkapazität des Chips für Scanergebnisse an.

Diese Funktion konzentriert sich auf die Verwaltung und Konfiguration des LE-Scan-Ergebnisspeichers im Bluetooth-Controller. Der Speicher wird verwendet, um Anzeigendaten vorübergehend zu bündeln und Daten und Metadaten zu scannen, die vom Controller empfangen werden, um sie später an den Host zu senden.

Die Firmware muss zwei Arten von Batchverarbeitung unterstützen, die gleichzeitig aktiviert 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 – Speicherparameter für Batch-Scan festlegen
0x3 – Parameter für Batch-Scan festlegen
0x4 – Parameter für Batch-Scan-Ergebnisse lesen

Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ 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 – Speicherparameter für Batch-Scan festlegen
0x3 – Parameter für Batch-Scan festlegen
0x4 – Parameter für Batch-Scan-Ergebnisse lesen

LE_Batch_Scan_Command: Kundenspezifische Funktion aktivieren

Sub OCF: 0x01

Parameter für Unterbefehl 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 vom Typ „Befehl abgeschlossen“ generiert.

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

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

Sub OCF: 0x02

Parameter für Unterbefehl Größe Zweck
Batch_Scan_Full_Max 1 Oktett Maximaler Speicherplatz (in %) für den Vollstil
[Bereich: 0–100]
Batch_Scan_Truncated_Max 1 Oktett Maximaler Speicherplatz (in %) für den abgeschnittenen Stil
[Bereich: 0–100]
Batch_Scan_Notify_Threshold 1 Oktett Benachrichtigungsstufe (in %) für einzelnen Speicherpool einrichten
[Bereich: 0–100]
Wenn Sie „0“ festlegen, werden keine Benachrichtigungen gesendet. Anbieterspezifisches HCI-Ereignis wird generiert (Unterereignis „Speichergrenzwert überschritten“)

Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.

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

LE_Batch_Scan_Command: Parameter für den Batch-Scan festlegen

Sub OCF: 0x03

Parameter für Unterbefehl Größe Zweck
Batch_Scan_Mode 1 Oktett 0x00 – Batch-Scan 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 Intervall für den Batch-Scan (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 Werbung verwerfen
1 – Werbung mit dem schwächsten RSSI verwerfen

Mit diesem Unterbefehl wird das Batch-Scannen gestartet, sofern es aktiviert ist. Bei der gekürzten Suche werden die Ergebnisse in gekürzter Form gespeichert. Der eindeutige Schlüssel für den gekürzten Stil ist {BD_ADDR, scan_interval}. Das bedeutet, dass für jedes Scanintervall nur ein BD_ADDR will erfasst wird. Der für den Truncierten Modus zu behaltende Datensatz lautet: {BD_ADDR, Transmit Power, RSSI, Timestamp}.

Wenn der Vollmodus aktiviert ist, wird das aktive Scannen verwendet und Scanantworten werden aufgezeichnet. Der eindeutige Schlüssel für den Vollstil ist {MAC, Ad-Paket}, unabhängig vom Scanintervall. Der für den Vollmodus zu speichernde Eintrag lautet {BD_ADDR, Tx Power, RSSI, Timestamp, Ad packet, Scan Response}. Im Vollformat wird dasselbe AD-Paket, das in verschiedenen Scanintervallen mehrmals erkannt wird, nur einmal erfasst. Im gekürzten Modus ist jedoch die Sichtbarkeit von BA_ADDR in verschiedenen Scanintervallen von Interesse (einmal pro Scanintervall). Der RSSI ist der Mittelwert aller Duplikate einer eindeutigen Werbung innerhalb eines Scanintervalls.

Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.

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

LE_Batch_Scan_Command: Unterbefehl zum Lesen der Ergebnisse eines Batch-Scans

Sub OCF: 0x04

Parameter für Unterbefehl Größe Zweck
Batch_Scan_Data_read 1 Oktett 0x01 – Daten im gekürzten Modus
0x02 – Daten im Vollmodus

Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert. Wenn der Host diesen Befehl ausgibt, passen möglicherweise nicht alle Ergebnisse im Controller in ein Ereignis vom Typ „Command Complete“. Der Host gibt diesen Befehl so lange aus, bis die entsprechenden Ergebnisse im Ereignis „Befehl abgeschlossen“ bei der Anzahl der Einträge „0“ anzeigen. Das bedeutet, dass der Controller keine weiteren Einträge an den Host senden kann. Jedes Ereignis vom Typ „Befehl abgeschlossen“ kann mehrere Datensätze mit nur einem Datentyp (vollständig oder gekürzt) enthalten.

Die Zeitangaben von Controller und Host sind nicht synchronisiert. Die Einheit des Zeitstempels ist 50 ms. Der Wert des Zeitstempels basiert darauf, wann Read_Batch_Scan_Results_Sub_cmd vom Host angegeben wird. Wenn in der Firmware eine Befehlszustellungszeit von T_c angegeben ist, ist T_fw der tatsächliche Zeitpunkt, zu dem der Zeitstempel in der Firmware erfasst wurde. Die Berichtszeit ist (T_c – T_fw). T_c und T_fw sind in der Firmware-Zeitdomäne. So kann der Host berechnen, wie lange das Ereignis zurückliegt.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Batch_scan_opcode 1 Oktett 0x03 [Batch-Scan-Parameter festlegen]
Batch_Scan_data_read 1 Oktett Gibt das Format an (verkürzt oder vollständig)
num_of_records 1 Oktett Anzahl der Einträge von Batch_Scan_data_read
format_of_data Variable Verkü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 Einträge (num_of_records) im obigen 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 Einträge im obigen Format (num_of_records)]

Filter für Werbeinhalte in Paketen

Damit können Sie den APCF (Advertising Packet Content Filter) im Controller aktivieren/deaktivieren/einrichten. Der APCF-Filter wird auf Werbeberichte im Controller angewendet, nicht aber auf 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 bis 0xAF – für zukünftige Verwendung reserviert
0xB0 bis 0xDF – für den Anbieter reserviert
0xE0 bis 0xFE – für zukünftige Verwendung reserviert
0xFF – APCF Read extended Features

Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ 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 bis 0xAF – für zukünftige Verwendung reserviert
0xB0 bis 0xDF – für den Anbieter reserviert
0xE0 bis 0xFE – für zukünftige Verwendung reserviert
0xFF – APCF Read extended Features

LE_APCF_Command: Enable_sub_cmd

Sub OCF: 0x00

Parameter für Unterbefehl Größe Zweck
APCF_enable 1 Oktett 0x01 – APCF-Funktion aktivieren
0x00 – APCF-Funktion deaktivieren

Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ 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 wird über APCF_enable festgelegt.

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

Sub OCF: 0x01

Parameter für Unterbefehl Größe Zweck
APCF_Action 1 Oktett 0x00 – Hinzufügen
0x01 – Löschen
0x02 – Löschen
Durch Löschen werden der Filter und die zugehörigen Elementeinträge 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: Setzen, um den Broadcast-Adressfilter zu aktivieren
Bit 1: Setzen, um den Dienstdatenänderungsfilter zu aktivieren
Bit 2: Setzen, um die UUID-Prüfung des Dienstes zu aktivieren
Bit 3: Setzen, um die UUID-Prüfung der Dienstanfrage zu aktivieren
Bit 4: Setzen, um die Prüfung des lokalen Namens zu aktivieren
Bit 5: Setzen, um die Prüfung der Herstellerdaten zu aktivieren
Bit 6: Setzen, um die Prüfung der Dienstdaten zu aktivieren
Bit 7: Setzen, um die Prüfung des Transport Discovery Service zu aktivieren
Bit 8: Setzen, um die Prüfung des AD-Typs zu aktivieren
APCF_List_Logic_Type 2 Oktette Logikvorgang 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 Logik „AND“ ausgewählt ist, besteht ein ADV-Paket nur dann den Filter, wenn es ALLE Einträge in der Liste enthält.
Wenn die Logik „ODER“ ausgewählt ist, wird ein ADV-Paket den Filter passieren, 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 „–“, was immer der Logik „AND“ entspricht. Sie gelten nur für die vier Felder (Bit 3 bis Bit 6) von APCF_Feature_Selection.
rssi_high_thresh 1 Oktett [in dBm]
Der Werbetreibende wird nur dann als sichtbar betrachtet, wenn das Signal über dem hohen RSSI-Grenzwert liegt. Andernfalls muss sich die Firmware so verhalten, als hätte sie den Fehler 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 Millisekunden]
Zeit, die die Firmware benötigt, um zu warten und zusätzliche Anzeigen zu erfassen, bevor Berichte erstellt werden.
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 überprüft. Wenn die Anzahl onfound_timeout_cnt überschreitet, wird sie sofort als OnFound erfasst.
rssi_low_thresh 1 Oktett Nur gültig, wenn delivery_mode on_found ist.
[in dBm]
Das Werbetreibendenpaket wird als nicht erkannt betrachtet, wenn der RSSI des empfangenen Pakets den niedrigen RSSI-Grenzwert nicht überschreitet.
onlost_timeout 2 Oktette Nur gültig, wenn delivery_mode on_found ist.
[in Millisekunden]
Wenn eine Anzeige nach dem Finden nicht innerhalb von lost_timeout Minuten fortlaufend gesehen wird, wird sie sofort als verloren gemeldet.
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 mehrere Filter konfigurieren können, wobei APCF_Application_Address_type auf 0x02 (für alle Senderadressen) gesetzt ist, um verschiedene Filterkombinationen zu verwalten.

Filtern, Batchverarbeitung und Berichterstellung sind miteinander verbundene Konzepte. Jede Anzeige und die zugehörige Scanantwort müssen nacheinander alle Filter durchlaufen. Die resultierenden Aktionen (delivery_mode) sind daher eng mit dem Filtern verbunden. Die folgenden Übermittlungsmodi werden unterstützt: report_immediately, batch und onFound. Der Wert OnLost ist mit OnFound verwandt, da er nach OnFound kommt, wenn er verloren geht.

Dieser Verarbeitungsablauf stellt das konzeptionelle Modell dar:

Wenn ein Frame für eine Anzeige (oder Scanantwort) empfangen wird, wird er in serieller Reihenfolge auf alle Filter angewendet. Es ist möglich, dass eine Anzeige sofortige Berichte auf der Grundlage eines Filters und eine Batchverarbeitung aufgrund einer anderen Filteraktion auslöst.

Mit RSSI-Grenzwerten (hoch und niedrig) lässt sich steuern, 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 „Batch“ gesetzt ist, wird der RSSI eines Frames für die weitere Verarbeitung durch den Controller berücksichtigt. Unterschiedliche Apps erfordern unterschiedliche Berichterstellung und Batch-Verhalten. So können mehrere Apps gleichzeitig direkte Berichte und/oder Batch-Ergebnisse in der Firmware erhalten. Ein Beispiel ist der Fall, wenn ein Batch-Scan von einer App aktiv ist und später ein regulärer LE-Scan von einer anderen App ausgeführt wird. Bevor ein Batch-Scan ausgeführt wird, legt das Framework/die App entsprechende Filter fest. Wenn die zweite App später einen regulären Scan ausführt, wird der vorherige Batch fortgesetzt. Aufgrund der regulären Suche ist es jedoch konzeptionell so, als würden Sie zusammen mit dem LE-Scanbefehl einen Nullfilter (zusammen mit allen vorhandenen Filtern) hinzufügen. Die LE-Scanbefehlsparameter haben Vorrang, wenn sie aktiv sind. Wenn der regelmäßige LE-Scan deaktiviert ist, kehrt der Controller zu einem vorherigen Batch-Scan zurück, falls vorhanden.

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

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

Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
APCF_opcode 1 Oktett 0x01 – APCF-Filterparameter festlegen
APCF_Action 1 Oktett APCF_Action des Befehls „Echo back“
APCF_AvailableSpaces 1 Oktett Anzahl der verfügbaren Einträge in der Filtertabelle

LE_APCF_Command: broadcast_address_sub_cmd

Mit diesem Unterbefehl können Sie eine Werbetreibendenadresse hinzufügen oder löschen oder die Liste der Werbetreibendenadressen für das On-Chip-Filtern löschen.

Sub OCF: 0x02

Parameter für Unterbefehl Größe Zweck
APCF_Action 1 Oktett 0x00 – Hinzufügen
0x01 – Löschen
0x02 – Löschen
Mit „Löschen“ wird die angegebene Broadcastadresse im angegebenen Filter gelöscht.
Mit „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 Liste der Senderadressen hinzugefügt oder daraus entfernt werden soll
APCF_Application_Address_type 1 Oktett 0x00: Öffentlich
0x01: Zufällig
0x02: – (Adresstyp ignorieren)
Zum Filtern von Berichten zu Anzeigen mit Identitätsadressen (0x02, 0x03). Wenn Sie Werbeberichte mit den Adresstypen 0x02 und 0x03 erhalten möchten, legen Sie für dieses Feld den Wert „0x02: NA“ fest (Adresstyp ignorieren).

Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
APCF_opcode 1 Oktett 0x02 – APCF-Broadcastadresse
APCF_Action 1 Oktett APCF_Action des Befehls „Echo back“
APCF_AvailableSpaces 1 Oktett Anzahl der kostenlosen Einträge in der Tabelle „Broadcastadresse“

LE_APCF_Command: service_uuid_sub_cmd

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

Sub OCF: 0x03

Parameter für Unterbefehl Größe Zweck
APCF_Action 1 Oktett 0x00 – Hinzufügen
0x01 – Löschen
0x02 – Löschen
Mit „Löschen“ wird die angegebene UUID-Adresse des Dienstes im angegebenen Filter gelöscht.
Mit „Löschen“ werden alle Dienst-UUIDs im angegebenen Filter gelöscht.
APCF_Filter_Index 1 Oktett Filter index (0, max_filter-1)
APCF_UUID 2,4,16-Oktett Die UUID des Dienstes (16-, 32- oder 128-Bit), die der Liste hinzugefügt oder daraus entfernt werden soll.
APCF_UUID_MASK 2,4,16-Oktett Die UUID-Maske des Dienstes (16-Bit, 32-Bit oder 128-Bit), die der Liste hinzugefügt werden soll. Sie muss dieselbe Länge wie APCF_UUID. haben.

Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
APCF_opcode 1 Oktett 0x03 – APCF-Dienst-UUID
APCF_Action 1 Oktett APCF_Action des Befehls „Echo back“
APCF_AvailableSpaces 1 Oktett Anzahl der noch kostenlosen Einträge in der Tabelle „Service UUID“

LE_APCF_Command: solicitation_uuid_sub_cmd

Mit diesem Unterbefehl können Sie eine UUID für Werbung hinzufügen oder löschen oder eine Liste mit UUIDs für Werbung für das On-Chip-Filtern löschen.

Sub OCF: 0x04

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

Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
APCF_opcode 1 Oktett 0x04 – APCF-Anfrage-UUID
APCF_Action 1 Oktett APCF_Action des Befehls „Echo back“
APCF_AvailableSpaces 1 Oktett Anzahl der noch kostenlosen Einträge in der Tabelle „UUID der Anfrage“

LE_APCF_Command: 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 das On-Chip-Filtern löschen.

Sub OCF: 0x05

Parameter für Unterbefehl Größe Zweck
APCF_Action 1 Oktett 0x00 – Hinzufügen
0x01 – Löschen
0x02 – Löschen
Mit „Löschen“ wird der angegebene lokale Name im angegebenen Filter gelöscht.
Mit „Löschen“ werden alle Strings mit Ortsnamen im angegebenen Filter gelöscht.
APCF_Filter_Index 1 Oktett Filter index (0, max_filter-1)
APCF_LocName_Mandata_or_SerData Variable Größe Ein Zeichenstring für den lokalen Namen.

Hinweise:
  • Derzeit beträgt die maximale Anzahl von Zeichen in einem lokalen Namensstring 29.
  • Nicht zutreffend, wenn die Aktion „Löschen“ (0x2) ist

Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
APCF_opcode 1 Oktett 0x05 – APCF Local Name
APCF_Action 1 Oktett APCF_Action des Befehls „Echo back“
APCF_AvailableSpaces 1 Oktett Anzahl der noch kostenlosen Einträge in der Tabelle „Ortsname“

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

Sub OCF: 0x06

Parameter für Unterbefehl Größe Zweck
APCF_Action 1 Oktett 0x00 – Hinzufügen
0x01 – Löschen
0x02 – Löschen
Mit „Löschen“ wird der angegebene Herstellerdatenstring im angegebenen Filter gelöscht.
Mit „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 Variable Größe Ein Zeichenstring für Herstellerdaten.

Hinweise:
  • Derzeit beträgt die maximale Anzahl von Zeichen in einem lokalen Namensstring 29.
  • Nicht zutreffend, wenn die Aktion „Löschen“ (0x2) ist
APCF_ManData_Mask Variable Größe Die Datenmaske des Herstellers, 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 Ereignis vom Typ „Befehl abgeschlossen“ generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
APCF_opcode 1 Oktett 0x06 – APCF-Herstellerdaten
APCF_Action 1 Oktett APCF_Action des Befehls „Echo back“
APCF_AvailableSpaces 1 Oktett Anzahl der noch 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.

Sub OCF: 0x07

Parameter für Unterbefehl Größe Zweck
APCF_Action 1 Oktett 0x00 – Hinzufügen
0x01 – Löschen
0x02 – Löschen
Mit „Löschen“ wird der angegebene Dienstdatenstring im angegebenen Filter gelöscht.
Mit „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 Variable Größe Ein Zeichenstring für Dienstdaten.

Hinweise:
  • Derzeit beträgt die maximale Anzahl von Zeichen in einem lokalen Namensstring 29.
  • Nicht zutreffend, wenn die Aktion „Löschen“ (0x2) ist
APCF_LocName_Mandata_or_SerData_Mask Variable Größe Die Dienstdatenmaske, die der Liste hinzugefügt werden soll. Sie muss dieselbe Länge wie APCF_LocName_or_ManData_or_SerData. haben.

Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
APCF_opcode 1 Oktett 0x07 – APCF-Dienstdaten
APCF_Action 1 Oktett APCF_Action des Befehls „Echo back“
APCF_AvailableSpaces 1 Oktett Anzahl der noch verfügbaren kostenlosen Einträge für die Tabelle „Servicedaten“

LE_APCF_Command: ad_type_sub_cmd

Mit diesem Unterbefehl können Sie einen Anzeigentyp hinzufügen oder löschen oder eine Liste mit Anzeigentypen für den On-Chip-Filter löschen. Mit read_extended_features_sub_cmd können Sie prüfen, ob dieser Befehl unterstützt wird.
Wenn APCF_AD_DATA_Length = 0 ist, wird APCF_AD_TYPE ohne Vergleich der Anzeigendaten und der Anzeigendatenmaske gefiltert. 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 restlichen Daten.

Sub OCF: 0x09

Parameter für Unterbefehl Größe Zweck
APCF_Action 1 Oktett 0x00 – Hinzufügen
0x01 – Löschen
0x02 – Löschen
Mit „Löschen“ wird der angegebene AD-Typ im angegebenen Filter gelöscht.
Mit „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 Der AD-Typ, um der Liste Elemente hinzuzufügen oder daraus zu entfernen. Ignorieren, wenn APCF_Action = 0x02 (Löschen)
APCF_AD_DATA_Length 1 Oktett 0x00 – Dateninhalte werden nicht gefiltert
Wird ignoriert, wenn APCF_Action = 0x02 (Löschen) ist.
APCF_AD_DATA Variable Größe Variable Größe, basierend auf APCF_AD_DATA_Length
Wird ignoriert, wenn APCF_Action = 0x02 (Löschen) ist
APCF_AD_DATA_MASK Variable Größe Variable Größe, basierend auf APCF_AD_DATA_Length
Wird ignoriert, wenn APCF_Action = 0x02 (Leere)
Die Länge sollte der von APCF_AD_DATA entsprechen.

Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
APCF_opcode 1 Oktett 0x09 – APCF-Anzeigentyp
APCF_Action 1 Oktett APCF_Action des Befehls „Echo back“
APCF_AvailableSpaces 1 Oktett Anzahl der noch kostenlosen Einträge in der Tabelle „Anzeigentyp“

LE_APCF_Command: read_extended_features_sub_cmd

Mit diesem Unterbefehl werden erweiterte APCF-Funktionen gelesen.

Sub OCF: 0xFF

Parameter für Unterbefehl Größe Zweck
Nicht zutreffend Leere Befehlsparameter.

Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ 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

Unterstützte Bitmasken für erweiterte Funktionen:

  • Bit 0: Filter für den Transport Discovery Service unterstützen
  • Bit 1: Filter für Anzeigentyp unterstützen
  • Bit 2 bis 15: Reserviert für zukünftige Verwendung

Wert des Bits

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

Befehl für Controlleraktivität und Energieinformationen

Das Ziel dieser Informationen besteht darin, dass höhere Hostsystemfunktionen die Gesamtaktivitäten aller Komponenten, einschließlich des BT-Controllers und seines Makrostatus, in Verbindung mit den Vorgängen in den Apps und dem Framework analysieren können. Dazu sind die folgenden Informationen vom BT-Stack und vom Controller erforderlich:

  • BT-Stack: Meldet den aktuellen makro-operativen Status des Controllers
  • Firmware: Berichterstellung zu zusammengefassten Aktivitäten und Energieinformationen

BT-Hoststack-Makrostatus, wie auf Nutzerebene ermittelt:

  • Inaktiv: [Seitenscan, LE-Anzeigen, Suchanfrage-Scan, LE-Scan]
  • Scan: [paging/inquiry/trying to connect]
  • Aktiv: [ACL-Link aktiviert, SCO-Link aktiv, Sniffer-Modus]

Die Aktivitäten, die der Controller während seines Lebenszyklus erfasst, sind die Übertragungs-, Empfangs-, Inaktivitäts- und Gesamtenergiedauer. Sie werden gelöscht, wenn sie vom Host gelesen werden.

LE_Get_Controller_Activity_Energy_Info

Dies ist ein anbieterspezifischer Befehl.

OCF: 0x159

Parameter für Unterbefehl Größe Zweck
Leere Befehlsparameter

Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
total_tx_time_ms 4 Oktette Gesamtzeit für die Übertragung
total_rx_time_ms 4 Oktette Gesamtzeit für die Ausführung von Rx
total_idle_time_ms 4 Oktette Zeit im Ruhemodus insgesamt (Energiesparmodi ohne Ruhemodus)
total_energy_used 4 Oktette Gesamtverbrauchte Energie [Produkt aus Strom (mA), Spannung (V) und Zeit (ms)]

Befehl für LE-Scanparameter für erweiterte Sets

Mit diesem Befehl können Sie ein größeres Scanfenster und ‑intervall auf dem Controller aktivieren. Gemäß der BT Core 5.2-Spezifikation haben ein Scanfenster und ein Scanintervall eine Obergrenze von 10, 24 Sekunden. Das schränkt Scanintervalle für Apps auf maximal 10, 24 Sekunden ein.

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. SCAN_REQ Pakete gesendet werden.
LE_Ex_Scan_Interval 4 Oktette Definiert als das Zeitintervall zwischen dem Start des letzten LE-Scans durch den Controller und dem Start 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 akzeptieren (Standard). Direkte Werbepakete, die nicht an dieses Gerät adressiert sind, werden ignoriert.
0x01 – Werbepakete von Geräten ignorieren, die nicht auf der Zulassungsliste stehen. Pakete mit personalisierter Werbung, die nicht an dieses Gerät adressiert sind, werden ignoriert.

Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.

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

Befehl zum Abrufen von Controller-Debugging-Informationen

Das Ziel dieses Informationselements besteht darin, Controller-Debuginformationen in Binärform von einem Host für die Nachbearbeitung und Analyse abzurufen. Dies hilft bei der Fehlerbehebung vor Ort und bietet Entwicklern ein Toolkit zum Protokollieren von Informationen zur Analyse. Ein Controller kann die Informationen bereitstellen, wenn sie von einem Host über das Ereignis (Controller-Debug-Info-Unterereignis) angefordert werden, oder autonom, wenn der Controller dies wünscht. Beispiele für Anwendungsfälle sind das Melden von Informationen zum Firmwarestatus, Crash-Dump-Informationen und Protokollierungsinformationen.

OCF: 0x15B

Befehlsparameter Größe Zweck
Leere Liste der Befehlsparameter

Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ 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 Offload des A2DP-Audiocodierungsvorgangs an einen Audioprozessor, der mit dem BT-Controller verbunden ist. Der codierte Audiodatenstream wird ohne Beteiligung des BT-Hosts direkt vom Audioprozessor an den BT-Controller weitergeleitet. 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)

Sub OCF: 0x01

Mit diesem Befehl können Sie sowohl den A2DP-Offload-Prozess konfigurieren als auch den A2DP-Stream 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). Ein Wert von null deaktiviert das Leeren.
SCMS-T_Enable 2 Oktette Oktett 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 Bit pro Sample
0x02 – 24 Bit pro Sample
0x04 – 32 Bit pro Sample
Channel_Mode 1 Oktett 0x01 – Mono
0x02 – Stereo
Encoded_Audio_Bitrate 4 Oktette Die codierte Audiobitrate in Bits pro Sekunde.
0x00000000 – Die Audiobitrate ist nicht angegeben / nicht verwendet.
0x00000001–0x00FFFFFF – Codierte Audiobitrate 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:

Siehe SBC-Codec-spezifische Informationselemente in A2DP v1.3.
Oktett 0: Blocklänge | Unterbänder | Zuordnungsmethode
Oktett 1: Mindestwert des Bitpools
Oktett 2: Höchstwert des Bitpools
Oktett 3: Abtastfrequenz | Kanalmodus
Oktett 4–31: reserviert

AAC-Codec:

Weitere Informationen finden Sie unter „AAC-Codec-spezifische Informationselemente in A2DP v1.3“.
Oktett 0: Objekttyp
Oktett 1; b7: VBR
Oktett 2–31: reserviert

LDAC-Codec:

Oktett 0–3: Anbieter-ID
0x0000012D

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

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

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

Oktett 8–31: reserviert

Alle anderen Codecs:

Oktett 0–31: reserviert

Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.

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

A2DP-Offload starten

Sub OCF: 0x03

Mit diesem Befehl können Sie sowohl den A2DP-Offload-Prozess konfigurieren als auch den A2DP-Stream starten.

Befehlsparameter Größe Zweck
Connection Handle 2 Oktette Handle der aktiven HCI-Verbindung
L2CAP_Channel_ID 2 Oktette Kennung des L2CAP-Kanals, der für das A2DP-Streaming geöffnet wurde
Data_Path_Direction 1 Oktett 0x00 – Ausgabe (AVDTP-Quelle/-Zusammenführung)
0x01 – Eingabe (AVDTP-Sink/-Split)
Peer_MTU 2 Oktette Maximale Größe von L2CAP-Paketen, die mit dem Peer ausgehandelt wird.
CP_Enable_SCMS_T 1 Oktett 0x00 – SCMS-T-Inhaltsschutz-Header deaktivieren
0x01 – SCMS-T-Inhaltsschutz-Header aktivieren
CP_Header_SCMS_T 1 Oktett Wenn der SCMS-T-Inhaltsschutz-Header aktiviert ist (CP_SCMS_T_Enable auf 0x01 festgelegt), definiert er den Headerwert, der den Audioinhalten vorangestellt ist (siehe A2DP, Abschnitt 3.2.1–2), wie in Bluetooth Assigned Numbers, Abschnitt 6.3.2 definiert.
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 von der Bluetooth Audio HAL bereitgestellt werden, CodecParameters.vendorSpecificParameters[].

Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.

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

A2DP-Offload beenden (alt)

Sub 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 Ereignis vom Typ „Befehl abgeschlossen“ generiert.

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

A2DP-Offload beenden

Sub 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 L2CAP-Kanals, der für das A2DP-Streaming geöffnet wurde
Data_Path_Direction 1 Oktett 0x00 – Ausgabe (AVDTP-Quelle/-Zusammenführung)
0x01 – Eingabe (AVDTP-Sink/-Split)

Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ 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

Die Befehlsfunktion „BT Quality Report“ startet den Mechanismus im Bluetooth-Controller, 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 zur Linkqualität an den Host.
  • Approaching LSTO: Wenn länger als die Hälfte des LSTO-Werts (Link Supervision TimeOut) keine Pakete vom verbundenen BT-Gerät empfangen werden, meldet der Controller dem Host das Ereignis „Approaching LSTO“.
  • A2DP Audio Choppy: Wenn der Controller Faktoren erkennt, die zu abgehacktem Audio führen, meldet er dem Host ein A2DP Audio Choppy-Ereignis.
  • (e)SCO Voice Choppy: Wenn der Controller Faktoren erkennt, die zu einer abgehackten Stimme führen, meldet er dem Host ein (e)SCO Voice Choppy-Ereignis.
  • Root Inflammation: Dieses Ereignis wird vom Controller an den Stack gesendet, wenn der HAL oder der Controller einen schwerwiegenden Fehler erkennt und Bluetooth neu starten muss.
  • LMP/LL-Nachrichten-Trace: Der Controller sendet das LMP/LL-Nachrichten-Handshake mit dem Remotegerät an den Host.
  • Bluetooth-Multiprofil-/Coex-Planungs-Trace: Der Controller sendet seine Planungsinformationen 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 Funktion aktiviert ist, kann der Controller Informationen zum Debug-Logging über das Unterereignis „Controller-Debug-Informationen“ an den Host senden.
  • LE Audio Choppy: Wenn der Controller Faktoren erkennt, die zu abgehacktem Audio führen, meldet er dem Host ein LE Audio Choppy-Ereignis.
  • Modus für erweiterte Funkstatistiken: Der Controller meldet dem Host Informationen zu seinen Funkstatistiken und unterstützt dabei zwei Anwendungsfälle für Berichte:
    • Regelmäßige Berichte
    • Ereignistrigger (Trigger für Start/Stopp des Streams und für die Linkqualität)
  • BQR_Report_Action des Bluetooth-Befehls „Quality Report“: Mit diesem HCI-Befehl kann der Host eine einmalige Abfrage für den Qualitätsüberwachungsmodus, den Energieüberwachungsmodus oder einen erweiterten Modus für RF-Statistiken abrufen.

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.

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

Wenn Sie „Löschen“ auswählen, werden Berichte zu bestimmten Qualitätsereignissen gelöscht.
Mit „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 Berichte zu Qualitätsereignissen.

Bit 0: Legen Sie diesen Wert fest, um den Qualitätsüberwachungsmodus zu aktivieren.
Bit 1: Legen Sie fest, dass das Ereignis „Annäherung an LSTO“ aktiviert werden soll (für ACL/(e)SCO/ISO).
Bit 2: Legen Sie fest, um das A2DP-Audio-Stottern zu aktivieren.
Bit 3: Legen Sie fest, um das (e)SCO-Sprach-Stottern-Ereignis zu aktivieren.
Bit 4: Legen Sie diesen Wert fest, um das Ereignis „Wurzelentzündung“ zu aktivieren.
Bit 5: Legen Sie diesen Wert fest, um den Energiesparmodus zu aktivieren.
Bit 6: Legen Sie fest, um das Ereignis „Ruckelige LE-Audiowiedergabe“ zu aktivieren.
Bit 7: Legen Sie fest, um das Ereignis „Verbindungsfehler“ zu aktivieren.
Bit 8: Legen Sie diese Einstellung fest, um den Ereignistrigger für den Modus „Erweiterte Funkstatistiken“ zu aktivieren.
Bit 9: Legen Sie fest, um den periodischen Bericht zu erweiterten Funkstatistiken zu aktivieren.
Bit 10 bis 14: Reserviert.
Bit 15: Setzen Sie diesen Wert, um anbieterspezifische Qualitätsereignisse zu aktivieren.
Bit 16: Legen Sie dieses Bit fest, um die LMP/LL-Nachrichtenaufzeichnung zu aktivieren.
Bit 17: Legen Sie fest, ob die Bluetooth-Multi-Link/Coex-Planungs-Trace aktiviert werden soll.
Bit 18: Wenn dieses Bit gesetzt ist, wird der Mechanismus für Controller-Debug-Informationen aktiviert.
Bit 19 bis 30: Reserviert.
Bit 31: Legen Sie diesen Wert fest, um die anbieterspezifische Fehlerverfolgung zu aktivieren.

BQR_Minimum_Report_Interval 2 Oktette Legen Sie das Mindestzeitintervall für die Berichterstellung zu Qualitätsereignissen für die ausgewählten Qualitätsereignisse fest. Die Controller-Firmware sollte das nächste Ereignis nicht innerhalb des definierten Zeitintervalls melden. Die Intervalleinstellung muss für die hinzugefügten Qualitätsereignisse geeignet 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ählten anbieterspezifischen Berichte zu Qualitätsereignissen.
Dieser Parameter ist nur gültig, wenn Bit 15 von BQR_Quality_Event_Mask gesetzt ist.

Bit 0 bis 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 bis 31: Reserviert.

Report_interval_multiple 4 Oktette Der Multiplikator für BQR_Minimum_Report_Interval. Wenn dieser Wert >= 1 ist, hat das BQR-Berichtsintervall das 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 gilt speziell für die hinzugefügten Qualitätsereignisse.

Einheit: ms
Standard: 1
Bereich: 0 bis 4294967295 (0: entspricht „1“)

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

Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ 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 Modus für die Qualitätsüberwachung ist aktiviert.
Bit 1: Die Berichterstellung für das Erreichen der LSTO ist aktiviert.
Bit 2: Die Berichterstellung für A2DP-Audio-Ruckeln ist aktiviert.
Bit 3: Die Berichterstellung für (e)SCO-Störungen bei der Sprachqualität ist aktiviert.
Bit 4: Die Berichterstellung für Wurzelentzündungsereignisse ist aktiviert.
Bit 5: Der Energiesparmodus ist aktiviert.
Bit 6: Die Berichterstellung für Audio-Aussetzer bei LE-Audio ist aktiviert.
Bit 7: Ereignis „Verbindungsaufbau fehlgeschlagen“.
Bit 8: Legen Sie diese Einstellung fest, um den Ereignistrigger für den Modus „Erweiterte RF-Statistiken“ zu aktivieren.
Bit 9: Legen Sie fest, um fortlaufende Berichte zu erweiterten Funkstatistiken zu aktivieren.
Bit 10 bis 14: Reserviert.
Bit 15: Die Berichterstellung für anbieterspezifische Qualitätsereignisse ist aktiviert.
Bit 16: LMP/LL-Nachrichten-Trace ist aktiviert.
Bit 17: Bluetooth-Multi-Link/Coex-Scheduling-Trace ist aktiviert.
Bit 18: Der Mechanismus für Controller-Fehlerinformationen ist aktiviert.
Bit 19 bis 30: Reserviert.
Bit 31: Anbieterspezifisches Tracing 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 maximal unterstützten Intervall des Controllers sein.

Befehl für dynamischen Audiopuffer

Der dynamische Audio-Puffer reduziert Audiostörungen, indem die Audio-Puffergröße im Bluetooth-Controller je nach Situation geändert wird.

OCF: 0x15F

Audio-Pufferzeit abrufen

Sub OCF: 0x01

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

Befehlsparameter Größe Zweck
Leere Liste der Befehlsparameter

Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Dynamic_Audio_Buffer_opcode 1 Oktett 0x01 – Audiopufferzeit 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 Codec-Typs „Bit 0“, der in „Audio_Codec_Type_Supported“ angegeben ist.
Dieser Wert muss 0 sein, wenn der Codectyp von Bit 0 nicht unterstützt wird.
Einheit: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 2 Oktette Maximale Pufferzeit des Codec-Typs „Bit 0“, der in „Audio_Codec_Type_Supported“ angegeben ist.
Dieser Wert muss 0 sein, wenn der Codectyp von Bit 0 nicht unterstützt wird.
Einheit: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 2 Oktette Mindestpufferzeit des Codec-Typs „Bit 0“, der in „Audio_Codec_Type_Supported“ angegeben ist.
Dieser Wert muss 0 sein, wenn der Codectyp von Bit 0 nicht unterstützt wird.
Einheit: ms
Audio_Codec_Buffer_Default_Time_For_Bit_1 2 Oktette Standardpufferzeit des Bit 1-Codec-Typs, der in „Audio_Codec_Type_Supported“ angegeben ist.
Dieser Wert muss 0 sein, wenn der Bit 1-Codectyp 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-Codectyp nicht unterstützt wird.
Einheit: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 2 Oktette Mindestpufferzeit des Codec-Typs „Bit 1“, der in „Audio_Codec_Type_Supported“ angegeben ist.
Dieser Wert muss 0 sein, wenn der Bit 1-Codectyp nicht unterstützt wird.
Einheit: ms
...... ...... ......
Audio_Codec_Buffer_Default_Time_For_Bit_31 2 Oktette Standardpufferzeit des Bit 31-Codec-Typs, der in „Audio_Codec_Type_Supported“ angegeben ist.
Dieser Wert muss 0 sein, wenn der Codectyp „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 muss 0 sein, wenn der Codectyp „Bit 31“ nicht unterstützt wird.
Einheit: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 2 Oktette Mindestpufferzeit des Codec-Typs „Bit 31“, der in „Audio_Codec_Type_Supported“ angegeben ist.
Dieser Wert muss 0 sein, wenn der Codectyp „Bit 31“ nicht unterstützt wird.
Einheit: ms

Audio-Pufferzeit festlegen

Sub OCF: 0x02

Mit diesem Befehl legen Sie die Audio-Pufferzeit für den Bluetooth-Controller fest.

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

Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Dynamic_Audio_Buffer_opcode 1 Oktett 0x02 – Audiopufferzeit festlegen
Audio_Codec_Buffer_Time 2 Oktette Aktuelle Audiopufferungszeit 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, 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 und ist das Byte, das im HCI-Ereignispaket direkt nach der Parameterlänge folgt.

Unterereignis „Speichergrenzwert unterschritten“

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

Subevent-Code = 0x54

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

LE-Unterereignis „Mehrere Werbestatus geändert“

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 angehalten wurde.

Subevent-Code = 0x55

Parameter für untergeordnete Ereignisse Größe Zweck
Advertising_instance 1 Oktett Identifiziert die jeweilige Anzeigeninstanz.
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 zur Deaktivierung der advt-Instanz geführt hat (0xFFFF, wenn ungültig)

Unterereignis „LE advertisement tracking“

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

Untergeordneter Ereigniscode = 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 verloren
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-Informationen zur Fehlerbehebung“

Dieses Ereignis wird von einem Controller verwendet, um einem Host binäre Informationen zur Fehlerbehebung zur Verfügung zu stellen.

Subevent-Code = 0x57

Parameter für untergeordnete Ereignisse Größe Zweck
debug_block_byte_offset_start 2 Oktette Debug-Block-Byte-Offset vom Anfang
last_block 1 Oktett 0x00: Es sind weitere Debug-Daten vorhanden
0x01: Letzter Binärblock; keine weiteren Debug-Daten
cur_pay_load_sz 2 Oktette Binäre Blockgröß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 Probleme hin: Es ist ein Bluetooth-Qualitätsereignis aufgetreten, der Controller hat den LMP-/LL-Nachrichten-Trace und den Bluetooth-Multi-Link/Coex-Scheduling-Trace hochgeladen oder der Controller hat Debug-Informationsdaten gedumpt.

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 mit Aussetzern.
0x04: (e)SCO-Stimme abgehackt.
0x05 bis 0x06: Reserviert.
0x07: LE-Audio ist abgehackt.
0x08: Verbindung fehlgeschlagen.
0x09 bis 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
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 bis 0x50: Reserviert
0x51: ISO-Paket
0x52 bis 0xFF: Reserviert
Connection_Handle 2 Oktette ACL-/(e)SCO-/ISO-Verbindungs-Handle.
Connection_Role 1 Oktett Ausführende Rolle für die Verbindung.
0x00: Zentral
0x01: Peripherie
0x02 bis 0xFF: Reserviert.
TX_Power_Level 1 Oktett Aktuelle Sendeleistung für den angegebenen Connection_Handle.

Dieser Wert muss mit dem Wert übereinstimmen, den der Controller 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]

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

Unused_AFH_Channel_Count 1 Oktett Gibt die Anzahl der ungenutzten Kanäle in AFH_channel_map an.
0x4F bis 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 die automatische Kanalsuche ausgewählt werden.
Die Bluetooth-Spezifikation erlaubt eine Mindestanzahl von 20 Kanälen. Selbst wenn also alle 79 Kanäle gestört sind und eine schlechte Qualität haben, muss der Controller mindestens 20 Kanäle für die automatische Kanalsuche auswählen.
LSTO 2 Oktette Aktuelle Einstellung für das Zeitlimit der Link-Überwachung.
Zeit = N × 0,625 ms
Zeitraum: 0,625 ms bis 40,9 s
Connection_Piconet_Clock 4 Oktette Piconet-Taktgeber für den angegebenen Connection_Handle.
Dieser Wert muss mit dem Wert übereinstimmen, den der Controller auf den HCI-Befehl „HCI_Read_Clock“ mit dem Parameter „Which_Clock“ von 0x01 (Piconet-Takt) zurückgibt.
Einheit: N * 0,3125 ms (1 Bluetooth-Takt)
Retransmission_Count 4 Oktette Die Anzahl der Wiederholungen 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 Anzahl erhöht sich, wenn zum geplanten Zeitpunkt kein Paket empfangen wird oder das empfangene Paket beschädigt ist.
Dieser Wert wird nach der Meldung an den Host zurückgesetzt.
NAK_Count 4 Oktette Anzahl der NAKs (Negative Acknowledge) 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-Taktzeit der Piconet-Zentrale (CLK).
Einheit: N * 0,3125 ms (1 Bluetooth-Takt)
Flow_Off_Count 4 Oktette Gibt an, wie oft der Controller seit dem letzten Ereignis das Signal „Flow-off“ (STOP) empfangen hat.
Dieser Zähler 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-Taktzeit der Piconet-Zentrale (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 Datenbytes verworfen werden.
Dieser Wert wird nach der Meldung an den Host zurückgesetzt.

Buffer_Underflow_Bytes 4 Oktette [in Byte]

Anzahl der Unterlaufszählungen seit dem letzten Ereignis.
Dieser Wert wird nach der Meldung an den Host zurückgesetzt.

bdaddr 6 Oktette Adresse des Remote-Geräts
cal_failed_item_count 1 Oktett Die 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, die keine Bestätigung erhalten.
Dieser Wert wird zurückgesetzt, nachdem Sie den Fehler gemeldet haben.
TX_Flushed_Packets 4 Oktette Die Anzahl der Pakete, die nicht über den Flush-Punkt gesendet werden.
Dieser Wert wird zurückgesetzt, nachdem Sie den Fehler gemeldet haben.
TX_Last_Subevent_Packets 4 Oktette Die Anzahl der Pakete, über die die Sicherungsschicht im letzten Unterereignis eines CIS-Ereignisses eine CIS-Daten-PDU überträgt.
Dieser Wert wird zurückgesetzt, nachdem Sie den Fehler gemeldet haben.
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-Fehlern seit dem letzten Ereignis.
Dieser Wert wird zurückgesetzt, nachdem Sie den Fehler gemeldet haben.
RX_Duplicate_Packets 4 Oktette Die Anzahl der duplizierten (nochmals gesendeten) Pakete, die seit dem letzten Ereignis empfangen wurden.
Dieser Wert wird zurückgesetzt, nachdem Sie den Fehler gemeldet haben.
RX_Unreceived_Packets 4 Oktette Die Anzahl der nicht empfangenen Pakete entspricht dem Parameter des LE READ ISO Link Quality-Befehls (siehe Bluetooth Core Specification Version 5.4). Die zugehörigen Streams sind CIS und BIS.
Wenn dieser Wert erhöht wird, empfängt die Sicherungsschicht keine bestimmte Nutzlast bis zum Flush-Punkt (bei einem CIS) oder am Ende des Ereignisses, mit dem sie verknüpft ist (bei einem BIS; siehe Bluetooth Core Specification Version 5.4, Band 6, Teil B, Abschnitt 4.4.6.6).
Coex_Info_Mask 2 Oktette Bit 0 – CoexInvolvement: Wird gesetzt, wenn bei der Generierung dieses Berichts Coex-Aktivitäten vermutet werden (z. B. A2DP-Chops und Approaching LSTO).
Bit 1 – WL 2G Radio Active: Wird gesetzt, um anzuzeigen, dass WLAN 2G Radio aktiv ist.
Bit 2 – WL 2G Connected: Wird gesetzt, um anzuzeigen, dass das WLAN 2G-Funkmodul aktiv und verbunden ist.
Bit 3 – WL 5G/6G Radio Active: Gibt an, dass das WLAN 5G/6G-Funkschnittstellenmodul aktiv ist.
Bit 4–15 – Reserviert
Anbieterspezifischer Parameter (Gesamtlänge des Parameters – TBD) * Oktette Damit der Controlleranbieter weitere anbieterspezifische Parameter abrufen kann.

Unterereigniscode = 0x58 [Quality_Report_Id = 0x05, Ereignis „Wurzelentzündung“]

Dieses Ereignis gibt an, dass bei der 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 er das erste Fragment der Debug-Info-Ereignisse sendet.

Der Parameter „Error_Code“ enthält einen von HAL/Controller gemeldeten Fehlercode. Wenn es sich um einen herstellerspezifischen Fehler des Chipsatzes handelt, ist der Wert „0“. Der Vendor_Specific_Error_Code enthält einen herstellerspezifischen Fehlercode des Chipsatzes von 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 den Wert „0“ haben.

Parameter für untergeordnete Ereignisse Größe Zweck
Quality_Report_Id 1 Oktett 0x00 bis 0x04: Reserviert.
0x05: Wurzelentzündung.
0x06 bis 0xFF: Reserviert.
Error_Code 1 Oktett 0x00: Der Chipsatzanbieter-spezifische Fehlercode ist enthalten.
0x01 bis 0xFF: Es ist ein Controllerfehler aufgetreten. Eine Liste der Fehlercodes und Beschreibungen finden Sie in der Bluetooth-Spezifikation [Band 2] Teil D, „Error Codes“ (Fehlercodes).
Vendor_Specific_Error_Code 1 Oktett 0x00: Es ist kein herstellerspezifischer Fehlercode für den Chipsatz enthalten.
0x01 bis 0xFF: Chipsatzanbieterspezifischer Fehlercode.
Anbieterspezifischer Parameter (Gesamtlänge des Parameters – 4) * Oktette Damit der Controlleranbieter weitere anbieterspezifische Parameter abrufen kann.
Parameter für untergeordnete Ereignisse Größe Zweck
Quality_Report_Id 1 Oktett 0x00 bis 0x10: Reserviert.
0x11: LMP/LL-Nachrichten-Trace.
0x12: Bluetooth-Multi-Link/Coex-Planungs-Trace.
0x13: Datendump mit Controller-Debug-Informationen.
0x14 bis 0xFF: Reserviert.
Connection_Handle 2 Oktette Verbindungs-Handle.
Anbieterspezifischer Parameter (Gesamtlänge des Parameters – 4) * Oktette Anbieterspezifisches Format für LMP-Nachrichten-Trace, Bluetooth-Multi-Link/Coex-Scheduling-Trace und Controller-Debug-Informations-Datadump.

Unterstützung mehrerer Werbetreibender

Die Unterstützung mehrerer Werbetreibender hat folgende Ziele:

  • Unterstützung mehrerer Anzeigen (max_advt_instances)
  • Unterschiedliche Übertragungsleistungen für einen variablen Bereich
  • Unterschiedliche Werbeinhalte
  • Eine individuelle Antwort für jeden Werbetreibenden
  • Datenschutz (nicht nachvollziehbar) für jeden Werbetreibenden
  • Verbindbar

Um diese Spezifikation an bestehende Standards anzupassen, werden die folgenden anbieterspezifischen Befehle bereitgestellt. Sie stammen aus der Bluetooth Core 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 Ereignis vom Typ „Befehl abgeschlossen“ 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

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

Sub OCF: 0x01

Parameter für Unterbefehl 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 – in dBm (ganzzahlig)
Bereich (–70 bis +20)

Der Parameter Own_Address kann eine vom Host konfigurierte Adresse sein, die beim Einrichten dieser Instanz mit mehreren Anzeigen festgelegt wurde. So kann zum Zeitpunkt der Übertragung des ersten Beacons eine auflösbare private Adresse vorhanden sein. Die Anzeigenauslieferung auf einer Instanz wird unabhängig von der Verbindung fortgesetzt. Der BT-Stack des Hosts kann einen Befehl zum Starten der Werbung auf einer Instanz nach der Verbindung senden.

Gemäß dem obigen Befehl wird für diesen Befehl 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

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

Sub OCF: 0x02

Parameter für Unterbefehl 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

Gemäß dem obigen Befehl wird für diesen Befehl ein „Command Complete“-Ereignis generiert, wie in der Bluetooth Core 4.1-Spezifikation angegeben. Der Controller antwortet mit einem Fehlercode, 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

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

Sub OCF: 0x03

Parameter für Unterbefehl 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

Gemäß dem obigen Befehl wird für diesen Befehl 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

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

Sub OCF: 0x04

Parameter für Unterbefehl 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 Ereignis vom Typ „Befehl abgeschlossen“ 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

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

OCF: 0x05

Parameter für Unterbefehl Größe Zweck
Advertising_Enable 1 Oktett Ein Wert von „1“ bedeutet „aktivieren“. Alle anderen Werte bedeuten „Deaktivieren“.
Advertising_Instance 1 Oktett Gibt an, ob die oben genannten Parameter für eine Instanz gelten. Instanz 0 steht für eine standardmäßige HCI-Instanz.

Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.

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

Auslagerte Auflösung privater Adresse

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

  • Latenz, die beim Host bei der Auflösung einer privaten Adresse auftritt
  • Energie sparen, indem der Host nicht geweckt wird

LE_Set_RPA_Timeout

OCF: 0x15C

Befehlsparameter Größe Zweck
LE_local_IRK 16 Oktett Die lokale Geräte-IRK, die zum Generieren der zufällig auflösbaren Adresse(n) verwendet wurde.
tRPA_min 2 Oktette Das minimale Zeitlimit für die RPA-Generierung in Sekunden. Der Controller muss neue auflösbare Adressen für alle Werbe-/Scan-/Verbindungsereignisse generieren, die nach diesem Zeitlimit auftreten.
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 dieser Zeitüberschreitung 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.

Empfohlene 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 Ereignis vom Typ „Befehl abgeschlossen“ 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

Sub OCF: 0x01

Parameter für Unterbefehl Größe Zweck
enable_customer_specific_feature_set 1 Oktett 0x01 – Funktion für ausgelagerte RPA aktivieren
0x00 – Funktion für ausgelagerte RPA deaktivieren

RPA-Offload muss vom Host aktiviert werden, je nach Chipfunktion. Weitere Informationen finden Sie im Abschnitt zum LE_Get_Vendor_Capabilities_Command. Jeder Chip kann eine unterschiedliche max_irk_list_sz in der Firmware haben.

Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ 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

Sub OCF: 0x02

Parameter für Unterbefehl 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 mit dem IRK verknüpft ist (1. Byte, LSByte)

Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Event_cust_specific_feature_opcode 1 Oktett 0x02 [IRK zur Liste hinzufügen]
LE_IrkList_AvailableSpaces 1 Oktett Verfügbare Einträge in der IRL-Liste nach dem aktuellen Vorgang

LE_RPA_offload: Remove_IRK_to_list_sub_Command

Sub OCF: 0x03

Parameter für Unterbefehl 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 vom Typ „Befehl abgeschlossen“ generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Event_cust_specific_feature_opcode 1 Oktett 0x03 [IRK aus der Liste entfernen]
LE_IrkList_AvailableSpaces 1 Oktett Verfügbare Einträge in der IRL-Liste nach dem aktuellen Vorgang

LE_RPA_offload: Clear_IRK_list_sub_Command

Sub OCF: 0x04

Parameter für Unterbefehl Größe Zweck
Keine

Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Event_cust_specific_feature_opcode 1 Oktett 0x04 [IRK-Liste löschen]
LE_IrkList_AvailableSpaces 1 Oktett Verfügbare Einträge in der IRL-Liste nach dem aktuellen Vorgang [max_irk_list_sz]

LE_RPA_offload: Read_IRK_list_sub_Command

Sub OCF: 0x05

Parameter für Unterbefehl 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 vom Typ „Befehl abgeschlossen“ generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“
Event_cust_specific_feature_opcode 1 Oktett 0x05 [IRK-Listeneintrag lesen]
LE_Read_IRK_List_entry 1 Oktett Index der IRK, die der Host zurücklesen möchte (maximale Größe der IRK-Liste ist 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 auflösbare private Adresse dieses IRK