Wymagania HCI

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

Ten dokument zawiera listę wymagań dotyczących Bluetootha (BT) i Bluetooth Low Energy (BLE) HCI. Zależy nam, aby dostawcy stosów hostów i kontrolerów BT spełniali te wymagania platformy, aby mogli korzystać z opisanego poniżej zestawu.

W tym dokumencie specyfikacja Bluetooth Core 5.2 jest nazywana „specyfikacją”. Specyfikacja Bluetooth Core 5.2 jest dostępna na stronie Bluetooth SIG wraz z innymi obowiązującymi dokumentami.

Ogólne omówienie projektu

Funkcje i konfiguracja układu

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

Aby zarządzać zróżnicowanym krajobrazem i zarządzać migracjami, w tym dokumencie opisano filozofię projektowania, w ramach której kontrolery BT ujawniają swoje możliwości (oprócz standardowej specyfikacji Bluetooth Core 5.2). Stos BT hosta może następnie użyć tych możliwości do określenia, które funkcje należy włączyć.

Wspieranie otwartych standardów

Jednym z celów Androida jest obsługa otwartych standardów po ratyfikacji w specyfikacji Bluetooth. Jeśli w przyszłej specyfikacji Bluetooth funkcja opisana poniżej stanie się dostępna w standardowych metodach HCI, będziemy dążyć do ustawienia tego podejścia jako domyślnego.

Możliwości specyficzne dla dostawców

Polecenie dostawcy: LE_Get_Vendor_Capabilities_Command

Pole polecenia OpCode (OCF): 0x153

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

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
max_advt_instances
(Wycofano)
1 oktet Liczba obsługiwanych instancji reklam.

Zarezerwowane po wersji 0.98.
Ten parametr został wycofany w specyfikacji funkcji Google w wersji 0.98 lub nowszej i zastąpiony przez funkcję LE Extended Advertising dostępną w specyfikacji BT w wersji 5.0 lub nowszej.
offloaded_resolution_of_private-address
(Wycofano)
1 oktet Możliwości układu BT w RPA.
Jeśli obsługuje go element, host musi go włączyć.
0 = Brak możliwości
1 = Obsługuje

Zarezerwowany po wersji 0.98.
Ten parametr został wycofany w specyfikacji funkcji Google w wersji 0.98 lub nowszej i zastąpiona funkcją prywatności dostępną w specyfikacji BT w wersji 4.2 lub nowszej.
total_scan_results_storage 2 oktety Miejsce na wyniki 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 = niemożliwe
1 = zdolne
version_supported 2 oktety Określa wersję obsługiwanej specyfikacji funkcji Google
byte[0] = liczba główna
byte[1] = liczba mniejsza

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

Zarezerwowane po wersji 0.98.
Ten parametr został wycofany w specyfikacji funkcji Google w wersji 0.98 lub nowszej i zastąpiona funkcją prywatności dostępną w specyfikacji BT w wersji 4.2 lub nowszej.
A2DP_source_offload_capability_mask 4 oktety Obsługiwane maski bitowe dla typów kodeków
Bit 0 – kontroler SBC
Bit 1 – AAC
Bit 2 – APTX
Bit 3 – APTX HD
Bit 4 – LDAC
Bit 5–31 jest zarezerwowany
bluetooth_quality_report_support 1 oktet Obsługuje raportowanie zdarzeń związanych z jakością Bluetootha
0 = brak możliwości
1 = obsługuje
dynamic_audio_buffer_support 4 oktety Obsługuje dynamiczny bufor audio w kontrolerze Bluetooth
Obsługiwane maski bitowe dla kodeków
Bit 0 – kontroler SBC
Bit 1 – AAC
Bit 2 – APTX
Bit 3 – APTX HD
Bit 4 – LDAC
Bit 5–31 jest zarezerwowany
a2dp_offload_v2_support 1 oktet Obsługuje polecenia A2dp Offload v2 na kontrolerze Bluetooth (patrz: Rozpoczynanie odciążania A2DP i Stop A2DP Offload)
0 = Nieobsługiwane
1 = Obsługiwane

Grupowanie wyników skanowania

Celem projektu jest ulepszenie sposobu, w jaki powiadomienia o zdarzeniach skanowania Bluetooth LE Scan Response są dostarczane do hosta w celu zaoszczędzenia energii.

Dzięki zmniejszeniu częstotliwości, z jaką kontroler powiadamia procesor aplikacji hosta o konieczności skanowania wyników, procesor aplikacji hosta może dłużej pozostawać w stanie bezczynności lub uśpienia. Zmniejsza to zużycie energii przez hosta. Zwracany parametr total_scan_results_storage o wartości LE_Get_Vendor_Capabilities_Command wskazuje możliwość przechowywania wyników skanowania przez element.

Ta funkcja koncentruje się na zarządzaniu miejscem przechowywania wyników LE Scan i ich konfigurowaniu w kontrolerze Bluetooth. Miejsce na dane służy do tymczasowego grupowania danych dotyczących reklam oraz skanowania danych i metadanych otrzymywanych przez kontroler do późniejszego dostarczenia na host.

Oprogramowanie układowe obsługuje 2 rodzaje grupowania, które można włączać jednocześnie:

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

LE_Batch_Scan_Command (Polecenie skanowania wsadowego)

OCF: 0x156

Parametr polecenia Rozmiar Cel
Batch_Scan_opcode 1 oktet 0x1 – Włącz funkcję specyficzną dla klienta
0x2 – ustaw parametry pamięci skanowania zbiorczego
0x3 – ustaw parametry skanowania zbiorczego
0x4 – odczyt parametrów wyników skanowania zbiorczego

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia. Włączenie funkcji danego klienta nie spowoduje rozpoczęcia skanowania.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
Batch_Scan_opcode 1 oktet 0x1 – Włącz funkcję specyficzną dla klienta
0x2 – ustaw parametry pamięci skanowania zbiorczego
0x3 – ustaw parametry skanowania zbiorczego
0x4 – odczyt parametrów wyników skanowania zbiorczego

LE_Batch_Scan_Command: włącz funkcję specyficzną dla klienta

Sub OCF: 0x01

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

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
Batch_Scan_opcode 1 oktet 0x1 – Włącz funkcję specyficzną dla klienta
0x2 – ustaw parametry pamięci skanowania zbiorczego
0x3 – ustaw parametry skanowania zbiorczego
0x4 – odczyt parametrów wyników skanowania zbiorczego

LE_Batch_Scan_Command: ustaw podpolecenie dla parametru skanowania zbiorczego

Sub OCF: 0x02

Parametr polecenia podrzędnego Rozmiar Cel
Batch_Scan_Full_Max 1 oktet Maksymalne miejsce na dane (w %) przydzielone do pełnego stylu
[Zakres: 0–100]
Batch_Scan_Truncated_Max 1 oktet Maksymalna ilość miejsca na dane (w %) przydzielona do stylu obciętego
[Zakres: 0–100]
Batch_Scan_Notify_Threshold 1 oktet Poziom powiadomień (w procentach) dla pojedynczej puli pamięci masowej
[Zakres: 0–100]
Ustawienie na 0 wyłącza powiadomienia. Wygenerowane jest zdarzenie HCI specyficzne dla dostawcy (podzdarzenie naruszenia progu pamięci masowej)

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
Batch_scan_opcode 1 oktet 0x02 [Ustaw parametry skanowania zbiorczego]

LE_Batch_Scan_Command: ustaw podpolecenie dla parametru skanowania zbiorczego

Sub OCF: 0x03

