HCI-Anforderungen

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

Dieses Dokument enthält eine Liste der HCI-Anforderungen für Bluetooth (BT) und Bluetooth Low Energy (BLE). Das Ziel besteht darin, dass Host-BT-Stack-Anbieter und BT-Controller-Anbieter diese Plattformanforderungen erfüllen, um den unten beschriebenen Funktionsumfang 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 übernommenen Dokumenten auf der Bluetooth SIG-Website verfügbar.

Allgemeiner Designüberblick

Chipfunktionen und -konfiguration

Als offene Plattform verfügt Android über eine Matrix aus Softwareversionen, OEMs, Anbietern sowie Plattform- und Chipfunktionen.

Um die unterschiedliche Landschaft zu verwalten und Migrationen zu verwalten, wird in diesem Dokument eine Designphilosophie beschrieben, die es BT-Controllern ermöglicht, ihre Fähigkeiten (über die standardmäßige Bluetooth Core 5.2-Spezifikation hinaus) offenzulegen. Der Host-BT-Stack kann diese Funktionen dann verwenden, um zu bestimmen, welche Funktionen aktiviert werden sollen.

Unterstützung offener Standards

Ein Ziel von Android ist die Unterstützung offener Standards nach der Ratifizierung in einer Bluetooth-Spezifikation. Wenn eine unten beschriebene Funktion in einer zukünftigen Bluetooth-Spezifikation in Standard-HCI-Methoden verfügbar wird, werden wir dazu tendieren, diesen Ansatz zum Standard zu machen.

Anbieterspezifische Funktionen

Herstellerspezifischer Befehl: LE_Get_Vendor_Capabilities_Command

OpCode-Befehlsfeld (OCF): 0x153

Befehlsparameter Größe Zweck
N / A Leere Befehlsparameterliste

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

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

Reserviert nach v0.98.
Dieser Parameter ist in der Google-Feature-Spezifikation v0.98 und höher veraltet und wird durch LE Extended Advertising ersetzt, das in der BT-Spezifikation Version 5.0 und höher verfügbar ist.
offloaded_resolution_of_private-address
(Veraltet)
1 Oktett BT-Chip-Fähigkeit von RPA.
Wenn es von einem Chip unterstützt wird, muss es vom Host aktiviert werden.
0 = Nicht fähig
1 = fähig

Reserviert nach v0.98.
Dieser Parameter ist in der Google-Feature-Spezifikation v0.98 und höher veraltet und wird durch die Datenschutzfunktion ersetzt, die in der BT-Spezifikation Version 4.2 und höher verfügbar ist.
total_scan_results_storage 2 Oktette Speicher für Scanergebnisse in Bytes
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 die Meldung von Aktivitäts- und Energieinformationen
0 = Nicht fähig
1 = fähig
version_supported 2 Oktette Gibt die Version der unterstützten Google-Feature-Spezifikation an
Byte[0] = Hauptzahl
Byte[1] = Nebenzahl

v1.04
Byte[0] = 0x01
Byte[1] = 0x04
total_num_of_advt_tracked 2 Oktette Gesamtzahl der Werbetreibenden, die für OnLost / OnFound -Zwecke verfolgt werden
extended_scan_support 1 Oktett Unterstützt erweitertes Scanfenster und -intervall
debug_logging_supported 1 Oktett Unterstützt die Protokollierung binärer Debug-Informationen vom Controller
LE_address_generation_offloading_support
(Veraltet)
1 Oktett 0 = Nicht unterstützt
1 = Unterstützt

Reserviert nach v0.98.
Dieser Parameter ist in der Google-Feature-Spezifikation v0.98 und höher veraltet und wird durch die Datenschutzfunktion ersetzt, 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 fähig
1 = fähig
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 stoppen )
0 = Nicht unterstützt
1 = Unterstützt

Stapelung von Scanergebnissen

Ein Designziel besteht darin, die Art und Weise zu verbessern, wie die Bluetooth LE Scan Response-Ereignisbenachrichtigungen an den Host übermittelt werden, um Strom im Host zu sparen.

Indem reduziert wird, wie oft der Controller den Host-Anwendungsprozessor über Scan-Ergebnisse benachrichtigt, kann der Host-Anwendungsprozessor länger im Leerlauf/Ruhezustand bleiben. Dadurch wird der Stromverbrauch im Host reduziert. Der Rückgabeparameter total_scan_results_storage von LE_Get_Vendor_Capabilities_Command gibt die Chipfähigkeit für die Speicherung von Scanergebnissen an.

Diese Funktion konzentriert sich auf die Verwaltung und Konfiguration der Speicherfunktion für LE-Scan-Ergebnisse im Bluetooth-Controller. Der Speicher wird zum vorübergehenden Stapeln von Werbedaten sowie zum Scannen von Daten und Metadaten verwendet, die vom Controller zur späteren Übermittlung an den Host empfangen werden.

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

  • Gekürzt. Enthält die folgenden Informationselemente: {MAC, TX Power, RSSI, Timestamp}
  • Voll. 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 – Legen Sie die Speicherparameter für den Stapelscan fest
0x3 – Batch-Scan-Parameter festlegen
0x4 – Batch-Scan-Ergebnisparameter lesen

Für diesen Befehl wird ein Command Complete-Ereignis generiert. Durch die Aktivierung 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 – Legen Sie die Speicherparameter für den Stapelscan fest
0x3 – Batch-Scan-Parameter festlegen
0x4 – Batch-Scan-Ergebnisparameter lesen

LE_Batch_Scan_Command: Kundenspezifische Funktion aktivieren

Sub-OCF: 0x01

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

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

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“.
Batch_Scan_opcode 1 Oktett 0x1 – Kundenspezifische Funktion aktivieren
0x2 – Legen Sie die Speicherparameter für den Stapelscan fest
0x3 – Batch-Scan-Parameter festlegen
0x4 – Batch-Scan-Ergebnisparameter lesen

LE_Batch_Scan_Command: Unterbefehl „Batch Scan Storage Param“ festlegen

Sub-OCF: 0x02

