Die Host Controller Interface (HCI) wird für die Interaktion mit einem Bluetooth-Controller verwendet.
In diesem Dokument finden Sie eine Liste der HCI-Anforderungen für Bluetooth (BT) und Bluetooth Low Energy (BLE). Ziel ist es, dass Anbieter von BT-Stacks für Hosts und BT-Controller diese Plattformanforderungen erfüllen, um die unten beschriebenen Funktionen nutzen zu können.
In diesem Dokument wird die Bluetooth Core 5.2-Spezifikation als „Spezifikation“ bezeichnet. Die Bluetooth Core 5.2-Spezifikation ist zusammen mit anderen angenommenen Dokumenten auf der Website der Bluetooth SIG verfügbar.
Allgemeine Designübersicht
Chipfunktionen und -konfiguration
Als offene Plattform bietet Android eine Matrix aus Softwarereleases, OEMs, Anbietern sowie Plattform- und Chipfunktionen.
Um die unterschiedlichen Anforderungen zu erfüllen und Migrationen zu verwalten, wird in diesem Dokument eine Designphilosophie beschrieben, die es BT-Controllern ermöglicht, ihre Funktionen über die Standard-Bluetooth Core 5.2-Spezifikation hinaus zu präsentieren. Der BT-Stack des Hosts kann dann anhand dieser Funktionen ermitteln, welche Funktionen aktiviert werden sollen.
Unterstützung offener Standards
Ein Ziel von Android ist es, offene Standards nach der Ratifizierung in einer Bluetooth-Spezifikation zu unterstützen. Wenn eine unten beschriebene Funktion in einer zukünftigen Bluetooth-Spezifikation in standardmäßigen HCI-Methoden verfügbar wird, werden wir diesen Ansatz wahrscheinlich als Standard festlegen.
Anbieterspezifische Funktionen
Anbieterspezifischer Befehl: LE_Get_Vendor_Capabilities_Command
OpCode-Befehlsfeld (OCF): 0x153
Befehlsparameter | Größe | Zweck |
---|---|---|
– | Leere Liste der Befehlsparameter |
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
max_advt_instances (Eingestellt) |
1 Oktett |
Anzahl der unterstützten Anzeigeninstanzen. Nach Version 0.98 reserviert. Dieser Parameter wird in der Google-Funktionsspezifikation Version 0.98 und höher zugunsten der LE Extended Advertising verworfen, die in der BT-Spezifikation Version 5.0 und höher verfügbar ist. |
offloaded_resolution_of_private-address (Eingestellt) |
1 Oktett |
BT-Chipfunktion von RPA. Wenn von einem Chip unterstützt, muss sie vom Host aktiviert werden. 0 = Nicht möglich 1 = Möglich Nach Version 0.98 reserviert. Dieser Parameter wird in der Google-Funktionsspezifikation Version 0.98 und höher zugunsten der Datenschutzfunktion eingestellt, die in der BT-Spezifikation Version 4.2 und höher verfügbar ist. |
total_scan_results_storage |
2 Oktette | Speicherplatz für Scanergebnisse in Byte |
max_irk_list_sz |
1 Oktett | Anzahl der IRK-Einträge, die in der Firmware unterstützt werden |
filtering_support |
1 Oktett |
Unterstützung für das Filtern im Controller 0 = Nicht unterstützt 1 = Unterstützt |
max_filter |
1 Oktett | Anzahl der unterstützten Filter |
activity_energy_info_support |
1 Oktett |
Unterstützt die Berichterstellung von Aktivitäts- und Energieinformationen 0 = Nicht möglich 1 = Möglich |
version_supported |
2 Oktette |
Gibt die unterstützte Version der Google-Funktionsspezifikation an byte[0] = Hauptversion byte[1] = Nebenversion v1.04 byte[0] = 0x01 byte[1] = 0x04 |
total_num_of_advt_tracked |
2 Oktette |
Gesamtzahl der Werbetreibenden, die zu OnLost /OnFound -Zwecken erfasst wurden
|
extended_scan_support |
1 Oktett | Unterstützt erweitertes Scanfenster und ‑intervall |
debug_logging_supported |
1 Oktett | Unterstützt das Logging von binären Debug-Informationen vom Controller |
LE_address_generation_offloading_support (Eingestellt) |
1 Oktett |
0 = Nicht unterstützt 1 = Unterstützt Nach Version 0.98 reserviert. Dieser Parameter wird in der Google-Funktionsspezifikation Version 0.98 und höher zugunsten der Datenschutzfunktion eingestellt, die in der BT-Spezifikation Version 4.2 und höher verfügbar ist. |
A2DP_source_offload_capability_mask |
4 Oktette |
Bitmasken für unterstützte Codec-Typen Bit 0 – SBC Bit 1 – AAC Bit 2 – APTX Bit 3 – APTX HD Bit 4 – LDAC Bit 5–31 sind reserviert |
bluetooth_quality_report_support |
1 Oktett |
Unterstützt die Meldung von Bluetooth-Qualitätsereignissen 0 = Nicht möglich 1 = Möglich |
dynamic_audio_buffer_support |
4 Oktette |
Unterstützt dynamischen Audiopuffer im Bluetooth-Controller Bitmasken für unterstützte Codec-Typen Bit 0 – SBC Bit 1 – AAC Bit 2 – APTX Bit 3 – APTX HD Bit 4 – LDAC Bit 5–31 sind reserviert |
a2dp_offload_v2_support |
1 Oktett |
Unterstützt A2DP-Offload-V2-Befehle im Bluetooth-Controller (siehe A2DP-Offload starten, A2DP-Offload beenden) 0 = Nicht unterstützt 1 = Unterstützt |
Ergebnisse der Batch-Suche
Ein Designziel besteht darin, die Zustellung von Benachrichtigungen zu Bluetooth LE-Scan-Antwortereignissen an den Host zu verbessern, um Strom zu sparen.
Wenn der Controller den Host-App-Prozessor seltener zum Scannen von Ergebnissen benachrichtigt, kann der Host-App-Prozessor länger im Ruhemodus bleiben. Dadurch wird der Stromverbrauch des Hosts reduziert. Der Rückgabeparameter total_scan_results_storage
von LE_Get_Vendor_Capabilities_Command
gibt die Speicherkapazität des Chips für Scanergebnisse an.
Diese Funktion konzentriert sich auf die Verwaltung und Konfiguration des LE-Scan-Ergebnisspeichers im Bluetooth-Controller. Der Speicher wird verwendet, um Anzeigendaten vorübergehend zu bündeln und Daten und Metadaten zu scannen, die vom Controller empfangen werden, um sie später an den Host zu senden.
Die Firmware muss zwei Arten von Batchverarbeitung unterstützen, die gleichzeitig aktiviert werden können:
- Abgeschnitten. Enthält die folgenden Informationselemente: {MAC, TX Power, RSSI, Timestamp}
- Vollständig. Enthält die folgenden Informationselemente: {MAC, TX Power, RSSI, Timestamp, Adv Data, Scan Response}
LE_Batch_Scan_Command
OCF: 0x156
Befehlsparameter | Größe | Zweck |
---|---|---|
Batch_Scan_opcode |
1 Oktett |
0x1 – Kundenspezifische Funktion aktivieren 0x2 – Speicherparameter für Batch-Scan festlegen 0x3 – Parameter für Batch-Scan festlegen 0x4 – Parameter für Batch-Scan-Ergebnisse lesen |
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert. Durch Aktivieren der kundenspezifischen Funktion wird der Scan nicht gestartet.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
Batch_Scan_opcode |
1 Oktett |
0x1 – Kundenspezifische Funktion aktivieren 0x2 – Speicherparameter für Batch-Scan festlegen 0x3 – Parameter für Batch-Scan festlegen 0x4 – Parameter für Batch-Scan-Ergebnisse lesen |
LE_Batch_Scan_Command: Kundenspezifische Funktion aktivieren
Sub OCF: 0x01
Parameter für Unterbefehl | Größe | Zweck |
---|---|---|
enable_customer_specific_feature_set |
1 Oktett |
0x01 – Batch-Scan-Funktion aktivieren 0x00 – Batch-Scan-Funktion deaktivieren |
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
Batch_Scan_opcode |
1 Oktett |
0x1 – Kundenspezifische Funktion aktivieren 0x2 – Speicherparameter für Batch-Scan festlegen 0x3 – Parameter für Batch-Scan festlegen 0x4 – Parameter für Batch-Scan-Ergebnisse lesen |
LE_Batch_Scan_Command: Unterbefehl zum Festlegen des Speicherparameters für den Batch-Scan
Sub OCF: 0x02
Parameter für Unterbefehl | Größe | Zweck |
---|---|---|
Batch_Scan_Full_Max |
1 Oktett |
Maximaler Speicherplatz (in %) für den Vollstil [Bereich: 0–100] |
Batch_Scan_Truncated_Max |
1 Oktett |
Maximaler Speicherplatz (in %) für den abgeschnittenen Stil [Bereich: 0–100] |
Batch_Scan_Notify_Threshold |
1 Oktett |
Benachrichtigungsstufe (in %) für einzelnen Speicherpool einrichten
[Bereich: 0–100] Wenn Sie „0“ festlegen, werden keine Benachrichtigungen gesendet. Anbieterspezifisches HCI-Ereignis wird generiert (Unterereignis „Speichergrenzwert überschritten“) |
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
Batch_scan_opcode |
1 Oktett | 0x02 [Batch-Scan-Parameter festlegen] |
LE_Batch_Scan_Command: Parameter für den Batch-Scan festlegen
Sub OCF: 0x03
Parameter für Unterbefehl | Größe | Zweck |
---|---|---|
Batch_Scan_Mode |
1 Oktett |
0x00 – Batch-Scan deaktiviert 0x01 – Der gekürzte Modus ist aktiviert 0x02 – Der vollständige Modus ist aktiviert 0x03 – Der gekürzte und der vollständige Modus sind aktiviert |
Duty_cycle_scan_window |
4 Oktette | Scanzeit für Batch-Scan (Anzahl der Slots) |
Duty_cyle_scan_interval |
4 Oktette | Intervall für den Batch-Scan (Anzahl der Slots) |
own_address_type |
1 Oktett |
0x00 – Öffentliche Geräteadresse 0x01 – Zufällige Geräteadresse |
Batch_scan_Discard_Rule |
1 Oktett |
0 – Älteste Werbung verwerfen 1 – Werbung mit dem schwächsten RSSI verwerfen |
Mit diesem Unterbefehl wird das Batch-Scannen gestartet, sofern es aktiviert ist. Bei der gekürzten Suche werden die Ergebnisse in gekürzter Form gespeichert. Der eindeutige Schlüssel für den gekürzten Stil ist {BD_ADDR,
scan_interval}. Das bedeutet, dass für jedes Scanintervall nur ein BD_ADDR will
erfasst wird. Der für den Truncierten Modus zu behaltende Datensatz lautet: {BD_ADDR
, Transmit Power, RSSI, Timestamp}.
Wenn der Vollmodus aktiviert ist, wird das aktive Scannen verwendet und Scanantworten werden aufgezeichnet. Der eindeutige Schlüssel für den Vollstil ist {MAC, Ad-Paket}, unabhängig vom Scanintervall. Der für den Vollmodus zu speichernde Eintrag lautet {BD_ADDR
, Tx Power, RSSI, Timestamp, Ad packet, Scan Response}. Im Vollformat wird dasselbe AD-Paket, das in verschiedenen Scanintervallen mehrmals erkannt wird, nur einmal erfasst. Im gekürzten Modus ist jedoch die Sichtbarkeit von BA_ADDR
in verschiedenen Scanintervallen von Interesse (einmal pro Scanintervall). Der RSSI ist der Mittelwert aller Duplikate einer eindeutigen Werbung innerhalb eines Scanintervalls.
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
Batch_scan_opcode |
1 Oktett | 0x03 [Batch-Scan-Parameter festlegen] |
LE_Batch_Scan_Command: Unterbefehl zum Lesen der Ergebnisse eines Batch-Scans
Sub OCF: 0x04
Parameter für Unterbefehl | Größe | Zweck |
---|---|---|
Batch_Scan_Data_read |
1 Oktett |
0x01 – Daten im gekürzten Modus 0x02 – Daten im Vollmodus |
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert. Wenn der Host diesen Befehl ausgibt, passen möglicherweise nicht alle Ergebnisse im Controller in ein Ereignis vom Typ „Command Complete“. Der Host gibt diesen Befehl so lange aus, bis die entsprechenden Ergebnisse im Ereignis „Befehl abgeschlossen“ bei der Anzahl der Einträge „0“ anzeigen. Das bedeutet, dass der Controller keine weiteren Einträge an den Host senden kann. Jedes Ereignis vom Typ „Befehl abgeschlossen“ kann mehrere Datensätze mit nur einem Datentyp (vollständig oder gekürzt) enthalten.
Die Zeitangaben von Controller und Host sind nicht synchronisiert. Die Einheit des Zeitstempels ist 50 ms. Der Wert des Zeitstempels basiert darauf, wann Read_Batch_Scan_Results_Sub_cmd
vom Host angegeben wird. Wenn in der Firmware eine Befehlszustellungszeit von T_c
angegeben ist, ist T_fw
der tatsächliche Zeitpunkt, zu dem der Zeitstempel in der Firmware erfasst wurde. Die Berichtszeit ist (T_c
– T_fw
). T_c
und T_fw
sind in der Firmware-Zeitdomäne. So kann der Host berechnen, wie lange das Ereignis zurückliegt.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
Batch_scan_opcode |
1 Oktett | 0x03 [Batch-Scan-Parameter festlegen] |
Batch_Scan_data_read |
1 Oktett | Gibt das Format an (verkürzt oder vollständig) |
num_of_records |
1 Oktett | Anzahl der Einträge von Batch_Scan_data_read |
format_of_data |
Variable |
Verkürzter Modus: Address[0]: 6 Oktette Address_Type[0]: 1 Oktett Tx_Pwr[0]: 1 Oktett RSSI[0] : 1 Oktett Timestamp[0]: 2 Oktette [Mehrere Einträge ( num_of_records ) im obigen Format]Vollständiger Modus: Address[0]: 6 Oktette Address_Type[0]: 1 Oktett Tx_Pwr[0]: 1 Oktett RSSI[0]: 1 Oktett Timestamp[0]: 2 Oktette Adv packet_len[0]: 1 Oktett Adv_packet[0]: Adv_packet_len Oktette Scan_data_resp_len[0]: 1 Oktett Scan_data_resp[0]: Scan_data_resp Oktette[Mehrere Einträge im obigen Format ( num_of_records )]
|
Filter für Werbeinhalte in Paketen
Damit können Sie den APCF (Advertising Packet Content Filter) im Controller aktivieren/deaktivieren/einrichten. Der APCF-Filter wird auf Werbeberichte im Controller angewendet, nicht aber auf periodische Werbung.
LE_APCF_Command
OCF: 0x157
Befehlsparameter | Größe | Zweck |
---|---|---|
APCF_opcode |
1 Oktett |
0x00 – APCF Enable 0x01 – APCF Set Filtering parameters 0x02 – APCF Broadcaster Address 0x03 – APCF Service UUID 0x04 – APCF Service Solicitation UUID 0x05 – APCF Local Name 0x06 – APCF Manufacturer Data 0x07 – APCF Service Data 0x08 – APCF Transport Discovery Service 0x09 – APCF AD Type Filter 0x10 bis 0xAF – für zukünftige Verwendung reserviert 0xB0 bis 0xDF – für den Anbieter reserviert 0xE0 bis 0xFE – für zukünftige Verwendung reserviert 0xFF – APCF Read extended Features |
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Retourenstatus |
APCF_opcode |
1 Oktett |
0x00 – APCF Enable 0x01 – APCF Set Filtering parameters 0x02 – APCF Broadcaster Address 0x03 – APCF Service UUID 0x04 – APCF Service Solicitation UUID 0x05 – APCF Local Name 0x06 – APCF Manufacturer Data 0x07 – APCF Service Data 0x08 – APCF Transport Discovery Service 0x09 – APCF AD Type Filter 0x10 bis 0xAF – für zukünftige Verwendung reserviert 0xB0 bis 0xDF – für den Anbieter reserviert 0xE0 bis 0xFE – für zukünftige Verwendung reserviert 0xFF – APCF Read extended Features |
LE_APCF_Command: Enable_sub_cmd
Sub OCF: 0x00
Parameter für Unterbefehl | Größe | Zweck |
---|---|---|
APCF_enable |
1 Oktett |
0x01 – APCF-Funktion aktivieren 0x00 – APCF-Funktion deaktivieren |
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
APCF_opcode |
1 Oktett | 0x0 – APCF aktivieren |
APCF_Enable |
1 Oktett | Aktivieren/Deaktivieren wird über APCF_enable festgelegt. |
LE_APCF_Command: set_filtering_parameters_sub_cmd
Mit diesem Unterbefehl können Sie eine Filterspezifikation hinzufügen oder löschen oder eine Filterliste für die On-Chip-Filterung löschen.
Sub OCF: 0x01
Parameter für Unterbefehl | Größe | Zweck |
---|---|---|
APCF_Action |
1 Oktett |
0x00 – Hinzufügen 0x01 – Löschen 0x02 – Löschen Durch Löschen werden der Filter und die zugehörigen Elementeinträge in anderen Tabellen gelöscht. Mit „Löschen“ werden alle Filter und zugehörigen Einträge in anderen Tabellen gelöscht. |
APCF_Filter_Index |
1 Oktett | Filter index (0, max_filter-1 ) |
APCF_Feature_Selection |
2 Oktette |
Bitmasken für die ausgewählten Funktionen: Bit 0: Setzen, um den Broadcast-Adressfilter zu aktivieren Bit 1: Setzen, um den Dienstdatenänderungsfilter zu aktivieren Bit 2: Setzen, um die UUID-Prüfung des Dienstes zu aktivieren Bit 3: Setzen, um die UUID-Prüfung der Dienstanfrage zu aktivieren Bit 4: Setzen, um die Prüfung des lokalen Namens zu aktivieren Bit 5: Setzen, um die Prüfung der Herstellerdaten zu aktivieren Bit 6: Setzen, um die Prüfung der Dienstdaten zu aktivieren Bit 7: Setzen, um die Prüfung des Transport Discovery Service zu aktivieren Bit 8: Setzen, um die Prüfung des AD-Typs zu aktivieren |
APCF_List_Logic_Type |
2 Oktette |
Logikvorgang für jede Merkmalsauswahl (pro Bitposition), die in APCF_Feature_Selection angegeben ist.
Nur gültig, wenn eine Funktion aktiviert ist. Bitpositionswert: 0: ODER 1: UND Wenn die Logik „AND“ ausgewählt ist, besteht ein ADV-Paket nur dann den Filter, wenn es ALLE Einträge in der Liste enthält. Wenn die Logik „ODER“ ausgewählt ist, wird ein ADV-Paket den Filter passieren, wenn es einen der Einträge in der Liste enthält. |
APCF_Filter_Logic_Type |
1 Oktett |
0x00: ODER 0x01: UND Hinweis: Der Logiktyp ist für die ersten drei Felder von APCF_Feature_Selection „–“, was immer der Logik „AND“ entspricht. Sie gelten nur für die vier Felder (Bit 3 bis Bit 6) von APCF_Feature_Selection .
|
rssi_high_thresh |
1 Oktett |
[in dBm] Der Werbetreibende wird nur dann als sichtbar betrachtet, wenn das Signal über dem hohen RSSI-Grenzwert liegt. Andernfalls muss sich die Firmware so verhalten, als hätte sie den Fehler nie gesehen. |
delivery_mode |
1 Oktett |
0x00 – immediate 0x01 – on_found 0x02 – batched
|
onfound_timeout |
2 Oktette |
Nur gültig, wenn delivery_mode on_found ist.[in Millisekunden] Zeit, die die Firmware benötigt, um zu warten und zusätzliche Anzeigen zu erfassen, bevor Berichte erstellt werden. |
onfound_timeout_cnt |
1 Oktett |
Nur gültig, wenn delivery_mode on_found ist.[count] Wenn eine Anzeige in onFound für die Dauer von onfound_timeout in der Firmware verbleibt, werden einige Anzeigen erfasst und die Anzahl wird überprüft. Wenn die Anzahl onfound_timeout_cnt überschreitet, wird sie sofort als OnFound erfasst.
|
rssi_low_thresh |
1 Oktett |
Nur gültig, wenn delivery_mode on_found ist.[in dBm] Das Werbetreibendenpaket wird als nicht erkannt betrachtet, wenn der RSSI des empfangenen Pakets den niedrigen RSSI-Grenzwert nicht überschreitet. |
onlost_timeout |
2 Oktette |
Nur gültig, wenn delivery_mode on_found ist.[in Millisekunden] Wenn eine Anzeige nach dem Finden nicht innerhalb von lost_timeout Minuten fortlaufend gesehen wird, wird sie sofort als verloren gemeldet.
|
num_of_tracking_entries |
2 Oktette |
Nur gültig, wenn delivery_mode on_found ist.[count] Gesamtzahl der Werbetreibenden, die pro Filter erfasst werden sollen. |
Für RSSI-Werte muss das Zweierkomplement verwendet werden, um negative Werte darzustellen.
Der Host muss mehrere Filter konfigurieren können, wobei APCF_Application_Address_type
auf 0x02 (für alle Senderadressen) gesetzt ist, um verschiedene Filterkombinationen zu verwalten.
Filtern, Batchverarbeitung und Berichterstellung sind miteinander verbundene Konzepte. Jede Anzeige und die zugehörige Scanantwort müssen nacheinander alle Filter durchlaufen. Die resultierenden Aktionen (delivery_mode
) sind daher eng mit dem Filtern verbunden. Die folgenden Übermittlungsmodi werden unterstützt: report_immediately
, batch
und onFound
. Der Wert OnLost
ist mit OnFound
verwandt, da er nach OnFound
kommt, wenn er verloren geht.
Dieser Verarbeitungsablauf stellt das konzeptionelle Modell dar:
Wenn ein Frame für eine Anzeige (oder Scanantwort) empfangen wird, wird er in serieller Reihenfolge auf alle Filter angewendet. Es ist möglich, dass eine Anzeige sofortige Berichte auf der Grundlage eines Filters und eine Batchverarbeitung aufgrund einer anderen Filteraktion auslöst.
Mit RSSI-Grenzwerten (hoch und niedrig) lässt sich steuern, wann der Frame für die Filterverarbeitung sichtbar ist, auch wenn ein gültiges Paket vom Controller empfangen wird. Wenn der Übermittlungsmodus auf „Sofort“ oder „Batch“ gesetzt ist, wird der RSSI eines Frames für die weitere Verarbeitung durch den Controller berücksichtigt. Unterschiedliche Apps erfordern unterschiedliche Berichterstellung und Batch-Verhalten. So können mehrere Apps gleichzeitig direkte Berichte und/oder Batch-Ergebnisse in der Firmware erhalten. Ein Beispiel ist der Fall, wenn ein Batch-Scan von einer App aktiv ist und später ein regulärer LE-Scan von einer anderen App ausgeführt wird. Bevor ein Batch-Scan ausgeführt wird, legt das Framework/die App entsprechende Filter fest. Wenn die zweite App später einen regulären Scan ausführt, wird der vorherige Batch fortgesetzt. Aufgrund der regulären Suche ist es jedoch konzeptionell so, als würden Sie zusammen mit dem LE-Scanbefehl einen Nullfilter (zusammen mit allen vorhandenen Filtern) hinzufügen. Die LE-Scanbefehlsparameter haben Vorrang, wenn sie aktiv sind. Wenn der regelmäßige LE-Scan deaktiviert ist, kehrt der Controller zu einem vorherigen Batch-Scan zurück, falls vorhanden.
Der OnFound
-Auslieferungsmodus basiert auf konfigurierten Filtern. Eine Kombination, die die Aktion eines Filters auslöst, wird als Entität betrachtet, die für onLost
erfasst werden soll. Das entsprechende Ereignis ist das untergeordnete Ereignis „LE-Anzeigen-Tracking“.
Die OnFound/OnLost
-Übergang für einen Filter (falls aktiviert) sieht so aus:
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
APCF_opcode |
1 Oktett | 0x01 – APCF-Filterparameter festlegen |
APCF_Action |
1 Oktett | APCF_Action des Befehls „Echo back“ |
APCF_AvailableSpaces |
1 Oktett | Anzahl der verfügbaren Einträge in der Filtertabelle |
LE_APCF_Command: broadcast_address_sub_cmd
Mit diesem Unterbefehl können Sie eine Werbetreibendenadresse hinzufügen oder löschen oder die Liste der Werbetreibendenadressen für das On-Chip-Filtern löschen.
Sub OCF: 0x02
Parameter für Unterbefehl | Größe | Zweck |
---|---|---|
APCF_Action |
1 Oktett |
0x00 – Hinzufügen 0x01 – Löschen 0x02 – Löschen Mit „Löschen“ wird die angegebene Broadcastadresse im angegebenen Filter gelöscht. Mit „Löschen“ werden alle Senderadressen im angegebenen Filter gelöscht. |
APCF_Filter_Index |
1 Oktett | Filter index (0, max_filter-1 ) |
APCF_Broadcaster_Address |
6-Oktett | 6-Byte-Geräteadresse, die der Liste der Senderadressen hinzugefügt oder daraus entfernt werden soll |
APCF_Application_Address_type |
1 Oktett |
0x00: Öffentlich 0x01: Zufällig 0x02: – (Adresstyp ignorieren) Zum Filtern von Berichten zu Anzeigen mit Identitätsadressen (0x02, 0x03). Wenn Sie Werbeberichte mit den Adresstypen 0x02 und 0x03 erhalten möchten, legen Sie für dieses Feld den Wert „0x02: NA“ fest (Adresstyp ignorieren). |
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
APCF_opcode |
1 Oktett | 0x02 – APCF-Broadcastadresse |
APCF_Action |
1 Oktett | APCF_Action des Befehls „Echo back“ |
APCF_AvailableSpaces |
1 Oktett | Anzahl der kostenlosen Einträge in der Tabelle „Broadcastadresse“ |
LE_APCF_Command: service_uuid_sub_cmd
Mit diesem Unterbefehl können Sie eine Dienst-UUID hinzufügen oder löschen oder eine Liste von Dienst-UUIDs für die On-Chip-Filterung löschen.
Sub OCF: 0x03
Parameter für Unterbefehl | Größe | Zweck |
---|---|---|
APCF_Action |
1 Oktett |
0x00 – Hinzufügen 0x01 – Löschen 0x02 – Löschen Mit „Löschen“ wird die angegebene UUID-Adresse des Dienstes im angegebenen Filter gelöscht. Mit „Löschen“ werden alle Dienst-UUIDs im angegebenen Filter gelöscht. |
APCF_Filter_Index |
1 Oktett | Filter index (0, max_filter -1) |
APCF_UUID |
2,4,16-Oktett | Die UUID des Dienstes (16-, 32- oder 128-Bit), die der Liste hinzugefügt oder daraus entfernt werden soll. |
APCF_UUID_MASK |
2,4,16-Oktett |
Die UUID-Maske des Dienstes (16-Bit, 32-Bit oder 128-Bit), die der Liste hinzugefügt werden soll.
Sie muss dieselbe Länge wie APCF_UUID. haben.
|
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
APCF_opcode |
1 Oktett | 0x03 – APCF-Dienst-UUID |
APCF_Action |
1 Oktett | APCF_Action des Befehls „Echo back“ |
APCF_AvailableSpaces |
1 Oktett | Anzahl der noch kostenlosen Einträge in der Tabelle „Service UUID“ |
LE_APCF_Command: solicitation_uuid_sub_cmd
Mit diesem Unterbefehl können Sie eine UUID für Werbung hinzufügen oder löschen oder eine Liste mit UUIDs für Werbung für das On-Chip-Filtern löschen.
Sub OCF: 0x04
Parameter für Unterbefehl | Größe | Zweck |
---|---|---|
APCF_Action |
1 Oktett |
0x00 – Hinzufügen 0x01 – Löschen 0x02 – Löschen Mit „Löschen“ wird die UUID-Adresse der Anfrage im angegebenen Filter gelöscht. Mit „Löschen“ werden alle UUIDs für Werbung im angegebenen Filter gelöscht. |
APCF_Filter_Index |
1 Oktett | Filter index (0, max_filter -1) |
APCF_UUID |
2,4,16-Oktett | Die UUID der Anfrage (16-, 32- oder 128-Bit), die der Liste hinzugefügt oder daraus entfernt werden soll. |
APCF_UUID_MASK |
2,4,16-Oktett |
Die UUID-Maske für Anfragen (16-Bit, 32-Bit oder 128-Bit), die der Liste hinzugefügt werden soll. Sie sollte dieselbe Länge wie APCF_UUID haben.
|
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
APCF_opcode |
1 Oktett | 0x04 – APCF-Anfrage-UUID |
APCF_Action |
1 Oktett | APCF_Action des Befehls „Echo back“ |
APCF_AvailableSpaces |
1 Oktett | Anzahl der noch kostenlosen Einträge in der Tabelle „UUID der Anfrage“ |
LE_APCF_Command: local_name_sub_cmd
Mit diesem Unterbefehl können Sie einen lokalen Namensstring hinzufügen oder löschen oder die Liste der lokalen Namensstrings für das On-Chip-Filtern löschen.
Sub OCF: 0x05
Parameter für Unterbefehl | Größe | Zweck |
---|---|---|
APCF_Action |
1 Oktett |
0x00 – Hinzufügen 0x01 – Löschen 0x02 – Löschen Mit „Löschen“ wird der angegebene lokale Name im angegebenen Filter gelöscht. Mit „Löschen“ werden alle Strings mit Ortsnamen im angegebenen Filter gelöscht. |
APCF_Filter_Index |
1 Oktett | Filter index (0, max_filter -1) |
APCF_LocName_Mandata_or_SerData |
Variable Größe |
Ein Zeichenstring für den lokalen Namen. Hinweise:
|
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
APCF_opcode |
1 Oktett | 0x05 – APCF Local Name |
APCF_Action |
1 Oktett | APCF_Action des Befehls „Echo back“ |
APCF_AvailableSpaces |
1 Oktett | Anzahl der noch kostenlosen Einträge in der Tabelle „Ortsname“ |
LE_APCF_Command: manf_data_sub_cmd
Mit diesem Unterbefehl können Sie einen Herstellerdatenstring hinzufügen oder löschen oder die Liste der Herstellerdatenstrings für die On-Chip-Filterung löschen.
Sub OCF: 0x06
Parameter für Unterbefehl | Größe | Zweck |
---|---|---|
APCF_Action |
1 Oktett |
0x00 – Hinzufügen 0x01 – Löschen 0x02 – Löschen Mit „Löschen“ wird der angegebene Herstellerdatenstring im angegebenen Filter gelöscht. Mit „Löschen“ werden alle Herstellerdatenstrings im angegebenen Filter gelöscht. |
APCF_Filter_Index |
1 Oktett | Filterindex (0, max_filter -1) |
APCF_LocName_Mandata_or_SerData |
Variable Größe |
Ein Zeichenstring für Herstellerdaten. Hinweise:
|
APCF_ManData_Mask |
Variable Größe |
Die Datenmaske des Herstellers, die der Liste hinzugefügt werden soll. Sie sollte dieselbe Länge wie APCF_LocName_or_ManData_or_SerData haben.
|
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
APCF_opcode |
1 Oktett | 0x06 – APCF-Herstellerdaten |
APCF_Action |
1 Oktett | APCF_Action des Befehls „Echo back“ |
APCF_AvailableSpaces |
1 Oktett | Anzahl der noch kostenlosen Einträge in der Tabelle „Herstellerdaten“ |
LE_APCF_Command: service_data_sub_cmd
Mit diesem Unterbefehl können Sie einen Dienstdatenstring hinzufügen oder löschen oder die Liste der Dienstdatenstrings für die On-Chip-Filterung löschen.
Sub OCF: 0x07
Parameter für Unterbefehl | Größe | Zweck |
---|---|---|
APCF_Action |
1 Oktett |
0x00 – Hinzufügen 0x01 – Löschen 0x02 – Löschen Mit „Löschen“ wird der angegebene Dienstdatenstring im angegebenen Filter gelöscht. Mit „Löschen“ werden alle Dienstdatenstrings im angegebenen Filter gelöscht. |
APCF_Filter_Index |
1 Oktett | Filterindex (0, max_filter -1) |
APCF_LocName_Mandata_or_SerData |
Variable Größe |
Ein Zeichenstring für Dienstdaten. Hinweise:
|
APCF_LocName_Mandata_or_SerData_Mask |
Variable Größe |
Die Dienstdatenmaske, die der Liste hinzugefügt werden soll. Sie muss dieselbe Länge wie APCF_LocName_or_ManData_or_SerData. haben.
|
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
APCF_opcode |
1 Oktett | 0x07 – APCF-Dienstdaten |
APCF_Action |
1 Oktett | APCF_Action des Befehls „Echo back“ |
APCF_AvailableSpaces |
1 Oktett | Anzahl der noch verfügbaren kostenlosen Einträge für die Tabelle „Servicedaten“ |
LE_APCF_Command: ad_type_sub_cmd
Mit diesem Unterbefehl können Sie einen Anzeigentyp hinzufügen oder löschen oder eine Liste mit Anzeigentypen für den On-Chip-Filter löschen. Mit read_extended_features_sub_cmd
können Sie prüfen, ob dieser Befehl unterstützt wird.
Wenn APCF_AD_DATA_Length
= 0 ist, wird APCF_AD_TYPE
ohne Vergleich der Anzeigendaten und der Anzeigendatenmaske gefiltert.
Wenn die Datenlänge des empfangenen ADV-Pakets AD_DATA_LENGTH
überschreitet, vergleichen Sie nur die ersten AD_DATA_LENGTH
Byte der AD-Daten und ignorieren Sie die restlichen Daten.
Sub OCF: 0x09
Parameter für Unterbefehl | Größe | Zweck |
---|---|---|
APCF_Action |
1 Oktett |
0x00 – Hinzufügen 0x01 – Löschen 0x02 – Löschen Mit „Löschen“ wird der angegebene AD-Typ im angegebenen Filter gelöscht. Mit „Löschen“ werden alle Anzeigentypen im angegebenen Filter gelöscht. |
APCF_Filter_Index |
1 Oktett | Filterindex (0, max_filter -1) |
APCF_AD_TYPE |
1 Oktett | Der AD-Typ, um der Liste Elemente hinzuzufügen oder daraus zu entfernen. Ignorieren, wenn APCF_Action = 0x02 (Löschen) |
APCF_AD_DATA_Length |
1 Oktett |
0x00 – Dateninhalte werden nicht gefiltert Wird ignoriert, wenn APCF_Action = 0x02 (Löschen) ist.
|
APCF_AD_DATA |
Variable Größe |
Variable Größe, basierend auf APCF_AD_DATA_Length Wird ignoriert, wenn APCF_Action = 0x02 (Löschen) ist |
APCF_AD_DATA_MASK |
Variable Größe |
Variable Größe, basierend auf APCF_AD_DATA_Length Wird ignoriert, wenn APCF_Action = 0x02 (Leere)Die Länge sollte der von APCF_AD_DATA entsprechen.
|
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
APCF_opcode |
1 Oktett | 0x09 – APCF-Anzeigentyp |
APCF_Action |
1 Oktett | APCF_Action des Befehls „Echo back“ |
APCF_AvailableSpaces |
1 Oktett | Anzahl der noch kostenlosen Einträge in der Tabelle „Anzeigentyp“ |
LE_APCF_Command: read_extended_features_sub_cmd
Mit diesem Unterbefehl werden erweiterte APCF-Funktionen gelesen.
Sub OCF: 0xFF
Parameter für Unterbefehl | Größe | Zweck |
---|---|---|
Nicht zutreffend | Leere Befehlsparameter. |
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
APCF_opcode |
1 Oktett | 0xFF – APCF_Read_Extended_Features |
APCF_extended_features |
2 Oktett |
Unterstützte Bitmasken für erweiterte Funktionen:
Wert des Bits
|
Befehl für Controlleraktivität und Energieinformationen
Das Ziel dieser Informationen besteht darin, dass höhere Hostsystemfunktionen die Gesamtaktivitäten aller Komponenten, einschließlich des BT-Controllers und seines Makrostatus, in Verbindung mit den Vorgängen in den Apps und dem Framework analysieren können. Dazu sind die folgenden Informationen vom BT-Stack und vom Controller erforderlich:
- BT-Stack: Meldet den aktuellen makro-operativen Status des Controllers
- Firmware: Berichterstellung zu zusammengefassten Aktivitäten und Energieinformationen
BT-Hoststack-Makrostatus, wie auf Nutzerebene ermittelt:
- Inaktiv: [Seitenscan, LE-Anzeigen, Suchanfrage-Scan, LE-Scan]
- Scan: [paging/inquiry/trying to connect]
- Aktiv: [ACL-Link aktiviert, SCO-Link aktiv, Sniffer-Modus]
Die Aktivitäten, die der Controller während seines Lebenszyklus erfasst, sind die Übertragungs-, Empfangs-, Inaktivitäts- und Gesamtenergiedauer. Sie werden gelöscht, wenn sie vom Host gelesen werden.
LE_Get_Controller_Activity_Energy_Info
Dies ist ein anbieterspezifischer Befehl.
OCF: 0x159
Parameter für Unterbefehl | Größe | Zweck |
---|---|---|
– | Leere Befehlsparameter |
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
total_tx_time_ms |
4 Oktette | Gesamtzeit für die Übertragung |
total_rx_time_ms |
4 Oktette | Gesamtzeit für die Ausführung von Rx |
total_idle_time_ms |
4 Oktette | Zeit im Ruhemodus insgesamt (Energiesparmodi ohne Ruhemodus) |
total_energy_used |
4 Oktette | Gesamtverbrauchte Energie [Produkt aus Strom (mA), Spannung (V) und Zeit (ms)] |
Befehl für LE-Scanparameter für erweiterte Sets
Mit diesem Befehl können Sie ein größeres Scanfenster und ‑intervall auf dem Controller aktivieren. Gemäß der BT Core 5.2-Spezifikation haben ein Scanfenster und ein Scanintervall eine Obergrenze von 10, 24 Sekunden. Das schränkt Scanintervalle für Apps auf maximal 10, 24 Sekunden ein.
Referenz: BT Core 5.2 Specification, Seite 2493 (LE Set Scan Parameters Command)
OCF: 0x15A
Befehlsparameter | Größe | Zweck |
---|---|---|
LE_Ex_Scan_Type |
1 Oktett |
0x00 – Passives Scannen. Es werden keine SCAN_REQ -Pakete gesendet (Standard).0x01 – Aktives Scannen. SCAN_REQ Pakete gesendet werden.
|
LE_Ex_Scan_Interval |
4 Oktette |
Definiert als das Zeitintervall zwischen dem Start des letzten LE-Scans durch den Controller und dem Start des nachfolgenden LE-Scans. Bereich: 0x0004 bis 0x00FFFFFF Standard: 0x0010 (10 ms) Zeit = N * 0,625 ms Zeitbereich: 2,5 ms bis 10.442,25 Sekunden |
LE_Ex_Scan_Window |
4 Oktette |
Die Dauer des LE-Scans. LE_Scan_Window muss kleiner oder gleich LE_Scan_Interval sein.
Bereich: 0x0004 bis 0xFFFF Standard: 0x0010 (10 ms) Zeit = N * 0,625 ms Zeitbereich: 2,5 ms bis 40,95 Sekunden |
Own_Address_Type |
1 Oktett |
0x00 – Öffentliche Geräteadresse (Standard) 0x01 – Zufällige Geräteadresse |
LE_Ex_Scan_Filter_Policy |
0x00 – Alle Werbepakete akzeptieren (Standard). Direkte Werbepakete, die nicht an dieses Gerät adressiert sind, werden ignoriert. 0x01 – Werbepakete von Geräten ignorieren, die nicht auf der Zulassungsliste stehen. Pakete mit personalisierter Werbung, die nicht an dieses Gerät adressiert sind, werden ignoriert. |
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
Befehl zum Abrufen von Controller-Debugging-Informationen
Das Ziel dieses Informationselements besteht darin, Controller-Debuginformationen in Binärform von einem Host für die Nachbearbeitung und Analyse abzurufen. Dies hilft bei der Fehlerbehebung vor Ort und bietet Entwicklern ein Toolkit zum Protokollieren von Informationen zur Analyse. Ein Controller kann die Informationen bereitstellen, wenn sie von einem Host über das Ereignis (Controller-Debug-Info-Unterereignis) angefordert werden, oder autonom, wenn der Controller dies wünscht. Beispiele für Anwendungsfälle sind das Melden von Informationen zum Firmwarestatus, Crash-Dump-Informationen und Protokollierungsinformationen.
OCF: 0x15B
Befehlsparameter | Größe | Zweck |
---|---|---|
– | Leere Liste der Befehlsparameter |
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
Unterstützung für A2DP-Hardware-Offload
Die A2DP-Offload-Funktion unterstützt das Offload des A2DP-Audiocodierungsvorgangs an einen Audioprozessor, der mit dem BT-Controller verbunden ist. Der codierte Audiodatenstream wird ohne Beteiligung des BT-Hosts direkt vom Audioprozessor an den BT-Controller weitergeleitet. Der BT-Host ist weiterhin für die Konfiguration und Steuerung der A2DP-Sitzung verantwortlich. Es gibt zwei Versionen der Befehle. Die alten Befehle mit Sub-OCF 0x01–0x02 unterstützen nur Open-Source-Codecs. Die Versionen mit Sub-OCF 0x03–0x04 sind unabhängig vom konfigurierten Codec.
OCF: 0x15D
A2DP-Offload starten (alt)
Sub OCF: 0x01
Mit diesem Befehl können Sie sowohl den A2DP-Offload-Prozess konfigurieren als auch den A2DP-Stream starten.
Befehlsparameter | Größe | Zweck |
---|---|---|
Codec |
4 Oktette |
Gibt den Codec-Typ an 0x01 – SBC 0x02 – AAC 0x04 – APTX 0x08 – APTX HD 0x10 – LDAC |
Max_Latency |
2 Oktette | Maximal zulässige Latenz (in ms). Ein Wert von null deaktiviert das Leeren. |
SCMS-T_Enable |
2 Oktette |
Oktett 0: Flag, das das Hinzufügen des SCMS-T-Headers ermöglicht.
Oktett 1: Wert für den SCMS-T-Header, wenn er aktiviert ist. |
Sampling_Frequency |
4 Oktette |
0x01 – 44.100 Hz 0x02 – 48.000 Hz 0x04 – 88.200 Hz 0x08 – 96.000 Hz |
Bits_Per_Sample |
1 Oktett |
0x01 – 16 Bit pro Sample 0x02 – 24 Bit pro Sample 0x04 – 32 Bit pro Sample |
Channel_Mode |
1 Oktett |
0x01 – Mono 0x02 – Stereo |
Encoded_Audio_Bitrate |
4 Oktette |
Die codierte Audiobitrate in Bits pro Sekunde. 0x00000000 – Die Audiobitrate ist nicht angegeben / nicht verwendet. 0x00000001–0x00FFFFFF – Codierte Audiobitrate in Bits pro Sekunde. 0x01000000–0xFFFFFFFF – Reserviert. |
Connection_Handle |
2 Oktette | Verbindungs-Handle der konfigurierten A2DP-Verbindung |
L2CAP_Channel_ID |
2 Oktette | L2CAP-Channel-ID, die für diese A2DP-Verbindung verwendet werden soll |
L2CAP_MTU_Size |
2 Oktette | Maximale Größe der L2CAP-MTU mit codierten Audiopaketen |
Codec_Information |
32 Oktette |
Codec-spezifische Informationen
SBC-Codec:
Siehe SBC-Codec-spezifische Informationselemente in A2DP v1.3. AAC-Codec:
Weitere Informationen finden Sie unter „AAC-Codec-spezifische Informationselemente in A2DP v1.3“. LDAC-Codec:
Oktett 0–3: Anbieter-ID
Oktett 4–5: Codec-ID
Oktett 6: Bitrate Index:
Oktett 7: LDAC-Kanalmodus Oktett 8–31: reserviert Alle anderen Codecs: Oktett 0–31: reserviert |
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
Sub_Opcode |
1 Oktett | 0x01 – A2DP-Offload starten |
A2DP-Offload starten
Sub OCF: 0x03
Mit diesem Befehl können Sie sowohl den A2DP-Offload-Prozess konfigurieren als auch den A2DP-Stream starten.
Befehlsparameter | Größe | Zweck |
---|---|---|
Connection Handle |
2 Oktette | Handle der aktiven HCI-Verbindung |
L2CAP_Channel_ID |
2 Oktette | Kennung des L2CAP-Kanals, der für das A2DP-Streaming geöffnet wurde |
Data_Path_Direction |
1 Oktett |
0x00 – Ausgabe (AVDTP-Quelle/-Zusammenführung) 0x01 – Eingabe (AVDTP-Sink/-Split) |
Peer_MTU |
2 Oktette | Maximale Größe von L2CAP-Paketen, die mit dem Peer ausgehandelt wird. |
CP_Enable_SCMS_T |
1 Oktett |
0x00 – SCMS-T-Inhaltsschutz-Header deaktivieren 0x01 – SCMS-T-Inhaltsschutz-Header aktivieren |
CP_Header_SCMS_T |
1 Oktett |
Wenn der SCMS-T-Inhaltsschutz-Header aktiviert ist (CP_SCMS_T_Enable auf 0x01 festgelegt), definiert er den Headerwert, der den Audioinhalten vorangestellt ist (siehe A2DP, Abschnitt 3.2.1–2), wie in Bluetooth Assigned Numbers, Abschnitt 6.3.2 definiert.Ignoriert, wenn der SCMS-T-Inhaltsschutz nicht aktiviert ist. |
Vendor_Specific_Parameters_Length |
1 Oktett |
Länge der anbieterspezifischen Parameter, im Bereich von 0 bis 128. Der Wert „0“ wird verwendet, wenn keine zusätzlichen Parameter angegeben werden. |
Vendor_Specific_Parameters |
0–128 Oktette |
Anbieterspezifische Parameter, die von der Bluetooth Audio HAL bereitgestellt werden,
CodecParameters.vendorSpecificParameters[] .
|
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
Sub_Opcode |
1 Oktett | 0x03 – A2DP-Offload starten |
A2DP-Offload beenden (alt)
Sub OCF: 0x02
Mit diesem Befehl wird der A2DP-Offload-Stream beendet.
Befehlsparameter | Größe | Zweck |
---|---|---|
– | Leere Liste der Befehlsparameter. |
Für diesen Befehl sind keine Parameter definiert.
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
Sub_Opcode |
1 Oktett | 0x02 – A2DP-Offload beenden |
A2DP-Offload beenden
Sub OCF: 0x04
Mit diesem Befehl wird der A2DP-Offload-Stream beendet.
Befehlsparameter | Größe | Zweck |
---|---|---|
Connection Handle |
2 Oktette | Handle der aktiven HCI-Verbindung |
L2CAP_Channel_ID |
2 Oktette | Kennung des L2CAP-Kanals, der für das A2DP-Streaming geöffnet wurde |
Data_Path_Direction |
1 Oktett |
0x00 – Ausgabe (AVDTP-Quelle/-Zusammenführung) 0x01 – Eingabe (AVDTP-Sink/-Split) |
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
Sub_Opcode |
1 Oktett | 0x04 – A2DP-Offload beenden |
Befehl für Bluetooth-Qualitätsbericht
Die Befehlsfunktion „BT Quality Report“ startet den Mechanismus im Bluetooth-Controller, um Bluetooth-Qualitätsereignisse an den Host zu melden. Sie können vier Optionen aktivieren:
- Qualitätsüberwachungsmodus: Der Controller sendet regelmäßig ein BQR-Unterereignis zur Linkqualität an den Host.
- Approaching LSTO: Wenn länger als die Hälfte des LSTO-Werts (Link Supervision TimeOut) keine Pakete vom verbundenen BT-Gerät empfangen werden, meldet der Controller dem Host das Ereignis „Approaching LSTO“.
- A2DP Audio Choppy: Wenn der Controller Faktoren erkennt, die zu abgehacktem Audio führen, meldet er dem Host ein A2DP Audio Choppy-Ereignis.
- (e)SCO Voice Choppy: Wenn der Controller Faktoren erkennt, die zu einer abgehackten Stimme führen, meldet er dem Host ein (e)SCO Voice Choppy-Ereignis.
- Root Inflammation: Dieses Ereignis wird vom Controller an den Stack gesendet, wenn der HAL oder der Controller einen schwerwiegenden Fehler erkennt und Bluetooth neu starten muss.
- LMP/LL-Nachrichten-Trace: Der Controller sendet das LMP/LL-Nachrichten-Handshake mit dem Remotegerät an den Host.
- Bluetooth-Multiprofil-/Coex-Planungs-Trace: Der Controller sendet seine Planungsinformationen zur Verarbeitung mehrerer Bluetooth-Profile und zur drahtlosen Koexistenz im 2,4‑GHz-Band an den Host.
- Mechanismus für Controller-Debug-Informationen: Wenn diese Funktion aktiviert ist, kann der Controller Informationen zum Debug-Logging über das Unterereignis „Controller-Debug-Informationen“ an den Host senden.
- LE Audio Choppy: Wenn der Controller Faktoren erkennt, die zu abgehacktem Audio führen, meldet er dem Host ein LE Audio Choppy-Ereignis.
-
Modus für erweiterte Funkstatistiken: Der Controller meldet dem Host Informationen zu seinen Funkstatistiken und unterstützt dabei zwei Anwendungsfälle für Berichte:
- Regelmäßige Berichte
- Ereignistrigger (Trigger für Start/Stopp des Streams und für die Linkqualität)
- BQR_Report_Action des Bluetooth-Befehls „Quality Report“: Mit diesem HCI-Befehl kann der Host eine einmalige Abfrage für den Qualitätsüberwachungsmodus, den Energieüberwachungsmodus oder einen erweiterten Modus für RF-Statistiken abrufen.
OCF: 0x15E
Befehlsparameter | Größe | Zweck |
---|---|---|
BQR_Report_Action |
1 Oktett |
Aktion zum Hinzufügen oder Löschen von Berichten zu Qualitätsereignissen, die im Parameter „BQR_Quality_Event_Mask“ festgelegt sind, oder zum Löschen aller.
0x00 – Hinzufügen
Wenn Sie „Löschen“ auswählen, werden Berichte zu bestimmten Qualitätsereignissen gelöscht. |
BQR_Quality_Event_Mask |
4 Oktette |
Bitmasken für die ausgewählten Berichte zu Qualitätsereignissen.
Bit 0: Legen Sie diesen Wert fest, um den Qualitätsüberwachungsmodus zu aktivieren. |
BQR_Minimum_Report_Interval |
2 Oktette |
Legen Sie das Mindestzeitintervall für die Berichterstellung zu Qualitätsereignissen für die ausgewählten Qualitätsereignisse fest. Die Controller-Firmware sollte das nächste Ereignis nicht innerhalb des definierten Zeitintervalls melden. Die Intervalleinstellung muss für die hinzugefügten Qualitätsereignisse geeignet sein.
Einheit: ms |
BQR_Vendor_Specific_Quality_Event_Mask |
4 Oktette |
Bitmasken für die ausgewählten anbieterspezifischen Berichte zu Qualitätsereignissen. Dieser Parameter ist nur gültig, wenn Bit 15 von BQR_Quality_Event_Mask gesetzt ist.
Bit 0 bis 31: Reserviert. |
BQR_Vendor_Specific_Trace_Mask |
4 Oktette |
Bitmasken für die ausgewählten anbieterspezifischen Trace-Berichte. Dieser Parameter ist nur gültig, wenn Bit 31 von BQR_Quality_Event_Mask gesetzt ist.
Bit 0 bis 31: Reserviert. |
Report_interval_multiple |
4 Oktette |
Der Multiplikator für BQR_Minimum_Report_Interval . Wenn dieser Wert >= 1 ist, hat das BQR-Berichtsintervall das Format BQR-Berichtsintervall = BQR_Minimum_Report_Interval × Report_interval_multiple. Die Controller-Firmware darf das nächste Ereignis nicht innerhalb des definierten Zeitintervalls melden. Die Intervalleinstellung gilt speziell für die hinzugefügten Qualitätsereignisse.
Einheit: ms BQR_Report_Interval größer als die Kapazität des Controllers ist, muss der Controller nach Abschluss des Befehls die maximale BQR_Report_Interval -Zeit zurückgeben.
|
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
Current_Quality_Event_Mask |
4 Oktette |
Gibt die aktuelle Bitmaskeneinstellung an. Bit 0: Der Modus für die Qualitätsüberwachung ist aktiviert. Bit 1: Die Berichterstellung für das Erreichen der LSTO ist aktiviert. Bit 2: Die Berichterstellung für A2DP-Audio-Ruckeln ist aktiviert. Bit 3: Die Berichterstellung für (e)SCO-Störungen bei der Sprachqualität ist aktiviert. Bit 4: Die Berichterstellung für Wurzelentzündungsereignisse ist aktiviert. Bit 5: Der Energiesparmodus ist aktiviert. Bit 6: Die Berichterstellung für Audio-Aussetzer bei LE-Audio ist aktiviert. Bit 7: Ereignis „Verbindungsaufbau fehlgeschlagen“. Bit 8: Legen Sie diese Einstellung fest, um den Ereignistrigger für den Modus „Erweiterte RF-Statistiken“ zu aktivieren. Bit 9: Legen Sie fest, um fortlaufende Berichte zu erweiterten Funkstatistiken zu aktivieren. Bit 10 bis 14: Reserviert. Bit 15: Die Berichterstellung für anbieterspezifische Qualitätsereignisse ist aktiviert. Bit 16: LMP/LL-Nachrichten-Trace ist aktiviert. Bit 17: Bluetooth-Multi-Link/Coex-Scheduling-Trace ist aktiviert. Bit 18: Der Mechanismus für Controller-Fehlerinformationen ist aktiviert. Bit 19 bis 30: Reserviert. Bit 31: Anbieterspezifisches Tracing ist aktiviert. |
Current_Vendor_Specific_Quality_Event_Mask |
4 Oktette | Gibt die aktuelle Bitmaskeneinstellung an. |
Current_Vendor_Specific_Trace_Mask |
4 Oktette | Gibt die aktuelle Bitmaskeneinstellung an. |
BQR_Report_interval |
4 Oktette | Gibt die aktuelle Bitmaskeneinstellung an. |
Current_Vendor_Specific_Trace_Mask |
4 Oktette |
Die Einstellung von BQR_Report_interval . Er muss der Mindestwert zwischen BQR_Minimum_Report_Interval * Report_interval_multiple oder dem maximal unterstützten Intervall des Controllers sein. |
Befehl für dynamischen Audiopuffer
Der dynamische Audio-Puffer reduziert Audiostörungen, indem die Audio-Puffergröße im Bluetooth-Controller je nach Situation geändert wird.
OCF: 0x15F
Audio-Pufferzeit abrufen
Sub OCF: 0x01
Mit diesem Befehl können Sie die Audio-Pufferzeit vom Bluetooth-Controller abrufen.
Befehlsparameter | Größe | Zweck |
---|---|---|
– | Leere Liste der Befehlsparameter |
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
Dynamic_Audio_Buffer_opcode |
1 Oktett | 0x01 – Audiopufferzeit abrufen |
Audio_Codec_Type_Supported |
4 Oktette |
Bitmasken für die unterstützten Codec-Typen Bit 0 – SBC Bit 1 – AAC Bit 2 – APTX Bit 3 – APTX HD Bit 4 – LDAC Bit 5–31 sind reserviert |
Audio_Codec_Buffer_Default_Time_For_Bit_0 |
2 Oktette |
Standardpufferzeit des Codec-Typs „Bit 0“, der in „Audio_Codec_Type_Supported“ angegeben ist. Dieser Wert muss 0 sein, wenn der Codectyp von Bit 0 nicht unterstützt wird. Einheit: ms |
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 |
2 Oktette |
Maximale Pufferzeit des Codec-Typs „Bit 0“, der in „Audio_Codec_Type_Supported“ angegeben ist. Dieser Wert muss 0 sein, wenn der Codectyp von Bit 0 nicht unterstützt wird. Einheit: ms |
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 |
2 Oktette |
Mindestpufferzeit des Codec-Typs „Bit 0“, der in „Audio_Codec_Type_Supported“ angegeben ist. Dieser Wert muss 0 sein, wenn der Codectyp von Bit 0 nicht unterstützt wird. Einheit: ms |
Audio_Codec_Buffer_Default_Time_For_Bit_1 |
2 Oktette |
Standardpufferzeit des Bit 1-Codec-Typs, der in „Audio_Codec_Type_Supported“ angegeben ist. Dieser Wert muss 0 sein, wenn der Bit 1-Codectyp nicht unterstützt wird. Einheit: ms |
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 |
2 Oktette |
Maximale Pufferzeit des Bit 1-Codec-Typs, der in „Audio_Codec_Type_Supported“ angegeben ist. Dieser Wert muss 0 sein, wenn der Bit 1-Codectyp nicht unterstützt wird. Einheit: ms |
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 |
2 Oktette |
Mindestpufferzeit des Codec-Typs „Bit 1“, der in „Audio_Codec_Type_Supported“ angegeben ist. Dieser Wert muss 0 sein, wenn der Bit 1-Codectyp nicht unterstützt wird. Einheit: ms |
...... | ...... | ...... |
Audio_Codec_Buffer_Default_Time_For_Bit_31 |
2 Oktette |
Standardpufferzeit des Bit 31-Codec-Typs, der in „Audio_Codec_Type_Supported“ angegeben ist. Dieser Wert muss 0 sein, wenn der Codectyp „Bit 31“ nicht unterstützt wird. Einheit: ms |
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 |
2 Oktette |
Maximale Pufferzeit des Bit 31-Codec-Typs, der in „Audio_Codec_Type_Supported“ angegeben ist. Dieser Wert muss 0 sein, wenn der Codectyp „Bit 31“ nicht unterstützt wird. Einheit: ms |
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 |
2 Oktette |
Mindestpufferzeit des Codec-Typs „Bit 31“, der in „Audio_Codec_Type_Supported“ angegeben ist. Dieser Wert muss 0 sein, wenn der Codectyp „Bit 31“ nicht unterstützt wird. Einheit: ms |
Audio-Pufferzeit festlegen
Sub OCF: 0x02
Mit diesem Befehl legen Sie die Audio-Pufferzeit für den Bluetooth-Controller fest.
Befehlsparameter | Größe | Zweck |
---|---|---|
Audio_Codec_Buffer_Time |
2 Oktette |
Angeforderte Audiopufferzeit für den aktuell verwendeten Codec. Einheit: ms |
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
Dynamic_Audio_Buffer_opcode |
1 Oktett | 0x02 – Audiopufferzeit festlegen |
Audio_Codec_Buffer_Time |
2 Oktette |
Aktuelle Audiopufferungszeit im Bluetooth-Controller. Einheit: ms |
HCI-Ereignis (anbieterspezifisch)
In einigen Fällen sind anbieterspezifische HCI-Ereignisse erforderlich. Siehe Abbildung 5.4 auf Seite 1897 der BT Core 5.2-Spezifikation. Ereignisparameter 0 enthält immer den ersten Unterereigniscode, anhand dessen der Rest des HCI-Ereignisses decodiert wird.
Ereignisparameter | Größe | Zweck |
---|---|---|
HCI_vendor_specific_event_code |
1 Oktett | 0xFF |
sub_event_code |
1 Oktett | Ein Unterereigniscode hat eine Größe von 1 Oktett und ist das Byte, das im HCI-Ereignispaket direkt nach der Parameterlänge folgt. |
Unterereignis „Speichergrenzwert unterschritten“
Dieses Ereignis gibt an, dass der Speichergrenzwert überschritten wurde.
Subevent-Code = 0x54
Parameter für untergeordnete Ereignisse | Größe | Zweck |
---|---|---|
Keine |
LE-Unterereignis „Mehrere Werbestatus geändert“
Dieses Ereignis gibt an, dass sich der Status einer Werbeinstanz geändert hat. Derzeit wird dieses Ereignis nur verwendet, um anzugeben, welche Werbeinstanz aufgrund einer Verbindung angehalten wurde.
Subevent-Code = 0x55
Parameter für untergeordnete Ereignisse | Größe | Zweck |
---|---|---|
Advertising_instance |
1 Oktett |
Identifiziert die jeweilige Anzeigeninstanz. Gültige Werte sind 0 bis max_advt_instances −1.
|
State_Change_Reason |
1 Oktett | 0x00: Verbindung empfangen |
Connection_handle |
2 Oktette |
Gibt die Verbindung an, die zur Deaktivierung der advt -Instanz geführt hat (0xFFFF, wenn ungültig)
|
Unterereignis „LE advertisement tracking“
Dieses Ereignis gibt an, wann ein Werbetreibender gefunden oder verloren wurde.
Untergeordneter Ereigniscode = 0x56
Parameter für untergeordnete Ereignisse | Größe | Zweck |
---|---|---|
APCF_Filter_Index |
1 Oktett | Filterindex (0, max_filter -1) |
Advertiser_State |
1 Oktett |
0x00: Werbetreibender gefunden 0x01: Werbetreibender verloren |
Advt_Info_Present |
1 Oktett |
0x00: Werbetreibendeninformationen (Advt_Info ) vorhanden0x01: Werbetreibendeninformationen ( Advt_Info ) nicht vorhanden
|
Advertiser_Address |
6 Oktette | Öffentliche oder zufällige Adresse |
Advertiser_Address_Type |
1 Oktett |
0x00: Öffentliche Adresse 0x01: Zufällige Adresse |
Advt_Info |
Tx_Pwr[0] : 1 OktettRSSI[0] : 1 OktettTimestamp[0] : 2 OktetteAdv packet_len[0] : 1 OktettAdv_packet[0] : Adv_packet_len OktetteScan_data_resp_len[0] : 1 OktettScan_data_resp[0] : Scan_data_resp Oktette
|
Unterereignis „Controller-Informationen zur Fehlerbehebung“
Dieses Ereignis wird von einem Controller verwendet, um einem Host binäre Informationen zur Fehlerbehebung zur Verfügung zu stellen.
Subevent-Code = 0x57
Parameter für untergeordnete Ereignisse | Größe | Zweck |
---|---|---|
debug_block_byte_offset_start |
2 Oktette | Debug-Block-Byte-Offset vom Anfang |
last_block |
1 Oktett |
0x00: Es sind weitere Debug-Daten vorhanden 0x01: Letzter Binärblock; keine weiteren Debug-Daten |
cur_pay_load_sz |
2 Oktette | Binäre Blockgröße in einem aktuellen Ereignis |
Debug_Data |
Variable | Debug-Daten von cur_payload_sz |
Unterereignis „Bluetooth Quality Report“
Dieses Ereignis weist auf eines der folgenden Probleme hin: Es ist ein Bluetooth-Qualitätsereignis aufgetreten, der Controller hat den LMP-/LL-Nachrichten-Trace und den Bluetooth-Multi-Link/Coex-Scheduling-Trace hochgeladen oder der Controller hat Debug-Informationsdaten gedumpt.
Unterereigniscode = 0x58 [Quality_Report_Id = 0x01 bis 0x04, Ereignis im Zusammenhang mit der Linkqualität]
Parameter für untergeordnete Ereignisse | Größe | Zweck |
---|---|---|
Quality_Report_Id |
1 Oktett |
0x01: Qualitätsberichte zum Monitormodus. 0x02: LSTO wird erreicht. 0x03: A2DP-Audio mit Aussetzern. 0x04: (e)SCO-Stimme abgehackt. 0x05 bis 0x06: Reserviert. 0x07: LE-Audio ist abgehackt. 0x08: Verbindung fehlgeschlagen. 0x09 bis 0xFF: Reserviert. |
Packet_Types |
1 Oktett |
0x01: ID 0x02: NULL 0x03: POLL 0x04: FHS 0x05: HV1 0x06: HV2 0x07: HV3 0x08: DV 0x09: EV3 0x0A: EV4 0x0B: EV5 0x0C: 2-EV3 0x0D: 2-EV5 0x0E: 3-EV3 0x0F: 3-EV5 0x11: DH1 0x12: DM3 0x13: DH3 0x14: DM5 0x15: DH5 0x16: AUX1 0x17: 2-DH1 0x18: 2-DH3 0x19: 2-DH5 0x1A: 3-DH1 0x1B: 3-DH3 0x1C: 3-DH5 0x1D bis 0x50: Reserviert 0x51: ISO-Paket 0x52 bis 0xFF: Reserviert |
Connection_Handle |
2 Oktette | ACL-/(e)SCO-/ISO-Verbindungs-Handle. |
Connection_Role |
1 Oktett |
Ausführende Rolle für die Verbindung. 0x00: Zentral 0x01: Peripherie 0x02 bis 0xFF: Reserviert. |
TX_Power_Level |
1 Oktett |
Aktuelle Sendeleistung für den angegebenen Connection_Handle.
Dieser Wert muss mit dem Wert übereinstimmen, den der Controller auf den HCI-Befehl „HCI_Read_Transmit_Power_Level“ zurückgibt. |
RSSI |
1 Oktett |
[in dBm]
RSSI-Wert (Received Signal Strength Indication) für den angegebenen Connection_Handle. |
SNR |
1 Oktett |
[in dB]
Der SNR-Wert (Signal-Rausch-Verhältnis) für den angegebenen Connection_Handle. |
Unused_AFH_Channel_Count |
1 Oktett |
Gibt die Anzahl der ungenutzten Kanäle in AFH_channel_map an. 0x4F bis 0xFF: Reserviert. |
AFH_Select_Unideal_Channel_Count |
1 Oktett |
Gibt die Anzahl der Kanäle an, die gestört sind und eine schlechte Qualität haben, aber trotzdem für die automatische Kanalsuche ausgewählt werden. Die Bluetooth-Spezifikation erlaubt eine Mindestanzahl von 20 Kanälen. Selbst wenn also alle 79 Kanäle gestört sind und eine schlechte Qualität haben, muss der Controller mindestens 20 Kanäle für die automatische Kanalsuche auswählen. |
LSTO |
2 Oktette |
Aktuelle Einstellung für das Zeitlimit der Link-Überwachung. Zeit = N × 0,625 ms Zeitraum: 0,625 ms bis 40,9 s |
Connection_Piconet_Clock |
4 Oktette |
Piconet-Taktgeber für den angegebenen Connection_Handle. Dieser Wert muss mit dem Wert übereinstimmen, den der Controller auf den HCI-Befehl „HCI_Read_Clock“ mit dem Parameter „Which_Clock“ von 0x01 (Piconet-Takt) zurückgibt. Einheit: N * 0,3125 ms (1 Bluetooth-Takt) |
Retransmission_Count |
4 Oktette |
Die Anzahl der Wiederholungen seit dem letzten Ereignis. Dieser Zähler wird nach der Meldung an den Host zurückgesetzt. |
No_RX_Count |
4 Oktette |
Keine RX-Anzahl seit dem letzten Ereignis. Die Anzahl erhöht sich, wenn zum geplanten Zeitpunkt kein Paket empfangen wird oder das empfangene Paket beschädigt ist. Dieser Wert wird nach der Meldung an den Host zurückgesetzt. |
NAK_Count |
4 Oktette |
Anzahl der NAKs (Negative Acknowledge) seit dem letzten Ereignis. Dieser Zähler wird nach der Meldung an den Host zurückgesetzt. |
Last_TX_ACK_Timestamp |
4 Oktette |
Zeitstempel der letzten TX-Bestätigung. Sie basiert auf der Bluetooth-Taktzeit der Piconet-Zentrale (CLK). Einheit: N * 0,3125 ms (1 Bluetooth-Takt) |
Flow_Off_Count |
4 Oktette |
Gibt an, wie oft der Controller seit dem letzten Ereignis das Signal „Flow-off“ (STOP) empfangen hat. Dieser Zähler wird nach der Meldung an den Host zurückgesetzt. |
Last_Flow_On_Timestamp |
4 Oktette |
Zeitstempel der letzten Weiterleitung (GO). Sie basiert auf der Bluetooth-Taktzeit der Piconet-Zentrale (CLK). Einheit: N * 0,3125 ms (1 Bluetooth-Takt) |
Buffer_Overflow_Bytes |
4 Oktette |
[in Byte]
Anzahl der Pufferüberläufe seit dem letzten Ereignis. |
Buffer_Underflow_Bytes |
4 Oktette |
[in Byte]
Anzahl der Unterlaufszählungen seit dem letzten Ereignis. |
bdaddr |
6 Oktette | Adresse des Remote-Geräts |
cal_failed_item_count |
1 Oktett | Die Anzahl der Elemente, bei denen die Kalibrierung fehlgeschlagen ist |
TX_Total_Packets |
4 Oktette | Die Anzahl der gesendeten Pakete. |
TX_UnAcked_Packets |
4 Oktette |
Die Anzahl der Pakete, die keine Bestätigung erhalten. Dieser Wert wird zurückgesetzt, nachdem Sie den Fehler gemeldet haben. |
TX_Flushed_Packets |
4 Oktette |
Die Anzahl der Pakete, die nicht über den Flush-Punkt gesendet werden. Dieser Wert wird zurückgesetzt, nachdem Sie den Fehler gemeldet haben. |
TX_Last_Subevent_Packets |
4 Oktette |
Die Anzahl der Pakete, über die die Sicherungsschicht im letzten Unterereignis eines CIS-Ereignisses eine CIS-Daten-PDU überträgt. Dieser Wert wird zurückgesetzt, nachdem Sie den Fehler gemeldet haben. Der Wert ist null, wenn kein gültiger Wert für den Link vorhanden ist. |
CRC_Error_Packets |
4 Oktette |
Die Anzahl der empfangenen Pakete mit CRC-Fehlern seit dem letzten Ereignis. Dieser Wert wird zurückgesetzt, nachdem Sie den Fehler gemeldet haben. |
RX_Duplicate_Packets |
4 Oktette |
Die Anzahl der duplizierten (nochmals gesendeten) Pakete, die seit dem letzten Ereignis empfangen wurden. Dieser Wert wird zurückgesetzt, nachdem Sie den Fehler gemeldet haben. |
RX_Unreceived_Packets |
4 Oktette |
Die Anzahl der nicht empfangenen Pakete entspricht dem Parameter des LE READ ISO Link Quality-Befehls (siehe Bluetooth Core Specification Version 5.4). Die zugehörigen Streams sind CIS und BIS. Wenn dieser Wert erhöht wird, empfängt die Sicherungsschicht keine bestimmte Nutzlast bis zum Flush-Punkt (bei einem CIS) oder am Ende des Ereignisses, mit dem sie verknüpft ist (bei einem BIS; siehe Bluetooth Core Specification Version 5.4, Band 6, Teil B, Abschnitt 4.4.6.6). |
Coex_Info_Mask |
2 Oktette |
Bit 0 – CoexInvolvement: Wird gesetzt, wenn bei der Generierung dieses Berichts Coex-Aktivitäten vermutet werden (z. B. A2DP-Chops und Approaching LSTO). Bit 1 – WL 2G Radio Active: Wird gesetzt, um anzuzeigen, dass WLAN 2G Radio aktiv ist. Bit 2 – WL 2G Connected: Wird gesetzt, um anzuzeigen, dass das WLAN 2G-Funkmodul aktiv und verbunden ist. Bit 3 – WL 5G/6G Radio Active: Gibt an, dass das WLAN 5G/6G-Funkschnittstellenmodul aktiv ist. Bit 4–15 – Reserviert |
Anbieterspezifischer Parameter | (Gesamtlänge des Parameters – TBD) * Oktette | Damit der Controlleranbieter weitere anbieterspezifische Parameter abrufen kann. |
Unterereigniscode = 0x58 [Quality_Report_Id = 0x05, Ereignis „Wurzelentzündung“]
Dieses Ereignis gibt an, dass bei der Bluetooth-HAL oder dem Controller ein schwerwiegender Fehler aufgetreten ist und der Bluetooth-Stack diese Situation aufzeichnen und neu starten muss. Der Controller muss in jedem Fall ein Root_Inflammation_Event an den Bluetooth-Stack senden, bevor er das erste Fragment der Debug-Info-Ereignisse sendet.
Der Parameter „Error_Code“ enthält einen von HAL/Controller gemeldeten Fehlercode. Wenn es sich um einen herstellerspezifischen Fehler des Chipsatzes handelt, ist der Wert „0“. Der Vendor_Specific_Error_Code enthält einen herstellerspezifischen Fehlercode des Chipsatzes von HAL/Controller. Er sollte auf „0“ gesetzt werden, wenn der Parameter „Error_Code“ nicht „0“ ist. Die Parameter „Error_Code“ und „Vendor_Specific_Error_Code“ dürfen nicht beide den Wert „0“ haben.
Parameter für untergeordnete Ereignisse | Größe | Zweck |
---|---|---|
Quality_Report_Id |
1 Oktett |
0x00 bis 0x04: Reserviert. 0x05: Wurzelentzündung. 0x06 bis 0xFF: Reserviert. |
Error_Code |
1 Oktett |
0x00: Der Chipsatzanbieter-spezifische Fehlercode ist enthalten. 0x01 bis 0xFF: Es ist ein Controllerfehler aufgetreten. Eine Liste der Fehlercodes und Beschreibungen finden Sie in der Bluetooth-Spezifikation [Band 2] Teil D, „Error Codes“ (Fehlercodes). |
Vendor_Specific_Error_Code |
1 Oktett |
0x00: Es ist kein herstellerspezifischer Fehlercode für den Chipsatz enthalten. 0x01 bis 0xFF: Chipsatzanbieterspezifischer Fehlercode. |
Anbieterspezifischer Parameter | (Gesamtlänge des Parameters – 4) * Oktette | Damit der Controlleranbieter weitere anbieterspezifische Parameter abrufen kann. |
Unterereigniscode = 0x58 [Quality_Report_Id = 0x11 bis 0x13, Protokoll-Dump-bezogenes Ereignis]
Parameter für untergeordnete Ereignisse | Größe | Zweck |
---|---|---|
Quality_Report_Id |
1 Oktett |
0x00 bis 0x10: Reserviert. 0x11: LMP/LL-Nachrichten-Trace. 0x12: Bluetooth-Multi-Link/Coex-Planungs-Trace. 0x13: Datendump mit Controller-Debug-Informationen. 0x14 bis 0xFF: Reserviert. |
Connection_Handle |
2 Oktette | Verbindungs-Handle. |
Anbieterspezifischer Parameter | (Gesamtlänge des Parameters – 4) * Oktette | Anbieterspezifisches Format für LMP-Nachrichten-Trace, Bluetooth-Multi-Link/Coex-Scheduling-Trace und Controller-Debug-Informations-Datadump. |
Unterstützung mehrerer Werbetreibender
Die Unterstützung mehrerer Werbetreibender hat folgende Ziele:
-
Unterstützung mehrerer Anzeigen (
max_advt_instances
) - Unterschiedliche Übertragungsleistungen für einen variablen Bereich
- Unterschiedliche Werbeinhalte
- Eine individuelle Antwort für jeden Werbetreibenden
- Datenschutz (nicht nachvollziehbar) für jeden Werbetreibenden
- Verbindbar
Um diese Spezifikation an bestehende Standards anzupassen, werden die folgenden anbieterspezifischen Befehle bereitgestellt. Sie stammen aus der Bluetooth Core 4.1-Spezifikation.
LE_Multi_Advt_Command
OCF: 0x154
Befehlsparameter | Größe | Zweck |
---|---|---|
Multi_advt_opcode |
1 Oktett |
0x01 – Set_Advt_Param_Multi_Sub_Cmd 0x02 – Set_Advt_Data_Multi_Sub_Cmd 0x03 – Set_Scan_Resp_Data_Multi_Sub_Cmd 0x04 – Set_Random_Addr_Multi_Sub_Cmd 0x05 – Set_Advt_Enable_Multi_Sub_Cmd
|
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
Multi_advt_opcode |
1 Oktett |
0x01 – Set_Advt_Param_Multi_Command 0x02 – Set_Advt_Data_Multi_Command 0x03 – Set_Scan_Resp_Data_Multi_Command 0x04 – Set_Random_Addr_Multi_Command 0x05 – Set_Advt_Enable_Multi_Command
|
LE_Multi_Advt_Command: Set_Advt_Param_Multi_Sub_Cmd
Referenz: Bluetooth Core 4.1 Specification, Seite 964 (LE Set Advertising Parameter Command)
Sub OCF: 0x01
Parameter für Unterbefehl | Größe | Zweck |
---|---|---|
Advertising_Interval_Min |
Pro Spezifikation | Pro Spezifikation |
Advertising_Interval_Max |
Pro Spezifikation | Pro Spezifikation |
Advertising_Type |
Pro Spezifikation | Pro Spezifikation |
Own_Address_Type |
Pro Spezifikation | Pro Spezifikation |
Own_Address |
Pro Spezifikation | Pro Spezifikation |
Direct_Address_Type |
Pro Spezifikation | Pro Spezifikation |
Direct_Address |
Pro Spezifikation | Pro Spezifikation |
Advertising_Channel_Map |
Pro Spezifikation | Pro Spezifikation |
Adverstising_Filter_Policy |
Pro Spezifikation | Pro Spezifikation |
Advertising_Instance |
1 Oktett | Gibt an, ob die oben genannten Parameter für eine Instanz gelten |
Tx_power |
1 Oktett |
Transmit_Power Einheit – in dBm (ganzzahlig) Bereich (–70 bis +20) |
Der Parameter Own_Address
kann eine vom Host konfigurierte Adresse sein, die beim Einrichten dieser Instanz mit mehreren Anzeigen festgelegt wurde. So kann zum Zeitpunkt der Übertragung des ersten Beacons eine auflösbare private Adresse vorhanden sein. Die Anzeigenauslieferung auf einer Instanz wird unabhängig von der Verbindung fortgesetzt. Der BT-Stack des Hosts kann einen Befehl zum Starten der Werbung auf einer Instanz nach der Verbindung senden.
Gemäß dem obigen Befehl wird für diesen Befehl ein „Command Complete“-Ereignis generiert, wie in der Bluetooth Core 4.1-Spezifikation angegeben. Der Controller antwortet mit einem Fehlercode (ungültiger Parameter), wenn die Werbeinstanz oder die Tx_Power
-Parameter ungültig sind.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
Multi_advt_opcode |
1 Oktett | 0x01 [Set_Advt_Param_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd
Referenz: Bluetooth Core 4.1 Specification, Seite 969 (LE Set Advertising Data Command)
Sub OCF: 0x02
Parameter für Unterbefehl | Größe | Zweck |
---|---|---|
Advertising_Data_Length |
Pro Spezifikation | Pro Spezifikation |
Advertising_Data |
Pro Spezifikation | Pro Spezifikation |
Advertising_Instance |
1 Oktett | Gibt an, ob die oben genannten Parameter für eine Instanz gelten |
Gemäß dem obigen Befehl wird für diesen Befehl ein „Command Complete“-Ereignis generiert, wie in der Bluetooth Core 4.1-Spezifikation angegeben. Der Controller antwortet mit einem Fehlercode, wenn die Werbeinstanz oder die Tx_Power
-Parameter ungültig sind.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
Multi_advt_opcode |
1 Oktett | 0x02 [Set_Advt_Data_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd
Referenz: Bluetooth Core 4.1 Specification, Seite 970 (LE Set Scan Response Data Command)
Sub OCF: 0x03
Parameter für Unterbefehl | Größe | Zweck |
---|---|---|
Scan_Response_Data_Length |
Pro Spezifikation | Pro Spezifikation |
Scan_Response_Data |
Pro Spezifikation | Pro Spezifikation |
Advertising_Instance |
1 Oktett | Gibt an, ob die oben genannten Parameter für eine Instanz gelten |
Gemäß dem obigen Befehl wird für diesen Befehl ein „Command Complete“-Ereignis generiert, wie in der Bluetooth Core 4.1-Spezifikation angegeben. Der Controller antwortet mit einem Fehlercode (ungültiger Parameter), wenn die Werbeinstanz oder die Tx_Power
-Parameter ungültig sind.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
Multi_advt_opcode |
1 Oktett | 0x03 [Set_Scan_Resp_Data_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd
Referenz: Bluetooth Core 4.1 Specification, Seite 963 (LE Set Random Address Command)
Sub OCF: 0x04
Parameter für Unterbefehl | Größe | Zweck |
---|---|---|
Zufällige Adresse | Pro Spezifikation | Pro Spezifikation |
Advertising_Instance |
1 Oktett | Gibt an, ob die oben genannten Parameter für eine Instanz gelten |
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
Multi_advt_opcode |
1 Oktett | 0x04 [Set_Random_Addr_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd
Referenz: Bluetooth Core 4.1 Specification, Seite 971 (LE Set Advertise Enable Command in dieser Kernspezifikation)
OCF: 0x05
Parameter für Unterbefehl | Größe | Zweck |
---|---|---|
Advertising_Enable |
1 Oktett | Ein Wert von „1“ bedeutet „aktivieren“. Alle anderen Werte bedeuten „Deaktivieren“. |
Advertising_Instance |
1 Oktett | Gibt an, ob die oben genannten Parameter für eine Instanz gelten. Instanz 0 steht für eine standardmäßige HCI-Instanz. |
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
Multi_advt_opcode |
1 Oktett | 0x05 [Set_Advt_Enable_Multi_Sub_Cmd] |
Auslagerte Auflösung privater Adresse
Diese Funktion löst eine private Adresse in der Controller-Firmware oder -Hardware auf. Das bietet folgende Vorteile:
- Latenz, die beim Host bei der Auflösung einer privaten Adresse auftritt
- Energie sparen, indem der Host nicht geweckt wird
LE_Set_RPA_Timeout
OCF: 0x15C
Befehlsparameter | Größe | Zweck |
---|---|---|
LE_local_IRK |
16 Oktett | Die lokale Geräte-IRK, die zum Generieren der zufällig auflösbaren Adresse(n) verwendet wurde. |
tRPA_min |
2 Oktette |
Das minimale Zeitlimit für die RPA-Generierung in Sekunden. Der Controller muss neue auflösbare Adressen für alle Werbe-/Scan-/Verbindungsereignisse generieren, die nach diesem Zeitlimit auftreten. Gültiger Bereich: 300–1.800 |
tRPA_max |
2 Oktette |
Die maximale Zeitüberschreitung für die RPA-Generierung in Sekunden. Der Controller muss vor Ablauf dieser Zeitüberschreitung neue auflösbare Adressen für alle Werbe-, Scan- und Verbindungsereignisse generieren. Gültiger Bereich: tRPA_min –1.800
|
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett |
Der Status des Befehls. Empfohlene HCI-Statuswerte: 0x00 Erfolg 0x01 Unbekannter Befehl (falls nicht unterstützt) 0x12 Ungültige Befehlsparameter (falls Parameter außerhalb des angegebenen Bereichs liegen) |
LE_RPA_offload_Command
OCF: 0x155
Befehlsparameter | Größe | Zweck |
---|---|---|
RPA_offload_opcode |
1 Oktett |
0x1 – Kundenspezifische Funktion aktivieren 0x2 – IRK der Liste hinzufügen 0x3 – IRK aus der Liste entfernen 0x4 – IRK-Liste löschen 0x5 – IRK-Listeneintrag lesen |
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
Event_RPA_offload_opcode |
1 Oktett |
0x1 – Kundenspezifische Funktion aktivieren 0x2 – IRK der Liste hinzufügen 0x3 – IRK aus der Liste entfernen 0x4 – IRK-Liste löschen 0x5 – IRK-Listeneintrag lesen |
LE_RPA_offload: Enable_cust_specific_sub_Command
Sub OCF: 0x01
Parameter für Unterbefehl | Größe | Zweck |
---|---|---|
enable_customer_specific_feature_set |
1 Oktett |
0x01 – Funktion für ausgelagerte RPA aktivieren 0x00 – Funktion für ausgelagerte RPA deaktivieren |
RPA-Offload muss vom Host aktiviert werden, je nach Chipfunktion. Weitere Informationen finden Sie im Abschnitt zum LE_Get_Vendor_Capabilities_Command
.
Jeder Chip kann eine unterschiedliche max_irk_list_sz
in der Firmware haben.
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
Event_cust_specific_feature_opcode |
1 Oktett | 0x01 [Kundenspezifische Funktion aktivieren] |
LE_RPA_offload: Add_IRK_to_list_sub_Command
Sub OCF: 0x02
Parameter für Unterbefehl | Größe | Zweck |
---|---|---|
LE_IRK |
16 Oktette | LE IRK (1. Byte LSB) |
Address_Type |
1 Oktett |
0: Öffentliche Adresse 1: Zufällige Adresse |
LE_Device_Address |
6 Oktette | Öffentliche oder zufällige Adresse, die mit dem IRK verknüpft ist (1. Byte, LSByte) |
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
Event_cust_specific_feature_opcode |
1 Oktett | 0x02 [IRK zur Liste hinzufügen] |
LE_IrkList_AvailableSpaces |
1 Oktett | Verfügbare Einträge in der IRL-Liste nach dem aktuellen Vorgang |
LE_RPA_offload: Remove_IRK_to_list_sub_Command
Sub OCF: 0x03
Parameter für Unterbefehl | Größe | Zweck |
---|---|---|
Address_Type |
1 Oktett |
0: Öffentliche Adresse 1: Zufällige Adresse |
LE_Device_Address |
6 Oktette | Öffentliche oder zufällige Adresse, die mit dem IRK verknüpft ist |
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
Event_cust_specific_feature_opcode |
1 Oktett | 0x03 [IRK aus der Liste entfernen] |
LE_IrkList_AvailableSpaces |
1 Oktett | Verfügbare Einträge in der IRL-Liste nach dem aktuellen Vorgang |
LE_RPA_offload: Clear_IRK_list_sub_Command
Sub OCF: 0x04
Parameter für Unterbefehl | Größe | Zweck |
---|---|---|
Keine |
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
Event_cust_specific_feature_opcode |
1 Oktett | 0x04 [IRK-Liste löschen] |
LE_IrkList_AvailableSpaces |
1 Oktett |
Verfügbare Einträge in der IRL-Liste nach dem aktuellen Vorgang [max_irk_list_sz]
|
LE_RPA_offload: Read_IRK_list_sub_Command
Sub OCF: 0x05
Parameter für Unterbefehl | Größe | Zweck |
---|---|---|
LE_read_IRK_list_entry-index |
1 Oktett | Index der IRK-Liste [0, max_irk_list_sz-1] |
Für diesen Befehl wird ein Ereignis vom Typ „Befehl abgeschlossen“ generiert.
Rückgabeparameter | Größe | Zweck |
---|---|---|
Status |
1 Oktett | Status „Befehl abgeschlossen“ |
Event_cust_specific_feature_opcode |
1 Oktett | 0x05 [IRK-Listeneintrag lesen] |
LE_Read_IRK_List_entry |
1 Oktett | Index der IRK, die der Host zurücklesen möchte (maximale Größe der IRK-Liste ist 32) |
LE_IRK |
16 Oktette | IRK-Wert |
Address_Type |
1 Oktett |
0: Öffentliche Adresse 1: Zufällige Adresse |
LE_Device_Address |
6 Oktette | Öffentliche oder zufällige Adresse, die mit dem IRK verknüpft ist |
LE_Resolved_Private_Address |
6 Oktette | Aktuelle auflösbare private Adresse dieses IRK |