Ses Geçişi

Kullanıcılar günlük işlerini yapmak için giderek daha fazla ses kaynağı cihazı kullandığından, cihazlar arasında kulaklık kullanımını yönetmek için daha basit bir çözüme olan talep artıyor. Ses anahtarı, kullanıcı etkinliğine (ör. film başlatma) ve öncelikli etkinliklere (ör. gelen arama) göre cihazlar arasında mikrofonlu kulaklık bağlantılarını sorunsuz bir şekilde aktarır.

Kullanıcı Deneyimi İlkeleri

  1. Bağlantı geçişi hızlı ve kullanıcı işlemine bağlı olmalıdır.
  2. Bağlantı geçişi kullanıcılar için şeffaf olmalı ve istenmeyen geçişlerde kullanıcıların geçişi kontrol etmesine/geri almasına olanak tanımalıdır.
  3. Geçiş, kullanıcı gizliliğine saygı göstermelidir.

Roller

Ses Geçişi Aracısı: Aracısı, uygun olduğunda bağlanacağı yakındaki bir kulaklığı arayan bir ses kaynağı cihazıdır (ör. telefon veya tablet).

Ses Değiştirme Sağlayıcısı: Sağlayıcı, genellikle arayanların geçiş kararı vermesi için varlığını ve bağlantı durumunu reklamlaştıran bir kulaklıktır.

Koşullara Genel Bakış

Akıllı geçişi gerçekleştirmek için sağlayıcıların aşağıdaki şartlara uyması gerekir:

Ad Açıklama Şartlar Zorunlu mu?
Sayfa Tarama Mevcut bir bağlantı varken başka bir Arayan'dan gelen yeni bir bağlantı isteğini kabul etmek için.
Tek noktadan sağlayıcılar için:
  • Sağlayıcı bağlantısını keserken orijinal kaynak cihaz, ses oynatmayı otomatik olarak duraklatır.
Çok noktalı sağlayıcılar için:
  • Kullanılabilir bir bağlantı varsa bağlantı isteği kabul edilir.
  • Bağlantı bant genişliği doluysa en son kullanılmayan bağlantının (ör. uzun süredir ses etkinliği olmayan) bağlantısını kesin ve gelen yeni isteği kabul edin.
Performansı artırmak için düşük gecikmeli sayfa tarama modu (tarama aralığı en fazla 640 ms olmalıdır) gerekir.
Pil ömrü ile anahtarlama performansı arasında bir denge kurmak için sağlayıcı, çoğu durumda varsayılan bir sayfa tarama moduna sahip olabilir (düşük güç modu, tarama aralığı en fazla 1.280 ms olmalıdır). Ancak düşük gecikme modu aşağıdaki durumlarda kullanılmalıdır:
  • Açıldıktan sonraki ilk 30 saniye
  • Bağlantı veya sayfalama olmamasının ilk 30 saniyesi
  • Cihazın boşta kaldığı ilk 30 saniye
Zorunlu
Bağlantı geçmişi Önceki bağlantıya geri dönmek ve varsa oynatmayı devam ettirmek için.
Geri dönme işlemi, Message Stream API'leri aracılığıyla yapılan iletişimlerle tetiklenir.
Müzik çalmayı devam ettirmek için ses duraklatma etkinliği kayda eklenmelidir.
Bağlantı geçmişini koruma ve Mesaj Akış API'lerini uygulama Zorunlu
Bağlantı durumu Aracıların bağlantıyı değiştirme kararı vermesi için.Bağlantı durumu şunları içerir:
  • Bağlantı durumu
  • Etkin bağlantının ses türü
  • Etkin bağlantının hesap bilgileri
  • Bağlı cihazlar
BLE reklamına ve mesaj akışına bağlantı durumunu ekleyin. Zorunlu
Çalışma zamanı özellikleri değişikliği Ses anahtarı, sağlayıcıdaki donanım yazılımı yükseltilerek etkinleştirilebilir. Bu nedenle, işletim sırasında bu özelliklerin Arayıcı ile Sağlayıcı arasında senkronize edilmesi gerekir. Çalışma zamanı özelliklerine erişmek için Message Stream API'lerini uygulayın. Zorunlu
Yapılandırılabilir geçiş kuralları Arayan'ın, kullanıcı tercihi ayarları aracılığıyla mevcut etkin ses akışları ile yeni ses akışı istekleri arasındaki önceliği yapılandırmasına izin verin.
Örneğin, ses anahtarı Arayan, kullanıcıların medya akışı ile arama arasında otomatik geçişi etkinleştirmesine/devre dışı bırakmasına olanak tanıyan kullanıcı arayüzü ayarları sağlayabilir.
Ses geçişi arayan, mesaj akışı üzerinden geçiş kuralını ayarlar ve alır.
Yalnızca çok noktalı sağlayıcılar.
Bağlı cihazlar arasında geçiş kurallarını yapılandırılabilir hale getirmek için Message Stream API'lerini uygulayın.
İsteğe bağlı
Etkin cihaz değiştirme Ses anahtarı arayanın, bağlı cihazlar arasında ses geçişini simüle etmesine izin verin.
Ses anahtarı arayan tarafında, kullanıcıların bağlı cihazlar arasında kolayca geçiş yapabileceği bir kullanıcı arayüzü olabilir.
Yalnızca çoklu nokta sağlayıcılar.
Bağlı cihazlar arasındaki etkin ses kaynağını belirlemek için Ses anahtarı arayan için Mesaj Akış API'lerini uygulayın.
Zorunlu
Çok noktalı anahtarlama bildirimi Ses Geçişi Aracısı'nın geçiş bildirimini göstermesine izin verin. Yalnızca çok noktalı sağlayıcılar.
Çok noktalı geçiş yapıldığında bağlı ses geçişi arayanları bilgilendirmek için Mesaj Akış API'lerini uygulayın.
Zorunlu

