Bluetooth LE Kullanarak İşitme Cihazı Ses Desteği

İşitme cihazı cihazları (HA), Bluetooth Düşük Enerji (BLE) üzerinden bağlantı odaklı L2CAP kanallarını (CoC) kullanarak Android destekli mobil cihazlarda gelişmiş 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 elastik bir arabellek kullanır. Bu arabellek, 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 bulunmaktadır. Temel spesifikasyonlara uygun kalmak için, bu sayfadaki tüm çok baytlı değerler küçük-endian olarak okunacaktır.

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 biri sol, biri sağ olmak üzere iki çevre birimini varsayar. Bluetooth ses sistemi, sol ve sağ çevre birimlerini tek bir ses havuzu olarak görüntüler. 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 bağlantısı kesilirse, merkezi ses havuzuna olan bağlantının kaybolduğ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

Merkezin çevre birimine ses verisi akışı yapmaması ve bir BLE bağlantısını sürdürebilmesi durumunda, merkezin çevre birim ile bağlantısı kesilmemelidir. Bağlantının sürdürülmesi, çevre biriminde bulunan GATT sunucusuyla veri iletişimine izin verir.

İşitme cihazlarını eşleştirirken ve bağlarken merkezi:

  • Eşleştirilen daha yeni sol ve sağ çevre birimlerini takip edin.
  • Geçerli bir eşleştirme mevcutsa çevre birimlerinin kullanımda olduğunu varsayalım. Bağlantı kesildiğinde santral, eşleştirilmiş cihaza bağlanmaya veya yeniden bağlanmaya çalışacaktır.
  • Eşleştirme silinirse çevre birimlerinin artık kullanılmadığını varsayalım.

Yukarıdaki durumlarda eşleştirme , Bluetooth eşleştirme sürecini değil, bir işitme cihazı setinin belirli bir UUID ve sol/sağ tanımlayıcılarla işletim sistemine kaydedilmesi eylemini ifade eder.

Sistem gereksinimleri

İyi bir kullanıcı deneyimi için CoC'yi doğru bir şekilde uygulamak amacıyla, merkezi ve çevresel cihazlardaki Bluetooth sistemleri:

  • uyumlu bir BT 4.2 veya üzeri denetleyici uygulayın. LE Güvenli Bağlantılar önemle tavsiye edilir.
  • Ses paketi formatı ve zamanlama bölümünde açıklanan parametrelere sahip en az 2 eşzamanlı LE bağlantısının merkezi desteğine sahip olmalıdır.
  • Ses paketi formatı ve zamanlama bölümünde açıklanan parametrelerle en az 1 LE bağlantısının çevresel desteğine sahip olun.
  • LE kredisine dayalı bir akış kontrolüne sahiptir [BT Cilt 3, Bölüm A, Bölüm 10.1]. Cihazlar, CoC'de en az 167 baytlık MTU ve MPS boyutunu desteklemeli ve 8 pakete kadar arabelleğe almalıdır.
  • 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 minimum_CE_Length parametrelerine uymasını sağlayın.
  • Merkezin, iki farklı çevre birimine iki LE CoC bağlantısı için veri akışını, bağlantı aralıkları ve yük boyutları ile Ses paketi formatında ve zamanlamasında tutmasını sağlayın.
  • çevre biriminin LL_LENGTH_REQ veya LL_LENGTH_RSP çerçevelerindeki MaxRxOctets ve MaxRxTime parametrelerini bu spesifikasyonlar için gerekli olan en küçük gerekli değerlere 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 çevre biriminin 2 MB PHY'yi desteklemesi önemle tavsiye edilir. Merkezi, hem 1M hem de 2M PHY'lerde en az 64 kbit/s ses bağlantılarını destekleyecektir. BLE uzun menzilli PHY kullanılmayacaktır.

CoC, bağlantı katmanı şifrelemesi ve frekans atlaması için standart Bluetooth mekanizmalarını kullanır.

ASHA GATT'ın 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 alıcısını tanımasını sağlamak için genel keşfedilebilir moddayken bu hizmeti tanıtacaktır. Herhangi bir LE ses akışı işlemi şifreleme gerektirecektir. BLE ses akışı aşağıdaki özelliklerden oluşur:

karakteristik Özellikler Tanım
Salt OkunurÖzellikler Okumak Bkz. ReadOnlyProperties .
Ses Kontrol Noktası Yanıtsız Yaz ve Yaz Ses akışı için kontrol noktası. Bkz. AudioControlPoint .
Ses Durumu Noktası Oku/Bildir Ses kontrol noktası için durum raporu alanı. AudioStatusPoint'e bakın
Hacim Yanıtsız Yaz -48 dB ile 0 dB arasında değişen, aktarılan ses sinyaline uygulanacak zayıflama miktarını belirten -128 ile 0 arasındaki bayt. Ayar -128 tamamen sessize alınmış olarak yorumlanacaktır, yani sessize alınmamış en düşük ses seviyesi -47,625 dB zayıflamaya eşdeğer olan -127'dir. 0 ayarında, raydan raya sinüs tonu akışı, işitme cihazında 100 dBSPL giriş eşdeğerini temsil edecektir. Merkezi, nominal tam ölçekte akış yapacak ve bu değişkeni çevre biriminde istenen sunum düzeyini ayarlamak için kullanacaktır.
LE_PSM_OUT Okumak Ses kanalını bağlamak için kullanılacak PSM. Dinamik aralıktan seçilecek [BT Cilt 3, Bölüm A, Bölüm 4.22]

