İşitme cihazı cihazları (HA), Bluetooth Düşük Enerji (BLE) üzerinden bağlantı yönelimli L2CAP kanallarını (CoC) kullanarak Android destekli mobil cihazlarda daha iyi erişilebilirliğe sahip olabilir. CoC, paket kaybı durumunda bile sabit bir ses akışını sürdürmek için birkaç ses paketinden oluşan esnek bir arabellek kullanır. Bu arabellek, gecikme pahasına işitme cihazı cihazları için ses kalitesi sağlar.
CoC'nin tasarımı, Bluetooth Core 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 okunacaktır.
terminoloji
- Central - Bluetooth üzerinden reklamları tarayan Android cihazı.
- Çevre Birimi - 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 ve biri sağ olmak üzere iki çevre birimini varsayar. Bluetooth ses sistemi, sol ve sağ çevre birimlerini tek bir ses havuzu olarak görür. Mono bir uyum veya bağlantı kaybı nedeniyle bir çevre birimi eksikse, merkez 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, merkezi ses havuzuna olan bağlantının koptuğunu kabul eder. Bu 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
Merkezi, çevre birimine ses verisi akışı yapmadığında ve bir BLE bağlantısını sürdürebildiğinde, merkezin çevre birimiyle olan bağlantısını kesmemelidir. Bağlantının sürdürülmesi, çevre biriminde bulunan GATT sunucusuyla veri iletişimine olanak tanır.
Merkezi, işitme cihazlarını eşleştirirken ve bağlarken:
- 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 merkez, eşleştirilen cihaza bağlanmaya veya yeniden bağlanmaya çalışacaktır.
- Bir eşleştirme silinirse çevre birimlerinin artık kullanımda olmadığı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 uygun şekilde uygulamak için merkezi ve çevresel cihazlardaki Bluetooth sistemleri:
- uyumlu bir BT 4.2 veya daha yüksek kontrolör uygulayın. LE Secure Connections şiddetle tavsiye edilir.
- Merkezi desteğe sahip en az 2 eşzamanlı LE bağlantısı Ses paketi formatı ve zamanlama bölümünde açıklandığı gibi parametrelerle.
- Ses paketi formatı ve zamanlamasında açıklanan parametrelerle en az 1 LE bağlantısına sahip çevre birimi desteğine sahip olun.
- LE kredisi tabanlı akış kontrolüne sahip olmak [BT Cilt 3, Kısım A, Sec 10.1]. Cihazlar, CoC üzerinde en az 167 bayt MTU ve MPS boyutunu destekleyecek ve 8 pakete kadar ara belleğe alabilecektir.
- 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 maksimum_CE_Length ve
maximum_CE_Length
parametreleriyle uyumluminimum_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 faydalı yük boyutlarıyla korumasını sağlayın.
- çevre biriminin,
LL_LENGTH_REQ
veyaLL_LENGTH_RSP
çerçevelerindekiMaxRxOctets
veMaxRxTime
parametrelerini bu özellikler 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 etmesini sağlar.
BT 5.0 spesifikasyonunda belirtildiği gibi merkezi ve çevresel 2MB PHY'yi desteklemesi şiddetle tavsiye edilir. Merkez, hem 1M hem de 2M PHY'lerde en az 64 kbit/s'lik ses bağlantılarını destekleyecektir. BLE uzun menzilli PHY kullanılmayacaktır.
CoC, bağlantı katmanı şifrelemesi ve frekans atlama için standart Bluetooth mekanizmalarını kullanır.
ASHA GATT hizmetleri
Bir çevre birimi, aşağıda açıklanan İşitme Cihazı için Ses Akışı (ASHA) GATT sunucu hizmetini uygulayacaktır. Çevre birimi, merkezin bir ses havuzunu 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 gerektirir. BLE ses akışı aşağıdaki özelliklerden oluşur:
karakteristik | Özellikleri | Tanım |
---|---|---|
ReadOnlyÖzellikler | Okumak | ReadOnlyProperties'e bakın. |
SesKontrol Noktası | Cevapsız Yaz ve Yaz | Ses akışı için kontrol noktası. AudioControlPoint'e bakın. |
SesDurumNoktası | Oku/Bildir | Ses kontrol noktası için durum raporu alanı. Opcode'lar:
|
Ses | Cevapsız Yaz | -48 dB ile 0 dB arasında değişen, akan ses sinyaline uygulanacak zayıflama miktarını gösteren -128 ile 0 arasındaki bayt. -128 ayarı tamamen sessiz olarak yorumlanmalıdır, yani sessize alınmamış en düşük ses seviyesi -127'dir ve bu, -47.625 dB zayıflamaya eşittir. 0 ayarında, akan bir raydan raya sinüs tonu, işitme cihazında 100 dBSPL giriş eşdeğerini temsil edecektir. Merkez, nominal tam ölçekte akış yapacak ve çevre biriminde istenen sunum seviyesini ayarlamak için bu değişkeni kullanacaktır. |
LE_PSM_OUT | Okumak | Ses kanalını bağlamak için kullanılacak PSM. Dinamik aralıktan seçilecek [BT Vol 3, Part A, Sec 4.22] |
Hizmete atanan UUID'ler ve özellikler:
Hizmet UUID'si : {0xFDF0}
karakteristik | UUID |
---|---|
ReadOnlyÖzellikler | {6333651e-c481-4a3e-9169-7c902aad37bb} |
SesKontrol Noktası | {f0d4de7e-4a88-476c-9d9f-1937b0996cc0} |
SesDurumu | {38663f1a-e711-4cac-b641-326b56404837} |
Ses | {00e4ca9e-ab14-41e4-8823-f9e70c7e91df} |
LE_PSM_OUT | {2d410339-82b6-42aa-b34e-e2e01df8cc1a} |
ASHA GATT hizmetine ek olarak, çevre birimi, merkezinin çevre biriminin üretici adlarını ve cihaz adlarını algılamasını sağlamak için Cihaz Bilgi Hizmetini de uygulayacaktır.
ReadOnlyÖzellikler
ReadOnlyProperties aşağıdaki değerlere sahiptir:
Bayt | Tanım |
---|---|
0 | Sürüm - 0x01 olmalıdır |
1 | DeviceCapabilities'e bakın. |
2-9 | HiSyncId'e bakın. |
10 | FeatureMap'e bakın . |
11-12 | RenderDelay. Bu, çevre biriminin bir ses çerçevesi aldığı andan çevre biriminin çıktıyı oluşturduğu ana kadar milisaniye cinsinden süredir. Bu baytlar, bir videoyu sesle senkronize etmek için 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 kodlayıcı kimliklerinin bir bit maskesidir. 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 | Tanım |
---|---|
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 | Ayrıldı (0'a ayarlandı). |
HiSyncID
Bu alan tüm çift kulaklı cihazlar için benzersiz olmalı, ancak sol ve sağ set için aynı olmalıdır.
Bayt | Tanım |
---|---|
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ı şekilde ayarlanmalıdır. |
Özellik Haritası
Biraz | Tanım |
---|---|
0 | LE CoC ses çıkışı akışı desteklenir (Evet/Hayır). |
1-7 | Ayrıldı (0'a ayarlandı). |
Codec Kimlikleri
Bit ayarlanmışsa, o kodek desteklenir.
Kimlik / Bit numarası | Codec ve örnekleme hızı | Gerekli bit hızı | çerçeve süresi | Merkezi (C) veya periferik (P) üzerinde zorunlu |
---|---|---|---|---|
0 | Rezerve | Rezerve | Rezerve | Rezerve |
1 | G.722 @ 16 kHz | 64 kbit/sn | Değişken | C ve P |
2-15 rezervedir. 0 da rezerve edilmiştir. |
SesKontrol Noktası
LE CoC kapalıyken bu kontrol noktası kullanılamaz. Prosedür açıklaması için bkz. Ses akışını başlatma ve durdurma .
işlem kodu | Argümanlar | Tanım |
---|---|---|
1 «Start» |
| Çevre birimine codec bileşenini sıfırlaması ve kare 0'ın oynatılmasını başlatması talimatını verir. Codec alanı, bu oynatma için kullanılacak kodek kimliğini gösterir. Örneğin, 16k Hz'de G.722 için kodek 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 bağlantı güncellemelerini talep etmeyecektir. |
2 «Stop» | Hiçbiri | Çevre birimine ses işlemeyi durdurması talimatını verir. Bu duraktan sonra sesin tekrar verilebilmesi için yeni bir ses kurulum sırası başlatılmalıdır. |
3 «Status» |
| Bağlı çevre birimine, diğer çevre biriminde bir durum güncellemesi olduğunu bildirir. Bağlı alan, güncelleme türünü gösterir:
|
ASHA GATT Hizmeti için 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 ofset | İsim | Tanım |
---|---|---|
0 | Reklam Uzunluğu | >= 0x09 |
1 | REKLAM Türü | 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'in en az önemli dört baytı. Bu baytlar, kimliğin en rastgele kısmı olmalıdır. |
Çevre birimlerinde, işitme cihazının adını belirten Tam Yerel Ad veri türü 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ığından, ad sol veya sağ kanalı göstermemelidir.
Ç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 Verileri") 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 cihazın çevre birimlerini hızla keşfetmesini ve onlara bağlanmasını sağlayacak kadar hızlı bir hızda reklam vermesi önemlidir.
Sol ve sağ çevre birimlerini senkronize etme
Android mobil cihazlarda Bluetooth ile çalışmak için, çevre birimlerinin senkronize edilmesini sağlamaktan sorumludur. Sol ve sağ çevresel cihazlarda 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 bir ç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, bu nedenle sıra numaraları 256 ses paketinden sonra tekrarlanır. Her ses paketi boyutu ve örnekleme hızı her bağlantı için sabit olduğundan, iki çevre birimi ilgili çalma süresini belirleyebilir. Ses paketi hakkında daha fazla bilgi için, bkz. Ses paketi biçimi ve zamanlaması .
Merkezi, senkronizasyonun gerçekleşmesi gerekebileceğ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ş çevre birimi cihazının durumu hakkında bilgi verir. Tetikleyiciler şunlardır:
- AudioControlPoint'in
«Start»
komutunun bir parçası olarak, ikili cihazların diğer tarafının mevcut bağlantı durumu verilir. - Bir çevre biriminde 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çevelerinin (örnek bloklarının) paketler halinde paketlenmesi, işitme cihazının bağlantı katmanı zamanlama çapalarından zamanlamayı türetmesine olanak tanır. 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ığı 20ms ve örnekleme hızı 16 kHz ise, ses çerçevesi 320 örnek içermelidir.
- Sistemdeki örnek hızları, çerçeve süresi veya bağlantı aralığından bağımsız olarak bir çerçevede her zaman tam sayıda örneğe sahip olmak için 8 kHz'in katları ile sınırlıdır.
- Bir dizi baytı, ses çerçevelerinin başına gelmelidir. Sıra baytı, sarmalı olarak sayılacak ve çevre biriminin arabellek uyuşmazlığını veya yetersiz akışı 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önderilecektir. LE LL PDU'nun boyutu şöyle 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çalanabileceğini unutmayın. Çevre birimi, bağlantı olayı başına 2'den fazla parçalanmış ses paketi alabilmelidir.
Merkeze biraz esneklik sağlamak 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 "Çoğullayıcı"
Bir çevre biriminin desteklediği tüm kodekler için çevre birimi aşağıdaki bağlantı parametrelerini desteklemelidir. Bu, merkezin uygulayabileceği konfigürasyonların kapsamlı olmayan bir listesidir.
kodek | bit hızı | Bağlantı aralığı | CE Uzunluğu (1M/2M PHY) | Ses yükü boyutu |
---|---|---|---|---|
G.722 @ 16 kHz | 64 kbit/sn | 20 ms | 5000/3750 bize | 160 bayt |
Bir ses akışını başlatma ve durdurma
Bir ses akışını başlatmadan önce, merkezi çevre birimlerini sorgular ve ortak bir payda kodeğ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çıldı – çevre birimi başlangıçta 8 kredi verecektir.
- Bağlantıyı seçilen kodlayıcı için gerekli parametrelere geçirmek için bir bağlantı güncellemesi yayınlanır. Merkez bu bağlantı güncellemesini bir önceki adımda 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 dizi sayımını 0'a sıfırlayın. AudioControlPoint'te ilgili parametrelerle bir
«Start»
komutu verilir. Merkez, akıştan önce çevre biriminden önceki«Start»
komutunun başarılı bir durum bildirimini bekler. Bu bekleme, çevre birimine ses çalma hattını hazırlaması için zaman verir. Ses akışı sırasında, mevcut çoğaltma gecikmesi sıfır olmasa bile, ç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 onu oynatır.
Merkez, 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.
Çevre birimi, merkeze bağlantı güncellemesi yapmayacaktır. Güçten tasarruf etmek için merkezi, ses akışı olmadığında çevre birimine bir bağlantı güncellemesi verebilir.