Interfejs hosta kontrolera (HCI) służy do interakcji z kontrolerem Bluetooth.
Ten dokument zawiera listę wymagań HCI dotyczących Bluetootha (BT) i Bluetootha Low Energy (BLE). Celem jest zapewnienie zgodności dostawców hosta i sterownika BT z tymi wymaganiami platformy, aby można było korzystać z zestawu funkcji opisanego poniżej.
W tym dokumencie specyfikacja Bluetooth Core 5.2 jest określana jako „specyfikacja”. Specyfikacja Bluetooth Core 5.2 jest dostępna na stronie internetowej Bluetooth SIG wraz z innymi przyjętymi dokumentami.
Omówienie ogólne
Funkcje i konfiguracja układu
Jako otwarta platforma Android ma wiele wersji oprogramowania, producentów OEM, dostawców oraz możliwości platform i układów scalonych.
Aby umożliwić zarządzanie różnorodnym środowiskiem i przenoszeniem, w tym dokumencie opisano filozofię projektowania, która pozwala kontrolerom BT udostępniać swoje możliwości (poza standardową specyfikacją Bluetooth Core 5.2). Hostowy moduł BT może następnie używać tych funkcji do określania, które funkcje włączyć.
Obsługa otwartych standardów
Jednym z celów Androida jest obsługa otwartych standardów po zatwierdzeniu w specyfikacji Bluetooth. Jeśli funkcja opisana poniżej stanie się dostępna w ramach standardowych metod HCI w przyszłej specyfikacji Bluetooth, będziemy dążyć do tego, aby stała się domyślnym rozwiązaniem.
Funkcje dostawcy
Polecenie specyficzne dla dostawcy: LE_Get_Vendor_Capabilities_Command
Pole polecenia kodu operacji (OCF): 0x153
Parametr polecenia | Rozmiar | Cel |
---|---|---|
Nie dotyczy | Pusta lista poleceń |
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
max_advt_instances (Wycofane) |
1 oktet |
Liczba obsługiwanych wystąpień reklamy. Zarezerwowane po wersji 0.98. Ten parametr jest wycofany w specyfikacji funkcji Google w wersji 0.98 i nowszych na rzecz rozszerzonej reklamy LE dostępnej w specyfikacji BT w wersji 5.0 i nowszych. |
offloaded_resolution_of_private-address (Wycofane) |
1 oktet |
Możliwości procesora BT w RPA. Jeśli jest obsługiwany przez chip, musi zostać włączony przez hosta. 0 = Nieobsługa 1 = Obsługa Zarezerwowane po wersji 0.98. Ten parametr jest wycofany w specyfikacji funkcji Google w wersji 0.98 i wyższych na rzecz funkcji dotyczącej prywatności dostępnej w specyfikacji BT w wersji 4.2 lub nowszej. |
total_scan_results_storage |
2 oktety | Miejsce na dane wyników skanowania w bajtach |
max_irk_list_sz |
1 oktet | Liczba wpisów IRK obsługiwanych przez oprogramowanie układowe |
filtering_support |
1 oktet |
Obsługa filtrowania w kontrolerze 0 = Nieobsługiwane 1 = Obsługiwane |
max_filter |
1 oktet | Liczba obsługiwanych filtrów |
activity_energy_info_support |
1 oktet |
Obsługuje raportowanie informacji o aktywności i energii 0 = Nieobsługuje 1 = Obsługuje |
version_supported |
2 oktety |
Określa wersję obsługiwanej specyfikacji funkcji Google byte[0] = numer głównej wersji byte[1] = numer podwersji v1.04 byte[0] = 0x01 byte[1] = 0x04 |
total_num_of_advt_tracked |
2 oktety |
Łączna liczba reklamodawców śledzonych na potrzeby OnLost /OnFound
|
extended_scan_support |
1 oktet | Obsługuje rozszerzone okno i interwał skanowania |
debug_logging_supported |
1 oktet | Obsługuje rejestrowanie binarnych informacji debugowania z kontrolera |
LE_address_generation_offloading_support (Wycofane) |
1 oktet |
0 = nieobsługiwane 1 = obsługiwane Zarezerwowane po wersji 0.98. Ten parametr jest wycofany w specyfikacji funkcji Google w wersji 0.98 i wyższych na rzecz funkcji dotyczącej prywatności dostępnej w specyfikacji BT w wersji 4.2 lub nowszej. |
A2DP_source_offload_capability_mask |
4 paź |
Maski bitowe obsługiwanych typów kodeków Bit 0 – SBC Bit 1 – AAC Bit 2 – APTX Bit 3 – APTX HD Bit 4 – LDAC Bity 5–31 są zarezerwowane |
bluetooth_quality_report_support |
1 oktet |
Obsługuje raportowanie zdarzeń jakości Bluetooth 0 = Nieobsługuje 1 = Obsługuje |
dynamic_audio_buffer_support |
4 oktety |
Obsługuje dynamiczny bufor audio w kontrolerze Bluetooth Maski bitowe dla obsługiwanych typów kodeków Bit 0 – SBC Bit 1 – AAC Bit 2 – APTX Bit 3 – APTX HD Bit 4 – LDAC Bity 5–31 są zarezerwowane |
a2dp_offload_v2_support |
1 oktet |
Obsługuje polecenia A2DP offload v2 w kontrolerze Bluetooth (patrz Rozpocznij odciążanie A2DP, Zatrzymaj odciążanie A2DP). 0 = Nieobsługiwane 1 = Obsługiwane |
Wyniki skanowania zbiorczego
Celem projektu jest ulepszanie sposobu dostarczania do hosta powiadomień o zdarzeniach odpowiedzi na skanowanie Bluetooth LE w celu oszczędzania energii w hostie.
Zmniejszenie częstotliwości powiadamiania przez kontroler procesora aplikacji hosta o wynikach skanowania pozwala procesorowi aplikacji hosta dłużej pozostawać w stanie bezczynności lub uśpienia. Pozwala to zmniejszyć zużycie energii w hostie. Zwracany parametr total_scan_results_storage
funkcji LE_Get_Vendor_Capabilities_Command
wskazuje, że chip ma możliwość przechowywania wyników skanowania.
Ta funkcja umożliwia zarządzanie i konfigurowanie funkcji przechowywania wyników skanowania LE w sterowniku Bluetooth. Magazyn służy do tymczasowego grupowania danych reklamy oraz skanowania danych i metadanych, które są odbierane przez kontroler na potrzeby późniejszego przekazania do hosta.
Oprogramowanie sprzętowe musi obsługiwać 2 typy grupowania, które mogą być stosowane jednocześnie:
- Skrócone. Zawiera te elementy informacji: {MAC, TX Power, RSSI, Timestamp}
- Pełne. Zawiera te elementy informacji: {MAC, TX Power, RSSI, Timestamp, Adv Data, Scan Response}
LE_Batch_Scan_Command
OCF: 0x156
Parametr polecenia | Rozmiar | Cel |
---|---|---|
Batch_Scan_opcode |
1 oktet |
0x1 – Włączanie funkcji dla konkretnego klienta 0x2 – Ustawianie parametrów przechowywania zbiorczego skanowania 0x3 – Ustawianie parametrów zbiorczego skanowania 0x4 – Czytanie parametrów wyników zbiorczego skanowania |
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”. Włączenie funkcji dotyczącej konkretnego klienta nie uruchamia skanowania.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
Batch_Scan_opcode |
1 oktet |
0x1 – Włączanie funkcji dla konkretnego klienta 0x2 – Ustawianie parametrów przechowywania zbiorczego skanowania 0x3 – Ustawianie parametrów zbiorczego skanowania 0x4 – Czytanie parametrów wyników zbiorczego skanowania |
LE_Batch_Scan_Command: Enable customer-specific feature
Sub OCF: 0x01
Parametr podrzędnego polecenia | Rozmiar | Cel |
---|---|---|
enable_customer_specific_feature_set |
1 oktet |
0x01 – włączanie funkcji zbiorczego skanowania 0x00 – wyłączanie funkcji zbiorczego skanowania |
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
Batch_Scan_opcode |
1 oktet |
0x1 – Włączanie funkcji dla konkretnego klienta 0x2 – Ustawianie parametrów przechowywania zbiorczego skanowania 0x3 – Ustawianie parametrów zbiorczego skanowania 0x4 – Czytanie parametrów wyników zbiorczego skanowania |
LE_Batch_Scan_Command: Set batch scan storage parameter subcommand
Sub OCF: 0x02
Parametr podrzędnego polecenia | Rozmiar | Cel |
---|---|---|
Batch_Scan_Full_Max |
1 oktet |
Maksymalna ilość miejsca na dane (w %) przydzielona do pełnego stylu [Zakres: 0-100] |
Batch_Scan_Truncated_Max |
1 oktet |
Maksymalna ilość miejsca na dane (w %) przydzielona do stylu ściętego [Zakres: 0–100] |
Batch_Scan_Notify_Threshold |
1 oktet |
Ustaw poziom powiadomień (w %) dla poszczególnych puli pamięci
[Zakres: 0–100] Ustawienie 0 wyłączy powiadomienia. Wygenerowano zdarzenie HCI dotyczące konkretnego dostawcy (podzbiór przekroczenia progu w Storage) |
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
Batch_scan_opcode |
1 oktet | 0x02 [Set Batch Scan parameters] |
LE_Batch_Scan_Command: podkomenda ustawienia parametru zbiorczego skanowania
Sub OCF: 0x03
Parametr podrzędnego polecenia | Rozmiar | Cel |
---|---|---|
Batch_Scan_Mode |
1 oktet |
0x00 – skanowanie zbiorcze jest wyłączone 0x01 – tryb skrócony jest włączony 0x02 – tryb pełny jest włączony 0x03 – tryb skrócony i pełny są włączone |
Duty_cycle_scan_window |
4 oktety | Czas skanowania zbiorczego (liczba slotów) |
Duty_cyle_scan_interval |
4 oktety | Interwał zbiorczego skanowania (liczba slotów) |
own_address_type |
1 oktet |
0x00 – publiczny adres urządzenia 0x01 – losowy adres urządzenia |
Batch_scan_Discard_Rule |
1 oktet |
0 – odrzuć najstarszą reklamę 1 – odrzuć reklamę z najsłabszym identyfikatorem RSSI |
Ten podkomenda rozpocznie skanowanie zbiorcze, jeśli jest włączone. W przypadku skanowania w formie skróconej wyniki są przechowywane w formie skróconej, w której unikalny klucz dla stylu skróconego to {BD_ADDR,
scan_interval}. Oznacza to, że dla każdego przedziału skanowania będzie rejestrowany tylko BD_ADDR will
. Rekord, który należy zachować w trybie skróconym, to: {BD_ADDR
,
Tx Power, RSSI, Timestamp}
Gdy tryb pełny jest włączony, używane jest aktywne skanowanie i zapisywane są odpowiedzi na skanowanie. Unikalny klucz pełnego stylu = {MAC, Ad packet}, niezależnie od interwału skanowania. W trybie pełnym należy zachować rekord {BD_ADDR
, Tx Power, RSSI, Timestamp, Ad packet, Scan
Response}. W stylu pełnym ten sam pakiet AD, gdy jest wyświetlany wielokrotnie w różnych interwałach skanowania, jest rejestrowany tylko raz. Jednak w trybie przyciętym interesuje nas widoczność BA_ADDR
w różnych odstępach czasowych skanowania (raz na każdy interwał skanowania). RSSI to średnia wartość wszystkich duplikatów unikalnej reklamy w okresie skanowania.
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
Batch_scan_opcode |
1 oktet | 0x03 [Ustaw parametry zbiorczego skanowania] |
LE_Batch_Scan_Command: podkomenda odczytu wyników skanowania zbiorczego
Sub OCF: 0x04
Parametr podrzędnego polecenia | Rozmiar | Cel |
---|---|---|
Batch_Scan_Data_read |
1 oktet |
0x01 – dane w trybie obciętym 0x02 – dane w trybie pełnym |
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”. Gdy gospodarz wyda to polecenie, wszystkie wyniki w kontrolerze mogą nie zmieścić się w jednym zdarzeniu Zakończenie polecenia. Host będzie powtarzać wydawanie tego polecenia, dopóki odpowiednie wyniki w zdarzeniu Command Complete nie będą wskazywać 0 w polu Liczba rekordów, co oznacza, że kontroler nie ma już więcej rekordów do przekazania hostowi. Każde zdarzenie Command Complete może zawierać wiele rekordów tylko jednego typu danych (pełnych lub obciętych).
Odniesienia do czasu w kontrolerze i hostie nie są zsynchronizowane. Jednostka sygnatury czasowej to 50 ms. Wartość sygnatury czasowej jest określana na podstawie momentu, w którym gospodarz podał wartość atrybutu Read_Batch_Scan_Results_Sub_cmd
. Jeśli czas dotarcia polecenia toT_c
w oprogramowaniu układowym, to rzeczywisty czas, w jakim sygnatura czasowa została pobrana z oprogramowania układowego, toT_fw
. Czas raportowania:T_c
- T_fw
. T_c
i T_fw
są w domenie czasowej oprogramowania. Dzięki temu gospodarz może obliczyć, jak dawno miało miejsce zdarzenie.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
Batch_scan_opcode |
1 oktet | 0x03 [Set Batch Scan parameters] |
Batch_Scan_data_read |
1 oktet | Określa format (skrócony lub pełny). |
num_of_records |
1 oktet | Liczba rekordów Batch_Scan_data_read |
format_of_data |
Zmienna |
Tryb skrócony: Adres[0]: 6 oktetów Typ_adresu[0]: 1 oktet Moc_nadawania[0]: 1 oktet RSSI[0]: 1 oktet Znak_czasu[0]: 2 oktety [wiele rekordów ( num_of_records ) w powyższym formacie]Tryb pełny: Adres[0]: 6 oktetów Typ_adresu[0]: 1 oktet Moc_nadawania[0]: 1 oktet RSSI[0]: 1 oktet Znak_czasu[0]: 2 oktety Odpowiedź_na_skanowanie_dł[0]: 1 oktet Odpowiedź_na_skanowanie[0]: Scan_data_resp oktetów[wiele rekordów w powyższym formacie ( num_of_records )] |
Filtr treści pakietów reklamowych
Używaj tego polecenia do włączania, wyłączania i konfigurowania filtra treści pakietów reklamowych (APCF) w sterowniku. APCF filtruje raporty reklamowe w kontrolerze, ale nie filtruje reklam okresowych.
LE_APCF_Command
OCF: 0x157
Parametr polecenia | Rozmiar | Cel |
---|---|---|
APCF_opcode |
1 oktet |
0x00 – Włączenie APCF 0x01 – Ustaw parametry filtrowania APCF 0x02 – Adres nadawcy APCF 0x03 – Identyfikator usługi APCF 0x04 – Identyfikator zapytania o usługę APCF 0x05 – Nazwa lokalna APCF 0x06 – Dane producenta APCF 0x07 – Dane usługi APCF 0x08 – Usługa wykrywania transportu APCF 0x09 – Filtr typu reklamy APCF 0x10 ÷ 0xAF – Zarezerwowane na przyszłość 0xB0 ÷ 0xDF – Zarezerwowane dla dostawcy 0xE0 ÷ 0xFE – Zarezerwowane na przyszłość 0xFF – Rozszerzone funkcje odczytu APCF |
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan zwrotu |
APCF_opcode |
1 oktet |
0x00 – Włączenie APCF 0x01 – Ustaw parametry filtrowania APCF 0x02 – Adres nadawcy APCF 0x03 – Identyfikator usługi APCF 0x04 – Identyfikator zapytania o usługę APCF 0x05 – Nazwa lokalna APCF 0x06 – Dane producenta APCF 0x07 – Dane usługi APCF 0x08 – Usługa wykrywania transportu APCF 0x09 – Filtr typu reklamy APCF 0x10 ÷ 0xAF – Zarezerwowane na przyszłość 0xB0 ÷ 0xDF – Zarezerwowane dla dostawcy 0xE0 ÷ 0xFE – Zarezerwowane na przyszłość 0xFF – Rozszerzone funkcje odczytu APCF |
LE_APCF_Command: Enable_sub_cmd
Sub OCF: 0x00
Parametr podrzędnego polecenia | Rozmiar | Cel |
---|---|---|
APCF_enable |
1 oktet |
0x01 – włączanie funkcji APCF 0x00 – wyłączanie funkcji APCF |
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
APCF_opcode |
1 oktet | 0x0 – włączanie APCF |
APCF_Enable |
1 oktet | Włączanie/wyłączanie odbywa się za pomocą APCF_enable |
LE_APCF_Command: set_filtering_parameters_sub_cmd
Ten podkomendę służy do dodawania i usuwania specyfikacji filtra lub do czyszczenia listy filtrów na potrzeby filtrowania na chipie.
Sub OCF: 0x01
Parametr podrzędnego polecenia | Rozmiar | Cel |
---|---|---|
APCF_Action |
1 oktet |
0x00 – Dodaj 0x01 – Usuń 0x02 – Wyczyść Usunięcie spowoduje wyczyszczenie określonego filtra wraz z powiązanymi wpisami funkcji w innych tabelach. Wyczyszczenie spowoduje usunięcie wszystkich filtrów i powiązanych wpisów w innych tabelach. |
APCF_Filter_Index |
1 oktet | Indeks filtra (0, max_filter-1 ) |
APCF_Feature_Selection |
2 oktety |
Maski bitowe dla wybranych funkcji: Bit 0: ustaw, aby włączyć filtr adresu transmisji Bit 1: ustaw, aby włączyć filtr zmiany danych usługi Bit 2: ustaw, aby włączyć sprawdzanie identyfikatora UUID usługi Bit 3: ustaw, aby włączyć sprawdzanie identyfikatora UUID zapytania o usługę Bit 4: ustaw, aby włączyć sprawdzanie nazwy lokalnej Bit 5: ustaw, aby włączyć sprawdzanie danych producenta Bit 6: ustaw, aby włączyć sprawdzanie danych usługi Bit 7: ustaw, aby włączyć sprawdzanie usługi wykrywania transportu Bit 8: ustaw, aby włączyć sprawdzanie typu reklamy |
APCF_List_Logic_Type |
2 oktety |
Operacja logiczna dla każdego wyboru funkcji (na pozycję bitu) określonego w pozycji APCF_Feature_Selection .
Dozwolone tylko wtedy, gdy funkcja jest włączona. Wartość pozycji bitu: 0: LUB 1: I Jeśli wybrana jest logika „I”, pakiet ADV przejdzie przez filtr tylko wtedy, gdy zawiera WSZYSTKIE wpisy z listy. Jeśli wybrany jest operator logiczny „LUB”, pakiet ADV przejdzie przez filtr, jeśli zawiera co najmniej 1 element z listy. |
APCF_Filter_Logic_Type |
1 oktet |
0x00: LUB 0x01: I Uwaga: w przypadku pierwszych 3 pol APCF_Feature_Selection typ logiki to N/A, co oznacza, że zawsze jest to operator logiczny „I”. Dotyczą one tylko 4 pol (bity 3–6) w pliku APCF_Feature_Selection .
|
rssi_high_thresh |
1 oktet |
[w dBm] Reklamodawca jest uważany za zauważonego tylko wtedy, gdy sygnał jest wyższy niż wysoki próg RSSI. W przeciwnym razie oprogramowanie musi zachowywać się tak, jakby nigdy go nie widziało. |
delivery_mode |
1 oktet |
0x00 – immediate 0x01 – on_found 0x02 – batched
|
onfound_timeout |
2 oktety |
Obowiązuje tylko wtedy, gdy delivery_mode to
on_found .[w milisekundach] Czas, który firmware potrzebuje na pobranie dodatkowych reklam przed przesłaniem danych. |
onfound_timeout_cnt |
1 oktet |
Obowiązuje tylko wtedy, gdy delivery_mode to
on_found .[liczba] Jeśli reklama onFound pozostaje w oprogramowaniu przez czasonfound_timeout , gromadzi kilka reklam, a liczba jest sprawdzana. Jeśli liczba przekroczyonfound_timeout_cnt , zostanie zgłoszonaOnFound natychmiast.
|
rssi_low_thresh |
1 oktet |
Obowiązuje tylko wtedy, gdy delivery_mode to
on_found .[w dBm] Pakiet reklamodawcy jest uważany za niewyświetlony, jeśli RSSI otrzymanego pakietu nie przekracza dolnego progu RSSI. |
onlost_timeout |
2 oktety |
Obowiązuje tylko wtedy, gdy delivery_mode to
on_found .[w milisekundach] Jeśli reklama, po jej znalezieniu, nie będzie wyświetlana w ciągły sposób przez okres lost_timeout , zostanie natychmiast zgłoszona jako zagubiona.
|
num_of_tracking_entries |
2 oktety |
Obowiązuje tylko wtedy, gdy delivery_mode to
on_found .[liczba] Łączna liczba reklamodawców do śledzenia na podstawie filtra. |
Wartości RSSI muszą być reprezentowane przez uzupełnienie do 2 poziomów w przypadku wartości ujemnych.
Prowadzący będzie mógł skonfigurować wiele filtrów z wartością APCF_Application_Address_type
równą 0x02 (dla wszystkich adresów nadawcy) w celu zarządzania różnymi kombinacjami filtrów.
Filtrowanie, grupowanie i raportowanie to powiązane ze sobą pojęcia. Każda reklama i powiązana z nią odpowiedź na skanowanie musi przejść przez wszystkie filtry, jeden po drugim. W związku z tym działania wynikowe (delivery_mode
) są ściśle powiązane z filtrowaniem. Tryby dostawy to: report_immediately
, batch
i onFound
. Wartość OnLost
jest powiązana z wartością OnFound
w tym sensie, że po utracie wartości OnFound
będzie ona następna.
Ten schemat przetwarzania przedstawia model koncepcyjny:

Gdy otrzymamy ramkę reklamy (lub odpowiedź na skanowanie), zostanie ona zastosowana do wszystkich filtrów w kolejności sekwencyjnej. Możliwe, że reklama może spowodować natychmiastowe raportowanie na podstawie jednego filtra i zbiorcze tego samego reklamy z powodu innej akcji filtra.
Próg poziomu RSSI (wysoki i niski) umożliwia kontrolowanie, kiedy ramka jest widoczna do przetwarzania filtra, nawet gdy kontroler otrzymał prawidłowy pakiet. Jeśli tryb dostarczania jest ustawiony na „natychmiastowy” lub „w grupach”, identyfikator RSSI ramki jest brany pod uwagę w celu dalszego przetwarzania przez kontroler. Różne aplikacje wymagają różnych sposobów raportowania i zbiorowego przetwarzania. Umożliwia to kilku aplikacjom jednoczesne raportowanie lub grupowanie wyników w oprogramowaniu sprzętowym. Przykładem może być sytuacja, w której jedna aplikacja przeprowadza skanowanie zbiorcze, a potem inna aplikacja wykonuje zwykłe skanowanie LE. Przed rozpoczęciem skanowania zbiorczego framework lub aplikacja ustawia odpowiednie filtry. Gdy później druga aplikacja przeprowadzi zwykłe skanowanie, poprzednie grupowanie będzie kontynuowane. Jednak ze względu na regularne skanowanie jest to podobne do dodawania filtra null (wraz ze wszystkimi istniejącymi filtrami) wraz z poleceniem skanowania LE. Parametry polecenia skanowania LE mają pierwszeństwo, gdy są aktywne. Gdy zwykłe skanowanie LE jest wyłączone, kontroler wróci do poprzedniego skanowania w grupie, jeśli takie istniało.
Tryb dostarczania OnFound
opiera się na skonfigurowanych filtrach. Kombinacja, która powoduje, że działanie filtra zakończy się powodzeniem, jest uważana za entuz, który należy śledzić w przypadku onLost
. Odpowiada mu podzbiór danych Advt.
Przejście OnFound/OnLost
filtra (jeśli jest włączone) będzie wyglądać tak:

