Przełącznik dźwięku

Użytkownicy coraz częściej korzystają z wielu źródeł dźwięku do wykonywania codziennych zadań, dlatego rośnie zapotrzebowanie na prostsze rozwiązanie do zarządzania korzystaniem z zestawów słuchawkowych na różnych urządzeniach. Przełącznik dźwięku płynnie przełącza połączenie zestawu słuchawkowego między urządzeniami w zależności od aktywności użytkownika (np. włączenie filmu) i zdarzeń o określonych priorytetach (np. połączenia przychodzącego).

Zasady dotyczące wrażeń użytkownika

  1. Przełączanie połączeń powinno być szybkie i zależne od działań użytkownika.
  2. Przełączanie połączeń powinno być widoczne dla użytkowników i umożliwiać im sterowanie lub cofanie zmiany, jeśli jest to niepożądane.
  3. Przełączenie powinno zapewniać ochronę prywatności użytkowników.

Role

Poszukiwacz przełączników dźwięku: Seeker to urządzenie będące źródłem dźwięku (np. telefon lub tablet) i szuka zestawu słuchawkowego w pobliżu, z którym w razie potrzeby może się połączyć.

Dostawca przełączania dźwięku: dostawca to zwykle zestaw słuchawkowy reklamujący swoją obecność i stan połączenia, aby użytkownicy mogli podjąć decyzję o zmianie dźwięku.

Przegląd wymagań

Aby umożliwić inteligentne przełączanie, dostawcy muszą przestrzegać tych wymagań:

Nazwa Opis Wymagania Obowiązkowa?
Skanowanie stron Aby zaakceptować nowe żądanie połączenia od innego narzędzia do wyszukiwania w przypadku istniejącego połączenia.
W przypadku dostawców jednopunktowych:
  • Po odłączeniu dostawcy treści urządzenie źródłowe automatycznie wstrzyma odtwarzanie dźwięku.
W przypadku dostawców usług wielopunktowych:
  • Jeśli połączenie będzie nadal dostępne, zaakceptuje ono prośbę o połączenie.
  • Jeśli przepustowość połączenia jest pełna, odłącz ostatnio używane połączenie (np. przez długi czas nie było żadnego zdarzenia audio) i zaakceptuj nowe przychodzące żądanie.
Do poprawy wydajności wymagany jest tryb skanowania stron z krótkim czasem oczekiwania (interwał skanowania nie powinien być dłuższy niż 640 ms).
Aby uniknąć kompromisu między czasem pracy na baterii a wydajnością przełączania, w większości przypadków dostawca może ustawić domyślny tryb skanowania stron (tryb oszczędzania energii nie powinien być dłuższy niż 1280 ms). Trybu małego opóźnienia należy jednak używać w tych sytuacjach:
  • Pierwsze 30 sekund działania urządzenia
  • Pierwsze 30 sekund bez połączenia lub stronicowania
  • Pierwsze 30 sekund bezczynności urządzenia
Obowiązkowe
Historia połączeń Aby przełączyć się z powrotem do poprzedniego połączenia i wznowić odtwarzanie, jeśli to możliwe.
Powrót zostanie aktywowany przy użyciu interfejsów API strumienia wiadomości.
W nagraniu powinno być uwzględnione zdarzenie wstrzymywania dźwięku, aby można było je wznowić.
Utrzymuj historię połączeń i wdrażaj interfejsy API strumienia wiadomości. Obowiązkowe
Stan połączenia Aby mogli ocenić proces przełączania połączeń, szukający może przeprowadzić ocenę stanu połączenia:
  • Stan połączenia
  • Typ dźwięku aktywnego połączenia
  • Informacje o koncie w aktywnym połączeniu
  • Połączone urządzenia
