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
- Bağlantı geçişi hızlı ve kullanıcı işlemine bağlı olmalıdır.
- 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.
- 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:
|
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:
|
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:
|
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
|
0bLLLL0101
|
Zorunlu |
1 | uint8 |
Bağlantı durumu 0bHAFRSSSS
|
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
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.
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.
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
|
0bLLLL0110
|
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:
- 0b00000100
Bu hesap anahtarı kullanılmıyor.
Bu varsayılan anahtardır (Hesap anahtarı bölümüne bakın). - 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. - 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ı
Bit 0 (6. bayt, MSB): Ses anahtarı durumu
- Ses geçişi durumu açıksa 1
- Aksi takdirde 0
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)
Bit 2: çok noktalı mevcut durum
- Multipoint açıksa 1
- Aksi takdirde 0
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
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)
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