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:
|
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_storage w LE_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_c i T_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 - immediate0x01 - on_found0x02 - 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, batch i onFound. 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:
|
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:
|
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:
|
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_LengthIgnoruj, gdy APCF_Action to 0x02 (Wyczyść) |
APCF_AD_DATA_MASK |
Rozmiar zmienny |
Rozmiar zmienny, zależny od APCF_AD_DATA_LengthIgnoruj, 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:
Wartość bitu
|
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.
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. Kodek AAC:
Informacje o kodeku AAC znajdziesz w specyfikacji A2DP v1.3 Kodek LDAC:
Bajty 0–3: identyfikator dostawcy
Oktawy 4–5: identyfikator kodeka
Bajt 6: indeks szybkości transmisji:
Bajt 7: tryb kanału LDAC 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
Usunięcie spowoduje wyczyszczenie raportowania określonych zdarzeń związanych z jakością. |
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. |
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 |
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 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ą obecne0x01: 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 oktetRSSI[0]: 1 oktetTimestamp[0]: 2 oktetyAdv packet_len[0]: 1 oktetAdv_packet[0]: Adv_packet_len oktetówScan_data_resp_len[0]: 1 oktetScan_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.
Kod zdarzenia podrzędnego = 0x58 [Quality_Report_Id = 0x01 ~ 0x04, Link Quality related event]
| 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. |
SNR |
1 oktet |
[w dB]
Wartość stosunku sygnału do szumu (SNR) dla określonego parametru Connection_Handle. |
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. |
Buffer_Underflow_Bytes |
4 oktety |
[w bajtach]
Liczba niedoborów bufora od ostatniego zdarzenia. |
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_Wake i HOST_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, LE i CIS (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. |
Kod podzdarzenia = 0x58 [Quality_Report_Id = 0x11 – 0x13, zdarzenie związane z zrzutem dziennika]
| 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. |
Podzdarzenie ISO Link Feedback
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 dostawcyData_Path_ID0x19 w HCI_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ą symboluAnchor_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ą parametruIn_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_IntervaliSNdiff <= 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 doMax_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_Cmd0x02 - Set_Advt_Data_Multi_Sub_Cmd0x03 - Set_Scan_Resp_Data_Multi_Sub_Cmd0x04 - Set_Random_Addr_Multi_Sub_Cmd0x05 - 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_Command0x02 - Set_Advt_Data_Multi_Command0x03 - Set_Scan_Resp_Data_Multi_Command0x04 - Set_Random_Addr_Multi_Command0x05 - 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. |