Uwzględnij stan połączenia w reklamach i strumieniu wiadomości BLE. Obowiązkowe
Zmiana możliwości środowiska wykonawczego Przełącznik dźwięku można włączyć, aktualizując oprogramowanie układowe u dostawcy, dlatego funkcje muszą być synchronizowane między mechanizmem wyszukiwania a dostawcą w czasie działania. Zaimplementuj interfejsy API strumienia wiadomości w celu uzyskania dostępu do funkcji środowiska wykonawczego. Obowiązkowe
Konfigurowalne reguły przełączania Pozwól mechanizmowi wyszukiwania skonfigurować priorytet między istniejącym aktywnym strumieniem audio a nowymi żądaniami strumieniowego przesyłania dźwięku za pomocą ustawień użytkownika.
Na przykład przełącznik dźwięku może udostępniać ustawienia interfejsu, aby umożliwić użytkownikom włączanie i wyłączanie automatycznego przełączania się między strumieniem multimediów a połączeniami.
Seeker ustawi i pobierze regułę przełączania za pomocą strumienia wiadomości.
Tylko dostawcy połączeń wielopunktowych.
Zaimplementuj interfejsy API strumienia wiadomości, aby umożliwić konfigurowanie reguł przełączania się między połączonymi urządzeniami.
Opcjonalnie
Przełączanie aktywnych urządzeń Pozwól funkcji wyszukiwania dźwięku symulować przełączanie dźwięku między połączonymi urządzeniami.
Po stronie osoby wyszukującej przełącznik dźwięku może być dostępny interfejs, który umożliwia łatwe przełączanie się między połączonymi urządzeniami.
Tylko dostawcy połączeń wielopunktowych.
Zaimplementuj interfejsy Message Stream API dla mechanizmu wyszukiwania przełączników dźwięku, aby określić aktywne źródło dźwięku między połączonymi urządzeniami.
Obowiązkowe
Powiadomienie dotyczące przełączania wielopunktowego Pozwól funkcji wyszukiwania przełącznika dźwięku wyświetlić powiadomienie o przełączeniu. Tylko dostawcy połączeń wielopunktowych.
Zaimplementuj interfejsy API strumienia wiadomości, aby powiadamiać osoby wyszukujące połączone punkty audio o trwającym przełączaniu audio.
Obowiązkowe

Ładunek reklamowy

Dostawca zamieści w reklamie bieżący stan połączenia, oparty na danych Konta Szybkiego parowania opisanych w sekcji Reklamy: jeśli nie można wykryć.

Pamiętaj, że wersja tabeli 4.2 to 0x1.

Pole stanu połączenia

Oktet Typ danych Opis Wartość Obowiązkowa?
0 uint8 Długość i typ pola
0bLLLLTTTT
  • L = długość stanu połączenia w bajtach
  • T = typ
0bLLLL0101
  • długość: różni się
  • type = 0b0101
Obowiązkowe
1 uint8 Stan połączenia
0bHAFRSSSS
  • H = wykrywanie na głowie
  • A = dostępność połączenia
  • F = tryb ostrości
  • R = połączenie automatyczne ponownie
  • S = stan połączenia
0bHAFRSSSS
Obowiązkowe
2 uint8 Dane niestandardowe
Obecnie obejmuje tylko typy treści, które służą do opisania wykorzystania bieżącej transmisji audio. Poszukiwacz wyśle ją do dostawcy.
Wartość jest wysyłana od osoby wyszukującej bieżące aktywne przesyłanie strumieniowe do dostawcy przez strumień wiadomości. Wartość 0, jeśli bieżąca aktywna transmisja nie pochodzi z narzędzia Seeker. Obowiązkowe
3 – var Bitmapa połączonych urządzeń
Bitmapa pokazująca, które urządzenia są obecnie połączone z dostawcą. Wszystkie powiązane urządzenia są uporządkowane według kolejności – po 1 bitze na jedno połączone urządzenie. Długość zależy od liczby powiązanych urządzeń dostawcy.
Zmapowany bit jest ustawiony na 1, jeśli urządzenie jest obecnie połączone z dostawcą. W przeciwnym razie ma wartość 0.
Więcej informacji znajdziesz w artykule Mapa bitowa połączonego urządzenia.
Opcjonalnie

Tabela 4.1. Nieprzetworzone dane pola stanu połączenia

Flagi połączeń
  • 0bH = wykrywanie na głowie

    • 1, na głowie
    • 0, w przeciwnym razie nie na głowie lub nie ma czujnika OHD
  • 0bA = dostępność połączenia

    • 1, dostępne jest połączenie
    • 0, w przeciwnym razie
  • 0bF = tryb pełnej koncentracji

    • 1.W trybie skupienia nie można teraz przełączać połączeń przy korzystaniu z multimediów, tzn. nie można przełączać się między A2DP na A2DP
    • 0, w przeciwnym razie
  • 0bR = połączenie automatyczne

    • 1 – jeśli bieżące połączenie jest automatycznie ponownie połączone przez dostawcę, co oznacza, że nie jest ono połączone przez użytkowników (w przypadku połączeń wielopunktowych, jeśli jedno z istniejących połączeń jest automatycznie ponownie podłączone, powinno mieć wartość 1).
    • 0, w przeciwnym razie
Stan połączenia
  • 0x0: brak połączenia
  • 0x1: stronicowanie
  • 0x2: połączenie jest aktywne, ale dane nie są przesyłane
  • 0x3: przesyłanie danych inne niż audio (tylko przy przełączaniu, jeśli nie, z użyciem 0xF)
  • 0x4: streaming A2DP, AVRCP nie dotyczy
  • 0x5: odtwarzanie strumieniowe A2DP i AVRCP
  • 0x6: streaming HFP (połączenia telefoniczne/voip), z uwzględnieniem dzwonka wewnętrznego i zewnętrznego
  • 0x7: LE Audio – strumieniowanie multimediów bez sterowania
  • 0x8: LE Audio – strumieniowanie multimediów ze sterowaniem
  • 0x9: LE Audio – streaming rozmowy
  • 0xA: LE Audio – transmisja
  • 0xF: tymczasowo wyłącz przełączanie połączenia (np. aktualizację oprogramowania układowego)
