Przełącznik audio
Użytkownicy coraz częściej korzystają z wielu urządzeń z źródłem dźwięku do wykonywania codziennych zadań, dlatego rośnie zapotrzebowanie na prostsze rozwiązanie do zarządzania używaniem słuchawek na różnych urządzeniach. Przełącznik dźwięku płynnie przełącza połączenia zestawu słuchawkowego między urządzeniami na podstawie aktywności użytkownika (np. uruchamiania filmu) i priorytetowych zdarzeń (np. połączenia przychodzącego).
Zasady UX
- Przełączanie połączeń powinno być szybkie i zależeć od działania użytkownika.
- Przełączanie połączeń powinno być przejrzyste dla użytkowników i umożliwiać im kontrolowanie przełączania lub jego odwracanie, jeśli nie jest pożądane.
- Przełączanie powinno być zgodne z zasadami ochrony prywatności użytkowników.
Role
Wyszukiwarka przełącznika dźwięku: wyszukiwarka to urządzenie będące źródłem dźwięku (np. telefon lub tablet), które wyszukuje w pobliżu zestaw słuchawkowy, z którym można się połączyć.
Dostawca przełączania dźwięku: dostawcą jest zwykle zestaw słuchawkowy, który reklamuje swoją obecność i stan połączenia, aby poszukiwacze mogli podjąć decyzję o przełączeniu.
Omówienie wymagań
Aby umożliwić inteligentą zmianę, dostawcy muszą spełniać te wymagania:
Nazwa | Opis | Wymagania | Czy jest wymagana? |
---|---|---|---|
Skanowanie strony | Aby zaakceptować nowe żądanie połączenia od innego poszukującego, gdy istnieje już połączenie. W przypadku dostawców z jednym punktem:
|
Aby poprawić wydajność, wymagany jest tryb skanowania stron o niskiej latencji (interwał skanowania nie powinien przekraczać 640 ms). Aby zapewnić równowagę między czasem pracy na baterii a wydajnością podczas przełączania, dostawca może w większości przypadków ustawić domyślny tryb skanowania stron (tryb niskiego poboru mocy, interwał skanowania nie powinien przekraczać 1280 ms). Tryb niskiego opóźnienia musi być używany w tych sytuacjach:
|
Obowiązkowe |
Historia połączeń | Aby przełączyć się z powrotem na poprzednie połączenie i wznowić odtwarzanie w razie potrzeby. Przełączenie zostanie wywołane przez komunikację za pomocą interfejsów API strumienia wiadomości. W przypadku wznowienia odtwarzania w razie potrzeby w zapisie powinien być uwzględniony odpowiedni komunikat o wstrzymaniu odtwarzania dźwięku. |
Zachowywanie historii połączeń i wdrażanie interfejsów Message Stream API. | Obowiązkowe |
Stan połączenia | Aby umożliwić osobom poszukującym podejmowanie decyzji o przełączeniu połączenia.Stan połączenia obejmuje:
|
Uwzględnij stan połączenia w reklamie BLE i strumieniach wiadomości. | Obowiązkowe |
Zmiana możliwości w czasie działania | Przełącznik audio można włączyć, aktualizując oprogramowanie układu. Dlatego możliwości muszą być synchronizowane między urządzeniem szukającym a układem w czasie działania. | Wdroż interfejsy API strumienia wiadomości, aby uzyskać dostęp do funkcji czasu wykonywania. | Obowiązkowe |
Konfigurowalne reguły przełączania | Umożliwienie Seekerowi konfigurowania priorytetu między istniejącymi aktywnymi żądaniami przesyłania strumieniowego dźwięku a nowymi żądaniami przesyłania strumieniowego dźwięku za pomocą ustawień preferencji użytkownika. Na przykład Seeker może udostępnić ustawienia interfejsu użytkownika, które umożliwiają użytkownikom włączanie i wyłączanie automatycznego przełączania się między przesyłaniem strumieniowym multimediów a rozmową telefoniczną. Seeker przełącznika dźwięku skonfiguruje i uzyska regułę przełączania za pomocą strumienia 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. |
Opcjonalny |
Przełączanie aktywnego urządzenia | Umożliw przełącznikowi Audio switch symulowanie przełączania dźwięku między połączonymi urządzeniami. Po stronie przełącznika Audio switch może być interfejs, który ułatwi użytkownikom przełączanie się między połączonymi urządzeniami. |
Tylko dostawcy usług połączenia wielopunktowego. Zaimplementuj interfejsy API strumienia wiadomości dla wyszukiwarki przełączania dźwięku, aby określić aktywne źródło dźwięku na połączonych urządzeniach. |
Obowiązkowe |
Powiadomienie o przełączaniu między punktami dostępu | Zezwalanie na wyświetlanie powiadomienia o przełączeniu przez narzędzie Audio Switch Seeker. | Tylko dostawcy usług wielopunktowych. Zaimplementuj interfejsy API strumienia wiadomości, aby informować połączonych użytkowników o przełączeniu wielopunktowym. |
Obowiązkowe |
Ładunek reklamowy
Dostawca musi uwzględnić w reklamie bieżący stan połączenia, który jest tworzony na podstawie danych z konta Fast Pair opisanych w artykule Reklamowanie: kiedy nie można znaleźć.
Pamiętaj, że wersja tabeli 4.2 to 0x1.
Pole Stan połączenia
Octet | Typ danych | Opis | Wartość | Czy jest wymagana? |
---|---|---|---|---|
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 zawierają one tylko typ treści, który służy do opisania sposobu korzystania z bieżącego strumieniowego przesyłania dźwięku. Szukający wyśle je Dostawcy. |
Wartość jest wysyłana przez poszukującego bieżącego aktywnego strumienia do dostawcy za pomocą strumienia wiadomości. 0, jeśli bieżący aktywny streaming nie pochodzi z Seekera. | Obowiązkowe |
3. var | Plik graficzny z informacjami o połączonych urządzeniach Plik graficzny pokazujący, które urządzenia są obecnie połączone z dostawcą. Wszystkie sparowane urządzenia są uporządkowane według kolejności, po jednym bicie na każde sparowane urządzenie. Długość zależy od liczby urządzeń dostawcy, które są połączone z siecią. |
Bit mapowany jest ustawiony na 1, jeśli urządzenie jest obecnie połączone z dostawcą, a w przeciwnym razie na 0. Więcej informacji znajdziesz w sekcji Plik graficzny połączonego urządzenia. |
Opcjonalny |
Tabela 4.1: dane w postaci nieprzetworzonej w polu Stan połączenia
Flagi połączeń
0bH = wykrywanie założenia na głowę
- 1.
- 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 innym przypadku
0bF = tryb pełnej koncentracji
- 1.W trybie skupienia nie można przełączać połączeń w celu korzystania z multimediów, czyli nie można przełączać z A2DP na A2DP.
- 0, w innym przypadku
0bR = automatyczne ponowne połączenie
- 1, jeśli bieżące połączenie jest automatycznie nawiązywane przez dostawcę, co oznacza, że nie jest nawiązywane przez użytkowników (w przypadku wielu punktów, jeśli jedno z istniejących połączeń jest automatycznie nawiązywane, należy ustawić wartość 1)
- 0, w innym przypadku
Stan połączenia
- 0x0: brak połączenia
- 0x1: stronnicowanie
- 0x2: połączono, ale nie przesyłano danych
- 0x3: Przenoszenie danych innych niż audio (tylko w przypadku przełączania, w przeciwnym razie używanie 0xF)
- 0x4: strumieniowanie A2DP, protokół AVRCP nie ma zastosowania
- 0x5: strumieniowe przesyłanie A2DP i odtwarzanie AVRCP
- 0x6: streaming HFP (telefon/voip), w tym dzwonek w zakresie i poza zakresem
- 0x7: LE audio – strumieniowe przesyłanie multimediów bez kontroli
- 0x8: LE Audio – strumieniowe przesyłanie multimediów z kontrolą
- 0x9: LE Audio – streaming połączeń
- 0xA: LE Audio – transmisja
- 0xF: tymczasowe wyłączenie przełącznika połączenia (np. podczas aktualizacji oprogramowania)
Typ kontekstu LE Audio i stan połączenia
Zalecamy, aby dostawca usługi LE Audio obsługiwał wszystkie typy kontekstu określone w przypisanych numerach 6.12.3 (chyba że dostawca wyraźnie nie obsługuje danego typu kontekstu) i przypisywał typ kontekstu do stanu połączenia w sposób podany poniżej.
- Konwersacyjna: 0x9
- Media: 0x8
- Gra: 0x7
- Instruktaż: 0x7
- Asystenci głosowi: 0x9
- Transmisja na żywo: 0x9
- Efekty dźwiękowe: 0x2
- Powiadomienia: 0x2
- Dzwonek: 0x9
- Alerty: 0x7
- Alarm o zagrożeniu: 0x9
W przypadku mieszanego scenariusza typu kontekstu LE Audio, takiego jak odtwarzanie multimediów podczas połączenia, dostawca powinien użyć stanu połączenia o najwyższym priorytecie, czyli użyć 0x9 (połączenie) w przypadku powyższego scenariusza zamiast 0x8 (multimedia).
Plik mapy bitowej połączonego urządzenia
Aby uniknąć niepożądanego przełączania połączeń, wyszukiwarka może potrzebować informacji o tym, z jakimi urządzeniami jest obecnie połączone urządzenie. Jeśli na przykład zestaw słuchawkowy jest podłączony do telefonu, użytkownik nie chce, aby połączenie przełączało się, gdy jeden z członków grupy rodzinnej uruchamia YouTube na tablecie.
Pamiętaj, że ta mapa bitowa jest anonimowa, a poszukujący nie może wiedzieć, jakie inne urządzenia są połączone 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 aktualnie połączone urządzenia to laptop i tablet, wartość bitmapy będzie wynosić 0b10010000. Zmiana kolejności jest dopuszczalna, jeśli jest nieunikniona, na przykład gdy użytkownicy przywracają słuchawki do ustawień fabrycznych lub gdy liczba sparowanych urządzeń osiągnie górny limit.
Losowa reklama z możliwością rozwiązania
Aby uniknąć śledzenia i zapewnić użytkownikom prywatność, dostawca powinien rotować i szyfrować to pole za pomocą klucza konta przy użyciu algorytmu AES-CTR:
encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)
gdzie
Klucz jest tworzony na podstawie klucza konta używanego, który jest zdefiniowany w następnej sekcji.
Klucz jest generowany przez funkcję HKDF (IETF RFC 5869) za pomocą funkcji skrótu SHA-256.
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
Usługodawca powinien użyć oryginalnego klucza konta, czyli pierwszego bajta klucza, który wynosi 0x04 i nie jest uwzględniany w schemacie użycia.
IV (wektor początkowy) to 2-bajtowy ciąg zaburzający danych klucza konta z wypełnieniem zerami, czyli IV to concat(salt, 14-byte ZEROs).
Dane w postaci nieprzetworzonych danych o stanie połączenia są zdefiniowane w tabeli 4.1. Jeśli stan połączenia ulegnie zmianie, sól i RPA powinny zostać wygenerowane ponownie w tym samym okresie reklamowym.
Dzięki temu zaszyfrowane pole stanu połączenia będzie się zmieniać w tym samym czasie, w jakim zmieniają się dane klucza konta.
Reklama BLE będzie mieć następującą strukturę:
Octet | Typ danych | Opis | Wartość | Czy jest wymagana? |
---|---|---|---|---|
0 | uint8 |
Wersja i flagi | 0x10 | Obowiązkowe |
1 – t | Dane klucza konta | zmienia się | Obowiązkowe | |
t+1 – s | Dane o baterii | zmienia się | Opcjonalny | |
s+1 – var | Losowe dane do rozwiązania | zmienia się | Wymagane, jeśli lista kluczy konta nie jest pusta, w przeciwnym razie Wykluczone. |
Tabela 4.2: reklama BLE z losowymi danymi rozwiązywalnymi
Losowe dane rozwiązywalne obejmują:
Octet | Typ danych | Opis | Wartość | Czy jest wymagana? |
---|---|---|---|---|
0 | uint8 |
Długość i typ pola 0bLLLLTTTT
|
0bLLLL0110
|
Obowiązkowe |
1. var | zaszyfrowane dane; | zmienia się | Obowiązkowe |
Tabela 4.2.1: losowe dane rozwiązywalne
Jeśli na przykład dane losowe zawierają zaszyfrowane pole stanu połączenia, po odszyfrowaniu otrzymasz pole stanu połączenia.
Aby zapobiec manipulowaniu, dane klucza konta podane powyżej powinny być nieznacznie zmodyfikowane, gdy w reklamie są zawarte losowe dane. Zwykle podczas tworzenia filtra klucza konta wartość V jest tworzona przez połączenie filtra klucza konta z elementem soli. Zamiast tego, gdy reklamowane są też losowe dane rozwiązywalne, 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 losowe dane rozwiązywalne, wartość V powinna być konstruowana w ten sposób:
V = concat(account_key, salt, battery_data, random_resolvable_data)
W sekcji Użyj klucza konta
Przełączanie połączeń odbywa się na podstawie konta, dlatego dostawca powinien uwzględnić w reklamie BLE informacje o bieżącym połączeniu. Jeśli aktualnie połączone urządzenie jest urządzeniem przełączającym audio, dostawca powinien mieć możliwość uzyskania klucza konta powiązanego z tym urządzeniem i użycia tego klucza do szyfrowania pola stanu połączenia. Jeśli połączone źródło audio nie jest Seekerem przełącznika audio, dostawca powinien użyć ostatnio używanego klucza konta.
Przed obliczeniem filtra klucza konta dostawca powinien zmodyfikować pierwszy bajt kluczy kont, aby uwzględnić w wzorze na wzorce użycia jedną z tych wartości:
- 0b00000100
Ten klucz konta nie jest używany.
Jest to klucz domyślny (patrz Klucz konta). - 0b00000101
Ten klucz konta to ostatnio używany klucz konta.
Pole stanu połączenia jest szyfrowane za pomocą tego klucza konta. Brak informacji o kluczu konta dotyczących bieżącego stanu połączenia. Może to oznaczać, że nie ma podłączonych urządzeń lub że podłączone urządzenie nie jest przełącznikiem audio. - 0b00000110
Ten klucz konta jest używany na koncie.
Pola stanu połączenia są szyfrowane za pomocą tego klucza konta, a obecnie połączone urządzenie jest powiązane z tym kluczem konta.
Schemat ładunku przełącznika audio
Rysunek poniżej przedstawia schemat ładunku przełącznika audio.

