İşitme cihazları (HA), Bluetooth Düşük Enerji (BDE) üzerinden bağlantı odaklı L2CAP kanalları (CoC) kullanarak Android destekli mobil cihazlarda daha iyi erişilebilirliğe sahip olabilir. CoC, paket kaybı olsa bile sabit bir ses akışı sağlamak için çeşitli ses paketlerinden 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 Temel Spesifikasyonu 5. Sürüm'e (BT) referans verir. Temel spesifikasyonlara uygunluğu sağlamak için bu sayfada yer alan tüm çok baytlı değerler küçük uçlu olarak okunur.
Terminoloji
- Merkezi: 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 bir sol ve bir sağ olmak üzere iki çevre birimi olduğunu varsayar. Bluetooth ses sistemi, sol ve sağ çevre birimlerini tek bir ses kaynağı olarak görür. Tek kulaklıklı kullanım veya bağlantı kaybı nedeniyle bir çevre birimi yoksa merkez, sol ve sağ ses kanalını karıştırır ve sesi kalan çevre birimine iletir. Merkezi ünite her iki çevre birimi ile de bağlantısını kaybederse ses alıcısıyla bağlantının kaybolduğunu düşünür. Bu durumlarda merkezi cihaz, sesi başka bir çıkışa yönlendirir.
Şekil 1. BDE üzerinden CoC'yi kullanarak Android mobil cihazlarla işitme cihazlarını eşleme topolojisi
Ana cihaz, çevre birimine ses verisi aktarmıyorsa ve BLE bağlantısını koruyabiliyorsa çevre biriminin bağlantısını kesmemelidir. Bağlantıyı sürdürmek, çevre biriminde bulunan GATT sunucusuyla veri iletişimine olanak tanır.
İşitme cihazlarını eşlerken ve bağlarken merkezi ünite:
- Eşlenen en son sol ve sağ çevre birimlerini takip edin.
- Geçerli bir eşleme varsa çevre birimlerinin kullanıldığı varsayılır. Bağlantı kesildiğinde merkez, eşlenen cihaza bağlanmaya veya yeniden bağlanmaya çalışır.
- Bir 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 işitme cihazı grubunu belirli bir UUID ve işletim sisteminde sol/sağ tanımlayıcılar ile kaydetme işlemini ifade eder.
Sistem gereksinimleri
İyi bir kullanıcı deneyimi için CoC'nin düzgün bir şekilde uygulanması amacıyla, merkezi ve çevresel cihazlardaki Bluetooth sistemleri:
- Uyumlu bir BT 4.2 veya daha yeni bir denetleyici uygulayın. LE Secure Connections'ı kullanmanız önemle tavsiye edilir.
- Merkezin, Ses paketi biçimi ve zamanlaması bölümünde açıklandığı gibi parametrelerle en az 2 eşzamanlı LE bağlantısını desteklemesi gerekir.
- Ses paketi biçimi ve zamanlaması bölümünde açıklanan parametrelerle en az 1 LE bağlantısı desteklemelidir.
- LE kredi tabanlı akış kontrolüne sahip olmalıdır [BT Cilt 3, Bölüm A, Bölüm 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 baytlık bir yükü olan LE veri uzunluğu uzantısı [BT Cilt 6, Bölüm B, Bölüm 5.1.9] olmalıdır.
-
Merkezi cihazın HCI LE Bağlantı Güncelleme Komutu'nu desteklemesini ve sıfır olmayan
maximum_CE_Length
veminimum_CE_Length
parametrelerine uymasını sağlayın. - Merkezin, ses paketi biçiminde ve zamanlamasında bağlantı aralıkları ve yükü boyutlarıyla iki farklı çevre birimine iki LE CoC bağlantısı için veri aktarım hızını korumasını sağlayın.
-
çevre birimin,
LL_LENGTH_REQ
veyaLL_LENGTH_RSP
çerçevelerindekiMaxRxOctets
veMaxRxTime
parametrelerini bu özellikler için gereken en küçük değerlere ayarlaması Bu sayede merkez, bir kare almak için gereken süreyi hesaplarken zaman planlayıcısını optimize edebilir.
Merkezi birimin ve çevre birimin, BT 5.0 spesifikasyonunda belirtildiği gibi 2 MB PHY'yi desteklemesi önemle tavsiye edilir. Merkezi ünite, hem 1M hem de 2M PHY'lerde en az 64 kbit/sn 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 İşitme Cihazı için Ses Akış (ASHA) GATT sunucu hizmetini uygulamalıdır. Çevresel birim, merkezin ses alıcıyı tanımasına izin vermek için genel olarak bulunabilir moddayken bu hizmeti tanıtmalıdır. LE ses akışıyla ilgili tüm işlemler için şifreleme gerekir. BLE ses aktarımı aşağıdaki özelliklere sahiptir:
Özellik | Özellikler | Açıklama |
---|---|---|
ReadOnlyProperties | Okunanlar | ReadOnlyProperties'e bakın. |
AudioControlPoint | Yazma ve Yanıtsız Yazma | Ses akışı için kontrol noktası. AudioControlPoint konusuna bakın. |
AudioStatusPoint | Okuma/Bildirim | Ses kontrol noktası için durum raporu alanı. Bkz. AudioStatusPoint. |
Ses | Yanıt olmadan yazma | Yayınlanan ses sinyaline uygulanacak zayıflama miktarını (-48 dB ile 0 dB arasında) belirten -128 ile 0 arasında bir bayt. -128 ayarı tamamen sessiz olarak yorumlanır. Yani sessiz olmayan en düşük ses seviyesi -127'dir ve bu değer -47, 625 dB zayıflatmaya eşdeğerdir. 0 ayarıyla, demiryoluna paralel bir sinüs sinyali akışının ses seviyesi, işitme cihazında 100 dBSPL giriş eşdeğeri olmalıdır. Merkezi ünite, nominal tam ölçekte akış yapar ve çevre biriminde istenen sunum düzeyini ayarlamak için bu değişkeni kullanır. |
LE_PSM_OUT | Okunanlar | Ses kanalını bağlamak için kullanılacak PSM. Dinamik aralıktan seçilir [BT Cilt 3, Bölüm A, Bölüm 4.22] |
Hizmete atanan UUID'ler ve özellikler:
Hizmet UUID'si: {0xFDF0}
Özellik | 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} |
ASHA GATT hizmetine ek olarak, merkezin çevre birimin üretici adlarını ve cihaz adlarını algılamasına izin vermek için çevre birimi de Cihaz Bilgileri Hizmeti'ni uygulamalıdır.
ReadOnlyProperties
ReadOnlyProperties aşağıdaki değerlere sahiptir:
Bayt | Açıklama |
---|---|
0 | Sürüm: 0x01 olmalıdır. |
1 | DeviceCapabilities bölümüne bakın. |
2-9 | HiSyncId konusuna bakın. |
10 | FeatureMap'e bakın. |
11-12 | RenderDelay. Bu, çevre biriminin ses çerçevesi almasından çevre biriminin çıkışı oluşturmasına kadar geçen süredir (milisaniye cinsinden). Bu baytlar, videonun sesle senkronize olması için geciktirilmesi amacıyla kullanılabilir. |
13-14 | Gelecekte kullanılmak üzere ayrılmıştır. Sıfırla başlatın. |
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'te G.722'nin desteklendiğini gösterir. Diğer tüm bitler 0 olarak ayarlanır. |
DeviceCapabilities
Bit | Açıklama |
---|---|
0 | Cihaz tarafı (0: sol, 1: sağ) |
1 | Cihazın bağımsız olup tek sesli veri alıp almadığını veya bir setin parçası olup olmadığını belirtir (0: tek sesli, 1: çift sesli) |
2 | Cihaz CSIS'yi destekler (0: desteklenmez, 1: desteklenir) |
3-7 | Ayrılmış (0 olarak ayarlanır) |
HiSyncID
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ı şekilde ayarlanmalıdır. |
FeatureMap
Bit | Açıklama |
---|---|
0 | LE CoC ses çıkışı aktarımı desteklenir (Evet/Hayır). |
1-7 | Ayrılmış (0 olarak ayarlanır). |
Codec kimlikleri
Bit ayarlanmışsa ilgili codec desteklenir.
No / Bit sayısı | Kodek ve örnek hızı | Zorunlu bit hızı | Kare süresi | Merkezi (C) veya çevresel (P) için zorunlu |
---|---|---|---|---|
0 | Rezervasyon yapıldı | Rezervasyon yapıldı | Rezervasyon yapıldı | Rezervasyon yapıldı |
1 | 16 kHz'te G.722 | 64 kbit/sn | Değişken | C ve P |
2-15 arası ayrılmıştır. 0 da ayrılmıştır. |
AudioControlPoint
LE CoC kapalıyken bu kontrol noktası kullanılamaz. İşlem açıklamasını Ses akışı başlatma ve durdurma başlıklı makalede bulabilirsiniz.
İşlem kodu | Argümanlar | GATT alt prosedürü | Açıklama |
---|---|---|---|
1 «Start» |
|
Yanıtla yazın ve AudioStatusPoint özelliği aracılığıyla ek bir durum bildirimi alın. |
Çevresel birimin codec'i sıfırlamasını ve 0. karenin oynatılmasını başlatmasını söyler. codec alanı, bu oynatma için kullanılacak codec kimliğini belirtir.
Örneğin, 16 kHz'te G.722 için codec alanı "1"dir. Ses türü bit alanı, akıştaki ses türlerini gösterir:
Bağlı cihaz, «Stop» işlev kodu alındıktan önce bağlantı güncellemesi istememelidir.
|
2 «Stop» |
Yok | Yanıtla yazın ve AudioStatusPoint özelliği aracılığıyla ek bir durum bildirimi alın. | Çevresel birimin sesi oluşturmayı durdurmasını sağlar. Sesin tekrar oluşturulması için bu duraklatma işleminden sonra yeni bir ses kurulumu dizisi başlatılmalıdır. |
3 «Status» |
|
Yanıt olmadan yazma |
Bağlı çevre birimini, diğer çevre biriminde durum güncellemesi olduğunu bildirir. Bağlı alan, güncellemenin 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 hizmetinin reklamları
Hizmet UUID'si reklam paketinde olmalıdır. Reklamda veya tarama yanıtı çerçevesinde, çevre birimlerinde bir Hizmet Verileri olmalıdır:
Bayt ofseti | Ad | Açıklama |
---|---|---|
0 | Reklam uzunluğu | >= 0x09 |
1 | Reklam Türü | 0x16 (Hizmet Verileri - 16 bit UUID) |
2-3 | Hizmet UUID'si |
0xFDF0 (az baytlı) Not: Bu geçici bir kimliktir. |
4 | Protokol Sürümü | 0x01 |
5 | Kapasite |
|
6-9 | Kısaltılmış HiSyncID | HiSyncId değerinin en anlamlı dört baytı. Bu baytlar, kimliğin en rastgele kısmı olmalıdır. |
Çevresel cihazlarda, işitme cihazının adını belirten bir 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ılır. Bu bilgiler DeviceCapabilities içinde sağlandığından ad, sol veya sağ kanalı belirtmemelidir.
Çevresel birimler adı ve ASHA hizmet veri türlerini aynı çerçeve türüne ("Tam Yerel Ad" ve "ASHA hizmeti için hizmet verileri") yerleştirirse bu iki veri türü aynı çerçevede görünür. Bu sayede mobil cihaz tarayıcısı, aynı tarama sonucunda her iki veriyi de elde edebilir.
İlk eşleme sırasında, mobil cihazın çevre birimlerini hızlı bir şekilde keşfetmesine ve bunlarla bağlantı kurmasına izin verecek kadar hızlı bir hızda reklam yayınlamaları önemlidir.
Sol ve sağ çevre birimi cihazlarını senkronize etme
Android mobil cihazlarda Bluetooth'un çalışması için çevre birim cihazlarının senkronize edilmesinden sorumludur. Sol ve sağ çevre birimi cihazlardaki oynatma işleminin zaman içinde senkronize edilmesi gerekir. Her iki çevre birimi cihaz da kaynaktan gelen ses örneklerini aynı anda oynatmalıdır.
Çevresel cihazlar, ses yükü paketlerinin başına eklenen bir sıra numarasını kullanarak zamanlarını senkronize edebilir. Merkezi birim, her çevre biriminde aynı anda çalınması amaçlanan ses paketlerinin aynı sıra numarasına sahip olmasını sağlar. Sıralı sayı, her ses paketinden sonra bir artar. Her sıra numarası 8 bit uzunluğunda olduğundan 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 göreceli oynatma süresini belirleyebilir. Ses paketi hakkında daha fazla bilgi için Ses paketi biçimi ve zamanlaması bölümüne bakın.
Merkezi birim, senkronizasyonun yapılması gerekebileceğinde binaural cihazlara tetikleyiciler sağlayarak yardımcı olur. Bu tetikleyiciler, senkronizasyonu etkileyebilecek bir işlem olduğunda her çevre birimini eşlenen çevre birimi cihazının durumu hakkında bilgilendirir. Tetikleyiciler şunlardır:
-
AudioControlPoint'ın
«Start»
komutu kapsamında, binaural 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 yapıldığında, binaural cihazların diğer tarafına AudioControlPoint
«Status»
komutu gönderilir.
Ses paketi biçimi ve zamanlaması
Ses çerçevelerinin (örnek blokları) paketlere paketlenmesi, işitme cihazının zamanlamayı bağlantı katmanı zamanlama ankrajlarından almasını sağlar. Uygulamayı basitleştirmek için:
- Ses karesi, zaman içinde her zaman 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çerecektir.
- Sistemdeki örnekleme hızları, kare süresinden veya bağlantı aralığından bağımsız olarak bir karede her zaman tam sayı örnek sayısı olması için 8 kHz'nin katlarıyla sınırlıdır.
- Ses karelerine bir sıra baytı eklenmelidir. Sıralı bayt, sarmalayarak sayar ve çevre birimin arabelleğe uyuşmazlığı veya alt taşma algılamasına olanak tanır.
-
Ses çerçevesi her zaman tek bir LE paketine sığmalıdır. Ses karesi ayrı bir L2CAP paketi olarak gönderilir. LE LL PDU'nun boyutu şu şekilde olmalıdır:
ses yükü boyutu + 1 (sıralı sayaç) + 6 (L2CAP başlığı için 4, SDU için 2) - Bağlantı etkinliği, yeniden yayınlar için bant genişliği ayırmak üzere bir ACK'nin 2 ses paketi ve 2 boş paket içerecek kadar büyük olmalıdır. Ses paketinin, merkezin Bluetooth denetleyicisi tarafından parçalara bölünebileceğini unutmayın. Çevresel cihaz, bağlantı etkinliği başına 2'den fazla parçalanmış ses paketi alabilmelidir.
Merkezin esneklik kazanması 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ış sekizli biçimi, Rec. ITU-T G.722 (09/2012) bölüm 1.4.4 "Çoklayıcı"'ya referans verir.
Çevre birimi, desteklediği tüm codec'ler için aşağıdaki bağlantı parametrelerini desteklemelidir. Bu, merkezin uygulayabileceği yapılandırmaların kapsamlı olmayan bir listesidir.
Codec | Bit hızı | Bağlantı aralığı | CE Uzunluğu (1M/2M PHY) | Ses yükü boyutu |
---|---|---|---|---|
16 kHz'te G.722 | 64 kbit/sn | 20 ms | 5000/3750 ABD doları | 160 bayt |
Ses akışını başlatma ve durdurma
Merkezi birim, ses akışını 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. Çevresel birim başlangıçta 8 kredi verir.
- Bağlantıyı, seçilen codec için gereken parametrelere geçirmek üzere bir bağlantı güncellemesi yapılır. Merkezi, bu bağlantı güncellemesini önceki adımdaki CoC bağlantısından önce yapabilir.
- Hem merkezi hem de çevre birimi ana makinesi, güncelleme tamamlandı 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 gönderilir. Merkezi ünite, yayın yapmadan önce çevre birimden önceki«Start»
komutunun başarılı durum bildirimini bekler. Bu bekleme, çevre birimine ses oynatma ardışık düzenini hazırlaması için zaman verir. Ses aktarımı sırasında, geçerli kopya gecikmesi sıfır olmasa bile kopya her bağlantı etkinliğinde kullanılabilir olmalıdır. - Çevresel birim, dahili kuyruğundan (sıralı numara 0) ilk ses paketini alır ve oynatır.
Merkezi, ses akışını kapatmak için "Stop" komutunu verir. Bu komuttan sonra, çevre birimin her bağlantı etkinliğinde mevcut olması gerekmez. Ses akışını yeniden başlatmak için 5. adımdan başlayarak yukarıdaki sırayı uygulayın. Ana cihaz ses akışı yapmadığında bile GATT hizmetleri için LE bağlantısını sürdürmelidir.
Çevresel birim, merkezi bir bağlantı güncellemesi yayınlamaz. Merkezi ünite, ses aktarımı yapılmadığında güç tasarrufu yapmak için çevre birimine bağlantı güncellemesi gönderebilir.