W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
APCF_opcode |
1 oktet | 0x01 – APCF Set Filtering Parameters |
APCF_Action |
1 oktet | Odzwierciedlenie polecenia APCF_Action |
APCF_AvailableSpaces |
1 oktet | Liczba dostępnych pozycji w tabeli filtrów |
LE_APCF_Command: broadcast_address_sub_cmd
Ten podkomendę służy do dodawania i usuwania adresu reklamodawcy lub do czyszczenia listy adresów reklamodawców na potrzeby filtrowania na chipie.
Sub OCF: 0x02
Parametr podrzędnego polecenia | Rozmiar | Cel |
---|---|---|
APCF_Action |
1 oktet |
0x00 – Dodaj 0x01 – Usuń 0x02 – Wyczyść Usuń spowoduje usunięcie adresu wybranego nadawcy w określonym filtrze. Wyczyszczenie spowoduje usunięcie wszystkich adresów nadawcy w wybranym filtrze. |
APCF_Filter_Index |
1 oktet | Indeks filtra (0, max_filter-1 ) |
APCF_Broadcaster_Address |
6 oktetów | 6-bajtowy adres urządzenia do dodania do listy adresów nadawcy lub do jej usunięcia |
APCF_Application_Address_type |
1 oktet |
0x00: publiczny 0x01: losowy 0x02: nie dotyczy (ignorowanie typu adresu) Aby filtrować raporty reklamowe według typów adresów tożsamości (0x02, 0x03). Aby uzyskać raporty reklamowe z typami adresów 0x02 i 0x03, ustaw to pole na 0x02: NA (ignoruj typ adresu). |
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
APCF_opcode |
1 oktet | 0x02 – adres nadawcy APCF |
APCF_Action |
1 oktet | Odzwierciedlenie polecenia APCF_Action |
APCF_AvailableSpaces |
1 oktet | Liczba bezpłatnych wpisów nadal dostępnych w tabeli adresów docelowych transmisji |
LE_APCF_Command: service_uuid_sub_cmd
Ten podkomendę służy do dodawania i usuwania UUID usługi lub do czyszczenia listy UUID usługi na potrzeby filtrowania na chipie.
Sub OCF: 0x03
Parametr podrzędnego polecenia | Rozmiar | Cel |
---|---|---|
APCF_Action |
1 oktet |
0x00 – Dodaj 0x01 – Usuń 0x02 – Wyczyść Wybranie opcji Usuń spowoduje usunięcie określonego adresu UUID usługi w wybranym filtrze. Wyczyszczenie spowoduje usunięcie wszystkich identyfikatorów UUID usługi w wybranym filtrze. |
APCF_Filter_Index |
1 oktet | Indeks filtra (0, max_filter -1) |
APCF_UUID |
2,4,16 bajtów | Identyfikator UUID usługi (16-bitowy, 32-bitowy lub 128-bitowy) do dodawania do listy lub usuwania z niej. |
APCF_UUID_MASK |
2,4,16 bajtów |
Maska UUID usługi (16-bitowa, 32-bitowa lub 128-bitowa) do dodania do listy.
Powinien mieć taką samą długość jak APCF_UUID.
|
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
APCF_opcode |
1 oktet | 0x03 – identyfikator usługi APCF |
APCF_Action |
1 oktet | Odzwierciedlenie polecenia APCF_Action |
APCF_AvailableSpaces |
1 oktet | Liczba bezpłatnych wpisów nadal dostępnych w tabeli UUID usługi |
LE_APCF_Command: solicitation_uuid_sub_cmd
Ten podkomendę służy do dodawania i usuwania identyfikatorów UUID oferty lub do czyszczenia listy identyfikatorów UUID oferty na potrzeby filtrowania na chipie.
Sub OCF: 0x04
Parametr podrzędnego polecenia | Rozmiar | Cel |
---|---|---|
APCF_Action |
1 oktet |
0x00 – Dodaj 0x01 – Usuń 0x02 – Wyczyść Usuń spowoduje usunięcie adresu UUID w prośbie w określonym filtrze. Wyczyszczenie spowoduje usunięcie wszystkich identyfikatorów UUID ofert w wybranym filtrze. |
APCF_Filter_Index |
1 oktet | Indeks filtra (0, max_filter -1) |
APCF_UUID |
2,4,16 bajtów | Identyfikator UUID prośby (16-bitowy, 32-bitowy lub 128-bitowy) do dodania do listy lub usunięcia z niej. |
APCF_UUID_MASK |
2,4,16 bajtów |
Maska UUID zachęty (16-bitowa, 32-bitowa lub 128-bitowa) do dodania do listy. Powinien mieć taką samą długość jak APCF_UUID .
|
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
APCF_opcode |
1 oktet | 0x04 – identyfikator UUID prośby APCF |
APCF_Action |
1 oktet | Odzwierciedlenie polecenia APCF_Action |
APCF_AvailableSpaces |
1 oktet | Liczba bezpłatnych pozycji nadal dostępnych w tabeli identyfikatorów UUID dotyczących zachęt |
LE_APCF_Command: local_name_sub_cmd
Ten podkomend służy do dodawania i usuwania lokalnych ciągów znaków nazwy oraz do czyszczenia listy lokalnych ciągów znaków nazwy na potrzeby filtrowania na chipie.
Sub OCF: 0x05
Parametr podrzędnego polecenia | Rozmiar | Cel |
---|---|---|
APCF_Action |
1 oktet |
0x00 – Dodaj 0x01 – Usuń 0x02 – Wyczyść Usuń spowoduje usunięcie określonego ciągu nazwy lokalnej w określonym filtrze. Wyczyszczenie spowoduje usunięcie wszystkich lokalnych ciągów znaków nazw w wybranym filtrze. |
APCF_Filter_Index |
1 oktet | Indeks filtra (0, max_filter -1) |
APCF_LocName_Mandata_or_SerData |
Rozmiar zmienny |
Ciąg znaków nazwy lokalnej. Uwagi:
|
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
APCF_opcode |
1 oktet | 0x05 – nazwa lokalna APCF |
APCF_Action |
1 oktet | Odzwierciedlenie polecenia APCF_Action |
APCF_AvailableSpaces |
1 oktet | Liczba bezpłatnych pozycji nadal dostępnych w tabeli Nazwa lokalna |
LE_APCF_Command: manf_data_sub_cmd
Ten podkomendę służy do dodawania i usuwania ciągu danych producenta lub do czyszczenia listy ciągów danych producenta na potrzeby filtrowania na chipie.
Sub OCF: 0x06
Parametr podrzędnego polecenia | Rozmiar | Cel |
---|---|---|
APCF_Action |
1 oktet |
0x00 – Dodaj 0x01 – Usuń 0x02 – Wyczyść Usuń spowoduje usunięcie określonego ciągu danych producenta w wybranym filtrze. Wyczyszczenie spowoduje usunięcie wszystkich ciągów znaków danych producenta w określonym filtrze. |
APCF_Filter_Index |
1 oktet | Indeks filtra (0, max_filter -1) |
APCF_LocName_Mandata_or_SerData |
Rozmiar zmienny |
Ciąg znaków zawierający dane producenta. Uwagi:
|
APCF_ManData_Mask |
Rozmiar zmienny |
Maska danych producenta, którą chcesz dodać do listy. Powinien mieć taką samą długość jak APCF_LocName_or_ManData_or_SerData .
|
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
APCF_opcode |
1 oktet | 0x06 – dane producenta APCF |
APCF_Action |
1 oktet | Odzwierciedlenie polecenia APCF_Action |
APCF_AvailableSpaces |
1 oktet | Liczba bezpłatnych pozycji nadal dostępnych w tabeli danych producenta |
LE_APCF_Command: service_data_sub_cmd
Ten podkomendę służy do dodawania i usuwania ciągu danych usługi lub do czyszczenia listy ciągów danych usługi na potrzeby filtrowania na chipie.
Sub OCF: 0x07
Parametr podrzędnego polecenia | Rozmiar | Cel |
---|---|---|
APCF_Action |
1 oktet |
0x00 – Dodaj 0x01 – Usuń 0x02 – Wyczyść „Usuń” spowoduje usunięcie określonego ciągu danych usługi w wybranym filtrze. Wyczyszczenie spowoduje usunięcie wszystkich ciągów danych usługi w wybranym filtrze. |
APCF_Filter_Index |
1 oktet | Indeks filtra (0, max_filter -1) |
APCF_LocName_Mandata_or_SerData |
Rozmiar zmienny |
Ciąg znaków danych usługi. Uwagi:
|
APCF_LocName_Mandata_or_SerData_Mask |
Rozmiar zmienny |
Maska danych usługi, którą chcesz dodać do listy. Powinien mieć taką samą długość jak APCF_LocName_or_ManData_or_SerData.
|
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
APCF_opcode |
1 oktet | 0x07 – dane usługi APCF |
APCF_Action |
1 oktet | Odzwierciedlenie polecenia APCF_Action |
APCF_AvailableSpaces |
1 oktet | Liczba bezpłatnych wpisów nadal dostępnych w tabeli danych usługi |
LE_APCF_Command: ad_type_sub_cmd
Ten podkomendę służy do dodawania i usuwania typu AD lub do czyszczenia listy typów AD na potrzeby filtrowania na chipie. Użyj polecenia read_extended_features_sub_cmd
, aby sprawdzić, czy to polecenie jest obsługiwane.
Jeśli APCF_AD_DATA_Length
= 0, filtr APCF_AD_TYPE
nie porównuje danych reklamy i maski danych reklamy.
Jeśli długość otrzymanego pakietu ADV przekracza AD_DATA_LENGTH
, porównaj tylko pierwsze AD_DATA_LENGTH
bajtów danych AD, a pozostałe dane zignoruj.
Sub OCF: 0x09
Parametr podrzędnego polecenia | Rozmiar | Cel |
---|---|---|
APCF_Action |
1 oktet |
0x00 – Dodaj 0x01 – Usuń 0x02 – Wyczyść Usuń spowoduje usunięcie określonego typu reklamy w wybranym filtrze. Wyczyszczenie spowoduje usunięcie wszystkich typów reklam w wybranym filtrze. |
APCF_Filter_Index |
1 oktet | Indeks filtra (0, max_filter -1) |
APCF_AD_TYPE |
1 oktet | Typ reklamy do dodania do listy lub z niej do usunięcia. Zignoruj, gdy APCF_Action ma wartość 0x02 (Wyczyść). |
APCF_AD_DATA_Length |
1 oktet |
0x00 – oznacza, że nie należy filtrować treści danych Ignoruj, gdy APCF_Action ma wartość 0x02 (Wyczyść)
|
APCF_AD_DATA |
Rozmiar zmienny |
Rozmiar zmienny, zależny od wartości APCF_AD_DATA_Length . Ignoruj, gdy APCF_Action = 0x02 (Wyczyść). |
APCF_AD_DATA_MASK |
Rozmiar zmienny |
Rozmiar zmienny, zależny od APCF_AD_DATA_Length Zignoruj, gdy APCF_Action = 0x02 (Wyczyść)Powinien mieć taką samą długość jak APCF_AD_DATA .
|
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
APCF_opcode |
1 oktet | 0x09 – typ reklamy APCF |
APCF_Action |
1 oktet | Odzwierciedlenie polecenia APCF_Action |
APCF_AvailableSpaces |
1 oktet | Liczba bezpłatnych wpisów nadal dostępnych w tabeli Typ reklamy |
LE_APCF_Command: read_extended_features_sub_cmd
Ten podkomendę służy do odczytu rozszerzonych funkcji APCF.
Sub OCF: 0xFF
Parametr podrzędnego polecenia | Rozmiar | Cel |
---|---|---|
Nie dotyczy | Pusty parametr polecenia. |
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
APCF_opcode |
1 oktet | 0xFF – APCF_Read_Extended_Features |
APCF_extended_features |
2 oktety |
Maski bitowe obsługiwanych rozszerzonych funkcji:
Wartość bitu
|
polecenie dotyczące informacji o aktywności kontrolera i energii
Te informacje są przeznaczone do analizowania przez funkcje systemu hosta na wyższym poziomie całkowitej aktywności wszystkich komponentów, w tym kontrolera BT i jego stanu makro, w zależności od tego, co dzieje się w aplikacjach i ramach. W tym celu potrzebne są te informacje z poziomu pakietu BT i sterownika:
- BT stack: raportowanie bieżącego stanu makrooperacyjnego kontrolera
- Firmware: raportowanie zbiorczych informacji o aktywności i energii
Stany makra BT host stack określone na poziomie użytkownika:
- Stan bezczynności: [skanowanie strony, reklama w LE, skanowanie zapytania, skanowanie w LE]
- Skanowanie: [wyświetlenie/zapytanie/próba połączenia]
- Aktywny: [ACL link on, SCO link ongoing, sniff mode]
Działania, które kontroler śledzi przez cały okres użytkowania, to czas transmisji, czas odbioru, czas bezczynności i łączna ilość zużytej energii. Zostaną wyczyszczone po odczytaniu przez gospodarza.
LE_Get_Controller_Activity_Energy_Info
To polecenie jest specyficzne dla dostawcy.
OCF: 0x159
Parametr podrzędnego polecenia | Rozmiar | Cel |
---|---|---|
Nie dotyczy | Pusty parametr polecenia |
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
total_tx_time_ms |
4 oktety | Łączny czas wykonywania Tx |
total_rx_time_ms |
4 oktety | Łączny czas wykonywania Rx |
total_idle_time_ms |
4 oktety | Łączny czas w stanie bezczynności (stany niskiego poboru mocy bez trybu uśpienia) |
total_energy_used |
4 oktety | Łączna zużyta energia [iloczyn prądu (mA), napięcia (V) i czasu (ms)] |
Polecenie LE extended set scan parameters
Za pomocą tego polecenia można włączyć większe okno skanowania i większy interwał w kontrolerze. Zgodnie ze specyfikacją BT Core 5.2 okno skanowania i interwał mają górny limit 10,24 sekund, co utrudnia skanowanie aplikacji w interwałach dłuższych niż 10,24 sekund.
Podstawowe źródło: specyfikacja BT Core 5.2, strona 2493 (polecenie LE Set Scan Parameters)
OCF: 0x15A
Parametr polecenia | Rozmiar | Cel |
---|---|---|
LE_Ex_Scan_Type |
1 oktet |
0x00 – skanowanie pasywne. Nie wysyłane są żadne pakiety SCAN_REQ (domyślnie).0x01 – aktywne skanowanie. SCAN_REQ mogą być wysyłane.
|
LE_Ex_Scan_Interval |
4 oktety |
Określany jako przedział czasu od momentu rozpoczęcia przez kontroler ostatniego skanowania LE do rozpoczęcia kolejnego skanowania LE. Zakres: 0x0004–0x00FFFFFF Domyślnie: 0x0010 (10 ms) Czas = N * 0,625 ms Zakres czasu: 2,5 ms–10442,25 sekund |
LE_Ex_Scan_Window |
4 oktety |
Czas trwania skanowania LE. Wartość LE_Scan_Window jest mniejsza lub równa wartości LE_Scan_Interval .
Zakres: 0x0004–0xFFFF Domyślnie: 0x0010 (10 ms) Czas = N * 0,625 ms Zakres czasu: 2,5–40,95 s |
Own_Address_Type |
1 oktet |
0x00 – publiczny adres urządzenia (domyślny) 0x01 – losowy adres urządzenia |
LE_Ex_Scan_Filter_Policy |
0x00 – akceptuj wszystkie pakiety reklam (domyślnie). Pakiety reklam kierowanych, które nie są kierowane do tego urządzenia, będą ignorowane. 0x01 – ignorowanie pakietów reklamy z urządzeń, które nie znajdują się na liście „Tylko biała lista”. Pakiety reklam kierowanych, które nie są kierowane do tego urządzenia, będą ignorowane. |
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
Polecenie Get controller debug info
Celem tego elementu informacji jest pozyskanie przez hosta informacji debugowania kontrolera w postaci binarnej na potrzeby dalszego przetwarzania i analizy. Ułatwia to debugowanie problemów w terenie i zapewnia inżynierom zestaw narzędzi do rejestrowania informacji na potrzeby analizy. Administrator może udostępnić te informacje, gdy gospodarz poprosi o to za pomocą zdarzenia (podzdarzeniowego zdarzenia Informacje o administratorze na potrzeby debugowania) lub samodzielnie, jeśli zechce to zrobić. Przykładowe zastosowania: raportowanie stanu oprogramowania układowego, informacje o pamięci podręcznej po awarii, informacje z dziennika itp.
OCF: 0x15B
Parametr polecenia | Rozmiar | Cel |
---|---|---|
Nie dotyczy | Pusta lista parametrów |
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
Obsługa sprzętowego odciążania A2DP
Funkcja przenoszenia A2DP umożliwia przeniesienie procesu kodowania dźwięku A2DP do procesora audio podłączonego do kontrolera BT. Kodowany strumień danych audio przechodzi bezpośrednio z procesora audio do kontrolera BT bez udziału hosta BT. Host BT nadal odpowiada za konfigurację i sterowanie sesją A2DP. Dostępne są 2 wersje poleceń. Stare polecenia z kodem Sub OCF 0x01–0x02 obsługują tylko kodeki open source. Wersje z kodem Sub-OCF 0x03-0x04 są niezależne od skonfigurowanego kodeka.
OCF: 0x15D
Rozpocznij odciążanie A2DP (starsza wersja)
Sub OCF: 0x01
Użyj tego polecenia, aby skonfigurować proces przenoszenia A2DP i rozpocząć strumień A2DP.
Parametr polecenia | Rozmiar | Cel |
---|---|---|
Codec |
4 oktety |
Określa typ kodeka 0x01 – SBC 0x02 – AAC 0x04 – APTX 0x08 – APTX HD 0x10 – LDAC |
Max_Latency |
2 oktety | Maksymalny dozwolony czas oczekiwania (w ms). Wartość 0 wyłącza funkcję flush. |
SCMS-T_Enable |
2 oktety |
Oktet 0: flaga umożliwiająca dodanie nagłówka SCMS-T.
Oktet 1: wartość nagłówka SCMS-T, jeśli jest włączony. |
Sampling_Frequency |
4 oktety |
0x01 – 44100 Hz 0x02 – 48000 Hz 0x04 – 88200 Hz 0x08 – 96000 Hz |
Bits_Per_Sample |
1 oktet |
0x01 – 16 bitów na próbkę 0x02 – 24 bity na próbkę 0x04 – 32 bity na próbkę |
Channel_Mode |
1 oktet |
0x01 – mono 0x02 – stereo |
Encoded_Audio_Bitrate |
4 oktety |
Szybkość transmisji zakodowanego dźwięku wyrażona w bitach na sekundę. 0x00000000 - szybkość transmisji bitów dźwięku nie jest określona / nieużywana. 0x00000001 - 0x00FFFFFF - Szybkość transmisji dźwięku po zakodowaniu w bitach na sekundę. 0x01000000 – 0xFFFFFFFF – zarezerwowane. |
Connection_Handle |
2 oktety | Identyfikator połączenia A2DP, które jest konfigurowane |
L2CAP_Channel_ID |
2 oktety | Identyfikator kanału L2CAP używany w tym połączeniu A2DP |
L2CAP_MTU_Size |
2 oktety | Maksymalny rozmiar MTU L2CAP zawierający zakodowane pakiety audio |
Codec_Information |
32 oktety |
Informacje dotyczące kodeka.
Kodek SBC:
Zapoznaj się z elementami informacji specyficznych dla kodeka SBC w A2DP w wersji 1.3. Kodek AAC:
Zapoznaj się z elementami informacji specyficznymi dla kodeka 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 danych:
Oktet 7: tryb kanału LDAC Oktet 8–31: zarezerwowane Wszystkie inne kodeki: Oktet 0–31: zarezerwowane |
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
Sub_Opcode |
1 oktet | 0x01 – rozpoczęcie odciążenia A2DP |
Rozpocznij odciążanie A2DP
Sub OCF: 0x03
Użyj tego polecenia, aby skonfigurować proces przenoszenia A2DP i rozpocząć strumień A2DP.
Parametr polecenia | Rozmiar | Cel |
---|---|---|
Connection Handle |
2 oktety | Identyfikator aktywnego połączenia HCI |
L2CAP_Channel_ID |
2 oktety | Identyfikator kanału L2CAP otwartego na potrzeby strumieniowego przesyłania A2DP |
Data_Path_Direction |
1 oktet |
0x00 – wyjście (źródło/złączenie AVDTP) 0x01 – wejście (zbiornik/rozdzielenie AVDTP) |
Peer_MTU |
2 oktety | Maksymalny rozmiar pakietów L2CAP wynegocjowany z urządzeniem peer. |
CP_Enable_SCMS_T |
1 oktet |
0x00 – wyłącz nagłówek ochrony treści SCMS-T 0x01 – włącz nagłówek ochrony treści SCMS-T |
CP_Header_SCMS_T |
1 oktet |
Gdy włączony jest nagłówek ochrony treści SCMS-T (CP_SCMS_T_Enable
ustawiony na 0x01), określa wartość nagłówka poprzedzającą treść audio (patrz A2DP, sekcje 3.2.1–2) zgodnie z definicją w Numerach przypisanych Bluetooth (sekcja 6.3.2).Ignorowane, gdy ochrona treści SCMS-T nie jest włączona. |
Vendor_Specific_Parameters_Length |
1 oktet |
Długość parametrów dostawcy, która mieści się w zakresie od 0 do 128. Jeśli nie podasz żadnych dodatkowych parametrów, zostanie użyta wartość 0. |
Vendor_Specific_Parameters |
0–128 oktetów |
Parametry specyficzne dla dostawcy udostępniane przez interfejs HAL dźwięku Bluetooth.CodecParameters.vendorSpecificParameters[]
|
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
Sub_Opcode |
1 oktet | 0x03 – rozpoczęcie odciążenia A2DP |
Zatrzymaj odciążanie A2DP (starsza wersja)
Sub OCF: 0x02
To polecenie służy do zatrzymania strumienia A2DP.
Parametr polecenia | Rozmiar | Cel |
---|---|---|
Nie dotyczy | Pusta lista parametrów polecenia. |
Dla tego polecenia nie zdefiniowano żadnych parametrów.
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
Sub_Opcode |
1 oktet | 0x02 – Zatrzymaj odciążanie A2DP |
Zatrzymaj odciążanie A2DP
Sub OCF: 0x04
To polecenie służy do zatrzymania strumienia A2DP.
Parametr polecenia | Rozmiar | Cel |
---|---|---|
Connection Handle |
2 oktety | Identyfikator aktywnego połączenia HCI |
L2CAP_Channel_ID |
2 oktety | Identyfikator kanału L2CAP otwartego na potrzeby strumieniowego przesyłania A2DP |
Data_Path_Direction |
1 oktet |
0x00 – wyjście (źródło/złączenie AVDTP) 0x01 – wejście (zbiornik/rozdzielenie AVDTP) |
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
Sub_Opcode |
1 oktet | 0x04 – Zatrzymaj odciążanie A2DP |
Polecenie raportu jakości Bluetooth
Polecenie raportu jakości Bluetooth uruchamia mechanizm w kontrolerze Bluetooth, aby zgłaszać zdarzenia dotyczące jakości Bluetooth do hosta. Możesz włączyć 4 opcje:
- Tryb monitorowania jakości: kontroler okresowo wysyła do hosta podzdarzenie BQR dotyczące jakości połączenia.
- Zbliżanie się do LSTO: jeśli z podłączonego urządzenia BT nie jest odbierany żaden pakiet przez ponad połowę wartości limitu czasu nadzoru łącza (LSTO), kontroler zgłasza do hosta zdarzenie zbliżania się do LSTO.
- A2DP Audio Choppy: gdy kontroler wykryje czynniki powodujące zakłócenia dźwięku, przekaże gospodarzowi zdarzenie A2DP Audio Choppy.
- (e)SCO Voice Choppy: gdy kontroler wykryje czynniki powodujące zakłócenia głosu, zgłosi zdarzenie (e)SCO Voice Choppy gospodarzowi.
- Root Inflammation: to zdarzenie jest wysyłane przez kontroler do stosu, gdy HAL lub kontroler napotka błąd krytyczny i musi ponownie uruchomić Bluetooth.
- Ślad wiadomości LMP/LL: kontroler wysyła do hosta wiadomość LMP/LL z procesem nawiązywania połączenia z urządzeniem zdalnym.
- Ślad planowania Bluetooth Multi-profile/Coex: kontroler wysyła informacje o planowaniu dotyczące obsługi wielu profili Bluetooth i współistnienia bezprzewodowego w zakresie 2,4 GHz do hosta.
- Mechanizm informacji o debugowaniu kontrolera: po włączeniu kontroler może samodzielnie przesyłać informacje o logowaniu debugowania do hosta za pomocą podzdarzenia informacji o debugowaniu kontrolera.
- LE Audio Choppy: gdy kontroler wykryje czynniki powodujące zakłócenia dźwięku, zgłosi gospodarzowi zdarzenie LE Audio Choppy.
-
Zaawansowany tryb statystyk RF: kontroler przesyła informacje o statystykach RF do hosta, obsługując 2 przypadki użycia raportu:
- Raporty okresowe
- Aktywatory zdarzeń (rozpoczęcie i zatrzymanie transmisji oraz aktywator zdarzenia dotyczącego jakości połączenia).
- BQR_Report_Action polecenia Bluetooth Quality Report: gospodarz może użyć tego polecenia HCI, aby uzyskać jednorazowe zapytanie dotyczące trybu monitorowania jakości, trybu monitorowania zużycia energii lub zaawansowanego trybu statystyk RF.
OCF: 0x15E
Parametr polecenia | Rozmiar | Cel |
---|---|---|
BQR_Report_Action |
1 oktet |
Działanie polegające na dodawaniu lub usuwaniu raportowania zdarzeń jakości ustawionych w parametrze BQR_Quality_Event_Mask lub na czyszczeniu wszystkich zdarzeń.
0x00 – dodaj
Usunięcie spowoduje usunięcie raportowania określonych zdarzeń związanych z jakością. |
BQR_Quality_Event_Mask |
4 oktety |
Bitowe maski dla wybranego raportowania zdarzeń związanych z jakością.
Bit 0: ustaw, aby włączyć tryb monitorowania jakości. |
BQR_Minimum_Report_Interval |
2 oktety |
Określ minimalny odstęp czasu między raportami zdarzeń jakości dla wybranych zdarzeń jakości. Oprogramowanie układu sterującego nie powinno zgłaszać następnego zdarzenia w okresie zdefiniowanym w czasie. Ustawienie odstępu musi być odpowiednie i dedykowane dla dodawanych zdarzeń jakości.
Jednostka: ms |
BQR_Vendor_Specific_Quality_Event_Mask |
4 oktety |
Bitowe maski dla wybranego raportowania zdarzeń związanych z jakością konkretnego dostawcy. Ten parametr jest prawidłowy tylko wtedy, gdy bit 15 w parametrye BQR_Quality_Event_Mask jest ustawiony.
Bity 0–31: zarezerwowane. |
BQR_Vendor_Specific_Trace_Mask |
4 oktety |
Maski bitowe dla wybranego raportowania śladów konkretnego dostawcy. Ten parametr jest prawidłowy tylko wtedy, gdy bit 31 w parametrye BQR_Quality_Event_Mask jest ustawiony.
Bity 0–31: zarezerwowane. |
Report_interval_multiple |
4 oktety |
Mnożnik dla BQR_Minimum_Report_Interval . Gdy ta wartość jest większa lub równa 1, interwał raportu BQR ma format Interwał raportu BQR = BQR_Minimum_Report_Interval x Report_interval_multiple. Sterownik nie może zgłaszać kolejnego zdarzenia w okresie określonym w czasie. Ustawienie przedziału czasowego jest przeznaczone wyłącznie do dodanych zdarzeń jakości.
Jednostka: ms BQR_Report_Interval jest większe niż możliwości kontrolera, kontroler musi zwrócić maksymalny czas BQR_Report_Interval po wykonaniu polecenia.
|
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
Current_Quality_Event_Mask |
4 oktety |
Wskazuje bieżące ustawienie maski bitowej. Bit 0: tryb monitorowania jakości jest włączony. Bit 1: włączone jest raportowanie zbliżającego się LSTO. Bit 2: raportowanie zdarzeń A2DP Audio Choppy jest włączone. Bit 3: (e)SCO Voice Choppy event reporting is enabled. Bit 4: włączone jest zgłaszanie zdarzeń zapalenia korzenia. Bit 5: tryb monitorowania zużycia energii jest włączony. Bit 6: raportowanie zdarzeń ściszania dźwięku w Bluetooth LE jest włączone. Bit 7: zdarzenie nieudanego połączenia. Bit 8: ustaw, aby włączyć wyzwalacz zdarzenia w trybie Zaawansowane statystyki RF. Bit 9: ustaw, aby włączyć okresowy raport statystyk RF zaawansowanych. Bit 10–14: zarezerwowany. Bit 15: włączone jest raportowanie zdarzeń dotyczących jakości związane z poszczególnymi dostawcami. Bit 16: włączono śledzenie wiadomości LMP/LL. Bit 17: włączona jest ścieżka planowania Bluetooth Multi-link/Coex. Bit 18: mechanizm informacji debugowania kontrolera jest włączony. Bit 19 do 30: zarezerwowany. Bit 31: włączone jest śledzenie specyficzne dla dostawcy. |
Current_Vendor_Specific_Quality_Event_Mask |
4 oktety | Wskazuje bieżące ustawienie maski bitowej. |
Current_Vendor_Specific_Trace_Mask |
4 oktety | Wskazuje bieżące ustawienie maski bitowej. |
BQR_Report_interval |
4 oktety | Wskazuje bieżące ustawienie maski bitowej. |
Current_Vendor_Specific_Trace_Mask |
4 oktety |
Ustawienie BQR_Report_interval . Musi to być minimalna wartość między BQR_Minimum_Report_Interval * Report_interval_multiple lub maksymalnym obsługiwanym interwałem sterownika. |
Polecenie dynamicznego buforowania dźwięku
Dynamiczny bufor audio zmniejsza zakłócenia dźwięku przez zmianę rozmiaru bufora dźwięku w sterowniku Bluetooth w zależności od różnych scenariuszy.
OCF: 0x15F
Uzyskaj dostęp do funkcji buforowania dźwięku
Sub OCF: 0x01
Użyj tego polecenia, aby uzyskać informacje o czasie buforowania dźwięku z kontrolera Bluetooth.
Parametr polecenia | Rozmiar | Cel |
---|---|---|
Nie dotyczy | Pusta lista poleceń |
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
Dynamic_Audio_Buffer_opcode |
1 oktet | 0x01 – pobieranie czasu bufora audio |
Audio_Codec_Type_Supported |
4 oktety |
Maski bitowe obsługiwanych typów kodeków Bit 0 – SBC Bit 1 – AAC Bit 2 – APTX Bit 3 – APTX HD Bit 4 – LDAC Bity 5–31 są zarezerwowane |
Audio_Codec_Buffer_Default_Time_For_Bit_0 |
2 oktety |
Domyślny czas buforowania dla typu kodeka Bit 0 określonego w atrybucie Audio_Codec_Type_Supported. Ta wartość będzie 0, jeśli typ kodeka Bit 0 nie jest obsługiwany. Jednostka: ms |
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 |
2 oktety |
Maksymalny czas buforowania dla typu kodeka Bit 0 określonego w Audio_Codec_Type_Supported. Ta wartość będzie 0, jeśli typ kodeka Bit 0 nie jest obsługiwany. Jednostka: ms |
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 |
2 oktety |
Minimalny czas buforowania dla typu kodeka Bit 0 określonego w atrybucie Audio_Codec_Type_Supported. Ta wartość będzie 0, jeśli typ kodeka Bit 0 nie jest obsługiwany. Jednostka: ms |
Audio_Codec_Buffer_Default_Time_For_Bit_1 |
2 oktety |
Domyślny czas buforowania dla typu kodeka Bit 1 określonego w Audio_Codec_Type_Supported. Ta wartość będzie 0, jeśli typ kodeka Bit 1 nie jest obsługiwany. Jednostka: ms |
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 |
2 oktety |
Maksymalny czas buforowania dla typu kodeka Bit 1 określonego w Audio_Codec_Type_Supported. Ta wartość będzie 0, jeśli typ kodeka Bit 1 nie jest obsługiwany. Jednostka: ms |
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 |
2 oktety |
Minimalny czas buforowania dla typu kodeka Bit 1 określonego w atrybucie Audio_Codec_Type_Supported. Ta wartość będzie 0, jeśli typ kodeka Bit 1 nie jest obsługiwany. Jednostka: ms |
...... | ...... | ...... |
Audio_Codec_Buffer_Default_Time_For_Bit_31 |
2 oktety |
Domyślny czas buforowania dla typu kodeka Bit 31 określony w atrybucie Audio_Codec_Type_Supported. Ta wartość będzie 0, jeśli typ kodeka Bit 31 nie jest obsługiwany. Jednostka: ms |
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 |
2 oktety |
Maksymalny czas buforowania dla typu kodeka Bit 31 określonego w Audio_Codec_Type_Supported. Ta wartość będzie 0, jeśli typ kodeka Bit 31 nie jest obsługiwany. Jednostka: ms |
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 |
2 oktety |
Minimalny czas buforowania dla kodeka Bit 31 określonego w atrybucie Audio_Codec_Type_Supported. Ta wartość będzie 0, jeśli typ kodeka Bit 31 nie jest obsługiwany. Jednostka: ms |
Ustawianie czasu buforowania dźwięku
Sub OCF: 0x02
Użyj tego polecenia, aby ustawić czas buforowania dźwięku na kontrolerze Bluetooth.
Parametr polecenia | Rozmiar | Cel |
---|---|---|
Audio_Codec_Buffer_Time |
2 oktety |
Czas buforowania dźwięku dla aktualnie używanego kodeka. Jednostka: ms |
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
Dynamic_Audio_Buffer_opcode |
1 oktet | 0x02 – ustawienie czasu buforowania dźwięku, |
Audio_Codec_Buffer_Time |
2 oktety |
Aktualny czas buforowania dźwięku na kontrolerze Bluetooth. Jednostka: ms |
Zdarzenie HCI (specyficzne dla dostawcy)
W niektórych przypadkach wymagane są zdarzenia HCI dotyczące konkretnego dostawcy. Informacje te znajdziesz na stronie 1897 specyfikacji BT Core 5.2, rysunek 5.4. Parametr zdarzenia 0 będzie zawsze zawierać pierwszy kod podzdarzeniowy, na podstawie którego dekodowana jest reszta zdarzenia HCI.
Parametr zdarzenia | Rozmiar | Cel |
---|---|---|
HCI_vendor_specific_event_code |
1 oktet | 0xFF |
sub_event_code |
1 oktet | Kod podzdarzenia będzie miał rozmiar 1 oktet, czyli 1 bajt, który następuje bezpośrednio po długości parametru w pakiecie zdarzenia HCI. |
Podzdarzenie przekroczenia progu miejsca na dane
To zdarzenie wskazuje, że przekroczono próg miejsca na dane.
Kod podzjawisku = 0x54
Parametr zdarzenia podrzędnego | Rozmiar | Cel |
---|---|---|
Brak |
Zdarzenie podrzędne LE dotyczące zmiany stanu reklamy w wielu reklamach
To zdarzenie wskazuje, że instancja reklamy zmieniła stan. Obecnie to zdarzenie służy tylko do wskazywania, która instancja reklamy została zatrzymana w wyniku połączenia.
Kod podzjawisku = 0x55
Parametr zdarzenia podrzędnego | Rozmiar | Cel |
---|---|---|
Advertising_instance |
1 oktet |
Identyfikuje konkretny przypadek reklamy. Dozwolone wartości to 0– max_advt_instances -1.
|
State_Change_Reason |
1 oktet | 0x00: połączenie zostało odebrane |
Connection_handle |
2 oktety |
Identyfikuje połączenie, które spowodowało wyłączenie instancji advt (0xFFFF, jeśli nieprawidłowe)
|
Podzbiór śledzenia reklamy LE
To zdarzenie wskazuje, kiedy reklamodawca został znaleziony lub utracony.
Kod podrzędnego zdarzenia = 0x56
Parametr zdarzenia podrzędnego | Rozmiar | Cel |
---|---|---|
APCF_Filter_Index |
1 oktet | Indeks filtra (0, max_filter -1) |
Advertiser_State |
1 oktet |
0x00: znaleziono reklamodawcę 0x01: reklamodawca utracony |
Advt_Info_Present |
1 oktet |
0x00: informacje o reklamodawcy (Advt_Info ) są obecne0x01: informacje o reklamodawcy ( Advt_Info ) są nieobecne
|
Advertiser_Address |
6 oktetów | Adres publiczny lub losowy |
Advertiser_Address_Type |
1 oktet |
0x00: adres publiczny 0x01: losowy adres |
Advt_Info |
Tx_Pwr[0] : 1 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 danych debugowania kontrolera
To zdarzenie jest używane przez kontroler do przekazywania hostowi binarnych informacji debugujących.
Kod podzjawisk = 0x57
Parametr zdarzenia podrzędnego | Rozmiar | Cel |
---|---|---|
debug_block_byte_offset_start |
2 oktety | Debugowanie bloku bajtów przesuniętego od początku |
last_block |
1 oktet |
0x00: dostępne są dodatkowe dane debugowania 0x01: ostatni blok binarny; brak dodatkowych danych debugowania |
cur_pay_load_sz |
2 oktety | Rozmiar binarnego bloku w bieżącym zdarzeniu |
Debug_Data |
Zmienna | Dane debugowania dotyczące cur_payload_sz |
Podzdarzenie Bluetooth Quality Report
To zdarzenie wskazuje jedno z tych zdarzeń: wystąpiło zdarzenie dotyczące jakości Bluetooth, kontroler przesłał ślad wiadomości LMP/LL i ślad harmonogramu Bluetooth Multi-link/Coex lub kontroler wygenerował dane debugowania.
Kod zdarzenia podrzędnego = 0x58 [Quality_Report_Id = 0x01 ~ 0x04, zdarzenie związane z jakością połączenia]
Parametr zdarzenia podrzędnego | Rozmiar | Cel |
---|---|---|
Quality_Report_Id |
1 oktet |
0x01: raportowanie jakości w trybie monitorowania. 0x02: LSTO zbliża się do końca. 0x03: Przerywany dźwięk A2DP. 0x04: (e)SCO Voice Choppy. 0x05 - 0x06: zarezerwowane. 0x07: LE audio choppy. 0x08: błąd połączenia. 0x09 - 0xFF: zarezerwowane. |
Packet_Types |
1 oktet |
0x01: ID 0x02: NULL 0x03: POLL 0x04: FHS 0x05: HV1 0x06: HV2 0x07: HV3 0x08: DV 0x09: EV3 0x0A: EV4 0x0B: EV5 0x0C: 2-EV3 0x0D: 2-EV5 0x0E: 3-EV3 0x0F: 3-EV5 0x11: DH1 0x12: DM3 0x13: DH3 0x14: DM5 0x15: DH5 0x16: AUX1 0x17: 2-DH1 0x18: 2-DH3 0x19: 2-DH5 0x1A: 3-DH1 0x1B: 3-DH3 0x1C: 3-DH5 0x1D ~ 0x50: Reserved 0x51: Pakiet ISO 0x52 ~ 0xFF: Reserved |
Connection_Handle |
2 oktety | Identyfikator połączenia ACL/(e)SCO/ISO. |
Connection_Role |
1 oktet |
Rola w połączeniu. 0x00: centralna 0x01: peryferyjna 0x02 - 0xFF: zarezerwowana. |
TX_Power_Level |
1 oktet |
Bieżący poziom mocy nadawania dla określonego Connection_Handle.
Ta wartość musi być taka sama jak wartość zwrócona przez kontroler w odpowiedzi na polecenie HCI HCI_Read_Transmit_Power_Level. |
RSSI |
1 oktet |
[w dBm]
Wartość wskaźnika siły odbieranego sygnału (RSSI) dla określonego identyfikatora Connection_Handle. |
SNR |
1 oktet |
[w dB]
Wartość stosunku sygnału do szumu (SNR) dla określonego parametru Connection_Handle. |
Unused_AFH_Channel_Count |
1 oktet |
Określa liczbę nieużywanych kanałów w pliku AFH_channel_map. 0x4F - 0xFF: zarezerwowane. |
AFH_Select_Unideal_Channel_Count |
1 oktet |
Wskazuje liczbę kanałów, które są zakłócane i mają niską jakość, ale są nadal wybrane do automatycznego przełączania kanałów. Minimalna liczba kanałów dozwolonych przez specyfikację Bluetooth wynosi 20, więc nawet jeśli wszystkie 79 kanałów jest zakłóconych i ma niską jakość, kontroler musi wybrać co najmniej 20 kanałów do obsługi AFH. |
LSTO |
2 oktety |
Aktualne ustawienie czasu oczekiwania w nadzorze połączeń. Czas = N * 0,625 ms Zakres czasu: od 0,625 ms do 40,9 s |
Connection_Piconet_Clock |
4 oktety |
Zegar Piconet dla określonego obiektu Connection_Handle. Ta wartość powinna być taka sama jak wartość zwrócona przez kontroler w odpowiedzi na polecenie HCI HCI_Read_Clock z parametrem „Which_Clock” o wartości 0x01 (zegar Piconet). Jednostka: N * 0,3125 ms (1 zegar Bluetooth) |
Retransmission_Count |
4 oktety |
Liczba retransmisji od ostatniego zdarzenia. Po zgłoszeniu problemu do gospodarza liczba ta zostanie zresetowana. |
No_RX_Count |
4 oktety |
Brak liczby RX od ostatniego zdarzenia. Liczba zwiększa się, gdy w zaplanowanym czasie nie zostanie odebrany żaden pakiet lub odebrany pakiet jest uszkodzony. Po zgłoszeniu problemu do gospodarza liczba ta zostanie zresetowana. |
NAK_Count |
4 oktety |
Liczba NAK (Negative Acknowledge) od ostatniego zdarzenia. Po zgłoszeniu problemu do gospodarza liczba ta zostanie zresetowana. |
Last_TX_ACK_Timestamp |
4 oktety |
Sygnatura czasowa ostatniego potwierdzenia TX. Jest ona oparta na zegarze Bluetooth w centrali piconet (CLK). Jednostka: N * 0,3125 ms (1 zegar Bluetooth) |
Flow_Off_Count |
4 oktety |
Liczba razy, gdy kontroler otrzymał sygnał Flow-off (STOP) od ostatniego zdarzenia. Po zgłoszeniu problemu do gospodarza liczba ta zostanie zresetowana. |
Last_Flow_On_Timestamp |
4 oktety |
Sygnatura czasowa ostatniego Flow-on (GO). Jest ona oparta na zegarze Bluetooth w centrali piconet (CLK). Jednostka: N * 0,3125 ms (1 zegar Bluetooth) |
Buffer_Overflow_Bytes |
4 oktety |
[w Byte]
Liczba przepełnień bufora od ostatniego zdarzenia. |
Buffer_Underflow_Bytes |
4 oktety |
[w Byte]
Liczba przypadków przepełnienia bufora od ostatniego zdarzenia. |
bdaddr |
6 oktetów | Adres urządzenia zdalnego |
cal_failed_item_count |
1 oktet | Liczba elementów, przy których wystąpiły błędy kalibracji |
TX_Total_Packets |
4 oktety | Liczba wysłanych pakietów. |
TX_UnAcked_Packets |
4 oktety |
Liczba pakietów, które nie otrzymują potwierdzenia. Liczba ta jest resetowana po zgłoszeniu do gospodarza. |
TX_Flushed_Packets |
4 oktety |
Liczba pakietów, które nie zostały wysłane przez punkt wyrównania. Liczba ta jest resetowana po zgłoszeniu do gospodarza. |
TX_Last_Subevent_Packets |
4 oktety |
Liczba pakietów, które Link Layer przesyła w ramach PDU danych CIS w ostatnim podzdarzeniu zdarzenia CIS. Liczba ta jest resetowana po zgłoszeniu do gospodarza. Jeśli link nie ma prawidłowej wartości, jego wartość wynosi 0. |
CRC_Error_Packets |
4 oktety |
Liczba otrzymanych pakietów z błędem CRC od ostatniego zdarzenia. Liczba ta jest resetowana po zgłoszeniu do gospodarza. |
RX_Duplicate_Packets |
4 oktety |
Liczba duplikatów (przesyłanych ponownie) pakietów otrzymanych od ostatniego zdarzenia. Liczba ta jest resetowana po zgłoszeniu do gospodarza. |
RX_Unreceived_Packets |
4 oktety |
Liczba nieotrzymanych pakietów jest taka sama jak parametr polecenia LE READ ISO Link Quality (patrz główna specyfikacja Bluetooth w wersji 5.4). Powiązane strumienie to CIS i BIS. Gdy ta wartość jest zwiększana, warstwa łącząca nie otrzymuje określonego ładunku danych w miejscu dopasowania (w przypadku CIS) ani na końcu zdarzenia, z którym jest powiązana (w przypadku BIS; patrz podstawowa specyfikacja Bluetooth w wersji 5.4 tom 6 część B, sekcja 4.4.6.6). |
Coex_Info_Mask |
2 oktety |
Bit 0 – CoexInvolvement: ustaw, aby wskazać, że podczas generowania tego raportu podejrzewasz, że w zbieraniu danych uczestniczył coex (np. A2DP Chops i Approaching LSTO). Bit 1 – WL 2G Radio Active: ustaw, aby wskazać, że radio 2G WLAN jest aktywne. Bit 2 – WL 2G Connected (Łączność z siecią 2G): ustawiony, aby wskazać, że radio 2G sieci WLAN jest aktywne i połączone. Bit 3 – Aktywna sieć radiowa 5G/6G: ustaw, aby wskazać, że sieć radiowa 5G/6G jest aktywna. Bity 4–15 – zarezerwowane |
Parametr dostawcy | (łączna długość parametru – TBD) * oktety | dostawca kontrolera, aby uzyskać więcej parametrów specyficznych dla dostawcy; |
Kod zdarzenia podrzędnego = 0x58 [Quality_Report_Id = 0x05, zdarzenie Root Inflammation]
To zdarzenie wskazuje, że interfejs HAL Bluetooth lub kontroler napotkał błąd krytyczny i potrzebuje modułu Bluetooth, aby zarejestrować tę sytuację i ponowić uruchomienie. W każdym przypadku kontroler musi wysłać do stosu Bluetooth zdarzenie Root_Inflammation_Event, zanim wyśle pierwszy fragment zdarzeń z informacjami debugowania.
Parametr Error_Code zawiera kod błędu zgłoszony przez HAL/Controller, 0, jeśli jest to błąd specyficzny dla dostawcy chipsetu. Parametr Vendor_Specific_Error_Code zawiera kod błędu dostawcy układu pochodzący z HAL/Controller. Jeśli parametr Error_Code nie ma wartości 0, powinien mieć wartość 0. Parametry Error_Code i Vendor_Specific_Error_Code nie mogą mieć obu wartości 0.
Parametr zdarzenia podrzędnego | Rozmiar | Cel |
---|---|---|
Quality_Report_Id |
1 oktet |
0x00 - 0x04: Zarezerwowane. 0x05: Zapalenie korzenia. 0x06 - 0xFF: zarezerwowane. |
Error_Code |
1 oktet |
0x00: zawiera kod błędu specyficzny dla dostawcy układu. 0x01 do 0xFF: wystąpiła awaria kontrolera. Aby uzyskać listę kodów błędów i ich opisów, zapoznaj się ze specyfikacją Bluetooth [Tom 2], część D, „Kody błędów”. |
Vendor_Specific_Error_Code |
1 oktet |
0x00: nie ma kodu błędu konkretnego dla dostawcy chipsetu. 0x01 -- 0xFF: kod błędu specyficzny dla dostawcy chipsetu. |
Parametr dostawcy | (łączna długość parametru – 4) * oktet | dostawca kontrolera, aby uzyskać więcej parametrów specyficznych dla dostawcy; |
Kod zdarzenia podrzędnego = 0x58 [Quality_Report_Id = 0x11 ~ 0x13, zdarzenie powiązane z zrzutem dzienników]
Parametr zdarzenia podrzędnego | Rozmiar | Cel |
---|---|---|
Quality_Report_Id |
1 oktet |
0x00 - 0x10: Zarezerwowane. 0x11: ślad wiadomości LMP/LL. 0x12: śledzenie harmonogramu Bluetooth Multi-link/Coex. 0x13: zrzut danych Informacje debugowania kontrolera. 0x14 - 0xFF: zarezerwowane. |
Connection_Handle |
2 oktety | Identyfikator połączenia. |
Parametr dostawcy | (łączna długość parametru – 4) * oktet | Format specyficzny dla dostawcy śladu wiadomości LMP, śladu planowania Bluetooth Multi-link/Coex i dumpu danych z informacjami debugowania kontrolera. |
Obsługa wielu reklamodawców
Cele obsługi wielu reklamodawców:
-
Obsługa wielu reklam (
max_advt_instances
) - różne moce nadawania, aby zapewnić różny zasięg;
- różne treści reklamowe.
- Indywidualne odpowiedzi dla każdego reklamodawcy
- Prywatność (nieśledzona) dla każdego reklamodawcy
- Łączenie
Aby zachować tę specyfikację w pobliżu istniejących standardów, podajemy te polecenia: Są one oparte na specyfikacji Bluetooth Core 4.1.
LE_Multi_Advt_Command
OCF: 0x154
Parametr polecenia | Rozmiar | Cel |
---|---|---|
Multi_advt_opcode |
1 oktet |
0x01 – Set_Advt_Param_Multi_Sub_Cmd 0x02 – Set_Advt_Data_Multi_Sub_Cmd 0x03 – Set_Scan_Resp_Data_Multi_Sub_Cmd 0x04 – Set_Random_Addr_Multi_Sub_Cmd 0x05 – Set_Advt_Enable_Multi_Sub_Cmd
|
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
Multi_advt_opcode |
1 oktet |
0x01 – Set_Advt_Param_Multi_Command 0x02 – Set_Advt_Data_Multi_Command 0x03 – Set_Scan_Resp_Data_Multi_Command 0x04 – Set_Random_Addr_Multi_Command 0x05 – Set_Advt_Enable_Multi_Command
|
LE_Multi_Advt_Command: Set_Advt_Param_Multi_Sub_Cmd
Podstawowe źródło: specyfikacja Bluetooth Core 4.1, strona 964 (polecenie parametru reklamy LE Set)
Sub OCF: 0x01
Parametr podrzędnego polecenia | Rozmiar | Cel |
---|---|---|
Advertising_Interval_Min |
Specyfikacja | Specyfikacja |
Advertising_Interval_Max |
Specyfikacja | Specyfikacja |
Advertising_Type |
Specyfikacja | Specyfikacja |
Own_Address_Type |
Specyfikacja | Specyfikacja |
Own_Address |
Specyfikacja | Specyfikacja |
Direct_Address_Type |
Specyfikacja | Specyfikacja |
Direct_Address |
Specyfikacja | Specyfikacja |
Advertising_Channel_Map |
Specyfikacja | Specyfikacja |
Adverstising_Filter_Policy |
Specyfikacja | Specyfikacja |
Advertising_Instance |
1 oktet | Określa zastosowanie powyższych parametrów w przypadku instancji. |
Tx_power |
1 oktet |
Transmit_Power Jednostka – dBm (sygnałowa liczba całkowita) Zakres (od –70 do +20) |
Parametr Own_Address
może być adresem skonfigurowanym przez hosta w momencie konfigurowania tej instancji z wieloma reklamami. Umożliwia to posiadanie adresu prywatnego, który można rozwiązać w momencie przesyłania pierwszego sygnału beacon. Reklamy na instancji będą nadal wyświetlane niezależnie od połączenia. Host BT może wydać polecenie rozpoczęcia reklamy w instancji po połączeniu.
W związku z tym poleceniem zostanie wygenerowane zdarzenie „Command Complete” zgodnie ze specyfikacją Bluetooth Core 4.1, jak określono w powyższym poleceniu. Jeśli instancja reklamy lub parametry Tx_Power
są nieprawidłowe, kontroler odpowie kodem niepowodzenia (nieprawidłowy parametr).
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
Multi_advt_opcode |
1 oktet | 0x01 [Set_Advt_Param_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd
Podstawowe źródło: specyfikacja Bluetooth Core 4.1, strona 969 (polecenie danych reklamowych LE Set)
Sub OCF: 0x02
Parametr podrzędnego polecenia | Rozmiar | Cel |
---|---|---|
Advertising_Data_Length |
Specyfikacja | Specyfikacja |
Advertising_Data |
Specyfikacja | Specyfikacja |
Advertising_Instance |
1 oktet | Określa zastosowanie powyższych parametrów w przypadku instancji. |
W związku z tym poleceniem zostanie wygenerowane zdarzenie „Command Complete” zgodnie ze specyfikacją Bluetooth Core 4.1, jak określono w powyższym poleceniu. Jeśli instancja reklamy lub parametry Tx_Power
są nieprawidłowe, kontroler odpowie kodem niepowodzenia.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
Multi_advt_opcode |
1 oktet | 0x02 [Set_Advt_Data_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd
Podstawowe źródło odniesienia: specyfikacja Bluetooth Core 4.1, strona 970 (polecenie danych odpowiedzi LE Set Scan)
Sub OCF: 0x03
Parametr podrzędnego polecenia | Rozmiar | Cel |
---|---|---|
Scan_Response_Data_Length |
Specyfikacja | Specyfikacja |
Scan_Response_Data |
Specyfikacja | Specyfikacja |
Advertising_Instance |
1 oktet | Określa zastosowanie powyższych parametrów w przypadku instancji. |
W związku z tym poleceniem zostanie wygenerowane zdarzenie „Command Complete” zgodnie ze specyfikacją Bluetooth Core 4.1, jak określono w powyższym poleceniu. Jeśli instancja reklamy lub parametry Tx_Power
są nieprawidłowe, kontroler odpowie kodem niepowodzenia (nieprawidłowy parametr).
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
Multi_advt_opcode |
1 oktet | 0x03 [Set_Scan_Resp_Data_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd
Podstawowe źródło: specyfikacja Bluetooth Core 4.1, strona 963 (polecenie LE Set Random Address).
Sub OCF: 0x04
Parametr podrzędnego polecenia | Rozmiar | Cel |
---|---|---|
Adres losowy | Specyfikacja | Specyfikacja |
Advertising_Instance |
1 oktet | Określa zastosowanie powyższych parametrów w przypadku instancji. |
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
Multi_advt_opcode |
1 oktet | 0x04 [Set_Random_Addr_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd
Podstawowe źródło: specyfikacja Bluetooth Core 4.1, strona 971 (polecenie Advertise Enable w tej specyfikacji podstawowej)
OCF: 0x05
Parametr podrzędnego polecenia | Rozmiar | Cel |
---|---|---|
Advertising_Enable |
1 oktet | Wartość 1 oznacza włączenie. Każda inna wartość oznacza wyłączenie. |
Advertising_Instance |
1 oktet | Określa, czy powyższe parametry są stosowane do instancji. Instancja 0 oznacza standardową instancję HCI. |
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
Multi_advt_opcode |
1 oktet | 0x05 [Set_Advt_Enable_Multi_Sub_Cmd] |
Przeniesienie przetwarzania przetwarzania adresu prywatnego
Ta funkcja rozwiązuje adres prywatny w oprogramowaniu układu sterującego lub w sprzęcie, co zapewnia następujące korzyści:
- Opóźnienie związane z hostem podczas rozwiązywania adresu prywatnego
- oszczędzanie energii przez niebudzenie gospodarza;
LE_Set_RPA_Timeout
OCF: 0x15C
Parametr polecenia | Rozmiar | Cel |
---|---|---|
LE_local_IRK |
16 oktetów | IRK urządzenia lokalnego użyty do wygenerowania losowych adresów możliwych do rozwiązania. |
tRPA_min |
2 oktety |
Minimalny limit czasu generowania RPA w sekundach. Po upływie tego czasu kontroler musi generować nowe adresy rozwiązywalne dla wszystkich zdarzeń reklamowych/skanowania/połączenia. Dozwolony zakres: 300–1800 |
tRPA_max |
2 oktety |
Maksymalny limit czasu generowania RPA w sekundach. Kontroler musi wygenerować nowe adresy do rozwiązywania dla wszystkich zdarzeń reklamowych/skanowania/łączenia przed upływem tego limitu czasu lub przed jego przekroczeniem. Zakres prawidłowy: tRPA_min -1800
|
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet |
Stan polecenia. Sugerowane wartości stanu HCI: 0x00 Sukces 0x01 Nieznany polecenie (jeśli nie jest obsługiwane) 0x12 Nieprawidłowe parametry polecenia (jeśli którykolwiek z nich wykracza poza podany zakres) |
LE_RPA_offload_Command
OCF: 0x155
Parametr polecenia | Rozmiar | Cel |
---|---|---|
RPA_offload_opcode |
1 oktet |
0x1 – Włączanie funkcji dla konkretnego klienta 0x2 – Dodawanie IRK do listy 0x3 – Usuwanie IRK z listy 0x4 – Czyszczenie listy IRK 0x5 – Czytanie pozycji na liście IRK |
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
Event_RPA_offload_opcode |
1 oktet |
0x1 – Włączanie funkcji dla konkretnego klienta 0x2 – Dodawanie IRK do listy 0x3 – Usuwanie IRK z listy 0x4 – Czyszczenie listy IRK 0x5 – Czytanie pozycji na liście IRK |
LE_RPA_offload: Enable_cust_specific_sub_Command
Sub OCF: 0x01
Parametr podrzędnego polecenia | Rozmiar | Cel |
---|---|---|
enable_customer_specific_feature_set |
1 oktet |
0x01 – włączenie funkcji RPA z odciążeniem 0x00 – wyłączenie funkcji RPA z odciążeniem |
Host musi włączyć przenoszenie zadań RPA na podstawie możliwości chipa. Zapoznaj się z artykułem LE_Get_Vendor_Capabilities_Command
.
Każdy układ może mieć inny max_irk_list_sz
w oprogramowaniu układowym.
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
Event_cust_specific_feature_opcode |
1 oktet | 0x01 [Enable customer-specific feature] |
LE_RPA_offload: Add_IRK_to_list_sub_Command
Sub OCF: 0x02
Parametr podrzędnego polecenia | Rozmiar | Cel |
---|---|---|
LE_IRK |
16 oktetów | LE IRK (1. bajt LSB) |
Address_Type |
1 oktet |
0: Adres publiczny 1: Losowy adres |
LE_Device_Address |
6 oktetów | Publiczny lub losowy adres powiązany z IRK (1. bajt LSB) |
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
Event_cust_specific_feature_opcode |
1 oktet | 0x02 [Add IRK to the list] |
LE_IrkList_AvailableSpaces |
1 oktet | Dostępne pozycje na liście IRL po bieżącej operacji |
LE_RPA_offload: Remove_IRK_to_list_sub_Command
Sub OCF: 0x03
Parametr podrzędnego polecenia | Rozmiar | Cel |
---|---|---|
Address_Type |
1 oktet |
0: Adres publiczny 1: Losowy adres |
LE_Device_Address |
6 oktetów | Publiczny lub losowy adres powiązany z identyfikatorem IRK |
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
Event_cust_specific_feature_opcode |
1 oktet | 0x03 [Remove IRK from the list] |
LE_IrkList_AvailableSpaces |
1 oktet | Dostępne wpisy na liście IRL po bieżącej operacji |
LE_RPA_offload: Clear_IRK_list_sub_Command
Sub OCF: 0x04
Parametr podrzędnego polecenia | Rozmiar | Cel |
---|---|---|
Brak |
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
Event_cust_specific_feature_opcode |
1 oktet | 0x04 [Wyczyść listę IRK] |
LE_IrkList_AvailableSpaces |
1 oktet |
Dostępne wpisy na liście IRL po bieżącej operacji [max_irk_list_sz]
|
LE_RPA_offload: Read_IRK_list_sub_Command
Sub OCF: 0x05
Parametr podrzędnego polecenia | Rozmiar | Cel |
---|---|---|
LE_read_IRK_list_entry-index |
1 oktet | Indeks listy IRK [0, max_irk_list_sz-1] |
W przypadku tego polecenia zostanie wygenerowane zdarzenie „Command Complete”.
Parametr „return” | Rozmiar | Cel |
---|---|---|
Status |
1 oktet | Stan „Command Complete” |
Event_cust_specific_feature_opcode |
1 oktet | 0x05 [Read IRK List Entry] |
LE_Read_IRK_List_entry |
1 oktet | Indeks IRK, który host chce odczytać (maksymalna liczba IRK na liście to 32) |
LE_IRK |
16 oktetów | Wartość IRK |
Address_Type |
1 oktet |
0: Adres publiczny 1: Losowy adres |
LE_Device_Address |
6 oktetów | Publiczny lub losowy adres powiązany z IRK |
LE_Resolved_Private_Address |
6 oktetów | Aktualny rozwiązany adres prywatny tego IRK |