Wymagania dotyczące interfejsu HCI

Interfejs hosta kontrolera (HCI) służy do interakcji z kontrolerem Bluetooth.

Ten dokument zawiera listę wymagań HCI dotyczących Bluetootha (BT) i Bluetootha Low Energy (BLE). Celem jest zapewnienie zgodności dostawców hosta i sterownika BT z tymi wymaganiami platformy, aby można było korzystać z zestawu funkcji opisanego poniżej.

W tym dokumencie specyfikacja Bluetooth Core 5.2 jest określana jako „specyfikacja”. Specyfikacja Bluetooth Core 5.2 jest dostępna na stronie internetowej Bluetooth SIG wraz z innymi przyjętymi dokumentami.

Omówienie ogólne

Funkcje i konfiguracja układu

Jako otwarta platforma Android ma wiele wersji oprogramowania, producentów OEM, dostawców oraz możliwości platform i układów scalonych.

Aby umożliwić zarządzanie różnorodnym środowiskiem i przenoszeniem, w tym dokumencie opisano filozofię projektowania, która pozwala kontrolerom BT udostępniać swoje możliwości (poza standardową specyfikacją Bluetooth Core 5.2). Hostowy moduł BT może następnie używać tych funkcji do określania, które funkcje włączyć.

Obsługa otwartych standardów

Jednym z celów Androida jest obsługa otwartych standardów po zatwierdzeniu w specyfikacji Bluetooth. Jeśli funkcja opisana poniżej stanie się dostępna w ramach standardowych metod HCI w przyszłej specyfikacji Bluetooth, będziemy dążyć do tego, aby stała się domyślnym rozwiązaniem.

Funkcje dostawcy

Polecenie specyficzne dla dostawcy: LE_Get_Vendor_Capabilities_Command

Pole polecenia kodu operacji (OCF): 0x153

Parametr polecenia Rozmiar Cel
Nie dotyczy Pusta lista poleceń

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
max_advt_instances
(Wycofane)
1 oktet Liczba obsługiwanych wystąpień reklamy.

Zarezerwowane po wersji 0.98.
Ten parametr jest wycofany w specyfikacji funkcji Google w wersji 0.98 i nowszych na rzecz rozszerzonej reklamy LE dostępnej w specyfikacji BT w wersji 5.0 i nowszych.
offloaded_resolution_of_private-address
(Wycofane)
1 oktet Możliwości procesora BT w RPA.
Jeśli jest obsługiwany przez chip, musi zostać włączony przez hosta.
0 = Nieobsługa
1 = Obsługa

Zarezerwowane po wersji 0.98.
Ten parametr jest wycofany w specyfikacji funkcji Google w wersji 0.98 i wyższych na rzecz funkcji dotyczącej prywatności dostępnej w specyfikacji BT w wersji 4.2 lub nowszej.
total_scan_results_storage 2 oktety Miejsce na dane wyników skanowania w bajtach
max_irk_list_sz 1 oktet Liczba wpisów IRK obsługiwanych przez oprogramowanie układowe
filtering_support 1 oktet Obsługa filtrowania w kontrolerze
0 = Nieobsługiwane
1 = Obsługiwane
max_filter 1 oktet Liczba obsługiwanych filtrów
activity_energy_info_support 1 oktet Obsługuje raportowanie informacji o aktywności i energii
0 = Nieobsługuje
1 = Obsługuje
version_supported 2 oktety Określa wersję obsługiwanej specyfikacji funkcji Google
byte[0] = numer głównej wersji
byte[1] = numer podwersji

v1.04
byte[0] = 0x01
byte[1] = 0x04
total_num_of_advt_tracked 2 oktety Łączna liczba reklamodawców śledzonych na potrzeby OnLost/OnFound
extended_scan_support 1 oktet Obsługuje rozszerzone okno i interwał skanowania
debug_logging_supported 1 oktet Obsługuje rejestrowanie binarnych informacji debugowania z kontrolera
LE_address_generation_offloading_support
(Wycofane)
1 oktet 0 = nieobsługiwane
1 = obsługiwane

Zarezerwowane po wersji 0.98.
Ten parametr jest wycofany w specyfikacji funkcji Google w wersji 0.98 i wyższych na rzecz funkcji dotyczącej prywatności dostępnej w specyfikacji BT w wersji 4.2 lub nowszej.
A2DP_source_offload_capability_mask 4 paź Maski bitowe obsługiwanych typów kodeków
Bit 0 – SBC
Bit 1 – AAC
Bit 2 – APTX
Bit 3 – APTX HD
Bit 4 – LDAC
Bity 5–31 są zarezerwowane
bluetooth_quality_report_support 1 oktet Obsługuje raportowanie zdarzeń jakości Bluetooth
0 = Nieobsługuje
1 = Obsługuje
dynamic_audio_buffer_support 4 oktety Obsługuje dynamiczny bufor audio w kontrolerze Bluetooth
Maski bitowe dla obsługiwanych typów kodeków
Bit 0 – SBC
Bit 1 – AAC
Bit 2 – APTX
Bit 3 – APTX HD
Bit 4 – LDAC
Bity 5–31 są zarezerwowane
a2dp_offload_v2_support 1 oktet Obsługuje polecenia A2DP offload v2 w kontrolerze Bluetooth (patrz Rozpocznij odciążanie A2DP, Zatrzymaj odciążanie A2DP).
0 = Nieobsługiwane
1 = Obsługiwane

Wyniki skanowania zbiorczego

Celem projektu jest ulepszanie sposobu dostarczania do hosta powiadomień o zdarzeniach odpowiedzi na skanowanie Bluetooth LE w celu oszczędzania energii w hostie.

Zmniejszenie częstotliwości powiadamiania przez kontroler procesora aplikacji hosta o wynikach skanowania pozwala procesorowi aplikacji hosta dłużej pozostawać w stanie bezczynności lub uśpienia. Pozwala to zmniejszyć zużycie energii w hostie. Zwracany parametr total_scan_results_storage funkcji LE_Get_Vendor_Capabilities_Command wskazuje, że chip ma możliwość przechowywania wyników skanowania.

Ta funkcja umożliwia zarządzanie i konfigurowanie funkcji przechowywania wyników skanowania LE w sterowniku Bluetooth. Magazyn służy do tymczasowego grupowania danych reklamy oraz skanowania danych i metadanych, które są odbierane przez kontroler na potrzeby późniejszego przekazania do hosta.

Oprogramowanie sprzętowe musi obsługiwać 2 typy grupowania, które mogą być stosowane jednocześnie:

  • Skrócone. Zawiera te elementy informacji: {MAC, TX Power, RSSI, Timestamp}
  • Pełne. Zawiera te elementy informacji: {MAC, TX Power, RSSI, Timestamp, Adv Data, Scan Response}

LE_Batch_Scan_Command

OCF: 0x156

Parametr polecenia Rozmiar Cel
Batch_Scan_opcode 1 oktet 0x1 – Włączanie funkcji dla konkretnego klienta
0x2 – Ustawianie parametrów przechowywania zbiorczego skanowania
0x3 – Ustawianie parametrów zbiorczego skanowania
0x4 – Czytanie parametrów wyników zbiorczego skanowania

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”. Włączenie funkcji dotyczącej konkretnego klienta nie uruchamia skanowania.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
Batch_Scan_opcode 1 oktet 0x1 – Włączanie funkcji dla konkretnego klienta
0x2 – Ustawianie parametrów przechowywania zbiorczego skanowania
0x3 – Ustawianie parametrów zbiorczego skanowania
0x4 – Czytanie parametrów wyników zbiorczego skanowania

LE_Batch_Scan_Command: Enable customer-specific feature

Sub OCF: 0x01

Parametr podrzędnego polecenia Rozmiar Cel
enable_customer_specific_feature_set 1 oktet 0x01 – włączanie funkcji zbiorczego skanowania
0x00 – wyłączanie funkcji zbiorczego skanowania

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
Batch_Scan_opcode 1 oktet 0x1 – Włączanie funkcji dla konkretnego klienta
0x2 – Ustawianie parametrów przechowywania zbiorczego skanowania
0x3 – Ustawianie parametrów zbiorczego skanowania
0x4 – Czytanie parametrów wyników zbiorczego skanowania

LE_Batch_Scan_Command: Set batch scan storage parameter subcommand

Sub OCF: 0x02

Parametr podrzędnego polecenia Rozmiar Cel
Batch_Scan_Full_Max 1 oktet Maksymalna ilość miejsca na dane (w %) przydzielona do pełnego stylu
[Zakres: 0-100]
Batch_Scan_Truncated_Max 1 oktet Maksymalna ilość miejsca na dane (w %) przydzielona do stylu ściętego
[Zakres: 0–100]
Batch_Scan_Notify_Threshold 1 oktet Ustaw poziom powiadomień (w %) dla poszczególnych puli pamięci
[Zakres: 0–100]
Ustawienie 0 wyłączy powiadomienia. Wygenerowano zdarzenie HCI dotyczące konkretnego dostawcy (podzbiór przekroczenia progu w Storage)

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
Batch_scan_opcode 1 oktet 0x02 [Set Batch Scan parameters]

LE_Batch_Scan_Command: podkomenda ustawienia parametru zbiorczego skanowania

Sub OCF: 0x03

Parametr podrzędnego polecenia Rozmiar Cel
Batch_Scan_Mode 1 oktet 0x00 – skanowanie zbiorcze jest wyłączone
0x01 – tryb skrócony jest włączony
0x02 – tryb pełny jest włączony
0x03 – tryb skrócony i pełny są włączone
Duty_cycle_scan_window 4 oktety Czas skanowania zbiorczego (liczba slotów)
Duty_cyle_scan_interval 4 oktety Interwał zbiorczego skanowania (liczba slotów)
own_address_type 1 oktet 0x00 – publiczny adres urządzenia
0x01 – losowy adres urządzenia
Batch_scan_Discard_Rule 1 oktet 0 – odrzuć najstarszą reklamę
1 – odrzuć reklamę z najsłabszym identyfikatorem RSSI

Ten podkomenda rozpocznie skanowanie zbiorcze, jeśli jest włączone. W przypadku skanowania w formie skróconej wyniki są przechowywane w formie skróconej, w której unikalny klucz dla stylu skróconego to {BD_ADDR, scan_interval}. Oznacza to, że dla każdego przedziału skanowania będzie rejestrowany tylko BD_ADDR will. Rekord, który należy zachować w trybie skróconym, to: {BD_ADDR, Tx Power, RSSI, Timestamp}