Reklam yükü

Sağlayıcı, Reklamcılık: Bulunulamaz durumdayken bölümünde açıklanan Hızlı Eşleme Hesabı verilerinin üzerine inşa edilmiş mevcut bağlantı durumunu reklama dahil eder.

tablo 4.2 sürümünün 0x1 olduğunu unutmayın.

Bağlantı Durumu Alanı

Sekizlik Veri türü Açıklama Değer Zorunlu mu?
0 uint8 Alan uzunluğu ve türü
0bLLLLTTTT
  • L = bağlantı durumunun bayt cinsinden uzunluğu
  • T = tür
0bLLLL0101
  • uzunluk: değişir
  • type = 0b0101
Zorunlu
1 uint8 Bağlantı durumu
0bHAFRSSSS
  • H = kafa algılama
  • A = bağlantı kullanılabilirliği
  • F = odak modu
  • R = otomatik olarak yeniden bağlandı
  • S = bağlantı durumu
0bHAFRSSSS
Zorunlu
2 uint8 Özel veriler
Şu anda yalnızca mevcut ses akışının kullanımını açıklamak için kullanılan içerik türünü içerir. Arayıcı, bu bilgileri Sağlayıcıya gönderir.
Değer, mevcut etkin yayının Aracısı'ndan mesaj akışı aracılığıyla Sağlayıcı'ya gönderilir. Mevcut etkin yayın Seeker'dan değilse 0 değerini alır. Zorunlu
3 - var Bağlı cihazlar bitmap'i
Sağlayıcıya şu anda hangi cihazların bağlı olduğunu gösteren bir bitmap. Tüm bağlı cihazlar, bağlı cihaz başına bir bit olacak şekilde sırayla düzenlenir. Uzunluk, sağlayıcının bağlı cihazlarının sayısına bağlıdır.
Cihaz şu anda Sağlayıcı'ya bağlıysa eşlenen bit 1'e, aksi takdirde 0'a ayarlanır.
Ayrıntılar için Bağlı Cihaz Bit Ekranı başlıklı makaleyi inceleyin.
İsteğe bağlı

Tablo 4.1: Bağlantı durumu alanı ham verileri

Bağlantı İşaretleri
  • 0bH = kafa algılama

    • 1, şu anda kafasında
    • 0, aksi takdirde kafada değil veya OHD sensörü yok
  • 0bA = bağlantı kullanılabilirliği

    • 1, kullanılabilir bir bağlantı var
    • Aksi takdirde 0
  • 0bF = odak modu

    • 1, odaklanmış modda artık medya kullanımı için bağlantı geçişine izin verilmiyor.Yani A2DP'den A2DP'ye geçiş yapılamıyor.
    • Aksi takdirde 0
  • 0bR = otomatik olarak yeniden bağlandı

    • Mevcut bağlantı sağlayıcı tarafından otomatik olarak yeniden bağlanıyorsa 1 (yani kullanıcılar tarafından bağlanmıyorsa) (çoklu nokta için, mevcut bağlantılardan biri otomatik olarak yeniden bağlanıyorsa 1 olarak ayarlanmalıdır)
    • Aksi takdirde 0
Bağlantı durumu
  • 0x0: Bağlantı yok
  • 0x1: sayfalama
  • 0x2: Bağlı ancak veri aktarımı yok
  • 0x3: Ses dışı veri aktarımı (yalnızca değiştirilebilir olduğunda, aksi takdirde 0xF kullanılır)
  • 0x4: A2DP yayını, AVRCP geçerli değil
  • 0x5: A2DP akış ve AVRCP oynatma
  • 0x6: Bant içi ve bant dışı zil sesi dahil HFP (telefon/VoIP görüşmesi) aktarımı
  • 0x7: LE Audio - kontrol olmadan medya aktarımı
  • 0x8: LE Audio: Kontrol ile medya akışı
  • 0x9: LE Audio - görüşme aktarımı
  • 0xA: LE Audio - yayın
  • 0xF: Bağlantı anahtarını geçici olarak devre dışı bırakma (ör. donanım yazılımı güncellemesi)
LE Audio bağlam türü ve bağlantı durumu

LE Audio sağlayıcının, Atanan Numaralar 6.12.3 bölümünde belirtilen tüm bağlam türlerini işlemesini (sağlayıcı belirli bir bağlam türünü açıkça desteklemediği sürece) ve bağlam türünü aşağıdaki gibi bağlantı durumuna eşlemesini önerin.

  • Sohbet tarzında: 0x9
  • Medya: 0x8
  • Oyun: 0x7
  • Öğretici: 0x7
  • Sesli Asistanlar: 0x9
  • Canlı: 0x9
  • Ses efektleri: 0x2
  • Bildirimler: 0x2
  • Zil sesi: 0x9
  • Uyarılar: 0x7
  • Acil Durum Alarmı: 0x9