Mapa bitowa połączonego urządzenia

Aby uniknąć niechcianego przełączania połączenia, osoba przeglądająca będzie musiała wiedzieć, z którymi urządzeniami jest obecnie połączony zestaw słuchawkowy. Na przykład po podłączeniu zestawu słuchawkowego do telefonu użytkownik nie chce, aby połączenie zostało przerwane, gdy jeden z członków jego grupy rodzinnej włączy YouTube na tablecie.

Pamiętaj, że ta bitmapa jest anonimowa, a szukający nie wie, jakie inne urządzenia są powiązane z dostawcą. Weźmy na przykład 5 połączonych urządzeń:

  • 0: laptop (0bx0000000)
  • 1: telefonA (0b0x000000)
  • 2: telefonB (0b00x00000)
  • 3: tablet (0b000x0000)
  • 4: TV (0b0000x000)

Jeśli obecnie połączone urządzenia to laptop i tablet, wartość mapy bitowej będzie wynosić 0b10010000. Zmiana kolejności jest akceptowalna, jeśli nie można jej uniknąć, np. gdy użytkownik zresetuje zestaw słuchawkowy do ustawień fabrycznych lub gdy liczba połączonych urządzeń osiągnie górny limit.

Losowa reklama rozpoznawalna

Aby uniknąć śledzenia i szanować prywatność użytkowników, dostawca powinien wykonać rotację i zaszyfrować pole według klucza konta za pomocą AES-CTR:

 encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)

gdzie

  1. Klucz jest uzyskiwany z klucza używanego konta, który został zdefiniowany w następnej sekcji.

    • Klucz jest generowany przez funkcję HKDF, IETF RFC 5869, przy użyciu funkcji skrótu SHA-256.

        Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
      
    • Dostawca powinien użyć tutaj oryginalnego klucza konta. Oznacza to, że pierwszy bajt klucza to 0x04 i nie jest uwzględniony we wzorcu użycia.

  2. IV (wektor początkowy) to 2-bajtowy ciąg zaburzający danych klucza konta z zerowym dopełnieniem. IV to „concat” (sól, 14-bajtowe zera).

  3. Nieprzetworzone dane stanu połączenia są zdefiniowane w tabeli 4.1. Jeśli stan połączenia się zmieni, należy ponownie wygenerować ciąg zaburzający i RPA w tym samym okresie wyświetlania reklam.

Spowoduje to rotację pola stanu zaszyfrowanego połączenia z rotacją danych klucza konta.

Struktura reklamy BLE będzie miała taką strukturę:

Oktet Typ danych Opis Wartość Obowiązkowa?
0 uint8 Wersja i flagi 0x10 Obowiązkowe
1–t Dane klucza konta zależy Obowiązkowe
T+1S Dane dotyczące baterii zależy Opcjonalnie
s+1var Losowe dane możliwe do uzyskania zależy Obowiązkowa,jeśli lista kluczy konta nie jest pusta.
W przeciwnym razie została wykluczona.

Tabela 4.2. Reklamy BLE z losowymi dostępnymi danymi

Losowe dane możliwe do uzyskania obejmują:

Oktet Typ danych Opis Wartość Obowiązkowa?
0 uint8 Długość i typ pola
0bLLLLTTTT
  • L = długość zaszyfrowanych danych
  • T = typ
0bLLLL0110
  • długość: różni się
  • type = 0b0110
Obowiązkowe
1 – var Zaszyfrowane dane zależy Obowiązkowe

Tabela 4.2.1. Losowe dane możliwe do rozwiązania

Jeśli na przykład losowe dane możliwe do rozpoznania zawierają pole stanu zaszyfrowanego połączenia, odszyfrowanym wynikiem będzie pole stanu połączenia.

Aby zapobiec ingerencji, powyższe dane klucza konta należy nieco zmodyfikować, gdy w reklamie umieszczone są losowe dane możliwe do rozwiązania. Zwykle podczas tworzenia filtra klucza konta wartość V jest generowana przez połączenie filtra klucza konta z ciągiem zaburzającym. Jeśli reklamowane są także losowe dane dostępne do pobrania, wartość V powinna wyglądać tak:

 V = concat(account_key, salt, random_resolvable_data)

Jeśli reklamowane są zarówno dane o baterii, jak i losowe dane możliwe do odczytania, V należy utworzyć w taki sposób:

 V = concat(account_key, salt, battery_data, random_resolvable_data)

Używany klucz konta