Unterbefehlsparameter Größe Zweck
Batch_Scan_Full_Max 1 Oktett Maximaler Speicherplatz (in %), der dem vollständigen Stil zugewiesen ist
[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 Richten Sie die Benachrichtigungsebene (in %) für den einzelnen Speicherpool ein
[Bereich: 0-100]
Durch die Einstellung 0 wird die Benachrichtigung deaktiviert. Es wird ein herstellerspezifisches HCI-Ereignis generiert (Unterereignis „Verletzung des Speicherschwellenwerts“).

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

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

LE_Batch_Scan_Command: Unterbefehl „Batch Scan Param“ festlegen

Sub-OCF: 0x03

Unterbefehlsparameter Größe Zweck
Batch_Scan_Mode 1 Oktett 0x00 – Batch-Scan ist deaktiviert
0x01 – Der verkürzte Modus ist aktiviert
0x02 – Vollmodus ist aktiviert
0x03 – Der verkürzte und der vollständige Modus sind aktiviert
Duty_cycle_scan_window 4 Oktette Batch-Scan-Scanzeit (Anzahl der Steckplätze)
Duty_cyle_scan_interval 4 Oktette Batch-Scan-Intervallzeitraum (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

Dieser Unterbefehl startet den Stapelscan, sofern aktiviert. Beim verkürzten Scannen werden die Ergebnisse in verkürzter Form gespeichert, wobei der eindeutige Schlüssel für den verkürzten Stil = { BD_ADDR, scan_interval} ist. Dies bedeutet, dass für jedes Scanintervall nur ein BD_ADDR will . Der für den verkürzten Modus aufzubewahrende Datensatz lautet wie folgt: { BD_ADDR , Tx Power, RSSI, Timestamp}

Wenn der Vollmodus aktiviert ist, wird das aktive Scannen verwendet und Scan-Antworten werden aufgezeichnet. Der eindeutige Schlüssel im Vollformat = {MAC, Ad packet}, unabhängig vom Scanintervall. Der für den Vollmodus aufzubewahrende Datensatz ist { BD_ADDR , Tx Power, RSSI, Timestamp, Ad packet, Scan Response}. Im Full-Stil wird dasselbe AD-Paket, wenn es in verschiedenen Scan-Intervallen mehrmals gesehen wird, nur einmal aufgezeichnet. Im verkürzten Modus ist jedoch die Sichtbarkeit von BA_ADDR über verschiedene Scan-Intervalle hinweg von Interesse (einmal pro Scan-Intervall). Der RSSI ist der Durchschnittswert aller Duplikate einer eindeutigen Anzeige innerhalb eines Scanintervalls.

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

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

LE_Batch_Scan_Command: Unterbefehl „Batch-Scan-Ergebnisse lesen“.

Sub-OCF: 0x04

Unterbefehlsparameter Größe Zweck
Batch_Scan_Data_read 1 Oktett 0x01 – Daten im verkürzten Modus
0x02 – Vollmodusdaten

Für diesen Befehl wird ein Command Complete-Ereignis generiert. Wenn der Host diesen Befehl ausgibt, passen möglicherweise nicht alle Ergebnisse im Controller in ein Command Complete-Ereignis. Der Host wiederholt die Ausgabe dieses Befehls, bis die entsprechenden Ergebnisse im Ereignis „Befehl abgeschlossen“ eine Anzahl von Datensätzen von 0 anzeigen. Dies bedeutet, dass der Controller keine weiteren Datensätze zur Kommunikation mit dem Host hat. Jedes Command Complete-Ereignis könnte mehrere Datensätze nur eines Datentyps (vollständig oder gekürzt) enthalten.

Controller- und Host-Zeitreferenzen sind nicht synchronisiert. Die Einheit des Zeitstempels beträgt 50 ms. Der Wert des Zeitstempels basiert darauf, wann der Read_Batch_Scan_Results_Sub_cmd vom Host bereitgestellt wird. Wenn eine Befehlsankunftszeit in der Firmware T_c ist, dann ist die tatsächliche Zeit, zu der der Zeitstempel in der Firmware erfasst wurde, T_fw . Die Berichtszeit beträgt: ( T_cT_fw ). T_c und T_fw liegen im Firmware-Zeitbereich. Dadurch 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 Identifiziert das Format (gekürzt oder vollständig)
num_of_records 1 Oktett Anzahl der Datensätze von Batch_Scan_data_read
format_of_data Variable Abgeschnittener Modus:
Adresse[0]: 6 Oktette
Address_Type[0]: 1 Oktett
Tx_Pwr[0]: 1 Oktett
RSSI[0]: 1 Oktett
Zeitstempel[0]: 2 Oktette
[mehrere Datensätze ( num_of_records ) mit obigem Format]

Vollmodus:
Adresse[0]: 6 Oktette
Address_Type[0]: 1 Oktett
Tx_Pwr[0]: 1 Oktett
RSSI[0]: 1 Oktett
Zeitstempel[0]: 2 Oktette
Adv packet_len[0]: 1 Oktett
Adv_packet[0]: Adv_packet_len Oktette
Scan_data_resp_len[0]: 1 Oktett
Scan_data_resp[0]: Scan_data_resp -Oktette
[mehrere Datensätze mit obigem Format ( num_of_records )]

Inhaltsfilter für Werbepakete

Verwenden Sie dies, um den Advertising Packet Content Filter (APCF) im Controller zu aktivieren/deaktivieren/einzustellen. APCF filtert Werbeberichte im Controller, jedoch keine periodische Werbung.

LE_APCF_Command

OCF: 0x157

Befehlsparameter Größe Zweck
APCF_opcode 1 Oktett 0x00 – APCF-Aktivierung
0x01 – APCF Filterparameter festlegen
0x02 – APCF-Broadcaster-Adresse
0x03 – APCF-Dienst-UUID
0x04 – APCF-Dienstanfrage-UUID
0x05 – Lokaler APCF-Name
0x06 – APCF-Herstellerdaten
0x07 – APCF-Dienstdaten
0x08 – APCF-Transporterkennungsdienst
0x09 – APCF AD-Typfilter
0x10 ~ 0xAF – Reserviert für zukünftige Verwendung
0xB0 ~ 0xDF – Für den Anbieter reserviert
0xE0 ~ 0xFE – Reserviert für zukünftige Verwendung
0xFF – APCF Erweiterte Funktionen lesen

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

Rückgabeparameter Größe Zweck
Status 1 Oktett Rückgabestatus
APCF_opcode 1 Oktett 0x00 – APCF-Aktivierung
0x01 – APCF Filterparameter festlegen
0x02 – APCF-Broadcaster-Adresse
0x03 – APCF-Dienst-UUID
0x04 – APCF-Dienstanfrage-UUID
0x05 – Lokaler APCF-Name
0x06 – APCF-Herstellerdaten
0x07 – APCF-Dienstdaten
0x08 – APCF-Transporterkennungsdienst
0x09 – APCF AD-Typfilter
0x10 ~ 0xAF – Reserviert für zukünftige Verwendung
0xB0 ~ 0xDF – Für den Anbieter reserviert
0xE0 ~ 0xFE – Reserviert für zukünftige Verwendung
0xFF – APCF Erweiterte Funktionen lesen

LE_APCF_Command: Enable_sub_cmd

Sub-OCF: 0x00

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

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

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

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

Unterbefehlsparameter Größe Zweck
APCF_Action 1 Oktett 0x00 – Hinzufügen
0x01 – Löschen
0x02 – Klar
Durch Löschen wird der spezifische Filter zusammen mit den zugehörigen Feature-Einträgen in anderen Tabellen gelöscht.
Clear löscht alle Filter und zugehörigen Einträge in anderen Tabellen.
APCF_Filter_Index 1 Oktett Filterindex (0, max_filter-1 )
APCF_Feature_Selection 2 Oktette Bitmasken für die ausgewählten Features:
Bit 0: Wird gesetzt, um den Broadcast-Adressfilter zu aktivieren
Bit 1: Wird gesetzt, um den Servicedatenänderungsfilter zu aktivieren
Bit 2: Wird gesetzt, um die Dienst-UUID-Prüfung zu aktivieren
Bit 3: Wird gesetzt, um die Überprüfung der Service Solicitation UUID zu aktivieren
Bit 4: Wird gesetzt, um die Überprüfung des lokalen Namens zu aktivieren
Bit 5: Wird gesetzt, um die Herstellerdatenprüfung zu aktivieren
Bit 6: Wird gesetzt, um die Servicedatenprüfung zu aktivieren
Bit 7: Zum Aktivieren der Transport Discovery Service Check gesetzt
Bit 8: Wird gesetzt, um die AD-Typprüfung zu aktivieren
APCF_List_Logic_Type 2 Oktette Logische Operation für jede in APCF_Feature_Selection angegebene Feature-Auswahl (pro Bit-Position).
Nur gültig, wenn eine Funktion aktiviert ist.
Bitpositionswert:
0: ODER
1: UND
Wenn die „AND“-Logik ausgewählt ist, passiert ein ADV-Paket den Filter nur dann, wenn es ALLE Einträge in der Liste enthält.
Wenn die „OR“-Logik ausgewählt ist, passiert ein ADV-Paket den Filter, 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 N/A für die ersten drei Felder von APCF_Feature_Selection , was immer eine „AND“-Logik ist. Sie gelten nur für (Bit 3 – Bit 6) vier Felder von APCF_Feature_Selection .
rssi_high_thresh 1 Oktett [in dBm]
Der Werbetreibende gilt nur dann als gesehen, wenn das Signal höher als der obere RSSI-Schwellenwert ist. Andernfalls muss sich die Firmware so verhalten, als hätte sie es 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]
Es ist Zeit, dass die Firmware verweilt und zusätzliche Werbung sammelt, bevor sie meldet.
onfound_timeout_cnt 1 Oktett Nur gültig, wenn delivery_mode on_found ist.
[zählen]
Wenn eine Anzeige in onFound für die onfound_timeout Dauer in der Firmware verbleibt, werden einige Anzeigen erfasst und die Anzahl überprüft. Wenn die Anzahl onfound_timeout_cnt überschreitet, wird sofort danach OnFound gemeldet.
rssi_low_thresh 1 Oktett Nur gültig, wenn delivery_mode on_found ist.
[in dBm]
Das Advertiser-Paket gilt als nicht gesehen, wenn der RSSI des empfangenen Pakets nicht über dem unteren RSSI-Schwellenwert liegt.
onlost_timeout 2 Oktette Nur gültig, wenn delivery_mode on_found ist.
[in Millisekunden]
Wenn eine Anzeige nach dem Auffinden für den Zeitraum lost_timeout nicht zusammenhängend angezeigt wird, wird sie sofort als verloren gemeldet.
num_of_tracking_entries 2 Oktette Nur gültig, wenn delivery_mode on_found ist.
[zählen]
Gesamtzahl der Werbetreibenden, die pro Filter verfolgt werden sollen.

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

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

Filterung, Stapelverarbeitung und Berichterstellung sind miteinander verbundene Konzepte. Jede Anzeige und die zugehörige Scan-Antwort müssen nacheinander alle Filter durchlaufen. Daher sind die daraus resultierenden Aktionen ( delivery_mode ) eng mit der Filterung verknüpft. Die Übermittlungsmodi sind die folgenden: report_immediately , batch und onFound . Der OnLost -Wert steht in dem Sinne mit OnFound in Zusammenhang, dass er nach OnFound kommt, wenn er verloren geht.

Dieser Verarbeitungsablauf stellt das konzeptionelle Modell dar:

Wenn ein Advertisement-Frame (oder Scan-Antwort-Frame) empfangen wird, wird dieser auf alle Filter der Reihe nach angewendet. Es ist möglich, dass eine Anzeige eine sofortige Meldung basierend auf einem Filter und eine Stapelung desselben aufgrund einer anderen Filteraktion auslösen kann.

Schwellenwerte auf RSSI-Ebene (hoch und niedrig) ermöglichen die Steuerung, wann der Frame für die Filterverarbeitung sichtbar ist, selbst wenn ein gültiges Paket vom Controller empfangen wird. Wenn der Liefermodus auf „Sofort“ oder „Batch“ eingestellt ist, wird der RSSI eines Frames für die weitere Controller-Verarbeitung berücksichtigt. Unterschiedliche Apps erfordern unterschiedliche Berichts- und Stapelverarbeitungsverhalten. Dies ermöglicht mehreren Apps gleichzeitig eine direkte Berichterstellung und/oder Stapelverarbeitung von Ergebnissen in der Firmware. Ein Beispiel ist ein Fall, in dem ein Batch-Scan von einer App aus aktiv ist und später ein regulärer LE-Scan von einer anderen App ausgegeben wird. Bevor ein Batch-Scan durchgeführt wird, setzt das Framework/die App entsprechende Filter. Wenn später die zweite App einen regulären Scan durchführt, wird die vorherige Stapelverarbeitung fortgesetzt. Aufgrund des regulären Scans ähnelt dies jedoch konzeptionell dem Hinzufügen eines Nullfilters (zusammen mit allen vorhandenen Filtern) zusammen mit dem LE-Scan-Befehl. Die Parameter des LE-Scan-Befehls haben Vorrang, wenn sie aktiv sind. Wenn der reguläre LE-Scan deaktiviert ist, kehrt der Controller zu einem vorherigen Batch-Scan zurück, sofern dieser vorhanden war.

Der OnFound Liefermodus basiert auf konfigurierten Filtern. Eine Kombination, die den Erfolg einer Filteraktion auslöst, wird als die Entität betrachtet, die für onLost verfolgt werden soll. Das entsprechende Ereignis ist das LE Advt-Tracking-Unterereignis.

Der OnFound/OnLost -Übergang für einen Filter (sofern aktiviert) sieht wie folgt aus:

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

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

LE_APCF_Command: Broadcast_address_sub_cmd

Dieser Unterbefehl wird zum Hinzufügen oder Löschen einer Werbetreibendenadresse oder zum Löschen der Werbetreibendenadressliste für die On-Chip-Filterung verwendet.

Sub-OCF: 0x02

Unterbefehlsparameter Größe Zweck
APCF_Action 1 Oktett 0x00 – Hinzufügen
0x01 – Löschen
0x02 – Klar
Durch Löschen wird die angegebene Senderadresse im angegebenen Filter gelöscht.
Clear löscht alle Senderadressen im angegebenen Filter.
APCF_Filter_Index 1 Oktett Filterindex (0, max_filter-1 )
APCF_Broadcaster_Address 6 Oktett 6-Byte-Geräteadresse zum Hinzufügen oder Löschen aus der Adressliste des Senders
APCF_Application_Address_type 1 Oktett 0x00: Öffentlich
0x01: Zufällig
0x02: NA (Adresstyp nicht anwendbar)

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

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“.
APCF_opcode 1 Oktett 0x02 – APCF-Broadcaster-Adresse
APCF_Action 1 Oktett APCF_Action des Echo-Back-Befehls
APCF_AvailableSpaces 1 Oktett Anzahl der noch verfügbaren freien Einträge in der Broadcast-Adresstabelle

LE_APCF_Command: service_uuid_sub_cmd

Dieser Unterbefehl wird zum Hinzufügen oder Löschen einer Dienst-UUID oder zum Löschen einer Dienst-UUID-Liste für die On-Chip-Filterung verwendet.

Sub-OCF: 0x03

Unterbefehlsparameter Größe Zweck
APCF_Action 1 Oktett 0x00 – Hinzufügen
0x01 – Löschen
0x02 – Klar
Durch Löschen wird die angegebene Dienst-UUID-Adresse im angegebenen Filter gelöscht.
Clear löscht alle Dienst-UUIDs im angegebenen Filter.
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 sollte die gleiche Länge wie APCF_UUID.

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

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

LE_APCF_Command: solicitation_uuid_sub_cmd

Dieser Unterbefehl wird verwendet, um eine Solicitation-UUID hinzuzufügen oder zu löschen oder um eine Solicitation-UUID-Liste für die On-Chip-Filterung zu löschen.

Sub-OCF: 0x04

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

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

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“.
APCF_opcode 1 Oktett 0x04 – APCF-Solicitation-UUID
APCF_Action 1 Oktett APCF_Action des Echo-Back-Befehls
APCF_AvailableSpaces 1 Oktett Anzahl der noch verfügbaren freien Einträge in der Solicitation-UUID-Tabelle

LE_APCF_Command: local_name_sub_cmd

Dieser Unterbefehl wird verwendet, um eine lokale Namenszeichenfolge hinzuzufügen oder zu löschen oder die Liste der lokalen Namenszeichenfolgen für die On-Chip-Filterung zu löschen.

Sub-OCF: 0x05

Unterbefehlsparameter Größe Zweck
APCF_Action 1 Oktett 0x00 – Hinzufügen
0x01 – Löschen
0x02 – Klar
Löschen löscht die angegebene lokale Namenszeichenfolge im angegebenen Filter.
Clear löscht alle lokalen Namenszeichenfolgen im angegebenen Filter.
APCF_Filter_Index 1 Oktett Filterindex (0, max_filter -1)
APCF_LocName_Mandata_or_SerData Variable Größe Eine Zeichenfolge für den lokalen Namen.

Anmerkungen:
  • Derzeit beträgt die maximale Anzahl von Zeichen in einer lokalen Namenszeichenfolge 29
  • Nicht anwendbar, wenn die Aktion „Löschen“ (0x2) ist.

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

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“.
APCF_opcode 1 Oktett 0x05 – Lokaler APCF-Name
APCF_Action 1 Oktett APCF_Action des Echo-Back-Befehls
APCF_AvailableSpaces 1 Oktett Anzahl der noch verfügbaren freien Einträge in der lokalen Namenstabelle

LE_APCF_Command: manf_data_sub_cmd

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

Sub-OCF: 0x06

Unterbefehlsparameter Größe Zweck
APCF_Action 1 Oktett 0x00 – Hinzufügen
0x01 – Löschen
0x02 – Klar
Löschen löscht die angegebene Herstellerdatenzeichenfolge im angegebenen Filter.
Clear löscht alle Herstellerdatenzeichenfolgen im angegebenen Filter.
APCF_Filter_Index 1 Oktett Filterindex (0, max_filter -1)
APCF_LocName_Mandata_or_SerData Variable Größe Eine Zeichenfolge für Herstellerdaten.

Anmerkungen:
  • Derzeit beträgt die maximale Anzahl von Zeichen in einer lokalen Namenszeichenfolge 29
  • Nicht anwendbar, wenn die Aktion „Löschen“ (0x2) ist.
APCF_ManData_Mask Variable Größe Die Herstellerdatenmaske, die der Liste hinzugefügt werden soll. Es sollte die gleiche Länge wie APCF_LocName_or_ManData_or_SerData haben.

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

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“.
APCF_opcode 1 Oktett 0x06 – APCF-Herstellerdaten
APCF_Action 1 Oktett APCF_Action des Echo-Back-Befehls
APCF_AvailableSpaces 1 Oktett Anzahl der noch verfügbaren freien Einträge in der Herstellerdatentabelle

LE_APCF_Command: service_data_sub_cmd

Dieser Unterbefehl wird zum Hinzufügen oder Löschen einer Dienstdatenzeichenfolge oder zum Löschen der Dienstdatenzeichenfolgeliste für die On-Chip-Filterung verwendet.

Sub-OCF: 0x07

Unterbefehlsparameter Größe Zweck
APCF_Action 1 Oktett 0x00 – Hinzufügen
0x01 – Löschen
0x02 – Klar
„Löschen“ löscht die angegebene Dienstdatenzeichenfolge im angegebenen Filter.
Clear löscht alle Dienstdatenzeichenfolgen im angegebenen Filter.
APCF_Filter_Index 1 Oktett Filterindex (0, max_filter -1)
APCF_LocName_Mandata_or_SerData Variable Größe Eine Zeichenfolge für Dienstdaten.

Anmerkungen:
  • Derzeit beträgt die maximale Anzahl von Zeichen in einer lokalen Namenszeichenfolge 29
  • Nicht anwendbar, wenn die Aktion „Löschen“ (0x2) ist.
APCF_LocName_Mandata_or_SerData_Mask Variable Größe Die Dienstdatenmaske, die zur Liste hinzugefügt werden soll. Es sollte die gleiche Länge haben wie APCF_LocName_or_ManData_or_SerData.

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

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

LE_APCF_Command: ad_type_sub_cmd

Dieser Unterbefehl wird verwendet, um einen AD-Typ hinzuzufügen oder zu löschen oder eine AD-Typliste für die On-Chip-Filterung zu löschen. Verwenden Sie read_extended_features_sub_cmd um zu überprüfen, ob dieser Befehl unterstützt wird oder nicht.

Sub-OCF: 0x09

Unterbefehlsparameter Größe Zweck
APCF_Action 1 Oktett 0x00 – Hinzufügen
0x01 – Löschen
0x02 – Klar
Durch Löschen wird der angegebene AD-Typ im angegebenen Filter gelöscht.
Clear löscht alle AD-Typen im angegebenen Filter.
APCF_Filter_Index 1 Oktett Filterindex (0, max_filter -1)
APCF_AD_TYPE 1 Oktett Der AD-Typ zum Hinzufügen oder Löschen aus der Liste. Ignorieren, wenn APCF_Action 0x02 ist (Löschen)
APCF_AD_DATA_Length Variable Größe 0x00 – bedeutet, dass Dateninhalte nicht gefiltert werden
Ignorieren, wenn APCF_Action 0x02 ist (Löschen)
APCF_AD_DATA Variable Größe Ignorieren, wenn APCF_Action 0x02 ist (Löschen)
APCF_AD_DATA_MASK Variable Größe Ignorieren, wenn APCF_Action 0x02 ist (Löschen)
Es sollte die gleiche Länge wie APCF_AD_DATA haben.

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

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“.
APCF_opcode 1 Oktett 0x09 – APCF AD-Typ
APCF_Action 1 Oktett APCF_Action des Echo-Back-Befehls
APCF_AvailableSpaces 1 Oktett Anzahl der noch verfügbaren freien Einträge in der AD-Typ-Tabelle

LE_APCF_Command: read_extended_features_sub_cmd

Dieser Unterbefehl wird zum Lesen erweiterter APCF-Funktionen verwendet.

Sub-OCF: 0xFF

Unterbefehlsparameter Größe Zweck
Unzutreffend Leerer Befehlsparameter.

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

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

Unterstützte Bitmasken für erweiterte Funktionen:

  • Bit 0: Transport Discovery Service-Filter unterstützen
  • Bit 1: AD-Typfilter unterstützen
  • Bit 2 ~15: Reserviert für zukünftige Verwendung

Wert des Bits

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

Steuerungsaktivität und Energieinformationsbefehl

Der Zweck dieser Informationen besteht darin, dass höhere Hostsystemfunktionen die gesamten Aktivitäten aller Komponenten, einschließlich des BT-Controllers und seines Makrostatus, in Verbindung mit den Vorgängen in den Apps und im Framework analysieren. Hierzu werden folgende Informationen vom BT-Stack und dem Controller benötigt:

  • BT-Stack: Meldet den aktuellen Makrobetriebszustand des Controllers
  • Firmware: Meldung aggregierter Aktivitäts- und Energieinformationen

Makrozustände des BT-Host-Stacks, wie auf Benutzerebene festgelegt:

  • Leerlauf: [Seitenscan, LE-Advt, Anfragescan]
  • Scan: [Paging/Anfrage/Verbindungsversuch]
  • Aktiv: [ACL-Link aktiv, SCO-Link aktiv, Sniff-Modus]

Die Aktivitäten, die der Controller während seiner gesamten Lebensdauer verfolgt, sind Sendezeit, Empfangszeit, Leerlaufzeit und insgesamt verbrauchte Energie. Sie werden beim Lesen vom Host gelöscht.

LE_Get_Controller_Activity_Energy_Info

Dies ist ein herstellerspezifischer Befehl.

OCF: 0x159

Unterbefehlsparameter Größe Zweck
N / A Leere Befehlsparameter

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

Rückgabeparameter Größe Zweck
Status 1 Oktett Status „Befehl abgeschlossen“.
total_tx_time_ms 4 Oktette Gesamtzeit für die Durchführung von Tx
total_rx_time_ms 4 Oktette Gesamtzeit für die Durchführung von Rx
total_idle_time_ms 4 Oktette Gesamtzeit im Leerlauf (Nicht-Ruhezustand mit geringem Stromverbrauch)
total_energy_used 4 Oktette Gesamtenergieverbrauch [Produkt aus Strom (mA), Spannung (V) und Zeit (ms)]

LE erweiterter Befehl zum Festlegen der Scan-Parameter

Mit diesem Befehl kann ein größeres Scanfenster und -intervall im Controller aktiviert werden. Gemäß der BT Core 5.2-Spezifikation haben ein Scanfenster und ein Scanintervall eine Obergrenze von 10,24 Sekunden, was längere Scanintervalle von Anwendungen über 10,24 Sekunden hinaus behindert.

Basisreferenz: 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 sollen keine SCAN_REQ Pakete gesendet werden (Standard).
0x01 – Aktiver Scan. Es können SCAN_REQ Pakete gesendet werden.
LE_Ex_Scan_Interval 4 Oktette Definiert als das Zeitintervall vom Start des letzten LE-Scans des Controllers bis zum Beginn des darauffolgenden LE-Scans.
Bereich: 0x0004 bis 0x00FFFFFF
Standard: 0x0010 (10 ms)
Zeit = N * 0,625 ms
Zeitbereich: 2,5 ms bis 10442,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 Ankündigungspakete akzeptieren (Standard). Gezielte Werbepakete, die nicht für dieses Gerät adressiert sind, werden ignoriert.
0x01 – Werbepakete von Geräten ignorieren, die nicht in der Liste „Nur weiße Liste“ enthalten sind. Gezielte Werbepakete, die nicht für dieses Gerät adressiert sind, werden ignoriert.

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

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

Befehl „Controller-Debug-Info abrufen“.

Das Ziel dieses Informationselements besteht darin, Controller-Debug-Informationen von einem Host in binärer Form zur Nachbearbeitung und Analyse abzurufen. Dies hilft beim Debuggen von Problemen vor Ort und bietet Ingenieuren ein Toolkit zum Protokollieren von Informationen zur Analyse. Ein Controller kann die Informationen bereitstellen, wenn er von einem Host über das Ereignis (Controller-Debug-Info-Unterereignis) angefordert wird, oder autonom, wenn der Controller dies wünscht. Beispielanwendungen könnten das Melden von Firmware-Statusinformationen, Crash-Dump-Informationen, Protokollierungsinformationen usw. sein.

OCF: 0x15B

Befehlsparameter Größe Zweck
N / A Leere Befehlsparameterliste

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

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

A2DP-Hardware-Offload-Unterstützung

Die A2DP-Offload-Funktion unterstützt die Auslagerung des A2DP-Audiokodierungsprozesses auf einen an den BT-Controller angeschlossenen Audioprozessor. Der codierte Audiodatenstrom 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 stehen zwei Versionen der Befehle zur Verfügung. 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-Offload starten (Legacy)

Sub-OCF: 0x01

Verwenden Sie diesen Befehl sowohl zum Konfigurieren des A2DP-Offload-Prozesses als auch zum Starten des A2DP-Streams.

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 die Spülung.
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 - 44100 Hz
0x02 - 48000 Hz
0x04 - 88200 Hz
0x08 - 96000 Hz
Bits_Per_Sample 1 Oktett 0x01 – 16 Bit pro Probe
0x02 – 24 Bit pro Probe
0x04 – 32 Bit pro Probe
Channel_Mode 1 Oktett 0x01 – Mono
0x02 – Stereo
Encoded_Audio_Bitrate 4 Oktette Die codierte Audiobitrate in Bits pro Sekunde.
0x00000000 – Die Audio-Bitrate ist nicht angegeben/nicht verwendet.
0x00000001 – 0x00FFFFFF – kodierte Audio-Bitrate in Bits pro Sekunde.
0x01000000 – 0xFFFFFFFF – Reserviert.
Connection_Handle 2 Oktette Verbindungshandle 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, die codierte Audiopakete enthält
Codec_Information 32 Oktette Codec-spezifische Informationen.

SBC-Codec:

Weitere Informationen finden Sie in den SBC-Codec-spezifischen Informationselementen in A2DP v1.3.
Oktett 0: Blocklänge | Unterbänder | Zuordnungsmethode
Oktett 1: Minimaler Bitpool-Wert
Oktett 2: Maximaler Bitpool-Wert
Oktett 3: Abtastfrequenz | Kanalmodus
Oktett 4-31: reserviert

AAC-Codec:

Weitere Informationen finden Sie in den AAC-Codec-spezifischen Informationselementen 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: Bitratenindex:
0x00 – Hoch
0x01 – Mitte
0x02 – Niedrig
0x03 – 0x7E – Reserviert
0x7F – ABR (Adaptive Bitrate)
0x80 – 0xFF – Reserviert

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

Oktett 8-31: reserviert

Alle anderen Codecs:

Oktett 0-31: reserviert

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

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

Starten Sie den A2DP-Offload

Sub-OCF: 0x03

Verwenden Sie diesen Befehl sowohl zum Konfigurieren des A2DP-Offload-Prozesses als auch zum Starten des A2DP-Streams.

Befehlsparameter Größe Zweck
Connection Handle 2 Oktette Handle der aktiven HCI-Verbindung
L2CAP_Channel_ID 2 Oktette Kennung des für A2DP-Streaming geöffneten L2CAP-Kanals
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, ausgehandelt mit dem Peer.
CP_Enable_SCMS_T 1 Oktett 0x00 – SCMS-T-Inhaltsschutz-Header deaktivieren
0x01 – SCMS-T Content Protection Header aktivieren
CP_Header_SCMS_T 1 Oktett Wenn der SCMS-T Content Protection Header aktiviert ist ( CP_SCMS_T_Enable auf 0x01 gesetzt), wird der Headerwert definiert, der dem Audioinhalt vorangeht (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 herstellerspezifischen 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 Herstellerspezifische Parameter, die von Bluetooth Audio HAL bereitgestellt werden, CodecParameters.vendorSpecificParameters[] .

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

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

A2DP-Offload stoppen (Legacy)

Sub-OCF: 0x02

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

Befehlsparameter Größe Zweck
N / A Leere Befehlsparameterliste.

Für diesen Befehl sind keine Parameter definiert.

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

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

Stoppen Sie den A2DP-Offload

Sub-OCF: 0x04

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

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

Für diesen Befehl wird ein komplettes Befehlsereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Befehl vollständiger Status
Sub_Opcode 1 Oktett 0x04 - A2DP -Offload stoppen

Befehl Bluetooth Quality Report

Die Befehlsfunktion des BT -Qualitätsberichts 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 einen mit Link-Qualitätsbezogenen BQR-Sub-Ereignis an den Host.
  • Annäherung an LSTO: Wenn länger als die Hälfte des Link Supervision Timeout (LSTO) keine Pakete von dem angeschlossenen BT -Gerät empfangen werden, meldet der Controller ein Annäherungs -LSTO -Ereignis an den Host.
  • A2DP -Audio abgehackt: Wenn der Controller Faktoren erkennt, die abgehacktes Audio verursachen, meldet der Controller dem Host ein A2DP -Audio -Ereignis.
  • (e) SCO Voice abgehackt: Wenn der Controller Faktoren erkennt, die eine abgehackte Stimme verursachen, meldet der Controller dem Host eine (e) SCO -Sprache abgehackt.
  • Wurzelentzündung: Dieses Ereignis wird vom Controller an den Stapel gesendet, wenn der HAL oder der Controller auf einen tödlichen Fehler stoßen und Bluetooth neu starten muss.
  • LMP/LL -Nachrichtenverfolgung: Der Controller sendet die LMP/LL -Nachricht Handshake mit dem Remote -Gerät an den Host.
  • Bluetooth Multi-Profile/Coex-Planungsverfolgung: Der Controller sendet seine Planungsinformationen zur Behandlung mehrerer Bluetooth-Profile und der drahtlosen Koexistenz im 2,4-GHz-Band an den Host.
  • Controller-Debug-Informationsmechanismus: Wenn es aktiviert ist, kann der Controller die Debug-Protokollierungsinformationen autonom über den Controller-Debug-Info-Sub-Event an den Host melden.

OCF: 0x15e

Befehlsparameter Größe Zweck
BQR_Report_Action 1 Oktett Aktion zum Hinzufügen / Löschen von Bericht von Qualitätsereignissen (n) in BQR_QUALITY_EVENT_MASK -Parameter festgelegt oder alles löschen.

0x00 - Hinzufügen
0x01 - Löschen
0x02 - klar

Löschen Sie die Berichterstattung über bestimmte Qualitätsereignisse (n).
Clear wird alle Qualitätsereignisse berichten (BQR_Quality_Event_mask kann ignoriert werden).

BQR_Quality_Event_Mask 4 Oktetten Bitmasken für die ausgewählte Qualitätsereignisberichterstattung.

Bit 0: Setzen Sie, um den Qualitätsüberwachungsmodus zu aktivieren.
Bit 1: Setzen Sie, um das Annäher an das LSTO -Ereignis zu ermöglichen (für ACL/(e) SCO/ISO).
Bit 2: Setzen Sie, um A2DP Audio abgehacktes Ereignis zu aktivieren.
Bit 3: Setzen Sie auf (e) SCO Voice abgehacktes Ereignis.
Bit 4: Setzen Sie, um Root Entzündungsereignis zu aktivieren.
Bit 5: So einstellen, um den Energieüberwachungsmodus zu aktivieren.
Bit 6: Setzen Sie, um Le Audio abgehacktes Ereignis zu aktivieren.
Bit 7: Setzen Sie, um Connect Fail Event zu aktivieren.
Bit 8 ~ 14: reserviert.
Bit 15: Eingestellt, um perbotspezifische Qualitätsereignisse zu aktivieren.
Bit 16: Setzen Sie, um die LMP/LL -Nachrichtenspur zu aktivieren.
Bit 17: Setzen Sie, um Bluetooth Multi-Link/Coex-Planungsspur zu aktivieren.
Bit 18: Eingestellt, um den Controller -Debug -Informationsmechanismus zu aktivieren.
Bit 19 ~ 30: reserviert.
Bit 31: Setzen Sie, um die per Anbieterspezifische Spur zu aktivieren.

BQR_Minimum_Report_Interval 2 Oktetten Definieren Sie das Mindestzeitintervall der Qualitätsereignisberichterstattung für die ausgewählten Qualitätsereignisse. Die Controller -Firmware sollte das nächste Ereignis innerhalb des definierten Zeitintervalls nicht melden. Die Intervalleinstellung muss für die qualitativ hochwertigen Ereignisse, die hinzugefügt werden, entspricht.

Einheit: MS
Standard: 0 (Keine Einschränkung für das Intervall.)
Bereich: 0 ~ 65535 ms

BQR_Vendor_Specific_Quality_Event_Mask 4 Oktetten Bitmasken für die ausgewählte anerkannter Qualitätsberichterstattung.
Dieser Parameter ist nur gültig, wenn Bit 15 von BQR_Quality_Event_Mask eingestellt ist.

Bit 0 ~ 31: reserviert.

BQR_Vendor_Specific_Trace_Mask 4 Oktetten Bitmasken für die ausgewählte Lieferantenberichterstattung.
Dieser Parameter ist nur gültig, wenn Bit 31 von BQR_Quality_Event_Mask festgelegt ist.

Bit 0 ~ 31: reserviert.

Für diesen Befehl wird ein komplettes Befehlsereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Befehl vollständiger Status
Current_Quality_Event_Mask 4 Oktetten Zeigt die aktuelle Bitmaskeneinstellung an.
Bit 0: Der Qualitätsüberwachungsmodus ist aktiviert.
Bit 1: Die Annäherung an die LSO -Ereignisberichterstattung ist aktiviert.
Bit 2: A2DP Audio, abgehackte Ereignisberichterstattung ist aktiviert.
Bit 3: (e) SCO Voice Cloppy Event Reporting ist aktiviert.
Bit 4: Die Berichterstattung über die Wurzelentzündungsereignis ist aktiviert.
Bit 5: Der Energieüberwachungsmodus ist aktiviert.
Bit 6: Die abgehackte Ereignisberichterstattung von Le Audio ist aktiviert.
Bit 7: Connect Fail Event.
Bit 8 ~ 14: reserviert.
Bit 15: Lieferantenspezifischer Qualitätsereignisberichterstattung ist aktiviert.
Bit 16: Die LMP/LL -Nachrichtenverfolgung ist aktiviert.
Bit 17: Bluetooth Multi-Link/Coex-Planungsverfolgung ist aktiviert.
Bit 18: Controller -Debug -Informationsmechanismus ist aktiviert.
Bit 19 ~ 30: reserviert.
Bit 31: Lieferantenspezifische Spur ist aktiviert.
Current_Vendor_Specific_Quality_Event_Mask 4 Oktetten Zeigt die aktuelle Bitmaskeneinstellung an.
Current_Vendor_Specific_Trace_Mask 4 Oktetten Zeigt die aktuelle Bitmaskeneinstellung an.

Befehl Dynamischer Audiopuffer

Der dynamische Audio -Puffer reduziert die Audiofehler, indem die Audio -Puffergröße im Bluetooth -Controller basierend auf verschiedenen Szenarien geändert wird.

OCF: 0x15f

Holen Sie sich Zeitfunktion von Audiopufferzeiten

Sub OCF: 0x01

Verwenden Sie diesen Befehl, um die Funktion der Audio -Puffer -Zeit vom Bluetooth -Controller abzurufen.

Befehlsparameter Größe Zweck
N / A Leere Befehlsparameterliste

Für diesen Befehl wird ein komplettes Befehlsereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Befehl vollständiger Status
Dynamic_Audio_Buffer_opcode 1 Oktett 0x01 - Erhalten Sie die Zeit für Audiopuffer
Audio_Codec_Type_Supported 4 Oktetten 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 Oktetten Standardpufferzeit des Bit 0 -Codec -Typs, angegeben in Audio_Codec_Type_Supported.
Dieser Wert muss 0 sein, wenn der Bit 0 -Codec -Typ nicht unterstützt wird.
Einheit: MS
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 2 Oktetten Maximale Pufferzeit des Bit 0 -Codec -Typs, angegeben in Audio_Codec_Type_Supported.
Dieser Wert muss 0 sein, wenn der Bit 0 -Codec -Typ nicht unterstützt wird.
Einheit: MS
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 2 Oktetten Minimale Pufferzeit des Bit 0 -Codec -Typs, angegeben in Audio_Codec_Type_Supported.
Dieser Wert muss 0 sein, wenn der Bit 0 -Codec -Typ nicht unterstützt wird.
Einheit: MS
Audio_Codec_Buffer_Default_Time_For_Bit_1 2 Oktetten Standardpufferzeit des Bit -1 -Codec -Typs, angegeben in Audio_Codec_Type_Supported.
Dieser Wert muss 0 sein, wenn der Bit 1 -Codec -Typ nicht unterstützt wird.
Einheit: MS
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 2 Oktetten Maximale Pufferzeit des Bit -1 -Codec -Typs, angegeben in Audio_Codec_Type_Supported.
Dieser Wert muss 0 sein, wenn der Bit 1 -Codec -Typ nicht unterstützt wird.
Einheit: MS
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 2 Oktetten Minimale Pufferzeit des Bit -1 -Codec -Typs, angegeben in Audio_Codec_Type_Supported.
Dieser Wert muss 0 sein, wenn der Bit 1 -Codec -Typ nicht unterstützt wird.
Einheit: MS
...... ...... ......
Audio_Codec_Buffer_Default_Time_For_Bit_31 2 Oktetten Standardpufferzeit des Bit 31 -Codec -Typs, angegeben in Audio_Codec_Type_Supported.
Dieser Wert muss 0 sein, wenn der Bit 31 -Codec -Typ nicht unterstützt wird.
Einheit: MS
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 2 Oktetten Maximale Pufferzeit des Bit 31 -Codec -Typs, angegeben in Audio_Codec_Type_Supported.
Dieser Wert muss 0 sein, wenn der Bit 31 -Codec -Typ nicht unterstützt wird.
Einheit: MS
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 2 Oktetten Mindestpufferzeit des Bit 31 -Codec -Typs, angegeben in Audio_Codec_Type_Supported.
Dieser Wert muss 0 sein, wenn der Bit 31 -Codec -Typ nicht unterstützt wird.
Einheit: MS

Setzen Sie die Zeit der Audiopuffer

Sub OCF: 0x02

Verwenden Sie diesen Befehl, um die Audio -Pufferzeit auf den Bluetooth -Controller festzulegen.

Befehlsparameter Größe Zweck
Audio_Codec_Buffer_Time 2 Oktetten Angeforderte Audio -Pufferzeit für den aktuellen verwendeten Codec.
Einheit: MS

Für diesen Befehl wird ein komplettes Befehlsereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Befehl vollständiger Status
Dynamic_Audio_Buffer_opcode 1 Oktett 0x02 - Audiopufferzeit einstellen
Audio_Codec_Buffer_Time 2 Oktetten Aktuelle Audiopufferzeit im Bluetooth -Controller.
Einheit: MS

HCI-Event (Lieferantenspezifisch)

In einigen Fällen sind herstellerspezifische HCI-Ereignisse erforderlich. Siehe Abbildung 5.4 auf Seite 1897 der BT Core 5.2 -Spezifikation. Der Ereignisparameter 0 enthält immer den ersten Sub-Event-Code, basierend auf dem Rest des HCI-Ereignisses dekodiert.

Ereignisparameter Größe Zweck
HCI_vendor_specific_event_code 1 Oktett 0xff
sub_event_code 1 Oktett Ein Sub-Event-Code ist 1 Oktett in Größe, das Byte unmittelbar nach der Parameterlänge im HCI-Ereignispaket.

Aufbewahrungsschwellenwertverlust-Sub-Event

Dieses Ereignis zeigt, dass die Speicherschwelle verletzt wurde.

Sub-Event-Code = 0x54

Sub-Event-Parameter Größe Zweck
Keiner

Le Multi-Advertierungs-Statusänderung Sub-Event

Diese Veranstaltung zeigt, dass eine Werbeinstanz ihren Staat verändert hat. Zu diesem Zeitpunkt wird diese Veranstaltung nur verwendet, um anzugeben, welche Werbeinstanz aufgrund einer Verbindung gestoppt wurde.

Sub-Event-Code = 0x55

Sub-Event-Parameter 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 Oktetten Identifiziert die Verbindung, die dazu führte, dass die advt -Instanz deaktiviert wurde (0xffff, falls sie ungültig).

Le-Anzeige-Verfolgung von Sub-Event

Diese Veranstaltung zeigt an, wann ein Werbetreibender gefunden oder verloren geht.

Sub -Ereigniscode = 0x56

Sub-Event-Parameter 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: Werbetreibungsinformationen ( Advt_Info ) vorhanden
0x01: Werbetreibungsinformationen ( Advt_Info ) nicht vorhanden
Advertiser_Address 6 Oktetten Ö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 Oktetten
Adv packet_len[0] : 1 Oktett
Adv_packet[0] : Adv_packet_len -Octets
Scan_data_resp_len[0] : 1 Oktett
Scan_data_resp[0] : Scan_data_resp -Octets

Controller-Debug-Info Sub-Event

Diese Veranstaltung wird von einem Controller verwendet, um einem Host binäre Debug -Informationen bereitzustellen.

Sub-Event-Code = 0x57

Sub-Event-Parameter Größe Zweck
debug_block_byte_offset_start 2 Oktetten Debugug Block Byte Offset von Anfang an
last_block 1 Oktett 0x00: Weitere Debug -Daten vorhanden
0x01: letzter binärer Block; Keine Debug -Daten mehr
cur_pay_load_sz 2 Oktetten Binärblockgröße in einem aktuellen Ereignis
Debug_Data Variable Debuggen Sie Daten von cur_payload_sz

Bluetooth Quality Report Sub-Event

Dieses Ereignis zeigt eine der folgenden: Ein Bluetooth-Qualitätsereignis, der Controller hat die LMP/LL-Nachricht Trace und Bluetooth Multi-Link/Coex-Scheduling-Trace oder die Debug-Informationsdaten von Controller hochgeladen.

Sub-Event-Parameter Größe Zweck
Quality_Report_Id 1 Oktett 0x01: Qualitätsberichterstattung über den Überwachungsmodus.
0x02: Annäherung an Lsto.
0x03: A2DP Audio abgehackt.
0x04: (e) Sco Voice abgehackt.
0x05 ~ 0x06: reserviert.
0x07: Le Audio abgehackt.
0x08: Connect Fail.
0x09 ~ 0xff: reserviert.
Packet_Types 1 Oktett 0x01: id
0x02: null
0x03: Umfrage
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 ~ 0x50: reserviert
0x51: ISO -Paket
0x52 ~ 0xff: reserviert
Connection_Handle 2 Oktetten ACL/(e) SCO/ISO -Verbindungsgriff.
Connection_Role 1 Oktett Rolle für die Verbindung führen.
0x00: zentral
0x01: peripher
0x02 ~ 0xff: reserviert.
TX_Power_Level 1 Oktett Aktuelle Übertragungsleistung für den angegebenen Connection_handle.

Dieser Wert muss dem Controller übereinstimmen, der auf den Befehl HCI_READ_TRANSMIT_POWER_LEVEL reagiert.

RSSI 1 Oktett [in DBM]

Empfangene Signalstärkeanzeige (RSSI) Wert für den angegebenen Connection_handle.
Dieser Wert muss ein absoluter Empfänger -Signalstärkewert sein.
Bereich: -127 bis +20

SNR 1 Oktett [in DB]

Signal-R-Rausch-Verhältnis (SNR) Wert für den angegebenen Connection_handle.
Der Controller muss den durchschnittlichen SNR aller von der Verbindung verwendeten Kanäle bereitstellen.

Unused_AFH_Channel_Count 1 Oktett Zeigt die Anzahl der nicht verwendeten Kanäle in afh_channel_map an.
0x4f ~ 0xff: reserviert.
AFH_Select_Unideal_Channel_Count 1 Oktett Zeigt die Anzahl der gestörten Kanäle an und hat eine schlechte Qualität, sie werden jedoch immer noch für AFH ausgewählt.
Die minimale Anzahl von Kanälen, die durch die Bluetooth -Spezifikation zulässig sind, beträgt 20. Selbst wenn alle 79 Kanäle gestört sind und eine schlechte Qualität aufweisen, muss der Controller noch mindestens 20 Kanäle für AFH auswählen.
LSTO 2 Oktetten Aktuelle Link -Überwachungs -Timeout -Einstellung.
Zeit = n * 0,625 ms
Zeitbereich: 0,625 ms bis 40,9 s
Connection_Piconet_Clock 4 Oktetten Piconet Clock für den angegebenen Connection_handle.
Dieser Wert muss mit dem Befehl hci_read_clock hci mit dem parameter "won_clock" von 0x01 (Piconet Clock) übereinstimmen, wie der Controller -Befehl des Controllers reagiert.
Einheit: N * 0,3125 ms (1 Bluetooth -Uhr)
Retransmission_Count 4 Oktetten Die Anzahl der Wiederholungen seit dem letzten Ereignis.
Diese Anzahl wird nach dem Bericht an den Host zurückgesetzt.
No_RX_Count 4 Oktetten Keine RX -Anzahl seit der letzten Veranstaltung.
Die Anzahl steigt, wenn auf dem geplanten Zeitfenster kein Paket eingeht oder das empfangene Paket beschädigt ist.
Diese Anzahl wird nach dem Bericht an den Host zurückgesetzt.
NAK_Count 4 Oktetten Nak (negative Anerkennung) zählt seit dem letzten Ereignis.
Diese Anzahl wird nach dem Bericht an den Host zurückgesetzt.
Last_TX_ACK_Timestamp 4 Oktetten Zeitstempel des letzten TX ACK. Es basiert auf der Bluetooth -Uhr des Piconet Central (CLK).
Einheit: N * 0,3125 ms (1 Bluetooth -Uhr)
Flow_Off_Count 4 Oktetten Die Häufigkeit, mit der der Controller seit dem letzten Ereignis den Fluss (Stopp) erhält.
Diese Anzahl wird nach dem Bericht an den Host zurückgesetzt.
Last_Flow_On_Timestamp 4 Oktetten Zeitstempel des letzten Flusses (GO). Es basiert auf der Bluetooth -Uhr des Piconet Central (CLK).
Einheit: N * 0,3125 ms (1 Bluetooth -Uhr)
Buffer_Overflow_Bytes 4 Oktetten [in Byte]

Pufferüberlaufzahl seit dem letzten Ereignis.
Der Controller zählt, wie viele Datenbytes fallen gelassen werden.
Diese Zählung wird nach der Berichterstattung an den Host zurückgesetzt.

Buffer_Underflow_Bytes 4 Oktetten [in Byte]

Puffer -Unterlaufzahl seit dem letzten Ereignis.
Diese Zählung wird nach der Berichterstattung an den Host zurückgesetzt.

bdaddr 6 Oktetten Remote -Geräteadresse
cal_failed_item_count 1 Oktett Die Anzahl der Kalibrierungen fehlgeschlagene Elemente
TX_Total_Packets 4 Oktetten Die Anzahl der Pakete, die verschickt werden.
TX_UnAcked_Packets 4 Oktetten Die Anzahl der Pakete, die keine Bestätigung erhalten.
Diese Anzahl wird zurückgesetzt, nachdem er an den Host gemeldet wurde.
TX_Flushed_Packets 4 Oktetten Die Anzahl der Pakete, die nicht durch den Spülpunkt verschickt werden.
Diese Anzahl wird zurückgesetzt, nachdem er an den Host gemeldet wurde.
TX_Last_Subevent_Packets 4 Oktetten Die Anzahl der Pakete, die die Linkschicht in der letzten Teilung eines CIS -Ereignisses über eine CIS -Daten -PDU übertragen.
Diese Anzahl wird zurückgesetzt, nachdem er an den Host gemeldet wurde.
Der Wert ist Null, wenn es keinen gültigen Wert für den Link gibt.
CRC_Error_Packets 4 Oktetten Die Anzahl der empfangenen Pakete mit CRC -Fehler seit dem letzten Ereignis.
Diese Anzahl wird zurückgesetzt, nachdem er an den Host gemeldet wurde.
RX_Duplicate_Packets 4 Oktetten Die Anzahl der seit der letzten Veranstaltung erhaltenen doppelten Pakete (Übertragung).
Diese Anzahl wird zurückgesetzt, nachdem er an den Host gemeldet wurde.
Lieferantenspezifischer Parameter (Parameter Gesamtlänge - TBD) * Oktetten Damit der Controller -Anbieter mehr Lieferantenspezifische Parameter erhalten kann.

Sub-Event-Code = 0x58 [quality_report_id = 0x05, Root Entzündungsereignis]

Dieses Ereignis zeigt an, dass Bluetooth HAL oder der Controller einen tödlichen Fehler aufgetreten sind und Bluetooth -Stack benötigt, um diese Situation aufzuzeichnen und neu zu starten. Der Controller muss einen root_inflammation_event an Bluetooth -Stack senden, bevor er das erste Fragment der Debug -Info -Ereignisse in jedem Fall senden.

Der Parameter ERROR_CODE enthält einen von HAL/Controller angegebenen Fehlercode, 0, wenn es sich um einen spezifischen Fehler von Chipsatz -Anbietern handelt. Der Anbieter_Specific_Error_code enthält einen chipset -Anbieter -Fehlercode von HAL/Controller. Es sollte als 0 festgelegt werden, wenn der Parameter error_code nicht 0 ist. Die Parameter error_code und vendor_specific_error_code sollte nicht beide 0 sein.

Sub-Event-Parameter Größe Zweck
Quality_Report_Id 1 Oktett 0x00 ~ 0x04: reserviert.
0x05: Wurzelentzündung.
0x06 ~ 0xff: reserviert.
Error_Code 1 Oktett 0x00: Der Spezifische Fehlercode von Chipet -Anbietern ist enthalten.
0x01 ~ 0xff: Controller -Ausfall trat auf. Siehe Bluetooth Spec [Vol 2] Teil D, Fehlercodes für eine Liste von Fehlercodes und Beschreibungen.
Vendor_Specific_Error_Code 1 Oktett 0x00: Es ist kein chipset -Anbieter -Spezifischer Fehlercode enthalten.
0x01 ~ 0xff: Chipsatz -Anbieter -Fehlercode.
Lieferantenspezifischer Parameter (Parameter Gesamtlänge - 4) * Oktetten Damit der Controller -Anbieter mehr Lieferantenspezifische Parameter erhalten kann.
Sub-Event-Parameter Größe Zweck
Quality_Report_Id 1 Oktett 0x00 ~ 0x10: reserviert.
0x11: LMP/LL -Nachrichtenspur.
0x12: Bluetooth Multi-Link/Coex-Planungsverfolgung.
0x13: Controller -Debug -Informationsdatum.
0x14 ~ 0xff: reserviert.
Connection_Handle 2 Oktetten Verbindungsgriff.
Lieferantenspezifischer Parameter (Parameter Gesamtlänge - 4) * Oktetten Anbieterspezifisches Format der LMP-Nachrichtenverfolgung, Bluetooth-Multi-Link/Coex-Planungsverfolgung und Controller-Debug-Informationsdaten-Dump.

Support für Multi-Advertiser

Die Ziele der Unterstützung von Multi-Advertiser sind die folgenden:

  • Fähigkeit zur Unterstützung mehrerer Anzeigen ( max_advt_instances )
  • Verschiedene Sendekräfte, um einen unterschiedlichen Bereich zu ermöglichen
  • Verschiedene Werbeinhalte
  • Eine individuelle Antwort für jeden Werbetreibenden
  • Privatsphäre (nicht übertrennbar) für jeden Werbetreibenden
  • Anschließbar

Um diese Spezifikation nahe an bestehenden Standards zu halten, werden die folgenden Lieferanten-spezifischen 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 komplettes Befehlsereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Befehl vollständiger Status
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

Basisreferenz: Bluetooth Core 4.1 Spezifikation, Seite 964 (Befehl "LE -Werbung Parameter))

Sub OCF: 0x01

Sub-Command-Parameter 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 die Anwendbarkeit der obigen Parameter auf eine Instanz an
Tx_power 1 Oktett Sendeleistung
Einheit - in DBM (signierte Ganzzahl)
Bereich (-70 bis +20)

Der Parameter Own_Address könnte zum Zeitpunkt der Einrichtung dieser Multi-Advertier-Instanz eine hostkonfigurierte Adresse sein. Dies bietet die Möglichkeit, zum Zeitpunkt der Übermittlung des ersten Leuchtfeuers über eine regelbare private Adresse zu verfügen. Die Anzeige in einer Instanz wird unabhängig von der Verbindung fortgesetzt. Der Host BT Stack könnte einen Befehl ausgeben, um die Werbung in einer Instanz zu starten, Postverbindung.

Für diesen Befehl wird für diesen Befehl gemäß dem oben genannten Befehl ein komplettes Befehl erstellt. Der Controller antwortet mit einem Nicht-SUCCess-Code (Ungültiger Parameter), wenn die Parameter der Werbeinstanz oder Tx_Power Parameter ungültig sind.

Rückgabeparameter Größe Zweck
Status 1 Oktett Befehl vollständiger Status
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 -Befehl Werbung Daten festlegen)

Sub OCF: 0x02

Sub-Command-Parameter Größe Zweck
Advertising_Data_Length Pro Spezifikation Pro Spezifikation
Advertising_Data Pro Spezifikation Pro Spezifikation
Advertising_Instance 1 Oktett Gibt die Anwendbarkeit der obigen Parameter auf eine Instanz an

Für diesen Befehl wird für diesen Befehl gemäß dem oben genannten Befehl ein komplettes Befehl erstellt. Der Controller antwortet mit einem Nicht-SUCCess-Code, wenn die Parameter der Werbeinstanz oder Tx_Power Parameter ungültig sind.

Rückgabeparameter Größe Zweck
Status 1 Oktett Befehl vollständiger Status
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 (Befehl set Scan -Antwortdaten)

UB OCF: 0x03

Sub-Command-Parameter Größe Zweck
Scan_Response_Data_Length Pro Spezifikation Pro Spezifikation
Scan_Response_Data Pro Spezifikation Pro Spezifikation
Advertising_Instance 1 Oktett Gibt die Anwendbarkeit der obigen Parameter auf eine Instanz an

Für diesen Befehl wird für diesen Befehl gemäß dem oben genannten Befehl ein komplettes Befehl erstellt. Der Controller antwortet mit einem Nicht-SUCCESS-Code (ungültiger Parameter), wenn die Parameter der Werbeinstanz oder Tx_Power Parameter ungültig sind.

Rückgabeparameter Größe Zweck
Status 1 Oktett Befehl vollständiger Status
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 -Befehl zufälliger Adressierung)

Sub OCF: 0x04

Sub-Command-Parameter Größe Zweck
Zufällige Adresse Pro Spezifikation Pro Spezifikation
Advertising_Instance 1 Oktett Gibt die Anwendbarkeit der obigen Parameter auf eine Instanz an

Für diesen Befehl wird ein komplettes Befehlsereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Befehl vollständiger Status
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 -Befehlsanzeige -Aktivitätsbefehl in dieser Kernspezifikation)