Arama sırasında medya oynatma gibi karma LE Audio bağlam türü senaryosu için Sağlayıcı, en yüksek önceliğe sahip bağlantı durumunu kullanır. Yani yukarıdaki senaryo için 0x8 (medya) yerine 0x9 (arama) değerini kullanır.

Bağlı Cihaz Bit Haritası

İstenmeyen bağlantı geçişlerini önlemek için arayan kişinin, kulaklığın şu anda hangi cihazlara bağlı olduğunu bilmesi gerekebilir. Örneğin, kulaklık telefona bağlıyken aile üyelerinden biri tablette YouTube'u başlattığında kullanıcının bağlantının değiştirilmesiyle kesintiye uğramasını istemez.

Bu bit haritasının anonim olduğunu unutmayın. Arayan, sağlayıcıyla hangi diğer cihazların bağlı olduğunu bilemez. Örneğin, 5 bağlı cihazı ele alalım:

  • 0: dizüstü bilgisayar (0bx0000000)
  • 1: telefonA (0b0x000000)
  • 2: telefonB (0b00x00000)
  • 3: tablet (0b000x0000)
  • 4: TV (0b0000x000)

Mevcut bağlı cihazlar bir dizüstü bilgisayar ve tabletse bit eşlemenin değeri 0b10010000 olur. Kullanıcılar kulaklığı fabrika ayarlarına sıfırladığında veya bağlı cihaz sayısı üst sınıra ulaştığında olduğu gibi, kaçınılmaz durumlarda sipariş değişikliği kabul edilebilir.

Rastgele Çözümlenebilir Reklam

İzlemeyi önlemek ve kullanıcı gizliliğine saygı göstermek için Sağlayıcı, AES-CTR'yi kullanarak alanı hesap anahtarına göre döndürmeli ve şifrelemelidir:

 encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)

burada

  1. Anahtar, sonraki bölümde tanımlanan kullanımda hesap anahtarından türetilir.

    • Anahtar, SHA-256 karma oluşturma işlevi kullanılarak HKDF işlevi (IETF RFC 5869) tarafından oluşturulur.

        Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
      
    • Sağlayıcı burada orijinal hesap anahtarını kullanmalıdır. Yani anahtarın ilk baytı 0x04'tür ve kullanım desenine dahil edilmez.

  2. IV (başlangıç vektörü), sıfır dolgulu hesap anahtarı verilerinin 2 baytlık tuzudur. Yani IV, concat(salt, 14 baytlık sıfır) şeklindedir.

  3. Bağlantı durumu ham verileri tablo 4.1'de tanımlanmıştır. Bağlantı durumu değişirse tuz ve RPA aynı reklamcılık zaman aralığında yeniden oluşturulmalıdır.

Bu sayede, şifrelenmiş bağlantı durumu alanı, hesap anahtarı verileriyle aynı anda döner.

BLE reklamı aşağıdaki gibi yapılandırılır:

Sekizlik Veri türü Açıklama Değer Zorunlu mu?
0 uint8 Sürüm ve işaretler 0x10 Zorunlu
1 - t Hesap Anahtarı Verileri değişir Zorunlu
t+1 - s Pil Verileri değişir İsteğe bağlı
s+1 - var Rastgele Çözümlenebilir Veriler değişir Hesap Anahtarı Listesi boş değilse zorunludur,
aksi takdirde Hariç tutulur.

Tablo 4.2: Rastgele Çözümlenebilir Veriler içeren BLE reklamı

Rastgele Çözümlenebilir Veriler şunları içerir:

Sekizlik Veri türü Açıklama Değer Zorunlu mu?
0 uint8 Alan uzunluğu ve türü
0bLLLLTTTT
  • L = şifrelenmiş verilerin uzunluğu
  • T = tür
0bLLLL0110
  • uzunluk: değişir
  • type = 0b0110
Zorunlu
1 - var Şifrelenmiş veriler değişir Zorunlu

Tablo 4.2.1: Rastgele Çözümlenebilir Veriler

Örneğin, rastgele çözülebilir veriler şifrelenmiş bir bağlantı durumu alanı içeriyorsa şifresi çözülmüş sonuç bağlantı durumu alanı olur.

Kurcalamaya karşı önlem almak için, reklama rastgele çözülebilir veriler eklendiğinde yukarıdaki hesap anahtarı verileri biraz değiştirilmelidir. Normalde hesap anahtarı filtresi oluşturulurken hesap anahtarı filtresi bir tuz ile birleştirilerek V değeri üretilir. Bunun yerine, rastgele çözülebilir verilerin de reklamı yapıldığında V değeri şu şekilde oluşturulmalıdır:

 V = concat(account_key, salt, random_resolvable_data)

Hem Pil Verileri hem de Rastgele Çözümlenebilir Veriler reklamı yapılıyorsa V aşağıdaki şekilde oluşturulmalıdır:

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