Przełączanie połączenia odbywa się na podstawie konta, więc dostawca powinien uwzględnić w reklamie BLE informacje o koncie bieżącego połączenia. Jeśli aktualnie połączone urządzenie to użytkownik zmieniający dźwięk, dostawca powinien mieć możliwość uzyskania klucza konta powiązanego z tym mechanizmem wyszukiwania i zaszyfrowania pola stanu połączenia za pomocą tego klucza konta. Jeśli podłączonym źródłem dźwięku jest narzędzie spoza przełącznika dźwięku, dostawca powinien użyć ostatnio używanego klucza konta.

Przed obliczeniem filtra klucza konta dostawca powinien zmodyfikować pierwszy bajt kluczy konta, aby uwzględnić jeden z tych wzorców użycia:

  1. 0b00000100
    Klucz konta nie jest używany.
    Jest to wartość domyślna (patrz Klucz konta).
  2. 0b00000101
    Ten klucz konta jest ostatnio używanym kluczem konta.
    Pole stanu połączenia jest szyfrowane za pomocą tego klucza konta. Brak informacji o kluczu konta o bieżącym stanie połączenia. Może to oznaczać, że nie są połączone żadne urządzenia lub połączone urządzenie nie jest narzędziem wyszukiwania przełączników dźwięku.
  3. 0b00000110
    Ten klucz konta to używany klucz konta.
    Pole stanu połączenia jest szyfrowane za pomocą tego klucza konta, a obecnie połączone urządzenie jest powiązane z tym kluczem konta.

Schemat ładunku przełącznika dźwięku

Rysunek poniżej przedstawia schemat ładunku przełącznika dźwięku.

Wiadomości

Po nawiązaniu połączenia użytkownik i dostawca mogą użyć strumienia wiadomości do synchronizowania funkcji przełączania dźwięku, uruchamiania przełącznika połączenia, konfigurowania i pobierania ustawienia przełączania, powiadamiania o stanie połączenia itd. Utworzymy grupę wiadomości i kody wiadomości przeznaczone dla przełącznika dźwięku, jak pokazano poniżej.

Nazwa grupy wiadomości Wartość
Przełączanie dźwięku 0 x 7

Dodatkowe informacje o każdym kodzie wiadomości znajdziesz w poniższych sekcjach.

Nazwa kodu wiadomości Wartość Tylko połączenie wielopunktowe Nadawca Respondent Zaszyfruj MAC POTWIERDŹ
Korzystanie z funkcji Przełącznik dźwięku 0x10 N Obie opcje W obu przypadkach za pomocą kodu 0x11 N N N
Powiadom o możliwości przełącznika dźwięku 0x11 N Obie opcje Obie opcje N Y Y
Ustawianie stanu połączenia wielopunktowego 0x12 Y Poszukiwacz Dostawca N Y Y
Ustawianie preferencji przełączania 0x20 Y Poszukiwacz Dostawca N Y Y
Wybierz preferencje 0x21 Y Poszukiwacz Dostawca, za pomocą kodu 0x22 N N N
Ustawienie powiadomień 0x22 Y Dostawca Poszukiwacz N N N
Przełącz aktywne źródło dźwięku(na połączone urządzenie) 0x30 Y Poszukiwacz Dostawca N Y Y
Przełącz się z powrotem na odłączone urządzenie 0x31 N Poszukiwacz Dostawca N Y Y
Powiadamianie zdarzenia przełączania punktów wielopunktowych 0x32 Y Dostawca Poszukiwacz N N N
Uzyskanie informacji o stanie połączenia 0x33 Y Poszukiwacz Dostawca, za pomocą kodu 0x34 N N N
Powiadom o stanie połączenia 0x34 Y Dostawca Poszukiwacz Y N N
Powiadomienie o połączeniu zainicjowanym przez przełącznik dźwięku 0x40 N Poszukiwacz Dostawca N Y Y
Wskazywanie używanego klucza konta 0x41 N Poszukiwacz Dostawca N Y Y
Wysyłanie danych niestandardowych 0x42 N Poszukiwacz Dostawca N Y Y
Ustaw miejsce docelowe połączenia 0x43 Y Poszukiwacz Dostawca N Y Y

Tabela 4.3. Komunikaty przełączania dźwięku

MAC wiadomości przełącznika dźwięku

Aby możliwe było uwierzytelnianie wiadomości, wszystkie wiadomości przełączania dźwięku z dodatkowymi danymi wysyłanymi od nadawcy do dostawcy wymagają kodu uwierzytelniania wiadomości. Otrzymana wiadomość z MAC powinna zostać potwierdzona, aby osoba przeglądająca wiedziała, czy dostawca zareagował na tę wiadomość.

Jeśli uwierzytelnienie wiadomości się powiedzie, dostawca musi wysłać potwierdzenie tej wiadomości:

Oktet Typ danych Opis Wartość
0 Uint8 Potwierdzenie 0xFF
1 Uint8 POTWIERDŹ 0x01
2–3 Uint16 Dodatkowa długość danych zależy
4 Uint8 Przełączanie dźwięku 0 x 7
5 Uint8 Kod wiadomości przełącznika dźwięku zależy
6–s Dodatkowe dane zależy

