İşitme cihazı cihazları (HA), Bluetooth Low Energy (BLE) üzerinden bağlantı yönelimli L2CAP kanallarını (CoC) kullanarak Android destekli mobil cihazlarda gelişmiş erişilebilirliğe sahip olabilir. CoC, paket kaybı olsa bile sabit bir ses akışını sürdürmek için birkaç ses paketinden oluşan elastik bir arabellek kullanır. Bu tampon, gecikme pahasına işitme cihazı cihazları için ses kalitesi sağlar.
CoC'nin tasarımı, Bluetooth Çekirdek Spesifikasyonu Sürüm 5'e (BT) atıfta bulunur. Temel özelliklerle uyumlu kalmak için, bu sayfadaki tüm çok baytlı değerler küçük endian olarak okunmalıdır.
terminoloji
- Merkez - Bluetooth üzerinden reklam taraması yapan Android cihazı.
- Periferik - Bluetooth üzerinden reklam paketleri gönderen işitme cihazı.
Ağ topolojisi ve sistem mimarisi
İşitme cihazları için CoC kullanıldığında, ağ topolojisi, Şekil 1'de görüldüğü gibi, tek bir merkezi ve biri sol diğeri sağ olmak üzere iki çevre birimi varsayar. Bluetooth ses sistemi, sol ve sağ çevre birimlerini tek bir ses havuzu olarak görür. Mono uyum veya bağlantı kaybı nedeniyle bir çevre birimi eksikse, merkezi sol ve sağ ses kanalını karıştırır ve sesi kalan çevre birimine iletir. Merkezin her iki çevre birimiyle olan bağlantısı kesilirse, ses alıcısına giden bağlantının kaybolduğunu düşünür. Bu gibi durumlarda, merkezi, sesi başka bir çıkışa yönlendirir.
Şekil 1. İşitme cihazlarını BLE üzerinden CoC kullanan Android mobil cihazlarla eşleştirmek için topoloji
Santral, çevre birimine ses verisi akışı yapmadığında ve bir BLE bağlantısını sürdürebildiğinde, merkezi çevre birimden ayrılmamalıdır. Bağlantının sürdürülmesi, çevre biriminde bulunan GATT sunucusuna veri iletişimine izin verir.
İşitme cihazlarını eşleştirirken ve bağlarken merkezi:
- Eşleştirilmiş daha yeni sol ve sağ çevre birimlerini takip edin.
- Geçerli bir eşleştirme varsa çevre birimlerinin kullanımda olduğunu varsayın. Bağlantı kesildiğinde merkezi, eşleştirilmiş cihaza bağlanmaya veya yeniden bağlanmaya çalışacaktır.
- Bir eşleştirme silinirse çevre birimlerinin artık kullanılmadığını varsayın.
Yukarıdaki durumlarda eşleştirme , Bluetooth eşleştirme sürecini değil, OS'de belirli bir UUID ve sol/sağ belirteçlerle bir işitme cihazı setini kaydetme eylemini ifade eder.
Sistem gereksinimleri
İyi bir kullanıcı deneyimi için CoC'yi doğru bir şekilde uygulamak için, merkezi ve çevresel cihazlardaki Bluetooth sistemleri:
- uyumlu bir BT 4.2 veya daha yüksek denetleyici uygulayın. LE Secure Connections şiddetle tavsiye edilir.
- Ses paket formatı ve zamanlama bölümünde açıklandığı gibi parametrelere sahip merkezi desteğin en az 2 eş zamanlı LE bağlantısına sahip olması.
- Ses paket formatı ve zamanlama bölümünde açıklanan parametrelerle en az 1 LE bağlantısını destekleyen çevresel desteğe sahip olmalıdır.
- LE kredisine dayalı bir akış kontrolüne sahip olmak [BT Cilt 3, Kısım A, Bölüm 10.1]. Cihazlar, CoC üzerinde en az 167 baytlık bir MTU ve MPS boyutunu desteklemeli ve 8 pakete kadar arabelleğe alabilmelidir.
- en az 167 baytlık bir yüke sahip bir LE veri uzunluğu uzantısına [BT Cilt 6, Kısım B, Bölüm 5.1.9] sahip olmalıdır.
- merkezi cihazın HCI LE Bağlantı Güncelleme Komutunu desteklemesini ve sıfır olmayan maximum_CE_Length ve
maximum_CE_Length
parametrelerineminimum_CE_Length
. - Merkezin, iki farklı çevre birimine iki LE CoC bağlantısı için veri çıkışını, Ses paketi biçiminde ve zamanlamada bağlantı aralıkları ve yük boyutları ile sürdürmesini sağlayın.
- çevre biriminin
LL_LENGTH_REQ
veyaLL_LENGTH_RSP
çerçevelerindekiMaxRxOctets
veMaxRxTime
parametrelerini bu spesifikasyonlar için gerekli olan en küçük gerekli değerler olacak şekilde ayarlamasını sağlayın. Bu, merkezin bir çerçeveyi almak için gereken süreyi hesaplarken zaman planlayıcısını optimize etmesine olanak tanır.
BT 5.0 spesifikasyonunda belirtildiği gibi, merkezi ve çevre biriminin 2MB PHY'yi desteklemesi şiddetle tavsiye edilir. Santral, hem 1M hem de 2M PHY'lerde en az 64 kbit/s ses bağlantılarını destekleyecektir. BLE uzun menzilli PHY kullanılmamalıdır.
CoC, bağlantı katmanı şifrelemesi ve frekans atlama için standart Bluetooth mekanizmalarını kullanır.
ASHA GATT hizmetleri
Bir çevre birim, aşağıda açıklanan İşitme Cihazı için Ses Akışı (ASHA) GATT sunucu hizmetini uygulayacaktır. Çevre birimi, merkezin bir ses alıcısını tanımasına izin vermek için genel keşfedilebilir moddayken bu hizmetin reklamını yapacaktır. Herhangi bir LE ses akışı işlemi şifreleme gerektirecektir. BLE ses akışı aşağıdaki özelliklerden oluşur:
Karakteristik | Özellikler | Açıklama |
---|---|---|
Salt Okunur Özellikler | Okumak | ReadOnlyProperties'e bakın. |
Ses Kontrol Noktası | Cevap Vermeden Yazın ve Yazın | Ses akışı için kontrol noktası. AudioControlPoint'e bakın. |
Ses Durumu Noktası | Oku/Bildir | Ses kontrol noktası için durum raporu alanı. AudioStatusPoint'e bakın |
Ses | Cevap vermeden yaz | -128 ile 0 arasındaki bayt, aktarılan ses sinyaline uygulanacak zayıflama miktarını gösterir, -48 dB ile 0 dB arasında değişir. -128 ayarı tamamen sessiz olarak yorumlanmalıdır, yani sessiz olmayan en düşük ses seviyesi -127'dir ve bu da -47.625 dB zayıflamaya eşdeğerdir. 0 ayarında, raydan raya sinüs tonu akışı, işitme cihazında 100 dBSPL giriş eşdeğerini temsil edecektir. Merkez, nominal tam ölçekte akış yapmalı ve çevre biriminde istenen sunum seviyesini ayarlamak için bu değişkeni kullanmalıdır. |
LE_PSM_OUT | Okumak | Ses kanalını bağlamak için kullanılacak PSM. Dinamik aralıktan seçilecek [BT Cilt 3, Kısım A, Bölüm 4.22] |
Hizmete ve özelliklere atanan UUID'ler:
Hizmet UUID'si : {0xFDF0}
Karakteristik | UUID |
---|---|
Salt Okunur Özellikler | {6333651e-c481-4a3e-9169-7c902aad37bb} |
Ses Kontrol Noktası | {f0d4de7e-4a88-476c-9d9f-1937b0996cc0} |
Ses Durumu | {38663f1a-e711-4cac-b641-326b56404837} |
Ses | {00e4ca9e-ab14-41e4-8823-f9e70c7e91df} |
LE_PSM_OUT | {2d410339-82b6-42aa-b34e-e2e01df8cc1a} |
Çevre birimi, ASHA GATT hizmetine ek olarak, merkezin çevre birimin üretici adlarını ve aygıt adlarını tespit etmesini sağlamak için Cihaz Bilgi Hizmetini de uygulayacaktır.
Salt Okunur Özellikler
ReadOnlyProperties aşağıdaki değerlere sahiptir:
Bayt | Açıklama |
---|---|
0 | Sürüm - 0x01 olmalıdır |
1 | DeviceCapabilities'e bakın. |
2-9 | HiSyncId'e bakın. |
10 | Özellik Haritasına bakın . |
11-12 | Oluşturma Gecikmesi. Bu, çevre biriminin bir ses çerçevesi aldığı andan çevre biriminin çıktıyı oluşturmasına kadar geçen, milisaniye cinsinden süredir. Bu baytlar, bir videonun sesle senkronize olmasını geciktirmek için kullanılabilir. |
13-14 | Gelecekte kullanılmak üzere rezerve edilmiştir. Sıfırlara sıfırlayın. |
15-16 | Desteklenen Codec Kimlikleri . Bu, desteklenen codec kimliklerinin bir bit maskesidir. Bir bit konumundaki 1, desteklenen bir codec bileşenine karşılık gelir. Örneğin, 0x0002, 16 kHz'de G.722'nin desteklendiğini gösterir. Diğer tüm bitler 0 olarak ayarlanacaktır. |
Cihaz Yetenekleri
Biraz | Açıklama |
---|---|
0 | Cihaz tarafı (Sol: 0, Sağ: 1). |
1 | Mono (0) / Binaural (1). Cihazın bağımsız olup olmadığını ve mono veri alıp almadığını veya cihazın bir setin parçası olup olmadığını gösterir. |
2-7 | Rezerve edildi (0'a ayarlı). |
HiSync Kimliği
Bu alan tüm binaural cihazlar için benzersiz olmalıdır ancak sol ve sağ set için aynı olmalıdır.
Bayt | Açıklama |
---|---|
0-1 | üreticinin kimliği. BTSIG tarafından atanan Şirket Tanımlayıcılarıdır . |
2-7 | İşitme cihazı setini tanımlayan benzersiz kimlik. Bu kimlik, hem sol hem de sağ çevre biriminde aynı olarak ayarlanmalıdır. |
Özellik Haritası
Biraz | Açıklama |
---|---|
0 | LE CoC ses çıkışı akışı desteklenir (Evet/Hayır). |
1-7 | Rezerve edildi (0'a ayarlı). |
Codec kimlikleri
Bit ayarlanmışsa, o zaman söz konusu codec bileşeni desteklenir.
Kimlik / Bit numarası | Codec ve örnekleme hızı | gerekli bit hızı | Çerçeve süresi | Merkezi (C) veya çevresel (P) üzerinde zorunlu |
---|---|---|---|---|
0 | Ayrılmış | Ayrılmış | Ayrılmış | Ayrılmış |
1 | G.722 @ 16 kHz | 64 kbit/s | Değişken | C ve P |
2-15 ayrılmıştır. 0 ayrıca ayrılmıştır. |
Ses Kontrol Noktası
Bu kontrol noktası, LE CoC kapalıyken kullanılamaz. Prosedür açıklaması için Ses akışını başlatma ve durdurma bölümüne bakın.
işlem kodu | Argümanlar | GATT alt prosedürü | Açıklama |
---|---|---|---|
1 «Start» |
| Yanıtla birlikte yazın ve AudioStatusPoint özelliği aracılığıyla ek bir durum bildirimi bekleyin. | Çevre birimine codec'i sıfırlaması ve 0 karesini oynatmaya başlaması talimatını verir. Codec alanı, bu oynatma için kullanılacak codec kimliğini gösterir. Örneğin, 16k Hz'de G.722 için codec alanı "1"dir. Ses türü bit alanı, akışta bulunan ses türlerini gösterir:
Çevre birimi, bir «Stop» işlem kodu alınmadan önce bağlantı güncellemelerini talep etmeyecektir. |
2 «Stop» | Hiçbiri | Yanıtla birlikte yazın ve AudioStatusPoint özelliği aracılığıyla ek bir durum bildirimi bekleyin. | Çevre birimine ses işlemeyi durdurması talimatını verir. Sesi yeniden işlemek için bu duraklamanın ardından yeni bir ses kurulum dizisi başlatılmalıdır. |
3 «Status» |
| Yanıt vermeden yaz | Diğer çevre biriminde durum güncellemesi olduğunu bağlı çevre birimine bildirir. Bağlı alan, güncelleme türünü gösterir:
|
Ses Durumu Noktası
Ses kontrol noktası için durum raporu alanı
işlem kodları | Açıklama |
---|---|
0 | Durum Tamam |
-1 | Bilinmeyen komut |
-2 | Geçersiz parametreler |
ASHA GATT Hizmeti Reklamları
Hizmet UUID'si reklam paketinde olmalıdır. Reklamda veya tarama yanıtı çerçevesinde, çevre birimlerinin bir Hizmet Verisi olmalıdır:
Bayt ofseti | İsim | Açıklama |
---|---|---|
0 | AD Uzunluğu | >= 0x09 |
1 | Reklam Tipi | 0x16 (Hizmet Verileri - 16 bit UUID) |
2-3 | Hizmet UUID'si | 0xFDF0 (küçük endian) Not: Bu geçici bir kimliktir. |
4 | Protokol Sürümü | 0x01 |
5 | Kabiliyet |
|
6-9 | Kesilmiş HiSyncID | HiSyncId'nin en önemsiz dört baytı. Bu baytlar, kimliğin en rastgele kısmı olmalıdır. |
Çevre birimleri, işitme cihazının adını gösteren Tam Yerel Ad veri tipine sahip olmalıdır. Bu ad, kullanıcının doğru cihazı seçebilmesi için mobil cihazın kullanıcı arayüzünde kullanılacaktır. Bu bilgi DeviceCapabilities'de sağlandığı için ad sol veya sağ kanalı belirtmeyecektir.
Çevre birimleri, adı ve ASHA hizmeti veri türlerini aynı çerçeve türüne (ADV veya SCAN RESP) koyarsa, iki veri türü ("Tam Yerel Ad" ve "ASHA hizmeti için Hizmet Verisi") aynı çerçevede görünecektir. Bu, mobil cihaz tarayıcısının her iki veriyi de aynı tarama sonucunda almasını sağlar.
İlk eşleştirme sırasında çevre birimlerinin, mobil aygıtın çevre birimleri hızlı bir şekilde keşfetmesine ve onlara bağlanmasına izin verecek kadar hızlı reklam vermesi önemlidir.
Sol ve sağ çevresel aygıtları senkronize etme
Android mobil cihazlarda Bluetooth ile çalışmak için, çevre birimleri senkronize edilmelerini sağlamakla yükümlüdür. Sol ve sağ çevresel aygıtlardaki oynatmanın zaman içinde senkronize edilmesi gerekir. Her iki çevresel aygıt da kaynaktan gelen ses örneklerini aynı anda çalmalıdır.
Çevresel aygıtlar, ses yükünün her paketinin başına eklenen bir sıra numarası kullanarak zamanlarını senkronize edebilir. Merkezi, her çevre biriminde aynı anda çalınması amaçlanan ses paketlerinin aynı sıra numarasına sahip olduğunu garanti eder. Sıra numarası, her ses paketinden sonra birer birer artar. Her sıra numarası 8 bit uzunluğundadır, dolayısıyla sıra numaraları 256 ses paketinden sonra tekrarlanacaktır. Her ses paketi boyutu ve örnekleme hızı her bağlantı için sabit olduğundan, iki çevre birimi ilgili çalma süresini anlayabilir. Ses paketi hakkında daha fazla bilgi için bkz. Ses paketi biçimi ve zamanlaması .
Merkezi, senkronizasyonun gerçekleşmesi gerektiğinde çift kulaklı cihazlara tetikleyiciler sağlayarak yardımcı olur. Bu tetikleyiciler, senkronizasyonu etkileyebilecek bir işlem olduğunda, her bir çevre birimine eşleştirilmiş çevresel cihazının durumu hakkında bilgi verir. Tetikleyiciler şunlardır:
- AudioControlPoint'in
«Start»
komutunun bir parçası olarak, binaural cihazların diğer tarafının mevcut bağlantı durumu verilir. - Bir çevre biriminde bir bağlantı, bağlantı kesilmesi veya bağlantı parametresi güncelleme işlemi olduğunda, AudioControlPoint'in
«Status»
komutu binaural cihazların diğer tarafına gönderilir.
Ses paketi formatı ve zamanlaması
Ses çerçevelerini (örnek blokları) paketler halinde paketlemek, işitme cihazının bağlantı katmanı zamanlama ankrajlarından zamanlamayı çıkarmasını sağlar. Uygulamayı basitleştirmek için:
- Bir ses çerçevesi her zaman zaman olarak bağlantı aralığıyla eşleşmelidir. Örneğin, bağlantı aralığı 20 ms ve örnekleme hızı 16 kHz ise, ses çerçevesi 320 örnek içerecektir.
- Sistemdeki örnekleme hızları, çerçeve süresinden veya bağlantı aralığından bağımsız olarak bir çerçevede her zaman tamsayı sayıda örnek olması için 8kHz'in katları ile sınırlandırılmıştır.
- Bir sıra baytı, ses çerçevelerinin başına eklenir. Dizi baytı, sarma ile sayılacak ve çevre biriminin arabellek uyuşmazlığını veya yetersiz akışını algılamasına izin verecektir.
- Bir ses çerçevesi her zaman tek bir LE paketine sığmalıdır. Ses çerçevesi ayrı bir L2CAP paketi olarak gönderilmelidir. LE LL PDU'nun boyutu şu şekilde olacaktır:
ses yükü boyutu + 1 (sıra sayacı) + 6 (L2CAP başlığı için 4, SDU için 2) - Bir bağlantı olayı, bir ACK'nin yeniden iletimler için bant genişliği ayırması için her zaman 2 ses paketi ve 2 boş paket içerecek kadar büyük olmalıdır. Ses paketinin, merkezin Bluetooth denetleyicisi tarafından parçalanmış olabileceğini unutmayın. Çevre birimi, bağlantı olayı başına 2'den fazla parçalanmış ses paketi alabilmelidir.
Merkeze biraz esneklik kazandırmak için G.722 paket uzunluğu belirtilmemiştir. G.722 paket uzunluğu, merkezin ayarladığı bağlantı aralığına göre değişebilir.
G.722 çıkış sekizli formatı Rec. ITU-T G.722 (09/2012) bölüm 1.4.4 "Çoklayıcı"
Bir çevre biriminin desteklediği tüm kodekler için, çevre birimi aşağıdaki bağlantı parametrelerini desteklemelidir. Bu, merkezin uygulayabileceği kapsamlı olmayan bir yapılandırma listesidir.
kodlayıcı | Bit Hızı | Bağlantı aralığı | CE Uzunluğu (1M/2M PHY) | Ses yükü boyutu |
---|---|---|---|---|
G.722 @ 16 kHz | 64 kbit/s | 20 ms | 5000/3750 bize | 160 bayt |
Bir ses akışını başlatma ve durdurma
Bir ses akışına başlamadan önce, merkez çevre birimleri sorgular ve ortak bir payda codec'i oluşturur. Akış kurulumu daha sonra aşağıdaki sırayla ilerler:
- PSM ve isteğe bağlı olarak RenderDelay okunur. Bu değerler merkez tarafından önbelleğe alınabilir.
- CoC L2CAP kanalı açılır – çevre birimi başlangıçta 8 kredi verecektir.
- Bağlantıyı seçilen codec bileşeni için gereken parametrelere geçirmek için bir bağlantı güncellemesi yayınlanır. Santral bu bağlantı güncellemesini bir önceki adımdaki CoC bağlantısından önce yapabilir.
- Hem merkezi hem de çevresel ana bilgisayar, güncelleme tamamlandı olayını bekler.
- Ses kodlayıcıyı yeniden başlatın ve paket dizisi sayısını 0'a sıfırlayın. AudioControlPoint'te ilgili parametrelerle birlikte bir
«Start»
komutu verilir. Merkez, akıştan önce çevre biriminden önceki«Start»
komutunun başarılı bir durum bildirimi almasını bekler. Bu bekleme, çevre birimine ses yürütme ardışık düzenini hazırlaması için zaman verir. Ses akışı sırasında, geçerli çoğaltma gecikmesi sıfır olmayabilir, ancak çoğaltma her bağlantı olayında kullanılabilir olmalıdır. - Çevre birimi, dahili kuyruğundan (sıra numarası 0) ilk ses paketini alır ve çalar.
Merkezi, ses akışını kapatmak için «Durdur» komutunu verir. Bu komuttan sonra, çevre biriminin her bağlantı olayında kullanılabilir olması gerekmez. Ses akışını yeniden başlatmak için, 5. adımdan başlayarak yukarıdaki sırayı izleyin. Merkezi ses akışı yapmadığında, GATT hizmetleri için bir LE bağlantısını sürdürmesi gerekir.
Çevre birimi, merkeze bir bağlantı güncellemesi vermeyecektir. Güçten tasarruf etmek için, merkezi ses akışı olmadığında çevre birimine bir bağlantı güncellemesi yayınlayabilir.