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_c
–T_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_records Scan_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:
|
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:
|
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:
|
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:
Wert von Bit
|
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.
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. AAC-Codec:
AAC-Codec-spezifische Informationselemente in A2DP v1.3 LDAC-Codec:
0.–3. Oktober: Anbieter-ID
4.–5. Oktober: Codec-ID
6. Okt.: Bitratenindex:
7. Okt.: LDAC-Kanalmodus 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
Mit „Löschen“ werden bestimmte Berichte zu Ereignissen mit hoher Qualität gelöscht. |
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. |
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 |
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 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 ) vorhanden0x01: 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 OktettRSSI[0] : 1 OktettTimestamp[0] : 2 OktetteAdv packet_len[0] : 1 OktettAdv_packet[0] : Adv_packet_len OktetteScan_data_resp_len[0] : 1 OktettScan_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.
Code für untergeordnetes Ereignis = 0x58 [Quality_Report_Id = 0x01 ~ 0x04, Ereignis für Linkqualität]
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. |
SNR |
1 Oktett |
[in dB]
SNR-Wert (Signal-toise Ratio) für das angegebene Connection_Handle. |
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. |
Buffer_Underflow_Bytes |
4 Oktette |
[in Byte]
Anzahl der Pufferunterläufe seit dem letzten Ereignis. |
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. |
Code des untergeordneten Ereignisses = 0x58 [Quality_Report_Id = 0x11 ~ 0x13, Log-Dump-bezogenes Ereignis]
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 |