W przypadku niepowodzenia dostawca wysyła NAK dla wiadomości:

Oktet Typ danych Opis Wartość
0 Uint8 Potwierdzenie 0xFF
1 Uint8 NAK 0x02
2–3 Uint16 Dodatkowa długość danych 0x0003
4 Uint8 Przyczyna błędu zależy
5 Uint8 Przełączanie dźwięku 0 x 7
6 Uint8 Kod wiadomości przełącznika dźwięku zależy

Pamiętaj, że jeśli dostawca jest nadawcą, adres MAC nie jest wymagany.

Możliwość korzystania z funkcji Przełącznik dźwięku

Dostawca przełącznika dźwięku i szukający mogą sprawdzić, czy podłączony Szybkie parowanie/dostawca obsługuje przełącznik dźwięku, używając tego komunikatu:

Oktet Typ danych Opis Wartość
0 Uint8 Przełączanie dźwięku 0 x 7
1 Uint8 Możliwość korzystania z funkcji Przełącznik dźwięku 0x10
2–3 Uint16 Dodatkowa długość danych 0

Tabela 4.3.1.0. Możliwości funkcji Przełącznik dźwięku

Powiadamianie o możliwości przełącznika dźwięku

Po otrzymaniu kodu komunikatu uzyskanie możliwości przełącznika dźwięku funkcja wyszukiwania/dostawcy przełącznika dźwięku zareaguje, przesyłając jedną z tych flag:

Oktet Typ danych Opis Wartość
0 Uint8 Przełączanie dźwięku 0 x 7
1 Uint8 Powiadamianie o możliwości przełącznika dźwięku 0x11
2–3 Uint16 Dodatkowa długość danych 20, jeśli jest ona wysyłana przez Seeker
4, jeśli jest wysyłana przez dostawcę
4–5 Uint16 Kod wersji przełącznika dźwięku Wartość różna od 0 oznacza, że obsługuje on przełącznik dźwięku. Obecna wersja (z rozszerzeniem zabezpieczeń) kod to 0x0102.
0x0000 lub brak odpowiedzi w ciągu 1 sekundy oznacza, że to urządzenie nie obsługuje przełącznika dźwięku
6–7 flagi Flagi możliwości przełączania dźwięku po stronie dostawcy
Jeśli ta funkcja jest wysyłana przez osobę wyszukującą, te 2 bajty należy zignorować.
różne
Zobacz Flagi możliwości przełączania dźwięku.
8–15 Liczba jednorazowa wiadomości
Wymagana tylko wtedy, gdy jest wysyłana przez osobę przeglądającą
zależy
16–23 Kod uwierzytelniania wiadomości
Wymagany tylko wtedy, gdy wysyła tę wiadomość przez Seeker
zależy

Tabela 4.3.1.1. Powiadamianie o możliwości przełączania dźwięku

Flagi możliwości przełączania dźwięku
  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 przeciwnym razie
  2. Bit 1: możliwość konfiguracji wielopunktowej

    • 1, jeśli urządzenie obsługuje połączenie wielopunktowe i można je przełączać
    • 0, w przeciwnym razie (nie obsługuje połączeń wielopunktowych, a połączenie jest zawsze włączone)
  3. Bit 2: bieżący stan wielopunktowy

    • 1, jeśli połączenie wielopunktowe jest włączone
    • 0, w przeciwnym razie
  4. Bit 3: wykrywanie dźwięku na głowie

    • 1, jeśli to urządzenie obsługuje wykrywanie na głowie (nawet jeśli jest ono teraz wyłączone).
    • 0, w przeciwnym razie
  5. Bit 4: bieżący stan wykrywania na głowie

    • 1, jeśli wykrywanie na głowie jest włączone
    • 0, w przeciwnym razie (nie obsługuje wykrywania na głowie lub takiego, które jest wyłączone)
  6. Wszystkie inne bity są zarezerwowane, a domyślnie przyjmuje wartość 0.

Ustaw stan połączenia wielopunktowego

W przypadku poszukiwaczy przełączników dźwięku możemy udostępnić ustawienie do włączania i wyłączania funkcji wielopunktowych. Seeker ustawi stan połączenia wielopunktowego na dostawcę za pomocą tego komunikatu:

Oktet Typ danych Opis Wartość
0 Uint8 Przełączanie dźwięku 0 x 7
1 Uint8 Ustaw stan połączenia wielopunktowego 0x12
2–3 Uint16 Dodatkowa długość danych 17
4 Uint8 Stan połączenia wielopunktowego 0: wyłącz połączenie wielopunktowe
1: włącz połączenie wielopunktowe
5–12 Liczba jednorazowa wiadomości zależy
13–20 Kod uwierzytelniania wiadomości zależy

