Przełącznik dźwięku
Użytkownicy coraz częściej korzystają z wielu źródeł dźwięku do wykonywania codziennych zadań, dlatego rośnie zapotrzebowanie na prostsze rozwiązanie do zarządzania korzystaniem z zestawów słuchawkowych na różnych urządzeniach. Przełącznik dźwięku płynnie przełącza połączenie zestawu słuchawkowego między urządzeniami w zależności od aktywności użytkownika (np. włączenie filmu) i zdarzeń o określonych priorytetach (np. połączenia przychodzącego).
Zasady dotyczące wrażeń użytkownika
- Przełączanie połączeń powinno być szybkie i zależne od działań użytkownika.
- Przełączanie połączeń powinno być widoczne dla użytkowników i umożliwiać im sterowanie lub cofanie zmiany, jeśli jest to niepożądane.
- Przełączenie powinno zapewniać ochronę prywatności użytkowników.
Role
Poszukiwacz przełączników dźwięku: Seeker to urządzenie będące źródłem dźwięku (np. telefon lub tablet) i szuka zestawu słuchawkowego w pobliżu, z którym w razie potrzeby może się połączyć.
Dostawca przełączania dźwięku: dostawca to zwykle zestaw słuchawkowy reklamujący swoją obecność i stan połączenia, aby użytkownicy mogli podjąć decyzję o zmianie dźwięku.
Przegląd wymagań
Aby umożliwić inteligentne przełączanie, dostawcy muszą przestrzegać tych wymagań:
Nazwa | Opis | Wymagania | Obowiązkowa? |
---|---|---|---|
Skanowanie stron | Aby zaakceptować nowe żądanie połączenia od innego narzędzia do wyszukiwania w przypadku istniejącego połączenia. W przypadku dostawców jednopunktowych:
|
Do poprawy wydajności wymagany jest tryb skanowania stron z krótkim czasem oczekiwania (interwał skanowania nie powinien być dłuższy niż 640 ms). Aby uniknąć kompromisu między czasem pracy na baterii a wydajnością przełączania, w większości przypadków dostawca może ustawić domyślny tryb skanowania stron (tryb oszczędzania energii nie powinien być dłuższy niż 1280 ms). Trybu małego opóźnienia należy jednak używać w tych sytuacjach:
|
Obowiązkowe |
Historia połączeń | Aby przełączyć się z powrotem do poprzedniego połączenia i wznowić odtwarzanie, jeśli to możliwe. Powrót zostanie aktywowany przy użyciu interfejsów API strumienia wiadomości. W nagraniu powinno być uwzględnione zdarzenie wstrzymywania dźwięku, aby można było je wznowić. |
Utrzymuj historię połączeń i wdrażaj interfejsy API strumienia wiadomości. | Obowiązkowe |
Stan połączenia | Aby mogli ocenić proces przełączania połączeń, szukający może przeprowadzić ocenę stanu połączenia:
|
Uwzględnij stan połączenia w reklamach i strumieniu wiadomości BLE. | Obowiązkowe |
Zmiana możliwości środowiska wykonawczego | Przełącznik dźwięku można włączyć, aktualizując oprogramowanie układowe u dostawcy, dlatego funkcje muszą być synchronizowane między mechanizmem wyszukiwania a dostawcą w czasie działania. | Zaimplementuj interfejsy API strumienia wiadomości w celu uzyskania dostępu do funkcji środowiska wykonawczego. | Obowiązkowe |
Konfigurowalne reguły przełączania | Pozwól mechanizmowi wyszukiwania skonfigurować priorytet między istniejącym aktywnym strumieniem audio a nowymi żądaniami strumieniowego przesyłania dźwięku za pomocą ustawień użytkownika. Na przykład przełącznik dźwięku może udostępniać ustawienia interfejsu, aby umożliwić użytkownikom włączanie i wyłączanie automatycznego przełączania się między strumieniem multimediów a połączeniami. Seeker ustawi i pobierze regułę przełączania za pomocą strumienia wiadomości. |
Tylko dostawcy połączeń wielopunktowych. Zaimplementuj interfejsy API strumienia wiadomości, aby umożliwić konfigurowanie reguł przełączania się między połączonymi urządzeniami. |
Opcjonalnie |
Przełączanie aktywnych urządzeń | Pozwól funkcji wyszukiwania dźwięku symulować przełączanie dźwięku między połączonymi urządzeniami. Po stronie osoby wyszukującej przełącznik dźwięku może być dostępny interfejs, który umożliwia łatwe przełączanie się między połączonymi urządzeniami. |
Tylko dostawcy połączeń wielopunktowych. Zaimplementuj interfejsy Message Stream API dla mechanizmu wyszukiwania przełączników dźwięku, aby określić aktywne źródło dźwięku między połączonymi urządzeniami. |
Obowiązkowe |
Powiadomienie dotyczące przełączania wielopunktowego | Pozwól funkcji wyszukiwania przełącznika dźwięku wyświetlić powiadomienie o przełączeniu. | Tylko dostawcy połączeń wielopunktowych. Zaimplementuj interfejsy API strumienia wiadomości, aby powiadamiać osoby wyszukujące połączone punkty audio o trwającym przełączaniu audio. |
Obowiązkowe |
Ładunek reklamowy
Dostawca zamieści w reklamie bieżący stan połączenia, oparty na danych Konta Szybkiego parowania opisanych w sekcji Reklamy: jeśli nie można wykryć.
Pamiętaj, że wersja tabeli 4.2 to 0x1.
Pole stanu połączenia
Oktet | Typ danych | Opis | Wartość | Obowiązkowa? |
---|---|---|---|---|
0 | uint8 |
Długość i typ pola 0bLLLLTTTT
|
0bLLLL0101
|
Obowiązkowe |
1 | uint8 |
Stan połączenia 0bHAFRSSSS
|
0bHAFRSSSS
|
Obowiązkowe |
2 | uint8 |
Dane niestandardowe Obecnie obejmuje tylko typy treści, które służą do opisania wykorzystania bieżącej transmisji audio. Poszukiwacz wyśle ją do dostawcy. |
Wartość jest wysyłana od osoby wyszukującej bieżące aktywne przesyłanie strumieniowe do dostawcy przez strumień wiadomości. Wartość 0, jeśli bieżąca aktywna transmisja nie pochodzi z narzędzia Seeker. | Obowiązkowe |
3 – var | Bitmapa połączonych urządzeń Bitmapa pokazująca, które urządzenia są obecnie połączone z dostawcą. Wszystkie powiązane urządzenia są uporządkowane według kolejności – po 1 bitze na jedno połączone urządzenie. Długość zależy od liczby powiązanych urządzeń dostawcy. |
Zmapowany bit jest ustawiony na 1, jeśli urządzenie jest obecnie połączone z dostawcą. W przeciwnym razie ma wartość 0. Więcej informacji znajdziesz w artykule Mapa bitowa połączonego urządzenia. |
Opcjonalnie |
Tabela 4.1. Nieprzetworzone dane pola stanu połączenia
Flagi połączeń
0bH = wykrywanie na głowie
- 1, na głowie
- 0, w przeciwnym razie nie na głowie lub nie ma czujnika OHD
0bA = dostępność połączenia
- 1, dostępne jest połączenie
- 0, w przeciwnym razie
0bF = tryb pełnej koncentracji
- 1.W trybie skupienia nie można teraz przełączać połączeń przy korzystaniu z multimediów, tzn. nie można przełączać się między A2DP na A2DP
- 0, w przeciwnym razie
0bR = połączenie automatyczne
- 1 – jeśli bieżące połączenie jest automatycznie ponownie połączone przez dostawcę, co oznacza, że nie jest ono połączone przez użytkowników (w przypadku połączeń wielopunktowych, jeśli jedno z istniejących połączeń jest automatycznie ponownie podłączone, powinno mieć wartość 1).
- 0, w przeciwnym razie
Stan połączenia
- 0x0: brak połączenia
- 0x1: stronicowanie
- 0x2: połączenie jest aktywne, ale dane nie są przesyłane
- 0x3: przesyłanie danych inne niż audio (tylko przy przełączaniu, jeśli nie, z użyciem 0xF)
- 0x4: streaming A2DP, AVRCP nie dotyczy
- 0x5: odtwarzanie strumieniowe A2DP i AVRCP
- 0x6: streaming HFP (połączenia telefoniczne/voip), z uwzględnieniem dzwonka wewnętrznego i zewnętrznego
- 0x7: LE Audio – strumieniowanie multimediów bez sterowania
- 0x8: LE Audio – strumieniowanie multimediów ze sterowaniem
- 0x9: LE Audio – streaming rozmowy
- 0xA: LE Audio – transmisja
- 0xF: tymczasowo wyłącz przełączanie połączenia (np. aktualizację oprogramowania układowego)
Mapa bitowa połączonego urządzenia
Aby uniknąć niechcianego przełączania połączenia, osoba przeglądająca będzie musiała wiedzieć, z którymi urządzeniami jest obecnie połączony zestaw słuchawkowy. Na przykład po podłączeniu zestawu słuchawkowego do telefonu użytkownik nie chce, aby połączenie zostało przerwane, gdy jeden z członków jego grupy rodzinnej włączy YouTube na tablecie.
Pamiętaj, że ta bitmapa jest anonimowa, a szukający nie wie, jakie inne urządzenia są powiązane z dostawcą. Weźmy na przykład 5 połączonych urządzeń:
- 0: laptop (0bx0000000)
- 1: telefonA (0b0x000000)
- 2: telefonB (0b00x00000)
- 3: tablet (0b000x0000)
- 4: TV (0b0000x000)
Jeśli obecnie połączone urządzenia to laptop i tablet, wartość mapy bitowej będzie wynosić 0b10010000. Zmiana kolejności jest akceptowalna, jeśli nie można jej uniknąć, np. gdy użytkownik zresetuje zestaw słuchawkowy do ustawień fabrycznych lub gdy liczba połączonych urządzeń osiągnie górny limit.
Losowa reklama rozpoznawalna
Aby uniknąć śledzenia i szanować prywatność użytkowników, dostawca powinien wykonać rotację i zaszyfrować pole według klucza konta za pomocą AES-CTR:
encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)
gdzie
Klucz jest uzyskiwany z klucza używanego konta, który został zdefiniowany w następnej sekcji.
Klucz jest generowany przez funkcję HKDF, IETF RFC 5869, przy użyciu funkcji skrótu SHA-256.
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
Dostawca powinien użyć tutaj oryginalnego klucza konta. Oznacza to, że pierwszy bajt klucza to 0x04 i nie jest uwzględniony we wzorcu użycia.
IV (wektor początkowy) to 2-bajtowy ciąg zaburzający danych klucza konta z zerowym dopełnieniem. IV to „concat” (sól, 14-bajtowe zera).
Nieprzetworzone dane stanu połączenia są zdefiniowane w tabeli 4.1. Jeśli stan połączenia się zmieni, należy ponownie wygenerować ciąg zaburzający i RPA w tym samym okresie wyświetlania reklam.
Spowoduje to rotację pola stanu zaszyfrowanego połączenia z rotacją danych klucza konta.
Struktura reklamy BLE będzie miała taką strukturę:
Oktet | Typ danych | Opis | Wartość | Obowiązkowa? |
---|---|---|---|---|
0 | uint8 |
Wersja i flagi | 0x10 | Obowiązkowe |
1–t | Dane klucza konta | zależy | Obowiązkowe | |
T+1 – S | Dane dotyczące baterii | zależy | Opcjonalnie | |
s+1 – var | Losowe dane możliwe do uzyskania | zależy | Obowiązkowa,jeśli lista kluczy konta nie jest pusta. W przeciwnym razie została wykluczona. |
Tabela 4.2. Reklamy BLE z losowymi dostępnymi danymi
Losowe dane możliwe do uzyskania obejmują:
Oktet | Typ danych | Opis | Wartość | Obowiązkowa? |
---|---|---|---|---|
0 | uint8 |
Długość i typ pola 0bLLLLTTTT
|
0bLLLL0110
|
Obowiązkowe |
1 – var | Zaszyfrowane dane | zależy | Obowiązkowe |
Tabela 4.2.1. Losowe dane możliwe do rozwiązania
Jeśli na przykład losowe dane możliwe do rozpoznania zawierają pole stanu zaszyfrowanego połączenia, odszyfrowanym wynikiem będzie pole stanu połączenia.
Aby zapobiec ingerencji, powyższe dane klucza konta należy nieco zmodyfikować, gdy w reklamie umieszczone są losowe dane możliwe do rozwiązania. Zwykle podczas tworzenia filtra klucza konta wartość V jest generowana przez połączenie filtra klucza konta z ciągiem zaburzającym. Jeśli reklamowane są także losowe dane dostępne do pobrania, wartość V powinna wyglądać tak:
V = concat(account_key, salt, random_resolvable_data)
Jeśli reklamowane są zarówno dane o baterii, jak i losowe dane możliwe do odczytania, V należy utworzyć w taki sposób:
V = concat(account_key, salt, battery_data, random_resolvable_data)
Używany klucz konta
Przełączanie połączenia odbywa się na podstawie konta, więc dostawca powinien uwzględnić w reklamie BLE informacje o koncie bieżącego połączenia. Jeśli aktualnie połączone urządzenie to użytkownik zmieniający dźwięk, dostawca powinien mieć możliwość uzyskania klucza konta powiązanego z tym mechanizmem wyszukiwania i zaszyfrowania pola stanu połączenia za pomocą tego klucza konta. Jeśli podłączonym źródłem dźwięku jest narzędzie spoza przełącznika dźwięku, dostawca powinien użyć ostatnio używanego klucza konta.
Przed obliczeniem filtra klucza konta dostawca powinien zmodyfikować pierwszy bajt kluczy konta, aby uwzględnić jeden z tych wzorców użycia:
- 0b00000100
Klucz konta nie jest używany.
Jest to wartość domyślna (patrz Klucz konta). - 0b00000101
Ten klucz konta jest ostatnio używanym kluczem konta.
Pole stanu połączenia jest szyfrowane za pomocą tego klucza konta. Brak informacji o kluczu konta o bieżącym stanie połączenia. Może to oznaczać, że nie są połączone żadne urządzenia lub połączone urządzenie nie jest narzędziem wyszukiwania przełączników dźwięku. - 0b00000110
Ten klucz konta to używany klucz konta.
Pole stanu połączenia jest szyfrowane za pomocą tego klucza konta, a obecnie połączone urządzenie jest powiązane z tym kluczem konta.
Schemat ładunku przełącznika dźwięku
Rysunek poniżej przedstawia schemat ładunku przełącznika dźwięku.
Wiadomości
Po nawiązaniu połączenia użytkownik i dostawca mogą użyć strumienia wiadomości do synchronizowania funkcji przełączania dźwięku, uruchamiania przełącznika połączenia, konfigurowania i pobierania ustawienia przełączania, powiadamiania o stanie połączenia itd. Utworzymy grupę wiadomości i kody wiadomości przeznaczone dla przełącznika dźwięku, jak pokazano poniżej.
Nazwa grupy wiadomości | Wartość |
---|---|
Przełączanie dźwięku | 0 x 7 |
Dodatkowe informacje o każdym kodzie wiadomości znajdziesz w poniższych sekcjach.
Nazwa kodu wiadomości | Wartość | Tylko połączenie wielopunktowe | Nadawca | Respondent | Zaszyfruj | MAC | POTWIERDŹ |
---|---|---|---|---|---|---|---|
Korzystanie z funkcji Przełącznik dźwięku | 0x10 | N | Obie opcje | W obu przypadkach za pomocą kodu 0x11 | N | N | N |
Powiadom o możliwości przełącznika dźwięku | 0x11 | N | Obie opcje | Obie opcje | N | Y | Y |
Ustawianie stanu połączenia wielopunktowego | 0x12 | Y | Poszukiwacz | Dostawca | N | Y | Y |
Ustawianie preferencji przełączania | 0x20 | Y | Poszukiwacz | Dostawca | N | Y | Y |
Wybierz preferencje | 0x21 | Y | Poszukiwacz | Dostawca, za pomocą kodu 0x22 | N | N | N |
Ustawienie powiadomień | 0x22 | Y | Dostawca | Poszukiwacz | N | N | N |
Przełącz aktywne źródło dźwięku(na połączone urządzenie) | 0x30 | Y | Poszukiwacz | Dostawca | N | Y | Y |
Przełącz się z powrotem na odłączone urządzenie | 0x31 | N | Poszukiwacz | Dostawca | N | Y | Y |
Powiadamianie zdarzenia przełączania punktów wielopunktowych | 0x32 | Y | Dostawca | Poszukiwacz | N | N | N |
Uzyskanie informacji o stanie połączenia | 0x33 | Y | Poszukiwacz | Dostawca, za pomocą kodu 0x34 | N | N | N |
Powiadom o stanie połączenia | 0x34 | Y | Dostawca | Poszukiwacz | Y | N | N |
Powiadomienie o połączeniu zainicjowanym przez przełącznik dźwięku | 0x40 | N | Poszukiwacz | Dostawca | N | Y | Y |
Wskazywanie używanego klucza konta | 0x41 | N | Poszukiwacz | Dostawca | N | Y | Y |
Wysyłanie danych niestandardowych | 0x42 | N | Poszukiwacz | Dostawca | N | Y | Y |
Ustaw miejsce docelowe połączenia | 0x43 | Y | Poszukiwacz | Dostawca | N | Y | Y |
Tabela 4.3. Komunikaty przełączania dźwięku
MAC wiadomości przełącznika dźwięku
Aby możliwe było uwierzytelnianie wiadomości, wszystkie wiadomości przełączania dźwięku z dodatkowymi danymi wysyłanymi od nadawcy do dostawcy wymagają kodu uwierzytelniania wiadomości. Otrzymana wiadomość z MAC powinna zostać potwierdzona, aby osoba przeglądająca wiedziała, czy dostawca zareagował na tę wiadomość.
Jeśli uwierzytelnienie wiadomości się powiedzie, dostawca musi wysłać potwierdzenie tej wiadomości:
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | Uint8 | Potwierdzenie | 0xFF |
1 | Uint8 | POTWIERDŹ | 0x01 |
2–3 | Uint16 | Dodatkowa długość danych | zależy |
4 | Uint8 | Przełączanie dźwięku | 0 x 7 |
5 | Uint8 | Kod wiadomości przełącznika dźwięku | zależy |
6–s | Dodatkowe dane | zależy |
W przypadku niepowodzenia dostawca wysyła NAK dla wiadomości:
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | Uint8 | Potwierdzenie | 0xFF |
1 | Uint8 | NAK | 0x02 |
2–3 | Uint16 | Dodatkowa długość danych | 0x0003 |
4 | Uint8 | Przyczyna błędu | zależy |
5 | Uint8 | Przełączanie dźwięku | 0 x 7 |
6 | Uint8 | Kod wiadomości przełącznika dźwięku | zależy |
Pamiętaj, że jeśli dostawca jest nadawcą, adres MAC nie jest wymagany.
Możliwość korzystania z funkcji Przełącznik dźwięku
Dostawca przełącznika dźwięku i szukający mogą sprawdzić, czy podłączony Szybkie parowanie/dostawca obsługuje przełącznik dźwięku, używając tego komunikatu:
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | Uint8 | Przełączanie dźwięku | 0 x 7 |
1 | Uint8 | Możliwość korzystania z funkcji Przełącznik dźwięku | 0x10 |
2–3 | Uint16 | Dodatkowa długość danych | 0 |
Tabela 4.3.1.0. Możliwości funkcji Przełącznik dźwięku
Powiadamianie o możliwości przełącznika dźwięku
Po otrzymaniu kodu komunikatu uzyskanie możliwości przełącznika dźwięku funkcja wyszukiwania/dostawcy przełącznika dźwięku zareaguje, przesyłając jedną z tych flag:
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | Uint8 | Przełączanie dźwięku | 0 x 7 |
1 | Uint8 | Powiadamianie o możliwości przełącznika dźwięku | 0x11 |
2–3 | Uint16 | Dodatkowa długość danych | 20, jeśli jest ona wysyłana przez Seeker 4, jeśli jest wysyłana przez dostawcę |
4–5 | Uint16 | Kod wersji przełącznika dźwięku | Wartość różna od 0 oznacza, że obsługuje on przełącznik dźwięku. Obecna wersja (z rozszerzeniem zabezpieczeń) kod to 0x0102. 0x0000 lub brak odpowiedzi w ciągu 1 sekundy oznacza, że to urządzenie nie obsługuje przełącznika dźwięku |
6–7 | flagi | Flagi możliwości przełączania dźwięku po stronie dostawcy Jeśli ta funkcja jest wysyłana przez osobę wyszukującą, te 2 bajty należy zignorować. |
różne Zobacz Flagi możliwości przełączania dźwięku. |
8–15 | Liczba jednorazowa wiadomości Wymagana tylko wtedy, gdy jest wysyłana przez osobę przeglądającą |
zależy | |
16–23 | Kod uwierzytelniania wiadomości Wymagany tylko wtedy, gdy wysyła tę wiadomość przez Seeker |
zależy |
Tabela 4.3.1.1. Powiadamianie o możliwości przełączania dźwięku
Flagi możliwości przełączania dźwięku
Bit 0 (oktet 6, MSB): stan przełącznika dźwięku
- 1, jeśli stan przełącznika dźwięku jest włączony
- 0, w przeciwnym razie
Bit 1: możliwość konfiguracji wielopunktowej
- 1, jeśli urządzenie obsługuje połączenie wielopunktowe i można je przełączać
- 0, w przeciwnym razie (nie obsługuje połączeń wielopunktowych, a połączenie jest zawsze włączone)
Bit 2: bieżący stan wielopunktowy
- 1, jeśli połączenie wielopunktowe jest włączone
- 0, w przeciwnym razie
Bit 3: wykrywanie dźwięku na głowie
- 1, jeśli to urządzenie obsługuje wykrywanie na głowie (nawet jeśli jest ono teraz wyłączone).
- 0, w przeciwnym razie
Bit 4: bieżący stan wykrywania na głowie
- 1, jeśli wykrywanie na głowie jest włączone
- 0, w przeciwnym razie (nie obsługuje wykrywania na głowie lub takiego, które jest wyłączone)
Wszystkie inne bity są zarezerwowane, a domyślnie przyjmuje wartość 0.
Ustaw stan połączenia wielopunktowego
W przypadku poszukiwaczy przełączników dźwięku możemy udostępnić ustawienie do włączania i wyłączania funkcji wielopunktowych. Seeker ustawi stan połączenia wielopunktowego na dostawcę za pomocą tego komunikatu:
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | Uint8 | Przełączanie dźwięku | 0 x 7 |
1 | Uint8 | Ustaw stan połączenia wielopunktowego | 0x12 |
2–3 | Uint16 | Dodatkowa długość danych | 17 |
4 | Uint8 | Stan połączenia wielopunktowego | 0: wyłącz połączenie wielopunktowe 1: włącz połączenie wielopunktowe |
5–12 | Liczba jednorazowa wiadomości | zależy | |
13–20 | Kod uwierzytelniania wiadomości | zależy |
Tabela 4.3.1.2. Ustawianie stanu połączenia wielopunktowego
Ustaw preferencje przełączania
Poszukiwacze przełączników dźwięku mogą zmienić ustawienie przełączania wielopunktowego i ustawić je na dostawcę, wyświetlając ten komunikat:
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | Uint8 | Przełączanie dźwięku | 0 x 7 |
1 | Uint8 | Ustaw preferencje przełączania | 0x20 |
2–3 | Uint16 | Dodatkowa długość danych | 18 |
4 | flagi | Zmienianie preferencji | różne Zobacz flagę ustawienia przełączania wielopunktowego |
5 | Zaawansowane ustawienia przełączania Ten bajt jest zarezerwowany, wartość domyślna to 0 |
zależy | |
6–13 | Liczba jednorazowa wiadomości | zależy | |
14–21 | Kod uwierzytelniania wiadomości | zależy |
Tabela 4.3.2.0. Konfigurowanie preferencji przełączania
Flaga ustawienia przełączania wielopunktowego
- Bit 0 (MSB): A2DP vs. A2DP (domyślnie 0)
- Bit 1: HFP vs. HFP (domyślnie 0)
- Bit 2: A2DP kontra HFP (domyślnie 0)
- Bit 3: HFP vs. A2DP (domyślnie 1)
- Bit 4–7: zarezerwowane
- Powyżej odpowiada „prośba o nowy profil” w porównaniu z „bieżącym aktywnym profilem”.
- 0 – nie przełączasz
- 1 – przełączanie
Pobierz ustawienie przełączania
Poszukiwacze przełączników dźwięku mogą wysyłać zapytania o ustawienie przełączania wielu punktów z poziomu dostawcy, używając tego komunikatu:
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | Uint8 | Przełączanie dźwięku | 0 x 7 |
1 | Uint8 | Pobranie konfiguracji przełączania | 0x21 |
2–3 | Uint16 | Dodatkowa długość danych | 0 |
Tabela 4.3.2.1. Uzyskiwanie preferencji przełączania
Ustawienie powiadamiania o zmianie
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | Uint8 | Przełączanie dźwięku | 0 x 7 |
1 | Uint8 | Ustawienie powiadamiania o zmianie | 0x22 |
2–3 | Uint16 | Dodatkowa długość danych | 2 |
4 | flagi | Zmienianie flag ustawień | różne Zobacz flagę ustawienia przełączania wielopunktowego |
5 | Zaawansowane ustawienia przełączania Ten bajt jest zarezerwowany, wartość domyślna to 0 |
zależy |
Tabela 4.3.2.2. Preferencje przełączania powiadomień
Przełącz aktywne źródło dźwięku (na połączone urządzenie)
Poszukiwacze przełączników dźwięku mogą poprosić dostawcę połączeń wielopunktowych o przełączenie aktywnego źródła dźwięku między połączonymi urządzeniami. W tym celu użyj tego komunikatu:
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | Uint8 | Przełączanie dźwięku | 0 x 7 |
1 | Uint8 | Przełącz aktywne źródło dźwięku (na połączone urządzenie) | 0x30 |
2–3 | Uint16 | Dodatkowa długość danych | 17 |
4 | flagi | Przełączanie flag zdarzeń aktywnego źródła dźwięku | różne Zobacz zdarzenia przełączania aktywnego źródła dźwięku |
5–12 | Liczba jednorazowa wiadomości | zależy | |
13–20 | Kod uwierzytelniania wiadomości | zależy |
Tabela 4.3.3.0. Przełączanie aktywnego źródła dźwięku (na podłączone urządzenie)
Przełączam aktywne zdarzenie źródła dźwięku
- Bit 0 (MSB): 1 przełącznik na to urządzenie, 0 na drugie połączone urządzenie
- Bit 1: 1 wznawia odtwarzanie na przełączniku po zmianie urządzenia. W przeciwnym razie – 0. Wznowienie odtwarzania oznacza, że dostawca wysyła powiadomienie o odtwarzaniu do szukającego przez profil AVRCP. Jeśli w poprzednim stanie (przed przełączeniem) nie było PLAY, dostawca powinien zignorować tę flagę.
- Bit 2: 1 odrzuca SCO na wyłączonym urządzeniu; w przeciwnym razie 0
- Bit 3: 1 odłącza Bluetooth na urządzeniu przełączonym poza domem. W przeciwnym razie – 0.
- Bit 4–7: zarezerwowany.
Funkcja wyszukiwania przełączników dźwięku może nie zawsze znać prawidłowy stan, więc dostawca może otrzymać komunikat „przełącz się na to urządzenie”, gdy jest on już aktywnym urządzeniem. W tym przypadku, aby wyświetlić prawidłowy interfejs w narzędziu Seeker, dostawca może wysłać NAK z przyczyną błędu 0x4 – nadmiarowe działanie urządzenia.
Przełącz się z powrotem (na odłączone urządzenie)
Jeśli przełączanie połączenia jest niepożądane, użytkownicy mogą je cofnąć. W niektórych sytuacjach warto przywrócić połączenie audio, aby zminimalizować zakłócenia. Szukający użyje poniższego komunikatu, aby wywołać powrót:
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | Uint8 | Przełączanie dźwięku | 0 x 7 |
1 | Uint8 | Przełącz się z powrotem (na odłączone urządzenie) | 0x31 |
2–3 | Uint16 | Dodatkowa długość danych | 17 |
4 | Uint8 | Przełącz zdarzenie | różne 0x01: powrót 0x02: powrót i wznowienie odtwarzania |
5–12 | Liczba jednorazowa wiadomości | zależy | |
13–20 | Kod uwierzytelniania wiadomości | zależy |
Tabela 4.3.3.1. Przełączanie z powrotem (w przypadku odłączonego urządzenia)
W przypadku dostawcy połączeń wielopunktowych dostawca może przerwać połączenie z jednym źródłem dźwięku i wstrzymać sesję audio na drugim urządzeniu. Załóżmy na przykład, że zestaw słuchawkowy wielopunktowy jest podłączony do tabletu i 3 obsługiwanego przełącznika dźwięku. Użytkownik ogląda film na tablecie, gdy nadejdzie połączenie przychodzące na jego telefon. Telefon aktywuje przełącznik połączenia na zestawie słuchawkowym, który musi anulować połączenie trzeciego urządzenia, aby połączyć się z telefonem, a jednocześnie wstrzyma sesję multimediów na tablecie, aby pobrać dzwonek z telefonu. Jeśli użytkownik odrzuci połączenie, telefon może poprosić zestaw słuchawkowy o „przełączenie się z powrotem i wznowienie odtwarzania”. Po otrzymaniu tego żądania zestaw słuchawkowy musi ponownie połączyć się z trzecim urządzeniem i wznowić odtwarzanie wstrzymanego filmu na tablecie.
Powiadom zdarzenie przełączania wielopunktowego
Aby poinformować użytkowników o tym, że odbywa się zdarzenie przełączania wielopunktowego, przełącznik dźwięku może wyświetlać im powiadomienie. Dostawca powinien powiadomić poszukiwaczy przełączników dźwięku o zdarzeniu przełączania.
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | Uint8 | Przełączanie dźwięku | 0 x 7 |
1 | Uint8 | Powiadomienie o zdarzeniu przełącznika wielopunktowego Dostawca powinien wysyłać je za każdym razem, gdy użytkownik korzysta z przełącznika dźwięku, a następnie odtwarzający przełącznik dźwięku poza audio |
0x32 |
2–3 | Uint16 | Dodatkowa długość danych | zależy |
4 | Uint8 | Powód zmiany | różne 0x00: nieokreślony 0x01: streaming A2DP 0x02: HFP |
5 | Uint8 | Urządzenie docelowe | różni się 0x01: to urządzenie 0x02: inne połączone urządzenie |
6 – n | UTF-8 | Nazwa urządzenia docelowego , jeśli urządzeniem docelowym jest narzędzie Audio Switch Seeker, używając nazwy wysłanej przez osobę przeglądającą. W przeciwnym razie użyj nazwy BT (jeśli nie jest używana) z użyciem ostatnich 2 bajtów adresu. |
zależy |
Tabela 4.3.3.2. Powiadamianie zdarzenia przełączania punktów wielopunktowych
Pobranie stanu połączenia
Osoba szukająca może pobrać od dostawcy bieżący stan połączenia:
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | Uint8 | Przełączanie dźwięku | 0 x 7 |
1 | Uint8 | Pobranie stanu połączenia | 0x33 |
2–3 | Uint16 | Dodatkowa długość danych | 0 |
Tabela 4.3.3.3. Pobieranie stanu połączenia
Po otrzymaniu tej wiadomości dostawca powinien odpowiedzieć kodem 0x34, informując o stanie połączenia.
Powiadom o stanie połączenia
Zgodnie z definicją w ładunku reklamowym BLE, w przypadku dostawców wielopunktowych, jeśli stan połączenia się zmieni (oprócz zmiany pakietu reklamowego), dostawca powinien również powiadomić o tej zmianie połączone podmioty wyszukujące, które używają tego samego klucza konta. Jeśli dostawca jest połączony z wyszukiwaniem przełączników dźwięku i osobą spoza tego obszaru, dostawca powinien powiadomić osobę wyszukującą związaną z przełącznikiem dźwięku (bez tego przełącznika dźwięku), o stanie połączenia (przy użyciu klucza konta osoby wyszukującej).
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | Uint8 | Przełączanie dźwięku | 0 x 7 |
1 | Uint8 | Powiadom o stanie połączenia | 0x34 |
2–3 | Uint16 | Dodatkowa długość danych | zależy |
4 | Uint8 | Flaga aktywnego urządzenia | Różni się 0x00: ten szukający jest pasywny, a aktywne urządzenie używa tego samego klucza konta 0x01: ten szukający jest urządzeniem aktywnym 0x02: wyszukiwany jest pasywny, a aktywne jest to aplikacja niebędąca narzędziem do wyszukiwania przełączników dźwięku. |
5 – n | Stan połączenia szyfrowanego | zależy | |
n+1 – n+8 | Liczba jednorazowa wiadomości | zależy |
Tabela 4.3.3.4. Powiadamianie o stanie połączenia
Komunikat o stanie zaszyfrowanego połączenia
encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)
gdzie:
Klucz jest pobierany z klucza używanego konta. Patrz Losowa reklama możliwa do rozpoznania.
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
IV to concat(Session_nonce, Message_nonce)
connection_status_raw_data = concat(connection_state, custom_data, connect_devices) zdefiniowanej w ładunku reklamowym BLE Pamiętaj, że nie należy podawać bajtów długości i typu pola, ponieważ mamy tutaj kod komunikatu i długość danych.
Powiadom o połączeniu zainicjowanym przez przełącznik dźwięku
Dostawcy przełączników dźwięku mogą potrzebować informacji o tym, czy przełączanie połączenia zostało aktywowane przez przełącznik dźwięku w związku z różnymi reakcjami, np. aby wyłączyć ikony audio w przypadku zdarzeń przełączania dźwięku. Seeker wysyła wiadomość, aby powiadomić dostawcę, że to połączenie było połączeniem zainicjowanym przez przełącznik dźwięku.
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | Uint8 | Przełączanie dźwięku | 0 x 7 |
1 | Uint8 | Powiadom o połączeniu zainicjowanym przez przełącznik dźwięku | 0x40 |
2–3 | Uint16 | Dodatkowa długość danych | 17 |
4 | Uint8 | Wskaźnik połączenia zainicjowanego przez przełącznik dźwięku | różne 0: to połączenie nie zostało aktywowane przez przełącznik dźwięku 1: było to połączenie zainicjowane przez przełącznik dźwięku |
5–12 | Liczba jednorazowa wiadomości | zależy | |
13–20 | Kod uwierzytelniania wiadomości | zależy |
Tabela 4.3.4.0. Powiadamianie o połączeniu zainicjowanego przez przełącznik dźwięku
Wskaż używany klucz konta
Jeśli z dostawcą jest powiązanych wiele kluczy kont (np. wielu użytkowników), osoba wyszukująca użyje poniższego komunikatu, aby wskazać, który klucz konta jest używany.
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | Uint8 | Przełączanie dźwięku | 0 x 7 |
1 | Uint8 | Wskaż używany klucz konta | 0x41 |
2–3 | Uint16 | Dodatkowa długość danych | 22 |
4–9 | UTF-8 | Ciąg znaków w użyciu | UTF8 („w użyciu”) |
10–17 | Liczba jednorazowa wiadomości | zależy | |
18–25 | Kod uwierzytelniania wiadomości | zależy |
Tabela 4.3.4.1. Wskazanie używanego klucza konta
Po otrzymaniu tej wiadomości dostawca może sprawdzić używany klucz konta, weryfikując kod uwierzytelniania wiadomości.
Wysyłaj dane niestandardowe
Aktywny mechanizm wyszukiwania przełączników dźwięku może przechowywać informacje (np. o wykorzystaniu dźwięku) o strumieniu audio w niestandardowym bajcie danych i wysłać je do dostawcy, używając tego komunikatu:
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | Uint8 | Przełączanie dźwięku | 0 x 7 |
1 | Uint8 | Wysyłaj dane niestandardowe | 0x42 |
2–3 | Uint16 | Dodatkowa długość danych | 17 |
4 | Uint8 | Dane niestandardowe | zależy |
5–12 | Liczba jednorazowa wiadomości | zależy | |
13–20 | Kod uwierzytelniania wiadomości | zależy |
Tabela 4.3.4.2. Wysyłanie danych niestandardowych
Po otrzymaniu danych niestandardowych dostawca zaktualizuje pakiet reklamowy, dodając do niego te dane. W przypadku dostawcy wielopunktowego powinien też powiadamiać o zmianie stanu połączenia z innym podłączonym obiektem wyszukiwania używającym tego samego klucza konta.
Ustaw wartość docelową połączenia
W przypadku wielopunktowych zestawów słuchawkowych, jeśli preferowane połączenie nie jest ostatnio używane, Poszukiwacze przełączników dźwięku mogą poinformować dostawcę, które urządzenie należy usunąć, używając tego komunikatu:
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | Uint8 | Przełączanie dźwięku | 0 x 7 |
1 | Uint8 | Ustaw wartość docelową połączenia | 0x43 |
2–3 | Uint16 | Dodatkowa długość danych | 17 |
4 | Uint8 | Kierowanie na połączone urządzenie do usunięcia | różne 1: to urządzenie |
5–12 | Liczba jednorazowa wiadomości | zależy | |
13–20 | Kod uwierzytelniania wiadomości | zależy |
Tabela 4.3.4.3. Ustawianie miejsca docelowego połączenia bez połączenia
Implementacja referencyjna
Informacje o implementacji plików referencyjnych znajdziesz w bibliotece osadzonych pakietów SDK w pobliżu