Wymagania dotyczące interfejsu HCI

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

Ten dokument zawiera listę wymagań dotyczących interfejsu HCI Bluetooth (BT) i Bluetooth Low Energy (BLE). Celem jest zapewnienie, aby dostawcy stosu Host BT i kontrolera BT spełniali te wymagania platformy, aby móc 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.

Ogólny opis projektu

Możliwości i konfiguracja układu

Android to otwarta platforma, która obejmuje wiele wersji oprogramowania, producentów OEM, dostawców oraz funkcji platformy i chipów.

Aby zarządzać różnorodnością urządzeń i procesami migracji, w tym dokumencie opisujemy filozofię projektowania, która pozwala kontrolerom BT udostępniać swoje możliwości (wykraczające poza standardową specyfikację Bluetooth Core 5.2). Stos BT hosta może następnie wykorzystać te możliwości do określenia, które funkcje należy włączyć.

Obsługa otwartych standardów

Jednym z celów Androida jest obsługiwanie otwartych standardów po ratyfikacji w specyfikacji Bluetooth. Jeśli opisana poniżej funkcja stanie się dostępna w standardowych metodach HCI w przyszłej specyfikacji Bluetooth, będziemy dążyć do tego, aby to podejście było domyślne.

Funkcje specyficzne dla dostawcy

Polecenie specyficzne dla dostawcy: LE_Get_Vendor_Capabilities_Command

Pole polecenia kodu operacji (OCF): 0x153

Parametr polecenia Rozmiar Cel
NA Pusta lista parametrów polecenia

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
max_advt_instances
(Wycofano)
1 oktet Liczba obsługiwanych instancji reklam.

Zarezerwowane po wersji 0.98.
Ten parametr jest wycofywany w specyfikacji funkcji Google w wersji 0.98 i nowszych na rzecz reklamy rozszerzonej LE dostępnej w specyfikacji BT w wersji 5.0 i nowszych.
offloaded_resolution_of_private-address
(Wycofano)
1 oktet Możliwości układu BT w RPA.
Jeśli jest obsługiwane przez chip, musi zostać włączone przez hosta.
0 = Nie obsługuje
1 = Obsługuje

Zarezerwowane po wersji 0.98.
Ten parametr został wycofany w specyfikacji funkcji Google w wersji 0.98 i nowszej na rzecz funkcji ochrony prywatności dostępnej w specyfikacji BT w wersji 4.2 i nowszej.
total_scan_results_storage 2 oktety Miejsce na dane na wyniki skanowania w bajtach
max_irk_list_sz 1 oktet Liczba wpisów IRK obsługiwanych przez oprogramowanie sprzętowe
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 = nie obsługuje
1 = obsługuje
version_supported 2 oktety Określa wersję obsługiwanego specyfikacji funkcji Google.
byte[0] = numer główny
byte[1] = numer dodatkowy

v1.05
byte[0] = 0x01
byte[1] = 0x05

Funkcje dodane w tych wersjach:
v1.05:
  • iso_link_feedback_support
  • BQRv7
  • sniff_offload_support
Wersja 1.04:
  • BQRv6
total_num_of_advt_tracked 2 oktety Łączna liczba reklamodawców, których śledzimy na potrzeby OnLost/OnFound
extended_scan_support 1 oktet Obsługa rozszerzonego okna i interwału skanowania
debug_logging_supported 1 oktet Obsługuje rejestrowanie binarnych informacji debugowania z kontrolera
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 i nowszej na rzecz funkcji ochrony prywatności dostępnej w specyfikacji BT w wersji 4.2 i nowszej.
A2DP_source_offload_capability_mask 4 oktety 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
bluetooth_quality_report_support 1 oktet Obsługuje raportowanie zdarzeń związanych z jakością Bluetooth
0 = nie obsługuje
1 = obsługuje
dynamic_audio_buffer_support 4 oktety Obsługuje dynamiczny bufor audio w kontrolerze Bluetooth
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
a2dp_offload_v2_support 1 oktet Obsługuje polecenia odciążania A2DP w wersji 2 w kontrolerze Bluetooth (patrz Start A2DP offload, Stop A2DP offload).
0 = Nieobsługiwane
1 = Obsługiwane
iso_link_feedback_support 1 oktet Obsługuje zdarzenie ISO Link Feedback.
0 = Nieobsługiwane
1 = Obsługiwane
sniff_offload_support 1 oktet Obsługuje polecenia Sniff Offload w kontrolerze Bluetooth
0 = Nieobsługiwane
1 = Obsługiwane

Wyniki skanowania wsadowego

Celem jest usprawnienie dostarczania powiadomień o zdarzeniu odpowiedzi na skanowanie Bluetooth LE do hosta, aby oszczędzać energię na hoście.

Dzięki zmniejszeniu częstotliwości powiadamiania przez kontroler procesora aplikacji hosta o wynikach skanowania procesor aplikacji hosta może dłużej pozostawać w stanie bezczynności lub uśpienia. Zmniejsza to zużycie energii na hoście. Parametr return total_scan_results_storageLE_Get_Vendor_Capabilities_Command wskazuje możliwość przechowywania wyników skanowania przez chip.

Ta funkcja koncentruje się na zarządzaniu i konfigurowaniu miejsca na wyniki skanowania LE w kontrolerze Bluetooth. Pamięć służy do tymczasowego grupowania danych reklamowych oraz skanowania danych i metadanych otrzymywanych przez kontroler w celu późniejszego przekazania ich do hosta.

Oprogramowanie sprzętowe musi obsługiwać 2 rodzaje przetwarzania wsadowego, które mogą być włączone jednocześnie:

  • Skrócone. Zawiera te elementy informacji: {MAC, TX Power, RSSI, Timestamp}
  • Pełna. 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 specyficznej dla klienta
0x2 – ustawianie parametrów przechowywania skanowania wsadowego
0x3 – ustawianie parametrów skanowania wsadowego
0x4 – odczytywanie parametrów wyników skanowania wsadowego

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete. Włączenie funkcji dla konkretnego klienta nie rozpoczyna skanowania.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
Batch_Scan_opcode 1 oktet 0x1 – włączanie funkcji specyficznej dla klienta
0x2 – ustawianie parametrów przechowywania skanowania wsadowego
0x3 – ustawianie parametrów skanowania wsadowego
0x4 – odczytywanie parametrów wyników skanowania wsadowego

LE_Batch_Scan_Command: Enable customer-specific feature

Sub OCF: 0x01

Parametr podpolecenia Rozmiar Cel
enable_customer_specific_feature_set 1 oktet 0x01 – włącz funkcję skanowania wsadowego
0x00 – wyłącz funkcję skanowania wsadowego

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
Batch_Scan_opcode 1 oktet 0x1 – włączanie funkcji specyficznej dla klienta
0x2 – ustawianie parametrów przechowywania skanowania wsadowego
0x3 – ustawianie parametrów skanowania wsadowego
0x4 – odczytywanie parametrów wyników skanowania wsadowego

LE_Batch_Scan_Command: Set batch scan storage parameter subcommand

Sub OCF: 0x02

Parametr podpolecenia 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 obciętego
[Zakres: 0–100]
Batch_Scan_Notify_Threshold 1 oktet Ustaw poziom powiadomień (w %) dla poszczególnych pul pamięci.
[Zakres: 0–100]
Ustawienie 0 wyłączy powiadomienia. Generowane jest zdarzenie HCI specyficzne dla dostawcy (podzdarzenie przekroczenia progu pamięci)

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
Batch_scan_opcode 1 oktet 0x02 [Ustawianie parametrów skanowania wsadowego]

LE_Batch_Scan_Command: Set batch scan parameter subcommand

Sub OCF: 0x03

Parametr podpolecenia 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 – włączone są tryby skrócony i pełny
Duty_cycle_scan_window 4 oktety Czas skanowania skanowania wsadowego (liczba gniazd)
Duty_cyle_scan_interval 4 oktety Okres interwału skanowania zbiorczego (liczba przedziałów czasu)
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 najsłabszym wskaźniku RSSI

To polecenie rozpocznie skanowanie wsadowe, jeśli jest włączone. W przypadku skanowania obciętego wyniki są przechowywane w formie obciętej, gdzie unikalny klucz dla stylu obciętego = {BD_ADDR, scan_interval}. Oznacza to, że w każdym interwale skanowania można zarejestrować tylko 1 BD_ADDR will. Rekord, który należy zachować w trybie obciętym, to: {BD_ADDR, Moc nadajnika, RSSI, Sygnatura czasowa}

Gdy włączony jest tryb Pełny, używane jest aktywne skanowanie i rejestrowane są odpowiedzi na skanowanie. Unikalny klucz stylu Pełny = {MAC, pakiet reklamowy}, niezależnie od interwału skanowania. Rekord do zachowania w trybie pełnym to {BD_ADDR, Tx Power, RSSI, Timestamp, Ad packet, Scan Response}. W przypadku stylu Pełny ten sam pakiet AD, który jest widoczny wielokrotnie w różnych odstępach czasu skanowania, jest rejestrowany tylko raz. W trybie skróconym interesuje nas jednak widoczność wartości BA_ADDR w różnych odstępach czasu skanowania (raz na odstęp czasu skanowania). Wartość RSSI to średnia wszystkich duplikatów unikalnej reklamy w interwale skanowania.

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
Batch_scan_opcode 1 oktet 0x03 [Set Batch Scan Parameters]

LE_Batch_Scan_Command: Read batch scan results subcommand

Sub OCF: 0x04

Parametr podpolecenia 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 host wyda to polecenie, wszystkie wyniki w kontrolerze mogą nie zmieścić się w jednym zdarzeniu Command Complete (Zakończenie polecenia). Host będzie powtarzać to polecenie, dopóki odpowiednie wyniki w zdarzeniu Command Complete nie wskażą 0 w liczbie rekordów, co oznacza, że kontroler nie ma już rekordów do przekazania hostowi. Każde zdarzenie Command Complete może zawierać wiele rekordów tylko jednego typu danych (pełnych lub skróconych).

Odwołania do czasu kontrolera i hosta nie są zsynchronizowane. Jednostką sygnatury czasowej jest 50 ms. Wartość sygnatury czasowej jest określana na podstawie momentu, w którym gospodarz podaje Read_Batch_Scan_Results_Sub_cmd. Jeśli czas dotarcia polecenia T_c w oprogramowaniu sprzętowym, rzeczywisty czas, w którym sygnatura czasowa została zarejestrowana w oprogramowaniu sprzętowym, to T_fw. Czas raportowania będzie wynosić: (T_c – T_fw). T_cT_fw są w zakresie czasu oprogramowania. Dzięki temu host może obliczyć, jak dawno miało miejsce zdarzenie.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
Batch_scan_opcode 1 oktet 0x03 [Ustaw parametry skanowania wsadowego]
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:
Address[0]: 6 oktetów
Address_Type[0]: 1 oktet
Tx_Pwr[0]: 1 oktet
RSSI[0] : 1 oktet
Timestamp[0]: 2 oktety
[wiele rekordów (num_of_records) w powyższym formacie]

Tryb pełny:
Address[0]: 6 oktetów
Address_Type[0]: 1 oktet
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
[wiele rekordów w powyższym formacie (num_of_records)]

Filtr treści pakietu reklamowego

Użyj tej opcji, aby włączyć/wyłączyć/skonfigurować filtr zawartości pakietu reklamowego (APCF) w kontrolerze. Filtry APCF filtrują raporty o reklamach w kontrolerze, ale nie filtrują reklam okresowych.

LE_APCF_Command

OCF: 0x157

Parametr polecenia Rozmiar Cel
APCF_opcode 1 oktet 0x00 – APCF Enable
0x01 – APCF Set Filtering parameters
0x02 – APCF Broadcaster Address
0x03 – APCF Service UUID
0x04 – APCF Service Solicitation UUID
0x05 – APCF Local Name
0x06 – APCF Manufacturer Data
0x07 – APCF Service Data
0x08 – APCF Transport Discovery Service
0x09 – APCF AD Type Filter
0x10–0xAF – zarezerwowane do przyszłego użytku
0xB0–0xDF – zarezerwowane dla dostawcy
0xE0–0xFE – zarezerwowane do przyszłego użytku
0xFF – APCF Read extended Features

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan zwrotu
APCF_opcode 1 oktet 0x00 – APCF Enable
0x01 – APCF Set Filtering parameters
0x02 – APCF Broadcaster Address
0x03 – APCF Service UUID
0x04 – APCF Service Solicitation UUID
0x05 – APCF Local Name
0x06 – APCF Manufacturer Data
0x07 – APCF Service Data
0x08 – APCF Transport Discovery Service
0x09 – APCF AD Type Filter
0x10–0xAF – zarezerwowane do przyszłego użytku
0xB0–0xDF – zarezerwowane dla dostawcy
0xE0–0xFE – zarezerwowane do przyszłego użytku
0xFF – APCF Read extended Features