Tabela 4.3.1.2. Ustawianie stanu połączenia wielopunktowego

Ustaw preferencje przełączania

Poszukiwacze przełączników dźwięku mogą zmienić ustawienie przełączania wielopunktowego i ustawić je na dostawcę, wyświetlając ten komunikat:

Oktet Typ danych Opis Wartość
0 Uint8 Przełączanie dźwięku 0 x 7
1 Uint8 Ustaw preferencje przełączania 0x20
2–3 Uint16 Dodatkowa długość danych 18
4 flagi Zmienianie preferencji różne
Zobacz flagę ustawienia przełączania wielopunktowego
5 Zaawansowane ustawienia przełączania
Ten bajt jest zarezerwowany, wartość domyślna to 0
zależy
6–13 Liczba jednorazowa wiadomości zależy
14–21 Kod uwierzytelniania wiadomości zależy

Tabela 4.3.2.0. Konfigurowanie preferencji przełączania

Flaga ustawienia przełączania wielopunktowego
  • Bit 0 (MSB): A2DP vs. A2DP (domyślnie 0)
  • Bit 1: HFP vs. HFP (domyślnie 0)
  • Bit 2: A2DP kontra HFP (domyślnie 0)
  • Bit 3: HFP vs. A2DP (domyślnie 1)
  • Bit 4–7: zarezerwowane
  • Powyżej odpowiada „prośba o nowy profil” w porównaniu z „bieżącym aktywnym profilem”.
    • 0 – nie przełączasz
    • 1 – przełączanie

Pobierz ustawienie przełączania

Poszukiwacze przełączników dźwięku mogą wysyłać zapytania o ustawienie przełączania wielu punktów z poziomu dostawcy, używając tego komunikatu:

Oktet Typ danych Opis Wartość
0 Uint8 Przełączanie dźwięku 0 x 7
1 Uint8 Pobranie konfiguracji przełączania 0x21
2–3 Uint16 Dodatkowa długość danych 0

Tabela 4.3.2.1. Uzyskiwanie preferencji przełączania

Ustawienie powiadamiania o zmianie

Oktet Typ danych Opis Wartość
0 Uint8 Przełączanie dźwięku 0 x 7
1 Uint8 Ustawienie powiadamiania o zmianie 0x22
2–3 Uint16 Dodatkowa długość danych 2
4 flagi Zmienianie flag ustawień różne
Zobacz flagę ustawienia przełączania wielopunktowego
5 Zaawansowane ustawienia przełączania
Ten bajt jest zarezerwowany, wartość domyślna to 0
zależy

Tabela 4.3.2.2. Preferencje przełączania powiadomień

Przełącz aktywne źródło dźwięku (na połączone urządzenie)

Poszukiwacze przełączników dźwięku mogą poprosić dostawcę połączeń wielopunktowych o przełączenie aktywnego źródła dźwięku między połączonymi urządzeniami. W tym celu użyj tego komunikatu:

Oktet Typ danych Opis Wartość
0 Uint8 Przełączanie dźwięku 0 x 7
1 Uint8 Przełącz aktywne źródło dźwięku (na połączone urządzenie) 0x30
2–3 Uint16 Dodatkowa długość danych 17
4 flagi Przełączanie flag zdarzeń aktywnego źródła dźwięku różne
Zobacz zdarzenia przełączania aktywnego źródła dźwięku
5–12 Liczba jednorazowa wiadomości zależy
13–20 Kod uwierzytelniania wiadomości zależy

Tabela 4.3.3.0. Przełączanie aktywnego źródła dźwięku (na podłączone urządzenie)

Przełączam aktywne zdarzenie źródła dźwięku
  • Bit 0 (MSB): 1 przełącznik na to urządzenie, 0 na drugie połączone urządzenie
  • Bit 1: 1 wznawia odtwarzanie na przełączniku po zmianie urządzenia. W przeciwnym razie – 0. Wznowienie odtwarzania oznacza, że dostawca wysyła powiadomienie o odtwarzaniu do szukającego przez profil AVRCP. Jeśli w poprzednim stanie (przed przełączeniem) nie było PLAY, dostawca powinien zignorować tę flagę.
  • Bit 2: 1 odrzuca SCO na wyłączonym urządzeniu; w przeciwnym razie 0
  • Bit 3: 1 odłącza Bluetooth na urządzeniu przełączonym poza domem. W przeciwnym razie – 0.
  • Bit 4–7: zarezerwowany.

Funkcja wyszukiwania przełączników dźwięku może nie zawsze znać prawidłowy stan, więc dostawca może otrzymać komunikat „przełącz się na to urządzenie”, gdy jest on już aktywnym urządzeniem. W tym przypadku, aby wyświetlić prawidłowy interfejs w narzędziu Seeker, dostawca może wysłać NAK z przyczyną błędu 0x4 – nadmiarowe działanie urządzenia.