Parametr polecenia podrzędnego Rozmiar Cel
Batch_Scan_Mode 1 oktet 0x00 – skanowanie wsadowe jest wyłączone
0x01 – włączony jest tryb skrócony
0x02 – włączony jest tryb pełny
0x03 – tryb pełnego i skróconego jest włączony
Duty_cycle_scan_window 4 oktety Czas skanowania zbiorczego (liczba przedziałów)
Duty_cyle_scan_interval 4 oktety Okres skanowania zbiorczego (liczba przedziałó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ę o najgorszym kanale RSSI.

To polecenie podrzędne rozpocznie skanowanie wsadowe, jeśli jest włączone. W przypadku skanowania skróconego wyniki są przechowywane w formie skróconej, w której unikalny klucz obciętego stylu to {BD_ADDR, scan_interval}. Oznacza to, że na każdy interwał skanowania rejestrowany będzie tylko 1 element BD_ADDR will. Rekord do zachowania w trybie skróconym: {BD_ADDR, Tx Power, RSSI, Timestamp}

Gdy tryb całego ruchu jest włączony, używane jest aktywne skanowanie, a odpowiedzi skanowania będą rejestrowane. Unikalny klucz pełnego stylu = {MAC, Ad package}, niezależnie od odstępu skanowania. Rekord do zachowania trybu pełnego to {BD_ADDR, Tx Power, RSSI, Timestamp, Ad package, Scan Response}. W pełnym stylu ten sam pakiet AD, który występuje wielokrotnie w różnych interwałach skanowania, jest rejestrowany tylko raz. Jednak w trybie skróconym widoczna jest widoczność BA_ADDR w różnych interwałach skanowania (raz na interwał skanowania). RSSI to średnia wartość wszystkich duplikatów unikalnej reklamy w danym przedziale skanowania.

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
Batch_scan_opcode 1 oktet 0x03 [Ustaw parametry skanowania zbiorczego]

LE_Batch_Scan_Command: polecenie podrzędne odczytu wyników skanowania zbiorczego

Sub OCF: 0x04

Parametr polecenia podrzędnego Rozmiar Cel
Batch_Scan_Data_read 1 oktet 0x01 – dane w trybie skróconym
0x02 – dane w trybie całego trybu

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia. Gdy host wykona to polecenie, wszystkie wyniki na kontrolerze mogą nie zmieścić się w jednym zdarzeniu Command complete. Host będzie powtarzał wykonywanie tego polecenia do momentu, gdy odpowiednie wyniki zdarzenia Command complete będą miały wartość 0, co oznacza, że kontroler nie ma więcej rekordów do skomunikowania się z hostem. Każde zdarzenie Command complete może zawierać wiele rekordów tylko jednego typu danych (pełnego lub obciętego).

Odniesienia do czasu kontrolera i hosta nie są synchronizowane. Jednostka sygnatury czasowej to 50 ms. Wartość sygnatury czasowej zależy od tego, kiedy host podał Read_Batch_Scan_Results_Sub_cmd. Jeśli godzina dostarczenia polecenia w oprogramowaniu układowym to T_c, oznacza to, że sygnatura czasowa w oprogramowaniu to T_fw. Czas raportowania będzie: (T_cT_fw). T_c i T_fw znajdują się w domenie czasu oprogramowania układowego. Dzięki temu host może obliczyć, ile czasu minęło od wystąpienia zdarzenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
Batch_scan_opcode 1 oktet 0x03 [Ustaw parametry skanowania zbiorczego]
Batch_Scan_data_read 1 oktet Określa format (skrócony lub pełny)
num_of_records 1 oktet Liczba rekordów w polu Batch_Scan_data_read
format_of_data Zmienna Truncated Mode:
Address[0]: 6 octet [oct_1]
[pkt1_oktet]
Address_Type[0]: 1 oktet
Tx_Pwr[0]: 1 oktet
RSSI[0] : 1 oktet
Timestamp[0]: 2 oktety
[wielu rekordów (num_of_records) w powyższym formacie:










num_of_recordsScan_data_resp

Filtr treści pakietów reklamowych

Służy do włączania, wyłączania lub konfigurowania filtra treści pakietów reklamowych (APCF) w kontrolerze. APCF filtruje w kontrolerze raporty dotyczące reklam, ale nie filtruje okresowych reklam.

Polecenie LE_APCF

OCF: 0x157

Parametr polecenia Rozmiar Cel
APCF_opcode 1 oktet 0x00 – APCF Włączona 0x01 0x01 – 0x01 – 0x01 – 0x01 – wartość APCF Ustaw parametry filtrowania
0x02 – Adres nadawcy APCF APCF
0x03 – APCF Service UUID
0x04 – APCF Service APCF UUID
0x05 – APCF Local Data Service 0x0









Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan zwrotu
APCF_opcode 1 oktet 0x00 – APCF Włączona 0x01 0x01 – 0x01 – 0x01 – 0x01 – wartość APCF Ustaw parametry filtrowania
0x02 – Adres nadawcy APCF APCF
0x03 – APCF Service UUID
0x04 – APCF Service APCF UUID
0x05 – APCF Local Data Service 0x0









LE_APCF_Command: Włącz_sub_cmd

Sub OCF: 0x00

Parametr polecenia podrzędnego Rozmiar Cel
APCF_enable 1 oktet 0x01 – Włącz funkcję APCF
0x00 – Wyłącz funkcję APCF

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
APCF_opcode 1 oktet 0x0 – włączony APCF
APCF_Enable 1 oktet Włączanie/wyłączanie jest ustawiane przez: APCF_enable

LE_APCF_Command: set_filtering_parameters_sub_cmd

To polecenie podrzędne służy do dodawania lub usuwania specyfikacji filtra oraz czyszczenia listy filtrów na potrzeby filtrowania lokalnego.

Sub OCF: 0x01

Parametr polecenia podrzędnego Rozmiar Cel
APCF_Action 1 oktet 0x00 – Dodaj
0x01 – Usuń
0x02 – Wyczyść
Usuń spowoduje usunięcie określonego filtra wraz z powiązanymi wpisami cech w innych tabelach.
Wyczyszczenie spowoduje wyczyszczenie wszystkich filtrów i powiązanych wpisów z innych tabel.
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: ustawiono, aby włączyć filtr zmiany danych usługi
Bit 2: ustaw, aby włączyć sprawdzanie UUID usługi
Bit 3: Ustaw, aby włączyć sprawdzanie UUID usługi pozyskiwania usług.
Bit 4: Ustaw, aby włączyć sprawdzanie danych lokalnego identyfikatora usługi:
Bit 5: Ustawiono, aby włączyć Sprawdzanie danych usługi AD: Bit Service Data: Ustawiono bit danych usługi: Bit 6.


APCF_List_Logic_Type 2 oktety Operacja logiczna dla każdego wyboru cechy (pozycji na bitwę) określonego w funkcji APCF_Feature_Selection.
Działa tylko wtedy, gdy funkcja jest włączona.
Wartość pozycji bitowej:
0: LUB
1: I
Jeśli wybierzesz logikę „AND”, pakiet ADV przejdzie filtr tylko wtedy, gdy zawiera WSZYSTKIE pozycje na liście.
Jeśli wybrana jest logika „LUB”, pakiet ADV będzie przechodził przez filtr, jeśli zawiera dowolną pozycję na liście.
APCF_Filter_Logic_Type 1 oktet 0x00: LUB
0x01: I
Uwaga: w przypadku pierwszych 3 pól APCF_Feature_Selection typem logicznym jest „Nie dotyczy”. Zawsze jest przy tym operator logiczny „ORAZ”. Mają zastosowanie tylko do 4 pól (bit 3 – bit 6) APCF_Feature_Selection.
rssi_high_thresh 1 oktet [in dBm]
Reklamodawca jest uważany za widoczny tylko wtedy, gdy sygnał jest wyższy niż górny próg RSSI. W przeciwnym razie oprogramowanie układowe musi zachowywać się tak, jakby nigdy go nie zobaczyło.
delivery_mode 1 oktet 0x00 – immediate
0x01 – on_found
0x02 – batched
onfound_timeout 2 oktety Obowiązuje tylko wtedy, gdy delivery_mode ma wartość on_found.
[w milisekundach]
Czas na odczekanie chwili, aż oprogramowanie pobierze się i zbierze dodatkowe reklamy przed przesłaniem raportu.
onfound_timeout_cnt 1 oktet Obowiązuje tylko wtedy, gdy delivery_mode ma wartość on_found.
[count]
Jeśli reklama w aplikacji onFound pozostanie w oprogramowaniu przez onfound_timeout, wyświetli się kilka reklam i zostanie sprawdzona ich liczba. Jeśli liczba przekroczy onfound_timeout_cnt, od razu po tym zgłoszeniu jest raportowana wartość OnFound.
rssi_low_thresh 1 oktet Obowiązuje tylko wtedy, gdy delivery_mode ma wartość on_found.
[in dBm]
Pakiet reklamodawcy jest uważany za niewidoczny, jeśli wartość RSSI odebranego pakietu nie przekracza dolnego progu RSSI.
onlost_timeout 2 oktety Obowiązuje tylko wtedy, gdy delivery_mode ma wartość on_found.
[w milisekundach]
Jeśli reklama nie pojawia się obok siebie w ciągu lost_timeout okresu, po tym, jak została znaleziona, zostanie natychmiast zgłoszona jako utrata.
num_of_tracking_entries 2 oktety Obowiązuje tylko wtedy, gdy delivery_mode ma wartość on_found.
[count]
Łączna liczba reklamodawców do śledzenia na filtr.

Wartości RSSI muszą korzystać z dopełnienia 2 do reprezentowania wartości ujemnych.

Host powinien skonfigurować wiele filtrów z wartością APCF_Application_Address_type ustawioną na 0x02 (dla wszystkich adresów nadawcy) pozwalających zarządzać różnymi kombinacjami filtrów.

Filtrowanie, grupowanie i raportowanie to powiązane ze sobą pojęcia. Wszystkie reklamy i powiązane odpowiedzi na skanowanie muszą przejść przez wszystkie filtry, jeden po drugim. Otrzymane w ten sposób działania (delivery_mode) są ściśle powiązane z filtrowaniem. Dostępne tryby dostarczania: report_immediately, batch i onFound. Wartość OnLost jest powiązana z OnFound w tym sensie, że w razie utraty pojawi się po OnFound.

Proces przetwarzania danych przedstawia koncepcyjny model:

Po otrzymaniu ramki reklamy (lub odpowiedzi skanowania) jest ona stosowana do wszystkich filtrów w kolejności. Reklama może spowodować natychmiastowe raportowanie na podstawie 1 filtra i grupowania tego samego parametru w wyniku innego działania filtra.

Progi poziomu RSSI (wysoki i niski) umożliwiają kontrolowanie, kiedy klatka ma być widoczna podczas przetwarzania filtra, nawet jeśli kontroler odbiera prawidłowy pakiet. Gdy tryb dostarczania jest ustawiony na natychmiastowy lub wsadowy, dane RSSI ramki są brane pod uwagę na potrzeby dalszego przetwarzania przez kontroler. Różne aplikacje wymagają różnych metod raportowania i grupowania. Dzięki temu wiele aplikacji może równocześnie raportować lub grupować wyniki z oprogramowania układowego. Przykładem może być sytuacja, w której skanowanie wsadowe jest aktywne w jednej aplikacji, a potem przez inną aplikację wykonywane jest zwykłe skanowanie LE. Przed przeprowadzeniem skanowania zbiorczego platforma lub aplikacja ustawia odpowiednie filtry. Później, gdy druga aplikacja uruchomi regularne skanowanie, poprzednie grupowanie będzie kontynuowane. Jednak ze względu na standardowe skanowanie przypomina to koncepcyjną dodanie 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 wsadowego, jeśli istniało.

Tryb wyświetlania OnFound jest oparty na skonfigurowanych filtrach. Kombinacja, która wyzwala działanie filtra, jest uważane za encję do śledzenia pod kątem onLost. Odpowiednie zdarzenie to podzdarzenie śledzenia LE Advt.

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

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
APCF_opcode 1 oktet 0x01 – ustaw parametry filtrowania APCF
APCF_Action 1 oktet Powtórz polecenie APCF_Action z polecenia wstecz
APCF_AvailableSpaces 1 oktet Liczba dostępnych wpisów w tabeli filtrów

LE_APCF_Command: transmisja_adresu_sub_cmd

To polecenie podrzędne służy do dodawania i usuwania adresu reklamodawcy oraz czyszczenia listy adresów reklamodawców na potrzeby filtrowania wbudowanego w układ scalony.

Sub OCF: 0x02

Parametr polecenia podrzędnego Rozmiar Cel
APCF_Action 1 oktet 0x00 – Dodaj
0x01 – Usuń
0x02 – Wyczyść
Usuń spowoduje usunięcie adresu nadawcy określonego w filtrze.
Wyczyść spowoduje usunięcie wszystkich adresów nadawcy ujętych w podanym filtrze.
APCF_Filter_Index 1 oktet Indeks filtra (0, max_filter-1)
APCF_Broadcaster_Address 6 oktet 6-bajtowy adres urządzenia, który można dodać do listy adresów nadawcy lub z niej usunąć
APCF_Application_Address_type 1 oktet 0x00: publiczny
0x01: losowe
0x02: nie dotyczy (ignoruj typ adresu)
Do filtrowania raportów reklamowych według typów adresów tożsamości (0x02, 0x03). Aby otrzymywać raporty reklamowe z adresami 0x02 i 0x03, ustaw w tym polu wartość 0x02: NA (zignoruj typ adresu).

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
APCF_opcode 1 oktet 0x02 – adres nadawcy APCF
APCF_Action 1 oktet Powtórz polecenie APCF_Action z polecenia wstecz
APCF_AvailableSpaces 1 oktet Liczba bezpłatnych wpisów, które są nadal dostępne w tabeli Adres rozgłoszeniowy

LE_APCF_Command: service_uuid_sub_cmd

To polecenie podrzędne służy do dodawania lub usuwania identyfikatora UUID usługi oraz do czyszczenia listy UUID usługi na potrzeby filtrowania w układzie układu.

Sub OCF: 0x03

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

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
APCF_opcode 1 oktet 0x03 – UUID usługi APCF
APCF_Action 1 oktet Powtórz polecenie APCF_Action z polecenia wstecz
APCF_AvailableSpaces 1 oktet Liczba bezpłatnych wpisów, które są nadal dostępne w tabeli UUID usługi

LE_APCF_Command: solicitation_uuid_sub_cmd

To polecenie podrzędne służy do dodawania lub usuwania identyfikatora UUID pozyskiwania lub czyszczenia listy UUID pozyskiwania na potrzeby filtrowania wbudowanego w układ scalony.

Sub OCF: 0x04

Parametr polecenia podrzędnego Rozmiar Cel
APCF_Action 1 oktet 0x00 – Dodaj
0x01 – Usuń
0x02 – Wyczyść
Usunięcie spowoduje usunięcie adresu UUID oferty reklamy w podanym filtrze.
Wyczyścić usuwa wszystkie identyfikatory UUID ofert reklamowych w określonym filtrze.
APCF_Filter_Index 1 oktet Indeks filtra (0, max_filter–1)
APCF_UUID 2,4,16 oktet UUID pozyskiwania (16-, 32- lub 128-bitowy), który ma zostać dodany do listy lub z niej usunięty.
APCF_UUID_MASK 2,4,16 oktet Maska UUID pozyskiwania (16-, 32- lub 128-bitowa) do dodania do listy. Powinien mieć taką samą długość jak APCF_UUID.

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
APCF_opcode 1 oktet 0x04 – UUID pozyskiwania APCF
APCF_Action 1 oktet Powtórz polecenie APCF_Action z polecenia wstecz
APCF_AvailableSpaces 1 oktet Liczba bezpłatnych wpisów, które są nadal dostępne w tabeli UUID pozyskiwania

LE_APCF_Command: local_name_sub_cmd

To polecenie podrzędne służy do dodawania i usuwania lokalnego ciągu nazw lub czyszczenia listy lokalnych ciągów nazw na potrzeby filtrowania w układzie układu.

Sub OCF: 0x05

Parametr polecenia podrzędnego 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 nazw ciągów w określonym filtrze.
APCF_Filter_Index 1 oktet Indeks filtra (0, max_filter–1)
APCF_LocName_Mandata_or_SerData Zmienny rozmiar Ciąg znaków dla nazwy lokalnej.

Uwagi:
  • Obecnie maksymalna liczba znaków w ciągu znaków lokalnej nazwy to 29
  • Nie ma zastosowania, gdy działaniem jest „Wyczyść” (0 x 2)

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
APCF_opcode 1 oktet 0x05 – Nazwa lokalna APCF
APCF_Action 1 oktet Powtórz polecenie APCF_Action z polecenia wstecz
APCF_AvailableSpaces 1 oktet Liczba bezpłatnych wpisów, które są nadal dostępne w tabeli nazw lokalnych

LE_APCF_Command: manf_data_sub_cmd

To polecenie podrzędne służy do dodawania i usuwania ciągu danych producenta oraz czyszczenia listy ciągów znaków z danymi producenta na potrzeby filtrowania w układzie układu.

Sub OCF: 0x06

Parametr polecenia podrzędnego Rozmiar Cel
APCF_Action 1 oktet 0x00 – Dodaj
0x01 – Usuń
0x02 – Wyczyść
Usunięcie spowoduje usunięcie określonego ciągu danych producenta w określonym filtrze.
Opcja „Wyczyść” spowoduje usunięcie wszystkich ciągów danych producenta z określonego filtra.
APCF_Filter_Index 1 oktet Indeks filtra (0, max_filter–1)
APCF_LocName_Mandata_or_SerData Zmienny rozmiar Ciąg znaków dla danych producenta.

Uwagi:
  • Obecnie maksymalna liczba znaków w ciągu znaków lokalnej nazwy to 29
  • Nie ma zastosowania, gdy działaniem jest „Wyczyść” (0 x 2)
APCF_ManData_Mask Zmienny rozmiar Maska danych producenta, która ma zostać dodana do listy. Powinien mieć taką samą długość jak APCF_LocName_or_ManData_or_SerData.

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
APCF_opcode 1 oktet 0x06 – Dane producenta APCF
APCF_Action 1 oktet Powtórz polecenie APCF_Action z polecenia wstecz
APCF_AvailableSpaces 1 oktet Liczba bezpłatnych pozycji, które są nadal dostępne w tabeli Dane producenta

LE_APCF_Command: service_data_sub_cmd

To polecenie podrzędne służy do dodawania lub usuwania ciągu danych usługi albo do czyszczenia listy ciągów danych usługi na potrzeby filtrowania na układzie.

Sub OCF: 0x07

Parametr polecenia podrzędnego Rozmiar Cel
APCF_Action 1 oktet 0x00 – Dodaj
0x01 – Usuń
0x02 – Wyczyść
Usunięcie spowoduje usunięcie określonego ciągu danych usługi w określonym filtrze.
Czyszczenie spowoduje usunięcie wszystkich ciągów danych usługi z określonego filtra.
APCF_Filter_Index 1 oktet Indeks filtra (0, max_filter–1)
APCF_LocName_Mandata_or_SerData Zmienny rozmiar Ciąg znaków dla danych usługi.

Uwagi:
  • Obecnie maksymalna liczba znaków w ciągu znaków lokalnej nazwy to 29
  • Nie ma zastosowania, gdy działaniem jest „Wyczyść” (0 x 2)
APCF_LocName_Mandata_or_SerData_Mask Zmienny rozmiar Maska danych usługi, którą chcesz dodać do listy. Powinien mieć taką samą długość jak APCF_LocName_or_ManData_or_SerData.

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
APCF_opcode 1 oktet 0x07 – Dane usługi APCF
APCF_Action 1 oktet Powtórz polecenie APCF_Action z polecenia wstecz
APCF_AvailableSpaces 1 oktet Liczba bezpłatnych wpisów, które są nadal dostępne w tabeli danych usługi

LE_APCF_Command: ad_type_sub_cmd

To polecenie podrzędne służy do dodawania lub usuwania typu usługi Active Directory lub czyszczenia listy typów usługi AD na potrzeby filtrowania wbudowanego w układ układu. Użyj read_extended_features_sub_cmd, aby sprawdzić, czy to polecenie jest obsługiwane.
Jeśli APCF_AD_DATA_Length ma wartość 0, przefiltruj APCF_AD_TYPE bez porównywania danych usługi AD z maską danych usługi AD. Jeśli długość danych w otrzymanym pakiecie ADV przekracza AD_DATA_LENGTH, porównaj tylko pierwsze AD_DATA_LENGTH bajty danych AD i zignoruj pozostałe.

Sub OCF: 0x09

Parametr polecenia podrzędnego Rozmiar Cel
APCF_Action 1 oktet 0x00 – Dodaj
0x01 – Usuń
0x02 – Wyczyść
Usuń usuwa określony typ reklamy w określonym filtrze.
Wyczyszczenie spowoduje wyczyszczenie wszystkich typów reklam w określonym filtrze.
APCF_Filter_Index 1 oktet Indeks filtra (0, max_filter–1)
APCF_AD_TYPE 1 oktet Typ reklamy, do której chcesz dodać pozycję lub z niej usunąć. Ignoruj, gdy APCF_Action ma wartość 0x02 (Wyczyść)
APCF_AD_DATA_Length 1 oktet 0x00 – oznacza niefiltrowanie treści danych
Ignoruj, gdy APCF_Action ma wartość 0x02 (Wyczyść)
APCF_AD_DATA Zmienny rozmiar Zmienna o zmiennym rozmiarze, na podstawie parametru APCF_AD_DATA_Length
Zignoruj, gdy APCF_Action ma wartość 0 x 02 (Wyczyść)
APCF_AD_DATA_MASK Zmienny rozmiar Zmienna o zmiennym rozmiarze na podstawie zasady APCF_AD_DATA_Length
Zignoruj, gdy APCF_Action ma wartość 0 x 02 (wyczyść)
Powinien mieć taką samą długość jak APCF_AD_DATA.

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
APCF_opcode 1 oktet 0x09 – typ reklamy APCF
APCF_Action 1 oktet Powtórz polecenie APCF_Action z polecenia wstecz
APCF_AvailableSpaces 1 oktet Liczba bezpłatnych pozycji, które są nadal dostępne w tabeli Typ reklamy

LE_APCF_Command: read_extended_features_sub_cmd

To polecenie podrzędne służy do odczytu rozszerzonych funkcji APCF.

Sub OCF: 0xFF

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

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
APCF_opcode 1 oktet 0xFF – APCF_Read_Extended_Features
APCF_extended_features 2 oktet

Maski bitowe do obsługi rozszerzonych funkcji:

  • Bit 0: obsługa filtra usługi wykrywania transportu
  • Fragment 1: obsługa filtra Typ reklamy
  • Część 2 ~15: zarezerwowana do użycia w przyszłości

Wartość bita

  • 0 = Nieobsługiwane
  • 1 = Obsługiwane

Polecenie zawierające informacje o aktywności i energii kontrolera

Te informacje służą do analizowania przez funkcje wyższych hostów wszystkich działań wszystkich komponentów, w tym kontrolera BT i jego stanu makro, w połączeniu z tym, co dzieje się w aplikacjach i platformie. W tym celu wymagane są te informacje ze stosu BT i kontrolera:

  • Stos BT: raportowanie bieżącego stanu makrooperacji kontrolera
  • Oprogramowanie układowe: zbiorcze raportowanie aktywności i energii

Stany makr stosu hosta BT określone na poziomie użytkownika:

  • Bezczynny: [page scan, LE advt, inquiry scan, LE scan]
  • Scan: [paging/zapytanie/próba połączenia]
  • Aktywne: [link do listy kontroli dostępu włączony, połączenie z SCO w toku, tryb wykrywania]

Działania, które kontroler śledzi w czasie swojego życia, to czas transmisji, czas Rx, czas bezczynności i całkowite zużycie energii. Są one usuwane po odczytaniu z hosta.

LE_Get_Controller_Activity_Energy_Info

Jest to polecenie specyficzne dla dostawcy.

OCF: 0x159

Parametr polecenia podrzędnego Rozmiar Cel
Nie dotyczy Puste parametry polecenia

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
total_tx_time_ms 4 oktety Łączny czas realizacji transakcji
total_rx_time_ms 4 oktety Całkowity czas realizacji wyświetleń
total_idle_time_ms 4 oktety Całkowity czas bezczynności (nie uśpiony, niski poziom zasilania)
total_energy_used 4 oktety Łączne zużycie energii [iloczyn prądu (mA), napięcia (V) i czasu (ms)]

Polecenie rozszerzonego zestawu parametrów skanowania LE

Za pomocą tego polecenia można włączyć większe okno skanowania i interwał skanowania w kontrolerze. Zgodnie ze specyfikacją BT Core 5.2 okno i interwał skanowania mają górną granicę wynoszącą 10,24 sekundy, co uniemożliwia aplikacji dłuższe okresy skanowania powyżej 10,24 sekundy.

Dokumentacja podstawowa: 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 zostaną wysłane żadne pakiety SCAN_REQ (domyślnie).
0x01 – aktywne skanowanie. Mogą zostać wysłane SCAN_REQ pakiety.
LE_Ex_Scan_Interval 4 oktety Zdefiniowany jako przedział czasu od momentu, w którym kontroler rozpoczął ostatnie skanowanie LE do rozpoczęcia kolejnego skanowania LE.
Zakres: 0x0004 do 0x00FFFFFF
Domyślnie: 0x0010 (10 ms)
Czas = N * 0,625 ms
Zakres czasu: od 2,5 do 10442,25 sekundy
LE_Ex_Scan_Window 4 oktety Czas trwania skanowania LE. Wartość LE_Scan_Window nie może być większa niż LE_Scan_Interval.
Zakres: 0x0004 do 0xFFFF
Domyślnie: 0x0010 (10 ms)
Czas = N * 0,625 ms
Zakres czasu: od 2,5 do 40,95 sekundy
Own_Address_Type 1 oktet 0x00 – publiczny adres urządzenia (domyślny)
0x01 – losowy adres urządzenia
LE_Ex_Scan_Filter_Policy 0x00 – zaakceptuj wszystkie pakiety reklamowe (domyślnie). Pakiety reklam kierowanych, które nie są adresowane dla tego urządzenia, będą ignorowane.
0x01 – ignoruj pakiety reklamowe z urządzeń nieznajdujących się na liście Tylko biała lista. Pakiety reklam kierowanych, które nie są adresowane dla tego urządzenia, będą ignorowane.

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia

Pobranie polecenia debugowania kontrolera

Ten element informacyjny służy do zbierania od hosta danych debugowania kontrolera w postaci binarnej, które są następnie przetwarzane i analizowane. Ułatwia to debugowanie problemów w terenie i zapewnia inżynierom zestaw narzędzi do logowania informacji na potrzeby analizy. Kontroler może dostarczać te informacje na żądanie hosta za pomocą zdarzenia (zdarzenie podrzędne Dane debugowania kontrolera) lub samodzielnie, gdy jest to wymagane przez kontroler. Przykładem użycia może być przesyłanie informacji o stanie oprogramowania układowego, danych zrzutu awarii, danych logowania itp.

OCF: 0x15B

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

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia

Obsługa odciążania sprzętu A2DP

Funkcja odciążania A2DP obsługuje odciążanie procesu kodowania dźwięku A2DP do procesora audio podłączonego do kontrolera BT. Zakodowany strumień danych audio jest przekazywany bezpośrednio z procesora audio do kontrolera BT bez udziału hosta BT. Host BT nadal odpowiada za konfigurację i kontrolę sesji A2DP. Dostępne są 2 wersje tych poleceń. Starsze polecenia z Sub OCF 0x01-0x02 obsługują tylko kodeki open source. Wersje z Sub-OCF 0x02-0x03 są niezależne od skonfigurowanego kodeka.

OCF: 0 x 15 dni

Rozpocznij odciążanie A2DP (starsza wersja)

Sub OCF: 0x01

Użyj tego polecenia, aby skonfigurować proces odciążania A2DP i uruchomić 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 Maksymalne dozwolone opóźnienie (w ms). Wartość 0 wyłącza opróżnianie.
SCMS-T_Enable 2 oktety Oktet 0: flaga, która umożliwia dodanie nagłówka SCMS-T.
  • 0x00 – brak nagłówka SCMS-T.
  • 0x01 – dołączony nagłówek SCMS-T.

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–96 000 Hz
Bits_Per_Sample 1 oktet 0x01 – 16 bitów na próbkę
0 x 02 – 24 bity na próbkę
0 x 04 – 32 bity na próbkę
Channel_Mode 1 oktet 0x01 – mono
0x02 – stereo
Encoded_Audio_Bitrate 4 oktety Szybkość kodowania zakodowanego dźwięku (w bitach na sekundę).
0x00000000 – szybkość transmisji dźwięku nie jest określona:  / unused.
0x00000001 - 0x00FFFFFF – kodowana szybkość transmisji dźwięku w bitach na sekundę.
0x01000000 – 0xFFFFFFFF – zarezerwowana.
Connection_Handle 2 oktety Uchwyt połączenia konfigurowanego połączenia A2DP
L2CAP_Channel_ID 2 oktety Identyfikator kanału L2CAP, który ma być używany na potrzeby tego połączenia A2DP
L2CAP_MTU_Size 2 oktety Maksymalny rozmiar L2CAP MTU zawierający zakodowane pakiety audio
Codec_Information 32 oktety Informacje dotyczące Kodeka.

Kodek SBC:

Więcej informacji o konkretnych elementach informacji dotyczących kodeka SBC znajdziesz w opisie A2DP w wersji 1.3.
Oktet 0: długość bloku | Podpasma | Metoda przydziału
Oktet 1: minimalna wartość puli bitowej
Oktet 2: maksymalna wartość puli bitów
Oktet 3: częstotliwość próbkowania | Tryb kanału
Oktet 4–31: zarezerwowane

Kodek AAC:

Zapoznaj się z elementami informacji związanymi z kodekiem AAC w A2DP w wersji 1.3
Oktet 0: typ obiektu
Oktet 1; b7: VBR
Oktet 2–31: zarezerwowany

Kodek LDAC:

Oktet 0–3: identyfikator dostawcy
0x0000012D

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

Oktet 6: indeks szybkości transmisji bitów:
0 x 00 – wysoka
0 x 01 – średnia
0 x 02 – niska
0 x 03 – 0 x 7E – zarezerwowana
0x7F – ABR (adaptacyjna szybkość transmisji bitów)
0 x 80 – 0xFF – zarezerwowana

Oktet 7: tryb kanału LDAC
0 x 01 – stereo
0 x 02 – podwójny
0x04 – mono
Inne są zarezerwowane

Oktet 8–31: zarezerwowany

Pozostałe kodeki:

Oktet 0–31: zarezerwowany

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
Sub_Opcode 1 oktet 0x01 – Rozpocznij odciążanie A2DP

Rozpocznij odciążanie A2DP

Sub OCF: 0x03

Użyj tego polecenia, aby skonfigurować proces odciążania A2DP i uruchomić strumień A2DP.

Parametr polecenia Rozmiar Cel
Connection Handle 2 oktety Uchwyt aktywnego połączenia HCI
L2CAP_Channel_ID 2 oktety Identyfikator kanału L2CAP otwarty na potrzeby strumieniowania A2DP
Data_Path_Direction 1 oktet 0x00 – wyjście (źródło AVDTP/scalanie)
0x01 – wejście (ujście/podział AVDTP)
Peer_MTU 2 oktety Maksymalny rozmiar pakietów L2CAP, negocjowanych z peerem.
CP_Enable_SCMS_T 1 oktet 0x00 – wyłączenie nagłówka ochrony treści SCMS-T
0x01 – włączenie nagłówka ochrony treści SCMS-T
CP_Header_SCMS_T 1 oktet Gdy nagłówek ochrony treści SCMS-T jest włączony (CP_SCMS_T_Enable ma wartość 0x01), określa wartość nagłówka poprzedzającą treść audio (patrz sekcja 3.2.1-2 A2DP) zgodnie z definicją w sekcji 6.3.2 funkcji Bluetooth Assigned Numbers.
Ignorowana, gdy ochrona treści SCMS-T nie jest włączona.
Vendor_Specific_Parameters_Length 1 oktet Długość parametrów specyficznych dla dostawcy z zakresu od 0 do 128.
Jeśli nie podano żadnych dodatkowych parametrów, używana jest wartość 0.
Vendor_Specific_Parameters 0–128 oktetów Parametry specyficzne dla dostawcy dostarczane przez HAL Bluetooth Audio, CodecParameters.vendorSpecificParameters[].

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
Sub_Opcode 1 oktet 0x03 – Rozpocznij odciążanie A2DP

Zatrzymaj odciążanie A2DP (starsza wersja)

Sub OCF: 0x02

To polecenie służy do zatrzymywania strumienia odciążania A2DP.

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

Nie zdefiniowano parametrów dla tego polecenia.

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
Sub_Opcode 1 oktet 0x02 – Zatrzymaj odciążanie A2DP

Zatrzymaj odciążanie A2DP

Sub OCF: 0x04

To polecenie służy do zatrzymywania strumienia odciążania A2DP.

Parametr polecenia Rozmiar Cel
Connection Handle 2 oktety Uchwyt aktywnego połączenia HCI
L2CAP_Channel_ID 2 oktety Identyfikator kanału L2CAP otwarty na potrzeby strumieniowania A2DP
Data_Path_Direction 1 oktet 0x00 – wyjście (źródło AVDTP/scalanie)
0x01 – wejście (ujście/podział AVDTP)

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
Sub_Opcode 1 oktet 0x04 – Zatrzymaj odciążanie A2DP

Polecenie raportu jakości Bluetooth

Funkcja polecenia raportu jakości BT uruchamia na kontrolerze Bluetooth mechanizm zgłaszania do hosta zdarzeń związanych z jakością Bluetootha. Możesz włączyć 4 opcje:

  • Tryb monitorowania jakości: kontroler okresowo wysyła do hosta podrzędne zdarzenie BQR związane z jakością linku.
  • Zbliża się LSTO: jeśli z podłączonego urządzenia BT nie są odbierane żadne pakiety przez okres dłuższy niż połowa czasu oczekiwania na połączenie z LSTO (Link Supervision TimeOut, LSTO), kontroler zgłasza do hosta zdarzenie zbliżające się do LSTO.
  • Zacinanie się dźwięku w A2DP: gdy kontroler wykryje czynniki, które powodują zacinanie się dźwięku, zgłasza do hosta zdarzenie A2DP Audio Choppy.
  • (e) Zacinanie się głosu SCO: gdy kontroler wykryje czynniki, które powodują zacinanie się, zgłasza (e) zdarzenie funkcji Voice Choppy gospodarzowi (e)SCO.
  • Zapalenie roota: to zdarzenie jest wysyłane przez kontroler do stosu, gdy HAL lub kontroler napotka błąd krytyczny i musi on ponownie uruchomić Bluetooth.
  • Śledzenie wiadomości LMP/LL: kontroler wysyła do hosta uzgadnianie połączenia wiadomości LMP/LL z urządzeniem zdalnym.
  • Śledzenie harmonogramów wielu profili Bluetooth/współpracy Bluetooth: kontroler wysyła do hosta informacje o harmonogramie dotyczące obsługi wielu profili Bluetooth i współistnienia sieci bezprzewodowych w paśmie 2,4 GHz.
  • Mechanizm informacji o debugowaniu kontrolera: gdy ta opcja jest włączona, kontroler może samodzielnie przekazywać do hosta informacje z logów debugowania za pomocą zdarzenia podrzędnego z informacjami o debugowaniu kontrolera.
  • LE Audio Choppy: gdy kontroler wykryje czynniki, które powodują zacinanie się, zgłasza zdarzenie LE Audio Choppy do hosta.
  • Tryb zaawansowanych statystyk dotyczących częstotliwości radiowej: kontroler przekazuje do hosta informacje o swoich statystykach dotyczących częstotliwości radiowej w oparciu o 2 przypadki użycia:
    • Raporty okresowe
    • Aktywatory zdarzeń (rozpoczęcie/zatrzymanie transmisji i reguła związana ze zdarzeniem związanym z jakością linku).
  • BQR_Report_Action of Bluetooth Quality Report (Raport o jakości Bluetooth): host może użyć tego polecenia HCI, aby pobrać jednorazowe zapytanie dotyczące trybu monitorowania jakości, trybu monitorowania energii lub trybu zaawansowanych statystyk częstotliwości radiowej.

OCF: 0x15E

Parametr polecenia Rozmiar Cel
BQR_Report_Action 1 oktet Działanie polegające na dodaniu lub usunięciu raportowania zdarzeń dotyczących jakości ustawionych w parametrze BQR_Quality_Event_Mask albo wyczyścić wszystkie dane.

0x00 – Dodaj
0x01 – Usuń
0x02 – Wyczyść
0x03 – zapytanie jednorazowe

Usunięcie spowoduje usunięcie konkretnych zdarzeń związanych z jakością.
Wyczyszczenie spowoduje wyczyszczenie wszystkich raportów o zdarzeniach jakości (parametr BQR_Quality_Event_Mask może zostać zignorowany).

BQR_Quality_Event_Mask 4 oktety Maski bitowe na potrzeby raportowania wybranych zdarzeń związanych z jakością.

Bit 0: włącz tryb monitorowania jakości.
Bit 1: ustawiony, aby włączyć zbliżające się zdarzenie LSTO (dla listy ACL/(e)SCO/ISO).
Bit 2: ustawiony, aby włączyć zdarzenie A2DP Przerywanie dźwięku.
Bit 3: ustaw, aby włączyć zdarzenie (e)SCO Voice Choppy.
Bit 4: ustaw, aby włączyć zdarzenie zapalenia korzeni.
Bit 5: ustaw, aby włączyć tryb monitorowania energii.
Bit 6: ustaw, aby włączyć zdarzenie przerwania dźwięku LE.
Bit 7: ustaw, aby włączyć zdarzenie nieudanego połączenia.
Bit 8: ustawiony, aby włączyć aktywator zdarzenia w trybie Zaawansowanych statystyk RF.
Bit 9: ustawiony, aby włączyć okresowy raport Advance RF Stats.
Bit 10 ~ 14: zarezerwowano.
Bit 15: ustawiony, aby włączyć zdarzenia dotyczące jakości zależne od dostawcy.
Bit 16: ustaw, aby włączyć śledzenie wiadomości LMP/LL.
Bit 17: włączony, aby włączyć śledzenie planowania przy użyciu funkcji Bluetooth Multi-Link/Coex.
Bit 18: ustawiony, aby włączyć mechanizm informacji debugowania kontrolera.
Bit 19–30: zarezerwowane.
Bit 31: ustawiony, aby włączyć śledzenie dla konkretnego dostawcy.

BQR_Minimum_Report_Interval 2 oktety Określ minimalny przedział czasu raportowania zdarzeń związanych z jakością w przypadku wybranych zdarzeń jakości. Oprogramowanie kontrolera nie powinno zgłaszać następnego zdarzenia w zdefiniowanym przedziale czasu. Ustawienie interwału powinno być odpowiednie i dedykowane dla dodawanych zdarzeń związanych z jakością.

Jednostka: ms
Wartość domyślna: 0 (bez ograniczeń czasowych)
Zakres: 0 ~ 65 535 ms

BQR_Vendor_Specific_Quality_Event_Mask 4 oktety Maski bitowe na potrzeby raportowania wybranych zdarzeń jakości specyficznych dla dostawcy.
Ten parametr jest prawidłowy tylko wtedy, gdy ustawiony jest bit 15 BQR_Quality_Event_Mask.

Bit 0 ~ 31: zarezerwowane.

BQR_Vendor_Specific_Trace_Mask 4 oktety Maski bitowe na potrzeby raportowania śledzenia wybranego dostawcy.
Ten parametr jest prawidłowy tylko wtedy, gdy ustawiony jest bit 31 BQR_Quality_Event_Mask.

Bit 0 ~ 31: zarezerwowane.

Report_interval_multiple 4 oktety Mnożnik dla pola BQR_Minimum_Report_Interval. Gdy ta wartość jest większa niż 1, interwał raportu BQR ma format
Interwał raportu BQR = BQR_Minimum_Report_Interval x Report_interval_multiple.
Oprogramowanie kontrolera nie może zgłaszać następnego zdarzenia w zdefiniowanym przedziale czasu. Ustawienie interwału jest przeznaczone konkretnie dla zdarzeń dodatkowej jakości.

Jednostka: ms
Wartość domyślna: 1
Zakres: 0 ~ 4294967295 (0: jest równe 1)

Uwaga: jeśli ustawienie BQR_Report_Interval przekracza możliwości kontrolera, po wykonaniu polecenia musi on zwrócić maksymalny czas BQR_Report_Interval.

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
Current_Quality_Event_Mask 4 oktety Wskazuje bieżące ustawienie maski bitów.
Bit 0: włączony jest tryb monitorowania jakości.
bit 1. Włączono raportowanie zdarzeń LSTO.
Bit 2: raportowanie zdarzeń A2DP Przerywanie dźwięku jest włączone.
Bit 3: (e) Raportowanie zdarzeń Voice Choppy SCO jest włączone.
Bit 4. Raportowanie zdarzeń zapalenia korzeni jest włączone.
Bit 5: włączony jest tryb monitorowania energii.
Bit 6. Raportowanie przerw w dźwiękach LE jest włączone.
Bit 7. Zdarzenie dotyczące nieudanego połączenia.
Bit 8: ustawiony, aby włączyć aktywator zdarzenia w trybie Zaawansowanych statystyk RF.
Bit 9: ustawiony, aby okresowo włączać Zaawansowane statystyki RF.
Bit 10 ~ 14: zarezerwowano.
bit 15. Raportowanie zdarzeń związanych z jakością zależne od dostawcy jest włączone.
Bit 16: śledzenie wiadomości LMP/LL jest włączone.
Bit 17. Śledzenie połączeń wielu linków/Coex w harmonogramie Bluetooth jest włączone.
Bit 18: mechanizm informacji debugowania kontrolera jest włączony.
Bit 19–30: zarezerwowane.
Bit 31: włączono śledzenie dostawcy.
Current_Vendor_Specific_Quality_Event_Mask 4 oktety Wskazuje bieżące ustawienie maski bitów.
Current_Vendor_Specific_Trace_Mask 4 oktety Wskazuje bieżące ustawienie maski bitów.
BQR_Report_interval 4 oktety Wskazuje bieżące ustawienie maski bitów.
Current_Vendor_Specific_Trace_Mask 4 oktety Ustawienie: BQR_Report_interval. Musi to być wartość minimalna z zakresu od BQR_Minimum_Report_Interval * Report_interval_multiple lub maksymalny interwału obsługiwania kontrolera.

Polecenie dynamicznego bufora dźwięku

Dynamic Audio Buffer redukuje zakłócenia dźwięku, zmieniając rozmiar bufora audio w kontrolerze Bluetooth w zależności od sytuacji.

OCF: 0x15F

Możliwość buforowania dźwięku

Sub OCF: 0x01

Użyj tego polecenia, aby pobrać z kontrolera Bluetooth możliwości buforowania dźwięku.

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

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
Dynamic_Audio_Buffer_opcode 1 oktet 0x01 – pobierz czas buforowania dźwięku
Audio_Codec_Type_Supported 4 oktety Maski bitowe dla obsługiwanych typów kodeków
Bit 0 – kontroler SBC
Bit 1 – AAC
Bit 2 – APTX
Bit 3 – APTX HD
Bit 4 – LDAC
Bit 5–31 jest zarezerwowany
Audio_Codec_Buffer_Default_Time_For_Bit_0 2 oktety Domyślny czas buforowania dla kodeka Bit 0 określonego w polu Audio_Codec_Type_Supported.
Jeśli kodek Bit 0 nie jest obsługiwany, ta wartość powinna wynosić 0.
Jednostka: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 2 oktety Maksymalny czas buforowania dla kodeka typu Bit 0 określonego w polu Audio_Codec_Type_Supported.
Jeśli kodek Bit 0 nie jest obsługiwany, ta wartość powinna wynosić 0.
Jednostka: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 2 oktety Minimalny czas buforowania dla kodeka typu Bit 0 określonego w polu Audio_Codec_Type_Obsługiwany.
Jeśli kodek Bit 0 nie jest obsługiwany, ta wartość powinna wynosić 0.
Jednostka: ms
Audio_Codec_Buffer_Default_Time_For_Bit_1 2 oktety Domyślny czas buforowania dla kodeka typu Bit 1 określonego w polu Audio_Codec_Type_Supported.
Jeśli kodek Bit 1 nie jest obsługiwany, ta wartość powinna wynosić 0.
Jednostka: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 2 oktety Maksymalny czas buforowania dla typu kodeka Bit 1 określonego w polu Audio_Codec_Type_Supported.
Jeśli kodek Bit 1 nie jest obsługiwany, ta wartość powinna wynosić 0.
Jednostka: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 2 oktety Minimalny czas buforowania dla kodeka typu Bit 1 określonego w polu Audio_Codec_Type_Obsługiwany.
Jeśli kodek Bit 1 nie jest obsługiwany, ta wartość powinna wynosić 0.
Jednostka: ms
... ... ...
Audio_Codec_Buffer_Default_Time_For_Bit_31 2 oktety Domyślny czas buforowania dla kodeka typu Bit 31 określonego w polu Audio_Codec_Type_Supported.
Jeśli kodek Bit 31 nie jest obsługiwany, ta wartość powinna wynosić 0.
Jednostka: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 2 oktety Maksymalny czas buforowania dla typu kodeka Bit 31 określonego w polu Audio_Codec_Type_Supported.
Jeśli kodek Bit 31 nie jest obsługiwany, ta wartość powinna wynosić 0.
Jednostka: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 2 oktety Minimalny czas buforowania dla kodeka typu Bit 31 określonego w polu Audio_Codec_Type_supported.
Jeśli kodek Bit 31 nie jest obsługiwany, ta wartość powinna wynosić 0.
Jednostka: ms

Ustaw czas 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 Żądany czas buforowania dźwięku dla obecnie używanego kodeka.
Jednostka: ms

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
Dynamic_Audio_Buffer_opcode 1 oktet 0x02 – Ustaw czas buforowania dźwięku
Audio_Codec_Buffer_Time 2 oktety Bieżący czas buforowania dźwięku na kontrolerze Bluetooth.
Jednostka: ms

Zdarzenie HCI (specyficzne dla dostawcy)

W niektórych przypadkach wymagane są zdarzenia HCI specyficzne dla dostawcy. Zobacz ilustrację 5.4 na stronie 1897 specyfikacji BT Core 5.2. Parametr 0 zdarzenia zawsze zawiera pierwszy kod zdarzenia podrzędnego, 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 zdarzenia podrzędnego ma 1 oktet, czyli bajt bezpośrednio po długości parametru w pakiecie zdarzenia HCI.

Podzdarzenie przekroczenia progu miejsca na dane

To zdarzenie oznacza, że limit miejsca na dane został przekroczony.

Kod zdarzenia podrzędnego = 0x54

Parametr zdarzenia podrzędnego Rozmiar Cel
Brak

LE – zdarzenie podrzędne zmiany stanu wielu reklam

To zdarzenie wskazuje, że wystąpienie reklamy zmieniło swój stan. Obecnie to zdarzenie jest używane tylko do wskazywania, która instancja reklam została zatrzymana w wyniku połączenia.

Kod zdarzenia podrzędnego = 0 x 55

Parametr zdarzenia podrzędnego Rozmiar Cel
Advertising_instance 1 oktet Identyfikuje konkretną instancję reklamową
Prawidłowe wartości to od 0 do max_advt_instances–1
State_Change_Reason 1 oktet 0x00: odebrano połączenie
Connection_handle 2 oktety Identyfikuje połączenie, które spowodowało wyłączenie instancji advt (0xFFFF, jeśli jest nieprawidłowa)

Podzdarzenie śledzenia reklam LE

To zdarzenie wskazuje, kiedy reklamodawca zostaje znaleziony lub utracony.

Kod zdarzenia podrzędnego = 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 stracił
Advt_Info_Present 1 oktet 0x00: obecne informacje o reklamodawcy (Advt_Info)
0x01: brak informacji o reklamodawcy (Advt_Info)
Advertiser_Address 6 oktetów Adres publiczny lub losowy
Advertiser_Address_Type 1 oktet 0x00: adres publiczny
0x01: adres losowy
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
Scan_data_resp_len[0]: 1 oktet
Scan_data_resp[0]: Scan_data_resp oktet

Zdarzenie podrzędne dotyczące informacji o debugowaniu kontrolera

To zdarzenie jest używane przez kontroler do dostarczania do hosta informacji binarnych debugowania.

Kod zdarzenia podrzędnego = 0x57

Parametr zdarzenia podrzędnego Rozmiar Cel
debug_block_byte_offset_start 2 oktety Debuguj przesunięcie bajtów bloku od początku
last_block 1 oktet 0x00: dostępnych jest więcej danych debugowania
0x01: ostatni blok binarny, brak danych debugowania
cur_pay_load_sz 2 oktety Rozmiar bloku plików binarnych w bieżącym zdarzeniu
Debug_Data Zmienna Dane debugowania: cur_payload_sz

Podzdarzenie raportu o jakości Bluetooth

To zdarzenie wskazuje jedną z tych sytuacji: wystąpiło zdarzenie związane z jakością Bluetootha, kontroler przesłał log czasu wiadomości LMP/LL i śledzenie planowania Bluetooth za pomocą wielu linków/Coex lub kontroler umieszczał dane debugowania.

Parametr zdarzenia podrzędnego Rozmiar Cel
Quality_Report_Id 1 oktet 0x01: raporty dotyczące jakości w trybie monitorowania.
0x02: zbliżasz się do LSTO.
0x03: zacinanie się dźwięku w formacie A2DP.
0x04: (e)SCO jest przerywane.
0x05 ~ 0x06: zarezerwowano.
0x07: zacinanie się dźwięku LE.
0x08: połączenie nie powiodło się.
0x09 ~ 0xFF: zarezerwowano.
Packet_Types 1 oktet 0x01: ID
0x02: 0x08: EVA
5x0EVA
5x0EVA
5x0EVA
5x0EVA
5x0.VA.
0x04: FHS
0x05: HV1
0x06: HV2
0x07: HV3
0x08: DV
0x09: EV3
0x0















Connection_Handle 2 oktety Uchwyt połączenia ACL/(e)SCO/ISO.
Connection_Role 1 oktet Wykonuję rolę na potrzeby połączenia.
0x00: Central
0x01: peryferyjne
0x02 ~ 0xFF: zarezerwowane.
TX_Power_Level 1 oktet Bieżący poziom mocy transmisji dla określonego uchwytu Connection_Handle.

Ta wartość powinna być taka sama jak w odpowiedzi na polecenie HCI_Read_Transmit_Power_Level HCI przez kontroler.

RSSI 1 oktet [w dBm]

Odebrano wartość wskaźnika siły sygnału (RSSI) dla określonego elementu Connection_Handle.
Powinna to być bezwzględna wartość siły sygnału odbiorcy.
Zakres: od -127 do +20

SNR 1 oktet [w dB]

Wartość współczynnika sygnału do szumu (SNR) dla określonego uchwytu połączenia.
Administrator poda średnią SNR wszystkich kanałów używanych przez to połączenie.

Unused_AFH_Channel_Count 1 oktet Wskazuje liczbę nieużywanych kanałów w AFH_channel_map.
0x4F ~ 0xFF: zarezerwowano.
AFH_Select_Unideal_Channel_Count 1 oktet Wskazuje liczbę kanałów, które są zakłócone i mają niską jakość, ale nadal są wybrane do AFH.
Minimalna liczba kanałów dozwolona w specyfikacji Bluetooth wynosi 20, więc nawet jeśli wszystkie 79 kanałów jest zakłócone i mają niską jakość, kontroler musi wybrać co najmniej 20 kanałów na potrzeby AFH.
LSTO 2 oktety Aktualne ustawienie czasu oczekiwania na nadzór nad połączeniem.
Czas = N * 0,625 ms
Zakres czasu: 0,625–40,9 s
Connection_Piconet_Clock 4 oktety Zegar Piconet dla określonego uchwytu połączenia.
Ta wartość będzie taka sama jak w odpowiedzi na polecenie HCI_Read_Clock HCI z parametrem „Który_zegar” o wartości 0x01 (zegar pionowy).
Jednostka: N * 0,3125 ms (1 zegar Bluetooth)
Retransmission_Count 4 oktety Liczba ponownych transmisji od ostatniego zdarzenia.
Po przesłaniu raportu do hosta ta liczba zostanie zresetowana.
No_RX_Count 4 oktety Brak liczby RX od ostatniego zdarzenia.
Liczba zwiększa się, gdy w zaplanowanym przedziale czasu nie zostanie odebrany żaden pakiet lub gdy odebrany pakiet zostanie uszkodzony.
Po przesłaniu raportu do hosta ta liczba zostanie zresetowana.
NAK_Count 4 oktety Liczba NAK (negatywne potwierdzenie) od ostatniego zdarzenia.
Po przesłaniu raportu do hosta ta liczba zostanie zresetowana.
Last_TX_ACK_Timestamp 4 oktety Sygnatura czasowa ostatniego potwierdzenia potwierdzenia. Opiera się na zegarze Bluetooth piconet Central (CLK).
Jednostka: N * 0,3125 ms (1 zegar Bluetooth)
Flow_Off_Count 4 oktety Liczba przypadków, w których kontroler otrzymuje przepływ (STOP) od ostatniego zdarzenia.
Po przesłaniu raportu do hosta ta liczba zostanie zresetowana.
Last_Flow_On_Timestamp 4 oktety Sygnatura czasowa ostatniego przepływu (GO). Opiera się na zegarze Bluetooth piconet Central (CLK).
Jednostka: N * 0,3125 ms (1 zegar Bluetooth)
Buffer_Overflow_Bytes 4 oktety [w bajtach]

Liczba przepełnienia bufora od ostatniego zdarzenia.
Kontroler zlicza liczbę utraconych bajtów danych.
Po przesłaniu raportu do hosta ta liczba zostanie zresetowana.

Buffer_Underflow_Bytes 4 oktety [w bajtach]

Liczba niedostatecznego przepływu bufora od ostatniego zdarzenia.
Po przesłaniu raportu do hosta ta liczba zostanie zresetowana.

bdaddr 6 oktetów Adres urządzenia zdalnego
cal_failed_item_count 1 oktet Liczba elementów, których kalibracja się nie powiodła
TX_Total_Packets 4 oktety Liczba wysyłanych pakietów.
TX_UnAcked_Packets 4 oktety Liczba pakietów, które nie otrzymały potwierdzenia.
Ta liczba jest resetowana po przesłaniu raportu do hosta.
TX_Flushed_Packets 4 oktety Liczba pakietów, które nie są wysyłane przez punkt opróżniania.
Ta liczba jest resetowana po przesłaniu raportu do hosta.
TX_Last_Subevent_Packets 4 oktety Liczba pakietów, przez które warstwa linków przesyła dane PDU danych CIS w ostatnim subzdarzeniu zdarzenia CIS.
Ta liczba jest resetowana po przesłaniu raportu do hosta.
Jeśli link nie ma prawidłowej wartości, wartość wynosi 0.
CRC_Error_Packets 4 oktety Liczba otrzymanych pakietów z błędem CRC od ostatniego zdarzenia.
Ta liczba jest resetowana po przesłaniu raportu do hosta.
RX_Duplicate_Packets 4 oktety Liczba zduplikowanych (ponownych) pakietów otrzymanych od ostatniego zdarzenia.
Ta liczba jest resetowana po przesłaniu raportu do hosta.
RX_Unreceived_Packets 4 oktety Liczba nieodebranych pakietów jest taka sama jak parametr w poleceniu LE READ ISO Link Quality (patrz: podstawowa specyfikacja Bluetootha w wersji 5.4). Powiązane strumienie to CIS i BIS.
Gdy ta wartość zostanie zwiększona, warstwa linków nie otrzymuje określonego ładunku przez swój punkt spłukiwania (w CIS) ani na koniec zdarzenia, z którym jest powiązana (w BIS; patrz: podstawowa specyfikacja Bluetootha w wersji 5.4, tom 6, część B, sekcja 4.4.6.6).
Coex_Info_Mask 2 oktety Bit 0 – CoexInvolvement: ustawiane, by wskazać, że podczas generowania tego raportu mogą występować wspólne działania (np. fragmenty A2DP i zbliżające się do LSTO).
Bit 1 – radio WL 2G aktywne: ustawione, by wskazać, że radio WLAN 2G jest aktywne.
Bit 2 – WL 2G Connected: ustawiony, by wskazać, że radio WLAN 2G jest aktywne i połączone.
Bit 3 – radio WL 5G/6G aktywne: ustawione, by wskazać, że radio WLAN 5G/6G jest aktywne.
Bit 4–15 – zarezerwowany
Parametr dostawcy (łączna długość parametru – do ustalenia) * oktety Aby dostawca kontrolera mógł uzyskać więcej parametrów odnoszących się do dostawcy.

Kod zdarzenia podrzędnego = 0x58 [Quality_Report_Id = 0x05, zdarzenie zapalenia roota]

To zdarzenie wskazuje, że Bluetooth HAL lub kontroler napotkał błąd krytyczny i potrzebuje stosu Bluetooth, aby zarejestrować tę sytuację i ponownie uruchomić urządzenie. W każdym przypadku przed wysłaniem pierwszego fragmentu zdarzeń informacji debugowania kontroler musi wysłać zdarzenie Root_Inflammation_Event do stosu Bluetooth.

Parametr Error_Code zawiera kod błędu zgłoszony przez HAL lub kontroler, a wartość 0, jeśli jest to błąd związany z konkretnym dostawcą chipsetu. Kod błędu Vendor_Specific_Error_Code zawiera specyficzny dla dostawcy kod błędu z HAL lub kontrolera. Jeśli parametr Error_Code ma wartość inną niż 0, powinna być ustawiona na 0. Parametry Error_Code i Vendor_specific_Error_Code nie powinny wynosić 0.

Parametr zdarzenia podrzędnego Rozmiar Cel
Quality_Report_Id 1 oktet 0x00 ~ 0x04: zarezerwowane.
0x05: zapalenie korzeni.
0x06 ~ 0xFF: zarezerwowano.
Error_Code 1 oktet 0x00: dołączony jest kod błędu dostawcy chipsetu.
0x01 ~ 0xFF: wystąpiła awaria kontrolera. Listę kodów błędów i opisów znajdziesz w specyfikacji Bluetooth [Vol 2], część D, kody błędów.
Vendor_Specific_Error_Code 1 oktet 0x00: nie podano żadnego kodu błędu dostawcy chipsetu.
0x01 ~ 0xFF: kod błędu dostawcy chipsetu.
Parametr dostawcy (Całkowita długość parametru – 4) * oktety Aby dostawca kontrolera mógł uzyskać więcej parametrów odnoszących się do dostawcy.
Parametr zdarzenia podrzędnego Rozmiar Cel
Quality_Report_Id 1 oktet 0x00 ~ 0x10: zarezerwowane.
0x11: śledzenie wiadomości LMP/LL.
0 x 12: śledzenie planowania połączenia Bluetooth z wieloma połączeniami/Coex.
0x13: zrzut danych z informacjami o debugowaniu kontrolera.
0x14 ~ 0xFF: zarezerwowano.
Connection_Handle 2 oktety Uchwyt połączenia.
Parametr dostawcy (Całkowita długość parametru – 4) * oktety Format śledzenia wiadomości LMP specyficzny dla dostawcy, śledzenie harmonogramu wielu połączeń Bluetooth/Coex i zrzut danych z informacjami o debugowaniu kontrolera.

Obsługa wielu reklamodawców

Obsługa wielu reklamodawców ma następujące cele:

  • Obsługa wielu reklam (max_advt_instances)
  • Różne moce transmisji umożliwiające różne zakresy
  • Różne treści reklamowe
  • Indywidualna odpowiedź dla każdego reklamodawcy
  • Prywatność (brak możliwości śledzenia) w przypadku poszczególnych reklamodawców
  • Z możliwością podłączenia

Aby zapewnić zgodność tej specyfikacji z istniejącymi standardami, wprowadziliśmy poniższe polecenia dla poszczególnych dostawców. Pochodzą ze specyfikacji Bluetooth Core 4.1.

LE_Multi_Advt_Command

OCF: 0x154

Parametr polecenia Rozmiar Cel
Multi_advt_opcode 1 oktet 0 x 01 – Set_Advt_Param_Multi_Sub_Cmd
0 x 02 – Set_Advt_Data_Multi_Sub_Cmd
0 x 03 – Set_Scan_Resp_Data_Multi_Sub_Cmd
0 x 04 – Set_Random_Addr_Multi_Sub_Cmd
0 x 05 – Set_Advt_Enable_Multi_Sub_Cmd

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
Multi_advt_opcode 1 oktet 0 x 01 – Set_Advt_Param_Multi_Command
0 x 02 – Set_Advt_Data_Multi_Command
0 x 03 – Set_Scan_Resp_Data_Multi_Command
0 x 04 – Set_Random_Addr_Multi_Command
0 x 05 – Set_Advt_Enable_Multi_Command

LE_Multi_Advt_Command: set_Advt_Param_Multi_Sub_Cmd

Dokumentacja podstawowa: specyfikacja Bluetooth Core 4.1, strona 964 (polecenie LE Set parametr Advertising)

Sub OCF: 0x01

Parametr polecenia podrzędnego Rozmiar Cel
Advertising_Interval_Min Zgodność ze specyfikacją Zgodność ze specyfikacją
Advertising_Interval_Max Zgodność ze specyfikacją Zgodność ze specyfikacją
Advertising_Type Zgodność ze specyfikacją Zgodność ze specyfikacją
Own_Address_Type Zgodność ze specyfikacją Zgodność ze specyfikacją
Own_Address Zgodność ze specyfikacją Zgodność ze specyfikacją
Direct_Address_Type Zgodność ze specyfikacją Zgodność ze specyfikacją
Direct_Address Zgodność ze specyfikacją Zgodność ze specyfikacją
Advertising_Channel_Map Zgodność ze specyfikacją Zgodność ze specyfikacją
Adverstising_Filter_Policy Zgodność ze specyfikacją Zgodność ze specyfikacją
Advertising_Instance 1 oktet Określa zastosowanie powyższych parametrów do instancji
Tx_power 1 oktet Moc transmisji
Jednostka – w dBm (liczba całkowita ze znakiem)
Zakres (od -70 do +20)

Parametr Own_Address może być adresem skonfigurowanym przez hosta w momencie konfigurowania tej instancji reklam z wieloma reklamami. Umożliwia to uzyskanie rozpoznawalnego adresu prywatnego w chwili nadania pierwszego beaconu. Reklama w instancji będzie kontynuowana niezależnie od połączenia. Stos BT hosta może wydać polecenie, aby rozpocząć reklamowanie w instancji po połączeniu.

Dla tego polecenia zostanie wygenerowane zdarzenie Command Complete zgodnie ze specyfikacją Bluetooth Core 4.1 zgodnie z powyższym poleceniem. Jeśli wystąpienie reklamy lub parametry Tx_Power będą nieprawidłowe, kontroler wyśle w odpowiedzi kod niepowodzenie (nieprawidłowy parametr).

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
Multi_advt_opcode 1 oktet 0x01 [Set_Advt_Param_Multi_Sub_Cmd]]

LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd

Dokumentacja podstawowa: specyfikacja Bluetooth Core 4.1, strona 969 (LE Set Advertising Data Command)

Sub OCF: 0x02

Parametr polecenia podrzędnego Rozmiar Cel
Advertising_Data_Length Zgodność ze specyfikacją Zgodność ze specyfikacją
Advertising_Data Zgodność ze specyfikacją Zgodność ze specyfikacją
Advertising_Instance 1 oktet Określa zastosowanie powyższych parametrów do instancji

Dla tego polecenia zostanie wygenerowane zdarzenie Command Complete zgodnie ze specyfikacją Bluetooth Core 4.1 zgodnie z powyższym poleceniem. Jeśli instancja reklamowa lub parametry Tx_Power będą nieprawidłowe, kontroler wyśle w odpowiedzi kod niepowodzenie.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
Multi_advt_opcode 1 oktet 0x02 [Set_Advt_Data_Multi_Sub_Cmd]]

LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd

Dokumentacja podstawowa: specyfikacja Bluetooth Core 4.1, strona 970 (polecenie LE Set Scan Response Data)

Sub OCF: 0x03

Parametr polecenia podrzędnego Rozmiar Cel
Scan_Response_Data_Length Zgodność ze specyfikacją Zgodność ze specyfikacją
Scan_Response_Data Zgodność ze specyfikacją Zgodność ze specyfikacją
Advertising_Instance 1 oktet Określa zastosowanie powyższych parametrów do instancji

Dla tego polecenia zostanie wygenerowane zdarzenie Command Complete zgodnie ze specyfikacją Bluetooth Core 4.1 zgodnie z powyższym poleceniem. Jeśli wystąpienie reklamy lub parametry Tx_Power będą nieprawidłowe, kontroler wyśle w odpowiedzi kod niepowodzenie (nieprawidłowy parametr).

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
Multi_advt_opcode 1 oktet 0x03 [Set_Scan_Resp_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: set_Random_Addr_Multi_Sub_Cmd

Odwołanie podstawowe: specyfikacja Bluetooth Core 4.1, strona 963 (LE Set Random Address Command)

Sub OCF: 0x04

Parametr polecenia podrzędnego Rozmiar Cel
Losowy adres Zgodność ze specyfikacją Zgodność ze specyfikacją
Advertising_Instance 1 oktet Określa zastosowanie powyższych parametrów do instancji

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
Multi_advt_opcode 1 oktet 0x04 [Set_Random_Addr_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd

Dokumentacja podstawowa: Specyfikacja Bluetooth Core 4.1, strona 971 (Polecenie LE Set Advertise Włączanie polecenia w tej podstawowej specyfikacji)

OCF: 0x05

Parametr polecenia podrzędnego Rozmiar Cel
Advertising_Enable 1 oktet Wartość 1 oznacza włączenie. Każda inna wartość oznacza wyłączenie.
Advertising_Instance 1 oktet Określa zastosowanie powyższych parametrów do instancji. Instancja 0 oznacza standardową instancję HCI.

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
Multi_advt_opcode 1 oktet 0x05 [Set_Advt_Enable_Multi_Sub_Cmd]

Rozpoznawanie wyłączonego adresu prywatnego

Ta funkcja rozpoznaje prywatny adres w oprogramowaniu lub sprzęcie kontrolera, co zapewnia te korzyści:

  • Czas oczekiwania na hosta przy rozpoznawaniu adresu prywatnego
  • Nie wybudzaj gospodarza, żeby oszczędzać energię

LE_Set_RPA_Limit czasu

OCF: 0x15C

Parametr polecenia Rozmiar Cel
LE_local_IRK 16 oktet Urządzenie lokalne IRK użyte do wygenerowania losowych, możliwych do rozwiązania adresów.
tRPA_min 2 oktety Minimalny czas oczekiwania na wygenerowanie RPA (w sekundach). Kontroler musi generować nowe możliwe do rozwiązania adresy dla wszystkich zdarzeń reklamowych, skanowania lub połączeń po upływie tego czasu oczekiwania lub po nim.
Prawidłowy zakres: 300–1800
tRPA_max 2 oktety Maksymalny czas oczekiwania na wygenerowanie RPA (w sekundach). Kontroler musi wygenerować nowe możliwe do rozwiązania adresy dla wszystkich zdarzeń reklamowych, skanowania lub połączeń przed upływem tego czasu oczekiwania.
Prawidłowy zakres: tRPA_min–1800
Parametr zwracania Rozmiar Cel
Status 1 oktet Stan polecenia.

Sugerowane wartości stanu HCI:
0x00 Udało się
0x01 Nieznane polecenie (jeśli nie jest obsługiwane)
0x12 Nieprawidłowe parametry polecenia (jeśli jakiekolwiek parametry są poza podanym zakresem)

LE_RPA_Polecenie_odciążania

OCF: 0x155

Parametr polecenia Rozmiar Cel
RPA_offload_opcode 1 oktet 0 x 1 – włącz funkcję dla klienta
0 x 2 – dodaj IRK do listy
0 x 3 – usuń IRK z listy
0 x 4 – wyczyść listę IRK
0x5 – odczyt pozycji na liście IRK

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
Event_RPA_offload_opcode 1 oktet 0 x 1 – włącz funkcję dla klienta
0 x 2 – dodaj IRK do listy
0 x 3 – usuń IRK z listy
0 x 4 – wyczyść listę IRK
0x5 – odczyt pozycji na liście IRK

LE_RPA_offload: Włącz_cust_specific_sub_Command

Sub OCF: 0x01

Parametr polecenia podrzędnego Rozmiar Cel
enable_customer_specific_feature_set 1 oktet 0x01 – włącz odładowaną funkcję RPA
0x00 – wyłącz wyłączoną funkcję RPA

W zależności od możliwości układu scalonego host musi włączyć odciążanie RPA. Więcej informacji: LE_Get_Vendor_Capabilities_Command. Każdy układ może mieć różne max_irk_list_sz w oprogramowaniu układowym.

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
Event_cust_specific_feature_opcode 1 oktet 0x01 [Włącz funkcję dotyczącą konkretnego klienta]

LE_RPA_offload: Add_IRK_to_list_sub_Command

Sub OCF: 0x02

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

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
Event_cust_specific_feature_opcode 1 oktet 0x02 [Dodaj IRK do listy]
LE_IrkList_AvailableSpaces 1 oktet Wpisy na liście IRL dostępne po bieżącej operacji

LE_RPA_offload: Delete_IRK_to_list_sub_Command

Sub OCF: 0x03

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

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
Event_cust_specific_feature_opcode 1 oktet 0x03 [Usuń IRK z listy]
LE_IrkList_AvailableSpaces 1 oktet Wpisy na liście IRL dostępne po bieżącej operacji

LE_RPA_offload: Wyczyść_IRK_list_sub_Command

Sub OCF: 0x04

Parametr polecenia podrzędnego Rozmiar Cel
Brak

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
Event_cust_specific_feature_opcode 1 oktet 0x04 [Wyczyść listę IRK]
LE_IrkList_AvailableSpaces 1 oktet Dostępne pozycje listy IRL po bieżącej operacji [max_irk_list_sz]

LE_RPA_offload: Read_IRK_list_sub_Command

Sub OCF: 0x05

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

Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.

Parametr zwracania Rozmiar Cel
Status 1 oktet Stan wykonania polecenia
Event_cust_specific_feature_opcode 1 oktet 0x05 [Odczyt wpisu na liście IRK]
LE_Read_IRK_List_entry 1 oktet Indeks IRK, który host chce odczytać (maksymalny rozmiar listy IRK to 32)
LE_IRK 16 oktetów Wartość IRK
Address_Type 1 oktet 0: Adres publiczny
1: Adres losowy
LE_Device_Address 6 oktetów Publiczny lub losowy adres powiązany z IRK
LE_Resolved_Private_Address 6 oktetów Obecny rozpoznawalny, prywatny adres IRK