Kullanımdaki Hesap Anahtarı

Bağlantı geçişi hesaba dayalı olduğundan Sağlayıcı, mevcut bağlantının hesap bilgilerini BLE reklamına eklemelidir. Mevcut bağlı cihaz bir ses anahtarı arayansa sağlayıcı, bu arayanla ilişkili hesap anahtarını alıp bağlantı durumu alanını şifrelemek için bu hesap anahtarını kullanabilir. Bağlı ses kaynağı, ses anahtarı arayan olmayan bir cihazsa sağlayıcı en son kullanılan hesap anahtarını kullanmalıdır.

Sağlayıcı, hesap anahtarı filtresini hesaplamadan önce hesap anahtarlarının ilk baytını, kullanım kalıplarına aşağıdakilerden birini dahil edecek şekilde değiştirmelidir:

  1. 0b00000100
    Bu hesap anahtarı kullanılmıyor.
    Bu varsayılan anahtardır (Hesap anahtarı bölümüne bakın).
  2. 0b00000101
    Bu hesap anahtarı, en son kullanılan hesap anahtarıdır.
    Bağlantı durumu alanı bu hesap anahtarı tarafından şifrelenir. Mevcut bağlantı durumuyla ilgili hesap anahtarı bilgisi yok. Bu, bağlı cihaz olmadığı veya bağlı cihazın ses anahtarı arayan olmadığı anlamına gelebilir.
  3. 0b00000110
    Bu hesap anahtarı, kullanılan hesap anahtarıdır.
    Bağlantı durumu alanı bu hesap anahtarıyla şifrelenir ve şu anda bağlı olan cihaz bu hesap anahtarıyla ilişkilendirilir.

Ses anahtarı yükü şeması

Aşağıdaki şekilde, ses anahtarı yükü şeması gösterilmektedir.

Mesajlar

Arayan ve Sağlayıcı, bağlıyken ses anahtarı özelliğini senkronize etmek, bağlantı anahtarını tetiklemek, anahtarlama tercihini ayarlamak ve almak, bağlantı durumunu bildirmek vb. için Mesaj akışını kullanabilir. Aşağıda gösterildiği gibi ses anahtarına özel bir mesaj grubu ve mesaj kodları oluştururuz.

Mesaj Grubu Adı Değer
Ses kaynağı değiştirme 0x07

Her mesaj koduyla ilgili ek ayrıntılar aşağıdaki bölümlerde verilmiştir.

Mesaj Kodu Adı Değer Yalnızca çok noktalı Gönderen Responder Şifrele MAC ACK
Ses Geçişi özelliğini kullanma 0x10 H Her ikisi de Her ikisi de 0x11 koduyla H H H
Ses Geçişi özelliğini bildirme 0x11 H Her ikisi de Her ikisi de H E Y
Çok noktalı durumu ayarlama 0x12 Y Arayan Sağlayıcı H E Y
Geçiş tercihini ayarlama 0x20 Y Arayan Sağlayıcı H E Y
Geçiş tercihini alma 0x21 Y Arayan Sağlayıcı, 0x22 kodu aracılığıyla H H H
Geçiş tercihini bildirme 0x22 Y Sağlayıcı Arayan H H H
Etkin ses kaynağını değiştirme(bağlı cihaza) 0x30 Y Arayan Sağlayıcı H E Y
Geri dönme 0x31 H Arayan Sağlayıcı H E Y
Birden çok noktalı anahtar etkinliği hakkında bildirim alma 0x32 Y Sağlayıcı Arayan H H H
Bağlantı durumunu alma 0x33 Y Arayan Sağlayıcı, 0x34 kodu aracılığıyla H H H
Bağlantı durumunu bildirme 0x34 Y Sağlayıcı Arayan Y H H
Ses anahtarı tarafından başlatılan bağlantıyı bildirme 0x40 H Arayan Sağlayıcı H E Y
Kullanımda olan hesap anahtarını belirtme 0x41 H Arayan Sağlayıcı H E Y
Özel veri gönderme 0x42 H Arayan Sağlayıcı H E Y
Bırakma bağlantısı hedefini ayarlama 0x43 Y Arayan Sağlayıcı H E Y

Tablo 4.3: Ses geçişi mesajları

Sesli mesajların MAC'i

İstemciden sağlayıcıya gönderilen ek veriler içeren tüm ses anahtarı mesajlarında mesaj kimlik doğrulaması sağlamak için mesaj kimlik doğrulama kodu gerekir. MAC içeren bir mesaj alındığında, Sağlayıcı'nın mesaja yanıt verip vermediğini bilmesi için mesaj onaylanmalıdır.

İleti kimlik doğrulaması başarılı olursa sağlayıcı, ileti için ACK'yi gönderir:

Sekizlik Veri Türü Açıklama Değer
0 uint8 Onay 0xFF
1 uint8 ACK 0x01
2 - 3 uint16 Ek veri uzunluğu değişir
4 uint8 Ses kaynağı değiştirme 0x07
5 uint8 Ses değiştirme mesaj kodu değişir
6 - sn Ek veriler değişir

Bu işlem başarısız olursa sağlayıcı, ileti için NAK gönderir:

Sekizlik Veri Türü Açıklama Değer
0 uint8 Onay 0xFF
1 uint8 NAK 0x02
2 - 3 uint16 Ek veri uzunluğu 0x0003
4 uint8 Hata nedeni değişir
5 uint8 Ses kaynağı değiştirme 0x07
6 uint8 Ses değiştirme mesaj kodu değişir

Sağlayıcı gönderen ise MAC'nin gerekli olmadığını unutmayın.

Ses geçişi özelliğini alma

Hem ses anahtarı sağlayıcısı hem de arayan, bağlı Hızlı Eşleme arayan/sağlayıcısının ses anahtarını destekleyip desteklemediğini aşağıdaki mesajı kullanarak kontrol edebilir:

Sekizlik Veri Türü Açıklama Değer
0 uint8 Ses kaynağı değiştirme 0x07
1 uint8 Ses geçişi özelliğini alma 0x10
2 - 3 uint16 Ek veri uzunluğu 0

Tablo 4.3.1.0: Ses geçişi özelliğini alma

Ses geçişi özelliğini bildirme

Ses anahtarı özelliğini al mesaj kodunu aldıktan sonra ses anahtarı arayan/sağlayıcı, aşağıdaki işaretlerden biriyle yanıt verir:

Sekizlik Veri Türü Açıklama Değer
0 uint8 Ses kaynağı değiştirme 0x07
1 uint8 Ses geçişi özelliğini bildirme 0x11
2 - 3 uint16 Ek veri uzunluğu Arayan tarafından gönderiliyorsa 20
Sağlayıcı tarafından gönderiliyorsa 4
4 - 5 uint16 Ses anahtarı sürüm kodu Sıfır olmayan bir değer, ses anahtarını desteklediği anlamına gelir. Geçerli sürüm (güvenlik geliştirmesi ile) kodu 0x0102'dir.
0x0000 veya 1 saniye içinde yanıt alınamaması, ses anahtarının bu cihazda desteklenmediği anlamına gelir.
6 - 7 flags Sağlayıcının ses anahtarı özelliği işaretleri
Bu, Arayan tarafından gönderiliyorsa bu iki bayt yoksayılmalıdır.
değişir
Ses anahtarı özellik işaretleri bölümüne bakın.
8 - 15 Mesaj tek seferlik kimliği
Yalnızca Arayan tarafından gönderildiğinde gereklidir.
değişir
16 - 23 İleti kimlik doğrulama kodu
Yalnızca bu, Arayan tarafından gönderildiğinde gereklidir
değişir

Tablo 4.3.1.1: Ses anahtarı bildirim özelliği

Ses geçişi özelliği bayrakları
  1. Bit 0 (6. bayt, MSB): Ses anahtarı durumu

    • Ses geçişi durumu açıksa 1
    • Aksi takdirde 0
  2. 1. bit: çok noktalı yapılandırılabilirlik

    • 1, cihaz çoklu noktayı destekliyorsa ve açık ile kapalı arasında geçiş yapılabiliyorsa
    • Aksi takdirde 0 (çoklu noktayı desteklemez veya çoklu nokta her zaman açıktır)
  3. Bit 2: çok noktalı mevcut durum

    • Multipoint açıksa 1
    • Aksi takdirde 0
  4. 3. bit: Baş üzerinde algılama

    • Bu cihaz kulaklık takılı algılamayı destekliyorsa 1 (kulaklık takılı algılama şu anda kapalı olsa bile)
    • Aksi takdirde 0
  5. 4. bit: Baş üstü algılama mevcut durumu

    • Kulaklık takılı algılama açıksa 1
    • Aksi takdirde 0 (kafa algılama desteklenmez veya devre dışıdır)
  6. Diğer tüm bitler ayrılmıştır, varsayılan değer 0'dır.

Çok noktalı durumu ayarlama

Ses anahtarı arayanlarda, kullanıcıların çok noktalı işlevi etkinleştirmesi/devre dışı bırakması için ayar sağlayabiliriz. Arayıcı, aşağıdaki mesajı kullanarak çok noktalı durumu sağlayıcıya ayarlar:

Sekizlik Veri Türü Açıklama Değer
0 uint8 Ses kaynağı değiştirme 0x07
1 uint8 Çok noktalı durumu ayarlama 0x12
2 - 3 uint16 Ek veri uzunluğu 17
4 uint8 Çok noktalı durum 0: Çoklu noktalı işlevi kapatın
1: Çoklu noktalı işlevi açın
5 - 12 Mesaj tek seferlik rastgele sayısı değişir
13 - 20 Mesaj doğrulama kodu değişir

Tablo 4.3.1.2: Çoklu nokta durumunu ayarlama

Geçiş tercihini ayarlama

Ses anahtarı arayanlar, aşağıdaki mesajı kullanarak çok noktalı anahtarlama tercihini değiştirebilir ve sağlayıcıya ayarlayabilir:

Sekizlik Veri Türü Açıklama Değer
0 uint8 Ses kaynağı değiştirme 0x07
1 uint8 Geçiş tercihini ayarlama 0x20
2 - 3 uint16 Ek veri uzunluğu 18
4 flags Geçiş tercihi değişir
Çok noktalı anahtarlama tercihi işaretini inceleyin.
5 Gelişmiş anahtarlama ayarları
Bu bayt ayrılmıştır, varsayılan değer 0'dır
değişir
6 - 13 Mesaj tek seferlik rastgele sayısı değişir
14 - 21 Mesaj doğrulama kodu değişir