LE_APCF_Command: Enable_sub_cmd

Sub OCF: 0x00

Parametr podpolecenia Rozmiar Cel
APCF_enable 1 oktet 0x01 – włącz funkcję APCF
0x00 – wyłącz funkcję APCF

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
APCF_opcode 1 oktet 0x0 – APCF Enable
APCF_Enable 1 oktet Włączanie i wyłączanie odbywa się za pomocą APCF_enable

LE_APCF_Command: set_filtering_parameters_sub_cmd

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

Sub OCF: 0x01

Parametr podpolecenia Rozmiar Cel
APCF_Action 1 oktet 0x00 – Dodaj
0x01 – Usuń
0x02 – Wyczyść
Usunięcie spowoduje wyczyszczenie konkretnego filtra wraz z powiązanymi wpisami funkcji w innych tabelach.
Wyczyść 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: ustawiony, aby włączyć filtr adresu rozgłoszeniowego
Bit 1: ustawiony, aby włączyć filtr zmiany danych usługi
Bit 2: ustawiony, aby włączyć sprawdzanie identyfikatora UUID usługi
Bit 3: ustawiony, aby włączyć sprawdzanie identyfikatora UUID żądania usługi
Bit 4: ustawiony, aby włączyć sprawdzanie nazwy lokalnej
Bit 5: ustawiony, aby włączyć sprawdzanie danych producenta
Bit 6: ustawiony, aby włączyć sprawdzanie danych usługi
Bit 7: ustawiony, aby włączyć sprawdzanie usługi wykrywania transportu
Bit 8: ustawiony, aby włączyć sprawdzanie typu reklamy
APCF_List_Logic_Type 2 oktety Operacja logiczna dla każdego wyboru funkcji (na pozycję bitową) określona w APCF_Feature_Selection.
Prawidłowe tylko wtedy, gdy funkcja jest włączona.
Wartość pozycji bitu:
0: LUB
1: I
Jeśli wybrano logikę „I”, pakiet ADV przejdzie filtr tylko wtedy, gdy zawiera WSZYSTKIE wpisy na liście.
Jeśli wybrano operator „LUB”, pakiet ADV przejdzie przez filtr, jeśli zawiera dowolny z wpisów na liście.
APCF_Filter_Logic_Type 1 oktet 0x00: OR
0x01: AND
Uwaga: w przypadku 3 pierwszych pól elementu APCF_Feature_Selection typ logiki to N/A, ponieważ zawsze jest to logika „AND”. Mają one zastosowanie tylko do 4 pól (bity 3–6) w APCF_Feature_Selection.
rssi_high_thresh 1 oktet [w dBm]
Reklama jest uznawana za wyświetloną tylko wtedy, gdy sygnał jest wyższy niż wysoki próg RSSI. W przeciwnym razie oprogramowanie musi zachowywać się tak, jakby nigdy nie widziało tego urządzenia.
delivery_mode 1 oktet 0x00 - immediate
0x01 - on_found
0x02 - batched
onfound_timeout 2 oktety Obowiązuje tylko wtedy, gdy delivery_mode jest on_found.
[w milisekundach]
Czas, w którym oprogramowanie sprzętowe pozostaje aktywne i zbiera dodatkowe reklamy przed przesłaniem raportu.
onfound_timeout_cnt 1 oktet Obowiązuje tylko wtedy, gdy delivery_mode jest on_found.
[count]
Jeśli reklama w onFound pozostaje w oprogramowaniu przez onfound_timeout, zbierze kilka reklam i sprawdzona zostanie ich liczba. Jeśli liczba przekroczy onfound_timeout_cnt, natychmiast zgłaszamy OnFound.
rssi_low_thresh 1 oktet Obowiązuje tylko wtedy, gdy delivery_mode jest on_found.
[w dBm]
Pakiet reklamodawcy jest uznawany za niewidoczny, jeśli RSSI otrzymanego pakietu nie przekracza dolnego progu RSSI.
onlost_timeout 2 oktety Obowiązuje tylko wtedy, gdy delivery_mode jest on_found.
[w milisekundach]
Jeśli po znalezieniu reklama nie jest wyświetlana w sposób ciągły przez okres lost_timeout, zostanie natychmiast zgłoszona jako utracona.
num_of_tracking_entries 2 oktety Obowiązuje tylko wtedy, gdy delivery_mode jest on_found.
[count]
Łączna liczba reklamodawców do śledzenia według filtra.

Wartości RSSI muszą używać kodu uzupełnień do 2, aby reprezentować wartości ujemne.

Host powinien mieć możliwość skonfigurowania wielu filtrów z parametrem APCF_Application_Address_type ustawionym na 0x02 (dla wszystkich adresów nadawców), aby zarządzać różnymi kombinacjami filtrów.

Filtrowanie, przetwarzanie wsadowe i raportowanie to powiązane ze sobą pojęcia. Każda reklama i powiązana z nią odpowiedź na skanowanie będą musiały przejść przez wszystkie filtry po kolei. Dlatego wynikowe działania (delivery_mode) są ściśle powiązane z filtrowaniem. Tryby podawania cen to: report_immediately, batchonFound. Wartość OnLost jest powiązana z wartością OnFound w tym sensie, że po utracie OnFound nastąpi OnLost.

Ten przepływ przetwarzania przedstawia model koncepcyjny:

Gdy otrzymana zostanie ramka reklamy (lub odpowiedź na skanowanie), jest ona stosowana do wszystkich filtrów w kolejności seryjnej. Może się zdarzyć, że reklama spowoduje natychmiastowe raportowanie na podstawie jednego filtra i grupowanie tych samych danych z powodu działania innego filtra.