Gdy tryb pełny jest włączony, używane jest aktywne skanowanie i zapisywane są odpowiedzi na skanowanie. Unikalny klucz pełnego stylu = {MAC, Ad packet}, niezależnie od interwału skanowania. W trybie pełnym należy zachować rekord {BD_ADDR, Tx Power, RSSI, Timestamp, Ad packet, Scan Response}. W stylu pełnym ten sam pakiet AD, gdy jest wyświetlany wielokrotnie w różnych interwałach skanowania, jest rejestrowany tylko raz. Jednak w trybie przyciętym interesuje nas widoczność BA_ADDR w różnych odstępach czasowych skanowania (raz na każdy interwał skanowania). RSSI to średnia wartość wszystkich duplikatów unikalnej reklamy w okresie skanowania.

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
Batch_scan_opcode 1 oktet 0x03 [Ustaw parametry zbiorczego skanowania]

LE_Batch_Scan_Command: podkomenda odczytu wyników skanowania zbiorczego

Sub OCF: 0x04

Parametr podrzędnego polecenia Rozmiar Cel
Batch_Scan_Data_read 1 oktet 0x01 – dane w trybie obciętym
0x02 – dane w trybie pełnym

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”. Gdy gospodarz wyda to polecenie, wszystkie wyniki w kontrolerze mogą nie zmieścić się w jednym zdarzeniu Zakończenie polecenia. Host będzie powtarzać wydawanie tego polecenia, dopóki odpowiednie wyniki w zdarzeniu Command Complete nie będą wskazywać 0 w polu Liczba rekordów, co oznacza, że kontroler nie ma już więcej rekordów do przekazania hostowi. Każde zdarzenie Command Complete może zawierać wiele rekordów tylko jednego typu danych (pełnych lub obciętych).

Odniesienia do czasu w kontrolerze i hostie nie są zsynchronizowane. Jednostka sygnatury czasowej to 50 ms. Wartość sygnatury czasowej jest określana na podstawie momentu, w którym gospodarz podał wartość atrybutu Read_Batch_Scan_Results_Sub_cmd. Jeśli czas dotarcia polecenia toT_c w oprogramowaniu układowym, to rzeczywisty czas, w jakim sygnatura czasowa została pobrana z oprogramowania układowego, toT_fw. Czas raportowania:T_c - T_fw. T_c i T_fw są w domenie czasowej oprogramowania. Dzięki temu gospodarz może obliczyć, jak dawno miało miejsce zdarzenie.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
Batch_scan_opcode 1 oktet 0x03 [Set Batch Scan parameters]
Batch_Scan_data_read 1 oktet Określa format (skrócony lub pełny).
num_of_records 1 oktet Liczba rekordów Batch_Scan_data_read
format_of_data Zmienna Tryb skrócony:
Adres[0]: 6 oktetów
Typ_adresu[0]: 1 oktet
Moc_nadawania[0]: 1 oktet
RSSI[0]: 1 oktet
Znak_czasu[0]: 2 oktety
[wiele rekordów (num_of_records) w powyższym formacie]

Tryb pełny:
Adres[0]: 6 oktetów
Typ_adresu[0]: 1 oktet
Moc_nadawania[0]: 1 oktet
RSSI[0]: 1 oktet
Znak_czasu[0]: 2 oktety
Odpowiedź_na_skanowanie_dł[0]: 1 oktet
Odpowiedź_na_skanowanie[0]: Scan_data_resp oktetów
[wiele rekordów w powyższym formacie (num_of_records)]

Filtr treści pakietów reklamowych

Używaj tego polecenia do włączania, wyłączania i konfigurowania filtra treści pakietów reklamowych (APCF) w sterowniku. APCF filtruje raporty reklamowe w kontrolerze, ale nie filtruje reklam okresowych.

LE_APCF_Command

OCF: 0x157

Parametr polecenia Rozmiar Cel
APCF_opcode 1 oktet 0x00 – Włączenie APCF
0x01 – Ustaw parametry filtrowania APCF
0x02 – Adres nadawcy APCF
0x03 – Identyfikator usługi APCF
0x04 – Identyfikator zapytania o usługę APCF
0x05 – Nazwa lokalna APCF
0x06 – Dane producenta APCF
0x07 – Dane usługi APCF
0x08 – Usługa wykrywania transportu APCF
0x09 – Filtr typu reklamy APCF
0x10 ÷ 0xAF – Zarezerwowane na przyszłość
0xB0 ÷ 0xDF – Zarezerwowane dla dostawcy
0xE0 ÷ 0xFE – Zarezerwowane na przyszłość
0xFF – Rozszerzone funkcje odczytu APCF

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan zwrotu
APCF_opcode 1 oktet 0x00 – Włączenie APCF
0x01 – Ustaw parametry filtrowania APCF
0x02 – Adres nadawcy APCF
0x03 – Identyfikator usługi APCF
0x04 – Identyfikator zapytania o usługę APCF
0x05 – Nazwa lokalna APCF
0x06 – Dane producenta APCF
0x07 – Dane usługi APCF
0x08 – Usługa wykrywania transportu APCF
0x09 – Filtr typu reklamy APCF
0x10 ÷ 0xAF – Zarezerwowane na przyszłość
0xB0 ÷ 0xDF – Zarezerwowane dla dostawcy
0xE0 ÷ 0xFE – Zarezerwowane na przyszłość
0xFF – Rozszerzone funkcje odczytu APCF

LE_APCF_Command: Enable_sub_cmd

Sub OCF: 0x00

Parametr podrzędnego polecenia Rozmiar Cel
APCF_enable 1 oktet 0x01 – włączanie funkcji APCF
0x00 – wyłączanie funkcji APCF

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
APCF_opcode 1 oktet 0x0 – włączanie APCF
APCF_Enable 1 oktet Włączanie/wyłączanie odbywa się za pomocą APCF_enable

LE_APCF_Command: set_filtering_parameters_sub_cmd

Ten podkomendę służy do dodawania i usuwania specyfikacji filtra lub do czyszczenia listy filtrów na potrzeby filtrowania na chipie.

Sub OCF: 0x01

Parametr podrzędnego polecenia Rozmiar Cel
APCF_Action 1 oktet 0x00 – Dodaj
0x01 – Usuń
0x02 – Wyczyść
Usunięcie spowoduje wyczyszczenie określonego filtra wraz z powiązanymi wpisami funkcji w innych tabelach.
Wyczyszczenie spowoduje usunięcie wszystkich filtrów i powiązanych wpisów w innych tabelach.
APCF_Filter_Index 1 oktet Indeks filtra (0, max_filter-1)
APCF_Feature_Selection 2 oktety Maski bitowe dla wybranych funkcji:
Bit 0: ustaw, aby włączyć filtr adresu transmisji
Bit 1: ustaw, aby włączyć filtr zmiany danych usługi
Bit 2: ustaw, aby włączyć sprawdzanie identyfikatora UUID usługi
Bit 3: ustaw, aby włączyć sprawdzanie identyfikatora UUID zapytania o usługę
Bit 4: ustaw, aby włączyć sprawdzanie nazwy lokalnej
Bit 5: ustaw, aby włączyć sprawdzanie danych producenta
Bit 6: ustaw, aby włączyć sprawdzanie danych usługi
Bit 7: ustaw, aby włączyć sprawdzanie usługi wykrywania transportu
Bit 8: ustaw, aby włączyć sprawdzanie typu reklamy
APCF_List_Logic_Type 2 oktety Operacja logiczna dla każdego wyboru funkcji (na pozycję bitu) określonego w pozycji APCF_Feature_Selection.
Dozwolone tylko wtedy, gdy funkcja jest włączona.
Wartość pozycji bitu:
0: LUB
1: I 
Jeśli wybrana jest logika „I”, pakiet ADV przejdzie przez filtr tylko wtedy, gdy zawiera WSZYSTKIE wpisy z listy.
Jeśli wybrany jest operator logiczny „LUB”, pakiet ADV przejdzie przez filtr, jeśli zawiera co najmniej 1 element z listy.
APCF_Filter_Logic_Type 1 oktet 0x00: LUB
0x01: I
Uwaga: w przypadku pierwszych 3 pol APCF_Feature_Selection typ logiki to N/A, co oznacza, że zawsze jest to operator logiczny „I”. Dotyczą one tylko 4 pol (bity 3–6) w pliku APCF_Feature_Selection.
rssi_high_thresh 1 oktet [w dBm]
Reklamodawca jest uważany za zauważonego tylko wtedy, gdy sygnał jest wyższy niż wysoki próg RSSI. W przeciwnym razie oprogramowanie musi zachowywać się tak, jakby nigdy go nie widziało.
delivery_mode 1 oktet 0x00 – immediate
0x01 – on_found
0x02 – batched
onfound_timeout 2 oktety Obowiązuje tylko wtedy, gdy delivery_mode to on_found.
[w milisekundach]
Czas, który firmware potrzebuje na pobranie dodatkowych reklam przed przesłaniem danych.
onfound_timeout_cnt 1 oktet Obowiązuje tylko wtedy, gdy delivery_mode to on_found.
[liczba]
Jeśli reklama onFound pozostaje w oprogramowaniu przez czasonfound_timeout, gromadzi kilka reklam, a liczba jest sprawdzana. Jeśli liczba przekroczyonfound_timeout_cnt, zostanie zgłoszonaOnFound natychmiast.
rssi_low_thresh 1 oktet Obowiązuje tylko wtedy, gdy delivery_mode to on_found.
[w dBm]
Pakiet reklamodawcy jest uważany za niewyświetlony, jeśli RSSI otrzymanego pakietu nie przekracza dolnego progu RSSI.
onlost_timeout 2 oktety Obowiązuje tylko wtedy, gdy delivery_mode to on_found.
[w milisekundach]
Jeśli reklama, po jej znalezieniu, nie będzie wyświetlana w ciągły sposób przez okres lost_timeout, zostanie natychmiast zgłoszona jako zagubiona.
num_of_tracking_entries 2 oktety Obowiązuje tylko wtedy, gdy delivery_mode to on_found.
[liczba]
Łączna liczba reklamodawców do śledzenia na podstawie filtra.

Wartości RSSI muszą być reprezentowane przez uzupełnienie do 2 poziomów w przypadku wartości ujemnych.

Prowadzący będzie mógł skonfigurować wiele filtrów z wartością APCF_Application_Address_type równą 0x02 (dla wszystkich adresów nadawcy) w celu zarządzania różnymi kombinacjami filtrów.

Filtrowanie, grupowanie i raportowanie to powiązane ze sobą pojęcia. Każda reklama i powiązana z nią odpowiedź na skanowanie musi przejść przez wszystkie filtry, jeden po drugim. W związku z tym działania wynikowe (delivery_mode) są ściśle powiązane z filtrowaniem. Tryby dostawy to: report_immediately, batch i onFound. Wartość OnLost jest powiązana z wartością OnFound w tym sensie, że po utracie wartości OnFound będzie ona następna.

Ten schemat przetwarzania przedstawia model koncepcyjny:

Gdy otrzymamy ramkę reklamy (lub odpowiedź na skanowanie), zostanie ona zastosowana do wszystkich filtrów w kolejności sekwencyjnej. Możliwe, że reklama może spowodować natychmiastowe raportowanie na podstawie jednego filtra i zbiorcze tego samego reklamy z powodu innej akcji filtra.

Próg poziomu RSSI (wysoki i niski) umożliwia kontrolowanie, kiedy ramka jest widoczna do przetwarzania filtra, nawet gdy kontroler otrzymał prawidłowy pakiet. Jeśli tryb dostarczania jest ustawiony na „natychmiastowy” lub „w grupach”, identyfikator RSSI ramki jest brany pod uwagę w celu dalszego przetwarzania przez kontroler. Różne aplikacje wymagają różnych sposobów raportowania i zbiorowego przetwarzania. Umożliwia to kilku aplikacjom jednoczesne raportowanie lub grupowanie wyników w oprogramowaniu sprzętowym. Przykładem może być sytuacja, w której jedna aplikacja przeprowadza skanowanie zbiorcze, a potem inna aplikacja wykonuje zwykłe skanowanie LE. Przed rozpoczęciem skanowania zbiorczego framework lub aplikacja ustawia odpowiednie filtry. Gdy później druga aplikacja przeprowadzi zwykłe skanowanie, poprzednie grupowanie będzie kontynuowane. Jednak ze względu na regularne skanowanie jest to podobne do dodawania filtra null (wraz ze wszystkimi istniejącymi filtrami) wraz z poleceniem skanowania LE. Parametry polecenia skanowania LE mają pierwszeństwo, gdy są aktywne. Gdy zwykłe skanowanie LE jest wyłączone, kontroler wróci do poprzedniego skanowania w grupie, jeśli takie istniało.

Tryb dostarczania OnFound opiera się na skonfigurowanych filtrach. Kombinacja, która powoduje, że działanie filtra zakończy się powodzeniem, jest uważana za entuz, który należy śledzić w przypadku onLost. Odpowiada mu podzbiór danych Advt.

Przejście OnFound/OnLost filtra (jeśli jest włączone) będzie wyglądać tak:

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
APCF_opcode 1 oktet 0x01 – APCF Set Filtering Parameters
APCF_Action 1 oktet Odzwierciedlenie polecenia APCF_Action
APCF_AvailableSpaces 1 oktet Liczba dostępnych pozycji w tabeli filtrów

LE_APCF_Command: broadcast_address_sub_cmd

Ten podkomendę służy do dodawania i usuwania adresu reklamodawcy lub do czyszczenia listy adresów reklamodawców na potrzeby filtrowania na chipie.

Sub OCF: 0x02

Parametr podrzędnego polecenia Rozmiar Cel
APCF_Action 1 oktet 0x00 – Dodaj
0x01 – Usuń
0x02 – Wyczyść
Usuń spowoduje usunięcie adresu wybranego nadawcy w określonym filtrze.
Wyczyszczenie spowoduje usunięcie wszystkich adresów nadawcy w wybranym filtrze.
APCF_Filter_Index 1 oktet Indeks filtra (0, max_filter-1)
APCF_Broadcaster_Address 6 oktetów 6-bajtowy adres urządzenia do dodania do listy adresów nadawcy lub do jej usunięcia
APCF_Application_Address_type 1 oktet 0x00: publiczny
0x01: losowy
0x02: nie dotyczy (ignorowanie typu adresu)
Aby filtrować raporty reklamowe według typów adresów tożsamości (0x02, 0x03). Aby uzyskać raporty reklamowe z typami adresów 0x02 i 0x03, ustaw to pole na 0x02: NA (ignoruj typ adresu).

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
APCF_opcode 1 oktet 0x02 – adres nadawcy APCF
APCF_Action 1 oktet Odzwierciedlenie polecenia APCF_Action
APCF_AvailableSpaces 1 oktet Liczba bezpłatnych wpisów nadal dostępnych w tabeli adresów docelowych transmisji

LE_APCF_Command: service_uuid_sub_cmd

Ten podkomendę służy do dodawania i usuwania UUID usługi lub do czyszczenia listy UUID usługi na potrzeby filtrowania na chipie.

Sub OCF: 0x03

Parametr podrzędnego polecenia Rozmiar Cel
APCF_Action 1 oktet 0x00 – Dodaj
0x01 – Usuń
0x02 – Wyczyść
Wybranie opcji Usuń spowoduje usunięcie określonego adresu UUID usługi w wybranym filtrze.
Wyczyszczenie spowoduje usunięcie wszystkich identyfikatorów UUID usługi w wybranym filtrze.
APCF_Filter_Index 1 oktet Indeks filtra (0, max_filter-1)
APCF_UUID 2,4,16 bajtów Identyfikator UUID usługi (16-bitowy, 32-bitowy lub 128-bitowy) do dodawania do listy lub usuwania z niej.
APCF_UUID_MASK 2,4,16 bajtów Maska UUID usługi (16-bitowa, 32-bitowa lub 128-bitowa) do dodania do listy. Powinien mieć taką samą długość jak APCF_UUID.

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
APCF_opcode 1 oktet 0x03 – identyfikator usługi APCF
APCF_Action 1 oktet Odzwierciedlenie polecenia APCF_Action
APCF_AvailableSpaces 1 oktet Liczba bezpłatnych wpisów nadal dostępnych w tabeli UUID usługi

LE_APCF_Command: solicitation_uuid_sub_cmd

Ten podkomendę służy do dodawania i usuwania identyfikatorów UUID oferty lub do czyszczenia listy identyfikatorów UUID oferty na potrzeby filtrowania na chipie.

Sub OCF: 0x04

Parametr podrzędnego polecenia Rozmiar Cel
APCF_Action 1 oktet 0x00 – Dodaj
0x01 – Usuń
0x02 – Wyczyść
Usuń spowoduje usunięcie adresu UUID w prośbie w określonym filtrze.
Wyczyszczenie spowoduje usunięcie wszystkich identyfikatorów UUID ofert w wybranym filtrze.
APCF_Filter_Index 1 oktet Indeks filtra (0, max_filter-1)
APCF_UUID 2,4,16 bajtów Identyfikator UUID prośby (16-bitowy, 32-bitowy lub 128-bitowy) do dodania do listy lub usunięcia z niej.
APCF_UUID_MASK 2,4,16 bajtów Maska UUID zachęty (16-bitowa, 32-bitowa lub 128-bitowa) do dodania do listy. Powinien mieć taką samą długość jak APCF_UUID.

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
APCF_opcode 1 oktet 0x04 – identyfikator UUID prośby APCF
APCF_Action 1 oktet Odzwierciedlenie polecenia APCF_Action
APCF_AvailableSpaces 1 oktet Liczba bezpłatnych pozycji nadal dostępnych w tabeli identyfikatorów UUID dotyczących zachęt

LE_APCF_Command: local_name_sub_cmd

Ten podkomend służy do dodawania i usuwania lokalnych ciągów znaków nazwy oraz do czyszczenia listy lokalnych ciągów znaków nazwy na potrzeby filtrowania na chipie.

Sub OCF: 0x05

Parametr podrzędnego polecenia Rozmiar Cel
APCF_Action 1 oktet 0x00 – Dodaj
0x01 – Usuń
0x02 – Wyczyść
Usuń spowoduje usunięcie określonego ciągu nazwy lokalnej w określonym filtrze.
Wyczyszczenie spowoduje usunięcie wszystkich lokalnych ciągów znaków nazw w wybranym filtrze.
APCF_Filter_Index 1 oktet Indeks filtra (0, max_filter-1)
APCF_LocName_Mandata_or_SerData Rozmiar zmienny Ciąg znaków nazwy lokalnej.

Uwagi:
  • Obecnie maksymalna liczba znaków w lokalnym ciągu znaków to 29
  • Nie dotyczy, gdy działaniem jest „Wyczyść” (0x2).

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
APCF_opcode 1 oktet 0x05 – nazwa lokalna APCF
APCF_Action 1 oktet Odzwierciedlenie polecenia APCF_Action
APCF_AvailableSpaces 1 oktet Liczba bezpłatnych pozycji nadal dostępnych w tabeli Nazwa lokalna

LE_APCF_Command: manf_data_sub_cmd

Ten podkomendę służy do dodawania i usuwania ciągu danych producenta lub do czyszczenia listy ciągów danych producenta na potrzeby filtrowania na chipie.

Sub OCF: 0x06

Parametr podrzędnego polecenia Rozmiar Cel
APCF_Action 1 oktet 0x00 – Dodaj
0x01 – Usuń
0x02 – Wyczyść
Usuń spowoduje usunięcie określonego ciągu danych producenta w wybranym filtrze.
Wyczyszczenie spowoduje usunięcie wszystkich ciągów znaków danych producenta w określonym filtrze.
APCF_Filter_Index 1 oktet Indeks filtra (0, max_filter-1)
APCF_LocName_Mandata_or_SerData Rozmiar zmienny Ciąg znaków zawierający dane producenta.

Uwagi:
  • Obecnie maksymalna liczba znaków w lokalnym ciągu znaków to 29
  • Nie dotyczy, gdy działaniem jest „Wyczyść” (0x2).
APCF_ManData_Mask Rozmiar zmienny Maska danych producenta, którą chcesz dodać do listy. Powinien mieć taką samą długość jak APCF_LocName_or_ManData_or_SerData.

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
APCF_opcode 1 oktet 0x06 – dane producenta APCF
APCF_Action 1 oktet Odzwierciedlenie polecenia APCF_Action
APCF_AvailableSpaces 1 oktet Liczba bezpłatnych pozycji nadal dostępnych w tabeli danych producenta

LE_APCF_Command: service_data_sub_cmd

Ten podkomendę służy do dodawania i usuwania ciągu danych usługi lub do czyszczenia listy ciągów danych usługi na potrzeby filtrowania na chipie.

Sub OCF: 0x07

Parametr podrzędnego polecenia Rozmiar Cel
APCF_Action 1 oktet 0x00 – Dodaj
0x01 – Usuń
0x02 – Wyczyść
„Usuń” spowoduje usunięcie określonego ciągu danych usługi w wybranym filtrze.
Wyczyszczenie spowoduje usunięcie wszystkich ciągów danych usługi w wybranym filtrze.
APCF_Filter_Index 1 oktet Indeks filtra (0, max_filter-1)
APCF_LocName_Mandata_or_SerData Rozmiar zmienny Ciąg znaków danych usługi.

Uwagi:
  • Obecnie maksymalna liczba znaków w lokalnym ciągu znaków to 29
  • Nie dotyczy, gdy działaniem jest „Wyczyść” (0x2).