Tablo 4.3.2.0: Geçiş tercihini ayarlama

Çok noktalı anahtarlama tercihi işareti
  • 0. bit (MSB): A2DP ve A2DP (varsayılan 0)
  • 1. bit: HFP ve HFP (varsayılan 0)
  • 2. bit: A2DP ve HFP (varsayılan 0)
  • 3. bit: HFP ve A2DP (varsayılan 1)
  • Bit 4 - 7: ayrılmış
  • Yukarıda "yeni profil isteği" ve "mevcut etkin profil" gösterilmektedir.
    • Geçiş yapmadıysa 0
    • Geçiş için 1

Geçiş tercihini alma

Ses anahtarı arayanlar, aşağıdaki mesajı kullanarak çok noktalı anahtarlama tercihini sağlayıcıdan sorgulayabilir:

Sekizlik Veri Türü Açıklama Değer
0 uint8 Ses kaynağı değiştirme 0x07
1 uint8 Geçiş yapılandırmasını alma 0x21
2 - 3 uint16 Ek veri uzunluğu 0

Tablo 4.3.2.1: Geçiş tercihini alma

Geçiş tercihini bildirme

Sekizlik Veri Türü Açıklama Değer
0 uint8 Ses kaynağı değiştirme 0x07
1 uint8 Geçiş tercihini bildirme 0x22
2 - 3 uint16 Ek veri uzunluğu 2
4 flags Tercih işaretlerini değiştirme değişir
Çok noktalı anahtarlama tercihi işaretini inceleyin.
5 Gelişmiş anahtarlama ayarları
Bu bayt ayrılmıştır, varsayılan değer 0 olmalıdır
değişir

Tablo 4.3.2.2: Geçiş tercihini bildirme

Etkin ses kaynağını değiştirme (bağlı cihaza)

Ses geçişi arayanlar, aşağıdaki mesajı kullanarak çok noktalı sağlayıcıdan etkin ses kaynağını bağlı cihazlar arasında değiştirmesini isteyebilir:

Sekizlik Veri Türü Açıklama Değer
0 uint8 Ses kaynağı değiştirme 0x07
1 uint8 Etkin ses kaynağını değiştirme (bağlı cihaza) 0x30
2 - 3 uint16 Ek veri uzunluğu 17
4 flags Etkin ses kaynağı etkinlik işaretlerini değiştirme değişir
Etkin ses kaynağı etkinliği değiştirme başlıklı makaleyi inceleyin.
5 - 12 Mesaj tek seferlik rastgele sayısı değişir
13 - 20 Mesaj doğrulama kodu değişir

Tablo 4.3.3.0: Etkin ses kaynağını değiştirme (bağlı cihaza)

Etkin ses kaynağı değiştirme etkinliği
  • Bit 0 (MSB): 1 bu cihaza, 0 ikinci bağlı cihaza geç
  • 1. bit: 1 ise cihaz değiştirdikten sonra oynamaya devam et, aksi takdirde 0. Oynatma işleminin devam ettirilmesi, sağlayıcının AVRCP profili aracılığıyla arayana bir PLAY bildirimi göndermesi anlamına gelir. Önceki durum (geçiş yapmadan önce) PLAY değilse Sağlayıcı bu işareti yoksaymalıdır.
  • 2. bit: 1, değiştirilen cihazda SCO'yu reddeder, aksi takdirde 0 olur.
  • 3. bit: 1, uzak cihazda Bluetooth bağlantısını keser. Aksi takdirde 0 olur.
  • 4. - 7. bit: ayrılmış.

Ses anahtarı arayanlar her zaman durumlarını doğru şekilde bilmeyebilir. Bu nedenle, arayan zaten etkin cihaz olduğunda sağlayıcının "bu cihaza geç" mesajı alması mümkündür. Bu durumda, Arayan'da doğru kullanıcı arayüzünü göstermek için Sağlayıcı, 0x4 - Gereksiz cihaz işlemi hata nedeniyle bir NAK gönderebilir.

Birden fazla ayarlanmış üyesi olan LE Audio sağlayıcısı, tüm üyelerinin Arayan'la bağlantısını kesmelidir. Aksi takdirde, Arayan'ın Bluetooth yığını sağlayıcıya yeniden bağlanır.

Geri dönme (bağlantısı kesilmiş cihaza)

Bağlantı geçişi istenmiyorsa kullanıcılar geçişi geri alabilir. Belirli senaryolarda, kesintiyi en aza indirmek için ses bağlantısını geri yüklemek mantıklı olabilir. Arayıcı, geri geçişi tetiklemek için aşağıdaki mesajı kullanır:

Sekizlik Veri Türü Açıklama Değer
0 uint8 Ses kaynağı değiştirme 0x07
1 uint8 Geri dönme (bağlantısı kesilmiş cihaza) 0x31
2 - 3 uint16 Ek veri uzunluğu 17
4 uint8 Etkinliği geri alma değişir
0x01: geri dön
0x02: geri dön ve oynamaya devam et
5 - 12 Mesaj tek seferlik rastgele sayısı değişir
13 - 20 Mesaj doğrulama kodu değişir