Progi poziomu RSSI (wysoki i niski) umożliwiają kontrolowanie, kiedy ramka jest widoczna do przetwarzania filtra, nawet jeśli kontroler odbierze prawidłowy pakiet. Jeśli tryb dostawy jest ustawiony na natychmiastowy lub pakietowy, RSSI ramki jest brany pod uwagę podczas dalszego przetwarzania przez kontroler. Różne aplikacje wymagają różnych zachowań związanych z raportowaniem i grupowaniem. Umożliwia to wielu aplikacjom jednoczesne bezpośrednie raportowanie lub grupowanie wyników w oprogramowaniu sprzętowym. Przykładem może być sytuacja, w której skanowanie wsadowe jest aktywne w jednej aplikacji, a później inna aplikacja wydaje zwykłe skanowanie LE. Przed wydaniem skanowania wsadowego platforma lub aplikacja ustawia odpowiednie filtry. Później, gdy druga aplikacja przeprowadzi zwykłe skanowanie, poprzednie grupowanie będzie kontynuowane. Jednak ze względu na regularne skanowanie jest to podobne do koncepcyjnego dodania filtra zerowego (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 wraca do poprzedniego skanowania wsadowego, jeśli takie istniało.

Tryb dostawy OnFound zależy od skonfigurowanych filtrów. Kombinacja, która powoduje, że działanie filtra kończy się powodzeniem, jest uznawana za encję do śledzenia w przypadku onLost. Odpowiednim zdarzeniem jest podzdarzenie śledzenia LE Advt.

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

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
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

To polecenie podrzędne służy do dodawania lub usuwania adresu reklamodawcy albo do czyszczenia listy adresów reklamodawców na potrzeby filtrowania na chipie.

Sub OCF: 0x02

Parametr podpolecenia Rozmiar Cel
APCF_Action 1 oktet 0x00 – Dodaj
0x01 – Usuń
0x02 – Wyczyść
Polecenie Usuń usunie określony adres nadawcy w określonym filtrze.
Wyczyść spowoduje usunięcie wszystkich adresów nadawców w określonym 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 usunięcia z niej.
APCF_Application_Address_type 1 oktet 0x00: Publiczny
0x01: Losowy
0x02: NA (zignoruj typ 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 wartość 0x02: NA (ignoruj typ adresu).

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
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 rozgłoszeniowych

LE_APCF_Command: service_uuid_sub_cmd

To polecenie podrzędne służy do dodawania lub usuwania identyfikatora UUID usługi albo do czyszczenia listy identyfikatorów UUID usług na potrzeby filtrowania na chipie.

Sub OCF: 0x03

Parametr podpolecenia Rozmiar Cel
APCF_Action 1 oktet 0x00 – Dodaj
0x01 – Usuń
0x02 – Wyczyść
Usuń usunie określony adres UUID usługi w określonym filtrze.
Wyczyść usunie wszystkie identyfikatory UUID usług w określonym filtrze.
APCF_Filter_Index 1 oktet Indeks filtra (0, max_filter-1)
APCF_UUID 2,4,16 octet Identyfikator UUID usługi (16-bitowy, 32-bitowy lub 128-bitowy) do dodania do listy lub usunięcia z niej.
APCF_UUID_MASK 2,4,16 octet Maska identyfikatora UUID usługi (16-bitowa, 32-bitowa lub 128-bitowa), którą chcesz dodać do listy. Powinna mieć taką samą długość jak APCF_UUID..

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
APCF_opcode 1 oktet 0x03 – identyfikator UUID usługi APCF
APCF_Action 1 oktet Odzwierciedlenie polecenia APCF_Action
APCF_AvailableSpaces 1 oktet Liczba bezpłatnych wpisów dostępnych jeszcze w tabeli identyfikatorów UUID usługi

LE_APCF_Command: solicitation_uuid_sub_cmd

To polecenie podrzędne służy do dodawania lub usuwania identyfikatora UUID prośby o wyświetlenie reklamy albo do czyszczenia listy identyfikatorów UUID prośby o wyświetlenie reklamy na potrzeby filtrowania na chipie.

Sub OCF: 0x04

Parametr podpolecenia Rozmiar Cel
APCF_Action 1 oktet 0x00 – Dodaj
0x01 – Usuń
0x02 – Wyczyść
Usuń usunie adres UUID prośby w określonym filtrze.
Wyczyść spowoduje usunięcie wszystkich identyfikatorów UUID próśb o odpowiedź w określonym filtrze.
APCF_Filter_Index 1 oktet Indeks filtra (0, max_filter-1)
APCF_UUID 2,4,16 octet Identyfikator UUID prośby (16-bitowy, 32-bitowy lub 128-bitowy) do dodania lub usunięcia z listy.
APCF_UUID_MASK 2,4,16 octet Maska UUID zapytania (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 zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
APCF_opcode 1 oktet 0x04 – Identyfikator UUID żądania APCF
APCF_Action 1 oktet Odzwierciedlenie polecenia APCF_Action
APCF_AvailableSpaces 1 oktet Liczba bezpłatnych wpisów nadal dostępnych w tabeli identyfikatorów UUID zapytań ofertowych

LE_APCF_Command: local_name_sub_cmd

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

Sub OCF: 0x05

Parametr podpolecenia Rozmiar Cel
APCF_Action 1 oktet 0x00 – Dodaj
0x01 – Usuń
0x02 – Wyczyść
Usuń usunie określony ciąg nazwy lokalnej w określonym filtrze.
Wyczyść spowoduje wyczyszczenie wszystkich lokalnych ciągów nazw 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 dla nazwy lokalnej.

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

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
APCF_opcode 1 oktet 0x05 – APCF Local Name
APCF_Action 1 oktet Odzwierciedlenie polecenia APCF_Action
APCF_AvailableSpaces 1 oktet Liczba bezpłatnych wpisów, które są jeszcze dostępne w tabeli Nazwa lokalna

LE_APCF_Command: manf_data_sub_cmd

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

Sub OCF: 0x06

Parametr podpolecenia Rozmiar Cel
APCF_Action 1 oktet 0x00 – Dodaj
0x01 – Usuń
0x02 – Wyczyść
Polecenie Usuń usunie określony ciąg danych producenta w określonym filtrze.
Wyczyść usunie wszystkie ciągi 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 dla danych producenta.

Uwagi:
  • Obecnie maksymalna liczba znaków w ciągu znaków nazwy lokalnej to 29.
  • Nie ma zastosowania, gdy działanie to „Wyczyść” (0x2).
APCF_ManData_Mask Rozmiar zmienny Maska danych producenta do dodania 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 zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
APCF_opcode 1 oktet 0x06 – dane producenta APCF
APCF_Action 1 oktet Odzwierciedlenie polecenia APCF_Action
APCF_AvailableSpaces 1 oktet Liczba bezpłatnych wpisów, które są jeszcze dostępne w tabeli danych 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 chipie.

Sub OCF: 0x07

Parametr podpolecenia Rozmiar Cel
APCF_Action 1 oktet 0x00 – Dodaj
0x01 – Usuń
0x02 – Wyczyść
Polecenie Usuń usunie określony ciąg danych usługi w określonym filtrze.
Wyczyść usunie wszystkie ciągi danych usługi 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 danych usługi.

Uwagi:
  • Obecnie maksymalna liczba znaków w ciągu znaków nazwy lokalnej to 29.
  • Nie ma zastosowania, gdy działanie to „Wyczyść” (0x2).
APCF_LocName_Mandata_or_SerData_Mask Rozmiar zmienny Maska danych usługi do dodania do listy. Powinna mieć taką samą długość jak APCF_LocName_or_ManData_or_SerData..

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
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, które są jeszcze dostępne w tabeli danych o usługach

LE_APCF_Command: ad_type_sub_cmd

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

Sub OCF: 0x09

Parametr podpolecenia Rozmiar Cel
APCF_Action 1 oktet 0x00 – Dodaj
0x01 – Usuń
0x02 – Wyczyść
Polecenie Usuń usunie określony typ reklamy w określonym filtrze.
Wyczyść spowoduje usunięcie 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, którą chcesz dodać do listy lub z niej usunąć. Zignoruj, gdy APCF_Action to 0x02 (Clear)
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 Zmienna wielkość, na podstawie APCF_AD_DATA_Length
Ignoruj, gdy APCF_Action to 0x02 (Wyczyść)
APCF_AD_DATA_MASK Rozmiar zmienny Rozmiar zmienny, zależny od APCF_AD_DATA_Length
Ignoruj, gdy APCF_Action to 0x02 (Wyczyść)
Powinien mieć taką samą długość jak APCF_AD_DATA.

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
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

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

Sub OCF: 0xFF

Parametr podpolecenia Rozmiar Cel
Nie dotyczy Pusty parametr polecenia.

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
APCF_opcode 1 oktet 0xFF - APCF_Read_Extended_Features
APCF_extended_features 2 oktety

Obsługiwane maski bitowe dla funkcji rozszerzonych:

  • Bit 0: obsługa filtra 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 aktywności kontrolera i informacji o energii

Celem tych informacji jest umożliwienie funkcjom systemu hosta wyższego poziomu analizowania łącznej aktywności wszystkich komponentów, w tym kontrolera BT i jego stanu makro, w połączeniu z tym, co dzieje się w aplikacjach i ramach. Aby to zrobić, musisz podać te informacje z warstwy BT i kontrolera:

  • Stos BT: raportowanie bieżącego stanu makrooperacyjnego kontrolera
  • Oprogramowanie sprzętowe: raportowanie zbiorczych informacji o aktywności i energii

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

  • Tryb bezczynności: [skanowanie strony, reklama LE, skanowanie zapytań, skanowanie LE]
  • Skanowanie: [paging/inquiry/trying to connect]
  • Aktywny: [połączenie ACL włączone, połączenie SCO w trakcie, tryb węszenia]

Działania, które kontroler śledzi w trakcie swojego działania, to czas transmisji, czas odbioru, czas bezczynności i całkowite zużycie energii. Są one usuwane, gdy zostaną odczytane przez hosta.

LE_Get_Controller_Activity_Energy_Info

Jest to polecenie specyficzne dla dostawcy.

OCF: 0x159

Parametr podpolecenia Rozmiar Cel
NA Puste parametry polecenia

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
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 zużycia energii inne niż sen)
total_energy_used 4 oktety Łączne zużycie energii [iloczyn natężenia prądu (mA), napięcia (V) i czasu (ms)]

Polecenie LE extended set scan parameters

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

Podstawa: 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 należy wysyłać SCAN_REQ pakietów (domyślnie).
0x01 – aktywne skanowanie. Możesz wysyłać pakiety SCAN_REQ.
LE_Ex_Scan_Interval 4 oktety Zdefiniowany jako przedział czasu od rozpoczęcia ostatniego skanowania LE przez kontroler do rozpoczęcia kolejnego skanowania LE.
Zakres: 0x0004–0x00FFFFFF
Wartość domyślna: 0x0010 (10 ms)
Czas = N * 0,625 ms
Zakres czasu: 2,5 ms–10442,25 s
LE_Ex_Scan_Window 4 oktety Czas trwania skanowania LE. Wartość LE_Scan_Window musi być mniejsza lub równa LE_Scan_Interval.
Zakres: 0x0004–0xFFFF
Wartość domyślna: 0x0010 (10 ms)
Czas = N * 0,625 ms
Zakres czasu: 2,5 ms–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 reklamowe (domyślnie). Pakiety reklamowe kierowane, które nie są adresowane do tego urządzenia, należy ignorować.
0x01 – ignoruj pakiety reklamowe z urządzeń, których nie ma na białej liście. Tylko lista. Pakiety reklamowe kierowane, które nie są adresowane do tego urządzenia, są ignorowane.

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego

Polecenie pobierania informacji o debugowaniu kontrolera

Celem tego elementu informacji jest uzyskanie przez hosta informacji o debugowaniu kontrolera w formie binarnej do 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 przekazać informacje na żądanie hosta za pomocą zdarzenia (podzdarzenie Informacje o debugowaniu kontrolera) lub autonomicznie, gdy uzna to za stosowne. Może to być na przykład raportowanie informacji o stanie oprogramowania sprzętowego, informacji o zrzucie pamięci po awarii, informacji o logowaniu itp.

OCF: 0x15B

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

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego

Obsługa sprzętowego odciążania 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 przesyłany 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ń. Starsze polecenia z podpoleceniami OCF 0x01–0x02 obsługują tylko kodeki typu open source. Wersje z Sub-OCF 0x03–0x04 nie zależą od skonfigurowanego kodeka.

OCF: 0x15D

Uruchom 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 Maksymalny dozwolony czas oczekiwania (w ms). Wartość 0 wyłącza opróżnianie.
SCMS-T_Enable 2 oktety Bajt 0: flaga, która umożliwia dodanie nagłówka SCMS-T.
  • 0x00 – nagłówek SCMS-T nie jest uwzględniony.
  • 0x01 – nagłówek SCMS-T jest uwzględniony.

Oktet 1: wartość nagłówka SCMS-T, gdy 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 w bitach na sekundę.
0x00000000 – szybkość transmisji bitów audio nie jest określona lub nie jest używana.
0x00000001 - 0x00FFFFFF - Szybkość transmisji zakodowanego dźwięku w bitach na sekundę.
0x01000000–0xFFFFFFFF – zarezerwowane.
Connection_Handle 2 oktety Uchwyt połączenia A2DP, które jest konfigurowane.
L2CAP_Channel_ID 2 oktety Identyfikator kanału L2CAP, który ma być używany w tym połączeniu A2DP
L2CAP_MTU_Size 2 oktety Maksymalny rozmiar MTU L2CAP zawierającego zakodowane pakiety audio
Codec_Information 32 oktety Informacje dotyczące kodeka.

Kodek SBC:

Zapoznaj się z elementami informacji specyficznymi dla kodeka SBC w A2DP w wersji 1.3.
Oktet 0: długość bloku | podzakresy | metoda alokacji
Oktet 1: minimalna wartość puli bitów
Oktet 2: maksymalna wartość puli bitów
Oktet 3: częstotliwość próbkowania | tryb kanału
Oktet 4–31: zarezerwowany

Kodek AAC:

Informacje o kodeku AAC znajdziesz w specyfikacji A2DP v1.3
Bajt 0: typ obiektu
Bajt 1; b7: VBR
Bajt 2–31: zarezerwowany

Kodek LDAC:

Bajty 0–3: identyfikator dostawcy
0x0000012D

Oktawy 4–5: identyfikator kodeka
0x00AA – LDAC
Wszystkie inne wartości są zarezerwowane

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

Bajt 7: tryb kanału LDAC
0x01 – stereo
0x02 – podwójny
0x04 – mono
Inne wartości są zarezerwowane

Oktawa 8–31: zarezerwowana

Wszystkie pozostałe kodeki:

Określone bajty 0–31: zarezerwowane

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
Sub_Opcode 1 oktet 0x01 – uruchom 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 otwartego na potrzeby strumieniowania A2DP
Data_Path_Direction 1 oktet 0x00 – wyjście (źródło/scalanie AVDTP)
0x01 – wejście (odbiornik/dzielenie AVDTP)
Peer_MTU 2 oktety Maksymalny rozmiar pakietów L2CAP, uzgodniony z urządzeniem równorzędnym.
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 nagłówek ochrony treści SCMS-T jest włączony (CP_SCMS_T_Enable ustawiony na 0x01), określa wartość nagłówka poprzedzającego treść audio (patrz A2DP, sekcja 3.2.1–2) zgodnie z sekcją 6.3.2 dokumentu Bluetooth Assigned Numbers.
Ignorowane, gdy ochrona treści SCMS-T nie jest włączona.
Vendor_Specific_Parameters_Length 1 oktet Długość parametrów specyficznych dla dostawcy w zakresie od 0 do 128.
Wartość 0 jest używana, gdy nie podano żadnych dodatkowych parametrów.
Vendor_Specific_Parameters 0–128 oktetów Parametry specyficzne dla dostawcy udostępniane przez warstwę HAL dźwięku Bluetooth, CodecParameters.vendorSpecificParameters[].

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
Sub_Opcode 1 oktet 0x03 – rozpoczęcie odciążania A2DP

Zatrzymaj odciążanie A2DP (starsza wersja)

Sub OCF: 0x02

To polecenie służy do zatrzymywania strumienia wyodrębniania 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 zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
Sub_Opcode 1 oktet 0x02 – zatrzymanie odciążania A2DP

Zatrzymaj odciążanie A2DP

Sub OCF: 0x04

To polecenie służy do zatrzymywania strumienia wyodrębniania A2DP.

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

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
Sub_Opcode 1 oktet 0x04 – zatrzymanie odciążania A2DP

Polecenie raportu jakości Bluetooth

Funkcja polecenia BT Quality Report uruchamia mechanizm w kontrolerze Bluetooth, który zgłasza zdarzenia związane z jakością Bluetooth do hosta. Możesz włączyć 4 opcje:

  • Tryb monitorowania jakości: kontroler okresowo wysyła do hosta zdarzenie podrzędne BQR związane z jakością połączenia.
  • Zbliżanie się do LSTO: jeśli przez ponad połowę wartości Link Supervision TimeOut (LSTO) nie są odbierane żadne pakiety z połączonego urządzenia BT, kontroler zgłasza hostowi zdarzenie zbliżania się do LSTO.
  • Przerywany dźwięk A2DP: gdy kontroler wykryje czynniki powodujące przerywany dźwięk, zgłasza do hosta zdarzenie Przerywany dźwięk A2DP.
  • (e)SCO Voice Choppy: gdy kontroler wykryje czynniki powodujące przerywanie głosu, zgłasza do hosta zdarzenie (e)SCO Voice Choppy.
  • Root Inflammation: to zdarzenie jest wysyłane przez kontroler do stosu, gdy HAL lub kontroler napotka krytyczny błąd i musi ponownie uruchomić Bluetootha.
  • Ślad wiadomości LMP/LL: kontroler wysyła do hosta wiadomość LMP/LL uzgadniającą połączenie z urządzeniem zdalnym.
  • Ślad harmonogramu wielu profili Bluetooth/współistnienia: kontroler wysyła do hosta informacje o harmonogramie obsługi wielu profili Bluetooth i współistnienia bezprzewodowego w paśmie 2,4 GHz.
  • Mechanizm informacji debugowania kontrolera: gdy jest włączony, kontroler może autonomicznie raportować informacje z logów debugowania do hosta za pomocą podzdarzenia informacji debugowania kontrolera.
  • LE Audio Choppy: gdy kontroler wykryje czynniki powodujące przerywany dźwięk, zgłasza do hosta zdarzenie LE Audio Choppy.
  • Tryb zaawansowanych statystyk RF: kontroler przesyła do hosta informacje o statystykach RF, obsługując 2 przypadki użycia raportów:
    • Raporty okresowe
    • aktywatory zdarzeń (rozpoczęcie/zakończenie strumienia i aktywator zdarzenia jakości połączenia);
  • Mechanizm monitorowania stanu kontrolera przekazuje hostowi informacje o stanie za pomocą 2 rodzajów zdarzeń: raportów okresowych i raportów wywoływanych przez zdarzenia.
  • BQR_Report_Action polecenia raportu jakości Bluetooth: host może użyć tego polecenia HCI, aby jednorazowo wysłać zapytanie o tryb monitorowania jakości, tryb monitorowania energii lub tryb zaawansowanych statystyk RF.

OCF: 0x15E

Parametr polecenia Rozmiar Cel
BQR_Report_Action 1 oktet Działanie polegające na dodaniu lub usunięciu raportowania zdarzeń związanych z jakością określonych w parametrze BQR_Quality_Event_Mask albo wyczyszczeniu wszystkich.

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

Usunięcie spowoduje wyczyszczenie raportowania określonych zdarzeń związanych z jakością.
Wyczyść spowoduje wyczyszczenie wszystkich raportów o zdarzeniach związanych z jakością (parametr BQR_Quality_Event_Mask można zignorować).

BQR_Quality_Event_Mask 4 oktety Maski bitowe dla wybranych raportów o zdarzeniach związanych z jakością.

Bit 0: ustawiony na włączenie trybu monitorowania jakości.
Bit 1: ustawiony, aby włączyć zdarzenie zbliżania się do LSTO (w przypadku ACL/(e)SCO/ISO).
Bit 2: ustawiony, aby włączyć zdarzenie przerywanego dźwięku A2DP.
Bit 3: Set to enable (e)SCO Voice Choppy event.
Bit 4: ustawiony na włączenie zdarzenia zapalenia korzenia.
Bit 5: ustawiony na włączenie trybu monitorowania zużycia energii.
Bit 6: ustawiony na włączenie zdarzenia przerywanego dźwięku LE Audio.
Bit 7: ustawiony, aby włączyć zdarzenie nieudanego połączenia.
Bit 8: ustawienie umożliwiające wywoływanie zdarzeń w trybie zaawansowanych statystyk RF.
Bit 9: ustawiony na 1, aby włączyć okresowy raport zaawansowanych statystyk RF.
Bit 10: Set to enable controller health monitoring mechanism event trigger. (dodano w BQRv7)
Bit 11: ustawiony, aby włączyć okresowe raportowanie mechanizmu monitorowania stanu kontrolera. (dodano w BQRv7)
Bity 12–14: zarezerwowane.
Bit 15: ustawiony, aby włączyć zdarzenia jakości specyficzne dla dostawcy.
Bit 16: ustawiony, aby włączyć śledzenie wiadomości LMP/LL.
Bit 17: ustawiony na włączenie śledzenia harmonogramu Bluetooth Multi-link/Coex.
Bit 18: Set to enable the Controller Debug Information mechanism.
Bit 19: Reserved for offload debug information.
Bit 20: wyzwalacz zdarzenia zrzutu historii UART. (dodano w BQRv7)
Bity 21–30: zarezerwowane.
Bit 31: ustawiony, aby włączyć śledzenie specyficzne dla dostawcy.

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

Jednostka: ms
Wartość domyślna: 0 (brak ograniczeń dotyczących interwału).
Zakres: 0–65535 ms

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

Bity 0–31: zarezerwowane.

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

Bity 0–31: zarezerwowane.

Report_interval_multiple 4 oktety Mnożnik dla BQR_Minimum_Report_Interval. Gdy ta wartość jest ≥ 1, interwał raportu BQR ma format
. Interwał raportu BQR = BQR_Minimum_Report_Interval x Report_interval_multiple.
Oprogramowanie sprzętowe kontrolera nie może zgłaszać następnego zdarzenia w określonym przedziale czasu. Ustawienie interwału jest przeznaczone specjalnie dla dodanych zdarzeń związanych z jakością.

Jednostka: ms
Wartość domyślna: 1
Zakres: 0–4294967295 (0 oznacza 1)

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

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
Current_Quality_Event_Mask 4 oktety Wskazuje bieżące ustawienie maski bitowej.
Bit 0: włączony jest tryb monitorowania jakości.
Bit 1: Włączone jest raportowanie zdarzeń zbliżających się do LSTO.
Bit 2: włączono raportowanie zdarzeń dotyczących przerywanego dźwięku A2DP.
Bit 3: (e)SCO Voice Choppy event reporting is enabled.
Bit 4: włączone jest raportowanie zdarzeń dotyczących stanu zapalnego korzenia.
Bit 5: włączony jest tryb monitorowania energii.
Bit 6: włączone jest raportowanie zdarzeń przerywanego dźwięku LE Audio.
Bit 7: zdarzenie nieudanego połączenia.
Bit 8: ustawienie umożliwiające wywoływanie zdarzeń w trybie zaawansowanych statystyk RF.
Bit 9: ustawienie umożliwiające okresowe raportowanie zaawansowanych statystyk RF.
Bit 10: Set to enabled controller health monitoring mechanism event trigger.
Bit 11: ustawiony na włączony mechanizm monitorowania stanu kontrolera okresowo raportuje.
Bity 12–14: zarezerwowane.
Bit 15: Raportowanie zdarzeń dotyczących jakości specyficznych dla dostawcy jest włączone.
Bit 16: LMP/LL message trace is enabled.
Bit 17: śledzenie harmonogramu Bluetooth Multi-link/Coex jest włączone.
Bit 18: mechanizm informacji debugowania kontrolera jest włączony.
Bit 19: Reserved for offload debug information
Bit 20: UART History Dump Event trigger
Bit 21 ~ 30: Reserved.
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ć wartość minimalna z tych dwóch: BQR_Minimum_Report_Interval * Report_interval_multiple lub maksymalny obsługiwany interwał kontrolera.

Polecenie dynamicznego bufora audio

Dynamiczny bufor audio zmniejsza zakłócenia dźwięku, zmieniając rozmiar bufora audio w kontrolerze Bluetooth w zależności od różnych scenariuszy.

OCF: 0x15F

Uzyskiwanie możliwości buforowania dźwięku

Sub OCF: 0x01

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

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

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
Dynamic_Audio_Buffer_opcode 1 oktet 0x01. Pobieranie czasu buforowania dźwięku
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 kodeka typu Bit 0 określony w  Audio_Codec_Type_Supported.
Ta wartość powinna wynosić 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 typu kodeka Bit 0 określony w polu Audio_Codec_Type_Supported.
Ta wartość powinna wynosić 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 typu kodeka Bit 0 określony w atrybucie Audio_Codec_Type_Supported.
Ta wartość powinna wynosić 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 typu kodeka Bit 1 określony w parametrze Audio_Codec_Type_Supported.
Ta wartość powinna wynosić 0, jeśli kodek typu Bit 1 nie jest obsługiwany.
Jednostka: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 2 oktety Maksymalny czas buforowania typu kodeka Bit 1 określony w polu Audio_Codec_Type_Supported.
Ta wartość powinna wynosić 0, jeśli kodek typu Bit 1 nie jest obsługiwany.
Jednostka: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 2 oktety Minimalny czas buforowania typu kodeka Bit 1 określony w atrybucie Audio_Codec_Type_Supported.
Ta wartość powinna wynosić 0, jeśli kodek typu Bit 1 nie jest obsługiwany.
Jednostka: ms
...... ...... ......
Audio_Codec_Buffer_Default_Time_For_Bit_31 2 oktety Domyślny czas buforowania typu kodeka Bit 31 określony w polu Audio_Codec_Type_Supported.
Ta wartość powinna wynosić 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 typu kodeka Bit 31 określony w polu Audio_Codec_Type_Supported.
Ta wartość powinna wynosić 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 typu kodeka Bit 31 określony w parametrze Audio_Codec_Type_Supported.
Ta wartość powinna wynosić 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 Żądany czas buforowania dźwięku dla aktualnie używanego kodeka.
Jednostka: ms

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
Dynamic_Audio_Buffer_opcode 1 oktet 0x02 – Ustawianie 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 specyficzne dla dostawcy. Patrz rysunek 5.4 na stronie 1897 specyfikacji BT Core 5.2. Parametr zdarzenia 0 będzie 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 podzdarzenia będzie miał rozmiar 1 oktetu, czyli bajta bezpośrednio następującego po długości parametru w pakiecie zdarzenia HCI.

Podzdarzenie przekroczenia progu miejsca na dane

To zdarzenie oznacza, że próg miejsca na dane został przekroczony.

Kod podrzędnego zdarzenia = 0x54

Parametr podrzędny zdarzenia Rozmiar Cel
Brak

Podzdarzenie zmiany stanu reklamowania w wielu miejscach docelowych LE

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

Kod zdarzenia podrzędnego = 0x55

Parametr podrzędnego zdarzenia Rozmiar Cel
Advertising_instance 1 oktet Określa konkretną instancję reklamy.
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łowe).

Podzdarzenie śledzenia reklam LE

To zdarzenie wskazuje, kiedy reklamodawca jest wykrywany lub traci połączenie.

Kod zdarzenia podrzędnego = 0x56

Parametr podrzędny zdarzenia Rozmiar Cel
APCF_Filter_Index 1 oktet Indeks filtra (0, max_filter-1)
Advertiser_State 1 oktet 0x00: Znaleziono reklamodawcę
0x01: Utracono reklamodawcę
Advt_Info_Present 1 oktet 0x00: Informacje o reklamodawcy (Advt_Info) są obecne
0x01: Informacje o reklamodawcy (Advt_Info) nie są obecne
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ów
Scan_data_resp_len[0]: 1 oktet
Scan_data_resp[0]: Scan_data_resp oktetów

Podzdarzenie informacji o debugowaniu kontrolera

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

Kod zdarzenia podrzędnego = 0x57

Parametr podrzędny zdarzenia Rozmiar Cel
debug_block_byte_offset_start 2 oktety Debugowanie przesunięcia bajtowego bloku od początku
last_block 1 oktet 0x00: Więcej danych debugowania
0x01: Ostatni blok binarny; brak więcej danych debugowania
cur_pay_load_sz 2 oktety Rozmiar bloku binarnego w bieżącym zdarzeniu
Debug_Data Zmienna Dane debugowania cur_payload_sz

Podzdarzenie raportu jakości Bluetootha

To zdarzenie oznacza jedno z tych zdarzeń: wystąpiło zdarzenie związane z jakością Bluetooth, kontroler przesłał ślad wiadomości LMP/LL i ślad planowania Bluetooth Multi-link/Coex lub kontroler zrzucił dane debugowania.

Parametr podrzędny zdarzenia Rozmiar Cel
Quality_Report_Id 1 oktet 0x01: raportowanie jakości w trybie monitorowania.
0x02: zbliża się LSTO.
0x03: A2DP Audio Choppy.
0x04: (e)SCO Voice Choppy.
0x05–0x06: zarezerwowane.
0x07: LE audio choppy.
0x08: nie udało się nawiązać 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
0x10: DM1
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: ISO packet
0x52: 1M PHY
0x53: 2M PHY
0x54: Codec PHY S=2
0x55: Codec PHY S=8
0x56 ~ 0xFF: Reserved
Connection_Handle 2 oktety Uchwyt połączenia ACL/(e)SCO/ISO.
Connection_Role 1 oktet Rola wykonywana na potrzeby połączenia.
0x00: Central
0x01: Peripheral
0x02 ~ 0xFF: Reserved.
TX_Power_Level 1 oktet Bieżący poziom mocy transmisji dla określonego Connection_Handle.

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

RSSI 1 oktet [w dBm]

Wartość wskaźnika siły odbieranego sygnału (RSSI) dla określonego Connection_Handle.
Ta wartość musi być 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 SNR wszystkich kanałów używanych przez połączenie.

Unused_AFH_Channel_Count 1 oktet Wskazuje liczbę nieużywanych kanałów w AFH_channel_map.
0x4F–0xFF: zarezerwowane.
AFH_Select_Unideal_Channel_Count 1 oktet Wskazuje liczbę kanałów, które są zakłócane i mają złą jakość, ale nadal są wybrane do AFH.
Minimalna liczba kanałów dozwolona przez specyfikację Bluetooth to 20, więc nawet jeśli wszystkie 79 kanałów są zakłócane i mają złą jakość, kontroler musi wybrać co najmniej 20 kanałów do AFH.
LSTO 2 oktety Obecne ustawienie limitu czasu nadzoru nad połączeniem.
Czas = N * 0,625 ms
Zakres czasu: od 0,625 ms do 40,9 s
Connection_Piconet_Clock 4 oktety Zegar sieci piconet dla określonego Connection_Handle.
Ta wartość musi być taka sama jak odpowiedź kontrolera na polecenie HCI_Read_Clock HCI z parametrem „Which_Clock” o wartości 0x01 (zegar sieci piconet).
Jednostka: N * 0,3125 ms (1 zegar Bluetooth)
Retransmission_Count 4 oktety Liczba retransmisji od ostatniego zdarzenia.
Ta liczba zostanie zresetowana po zgłoszeniu jej hostowi.
No_RX_Count 4 oktety Od ostatniego zdarzenia nie odnotowano żadnych recept.
Liczba ta zwiększa się, gdy w zaplanowanym przedziale czasu nie zostanie odebrany żaden pakiet lub odebrany pakiet jest uszkodzony.
Ta liczba zostanie zresetowana po zgłoszeniu jej hostowi.
NAK_Count 4 oktety Liczba NAK (Negative Acknowledge) od ostatniego zdarzenia.
Ta liczba zostanie zresetowana po zgłoszeniu jej hostowi.
Last_TX_ACK_Timestamp 4 oktety Sygnatura czasowa ostatniego potwierdzenia TX. Jest on oparty na zegarze Bluetooth sieci piconet central (CLK).
Jednostka: N * 0,3125 ms (1 zegar Bluetooth)
Flow_Off_Count 4 oktety Liczba przypadków otrzymania przez kontroler sygnału Flow-off (STOP) od ostatniego zdarzenia.
Ta liczba zostanie zresetowana po zgłoszeniu jej hostowi.
Last_Flow_On_Timestamp 4 oktety Sygnatura czasowa ostatniego przepływu (GO). Jest on oparty na zegarze Bluetooth centralnego urządzenia sieci piconet (CLK).
Jednostka: N * 0,3125 ms (1 zegar Bluetooth)
Buffer_Overflow_Bytes 4 oktety [w bajtach]

Liczba przepełnień bufora od ostatniego zdarzenia.
Kontroler zlicza liczbę odrzuconych bajtów danych.
Liczba ta zostanie zresetowana po przesłaniu raportu do hosta.

Buffer_Underflow_Bytes 4 oktety [w bajtach]

Liczba niedoborów bufora od ostatniego zdarzenia.
Ta liczba zostanie zresetowana po przesłaniu raportu do hosta.

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 wysłanych pakietów.
TX_UnAcked_Packets 4 oktety Liczba pakietów, które nie otrzymały potwierdzenia.
Ta liczba jest resetowana po zgłoszeniu problemu organizatorowi.
TX_Flushed_Packets 4 oktety Liczba pakietów, które nie są wysyłane przez punkt opróżniania.
Ta liczba jest resetowana po zgłoszeniu do organizatora.
TX_Last_Subevent_Packets 4 oktety Liczba pakietów, w których warstwa łącza przesyła jednostkę PDU danych CIS w ostatnim podzdarzeniu zdarzenia CIS.
Ta liczba jest resetowana po zgłoszeniu problemu organizatorowi.
Wartość wynosi zero, jeśli link nie ma prawidłowej wartości.
CRC_Error_Packets 4 oktety Liczba odebranych pakietów z błędem CRC od ostatniego zdarzenia.
Ta liczba jest resetowana po zgłoszeniu problemu organizatorowi.
RX_Duplicate_Packets 4 oktety Liczba zduplikowanych (ponownie przesłanych) pakietów odebranych od ostatniego zdarzenia.
Ta liczba jest resetowana po zgłoszeniu problemu organizatorowi.
RX_Unreceived_Packets 4 oktety Liczba nieodebranych pakietów jest taka sama jak parametr polecenia LE READ ISO Link Quality (patrz specyfikacja Bluetooth w wersji 5.4). Powiązane strumienie to CIS i BIS.
Gdy ta wartość jest zwiększana, warstwa łącza nie otrzymuje określonego ładunku w punkcie opróżniania (w przypadku CIS) ani na końcu zdarzenia, z którym jest powiązana (w przypadku BIS; patrz Bluetooth Core Specification Version 5.4 Vol 6 Part B, Section 4.4.6.6).
Coex_Info_Mask 2 oktety Bit 0 – CoexInvolvement: ustawiony, aby wskazywać, że podejrzewa się, że działania związane z współistnieniem mają związek z generowaniem tego raportu (np. A2DP Chops i Approaching LSTO).
Bit 1 - WL 2G Radio Active: ustawiony, aby wskazywać, że radio WLAN 2G jest aktywne.
Bit 2 - WL 2G Connected: ustawiony, aby wskazywać, że radio WLAN 2G jest aktywne i połączone.
Bit 3 – WL 5G/6G Radio Active: ustawiony, aby wskazywać, że radio WLAN 5G/6G jest aktywne.
Bity 4–15 – zarezerwowane
Parametr specyficzny dla dostawcy (długość parametru – do ustalenia) * oktety Aby dostawca kontrolera uzyskał więcej parametrów specyficznych dla dostawcy.

Subevent code = 0x58 [Quality_Report_Id = 0x05, Root Inflammation event]

To zdarzenie oznacza, że HAL Bluetooth lub kontroler napotkał krytyczny błąd i wymaga, aby stos Bluetooth zarejestrował tę sytuację i ponownie się uruchomił. Przed wysłaniem pierwszego fragmentu zdarzeń informacji o debugowaniu w dowolnym przypadku kontroler musi wysłać do stosu Bluetooth zdarzenie Root_Inflammation_Event.

Parametr Error_Code zawiera kod błędu zgłoszony przez HAL/kontroler. Jeśli jest to błąd specyficzny dla dostawcy chipsetu, ma wartość 0. Pole Vendor_Specific_Error_Code zawiera kod błędu specyficzny dla dostawcy chipsetu z HAL/kontrolera. Jeśli parametr Error_Code nie ma wartości 0, powinien mieć wartość 0. Parametry Error_Code i Vendor_Specific_Error_Code nie powinny mieć wartości 0.

Parametr zdarzenia podrzędnego Rozmiar Cel
Quality_Report_Id 1 oktet 0x00–0x04: zarezerwowane.
0x05: Stan zapalny korzenia.
0x06–0xFF: zarezerwowane.
Error_Code 1 oktet 0x00: zawiera kod błędu specyficzny dla dostawcy chipsetu.
0x01–0xFF: wystąpiła awaria kontrolera. Listę kodów błędów i ich opisów znajdziesz w specyfikacji Bluetooth [Vol 2], część D, kody błędów.
Vendor_Specific_Error_Code 1 oktet 0x00: nie zawiera kodu błędu specyficznego dla dostawcy chipsetu.
0x01–0xFF: kod błędu specyficzny dla dostawcy chipsetu.
Parametr specyficzny dla dostawcy (Długość całkowita parametru – 4) * oktety Aby dostawca kontrolera uzyskał więcej parametrów specyficznych dla dostawcy.

Kod podzdarzenia = 0x58 [Quality_Report_Id = 0x06, zdarzenie monitora energii]

To zdarzenie zawiera migawkę zużycia energii i stanów operacyjnych kontrolera Bluetooth w określonym przedziale czasu. To zdarzenie pomaga deweloperom i inżynierom analizować sposób zarządzania energią przez kontroler, określać, które działania zużywają najwięcej energii, i rozwiązywać problemy związane z zasilaniem.

Parametry w raporcie śledzą kluczowe dane, w tym:

  • Średnie bieżące zużycie: całkowity prąd zużywany przez kontroler.
  • Czas spędzony w różnych stanach: łączny czas (w milisekundach), przez jaki kontroler pozostaje w stanie bezczynności (uśpienia lub niskiego zużycia energii) w porównaniu ze stanem aktywności (łączenie się, przesyłanie lub odbieranie danych).
  • Liczba przejść między stanami: liczba przejść kontrolera między stanami bezczynności i aktywności.
  • Czas spędzony w określonych stanach radia: osobne dane dotyczące czasu spędzonego na transmisji (Tx) i odbiorze (Rx) w przypadku połączeń BR/EDR (Bluetooth Classic) i LE (Bluetooth Low Energy).
  • Średnie poziomy mocy transmisji: średnia moc (w dBm) używana do transmisji w przypadku połączeń BR/EDR i LE.
  • Szczegółowa aktywność łańcucha: raporty dotyczące czasu spędzonego na aktywnych łańcuchach transmisji lub odbioru, z rozróżnieniem operacji jedno- i dwułańcuchowych oraz wewnętrznych (iPA) i zewnętrznych (ePA) wzmacniaczy mocy.
  • Czas skanowania aktywności: czas, w którym kontroler aktywnie skanuje urządzenia BR/EDR i LE.

Analizując te parametry, inżynierowie mogą uzyskać wgląd w efektywność energetyczną kontrolera i zoptymalizować jego działanie.

Parametr zdarzenia podrzędnego Rozmiar Cel
Quality_Report_Id 1 oktet 0x06: Monitorowanie energii
Average_Current_Consumption 2 oktety [w mA] Średnie zużycie prądu przez wszystkie działania kontrolera
Idle_Total_Time (sen) 4 oktety [w ms] Łączny czas w stanie bezczynności (stany niskiego zużycia energii, uśpienie).
Idle_Sate_Enter_Count 4 oktety Wskazuje, ile razy kontroler przechodzi w stan bezczynności.
Active_Total_Time 4 oktety [w ms] Całkowity czas w stanie aktywnym (wysyłanie zapytań, przywoływanie, ruch ACL/SCO/eSCO/BIS/CIS, przetwarzanie dowolnego zadania).
Active_State_Enter_Count 4 oktety Wskazuje, ile razy kontroler przechodzi w stan aktywny.
BR_RDR_Tx_Total_Time 4 oktety [w ms] Całkowity czas w stanie Tx(transmisja dla ruchu ACL/SCO/eSCO) specyficznym dla BR/EDR.
BR_RDR_Tx_State_Enter_Count 4 oktety Wskazuje, ile razy kontroler przechodzi w stan transmisji BR/EDR.
BR_RDR_Tx_Average_Power_Level 1 oktet [w dBm] Średni poziom mocy transmisji wszystkich połączeń BR/EDR
BR_RDR_Rx_Total_Time 4 oktety [w ms] Łączny czas w stanie odbioru (Rx) specyficznym dla BR/EDR (odbieranie ruchu z ACL/SCO/eSCO).
BR_RDR_Rx_State_Enter_Count 4 oktety [w ms] Wskazuje, ile razy kontroler przechodzi w stan odbioru BR/EDR.
LE_Tx_Total_Time 4 oktety [w ms] Łączny czas w stanie Tx (nadawanie w przypadku ruchu ACL/BIS/CIS lub ruchu reklamowego LE) specyficznym dla LE.
LE_Tx_State_Enter_Count 4 oktety Wskazuje, ile razy kontroler przechodzi w stan odbioru BR/EDR.
LE_Tx_Average_Power_Level 1 oktet [w dBm] Średni poziom mocy transmisji wszystkich połączeń LE.
LE_Rx_Total_Time 4 oktety [w ms] Łączny czas w stanie Rx (odbieranie z ACL/BIS/CIS lub ruchu skanowania LE).
LE_Rx_State_Enter_Count 4 oktety [w ms] Wskazuje, ile razy kontroler przechodzi w stan odbioru LE.
Report_Time_Duration (całkowity czas) 4 oktety [w ms] Całkowity czas zbierania informacji związanych z zasilaniem.
RX_Active_One_Chain_Time 4 oktety [w ms] Czas trwania aktywnego odbioru w jednym łańcuchu.
RX_Active_Two_Chain_Time 4 oktety [w ms] Czas trwania aktywnego odbioru w 2 łańcuchach
TX_iPA_Active_One_Chain_Time 4 oktety [w ms] Czas trwania aktywnej wewnętrznej transmisji w jednym łańcuchu
TX_iPA_Active_Two_Chain_Time 4 oktety [w ms] Czas trwania aktywnej wewnętrznej transakcji w 2 łańcuchach
TX_ePA_Active_One_Chain_Time 4 oktety [w ms] Czas trwania aktywnej transmisji zewnętrznej w jednym łańcuchu
TX_ePA_Active_Two_Chain_Time 4 oktety [w ms] Czas trwania aktywnego zewnętrznego TX w dwóch łańcuchach
BREDR_RX_Active_Scan_total_Time 4 oktety [w ms] Okres (ms) czasu aktywnego odbioru skanowania BR/EDR
LE_RX_Active_Scan_total_Time 4 oktety [w ms] Okres (ms) czasu aktywnego odbioru skanowania LE

Subevent code = 0x58 [Quality_Report_Id = 0x09~0x0A, Advanced RF stats event]

Zdarzenie Bluetooth Advanced RF (Radio Frequency) Stats zawiera szczegółowe dane o działaniu radia kontrolera Bluetooth. Zdarzenie można wywołać na 2 sposoby:

  • Według wyzwalacza: jednorazowy raport jest wysyłany w odpowiedzi na określone polecenie.
  • Według monitora: kontroler okresowo wysyła raporty w określonych odstępach czasu.

Parametry zdarzenia to w zasadzie liczniki pakietów, które śledzą różne zachowania radia w określonym przedziale czasu.

Kluczowe dane i ich przeznaczenie
  • Statystyki mocy transmisji: te liczniki śledzą pakiety wysyłane przy użyciu różnych konfiguracji zasilania, rozróżniając wewnętrzne (iPA) i zewnętrzne (ePA) wzmacniacze mocy oraz różne tryby dywersyfikacji anteny (Div) lub kształtowania wiązki (BF). Pomaga to określić, które ustawienia zasilania i anteny są używane najczęściej.
  • Przedziały wskaźnika siły odbieranego sygnału (RSSI): te parametry kategoryzują odebrane pakiety na podstawie siły sygnału. Podając liczbę pakietów w określonych zakresach RSSI (np. poniżej -90 dBm, od -70 do -75 dBm), raport daje jasny obraz jakości połączenia. Wysoka liczba w przedziałach „słabego” sygnału (np. < -90 dBm) wskazuje na słabe połączenie.
  • Różnica RSSI: ta wartość mierzy różnicę siły sygnału między 2 antenami odbiorczymi (w stosownych przypadkach). Liczniki śledzą, ile pakietów ma deltę RSSI w różnych zakresach. Duża różnica (np. >11 dBm) może wskazywać na zakłócenia lub przeszkodę fizyczną, ponieważ jedna antena odbiera sygnał o znacznie większej mocy niż druga.
  • Przełączanie anten i ponowne transmisje: raport zlicza, jak często kontroler przełącza się między antenami, i śledzi pakiety ponownie transmitowane (ReTX). Duża liczba ponownych transmisji często wskazuje na słabe lub niestabilne połączenie, które wymaga ponownego wysyłania pakietów.
  • Jakość kanału: te parametry zawierają ogólne podsumowanie stanu różnych kanałów komunikacji, klasyfikując je jako „Dobre”, „OK”, „Złe” lub „Bardzo złe” na podstawie wskaźnika RSSI. Daje to natychmiastowy przegląd środowiska RF.
  • Kolejka bufora TX: ta sekcja monitoruje liczbę pakietów oczekujących w buforze transmisji kontrolera dla różnych typów połączeń, takich jak ACL (Asynchronous Connection-oriented Logical link), LECONN (LE Connection) i LEISOC (LE Isochronous). Wysoka liczba buforów może wskazywać na wąskie gardło lub problem z przepływem danych z hosta do kontrolera.
Parametr podrzędnego zdarzenia Rozmiar Cel
Quality_Report_Id 1 oktet 0x09: Advance RF Stats By Trigger
0x0A: Advance RF Stats By Monitor
Extension_info 1 oktet Informacje o wersji BQR.
0x01 dla BQRv6
0x02 dla BQRv7
Report_Time_Period 4 oktety Okres zbierania informacji o skuteczności. Jednostka: ms
TX_Power_iPA_BF 4 oktety Licznik pakietów iPA BF
TX_Power_ePA_BF 4 oktety Licznik pakietów ePA BF
TX_Power_iPA_Div 4 oktety Licznik pakietów w sekcji ePA
TX_Power_ePA_Div 4 oktety Licznik pakietów w sekcji ePA
RSSI_chain_50 4 oktety Licznik pakietów w łańcuchu RSSI > -50 dBm
RSSI_chain_50_55 4 oktety Licznik pakietów w łańcuchu RSSI w zakresie od -50 dBm do >-55 dBm.
RSSI_chain_55_60 4 oktety Licznik pakietów łańcucha RSSI w zakresie od -55 dBm do >-60 dBm
RSSI_chain_60_65 4 oktety Licznik pakietów w łańcuchu RSSI między -60 dBm a >-65 dBm
RSSI_chain_65_70 4 oktety Licznik pakietów w łańcuchu RSSI w zakresie od -65 dBm do >-70 dBm
RSSI_chain_70_75 4 oktety Licznik pakietów w łańcuchu RSSI w zakresie od -70 dBm do >-75 dBm
RSSI_chain_75_80 4 oktety Licznik pakietów w łańcuchu RSSI w zakresie od -75 dBm do >-80 dBm
RSSI_chain_80_85 4 oktety Licznik pakietów w łańcuchu RSSI w zakresie od -80 dBm do >-85 dBm
RSSI_chain_85_90 4 oktety Licznik pakietów w łańcuchu RSSI w zakresie od -85 dBm do >-90 dBm
RSSI_chain_90 4 oktety Licznik pakietów w łańcuchu RSSI < -90 dBm
RSSI_delta_2 4 oktety Licznik pakietów o wartości delta RSSI < 2 dBm
RSSI_delta_2_5 4 oktety Licznik pakietów o różnicy RSSI między 2 dBm a 5 dBm
RSSI_delta_5_8 4 oktety Licznik pakietów o różnicy RSSI od 5 dBm do 8 dBm
RSSI_delta_8_11 4 oktety Licznik pakietów o różnicy RSSI między 8 dBm a 11 dBm
RSSI_delta_11 4 oktety Licznik pakietów różnicy RSSI > 11 dBm
Antenna_Switch_Count 4 oktety Licznik pakietów zdarzenia przełączania anteny
ReTX_iPA_BF 4 oktety Licznik pakietów ReTX_iPA_BF w ostatnim okresie
ReTX_ePA_BF 4 oktety Licznik pakietów ReTX_ePA_BF w ostatnim okresie
ReTX_iPA_Div 4 oktety Licznik pakietów ReTX_iPA_Div w ostatnim okresie
ReTX_ePA_Div 4 oktety Licznik pakietów ReTX_ePA_Div w ostatnim okresie
Channel_count_Good 1 oktet Liczba kanałów, których RSSI mieści się w przedziale Bin-1 (<-90)
Channel_count_OK 1 oktet Liczba kanałów, których RSSI mieści się w przedziale Bin-2 (-90~-76)
Channel_count_Bad 1 oktet Liczba kanałów, których RSSI mieści się w przedziale Bin-3 (-76~-50)
Channel_count_VeryBad 1 oktet Liczba kanałów, których wartość RSSI mieści się w przedziale Bin-4 (>-50)
TX_buffer_Queue_Count 4 oktety Licznik stanu bufora kolejki bufora TX kontrolera w ostatnim okresie [0:3] ACL_1 [4:7] ACL_2 [8:11] LECONN_1 [12:15] LECONN_2 [16:19] LEISOC_1 [20:23] LEISOC_2 [24:27] LEBroadcast [28:31] rsvd

Kod podzdarzenia = 0x58 [Quality_Report_Id = 0x0B~0x0C, zdarzenie monitorowania stanu kontrolera]

Zdarzenie monitorowania stanu kontrolera Bluetooth zawiera podsumowanie stanu działania kontrolera. Zdarzenie można wywołać na 2 sposoby:

  • Według wyzwalacza: jednorazowy raport jest wysyłany w odpowiedzi na określone polecenie.
  • Według monitora: kontroler okresowo wysyła raporty w określonych odstępach czasu.

Zdarzenie monitorowania stanu kontrolera Bluetooth to narzędzie diagnostyczne, które zawiera podsumowanie stanu działania kontrolera. To zdarzenie jest częścią struktury raportu o jakości Bluetooth (BQR) i służy do debugowania problemów z łącznością, zarządzaniem energią i czasem. Możesz wysłać go jednorazowo lub okresowo, aby zapewnić ciągłe monitorowanie.

Kluczowe dane i ich przeznaczenie
  • Liczniki pakietów HCI: zdarzenie śledzi łączną liczbę pakietów wysłanych z hosta do kontrolera i odwrotnie. Te liczniki są niezbędne do debugowania problemów z transportem interfejsu kontrolera hosta (HCI), który jest kanałem komunikacji między stosem oprogramowania a chipem kontrolera Bluetooth.
  • Długości pakietów: zdarzenie raportuje długość ostatniego wysłanego i odebranego pakietu HCI. Pomaga to sprawdzić, czy dane są przesyłane prawidłowo i czy nie występują nieoczekiwane problemy z rozmiarem.
  • Liczba sygnałów wybudzania: raport zawiera łączną liczbę asercji pinów BT_WakeHOST_Wake. Te sygnały fizyczne mają kluczowe znaczenie dla zarządzania energią, ponieważ służą do wybudzania odpowiednich podmiotów ze stanów niskiego zużycia energii. Monitorowanie tych wartości pomaga w rozwiązywaniu problemów związanych z zasilaniem, takich jak nieoczekiwane wybudzanie się urządzenia lub brak możliwości przejścia w tryb uśpienia.
  • Sygnatury czasowe: zdarzenie zawiera kilka sygnatur czasowych, w tym czas ostatniego sygnału wybudzania i ostatniego resetu HCI. Te sygnatury czasowe pomagają rozwiązywać problemy związane z czasem i stanowią punkt odniesienia, który pozwala określić, kiedy wystąpiły określone zdarzenia.
  • Watchdog Timer: określona flaga wskazuje, czy zdarzenie zostało wygenerowane jako wczesne ostrzeżenie, że zegar nadzorujący kontrolera wkrótce wygaśnie. Jest to alert krytyczny dotyczący potencjalnych zawieszeń lub nieprawidłowości w działaniu kontrolera.
  • Stan połączenia: raport podsumowuje bieżący stan aktywnych połączeń, w tym łączną liczbę połączeń BR/EDR, LECIS (Connected Isochronous Stream). Wskazuje też, czy aktywne są jakieś połączenia SCO (Synchronous Connection-Oriented). Te informacje dają obraz bieżącego obciążenia połączenia kontrolera.
Parametr podrzędnego zdarzenia Rozmiar Cel
Quality_Report_Id 1 oktet 0xB~0xC
0x0B: raporty jednorazowe lub wywoływane przez zdarzenia
0x0C: raporty okresowe.
Packet_Count_Host_to_Controller 4 oktety Łączna liczba pakietów wysłanych z hosta do kontrolera za pomocą transportu HCI. To pole służy do debugowania problemów z HCI (np. UART). Zachowanie: liczniki są resetowane, gdy kontroler otrzyma polecenie resetowania HCI.
Packet_Count_Controller_to_Host 4 oktety Łączna liczba pakietów zdarzeń HCI wysłanych do hosta. To pole służy do debugowania HCI (np. UART). Zachowanie: liczniki są resetowane, gdy kontroler otrzyma polecenie resetowania HCI.
Last_Packet_Length_Host_to_Controller 2 oktety Długość ostatniego pakietu HCI wysłanego do hosta UART. Uwaga: maksymalna długość pakietu HCI to 2 oktety (HCI, ACL, SCO, ISO).
Last_Packet_Length_Controller_To_host 2 oktety Długość ostatniego pakietu HCI odebranego z interfejsu UART hosta. Uwaga: maksymalna długość pakietu HCI to 2 oktety (obejmuje HCI, ACL, SCO, ISO).
Total_BT_Wake_Count 4 oktety Łączna liczba potwierdzeń stanu BT_Wake przez podmiot Host. To pole służy jako narzędzie diagnostyczne do debugowania problemów związanych z zasilaniem. Zachowanie: liczniki są resetowane, gdy kontroler otrzyma resetowanie HCI.
Total_HOST_Wake_Count 4 oktety Agregowane obliczanie potwierdzeń pinu Host_Wake zainicjowanych przez kontroler. To pole służy jako narzędzie diagnostyczne do debugowania problemów związanych z zasilaniem. Zachowanie: liczniki są resetowane, gdy kontroler otrzyma polecenie resetowania HCI.
Last_BT_Wake_TimeStamp 4 oktety Ostatnia sygnatura czasowa, kiedy host potwierdził pin BT_Wake.To pole zostało zaimplementowane w celu debugowania problemów z zasilaniem.
Last_HOST_Wake_TimeStamp 4 oktety Najnowsza sygnatura czasowa, kiedy kontroler potwierdził pin Host_Wake. To pole służy do debugowania problemów z zasilaniem.
Reset_Timestamp 4 oktety Sygnatura czasowa wskazująca zakończenie ostatniego resetowania HCI. To pole służy wyłącznie do rozwiązywania problemów związanych z czasem. Powinien on służyć jako początkowy punkt rejestracji, do którego odniesione są wszystkie inne elementy.
Current_Timestamp 4 oktety Aktualny czas wygenerowania tego zdarzenia. To pole służy do rozwiązywania problemów z różnicami w czasie. Powinien on służyć jako punkt rejestracji wywołania, do którego odwołują się wszystkie inne elementy.
Is_WatchDog_Timer_About_To_Expire 4 oktety Flaga wskazująca, że to zdarzenie stanu jest generowane przez kontroler jako wczesne ostrzeżenie o wygaśnięciu zegarka. Bieżąca sygnatura czasowa wskazuje czas wystąpienia.
Coex_Status_Mask 2 oktety Bit 0 – zarezerwowany
Total_Links_BR_EDR_LE_Active 1 oktet Łączna liczba połączeń BR/EDR/LE w stanie aktywnym.
Total_Links_BR_EDR_Sniff 1 oktet Łączna liczba połączeń BR/EDR w stanie Sniff/Idle.
Total_Links_CIS 1 oktet Łączna liczba linków w ISO.
Is_SCO_Active 1 oktet Wskaźnik, który pozwala sprawdzić, czy link SCO jest obecnie aktywny.
Parametr podrzędny zdarzenia Rozmiar Cel
Quality_Report_Id 1 oktet 0x00–0x10: zarezerwowane.
0x11: śledzenie wiadomości LMP/LL.
0x12: ślad planowania wielu połączeń Bluetooth lub współistnienia.
0x13: zrzut danych debugowania kontrolera.
0x14–0xFF: zarezerwowane.
Connection_Handle 2 oktety Uchwyt połączenia.
Parametr specyficzny dla dostawcy (Długość całkowita parametru – 4) * oktety Format specyficzny dla dostawcy śladu wiadomości LMP, śladu planowania Bluetooth Multi-link/Coex i zrzutu danych informacji debugowania kontrolera.

Kod zdarzenia podrzędnego = 0x5C

Po aktywowaniu to zdarzenie musi być generowane w każdym przedziale czasu ISO.

Aktywacja
Aktywacja odbywa się przez wybranie kodu dostawcy Data_Path_ID0x19HCI_LE_Setup_ISO_Data_Path standardowym poleceniu. Polecenie HCI_Configure_Data_Path z parametrem Data_Path_ID ustawionym na 0x19 i parametrem Vendor_Specific_Config_Length ustawionym na 0 musi zostać zaakceptowane, nawet jeśli po otrzymaniu tego polecenia kontroler nie musi podejmować żadnych działań.
Moment wysyłki
Zdarzenie jest emitowane od początku interwału ISO (punkt zakotwiczenia CIG lub BIG) do następnego interwału ISO. Kontroler wskazuje opóźnienie względem efektywnego początku interwału ISO za pomocą symbolu Anchor_Point_Delay.
Synchronizacja kontrolera
Na początku interwału ISO kontroler oblicza StreamSN, zwiększając bieżącą wartość o skonfigurowaną wartość ISO_Interval ÷ SDU_Interval. W pierwszym interwale jest ona inicjowana jako 0.
Następnie w przypadku każdego pakietu w kolejce ISO FIFO obowiązują te zasady:
  • Kontroler oblicza różnicę SNdiff między dwoma numerami sekwencyjnymi:
    SNdiff = (SDUSN - StreamSN + 0x10000) mod 0x10000
  • Gdy (SNdiff + (FT-1) × ISO_Interval ÷ SDU_Interval) mod 0x10000 <= (FT-1) × ISO_Interval ÷ SDU_Interval:
    Pakiet znajduje się w oknie ponownej transmisji. Powinno być zaplanowane do transmisji w poprzednich interwałach, a teraz jest dostępne do ponownej transmisji. Jeśli tak nie jest (nie została zaplanowana do transmisji), została odebrana z opóźnieniem. Należy to zasygnalizować hostowi za pomocą parametru In_Status. Takie pakiety mogą zostać odrzucone lub zaplanowane do transmisji. Wybór zależy od implementacji.
  • lub gdy SNdiff < ISO_Interval ÷ SDU_Interval:
    Pakiet jest zaplanowany do transmisji od tego zdarzenia do momentu upłynięcia limitu czasu opróżniania.
  • lub gdy SNdiff >= ISO_Interval ÷ SDU_IntervalSNdiff <= Max_Forward_Buffers:
    pakiet jest w przyszłości; zostanie przesłany z kolejnym zdarzeniem. Ponieważ pakiety są wysyłane w odpowiedniej kolejności, ten warunek kończy wyszukiwanie pakietów w tym przedziale czasu.
    Kontroler nie otrzymuje informacji o buforach używanych przez hosta, ale ich liczba jest ograniczona do Max_Forward_Buffers = 16.
  • lub gdy żaden z powyższych warunków nie zostanie spełniony:
    pakiet zostanie odrzucony, osiągnięty zostanie limit czasu opróżniania lub otrzymany zostanie nieprawidłowo sformatowany pakiet.

Parametr podrzędnego zdarzenia Rozmiar Cel
Connection_Handle 2 oktety Uchwyt połączenia CIS lub BIS
Zakres: 0x0000–0x0EFF
Sequence_Number 2 oktety Numer sekwencyjny strumienia zarządzany przez kontroler.

Inicjowany wartością 0 podczas tworzenia CIS lub BIS i zwiększany o liczbę jednostek SDU w interwale izochronicznym ISO, zdefiniowanym jako ISO_interval ÷ SDU_Interval, w każdym interwale ISO.
Anchor_Point_Delay 2 oktety Opóźnienie w mikrosekundach między wygenerowaniem zdarzenia a efektywnym punktem zakotwiczenia BIG lub CIG albo początkiem interwału ISO. Efektywna sygnatura czasowa punktu zakotwiczenia jest określana przez:
Event generation time - Anchor_Point_Delay

Zakres: od 0 do interwału ISO w mikrosekundach
In_Status 2 oktety Stan bufora ISO kontrolera

Na początku interwału ISO każdy bit bi jest ustawiany, gdy dostępna jest jednostka SDU. (Sequence_Number + i) mod 0x10000 Jeśli nie jest dostępna, jednostka SDU jest oznaczana jako Not received from the host.

Wartość i mieści się w zakresie od 0 do ISO_Interval ÷ SDU_Interval - 1. W przypadku innych wartości i bity są ustawione na 0.
Tx_Status 2 oktety Stan transmisji w odniesieniu do jednostek SDU z numerami sekwencyjnymi:
(Sequence_Number - Flush_Timeout × ISO_Interval ÷ SDU_Interval + i + 0x10000) mod 0x10000

Każdy bit bi jest ustawiany, gdy wszystkie jednostki PDU zidentyfikowanej jednostki SDU (według numeru sekwencyjnego) zostaną pomyślnie przesłane i potwierdzone.

Wartość i mieści się w zakresie od 0 do ISO_Interval ÷ SDU_Interval - 1. W przypadku innych wartości i bity są ustawione na 0.
W przypadku grupy do transmisji zawsze powinno być wysyłane potwierdzenie.

Obsługa wielu reklamodawców

Cele obsługi wielu reklamodawców są następujące:

  • Możliwość obsługi wielu reklam (max_advt_instances)
  • Różne moce transmisji, które pozwalają na uzyskanie różnego zasięgu.
  • Różne treści reklamowe
  • Indywidualna odpowiedź dla każdego reklamodawcy
  • Prywatność (bez możliwości śledzenia) w przypadku każdego reklamodawcy
  • Można połączyć

Aby zachować zgodność tej specyfikacji z dotychczasowymi standardami, udostępniamy te polecenia specyficzne dla dostawcy. Pochodzą one ze 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 zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
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 odniesienie: specyfikacja Bluetooth Core 4.1, strona 964 (LE Set Advertising Parameter Command)

Sub OCF: 0x01

Parametr podpolecenia Rozmiar Cel
Advertising_Interval_Min Zgodnie ze specyfikacją Zgodnie ze specyfikacją
Advertising_Interval_Max Zgodnie ze specyfikacją Zgodnie ze specyfikacją
Advertising_Type Zgodnie ze specyfikacją Zgodnie ze specyfikacją
Own_Address_Type Zgodnie ze specyfikacją Zgodnie ze specyfikacją
Own_Address Zgodnie ze specyfikacją Zgodnie ze specyfikacją
Direct_Address_Type Zgodnie ze specyfikacją Zgodnie ze specyfikacją
Direct_Address Zgodnie ze specyfikacją Zgodnie ze specyfikacją
Advertising_Channel_Map Zgodnie ze specyfikacją Zgodnie ze specyfikacją
Adverstising_Filter_Policy Zgodnie ze specyfikacją Zgodnie ze specyfikacją
Advertising_Instance 1 oktet Określa, czy powyższe parametry mają zastosowanie do instancji.
Tx_power 1 oktet Transmit_Power
Jednostka – dBm (liczba całkowita ze znakiem)
Zakres (-70 do +20)

Parametr Own_Address może być adresem skonfigurowanym przez hosta w momencie konfigurowania tej instancji wielu reklam. Dzięki temu w momencie transmisji pierwszego sygnału urządzenie ma rozpoznawalny adres prywatny. Reklamy w instancji będą nadal wyświetlane niezależnie od połączenia. Stos BT hosta może wydać polecenie rozpoczęcia reklamy w instancji po nawiązaniu połączenia.

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete (Zakończenie polecenia) zgodnie ze specyfikacją Bluetooth Core 4.1, jak podano powyżej. Jeśli instancja reklamowa lub parametry Tx_Power są nieprawidłowe, kontroler odpowie kodem błędu (nieprawidłowy parametr).

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
Multi_advt_opcode 1 oktet 0x01 [Set_Advt_Param_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd

Podstawa: specyfikacja Bluetooth Core 4.1, strona 969 (polecenie LE Set Advertising Data)

Sub OCF: 0x02

Parametr podpolecenia Rozmiar Cel
Advertising_Data_Length Zgodnie ze specyfikacją Zgodnie ze specyfikacją
Advertising_Data Zgodnie ze specyfikacją Zgodnie ze specyfikacją
Advertising_Instance 1 oktet Określa, czy powyższe parametry mają zastosowanie do instancji.

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete (Zakończenie polecenia) zgodnie ze specyfikacją Bluetooth Core 4.1, jak podano powyżej. Kontroler odpowie kodem błędu, jeśli instancja reklamowa lub parametry Tx_Power są nieprawidłowe.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
Multi_advt_opcode 1 oktet 0x02 [Set_Advt_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd

Podstawa: specyfikacja Bluetooth Core 4.1, strona 970 (LE Set Scan Response Data Command)

Sub OCF: 0x03

Parametr podpolecenia Rozmiar Cel
Scan_Response_Data_Length Zgodnie ze specyfikacją Zgodnie ze specyfikacją
Scan_Response_Data Zgodnie ze specyfikacją Zgodnie ze specyfikacją
Advertising_Instance 1 oktet Określa, czy powyższe parametry mają zastosowanie do instancji.

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete (Zakończenie polecenia) zgodnie ze specyfikacją Bluetooth Core 4.1, jak podano powyżej. Jeśli instancja reklamowa lub parametry Tx_Power są nieprawidłowe, kontroler odpowie kodem błędu (nieprawidłowy parametr).

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
Multi_advt_opcode 1 oktet 0x03 [Set_Scan_Resp_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd

Podstawa: specyfikacja Bluetooth Core 4.1, strona 963 (polecenie LE Set Random Address)

Sub OCF: 0x04

Parametr podpolecenia Rozmiar Cel
Losowy adres Zgodnie ze specyfikacją Zgodnie ze specyfikacją
Advertising_Instance 1 oktet Określa, czy powyższe parametry mają zastosowanie do instancji.

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
Multi_advt_opcode 1 oktet 0x04 [Set_Random_Addr_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd

Podstawa: specyfikacja Bluetooth Core 4.1, strona 971 (polecenie LE Set Advertise Enable w tej specyfikacji)

OCF: 0x05

Parametr podpolecenia 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 mają zastosowanie do instancji. Instancja 0 oznacza standardową instancję HCI.

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
Multi_advt_opcode 1 oktet 0x05 [Set_Advt_Enable_Multi_Sub_Cmd]

Przeniesione rozwiązywanie prywatnego adresu

Ta funkcja rozwiązuje problem z prywatnym adresem w oprogramowaniu lub sprzęcie kontrolera, co daje te korzyści:

  • Opóźnienie związane z rozwiązywaniem adresu prywatnego przez hosta
  • oszczędzanie energii przez unikanie wybudzania hosta;

LE_Set_RPA_Timeout

OCF: 0x15C

Parametr polecenia Rozmiar Cel
LE_local_IRK 16 oktetów Lokalny klucz IRK urządzenia użyty do wygenerowania losowych adresów możliwych do rozpoznania.
tRPA_min 2 oktety Minimalny limit czasu generowania RPA w sekundach. Kontroler musi generować nowe adresy możliwe do rozpoznania dla wszystkich zdarzeń reklamowych, skanowania i połączeń, które wystąpią po tym czasie.
Prawidłowy zakres: 300–1800
tRPA_max 2 oktety Maksymalny limit czasu generowania RPA w sekundach. Kontroler musi wygenerować nowe adresy, które można rozpoznać, dla wszystkich zdarzeń związanych z reklamowaniem, skanowaniem lub połączeniem przed upływem tego limitu czasu.
Prawidłowy zakres: tRPA_min–1800
Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia.

Sugerowane wartości stanu HCI:
0x00 – powodzenie
0x01 – nieznane polecenie (jeśli nie jest obsługiwane)
0x12 – nieprawidłowe parametry polecenia (jeśli którykolwiek z parametrów wykracza poza podany zakres)

LE_RPA_offload_Command

OCF: 0x155

Parametr polecenia Rozmiar Cel
RPA_offload_opcode 1 oktet 0x1 – włączanie funkcji specyficznej dla klienta
0x2 – dodawanie klucza IRK do listy
0x3 – usuwanie klucza IRK z listy
0x4 – czyszczenie listy kluczy IRK
0x5 – odczytywanie pozycji na liście kluczy IRK

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
Event_RPA_offload_opcode 1 oktet 0x1 – włączanie funkcji specyficznej dla klienta
0x2 – dodawanie klucza IRK do listy
0x3 – usuwanie klucza IRK z listy
0x4 – czyszczenie listy kluczy IRK
0x5 – odczytywanie pozycji na liście kluczy IRK

LE_RPA_offload: Enable_cust_specific_sub_Command

Sub OCF: 0x01

Parametr podpolecenia Rozmiar Cel
enable_customer_specific_feature_set 1 oktet 0x01 – włącz funkcję odciążonego RPA
0x00 – wyłącz funkcję odciążonego RPA

Odciążanie RPA musi być włączone przez hosta na podstawie możliwości układu. Więcej informacji znajdziesz w LE_Get_Vendor_Capabilities_Command. Każdy układ może mieć w oprogramowaniu różne wartości max_irk_list_sz.

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
Event_cust_specific_feature_opcode 1 oktet 0x01 [Włącz funkcję dostosowaną do klienta]

LE_RPA_offload: Add_IRK_to_list_sub_Command

Sub OCF: 0x02

Parametr podpolecenia 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 (najmniej znaczący bit pierwszego bajtu)

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
Event_cust_specific_feature_opcode 1 oktet 0x02 [Add IRK to the list]
LE_IrkList_AvailableSpaces 1 oktet Wpisy na liście IRL dostępne po bieżącej operacji

LE_RPA_offload: Remove_IRK_to_list_sub_Command

Sub OCF: 0x03

Parametr podpolecenia 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 identyfikatorem IRK

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
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: Clear_IRK_list_sub_Command

Sub OCF: 0x04

Parametr podpolecenia Rozmiar Cel
Brak

W przypadku tego polecenia zostanie wygenerowane zdarzenie Command Complete.

Parametr zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
Event_cust_specific_feature_opcode 1 oktet 0x04 [Clear IRK List]
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 podpolecenia 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 zwracany Rozmiar Cel
Status 1 oktet Stan polecenia zakończonego
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 wielkość 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 identyfikatorem IRK
LE_Resolved_Private_Address 6 oktetów Obecny rozwiązany adres prywatny tego identyfikatora IRK

Sniff Offload

Funkcja Sniff Offload przenosi zarządzanie trybem Sniff ze stosu hosta Bluetooth na kontroler Bluetooth. Dzięki temu kontroler może zarządzać czasem włączania i wyłączania trybu Sniff oraz stosować konfigurowalne parametry Sniff i Sniff sub-rating, a host zachowuje kontrolę nad wyborem parametrów na podstawie zmian aktywności profilu Bluetooth.

Stany Sniff Offload

W tej sekcji opisujemy stany kontrolera Bluetooth w kontekście funkcji Sniff Offload. Zdefiniowano 2 stany globalne, które określają stan kontrolera Bluetooth w odniesieniu do włączenia funkcji Sniff Offload. Zdefiniowano 2 stany specyficzne dla połączenia, aby określić stan połączenia BR/EDR, gdy kontroler Bluetooth jest w stanie Sniff Offload Enabled.

Global States

Zdefiniowano 2 stany globalne, które określają stan kontrolera Bluetooth w odniesieniu do włączenia funkcji Sniff Offload.

Stan wyłączenia funkcji Sniff Offload

Kontroler Bluetooth jest domyślnie w stanie „Sniff Offload Disabled”. Oczekuje się, że kontroler Bluetooth będzie obsługiwać polecenia HCI_Sniff_Mode, HCI_Exit_Sniff_Mode i HCI_Sniff_Subrating wydawane przez hosta Bluetooth. Kontroler Bluetooth powinien również przekazywać zdarzenia HCI_Mode_Change i HCI_Sniff_Subrating do hosta Bluetooth zgodnie z maską zdarzeń ustawioną przez hosta Bluetooth.

Stan włączenia funkcji Sniff Offload

Kontroler Bluetooth jest uznawany za „Sniff Offload Enabled” (włączone przeniesienie nasłuchiwania), gdy pomyślnie obsłuży „WriteSniffOffloadEnable” w celu włączenia przeniesienia nasłuchiwania. W tym stanie kontroler Bluetooth powinien przekazywać zdarzenia HCI_Mode_Change i HCI_Sniff_Subrating do hosta Bluetooth zgodnie z funkcją logiczną AND maski zdarzeń ustawionej przez hosta Bluetooth i flagami pomijania zdarzeń.

Stany specyficzne dla połączenia

Gdy kontroler Bluetooth jest w stanie „Sniff Offload Enabled”, każdy aktywny kanał ACL może być w jednym z 2 stanów opisanych poniżej.

Stan parametru oczekującego

Lista ACL jest uznawana za „oczekującą na parametry”, gdy kontroler Bluetooth jest w stanie „Sniff Offload Enabled”, ale host Bluetooth nie wydał co najmniej raz polecenia „WriteSniffOffloadParameters” specyficznego dla dostawcy dla bieżącej listy ACL.

Stan rozpoczęcia kontroli

Lista ACL jest uznawana za stan „Control-Started”, gdy kontroler Bluetooth jest w stanie „Sniff Offload Enabled”, a host Bluetooth co najmniej raz wydał dla bieżącej listy ACL polecenie specyficzne dla dostawcy „WriteSniffOffloadParameters”.

WriteSniffOffloadEnable

OCF: 0x310

Parametr polecenia Rozmiar Cel
Enable_Sniff_Offload 1 oktet 0x00 : Wyłącz
0x01 : Włącz
Subrating_Max_Latency 2 oktety Parametr Maksymalne opóźnienie służy do obliczania maksymalnej podprędkości wąchania, jakiej może używać urządzenie zdalne. Domyślnie: T*sniff* Latency = N × 0,625 ms (1 gniazdo pasma podstawowego) Zakres: 0x0002–0xFFFE Zakres czasu: 1,25 ms–40,9 s
Subrating_Min_Remote_Timeout 2 oktety Minimalny czas oczekiwania w trybie nasłuchiwania (T*sniff_mode_timeout*), którego może używać urządzenie zdalne. Domyślnie: 0x0000 Czas oczekiwania = N × 0,625 ms (1 gniazdo pasma podstawowego) Zakres: od 0x0000 do 0xFFFE Czas Zakres: od 0 s do 40,9 s
Subrating_Min_Local_Timeout 2 oktety Minimalny limit czasu trybu nasłuchiwania (T*sniff_mode_timeout*), którego może używać urządzenie lokalne. Wartość domyślna: 0x0000 Timeout = N × 0,625 ms (1 gniazdo pasma podstawowego) Zakres: 0x0000–0xFFFE Czas Zakres: 0–40,9 s
Suppress_Mode_Change_Event 1 oktet 0x00 : kontroler Bluetooth powinien zgłaszać zdarzenie HCI Mode_Change do hosta zgodnie z konfiguracją ustawioną w poleceniu HCI_Set_Event_Mask.
0x01 : kontroler Bluetooth nie powinien zgłaszać zdarzenia HCI Mode_Change do hosta.
Suppress_Sniff_Subrating_Event 1 oktet 0x00 : kontroler Bluetooth powinien zgłaszać hostowi zdarzenie HCI Sniff_Subrating zgodnie z konfiguracją ustawioną w poleceniu HCI_Set_Event_Mask.
0x01 : kontroler Bluetooth nie powinien zgłaszać hostowi zdarzenia HCI Sniff_Subrating.

WriteSniffOffloadParameters

OCF: 0x311

Parametr polecenia Rozmiar Cel
Connection_Handle 2 oktety 16-bitowy uchwyt połączenia ACL BR/EDR. Zakres: 0x0000–0x0EFF
Sniff_Max_Interval 2 oktety – Zakres zdefiniowany przez Bluetooth SIG, zwykle używany do przejścia do trybu Sniff. Zakres: 0x0002–0xFFFE; tylko wartości parzyste są prawidłowe. Zakres obowiązkowy: 0x0006–0x0540. Czas = N × 0,625 ms. Zakres czasu: 1,25 ms–40,9 s. Przypadki specjalne : 0x0000 – używane do wyboru trybu „Push-Active” Sniff-Offload. 0x0001 : służy do wybierania trybu „Prefer-Active” Sniff-Offload.
Sniff_Min_Interval 2 oktety Zakres: 0x0002–0xFFFE; tylko wartości parzyste są prawidłowe.Zakres obowiązkowy: 0x0006–0x0540 Czas = N × 0,625 ms.Zakres czasu: 1,25 ms–40,9 s.
Sniff_Attempts 2 oktety Liczba przedziałów odbioru pasma podstawowego dla próby wykrywania. Długość = N × 1,25 ms Zakres: 0x0001–0x7FFF Zakres czasu: 1,25 ms–40,9 s Obowiązkowy zakres dla kontrolera: 1 – T*sniff* ÷ 2
Sniff_Timeout 2 oktety Liczba przedziałów odbioru pasma podstawowego dla limitu czasu wyrywania. Długość = N × 1,25 ms Zakres: 0x0000–0x7FFF Zakres czasu: 0 ms–40,9 s Obowiązkowy zakres dla kontrolera: 0–0x0028
Link_Inactivity_Timeout 2 oktety Wartość limitu czasu w milisekundach. Licznik Link_Inactivity jest uruchamiany lub resetowany przy każdej transakcji HCI-ACL. Po upływie tego czasu kontroler rozpocznie przechodzenie do trybu Sniff.
Subrating_Max_Latency 2 oktety Parametr Maksymalne opóźnienie służy do obliczania maksymalnej podprędkości wąchania, jakiej może używać urządzenie zdalne. Domyślnie: T*sniff* Latency = N × 0,625 ms (1 gniazdo pasma podstawowego) Zakres: 0x0002–0xFFFE Zakres czasu: 1,25 ms–40,9 s
Subrating_Min_Remote_Timeout 2 oktety Minimalny czas oczekiwania w trybie nasłuchiwania (T*sniff_mode_timeout*), którego może używać urządzenie zdalne. Domyślnie: 0x0000 Czas oczekiwania = N × 0,625 ms (1 gniazdo pasma podstawowego) Zakres: od 0x0000 do 0xFFFE Czas Zakres: od 0 s do 40,9 s
Subrating_Min_Local_Timeout 2 oktety Minimalny limit czasu trybu nasłuchiwania (T*sniff_mode_timeout*), którego może używać urządzenie lokalne. Wartość domyślna: 0x0000 Timeout = N × 0,625 ms (1 gniazdo pasma podstawowego) Zakres: 0x0000–0xFFFE Czas Zakres: 0–40,9 s
Allow_Exit_Sniff_On_Rx 1 oktet Flaga kontrolująca wyjście z trybu nasłuchiwania w przypadku transakcji HCI-ACL w kierunku odbioru. 0x00 : nie kończ nasłuchiwania po odebraniu pakietu. 0x01 : Exit Sniff on Rx Receive-direction HCI-ACL jest zdefiniowany jako transmisja pakietu ACL z kontrolera do hosta przez HCI.
Allow_Exit_Sniff_On_Tx 1 oktet Flaga kontrolująca wyjście z trybu nasłuchiwania w przypadku transakcji HCI-ACL w kierunku transmisji. 0x00 : nie zamykaj funkcji sniff podczas transmisji. 0x01 : Exit Sniff on Tx Transmit-direction HCI-ACL is defined as ACL packet transmission from host to controller over HCI.