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

İşitme cihazı cihazları (HA), Bluetooth Düşük Enerji (BLE) üzerinden bağlantı yönelimli 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 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 l' 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, merkezi sol ve sağ ses kanalını karıştırır ve sesi kalan çevre birimine iletir. Merkez, her iki çevre birimiyle olan bağlantısını kaybederse, 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

Merkez, çevre birimine ses verisi akışı yapmadığında ve bir BLE bağlantısını sürdürebildiğinde, merkezin çevre birimiyle 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şleştirirken ve bağlarken, merkez:

  • 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ılmadığı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çleri ile 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 uyumlu minimum_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 yük boyutlarıyla korumasını sağlayın.
  • çevre biriminin LL_LENGTH_REQ veya LL_LENGTH_RSP çerçevelerindeki MaxRxOctets ve MaxRxTime 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ı Yanıtsı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:
  • 0 - Durum Tamam
  • -1 - Bilinmeyen komut
  • -2 - Geçersiz parametreler
Ses Yanıtsız Yaz -48 dB ile 0 dB arasında değişen, akan ses sinyaline uygulanacak zayıflama miktarını gösteren -128 ve 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 bu değişkeni, çevre biriminde istenen sunum seviyesini 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 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, merkezin ç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 kodek 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 saklıdır.

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»
  • uint8_t codec
  • uint8_t audiotype
  • int8_t volume
  • int8_t otherstate
Ç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:
  • 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'dir, aksi takdirde değer 0'dır.

Ç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 tekrar ses verebilmek için yeni bir ses kurulum sırası başlatılmalıdır.
3 «Status»
  • uint8_t connected
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 birimi bağlantısı kesildi
  • 1 - Bağlı diğer çevre birimi
  • 2 - Her iki bağlantıda da bir LE Bağlantı Parametresi Güncellemesi gerçekleşti

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
  • 0 - sol (0) veya sağ (1) taraf
  • 1 - tek (0) veya çift (1) cihaz.
  • 2-7 - saklıdır. 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 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 bağlantı için her ses paketi boyutu ve örnekleme hızı 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 gerektiğ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çevelerini (örnek bloklarını) paketler halinde paketlemek, 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 "Çoklayı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:

  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 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.
  4. Hem merkezi hem de çevresel ana bilgisayar, güncelleme tamamlandı olayını bekler.
  5. 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, geçerli çoğaltma gecikmesi sıfır olmasa bile, çoğaltma her bağlantı olayında kullanılabilir olmalıdır.
  6. Ç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ı uygulayın.

Ç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.