Tablo 4.3.3.1: Geri dönme (bağlantısı kesilmiş cihaza)

Çok noktalı sağlayıcılar, bağlantı geçişi yapmak için bir ses kaynağı cihazıyla bağlantıyı kesebilir ve diğer ses kaynağındaki ses oturumunu duraklatabilir. Örneğin, çoklu noktalı kulaklığın bir tablete ve desteklenen üçüncü bir Ses Geçişi cihazına bağlı olduğunu varsayalım. Kullanıcı, tabletinde video izlerken telefonuna gelen bir aramayı yanıtlıyor. Telefon, mikrofonlu kulaklıktaki bir bağlantı anahtarını tetikler. Bu anahtar, telefona bağlanmak için 3. cihazın bağlantısını kesmeli ve telefondan gelen zil sesini almak için tabletteki medya oturumunu duraklatmalıdır. Kullanıcı aramayı reddederse telefon, kulaklığın "geri dönüp oynatmaya devam etmesini" isteyebilir. Bu istek alındıktan sonra mikrofonlu kulaklık 3. cihaza yeniden bağlanmalı ve duraklatılmış videonun oynatılması tablette devam ettirilmelidir.

Çoklu nokta anahtarlama etkinliği hakkında bildirim alma

Ses Değiştirici, kullanıcılara gerçekleşen çok noktalı anahtarlama etkinliği hakkında bilgi vermek için kullanıcılara bildirim gösterebilir. Sağlayıcı, bağlı ses anahtarı arayanları geçiş etkinliği hakkında bilgilendirmelidir.

Sekizlik Veri Türü Açıklama Değer
0 uint8 Ses kaynağı değiştirme 0x07
1 uint8 Çok noktalı anahtarlama etkinliği bildirimi
Sağlayıcı, Ses Geçişi Aracısı ile Ses Geçişi Aracısı olmayan kullanıcılar, Ses Geçişi Aracısı olmayan kullanıcı ile Ses Geçişi Aracısı ve Ses Geçişi Aracısı ile Ses Geçişi Aracısı arasındaki geçişler dahil olmak üzere her geçişte bu bildirimi göndermelidir.
0x32
2 - 3 uint16 Ek veri uzunluğu değişir
4 uint8 Geçiş nedeni
Bu değer, Bağlantı durumuna göre belirlenmelidir. LE Audio kullanım alanları için LE Audio bağlam türü ve bağlantı durumu arasındaki eşlemeyi incelemek yararlı olabilir. Örneğin, sesli asistanlara karşılık gelen bağlantı durumu 0x9'dur(LE ses - arama aktarımı). Bu nedenle, sesli asistanlar tarafından başlatılan bir geçişin geçiş nedeni 0x02 olmalıdır.
değişir
0x00: Belirtilmemiş
0x01: Medya (ör. A2DP akış, LEA medya akış)
0x02: Görüşme (ör. HFP akış, LEA görüşme akış)
5 uint8 Hedef cihaz değişir
0x01: bu cihaz
0x02: bağlı başka bir cihaz
6 - n utf8 Hedef cihaz adı
hedef cihaz ses anahtarı arayan ise arayanın gönderdiği adı kullanır, aksi takdirde BT adını kullanır, geçerli değilse adresinin son 2 baytını kullanır
değişir

Tablo 4.3.3.2: Birden çok noktalı anahtar etkinliği hakkında bildirim

Bağlantı durumunu alma

Arayıcı, mevcut bağlantı durumunu Sağlayıcı'dan alabilir:

Sekizlik Veri Türü Açıklama Değer
0 uint8 Ses kaynağı değiştirme 0x07
1 uint8 Bağlantı durumunu alma 0x33
2 - 3 uint16 Ek veri uzunluğu 0

Tablo 4.3.3.3: Bağlantı durumunu alma

Sağlayıcı, bu mesajı aldıktan sonra 0x34 mesaj koduyla yanıt vererek bağlantı durumunu bildirir.

Bağlantı durumunu bildirme

BLE reklam yükü bölümünde tanımlandığı gibi, çok noktalı sağlayıcılar için bağlantı durumu değişirse (reklam paketinin değiştirilmesi hariç) sağlayıcı, aynı hesap anahtarını kullanan bağlı arayanları da değişiklik hakkında bilgilendirmelidir. Sağlayıcı, sesli anahtar arayan ve sesli olmayan anahtar arayana bağlıysa ve sesli olmayan anahtar arayan etkinse Sağlayıcı, bağlı sesli anahtar arayanı da bağlantı durumu hakkında bilgilendirmelidir (Arayıcı'nın hesap anahtarını kullanarak).

Sekizlik Veri Türü Açıklama Değer
0 uint8 Ses kaynağı değiştirme 0x07
1 uint8 Bağlantı durumunu bildirme 0x34
2 - 3 uint16 Ek veri uzunluğu değişir
4 uint8 Etkin cihaz bayrağı değişir
0x00: Bu arayan pasiftir ve etkin cihaz aynı hesap anahtarını kullanır
0x01: Bu arayan etkin cihazdır
0x02: Bu arayan pasiftir ve etkin cihaz, ses anahtarı olmayan bir arayandır.
5 - n Şifrelenmiş bağlantı durumu değişir
n+1 - n+8 Mesaj tek seferlik rastgele sayısı değişir

Tablo 4.3.3.4: Bağlantı durumu hakkında bildirim alma

Şifrelenmiş bağlantı durumu mesajı

 encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)

