Interfejs kontrolera hosta (HCI) służy do interakcji z kontrolerem Bluetooth.
Ten dokument zawiera listę wymagań dotyczących Bluetootha (BT) i Bluetooth Low Energy (BLE) HCI. Zależy nam, aby dostawcy stosów hostów i kontrolerów BT spełniali te wymagania platformy, aby mogli korzystać z opisanego poniżej zestawu.
W tym dokumencie specyfikacja Bluetooth Core 5.2 jest nazywana „specyfikacją”. Specyfikacja Bluetooth Core 5.2 jest dostępna na stronie Bluetooth SIG wraz z innymi obowiązującymi dokumentami.
Ogólne omówienie projektu
Funkcje i konfiguracja układu
Jako otwarta platforma Android ma szereg wersji oprogramowania, dostawców OEM, dostawców oraz możliwości platform i układów scalonych.
Aby zarządzać zróżnicowanym krajobrazem i zarządzać migracjami, w tym dokumencie opisano filozofię projektowania, w ramach której kontrolery BT ujawniają swoje możliwości (oprócz standardowej specyfikacji Bluetooth Core 5.2). Stos BT hosta może następnie użyć tych możliwości do określenia, które funkcje należy włączyć.
Wspieranie otwartych standardów
Jednym z celów Androida jest obsługa otwartych standardów po ratyfikacji w specyfikacji Bluetooth. Jeśli w przyszłej specyfikacji Bluetooth funkcja opisana poniżej stanie się dostępna w standardowych metodach HCI, będziemy dążyć do ustawienia tego podejścia jako domyślnego.
Możliwości specyficzne dla dostawców
Polecenie dostawcy: LE_Get_Vendor_Capabilities_Command
Pole polecenia OpCode (OCF): 0x153
Parametr polecenia | Rozmiar | Cel |
---|---|---|
Nie dotyczy | Pusta lista parametrów polecenia |
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
max_advt_instances (Wycofano) |
1 oktet |
Liczba obsługiwanych instancji reklam. Zarezerwowane po wersji 0.98. Ten parametr został wycofany w specyfikacji funkcji Google w wersji 0.98 lub nowszej i zastąpiony przez funkcję LE Extended Advertising dostępną w specyfikacji BT w wersji 5.0 lub nowszej. |
offloaded_resolution_of_private-address (Wycofano) |
1 oktet |
Możliwości układu BT w RPA. Jeśli obsługuje go element, host musi go włączyć. 0 = Brak możliwości 1 = Obsługuje Zarezerwowany po wersji 0.98. Ten parametr został wycofany w specyfikacji funkcji Google w wersji 0.98 lub nowszej i zastąpiona funkcją prywatności dostępną w specyfikacji BT w wersji 4.2 lub nowszej. |
total_scan_results_storage |
2 oktety | Miejsce na wyniki skanowania (w bajtach) |
max_irk_list_sz |
1 oktet | Liczba wpisów IRK obsługiwanych przez oprogramowanie układowe |
filtering_support |
1 oktet |
Obsługa filtrowania w kontrolerze 0 = Nieobsługiwane 1 = Obsługiwane |
max_filter |
1 oktet | Liczba obsługiwanych filtrów |
activity_energy_info_support |
1 oktet |
Obsługuje raportowanie informacji o aktywności i energii 0 = niemożliwe 1 = zdolne |
version_supported |
2 oktety |
Określa wersję obsługiwanej specyfikacji funkcji Google byte[0] = liczba główna byte[1] = liczba mniejsza v1.04 byte[0] = 0x01 bajt[1] = 0x04 |
total_num_of_advt_tracked |
2 oktety |
Łączna liczba reklamodawców śledzonych do OnLost /OnFound celów
|
extended_scan_support |
1 oktet | Obsługuje rozszerzone okno i interwał skanowania |
debug_logging_supported |
1 oktet | Obsługuje rejestrowanie z kontrolera danych na potrzeby debugowania plików binarnych |
LE_address_generation_offloading_support (Wycofano) |
1 oktet |
0 = Nieobsługiwane 1 = Obsługiwane Zarezerwowane po wersji 0.98. Ten parametr został wycofany w specyfikacji funkcji Google w wersji 0.98 lub nowszej i zastąpiona funkcją prywatności dostępną w specyfikacji BT w wersji 4.2 lub nowszej. |
A2DP_source_offload_capability_mask |
4 oktety |
Obsługiwane maski bitowe dla typów kodeków Bit 0 – kontroler SBC Bit 1 – AAC Bit 2 – APTX Bit 3 – APTX HD Bit 4 – LDAC Bit 5–31 jest zarezerwowany |
bluetooth_quality_report_support |
1 oktet |
Obsługuje raportowanie zdarzeń związanych z jakością Bluetootha 0 = brak możliwości 1 = obsługuje |
dynamic_audio_buffer_support |
4 oktety |
Obsługuje dynamiczny bufor audio w kontrolerze Bluetooth Obsługiwane maski bitowe dla kodeków Bit 0 – kontroler SBC Bit 1 – AAC Bit 2 – APTX Bit 3 – APTX HD Bit 4 – LDAC Bit 5–31 jest zarezerwowany |
a2dp_offload_v2_support |
1 oktet |
Obsługuje polecenia A2dp Offload v2 na kontrolerze Bluetooth (patrz: Rozpoczynanie odciążania A2DP i Stop A2DP Offload) 0 = Nieobsługiwane 1 = Obsługiwane |
Grupowanie wyników skanowania
Celem projektu jest ulepszenie sposobu, w jaki powiadomienia o zdarzeniach skanowania Bluetooth LE Scan Response są dostarczane do hosta w celu zaoszczędzenia energii.
Dzięki zmniejszeniu częstotliwości, z jaką kontroler powiadamia procesor aplikacji hosta o konieczności skanowania wyników, procesor aplikacji hosta może dłużej pozostawać w stanie bezczynności lub uśpienia. Zmniejsza to zużycie energii przez hosta. Zwracany parametr total_scan_results_storage
o wartości LE_Get_Vendor_Capabilities_Command
wskazuje możliwość przechowywania wyników skanowania przez element.
Ta funkcja koncentruje się na zarządzaniu miejscem przechowywania wyników LE Scan i ich konfigurowaniu w kontrolerze Bluetooth. Miejsce na dane służy do tymczasowego grupowania danych dotyczących reklam oraz skanowania danych i metadanych otrzymywanych przez kontroler do późniejszego dostarczenia na host.
Oprogramowanie układowe obsługuje 2 rodzaje grupowania, które można włączać jednocześnie:
- Skrócone. Zawiera te elementy informacyjne: {MAC, TX Power, RSSI, Timestamp}
- Pełny. Zawiera te elementy informacyjne: {MAC, TX Power, RSSI, Timestamp, Adv Data, Scan Response}
LE_Batch_Scan_Command (Polecenie skanowania wsadowego)
OCF: 0x156
Parametr polecenia | Rozmiar | Cel |
---|---|---|
Batch_Scan_opcode |
1 oktet |
0x1 – Włącz funkcję specyficzną dla klienta 0x2 – ustaw parametry pamięci skanowania zbiorczego 0x3 – ustaw parametry skanowania zbiorczego 0x4 – odczyt parametrów wyników skanowania zbiorczego |
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia. Włączenie funkcji danego klienta nie spowoduje rozpoczęcia skanowania.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
Batch_Scan_opcode |
1 oktet |
0x1 – Włącz funkcję specyficzną dla klienta 0x2 – ustaw parametry pamięci skanowania zbiorczego 0x3 – ustaw parametry skanowania zbiorczego 0x4 – odczyt parametrów wyników skanowania zbiorczego |
LE_Batch_Scan_Command: włącz funkcję specyficzną dla klienta
Sub OCF: 0x01
Parametr polecenia podrzędnego | Rozmiar | Cel |
---|---|---|
enable_customer_specific_feature_set |
1 oktet |
0x01 – włącz funkcję skanowania zbiorczego 0x00 – wyłącz funkcję skanowania zbiorczego |
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
Batch_Scan_opcode |
1 oktet |
0x1 – Włącz funkcję specyficzną dla klienta 0x2 – ustaw parametry pamięci skanowania zbiorczego 0x3 – ustaw parametry skanowania zbiorczego 0x4 – odczyt parametrów wyników skanowania zbiorczego |
LE_Batch_Scan_Command: ustaw podpolecenie dla parametru skanowania zbiorczego
Sub OCF: 0x02
Parametr polecenia podrzędnego | Rozmiar | Cel |
---|---|---|
Batch_Scan_Full_Max |
1 oktet |
Maksymalne miejsce na dane (w %) przydzielone do pełnego stylu [Zakres: 0–100] |
Batch_Scan_Truncated_Max |
1 oktet |
Maksymalna ilość miejsca na dane (w %) przydzielona do stylu obciętego [Zakres: 0–100] |
Batch_Scan_Notify_Threshold |
1 oktet |
Poziom powiadomień (w procentach) dla pojedynczej puli pamięci masowej [Zakres: 0–100] Ustawienie na 0 wyłącza powiadomienia. Wygenerowane jest zdarzenie HCI specyficzne dla dostawcy (podzdarzenie naruszenia progu pamięci masowej) |
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
Batch_scan_opcode |
1 oktet | 0x02 [Ustaw parametry skanowania zbiorczego] |
LE_Batch_Scan_Command: ustaw podpolecenie dla parametru skanowania zbiorczego
Sub OCF: 0x03
Parametr polecenia podrzędnego | Rozmiar | Cel |
---|---|---|
Batch_Scan_Mode |
1 oktet |
0x00 – skanowanie wsadowe jest wyłączone 0x01 – włączony jest tryb skrócony 0x02 – włączony jest tryb pełny 0x03 – tryb pełnego i skróconego jest włączony |
Duty_cycle_scan_window |
4 oktety | Czas skanowania zbiorczego (liczba przedziałów) |
Duty_cyle_scan_interval |
4 oktety | Okres skanowania zbiorczego (liczba przedziałów) |
own_address_type |
1 oktet |
0x00 – publiczny adres urządzenia 0x01 – losowy adres urządzenia |
Batch_scan_Discard_Rule |
1 oktet |
0 – Odrzuć najstarszą reklamę 1 – Odrzuć reklamę o najgorszym kanale RSSI. |
To polecenie podrzędne rozpocznie skanowanie wsadowe, jeśli jest włączone. W przypadku skanowania skróconego wyniki są przechowywane w formie skróconej, w której unikalny klucz obciętego stylu to {BD_ADDR,
scan_interval}. Oznacza to, że na każdy interwał skanowania rejestrowany będzie tylko 1 element BD_ADDR will
. Rekord do zachowania w trybie skróconym: {BD_ADDR
, Tx Power, RSSI, Timestamp}
Gdy tryb całego ruchu jest włączony, używane jest aktywne skanowanie, a odpowiedzi skanowania będą rejestrowane. Unikalny klucz pełnego stylu = {MAC, Ad package}, niezależnie od odstępu skanowania. Rekord do zachowania trybu pełnego to {BD_ADDR
, Tx Power, RSSI, Timestamp, Ad package, Scan Response}. W pełnym stylu ten sam pakiet AD, który występuje wielokrotnie w różnych interwałach skanowania, jest rejestrowany tylko raz. Jednak w trybie skróconym widoczna jest widoczność BA_ADDR
w różnych interwałach skanowania (raz na interwał skanowania). RSSI to średnia wartość wszystkich duplikatów unikalnej reklamy w danym przedziale skanowania.
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
Batch_scan_opcode |
1 oktet | 0x03 [Ustaw parametry skanowania zbiorczego] |
LE_Batch_Scan_Command: polecenie podrzędne odczytu wyników skanowania zbiorczego
Sub OCF: 0x04
Parametr polecenia podrzędnego | Rozmiar | Cel |
---|---|---|
Batch_Scan_Data_read |
1 oktet |
0x01 – dane w trybie skróconym 0x02 – dane w trybie całego trybu |
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia. Gdy host wykona to polecenie, wszystkie wyniki na kontrolerze mogą nie zmieścić się w jednym zdarzeniu Command complete. Host będzie powtarzał wykonywanie tego polecenia do momentu, gdy odpowiednie wyniki zdarzenia Command complete będą miały wartość 0, co oznacza, że kontroler nie ma więcej rekordów do skomunikowania się z hostem. Każde zdarzenie Command complete może zawierać wiele rekordów tylko jednego typu danych (pełnego lub obciętego).
Odniesienia do czasu kontrolera i hosta nie są synchronizowane. Jednostka sygnatury czasowej to 50 ms. Wartość sygnatury czasowej zależy od tego, kiedy host podał Read_Batch_Scan_Results_Sub_cmd
. Jeśli godzina dostarczenia polecenia w oprogramowaniu układowym to T_c
, oznacza to, że sygnatura czasowa w oprogramowaniu to T_fw
. Czas raportowania będzie: (T_c
–T_fw
). T_c
i T_fw
znajdują się w domenie czasu oprogramowania układowego. Dzięki temu host może obliczyć, ile czasu minęło od wystąpienia zdarzenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
Batch_scan_opcode |
1 oktet | 0x03 [Ustaw parametry skanowania zbiorczego] |
Batch_Scan_data_read |
1 oktet | Określa format (skrócony lub pełny) |
num_of_records |
1 oktet | Liczba rekordów w polu Batch_Scan_data_read |
format_of_data |
Zmienna |
Truncated Mode: Address[0]: 6 octet [oct_1] [pkt1_oktet] Address_Type[0]: 1 oktet Tx_Pwr[0]: 1 oktet RSSI[0] : 1 oktet Timestamp[0]: 2 oktety [wielu rekordów ( num_of_records ) w powyższym formacie:num_of_records Scan_data_resp
|
Filtr treści pakietów reklamowych
Służy do włączania, wyłączania lub konfigurowania filtra treści pakietów reklamowych (APCF) w kontrolerze. APCF filtruje w kontrolerze raporty dotyczące reklam, ale nie filtruje okresowych reklam.
Polecenie LE_APCF
OCF: 0x157
Parametr polecenia | Rozmiar | Cel |
---|---|---|
APCF_opcode |
1 oktet |
0x00 – APCF Włączona 0x01
0x01 – 0x01 – 0x01 – 0x01 – wartość APCF Ustaw parametry filtrowania 0x02 – Adres nadawcy APCF APCF 0x03 – APCF Service UUID 0x04 – APCF Service APCF UUID 0x05 – APCF Local Data Service 0x0 |
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan zwrotu |
APCF_opcode |
1 oktet |
0x00 – APCF Włączona 0x01
0x01 – 0x01 – 0x01 – 0x01 – wartość APCF Ustaw parametry filtrowania 0x02 – Adres nadawcy APCF APCF 0x03 – APCF Service UUID 0x04 – APCF Service APCF UUID 0x05 – APCF Local Data Service 0x0 |
LE_APCF_Command: Włącz_sub_cmd
Sub OCF: 0x00
Parametr polecenia podrzędnego | Rozmiar | Cel |
---|---|---|
APCF_enable |
1 oktet |
0x01 – Włącz funkcję APCF 0x00 – Wyłącz funkcję APCF |
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
APCF_opcode |
1 oktet | 0x0 – włączony APCF |
APCF_Enable |
1 oktet | Włączanie/wyłączanie jest ustawiane przez: APCF_enable |
LE_APCF_Command: set_filtering_parameters_sub_cmd
To polecenie podrzędne służy do dodawania lub usuwania specyfikacji filtra oraz czyszczenia listy filtrów na potrzeby filtrowania lokalnego.
Sub OCF: 0x01
Parametr polecenia podrzędnego | Rozmiar | Cel |
---|---|---|
APCF_Action |
1 oktet |
0x00 – Dodaj 0x01 – Usuń 0x02 – Wyczyść Usuń spowoduje usunięcie określonego filtra wraz z powiązanymi wpisami cech w innych tabelach. Wyczyszczenie spowoduje wyczyszczenie wszystkich filtrów i powiązanych wpisów z innych tabel. |
APCF_Filter_Index |
1 oktet | Indeks filtra (0, max_filter-1 ) |
APCF_Feature_Selection |
2 oktety |
Maski bitowe dla wybranych funkcji: Bit 0: ustaw, aby włączyć filtr adresu transmisji Bit 1: ustawiono, aby włączyć filtr zmiany danych usługi Bit 2: ustaw, aby włączyć sprawdzanie UUID usługi Bit 3: Ustaw, aby włączyć sprawdzanie UUID usługi pozyskiwania usług. Bit 4: Ustaw, aby włączyć sprawdzanie danych lokalnego identyfikatora usługi: Bit 5: Ustawiono, aby włączyć Sprawdzanie danych usługi AD: Bit Service Data: Ustawiono bit danych usługi: Bit 6. |
APCF_List_Logic_Type |
2 oktety |
Operacja logiczna dla każdego wyboru cechy (pozycji na bitwę) określonego w funkcji APCF_Feature_Selection .
Działa tylko wtedy, gdy funkcja jest włączona. Wartość pozycji bitowej: 0: LUB 1: I Jeśli wybierzesz logikę „AND”, pakiet ADV przejdzie filtr tylko wtedy, gdy zawiera WSZYSTKIE pozycje na liście. Jeśli wybrana jest logika „LUB”, pakiet ADV będzie przechodził przez filtr, jeśli zawiera dowolną pozycję na liście. |
APCF_Filter_Logic_Type |
1 oktet |
0x00: LUB 0x01: I Uwaga: w przypadku pierwszych 3 pól APCF_Feature_Selection typem logicznym jest „Nie dotyczy”. Zawsze jest przy tym operator logiczny „ORAZ”. Mają zastosowanie tylko do 4 pól (bit 3 – bit 6) APCF_Feature_Selection .
|
rssi_high_thresh |
1 oktet |
[in dBm] Reklamodawca jest uważany za widoczny tylko wtedy, gdy sygnał jest wyższy niż górny próg RSSI. W przeciwnym razie oprogramowanie układowe musi zachowywać się tak, jakby nigdy go nie zobaczyło. |
delivery_mode |
1 oktet |
0x00 – immediate 0x01 – on_found 0x02 – batched
|
onfound_timeout |
2 oktety |
Obowiązuje tylko wtedy, gdy delivery_mode ma wartość on_found .[w milisekundach] Czas na odczekanie chwili, aż oprogramowanie pobierze się i zbierze dodatkowe reklamy przed przesłaniem raportu. |
onfound_timeout_cnt |
1 oktet |
Obowiązuje tylko wtedy, gdy delivery_mode ma wartość on_found .[count] Jeśli reklama w aplikacji onFound pozostanie w oprogramowaniu przez onfound_timeout , wyświetli się kilka reklam i zostanie sprawdzona ich liczba. Jeśli liczba przekroczy onfound_timeout_cnt , od razu po tym zgłoszeniu jest raportowana wartość OnFound .
|
rssi_low_thresh |
1 oktet |
Obowiązuje tylko wtedy, gdy delivery_mode ma wartość on_found .[in dBm] Pakiet reklamodawcy jest uważany za niewidoczny, jeśli wartość RSSI odebranego pakietu nie przekracza dolnego progu RSSI. |
onlost_timeout |
2 oktety |
Obowiązuje tylko wtedy, gdy delivery_mode ma wartość on_found .[w milisekundach] Jeśli reklama nie pojawia się obok siebie w ciągu lost_timeout okresu, po tym, jak została znaleziona, zostanie natychmiast zgłoszona
jako utrata.
|
num_of_tracking_entries |
2 oktety |
Obowiązuje tylko wtedy, gdy delivery_mode ma wartość on_found .[count] Łączna liczba reklamodawców do śledzenia na filtr. |
Wartości RSSI muszą korzystać z dopełnienia 2 do reprezentowania wartości ujemnych.
Host powinien skonfigurować wiele filtrów z wartością APCF_Application_Address_type
ustawioną na 0x02 (dla wszystkich adresów nadawcy) pozwalających zarządzać różnymi kombinacjami filtrów.
Filtrowanie, grupowanie i raportowanie to powiązane ze sobą pojęcia. Wszystkie reklamy i powiązane odpowiedzi na skanowanie muszą przejść przez wszystkie filtry, jeden po drugim. Otrzymane w ten sposób działania (delivery_mode
) są ściśle powiązane z filtrowaniem. Dostępne tryby dostarczania: report_immediately
, batch
i onFound
. Wartość OnLost
jest powiązana z OnFound
w tym sensie, że w razie utraty pojawi się po OnFound
.
Proces przetwarzania danych przedstawia koncepcyjny model:
Po otrzymaniu ramki reklamy (lub odpowiedzi skanowania) jest ona stosowana do wszystkich filtrów w kolejności. Reklama może spowodować natychmiastowe raportowanie na podstawie 1 filtra i grupowania tego samego parametru w wyniku innego działania filtra.
Progi poziomu RSSI (wysoki i niski) umożliwiają kontrolowanie, kiedy klatka ma być widoczna podczas przetwarzania filtra, nawet jeśli kontroler odbiera prawidłowy pakiet. Gdy tryb dostarczania jest ustawiony na natychmiastowy lub wsadowy, dane RSSI ramki są brane pod uwagę na potrzeby dalszego przetwarzania przez kontroler. Różne aplikacje wymagają różnych metod raportowania i grupowania. Dzięki temu wiele aplikacji może równocześnie raportować lub grupować wyniki z oprogramowania układowego. Przykładem może być sytuacja, w której skanowanie wsadowe jest aktywne w jednej aplikacji, a potem przez inną aplikację wykonywane jest zwykłe skanowanie LE. Przed przeprowadzeniem skanowania zbiorczego platforma lub aplikacja ustawia odpowiednie filtry. Później, gdy druga aplikacja uruchomi regularne skanowanie, poprzednie grupowanie będzie kontynuowane. Jednak ze względu na standardowe skanowanie przypomina to koncepcyjną dodanie filtra null (wraz ze wszystkimi istniejącymi filtrami) wraz z poleceniem skanowania LE. Parametry polecenia skanowania LE mają pierwszeństwo, gdy są aktywne. Gdy zwykłe skanowanie LE jest wyłączone, kontroler wróci do poprzedniego skanowania wsadowego, jeśli istniało.
Tryb wyświetlania OnFound
jest oparty na skonfigurowanych filtrach. Kombinacja, która wyzwala działanie filtra, jest uważane za encję do śledzenia pod kątem onLost
. Odpowiednie zdarzenie to podzdarzenie śledzenia LE Advt.
Przejście OnFound/OnLost
filtra (jeśli jest włączone) będzie wyglądać tak:
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
APCF_opcode |
1 oktet | 0x01 – ustaw parametry filtrowania APCF |
APCF_Action |
1 oktet | Powtórz polecenie APCF_Action z polecenia wstecz |
APCF_AvailableSpaces |
1 oktet | Liczba dostępnych wpisów w tabeli filtrów |
LE_APCF_Command: transmisja_adresu_sub_cmd
To polecenie podrzędne służy do dodawania i usuwania adresu reklamodawcy oraz czyszczenia listy adresów reklamodawców na potrzeby filtrowania wbudowanego w układ scalony.
Sub OCF: 0x02
Parametr polecenia podrzędnego | Rozmiar | Cel |
---|---|---|
APCF_Action |
1 oktet |
0x00 – Dodaj 0x01 – Usuń 0x02 – Wyczyść Usuń spowoduje usunięcie adresu nadawcy określonego w filtrze. Wyczyść spowoduje usunięcie wszystkich adresów nadawcy ujętych w podanym filtrze. |
APCF_Filter_Index |
1 oktet | Indeks filtra (0, max_filter-1 ) |
APCF_Broadcaster_Address |
6 oktet | 6-bajtowy adres urządzenia, który można dodać do listy adresów nadawcy lub z niej usunąć |
APCF_Application_Address_type |
1 oktet |
0x00: publiczny 0x01: losowe 0x02: nie dotyczy (ignoruj typ adresu) Do filtrowania raportów reklamowych według typów adresów tożsamości (0x02, 0x03). Aby otrzymywać raporty reklamowe z adresami 0x02 i 0x03, ustaw w tym polu wartość 0x02: NA (zignoruj typ adresu). |
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
APCF_opcode |
1 oktet | 0x02 – adres nadawcy APCF |
APCF_Action |
1 oktet | Powtórz polecenie APCF_Action z polecenia wstecz |
APCF_AvailableSpaces |
1 oktet | Liczba bezpłatnych wpisów, które są nadal dostępne w tabeli Adres rozgłoszeniowy |
LE_APCF_Command: service_uuid_sub_cmd
To polecenie podrzędne służy do dodawania lub usuwania identyfikatora UUID usługi oraz do czyszczenia listy UUID usługi na potrzeby filtrowania w układzie układu.
Sub OCF: 0x03
Parametr polecenia podrzędnego | Rozmiar | Cel |
---|---|---|
APCF_Action |
1 oktet |
0x00 – Dodaj 0x01 – Usuń 0x02 – Wyczyść Usuń spowoduje usunięcie podanego adresu UUID usługi w podanym filtrze. Czyszczenie spowoduje usunięcie wszystkich identyfikatorów UUID usługi w podanym filtrze. |
APCF_Filter_Index |
1 oktet | Indeks filtra (0, max_filter –1) |
APCF_UUID |
2,4,16 oktet | Identyfikator UUID usługi (16-, 32- lub 128-bitowy) służący do dodawania do listy lub usuwania jej z niej. |
APCF_UUID_MASK |
2,4,16 oktet |
Maska UUID usługi (16-, 32- lub 128-bitowa) do dodania do listy.
Powinien mieć taką samą długość jak APCF_UUID.
|
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
APCF_opcode |
1 oktet | 0x03 – UUID usługi APCF |
APCF_Action |
1 oktet | Powtórz polecenie APCF_Action z polecenia wstecz |
APCF_AvailableSpaces |
1 oktet | Liczba bezpłatnych wpisów, które są nadal dostępne w tabeli UUID usługi |
LE_APCF_Command: solicitation_uuid_sub_cmd
To polecenie podrzędne służy do dodawania lub usuwania identyfikatora UUID pozyskiwania lub czyszczenia listy UUID pozyskiwania na potrzeby filtrowania wbudowanego w układ scalony.
Sub OCF: 0x04
Parametr polecenia podrzędnego | Rozmiar | Cel |
---|---|---|
APCF_Action |
1 oktet |
0x00 – Dodaj 0x01 – Usuń 0x02 – Wyczyść Usunięcie spowoduje usunięcie adresu UUID oferty reklamy w podanym filtrze. Wyczyścić usuwa wszystkie identyfikatory UUID ofert reklamowych w określonym filtrze. |
APCF_Filter_Index |
1 oktet | Indeks filtra (0, max_filter –1) |
APCF_UUID |
2,4,16 oktet | UUID pozyskiwania (16-, 32- lub 128-bitowy), który ma zostać dodany do listy lub z niej usunięty. |
APCF_UUID_MASK |
2,4,16 oktet |
Maska UUID pozyskiwania (16-, 32- lub 128-bitowa) do dodania do listy. Powinien mieć taką samą długość jak APCF_UUID .
|
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
APCF_opcode |
1 oktet | 0x04 – UUID pozyskiwania APCF |
APCF_Action |
1 oktet | Powtórz polecenie APCF_Action z polecenia wstecz |
APCF_AvailableSpaces |
1 oktet | Liczba bezpłatnych wpisów, które są nadal dostępne w tabeli UUID pozyskiwania |
LE_APCF_Command: local_name_sub_cmd
To polecenie podrzędne służy do dodawania i usuwania lokalnego ciągu nazw lub czyszczenia listy lokalnych ciągów nazw na potrzeby filtrowania w układzie układu.
Sub OCF: 0x05
Parametr polecenia podrzędnego | Rozmiar | Cel |
---|---|---|
APCF_Action |
1 oktet |
0x00 – Dodaj 0x01 – Usuń 0x02 – Wyczyść Usuń spowoduje usunięcie określonego ciągu nazwy lokalnej w określonym filtrze. Wyczyszczenie spowoduje usunięcie wszystkich lokalnych nazw ciągów w określonym filtrze. |
APCF_Filter_Index |
1 oktet | Indeks filtra (0, max_filter –1) |
APCF_LocName_Mandata_or_SerData |
Zmienny rozmiar |
Ciąg znaków dla nazwy lokalnej. Uwagi:
|
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
APCF_opcode |
1 oktet | 0x05 – Nazwa lokalna APCF |
APCF_Action |
1 oktet | Powtórz polecenie APCF_Action z polecenia wstecz |
APCF_AvailableSpaces |
1 oktet | Liczba bezpłatnych wpisów, które są nadal dostępne w tabeli nazw lokalnych |
LE_APCF_Command: manf_data_sub_cmd
To polecenie podrzędne służy do dodawania i usuwania ciągu danych producenta oraz czyszczenia listy ciągów znaków z danymi producenta na potrzeby filtrowania w układzie układu.
Sub OCF: 0x06
Parametr polecenia podrzędnego | Rozmiar | Cel |
---|---|---|
APCF_Action |
1 oktet |
0x00 – Dodaj 0x01 – Usuń 0x02 – Wyczyść Usunięcie spowoduje usunięcie określonego ciągu danych producenta w określonym filtrze. Opcja „Wyczyść” spowoduje usunięcie wszystkich ciągów danych producenta z określonego filtra. |
APCF_Filter_Index |
1 oktet | Indeks filtra (0, max_filter –1) |
APCF_LocName_Mandata_or_SerData |
Zmienny rozmiar |
Ciąg znaków dla danych producenta. Uwagi:
|
APCF_ManData_Mask |
Zmienny rozmiar |
Maska danych producenta, która ma zostać dodana do listy. Powinien mieć taką samą długość jak APCF_LocName_or_ManData_or_SerData .
|
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
APCF_opcode |
1 oktet | 0x06 – Dane producenta APCF |
APCF_Action |
1 oktet | Powtórz polecenie APCF_Action z polecenia wstecz |
APCF_AvailableSpaces |
1 oktet | Liczba bezpłatnych pozycji, które są nadal dostępne w tabeli Dane producenta |
LE_APCF_Command: service_data_sub_cmd
To polecenie podrzędne służy do dodawania lub usuwania ciągu danych usługi albo do czyszczenia listy ciągów danych usługi na potrzeby filtrowania na układzie.
Sub OCF: 0x07
Parametr polecenia podrzędnego | Rozmiar | Cel |
---|---|---|
APCF_Action |
1 oktet |
0x00 – Dodaj 0x01 – Usuń 0x02 – Wyczyść Usunięcie spowoduje usunięcie określonego ciągu danych usługi w określonym filtrze. Czyszczenie spowoduje usunięcie wszystkich ciągów danych usługi z określonego filtra. |
APCF_Filter_Index |
1 oktet | Indeks filtra (0, max_filter –1) |
APCF_LocName_Mandata_or_SerData |
Zmienny rozmiar |
Ciąg znaków dla danych usługi. Uwagi:
|
APCF_LocName_Mandata_or_SerData_Mask |
Zmienny rozmiar |
Maska danych usługi, którą chcesz dodać do listy. Powinien mieć taką samą długość jak APCF_LocName_or_ManData_or_SerData.
|
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
APCF_opcode |
1 oktet | 0x07 – Dane usługi APCF |
APCF_Action |
1 oktet | Powtórz polecenie APCF_Action z polecenia wstecz |
APCF_AvailableSpaces |
1 oktet | Liczba bezpłatnych wpisów, które są nadal dostępne w tabeli danych usługi |
LE_APCF_Command: ad_type_sub_cmd
To polecenie podrzędne służy do dodawania lub usuwania typu usługi Active Directory lub czyszczenia listy typów usługi AD na potrzeby filtrowania wbudowanego w układ układu. Użyj read_extended_features_sub_cmd
, aby sprawdzić, czy to polecenie jest obsługiwane.
Jeśli APCF_AD_DATA_Length
ma wartość 0, przefiltruj APCF_AD_TYPE
bez porównywania danych usługi AD z maską danych usługi AD.
Jeśli długość danych w otrzymanym pakiecie ADV przekracza AD_DATA_LENGTH
, porównaj tylko pierwsze AD_DATA_LENGTH
bajty danych AD i zignoruj pozostałe.
Sub OCF: 0x09
Parametr polecenia podrzędnego | Rozmiar | Cel |
---|---|---|
APCF_Action |
1 oktet |
0x00 – Dodaj 0x01 – Usuń 0x02 – Wyczyść Usuń usuwa określony typ reklamy w określonym filtrze. Wyczyszczenie spowoduje wyczyszczenie wszystkich typów reklam w określonym filtrze. |
APCF_Filter_Index |
1 oktet | Indeks filtra (0, max_filter –1) |
APCF_AD_TYPE |
1 oktet | Typ reklamy, do której chcesz dodać pozycję lub z niej usunąć. Ignoruj, gdy APCF_Action ma wartość 0x02 (Wyczyść) |
APCF_AD_DATA_Length |
1 oktet |
0x00 – oznacza niefiltrowanie treści danych Ignoruj, gdy APCF_Action ma wartość 0x02 (Wyczyść)
|
APCF_AD_DATA |
Zmienny rozmiar |
Zmienna o zmiennym rozmiarze, na podstawie parametru APCF_AD_DATA_Length Zignoruj, gdy APCF_Action ma wartość 0 x 02 (Wyczyść) |
APCF_AD_DATA_MASK |
Zmienny rozmiar |
Zmienna o zmiennym rozmiarze na podstawie zasady APCF_AD_DATA_Length Zignoruj, gdy APCF_Action ma wartość 0 x 02 (wyczyść)Powinien mieć taką samą długość jak APCF_AD_DATA .
|
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
APCF_opcode |
1 oktet | 0x09 – typ reklamy APCF |
APCF_Action |
1 oktet | Powtórz polecenie APCF_Action z polecenia wstecz |
APCF_AvailableSpaces |
1 oktet | Liczba bezpłatnych pozycji, które są nadal dostępne w tabeli Typ reklamy |
LE_APCF_Command: read_extended_features_sub_cmd
To polecenie podrzędne służy do odczytu rozszerzonych funkcji APCF.
Sub OCF: 0xFF
Parametr polecenia podrzędnego | Rozmiar | Cel |
---|---|---|
Nie dotyczy | Pusty parametr polecenia. |
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
APCF_opcode |
1 oktet | 0xFF – APCF_Read_Extended_Features |
APCF_extended_features |
2 oktet |
Maski bitowe do obsługi rozszerzonych funkcji:
Wartość bita
|
Polecenie zawierające informacje o aktywności i energii kontrolera
Te informacje służą do analizowania przez funkcje wyższych hostów wszystkich działań wszystkich komponentów, w tym kontrolera BT i jego stanu makro, w połączeniu z tym, co dzieje się w aplikacjach i platformie. W tym celu wymagane są te informacje ze stosu BT i kontrolera:
- Stos BT: raportowanie bieżącego stanu makrooperacji kontrolera
- Oprogramowanie układowe: zbiorcze raportowanie aktywności i energii
Stany makr stosu hosta BT określone na poziomie użytkownika:
- Bezczynny: [page scan, LE advt, inquiry scan, LE scan]
- Scan: [paging/zapytanie/próba połączenia]
- Aktywne: [link do listy kontroli dostępu włączony, połączenie z SCO w toku, tryb wykrywania]
Działania, które kontroler śledzi w czasie swojego życia, to czas transmisji, czas Rx, czas bezczynności i całkowite zużycie energii. Są one usuwane po odczytaniu z hosta.
LE_Get_Controller_Activity_Energy_Info
Jest to polecenie specyficzne dla dostawcy.
OCF: 0x159
Parametr polecenia podrzędnego | Rozmiar | Cel |
---|---|---|
Nie dotyczy | Puste parametry polecenia |
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
total_tx_time_ms |
4 oktety | Łączny czas realizacji transakcji |
total_rx_time_ms |
4 oktety | Całkowity czas realizacji wyświetleń |
total_idle_time_ms |
4 oktety | Całkowity czas bezczynności (nie uśpiony, niski poziom zasilania) |
total_energy_used |
4 oktety | Łączne zużycie energii [iloczyn prądu (mA), napięcia (V) i czasu (ms)] |
Polecenie rozszerzonego zestawu parametrów skanowania LE
Za pomocą tego polecenia można włączyć większe okno skanowania i interwał skanowania w kontrolerze. Zgodnie ze specyfikacją BT Core 5.2 okno i interwał skanowania mają górną granicę wynoszącą 10,24 sekundy, co uniemożliwia aplikacji dłuższe okresy skanowania powyżej 10,24 sekundy.
Dokumentacja podstawowa: specyfikacja BT Core 5.2, strona 2493 (polecenie LE Set Scan Parameters)
OCF: 0x15A
Parametr polecenia | Rozmiar | Cel |
---|---|---|
LE_Ex_Scan_Type |
1 oktet |
0x00 – skanowanie pasywne. Nie zostaną wysłane żadne pakiety SCAN_REQ (domyślnie).0x01 – aktywne skanowanie. Mogą zostać wysłane SCAN_REQ pakiety.
|
LE_Ex_Scan_Interval |
4 oktety |
Zdefiniowany jako przedział czasu od momentu, w którym kontroler rozpoczął ostatnie skanowanie LE do rozpoczęcia kolejnego skanowania LE. Zakres: 0x0004 do 0x00FFFFFF Domyślnie: 0x0010 (10 ms) Czas = N * 0,625 ms Zakres czasu: od 2,5 do 10442,25 sekundy |
LE_Ex_Scan_Window |
4 oktety |
Czas trwania skanowania LE. Wartość LE_Scan_Window nie może być większa niż LE_Scan_Interval .
Zakres: 0x0004 do 0xFFFF Domyślnie: 0x0010 (10 ms) Czas = N * 0,625 ms Zakres czasu: od 2,5 do 40,95 sekundy |
Own_Address_Type |
1 oktet |
0x00 – publiczny adres urządzenia (domyślny) 0x01 – losowy adres urządzenia |
LE_Ex_Scan_Filter_Policy |
0x00 – zaakceptuj wszystkie pakiety reklamowe (domyślnie). Pakiety reklam kierowanych, które nie są adresowane dla tego urządzenia, będą ignorowane. 0x01 – ignoruj pakiety reklamowe z urządzeń nieznajdujących się na liście Tylko biała lista. Pakiety reklam kierowanych, które nie są adresowane dla tego urządzenia, będą ignorowane. |
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
Pobranie polecenia debugowania kontrolera
Ten element informacyjny służy do zbierania od hosta danych debugowania kontrolera w postaci binarnej, które są następnie przetwarzane i analizowane. Ułatwia to debugowanie problemów w terenie i zapewnia inżynierom zestaw narzędzi do logowania informacji na potrzeby analizy. Kontroler może dostarczać te informacje na żądanie hosta za pomocą zdarzenia (zdarzenie podrzędne Dane debugowania kontrolera) lub samodzielnie, gdy jest to wymagane przez kontroler. Przykładem użycia może być przesyłanie informacji o stanie oprogramowania układowego, danych zrzutu awarii, danych logowania itp.
OCF: 0x15B
Parametr polecenia | Rozmiar | Cel |
---|---|---|
Nie dotyczy | Pusta lista parametrów polecenia |
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
Obsługa odciążania sprzętu A2DP
Funkcja odciążania A2DP obsługuje odciążanie procesu kodowania dźwięku A2DP do procesora audio podłączonego do kontrolera BT. Zakodowany strumień danych audio jest przekazywany bezpośrednio z procesora audio do kontrolera BT bez udziału hosta BT. Host BT nadal odpowiada za konfigurację i kontrolę sesji A2DP. Dostępne są 2 wersje tych poleceń. Starsze polecenia z Sub OCF 0x01-0x02 obsługują tylko kodeki open source. Wersje z Sub-OCF 0x02-0x03 są niezależne od skonfigurowanego kodeka.
OCF: 0 x 15 dni
Rozpocznij odciążanie A2DP (starsza wersja)
Sub OCF: 0x01
Użyj tego polecenia, aby skonfigurować proces odciążania A2DP i uruchomić strumień A2DP.
Parametr polecenia | Rozmiar | Cel |
---|---|---|
Codec |
4 oktety |
Określa typ kodeka 0x01 – SBC 0x02 – AAC 0x04 – APTX 0x08 – APTX HD 0x10 – LDAC |
Max_Latency |
2 oktety | Maksymalne dozwolone opóźnienie (w ms). Wartość 0 wyłącza opróżnianie. |
SCMS-T_Enable |
2 oktety |
Oktet 0: flaga, która umożliwia dodanie nagłówka SCMS-T.
Oktet 1: wartość nagłówka SCMS-T, jeśli jest włączony. |
Sampling_Frequency |
4 oktety |
0x01–44100 Hz 0x02–48000 Hz 0x04–88200 Hz 0x08–96 000 Hz |
Bits_Per_Sample |
1 oktet |
0x01 – 16 bitów na próbkę 0 x 02 – 24 bity na próbkę 0 x 04 – 32 bity na próbkę |
Channel_Mode |
1 oktet |
0x01 – mono 0x02 – stereo |
Encoded_Audio_Bitrate |
4 oktety |
Szybkość kodowania zakodowanego dźwięku (w bitach na sekundę). 0x00000000 – szybkość transmisji dźwięku nie jest określona:  / unused. 0x00000001 - 0x00FFFFFF – kodowana szybkość transmisji dźwięku w bitach na sekundę. 0x01000000 – 0xFFFFFFFF – zarezerwowana. |
Connection_Handle |
2 oktety | Uchwyt połączenia konfigurowanego połączenia A2DP |
L2CAP_Channel_ID |
2 oktety | Identyfikator kanału L2CAP, który ma być używany na potrzeby tego połączenia A2DP |
L2CAP_MTU_Size |
2 oktety | Maksymalny rozmiar L2CAP MTU zawierający zakodowane pakiety audio |
Codec_Information |
32 oktety |
Informacje dotyczące Kodeka.
Kodek SBC:
Więcej informacji o konkretnych elementach informacji dotyczących kodeka SBC znajdziesz w opisie A2DP w wersji 1.3. Kodek AAC:
Zapoznaj się z elementami informacji związanymi z kodekiem AAC w A2DP w wersji 1.3 Kodek LDAC:
Oktet 0–3: identyfikator dostawcy
Oktet 4–5: identyfikator kodeka
Oktet 6: indeks szybkości transmisji bitów:
Oktet 7: tryb kanału LDAC Oktet 8–31: zarezerwowany Pozostałe kodeki: Oktet 0–31: zarezerwowany |
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
Sub_Opcode |
1 oktet | 0x01 – Rozpocznij odciążanie A2DP |
Rozpocznij odciążanie A2DP
Sub OCF: 0x03
Użyj tego polecenia, aby skonfigurować proces odciążania A2DP i uruchomić strumień A2DP.
Parametr polecenia | Rozmiar | Cel |
---|---|---|
Connection Handle |
2 oktety | Uchwyt aktywnego połączenia HCI |
L2CAP_Channel_ID |
2 oktety | Identyfikator kanału L2CAP otwarty na potrzeby strumieniowania A2DP |
Data_Path_Direction |
1 oktet |
0x00 – wyjście (źródło AVDTP/scalanie) 0x01 – wejście (ujście/podział AVDTP) |
Peer_MTU |
2 oktety | Maksymalny rozmiar pakietów L2CAP, negocjowanych z peerem. |
CP_Enable_SCMS_T |
1 oktet |
0x00 – wyłączenie nagłówka ochrony treści SCMS-T 0x01 – włączenie nagłówka ochrony treści SCMS-T |
CP_Header_SCMS_T |
1 oktet |
Gdy nagłówek ochrony treści SCMS-T jest włączony (CP_SCMS_T_Enable ma wartość 0x01), określa wartość nagłówka poprzedzającą treść audio (patrz sekcja 3.2.1-2 A2DP) zgodnie z definicją w sekcji 6.3.2 funkcji Bluetooth Assigned Numbers.Ignorowana, gdy ochrona treści SCMS-T nie jest włączona. |
Vendor_Specific_Parameters_Length |
1 oktet |
Długość parametrów specyficznych dla dostawcy z zakresu od 0 do 128. Jeśli nie podano żadnych dodatkowych parametrów, używana jest wartość 0. |
Vendor_Specific_Parameters |
0–128 oktetów |
Parametry specyficzne dla dostawcy dostarczane przez HAL Bluetooth Audio, CodecParameters.vendorSpecificParameters[] .
|
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
Sub_Opcode |
1 oktet | 0x03 – Rozpocznij odciążanie A2DP |
Zatrzymaj odciążanie A2DP (starsza wersja)
Sub OCF: 0x02
To polecenie służy do zatrzymywania strumienia odciążania A2DP.
Parametr polecenia | Rozmiar | Cel |
---|---|---|
Nie dotyczy | Pusta lista parametrów polecenia. |
Nie zdefiniowano parametrów dla tego polecenia.
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
Sub_Opcode |
1 oktet | 0x02 – Zatrzymaj odciążanie A2DP |
Zatrzymaj odciążanie A2DP
Sub OCF: 0x04
To polecenie służy do zatrzymywania strumienia odciążania A2DP.
Parametr polecenia | Rozmiar | Cel |
---|---|---|
Connection Handle |
2 oktety | Uchwyt aktywnego połączenia HCI |
L2CAP_Channel_ID |
2 oktety | Identyfikator kanału L2CAP otwarty na potrzeby strumieniowania A2DP |
Data_Path_Direction |
1 oktet |
0x00 – wyjście (źródło AVDTP/scalanie) 0x01 – wejście (ujście/podział AVDTP) |
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
Sub_Opcode |
1 oktet | 0x04 – Zatrzymaj odciążanie A2DP |
Polecenie raportu jakości Bluetooth
Funkcja polecenia raportu jakości BT uruchamia na kontrolerze Bluetooth mechanizm zgłaszania do hosta zdarzeń związanych z jakością Bluetootha. Możesz włączyć 4 opcje:
- Tryb monitorowania jakości: kontroler okresowo wysyła do hosta podrzędne zdarzenie BQR związane z jakością linku.
- Zbliża się LSTO: jeśli z podłączonego urządzenia BT nie są odbierane żadne pakiety przez okres dłuższy niż połowa czasu oczekiwania na połączenie z LSTO (Link Supervision TimeOut, LSTO), kontroler zgłasza do hosta zdarzenie zbliżające się do LSTO.
- Zacinanie się dźwięku w A2DP: gdy kontroler wykryje czynniki, które powodują zacinanie się dźwięku, zgłasza do hosta zdarzenie A2DP Audio Choppy.
- (e) Zacinanie się głosu SCO: gdy kontroler wykryje czynniki, które powodują zacinanie się, zgłasza (e) zdarzenie funkcji Voice Choppy gospodarzowi (e)SCO.
- Zapalenie roota: to zdarzenie jest wysyłane przez kontroler do stosu, gdy HAL lub kontroler napotka błąd krytyczny i musi on ponownie uruchomić Bluetooth.
- Śledzenie wiadomości LMP/LL: kontroler wysyła do hosta uzgadnianie połączenia wiadomości LMP/LL z urządzeniem zdalnym.
- Śledzenie harmonogramów wielu profili Bluetooth/współpracy Bluetooth: kontroler wysyła do hosta informacje o harmonogramie dotyczące obsługi wielu profili Bluetooth i współistnienia sieci bezprzewodowych w paśmie 2,4 GHz.
- Mechanizm informacji o debugowaniu kontrolera: gdy ta opcja jest włączona, kontroler może samodzielnie przekazywać do hosta informacje z logów debugowania za pomocą zdarzenia podrzędnego z informacjami o debugowaniu kontrolera.
- LE Audio Choppy: gdy kontroler wykryje czynniki, które powodują zacinanie się, zgłasza zdarzenie LE Audio Choppy do hosta.
-
Tryb zaawansowanych statystyk dotyczących częstotliwości radiowej: kontroler przekazuje do hosta informacje o swoich statystykach dotyczących częstotliwości radiowej w oparciu o 2 przypadki użycia:
- Raporty okresowe
- Aktywatory zdarzeń (rozpoczęcie/zatrzymanie transmisji i reguła związana ze zdarzeniem związanym z jakością linku).
- BQR_Report_Action of Bluetooth Quality Report (Raport o jakości Bluetooth): host może użyć tego polecenia HCI, aby pobrać jednorazowe zapytanie dotyczące trybu monitorowania jakości, trybu monitorowania energii lub trybu zaawansowanych statystyk częstotliwości radiowej.
OCF: 0x15E
Parametr polecenia | Rozmiar | Cel |
---|---|---|
BQR_Report_Action |
1 oktet |
Działanie polegające na dodaniu lub usunięciu raportowania zdarzeń dotyczących jakości ustawionych w parametrze BQR_Quality_Event_Mask albo wyczyścić wszystkie dane.
0x00 – Dodaj
Usunięcie spowoduje usunięcie konkretnych zdarzeń związanych z jakością. |
BQR_Quality_Event_Mask |
4 oktety |
Maski bitowe na potrzeby raportowania wybranych zdarzeń związanych z jakością.
Bit 0: włącz tryb monitorowania jakości. |
BQR_Minimum_Report_Interval |
2 oktety |
Określ minimalny przedział czasu raportowania zdarzeń związanych z jakością w przypadku wybranych zdarzeń jakości. Oprogramowanie kontrolera nie powinno zgłaszać następnego zdarzenia w zdefiniowanym przedziale czasu. Ustawienie interwału powinno być odpowiednie i dedykowane dla dodawanych zdarzeń związanych z jakością.
Jednostka: ms |
BQR_Vendor_Specific_Quality_Event_Mask |
4 oktety |
Maski bitowe na potrzeby raportowania wybranych zdarzeń jakości specyficznych dla dostawcy. Ten parametr jest prawidłowy tylko wtedy, gdy ustawiony jest bit 15 BQR_Quality_Event_Mask .
Bit 0 ~ 31: zarezerwowane. |
BQR_Vendor_Specific_Trace_Mask |
4 oktety |
Maski bitowe na potrzeby raportowania śledzenia wybranego dostawcy. Ten parametr jest prawidłowy tylko wtedy, gdy ustawiony jest bit 31 BQR_Quality_Event_Mask .
Bit 0 ~ 31: zarezerwowane. |
Report_interval_multiple |
4 oktety |
Mnożnik dla pola BQR_Minimum_Report_Interval . Gdy ta wartość jest większa niż 1, interwał raportu BQR ma format Interwał raportu BQR = BQR_Minimum_Report_Interval x Report_interval_multiple. Oprogramowanie kontrolera nie może zgłaszać następnego zdarzenia w zdefiniowanym przedziale czasu. Ustawienie interwału jest przeznaczone konkretnie dla zdarzeń dodatkowej jakości.
Jednostka: ms BQR_Report_Interval przekracza możliwości kontrolera, po wykonaniu polecenia musi on zwrócić maksymalny czas BQR_Report_Interval .
|
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
Current_Quality_Event_Mask |
4 oktety |
Wskazuje bieżące ustawienie maski bitów. Bit 0: włączony jest tryb monitorowania jakości. bit 1. Włączono raportowanie zdarzeń LSTO. Bit 2: raportowanie zdarzeń A2DP Przerywanie dźwięku jest włączone. Bit 3: (e) Raportowanie zdarzeń Voice Choppy SCO jest włączone. Bit 4. Raportowanie zdarzeń zapalenia korzeni jest włączone. Bit 5: włączony jest tryb monitorowania energii. Bit 6. Raportowanie przerw w dźwiękach LE jest włączone. Bit 7. Zdarzenie dotyczące nieudanego połączenia. Bit 8: ustawiony, aby włączyć aktywator zdarzenia w trybie Zaawansowanych statystyk RF. Bit 9: ustawiony, aby okresowo włączać Zaawansowane statystyki RF. Bit 10 ~ 14: zarezerwowano. bit 15. Raportowanie zdarzeń związanych z jakością zależne od dostawcy jest włączone. Bit 16: śledzenie wiadomości LMP/LL jest włączone. Bit 17. Śledzenie połączeń wielu linków/Coex w harmonogramie Bluetooth jest włączone. Bit 18: mechanizm informacji debugowania kontrolera jest włączony. Bit 19–30: zarezerwowane. Bit 31: włączono śledzenie dostawcy. |
Current_Vendor_Specific_Quality_Event_Mask |
4 oktety | Wskazuje bieżące ustawienie maski bitów. |
Current_Vendor_Specific_Trace_Mask |
4 oktety | Wskazuje bieżące ustawienie maski bitów. |
BQR_Report_interval |
4 oktety | Wskazuje bieżące ustawienie maski bitów. |
Current_Vendor_Specific_Trace_Mask |
4 oktety |
Ustawienie: BQR_Report_interval . Musi to być wartość minimalna z zakresu od BQR_Minimum_Report_Interval * Report_interval_multiple lub maksymalny interwału obsługiwania kontrolera. |
Polecenie dynamicznego bufora dźwięku
Dynamic Audio Buffer redukuje zakłócenia dźwięku, zmieniając rozmiar bufora audio w kontrolerze Bluetooth w zależności od sytuacji.
OCF: 0x15F
Możliwość buforowania dźwięku
Sub OCF: 0x01
Użyj tego polecenia, aby pobrać z kontrolera Bluetooth możliwości buforowania dźwięku.
Parametr polecenia | Rozmiar | Cel |
---|---|---|
Nie dotyczy | Pusta lista parametrów polecenia |
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
Dynamic_Audio_Buffer_opcode |
1 oktet | 0x01 – pobierz czas buforowania dźwięku |
Audio_Codec_Type_Supported |
4 oktety |
Maski bitowe dla obsługiwanych typów kodeków Bit 0 – kontroler SBC Bit 1 – AAC Bit 2 – APTX Bit 3 – APTX HD Bit 4 – LDAC Bit 5–31 jest zarezerwowany |
Audio_Codec_Buffer_Default_Time_For_Bit_0 |
2 oktety |
Domyślny czas buforowania dla kodeka Bit 0 określonego w polu Audio_Codec_Type_Supported. Jeśli kodek Bit 0 nie jest obsługiwany, ta wartość powinna wynosić 0. Jednostka: ms |
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 |
2 oktety |
Maksymalny czas buforowania dla kodeka typu Bit 0 określonego w polu Audio_Codec_Type_Supported. Jeśli kodek Bit 0 nie jest obsługiwany, ta wartość powinna wynosić 0. Jednostka: ms |
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 |
2 oktety |
Minimalny czas buforowania dla kodeka typu Bit 0 określonego w polu Audio_Codec_Type_Obsługiwany. Jeśli kodek Bit 0 nie jest obsługiwany, ta wartość powinna wynosić 0. Jednostka: ms |
Audio_Codec_Buffer_Default_Time_For_Bit_1 |
2 oktety |
Domyślny czas buforowania dla kodeka typu Bit 1 określonego w polu Audio_Codec_Type_Supported. Jeśli kodek Bit 1 nie jest obsługiwany, ta wartość powinna wynosić 0. Jednostka: ms |
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 |
2 oktety |
Maksymalny czas buforowania dla typu kodeka Bit 1 określonego w polu Audio_Codec_Type_Supported. Jeśli kodek Bit 1 nie jest obsługiwany, ta wartość powinna wynosić 0. Jednostka: ms |
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 |
2 oktety |
Minimalny czas buforowania dla kodeka typu Bit 1 określonego w polu Audio_Codec_Type_Obsługiwany. Jeśli kodek Bit 1 nie jest obsługiwany, ta wartość powinna wynosić 0. Jednostka: ms |
... | ... | ... |
Audio_Codec_Buffer_Default_Time_For_Bit_31 |
2 oktety |
Domyślny czas buforowania dla kodeka typu Bit 31 określonego w polu Audio_Codec_Type_Supported. Jeśli kodek Bit 31 nie jest obsługiwany, ta wartość powinna wynosić 0. Jednostka: ms |
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 |
2 oktety |
Maksymalny czas buforowania dla typu kodeka Bit 31 określonego w polu Audio_Codec_Type_Supported. Jeśli kodek Bit 31 nie jest obsługiwany, ta wartość powinna wynosić 0. Jednostka: ms |
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 |
2 oktety |
Minimalny czas buforowania dla kodeka typu Bit 31 określonego w polu Audio_Codec_Type_supported. Jeśli kodek Bit 31 nie jest obsługiwany, ta wartość powinna wynosić 0. Jednostka: ms |
Ustaw czas buforowania dźwięku
Sub OCF: 0x02
Użyj tego polecenia, aby ustawić czas buforowania dźwięku na kontrolerze Bluetooth.
Parametr polecenia | Rozmiar | Cel |
---|---|---|
Audio_Codec_Buffer_Time |
2 oktety |
Żądany czas buforowania dźwięku dla obecnie używanego kodeka. Jednostka: ms |
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
Dynamic_Audio_Buffer_opcode |
1 oktet | 0x02 – Ustaw czas buforowania dźwięku |
Audio_Codec_Buffer_Time |
2 oktety |
Bieżący czas buforowania dźwięku na kontrolerze Bluetooth. Jednostka: ms |
Zdarzenie HCI (specyficzne dla dostawcy)
W niektórych przypadkach wymagane są zdarzenia HCI specyficzne dla dostawcy. Zobacz ilustrację 5.4 na stronie 1897 specyfikacji BT Core 5.2. Parametr 0 zdarzenia zawsze zawiera pierwszy kod zdarzenia podrzędnego, na podstawie którego dekodowana jest reszta zdarzenia HCI.
Parametr zdarzenia | Rozmiar | Cel |
---|---|---|
HCI_vendor_specific_event_code |
1 oktet | 0xFF |
sub_event_code |
1 oktet | Kod zdarzenia podrzędnego ma 1 oktet, czyli bajt bezpośrednio po długości parametru w pakiecie zdarzenia HCI. |
Podzdarzenie przekroczenia progu miejsca na dane
To zdarzenie oznacza, że limit miejsca na dane został przekroczony.
Kod zdarzenia podrzędnego = 0x54
Parametr zdarzenia podrzędnego | Rozmiar | Cel |
---|---|---|
Brak |
LE – zdarzenie podrzędne zmiany stanu wielu reklam
To zdarzenie wskazuje, że wystąpienie reklamy zmieniło swój stan. Obecnie to zdarzenie jest używane tylko do wskazywania, która instancja reklam została zatrzymana w wyniku połączenia.
Kod zdarzenia podrzędnego = 0 x 55
Parametr zdarzenia podrzędnego | Rozmiar | Cel |
---|---|---|
Advertising_instance |
1 oktet |
Identyfikuje konkretną instancję reklamową Prawidłowe wartości to od 0 do max_advt_instances –1
|
State_Change_Reason |
1 oktet | 0x00: odebrano połączenie |
Connection_handle |
2 oktety |
Identyfikuje połączenie, które spowodowało wyłączenie instancji advt (0xFFFF, jeśli jest nieprawidłowa)
|
Podzdarzenie śledzenia reklam LE
To zdarzenie wskazuje, kiedy reklamodawca zostaje znaleziony lub utracony.
Kod zdarzenia podrzędnego = 0x56
Parametr zdarzenia podrzędnego | Rozmiar | Cel |
---|---|---|
APCF_Filter_Index |
1 oktet | Indeks filtra (0, max_filter –1) |
Advertiser_State |
1 oktet |
0x00: znaleziono reklamodawcę 0x01: reklamodawca stracił |
Advt_Info_Present |
1 oktet |
0x00: obecne informacje o reklamodawcy (Advt_Info )0x01: brak informacji o reklamodawcy ( Advt_Info )
|
Advertiser_Address |
6 oktetów | Adres publiczny lub losowy |
Advertiser_Address_Type |
1 oktet |
0x00: adres publiczny 0x01: adres losowy |
Advt_Info |
Tx_Pwr[0] : 1 oktetRSSI[0] : 1 oktetTimestamp[0] : 2 oktetyAdv packet_len[0] : 1 oktetAdv_packet[0] : Adv_packet_len oktetScan_data_resp_len[0] : 1 oktetScan_data_resp[0] : Scan_data_resp oktet
|
Zdarzenie podrzędne dotyczące informacji o debugowaniu kontrolera
To zdarzenie jest używane przez kontroler do dostarczania do hosta informacji binarnych debugowania.
Kod zdarzenia podrzędnego = 0x57
Parametr zdarzenia podrzędnego | Rozmiar | Cel |
---|---|---|
debug_block_byte_offset_start |
2 oktety | Debuguj przesunięcie bajtów bloku od początku |
last_block |
1 oktet |
0x00: dostępnych jest więcej danych debugowania 0x01: ostatni blok binarny, brak danych debugowania |
cur_pay_load_sz |
2 oktety | Rozmiar bloku plików binarnych w bieżącym zdarzeniu |
Debug_Data |
Zmienna | Dane debugowania: cur_payload_sz |
Podzdarzenie raportu o jakości Bluetooth
To zdarzenie wskazuje jedną z tych sytuacji: wystąpiło zdarzenie związane z jakością Bluetootha, kontroler przesłał log czasu wiadomości LMP/LL i śledzenie planowania Bluetooth za pomocą wielu linków/Coex lub kontroler umieszczał dane debugowania.
Kod zdarzenia podrzędnego = 0x58 [Quality_Report_Id = 0x01 ~ 0x04, zdarzenie związane z jakością linku]
Parametr zdarzenia podrzędnego | Rozmiar | Cel |
---|---|---|
Quality_Report_Id |
1 oktet |
0x01: raporty dotyczące jakości w trybie monitorowania. 0x02: zbliżasz się do LSTO. 0x03: zacinanie się dźwięku w formacie A2DP. 0x04: (e)SCO jest przerywane. 0x05 ~ 0x06: zarezerwowano. 0x07: zacinanie się dźwięku LE. 0x08: połączenie nie powiodło się. 0x09 ~ 0xFF: zarezerwowano. |
Packet_Types |
1 oktet |
0x01: ID 0x02: 0x08: EVA 5x0EVA 5x0EVA 5x0EVA 5x0EVA 5x0.VA. 0x04: FHS 0x05: HV1 0x06: HV2 0x07: HV3 0x08: DV 0x09: EV3 0x0 |
Connection_Handle |
2 oktety | Uchwyt połączenia ACL/(e)SCO/ISO. |
Connection_Role |
1 oktet |
Wykonuję rolę na potrzeby połączenia. 0x00: Central 0x01: peryferyjne 0x02 ~ 0xFF: zarezerwowane. |
TX_Power_Level |
1 oktet |
Bieżący poziom mocy transmisji dla określonego uchwytu Connection_Handle.
Ta wartość powinna być taka sama jak w odpowiedzi na polecenie HCI_Read_Transmit_Power_Level HCI przez kontroler. |
RSSI |
1 oktet |
[w dBm]
Odebrano wartość wskaźnika siły sygnału (RSSI) dla określonego elementu Connection_Handle. |
SNR |
1 oktet |
[w dB]
Wartość współczynnika sygnału do szumu (SNR) dla określonego uchwytu połączenia. |
Unused_AFH_Channel_Count |
1 oktet |
Wskazuje liczbę nieużywanych kanałów w AFH_channel_map. 0x4F ~ 0xFF: zarezerwowano. |
AFH_Select_Unideal_Channel_Count |
1 oktet |
Wskazuje liczbę kanałów, które są zakłócone i mają niską jakość, ale nadal są wybrane do AFH. Minimalna liczba kanałów dozwolona w specyfikacji Bluetooth wynosi 20, więc nawet jeśli wszystkie 79 kanałów jest zakłócone i mają niską jakość, kontroler musi wybrać co najmniej 20 kanałów na potrzeby AFH. |
LSTO |
2 oktety |
Aktualne ustawienie czasu oczekiwania na nadzór nad połączeniem. Czas = N * 0,625 ms Zakres czasu: 0,625–40,9 s |
Connection_Piconet_Clock |
4 oktety |
Zegar Piconet dla określonego uchwytu połączenia. Ta wartość będzie taka sama jak w odpowiedzi na polecenie HCI_Read_Clock HCI z parametrem „Który_zegar” o wartości 0x01 (zegar pionowy). Jednostka: N * 0,3125 ms (1 zegar Bluetooth) |
Retransmission_Count |
4 oktety |
Liczba ponownych transmisji od ostatniego zdarzenia. Po przesłaniu raportu do hosta ta liczba zostanie zresetowana. |
No_RX_Count |
4 oktety |
Brak liczby RX od ostatniego zdarzenia. Liczba zwiększa się, gdy w zaplanowanym przedziale czasu nie zostanie odebrany żaden pakiet lub gdy odebrany pakiet zostanie uszkodzony. Po przesłaniu raportu do hosta ta liczba zostanie zresetowana. |
NAK_Count |
4 oktety |
Liczba NAK (negatywne potwierdzenie) od ostatniego zdarzenia. Po przesłaniu raportu do hosta ta liczba zostanie zresetowana. |
Last_TX_ACK_Timestamp |
4 oktety |
Sygnatura czasowa ostatniego potwierdzenia potwierdzenia. Opiera się na zegarze Bluetooth piconet Central (CLK). Jednostka: N * 0,3125 ms (1 zegar Bluetooth) |
Flow_Off_Count |
4 oktety |
Liczba przypadków, w których kontroler otrzymuje przepływ (STOP) od ostatniego zdarzenia. Po przesłaniu raportu do hosta ta liczba zostanie zresetowana. |
Last_Flow_On_Timestamp |
4 oktety |
Sygnatura czasowa ostatniego przepływu (GO). Opiera się na zegarze Bluetooth piconet Central (CLK). Jednostka: N * 0,3125 ms (1 zegar Bluetooth) |
Buffer_Overflow_Bytes |
4 oktety |
[w bajtach]
Liczba przepełnienia bufora od ostatniego zdarzenia. |
Buffer_Underflow_Bytes |
4 oktety |
[w bajtach]
Liczba niedostatecznego przepływu 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 wysyłanych pakietów. |
TX_UnAcked_Packets |
4 oktety |
Liczba pakietów, które nie otrzymały potwierdzenia. Ta liczba jest resetowana po przesłaniu raportu do hosta. |
TX_Flushed_Packets |
4 oktety |
Liczba pakietów, które nie są wysyłane przez punkt opróżniania. Ta liczba jest resetowana po przesłaniu raportu do hosta. |
TX_Last_Subevent_Packets |
4 oktety |
Liczba pakietów, przez które warstwa linków przesyła dane PDU danych CIS w ostatnim subzdarzeniu zdarzenia CIS. Ta liczba jest resetowana po przesłaniu raportu do hosta. Jeśli link nie ma prawidłowej wartości, wartość wynosi 0. |
CRC_Error_Packets |
4 oktety |
Liczba otrzymanych pakietów z błędem CRC od ostatniego zdarzenia. Ta liczba jest resetowana po przesłaniu raportu do hosta. |
RX_Duplicate_Packets |
4 oktety |
Liczba zduplikowanych (ponownych) pakietów otrzymanych od ostatniego zdarzenia. Ta liczba jest resetowana po przesłaniu raportu do hosta. |
RX_Unreceived_Packets |
4 oktety |
Liczba nieodebranych pakietów jest taka sama jak parametr w poleceniu LE READ ISO Link Quality (patrz: podstawowa specyfikacja Bluetootha w wersji 5.4). Powiązane strumienie to CIS i BIS. Gdy ta wartość zostanie zwiększona, warstwa linków nie otrzymuje określonego ładunku przez swój punkt spłukiwania (w CIS) ani na koniec zdarzenia, z którym jest powiązana (w BIS; patrz: podstawowa specyfikacja Bluetootha w wersji 5.4, tom 6, część B, sekcja 4.4.6.6). |
Coex_Info_Mask |
2 oktety |
Bit 0 – CoexInvolvement: ustawiane, by wskazać, że podczas generowania tego raportu mogą występować wspólne działania (np. fragmenty A2DP i zbliżające się do LSTO). Bit 1 – radio WL 2G aktywne: ustawione, by wskazać, że radio WLAN 2G jest aktywne. Bit 2 – WL 2G Connected: ustawiony, by wskazać, że radio WLAN 2G jest aktywne i połączone. Bit 3 – radio WL 5G/6G aktywne: ustawione, by wskazać, że radio WLAN 5G/6G jest aktywne. Bit 4–15 – zarezerwowany |
Parametr dostawcy | (łączna długość parametru – do ustalenia) * oktety | Aby dostawca kontrolera mógł uzyskać więcej parametrów odnoszących się do dostawcy. |
Kod zdarzenia podrzędnego = 0x58 [Quality_Report_Id = 0x05, zdarzenie zapalenia roota]
To zdarzenie wskazuje, że Bluetooth HAL lub kontroler napotkał błąd krytyczny i potrzebuje stosu Bluetooth, aby zarejestrować tę sytuację i ponownie uruchomić urządzenie. W każdym przypadku przed wysłaniem pierwszego fragmentu zdarzeń informacji debugowania kontroler musi wysłać zdarzenie Root_Inflammation_Event do stosu Bluetooth.
Parametr Error_Code zawiera kod błędu zgłoszony przez HAL lub kontroler, a wartość 0, jeśli jest to błąd związany z konkretnym dostawcą chipsetu. Kod błędu Vendor_Specific_Error_Code zawiera specyficzny dla dostawcy kod błędu z HAL lub kontrolera. Jeśli parametr Error_Code ma wartość inną niż 0, powinna być ustawiona na 0. Parametry Error_Code i Vendor_specific_Error_Code nie powinny wynosić 0.
Parametr zdarzenia podrzędnego | Rozmiar | Cel |
---|---|---|
Quality_Report_Id |
1 oktet |
0x00 ~ 0x04: zarezerwowane. 0x05: zapalenie korzeni. 0x06 ~ 0xFF: zarezerwowano. |
Error_Code |
1 oktet |
0x00: dołączony jest kod błędu dostawcy chipsetu. 0x01 ~ 0xFF: wystąpiła awaria kontrolera. Listę kodów błędów i opisów znajdziesz w specyfikacji Bluetooth [Vol 2], część D, kody błędów. |
Vendor_Specific_Error_Code |
1 oktet |
0x00: nie podano żadnego kodu błędu dostawcy chipsetu. 0x01 ~ 0xFF: kod błędu dostawcy chipsetu. |
Parametr dostawcy | (Całkowita długość parametru – 4) * oktety | Aby dostawca kontrolera mógł uzyskać więcej parametrów odnoszących się do dostawcy. |
Kod zdarzenia podrzędnego = 0x58 [Quality_Report_Id = 0x11 ~ 0x13, Log zrzutu powiązanego zdarzenia]
Parametr zdarzenia podrzędnego | Rozmiar | Cel |
---|---|---|
Quality_Report_Id |
1 oktet |
0x00 ~ 0x10: zarezerwowane. 0x11: śledzenie wiadomości LMP/LL. 0 x 12: śledzenie planowania połączenia Bluetooth z wieloma połączeniami/Coex. 0x13: zrzut danych z informacjami o debugowaniu kontrolera. 0x14 ~ 0xFF: zarezerwowano. |
Connection_Handle |
2 oktety | Uchwyt połączenia. |
Parametr dostawcy | (Całkowita długość parametru – 4) * oktety | Format śledzenia wiadomości LMP specyficzny dla dostawcy, śledzenie harmonogramu wielu połączeń Bluetooth/Coex i zrzut danych z informacjami o debugowaniu kontrolera. |
Obsługa wielu reklamodawców
Obsługa wielu reklamodawców ma następujące cele:
-
Obsługa wielu reklam (
max_advt_instances
) - Różne moce transmisji umożliwiające różne zakresy
- Różne treści reklamowe
- Indywidualna odpowiedź dla każdego reklamodawcy
- Prywatność (brak możliwości śledzenia) w przypadku poszczególnych reklamodawców
- Z możliwością podłączenia
Aby zapewnić zgodność tej specyfikacji z istniejącymi standardami, wprowadziliśmy poniższe polecenia dla poszczególnych dostawców. Pochodzą ze specyfikacji Bluetooth Core 4.1.
LE_Multi_Advt_Command
OCF: 0x154
Parametr polecenia | Rozmiar | Cel |
---|---|---|
Multi_advt_opcode |
1 oktet |
0 x 01 – Set_Advt_Param_Multi_Sub_Cmd 0 x 02 – Set_Advt_Data_Multi_Sub_Cmd 0 x 03 – Set_Scan_Resp_Data_Multi_Sub_Cmd 0 x 04 – Set_Random_Addr_Multi_Sub_Cmd 0 x 05 – Set_Advt_Enable_Multi_Sub_Cmd
|
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
Multi_advt_opcode |
1 oktet |
0 x 01 – Set_Advt_Param_Multi_Command 0 x 02 – Set_Advt_Data_Multi_Command 0 x 03 – Set_Scan_Resp_Data_Multi_Command 0 x 04 – Set_Random_Addr_Multi_Command 0 x 05 – Set_Advt_Enable_Multi_Command
|
LE_Multi_Advt_Command: set_Advt_Param_Multi_Sub_Cmd
Dokumentacja podstawowa: specyfikacja Bluetooth Core 4.1, strona 964 (polecenie LE Set parametr Advertising)
Sub OCF: 0x01
Parametr polecenia podrzędnego | Rozmiar | Cel |
---|---|---|
Advertising_Interval_Min |
Zgodność ze specyfikacją | Zgodność ze specyfikacją |
Advertising_Interval_Max |
Zgodność ze specyfikacją | Zgodność ze specyfikacją |
Advertising_Type |
Zgodność ze specyfikacją | Zgodność ze specyfikacją |
Own_Address_Type |
Zgodność ze specyfikacją | Zgodność ze specyfikacją |
Own_Address |
Zgodność ze specyfikacją | Zgodność ze specyfikacją |
Direct_Address_Type |
Zgodność ze specyfikacją | Zgodność ze specyfikacją |
Direct_Address |
Zgodność ze specyfikacją | Zgodność ze specyfikacją |
Advertising_Channel_Map |
Zgodność ze specyfikacją | Zgodność ze specyfikacją |
Adverstising_Filter_Policy |
Zgodność ze specyfikacją | Zgodność ze specyfikacją |
Advertising_Instance |
1 oktet | Określa zastosowanie powyższych parametrów do instancji |
Tx_power |
1 oktet |
Moc transmisji Jednostka – w dBm (liczba całkowita ze znakiem) Zakres (od -70 do +20) |
Parametr Own_Address
może być adresem skonfigurowanym przez hosta w momencie konfigurowania tej instancji reklam z wieloma reklamami. Umożliwia to uzyskanie rozpoznawalnego adresu prywatnego w chwili nadania pierwszego beaconu. Reklama w instancji będzie kontynuowana niezależnie od połączenia. Stos BT hosta może wydać polecenie, aby rozpocząć reklamowanie w instancji po połączeniu.
Dla tego polecenia zostanie wygenerowane zdarzenie Command Complete zgodnie ze specyfikacją Bluetooth Core 4.1 zgodnie z powyższym poleceniem. Jeśli wystąpienie reklamy lub parametry Tx_Power
będą nieprawidłowe, kontroler wyśle w odpowiedzi kod niepowodzenie (nieprawidłowy parametr).
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
Multi_advt_opcode |
1 oktet | 0x01 [Set_Advt_Param_Multi_Sub_Cmd] ] |
LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd
Dokumentacja podstawowa: specyfikacja Bluetooth Core 4.1, strona 969 (LE Set Advertising Data Command)
Sub OCF: 0x02
Parametr polecenia podrzędnego | Rozmiar | Cel |
---|---|---|
Advertising_Data_Length |
Zgodność ze specyfikacją | Zgodność ze specyfikacją |
Advertising_Data |
Zgodność ze specyfikacją | Zgodność ze specyfikacją |
Advertising_Instance |
1 oktet | Określa zastosowanie powyższych parametrów do instancji |
Dla tego polecenia zostanie wygenerowane zdarzenie Command Complete zgodnie ze specyfikacją Bluetooth Core 4.1 zgodnie z powyższym poleceniem. Jeśli instancja reklamowa lub parametry Tx_Power
będą nieprawidłowe, kontroler wyśle w odpowiedzi kod niepowodzenie.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
Multi_advt_opcode |
1 oktet | 0x02 [Set_Advt_Data_Multi_Sub_Cmd] ] |
LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd
Dokumentacja podstawowa: specyfikacja Bluetooth Core 4.1, strona 970 (polecenie LE Set Scan Response Data)
Sub OCF: 0x03
Parametr polecenia podrzędnego | Rozmiar | Cel |
---|---|---|
Scan_Response_Data_Length |
Zgodność ze specyfikacją | Zgodność ze specyfikacją |
Scan_Response_Data |
Zgodność ze specyfikacją | Zgodność ze specyfikacją |
Advertising_Instance |
1 oktet | Określa zastosowanie powyższych parametrów do instancji |
Dla tego polecenia zostanie wygenerowane zdarzenie Command Complete zgodnie ze specyfikacją Bluetooth Core 4.1 zgodnie z powyższym poleceniem. Jeśli wystąpienie reklamy lub parametry Tx_Power
będą nieprawidłowe, kontroler wyśle w odpowiedzi kod niepowodzenie (nieprawidłowy parametr).
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
Multi_advt_opcode |
1 oktet | 0x03 [Set_Scan_Resp_Data_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: set_Random_Addr_Multi_Sub_Cmd
Odwołanie podstawowe: specyfikacja Bluetooth Core 4.1, strona 963 (LE Set Random Address Command)
Sub OCF: 0x04
Parametr polecenia podrzędnego | Rozmiar | Cel |
---|---|---|
Losowy adres | Zgodność ze specyfikacją | Zgodność ze specyfikacją |
Advertising_Instance |
1 oktet | Określa zastosowanie powyższych parametrów do instancji |
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
Multi_advt_opcode |
1 oktet | 0x04 [Set_Random_Addr_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd
Dokumentacja podstawowa: Specyfikacja Bluetooth Core 4.1, strona 971 (Polecenie LE Set Advertise Włączanie polecenia w tej podstawowej specyfikacji)
OCF: 0x05
Parametr polecenia podrzędnego | Rozmiar | Cel |
---|---|---|
Advertising_Enable |
1 oktet | Wartość 1 oznacza włączenie. Każda inna wartość oznacza wyłączenie. |
Advertising_Instance |
1 oktet | Określa zastosowanie powyższych parametrów do instancji. Instancja 0 oznacza standardową instancję HCI. |
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
Multi_advt_opcode |
1 oktet | 0x05 [Set_Advt_Enable_Multi_Sub_Cmd] |
Rozpoznawanie wyłączonego adresu prywatnego
Ta funkcja rozpoznaje prywatny adres w oprogramowaniu lub sprzęcie kontrolera, co zapewnia te korzyści:
- Czas oczekiwania na hosta przy rozpoznawaniu adresu prywatnego
- Nie wybudzaj gospodarza, żeby oszczędzać energię
LE_Set_RPA_Limit czasu
OCF: 0x15C
Parametr polecenia | Rozmiar | Cel |
---|---|---|
LE_local_IRK |
16 oktet | Urządzenie lokalne IRK użyte do wygenerowania losowych, możliwych do rozwiązania adresów. |
tRPA_min |
2 oktety |
Minimalny czas oczekiwania na wygenerowanie RPA (w sekundach). Kontroler musi generować nowe możliwe do rozwiązania adresy dla wszystkich zdarzeń reklamowych, skanowania lub połączeń po upływie tego czasu oczekiwania lub po nim. Prawidłowy zakres: 300–1800 |
tRPA_max |
2 oktety |
Maksymalny czas oczekiwania na wygenerowanie RPA (w sekundach). Kontroler musi wygenerować nowe możliwe do rozwiązania adresy dla wszystkich zdarzeń reklamowych, skanowania lub połączeń przed upływem tego czasu oczekiwania. Prawidłowy zakres: tRPA_min –1800
|
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet |
Stan polecenia. Sugerowane wartości stanu HCI: 0x00 Udało się 0x01 Nieznane polecenie (jeśli nie jest obsługiwane) 0x12 Nieprawidłowe parametry polecenia (jeśli jakiekolwiek parametry są poza podanym zakresem) |
LE_RPA_Polecenie_odciążania
OCF: 0x155
Parametr polecenia | Rozmiar | Cel |
---|---|---|
RPA_offload_opcode |
1 oktet |
0 x 1 – włącz funkcję dla klienta 0 x 2 – dodaj IRK do listy 0 x 3 – usuń IRK z listy 0 x 4 – wyczyść listę IRK 0x5 – odczyt pozycji na liście IRK |
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
Event_RPA_offload_opcode |
1 oktet |
0 x 1 – włącz funkcję dla klienta 0 x 2 – dodaj IRK do listy 0 x 3 – usuń IRK z listy 0 x 4 – wyczyść listę IRK 0x5 – odczyt pozycji na liście IRK |
LE_RPA_offload: Włącz_cust_specific_sub_Command
Sub OCF: 0x01
Parametr polecenia podrzędnego | Rozmiar | Cel |
---|---|---|
enable_customer_specific_feature_set |
1 oktet |
0x01 – włącz odładowaną funkcję RPA 0x00 – wyłącz wyłączoną funkcję RPA |
W zależności od możliwości układu scalonego host musi włączyć odciążanie RPA. Więcej informacji: LE_Get_Vendor_Capabilities_Command
.
Każdy układ może mieć różne max_irk_list_sz
w oprogramowaniu układowym.
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
Event_cust_specific_feature_opcode |
1 oktet | 0x01 [Włącz funkcję dotyczącą konkretnego klienta] |
LE_RPA_offload: Add_IRK_to_list_sub_Command
Sub OCF: 0x02
Parametr polecenia podrzędnego | Rozmiar | Cel |
---|---|---|
LE_IRK |
16 oktetów | LE IRK (1 bajt LSB) |
Address_Type |
1 oktet |
0: Adres publiczny 1: Adres losowy |
LE_Device_Address |
6 oktetów | Publiczny lub losowy adres powiązany z IRK (1 bajtowy kod LSB) |
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
Event_cust_specific_feature_opcode |
1 oktet | 0x02 [Dodaj IRK do listy] |
LE_IrkList_AvailableSpaces |
1 oktet | Wpisy na liście IRL dostępne po bieżącej operacji |
LE_RPA_offload: Delete_IRK_to_list_sub_Command
Sub OCF: 0x03
Parametr polecenia podrzędnego | Rozmiar | Cel |
---|---|---|
Address_Type |
1 oktet |
0: Adres publiczny 1: Adres losowy |
LE_Device_Address |
6 oktetów | Publiczny lub losowy adres powiązany z IRK |
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
Event_cust_specific_feature_opcode |
1 oktet | 0x03 [Usuń IRK z listy] |
LE_IrkList_AvailableSpaces |
1 oktet | Wpisy na liście IRL dostępne po bieżącej operacji |
LE_RPA_offload: Wyczyść_IRK_list_sub_Command
Sub OCF: 0x04
Parametr polecenia podrzędnego | Rozmiar | Cel |
---|---|---|
Brak |
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
Event_cust_specific_feature_opcode |
1 oktet | 0x04 [Wyczyść listę IRK] |
LE_IrkList_AvailableSpaces |
1 oktet |
Dostępne pozycje listy IRL po bieżącej operacji [max_irk_list_sz]
|
LE_RPA_offload: Read_IRK_list_sub_Command
Sub OCF: 0x05
Parametr polecenia podrzędnego | Rozmiar | Cel |
---|---|---|
LE_read_IRK_list_entry-index |
1 oktet | Indeks listy IRK [0, max_irk_list_sz-1] |
Dla tego polecenia zostanie wygenerowane zdarzenie polegające na zakończeniu polecenia.
Parametr zwracania | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan wykonania polecenia |
Event_cust_specific_feature_opcode |
1 oktet | 0x05 [Odczyt wpisu na liście IRK] |
LE_Read_IRK_List_entry |
1 oktet | Indeks IRK, który host chce odczytać (maksymalny rozmiar listy IRK to 32) |
LE_IRK |
16 oktetów | Wartość IRK |
Address_Type |
1 oktet |
0: Adres publiczny 1: Adres losowy |
LE_Device_Address |
6 oktetów | Publiczny lub losowy adres powiązany z IRK |
LE_Resolved_Private_Address |
6 oktetów | Obecny rozpoznawalny, prywatny adres IRK |