İşitme cihazları (HA), Bluetooth Düşük Enerji (BLE) üzerinden bağlantı odaklı L2CAP kanalları (CoC) kullanılarak Android destekli mobil cihazlarda daha erişilebilir hale gelebilir. CoC, paket kaybı olsa bile ses akışını sabit tutmak için birkaç ses paketinden oluşan esnek bir arabellek kullanır. Bu arabellek, gecikme pahasına işitme cihazlarının ses kalitesini sağlar.
CoC'nin tasarımı, Bluetooth Core Specification Version 5 (BT) ile ilgilidir. Temel spesifikasyonlarla uyumlu kalmak için bu sayfadaki tüm çok baytlı değerler küçük endian olarak okunmalıdır.
Terminoloji
- merkezi
- Bluetooth üzerinden reklam taraması yapan Android cihaz.
- çevre birimi
- Bluetooth üzerinden reklam paketleri gönderen işitme cihazı.
Ağ topolojisi ve sistem mimarisi
İşitme cihazları için CoC kullanılırken ağ topolojisinde Şekil 1'de gösterildiği gibi tek bir merkezi birim ve biri sol, biri sağ olmak üzere iki çevre birimi olduğu varsayılır. Bluetooth ses sistemi, sol ve sağ çevre birimlerini tek bir ses alıcısı olarak görür. Bir çevre birimi, tek kanallı uyum veya bağlantı kaybı nedeniyle eksikse merkez, sol ve sağ ses kanalını karıştırır ve sesi kalan çevre birimine iletir. Merkezi cihaz, her iki çevre birimiyle de bağlantısını kaybederse ses alıcısıyla bağlantının kesildiğini düşünür. Bu gibi durumlarda, merkezi birim sesi başka bir çıkışa yönlendirir.
1. şekil. BLE üzerinden CoC kullanarak işitme cihazlarını Android mobil cihazlarla eşleme topolojisi.
Merkezi birim, çevre birimine ses verisi aktarmadığında ve BLE bağlantısını sürdürebildiğinde çevre biriminin bağlantısını kesmemelidir. Bağlantının sürdürülmesi, çevre biriminde bulunan GATT sunucusuyla veri iletişimine olanak tanır.
İşitme cihazlarını eşlerken ve bağlarken merkezi cihaz şunları yapmalıdır:
- Daha yakın zamanda eşlenen sol ve sağ çevre birimlerini takip edin.
- Geçerli bir eşleme varsa çevre birimlerinin kullanıldığını varsayın. Merkezi birim, bağlantı kesildiğinde eşlenmiş cihazla bağlanmayı veya yeniden bağlanmayı denemelidir.
- Eşleme silinirse çevre birimlerinin artık kullanılmadığı varsayılır.
Yukarıdaki durumlarda eşleme, Bluetooth eşleme sürecini değil, bir grup işitme cihazını belirli bir UUID ve işletim sistemindeki sol/sağ tanımlayıcılarla kaydetme işlemini ifade eder.
Sistem gereksinimleri
İyi bir kullanıcı deneyimi için CoC'yi düzgün bir şekilde uygulamak üzere merkezi ve çevre birimlerindeki Bluetooth sistemleri şunları yapmalıdır:
- uyumlu bir BT 4.2 veya daha yeni sürüm kumanda kullanın. LE Secure Connections'ı kullanmanız önemle tavsiye edilir.
- Ses paketi biçimi ve zamanlaması bölümünde açıklandığı gibi, merkezi destek en az 2 eşzamanlı LE bağlantısını parametrelerle birlikte desteklemelidir.
- Çevre birimi, Ses paketi biçimi ve zamanlaması bölümünde açıklanan parametrelerle en az 1 LE bağlantısını desteklemelidir.
- LE kredisine dayalı bir akış kontrolüne sahip olmalıdır [BT Vol 3, Part A, Sec 10.1]. Cihazlar, CoC'de en az 167 baytlık bir MTU ve MPS boyutunu desteklemeli ve 8 pakete kadar arabelleğe alabilmelidir.
- en az 167 bayt yük içeren bir LE veri uzunluğu uzantısına [BT Vol 6, Part B, Sec 5.1.9] sahip olmalıdır.
-
Merkezi cihazın HCI LE Connection Update Command'i (0x0A) desteklemesi ve sıfır olmayan
maximum_CE_Length
veminimum_CE_Length
parametrelerine uyması gerekir. - Ses paketi biçimi ve zamanlaması bölümünde belirtilen bağlantı aralıkları ve yük boyutlarıyla iki farklı çevre birimine iki LE CoC bağlantısı için veri çıkışını merkezi olarak korumalıdır.
-
MaxRxOctets
veMaxRxTime
parametreleriniLL_LENGTH_REQ
veyaLL_LENGTH_RSP
çerçevelerinde bu özellikler için gerekli olan en küçük değerler olarak ayarlamalıdır. Bu sayede merkezi birim, bir kare almak için gereken süreyi hesaplarken zaman planlayıcısını optimize edebilir.
Merkezi ve çevre biriminin, BT 5.0 spesifikasyonunda belirtildiği gibi 2 MB PHY'yi desteklemesi önemle tavsiye edilir. Merkez, hem 1M hem de 2M PHY'lerde en az 64 kbit/sn'lik ses bağlantılarını desteklemelidir. BLE uzun menzilli PHY kullanılmamalıdır.
CoC, bağlantı katmanı şifreleme ve frekans atlama için standart Bluetooth mekanizmalarını kullanır.
ASHA GATT hizmetleri
Bir çevre birimi, aşağıda açıklanan işitme cihazı için ses akışı (ASHA) GATT sunucu hizmetini uygulamalıdır. Çevresel birim, merkezi birimin ses çıkışını tanıması için genel olarak bulunabilir moddayken bu hizmetin reklamını yapmalıdır. Tüm LE ses akışı işlemleri şifreleme gerektirmelidir. BLE ses akışı aşağıdaki özelliklerden oluşur:
Karakteristik | Özellikler | Açıklama |
---|---|---|
ReadOnlyProperties | Oku | ReadOnlyProperties konusuna bakın. |
AudioControlPoint | Yazma ve Yanıt Vermeden Yazma | Ses akışı için kontrol noktası. AudioControlPoint başlıklı makaleyi inceleyin. |
AudioStatusPoint | Okuma/Bildirim | Ses kontrol noktası için durum raporu alanı. Bkz. AudioStatusPoint. |
Ses | Yanıt Olmadan Yazma | Yayınlanan ses sinyaline uygulanacak zayıflatma miktarını gösteren, -128 ile 0 arasındaki bayt. -48 dB ile 0 dB arasında değişir. Ayar -128, tamamen sessize alınmış olarak yorumlanmalıdır.Yani, sessize alınmamış en düşük ses düzeyi, -47,625 dB zayıflamaya eşdeğer olan -127'dir. 0 ayarında, akışa alınan raydan raya sinüs tonu, işitme cihazında 100 dBSPL giriş eşdeğerini temsil etmelidir. Merkezi birim, nominal tam ölçekte yayın yapmalı ve bu değişkeni kullanarak çevresel birimde istenen sunum düzeyini ayarlamalıdır. |
LE_PSM_OUT | Oku | Ses kanalını bağlamak için kullanılacak PSM. Dinamik aralıktan seçilmelidir [BT Vol 3, Part A, Sec 4.22]. |
Hizmete ve özelliklere atanan UUID'ler:
Hizmet UUID'si: {0xFDF0}
Karakteristik | UUID |
---|---|
ReadOnlyProperties | {6333651e-c481-4a3e-9169-7c902aad37bb} |
AudioControlPoint | {f0d4de7e-4a88-476c-9d9f-1937b0996cc0} |
AudioStatus | {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, merkezi birimin çevre biriminin üretici adlarını ve cihaz adlarını algılamasına olanak tanımak için Cihaz Bilgisi Hizmeti'ni de uygulamalıdır.
ReadOnlyProperties
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 konusuna bakın. |
10 | FeatureMap başlıklı makaleyi inceleyin. |
11-12 | RenderDelay. Bu, çevre biriminin bir ses karesi almasından çıkışı oluşturmasına kadar geçen süredir (milisaniye cinsinden). Bu baytlar, videoyu sesle senkronize etmek için geciktirmek üzere kullanılabilir. |
13-14 | Gelecekte kullanılmak üzere ayrılmıştır. Sıfır olarak başlatılır. |
15-16 | Desteklenen Codec ID'leri. Bu, desteklenen codec kimliklerinin bit maskesidir. Bit konumundaki 1, desteklenen bir codec'e karşılık gelir. Örneğin, 0x0002, 16 kHz'de G.722'nin desteklendiğini gösterir. Diğer tüm bitler 0 olarak ayarlanmalıdır. |
DeviceCapabilities
Bit | Açıklama |
---|---|
0 | Cihaz tarafı (0: sol, 1: sağ) |
1 | Cihazın bağımsız olup olmadığı ve mono veriler alıp almadığı ya da cihazın bir setin parçası olup olmadığı (0: mono, 1: stereo) |
2 | Cihaz CSIS'i destekliyor (0: desteklenmiyor, 1: destekleniyor) |
3-7 | Ayrılmış (0 olarak ayarlanır) |
HiSyncID
Bu alan, tüm binaural cihazlar için benzersiz olmalı 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ı olmalıdır. |
FeatureMap
Bit | Açıklama |
---|---|
0 | LE CoC ses çıkışı akışı destekleniyor (Evet/Hayır). |
1-7 | Ayrılmış (0 olarak ayarlanır). |
Codec kimlikleri
Bit ayarlanmışsa ilgili codec desteklenir.
ID / Bit number | Codec ve örnek hızı | Gerekli bit hızı | Kare süresi | Merkezi (C) veya çevresel (P) olarak zorunlu |
---|---|---|---|---|
0 | Rezervasyon yapıldı | Rezervasyon yapıldı | Rezervasyon yapıldı | Rezervasyon yapıldı |
1 | G.722 @ 16 kHz | 64 kbit/sn | Değişken | C ve P |
2-15 ayrılmıştır. 0 da ayrılmıştır. |
AudioControlPoint
LE CoC kapalıyken bu kontrol noktası kullanılamaz. İşlem açıklaması için Ses akışı başlatma ve durdurma başlıklı makaleyi inceleyin.
İşlem kodu | Argümanlar | GATT alt prosedürü | Açıklama |
---|---|---|---|
1 «Start» |
|
Yanıtla yazın ve AudioStatusPoint özelliği üzerinden ek bir durum bildirimi almayı bekleyin. |
Çevre birimine codec'i sıfırlaması ve 0. karenin oynatılmasını başlatması talimatını verir. Codec alanı, bu oynatma için kullanılacak codec kimliğini gösterir.
Örneğin, 16 kHz'de G.722 için codec alanı "1"dir. Ses türü bit alanı, akışta bulunan ses türlerini gösterir:
Çevre birimi, «Stop» opcode'u alınmadan önce bağlantı güncellemesi isteğinde bulunmamalıdır.
|
2 «Stop» |
Yok | Yanıtla yazın ve AudioStatusPoint özelliği üzerinden ek bir durum bildirimi almayı bekleyin. | Çevre birimine sesi işlemeyi durdurma talimatı verir. Sesin tekrar oynatılması için bu duraklamanın ardından yeni bir ses kurulumu sırası başlatılmalıdır. |
3 «Status» |
|
Yanıt almadan yazma |
Bağlı çevre birimine, diğer çevre biriminde durum güncellemesi olduğunu bildirir. Bağlı alan, güncelleme türünü gösterir:
|
AudioStatusPoint
Ses kontrol noktası için durum raporu alanı
İşlem kodları | Açıklama |
---|---|
0 | Durum: Çalışıyor |
-1 | Bilinmeyen komut |
-2 | Yasa dışı parametreler |
ASHA GATT hizmeti reklamları
Hizmet UUID'si, reklam paketinde olmalıdır. Reklamda veya tarama yanıtı çerçevesinde çevre birimlerinde Hizmet Verileri olmalıdır:
Bayt ofseti | Ad | Açıklama |
---|---|---|
0 | Reklam uzunluğu | >= 0x09 |
1 | AD Türü | 0x16 (Hizmet Verileri - 16 bit UUID) |
2-3 | Hizmet UUID'si |
0xFDF0 (little-endian) Not: Bu geçici bir kimliktir. |
4 | Protokol Sürümü | 0x01 |
5 | Yetki |
|
6-9 | Kısaltılmış HiSyncID | HiSyncId'nin en ö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 bir Complete Local Name 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ılır. Bu bilgi DeviceCapabilities içinde sağlandığından ad, sol veya sağ kanalı belirtmemelidir.
Çevre birimleri, adı ve ASHA hizmeti veri türlerini aynı çerçeve türüne (ADV veya SCAN RESP) yerleştirirse iki veri türü ("Complete Local Name" ve "Service Data for ASHA service") aynı çerçevede görünmelidir. Bu sayede mobil cihaz tarayıcısı, aynı tarama sonucunda her iki veriyi de alabilir.
İlk eşleme sırasında, çevre birimlerinin mobil cihazın çevre birimlerini hızlı bir şekilde keşfedip bunlara bağlanmasına olanak tanıyacak kadar hızlı bir oranda reklam yayınlaması önemlidir.
Sol ve sağ çevre birimlerini senkronize etme
Android mobil cihazlarda Bluetooth ile çalışmak için çevre birimi cihazları, senkronize olduklarından emin olmakla sorumludur. Sol ve sağ çevre birimlerindeki oynatma zamanında senkronize edilmelidir. Her iki çevre birimi de kaynaktan gelen ses örneklerini aynı anda çalmalıdır.
Çevre birimleri, ses yükünün her paketine eklenen bir sıra numarası kullanarak saatlerini senkronize edebilir. Merkezi birim, her bir çevre biriminde aynı anda oynatılması gereken ses paketlerinin aynı sıra numarasına sahip olmasını sağlar. Sıra numarası, her ses paketinden sonra bir artar. Her sıra numarası 8 bit uzunluğundadır. Bu nedenle, sıra numaraları 256 ses paketinden sonra tekrarlanır. Her bağlantı için her ses paketi boyutu ve örnekleme hızı sabit olduğundan iki çevre birimi, göreceli oynatma süresini tahmin edebilir. Ses paketi hakkında daha fazla bilgi için Ses paketi biçimi ve zamanlama bölümüne bakın.
Merkez, senkronizasyonun gerekebileceği durumlarda iki kanallı cihazlara tetikleyiciler sağlayarak yardımcı olur. Bu tetikleyiciler, senkronizasyonu etkileyebilecek bir işlem olduğunda her çevre birimine eşlenmiş çevre birimi cihazının durumu hakkında bilgi verir. Tetikleyiciler:
-
AudioControlPoint'in
«Start»
komutu kapsamında, iki kulaklı cihazların diğer tarafının mevcut bağlantı durumu verilir. -
Bir çevre biriminde bağlantı, bağlantı kesme veya bağlantı parametresi güncelleme işlemi olduğunda, AudioControlPoint'in
«Status»
komutu, iki kanallı cihazların diğer tarafına gönderilir.
Ses paketi biçimi ve zamanlaması
Ses çerçevelerinin (örnek blokları) paketlere yerleştirilmesi, işitme cihazının bağlantı katmanı zamanlama tutturucularından zamanlama elde etmesini sağlar. Uygulamayı basitleştirmek için:
- Bir ses karesi her zaman zaman içindeki bağlantı aralığıyla eşleşmelidir. Örneğin, bağlantı aralığı 20 ms ve örnek hızı 16 kHz ise ses çerçevesi 320 örnek içermelidir.
- Sistemdeki örnekleme hızları, kare süresine veya bağlantı aralığına bakılmaksızın bir karede her zaman tam sayıda örnek bulunması için 8 kHz'in katlarıyla sınırlandırılmıştır.
- Ses karelerinin önüne bir sıra baytı eklenmelidir. Sıra baytı, kaydırma ile sayılmalı ve çevre biriminin arabellek uyuşmazlığını veya taşmasını algılamasına izin vermelidir.
-
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 olmalıdır:
ses yükü boyutu + 1 (sıra sayacı) + 6 (L2CAP başlığı için 4, SDU için 2) - Bir bağlantı etkinliği, yeniden iletimler için bant genişliği ayırmak üzere 2 ses paketi ve 2 boş paket içerecek kadar büyük olmalıdır. Ses paketinin, merkezi birimin Bluetooth denetleyicisi tarafından parçalanabileceğini unutmayın. Çevre birimi, bağlantı etkinliği 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 belirlediği bağlantı aralığına göre değişebilir.
G.722 çıkış sekizlisi biçimi, Rec. ITU-T G.722 (09/2012) bölüm 1.4.4 "Çoklayıcı" bölümüne atıfta bulunur.
Çevre biriminin desteklediği tüm codec'ler için çevre birimi aşağıdaki bağlantı parametrelerini desteklemelidir. Bu, merkezin uygulayabileceği yapılandırmaların olası her örneğe yer vermeyen bir listesidir.
Codec | 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 us | 160 bayt |
Ses akışını başlatma ve durdurma
Merkezi birim, ses akışı başlatmadan önce çevre birimlerini sorgular ve ortak bir payda codec'i oluşturur. Ardından akış kurulumu aşağıdaki sırayla devam eder:
- 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 vermelidir. initially.
- Bağlantıyı seçilen codec için gereken parametrelere geçirmek üzere bir bağlantı güncellemesi yapılır. Santral, önceki adımdaki CoC bağlantısından önce bu bağlantı güncellemesini yapabilir.
- Hem merkezi hem de çevre birimi ana makinesi, güncellemenin tamamlanması etkinliğini bekler.
-
Ses kodlayıcıyı yeniden başlatın ve paket sırası sayısını 0'a sıfırlayın.
AudioControlPoint'te ilgili parametreleri içeren bir
«Start»
komutu verilir. Merkezi, yayın yapmadan önce çevre biriminden önceki«Start»
komutunun başarılı durum bildirimini bekler. Bu bekleme süresi, çevre birimine ses oynatma hattını hazırlaması için zaman tanır. Ses akışı sırasında, mevcut kopya gecikmesi sıfır olmasa bile kopya her bağlantı etkinliğinde kullanılabilir olmalıdır. - Çevre birimi, dahili kuyruğundaki ilk ses paketini (sıra numarası 0) alıp oynatır.
Merkez, ses akışını kapatmak için «Durdur» komutunu gönderir. Bu komuttan sonra, çevre biriminin her bağlantı etkinliğinde kullanılabilir olması gerekmez. Ses akışını yeniden başlatmak için yukarıdaki sırayı 5. adımdan başlayarak uygulayın. Merkezi cihaz ses akışı yapmadığında bile GATT hizmetleri için LE bağlantısını sürdürmelidir.
Çevre birimi, merkezi birime bağlantı güncellemesi göndermemelidir. Merkezi birim, güç tasarrufu için ses akışı yapmadığı zaman çevre birimine bağlantı güncellemesi gönderebilir.