Wiadomości
Po połączeniu Seeker i Provider mogą używać strumienia wiadomości do synchronizowania funkcji przełącznika audio, uruchamiania przełącznika połączenia, ustawiania i odczytywania preferencji przełączania, informowania o stanie połączenia itp. Tworzymy grupę komunikatów i kody komunikatów dotyczące tylko przełącznika dźwięku, jak pokazano poniżej.
Nazwa grupy wiadomości | Wartość |
---|---|
Przełączanie dźwięku | 0x07 |
W kolejnych sekcjach znajdziesz dodatkowe informacje o każdym kodzie.
Tabela 4.3: komunikaty o przełączeniu dźwięku
Adres MAC przełącznika audio Messages
Aby zapewnić uwierzytelnienie wiadomości, wszystkie wiadomości z dodatkowymi danymi wysyłane przez poszukującego do dostawcy wymagają kodu uwierzytelniania wiadomości. Po otrzymaniu wiadomości z MAC należy ją potwierdzić, aby poszukiwana osoba wiedziała, czy dostawca zareagował na wiadomość.
Jeśli uwierzytelnianie wiadomości się powiedzie, dostawca wysyła potwierdzenie odbioru wiadomości:
Octet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Potwierdzenie | 0xFF |
1 | uint8 | ACK | 0x01 |
2–3 | uint16 | Długość dodatkowych danych | zmienia się |
4 | uint8 | Przełączanie dźwięku | 0x07 |
5 | uint8 | Kod wiadomości przełącznika audio | zmienia się |
6 s | Dodatkowe dane | zmienia się |
W przypadku niepowodzenia usługodawca wysyła komunikat NAK:
Octet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Potwierdzenie | 0xFF |
1 | uint8 | NAK | 0x02 |
2–3 | uint16 | Długość dodatkowych danych | 0x0003 |
4 | uint8 | Przyczyna błędu | zmienia się |
5 | uint8 | Przełączanie dźwięku | 0x07 |
6 | uint8 | Kod wiadomości przełącznika audio | zmienia się |
Pamiętaj, że jeśli dostawcą jest nadawca, kod MAC nie jest wymagany.
Funkcje przełącznika dźwięku
Zarówno dostawca, jak i wyszukiwarka mogą sprawdzić, czy połączone urządzenie obsługuje Szybkie parowanie, wysyłając wiadomość:
Octet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Przełączanie dźwięku | 0x07 |
1 | uint8 | Funkcje przełącznika dźwięku | 0x10 |
2–3 | uint16 | Długość dodatkowych danych | 0 |
Tabela 4.3.1.0: pobieranie możliwości przełącznika dźwięku
Informowanie o możliwości przełączenia dźwięku
Po otrzymaniu wiadomości z zapytaniem o możliwości przełączenia na użycie funkcji Audio Switch kod źródłowy, usługa Audio Switch Seeker/Provider odpowie za pomocą jednego z tych flag:
Octet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Przełączanie dźwięku | 0x07 |
1 | uint8 | Informowanie o możliwości przełączenia dźwięku | 0x11 |
2–3 | uint16 | Długość dodatkowych danych | 20, jeśli wiadomość wysyła osoba poszukująca 4, jeśli wiadomość wysyła dostawca |
4–5 | uint16 | Kod wersji przełącznika audio | Wartość różna od 0 oznacza, że usługa obsługuje przełącznik dźwięku. Kod bieżącej wersji (z ulepszeniami zabezpieczeń) to 0x0102. 0x0000 lub brak odpowiedzi w ciągu 1 sekundy oznacza, że przełączanie dźwięku nie jest obsługiwane na tym urządzeniu |
6–7 | flagi | Flagi możliwości przełączania dźwięku dostawcy Jeśli są one wysyłane przez poszukującego, te 2 bajty należy zignorować. |
różne Zobacz Flagi możliwości przełącznika dźwięku |
8–15 | Message nonce Wymagane tylko wtedy, gdy wiadomość jest wysyłana przez poszukującego |
zmienia się | |
16–23 | Kod uwierzytelniający wiadomość Wymagany tylko wtedy, gdy wiadomość jest wysyłana przez poszukującego |
zmienia się |
Tabela 4.3.1.1: możliwość powiadomienia o przełączniku dźwięku
Flagi możliwości przełącznika audio
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 innym przypadku
Bit 1: możliwość konfiguracji wielopunktowej
- 1, jeśli urządzenie obsługuje połączenie wielopunktowe i można je włączyć lub wyłączyć
- 0, w przeciwnym razie (nie obsługuje trybu wielopunktowego lub tryb wielopunktowy jest zawsze włączony)
Bit 2: bieżący stan wielopunktowy
- 1, jeśli połączenie wielopunktowe jest włączone
- 0, w innym przypadku
Bit 3: wykrywanie kontaktu z ciałem
- 1. czy urządzenie obsługuje wykrywanie kontaktu z głową (nawet jeśli ta funkcja jest obecnie wyłączona);
- 0, w innym przypadku
Bit 4: bieżący stan wykrywania na głowie
- 1, jeśli włączone jest wykrywanie kontaktu z głową
- 0 w innych przypadkach (nie obsługuje wykrywania założenia na głowę lub wykrywanie założenia na głowę jest wyłączone)
Pozostałe bity są zarezerwowane i domyślnie mają wartość 0.
Ustawianie stanu połączenia wielopunktowego
W przypadku aplikacji Audio Switch Seekers możemy udostępnić użytkownikom ustawienie umożliwiające włączenie lub wyłączenie funkcji wielopunktowej. Wyszukiwarka ustawi stan multipoint w Providerze, używając tego komunikatu:
Octet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Przełączanie dźwięku | 0x07 |
1 | uint8 | Ustawianie stanu połączenia wielopunktowego | 0 x 12 |
2–3 | uint16 | Długość dodatkowych danych | 17 |
4 | uint8 | Stan połączenia wielopunktowego | 0: wyłącz połączenie wielopunktowe 1: włącz połączenie wielopunktowe |
5–12 | Liczba losowa wiadomości | zmienia się | |
13–20 | Kod uwierzytelniania wiadomości | zmienia się |
Tabela 4.3.1.2: ustawienie stanu połączenia wielopunktowego
Ustawianie preferencji przełączania
Użytkownicy, którzy chcą zmienić ustawienie przełączania, mogą zmienić ustawienie przełączania wielopunktowego i ustawić je w sposób domyślny dla dostawcy, używając tego komunikatu:
Octet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Przełączanie dźwięku | 0x07 |
1 | uint8 | Ustawianie preferencji przełączania | 0x20 |
2–3 | uint16 | Długość dodatkowych danych | 18 |
4 | flagi | Zmiana preferencji | różne patrz flaga preferencji przełączania na połączenie wielopunktowe |
5 | Zaawansowane ustawienia przełączania Ten bajt jest zarezerwowany, wartość domyślna to 0 |
zmienia się | |
6–13 | Liczba losowa wiadomości | zmienia się | |
14–21 | Kod uwierzytelniania wiadomości | zmienia się |
Tabela 4.3.2.0: ustawienie preferencji przełączania
Flaga preferencji przełączania wielopunktowego
- Bit 0 (MSB): A2DP vs A2DP (domyślnie 0)
- Bit 1: HFP vs HFP (wartość domyślna 0)
- Bit 2: A2DP vs HFP (domyślnie 0)
- Bit 3: HFP vs A2DP (domyślnie 1)
- Bity 4–7: zarezerwowane
- Powyżej przedstawiono „nowe żądanie profilu” i „obecny aktywny profil”.
- 0 – nie przełącza
- 1 – przełączanie
Ustawienie preferencji przełączania
Użytkownicy, którzy chcą zmienić dostawcę, mogą wysłać zapytanie o preferencje dotyczące przełączania między punktami dostępu do dostawcy, używając tej wiadomości:
Octet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Przełączanie dźwięku | 0x07 |
1 | uint8 | Pobieranie konfiguracji przełączania | 0x21 |
2–3 | uint16 | Długość dodatkowych danych | 0 |
Tabela 4.3.2.1: preferencje dotyczące przełączania
Powiadomienie o preferencjach dotyczących przełączania
Octet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Przełączanie dźwięku | 0x07 |
1 | uint8 | Powiadomienie o preferencjach dotyczących przełączania | 0x22 |
2–3 | uint16 | Długość dodatkowych danych | 2 |
4 | flagi | Przełączanie ustawień flagi | różne patrz flaga preferencji przełączania na połączenie wielopunktowe |
5 | Zaawansowane ustawienia przełączania Ten bajt jest zarezerwowany, a wartość domyślna powinna wynosić 0 |
zmienia się |
Tabela 4.3.2: preferencja powiadomień o przełączeniu
przełączać aktywne źródło dźwięku (na połączone urządzenie).
Użytkownicy mogą poprosić dostawcę o przełączenie aktywnego źródła dźwięku między połączonymi urządzeniami, używając tego komunikatu:
Octet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Przełączanie dźwięku | 0x07 |
1 | uint8 | przełączać aktywne źródło dźwięku (na połączone urządzenie). | 0x30 |
2–3 | uint16 | Długość dodatkowych danych | 17 |
4 | flagi | Przełączanie flag zdarzeń źródła aktywnego dźwięku | zmienia się patrz: Zdarzenie przełączania aktywnego źródła dźwięku |
5–12 | Liczba losowa wiadomości | zmienia się | |
13–20 | Kod uwierzytelniania wiadomości | zmienia się |
Tabela 4.3.3.0: przełączanie aktywnego źródła dźwięku (na połączone urządzenie)
Zmiana aktywnego źródła dźwięku
- Bit 0 (MSB): 1 – przełącz na to urządzenie, 0 – przełącz na drugie podłączone urządzenie
- Bit 1: 1 – wznowienie odtwarzania po przełączeniu na urządzenie, 0 – w przeciwnym razie. Wznawianie odtwarzania oznacza, że dostawca wysyła powiadomienie PLAY do szukającego za pomocą profilu AVRCP. Jeśli poprzedni stan (przed przełączeniem) nie był stanem PLAY, dostawca powinien zignorować tę flagę.
- Bit 2: 1 odrzucanie SCO na urządzeniu, na którym wyłączono połączenie, 0 w przeciwnym razie
- Bit 3: 1 – odłącz Bluetooth po wyłączeniu urządzenia, 0 – w przeciwnym razie.
- Bity 4–7: zarezerwowane.
Osoby, które chcą przełączyć dźwięk, nie zawsze prawidłowo określają swój stan, więc możliwe jest, że dostawca otrzyma wiadomość „Przełącz na to urządzenie”, gdy osoba ta jest już na aktywnym urządzeniu. W takim przypadku, aby wyświetlić prawidłowe UI na urządzeniu Seeker, dostawca może wysłać komunikat NAK z powodem błędu 0x4 – zbędna akcja urządzenia.
W przypadku dostawcy audio LE, który ma więcej niż jednego członka zestawu, dostawca powinien odłączyć wszystkich członków od urządzenia poszukującego, ponieważ w przeciwnym razie stos Bluetooth urządzenia poszukującego ponownie połączy się 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 przypadkach warto przywrócić połączenie audio, aby zminimalizować zakłócenia. Aby wywołać przełączenie, osoba poszukująca pracy użyje tej wiadomości:
Octet | 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 | Długość dodatkowych danych | 17 |
4 | uint8 | Zdarzenie przełączania się z powrotem | różne 0x01: przełącz się z powrotem 0x02: przełącz się z powrotem i wznów odtwarzanie |
5–12 | Liczba losowa wiadomości | zmienia się | |
13–20 | Kod uwierzytelniania wiadomości | zmienia się |
Tabela 4.3.3.1: przełączanie się z powrotem (na odłączone urządzenie)
W przypadku dostawców wielopunktowych, aby przełączyć połączenie, dostawca może zerwać połączenie z jednym urządzeniem źródłowym dźwięku i wstrzymać sesję dźwiękową na drugim. Załóżmy na przykład, że zestaw słuchawkowy wielopunktowy jest połączony z tabletem i trzecim obsługiwanym urządzeniem z przełącznikiem dźwięku. Użytkownik ogląda film na tablecie, gdy na jego telefonie odbiera połączenie. Telefon spowoduje przełączenie połączenia na zestawie słuchawkowym, który musi przerwać połączenie z 3 urządzeniem, aby połączyć się z telefonem, a także wstrzymać sesję multimediów na tablecie, aby uzyskać dzwonek z telefonu. Jeśli użytkownik odrzuci połączenie, telefon może poprosić zestaw słuchawkowy o „powrót do odtwarzania”. Po otrzymaniu tego żądania zestaw słuchawkowy musi ponownie połączyć się z 3 urządzeniem i wznowić odtwarzanie wstrzymanego filmu na tablecie.
Powiadomienie o wydarzeniu przełączenia na połączenie wielopunktowe
Aby poinformować użytkowników o wydarzeniu przełączania między wieloma punktami, wyszukiwarka przełączników audio może wyświetlić powiadomienie. Dostawca powinien powiadomić połączonych poszukujących o zmianie.
Octet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Przełączanie dźwięku | 0x07 |
1 | uint8 | Notify multipoint-switch event Provider should send it on every switch, including Audio switch Seeker to non-Audio switch Seeker, non-Audio switch Seeker to Audio switch Seeker and Audio switch Seeker to Audio switch Seeker |
0x32 |
2–3 | uint16 | Długość dodatkowych danych | zmienia się |
4 | uint8 | Switching reason (Powód przełączenia) Ta wartość powinna być określana na podstawie Connection state (Stan połączenia). W przypadku zastosowań LE Audio warto zapoznać się z mapowaniem między typem kontekstu LE Audio i stanem połączenia. Na przykład stan połączenia odpowiadający Asystentom głosowym to 0x9(LE audio – strumieniowanie połączeń). Dlatego przyczyną przełączenia zainicjowanego przez Asystenta głosowego powinien być kod 0x02. |
różne 0x00: nieokreślone 0x01: multimedia (np. strumieniowe przesyłanie A2DP, strumieniowe przesyłanie multimediów LEA) 0x02: rozmowa (np. strumieniowe przesyłanie HFP, strumieniowe przesyłanie rozmów LEA) |
5 | uint8 | Urządzenie docelowe | różni się 0x01: to urządzenie 0x02: inne połączone urządzenie |
6 – n | utf8 | Nazwa urządzenia docelowego jeśli urządzenie docelowe to Seeker przełącznika audio, używa nazwy, do której wysłano Seekera, w przeciwnym razie używa nazwy BT, a jeśli nie jest to możliwe, używa ostatnich 2 bajtów adresu. |
zmienia się |
Tabela 4.3.3.2: powiadomienie o wydarzeniu połączenia wielopunktowego
Pobieranie stanu połączenia
Użytkownik może uzyskać bieżący stan połączenia od dostawcy:
Octet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Przełączanie dźwięku | 0x07 |
1 | uint8 | Pobieranie stanu połączenia | 0x33 |
2–3 | uint16 | Długość dodatkowych danych | 0 |
Tabela 4.3.3.3: uzyskiwanie informacji o stanie połączenia
Po otrzymaniu tej wiadomości dostawca musi odpowiedzieć, używając kodu wiadomości 0x34, aby powiadomić o stanie połączenia.
Powiadomienie o stanie połączenia
Zgodnie z definicją ładunku reklamowego BLE w przypadku dostawców wielopunktowych, jeśli stan połączenia ulegnie zmianie (z wyjątkiem zmiany pakietu reklamowego), dostawca powinien powiadomić o tym połączonych poszukujących, którzy korzystają z tego samego klucza konta. Jeśli dostawca jest połączony z wyszukiwaczem przełączników audio i wyszukiwaczem przełączników innych niż audio, a wyszukiwacz przełączników innych niż audio jest aktywny, dostawca powinien również powiadomić połączonego wyszukiwacza przełączników audio o stanie połączenia (za pomocą klucza konta wyszukiwacza).
Octet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Przełączanie dźwięku | 0x07 |
1 | uint8 | Powiadomienie o stanie połączenia | 0x34 |
2–3 | uint16 | Długość dodatkowych danych | zmienia się |
4 | uint8 | Flaga aktywnego urządzenia | różne 0x00: ten Seeker jest pasywny, a aktywne urządzenie używa tego samego klucza konta 0x01: to urządzenie jest aktywne 0x02: ten Seeker jest pasywny, a aktywne urządzenie nie jest urządzeniem z przełącznikiem Audio. |
5 – n | Stan połączenia szyfrowanego | zmienia się | |
n+1 - n+8 | Liczba losowa wiadomości | zmienia się |
Tabela 4.3.3.4: powiadomienie o stanie połączenia
Komunikat o stanie połączenia szyfrowanego
encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)
gdzie:
Klucz jest tworzony na podstawie klucza konta, który jest obecnie używany. Więcej informacji znajdziesz w artykule Losowa reklama z możliwością rozwiązania.
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, connected_devices) zdefiniowany w BLE advertising payload Pamiętaj, aby nie uwzględniać bajtów odpowiadających długości i typowi pola, ponieważ mamy tu kod wiadomości i długość danych.
Notify Audio switch initiated connection
Dostawcy przełącznika dźwięku mogą potrzebować informacji o tym, czy przełączanie połączeń zostało wywołane przez przełącznik dźwięku, aby zareagować w odpowiednim sposób, np. wyłączyć dźwięki w przypadku zdarzeń związanych z przełącznikiem dźwięku. Poszukiwacz wysyła wiadomość, aby powiadomić Dostawcę, że to połączenie zostało zainicjowane przez przełącznik audio.
Octet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Przełączanie dźwięku | 0x07 |
1 | uint8 | Notify Audio switch initiated connection | 0x40 |
2–3 | uint16 | Długość dodatkowych danych | 17 |
4 | uint8 | Wskaźnik połączenia zainicjowanego przez przełącznik dźwięku | różne 0: to połączenie nie zostało wywołane przez przełącznik audio 1: to połączenie zostało zainicjowane przez przełącznik audio |
5–12 | Liczba losowa wiadomości | zmienia się | |
13–20 | Kod uwierzytelniania wiadomości | zmienia się |
Tabela 4.3.4.0: powiadomienie o inicjowaniu połączenia przez przełącznik dźwięku
Wskazać klucz konta w użyciu
Jeśli z dostawcą jest powiązanych wiele kluczy kont (np. w przypadku wielu użytkowników), usługa poszukująca podaje, który klucz konta jest używany, za pomocą poniższego komunikatu.
Octet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Przełączanie dźwięku | 0x07 |
1 | uint8 | Wskazać klucz konta w użyciu | 0x41 |
2–3 | uint16 | Długość dodatkowych danych | 22 |
4–9 | utf8 | Ciąg znaków w użyciu | UTF8 („w użyciu”) |
10–17 | Liczba losowa wiadomości | zmienia się | |
18–25 | Kod uwierzytelniania wiadomości | zmienia się |
Tabela 4.3.4.1: klucz konta w użyciu
Po otrzymaniu tej wiadomości dostawca może sprawdzić, który klucz konta jest używany, weryfikując kod uwierzytelniający wiadomość.
Wysyłanie danych niestandardowych
Aktywny przełącznik audio Seeker może zakapsułkować informacje (np. użycie dźwięku) strumienia audio w niestandardowym bajcie danych i przesłać je do dostawcy za pomocą tego komunikatu:
Octet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Przełączanie dźwięku | 0x07 |
1 | uint8 | Wysyłanie danych niestandardowych | 0x42 |
2–3 | uint16 | Długość dodatkowych danych | 17 |
4 | uint8 | Dane niestandardowe | zmienia się |
5–12 | Liczba losowa wiadomości | zmienia się | |
13–20 | Kod uwierzytelniania wiadomości | zmienia się |
Tabela 4.3.4.2: wysyłanie danych niestandardowych
Po otrzymaniu danych niestandardowych dostawca zaktualizuje pakiet reklamowy, aby uwzględnić te dane. W przypadku dostawcy wielopunktowego powinien on również powiadomić o zmianie stanu połączenia z innym połączonym poszukującym za pomocą tego samego klucza konta.
Ustawianie miejsca docelowego połączenia z opcją „drop”
Jeśli w przypadku zestawu słuchawkowego z wieloma punktami połączenia nie zostanie utracone, a najczęściej używane połączenie, użytkownicy mogą poinformować dostawcę, które urządzenie ma zostać odłączone, wysyłając wiadomość o tej treści:
Octet | Typ danych | Opis | Wartość |
---|---|---|---|
0 | uint8 | Przełączanie dźwięku | 0x07 |
1 | uint8 | Ustawianie miejsca docelowego połączenia z opcją „drop” | 0x43 |
2–3 | uint16 | Długość dodatkowych danych | 17 |
4 | uint8 | Wybierz urządzenie, które ma zostać odłączone. | różni się 1: to urządzenie |
5–12 | Liczba losowa wiadomości | zmienia się | |
13–20 | Kod uwierzytelniania wiadomości | zmienia się |
Tabela 4.3.4.3: konfigurowanie miejsca docelowego połączenia z odrzuceniem