Thiết bị trợ thính (HA) có thể cải thiện khả năng tiếp cận trên thiết bị di động chạy Android bằng cách sử dụng các kênh L2CAP hướng kết nối (CoC) qua Bluetooth năng lượng thấp (BLE). CoC sử dụng bộ nhớ đệm linh hoạt gồm một số gói âm thanh để duy trì luồng âm thanh ổn định, ngay cả khi có hiện tượng mất gói. Bộ nhớ đệm này cung cấp chất lượng âm thanh cho các thiết bị trợ thính, nhưng có độ trễ.
Thiết kế của CoC tham chiếu Bluetooth Core Specification Version 5 (BT). Để phù hợp với các quy cách cốt lõi, tất cả các giá trị nhiều byte trên trang này phải được đọc dưới dạng little-endian.
Thuật ngữ
- trung tâm
- Thiết bị Android quét các quảng cáo qua Bluetooth.
- thiết bị ngoại vi
- Thiết bị trợ thính gửi các gói quảng cáo qua Bluetooth.
Cấu trúc liên kết mạng và kiến trúc hệ thống
Khi sử dụng CoC cho máy trợ thính, cấu trúc liên kết mạng giả định một trung tâm duy nhất và hai thiết bị ngoại vi, một bên trái và một bên phải, như trong Hình 1. Hệ thống âm thanh Bluetooth xem các thiết bị ngoại vi bên trái và bên phải như một nguồn âm thanh duy nhất. Nếu một thiết bị ngoại vi bị thiếu (do vừa khít một bên tai hoặc mất kết nối), thì trung tâm sẽ trộn kênh âm thanh trái và phải rồi truyền âm thanh đến thiết bị ngoại vi còn lại. Nếu trung tâm mất kết nối với cả hai thiết bị ngoại vi, thì trung tâm sẽ coi như mất liên kết với nguồn âm thanh. Trong những trường hợp đó, trung tâm sẽ định tuyến âm thanh đến một đầu ra khác.
Hình 1. Cấu trúc liên kết để ghép nối thiết bị trợ thính với thiết bị di động Android bằng CoC qua BLE.
Khi trung tâm không truyền trực tuyến dữ liệu âm thanh đến thiết bị ngoại vi và có thể duy trì kết nối BLE, trung tâm không được ngắt kết nối với thiết bị ngoại vi. Việc duy trì kết nối cho phép giao tiếp dữ liệu với máy chủ GATT nằm trên thiết bị ngoại vi.
Khi ghép nối và kết nối thiết bị trợ thính, trung tâm phải:
- Theo dõi các thiết bị ngoại vi bên trái và bên phải được ghép nối gần đây hơn.
- Giả sử các thiết bị ngoại vi đang được sử dụng nếu có một chế độ ghép nối hợp lệ. Trung tâm phải cố gắng kết nối hoặc kết nối lại với thiết bị đã ghép nối khi mất kết nối.
- Giả sử các thiết bị ngoại vi không còn được sử dụng nếu một thiết bị ghép nối bị xoá.
Trong các trường hợp trên, ghép nối đề cập đến thao tác đăng ký một bộ máy trợ thính có một UUID nhất định và chỉ định bên trái/phải trong hệ điều hành, chứ không phải quy trình ghép nối Bluetooth.
Yêu cầu hệ thống
Để triển khai CoC đúng cách nhằm mang lại trải nghiệm tốt cho người dùng, hệ thống Bluetooth trong các thiết bị trung tâm và thiết bị ngoại vi phải:
- triển khai một bộ điều khiển tuân thủ BT 4.2 trở lên. Bạn nên sử dụng LE Secure Connections.
- có hỗ trợ trung tâm ít nhất 2 đường liên kết LE đồng thời với các tham số như mô tả trong Định dạng và thời gian của gói âm thanh.
- có thiết bị ngoại vi hỗ trợ ít nhất 1 đường liên kết LE với các thông số được mô tả trong Định dạng và thời gian của gói âm thanh.
- có cơ chế kiểm soát luồng dựa trên tín dụng LE [BT Vol 3, Part A, Sec 10.1]. Các thiết bị phải hỗ trợ kích thước MTU và MPS tối thiểu là 167 byte trên CoC và có thể lưu vào bộ nhớ đệm tối đa 8 gói.
- có phần mở rộng độ dài dữ liệu LE [BT Vol 6, Part B, Sec 5.1.9] với tải trọng ít nhất là 167 byte.
-
thiết bị trung tâm hỗ trợ Lệnh cập nhật kết nối HCI LE và tuân thủ các tham số
maximum_CE_Length
vàminimum_CE_Length
khác 0. - duy trì tốc độ truyền dữ liệu cho 2 kết nối LE CoC đến 2 thiết bị ngoại vi khác nhau với khoảng thời gian kết nối và kích thước tải trọng trong Định dạng và thời gian của gói âm thanh.
-
thiết bị ngoại vi đặt các tham số
MaxRxOctets
vàMaxRxTime
trong khungLL_LENGTH_REQ
hoặcLL_LENGTH_RSP
thành các giá trị nhỏ nhất cần thiết cho các thông số kỹ thuật này. Điều này cho phép trung tâm tối ưu hoá bộ lập lịch thời gian khi tính toán lượng thời gian cần thiết để nhận một khung hình.
Bạn nên dùng PHY 2 MB cho thiết bị trung tâm và thiết bị ngoại vi như được chỉ định trong quy cách BT 5.0. Trung tâm phải hỗ trợ các đường liên kết âm thanh có tốc độ tối thiểu 64 kbit/giây trên cả PHY 1M và 2M. Không được sử dụng PHY tầm xa BLE.
CoC sử dụng các cơ chế Bluetooth tiêu chuẩn để mã hoá lớp liên kết và chuyển đổi tần số.
Các dịch vụ GATT của ASHA
Thiết bị ngoại vi phải triển khai dịch vụ máy chủ GATT Audio Streaming for Hearing Aid (ASHA) như mô tả bên dưới. Thiết bị ngoại vi phải quảng cáo dịch vụ này khi ở chế độ có thể phát hiện chung để cho phép trung tâm nhận dạng một nguồn âm thanh. Mọi thao tác phát trực tuyến âm thanh năng lượng thấp đều phải yêu cầu mã hoá. Tính năng truyền phát âm thanh qua BLE bao gồm các đặc điểm sau:
Đặc điểm | Thuộc tính | Mô tả |
---|---|---|
ReadOnlyProperties | Đọc | Xem ReadOnlyProperties. |
AudioControlPoint | Viết và Viết mà không cần phản hồi | Điểm điều khiển cho luồng âm thanh. Xem AudioControlPoint. |
AudioStatusPoint | Đọc/Thông báo | Trường báo cáo trạng thái cho điểm kiểm soát âm thanh. Xem AudioStatusPoint. |
Âm lượng | Viết mà không cần trả lời | Byte trong khoảng từ -128 đến 0 cho biết mức độ suy hao cần áp dụng cho tín hiệu âm thanh được truyền trực tuyến, trong khoảng từ -48 dB đến 0 dB. Chế độ cài đặt -128 phải được hiểu là hoàn toàn tắt tiếng, tức là mức âm lượng thấp nhất không bị tắt tiếng là -127, tương đương với mức giảm âm lượng -47,625 dB. Ở chế độ cài đặt 0, một âm hình sin từ đầu đến cuối được truyền trực tuyến phải thể hiện mức đầu vào tương đương 100 dBSPL trên thiết bị trợ thính. Thiết bị trung tâm phải truyền trực tuyến ở quy mô đầy đủ danh nghĩa và sử dụng biến này để đặt mức trình bày mong muốn trong thiết bị ngoại vi. |
LE_PSM_OUT | Đọc | PSM dùng để kết nối kênh âm thanh. Được chọn trong phạm vi động [BT Vol 3, Part A, Sec 4.22] |
UUID được chỉ định cho dịch vụ và đặc điểm:
UUID dịch vụ: {0xFDF0}
Đặc điểm | UUID |
---|---|
ReadOnlyProperties | {6333651e-c481-4a3e-9169-7c902aad37bb} |
AudioControlPoint | {f0d4de7e-4a88-476c-9d9f-1937b0996cc0} |
AudioStatus | {38663f1a-e711-4cac-b641-326b56404837} |
Âm lượng | {00e4ca9e-ab14-41e4-8823-f9e70c7e91df} |
LE_PSM_OUT | {2d410339-82b6-42aa-b34e-e2e01df8cc1a} |
Ngoài dịch vụ ASHA GATT, thiết bị ngoại vi cũng phải triển khai Dịch vụ thông tin thiết bị để cho phép thiết bị trung tâm phát hiện tên nhà sản xuất và tên thiết bị của thiết bị ngoại vi.
ReadOnlyProperties
ReadOnlyProperties có các giá trị sau:
Byte | Mô tả |
---|---|
0 | Phiên bản – phải là 0x01 |
1 | Xem DeviceCapabilities. |
2-9 | Xem HiSyncId. |
10 | Xem FeatureMap. |
11-12 | RenderDelay. Đây là thời gian (tính bằng mili giây) kể từ khi thiết bị ngoại vi nhận được một khung âm thanh cho đến khi thiết bị ngoại vi kết xuất đầu ra. Bạn có thể dùng các byte này để trì hoãn video nhằm đồng bộ hoá với âm thanh. |
13-14 | Dành để sử dụng trong tương lai. Khởi tạo thành 0. |
15-16 | Mã nhận dạng bộ mã hoá và giải mã được hỗ trợ. Đây là một mặt nạ bit gồm các mã nhận dạng codec được hỗ trợ. Giá trị 1 ở vị trí bit tương ứng với một codec được hỗ trợ. Ví dụ: 0x0002 cho biết G.722 ở tần số 16 kHz được hỗ trợ. Tất cả các bit khác phải được đặt thành 0. |
DeviceCapabilities
Bit | Mô tả |
---|---|
0 | Phía thiết bị (0: trái, 1: phải) |
1 | Cho biết liệu thiết bị có hoạt động độc lập và nhận dữ liệu đơn âm hay không, hoặc liệu thiết bị có thuộc một bộ hay không (0: đơn âm, 1: hai tai) |
2 | Thiết bị hỗ trợ CSIS (0: không hỗ trợ, 1: hỗ trợ) |
3-7 | Đã đặt trước (đặt thành 0) |
HiSyncID
Trường này phải là duy nhất đối với tất cả các thiết bị binaural nhưng phải giống nhau đối với bộ bên trái và bên phải.
Byte | Mô tả |
---|---|
0-1 | Mã nhận dạng của nhà sản xuất. Đây là Mã nhận dạng công ty do BTSIG chỉ định. |
2-7 | Mã nhận dạng duy nhất để xác định bộ trợ thính. Bạn phải đặt mã nhận dạng này thành mã nhận dạng giống nhau trên cả thiết bị ngoại vi bên trái và bên phải. |
FeatureMap
Bit | Mô tả |
---|---|
0 | Hỗ trợ phát trực tuyến đầu ra âm thanh LE CoC (Có/Không). |
1-7 | Đã đặt trước (đặt thành 0). |
Mã nhận dạng bộ mã hoá và giải mã
Nếu bit được đặt, thì codec cụ thể đó sẽ được hỗ trợ.
Mã nhận dạng/Số bit | Codec và tốc độ lấy mẫu | Tốc độ bit bắt buộc | Thời gian kết xuất khung hình | Bắt buộc trên trung tâm (C) hoặc thiết bị ngoại vi (P) |
---|---|---|---|---|
0 | Đặt trước | Đặt trước | Đặt trước | Đặt trước |
1 | G.722 @ 16 kHz | 64 kbit/giây | Biến | C và P |
2-15 là các số dành riêng. 0 cũng được dành riêng. |
AudioControlPoint
Bạn không thể sử dụng điểm kiểm soát này khi LE CoC đã đóng. Hãy xem phần Bắt đầu và dừng luồng âm thanh để biết nội dung mô tả quy trình.
Mã lệnh | Đối số | Quy trình phụ GATT | Mô tả |
---|---|---|---|
1 «Start» |
|
Viết bằng phản hồi và dự kiến sẽ có thêm thông báo trạng thái thông qua đặc điểm AudioStatusPoint. |
Hướng dẫn thiết bị ngoại vi đặt lại bộ mã hoá và giải mã, đồng thời bắt đầu phát khung hình 0. Trường codec cho biết mã nhận dạng codec cần dùng cho lần phát này.
Ví dụ: trường codec là "1" cho G.722 ở tần số 16 kHz. Trường bit loại âm thanh cho biết(các) loại âm thanh có trong luồng:
Thiết bị ngoại vi không được yêu cầu cập nhật kết nối trước khi nhận được mã thao tác «Stop» .
|
2 «Stop» |
Không có | Viết bằng phản hồi và dự kiến sẽ có thêm thông báo trạng thái thông qua đặc điểm AudioStatusPoint. | Hướng dẫn thiết bị ngoại vi dừng kết xuất âm thanh. Một trình tự thiết lập âm thanh mới sẽ được bắt đầu sau khi dừng để kết xuất lại âm thanh. |
3 «Status» |
|
Viết mà không cần phản hồi |
Thông báo cho thiết bị ngoại vi được kết nối rằng có thông tin cập nhật trạng thái trên thiết bị ngoại vi khác. Trường được kết nối cho biết loại nội dung cập nhật:
|
AudioStatusPoint
Trường báo cáo trạng thái cho điểm điều khiển âm thanh
Mã lệnh | Mô tả |
---|---|
0 | Trạng thái ổn |
-1 | Lệnh không xác định |
-2 | Tham số bất hợp pháp |
Quảng cáo cho dịch vụ GATT của ASHA
UUID dịch vụ phải nằm trong gói quảng cáo. Trong khung phản hồi quảng cáo hoặc khung phản hồi quét, các thiết bị ngoại vi phải có Dữ liệu dịch vụ:
Mức chênh lệch byte | Tên | Mô tả |
---|---|---|
0 | Độ dài của quảng cáo | >= 0x09 |
1 | Loại quảng cáo | 0x16 (Dữ liệu dịch vụ – UUID 16 bit) |
2-3 | UUID dịch vụ |
0xFDF0 (little-endian) Lưu ý: Đây là một mã nhận dạng tạm thời. |
4 | Phiên bản giao thức | 0x01 |
5 | Khả năng |
|
6-9 | Đã rút gọn HiSyncID | 4 byte có nghĩa nhất của HiSyncId. Các byte này phải là phần ngẫu nhiên nhất của mã nhận dạng. |
Các thiết bị ngoại vi phải có kiểu dữ liệu Complete Local Name (Tên đầy đủ của thiết bị) cho biết tên của máy trợ thính. Tên này sẽ được dùng trên giao diện người dùng của thiết bị di động để người dùng có thể chọn đúng thiết bị. Tên không được cho biết kênh bên trái hoặc bên phải vì thông tin này được cung cấp trong DeviceCapabilities.
Nếu các thiết bị ngoại vi đặt tên và kiểu dữ liệu dịch vụ ASHA trong cùng một kiểu khung (ADV hoặc SCAN RESP), thì hai kiểu dữ liệu ("Complete Local Name" và "Service Data for ASHA service") phải xuất hiện trong cùng một khung. Điều này cho phép trình quét thiết bị di động nhận cả hai dữ liệu trong cùng một kết quả quét.
Trong quá trình ghép nối ban đầu, điều quan trọng là các thiết bị ngoại vi phải quảng cáo với tốc độ đủ nhanh để thiết bị di động nhanh chóng phát hiện và liên kết với các thiết bị ngoại vi đó.
Đồng bộ hoá các thiết bị ngoại vi bên trái và bên phải
Để hoạt động với Bluetooth trên thiết bị di động Android, các thiết bị ngoại vi phải đảm bảo rằng chúng được đồng bộ hoá. Cần đồng bộ hoá thời gian phát trên các thiết bị ngoại vi bên trái và bên phải. Cả hai thiết bị ngoại vi đều phải phát các mẫu âm thanh từ nguồn cùng một lúc.
Các thiết bị ngoại vi có thể đồng bộ hoá thời gian bằng cách sử dụng một số thứ tự được thêm vào trước mỗi gói tải trọng âm thanh. Trung tâm đảm bảo rằng các gói âm thanh được phát cùng lúc trên mỗi thiết bị ngoại vi đều có cùng số thứ tự. Số thứ tự tăng thêm một sau mỗi gói âm thanh. Mỗi số thứ tự dài 8 bit, vì vậy, các số thứ tự sẽ lặp lại sau 256 gói âm thanh. Vì mỗi kích thước gói âm thanh và tốc độ lấy mẫu đều được cố định cho mỗi kết nối, nên hai thiết bị ngoại vi có thể suy ra thời gian phát tương đối. Để biết thêm thông tin về gói âm thanh, hãy xem phần Định dạng và thời gian của gói âm thanh.
Trung tâm hỗ trợ bằng cách cung cấp các trình kích hoạt cho thiết bị hai tai khi cần đồng bộ hoá. Các sự kiện kích hoạt này thông báo cho từng thiết bị ngoại vi về trạng thái của thiết bị ngoại vi được ghép nối bất cứ khi nào có một thao tác có thể ảnh hưởng đến quá trình đồng bộ hoá. Các điều kiện kích hoạt là:
-
Trong lệnh
«Start»
của AudioControlPoint, trạng thái kết nối hiện tại của phía còn lại của thiết bị hai tai sẽ được cung cấp. -
Bất cứ khi nào có thao tác kết nối, ngắt kết nối hoặc cập nhật tham số kết nối trên một thiết bị ngoại vi, lệnh
«Status»
của AudioControlPoint sẽ được gửi đến phía bên kia của thiết bị hai tai.
Định dạng và thời gian của gói âm thanh
Việc đóng gói các khung âm thanh (khối mẫu) vào các gói cho phép thiết bị trợ thính lấy thời gian từ các điểm neo thời gian của lớp liên kết. Để đơn giản hoá quy trình triển khai:
- Khung âm thanh phải luôn khớp với khoảng thời gian kết nối. Ví dụ: nếu khoảng thời gian kết nối là 20 mili giây và tốc độ lấy mẫu là 16 kHz, thì khung âm thanh phải chứa 320 mẫu.
- Tốc độ lấy mẫu trong hệ thống bị giới hạn ở bội số của 8 kHz để luôn có số nguyên mẫu trong một khung hình, bất kể thời gian khung hình hoặc khoảng thời gian kết nối.
- Một byte tuần tự phải đặt trước các khung âm thanh. Byte trình tự phải được đếm bằng cách lặp lại và cho phép thiết bị ngoại vi phát hiện sự không khớp hoặc tràn bộ nhớ đệm.
-
Khung âm thanh phải luôn nằm trong một gói LE duy nhất. Khung âm thanh phải được gửi dưới dạng một gói L2CAP riêng biệt. Kích thước của PDU LE LL phải là:
kích thước tải trọng âm thanh + 1 (bộ đếm trình tự) + 6 (4 cho tiêu đề L2CAP, 2 cho SDU) - Sự kiện kết nối phải luôn đủ lớn để chứa 2 gói âm thanh và 2 gói trống cho một ACK nhằm dự trữ băng thông cho việc truyền lại. Xin lưu ý rằng gói âm thanh có thể bị phân mảnh bởi bộ điều khiển Bluetooth của trung tâm. Thiết bị ngoại vi phải có khả năng nhận nhiều hơn 2 gói âm thanh phân mảnh cho mỗi sự kiện kết nối.
Để mang lại cho trung tâm một số tính linh hoạt, độ dài gói G.722 không được chỉ định. Độ dài gói G.722 có thể thay đổi tuỳ theo khoảng thời gian kết nối mà trung tâm thiết lập.
Định dạng octet đầu ra G.722 tham chiếu đến Rec. ITU-T G.722 (09/2012) phần 1.4.4 "Multiplexer"
Đối với tất cả các bộ mã hoá và giải mã mà thiết bị ngoại vi hỗ trợ, thiết bị ngoại vi phải hỗ trợ các thông số kết nối bên dưới. Đây là danh sách không đầy đủ về các cấu hình mà trung tâm có thể triển khai.
Bộ mã hoá và giải mã | Tốc độ bit | Khoảng thời gian kết nối | Độ dài CE (PHY 1M/2M) | Kích thước tải trọng âm thanh |
---|---|---|---|---|
G.722 @ 16 kHz | 64 kbit/giây | 20 mili giây | 5000/3750 us | 160 byte |
Bắt đầu và dừng luồng âm thanh
Trước khi bắt đầu luồng âm thanh, trung tâm sẽ truy vấn các thiết bị ngoại vi và thiết lập một codec mẫu số chung. Sau đó, quá trình thiết lập luồng sẽ diễn ra theo trình tự sau:
- PSM và RenderDelay (không bắt buộc) sẽ được đọc. Các giá trị này có thể được lưu vào bộ nhớ đệm bởi trung tâm.
- Kênh CoC L2CAP được mở – ban đầu, thiết bị ngoại vi phải cấp 8 tín chỉ.
- Một yêu cầu cập nhật kết nối sẽ được gửi để chuyển đường liên kết sang các tham số cần thiết cho bộ mã hoá và giải mã đã chọn. Trung tâm có thể thực hiện yêu cầu cập nhật kết nối này trước kết nối CoC ở bước trước.
- Cả máy chủ trung tâm và máy chủ ngoại vi đều chờ sự kiện cập nhật hoàn tất.
-
Khởi động lại bộ mã hoá âm thanh và đặt lại số lượng chuỗi gói thành 0.
Lệnh
«Start»
có các tham số liên quan được phát trên AudioControlPoint. Thiết bị trung tâm sẽ chờ thông báo trạng thái thành công của lệnh«Start»
trước đó từ thiết bị ngoại vi trước khi truyền phát. Thời gian chờ này giúp thiết bị ngoại vi có thời gian chuẩn bị quy trình phát âm thanh. Trong quá trình phát trực tuyến âm thanh, bản sao phải có sẵn ở mọi sự kiện kết nối, ngay cả khi độ trễ của bản sao hiện tại có thể khác 0. - Thiết bị ngoại vi lấy gói âm thanh đầu tiên từ hàng đợi nội bộ (số thứ tự 0) và phát gói đó.
Vấn đề chính là lệnh "Dừng" để đóng luồng âm thanh. Sau lệnh này, thiết bị ngoại vi không cần phải có sẵn trong mọi sự kiện kết nối. Để khởi động lại tính năng phát trực tuyến âm thanh, hãy thực hiện lại trình tự trên, bắt đầu từ bước 5. Khi không phát trực tuyến âm thanh, thiết bị trung tâm vẫn phải duy trì kết nối LE cho các dịch vụ GATT.
Thiết bị ngoại vi không được đưa ra yêu cầu cập nhật kết nối cho thiết bị trung tâm. Để tiết kiệm pin, trung tâm có thể gửi yêu cầu cập nhật kết nối đến thiết bị ngoại vi khi thiết bị này không phát trực tuyến âm thanh.