İş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 (BT) Core Specification Version 6.0'ı referans alır. Temel özelliklerle 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 ve iki çevre birimi (biri sol, biri sağ) 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.
Şekil 1. BLE üzerinden CoC kullanarak işitme cihazlarını Android mobil cihazlarla eşleme topolojisi.
Merkezi birim, çevre birimine ses verisi aktarmadığında ve BDE bağlantısını sürdürebildiğinde çevre biriminin bağlantısını kesmemelidir. Bağlantının korunması, ç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:
- BT 4.2 veya daha yeni bir sürümle uyumlu bir denetleyici uygulayın. LE Secure Connections'ı kullanmanızı önemle tavsiye ederiz.
- Ses paketi biçimi ve zamanlaması bölümünde açıklandığı gibi, parametrelerle birlikte merkezde en az iki eşzamanlı LE bağlantısını destekleyin.
- Ses paketi biçimi ve zamanlaması bölümünde açıklanan parametrelerle çevrede en az bir LE bağlantısını destekleyin.
- LE kredisine dayalı akış kontrolünü destekleyin [BT Vol 3, Part A, Sec 10.1]. Cihazlar, CoC'de en az 167 baytlık bir MTU ve MPS boyutunu desteklemeli ve sekiz pakete kadar arabelleğe alabilmelidir.
- En az 167 baytlık bir yük ile LE veri uzunluğu uzantısını [BT Vol 6, Part B, Sec 5.1.9] destekleyin.
-
Merkezi cihazın HCI LE Connection Update Command'i (HCI LE Bağlantı Güncelleme Komutu) desteklediğinden
ve sıfır olmayan
maximum_CE_Length
veminimum_CE_Length
parametrelerine uyduğundan emin olun. - Ses paketi biçimi ve zamanlaması bölümündeki bağlantı aralıkları ve yük boyutlarıyla iki farklı çevre birimine iki LE CoC bağlantısı için merkezdeki veri çıkışını koruyun.
-
Çevre birimindeki
LL_LENGTH_REQ
veyaLL_LENGTH_RSP
çerçevelerindeMaxRxOctets
veMaxRxTime
parametrelerini, bu özellikler için gerekli olan en küçük değerler olacak şekilde ayarlayın. Bu sayede merkezi birim, bir kare almak için gereken süreyi hesaplarken zaman planlayıcısını optimize edebilir.
Merkezi ve çevresel cihazların, BT 5.0 spesifikasyonunda belirtildiği gibi 2M PHY'yi desteklemesini önemle tavsiye ederiz. 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 sayfasına göz atın. |
AudioControlPoint |
Yanıt almadan yazma |
Ses akışı için kontrol noktası. AudioControlPoint sayfasına göz atın.
|
AudioStatusPoint |
Okuma/bildirim |
Ses kontrol noktası için durum raporu alanı. AudioStatusPoint sayfasına göz atın.
|
Volume |
Yanıt almadan 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 [BT Vol 3, Part A, Sec 4.22] seçilmelidir. |
Aşağıdaki tablolarda, hizmete atanan UUID'ler ve bunların özellikleri açıklanmaktadır.
Hizmet UUID'si: {0xFDF0}
Karakteristik | UUID |
---|---|
ReadOnlyProperties |
{6333651e-c481-4a3e-9169-7c902aad37bb} |
AudioControlPoint |
{f0d4de7e-4a88-476c-9d9f-1937b0996cc0} |
AudioStatus |
{38663f1a-e711-4cac-b641-326b56404837} |
Volume |
{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 sayfasına göz atın. |
2-9 | HiSyncId sayfasına göz atın. |
10 | FeatureMap sayfasına göz atın. |
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 kimlikleri. 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ığını ve mono veriler alıp almadığını veya cihazın bir setin parçası olup olmadığını gösterir (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. Bu, BTSIG tarafından atanan Şirket Tanımlayıcısı'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. |
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ğini kullanarak ek bir durum bildirimi 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 belirtir.
Ö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:
otherstate alanı, çift kulaklı cihazların diğer tarafının bağlı olup olmadığını gösterir.
Diğer çevre birimi bağlıyken alan değeri 1, aksi takdirde 0 olur.
Ç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ğini kullanarak ek bir durum bildirimi bekleyin.
|
Çevre birimine sesi işlemeyi durdurma talimatı verir. Sesin tekrar işlenebilmesi 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. connected alanı, güncelleme türünü belirtir:
|
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 birimlerinin bir hizmet veri türü olmalıdır:
Bayt ofseti | Ad | Açıklama |
---|---|---|
0 | AD 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 'ın 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. Ad, sol veya sağ kanalı belirtmemelidir. Bu bilgiler DeviceCapabilities
içinde sağlanır.
Ç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 tekrar eder. 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 kulakla dinleme cihazlarına tetikleyiciler sağlayarak yardımcı olur. Bu tetikleyiciler, senkronizasyonu etkileyebilecek bir işlem olduğunda her çevre birimini eşlenmiş çevre birimi cihazının durumu hakkında bilgilendirir. Tetikleyiciler:
-
AudioControlPoint
'nin«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ıyı kesme veya bağlantı parametresi güncelleme işlemi olduğunda,
AudioControlPoint
cihazının«Status»
komutu, çift 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 saymalı ve çevre birimin arabellek uyuşmazlığını veya yetersizliğini algılamasına olanak tanımalıdır.
-
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 her zaman iki ses paketi ve iki 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 ikiden fazla parçalanmış ses paketi alabilmelidir.
Merkeze biraz esneklik sağlamak için G.722 paket uzunluğu belirtilmez. 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ı"ya atıfta bulunur.
Çevre biriminin desteklediği tüm codec'ler için çevre birimi aşağıdaki bağlantı parametrelerini desteklemelidir. Bu, merkezi birimlerin uygulayabileceği yapılandırmaların kısmi 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 sekiz kredi vermelidir.
- 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
üzerinde ilgili parametreleri içeren bir«Start»
komutu verilir. Merkezi, yayın yapmadan önce çevre biriminden önceki«Start»
komutunun başarılı durum bildirimi gelmesini 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 yayını 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. Güç tasarrufu için merkez, ses akışı yapmadığı zaman çevre birimine bağlantı güncellemesi gönderebilir.