OCF: 0x05

Sub-Command-Parameter Größe Zweck
Advertising_Enable 1 Oktett Ein Wert von 1 bedeutet aktiviert. Jeder andere Wert bedeutet deaktiviert.
Advertising_Instance 1 Oktett Gibt die Anwendbarkeit der obigen Parameter auf eine Instanz an. Instanz 0 bedeutet eine Standard -HCI -Instanz.

Für diesen Befehl wird ein komplettes Befehlsereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Befehl vollständiger Status
Multi_advt_opcode 1 Oktett 0x05 [ Set_Advt_Enable_Multi_Sub_Cmd]

Abgeladene Lösung der privaten Adresse

Diese Funktion behebt eine private Adresse in der Firmware oder Hardware für Controller, die die folgenden Vorteile bietet:

  • Latenz, die mit dem Host bei der Lösung einer privaten Adresse verbunden ist
  • Sparen Sie Strom, indem Sie den Wirt nicht aufwachen

Le_set_rpa_timeout

OCF: 0x15c

Befehlsparameter Größe Zweck
LE_local_IRK 16 Oktett Die lokale Geräte -IRK, ​​mit der die zufällige, auflösbare Adresse (ES) generiert wird.
tRPA_min 2 Oktetten Das Zeitlimit der RPA -Erzeugung in Sekunden. Der Controller muss neue, auflösbare Adressen für Werbe-/Scan-/Verbindungsereignisse in oder nach dieser Zeitüberschreitung generieren.
Gültiger Bereich: 300-1800
tRPA_max 2 Oktetten Das maximale Zeitlimit der RPA -Erzeugung in Sekunden. Der Controller muss neue, auflösbare Adressen für Werbe-/Scan-/Verbindungsereignisse an oder vor diesem Zeitüberschreitungsereignis generieren.
Gültiger Bereich: tRPA_min -1800
Rückgabeparameter Größe Zweck
Status 1 Oktett Der Status des Befehls.

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

