Ses Geçişi
Kullanıcılar müziklerini dinlemek için birden çok ses kaynağı cihazını gittikçe daha fazla kullandıklarından kulaklık yönetimi için daha basit bir çözüme yönelik talep artmaktadır. elde edebiliyorlar. Ses Geçişi, mikrofonlu kulaklık bağlantılarının geçişini sorunsuz bir şekilde yapar kullanıcı etkinliğine (ör. film başlatma) dayalı olarak cihazlar arasında geçiş için etkinlikler (ör. gelen arama)
Kullanıcı Deneyimi İlkeleri
- Bağlantı geçişi hızlı olmalı ve kullanıcı işlemine dayalı olmalıdır.
- Bağlantı geçişi kullanıcılar açısından şeffaf olmalı ve kullanıcıların istenmeyen geçişleri kontrol edebilir/geri döndürebilirsiniz.
- Geçiş işleminde kullanıcı gizliliğine saygı gösterilmelidir.
Roller
Audio Switch Seeker: Arayan, bir ses kaynağı cihazıdır (örneğin, telefon veya tablet kullanıyorsanız) uygun olduğunda bağlanabileceğiniz yakındaki bir mikrofonlu kulaklık arayın.
Ses Geçişi Sağlayıcısı: Sağlayıcı, normalde kendi tanıtımını yapan uygunluk ve bağlantı durumlarını görebilirsiniz.
Gereksinimlere Genel Bakış
Sağlayıcıların akıllı geçişi gerçekleştirmek için aşağıdaki koşullara uyması gerekir:
Ad | Açıklama | Şartlar | Zorunlu mu? |
---|---|---|---|
Sayfa Tarama | Mevcut bir bağlantı olduğunda başka bir arayandan gelen yeni bağlantı isteğini kabul etmek için. Tek noktalı sağlayıcılar için:
|
Performansı artırmak için düşük gecikmeli sayfa tarama modu (tarama aralığı 640 ms'den fazla olmamalıdır) gerekir. Pil ömrü ve geçiş performansı arasında bir denge kurmak için Sağlayıcı, çoğu durumda varsayılan sayfa tarama moduna sahip olabilir (düşük güç modu, tarama aralığı 1280 ms'den fazla olmamalı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 çalmaya devam etmek için. Geri geçiş işlemi, Mesaj Akışı API'leri aracılığıyla iletişim yoluyla tetiklenir. Mümkünse oynatmanın devam etmesi için duraklatılan ses etkinliği kayda dahil edilmelidir. |
Bağlantı geçmişini koruyun ve Mesaj Akışı API'lerini uygulayın. | Zorunlu |
Bağlantı durumu | Arayışların bağlantıyı değiştirerek bağlantı yapması için.Bağlantı durumu şunları içerir:
|
BDE reklamına ve mesaj akışına bağlantı durumunu ekleyin. | Zorunlu |
Çalışma zamanı özellikleri değişikliği | Ses geçişi, Sağlayıcı'daki donanım yazılımının yükseltilmesiyle etkinleştirilebilir. Bu nedenle, özelliklerin çalışma zamanında arayan ve 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, mevcut etkin ses akışı ile yeni ses akışı istekleri arasındaki önceliği kullanıcı tercih ayarlarından yapılandırmasına izin verin. Örneğin, ses geçişi arayan, kullanıcıların medya akışı ile arama arasında otomatik geçişi etkinleştirmesine/devre dışı bırakmasına olanak tanımak için kullanıcı arayüzü ayarları sağlayabilir. Ses Geçişi Yapıcı, geçiş kuralını Mesaj Akışı aracılığıyla belirler ve alır. |
Yalnızca çok noktalı sağlayıcılar için. Bağlı cihazlar arasında geçiş kurallarının yapılandırılabilir olması için Message Stream API'lerini uygulayın. |
İsteğe bağlı |
Etkin cihaz değiştirme | Ses geçişinin arayan, bağlı cihazlar arasında ses geçişini simüle etmesine izin verin. Ses anahtarının arayan tarafında kullanıcıların bağlı cihazlar arasında kolayca geçiş yapmasını sağlayan bir kullanıcı arayüzü bulunabilir. |
Yalnızca birden çok noktalı sağlayıcılar için. Bağlı cihazlar arasındaki etkin ses kaynağını belirlemek amacıyla ses geçişi arayanlar için Message Stream API'lerini uygulayın. |
Zorunlu |
Birden çok noktalı geçiş bildirimi | Ses Geçişi Arayan'ı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ı, reklama mevcut bağlantı durumunu ekleyecektir. aşağıdaki Hızlı Eşleme Hesabı verilerine dayalı olarak oluşturulur: Reklamcılık: Bulunabilir olmadığında.
Tablo 4.2'nin sürümünün 0x1 olduğunu unutmayın.
Bağlantı Durumu Alanı
Sekiz | Veri türü | Açıklama | Değer | Zorunlu mu? |
---|---|---|---|---|
0 | uint8 |
Alan uzunluğu ve türü 0bLLTTTT
|
0bLL0101
|
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ü barındırıyor. Arayan, sağlayıcıya gönderir. |
Değer, mevcut etkin akışın Arayan'dan Sağlayıcı'ya mesaj akışı aracılığıyla gönderilir. Geçerli etkin yayın Arayan'dan değilse 0 değerini alır. | Zorunlu |
3 - var | Bağlı cihazlar bit eşlemi O anda sağlayıcıya bağlı olan cihazları gösteren bit eşlem. Tüm bağlı cihazlar, bir matbaada bir matbaa olacak şekilde sıralanır. Süre, 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 olarak, aksi halde 0 olarak ayarlanır. Ayrıntılar için Bağlı Cihaz Bit Eşlemi bölümüne bakın. |
İsteğe bağlı |
Tablo 4.1: Bağlantı durumu alanındaki ham veriler
Bağlantı İşaretleri
0bH = kafa algılama
- 1, şimdi tepede
- 0, aksi takdirde, kafanızda yok veya OHD sensör yok
0bA = bağlantı kullanılabilirliği
- 1, kullanılabilir bir bağlantı var
- 0, aksi durumda
0bF = odak modu
- 1, şu anda odaklanmış modda, medya için bağlantı geçişine izin verilmiyor kullanımı (ör. A2DP'den A2DP'ye geçiş yapılmaz)
- 0, aksi durumda
0bR = otomatik olarak yeniden bağlandı
- 1, mevcut bağlantı Sağlayıcı tarafından otomatik olarak yeniden bağlanıyorsa kullanıcılar tarafından bağlanmamışsa (çok noktalı için, mevcut öğelerden biri bağlantıları otomatik olarak yeniden bağlandıysa 1 olarak ayarlanmalıdır)
- 0, aksi durumda
Bağlantı durumu
- 0x0: bağlantı yok
- 0x1: sayfalama
- 0x2: bağlı ancak veri aktarımı yok
- 0x3: Ses harici veri aktarımı (yalnızca değiştirilebilirse, 0xF kullanılarak değiştirilebilir)
- 0x4: A2DP akışı, AVRCP geçerli değil
- 0x5: A2DP akışı ve AVRCP oynatma
- 0x6: HFP (telefon/sesli arama) akışı, bant içi ve bant dışı zil sesleri dahil
- 0x7: LE Audio - kontrolsüz medya akışı
- 0x8: LE Audio - kontrollü medya akışı
- 0x9: LE Audio - arama akışı
- 0xA: LE Audio - yayın
- 0xF: Bağlantı anahtarını geçici olarak devre dışı bırak (ör. donanım yazılımı güncellemesi)
LE Audio Bağlam Türü ve Bağlantı durumu
LE Ses Sağlayıcısının belirtilen tüm bağlam türlerini işlemesini önerin Atanan Numaralar 6.12.3'te (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 ayarlayın.
- Konuşma: 0x9
- Medya: 0x8
- Oyun: 0x7
- Talimat: 0x7
- Sesli Yardımcılar: 0x9
- Canlı: 0x9
- Ses Efektleri: 0x2
- Bildirimler: 0x2
- Zil sesi: 0x9
- Uyarılar: 0x7
- Acil Durum Alarmı: 0x9
Karma LE Audio bağlam türü senaryosunda (ör. sırasında sırasında, Sağlayıcı, bağlantı durumunu en yüksek önceliğe sahip olan (ör. Yukarıdaki senaryo için 0x8 (medya) yerine 0x9 (çağrı).
Bağlı Cihaz Bit Eşlemi
İstenmeyen bağlantı geçişlerini önlemek için Arayanın, hangi iletişim taktiğinin mikrofonlu kulaklığın şu anda bağlı olduğu cihazlar. Örneğin, mikrofonlu kulaklık bağlı olduğunda, kullanıcının e-posta uygulaması veya diğer aile üyelerinden biri YouTube'u başlattığında, tablete yerleştiriyoruz.
Bu bit eşlemin anonim olduğunu unutmayın. Arayan kişi diğer cihazlar Sağlayıcı'ya bağlanır. Örneğin, 5 bağlı cihaz düşünün:
- 0: dizüstü bilgisayar (0bx0000000)
- 1: telefonA (0b0x000000)
- 2: telefonB (0b00x00000)
- 3: tablet (0b000x0000)
- 4: TV (0b0000x000)
Mevcut bağlı cihazlar dizüstü bilgisayar ve tabletse bit eşlem 0b10010000 olur. Kaçınılmazsa sipariş değişikliği kabul edilebilir. ör. Kullanıcılar kulaklığı fabrika ayarlarına sıfırladığında veya bağlı cihazlar sayıldığında üst sınıra ulaştığında
Rastgele Çözümlenebilir Reklam
Kullanıcı gizliliğinin izlenmemesi ve gizliliğinin korunması için, Sağlayıcı, YouTube'a geçiş yaparak AES-CTR kullanarak alanı hesap anahtarıyla şifreleyin:
encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)
burada
Anahtar, kullanılan hesap anahtarından türetilir. sonraki bölümde tanımlanmıştır.
Anahtar, SHA-256 kullanılarak HKDF işlevi (IETF RFC 5869) tarafından oluşturulur karma işlevi.
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
Sağlayıcı buradaki orijinal hesap anahtarını (yani ilk baytı) kullanacaktır anahtarının boyutu 0x04'tür ve kullanım kalıbına dahil değildir.
IV (başlangıç vektörü), sıfır ile Hesap Anahtar Verileri'nin 2 baytlık takviyesidir dolgu, ör. IV concat(salt, 14 bayt ZERO)'dur.
Bağlantı durumu ham verileri tablo 4.1'de tanımlanmıştır. bağlantı durumu değiştiğinde, takviye değer ve RPA, aynı reklam zaman aralığı var.
Bu, şifrelenmiş bağlantı durumu alanının Hesap Anahtar Verileri dönüşümlü yayınlanır.
BDE reklamı aşağıdaki gibi yapılandırılacaktır:
Sekiz | Veri türü | Açıklama | Değer | Zorunlu mu? |
---|---|---|---|---|
0 | uint8 |
Sürüm ve işaretler | 0x10 | Zorunlu |
1 - t | Hesap Önemli Verileri | değişiklik gösterir | Zorunlu | |
t+1 - sn | Pil Verileri | değişiklik gösterir | İsteğe bağlı | |
s+1 - var | Rastgele Çözümlenebilir Veriler | değişiklik gösterir | Hesap Anahtar Listesi boş değilse zorunludur, aksi takdirde Hariç tutulur. |
Tablo 4.2: Rastgele Çözümlenebilir Veriler ile BDE reklamı
Rastgele Çözümlenebilir Veriler şunları içerir:
Sekiz | Veri türü | Açıklama | Değer | Zorunlu mu? |
---|---|---|---|---|
0 | uint8 |
Alan uzunluğu ve türü 0bLLTTTT
|
0bLL0110
|
Zorunlu |
1 - var | Şifrelenmiş veriler | değişiklik gösterir | Zorunlu |
Tablo 4.2.1: Rastgele Çözümlenebilir Veriler
Örneğin, Rastgele Çözümlenebilir Veriler şifrelenmiş bir bağlantı içeriyorsa şifresi çözülmüş sonuç ise bağlantı durumu alanına dokunun.
Yasal olarak değişiklik yapılmasını önlemek için yukarıdaki Hesap Anahtarı Verileri'nde küçük değişiklikler yapılmalıdır RACI matrisine eklenir. Normalde hesap anahtarı filtresini uyguladığınızda, hesap birleştirildiğinde bir V değeri anahtar filtresine eklemektir. Bunun yerine, Rastgele Çözümlenebilir Veriler de reklamı yapılanlar için V değeri şu şekilde oluşturulmalıdır:
V = concat(account_key, salt, random_resolvable_data)
Hem Pil Verilerinin hem de Rastgele Çözümlenebilir Verilerin reklamı yapılıyorsa V şu şekilde yapılandırılmalıdır:
V = concat(account_key, salt, battery_data, random_resolvable_data)
Kullanılan Hesap Anahtarı
Bağlantı geçişi hesaba dayalı olduğundan Sağlayıcı, BDE reklamındaki geçerli bağlantının hesap bilgilerini içerir. Öğe ses anahtarı arayan bir cihaz. Sağlayıcı, ve bu arayan ile ilişkili hesap anahtarını alıp aşağıdaki işlemler için bu hesap anahtarını kullanın: şifrelemeyi deneyin. Bağlı ses kaynağı Ses değilse Sağlayıcı'nın en son kullanılan hesap anahtarını kullanması gerekir.
Sağlayıcı, hesap anahtarı filtresini hesaplamadan önce ilk değerini aşağıdaki kullanım kalıplarından birini dahil etmek için kullanabilirsiniz:
- 0b00000100
Bu hesap anahtarı kullanılmıyor.
. Bu varsayılan değerdir (Hesap anahtarı bölümünü inceleyin). - 0b00000101
Bu hesap anahtarı, en son kullanılan hesap anahtarıdır.
. Bağlantı durumu alanı bu hesap anahtarı tarafından şifrelenir. Hayır, bağlantı durumunun ne olduğunu değil, hesabın hiçbir cihaz bağlı veya bağlı cihaz bir Ses Geçişi Arayan değil olabilir. - 0b00000110
Bu hesap anahtarı, kullanımdaki hesap anahtarıdır.
. Bağlantı durumu alanı bu hesap anahtarı tarafından şifrelenir ve bağlı cihaz bu hesap anahtarıyla ilişkilendirilmiş.
Ses geçiş yükü için şema
Aşağıdaki şekilde, ses geçiş yükü için şema gösterilmektedir.
![](https://developers-dot-devsite-v2-prod.appspot.com/nearby/fast-pair/images/SASS-ble-payload-schematic.png?authuser=7&hl=tr)
Mesajlar
Bağlandığında, arayan ve sağlayıcı, sesi senkronize etmek için mesaj akışını kullanabilir. değiştirme özelliğini, bağlantı anahtarını tetiklemek, ayarlamak ve geçişi almak bağlantı durumunu bildirme gibi işlemler yapabilir. Bir mesaj grubu oluşturuyoruz ve Ses Geçişi'ne özel mesaj kodları aşağıda verilmiştir.
Mesaj Grubu Adı | Değer |
---|---|
Ses kaynağı değiştirme | 0x07 |
Her mesaj koduna ilişkin ek ayrıntılar aşağıdaki bölümlerde açıklanmıştır.
Mesaj Kodu Adı | Değer | Yalnızca birden çok noktalı | Gönderen | Katılımcı | Şifrele | MAC | Onayla |
---|---|---|---|---|---|---|---|
Ses geçişi özelliğini kullanma | 0x10 | N | Her ikisi de | Her ikisi de, 0x11 koduyla | N | H | N |
Ses geçişinin bildirme özelliği | 0x11 | N | Her ikisi de | Her ikisi de | N | E | Y |
Çok noktalı durumu ayarlama | 0x12 | Y | Arayan | Sağlayıcı | N | E | Y |
Geçiş tercihini ayarlama | 0x20 | Y | Arayan | Sağlayıcı | N | E | Y |
Geçiş tercihini alma | 0x21 | Y | Arayan | Sağlayıcı, 0x22 koduyla | N | H | N |
Geçiş tercihini bildir | 0x22 | Y | Sağlayıcı | Arayan | N | H | N |
Etkin ses kaynağını(bağlı cihaza) değiştir | 0x30 | Y | Arayan | Sağlayıcı | N | E | Y |
Geri dön | 0x31 | N | Arayan | Sağlayıcı | N | E | Y |
Çok noktalı anahtar etkinliğini bildirme | 0x32 | Y | Sağlayıcı | Arayan | N | H | N |
Bağlantı durumunu alma | 0x33 | Y | Arayan | Sağlayıcı, 0x34 koduyla | N | H | N |
Bağlantı durumunu bildir | 0x34 | Y | Sağlayıcı | Arayan | Y | H | N |
Ses geçişi tarafından başlatılan bağlantıyı bildir | 0x40 | N | Arayan | Sağlayıcı | N | E | Y |
Kullanımda olan hesap anahtarını belirtin | 0x41 | N | Arayan | Sağlayıcı | N | E | Y |
Özel verileri gönderme | 0x42 | N | Arayan | Sağlayıcı | N | E | Y |
Drop bağlantı hedefi ayarlama | 0x43 | Y | Arayan | Sağlayıcı | N | E | Y |
Tablo 4.3: Ses değiştirme mesajları
Ses geçiş mesajlarının MAC adresi
Mesajla kimlik doğrulama için tüm Ses Geçişi mesajlarında Arayan'dan Sağlayıcı'ya gönderilen veriler için bir İleti Kimlik Doğrulama Kodu gerekir. Zaman MAC ile bir mesaj alındığında, arayanın işlemi yapabilmesi için bu mesajın onaylanması gerekir. , Sağlayıcı'nın iletiye tepki verip vermediğini öğrenir.
İleti kimlik doğrulaması başarılı olursa Sağlayıcı, mesaj:
Sekiz | Veri Türü | Açıklama | Değer |
---|---|---|---|
0 | uint8 | Onay | 0xFF |
1 | uint8 | Onayla | 0x01 |
2 - 3 | uint16 | Ek veri uzunluğu | değişiklik gösterir |
4 | uint8 | Ses kaynağı değiştirme | 0x07 |
5 | uint8 | Ses değiştirme mesaj kodu | değişiklik gösterir |
6 - sn. | Ek veriler | değişiklik gösterir |
Başarısız olursa Sağlayıcı, ileti için NAK'yı gönderecektir:
Sekiz | 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şiklik gösterir |
5 | uint8 | Ses kaynağı değiştirme | 0x07 |
6 | uint8 | Ses değiştirme mesaj kodu | değişiklik gösterir |
Gönderen ise MAC gerekli değildir.
Ses değiştirme özelliğini kullanın
Hem Ses Geçişi Sağlayıcısı hem de arayan, bağlı Hızlı Eşleme'nin Arayan/Sağlayıcı, aşağıdaki mesajı kullanarak Ses Geçişi'ni destekleyip desteklemediğini gösterir:
Sekiz | Veri Türü | Açıklama | Değer |
---|---|---|---|
0 | uint8 | Ses kaynağı değiştirme | 0x07 |
1 | uint8 | Ses değiştirme özelliğini kullanın | 0x10 |
2 - 3 | uint16 | Ek veri uzunluğu | 0 |
Tablo 4.3.1.0: Ses değiştirme özelliğini kullanma
Ses geçişinin bildirme özelliği
Ses değiştirme özelliği mesajı alındıktan sonra kodunu görürseniz Ses Geçişi Arayan/Sağlayıcı aşağıdakilerden biriyle yanıt verir: işaretler:
Sekiz | Veri Türü | Açıklama | Değer |
---|---|---|---|
0 | uint8 | Ses kaynağı değiştirme | 0x07 |
1 | uint8 | Ses geçişinin bildirme özelliği | 0x11 |
2 - 3 | uint16 | Ek veri uzunluğu | Arayan tarafından gönderilirse 20 Sağlayıcı tarafından gönderilirse 4 |
4 - 5 | uint16 | Ses değiştirme sürüm kodu | Sıfır olmayan bir değer, Ses Geçişi'ni desteklediği anlamına gelir. Mevcut sürümün (güvenlik geliştirmesiyle) kodu 0x0102'dir. 0x0000 veya 1 saniyede yanıt vermeme, ses geçişinin bu cihazda desteklenmediği anlamına gelir |
6 - 7 | flags | Sağlayıcının ses değiştirme özelliği işaretleri Bu ileti arayan tarafından gönderilirse bu iki bayt yoksayılmalıdır. |
değişiklik gösterir Ses değiştirme özelliğiyle ilgili işaretler bölümüne bakın |
8 - 15 | Mesaj tek seferlik rastgele sayısı Yalnızca arama yapan kullanıcı tarafından gönderildiğinde gereklidir |
değişiklik gösterir | |
16 - 23 | Mesaj kimlik doğrulama kodu Yalnızca Arayan tarafından gönderildiğinde gereklidir |
değişiklik gösterir |
Tablo 4.3.1.1: Ses geçişinin bildirme özelliği
Ses değiştirme özelliği işaretleri
Bit 0 (sekizli 6, MSB): Ses geçiş durumu
- Ses geçişi durumu açıksa 1
- 0, aksi durumda
Bit 1: Çok noktalı yapılandırılabilirlik
- Cihaz birden çok noktalı doğrulamayı destekliyorsa ve açık ile kapalı
- 0, aksi takdirde (çok noktalı veya çoklu noktalı her zaman açık değildir)
Bit 2: Çok noktalı geçerli durum
- Birden çok noktalı açıksa 1
- 0, aksi durumda
Bit 3: Kafanızda algılama
- 1, şimdi kapalı)
- 0, aksi durumda
Bit 4: Kafada algılama mevcut durumu
- Kafada algılama açıksa 1
- 0, aksi takdirde (başta algılamayı veya üzerinizde algılamayı desteklemez) devre dışı)
Diğer tüm bitler ayrılmıştır (varsayılan olarak 0).
Çok noktalı durumu ayarlama
"Ses Geçişi Yapan" kullanıcıları için ayarı, kullanıcıların açıp kapatmasını sağlayabiliriz. çok noktalı işlevsellik. Arayan, birden çok noktalı durumu Aşağıdaki mesajı kullanan sağlayıcı:
Sekiz | 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: birden çok noktalı kapat 1: birden çok noktalı aç |
5 - 12 | Mesaj tek seferlik rastgele sayısı | değişiklik gösterir | |
13 - 20 | Mesaj kimlik doğrulama kodu | değişiklik gösterir |
Tablo 4.3.1.2: Çok noktalı durumu ayarlama
Geçiş tercihini ayarlayın
Ses geçişi arayanlar, birden çok noktalı ve setin geçiş tercihini değiştirebilir aşağıdaki mesajı kullanarak sağlayıcıya gönderebilirsiniz:
Sekiz | Veri Türü | Açıklama | Değer |
---|---|---|---|
0 | uint8 | Ses kaynağı değiştirme | 0x07 |
1 | uint8 | Geçiş tercihini ayarlayın | 0x20 |
2 - 3 | uint16 | Ek veri uzunluğu | 18 |
4 | flags | Geçiş tercihi | değişiklik gösterir Çok noktalı geçiş tercihi işaretini inceleyin |
5 | Gelişmiş geçiş ayarları Bu bayt ayrılmıştır, varsayılan değer 0'dır |
değişiklik gösterir | |
6 - 13 | Mesaj tek seferlik rastgele sayısı | değişiklik gösterir | |
14 - 21 | Mesaj kimlik doğrulama kodu | değişiklik gösterir |
Tablo 4.3.2.0: Geçiş tercihini ayarlama
Çok noktalı geçiş tercihi işareti
- Bit 0 (MSB): A2DP - A2DP karşılaştırması (varsayılan 0)
- Bit 1: HFP ve HFP (varsayılan 0)
- Bit 2: A2DP - HFP karşılaştırması (varsayılan 0)
- Bit 3: HFP ve A2DP karşılaştırması (varsayılan 1)
- Bit 4 - 7: ayrılmış
- Yukarıda "yeni profil isteği" olarak temsil edilir - "geçerli etkin profil"
- Geçiş yapılmaması için 0
- Geçiş için 1
Geçiş tercihini alın
Ses geçişi arayanlar, çoklu noktanın geçiş tercihini şuradan sorgulayabilir: Aşağıdaki mesajı kullanan sağlayıcı:
Sekiz | 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 bildir
Sekiz | Veri Türü | Açıklama | Değer |
---|---|---|---|
0 | uint8 | Ses kaynağı değiştirme | 0x07 |
1 | uint8 | Geçiş tercihini bildir | 0x22 |
2 - 3 | uint16 | Ek veri uzunluğu | 2 |
4 | flags | Tercih işaretlerini değiştirme | değişiklik gösterir Çok noktalı geçiş tercihi işaretini inceleyin |
5 | Gelişmiş geçiş ayarları Bu bayt ayrılmıştır, varsayılan değer 0 olmalıdır |
değişiklik gösterir |
Tablo 4.3.2.2: Geçiş tercihini bildirme
Etkin ses kaynağını (bağlı cihaza) değiştir
Ses geçişi arayanlar, birden çok noktalı sağlayıcıdan etkin aşağıdaki mesajı kullanarak bağlı cihazlar arasındaki ses kaynağı:
Sekiz | Veri Türü | Açıklama | Değer |
---|---|---|---|
0 | uint8 | Ses kaynağı değiştirme | 0x07 |
1 | uint8 | Etkin ses kaynağını (bağlı cihaza) değiştir | 0x30 |
2 - 3 | uint16 | Ek veri uzunluğu | 17 |
4 | flags | Etkin ses kaynağı etkinlik bayraklarını değiştirme | değişiklik gösterir Etkin ses kaynağı etkinliğini değiştirme konusuna bakın |
5 - 12 | Mesaj tek seferlik rastgele sayısı | değişiklik gösterir | |
13 - 20 | Mesaj kimlik doğrulama kodu | değişiklik gösterir |
Tablo 4.3.3.0: Etkin ses kaynağını değiştirme (bağlı cihaza)
Etkin ses kaynağı etkinliğini değiştirme
- Bit 0 (MSB): Bu cihaza 1 anahtar, ikinci bağlı cihaza 0 geçiş
- Bit 1: 1 geçişten sonra cihazda anahtarda oynatmaya devam eder, aksi takdirde 0 değerini alır. Oynamaya devam ederseniz Sağlayıcı, Arayan'a PLAY bildirimi gönderir AVRCP profili aracılığıyla. Önceki durum (geçişten önce) değilse PLAY, Sağlayıcı bu işareti görmezden gelmelidir.
- Bit 2: Uzaktayken cihazda SCO'yu reddeder, aksi takdirde 0 değerini alır
- Bit 3: Uzaktaki anahtarda 1 Bluetooth bağlantısını keser, aksi takdirde 0 değerini alır.
- Bit 4 - 7: ayrılmış.
Ses geçişi arayanlar, durumlarını her zaman doğru bilmeyebilir. Bu nedenle, "bu cihaza geçin" isteği göndermesi için arayan, zaten etkin cihazda. 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 grup üyesi olan bir LE Ses Sağlayıcısı için Arayan'dan tüm üyelerin bağlantısını keser, aksi takdirde Arayan kişi, sağlayıcıya yeniden bağlanır.
Geri dön (bağlantısı kesilmiş cihaza)
Bağlantı geçişi istenmeyen bir işlemse kullanıcılar geçişi geri alabilir ve belirli senaryolarda, en aza indirmek için ses bağlantısını olabilir. Arayan, eski sürüme geri dönmek için aşağıdaki mesajı kullanır:
Sekiz | Veri Türü | Açıklama | Değer |
---|---|---|---|
0 | uint8 | Ses kaynağı değiştirme | 0x07 |
1 | uint8 | Geri dön (bağlantısı kesilmiş cihaza) | 0x31 |
2 - 3 | uint16 | Ek veri uzunluğu | 17 |
4 | uint8 | Eski sürüme geç etkinliği | değişir 0x01: geri dön 0x02: geri dönüp oynatmaya devam edin |
5 - 12 | Mesaj tek seferlik rastgele sayısı | değişiklik gösterir | |
13 - 20 | Mesaj kimlik doğrulama kodu | değişiklik gösterir |
Tablo 4.3.3.1: Geri dönme (bağlantısı kesilmiş cihaza)
Çok noktalı Sağlayıcılar için bir bağlantı değiştirmek amacıyla Sağlayıcı, bir ses kaynağı cihazıyla bağlantı kurar ve diğer cihazdaki ses oturumunu duraklatır ses kaynağı. Örneğin, çok noktalı mikrofonlu kulaklığın bir tablet ve üçüncü desteklenen üçüncü bir Ses Geçiş cihazı. Kullanıcı şurada video izliyor: telefonunda gelen bir çağrı olduğunda tablete geri bildirim gönderir. Telefon Mikrofonlu kulaklıkta, 3. cihazın bağlantısını kesmesi gereken bir bağlantı anahtarı için bağlantısını kestiğinizde, medyayı duraklatırken telefondan zil sesi almak için tablette oturum açın. Kullanıcı reddederse telefon, mikrofonlu kulaklıktan "geri dönüp oynatmaya devam etmesini" isteyebilir. Bu istek alındığında, mikrofonlu kulaklığın üçüncü cihaza yeniden bağlanması gerekir. duraklatılmış videoyu tablette oynatmaya devam edin.
Çok noktalı geçiş etkinliğini bildir
Kullanıcıların birden çok noktaya geçiş yaptıklarından haberdar olmalarını sağlamak için Arayan, kullanıcılara bildirim gösterebilir. Sağlayıcı, bağlı olduğu için Geçiş etkinliğiyle ilgili ses geçişi arayanlar.
Sekiz | Veri Türü | Açıklama | Değer |
---|---|---|---|
0 | uint8 | Ses kaynağı değiştirme | 0x07 |
1 | uint8 | Birden çok noktalı anahtar etkinliğini bildir Sağlayıcı, "Ses Geçişi Arayan"dan Sessiz Arayıcıya, Sessiz Geçiş Arayan'dan "Sese Geçirici"ye ve Ses Geçişi Arayan'dan Sese Geçiş Yapan'a geçiş de dahil olmak üzere her geçişte bunu göndermelidir |
0x32 |
2 - 3 | uint16 | Ek veri uzunluğu | değişiklik gösterir |
4 | uint8 | Değiştirme nedeni Bu değer, Bağlantı durumuna göre belirlenmelidir. LE Audio kullanım alanlarında LE Audio Context Type ve Connection status (LE Audio Bağlam Türü ve Bağlantı durumu) arasındaki eşlemeye bakmak faydalı olabilir. Örneğin, Sesli Asistan'a karşılık gelen bağlantı durumu 0x9'dur(LE ses - arama akışı). Bu nedenle, Sesli Asistanlar tarafından başlatılan bir geçişin geçiş nedeni 0x02 olmalıdır. |
değişken 0x00: Belirtilmemiş 0x01: Medya (ör. A2DP akışı, LEA medya akışı) 0x02: Arama (ör. HFP akışı, LEA arama akışı) |
5 | uint8 | Hedef cihaz | değişiklik gösterir 0x01: bu cihaz 0x02: başka bir bağlı cihaz |
6 - n | utf8 | Hedef cihaz adı Hedef cihaz "Ses Geçişi Yapan" ise arayanın gönderdiği adı kullanır, uygun değilse BT adını kullanır ve adresinin son 2 baytını kullanır. |
değişiklik gösterir |
Tablo 4.3.3.2: Birden çok noktalı geçiş etkinliğini bildirme
Bağlantı durumunu alma
Arayan, geçerli bağlantı durumunu Sağlayıcıdan öğrenebilir:
Sekiz | 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 mesaj koduyla 0x34, bağlantı durumunu bildir.
Bağlantı durumunu bildir
BLE reklam yükünde tanımlandığı gibi, çok noktalı Sağlayıcılar, sağlayıcı, bağlayıcı herhangi bir reklam paketinin kullanıma sunulmasından sonra, ve değişiklikle ilgili aynı hesap anahtarını kullanıyorlarsa. Sağlayıcı bağlıysa anahtar Arayan etkin olduğunda, Sağlayıcı, bağlı Ses cihazını da bilgilendirmelidir. Arayıcı'ya bağlantı durumu hakkında bilgi verin (arayan kişinin hesap anahtarını kullanarak).
Sekiz | Veri Türü | Açıklama | Değer |
---|---|---|---|
0 | uint8 | Ses kaynağı değiştirme | 0x07 |
1 | uint8 | Bağlantı durumunu bildir | 0x34 |
2 - 3 | uint16 | Ek veri uzunluğu | değişiklik gösterir |
4 | uint8 | Etkin cihaz bayrağı | değişir 0x00: Bu arayan pasiftir ve etkin cihaz aynı hesap anahtarını ( 0x01) kullanıyor: Bu arayan, etkin cihaz 0x02: Bu arayan pasif, etkin cihaz ise Ses Geçişi Arayan değil. |
5 - n | Şifrelenmiş bağlantı durumu | değişiklik gösterir | |
n+1 - n+8 | Mesaj tek seferlik rastgele sayısı | değişiklik gösterir |
Tablo 4.3.3.4: Bağlantı durumunu bildirme
Şifrelenmiş bağlantı durum mesajı
encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)
Bu örnekte:
Anahtar, kullanımdaki hesap anahtarından türetilir. Rastgele çözümlenebilir reklamlar.
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
IV adı concat(Session_nonce, Message_nonce)
link_status_raw_data = concat(linked_state; custom_data, bağlı_cihazlar) belirtir. reklamcılık yükü Alan uzunluğu ve türü için baytın dahil edilmemesi gerektiğini unutmayın. burada mesaj kodu ve veri uzunluğu bulunuyor.
Ses geçişi tarafından başlatılan bağlantıyı bildir
Ses Geçişi Sağlayıcılarının, bağlantı geçişinin tetiklenip tetiklenmediğini bilmesi gerekebilir ses geçişi tarafından farklı tepkiler vermek için (ör. ses için ses sinyallerini devre dışı bırak Etkinlikler arasında geçiş yapın. Arayan, Sağlayıcı'ya bu bağlantı, ses geçişi tarafından başlatılan bir bağlantıydı.
Sekiz | 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ı bildir | 0x40 |
2 - 3 | uint16 | Ek veri uzunluğu | 17 |
4 | uint8 | Ses geçişi başlatıldı bağlantı göstergesi | değişiklik gösterir 0: Bu bağlantı, ses geçişi tarafından tetiklenmez 1: Bu, ses geçişi tarafından başlatılan bir bağlantıdır. |
5 - 12 | Mesaj tek seferlik rastgele sayısı | değişiklik gösterir | |
13 - 20 | Mesaj kimlik doğrulama kodu | değişiklik gösterir |
Tablo 4.3.4.0: Ses değiştirme tarafından başlatılan bağlantıyı bildirme
Kullanımdaki hesap anahtarını belirtin
Arayan'da birden fazla hesap anahtarı (ör. birden çok kullanıcı) aradığı takdirde, aşağıdaki mesajı kullanarak hangi hesabın anahtar kullanımda.
Sekiz | Veri Türü | Açıklama | Değer |
---|---|---|---|
0 | uint8 | Ses kaynağı değiştirme | 0x07 |
1 | uint8 | Kullanımdaki hesap anahtarını belirtin | 0x41 |
2 - 3 | uint16 | Ek veri uzunluğu | 22 |
4 - 9 | utf8 | Kullanılan dize | UTF8 ("kullanımda") |
10 - 17 | Mesaj tek seferlik rastgele sayısı | değişiklik gösterir | |
18 - 25 | Mesaj kimlik doğrulama kodu | değişiklik gösterir |
Tablo 4.3.4.1: Kullanımdaki hesap anahtarını belirtme
Bu mesajı aldıktan sonra, Sağlayıcı hangi hesap anahtarının kullanımda olduğunu öğrenebilir (Mesajın kimlik doğrulama kodunu doğrulayarak).
Özel veri gönder
Etkin durumdaki ses geçişi arayan, bilgileri (ör. ses kullanımı) ve ses akışının özel veri baytı biçiminde aşağıdaki mesajı gönderin:
Sekiz | Veri Türü | Açıklama | Değer |
---|---|---|---|
0 | uint8 | Ses kaynağı değiştirme | 0x07 |
1 | uint8 | Özel veri gönder | 0x42 |
2 - 3 | uint16 | Ek veri uzunluğu | 17 |
4 | uint8 | Özel veriler | değişiklik gösterir |
5 - 12 | Mesaj tek seferlik rastgele sayısı | değişiklik gösterir | |
13 - 20 | Mesaj kimlik doğrulama kodu | değişiklik gösterir |
Tablo 4.3.4.2: Özel verileri gönderme
Sağlayıcı, özel verileri aldıktan sonra reklam paketini günceller eklemeniz gerekir. Birden çok noktalı sağlayıcı için bağlantı durumunun aynı hesap anahtarını kullanarak başka bir bağlı arayanla değişmesi
Lansman bağlantısı hedefi belirleyin
Çok noktalı mikrofonlu kulaklıklarda, bırakılması tercih edilen bağlantı son kullanılanlardan biri, ses geçişi arayanlar sağlayıcıya hangi cihazın şu iletiyi kullanarak bırakın:
Sekiz | Veri Türü | Açıklama | Değer |
---|---|---|---|
0 | uint8 | Ses kaynağı değiştirme | 0x07 |
1 | uint8 | Lansman bağlantısı hedefi belirleyin | 0x43 |
2 - 3 | uint16 | Ek veri uzunluğu | 17 |
4 | uint8 | Bırakılacak bağlı cihazı hedefleyin | değişiklik gösterir 1: bu cihaz |
5 - 12 | Mesaj tek seferlik rastgele sayısı | değişiklik gösterir | |
13 - 20 | Mesaj kimlik doğrulama kodu | değişiklik gösterir |
Tablo 4.3.4.3: Kesintili bağlantı hedefi ayarlama
Referans Uygulama
Referans uygulama için Yakındaki yerleşik SDK kitaplığına bakın