Interfejs kontrolera hosta (HCI) służy do interakcji z kontrolerem Bluetooth.
Ten dokument zawiera listę wymagań Bluetooth (BT) i Bluetooth Low Energy (BLE) HCI. Celem jest, aby dostawcy stosów Host BT i dostawcy kontrolerów BT spełniali wymagania tych platform, aby móc korzystać z zestawu funkcji opisanych poniżej.
W tym dokumencie specyfikacja Bluetooth Core 5.2 jest nazywana „specyfikacją”. Specyfikacja Bluetooth Core 5.2 jest dostępna na stronie internetowej Bluetooth SIG wraz z innymi przyjętymi dokumentami.
Ogólny przegląd projektu
Możliwości i konfiguracja chipów
Jako platforma otwarta, Android ma szereg wydań oprogramowania, producentów OEM, dostawców oraz możliwości platform i chipów.
Aby zarządzać zmiennym środowiskiem i zarządzać migracjami, w tym dokumencie opisano filozofię projektowania polegającą na umożliwieniu kontrolerom BT ujawnienia ich możliwości (wykraczających poza standardową specyfikację Bluetooth Core 5.2). Stos hosta BT może następnie wykorzystać te możliwości, aby określić, które funkcje włączyć.
Wspieranie otwartych standardów
Jednym z celów Androida jest obsługa otwartych standardów po ratyfikacji w specyfikacji Bluetooth. Jeśli funkcja opisana poniżej stanie się dostępna w standardowych metodach HCI w przyszłej specyfikacji Bluetooth, będziemy skłaniać się ku temu, aby podejście to było domyślne.
Możliwości specyficzne dla dostawcy
Polecenie specyficzne dla dostawcy: LE_Get_Vendor_Capabilities_Command
Pole poleceń OpCode (OCF): 0x153
Parametr polecenia | Rozmiar | Zamiar |
---|---|---|
NA | Pusta lista parametrów polecenia |
Dla tego polecenia zostanie wygenerowane zdarzenie Command Complete.
Parametr zwrotny | Rozmiar | Zamiar |
---|---|---|
Status | 1 oktet | Polecenie Zakończono stan |
max_advt_instances (przestarzałe) | 1 oktet | Liczba obsługiwanych wystąpień reklam. Zarezerwowane po wersji 0.98. Ten parametr jest przestarzały w specyfikacji funkcji Google w wersji 0.98 i nowszych na rzecz LE Extended Advertising dostępnej w specyfikacji BT w wersji 5.0 i nowszych. |
offloaded_resolution_of_private-address (przestarzałe) | 1 oktet | Możliwość chipa BT RPA. Jeśli jest obsługiwany przez chip, wymaga włączenia go przez hosta. 0 = Brak możliwości 1 = Zdolny Zarezerwowane po wersji 0.98. Ten parametr jest przestarzały w specyfikacji funkcji Google w wersji 0.98 i nowszych na rzecz funkcji prywatności dostępnej w specyfikacji BT w wersji 4.2 i nowszych. |
total_scan_results_storage | 2 oktety | Pamięć wyników skanowania w bajtach |
max_irk_list_sz | 1 oktet | Liczba wpisów IRK obsługiwanych w oprogramowaniu sprzętowym |
filtering_support | 1 oktet | Wsparcie dla 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 = Brak możliwości 1 = Zdolny |
version_supported | 2 oktety | Określa obsługiwaną wersję specyfikacji funkcji Google bajt[0] = Liczba główna bajt[1] = Liczba podrzędna v1.03 bajt[0] = 0x01 bajt[1] = 0x03 |
total_num_of_advt_tracked | 2 oktety | Całkowita liczba reklamodawców śledzonych dla celów OnLost / OnFound |
extended_scan_support | 1 oktet | Obsługuje rozszerzone okno skanowania i interwał |
debug_logging_supported | 1 oktet | Obsługuje rejestrowanie binarnych informacji debugowania ze sterownika |
LE_address_generation_offloading_support (przestarzałe) | 1 oktet | 0 = Nieobsługiwane 1 = obsługiwane Zarezerwowane po wersji 0.98. Ten parametr jest przestarzały w specyfikacji funkcji Google w wersji 0.98 i nowszych na rzecz funkcji prywatności dostępnej w specyfikacji BT w wersji 4.2 i nowszych. |
A2DP_source_offload_capability_mask | 4 oktety | Obsługiwane maski bitowe dla typów kodeków Bit 0 - SBC Bit 1 – AAC Bit 2 - APTX Bit 3 - APTX HD Bit 4 – LDAC Bit 5-31 są zarezerwowane |
bluetooth_quality_report_support | 1 oktet | Obsługuje raportowanie zdarzeń związanych z jakością Bluetooth 0 = Brak możliwości 1 = Zdolny |
dynamic_audio_buffer_support | 4 oktety | Obsługuje dynamiczny bufor audio w kontrolerze Bluetooth Obsługiwane maski bitowe dla typów kodeków Bit 0 - SBC Bit 1 – AAC Bit 2 - APTX Bit 3 - APTX HD Bit 4 – LDAC Bit 5-31 są zarezerwowane |
Grupowanie wyników skanowania
Celem projektu jest ulepszenie sposobu dostarczania powiadomień o zdarzeniach Bluetooth LE Scan Response do hosta, aby oszczędzać energię hosta.
Zmniejszając częstotliwość powiadamiania procesora aplikacji hosta o wynikach skanowania, procesor aplikacji hosta może dłużej pozostawać w stanie bezczynności/uśpienia. Zmniejsza to zużycie energii przez hosta. Parametr zwracany total_scan_results_storage
z LE_Get_Vendor_Capabilities_Command
wskazuje zdolność chipa do przechowywania wyników skanowania.
Ta funkcja koncentruje się na zarządzaniu i konfiguracji obiektu przechowywania wyników skanowania LE w kontrolerze Bluetooth. Pamięć służy do tymczasowego gromadzenia danych reklamowych oraz skanowania danych i metadanych otrzymanych przez administratora w celu późniejszego dostarczenia do hosta.
Oprogramowanie sprzętowe będzie obsługiwać dwa typy grupowania, które można włączyć jednocześnie:
- Kadłubowy. Zawiera następujące elementy informacyjne: {MAC, TX Power, RSSI, Timestamp}
- Pełny. Zawiera następujące elementy informacyjne: {MAC, moc TX, RSSI, znacznik czasu, dane Adv, odpowiedź skanowania}
LE_Batch_Scan_Command
OCF: 0x156
Parametr polecenia | Rozmiar | Zamiar |
---|---|---|
Batch_Scan_opcode | 1 oktet | 0x1 — Włącz funkcję specyficzną dla klienta 0x2 — Ustaw parametry przechowywania wsadowego skanowania 0x3 — Ustaw parametry skanowania wsadowego 0x4 - Odczytaj parametry wyniku skanowania wsadowego |
Dla tego polecenia zostanie wygenerowane zdarzenie Command Complete. Włączenie funkcji specyficznej dla klienta nie rozpoczyna skanowania.
Parametr zwrotny | Rozmiar | Zamiar |
---|---|---|
Status | 1 oktet | Polecenie Zakończono status |
Batch_Scan_opcode | 1 oktet | 0x1 — Włącz funkcję specyficzną dla klienta 0x2 — Ustaw parametry przechowywania wsadowego skanowania 0x3 — Ustaw parametry skanowania wsadowego 0x4 - Odczytaj parametry wyniku skanowania wsadowego |
LE_Batch_Scan_Command: Włącz funkcję specyficzną dla klienta
SubOCF: 0x01
Parametr podkomendy | Rozmiar | Zamiar |
---|---|---|
enable_customer_specific_feature_set | 1 oktet | 0x01 — Włącz funkcję skanowania wsadowego 0x00 — Wyłącz funkcję skanowania wsadowego |
Dla tego polecenia zostanie wygenerowane zdarzenie Command Complete.
Parametr zwrotny | Rozmiar | Zamiar |
---|---|---|
Status | 1 oktet | Polecenie Zakończono stan |
Batch_Scan_opcode | 1 oktet | 0x1 — Włącz funkcję specyficzną dla klienta 0x2 — Ustaw parametry przechowywania wsadowego skanowania 0x3 — Ustaw parametry skanowania wsadowego 0x4 - Odczytaj parametry wyniku skanowania wsadowego |
LE_Batch_Scan_Command: Ustawia podkomendę Parametr skanowania wsadowego pamięci
SubOCF: 0x02
Parametr podkomendy | Rozmiar | Zamiar |
---|---|---|
Batch_Scan_Full_Max | 1 oktet | Maksymalna powierzchnia magazynowa (w %) przeznaczona na pełny styl [Zakres: 0-100] |
Batch_Scan_Truncated_Max | 1 oktet | Maksymalna przestrzeń magazynowa (w%) przydzielona do stylu obciętego [Zakres: 0-100] |
Batch_Scan_Notify_Threshold | 1 oktet | Skonfiguruj poziom powiadomień (w %) dla pojedynczej puli pamięci [Zakres: 0-100] Ustawienie wartości 0 spowoduje wyłączenie powiadomień. Generowane jest zdarzenie HCI specyficzne dla dostawcy (podzdarzenie przekroczenia progu przechowywania) |
Dla tego polecenia zostanie wygenerowane zdarzenie Command Complete.
Parametr zwrotny | Rozmiar | Zamiar |
---|---|---|
Status | 1 oktet | Polecenie Zakończono stan |
Batch_scan_opcode | 1 oktet | 0x02 [Ustaw parametry skanowania wsadowego] |
LE_Batch_Scan_Command: Ustawia podkomendę Parametr skanowania wsadowego
SubOCF: 0x03
Parametr podkomendy | Rozmiar | Zamiar |
---|---|---|
Batch_Scan_Mode | 1 oktet | 0x00 – Skanowanie wsadowe jest wyłączone 0x01 – Włączono tryb obcięty 0x02 – Tryb pełny jest włączony 0x03 – Włączono tryb skrócony i pełny |
Duty_cycle_scan_window | 4 oktety | Czas skanowania wsadowego (liczba szczelin) |
Duty_cyle_scan_interval | 4 oktety | Okres interwału skanowania wsadowego (liczba szczelin) |
own_address_type | 1 oktet | 0x00 — Adres urządzenia publicznego 0x01 — Losowy adres urządzenia |
Batch_scan_Discard_Rule | 1 oktet | 0 - Odrzuć najstarsze ogłoszenie 1 - Odrzuć reklamę z najsłabszym RSSI |
To polecenie podrzędne rozpocznie skanowanie wsadowe, jeśli jest włączone. W przypadku skanowania obciętego wyniki są przechowywane w formie skróconej, gdzie unikalny klucz stylu obciętego = { BD_ADDR,
odstęp_skanowania}. Oznacza to, że dla każdego interwału skanowania zostanie zarejestrowany tylko jeden BD_ADDR will
. Rekord, jaki należy zachować w trybie skróconym, jest następujący: { BD_ADDR
, Tx Power, RSSI, Timestamp}
Gdy włączony jest tryb pełny, używane będzie aktywne skanowanie i rejestrowane będą odpowiedzi na skanowanie. Unikalny klucz pełnego stylu = {MAC, pakiet reklam}, niezależnie od interwału skanowania. Rekord, który należy zachować dla trybu pełnego, to { BD_ADDR
, moc Tx, RSSI, znacznik czasu, pakiet reklam, odpowiedź skanowania}. W trybie pełnym ten sam pakiet AD, oglądany wielokrotnie w różnych odstępach czasu, jest rejestrowany tylko raz. Jednakże w trybie obciętym interesująca jest widoczność BA_ADDR
w różnych interwałach skanowania (raz na interwał skanowania). RSSI to średnia wartość wszystkich duplikatów unikalnej reklamy w interwale skanowania.
Dla tego polecenia zostanie wygenerowane zdarzenie Command Complete.
Parametr zwrotny | Rozmiar | Zamiar |
---|---|---|
Status | 1 oktet | Polecenie Zakończono stan |
Batch_scan_opcode | 1 oktet | 0x03 [Ustaw parametry skanowania wsadowego] |
LE_Batch_Scan_Command: Podkomenda Przeczytaj wyniki skanowania wsadowego
SubOCF: 0x04
Parametr podkomendy | Rozmiar | Zamiar |
---|---|---|
Batch_Scan_Data_read | 1 oktet | 0x01 – Dane w trybie obciętym 0x02 – Dane trybu pełnego |
Dla tego polecenia zostanie wygenerowane zdarzenie Command Complete. Gdy host wyda to polecenie, wszystkie wyniki w kontrolerze mogą nie zmieścić się w jednym zdarzeniu Ukończenie polecenia. Host będzie powtarzał wydawanie tego polecenia, aż odpowiednie wyniki w zdarzeniu Command Complete wskażą 0 w liczbie rekordów, co oznacza, że kontroler nie ma więcej rekordów do przekazania hostowi. Każde zdarzenie Command Complete może zawierać wiele rekordów tylko jednego typu danych (pełne lub obcięte).
Odniesienia do czasu kontrolera i hosta nie są zsynchronizowane. Jednostką znacznika czasu jest 50 ms. Wartość znacznika czasu jest oparta na dacie Read_Batch_Scan_Results_Sub_cmd
od hosta. Jeśli czas nadejścia polecenia w oprogramowaniu sprzętowym to T_c
, wówczas rzeczywisty czas pobrania znacznika czasu w oprogramowaniu wynosi T_fw
. Czas raportowania będzie wynosił: ( T_c
- T_fw
). T_c
i T_fw
znajdują się w domenie czasu oprogramowania sprzętowego. Dzięki temu gospodarz może obliczyć, jak dawno temu miało miejsce zdarzenie.
Parametr zwrotny | Rozmiar | Zamiar |
---|---|---|
Status | 1 oktet | Polecenie Zakończono stan |
Batch_scan_opcode | 1 oktet | 0x03 [Ustaw parametry skanowania wsadowego] |
Batch_Scan_data_read | 1 oktet | Określa format (obcięty lub pełny) |
num_of_records | 1 oktet | Liczba rekordów Batch_Scan_data_read |
format_of_data | Zmienny | Tryb skrócony: Adres[0]: 6 oktetów Typ_adresu[0]: 1 oktet Tx_Pwr[0]: 1 oktet RSSI[0] : 1 oktet Znacznik 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 Tx_Pwr[0]: 1 oktet RSSI[0]: 1 oktet Znacznik czasu[0]: 2 oktety Adv package_len[0]: 1 oktet Adv_packet[0]: Adv_packet_len oktety Scan_data_resp_len[0]: 1 oktet Scan_data_resp[0]: Oktety Scan_data_resp [wiele rekordów w powyższym formacie ( num_of_records )] |
Filtr zawartości pakietów reklamowych
Użyj tej opcji, aby włączyć/wyłączyć/skonfigurować filtr zawartości pakietów reklamowych (APCF) w kontrolerze. APCF filtruje raporty reklamowe w kontrolerze, ale nie filtruje reklam okresowych.
LE_APCF_Polecenie
OCF: 0x157
Parametr polecenia | Rozmiar | Zamiar |
---|---|---|
APCF_opcode | 1 oktet | 0x00 — Włącz APCF 0x01 - APCF Ustaw parametry filtrowania 0x02 — Adres nadawcy APCF 0x03 — UUID usługi APCF 0x04 — UUID żądania usługi APCF 0x05 — nazwa lokalna APCF 0x06 — Dane producenta APCF 0x07 — Dane usługi APCF 0x08 — Usługa wykrywania transportu APCF 0x09 — Filtr typu AD APCF 0x10 ~ 0xAF - Zarezerwowane do wykorzystania w przyszłości 0xB0 ~ 0xDF - Zarezerwowane dla dostawcy 0xE0 ~ 0xFE - Zarezerwowane do wykorzystania w przyszłości 0xFF - APCF Przeczytaj rozszerzone funkcje |
Dla tego polecenia zostanie wygenerowane zdarzenie Command Complete.
Parametr zwrotny | Rozmiar | Zamiar |
---|---|---|
Status | 1 oktet | Stan zwrotu |
APCF_opcode | 1 oktet | 0x00 — Włącz APCF 0x01 - APCF Ustaw parametry filtrowania 0x02 — Adres nadawcy APCF 0x03 — UUID usługi APCF 0x04 — UUID żądania usługi APCF 0x05 — nazwa lokalna APCF 0x06 — Dane producenta APCF 0x07 — Dane usługi APCF 0x08 — Usługa wykrywania transportu APCF 0x09 — Filtr typu AD APCF 0x10 ~ 0xAF - Zarezerwowane do wykorzystania w przyszłości 0xB0 ~ 0xDF - Zarezerwowane dla dostawcy 0xE0 ~ 0xFE - Zarezerwowane do wykorzystania w przyszłości 0xFF - APCF Przeczytaj rozszerzone funkcje |
LE_APCF_Command: Włącz_sub_cmd
SubOCF: 0x00
Parametr podkomendy | Rozmiar | Zamiar |
---|---|---|
APCF_enable | 1 oktet | 0x01 — Włącz funkcję APCF 0x00 — Wyłącz funkcję APCF |
Dla tego polecenia zostanie wygenerowane zdarzenie Command Complete.
Parametr zwrotny | Rozmiar | Zamiar |
---|---|---|
Status | 1 oktet | Polecenie Zakończono status |
APCF_opcode | 1 oktet | 0x0 — APCF włączone |
APCF_Enable | 1 oktet | Włącz/wyłącz ustawia się za pomocą APCF_enable |
LE_APCF_Command: set_filtering_parameters_sub_cmd
To polecenie podrzędne służy do dodawania lub usuwania specyfikacji filtra lub czyszczenia listy filtrów w celu filtrowania na chipie.
SubOCF: 0x01
Parametr podkomendy | Rozmiar | Zamiar |
---|---|---|
APCF_Action | 1 oktet | 0x00 - Dodaj 0x01 — Usuń 0x02 - Wyczyść Usuń spowoduje wyczyszczenie określonego filtru wraz z powiązanymi wpisami funkcji w innych tabelach. Wyczyść spowoduje wyczyszczenie 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 obiektów: Bit 0: Ustaw, aby włączyć filtr adresu rozgłoszeniowego Bit 1: Ustaw, aby włączyć filtr zmiany danych serwisowych Bit 2: Ustaw, aby włączyć sprawdzanie UUID usługi Bit 3: Ustaw, aby włączyć sprawdzanie UUID żądania usługi Bit 4: Ustaw, aby włączyć sprawdzanie nazwy lokalnej Bit 5: Ustaw, aby włączyć kontrolę danych producenta Bit 6: Ustaw, aby włączyć sprawdzanie danych serwisowych Bit 7: Ustaw, aby włączyć sprawdzanie usługi wykrywania transportu Bit 8: Ustaw, aby włączyć kontrolę typu AD |
APCF_List_Logic_Type | 2 oktety | Operacja logiczna dla każdego wyboru funkcji (na pozycję bitową) określonej w APCF_Feature_Selection .Obowiązuje tylko wtedy, gdy funkcja jest włączona. Wartość pozycji bitu: 0: LUB 1: ORAZ Jeśli zostanie wybrana logika „AND”, pakiet ADV przejdzie przez filtr tylko wtedy, gdy zawiera WSZYSTKIE wpisy na liście. Jeśli zostanie wybrana logika „OR”, pakiet ADV przejdzie przez filtr, jeśli zawiera którykolwiek z wpisów na liście. |
APCF_Filter_Logic_Type | 1 oktet | 0x00: LUB 0x01: ORAZ Uwaga: Typ logiczny to N/A dla pierwszych trzech pól APCF_Feature_Selection , co zawsze jest logiką „AND”. Mają one zastosowanie tylko do (Bit 3 - Bit 6) czterech pól APCF_Feature_Selection . |
rssi_high_thresh | 1 oktet | [w dBm] Reklamodawca jest uważany za widocznego tylko wtedy, gdy sygnał jest wyższy niż wysoki próg RSSI. W przeciwnym razie oprogramowanie sprzętowe 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 ma on_found .[w milisekundach] Czas, aby oprogramowanie sprzętowe pozostało i zebrało dodatkowe reklamy przed zgłoszeniem. |
onfound_timeout_cnt | 1 oktet | Obowiązuje tylko wtedy, gdy delivery_mode ma on_found .[liczyć] Jeśli reklama w onFound pozostaje w oprogramowaniu sprzętowym przez czas onfound_timeout , zbierze kilka reklam i zostanie sprawdzony ich licznik. Jeśli liczba przekroczy onfound_timeout_cnt , zostanie ona natychmiast zgłoszona OnFound . |
rssi_low_thresh | 1 oktet | Obowiązuje tylko wtedy, gdy delivery_mode ma on_found .[w dBm] Pakiet reklamodawcy jest uważany za niewidoczny, jeśli RSSI odebranego pakietu nie przekracza dolnego progu RSSI. |
onlost_timeout | 2 oktety | Obowiązuje tylko wtedy, gdy delivery_mode ma on_found .[w milisekundach] Jeśli reklama po znalezieniu nie będzie wyświetlana w sposób ciągły przez okres lost_timeout , zostanie natychmiast zgłoszona jako utracona. |
num_of_tracking_entries | 2 oktety | Obowiązuje tylko wtedy, gdy delivery_mode ma on_found .[liczyć] Całkowita liczba reklamodawców do śledzenia według filtra. |
Wartości RSSI muszą zawierać uzupełnienie do 2, aby reprezentować wartości ujemne.
Host będzie mógł skonfigurować wiele filtrów z APCF_Application_Address_type
ustawionym na 0x02 (dla wszystkich adresów nadawcy), aby zarządzać różnymi kombinacjami filtrów.
Filtrowanie, grupowanie i raportowanie to pojęcia ze sobą powiązane. Każda reklama i powiązana z nią odpowiedź skanowania będą musiały przejść przez wszystkie filtry, jeden po drugim. Zatem wynikowe działania ( delivery_mode
) są ściśle powiązane z filtrowaniem. Tryby dostarczania są następujące: report_immediately
, batch
i onFound
. Wartość OnLost
jest powiązana z OnFound
w tym sensie, że w przypadku utraty pojawi się po OnFound
.
Ten przepływ przetwarzania przedstawia model koncepcyjny:
Po odebraniu ramki ogłoszenia (lub odpowiedzi na skanowanie) jest ona stosowana do wszystkich filtrów w kolejności szeregowej. Możliwe jest, że reklama może spowodować natychmiastowe raportowanie w oparciu o jeden filtr i grupowanie tego samego w wyniku innego działania filtra.
Progi poziomu RSSI (wysoki i dolny) dają możliwość kontrolowania, kiedy ramka jest widoczna dla przetwarzania filtra, nawet jeśli kontroler odbierze ważny pakiet. W przypadku ustawienia trybu dostarczania na natychmiastowy lub wsadowy, RSSI ramki jest uwzględniany w dalszym przetwarzaniu przez kontroler. Różne aplikacje wymagają różnych zachowań w zakresie raportowania i przetwarzania wsadowego. Dzięki temu wiele aplikacji może jednocześnie bezpośrednio raportować i/lub grupować wyniki w oprogramowaniu sprzętowym. Przykładem może być sytuacja, gdy skanowanie wsadowe jest aktywne z jednej aplikacji, a później przeprowadzane jest zwykłe skanowanie LE z innej aplikacji. Przed wykonaniem skanowania wsadowego framework/aplikacja ustawia odpowiednie filtry. Później, gdy druga aplikacja wykona regularne skanowanie, poprzednie przetwarzanie wsadowe będzie kontynuowane. Jednak ze względu na regularne skanowanie przypomina to koncepcyjne dodanie filtra zerowego (wraz ze wszystkimi istniejącymi filtrami) wraz z poleceniem skanowania LE. Parametry polecenia skanowania LE mają pierwszeństwo, gdy są aktywne. Gdy zwykłe skanowanie LE zostanie wyłączone, sterownik powróci do poprzedniego skanowania wsadowego, jeśli istniało.
Tryb dostarczania OnFound
opiera się na skonfigurowanych filtrach. Kombinacja, która wyzwala akcję filtru, która zakończyła się sukcesem, jest uważana za jednostkę do śledzenia dla onLost
. Odpowiednie zdarzenie to podzdarzenie śledzenia LE Advt.
Przejście OnFound/OnLost
dla filtra (jeśli jest włączone) będzie wyglądać następująco:
Dla tego polecenia zostanie wygenerowane zdarzenie Command Complete.
Parametr zwrotny | Rozmiar | Zamiar |
---|---|---|
Status | 1 oktet | Polecenie Zakończono stan |
APCF_opcode | 1 oktet | 0x01 - APCF Ustaw parametry filtrowania |
APCF_Action | 1 oktet | Powtórz komendę APCF_Action |
APCF_AvailableSpaces | 1 oktet | Liczba dostępnych wpisów w tabeli filtrów |
LE_APCF_Command: adres_rozgłoszeniowy_sub_cmd
To polecenie podrzędne służy do dodawania lub usuwania adresu reklamodawcy lub do czyszczenia listy adresów reklamodawcy w celu filtrowania na chipie.
SubOCF: 0x02
Parametr podkomendy | Rozmiar | Zamiar |
---|---|---|
APCF_Action | 1 oktet | 0x00 - Dodaj 0x01 — Usuń 0x02 - Wyczyść Usuń usunie określony adres nadawcy w określonym filtrze. Opcja Clear usunie wszystkie adresy nadawców w określonym filtrze. |
APCF_Filter_Index | 1 oktet | Indeks filtra (0, max_filter-1 ) |
APCF_Broadcaster_Address | 6 oktetu | 6-bajtowy adres urządzenia, który można dodać lub usunąć z listy adresów nadawcy |
APCF_Application_Address_type | 1 oktet | 0x00: Publiczne 0x01: Losowe 0x02: NA (nie dotyczy typu adresu) |
Dla tego polecenia zostanie wygenerowane zdarzenie Command Complete.
Parametr zwrotny | Rozmiar | Zamiar |
---|---|---|
Status | 1 oktet | Polecenie Zakończono stan |
APCF_opcode | 1 oktet | 0x02 — Adres nadawcy APCF |
APCF_Action | 1 oktet | Powtórz komendę APCF_Action |
APCF_AvailableSpaces | 1 oktet | Liczba wolnych wpisów nadal dostępnych w tabeli Adresów rozgłoszeniowych |
LE_APCF_Command: service_uuid_sub_cmd
Ta komenda podrzędna służy do dodawania lub usuwania identyfikatora UUID usługi lub czyszczenia listy identyfikatorów UUID usług w celu filtrowania na chipie.
SubOCF: 0x03
Parametr podkomendy | Rozmiar | Zamiar |
---|---|---|
APCF_Action | 1 oktet | 0x00 - Dodaj 0x01 — Usuń 0x02 - Wyczyść Usuń usunie określony adres UUID usługi w określonym filtrze. Wyczyść wyczyści wszystkie identyfikatory UUID usług w określonym filtrze. |
APCF_Filter_Index | 1 oktet | Indeks filtra (0, max_filter -1) |
APCF_UUID | 2,4,16 oktetu | Identyfikator UUID usługi (16-bitowy, 32-bitowy lub 128-bitowy) umożliwiający dodawanie do listy lub usuwanie z niej. |
APCF_UUID_MASK | 2,4,16 oktetu | Maska UUID usługi (16-bitowa, 32-bitowa lub 128-bitowa), którą chcesz dodać do listy. Powinien mieć taką samą długość jak APCF_UUID. |
Dla tego polecenia zostanie wygenerowane zdarzenie Command Complete.
Parametr zwrotny | Rozmiar | Zamiar |
---|---|---|
Status | 1 oktet | Polecenie Zakończono stan |
APCF_opcode | 1 oktet | 0x03 — UUID usługi APCF |
APCF_Action | 1 oktet | Powtórz komendę APCF_Action |
APCF_AvailableSpaces | 1 oktet | Liczba wolnych wpisów nadal dostępnych w tabeli UUID usługi |
LE_APCF_Command: solicitation_uuid_sub_cmd
Ta komenda podrzędna służy do dodawania lub usuwania UUID żądania lub do czyszczenia listy UUID żądania na potrzeby filtrowania na chipie.
SubOCF: 0x04
Parametr podkomendy | Rozmiar | Zamiar |
---|---|---|
APCF_Action | 1 oktet | 0x00 - Dodaj 0x01 — Usuń 0x02 - Wyczyść Usuń usunie adres UUID żądania w określonym filtrze. Opcja Clear wyczyści wszystkie identyfikatory UUID żądań w określonym filtrze. |
APCF_Filter_Index | 1 oktet | Indeks filtra (0, max_filter -1) |
APCF_UUID | 2,4,16 oktetu | Identyfikator UUID zaproszenia (16-bitowy, 32-bitowy lub 128-bitowy), który ma zostać dodany do listy lub usunięty z niej. |
APCF_UUID_MASK | 2,4,16 oktetu | Maska UUID żądania (16-bitowa, 32-bitowa lub 128-bitowa), którą należy dodać do listy. Powinien mieć tę samą długość co APCF_UUID . |
Dla tego polecenia zostanie wygenerowane zdarzenie Command Complete.
Parametr zwrotny | Rozmiar | Zamiar |
---|---|---|
Status | 1 oktet | Polecenie Zakończono stan |
APCF_opcode | 1 oktet | 0x04 — UUID żądania APCF |
APCF_Action | 1 oktet | Powtórz komendę APCF_Action |
APCF_AvailableSpaces | 1 oktet | Liczba wolnych wpisów nadal dostępnych w tabeli UUID zamówienia |
LE_APCF_Command: nazwa_lokalna_sub_cmd
To polecenie podrzędne służy do dodawania lub usuwania ciągu nazw lokalnych lub czyszczenia listy ciągów nazw lokalnych na potrzeby filtrowania w chipie.
SubOCF: 0x05
Parametr podkomendy | Rozmiar | Zamiar |
---|---|---|
APCF_Action | 1 oktet | 0x00 - Dodaj 0x01 — Usuń 0x02 - Wyczyść Usuń usunie określony ciąg nazwy lokalnej w określonym filtrze. Opcja Clear wyczyści wszystkie ciągi nazw lokalnych 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 Command Complete.
Parametr zwrotny | Rozmiar | Zamiar |
---|---|---|
Status | 1 oktet | Polecenie Zakończono stan |
APCF_opcode | 1 oktet | 0x05 — nazwa lokalna APCF |
APCF_Action | 1 oktet | Powtórz komendę APCF_Action |
APCF_AvailableSpaces | 1 oktet | Liczba wolnych wpisów nadal dostępnych w tabeli nazw lokalnych |
LE_APCF_Command: manf_data_sub_cmd
Ta komenda podrzędna służy do dodawania lub usuwania ciągu danych producenta lub do czyszczenia listy ciągów danych producenta na potrzeby filtrowania w chipie.
SubOCF: 0x06
Parametr podkomendy | Rozmiar | Zamiar |
---|---|---|
APCF_Action | 1 oktet | 0x00 - Dodaj 0x01 — Usuń 0x02 - Wyczyść Usuń usunie określony ciąg danych producenta w określonym filtrze. Wyczyść spowoduje wyczyszczenie wszystkich ciągów danych producenta 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 danych producenta. Uwagi:
|
APCF_ManData_Mask | Zmienny rozmiar | Maska danych producenta do dodania do listy. Powinien mieć tę samą długość co APCF_LocName_or_ManData_or_SerData . |
Dla tego polecenia zostanie wygenerowane zdarzenie Command Complete.
Parametr zwrotny | Rozmiar | Zamiar |
---|---|---|
Status | 1 oktet | Polecenie Zakończono status |
APCF_opcode | 1 oktet | 0x06 — Dane producenta APCF |
APCF_Action | 1 oktet | Powtórz komendę APCF_Action |
APCF_AvailableSpaces | 1 oktet | Liczba wolnych wpisów nadal dostępnych w tabeli Dane producenta |
LE_APCF_Command: service_data_sub_cmd
Ta komenda podrzędna służy do dodawania lub usuwania ciągu danych serwisowych lub do czyszczenia listy ciągów danych serwisowych na potrzeby filtrowania w chipie.
SubOCF: 0x07
Parametr podkomendy | Rozmiar | Zamiar |
---|---|---|
APCF_Action | 1 oktet | 0x00 - Dodaj 0x01 — Usuń 0x02 - Wyczyść Usuń usunie określony ciąg danych usługi w określonym filtrze. Opcja Clear wyczyści wszystkie ciągi danych usługi w określonym filtrze. |
APCF_Filter_Index | 1 oktet | Indeks filtra (0, max_filter -1) |
APCF_LocName_Mandata_or_SerData | Zmienny rozmiar | Ciąg znaków dla danych usługi. Uwagi:
|
APCF_LocName_Mandata_or_SerData_Mask | Zmienny rozmiar | Maska danych usługi, która ma zostać dodana do listy. Powinien mieć tę samą długość co APCF_LocName_or_ManData_or_SerData. |
Dla tego polecenia zostanie wygenerowane zdarzenie Command Complete.
Parametr zwrotny | Rozmiar | Zamiar |
---|---|---|
Status | 1 oktet | Polecenie Zakończono stan |
APCF_opcode | 1 oktet | 0x07 — Dane usługi APCF |
APCF_Action | 1 oktet | Powtórz komendę APCF_Action |
APCF_AvailableSpaces | 1 oktet | Liczba wolnych wpisów nadal dostępnych w tabeli danych usług |
LE_APCF_Command: ad_type_sub_cmd
Ta komenda podrzędna służy do dodawania lub usuwania typu AD lub do czyszczenia listy typów AD w celu filtrowania na chipie. Użyj read_extended_features_sub_cmd
, aby sprawdzić, czy to polecenie jest obsługiwane, czy nie.
SubOCF: 0x09
Parametr podkomendy | Rozmiar | Zamiar |
---|---|---|
APCF_Action | 1 oktet | 0x00 - Dodaj 0x01 — Usuń 0x02 - Wyczyść Usuń usunie określony typ reklamy w określonym filtrze. Wyczyść wyczyści wszystkie typy reklam w określonym filtrze. |
APCF_Filter_Index | 1 oktet | Indeks filtra (0, max_filter -1) |
APCF_AD_TYPE | 1 oktet | Typ usługi AD do dodania lub usunięcia z listy. Ignoruj, gdy APCF_Action ma wartość 0x02 (Wyczyść) |
APCF_AD_DATA_Length | Zmienny rozmiar | 0x00 - oznacza, że nie filtruj zawartości danych Ignoruj, gdy APCF_Action ma wartość 0x02 (Wyczyść) |
APCF_AD_DATA | Zmienny rozmiar | Ignoruj, gdy APCF_Action ma wartość 0x02 (Wyczyść) |
APCF_AD_DATA_MASK | Zmienny rozmiar | Ignoruj, gdy APCF_Action ma wartość 0x02 (Wyczyść) Powinien mieć tę samą długość co APCF_AD_DATA . |
Dla tego polecenia zostanie wygenerowane zdarzenie Command Complete.
Parametr zwrotny | Rozmiar | Zamiar |
---|---|---|
Status | 1 oktet | Polecenie Zakończono stan |
APCF_opcode | 1 oktet | 0x09 — typ reklamy APCF |
APCF_Action | 1 oktet | Powtórz komendę APCF_Action |
APCF_AvailableSpaces | 1 oktet | Liczba wolnych wpisów nadal dostępnych w tabeli typów AD |
LE_APCF_Command: read_extended_features_sub_cmd
Ta komenda podrzędna służy do odczytywania rozszerzonych funkcji APCF.
SubOCF: 0xFF
Parametr podkomendy | Rozmiar | Zamiar |
---|---|---|
Nie dotyczy | Pusty parametr polecenia. |
Dla tego polecenia zostanie wygenerowane zdarzenie Command Complete.
Parametr zwrotny | Rozmiar | Zamiar |
---|---|---|
Status | 1 oktet | Polecenie Zakończono status |
APCF_opcode | 1 oktet | 0xFF - APCF_Read_Extended_Features |
APCF_extended_features | 2 oktet | Obsługiwane maski bitowe dla rozszerzonych funkcji:
Wartość bitu
|
Aktywność sterownika i polecenie dotyczące informacji o energii
Celem tych informacji jest umożliwienie wyższym funkcjom systemu hosta przeanalizowanie całkowitej aktywności wszystkich komponentów, w tym kontrolera BT i jego stanu makro, w powiązaniu z tym, co dzieje się w aplikacjach i środowisku. W tym celu wymagane są następujące informacje ze stosu BT i kontrolera:
- Stos BT: Raportowanie aktualnego stanu makrooperacyjnego sterownika
- Oprogramowanie układowe: raportowanie zbiorczej aktywności i informacji o energii
Stany makro stosu hosta BT określone na poziomie użytkownika:
- Bezczynny: [skanowanie strony, reklama LE, skanowanie zapytania]
- Skanowanie: [stronicowanie/zapytanie/próba połączenia]
- Aktywne: [łącze ACL włączone, łącze SCO w toku, tryb sniffowania]
Czynności, które sterownik śledzi przez cały okres jego użytkowania, to czas Tx, czas Rx, czas bezczynności i całkowite zużycie energii. Są usuwane po odczytaniu z hosta.
LE_Get_Controller_Activity_Energy_Info
Jest to polecenie specyficzne dla dostawcy.
OCF: 0x159
Parametr podkomendy | Rozmiar | Zamiar |
---|---|---|
NA | Puste parametry poleceń |
Dla tego polecenia zostanie wygenerowane zdarzenie Command Complete.
Parametr zwrotny | Rozmiar | Zamiar |
---|---|---|
Status | 1 oktet | Polecenie Zakończono stan |
total_tx_time_ms | 4 oktety | Całkowity czas wykonywania Tx |
total_rx_time_ms | 4 oktety | Całkowity czas wykonywania Rx |
total_idle_time_ms | 4 oktety | Całkowity czas bezczynności (stany niskiego poboru mocy inne niż uśpienie) |
total_energy_used | 4 oktety | Całkowita zużyta energia [iloczyn prądu (mA), napięcia (V) i czasu (ms)] |
LE rozszerzone polecenie ustawiania parametrów skanowania
Tego polecenia można użyć do włączenia większego okna skanowania i interwału w kontrolerze. Zgodnie ze specyfikacją BT Core 5.2 okno skanowania i interwał mają górną granicę wynoszącą 10,24 sekundy, co utrudnia aplikacjom dłuższe interwały skanowania przekraczające 10,24 sekundy.
Odniesienie bazowe: Specyfikacja BT Core 5.2, strona 2493 (Polecenie LE Set Scan Parameters)
OCF: 0x15A
Parametr polecenia | Rozmiar | Zamiar |
---|---|---|
LE_Ex_Scan_Type | 1 oktet | 0x00 - Skanowanie pasywne. Żadne pakiety SCAN_REQ nie będą wysyłane (domyślnie).0x01 - Aktywne skanowanie. Można wysyłać pakiety SCAN_REQ . |
LE_Ex_Scan_Interval | 4 oktety | Zdefiniowany jako odstęp czasu od rozpoczęcia przez kontroler ostatniego skanowania LE do rozpoczęcia kolejnego skanowania LE. Zakres: 0x0004 do 0x00FFFFFF Wartość domyślna: 0x0010 (10 ms) Czas = N * 0,625 ms Zakres czasu: 2,5 ms do 10442,25 sekundy |
LE_Ex_Scan_Window | 4 oktety | Czas trwania skanowania LE. LE_Scan_Window powinien być mniejszy lub równy LE_Scan_Interval .Zakres: 0x0004 do 0xFFFF Wartość domyślna: 0x0010 (10 ms) Czas = N * 0,625 ms Zakres czasu: 2,5 ms do 40,95 sekundy |
Own_Address_Type | 1 oktet | 0x00 — Adres urządzenia publicznego (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ą adresowane do tego urządzenia, będą ignorowane. 0x01 — Ignoruj pakiety reklam z urządzeń, które nie znajdują się na liście Tylko białej listy. Pakiety reklam kierowanych, które nie są adresowane do tego urządzenia, będą ignorowane. |
Dla tego polecenia zostanie wygenerowane zdarzenie Command Complete.
Parametr zwrotny | Rozmiar | Zamiar |
---|---|---|
Status | 1 oktet | Polecenie Zakończono stan |
Pobierz polecenie informacji o debugowaniu kontrolera
Celem tego elementu informacyjnego jest uzyskanie przez hosta informacji o debugowaniu kontrolera w formie binarnej w celu przetwarzania końcowego i analizy. Pomaga to w rozwiązywaniu problemów w terenie i zapewnia inżynierom zestaw narzędzi do rejestrowania informacji do analizy. Kontroler może dostarczyć informacje na żądanie hosta za pośrednictwem zdarzenia (podzdarzenie Informacje o debugowaniu kontrolera) lub autonomicznie, jeśli administrator sobie tego życzy. Przykładowe zastosowania mogą obejmować raportowanie informacji o stanie oprogramowania sprzętowego, informacji o zrzucie awaryjnym, informacji o rejestrowaniu itp.
OCF: 0x15B
Parametr polecenia | Rozmiar | Zamiar |
---|---|---|
Nie dotyczy | Pusta lista parametrów polecenia |
Dla tego polecenia zostanie wygenerowane zdarzenie Command Complete.
Parametr zwrotny | Rozmiar | Zamiar |
---|---|---|
Status | 1 oktet | Polecenie Zakończono stan |
Obsługa odciążania sprzętu A2DP
Funkcja A2DP Offload obsługuje odciążanie procesu kodowania dźwięku A2DP do procesora dźwięku podłączonego do kontrolera BT. Zakodowany strumień danych audio przechodzi bezpośrednio z procesora audio do kontrolera BT bez udziału hosta BT. Host BT jest nadal odpowiedzialny za konfigurację i kontrolę sesji A2DP. Dostępne są dwie wersje poleceń. Starsze polecenia z Sub OCF 0x01-0x02 obsługują tylko kodeki typu open source. Wersje z Sub-OCF 0x02-0x03 są niezależne od skonfigurowanego kodeka.
OCF: 0x15D
Rozpocznij odciążanie A2DP (starsza wersja)
SubOCF: 0x01
Użyj tego polecenia zarówno do skonfigurowania procesu odciążania A2DP, jak i do uruchomienia strumienia A2DP.
Parametr polecenia | Rozmiar | Zamiar |
---|---|---|
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ść zerowa wyłącza spłukiwanie. |
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 | Zakodowana szybkość transmisji dźwięku w bitach na sekundę. 0x00000000 - Szybkość transmisji audio nie jest określona/nieużywana. 0x00000001 - 0x00FFFFFF - Szybkość transmisji zakodowanego dźwięku w bitach na sekundę. 0x01000000 - 0xFFFFFFFF - Zarezerwowane. |
Connection_Handle | 2 oktety | Connection Uchwyt konfigurowanego połączenia A2DP |
L2CAP_Channel_ID | 2 oktety | Identyfikator kanału L2CAP, który ma być używany dla tego połączenia A2DP |
L2CAP_MTU_Size | 2 oktety | Maksymalny rozmiar jednostki MTU L2CAP zawierającej zakodowane pakiety audio |
Codec_Information | 32 oktety | Informacje specyficzne dla kodeków. Kodek SBC: Patrz elementy informacyjne specyficzne dla kodeka SBC w A2DP v1.3. Kodek AAC: Zapoznaj się z elementami informacyjnymi dotyczącymi konkretnego kodeka AAC w A2DP v1.3 Kodek LDAC: Oktet 0-3: Identyfikator dostawcy Oktet 4-5: Identyfikator kodeka Oktet 6: Indeks szybkości transmisji: Oktet 7: Tryb kanału LDAC Oktet 8-31: zarezerwowane Wszystkie inne kodeki: Oktet 0-31: zarezerwowany |
Dla tego polecenia zostanie wygenerowane zdarzenie Command Complete.
Parametr zwrotny | Rozmiar | Zamiar |
---|---|---|
Status | 1 oktet | Polecenie Zakończono stan |
Sub_Opcode | 1 oktet | 0x01 — Rozpocznij odciążanie A2DP |
Rozpocznij odciążanie A2DP
SubOCF: 0x03
Użyj tego polecenia zarówno do skonfigurowania procesu odciążania A2DP, jak i do uruchomienia strumienia A2DP.
Parametr polecenia | Rozmiar | Zamiar |
---|---|---|
Connection Handle | 2 oktety | Uchwyt aktywnego połączenia HCI |
L2CAP_Channel_ID | 2 oktety | Identyfikator kanału L2CAP otwartego dla przesyłania strumieniowego A2DP |
Data_Path_Direction | 1 oktet | 0x00 - Wyjście (źródło/łączenie AVDTP) 0x01 — wejście (ujście/podział AVDTP) |
Peer_MTU | 2 oktety | Maksymalny rozmiar pakietów L2CAP negocjowany z peerem. |
CP_Enable_SCMS_T | 1 oktet | 0x00 — Wyłącz nagłówek ochrony zawartości SCMS-T 0x01 — Włącz nagłówek ochrony treści SCMS-T |
CP_Header_SCMS_T | 1 oktet | Gdy nagłówek ochrony treści SCMS-T jest włączony ( CP_SCMS_T_Enable ustawiony na 0x01), definiuje wartość nagłówka poprzedzającą treść audio (patrz A2DP, sekcja 3.2.1-2) zgodnie z definicją przydzielonych numerów Bluetooth, sekcja 6.3.2.Ignorowane, gdy ochrona zawartości SCMS-T nie jest włączona. |
Vendor_Specific_Parameters_Length | 1 oktet | Długość parametrów specyficznych dla dostawcy w zakresie od 0 do 128. Wartość 0 jest używana, gdy nie podano żadnych dodatkowych parametrów. |
Vendor_Specific_Parameters | 0-128 oktetów | Parametry specyficzne dla dostawcy dostarczane przez warstwę HAL Bluetooth Audio, CodecParameters.vendorSpecificParameters[] |
Dla tego polecenia zostanie wygenerowane zdarzenie Command Complete.
Parametr zwrotny | Rozmiar | Zamiar |
---|---|---|
Status | 1 oktet | Polecenie Zakończono stan |
Sub_Opcode | 1 oktet | 0x03 — Rozpocznij odciążanie A2DP |
Zatrzymaj odciążanie A2DP (starsza wersja)
SubOCF: 0x02
To polecenie służy do zatrzymywania strumienia odciążania A2DP.
Parametr polecenia | Rozmiar | Zamiar |
---|---|---|
Nie dotyczy | Pusta lista parametrów polecenia. |
Dla tego polecenia nie zdefiniowano żadnych parametrów.
Dla tego polecenia zostanie wygenerowane zdarzenie Command Complete.
Parametr zwrotny | Rozmiar | Zamiar |
---|---|---|
Status | 1 oktet | Polecenie Zakończono stan |
Sub_Opcode | 1 oktet | 0x02 — Zatrzymaj odciążanie A2DP |
Zatrzymaj odciążanie A2DP
SubOCF: 0x04
To polecenie służy do zatrzymywania strumienia odciążania A2DP.
Parametr polecenia | Rozmiar | Zamiar |
---|---|---|
Connection Handle | 2 oktety | Uchwyt aktywnego połączenia HCI |
L2CAP_Channel_ID | 2 oktety | Identyfikator kanału L2CAP otwartego dla przesyłania strumieniowego A2DP |
Data_Path_Direction | 1 oktet | 0x00 - Wyjście (źródło/łączenie AVDTP) 0x01 — wejście (ujście/podział AVDTP) |
Dla tego polecenia zostanie wygenerowane zdarzenie Command Complete.
Parametr zwrotny | Rozmiar | Zamiar |
---|---|---|
Status | 1 oktet | Polecenie Zakończono status |
Sub_Opcode | 1 oktet | 0x04 - Zatrzymaj odciążenie A2DP |
Komenda raportu o jakości Bluetooth
Funkcja polecenia BT Quality Report rozpoczyna mechanizm kontrolera Bluetooth, aby zgłosić hostie zdarzenia jakości Bluetooth. Możesz włączyć cztery opcje:
- Tryb monitorowania jakości: Kontroler okresowo wysyła podwodność BQR związaną z jakością linku do hosta.
- Zbliżając się do LSTO: Jeśli nie otrzymają żadnych pakietów z podłączonego urządzenia BT przez dłuższy niż połowa wartości czasu na nadzór łącza (LSTO), kontroler zgłasza zbliżające się zdarzenie LSTO dla hosta.
- A2DP Audio Purppy: Gdy kontroler wykrywa czynniki, które powodują wzburzony dźwięk, kontroler zgłasza dla hosta zdarzenie audio A2DP.
- (e) Voice Purphpe: Gdy kontroler wykrywa czynniki powodujące wzburzenie głosu, kontroler zgłasza (e) Voice Voice Provipe zdarzenie dla hosta.
- Zapalenie korzeni: To zdarzenie jest wysyłane przez kontroler do stosu, gdy HAL lub kontroler napotyka błąd śmiertelny i musi ponownie uruchomić Bluetooth.
- Śledzenie komunikatu LMP/LL: Kontroler wysyła podanie wiadomości LMP/LL ze zdalnym urządzeniem do hosta.
- Bluetooth Multi-Profile/COEX Planowanie: Kontroler wysyła informacje o planowaniu w zakresie obsługi wielu profili Bluetooth i współistnienia bezprzewodowego w paśmie 2,4 GHz dla hosta.
- Mechanizm informacyjny debugowania kontrolera: Po włączeniu kontroler może autonomicznie zgłaszać informacje o rejestrowaniu debugowania za pośrednictwem podwodności informacyjnej debugowania kontrolera do hosta.
OCF: 0x15e
Parametr polecenia | Rozmiar | Zamiar |
---|---|---|
BQR_Report_Action | 1 okett | Działanie w celu dodania / usunięcia raportowania zdarzeń jakościowych ustawionych w parametrze BQR_QUALATY_EVENT_MASK lub wyczyść wszystko. 0x00 - Dodaj Usuń wyczyści konkretne raportowanie (wysokiej jakości zdarzenia). |
BQR_Quality_Event_Mask | 4 okety | Maski bitowe dla wybranych zgłoszenia zdarzeń jakościowych. Bit 0: Ustaw tak, aby włączyć tryb monitorowania jakości. |
BQR_Minimum_Report_Interval | 2 okety | Zdefiniuj minimalny czas raportowania zdarzeń jakości dla wybranych zdarzeń jakościowych. Oprogramowanie układowe kontrolera nie powinno zgłaszać następnego zdarzenia w określonym przedziale czasowym. Ustawienie interwałów powinno być odpowiednie i poświęcone dla dodawanych zdarzeń jakościowych. Jednostka: MS |
BQR_Vendor_Specific_Quality_Event_Mask | 4 okety | Maski bitowe dla wybranych zgłoszenia zdarzeń związanych z zdarzeniem specyficznym dla dostawcy. Ten parametr jest prawidłowy tylko wtedy, gdy ustawia się bit 15 z BQR_Quality_Event_Mask .Bit 0 ~ 31: Zarezerwowany. |
BQR_Vendor_Specific_Trace_Mask | 4 okety | Maski bitowe dla wybranego raportowania śledzenia specyficznego dla dostawcy. Ten parametr jest prawidłowy tylko wtedy, gdy ustawia się bit 31 BQR_Quality_Event_Mask .Bit 0 ~ 31: Zarezerwowany. |
Dla tego polecenia zostanie wygenerowane pełne zdarzenie.
Powrót parametr | Rozmiar | Zamiar |
---|---|---|
Status | 1 okett | Polecenie pełny status |
Current_Quality_Event_Mask | 4 okety | Wskazuje bieżące ustawienie maski bitowej. Bit 0: Tryb monitorowania jakości jest włączony. Bit 1: Zbliża się raportowanie zdarzeń LSTO. Bit 2: A2DP Audio Purphing Eventing jest włączony. Bit 3: (e) Włączono zgłaszanie zdarzeń głosowych SCO. Bit 4: Raportowanie zdarzeń zapalnych jest włączone. Bit 5: Tryb monitorowania energii jest włączony. Bit 6: LE Audio Purppy Event Raporting jest włączony. Bit 7: Połącz zdarzenie niepowodzenia. Bit 8 ~ 14: Zarezerwowany. Bit 15: Włączono raportowanie o zdarzeniach dla dostawcy. Bit 16: Włączono śledzenie komunikatu LMP/LL. Bit 17: Bluetooth Multi-Link/COEX Planowanie jest włączone. Bit 18: Mechanizm informacji o debugowaniu kontrolera jest włączony. Bit 19 ~ 30: Zarezerwowany. Bit 31: Włączono śledzenie specyficzne dla dostawcy. |
Current_Vendor_Specific_Quality_Event_Mask | 4 okety | Wskazuje bieżące ustawienie maski bitowej. |
Current_Vendor_Specific_Trace_Mask | 4 okety | Wskazuje bieżące ustawienie maski bitowej. |
Dynamiczne polecenie bufora audio
Dynamiczny bufor audio zmniejsza usterkę audio, zmieniając rozmiar buforu audio w kontrolerze Bluetooth na podstawie różnych scenariuszy.
OCF: 0x15f
Uzyskaj możliwości czasu bufora dźwięku
Sub OCF: 0x01
Użyj tego polecenia, aby uzyskać możliwość czasu buforu audio z kontrolera Bluetooth.
Parametr polecenia | Rozmiar | Zamiar |
---|---|---|
Nie dotyczy | Pusta lista parametrów polecenia |
Dla tego polecenia zostanie wygenerowane pełne zdarzenie.
Powrót parametr | Rozmiar | Zamiar |
---|---|---|
Status | 1 okett | Polecenie pełny status |
Dynamic_Audio_Buffer_opcode | 1 okett | 0x01 - Uzyskaj czas buforu audio |
Audio_Codec_Type_Supported | 4 okety | 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 Bit 5-31 jest zarezerwowany |
Audio_Codec_Buffer_Default_Time_For_Bit_0 | 2 okety | Domyślny czas bufora typu kodeku bit 0 określony w audio_codec_type_support. Wartość ta powinna wynosić 0, jeżeli typ kodeku Bit 0 nie jest obsługiwany. Jednostka: MS |
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 | 2 okety | Maksymalny czas bufora typu kodeku bit 0 określony w audio_codec_type_support. Wartość ta powinna wynosić 0, jeżeli typ kodeku Bit 0 nie jest obsługiwany. Jednostka: MS |
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 | 2 okety | Minimalny czas bufora typu kodeku bit 0 określony w audio_codec_type_support. Wartość ta powinna wynosić 0, jeżeli typ kodeku Bit 0 nie jest obsługiwany. Jednostka: MS |
Audio_Codec_Buffer_Default_Time_For_Bit_1 | 2 okety | Domyślny czas bufora typu kodeku bit 1 określony w audio_codec_type_support. Wartość ta wynosi 0, jeśli typ kodeka Bit 1 nie jest obsługiwany. Jednostka: MS |
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 | 2 okety | Maksymalny czas bufora typu kodeku bit 1 określony w audio_codec_type_support. Wartość ta wynosi 0, jeśli typ kodeka Bit 1 nie jest obsługiwany. Jednostka: MS |
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 | 2 okety | Minimalny czas bufora typu kodeku bit 1 określony w audio_codec_type_support. Wartość ta wynosi 0, jeśli typ kodeka Bit 1 nie jest obsługiwany. Jednostka: MS |
...... | ...... | ...... |
Audio_Codec_Buffer_Default_Time_For_Bit_31 | 2 okety | Domyślny czas bufora Bit 31 Typ kodeka określonego w audio_codec_type_support. Wartość ta wynosi 0, jeśli typ kodeka Bit 31 nie jest obsługiwany. Jednostka: MS |
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 | 2 okety | Maksymalny czas bufora typu kodeku Bit 31 określony w audio_codec_type_support. Wartość ta wynosi 0, jeśli typ kodeka Bit 31 nie jest obsługiwany. Jednostka: MS |
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 | 2 okety | Minimalny czas bufora typu kodeku Bit 31 określony w audio_codec_type_support. Wartość ta wynosi 0, jeśli typ kodeka Bit 31 nie jest obsługiwany. Jednostka: MS |
Ustaw czas bufora audio
Sub OCF: 0x02
Użyj tego polecenia, aby ustawić czas bufora audio na kontroler Bluetooth.
Parametr polecenia | Rozmiar | Zamiar |
---|---|---|
Audio_Codec_Buffer_Time | 2 okety | Żądany czas bufora audio dla bieżącego używanego kodeka. Jednostka: MS |
Dla tego polecenia zostanie wygenerowane pełne zdarzenie.
Powrót parametr | Rozmiar | Zamiar |
---|---|---|
Status | 1 okett | Polecenie pełny status |
Dynamic_Audio_Buffer_opcode | 1 okett | 0x02 - Ustaw czas buforu audio |
Audio_Codec_Buffer_Time | 2 okety | Obecny czas bufora audio w kontrolerze Bluetooth. Jednostka: MS |
Wydarzenie HCI (specyficzne dla dostawcy)
W niektórych przypadkach wymagane są zdarzenia HCI specyficzne dla dostawcy. Patrz rysunek 5.4 na stronie 1897 specyfikacji BT Core 5.2. Parametr zdarzenia 0 zawsze będzie zawierał pierwszy kod podwozia, na podstawie którego dekodowana jest reszta zdarzenia HCI.
Parametr zdarzenia | Rozmiar | Zamiar |
---|---|---|
HCI_vendor_specific_event_code | 1 okett | 0xff |
sub_event_code | 1 okett | Kod podwodności będzie miał rozmiar 1 ok., Bajt bezpośrednio po długości parametrów w pakiecie zdarzeń HCI. |
Podsumowanie łamania progu przechowywania
To zdarzenie wskazuje, że próg przechowywania został naruszony.
Kod podwodności = 0x54
Parametr podwodny | Rozmiar | Zamiar |
---|---|---|
Nic |
LE Multi-Advertizing State Change Sub-Vise
To wydarzenie wskazuje, że instancja reklamowa zmieniła swój stan. W tej chwili to wydarzenie jest używane tylko do wskazania, która instancja reklamowa została zatrzymana w wyniku połączenia.
Kod podwodności = 0x55
Parametr podwodny | Rozmiar | Zamiar |
---|---|---|
Advertising_instance | 1 okett | Identyfikuje konkretną instancję reklamową Prawidłowe wartości to 0 do max_advt_instances -1 |
State_Change_Reason | 1 okett | 0x00: Otrzymane połączenie |
Connection_handle | 2 okety | Identyfikuje połączenie, które spowodowało wyłączenie instancji advt (0xffff, jeśli jest nieprawidłowy) |
Pod-zdeunkowe śledzenia reklam
To wydarzenie wskazuje, kiedy reklamodawca zostaje znaleziony lub zagubiony.
Kod podrzędny = 0x56
Parametr podwodny | Rozmiar | Zamiar |
---|---|---|
APCF_Filter_Index | 1 okett | Indeks filtra (0, max_filter -1) |
Advertiser_State | 1 okett | 0x00: Znaleziono reklamodawcę 0x01: Zagubiony reklamodawca |
Advt_Info_Present | 1 okett | 0x00: Informacje o reklamie ( Advt_Info ) obecne0x01: Informacje o reklamie ( Advt_Info ) nie są obecne |
Advertiser_Address | 6 oktetów | Adres publiczny lub losowy |
Advertiser_Address_Type | 1 okett | 0x00: Adres publiczny 0x01: losowy adres |
Advt_Info | Tx_Pwr[0] : 1 okettRSSI[0] : 1 okettTimestamp[0] : 2 oktetyAdv packet_len[0] : 1 okettAdv_packet[0] : Adv_packet_len OuttetScan_data_resp_len[0] : 1 OCTETScan_data_resp[0] : Scan_data_resp OTTETY |
Podwodna info debugowania kontrolera
To zdarzenie jest wykorzystywane przez kontrolera do dostarczania hosta informacji o debugowaniu binarnym.
Kod podwodności = 0x57
Parametr podwodny | Rozmiar | Zamiar |
---|---|---|
debug_block_byte_offset_start | 2 okety | DEBUG BLOK BYTE OFFSETUS od samego początku |
last_block | 1 okett | 0x00: Więcej danych debugowania obecnych 0x01: Ostatni blok binarny; Nigdy więcej danych debugowania |
cur_pay_load_sz | 2 okety | Binarny rozmiar bloku w bieżącym wydarzeniu |
Debug_Data | Zmienny | Dane debugowania cur_payload_sz |
Bluetooth Quality Report Sub-Vevent
To zdarzenie wskazuje na jedną z następujących czynności: Wystąpiło zdarzenie jakości Bluetooth, kontroler przesłał śledzenie komunikatu LMP/LL i ślad planowania Multi-Link/COEX lub kontrolera zrzuconego danych debugowania.
Kod podwodności = 0x58 [Quality_report_id = 0x01 ~ 0x04, Wydarzenie związane z jakością łącza]
Parametr podwodny | Rozmiar | Zamiar |
---|---|---|
Quality_Report_Id | 1 okett | 0x01: Raportowanie jakości w trybie monitorowania. 0x02: Zbliżanie się do LSTO. 0x03: A2DP Audio Procpy. 0x04: (e) Voice Voice Purppy. 0x05 ~ 0x06: Zarezerwowany. 0x07: LE Audio Purppy. 0x08: Połącz awarię. 0x09 ~ 0xff: Zarezerwowany. |
Packet_Types | 1 okett | 0x01: ID 0x02: Null 0x03: Ankieta 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: Zarezerwowany 0x51: pakiet ISO 0x52 ~ 0xff: zarezerwowany |
Connection_Handle | 2 okety | ACL/(E) Uchwyt połączenia SCO/ISO. |
Connection_Role | 1 okett | Wykonywanie roli połączenia. 0x00: Central 0x01: Obwód 0x02 ~ 0xff: Zarezerwowany. |
TX_Power_Level | 1 okett | Obecny poziom mocy transmisji dla określonego Connection_Handle. Ta wartość będzie taka sama jak reagowanie kontrolera na polecenie HCI_READ_TRANSMIT_POWER_LEVEL HCI. |
RSSI | 1 okett | [w dbm] Otrzymane wskazanie siły sygnału (RSSI) dla określonego połączenia_handle. |
SNR | 1 okett | [w db] Wartość współczynnika sygnału do szumu (SNR) dla określonego połączenia_handle. |
Unused_AFH_Channel_Count | 1 okett | Wskazuje liczbę nieużywanych kanałów w AFH_Channel_Map. 0x4f ~ 0xff: Zarezerwowany. |
AFH_Select_Unideal_Channel_Count | 1 okett | Wskazuje liczbę kanałów, które są zakłócane i mają złą jakość, ale nadal są wybierane do AFH. Minimalna liczba kanałów dozwolonych przez specyfikację Bluetooth wynosi 20, więc nawet jeśli wszystkie 79 kanałów są zakłócane i mają złą jakość, kontroler nadal musi wybrać co najmniej 20 kanałów dla AFH. |
LSTO | 2 okety | Obecne ustawienie limitu czasu nadzoru linków. Czas = n * 0,625 ms Zakres czasu: 0,625 ms do 40,9 s |
Connection_Piconet_Clock | 4 okety | Zegar pikonowy dla określonego Connection_Handle. Wartość ta powinna być taka sama jak reagowanie kontrolera na polecenie HCI_READ_CLOCK HCI z parametrem „WHO_CLOCK” z 0x01 (zegar pikonet). Jednostka: N * 0,3125 ms (1 zegar Bluetooth) |
Retransmission_Count | 4 okety | Liczba retransmisji od ostatniego wydarzenia. Niniejsza liczba zostanie zresetowana po zgłoszeniu hosta. |
No_RX_Count | 4 okety | Brak liczby RX od ostatniego wydarzenia. Liczba wzrasta, gdy nie otrzymano pakietu na zaplanowanym przedziale czasowym lub odebrany pakiet jest uszkodzony. Niniejsza liczba zostanie zresetowana po zgłoszeniu hosta. |
NAK_Count | 4 okety | Nak (negatywne uznanie) liczy się od ostatniego wydarzenia. Niniejsza liczba zostanie zresetowana po zgłoszeniu hosta. |
Last_TX_ACK_Timestamp | 4 okety | Znacznik czasu ostatniego tx ack. Opiera się na zegar Bluetooth Piconet Central (CLK). Jednostka: N * 0,3125 ms (1 zegar Bluetooth) |
Flow_Off_Count | 4 okety | Liczba razy, gdy kontroler odbiera przepływ (stop) od ostatniego zdarzenia. Niniejsza liczba zostanie zresetowana po zgłoszeniu hosta. |
Last_Flow_On_Timestamp | 4 okety | Znacznik czasu ostatniego przepływu (GO). Opiera się na zegar Bluetooth Piconet Central (CLK). Jednostka: N * 0,3125 ms (1 zegar Bluetooth) |
Buffer_Overflow_Bytes | 4 okety | [w bajcie] Liczba przepełnienia bufora od ostatniego wydarzenia. |
Buffer_Underflow_Bytes | 4 okety | [w bajcie] Liczba podbiegu bufora od ostatniego wydarzenia. |
bdaddr | 6 oktetów | Zdalny adres urządzenia |
cal_failed_item_count | 1 okett | Liczba kalibracji nieudanych elementów |
TX_Total_Packets | 4 okety | Liczba wysyłanych pakietów. |
TX_UnAcked_Packets | 4 okety | Liczba pakietów, które nie otrzymują potwierdzenia. Ta liczba jest resetowana po zgłoszeniu się do hosta. |
TX_Flushed_Packets | 4 okety | Liczba pakietów, które nie są wysyłane przez punkt spłukiwania. Ta liczba jest resetowana po zgłoszeniu się do hosta. |
TX_Last_Subevent_Packets | 4 okety | Liczba pakietów, które łączą warstwę, przesyła PDU danych CIS w ostatnim podkładce zdarzenia CIS. Ta liczba jest resetowana po zgłoszeniu się do hosta. Wartość wynosi zero, jeśli nie ma prawidłowej wartości linku. |
CRC_Error_Packets | 4 okety | Liczba odebranych pakietów z błędem CRC od ostatniego zdarzenia. Ta liczba jest resetowana po zgłoszeniu się do hosta. |
RX_Duplicate_Packets | 4 okety | Liczba pakietów duplikatów (retransmisji) otrzymanych od ostatniego wydarzenia. Ta liczba jest resetowana po zgłoszeniu się do hosta. |
Parametr specyficzny dla dostawcy | (Parametr całkowita długość - TBD) * Oszczędność | Dla dostawcy kontrolera, aby uzyskać więcej parametrów specyficznych dla dostawcy. |
Kod podwodności = 0x58 [Quality_report_id = 0x05, zdarzenie zapalenia root]
To zdarzenie wskazuje, że Bluetooth HAL lub kontroler napotkał śmiertelny błąd i potrzebuje stosu Bluetooth, aby zarejestrować tę sytuację i ponownie uruchomić. Kontroler musi wysłać w dowolnym przypadku stosowanie_inflammation_event do stosu Bluetooth przed wysłaniem pierwszego fragmentu zdarzeń informacyjnych debugowania.
Parametr ERROR_CODE zawiera kod błędu zgłoszony z HAL/Controller, 0, jeśli jest to błąd specyficzny dla dostawcy chipsetów. Vendor_specific_error_code zawiera kod błędu specyficznego dla producenta producenta chipsetów z HAL/kontrolera. Powinien być ustawiony jako 0, jeśli parametr ERROR_CODE nie jest 0. Parametry Error_Code i Vendor_Specific_error_code nie powinny wynosić 0.
Parametr podwodny | Rozmiar | Zamiar |
---|---|---|
Quality_Report_Id | 1 okett | 0x00 ~ 0x04: Zarezerwowany. 0x05: Zapalenie korzeni. 0x06 ~ 0xff: Zarezerwowany. |
Error_Code | 1 okett | 0x00: Uwzględniono specyficzny kod błędu dostawcy chipsetów. 0x01 ~ 0xff: Wystąpiła awaria kontrolera. Patrz Bluetooth Spec [Vol 2] Część D, kody błędów dla listy kodów błędów i opisów. |
Vendor_Specific_Error_Code | 1 okett | 0x00: Brak konkretnego kodu błędu dostawcy chipsetów. 0x01 ~ 0xff: Chipset Sprzedawca specyficzny kod błędu. |
Parametr specyficzny dla dostawcy | (Parametr całkowitą długość - 4) * oktety | Dla dostawcy kontrolera, aby uzyskać więcej parametrów specyficznych dla dostawcy. |
Kod podwodności = 0x58 [Quality_report_ID = 0x11 ~ 0x13, zdarzenie związane z zrzutem dziennika]
Parametr podwodny | Rozmiar | Zamiar |
---|---|---|
Quality_Report_Id | 1 okett | 0x00 ~ 0x10: Zarezerwowany. 0x11: Śledzenie komunikatu LMP/LL. 0x12: Śledzenie planowania Bluetooth Multi-Link/COEX. 0x13: Zrzut danych debugowania kontrolera. 0x14 ~ 0xff: Zarezerwowany. |
Connection_Handle | 2 okety | Uchwyt połączenia. |
Parametr specyficzny dla dostawcy | (Parametr całkowitą długość - 4) * oktety | Format specyficzny dla dostawcy Śledzenia komunikatu LMP, Bluetooth Multi-Link/COEX Planowanie śledzenia i zrzucenie danych debugowania kontrolera. |
Obsługa wielu advertiser
Cele wsparcia wielu advertiser są następujące:
- Możliwość obsługi wielu reklam (
max_advt_instances
) - Różne moce transmisowe, aby umożliwić zmienny zakres
- Różne treści reklamowe
- Zindywidualizowana odpowiedź dla każdego reklamodawcy
- Prywatność (nie do śledzenia) dla każdego reklamodawcy
- Łącze
Aby zachować tę specyfikację w pobliżu istniejących standardów, podano następujące polecenia specyficzne dla dostawcy. Pochodzą one ze specyfikacji Bluetooth Core 4.1.
Le_multi_advt_command
OCF: 0x154
Parametr polecenia | Rozmiar | Zamiar |
---|---|---|
Multi_advt_opcode | 1 okett | 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 |
Dla tego polecenia zostanie wygenerowane pełne zdarzenie.
Powrót parametr | Rozmiar | Zamiar |
---|---|---|
Status | 1 okett | Polecenie pełny status |
Multi_advt_opcode | 1 okett | 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
Odniesienie podstawowe: specyfikacja Bluetooth Core 4.1, strona 964 (pole Parametrów reklamowych LE)
Sub OCF: 0x01
Parametr podskórny | Rozmiar | Zamiar |
---|---|---|
Advertising_Interval_Min | Na specyfikację | Na specyfikację |
Advertising_Interval_Max | Na specyfikację | Na specyfikację |
Advertising_Type | Na specyfikację | Na specyfikację |
Own_Address_Type | Na specyfikację | Na specyfikację |
Own_Address | Na specyfikację | Na specyfikację |
Direct_Address_Type | Na specyfikację | Na specyfikację |
Direct_Address | Na specyfikację | Na specyfikację |
Advertising_Channel_Map | Na specyfikację | Na specyfikację |
Adverstising_Filter_Policy | Na specyfikację | Na specyfikację |
Advertising_Instance | 1 okett | Określa możliwość zastosowania powyższych parametrów do instancji |
Tx_power | 1 okett | Moc nadawania Jednostka - w DBM (podpisana liczba całkowita) Zakres (-70 do +20) |
Parametr Own_Address
może być adresem skonfigurowanym do hosta w momencie konfigurowania tej instancji wielopoziomowej. Zapewnia to możliwość posiadania rozwiązywalnego prywatnego adresu w momencie przesyłania pierwszego latarni. Reklama w instancji będzie trwała niezależnie od połączenia. Stos Hosta BT może wydać polecenie, aby rozpocząć reklamę w instancji, Post Connection.
Wykonanie kompletnego polecenia zostanie wygenerowane dla tego polecenia, jak określono w specyfikacji Bluetooth Core 4.1, zgodnie z powyższym poleceniem. Kontroler zareaguje kodem nieuzasadnionym (niepoprawnym parametrem), jeżeli instancja reklamowa lub parametry Tx_Power
są nieprawidłowe.
Powrót parametr | Rozmiar | Zamiar |
---|---|---|
Status | 1 okett | Polecenie pełny status |
Multi_advt_opcode | 1 okett | 0x01 [ Set_Advt_Param_Multi_Sub_Cmd] |
Le_multi_advt_command: set_advt_data_multi_sub_cmd
Odniesienie podstawowe: specyfikacja Bluetooth Core 4.1, strona 969 (polecenie reklamowe SET SET)
Sub OCF: 0x02
Parametr podskórny | Rozmiar | Zamiar |
---|---|---|
Advertising_Data_Length | Na specyfikację | Na specyfikację |
Advertising_Data | Na specyfikację | Na specyfikację |
Advertising_Instance | 1 okett | Określa możliwość zastosowania powyższych parametrów do instancji |
Wykonanie kompletnego polecenia zostanie wygenerowane dla tego polecenia, jak określono w specyfikacji Bluetooth Core 4.1, zgodnie z powyższym poleceniem. Kontroler zareaguje kodem niezgodnym, jeśli instancja reklamowa lub parametry Tx_Power
są nieprawidłowe.
Powrót parametr | Rozmiar | Zamiar |
---|---|---|
Status | 1 okett | Polecenie pełny status |
Multi_advt_opcode | 1 okett | 0x02 [ Set_Advt_Data_Multi_Sub_Cmd] |
Le_multi_advt_command: set_scan_resp_data_multi_sub_cmd
Odniesienie podstawowe: specyfikacja Bluetooth Core 4.1, strona 970 (polecenie danych SET SET SKANOWANIE)
Sub OCF: 0x03
Parametr podskórny | Rozmiar | Zamiar |
---|---|---|
Scan_Response_Data_Length | Na specyfikację | Na specyfikację |
Scan_Response_Data | Na specyfikację | Na specyfikację |
Advertising_Instance | 1 okett | Określa możliwość zastosowania powyższych parametrów do instancji |
Wykonanie kompletnego polecenia zostanie wygenerowane dla tego polecenia, jak określono w specyfikacji Bluetooth Core 4.1, zgodnie z powyższym poleceniem. Kontroler zareaguje kodem niezgodnym (niepoprawny parametr), jeśli instancja reklamowa lub parametry Tx_Power
są nieprawidłowe.
Powrót parametr | Rozmiar | Zamiar |
---|---|---|
Status | 1 okett | Polecenie pełny status |
Multi_advt_opcode | 1 okett | 0x03 [ Set_Scan_Resp_Data_Multi_Sub_Cmd] |
Le_multi_advt_command: set_random_addr_multi_sub_cmd
Odniesienie podstawowe: specyfikacja Bluetooth Core 4.1, strona 963 (polecenie LE SET LOSE Adres)
Sub OCF: 0x04
Parametr podskórny | Rozmiar | Zamiar |
---|---|---|
Losowy adres | Na specyfikację | Na specyfikację |
Advertising_Instance | 1 okett | Określa możliwość zastosowania powyższych parametrów do instancji |
Dla tego polecenia zostanie wygenerowane pełne zdarzenie.
Powrót parametr | Rozmiar | Zamiar |
---|---|---|
Status | 1 okett | Polecenie pełny status |
Multi_advt_opcode | 1 okett | 0x04 [ Set_Random_Addr_Multi_Sub_Cmd] |
Le_multi_advt_command: set_advt_enable_multi_sub_cmd
Odniesienie podstawowe: specyfikacja Bluetooth Core 4.1, strona 971 (LE SET REKLAMACJA Włącz polecenie W tej podstawowej specyfikacji)
OCF: 0x05
Parametr podskórny | Rozmiar | Zamiar |
---|---|---|
Advertising_Enable | 1 okett | Wartość 1 oznacza włączenie. Każda inna wartość oznacza wyłączenie. |
Advertising_Instance | 1 okett | Określa możliwość zastosowania powyższych parametrów do instancji. Instancja 0 oznacza standardową instancję HCI. |
Dla tego polecenia zostanie wygenerowane pełne zdarzenie.
Powrót parametr | Rozmiar | Zamiar |
---|---|---|
Status | 1 okett | Polecenie pełny status |
Multi_advt_opcode | 1 okett | 0x05 [ Set_Advt_Enable_Multi_Sub_Cmd] |
Rozdzielona rozdzielczość prywatnego adresu
Ta funkcja rozwiązuje prywatny adres w oprogramowaniu układowym lub sprzęcie kontrolera, co zapewnia następujące korzyści:
- Opóźnienie związane z hostem w rozwiązywaniu prywatnego adresu
- Oszczędzanie mocy poprzez powstrzymanie się od przebudzenia gospodarza
Le_set_RPA_Timeout
OCF: 0x15c
Parametr polecenia | Rozmiar | Zamiar |
---|---|---|
LE_local_IRK | 16 oketów | Urządzenie lokalne IRK używane do generowania losowego adresu rozdzielonego. |
tRPA_min | 2 okety | Minimalny limit czasu generowania RPA w sekundach. Kontroler musi wygenerować nowe rozwiązane adresy dla dowolnych zdarzeń reklamowych/skanowania/połączenia w tym czasie lub po nim. Prawidłowy zakres: 300-1800 |
tRPA_max | 2 okety | Maksymalny limit czasu generowania RPA w sekundach. Kontroler musi wygenerować nowe rozwiązywalne adresy dla dowolnych zdarzeń reklamowych/skanowania/połączenia w tym czasie lub wcześniej. Prawidłowy zakres: tRPA_min -1800 |
Powrót parametr | Rozmiar | Zamiar |
---|---|---|
Status | 1 okett | Status polecenia. Sugerowane wartości statusu HCI: Sukces 0x00 0x01 Nieznane polecenie (jeśli nie jest obsługiwane) 0x12 Nieprawidłowe parametry polecenia (jeśli dowolne parametry są poza danym zakresem) |
Le_RPA_Offload_Command
OCF: 0x155
Parametr polecenia | Rozmiar | Zamiar |
---|---|---|
RPA_offload_opcode | 1 okett | 0x1 - Włącz funkcję specyficzną dla klienta 0x2 - Dodaj IRK do listy 0x3 - Usuń IRK z listy 0x4 - Wyczyść listę irk 0x5 - Przeczytaj wpis listy IRK |
Dla tego polecenia zostanie wygenerowane pełne zdarzenie.
Powrót parametr | Rozmiar | Zamiar |
---|---|---|
Status | 1 okett | Polecenie pełny status |
Event_RPA_offload_opcode | 1 okett | 0x1 - Włącz funkcję specyficzną dla klienta 0x2 - Dodaj IRK do listy 0x3 - Usuń IRK z listy 0x4 - Wyczyść listę irk 0x5 - Przeczytaj wpis listy IRK |
Le_RPA_Offload: enable_cust_specific_sub_command
Sub OCF: 0x01
Parametr podskórny | Rozmiar | Zamiar |
---|---|---|
enable_customer_specific_feature_set | 1 okett | 0x01 - Włącz funkcję rozładowanej RPA 0x00 - Wyłącz obciążoną funkcję RPA |
Host musi być włączony przez hosta, w oparciu o możliwości układu. Patrz LE_Get_Vendor_Capabilities_Command
. Każdy układ może mieć w oprogramowaniu zmieniającym max_irk_list_sz
.
Dla tego polecenia zostanie wygenerowane pełne zdarzenie.
Powrót parametr | Rozmiar | Zamiar |
---|---|---|
Status | 1 okett | Polecenie pełny status |
Event_cust_specific_feature_opcode | 1 okett | 0x01 [Włącz funkcję specyficzną dla klienta] |
Le_RPA_Offload: add_irk_to_list_sub_command
Sub OCF: 0x02
Parametr podskórny | Rozmiar | Zamiar |
---|---|---|
LE_IRK | 16 oktetów | Le Irk (1st Bajt LSB) |
Address_Type | 1 okett | 0: Adres publiczny 1: Losowy adres |
LE_Device_Address | 6 oktetów | Adres publiczny lub losowy powiązany z IRK (1. bajtowy LSB) |
Dla tego polecenia zostanie wygenerowane pełne zdarzenie.
Powrót parametr | Rozmiar | Zamiar |
---|---|---|
Status | 1 okett | Polecenie pełny status |
Event_cust_specific_feature_opcode | 1 okett | 0x02 [Dodaj irk do listy] |
LE_IrkList_AvailableSpaces | 1 okett | Dostępne wpisy listy IRL po bieżącej operacji |
Le_RPA_Offload: remove_irk_to_list_sub_command
Sub OCF: 0x03
Parametr podskórny | Rozmiar | Zamiar |
---|---|---|
Address_Type | 1 okett | 0: Adres publiczny 1: Losowy adres |
LE_Device_Address | 6 oktetów | Publiczny lub losowy adres, który kojarzy się z IRK |
Dla tego polecenia zostanie wygenerowane pełne zdarzenie.
Powrót parametr | Rozmiar | Zamiar |
---|---|---|
Status | 1 okett | Polecenie pełny status |
Event_cust_specific_feature_opcode | 1 okett | 0x03 [Usuń irk z listy] |
LE_IrkList_AvailableSpaces | 1 okett | Dostępne wpisy listy IRL po bieżącej operacji |
Le_RPA_Offload: Clear_IRK_LIST_SUB_COMMAND
Sub OCF: 0x04
Parametr podskórny | Rozmiar | Zamiar |
---|---|---|
Nic |
Dla tego polecenia zostanie wygenerowane pełne zdarzenie.
Powrót parametr | Rozmiar | Zamiar |
---|---|---|
Status | 1 okett | Polecenie pełny status |
Event_cust_specific_feature_opcode | 1 okett | 0x04 [Wyczyść listę irk] |
LE_IrkList_AvailableSpaces | 1 okett | Dostępne wpisy listy IRL po bieżącej operacji [ max_irk_list_sz] |
Le_RPA_Offload: Read_IRK_LIST_SUB_COMMAND
Sub OCF: 0x05
Parametr podskórny | Rozmiar | Zamiar |
---|---|---|
LE_read_IRK_list_entry-index | 1 okett | Indeks listy IRK [0, max_irk_list_sz-1] |
Dla tego polecenia zostanie wygenerowane pełne zdarzenie.
Powrót parametr | Rozmiar | Zamiar |
---|---|---|
Status | 1 okett | Polecenie pełny status |
Event_cust_specific_feature_opcode | 1 okett | 0x05 [Przeczytaj wpis listy IRK] |
LE_Read_IRK_List_entry | 1 okett | Indeks IRK, który host chce odczytać (maksymalny rozmiar listy IRK to 32) |
LE_IRK | 16 oktetów | Wartość irk |
Address_Type | 1 okett | 0: Adres publiczny 1: Losowy adres |
LE_Device_Address | 6 oktetów | Adres publiczny lub losowy powiązany z IRK |
LE_Resolved_Private_Address | 6 oktetów | Obecny rozstrzygnięty postanowiony prywatny adres tego IRK |