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

  1. Przełączanie połączeń powinno być szybkie i zależeć od działania użytkownika.
  2. 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.
  3. 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:
  • Gdy dostawca się rozłączy, oryginalne urządzenie źródłowe automatycznie wstrzyma odtwarzanie dźwięku.
Dostawcy wielopunktowi:
  • Jeśli nadal jest dostępne połączenie, akceptuje ono prośbę o połączenie.
  • Jeśli przepustowość połączenia jest pełna, odłącz połączenie, które było używane najkrócej (np. przez długi czas nie było zdarzenia audio), i zaakceptuj nowe żądanie.
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:
  • Pierwsze 30 sekund po włączeniu
  • Pierwsze 30 sekund bez połączenia lub wywoływania
  • Pierwsze 30 sekund bezczynności urządzenia
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:
  • Stan połączenia
  • Typ dźwięku aktywnego połączenia
  • Informacje o koncie aktywnego połączenia
  • Połączone urządzenia
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
  • L = długość stanu połączenia w bajtach
  • T = typ
0bLLLL0101
  • length: varies
  • type = 0b0101
Obowiązkowe
1 uint8 Stan połączenia
0bHAFRSSSS
  • H = wykrywanie założenia na głowę
  • A = dostępność połączenia
  • F = tryb pełnej koncentracji
  • R = automatyczne ponowne połączenie
  • S = stan połączenia
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

  1. 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.

  2. 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).

  3. 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
  • L = długość zaszyfrowanych danych
  • T = typ
0bLLLL0110
  • length: varies
  • type = 0b0110
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:

  1. 0b00000100
    Ten klucz konta nie jest używany.
    Jest to klucz domyślny (patrz Klucz konta).
  2. 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.
  3. 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.

Nazwa kodu wiadomości Wartość Tylko połączenie wielopunktowe Nadawca Responder Zaszyfruj MAC ACK
Funkcja przełącznika dźwięku 0x10 N Oba rodzaje Oba, za pomocą kodu 0x11 N N N
Powiadomienie o możliwości korzystania z przełącznika dźwięku 0x11 N Oba rodzaje Oba rodzaje N T T
Ustawianie stanu połączenia wielopunktowego 0 x 12 T Seeker Dostawca N T T
Ustawianie preferencji przełączania 0x20 T Seeker Dostawca N T T
Ustawienie preferencji przełączania 0x21 T Seeker Dostawca, za pomocą kodu 0x22 N N N
Powiadamianie o preferencjach dotyczących przełączania 0x22 T Dostawca Seeker N N N
Przełączanie aktywnego źródła dźwięku(na połączone urządzenie) 0x30 T Seeker Dostawca N T T
Przełączanie się z powrotem 0x31 N Seeker Dostawca N T T
Powiadomienie o wydarzeniu przełączenia wielopunktowego 0x32 T Dostawca Seeker N N N
Uzyskiwanie informacji o stanie połączenia 0x33 T Seeker Dostawca, za pomocą kodu 0x34 N N N
Powiadomienie o stanie połączenia 0x34 T Dostawca Seeker T N N
Notify Audio switch initiated connection 0x40 N Seeker Dostawca N T T
Wskazanie używanego klucza konta 0x41 N Seeker Dostawca N T T
Wysyłanie danych niestandardowych 0x42 N Seeker Dostawca N T T
Ustawianie miejsca docelowego połączenia z odłączeniem 0x43 T Seeker Dostawca N T T

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ę
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
  1. 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
  2. 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)
  3. Bit 2: bieżący stan wielopunktowy

    • 1, jeśli połączenie wielopunktowe jest włączone
    • 0, w innym przypadku
  4. 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
  5. 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)
  6. 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:

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