LE_RPA_OFFLOAD_COMMAND

OCF: 0x155

Befehlsparameter Größe Zweck
RPA_offload_opcode 1 Oktett 0x1 - Kundenspezifische Funktion aktivieren
0x2 - Fügen Sie der Liste Irk hinzu
0x3 - IRK aus der Liste entfernen
0x4 - Löschen Sie die IRK -Liste
0x5 - Lesen Sie die IRK -Listeneingabe

Für diesen Befehl wird ein komplettes Befehlsereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Befehl vollständiger Status
Event_RPA_offload_opcode 1 Oktett 0x1 - Kundenspezifische Funktion aktivieren
0x2 - Fügen Sie der Liste Irk hinzu
0x3 - IRK aus der Liste entfernen
0x4 - Löschen Sie die IRK -Liste
0x5 - Lesen Sie die IRK -Listeneingabe

LE_RPA_OFFLOAD: enable_cust_specific_sub_command

Sub OCF: 0x01

Sub-Command-Parameter Größe Zweck
enable_customer_specific_feature_set 1 Oktett 0x01 - Aktivieren Sie die Offload -RPA -Funktion
0x00 - Deaktivieren Sie die abgeladene RPA -Funktion

RPA -Offload muss vom Host basierend auf der Chip -Funktion aktiviert werden. Weitere Informationen finden Sie im LE_Get_Vendor_Capabilities_Command . Jeder Chip kann in der Firmware eine unterschiedliche max_irk_list_sz haben.