APCF_LocName_Mandata_or_SerData_Mask Rozmiar zmienny Maska danych usługi, którą chcesz dodać do listy. Powinien mieć taką samą długość jak APCF_LocName_or_ManData_or_SerData.

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
APCF_opcode 1 oktet 0x07 – dane usługi APCF
APCF_Action 1 oktet Odzwierciedlenie polecenia APCF_Action
APCF_AvailableSpaces 1 oktet Liczba bezpłatnych wpisów nadal dostępnych w tabeli danych usługi

LE_APCF_Command: ad_type_sub_cmd

Ten podkomendę służy do dodawania i usuwania typu AD lub do czyszczenia listy typów AD na potrzeby filtrowania na chipie. Użyj polecenia read_extended_features_sub_cmd, aby sprawdzić, czy to polecenie jest obsługiwane.
Jeśli APCF_AD_DATA_Length = 0, filtr APCF_AD_TYPE nie porównuje danych reklamy i maski danych reklamy. Jeśli długość otrzymanego pakietu ADV przekracza AD_DATA_LENGTH, porównaj tylko pierwsze AD_DATA_LENGTH bajtów danych AD, a pozostałe dane zignoruj.

Sub OCF: 0x09

Parametr podrzędnego polecenia Rozmiar Cel
APCF_Action 1 oktet 0x00 – Dodaj
0x01 – Usuń
0x02 – Wyczyść
Usuń spowoduje usunięcie określonego typu reklamy w wybranym filtrze.
Wyczyszczenie spowoduje usunięcie wszystkich typów reklam w wybranym filtrze.
APCF_Filter_Index 1 oktet Indeks filtra (0, max_filter-1)
APCF_AD_TYPE 1 oktet Typ reklamy do dodania do listy lub z niej do usunięcia. Zignoruj, gdy APCF_Action ma wartość 0x02 (Wyczyść).
APCF_AD_DATA_Length 1 oktet 0x00 – oznacza, że nie należy filtrować treści danych
Ignoruj, gdy APCF_Action ma wartość 0x02 (Wyczyść)
APCF_AD_DATA Rozmiar zmienny Rozmiar zmienny, zależny od wartości APCF_AD_DATA_Length
. Ignoruj, gdy APCF_Action = 0x02 (Wyczyść).
APCF_AD_DATA_MASK Rozmiar zmienny Rozmiar zmienny, zależny od APCF_AD_DATA_Length
Zignoruj, gdy APCF_Action = 0x02 (Wyczyść)
Powinien mieć taką samą długość jak APCF_AD_DATA.

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
APCF_opcode 1 oktet 0x09 – typ reklamy APCF
APCF_Action 1 oktet Odzwierciedlenie polecenia APCF_Action
APCF_AvailableSpaces 1 oktet Liczba bezpłatnych wpisów nadal dostępnych w tabeli Typ reklamy

LE_APCF_Command: read_extended_features_sub_cmd

Ten podkomendę służy do odczytu rozszerzonych funkcji APCF.

Sub OCF: 0xFF

Parametr podrzędnego polecenia Rozmiar Cel
Nie dotyczy Pusty parametr polecenia.

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
APCF_opcode 1 oktet 0xFF – APCF_Read_Extended_Features
APCF_extended_features 2 oktety

Maski bitowe obsługiwanych rozszerzonych funkcji:

  • Bit 0: filtr usługi wykrywania transportu
  • Bit 1: obsługa filtra typu reklamy
  • Bity 2–15: zarezerwowane do użycia w przyszłości

Wartość bitu

  • 0 = nieobsługiwane
  • 1 = obsługiwane

polecenie dotyczące informacji o aktywności kontrolera i energii

Te informacje są przeznaczone do analizowania przez funkcje systemu hosta na wyższym poziomie całkowitej aktywności wszystkich komponentów, w tym kontrolera BT i jego stanu makro, w zależności od tego, co dzieje się w aplikacjach i ramach. W tym celu potrzebne są te informacje z poziomu pakietu BT i sterownika:

  • BT stack: raportowanie bieżącego stanu makrooperacyjnego kontrolera
  • Firmware: raportowanie zbiorczych informacji o aktywności i energii

Stany makra BT host stack określone na poziomie użytkownika:

  • Stan bezczynności: [skanowanie strony, reklama w LE, skanowanie zapytania, skanowanie w LE]
  • Skanowanie: [wyświetlenie/zapytanie/próba połączenia]
  • Aktywny: [ACL link on, SCO link ongoing, sniff mode]

Działania, które kontroler śledzi przez cały okres użytkowania, to czas transmisji, czas odbioru, czas bezczynności i łączna ilość zużytej energii. Zostaną wyczyszczone po odczytaniu przez gospodarza.

LE_Get_Controller_Activity_Energy_Info

To polecenie jest specyficzne dla dostawcy.

OCF: 0x159

Parametr podrzędnego polecenia Rozmiar Cel
Nie dotyczy Pusty parametr polecenia

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
total_tx_time_ms 4 oktety Łączny czas wykonywania Tx
total_rx_time_ms 4 oktety Łączny czas wykonywania Rx
total_idle_time_ms 4 oktety Łączny czas w stanie bezczynności (stany niskiego poboru mocy bez trybu uśpienia)
total_energy_used 4 oktety Łączna zużyta energia [iloczyn prądu (mA), napięcia (V) i czasu (ms)]

Polecenie LE extended set scan parameters

Za pomocą tego polecenia można włączyć większe okno skanowania i większy interwał w kontrolerze. Zgodnie ze specyfikacją BT Core 5.2 okno skanowania i interwał mają górny limit 10,24 sekund, co utrudnia skanowanie aplikacji w interwałach dłuższych niż 10,24 sekund.

Podstawowe źródło: specyfikacja BT Core 5.2, strona 2493 (polecenie LE Set Scan Parameters)

OCF: 0x15A

Parametr polecenia Rozmiar Cel
LE_Ex_Scan_Type 1 oktet 0x00 – skanowanie pasywne. Nie wysyłane są żadne pakiety SCAN_REQ (domyślnie).
0x01 – aktywne skanowanie. SCAN_REQ mogą być wysyłane.
LE_Ex_Scan_Interval 4 oktety Określany jako przedział czasu od momentu rozpoczęcia przez kontroler ostatniego skanowania LE do rozpoczęcia kolejnego skanowania LE.
Zakres: 0x0004–0x00FFFFFF
Domyślnie: 0x0010 (10 ms)
Czas = N * 0,625 ms
Zakres czasu: 2,5 ms–10442,25 sekund
LE_Ex_Scan_Window 4 oktety Czas trwania skanowania LE. Wartość LE_Scan_Window jest mniejsza lub równa wartości LE_Scan_Interval.
Zakres: 0x0004–0xFFFF
Domyślnie: 0x0010 (10 ms)
Czas = N * 0,625 ms
Zakres czasu: 2,5–40,95 s
Own_Address_Type 1 oktet 0x00 – publiczny adres urządzenia (domyślny)
0x01 – losowy adres urządzenia
LE_Ex_Scan_Filter_Policy 0x00 – akceptuj wszystkie pakiety reklam (domyślnie). Pakiety reklam kierowanych, które nie są kierowane do tego urządzenia, będą ignorowane.
0x01 – ignorowanie pakietów reklamy z urządzeń, które nie znajdują się na liście „Tylko biała lista”. Pakiety reklam kierowanych, które nie są kierowane do tego urządzenia, będą ignorowane.

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”

Polecenie Get controller debug info

Celem tego elementu informacji jest pozyskanie przez hosta informacji debugowania kontrolera w postaci binarnej na potrzeby dalszego przetwarzania i analizy. Ułatwia to debugowanie problemów w terenie i zapewnia inżynierom zestaw narzędzi do rejestrowania informacji na potrzeby analizy. Administrator może udostępnić te informacje, gdy gospodarz poprosi o to za pomocą zdarzenia (podzdarzeniowego zdarzenia Informacje o administratorze na potrzeby debugowania) lub samodzielnie, jeśli zechce to zrobić. Przykładowe zastosowania: raportowanie stanu oprogramowania układowego, informacje o pamięci podręcznej po awarii, informacje z dziennika itp.

OCF: 0x15B

Parametr polecenia Rozmiar Cel
Nie dotyczy Pusta lista parametrów

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”

Obsługa sprzętowego odciążania A2DP

Funkcja przenoszenia A2DP umożliwia przeniesienie procesu kodowania dźwięku A2DP do procesora audio podłączonego do kontrolera BT. Kodowany strumień danych audio przechodzi bezpośrednio z procesora audio do kontrolera BT bez udziału hosta BT. Host BT nadal odpowiada za konfigurację i sterowanie sesją A2DP. Dostępne są 2 wersje poleceń. Stare polecenia z kodem Sub OCF 0x01–0x02 obsługują tylko kodeki open source. Wersje z kodem Sub-OCF 0x03-0x04 są niezależne od skonfigurowanego kodeka.

OCF: 0x15D

Rozpocznij odciążanie A2DP (starsza wersja)

Sub OCF: 0x01

Użyj tego polecenia, aby skonfigurować proces przenoszenia A2DP i rozpocząć strumień A2DP.

Parametr polecenia Rozmiar Cel
Codec 4 oktety Określa typ kodeka
0x01 – SBC
0x02 – AAC
0x04 – APTX
0x08 – APTX HD
0x10 – LDAC
Max_Latency 2 oktety Maksymalny dozwolony czas oczekiwania (w ms). Wartość 0 wyłącza funkcję flush.
SCMS-T_Enable 2 oktety Oktet 0: flaga umożliwiająca dodanie nagłówka SCMS-T.
  • 0x00 – nagłówek SCMS-T nie jest uwzględniany.
  • 0x01 – nagłówek SCMS-T jest dołączony.

Oktet 1: wartość nagłówka SCMS-T, jeśli jest włączony.

Sampling_Frequency 4 oktety 0x01 – 44100 Hz
0x02 – 48000 Hz
0x04 – 88200 Hz
0x08 – 96000 Hz
Bits_Per_Sample 1 oktet 0x01 – 16 bitów na próbkę
0x02 – 24 bity na próbkę
0x04 – 32 bity na próbkę
Channel_Mode 1 oktet 0x01 – mono
0x02 – stereo
Encoded_Audio_Bitrate 4 oktety Szybkość transmisji zakodowanego dźwięku wyrażona w bitach na sekundę.
0x00000000 - szybkość transmisji bitów dźwięku nie jest określona / nieużywana.
0x00000001 - 0x00FFFFFF - Szybkość transmisji dźwięku po zakodowaniu w bitach na sekundę.
0x01000000 – 0xFFFFFFFF – zarezerwowane.
Connection_Handle 2 oktety Identyfikator połączenia A2DP, które jest konfigurowane
L2CAP_Channel_ID 2 oktety Identyfikator kanału L2CAP używany w tym połączeniu A2DP
L2CAP_MTU_Size 2 oktety Maksymalny rozmiar MTU L2CAP zawierający zakodowane pakiety audio
Codec_Information 32 oktety Informacje dotyczące kodeka.

