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_c
– T_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:
|
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:
|
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:
|
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:
Wert des Bits
|
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.
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. AAC-Codec: Weitere Informationen finden Sie in den AAC-Codec-spezifischen Informationselementen in A2DP v1.3 LDAC-Codec: Oktett 0-3: Anbieter-ID Oktett 4-5: Codec-ID Oktett 6: Bitratenindex: Oktett 7: LDAC-Kanalmodus 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 Löschen Sie die Berichterstattung über bestimmte Qualitätsereignisse (n). |
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. |
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 |
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 ) vorhanden0x01: 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 OktettRSSI[0] : 1 OktettTimestamp[0] : 2 OktettenAdv packet_len[0] : 1 OktettAdv_packet[0] : Adv_packet_len -OctetsScan_data_resp_len[0] : 1 OktettScan_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-Code = 0x58 [quality_report_id = 0x01 ~ 0x04, Link Quality Related Ereignis]
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. |
SNR | 1 Oktett | [in DB] Signal-R-Rausch-Verhältnis (SNR) Wert für den angegebenen Connection_handle. |
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. |
Buffer_Underflow_Bytes | 4 Oktetten | [in Byte] Puffer -Unterlaufzahl seit dem letzten Ereignis. |
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 code = 0x58 [quality_report_id = 0x11 ~ 0x13, log Dump-verwandtes Ereignis]
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 |