Für diesen Befehl wird ein komplettes Befehlsereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Befehl vollständiger Status
Event_cust_specific_feature_opcode 1 Oktett 0x01 [Kundenspezifische Funktionen aktivieren]

LE_RPA_OFFLOAD: add_irk_to_list_sub_command

Sub OCF: 0x02

Sub-Command-Parameter Größe Zweck
LE_IRK 16 Oktetten Le irk (1. Byte LSB)
Address_Type 1 Oktett 0: öffentliche Adresse
1: Zufällige Adresse
LE_Device_Address 6 Oktetten Öffentliche oder zufällige Adresse, die dem IRK verbunden ist (1. Byte LSB)

Für diesen Befehl wird ein komplettes Befehlsereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Befehl vollständiger Status
Event_cust_specific_feature_opcode 1 Oktett 0x02 [Hinzufügen von IRK zur Liste]
LE_IrkList_AvailableSpaces 1 Oktett Verfügbare IRL -Listeneinträge nach dem aktuellen Betrieb

LE_RPA_OFFLOAD: REDE_IRK_TO_LIST_SUB_COMMAND

UB OCF: 0x03

Sub-Command-Parameter Größe Zweck
Address_Type 1 Oktett 0: öffentliche Adresse
1: Zufällige Adresse
LE_Device_Address 6 Oktetten Öffentliche oder zufällige Adresse, die sich der IRK verbinden