Kodek SBC:

Zapoznaj się z elementami informacji specyficznych dla kodeka SBC w A2DP w wersji 1.3.
Oktet 0: długość bloku | pasma podrzędne | metoda przydziału
Oktet 1: minimalna wartość bitpoola
Oktet 2: maksymalna wartość bitpoola
Oktet 3: częstotliwość próbkowania | tryb kanału
Oktet 4–31: zarezerwowane

Kodek AAC:

Zapoznaj się z elementami informacji specyficznymi dla kodeka AAC w A2DP w wersji 1.3
Octet 0: typ obiektu
Octet 1: b7: VBR
Octet 2–31: zarezerwowane

Kodek LDAC:

Oktet 0–3: identyfikator dostawcy
0x0000012D

Oktet 4–5: identyfikator kodeka
0x00AA – LDAC
Wszystkie pozostałe wartości są zarezerwowane

Oktet 6: indeks szybkości transmisji danych:
0x00 – wysoka
0x01 – średnia
0x02 – niska
0x03 – 0x7E – zarezerwowane
0x7F – ABR (Adaptive Bit Rate)
0x80 – 0xFF – zarezerwowane

Oktet 7: tryb kanału LDAC
0x01 – Stereo
0x02 – Dual
0x04 – Mono
Pozostałe są zarezerwowane

Oktet 8–31: zarezerwowane

Wszystkie inne kodeki:

Oktet 0–31: zarezerwowane

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
Sub_Opcode 1 oktet 0x01 – rozpoczęcie odciążenia A2DP

Rozpocznij odciążanie A2DP

Sub OCF: 0x03

Użyj tego polecenia, aby skonfigurować proces przenoszenia A2DP i rozpocząć strumień A2DP.

Parametr polecenia Rozmiar Cel
Connection Handle 2 oktety Identyfikator aktywnego połączenia HCI
L2CAP_Channel_ID 2 oktety Identyfikator kanału L2CAP otwartego na potrzeby strumieniowego przesyłania A2DP
Data_Path_Direction 1 oktet 0x00 – wyjście (źródło/złączenie AVDTP)
0x01 – wejście (zbiornik/rozdzielenie AVDTP)
Peer_MTU 2 oktety Maksymalny rozmiar pakietów L2CAP wynegocjowany z urządzeniem peer.
CP_Enable_SCMS_T 1 oktet 0x00 – wyłącz nagłówek ochrony treści SCMS-T
0x01 – włącz nagłówek ochrony treści SCMS-T
CP_Header_SCMS_T 1 oktet Gdy włączony jest nagłówek ochrony treści SCMS-T (CP_SCMS_T_Enable ustawiony na 0x01), określa wartość nagłówka poprzedzającą treść audio (patrz A2DP, sekcje 3.2.1–2) zgodnie z definicją w Numerach przypisanych Bluetooth (sekcja 6.3.2).
Ignorowane, gdy ochrona treści SCMS-T nie jest włączona.
Vendor_Specific_Parameters_Length 1 oktet Długość parametrów dostawcy, która mieści się w zakresie od 0 do 128.
Jeśli nie podasz żadnych dodatkowych parametrów, zostanie użyta wartość 0.
Vendor_Specific_Parameters 0–128 oktetów Parametry specyficzne dla dostawcy udostępniane przez interfejs HAL dźwięku Bluetooth.CodecParameters.vendorSpecificParameters[]

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
Sub_Opcode 1 oktet 0x03 – rozpoczęcie odciążenia A2DP

Zatrzymaj odciążanie A2DP (starsza wersja)

Sub OCF: 0x02

To polecenie służy do zatrzymania strumienia A2DP.

Parametr polecenia Rozmiar Cel
Nie dotyczy Pusta lista parametrów polecenia.

Dla tego polecenia nie zdefiniowano żadnych parametrów.

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
Sub_Opcode 1 oktet 0x02 – Zatrzymaj odciążanie A2DP

Zatrzymaj odciążanie A2DP

Sub OCF: 0x04

To polecenie służy do zatrzymania strumienia A2DP.

Parametr polecenia Rozmiar Cel
Connection Handle 2 oktety Identyfikator aktywnego połączenia HCI
L2CAP_Channel_ID 2 oktety Identyfikator kanału L2CAP otwartego na potrzeby strumieniowego przesyłania A2DP
Data_Path_Direction 1 oktet 0x00 – wyjście (źródło/złączenie AVDTP)
0x01 – wejście (zbiornik/rozdzielenie AVDTP)

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
Sub_Opcode 1 oktet 0x04 – Zatrzymaj odciążanie A2DP

Polecenie raportu jakości Bluetooth

Polecenie raportu jakości Bluetooth uruchamia mechanizm w kontrolerze Bluetooth, aby zgłaszać zdarzenia dotyczące jakości Bluetooth do hosta. Możesz włączyć 4 opcje:

  • Tryb monitorowania jakości: kontroler okresowo wysyła do hosta podzdarzenie BQR dotyczące jakości połączenia.
  • Zbliżanie się do LSTO: jeśli z podłączonego urządzenia BT nie jest odbierany żaden pakiet przez ponad połowę wartości limitu czasu nadzoru łącza (LSTO), kontroler zgłasza do hosta zdarzenie zbliżania się do LSTO.
  • A2DP Audio Choppy: gdy kontroler wykryje czynniki powodujące zakłócenia dźwięku, przekaże gospodarzowi zdarzenie A2DP Audio Choppy.
  • (e)SCO Voice Choppy: gdy kontroler wykryje czynniki powodujące zakłócenia głosu, zgłosi zdarzenie (e)SCO Voice Choppy gospodarzowi.
  • Root Inflammation: to zdarzenie jest wysyłane przez kontroler do stosu, gdy HAL lub kontroler napotka błąd krytyczny i musi ponownie uruchomić Bluetooth.
  • Ślad wiadomości LMP/LL: kontroler wysyła do hosta wiadomość LMP/LL z procesem nawiązywania połączenia z urządzeniem zdalnym.
  • Ślad planowania Bluetooth Multi-profile/Coex: kontroler wysyła informacje o planowaniu dotyczące obsługi wielu profili Bluetooth i współistnienia bezprzewodowego w zakresie 2,4 GHz do hosta.
  • Mechanizm informacji o debugowaniu kontrolera: po włączeniu kontroler może samodzielnie przesyłać informacje o logowaniu debugowania do hosta za pomocą podzdarzenia informacji o debugowaniu kontrolera.
  • LE Audio Choppy: gdy kontroler wykryje czynniki powodujące zakłócenia dźwięku, zgłosi gospodarzowi zdarzenie LE Audio Choppy.
  • Zaawansowany tryb statystyk RF: kontroler przesyła informacje o statystykach RF do hosta, obsługując 2 przypadki użycia raportu:
    • Raporty okresowe
    • Aktywatory zdarzeń (rozpoczęcie i zatrzymanie transmisji oraz aktywator zdarzenia dotyczącego jakości połączenia).
  • BQR_Report_Action polecenia Bluetooth Quality Report: gospodarz może użyć tego polecenia HCI, aby uzyskać jednorazowe zapytanie dotyczące trybu monitorowania jakości, trybu monitorowania zużycia energii lub zaawansowanego trybu statystyk RF.

OCF: 0x15E

Parametr polecenia Rozmiar Cel
BQR_Report_Action 1 oktet Działanie polegające na dodawaniu lub usuwaniu raportowania zdarzeń jakości ustawionych w parametrze BQR_Quality_Event_Mask lub na czyszczeniu wszystkich zdarzeń.

0x00 – dodaj
0x01 – usuń
0x02 – wyczyść
0x03 – jednorazowe zapytanie

Usunięcie spowoduje usunięcie raportowania określonych zdarzeń związanych z jakością.
Czyszczenie spowoduje usunięcie wszystkich raportów zdarzeń związanych z jakością (parametr BQR_Quality_Event_Mask może zostać zignorowany).

BQR_Quality_Event_Mask 4 oktety Bitowe maski dla wybranego raportowania zdarzeń związanych z jakością.

Bit 0: ustaw, aby włączyć tryb monitorowania jakości.
Bit 1: ustaw, aby włączyć zdarzenie zbliżania się do LSTO (dla ACL/(e)SCO/ISO).
Bit 2: ustaw, aby włączyć zdarzenie A2DP Audio Choppy.
Bit 3: ustaw, aby włączyć zdarzenie Voice Choppy (e)SCO.
Bit 4: ustaw, aby włączyć zdarzenie Root inflammation.
Bit 5: ustaw, aby włączyć tryb monitorowania zużycia energii.
Bit 6: ustaw, aby włączyć zdarzenie przerwania odtwarzania dźwięku LE.
Bit 7: ustaw, aby włączyć zdarzenie nieudanego połączenia.
Bit 8: ustaw, aby włączyć wyzwalacz zdarzenia w trybie Zaawansowane statystyki RF.
Bit 9: ustaw, aby włączyć okresowy raport Statystyki RF zaawansowanego.
Bit 10–14: zarezerwowane.
Bit 15: ustaw, aby włączyć zdarzenia dotyczące jakości związane z konkretnym dostawcą.
Bit 16: ustaw, aby włączyć śledzenie wiadomości LMP/LL.
Bit 17: ustaw, aby włączyć śledzenie harmonogramu Bluetooth Multi-link/Coex.
Bit 18: ustaw, aby włączyć mechanizm informacji debugowania kontrolera.
Bit 19 do 30: zarezerwowany.
Bit 31: ustaw, aby włączyć śledzenie na poziomie dostawcy.

BQR_Minimum_Report_Interval 2 oktety Określ minimalny odstęp czasu między raportami zdarzeń jakości dla wybranych zdarzeń jakości. Oprogramowanie układu sterującego nie powinno zgłaszać następnego zdarzenia w okresie zdefiniowanym w czasie. Ustawienie odstępu musi być odpowiednie i dedykowane dla dodawanych zdarzeń jakości.

Jednostka: ms
Domyślnie: 0 (brak ograniczenia dla przedziału).
Zakres: 0–65 535 ms

BQR_Vendor_Specific_Quality_Event_Mask 4 oktety Bitowe maski dla wybranego raportowania zdarzeń związanych z jakością konkretnego dostawcy.
Ten parametr jest prawidłowy tylko wtedy, gdy bit 15 w parametrye BQR_Quality_Event_Mask jest ustawiony.

Bity 0–31: zarezerwowane.