Hizmete atanan UUID'ler ve özellikleri:

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}
Hacim {00e4ca9e-ab14-41e4-8823-f9e70c7e91df}
LE_PSM_OUT {2d410339-82b6-42aa-b34e-e2e01df8cc1a}

ASHA GATT hizmetine ek olarak çevre birimi, merkezin çevre biriminin üretici adlarını ve cihaz 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 Tanım
0 Sürüm - 0x01 olmalıdır
1 Bkz. DeviceCapaability'ler .
2-9 HiSyncId'e bakın.
10 Bkz.FeatureMap .
11-12 İşleme Gecikmesi. Bu, çevre biriminin bir ses çerçevesi alması ile çevre biriminin çıkışı oluşturması arasında 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 başlat.
15-16 Desteklenen Codec Kimlikleri Bu, desteklenen codec 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'a ayarlanacaktır.

Cihaz Yetenekleri

Biraz Tanım
0 Cihaz tarafı (0: sol, 1: sağ)
1 Cihazın bağımsız olup mono veri alıp almadığını veya cihazın bir setin parçası olup olmadığını belirtir (0: mono, 1: binaural)
2 Cihaz CSIS'i destekliyor (0: desteklenmiyor, 1: destekleniyor)
3-7 Ayrılmış (0'a ayarlı)

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 kimliğin hem sol hem de sağ çevre biriminde aynı şekilde ayarlanması gerekir.

Özellik Haritası

Biraz Tanım
0 LE CoC ses çıkışı akışı desteklenir (Evet/Hayır).
1-7 Ayrılmış (0'a ayarlı).

Codec kimlikleri

Bit ayarlanmışsa, söz konusu codec bileşeni destektir.

Kimlik / Bit numarası Codec ve örnekleme hızı Gerekli bit hızı Kare süresi Merkezi (C) veya çevre biriminde (P) zorunlu
0 Rezerve Rezerve Rezerve Rezerve
1 G.722 @ 16kHz 64 kbit/sn Değişken C ve P
2-15 ayrılmıştır.
0 da ayrılmıştır.

Ses Kontrol Noktası

Bu kontrol noktası LE CoC kapalıyken kullanılamaz. Prosedür açıklaması için bkz. Ses akışını başlatma ve durdurma .

İşlem kodu Argümanlar GATT alt prosedürü Tanım
1 «Start»
  • uint8_t codec
  • uint8_t audiotype
  • int8_t volume
  • int8_t otherstate
Yanıtla yazın ve AudioStatusPoint özelliği aracılığıyla ek bir durum bildirimi bekleyin. Çevre birimine codec bileşenini sıfırlaması ve kare 0'ın oynatımını başlatması 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 mevcut olan ses türlerini belirtir:
  • 0 - Bilinmiyor
  • 1 - Zil Sesi
  • 2 - Telefon görüşmesi
  • 3 - Medya
Diğer durum alanı, çift kulaklı cihazların diğer tarafının bağlı olup olmadığını gösterir. Diğer çevresel cihaz bağlandığında alan değeri 1, aksi halde değer 0'dır.

Çevre birimi, bir «Stop» işlem kodu alınmadan bağlantı güncellemeleri talep etmeyecektir.
2 «Stop» Hiçbiri Yanıtla yazın ve AudioStatusPoint özelliği aracılığıyla ek bir durum bildirimi bekleyin. Çevre birimine ses oluşturmayı durdurma talimatını verir. Sesi tekrar işlemek için bu duraklamanın ardından yeni bir ses kurulum dizisi başlatılmalıdır.
3 «Status»
  • uint8_t connected
Cevap vermeden yaz 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:
  • 0 - Diğer çevre birimlerinin bağlantısı kesildi
  • 1 - Bağlı diğer çevre birimi
  • 2 - Her iki bağlantıda da LE Bağlantı Parametresi Güncellemesi oluştu

Ses Durumu Noktası

Ses kontrol noktası için durum raporu alanı

İşlem kodları Tanım
0 Durum Tamam
-1 Bilinmeyen komut
-2 Yasadışı 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 olması gerekir:

Bayt ofseti İsim Tanım
0 AD 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
  • 0 - sol (0) veya sağ (1) taraf
  • 1 - tek (0) veya ikili (1) cihazlar.
  • 2 - cihaz CSIS'i destekliyor (<0: desteklenmiyor, 1: destekleniyor)
  • 3-7 - ayrılmış. Bu bitler sıfır olmalıdır.
6-9 Kesilmiş HiSyncID HiSyncId'in en az önemli dört baytı. Bu baytlar kimliğin en rastgele kısmı olmalıdır.

Çevre birimleri, işitme cihazının adını belirten Tam Yerel Ad veri türüne 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 DeviceCapaability'de sağlandığı için ad, sol veya sağ kanalı belirtmeyecektir.

Çevre birimleri adı ve ASHA hizmet veri türlerini aynı çerçeve tipine (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 elde etmesini sağlar.

İlk eşleştirme sırasında, çevre birimlerinin, mobil cihazın çevre birimleri hızlı bir şekilde keşfetmesine ve onlara bağlanmasına izin verecek kadar hızlı bir şekilde tanıtım yapması önemlidir.

Sol ve sağ çevre birimlerini senkronize etme

Android mobil cihazlarda Bluetooth ile çalışmak için çevresel cihazların senkronize edilmesinden sorumludur. Sol ve sağ çevresel aygıtlardaki oynatmanın zamanında senkronize edilmesi gerekir. Her iki çevresel aygıt da kaynaktan gelen ses örneklerini aynı anda çalmalıdır.

Çevresel cihazlar, ses yükünün her paketinin başına eklenen bir sıra numarasını kullanarak zamanlarını senkronize edebilir. Merkezi, her çevre biriminde aynı anda çalınması amaçlanan ses paketlerinin aynı sıra numarasına sahip olmasını 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 göreceli oynatma süresini tahmin edebilir. Ses paketi hakkında daha fazla bilgi için bkz. Ses paketi biçimi ve zamanlaması .

Merkezi, senkronizasyonun gerçekleşmesi gerekebileceği durumlarda ç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 aygıtın durumu hakkında bilgi verir. Tetikleyiciler şunlardır:

  • AudioControlPoint'in «Start» komutunun bir parçası olarak, çift kulaklı 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 zamanlamayı bağlantı katmanı zamanlama çapalarından elde etmesini sağlar. Uygulamayı basitleştirmek için:

  • Bir ses çerçevesi her zaman bağlantı aralığına uygun olmalıdır. Ö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üresine veya bağlantı aralığına bakılmaksızın bir çerçevede her zaman tamsayı sayıda örnek bulunduracak şekilde 8kHz'in katlarıyla sınırlandırılmıştır.
  • Bir sıra baytı ses çerçevelerinin başına eklenecektir. Sıra baytı sarmayla sayılacak ve çevre biriminin arabellek uyumsuzluğunu veya yetersiz akışını tespit etmesine olanak tanıyacaktır.
  • Bir ses çerçevesi her zaman tek bir LE paketine sığacaktır. Ses çerçevesi ayrı bir L2CAP paketi olarak gönderilecektir. LE LL PDU'nun boyutu şöyle olacaktır:
    ses verisi boyutu + 1 (sıra sayacı) + 6 (L2CAP başlığı için 4, SDU için 2)
  • Bir ACK'nin yeniden iletimler için bant genişliği ayırması için bir bağlantı olayı 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 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şebilmektedir.

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 codec bileşenleri için, çevre birimi aşağıdaki bağlantı parametrelerini destekleyecektir. Bu, merkezin uygulayabileceği konfigürasyonların kapsamlı olmayan bir listesidir.

Kodlayıcı Bit hızı Bağlantı aralığı CE Uzunluğu (1M/2M PHY) Ses verisi boyutu
G.722 @ 16kHz 64 kbit/sn 20 ms 5000/3750 bize 160 bayt

Ses akışını başlatma ve durdurma

Bir ses akışını başlatmadan önce, merkezi çevre birimleri sorgular ve ortak bir payda codec bileşeni oluşturur. Akış kurulumu daha sonra aşağıdaki sırayla ilerler:

  1. PSM ve isteğe bağlı olarak RenderDelay okunur. Bu değerler merkez tarafından önbelleğe alınabilir.
  2. CoC L2CAP kanalı açıldı – çevre birimi başlangıçta 8 kredi verecektir.
  3. Bağlantıyı seçilen codec bileşeni için gereken parametrelere geçirmek için bir bağlantı güncellemesi yayınlanır. Merkez bu bağlantı güncellemesini önceki adımda CoC bağlantısından önce yapabilir.
  4. Hem merkezi hem de çevresel ana bilgisayar, güncellemenin tamamlanması olayını bekler.
  5. 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. Merkez, akıştan önce çevre biriminden önceki «Start» komutunun başarılı durum bildirimini bekler. Bu bekleme, ses çalma hattını hazırlamak için çevresel süreyi verir. Ses akışı sırasında, geçerli çoğaltma gecikmesi sıfırdan farklı olsa bile kopyanın her bağlantı olayında mevcut olması gerekir.
  6. Çevre birimi, ilk ses paketini dahili kuyruğundan (sıra numarası 0) alır ve oynatır.

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. Merkezin ses akışı yapmadığı durumlarda GATT hizmetleri için LE bağlantısını sürdürmesi gerekir.

Çevre birimi merkeze 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.