Przełączanie dźwięku
Użytkownicy coraz częściej korzystają z różnych urządzeń źródłowych audio, codziennych zadań, rośnie zapotrzebowanie na prostsze rozwiązanie do zarządzania goglami na różnych urządzeniach. Przełącznik dźwięku płynnie przełącza się między zestawami słuchawkowymi między urządzeniami w zależności od aktywności użytkownika (np.rozpoczynanie filmu) i ustalane według priorytetów. zdarzeń (np. połączenia przychodzącego).
Zasady dotyczące UX
- Przełączanie połączeń powinno być szybkie i zależne od działania użytkownika.
- Przełączanie połączeń powinno być przejrzyste dla użytkowników i umożliwiać lub cofać, jeśli przełączenie jest niepożądane.
- Zmiana powinna zapewniać prywatność użytkowników.
Role
Poszukiwacz zmiany dźwięku: Seeker to urządzenie źródłowe audio (np. telefonu lub tabletu), szukając zestawu słuchawkowego w pobliżu, z którym w razie potrzeby można się z nim połączyć.
Dostawca przełączników dźwięku: Dostawca to zwykle zestaw słuchawkowy reklamujący swój obecności i połączenia, aby umożliwić użytkownikom podjęcie decyzji o zmianie.
Omówienie wymagań
Aby możliwe było zastosowanie inteligentnego przełączania, dostawcy muszą przestrzegać tych wymagań:
Nazwa | Opis | Wymagania | Obowiązkowe? |
---|---|---|---|
Skanowanie strony | Aby zaakceptować nowe żądanie połączenia od innego szukającego, gdy istnieje już połączenie. W przypadku dostawców usług jednopunktowych:
|
Aby zwiększyć wydajność, wymagany jest tryb skanowania stron z krótkim opóźnieniem (odstęp czasu skanowania nie powinien przekraczać 640 ms). Aby kompromis 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, odstęp między skanowaniem nie powinien przekraczać 1280 ms). Trybu niskiego opóźnienia należy jednak używać w tych sytuacjach:
|
Obowiązkowe |
Historia połączeń | Aby wrócić do poprzedniego połączenia i wznowić odtwarzanie, w razie potrzeby: Powrót do poprzedniego połączenia zostanie aktywowany przez komunikację przez interfejsy API strumienia wiadomości. W razie potrzeby w rekordzie należy uwzględnić zdarzenie wstrzymania dźwięku, aby można było wznowić odtwarzanie. |
Utrzymywanie historii połączeń i wdrażanie interfejsów Message Stream API. | Obowiązkowe |
Stan połączenia | Aby osoby szukające mogły dokonać oceny przełączania połączeń, stan połączenia obejmuje:
|
Uwzględnij stan połączenia w reklamach BLE i strumieniu wiadomości. | Obowiązkowe |
Zmiana możliwości środowiska wykonawczego | Przełącznik dźwięku można włączyć, aktualizując oprogramowanie u dostawcy, więc funkcje muszą być synchronizowane między Seekerem i dostawcą w czasie działania. | Wdróż interfejsy API strumienia wiadomości, aby uzyskać dostęp do funkcji środowiska wykonawczego. | Obowiązkowe |
Konfigurowalne reguły przełączania | Pozwól Seekera na konfigurowanie priorytetu istniejących aktywnych strumieni audio oraz nowych żądań strumieni audio w ustawieniach użytkownika. Na przykład przełącznik dźwięku Seeker może udostępniać ustawienia interfejsu, aby umożliwić użytkownikom włączanie i wyłączanie automatycznego przełączania między strumieniowym przesyłaniem multimediów a wywołaniem. Poszukiwacz przełącznika dźwięku ustawi i pobierze regułę przełączania przez strumień wiadomości. |
Tylko dostawcy usług wielopunktowych. Wdróż interfejsy API strumienia wiadomości, aby umożliwić konfigurowanie reguł przełączania między połączonymi urządzeniami. |
Opcjonalnie |
Aktywne przełączanie urządzeń | Pozwól na symulację przełączania dźwięku między połączonymi urządzeniami. Po stronie narzędzia do przełączania dźwięku może być dostępny interfejs umożliwiający łatwe przełączanie się między połączonymi urządzeniami. |
Tylko dostawcy usług wielopunktowych. Zaimplementuj interfejsy Message Stream API for Audio Switch Seeker, aby określić aktywne źródło dźwięku między połączonymi urządzeniami. |
Obowiązkowe |
Powiadomienie o przełączeniu połączenia wielopunktowego | Pozwól, by Poszukiwacz przełącznika dźwięku pokazywał powiadomienie o przełączeniu. | Tylko dostawcy usług wielopunktowych. Wdróż interfejsy API strumienia wiadomości, aby powiadamiać połączone osoby szukające przełącznika dźwięku, gdy następuje przełączenie wielopunktowe. |
Obowiązkowe |
Ładunek reklamowy
Dostawca uwzględni w reklamie swój bieżący stan połączenia, utworzonych na podstawie danych konta Szybkie parowanie opisanych w artykule Reklamy: gdy nie można ich znaleźć.
Pamiętaj, że wersja tabeli 4.2 to 0x1.
Pole stanu połączenia
Oktet | Typ danych | Opis | Wartość | Obowiązkowe? |
---|---|---|---|---|
0 | uint8 |
Długość i typ pola 0bLLTTTT
|
0bLLLL0101
|
Obowiązkowe |
1 | uint8 |
Stan połączenia 0bHAFRSSSS
|
0bHAFRSS
|
Obowiązkowe |
2 | uint8 |
Dane niestandardowe Aktualnie obejmują one tylko te typy treści, które są używane do opisania korzystania z aktualnie strumieniowania audio. Poszukiwacz wyśle go do dostawcy. |
Wartość jest wysyłana od Poszukiwacza bieżącego aktywnego strumienia do dostawcy przez strumień wiadomości. Wartość 0, jeśli bieżący aktywny strumień nie pochodzi z Seeker. | Obowiązkowe |
3 – var | Bitmapa połączonych urządzeń Bitmapa wskazująca, które urządzenia są obecnie połączone z dostawcą. Wszystkie powiązane urządzenia są ułożone w kolejności – jeden bit dla jednego powiązanego urządzenia. Długość zależy od liczby powiązanych urządzeń Dostawcy. |
Zmapowany bit ustawiony na 1, jeśli urządzenie jest obecnie połączone z dostawcą. W przeciwnym razie wartość 0. Szczegółowe informacje znajdziesz w sekcji Mapa bitowa połączonego urządzenia. |
Opcjonalnie |
Tabela 4.1. Nieprzetworzone dane w polu stanu połączenia
Flagi połączenia
0bH = wykrywanie głowy
- 1, teraz na głowie
- 0, w przeciwnym razie nie na głowie lub brak czujnika OHD
0bA = dostępność połączenia
- 1, dostępne jest połączenie
- 0, w przeciwnym razie
0bF = tryb pełnej koncentracji
- 1, obecnie w trybie skupionym, przełączanie połączeń jest niedozwolone w przypadku multimediów wykorzystanie, tzn. brak przechodzenia z A2DP na A2DP
- 0, w przeciwnym razie
0bR = automatyczne ponowne połączenie
- 1, jeśli bieżące połączenie jest automatycznie ponownie łączone przez Dostawcę, co oznacza nie jest połączony przez użytkowników (w przypadku połączenia wielopunktowego, jeśli jedna z istniejących automatycznie ponownych połączeń, powinna mieć wartość 1)
- 0, w przeciwnym razie
Stan połączenia
- 0x0: brak połączenia
- 0 x 1: stronicowanie
- 0x2: połączono, ale dane nie są przesyłane
- 0x3: przesyłanie danych innych niż dźwiękowe (tylko w przypadku przełączania, jeśli nie, przy użyciu 0xF)
- 0x4: strumieniowanie A2DP, nie dotyczy AVRCP
- 0 x 5: odtwarzanie strumieniowe A2DP i AVRCP
- 0 x 6: przesyłanie strumieniowe przez HFP (połączenie telefoniczne/głosowe) z dzwonkiem w pasmie i innym
- 0x7: LE Audio – strumieniowe przesyłanie multimediów bez sterowania
- 0x8: LE Audio – strumieniowe przesyłanie multimediów z kontrolą
- 0x9: LE Audio – strumieniowanie rozmowy
- 0xA: LE Audio – transmisja
- 0xF: tymczasowo wyłącz przełącznik połączenia (np. aktualizacja oprogramowania)
Typ kontekstu LE Audio i stan połączenia
Zaleca się, aby dostawca LE Audio obsługiwał wszystkie określone typy kontekstów w Assigned Numbers 6.12.3 (o ile dostawca wyraźnie nie obsługuje danego typu kontekstu) i mapę typ kontekstu do stanu połączenia, jak pokazano poniżej.
- Konwersacyjny: 0 x 9
- Multimedia: 0 x 8
- Gra: 0 x 7
- Instrukcja: 0 × 7
- Asystenci głosowi: 0 x 9
- Na żywo: 0 x 9
- Efekty dźwiękowe: 0 x 2
- Powiadomienia: 0 x 2
- Dzwonek: 0 x 9
- Alerty: 0 x 7
- Alarm o zagrożeniu: 0 x 9
W przypadku scenariusza mieszanego LE Audio, takiego jak odtwarzanie multimediów podczas Dostawca powinien używać stanu połączenia o najwyższym priorytecie, tj. 0 x 9 (wywołanie) dla powyższego scenariusza zamiast 0 x 8 (multimedia).
Mapa bitowa połączonego urządzenia
Aby uniknąć niepożądanej zmiany połączenia, Poszukiwacz musi wiedzieć, urządzenia, do których są obecnie podłączone słuchawki. Jeśli na przykład zestaw słuchawkowy jest połączony z telefonem, więc użytkownik nie chce, aby przeszkadzały mu gdy jeden z członków rodziny włączy YouTube na tablecie.
Pamiętaj, że ta bitmapa jest anonimowa, więc Poszukiwacz nie wie, co jeszcze które są powiązane z Dostawcą. Weźmy na przykład 5 powiązanych urządzeń:
- 0: laptop (0Bx0000000)
- 1: telefonA (0b0x000000)
- 2: telefonB (0B00x00000)
- 3: tablet (0b000x0000)
- 4: telewizor (0b0000x000)
Jeśli obecnie połączonymi urządzeniami są laptopy i tablety, wartość bitmapa ma format 0b10010000. Zmiana zamówienia jest akceptowalna, jeśli jest nieunikniona, np. gdy użytkownicy przywracają go do ustawień fabrycznych lub gdy liczba powiązanych urządzeń jest liczona. osiągnie górny limit.
Losowa rozsądna reklama
Aby uniknąć śledzenia i uszanować prywatność użytkowników, Dostawca powinien dokonywać rotacji i Zaszyfruj pole kluczem konta za pomocą AES-CTR:
encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)
gdzie
Klucz pochodzi z używanego klucza konta, który definicja została opisana w następnej sekcji.
Klucz jest generowany przez funkcję HKDF (IETF RFC 5869) przy użyciu SHA-256 .
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
Dostawca użyje tu oryginalnego klucza konta, tj. pierwszego bajtu klucza to 0x04, nie jest uwzględniony we wzorcu użycia.
Wektor początkowy (IV) to 2-bajtowy ciąg zaburzający danych klucza konta o zerowej wartości dopełnienie, np. IV to concat(salt, 14-bajt ZEROs).
Nieprzetworzone dane o stanie połączenia są zdefiniowane w tabeli 4.1, jeśli zmian stanu połączenia, sól i RPA należy ponownie wygenerować w tym samym okresie wyświetlania reklam.
Powoduje to, że pole stanu zaszyfrowanego połączenia jest równocześnie rotowane Dane klucza konta są poddawane rotacji.
Reklama BLE ma następującą strukturę:
Oktet | Typ danych | Opis | Wartość | Obowiązkowe? |
---|---|---|---|---|
0 | uint8 |
Wersja i flagi | 0x10 | Obowiązkowe |
1–t | Dane klucza konta | różni się | Obowiązkowe | |
T+1 – S | Dane o baterii | różni się | Opcjonalnie | |
s+1 – var | Losowe dane możliwe do rozwiązania | różni się | Wymagane,jeśli lista kluczy konta nie jest pusta. W przeciwnym razie zostaną wykluczone. |
Tabela 4.2. Reklamy BLE zawierające losowe dane możliwe do rozwiązania
Losowe dane możliwe do rozwiązania zawierają:
Oktet | Typ danych | Opis | Wartość | Obowiązkowe? |
---|---|---|---|---|
0 | uint8 |
Długość i typ pola 0bLLTTTT
|
0bLLLL0110
|
Obowiązkowe |
1 – var | Zaszyfrowane dane | różni się | Obowiązkowe |
Tabela 4.2.1: Dane losowe
Jeśli na przykład dane losowe zawierają zaszyfrowane połączenie pola stanu, odszyfrowanym wynikiem będzie polu stanu połączenia.
Aby zapobiec manipulacjom, musisz nieznacznie zmienić powyższe dane klucza konta gdy w reklamie zawarte są losowe dane możliwe do rozwiązania. Normalnie, gdy podczas tworzenia filtra klucza konta, zostaje użyta wartość V przez połączenie konta filtr z ciągiem zaburzającym. Zamiast tego, gdy wartość V powinna być skonstruowana w ten sposób:
V = concat(account_key, salt, random_resolvable_data)
Jeśli reklamowane są zarówno dane o baterii, jak i dane losowe, V powinien być skonstruowane w ten sposób:
V = concat(account_key, salt, battery_data, random_resolvable_data)
Klucz do konta w użyciu
Przełączanie połączeń odbywa się na podstawie konta, dlatego Dostawca powinien uwzględnić informacje o bieżącym połączeniu w reklamie BLE. Jeśli obecnie podłączone urządzenie jest Poszukiwaczem przełączania dźwięku, Dostawca powinien mieć aby uzyskać klucz konta powiązany z tym Poszukiwaczem i używać go do zaszyfrować pole stanu połączenia. Jeśli podłączone źródło dźwięku to inne niż audio Switch Seeker, dostawca powinien użyć ostatnio używanego klucza konta.
Przed obliczeniem filtra klucza konta Dostawca powinien zmodyfikować pierwszy kluczy konta, aby uwzględnić jeden z następujących wzorców użycia:
- 0b00000100
Ten klucz konta nie jest używany.
Jest to wartość domyślna (patrz Klucz konta). - 0b00000101
Ten klucz konta jest ostatnio używany.
Pole stanu połączenia jest szyfrowane tym kluczem konta. Brak o bieżącym stanie połączenia, może to oznaczać, że nie podłączone urządzenia lub podłączone urządzenie nie jest Poszukiwaczem przełącznika dźwięku. - 0b00000110
Ten klucz konta to używany klucz do konta.
Pole stanu połączenia jest szyfrowane przez ten klucz konta, a bieżące połączone urządzenie jest powiązane z tym kluczem do konta.
Schemat ładunku przełącznika dźwięku
Ilustracja poniżej przedstawia schemat ładunku przełącznika dźwięku.
Wiadomości
Po połączeniu Seeker i Dostawca mogą używać strumienia wiadomości do synchronizowania dźwięku przełączać możliwości, aktywować przełącznik połączenia, ustawiać i uzyskiwać przełączenie. ustawienia, powiadamiaj o stanie połączenia itd. Tworzymy grupę wiadomości i kodów komunikatów specyficznych dla przełącznika dźwięku, jak podano poniżej.
Nazwa grupy wiadomości | Wartość |
---|---|
Przełączanie dźwięku | 0x07 |
Dodatkowe informacje o poszczególnych kodach wiadomości znajdziesz w kolejnych sekcjach.
Nazwa kodu wiadomości | Wartość | Tylko połączenie wielopunktowe | Nadawca | Respondent | Zaszyfruj | MAC | POTWIERDŹ |
---|---|---|---|---|---|---|---|
Korzystanie z przełącznika dźwięku | 0x10 | N | Obie opcje | Oba za pomocą kodu 0x11 | N | N | N |
Powiadamianie funkcji przełącznika dźwięku | 0x11 | N | Obie opcje | Obie opcje | N | T | T |
Ustawianie stanu połączenia wielopunktowego | 0x12 | T | Poszukiwacz | Dostawca | N | T | T |
Ustawianie preferencji przełączania | 0x20 | T | Poszukiwacz | Dostawca | N | T | T |
Pobieranie preferencji przełączania | 0x21 | T | Poszukiwacz | Dostawca, za pomocą kodu 0x22 | N | N | N |
Powiadamianie o zmianie preferencji | 0x22 | T | Dostawca | Poszukiwacz | N | N | N |
Przełącz aktywne źródło dźwięku(na połączone urządzenie) | 0x30 | T | Poszukiwacz | Dostawca | N | T | T |
Wróć | 0x31 | N | Poszukiwacz | Dostawca | N | T | T |
Powiadom zdarzenie przełączania wielopunktowego | 0x32 | T | Dostawca | Poszukiwacz | N | N | N |
Uzyskiwanie stanu połączenia | 0x33 | T | Poszukiwacz | Dostawca, za pomocą kodu 0x34 | N | N | N |
Powiadamianie o stanie połączenia | 0 × 34 | T | Dostawca | Poszukiwacz | T | N | N |
Powiadamiaj o połączeniu zainicjowanym przez przełącznik dźwięku | 0x40 | N | Poszukiwacz | Dostawca | N | T | T |
Wskaż używany klucz konta | 0x41 | N | Poszukiwacz | Dostawca | N | T | T |
Wysyłaj dane niestandardowe | 0x42 | N | Poszukiwacz | Dostawca | N | T | T |
Ustawianie wartości docelowej połączenia | 0x43 | T | Poszukiwacz | Dostawca | N | T | T |
Tabela 4.3. Komunikaty dotyczące przełącznika dźwięku
Adres MAC wiadomości przełącznika dźwięku
Aby zapewnić uwierzytelnianie wiadomości, wszystkie wiadomości przełącznika dźwięku zawierają dodatkowe dane wysyłane z usługi Seeker do dostawcy wymagają kodu uwierzytelniania wiadomości. Kiedy wiadomość z MAC, powinna być potwierdzona, aby Seeker wie, czy Dostawca zareagował na wiadomość.
Jeśli uwierzytelnienie wiadomości się powiedzie, dostawca wyśle potwierdzenie wiadomość:
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Potwierdzenie | 0xFF |
1 | uint8 | POTWIERDŹ | 0x01 |
2–3 | uint16 | Dodatkowa długość danych | różni się |
4 | uint8 | Przełączanie dźwięku | 0x07 |
5 | uint8 | Kod wiadomości przełącznika dźwięku | różni się |
6–s | Dodatkowe dane | różni się |
W przypadku niepowodzenia Dostawca powinien wysł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 | różni się |
5 | uint8 | Przełączanie dźwięku | 0x07 |
6 | uint8 | Kod wiadomości przełącznika dźwięku | różni się |
Pamiętaj, że jeśli nadawcą jest dostawca, MAC nie jest wymagany.
Korzystanie z przełącznika dźwięku
Zarówno dostawca przełączników dźwięku, jak i szukający mogą sprawdzić, czy połączone Szybkie parowanie Poszukiwacz/dostawca obsługuje przełącznik dźwięku (lub nie) przy użyciu tego komunikatu:
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Przełączanie dźwięku | 0x07 |
1 | uint8 | Korzystanie z przełącznika dźwięku | 0x10 |
2–3 | uint16 | Dodatkowa długość danych | 0 |
Tabela 4.3.1.0: Korzystanie z przełącznika dźwięku
Powiadamianie o możliwości przełącznika dźwięku
Po otrzymaniu możliwości przełącznika dźwięku , wyszukiwanie lub dostawca przełącznika dźwięku zwróci jeden z tych komunikatów: flagi:
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Przełączanie dźwięku | 0x07 |
1 | uint8 | Powiadamianie o możliwości przełącznika dźwięku | 0x11 |
2–3 | uint16 | Dodatkowa długość danych | 20, jeśli jest to wysyłane przez Seeker, 4, jeśli jest to wysyłane przez dostawcę |
4–5 | uint16 | Kod wersji przełącznika dźwięku | Wartość inna niż 0 oznacza, że obsługuje on przełącznik dźwięku. Obecna wersja (z ulepszeniem zabezpieczeń) to 0x0102. 0x0000 lub brak odpowiedzi w ciągu 1 sekundy oznacza, że przełącznik dźwięku nie jest obsługiwany na tym urządzeniu |
6–7 | flagi | Flagi funkcji przełącznika dźwięku u dostawcy. Jeśli ta wiadomość jest wysyłana przez Seekera, te 2 bajty należy zignorować. |
różne Patrz Flagi możliwości przełącznika dźwięku |
8–15 | Liczba jednorazowa wiadomości Wymagana tylko wtedy, gdy ta wiadomość jest wysyłana przez Poszukiwacza |
różni się | |
16–23 | Kod uwierzytelniania wiadomości Wymagany tylko wtedy, gdy jest wysyłany przez Seekera |
różni się |
Tabela 4.3.1.1: Powiadamiaj o możliwościach przełącznika dźwięku
Flagi funkcji przełącznika 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
Część 1: konfigurowanie wielopunktowe
- 1, jeśli urządzenie obsługuje połączenie wielopunktowe i można je przełączać między wyłączona
- 0, w przeciwnym razie (nie obsługuje połączenia wielopunktowego lub połączenie jest zawsze włączone)
Bit 2: bieżący stan połączenia wielopunktowego
- 1, jeśli włączono połączenie wielopunktowe
- 0, w przeciwnym razie
Bit 3: wykrywanie kontaktu z głową
- 1, jeśli urządzenie obsługuje wykrywanie kontaktu z głową (nawet jeśli jest wyłączono teraz)
- 0, w przeciwnym razie
Bit 4: bieżący stan wykrywania kontaktu z głową
- 1 – jeśli wykrywanie kontaktu z głową jest włączone
- 0, w przeciwnym razie (nie obsługuje wykrywania kontaktu z głową, wyłączono)
Wszystkie pozostałe bity są zarezerwowane (domyślnie 0).
Ustaw stan połączenia wielopunktowego
W przypadku Poszukiwaczy przełączania dźwięku możemy udostępnić użytkownikom ustawienie umożliwiające ich włączenie lub wyłączenie przy użyciu funkcji połączenia wielopunktowego. Poszukiwacz ustawi stan połączenia wielopunktowego na Dostawca używający tego komunikatu:
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Przełączanie dźwięku | 0x07 |
1 | uint8 | Ustaw stan połączenia wielopunktowego | 0x12 |
2–3 | uint16 | Dodatkowa długość danych | 17 |
4 | uint8 | Stan wielopunktowy | 0: wyłącz połączenie wielopunktowe 1: włącz połączenie wielopunktowe |
5–12 | Liczba jednorazowa z wiadomości | różni się | |
13–20 | Kod uwierzytelniania wiadomości | różni się |
Tabela 4.3.1.2: Ustawianie stanu połączenia wielopunktowego
Ustaw preferencje przełączania
Poszukiwacze przełącznika dźwięku mogą modyfikować ustawienie przełączania wielopunktowego i ustawiać to do dostawcy przy użyciu tego komunikatu:
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Przełączanie dźwięku | 0x07 |
1 | uint8 | Ustaw preferencje przełączania | 0x20 |
2–3 | uint16 | Dodatkowa długość danych | 18 |
4 | flagi | Ustawienie przełączania | różne Zobacz flagę ustawienia przełączania wielopunktowego |
5 | Zaawansowane ustawienia przełączania Ten bajt jest zarezerwowany; wartość domyślna to 0 |
różni się | |
6–13 | Liczba jednorazowa z wiadomości | różni się | |
14–21 | Kod uwierzytelniania wiadomości | różni się |
Tabela 4.3.2.0: Ustawianie 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 vs HFP (domyślnie 0)
- Bit 3: HFP vs. A2DP (domyślnie 1)
- Bit 4–7: zarezerwowane
- Powyżej oznacza się jako „prośba o nowy profil” a „obecny aktywny profil”
- 0 – nie zmieniaj
- 1 – przejście
Pobranie preferencji przełączania
Poszukiwacze przełącznika dźwięku mogą wysyłać zapytania o preferencję przełączania połączenia wielopunktowego z Dostawca używający tego komunikatu:
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Przełączanie dźwięku | 0x07 |
1 | uint8 | Pobranie konfiguracji przełączania | 0x21 |
2–3 | uint16 | Dodatkowa długość danych | 0 |
Tabela 4.3.2.1: Pobieranie preferencji przełączania
Powiadamiaj o preferencjach zmiany
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Przełączanie dźwięku | 0x07 |
1 | uint8 | Powiadamiaj o preferencjach zmiany | 0x22 |
2–3 | uint16 | Dodatkowa długość danych | 2 |
4 | flagi | Przełączanie flag preferencji | różne Zobacz flagę ustawienia przełączania wielopunktowego |
5 | Zaawansowane ustawienia przełączania Ten bajt jest zarezerwowany; domyślna wartość powinna wynosić 0 |
różni się |
Tabela 4.3.2.2: Powiadomienia o preferencjach przełączania
Przełącz aktywne źródło dźwięku (na połączone urządzenie)
Poszukiwacze przełącznika dźwięku mogą poprosić dostawcę połączenia wielopunktowego o przełączenie aktywnej źródła dźwięku między połączonymi urządzeniami, używając tego komunikatu:
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Przełączanie dźwięku | 0x07 |
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 zdarzenia aktywnego źródła dźwięku | różni się Zobacz przełączanie aktywnego źródła dźwięku. |
5–12 | Liczba jednorazowa z wiadomości | różni się | |
13–20 | Kod uwierzytelniania wiadomości | różni się |
Tabela 4.3.3.0: Przełączanie aktywnego źródła dźwięku (na połączone urządzenie)
Przełączam zdarzenie aktywnego źródła dźwięku
- Bit 0 (MSB): 1 przełączenie na to urządzenie, 0 na drugie połączone urządzenie
- Bit 1: wznowienie odtwarzania na przełączeniu na urządzenie po przełączeniu, w przeciwnym razie – 0. Wznowienie gry oznacza, że Dostawca wysyła powiadomienie PLAY do Poszukiwacza za pomocą profilu AVRCP. Jeśli poprzedni stan (przed zmianą stanu) nie był PLAY, dostawca powinien zignorować tę flagę.
- Bit 2: 1 odrzucenie SCO na innym urządzeniu, w przeciwnym razie – 0
- Bit 3: 1 odłącz Bluetooth na urządzeniu poza domem, w przeciwnym razie – 0.
- Bit 4–7: zarezerwowany.
Poszukiwacze zmiany dźwięku nie zawsze poprawnie rozumieją swój stan, więc jest to możliwe. aby Dostawca otrzymał opcję „Przełącz na to urządzenie” gdy Poszukiwacz jest aktywne urządzenie. Aby w tym przypadku prawidłowy interfejs użytkownika był widoczny w narzędziu Seeker, Dostawca może wysłać NAK z przyczyną błędu, 0x4 – działanie nadmiarowego urządzenia.
W przypadku dostawcy LE Audio, który ma więcej niż jednego członka zestawu, Dostawca powinien odłączaj wszystkich członków od Seekera, w przeciwnym razie od stosu Bluetooth Szukający połączy się ponownie z dostawcą.
Przełącz się z powrotem (na odłączone urządzenie)
Jeśli przełączenie połączenia jest niepożądane, użytkownicy mogą je cofnąć. w niektórych sytuacjach warto przywrócić połączenie audio, aby zminimalizować nie jest zakłócona. Poszukiwacz użyje tego komunikatu, aby aktywować przełączenie z powrotem:
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Przełączanie dźwięku | 0x07 |
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 wydarzenie z powrotem | różne 0x01: powrót 0x02: powrót i wznowienie odtwarzania |
5–12 | Liczba jednorazowa z wiadomości | różni się | |
13–20 | Kod uwierzytelniania wiadomości | różni się |
Tabela 4.3.3.1: Powrót (na odłączone urządzenie)
W przypadku dostawców połączeń wielopunktowych w celu przełączenia połączenia dostawca może usunąć wartość połączenie z jednym urządzeniem źródła dźwięku i przerwanie sesji audio na drugim źródła dźwięku. Załóżmy na przykład, że zestaw wielopunktowy jest podłączony do tablet i trzecie obsługiwane urządzenie z przełącznikiem dźwięku. Użytkownik ogląda film na na tablecie, gdy na jego telefonie pojawi się połączenie przychodzące. Telefon się włączy przełącznika połączenia na słuchawkach, które musi odłączyć połączenia w celu połączenia z telefonem, jednocześnie wstrzymując odtwarzanie multimediów w ramach sesji na tablecie, aby pobrać dzwonek z telefonu. Jeśli użytkownik odmówi połączenia, telefon może poprosić zestaw słuchawkowy o „ponowne włączenie i wznowienie odtwarzania”. Po otrzymaniu tego żądania zestaw słuchawkowy musi ponownie się połączyć z trzecim urządzeniem. wznów odtwarzanie wstrzymanego filmu na tablecie.
Powiadom zdarzenie przełączania wielopunktowego
Aby poinformować użytkowników o wydarzeniu z przełączeniem wielopunktowym, przełącznik dźwięku Poszukiwacz może wyświetlać użytkownikom powiadomienie. Dostawca powinien powiadomić o połączeniu Poszukiwań zmiany dźwięku Poszukiwacze zdarzenia zmiany dźwięku.
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Przełączanie dźwięku | 0x07 |
1 | uint8 | Powiadamiaj o zdarzeniu przełączania wielopunktowego Dostawca powinien wysyłać to za pomocą każdego przełącznika, w tym Poszukiwacz zmiany dźwięku na inny niż Audio, Poszukiwacz zmiany dźwięku na inny, Poszukiwacz zmiany dźwięku i Poszukiwacz zmiany dźwięku Poszukiwacz zmiany dźwięku |
0x32 |
2–3 | uint16 | Dodatkowa długość danych | różni się |
4 | uint8 | Przyczyna zmiany Tę wartość należy określać na podstawie stanu połączenia. W przypadkach użycia LE Audio przydatne może być mapowanie między kontekstem typu LE Audio i stanem połączenia. Na przykład stan połączenia Asystenta głosowego to 0 x 9(LE Audio – strumieniowanie połączenia). Dlatego w przypadku przełączenia zainicjowanego przez Asystenta głosowego powód przełączenia powinien być 0x02. |
różne 0x00: nieokreślone 0x01: multimedia (np. strumieniowanie A2DP, strumieniowanie multimediów LEA) 0x02: wywołanie (np. strumieniowanie HFP, strumieniowanie rozmów LEA) |
5 | uint8 | Urządzenie docelowe | różne 0x01: to urządzenie 0x02: inne połączone urządzenie |
6–n | utf8 | Nazwa urządzenia docelowego , jeśli urządzeniem docelowym jest Seeker, używając nazwy wysłanej do tego urządzenia lub nazwa urządzenia BT (jeśli nie jest używana) z 2 ostatnimi bajtami adresu. |
różni się |
Tabela 4.3.3.2: Powiadomienie o zdarzeniu przełączania wielopunktowego
Sprawdzanie stanu połączenia
Poszukiwacz może uzyskać bieżący stan połączenia od dostawcy:
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Przełączanie dźwięku | 0x07 |
1 | uint8 | Sprawdzanie stanu połączenia | 0x33 |
2–3 | uint16 | Dodatkowa długość danych | 0 |
Tabela 4.3.3.3. Sprawdzanie stanu połączenia
Po otrzymaniu tej wiadomości Dostawca powinien odpowiedzieć, używając kodu wiadomości 0x34, powiadom o stanie połączenia.
Powiadamianie o stanie połączenia
Zgodnie z definicją w ładunku reklamowym BLE dla dostawców usług wielopunktowych, jeśli stan połączenia zmieni się, z wyjątkiem zmiany Dostawca powinien również powiadomić połączone wyszukiwarki, które używając w przypadku tej zmiany tego samego klucza konta. Jeśli Dostawca jest połączony korzystając z narzędzia Audio Switch i Seeker, które nie korzysta z dźwięku jest aktywna, dostawca powinien również powiadomić połączone źródło dźwięku zmień stan połączenia (przy użyciu klucza konta Seeker).
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Przełączanie dźwięku | 0x07 |
1 | uint8 | Powiadamianie o stanie połączenia | 0 × 34 |
2–3 | uint16 | Dodatkowa długość danych | różni się |
4 | uint8 | Flaga aktywnego urządzenia | różni się 0x00: ten Poszukiwacz jest pasywny, a aktywne urządzenie używa tego samego klucza konta 0x01: ten Poszukiwacz jest urządzeniem aktywnym 0x02: Poszukiwacz jest pasywny, a aktywnym urządzeniem nie może być przełącznikiem dźwięku. |
5–n | Stan zaszyfrowanego połączenia | różni się | |
n+1 – n+8 | Liczba jednorazowa z wiadomości | różni się |
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 pochodzi z używanego klucza konta, patrz Losowa rozsądna reklama.
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, połączone_urządzenia), która jest definiowana w BLE. ładunek reklamowy Należy pamiętać, że nie należy uwzględniać bajtów długości i typu pola, ponieważ kod wiadomości i długość danych.
Powiadamiaj 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 uruchomione za pomocą przełącznika dźwięku, aby wywołać różne reakcje, np. wyłącz ikony audio dla dźwięku i przełącz zdarzenia. Poszukiwacz wysyła wiadomość, aby powiadomić dostawcę, że to było połączenie zainicjowane za pomocą przełącznika dźwięku.
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Przełączanie dźwięku | 0x07 |
1 | uint8 | Powiadamiaj o połączeniu zainicjowanym przez przełącznik dźwięku | 0x40 |
2–3 | uint16 | Dodatkowa długość danych | 17 |
4 | uint8 | Wskazanie połączenia zainicjowanego za pomocą przełącznika dźwięku | różne 0: to połączenie nie zostało aktywowane przez przełącznik dźwięku 1: to było połączenie zainicjowane za pomocą przełącznika dźwięku |
5–12 | Liczba jednorazowa z wiadomości | różni się | |
13–20 | Kod uwierzytelniania wiadomości | różni się |
Tabela 4.3.4.0: Powiadom mnie o połączeniu zainicjowanym przez przełącznik dźwięku
Wskaż używany klucz konta
Jeśli z usługą Seeker jest powiązanych wiele kluczy konta (np. wielu użytkowników) Dostawca, Poszukiwacz użyje poniższego komunikatu, aby wskazać konto jest używany.
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Przełączanie dźwięku | 0x07 |
1 | uint8 | Wskaż używany klucz konta | 0x41 |
2–3 | uint16 | Dodatkowa długość danych | 22 |
4–9 | utf8 | Używany ciąg znaków | UTF8 („w użyciu”) |
10–17 | Liczba jednorazowa z wiadomości | różni się | |
18–25 | Kod uwierzytelniania wiadomości | różni się |
Tabela 4.3.4.1: Wskazywanie używanego klucza konta
Po otrzymaniu tego komunikatu Dostawca wie, który klucz konta jest używany. przez zweryfikowanie kodu uwierzytelniania wiadomości.
Wysyłaj dane niestandardowe
Aktywny Poszukiwacz przełącznika dźwięku może załączyć informacje (np. dźwięk, strumienia audio w niestandardowych bajtach danych i wysyłać go do dostawcy za pomocą funkcji ten komunikat:
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Przełączanie dźwięku | 0x07 |
1 | uint8 | Wysyłaj dane niestandardowe | 0x42 |
2–3 | uint16 | Dodatkowa długość danych | 17 |
4 | uint8 | Dane niestandardowe | różni się |
5–12 | Liczba jednorazowa z wiadomości | różni się | |
13–20 | Kod uwierzytelniania wiadomości | różni się |
Tabela 4.3.4.2. Wysyłanie danych niestandardowych
Po otrzymaniu danych niestandardowych Dostawca zaktualizuje pakiet reklamowy , aby uwzględnić dane niestandardowe. W przypadku dostawcy usług wielopunktowych powinien także powiadomić zmianę stanu połączenia na inny połączony Seeker korzystający z tego samego klucza konta.
Ustaw wartość docelową połączenia
W przypadku zestawów słuchawkowych wielopunktowych, jeśli preferowane połączenie nie jest ostatnio używane, Poszukiwacze przełącznika dźwięku mogą wskazać Dostawcy, które urządzenie aby zrezygnować, wysyłając wiadomość:
Oktet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Przełączanie dźwięku | 0x07 |
1 | uint8 | Ustaw wartość docelową połączenia | 0x43 |
2–3 | uint16 | Dodatkowa długość danych | 17 |
4 | uint8 | Docelowe połączone urządzenie, które ma zostać usunięte | różni się 1: to urządzenie |
5–12 | Liczba jednorazowa z wiadomości | różni się | |
13–20 | Kod uwierzytelniania wiadomości | różni się |
Tabela 4.3.4.3: Ustawianie miejsca docelowego połączenia
Implementacja referencyjna
Zobacz bibliotekę wbudowanych pakietów SDK w pobliżu, aby zapoznać się z implementacją referencyjną