BQR_Vendor_Specific_Trace_Mask 4 oktety Maski bitowe dla wybranego raportowania śladów konkretnego dostawcy.
Ten parametr jest prawidłowy tylko wtedy, gdy bit 31 w parametrye BQR_Quality_Event_Mask jest ustawiony.

Bity 0–31: zarezerwowane.

Report_interval_multiple 4 oktety Mnożnik dla BQR_Minimum_Report_Interval. Gdy ta wartość jest większa lub równa 1, interwał raportu BQR ma format
Interwał raportu BQR = BQR_Minimum_Report_Interval x Report_interval_multiple.
Sterownik nie może zgłaszać kolejnego zdarzenia w okresie określonym w czasie. Ustawienie przedziału czasowego jest przeznaczone wyłącznie do dodanych zdarzeń jakości.

Jednostka: ms
Domyślnie: 1
Zakres: 0 do 4 294 967 295 (0: równa się 1)

Uwaga: jeśli ustawienie BQR_Report_Interval jest większe niż możliwości kontrolera, kontroler musi zwrócić maksymalny czas BQR_Report_Interval po wykonaniu polecenia.

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
Current_Quality_Event_Mask 4 oktety Wskazuje bieżące ustawienie maski bitowej.
Bit 0: tryb monitorowania jakości jest włączony.
Bit 1: włączone jest raportowanie zbliżającego się LSTO.
Bit 2: raportowanie zdarzeń A2DP Audio Choppy jest włączone.
Bit 3: (e)SCO Voice Choppy event reporting is enabled.
Bit 4: włączone jest zgłaszanie zdarzeń zapalenia korzenia.
Bit 5: tryb monitorowania zużycia energii jest włączony.
Bit 6: raportowanie zdarzeń ściszania dźwięku w Bluetooth LE jest włączone.
Bit 7: zdarzenie nieudanego połączenia.
Bit 8: ustaw, aby włączyć wyzwalacz zdarzenia w trybie Zaawansowane statystyki RF.
Bit 9: ustaw, aby włączyć okresowy raport statystyk RF zaawansowanych.
Bit 10–14: zarezerwowany.
Bit 15: włączone jest raportowanie zdarzeń dotyczących jakości związane z poszczególnymi dostawcami.
Bit 16: włączono śledzenie wiadomości LMP/LL.
Bit 17: włączona jest ścieżka planowania Bluetooth Multi-link/Coex.
Bit 18: mechanizm informacji debugowania kontrolera jest włączony.
Bit 19 do 30: zarezerwowany.
Bit 31: włączone jest śledzenie specyficzne dla dostawcy.
Current_Vendor_Specific_Quality_Event_Mask 4 oktety Wskazuje bieżące ustawienie maski bitowej.
Current_Vendor_Specific_Trace_Mask 4 oktety Wskazuje bieżące ustawienie maski bitowej.
BQR_Report_interval 4 oktety Wskazuje bieżące ustawienie maski bitowej.
Current_Vendor_Specific_Trace_Mask 4 oktety Ustawienie BQR_Report_interval. Musi to być minimalna wartość między BQR_Minimum_Report_Interval * Report_interval_multiple lub maksymalnym obsługiwanym interwałem sterownika.

Polecenie dynamicznego buforowania dźwięku

Dynamiczny bufor audio zmniejsza zakłócenia dźwięku przez zmianę rozmiaru bufora dźwięku w sterowniku Bluetooth w zależności od różnych scenariuszy.

OCF: 0x15F

Uzyskaj dostęp do funkcji buforowania dźwięku

Sub OCF: 0x01

Użyj tego polecenia, aby uzyskać informacje o czasie buforowania dźwięku z kontrolera Bluetooth.

Parametr polecenia Rozmiar Cel
Nie dotyczy Pusta lista poleceń

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
Dynamic_Audio_Buffer_opcode 1 oktet 0x01 – pobieranie czasu bufora audio
Audio_Codec_Type_Supported 4 oktety Maski bitowe obsługiwanych typów kodeków
Bit 0 – SBC
Bit 1 – AAC
Bit 2 – APTX
Bit 3 – APTX HD
Bit 4 – LDAC
Bity 5–31 są zarezerwowane
Audio_Codec_Buffer_Default_Time_For_Bit_0 2 oktety Domyślny czas buforowania dla typu kodeka Bit 0 określonego w atrybucie Audio_Codec_Type_Supported.
Ta wartość będzie 0, jeśli typ kodeka Bit 0 nie jest obsługiwany.
Jednostka: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 2 oktety Maksymalny czas buforowania dla typu kodeka Bit 0 określonego w Audio_Codec_Type_Supported.
Ta wartość będzie 0, jeśli typ kodeka Bit 0 nie jest obsługiwany.
Jednostka: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 2 oktety Minimalny czas buforowania dla typu kodeka Bit 0 określonego w atrybucie Audio_Codec_Type_Supported.
Ta wartość będzie 0, jeśli typ kodeka Bit 0 nie jest obsługiwany.
Jednostka: ms
Audio_Codec_Buffer_Default_Time_For_Bit_1 2 oktety Domyślny czas buforowania dla typu kodeka Bit 1 określonego w Audio_Codec_Type_Supported.
Ta wartość będzie 0, jeśli typ kodeka Bit 1 nie jest obsługiwany.
Jednostka: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 2 oktety Maksymalny czas buforowania dla typu kodeka Bit 1 określonego w Audio_Codec_Type_Supported.
Ta wartość będzie 0, jeśli typ kodeka Bit 1 nie jest obsługiwany.
Jednostka: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 2 oktety Minimalny czas buforowania dla typu kodeka Bit 1 określonego w atrybucie Audio_Codec_Type_Supported.
Ta wartość będzie 0, jeśli typ kodeka Bit 1 nie jest obsługiwany.
Jednostka: ms
...... ...... ......
Audio_Codec_Buffer_Default_Time_For_Bit_31 2 oktety Domyślny czas buforowania dla typu kodeka Bit 31 określony w atrybucie Audio_Codec_Type_Supported.
Ta wartość będzie 0, jeśli typ kodeka Bit 31 nie jest obsługiwany.
Jednostka: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 2 oktety Maksymalny czas buforowania dla typu kodeka Bit 31 określonego w Audio_Codec_Type_Supported.
Ta wartość będzie 0, jeśli typ kodeka Bit 31 nie jest obsługiwany.
Jednostka: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 2 oktety Minimalny czas buforowania dla kodeka Bit 31 określonego w atrybucie Audio_Codec_Type_Supported.
Ta wartość będzie 0, jeśli typ kodeka Bit 31 nie jest obsługiwany.
Jednostka: ms

Ustawianie czasu buforowania dźwięku

Sub OCF: 0x02

Użyj tego polecenia, aby ustawić czas buforowania dźwięku na kontrolerze Bluetooth.

Parametr polecenia Rozmiar Cel
Audio_Codec_Buffer_Time 2 oktety Czas buforowania dźwięku dla aktualnie używanego kodeka.
Jednostka: ms

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
Dynamic_Audio_Buffer_opcode 1 oktet 0x02 – ustawienie czasu buforowania dźwięku,
Audio_Codec_Buffer_Time 2 oktety Aktualny czas buforowania dźwięku na kontrolerze Bluetooth.
Jednostka: ms

Zdarzenie HCI (specyficzne dla dostawcy)

W niektórych przypadkach wymagane są zdarzenia HCI dotyczące konkretnego dostawcy. Informacje te znajdziesz na stronie 1897 specyfikacji BT Core 5.2, rysunek 5.4. Parametr zdarzenia 0 będzie zawsze zawierać pierwszy kod podzdarzeniowy, na podstawie którego dekodowana jest reszta zdarzenia HCI.

Parametr zdarzenia Rozmiar Cel
HCI_vendor_specific_event_code 1 oktet 0xFF
sub_event_code 1 oktet Kod podzdarzenia będzie miał rozmiar 1 oktet, czyli 1 bajt, który następuje bezpośrednio po długości parametru w pakiecie zdarzenia HCI.

Podzdarzenie przekroczenia progu miejsca na dane

To zdarzenie wskazuje, że przekroczono próg miejsca na dane.

Kod podzjawisku = 0x54

Parametr zdarzenia podrzędnego Rozmiar Cel
Brak

Zdarzenie podrzędne LE dotyczące zmiany stanu reklamy w wielu reklamach

To zdarzenie wskazuje, że instancja reklamy zmieniła stan. Obecnie to zdarzenie służy tylko do wskazywania, która instancja reklamy została zatrzymana w wyniku połączenia.

Kod podzjawisku = 0x55

Parametr zdarzenia podrzędnego Rozmiar Cel
Advertising_instance 1 oktet Identyfikuje konkretny przypadek reklamy.
Dozwolone wartości to 0–max_advt_instances-1.
State_Change_Reason 1 oktet 0x00: połączenie zostało odebrane
Connection_handle 2 oktety Identyfikuje połączenie, które spowodowało wyłączenie instancji advt (0xFFFF, jeśli nieprawidłowe)

Podzbiór śledzenia reklamy LE

To zdarzenie wskazuje, kiedy reklamodawca został znaleziony lub utracony.

Kod podrzędnego zdarzenia = 0x56

Parametr zdarzenia podrzędnego Rozmiar Cel
APCF_Filter_Index 1 oktet Indeks filtra (0, max_filter-1)
Advertiser_State 1 oktet 0x00: znaleziono reklamodawcę
0x01: reklamodawca utracony
Advt_Info_Present 1 oktet 0x00: informacje o reklamodawcy (Advt_Info) są obecne
0x01: informacje o reklamodawcy (Advt_Info) są nieobecne
Advertiser_Address 6 oktetów Adres publiczny lub losowy
Advertiser_Address_Type 1 oktet 0x00: adres publiczny
0x01: losowy adres
Advt_Info Tx_Pwr[0]: 1 oktet
RSSI[0]: 1 oktet
Timestamp[0]: 2 oktety
Adv packet_len[0]: 1 oktet
Adv_packet[0]: Adv_packet_len oktetów
Scan_data_resp_len[0]: 1 oktet
Scan_data_resp[0]: Scan_data_resp oktetów

Podzdarzenie danych debugowania kontrolera

To zdarzenie jest używane przez kontroler do przekazywania hostowi binarnych informacji debugujących.

Kod podzjawisk = 0x57

Parametr zdarzenia podrzędnego Rozmiar Cel
debug_block_byte_offset_start 2 oktety Debugowanie bloku bajtów przesuniętego od początku
last_block 1 oktet 0x00: dostępne są dodatkowe dane debugowania
0x01: ostatni blok binarny; brak dodatkowych danych debugowania
cur_pay_load_sz 2 oktety Rozmiar binarnego bloku w bieżącym zdarzeniu
Debug_Data Zmienna Dane debugowania dotyczące cur_payload_sz