Przełącz się z powrotem (na odłączone urządzenie)

Jeśli przełączanie połączenia jest niepożądane, użytkownicy mogą je cofnąć. W niektórych sytuacjach warto przywrócić połączenie audio, aby zminimalizować zakłócenia. Szukający użyje poniższego komunikatu, aby wywołać powrót:

Oktet Typ danych Opis Wartość
0 Uint8 Przełączanie dźwięku 0 x 7
1 Uint8 Przełącz się z powrotem (na odłączone urządzenie) 0x31
2–3 Uint16 Dodatkowa długość danych 17
4 Uint8 Przełącz zdarzenie różne
0x01: powrót
0x02: powrót i wznowienie odtwarzania
5–12 Liczba jednorazowa wiadomości zależy
13–20 Kod uwierzytelniania wiadomości zależy

Tabela 4.3.3.1. Przełączanie z powrotem (w przypadku odłączonego urządzenia)

W przypadku dostawcy połączeń wielopunktowych dostawca może przerwać połączenie z jednym źródłem dźwięku i wstrzymać sesję audio na drugim urządzeniu. Załóżmy na przykład, że zestaw słuchawkowy wielopunktowy jest podłączony do tabletu i 3 obsługiwanego przełącznika dźwięku. Użytkownik ogląda film na tablecie, gdy nadejdzie połączenie przychodzące na jego telefon. Telefon aktywuje przełącznik połączenia na zestawie słuchawkowym, który musi anulować połączenie trzeciego urządzenia, aby połączyć się z telefonem, a jednocześnie wstrzyma sesję multimediów na tablecie, aby pobrać dzwonek z telefonu. Jeśli użytkownik odrzuci połączenie, telefon może poprosić zestaw słuchawkowy o „przełączenie się z powrotem i wznowienie odtwarzania”. Po otrzymaniu tego żądania zestaw słuchawkowy musi ponownie połączyć się z trzecim urządzeniem i wznowić odtwarzanie wstrzymanego filmu na tablecie.

Powiadom zdarzenie przełączania wielopunktowego

Aby poinformować użytkowników o tym, że odbywa się zdarzenie przełączania wielopunktowego, przełącznik dźwięku może wyświetlać im powiadomienie. Dostawca powinien powiadomić poszukiwaczy przełączników dźwięku o zdarzeniu przełączania.

Oktet Typ danych Opis Wartość
0 Uint8 Przełączanie dźwięku 0 x 7
1 Uint8 Powiadomienie o zdarzeniu przełącznika wielopunktowego
Dostawca powinien wysyłać je za każdym razem, gdy użytkownik korzysta z przełącznika dźwięku, a następnie odtwarzający przełącznik dźwięku poza audio
0x32
2–3 Uint16 Dodatkowa długość danych zależy
4 Uint8 Powód zmiany różne
0x00: nieokreślony
0x01: streaming A2DP
0x02: HFP
5 Uint8 Urządzenie docelowe różni się
0x01: to urządzenie
0x02: inne połączone urządzenie
6 – n UTF-8 Nazwa urządzenia docelowego
, jeśli urządzeniem docelowym jest narzędzie Audio Switch Seeker, używając nazwy wysłanej przez osobę przeglądającą. W przeciwnym razie użyj nazwy BT (jeśli nie jest używana) z użyciem ostatnich 2 bajtów adresu.
zależy

Tabela 4.3.3.2. Powiadamianie zdarzenia przełączania punktów wielopunktowych

Pobranie stanu połączenia

Osoba szukająca może pobrać od dostawcy bieżący stan połączenia:

Oktet Typ danych Opis Wartość
0 Uint8 Przełączanie dźwięku 0 x 7
1 Uint8 Pobranie stanu połączenia 0x33
2–3 Uint16 Dodatkowa długość danych 0

Tabela 4.3.3.3. Pobieranie stanu połączenia

Po otrzymaniu tej wiadomości dostawca powinien odpowiedzieć kodem 0x34, informując o stanie połączenia.

Powiadom o stanie połączenia

Zgodnie z definicją w ładunku reklamowym BLE, w przypadku dostawców wielopunktowych, jeśli stan połączenia się zmieni (oprócz zmiany pakietu reklamowego), dostawca powinien również powiadomić o tej zmianie połączone podmioty wyszukujące, które używają tego samego klucza konta. Jeśli dostawca jest połączony z wyszukiwaniem przełączników dźwięku i osobą spoza tego obszaru, dostawca powinien powiadomić osobę wyszukującą związaną z przełącznikiem dźwięku (bez tego przełącznika dźwięku), o stanie połączenia (przy użyciu klucza konta osoby wyszukującej).