Bu örnekte:

  • Anahtar, kullanımdaki hesap anahtarından türetilir. Random Resolvable Advertisement (Analizi Yapılabilen Rastgele Reklam) bölümüne bakın.

     Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
    
  • IV, concat(Session_nonce, Message_nonce) değerini alır.

  • connection_status_raw_data = concat(connection_state, custom_data, connected_devices), BLE'de tanımlanan reklam mesajı Burada mesaj kodu ve veri uzunluğu olduğundan alan uzunluğu ve türü için baytın dahil edilmemesi gerektiğini unutmayın.

Ses Geçişi tarafından başlatılan bağlantıyı bildirme

Ses geçişi sağlayıcılarının, farklı tepkiler verebilmek için bağlantı geçişinin ses geçişi tarafından tetiklenip tetiklenmediğini bilmesi gerekebilir (ör. ses geçişi etkinlikleri için kulak içi uyarı seslerini devre dışı bırakma). Arayıcı, bu bağlantının ses anahtarı tarafından başlatılan bir bağlantı olduğunu bildirmek için sağlayıcıya bir mesaj gönderir.

Sekizlik Veri Türü Açıklama Değer
0 uint8 Ses kaynağı değiştirme 0x07
1 uint8 Ses Geçişi tarafından başlatılan bağlantıyı bildirme 0x40
2 - 3 uint16 Ek veri uzunluğu 17
4 uint8 Ses geçişi tarafından başlatılan bağlantı göstergesi değişir
0: Bu bağlantı Ses Geçişi tarafından tetiklenmedi
1: Bu bağlantı Ses Geçişi tarafından başlatıldı
5 - 12 Mesaj tek seferlik rastgele sayısı değişir
13 - 20 Mesaj doğrulama kodu değişir

Tablo 4.3.4.0: Ses anahtarı tarafından başlatılan bağlantıyı bildirme

Kullanımdaki hesap anahtarını belirtme

Arayıcı'da birden fazla hesap anahtarı (ör. çok kullanıcılı) Sağlayıcı ile ilişkilendirilmişse Arayıcı, hangi hesap anahtarının kullanıldığını belirtmek için aşağıdaki mesajı kullanır.

Sekizlik Veri Türü Açıklama Değer
0 uint8 Ses kaynağı değiştirme 0x07
1 uint8 Kullanımdaki hesap anahtarını belirtme 0x41
2 - 3 uint16 Ek veri uzunluğu 22
4 - 9 utf8 Kullanımda dizesi UTF8 ("kullanımda")
10 - 17 Mesaj tek seferlik rastgele sayısı değişir
18 - 25 Mesaj doğrulama kodu değişir

Tablo 4.3.4.1: Kullanımdaki hesap anahtarını belirtme

Sağlayıcı, bu mesajı aldıktan sonra mesaj kimlik doğrulama kodunu doğrulayarak hangi hesap anahtarının kullanıldığını öğrenebilir.

Özel veriler gönderme

Etkin ses anahtarı arayan, ses akışının bilgilerini (ör. ses kullanımı) özel veri baytına sığdırabilir ve aşağıdaki mesajı kullanarak sağlayıcıya gönderebilir:

Sekizlik Veri Türü Açıklama Değer
0 uint8 Ses kaynağı değiştirme 0x07
1 uint8 Özel veriler gönderme 0x42
2 - 3 uint16 Ek veri uzunluğu 17
4 uint8 Özel veriler değişir
5 - 12 Mesaj tek seferlik rastgele sayısı değişir
13 - 20 Mesaj doğrulama kodu değişir

Tablo 4.3.4.2: Özel veri gönderme

Sağlayıcı, özel verileri aldıktan sonra reklam paketini özel verileri içerecek şekilde günceller. Çok noktalı bir sağlayıcı için aynı hesap anahtarını kullanan başka bir bağlı arayana bağlantı durumu değişikliğini de bildirmelidir.

Bağlantıyı bırakma hedefini ayarlama

Çok noktalı kulaklıklarda, bağlantının kesilmesi tercih edilen bağlantı en son kullanılmayan bağlantı değilse ses anahtarı arayanlar, aşağıdaki mesajı kullanarak sağlayıcıya hangi cihazın kesileceğini bildirebilir:

Sekizlik Veri Türü Açıklama Değer
0 uint8 Ses kaynağı değiştirme 0x07
1 uint8 Bağlantıyı bırakma hedefini ayarlama 0x43
2 - 3 uint16 Ek veri uzunluğu 17
4 uint8 Bağlı cihazın bağlantısını kesilecek hedef değişir
1: bu cihaz
5 - 12 Mesaj tek seferlik rastgele sayısı değişir
13 - 20 Mesaj doğrulama kodu değişir

Tablo 4.3.4.3: Bırakılan bağlantı hedefini ayarlama