Podzdarzenie Bluetooth Quality Report

To zdarzenie wskazuje jedno z tych zdarzeń: wystąpiło zdarzenie dotyczące jakości Bluetooth, kontroler przesłał ślad wiadomości LMP/LL i ślad harmonogramu Bluetooth Multi-link/Coex lub kontroler wygenerował dane debugowania.

Parametr zdarzenia podrzędnego Rozmiar Cel
Quality_Report_Id 1 oktet 0x01: raportowanie jakości w trybie monitorowania.
0x02: LSTO zbliża się do końca.
0x03: Przerywany dźwięk A2DP.
0x04: (e)SCO Voice Choppy.
0x05 - 0x06: zarezerwowane.
0x07: LE audio choppy.
0x08: błąd połączenia.
0x09 - 0xFF: zarezerwowane.
Packet_Types 1 oktet 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 ~ 0x50: Reserved
0x51: Pakiet ISO
0x52 ~ 0xFF: Reserved
Connection_Handle 2 oktety Identyfikator połączenia ACL/(e)SCO/ISO.
Connection_Role 1 oktet Rola w połączeniu.
0x00: centralna
0x01: peryferyjna
0x02 - 0xFF: zarezerwowana.
TX_Power_Level 1 oktet Bieżący poziom mocy nadawania dla określonego Connection_Handle.

Ta wartość musi być taka sama jak wartość zwrócona przez kontroler w odpowiedzi na polecenie HCI HCI_Read_Transmit_Power_Level.

RSSI 1 oktet [w dBm]

Wartość wskaźnika siły odbieranego sygnału (RSSI) dla określonego identyfikatora Connection_Handle.
Ta wartość jest bezwzględną wartością siły sygnału odbiornika.
Zakres: od –127 do +20

SNR 1 oktet [w dB]

Wartość stosunku sygnału do szumu (SNR) dla określonego parametru Connection_Handle.
Kontroler musi podać średnią wartość SNR wszystkich kanałów używanych przez łącze.

Unused_AFH_Channel_Count 1 oktet Określa liczbę nieużywanych kanałów w pliku AFH_channel_map.
0x4F - 0xFF: zarezerwowane.
AFH_Select_Unideal_Channel_Count 1 oktet Wskazuje liczbę kanałów, które są zakłócane i mają niską jakość, ale są nadal wybrane do automatycznego przełączania kanałów.
Minimalna liczba kanałów dozwolonych przez specyfikację Bluetooth wynosi 20, więc nawet jeśli wszystkie 79 kanałów jest zakłóconych i ma niską jakość, kontroler musi wybrać co najmniej 20 kanałów do obsługi AFH.
LSTO 2 oktety Aktualne ustawienie czasu oczekiwania w nadzorze połączeń.
Czas = N * 0,625 ms
Zakres czasu: od 0,625 ms do 40,9 s
Connection_Piconet_Clock 4 oktety Zegar Piconet dla określonego obiektu Connection_Handle.
Ta wartość powinna być taka sama jak wartość zwrócona przez kontroler w odpowiedzi na polecenie HCI HCI_Read_Clock z parametrem „Which_Clock” o wartości 0x01 (zegar Piconet).
Jednostka: N * 0,3125 ms (1 zegar Bluetooth)
Retransmission_Count 4 oktety Liczba retransmisji od ostatniego zdarzenia.
Po zgłoszeniu problemu do gospodarza liczba ta zostanie zresetowana.
No_RX_Count 4 oktety Brak liczby RX od ostatniego zdarzenia.
Liczba zwiększa się, gdy w zaplanowanym czasie nie zostanie odebrany żaden pakiet lub odebrany pakiet jest uszkodzony.
Po zgłoszeniu problemu do gospodarza liczba ta zostanie zresetowana.
NAK_Count 4 oktety Liczba NAK (Negative Acknowledge) od ostatniego zdarzenia.
Po zgłoszeniu problemu do gospodarza liczba ta zostanie zresetowana.
Last_TX_ACK_Timestamp 4 oktety Sygnatura czasowa ostatniego potwierdzenia TX. Jest ona oparta na zegarze Bluetooth w centrali piconet (CLK).
Jednostka: N * 0,3125 ms (1 zegar Bluetooth)
Flow_Off_Count 4 oktety Liczba razy, gdy kontroler otrzymał sygnał Flow-off (STOP) od ostatniego zdarzenia.
Po zgłoszeniu problemu do gospodarza liczba ta zostanie zresetowana.
Last_Flow_On_Timestamp 4 oktety Sygnatura czasowa ostatniego Flow-on (GO). Jest ona oparta na zegarze Bluetooth w centrali piconet (CLK).
Jednostka: N * 0,3125 ms (1 zegar Bluetooth)
Buffer_Overflow_Bytes 4 oktety [w Byte]

Liczba przepełnień bufora od ostatniego zdarzenia.
Sterownik zlicza, ile bajtów danych zostało odrzuconych.
Liczba ta zostanie zresetowana po zgłoszeniu do gospodarza.

Buffer_Underflow_Bytes 4 oktety [w Byte]

Liczba przypadków przepełnienia bufora od ostatniego zdarzenia.
Liczba ta zostanie zresetowana po zgłoszeniu do gospodarza.

bdaddr 6 oktetów Adres urządzenia zdalnego
cal_failed_item_count 1 oktet Liczba elementów, przy których wystąpiły błędy kalibracji
TX_Total_Packets 4 oktety Liczba wysłanych pakietów.
TX_UnAcked_Packets 4 oktety Liczba pakietów, które nie otrzymują potwierdzenia.
Liczba ta jest resetowana po zgłoszeniu do gospodarza.
TX_Flushed_Packets 4 oktety Liczba pakietów, które nie zostały wysłane przez punkt wyrównania.
Liczba ta jest resetowana po zgłoszeniu do gospodarza.
TX_Last_Subevent_Packets 4 oktety Liczba pakietów, które Link Layer przesyła w ramach PDU danych CIS w ostatnim podzdarzeniu zdarzenia CIS.
Liczba ta jest resetowana po zgłoszeniu do gospodarza.
Jeśli link nie ma prawidłowej wartości, jego wartość wynosi 0.
CRC_Error_Packets 4 oktety Liczba otrzymanych pakietów z błędem CRC od ostatniego zdarzenia.
Liczba ta jest resetowana po zgłoszeniu do gospodarza.
RX_Duplicate_Packets 4 oktety Liczba duplikatów (przesyłanych ponownie) pakietów otrzymanych od ostatniego zdarzenia.
Liczba ta jest resetowana po zgłoszeniu do gospodarza.
RX_Unreceived_Packets 4 oktety Liczba nieotrzymanych pakietów jest taka sama jak parametr polecenia LE READ ISO Link Quality (patrz główna specyfikacja Bluetooth w wersji 5.4). Powiązane strumienie to CIS i BIS.
Gdy ta wartość jest zwiększana, warstwa łącząca nie otrzymuje określonego ładunku danych w miejscu dopasowania (w przypadku CIS) ani na końcu zdarzenia, z którym jest powiązana (w przypadku BIS; patrz podstawowa specyfikacja Bluetooth w wersji 5.4 tom 6 część B, sekcja 4.4.6.6).
Coex_Info_Mask 2 oktety Bit 0 – CoexInvolvement: ustaw, aby wskazać, że podczas generowania tego raportu podejrzewasz, że w zbieraniu danych uczestniczył coex (np. A2DP Chops i Approaching LSTO).
Bit 1 – WL 2G Radio Active: ustaw, aby wskazać, że radio 2G WLAN jest aktywne.
Bit 2 – WL 2G Connected (Łączność z siecią 2G): ustawiony, aby wskazać, że radio 2G sieci WLAN jest aktywne i połączone.
Bit 3 – Aktywna sieć radiowa 5G/6G: ustaw, aby wskazać, że sieć radiowa 5G/6G jest aktywna.
Bity 4–15 – zarezerwowane
Parametr dostawcy (łączna długość parametru – TBD) * oktety dostawca kontrolera, aby uzyskać więcej parametrów specyficznych dla dostawcy;

Kod zdarzenia podrzędnego = 0x58 [Quality_Report_Id = 0x05, zdarzenie Root Inflammation]

To zdarzenie wskazuje, że interfejs HAL Bluetooth lub kontroler napotkał błąd krytyczny i potrzebuje modułu Bluetooth, aby zarejestrować tę sytuację i ponowić uruchomienie. W każdym przypadku kontroler musi wysłać do stosu Bluetooth zdarzenie Root_Inflammation_Event, zanim wyśle pierwszy fragment zdarzeń z informacjami debugowania.

Parametr Error_Code zawiera kod błędu zgłoszony przez HAL/Controller, 0, jeśli jest to błąd specyficzny dla dostawcy chipsetu. Parametr Vendor_Specific_Error_Code zawiera kod błędu dostawcy układu pochodzący z HAL/Controller. Jeśli parametr Error_Code nie ma wartości 0, powinien mieć wartość 0. Parametry Error_Code i Vendor_Specific_Error_Code nie mogą mieć obu wartości 0.

Parametr zdarzenia podrzędnego Rozmiar Cel
Quality_Report_Id 1 oktet 0x00 - 0x04: Zarezerwowane.
0x05: Zapalenie korzenia.
0x06 - 0xFF: zarezerwowane.
Error_Code 1 oktet 0x00: zawiera kod błędu specyficzny dla dostawcy układu.
0x01 do 0xFF: wystąpiła awaria kontrolera. Aby uzyskać listę kodów błędów i ich opisów, zapoznaj się ze specyfikacją Bluetooth [Tom 2], część D, „Kody błędów”.
Vendor_Specific_Error_Code 1 oktet 0x00: nie ma kodu błędu konkretnego dla dostawcy chipsetu.
0x01 -- 0xFF: kod błędu specyficzny dla dostawcy chipsetu.
Parametr dostawcy (łączna długość parametru – 4) * oktet dostawca kontrolera, aby uzyskać więcej parametrów specyficznych dla dostawcy;
Parametr zdarzenia podrzędnego Rozmiar Cel
Quality_Report_Id 1 oktet 0x00 - 0x10: Zarezerwowane.
0x11: ślad wiadomości LMP/LL.
0x12: śledzenie harmonogramu Bluetooth Multi-link/Coex.
0x13: zrzut danych Informacje debugowania kontrolera.
0x14 - 0xFF: zarezerwowane.
Connection_Handle 2 oktety Identyfikator połączenia.
Parametr dostawcy (łączna długość parametru – 4) * oktet Format specyficzny dla dostawcy śladu wiadomości LMP, śladu planowania Bluetooth Multi-link/Coex i dumpu danych z informacjami debugowania kontrolera.

Obsługa wielu reklamodawców

