Alat bantu dengar (HA) dapat memiliki peningkatan aksesibilitas pada Perangkat seluler yang didukung Android dengan menggunakan L2CAP yang berorientasi koneksi saluran (CoC) melalui Bluetooth Hemat Energi (BLE). Kode Etik menggunakan gaya elastis buffer dari beberapa paket audio untuk mempertahankan aliran audio yang stabil, bahkan saat ada paket yang hilang. Buffer ini memberikan kualitas audio untuk alat bantu dengar dengan mengorbankan latensi.
Desain Kode Etik menampilkan Bluetooth Spesifikasi Inti Versi 5 (BT). Agar tetap selaras dengan spesifikasi inti, semua multi-byte pada laman ini harus dibaca sebagai little-endian.
Terminologi
- Pusat - perangkat Android yang memindai iklan melalui Bluetooth.
- Periferal - alat bantu dengar yang mengirim menayangkan iklan melalui Bluetooth.
Topologi jaringan dan arsitektur sistem
Saat menggunakan Kode Etik untuk alat bantu dengar, topologi jaringan mengasumsikan satu pusat dan dua periferal, satu kiri dan satu kanan, seperti yang terlihat di Gambar 1. Sistem audio Bluetooth melihat sisi kiri dan periferal kanan sebagai satu sink audio. Jika sebuah periferal hilang, karena kecocokan mono atau hilangnya koneksi, maka tengah mencampur saluran audio kiri dan kanan dan mentransmisikan audio ke periferal yang tersisa. Jika pusat kehilangan koneksi ke kedua perangkat periferal, lalu pusat mempertimbangkan link ke sink audio turun. Dalam kasus tersebut, pusat merutekan audio ke output lain.
Gambar 1. Topologi untuk memasangkan alat bantu dengar dengan
Perangkat seluler Android menggunakan Kode Etik melalui BLE
Ketika sistem pusat tidak melakukan streaming data audio ke periferal mempertahankan koneksi BLE, pusat tidak boleh terputus dari periferal. Mempertahankan koneksi memungkinkan komunikasi data ke server GATT yang berada di periferal.
Saat menyambungkan dan menghubungkan alat bantu dengar, perangkat pusat harus:
- Pantau periferal kiri dan kanan terbaru yang disambungkan.
- Asumsikan bahwa periferal sedang digunakan jika ada penyambungan yang valid. Tujuan pusat akan mencoba untuk menghubungkan atau berhubungan kembali dengan perangkat saat koneksi terputus.
- Asumsikan bahwa periferal tidak lagi digunakan jika penyambungan dihapus.
Dalam kasus di atas, penyambungan mengacu pada tindakan mendaftarkan satu set alat bantu dengar dengan UUID tertentu dan penanda kiri/kanan di OS, bukan proses penyambungan Bluetooth.
Persyaratan sistem
Untuk menerapkan Kode Etik dengan benar untuk pengalaman pengguna yang baik, sistem di perangkat pusat dan periferal:
- mengimplementasikan pengontrol BT 4.2 atau lebih tinggi yang sesuai. LE Secure Connections adalah sangat dianjurkan.
- memiliki dukungan pusat setidaknya 2 tautan LE simultan dengan parameter yang dijelaskan dalam Paket audio format dan pengaturan waktu.
- memiliki dukungan periferal minimal 1 link LE dengan parameter yang dijelaskan dalam Paket audio format dan pengaturan waktu.
- memiliki kontrol aliran berbasis kredit LE [BT Vol 3, Part A, Sec 10.1]. Perangkat harus mendukung ukuran MTU dan MPS minimal 167 byte pada Kode Etik dan dapat melakukan buffering hingga 8 paket.
- memiliki ekstensi panjang data LE [BT Vol 6, Part B, Sec 5.1.9] dengan payload minimal 167 byte.
-
membuat perangkat pusat mendukung Perintah Pembaruan Koneksi HCI LE
serta mematuhi
maximum_CE_Length
selain nol Parameterminimum_CE_Length
. - memiliki pusat untuk mempertahankan aliran data untuk dua koneksi LE CoC ke dua periferal yang berbeda dengan interval koneksi dan payload ukuran di Paket audio format dan pengaturan waktu.
-
minta periferal menyetel
MaxRxOctets
dan ParameterMaxRxTime
diLL_LENGTH_REQ
atau frameLL_LENGTH_RSP
untuk menjadi nilai terkecil yang diperlukan yang diperlukan untuk spesifikasi ini. Hal ini memungkinkan pusat mengoptimalkan penjadwal waktunya saat menghitung jumlah waktu yang diperlukan untuk menerima {i>frame<i}.
Sangat disarankan agar pusat dan periferal mendukung PHY 2 MB sebagai yang ditentukan dalam spesifikasi BT 5.0. Pusat harus mendukung tautan audio setidaknya 64 kbit/s pada 1 juta dan 2 juta PHY. BLE rentang panjang PHY tidak boleh digunakan.
CoC menggunakan mekanisme Bluetooth standar untuk enkripsi lapisan link dan frekuensi hopping.
Layanan GATT ASHA
Periferal harus menerapkan Streaming Audio untuk Alat Bantu Dengar (ASHA) Layanan server GATT yang dijelaskan di bawah. Periferal seharusnya mengiklankan layanan ini saat berada dalam mode umum yang dapat ditemukan agar mengenali sink audio. Semua operasi streaming LE Audio harus memerlukan enkripsi. Streaming audio BLE terdiri dari karakteristik berikut:
Karakteristik | Properti | Deskripsi |
---|---|---|
PropertiHanyaBaca | Dibaca | Lihat ReadOnlyProperties. |
AudioControlPoint | Menulis dan Menulis tanpa Respons | Titik kontrol untuk streaming audio. Lihat AudioControlPoint. |
AudioStatusPoint | Baca/Beri tahu | Kolom laporan status untuk titik kontrol audio. Lihat AudioStatusPoint. |
Volume | Tulis tanpa Respons | Byte antara -128 dan 0 yang menunjukkan jumlah pelemahan yang harus diterapkan sinyal audio yang di-streaming, berkisar dari -48 dB hingga 0 dB. Latar (Setting) -128 akan ditafsirkan sebagai sepenuhnya dibisukan, yaitu volume terendah yang tidak dibunyikan levelnya adalah -127 yang setara dengan atenuasi -47,625 dB. Pada pengaturan 0, streaming nada sinus rel-ke-rail harus mewakili input 100 dBSPL pada alat bantu dengar. Pusat akan melakukan streaming secara nominal skala penuh dan gunakan variabel ini untuk mengatur tingkat presentasi yang diinginkan dalam periferal. |
LE_PSM_OUT | Dibaca | PSM yang akan digunakan untuk menghubungkan saluran audio. Untuk dipilih dari rentang dinamis [BT Vol 3, Bagian A, Sec 4.22] |
UUID yang ditetapkan untuk layanan dan karakteristik:
UUID Layanan: {0xFDF0}
Karakteristik | UUID |
---|---|
PropertiHanyaBaca | {6333651e-c481-4a3e-9169-7c902aad37bb} |
AudioControlPoint | {f0d4de7e-4a88-476c-9d9f-1937b0996cc0} |
Status Audio | {38663f1a-e711-4cac-b641-326b56404837} |
Volume | {00e4ca9e-ab14-41e4-8823-f9e70c7e91df} |
LE_PSM_OUT | {2d410339-82b6-42aa-b34e-e2e01df8cc1a} |
Selain layanan GATT ASHA, periferal juga harus mengimplementasikan {i>Device Information Service<i} agar pusat dapat mendeteksi nama produsen, dan nama perangkat periferal tersebut.
PropertiHanyaBaca
ReadOnlyProperties memiliki nilai berikut:
Bita | Deskripsi |
---|---|
0 | Versi - harus 0x01 |
1 | Lihat DeviceKemampuan. |
2-9 | Lihat HiSyncId. |
10 | Lihat FeatureMap. |
11-12 | RenderPenundaan. Ini adalah waktu, dalam milidetik, sejak periferal menerima {i>frame<i} audio hingga periferal merender output-nya. Byte ini dapat digunakan untuk menunda video hingga menyinkronkan dengan audio. |
13-14 | Dicadangkan untuk penggunaan pada masa mendatang. Melakukan inisialisasi ke angka nol. |
15-16 | Codec ID yang didukung. Ini adalah {i>bitmask<i} ID codec yang didukung. Angka 1 dalam lokasi bit sesuai dengan codec yang didukung. Sebagai contoh, 0x0002 menunjukkan bahwa G.722 pada 16 kHz didukung. Semua bit lainnya harus ditetapkan ke 0. |
Kemampuan Perangkat
Bit | Deskripsi |
---|---|
0 | Sisi perangkat (0: kiri, 1: kanan) |
1 | Menunjukkan apakah perangkat mandiri dan menerima data mono, atau jika perangkat adalah bagian dari satu set (0: monaural, 1: binaural) |
2 | Perangkat mendukung CSIS (0: tidak didukung, 1: didukung) |
3-7 | Direservasi (ditetapkan ke 0) |
HiSyncID
Isian ini harus unik untuk semua perangkat binaural tetapi harus hal yang sama untuk set kiri dan kanan.
Bita | Deskripsi |
---|---|
0-1 | ID produsen. Ini adalah Perusahaan ID yang ditetapkan oleh BTSIG. |
2-7 | ID unik yang mengidentifikasi set alat bantu dengar. ID ini harus ditetapkan ke periferal kiri dan kanan. |
Peta Fitur
Bit | Deskripsi |
---|---|
0 | Streaming output audio LE CoC didukung (Ya/Tidak). |
1-7 | Dicadangkan (disetel ke 0). |
ID Codec
Jika bitnya diatur, maka codec tertentu tersebut adalah support.
ID / Nomor bit | Codec dan frekuensi sampel | Kecepatan bit yang diperlukan | Waktu render frame | Wajib di pusat (C) atau periferal (P) |
---|---|---|---|---|
0 | Sudah diperuntukkan | Sudah diperuntukkan | Sudah diperuntukkan | Sudah diperuntukkan |
1 | G.722 @ 16 kHz | 64 kbit/dtk | Variabel | C dan P |
2-15 orang telah dipesan. 0 juga dicadangkan. |
AudioControlPoint
Titik kontrol ini tidak dapat digunakan saat Kode Etik LE ditutup. Lihat Memulai dan menghentikan streaming audio untuk deskripsi prosedur.
Kode operasi | Argumen | Subprosedur GATT | Deskripsi |
---|---|---|---|
1 «Start» |
|
Tulis dengan respons, dan tunggu notifikasi status tambahan melalui Karakteristik AudioStatusPoint. |
Memberi tahu periferal untuk mereset codec dan memulai
pemutaran frame 0. Bidang codec menunjukkan ID codec yang akan digunakan
untuk pemutaran ini.
Misalnya, kolom codec adalah "1" untuk G.722 dengan kecepatan 16 k Hz. Bidang bit jenis audio menunjukkan jenis audio yang ada dalam aliran:
Periferal tidak boleh meminta pembaruan koneksi sebelum opcode «Stop» telah diterima.
|
2 «Stop» |
Tidak ada | Tulis dengan respons, dan tunggu notifikasi status tambahan melalui Karakteristik AudioStatusPoint. | Menginstruksikan periferal untuk menghentikan rendering audio. Audio baru penyiapan yang harus dimulai setelah perhentian ini secara berurutan merender audio lagi. |
3 «Status» |
|
Tulis tanpa respons |
Memberi tahu periferal yang terhubung bahwa ada pembaruan status pada
periferal lainnya. Kolom yang terhubung menunjukkan jenis update:
|
AudioStatusPoint
Kolom laporan status untuk titik kontrol audio
Opcode | Deskripsi |
---|---|
0 | Status Oke |
-1 | Perintah tidak dikenal |
-2 | Parameter ilegal |
Iklan untuk layanan GATT ASHA
UUID layanan harus berada dalam paket iklan. Dalam iklan atau pemindaian frame respons, periferal harus memiliki Data Layanan:
Offset byte | Nama | Deskripsi |
---|---|---|
0 | Panjang IKLAN | >= 0x09 |
1 | Jenis IKLAN | 0x16 (Data Layanan - UUID 16-bit) |
2-3 | UUID Layanan |
0xFDF0 (little-endian) Catatan: ID ini adalah tanda pengenal sementara. |
4 | Versi Protokol | 0x01 |
5 | Kemampuan |
|
6-9 | HiSyncID terpotong | Empat byte paling signifikan dalam HiSyncId. Byte ini harus menjadi bagian ID yang paling acak. |
Periferal harus memiliki Nama Lokal Lengkap tipe data yang menunjukkan nama alat bantu dengar. Nama ini akan digunakan di antarmuka pengguna perangkat seluler sehingga pengguna dapat memilih perangkat yang tepat. Nama tidak boleh menunjukkan kiri atau kanan karena informasi ini disediakan di DeviceKemampuan.
Jika periferal menempatkan nama dan jenis data layanan ASHA dengan jenis {i>frame<i} (ADV atau SCAN RESP), lalu kedua tipe data ("Complete Local Name" dan "Data Layanan untuk layanan ASHA") akan muncul dalam {i>frame<i} yang sama. Tindakan ini memungkinkan pemindai perangkat seluler mendapatkan kedua data dalam hasil pemindaian yang sama.
Selama pemasangan awal, periferal harus beriklan dengan tarif yang cukup cepat agar perangkat seluler dapat dengan cepat menemukan periferal itu dan mengikatnya dengannya.
Menyinkronkan perangkat periferal kiri dan kanan
Agar berfungsi dengan Bluetooth di perangkat seluler Android, perangkat periferal bertanggung jawab untuk memastikan bahwa mereka disinkronkan. Pemutaran di perangkat periferal kiri dan kanan perlu disinkronkan di baik. Kedua perangkat periferal harus memutar sampel audio dari sumber pada saat yang sama.
Perangkat periferal dapat menyinkronkan waktunya dengan menggunakan urutan nomor yang ditambahkan ke setiap paket {i>payload<i} audio. Pusat menjamin bahwa paket audio yang dimaksudkan untuk diputar pada waktu di setiap periferal memiliki nomor urut yang sama. Urutan angka bertambah satu setelah setiap paket audio. Setiap urutan panjangnya 8-bit, jadi nomor urut akan berulang setelah 256 paket audio. Karena setiap ukuran paket audio dan frekuensi sampel bersifat tetap untuk setiap koneksi, kedua periferal dapat menyimpulkan relatif waktu bermain. Untuk mengetahui informasi selengkapnya tentang paket audio, lihat Format paket audio dan waktu.
Pusat itu membantu dengan menyediakan pemicu ke perangkat binaural ketika sinkronisasi mungkin perlu terjadi. Pemicu ini menginformasikan setiap periferal tentang status perangkat periferal yang dipasangkan setiap kali ada operasi yang dapat memengaruhi sinkronisasi. Pemicunya adalah:
-
Sebagai bagian dari perintah
«Start»
AudioControlPoint, status koneksi saat ini dari sisi lain dari binaural perangkat yang diberikan. -
Ketika terdapat koneksi, pemutusan koneksi, atau
pembaruan parameter koneksi
pada satu periferal,
perintah
«Status»
dari AudioControlPoint dikirim ke sisi lain dari perangkat binaural.
Format dan waktu paket audio
Pengemasan bingkai audio (blok sampel) ke dalam paket memungkinkan pendengaran waktu pemerolehan instrumen dari anchor waktu lapisan link. Kepada menyederhanakan implementasi:
- Frame audio harus selalu sesuai dengan interval koneksi dalam waktu. Misalnya, jika interval koneksi adalah 20 md dan frekuensi sampel adalah 16 kHz, maka {i>frame<i} audio tersebut harus berisi 320 sampel.
- Frekuensi sampel dalam sistem dibatasi hingga kelipatan 8kHz untuk selalu memiliki jumlah sampel bilangan bulat dalam frame, terlepas dari waktu {i>frame<i} atau interval koneksi.
- Byte urutan harus menambahkan frame audio. Byte urutan akan menghitung dengan membungkus dan memungkinkan perangkat periferal itu mendeteksi ketidakcocokan buffer atau underflow.
-
Bingkai audio harus selalu muat ke dalam satu paket LE. Audio
{i>frame<i} harus dikirim sebagai
paket L2CAP terpisah. Ukuran LE
LL PDU harus:
ukuran payload audio + 1 (penghitung urutan) + 6 (4 untuk header L2CAP, 2 untuk SDU) - Peristiwa koneksi harus selalu cukup besar untuk memuat 2 audio paket dan 2 paket kosong untuk ACK untuk memesan {i>bandwidth<i} transmisi ulang. Perhatikan bahwa paket audio mungkin terfragmentasi oleh pengontrol Bluetooth pusat. Periferal harus dapat menerima lebih dari 2 paket audio terfragmentasi per peristiwa koneksi.
Untuk memberikan fleksibilitas kepada pusat, panjang paket G.722 tidak yang ditentukan. Panjang paket G.722 dapat berubah berdasarkan koneksi interval yang ditetapkan oleh pusat.
Format oktet output G.722 mereferensikan Rek. ITU-T G.722 (09/2012) bagian 1.4.4 "Multiplexer"
Untuk semua codec yang didukung oleh periferal, periferal tersebut harus mendukung parameter koneksi di bawah ini. Ini adalah daftar tidak lengkap konfigurasi yang dapat diterapkan oleh pusat.
Codec | Bitrate | Interval koneksi | Panjang CE (1 M/2 M PHY) | Ukuran payload audio |
---|---|---|---|---|
G.722 @ 16 kHz | 64 kbit/dtk | 20 md | 5.000/3.750 AS | 160 byte |
Memulai dan menghentikan streaming audio
Sebelum memulai streaming audio, pusat mengkueri periferal dan menentukan codec penyebut yang sama. Feed lalu akan dilanjutkan melalui urutan berikut:
- PSM, dan secara opsional, RenderPenundaan dibaca. Nilai-nilai ini dapat di-cache oleh sistem pusat.
- Saluran CoC L2CAP dibuka – periferal akan memberikan 8 kredit pada awalnya.
- Update koneksi dikeluarkan untuk mengalihkan link ke parameter yang diperlukan untuk codec yang dipilih. Pusat mungkin melakukan pembaruan koneksi ini sebelum koneksi Kode Etik di langkah sebelumnya.
- Baik host pusat maupun host periferal menunggu update .
-
Mulai ulang encoder audio, lalu reset jumlah urutan paket ke 0.
Perintah
«Start»
dengan parameter yang relevan yang dikeluarkan pada AudioControlPoint. Pusat menunggu notifikasi status berhasil perintah«Start»
sebelumnya dari periferal sebelum streaming. Waktu tunggu ini memberi periferal untuk mempersiapkan pipeline pemutaran audionya. Selama streaming audio, replika harus tersedia di setiap peristiwa koneksi meskipun latensi replika mungkin bukan nol. - Periferal mengambil paket audio pertama dari antrean internalnya (nomor urut 0) dan memutarnya.
Pusat mengeluarkan perintah «Stop» untuk menutup streaming audio. Setelah perintah ini, periferal tidak perlu tersedia di setiap peristiwa koneksi. Untuk memulai ulang streaming audio, lakukan urutan di atas, dimulai dari langkah 5. Ketika bagian pusat tidak audio streaming, audio tersebut harus tetap mempertahankan koneksi LE untuk GATT layanan IT perusahaan mereka.
Periferal tidak boleh mengeluarkan pembaruan koneksi ke pusat. Untuk menghemat daya, pusat dapat mengeluarkan pembaruan koneksi ke periferal saat tidak melakukan streaming audio.