Oktet Typ danych Opis Wartość
0 Uint8 Przełączanie dźwięku 0 x 7
1 Uint8 Powiadom o stanie połączenia 0x34
2–3 Uint16 Dodatkowa długość danych zależy
4 Uint8 Flaga aktywnego urządzenia Różni się
0x00: ten szukający jest pasywny, a aktywne urządzenie używa tego samego klucza konta
0x01: ten szukający jest urządzeniem aktywnym
0x02: wyszukiwany jest pasywny, a aktywne jest to aplikacja niebędąca narzędziem do wyszukiwania przełączników dźwięku.
5 – n Stan połączenia szyfrowanego zależy
n+1 – n+8 Liczba jednorazowa wiadomości zależy

Tabela 4.3.3.4. Powiadamianie o stanie połączenia

Komunikat o stanie zaszyfrowanego połączenia

 encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)

gdzie:

Powiadom o połączeniu zainicjowanym przez przełącznik dźwięku

Dostawcy przełączników dźwięku mogą potrzebować informacji o tym, czy przełączanie połączenia zostało aktywowane przez przełącznik dźwięku w związku z różnymi reakcjami, np. aby wyłączyć ikony audio w przypadku zdarzeń przełączania dźwięku. Seeker wysyła wiadomość, aby powiadomić dostawcę, że to połączenie było połączeniem zainicjowanym przez przełącznik dźwięku.

Oktet Typ danych Opis Wartość
0 Uint8 Przełączanie dźwięku 0 x 7
1 Uint8 Powiadom o połączeniu zainicjowanym przez przełącznik dźwięku 0x40
2–3 Uint16 Dodatkowa długość danych 17
4 Uint8 Wskaźnik połączenia zainicjowanego przez przełącznik dźwięku różne
0: to połączenie nie zostało aktywowane przez przełącznik dźwięku
1: było to połączenie zainicjowane przez przełącznik dźwięku
5–12 Liczba jednorazowa wiadomości zależy
13–20 Kod uwierzytelniania wiadomości zależy

Tabela 4.3.4.0. Powiadamianie o połączeniu zainicjowanego przez przełącznik dźwięku

Wskaż używany klucz konta

Jeśli z dostawcą jest powiązanych wiele kluczy kont (np. wielu użytkowników), osoba wyszukująca użyje poniższego komunikatu, aby wskazać, który klucz konta jest używany.

Oktet Typ danych Opis Wartość
0 Uint8 Przełączanie dźwięku 0 x 7
1 Uint8 Wskaż używany klucz konta 0x41
2–3 Uint16 Dodatkowa długość danych 22
4–9 UTF-8 Ciąg znaków w użyciu UTF8 („w użyciu”)
10–17 Liczba jednorazowa wiadomości zależy
18–25 Kod uwierzytelniania wiadomości zależy

Tabela 4.3.4.1. Wskazanie używanego klucza konta

Po otrzymaniu tej wiadomości dostawca może sprawdzić używany klucz konta, weryfikując kod uwierzytelniania wiadomości.

Wysyłaj dane niestandardowe

Aktywny mechanizm wyszukiwania przełączników dźwięku może przechowywać informacje (np. o wykorzystaniu dźwięku) o strumieniu audio w niestandardowym bajcie danych i wysłać je do dostawcy, używając tego komunikatu:

Oktet Typ danych Opis Wartość
0 Uint8 Przełączanie dźwięku 0 x 7
1 Uint8 Wysyłaj dane niestandardowe 0x42
2–3 Uint16 Dodatkowa długość danych 17
4 Uint8 Dane niestandardowe zależy
5–12 Liczba jednorazowa wiadomości zależy
13–20 Kod uwierzytelniania wiadomości zależy

Tabela 4.3.4.2. Wysyłanie danych niestandardowych

Po otrzymaniu danych niestandardowych dostawca zaktualizuje pakiet reklamowy, dodając do niego te dane. W przypadku dostawcy wielopunktowego powinien też powiadamiać o zmianie stanu połączenia z innym podłączonym obiektem wyszukiwania używającym tego samego klucza konta.

Ustaw wartość docelową połączenia

W przypadku wielopunktowych zestawów słuchawkowych, jeśli preferowane połączenie nie jest ostatnio używane, Poszukiwacze przełączników dźwięku mogą poinformować dostawcę, które urządzenie należy usunąć, używając tego komunikatu:

Oktet Typ danych Opis Wartość
0 Uint8 Przełączanie dźwięku 0 x 7
1 Uint8 Ustaw wartość docelową połączenia 0x43
2–3 Uint16 Dodatkowa długość danych 17
4 Uint8 Kierowanie na połączone urządzenie do usunięcia różne
1: to urządzenie
5–12 Liczba jednorazowa wiadomości zależy
13–20 Kod uwierzytelniania wiadomości zależy

Tabela 4.3.4.3. Ustawianie miejsca docelowego połączenia bez połączenia

Implementacja referencyjna

Informacje o implementacji plików referencyjnych znajdziesz w bibliotece osadzonych pakietów SDK w pobliżu