Cele obsługi wielu reklamodawców:

  • Obsługa wielu reklam (max_advt_instances)
  • różne moce nadawania, aby zapewnić różny zasięg;
  • różne treści reklamowe.
  • Indywidualne odpowiedzi dla każdego reklamodawcy
  • Prywatność (nieśledzona) dla każdego reklamodawcy
  • Łączenie

Aby zachować tę specyfikację w pobliżu istniejących standardów, podajemy te polecenia: Są one oparte na specyfikacji Bluetooth Core 4.1.

LE_Multi_Advt_Command

OCF: 0x154

Parametr polecenia Rozmiar Cel
Multi_advt_opcode 1 oktet 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

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
Multi_advt_opcode 1 oktet 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

Podstawowe źródło: specyfikacja Bluetooth Core 4.1, strona 964 (polecenie parametru reklamy LE Set)

Sub OCF: 0x01

Parametr podrzędnego polecenia Rozmiar Cel
Advertising_Interval_Min Specyfikacja Specyfikacja
Advertising_Interval_Max Specyfikacja Specyfikacja
Advertising_Type Specyfikacja Specyfikacja
Own_Address_Type Specyfikacja Specyfikacja
Own_Address Specyfikacja Specyfikacja
Direct_Address_Type Specyfikacja Specyfikacja
Direct_Address Specyfikacja Specyfikacja
Advertising_Channel_Map Specyfikacja Specyfikacja
Adverstising_Filter_Policy Specyfikacja Specyfikacja
Advertising_Instance 1 oktet Określa zastosowanie powyższych parametrów w przypadku instancji.
Tx_power 1 oktet Transmit_Power
Jednostka – dBm (sygnałowa liczba całkowita)
Zakres (od –70 do +20)

Parametr Own_Address może być adresem skonfigurowanym przez hosta w momencie konfigurowania tej instancji z wieloma reklamami. Umożliwia to posiadanie adresu prywatnego, który można rozwiązać w momencie przesyłania pierwszego sygnału beacon. Reklamy na instancji będą nadal wyświetlane niezależnie od połączenia. Host BT może wydać polecenie rozpoczęcia reklamy w instancji po połączeniu.

W związku z tym poleceniem zostanie wygenerowane zdarzenie „Command Complete” zgodnie ze specyfikacją Bluetooth Core 4.1, jak określono w powyższym poleceniu. Jeśli instancja reklamy lub parametry Tx_Power są nieprawidłowe, kontroler odpowie kodem niepowodzenia (nieprawidłowy parametr).

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
Multi_advt_opcode 1 oktet 0x01 [Set_Advt_Param_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd

Podstawowe źródło: specyfikacja Bluetooth Core 4.1, strona 969 (polecenie danych reklamowych LE Set)

Sub OCF: 0x02

Parametr podrzędnego polecenia Rozmiar Cel
Advertising_Data_Length Specyfikacja Specyfikacja
Advertising_Data Specyfikacja Specyfikacja
Advertising_Instance 1 oktet Określa zastosowanie powyższych parametrów w przypadku instancji.

W związku z tym poleceniem zostanie wygenerowane zdarzenie „Command Complete” zgodnie ze specyfikacją Bluetooth Core 4.1, jak określono w powyższym poleceniu. Jeśli instancja reklamy lub parametry Tx_Power są nieprawidłowe, kontroler odpowie kodem niepowodzenia.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
Multi_advt_opcode 1 oktet 0x02 [Set_Advt_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd

Podstawowe źródło odniesienia: specyfikacja Bluetooth Core 4.1, strona 970 (polecenie danych odpowiedzi LE Set Scan)

Sub OCF: 0x03

Parametr podrzędnego polecenia Rozmiar Cel
Scan_Response_Data_Length Specyfikacja Specyfikacja
Scan_Response_Data Specyfikacja Specyfikacja
Advertising_Instance 1 oktet Określa zastosowanie powyższych parametrów w przypadku instancji.

W związku z tym poleceniem zostanie wygenerowane zdarzenie „Command Complete” zgodnie ze specyfikacją Bluetooth Core 4.1, jak określono w powyższym poleceniu. Jeśli instancja reklamy lub parametry Tx_Power są nieprawidłowe, kontroler odpowie kodem niepowodzenia (nieprawidłowy parametr).

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
Multi_advt_opcode 1 oktet 0x03 [Set_Scan_Resp_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd

Podstawowe źródło: specyfikacja Bluetooth Core 4.1, strona 963 (polecenie LE Set Random Address).

Sub OCF: 0x04

Parametr podrzędnego polecenia Rozmiar Cel
Adres losowy Specyfikacja Specyfikacja
Advertising_Instance 1 oktet Określa zastosowanie powyższych parametrów w przypadku instancji.

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
Multi_advt_opcode 1 oktet 0x04 [Set_Random_Addr_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd

Podstawowe źródło: specyfikacja Bluetooth Core 4.1, strona 971 (polecenie Advertise Enable w tej specyfikacji podstawowej)

OCF: 0x05

Parametr podrzędnego polecenia Rozmiar Cel
Advertising_Enable 1 oktet Wartość 1 oznacza włączenie. Każda inna wartość oznacza wyłączenie.
Advertising_Instance 1 oktet Określa, czy powyższe parametry są stosowane do instancji. Instancja 0 oznacza standardową instancję HCI.

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
Multi_advt_opcode 1 oktet 0x05 [Set_Advt_Enable_Multi_Sub_Cmd]

Przeniesienie przetwarzania przetwarzania adresu prywatnego

Ta funkcja rozwiązuje adres prywatny w oprogramowaniu układu sterującego lub w sprzęcie, co zapewnia następujące korzyści:

  • Opóźnienie związane z hostem podczas rozwiązywania adresu prywatnego
  • oszczędzanie energii przez niebudzenie gospodarza;

LE_Set_RPA_Timeout

OCF: 0x15C

Parametr polecenia Rozmiar Cel
LE_local_IRK 16 oktetów IRK urządzenia lokalnego użyty do wygenerowania losowych adresów możliwych do rozwiązania.
tRPA_min 2 oktety Minimalny limit czasu generowania RPA w sekundach. Po upływie tego czasu kontroler musi generować nowe adresy rozwiązywalne dla wszystkich zdarzeń reklamowych/skanowania/połączenia.
Dozwolony zakres: 300–1800
tRPA_max 2 oktety Maksymalny limit czasu generowania RPA w sekundach. Kontroler musi wygenerować nowe adresy do rozwiązywania dla wszystkich zdarzeń reklamowych/skanowania/łączenia przed upływem tego limitu czasu lub przed jego przekroczeniem.
Zakres prawidłowy: tRPA_min-1800
Parametr „return” Rozmiar Cel
Status 1 oktet Stan polecenia.

Sugerowane wartości stanu HCI:
0x00 Sukces
0x01 Nieznany polecenie (jeśli nie jest obsługiwane)
0x12 Nieprawidłowe parametry polecenia (jeśli którykolwiek z nich wykracza poza podany zakres)

LE_RPA_offload_Command

OCF: 0x155

Parametr polecenia Rozmiar Cel
RPA_offload_opcode 1 oktet 0x1 – Włączanie funkcji dla konkretnego klienta
0x2 – Dodawanie IRK do listy
0x3 – Usuwanie IRK z listy
0x4 – Czyszczenie listy IRK
0x5 – Czytanie pozycji na liście IRK

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
Event_RPA_offload_opcode 1 oktet 0x1 – Włączanie funkcji dla konkretnego klienta
0x2 – Dodawanie IRK do listy
0x3 – Usuwanie IRK z listy
0x4 – Czyszczenie listy IRK
0x5 – Czytanie pozycji na liście IRK

LE_RPA_offload: Enable_cust_specific_sub_Command

Sub OCF: 0x01

Parametr podrzędnego polecenia Rozmiar Cel
enable_customer_specific_feature_set 1 oktet 0x01 – włączenie funkcji RPA z odciążeniem
0x00 – wyłączenie funkcji RPA z odciążeniem

Host musi włączyć przenoszenie zadań RPA na podstawie możliwości chipa. Zapoznaj się z artykułem LE_Get_Vendor_Capabilities_Command. Każdy układ może mieć inny max_irk_list_sz w oprogramowaniu układowym.

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
Event_cust_specific_feature_opcode 1 oktet 0x01 [Enable customer-specific feature]

LE_RPA_offload: Add_IRK_to_list_sub_Command

Sub OCF: 0x02

Parametr podrzędnego polecenia Rozmiar Cel
LE_IRK 16 oktetów LE IRK (1. bajt LSB)
Address_Type 1 oktet 0: Adres publiczny
1: Losowy adres
LE_Device_Address 6 oktetów Publiczny lub losowy adres powiązany z IRK (1. bajt LSB)

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
Event_cust_specific_feature_opcode 1 oktet 0x02 [Add IRK to the list]
LE_IrkList_AvailableSpaces 1 oktet Dostępne pozycje na liście IRL po bieżącej operacji

LE_RPA_offload: Remove_IRK_to_list_sub_Command

Sub OCF: 0x03

Parametr podrzędnego polecenia Rozmiar Cel
Address_Type 1 oktet 0: Adres publiczny
1: Losowy adres
LE_Device_Address 6 oktetów Publiczny lub losowy adres powiązany z identyfikatorem IRK

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
Event_cust_specific_feature_opcode 1 oktet 0x03 [Remove IRK from the list]
LE_IrkList_AvailableSpaces 1 oktet Dostępne wpisy na liście IRL po bieżącej operacji

LE_RPA_offload: Clear_IRK_list_sub_Command

Sub OCF: 0x04

Parametr podrzędnego polecenia Rozmiar Cel
Brak

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
Event_cust_specific_feature_opcode 1 oktet 0x04 [Wyczyść listę IRK]
LE_IrkList_AvailableSpaces 1 oktet Dostępne wpisy na liście IRL po bieżącej operacji [max_irk_list_sz]

LE_RPA_offload: Read_IRK_list_sub_Command

Sub OCF: 0x05

Parametr podrzędnego polecenia Rozmiar Cel
LE_read_IRK_list_entry-index 1 oktet Indeks listy IRK [0, max_irk_list_sz-1]

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.

Parametr „return” Rozmiar Cel
Status 1 oktet Stan „Command Complete”
Event_cust_specific_feature_opcode 1 oktet 0x05 [Read IRK List Entry]
LE_Read_IRK_List_entry 1 oktet Indeks IRK, który host chce odczytać (maksymalna liczba IRK na liście to 32)
LE_IRK 16 oktetów Wartość IRK
Address_Type 1 oktet 0: Adres publiczny
1: Losowy adres
LE_Device_Address 6 oktetów Publiczny lub losowy adres powiązany z IRK
LE_Resolved_Private_Address 6 oktetów Aktualny rozwiązany adres prywatny tego IRK