Für diesen Befehl wird ein komplettes Befehlsereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Befehl vollständiger Status
Event_cust_specific_feature_opcode 1 Oktett 0x03 [IRK aus der Liste entfernen]
LE_IrkList_AvailableSpaces 1 Oktett Verfügbare IRL -Listeneinträge nach dem aktuellen Betrieb

LE_RPA_OFFLOAD: Clear_IRK_LIST_SUB_COMMAND

Sub OCF: 0x04

Sub-Command-Parameter Größe Zweck
Keiner

Für diesen Befehl wird ein komplettes Befehlsereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Befehl vollständiger Status
Event_cust_specific_feature_opcode 1 Oktett 0x04 [Clear IRK -Liste]
LE_IrkList_AvailableSpaces 1 Oktett Verfügbare IRL -Listeneinträge nach aktueller Operation [ max_irk_list_sz]

LE_RPA_OFFLOAD: Read_IRK_LIST_SUB_COMMAND

Sub OCF: 0x05

Sub-Command-Parameter 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 komplettes Befehlsereignis generiert.

Rückgabeparameter Größe Zweck
Status 1 Oktett Befehl vollständiger Status
Event_cust_specific_feature_opcode 1 Oktett 0x05 [Lesen Sie die IRK -Listeneingabe]
LE_Read_IRK_List_entry 1 Oktett Index des IRK, den der Host zurücklesen möchte (maximale IRK -Listengröße beträgt 32)
LE_IRK 16 Oktetten IRK -Wert
Address_Type 1 Oktett 0: öffentliche Adresse
1: Zufällige Adresse
LE_Device_Address 6 Oktetten Öffentliche oder zufällige Adresse, die dem IRK verbunden ist
LE_Resolved_Private_Address 6 Oktetten Aktuelle gelöstliche private Adresse dieser IRK