Các thiết bị trợ thính (HA) có thể cải thiện khả năng truy cập trên các 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 Low Energy (BLE). CoC sử dụng một bộ đệm đàn hồi của một số gói âm thanh để duy trì luồng âm thanh ổn định, ngay cả khi mất gói. Bộ đệm này cung cấp chất lượng âm thanh cho các thiết bị trợ thính nhưng không có độ trễ.
Thiết kế của CoC tham khảo Thông số kỹ thuật lõi Bluetooth Phiên bản 5 (BT). Để phù hợp với các thông số kỹ thuật cốt lõi, tất cả các giá trị nhiều byte trên trang này sẽ được đọc là little-endian.
Thuật ngữ
- Trung tâm - thiết bị Android quét 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 thiết bị 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 bộ phận âm thanh duy nhất. Nếu thiết bị ngoại vi bị thiếu do khớp đơn âm hoặc mất kết nối, thì trung tâm sẽ trộn kênh âm thanh trái và phải và 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 coi như mất liên kết đến thiết bị âm thanh. Trong những trường hợp đó, trung tâm định tuyến âm thanh đến đầu ra khác.
Hình 1. Cấu trúc liên kết để ghép nối máy trợ thính với thiết bị di động Android sử dụng CoC qua BLE
Khi thiết bị trung tâm không truyền dữ liệu âm thanh đến thiết bị ngoại vi và có thể duy trì kết nối BLE, thiết bị 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 truyền dữ liệu đến máy chủ GATT nằm trên thiết bị ngoại vi.
Khi ghép nối và kết nối các thiết bị trợ thính, trung tâm sẽ:
- 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 tồn tại một cặp hợp lệ. Trung tâm sẽ cố gắng kết nối hoặc kết nối lại với thiết bị được 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 việc ghép nối bị xóa.
Trong các trường hợp trên, ghép nối đề cập đến hành động đăng ký một bộ thiết bị trợ thính với UUID nhất định và các bộ chỉ định trái/phải trong HĐH, 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 thiết bị trung tâm và thiết bị ngoại vi phải:
- triển khai bộ điều khiển BT 4.2 trở lên tương thích. LE Secure Connections rất được khuyến khích.
- có trung tâm hỗ trợ ít nhất 2 liên kết LE đồng thời với các thông số như mô tả trong phần Audio packet format and timing .
- có hỗ trợ ngoại vi ít nhất 1 liên kết LE với các thông số được mô tả trong Định dạng gói âm thanh và thời gian .
- có kiểm soát luồng dựa trên tín dụng LE [BT Tập 3, Phần A, Phần 10.1]. Các thiết bị phải hỗ trợ kích thước MTU và MPS tối thiểu 167 byte trên CoC và có thể lưu vào bộ đệm tối đa 8 gói.
- có phần mở rộng độ dài dữ liệu LE [BT Tập 6, Phần B, Phần 5.1.9] với tải trọng ít nhất là 167 byte.
- yêu cầu 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 không. - có trung tâm duy trì thông lượng dữ liệu cho hai kết nối LE CoC với hai 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 ở định dạng gói Âm thanh và thời gian .
- yêu cầu thiết bị ngoại vi đặt các tham số
MaxRxOctets
vàMaxRxTime
trong các khungLL_LENGTH_REQ
hoặcLL_LENGTH_RSP
thành các giá trị bắt buộc 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 hóa bộ lập lịch thời gian của nó khi tính toán lượng thời gian cần thiết để nhận khung.
Chúng tôi thực sự khuyên rằng thiết bị trung tâm và thiết bị ngoại vi hỗ trợ PHY 2 MB như được chỉ định trong thông số kỹ thuật BT 5.0. Trung tâm sẽ hỗ trợ các liên kết âm thanh tối thiểu 64 kbit/s 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ã hóa lớp liên kết và nhảy tần.
Dịch vụ ASHA GATT
Thiết bị ngoại vi sẽ triển khai dịch vụ máy chủ GATT Truyền phát âm thanh cho thiết bị trợ thính (ASHA) được mô tả bên dưới. Thiết bị ngoại vi sẽ quảng cáo dịch vụ này khi ở chế độ có thể phát hiện chung để thiết bị trung tâm nhận ra âm thanh chìm. Mọi hoạt động phát trực tuyến âm thanh LE đều phải yêu cầu mã hóa. Truyền phát âm thanh BLE bao gồm các đặc điểm sau:
đặc trưng | Của cải | Sự miêu tả |
---|---|---|
ReadOnlyProperties | Đọc | Xem ReadOnlyProperties . |
Điểm Kiểm Soát Âm Thanh | Viết và Viết mà không có phản hồi | Điểm kiểm soát luồng âm thanh. Xem AudioControlPoint . |
Âm ThanhTrạng TháiĐiểm | Đọ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ó phản hồi | Byte nằm trong khoảng từ -128 đến 0 cho biết mức độ suy giảm áp dụng cho tín hiệu âm thanh được phát trực tuyến, nằm trong khoảng từ -48 dB đến 0 dB. Cài đặt -128 sẽ được hiểu là tắt tiếng hoàn toàn, tức là mức âm lượng không tắt tiếng thấp nhất là -127 tương đương với mức suy giảm -47,625 dB. Ở cài đặt 0, âm hình sin từ đường ray đến đường ray được phát trực tuyến sẽ thể hiện mức tương đương đầu vào 100 dBSPL trên thiết bị trợ thính. Thiết bị trung tâm sẽ phát trực tuyến theo tỷ lệ đầy đủ danh nghĩa và sử dụng biến này để đặt mức trình bày mong muốn ở thiết bị ngoại vi. |
LE_PSM_OUT | Đọc | PSM để sử dụng để kết nối kênh âm thanh. Được chọn từ dải động [BT Tập 3, Phần A, Phần 4.22] |
Các UUID được gán cho dịch vụ và các đặc điểm:
UUID dịch vụ : {0xFDF0}
đặc trưng | UUID |
---|---|
ReadOnlyProperties | {6333651e-c481-4a3e-9169-7c902aad37bb} |
Điểm Kiểm Soát Âm Thanh | {f0d4de7e-4a88-476c-9d9f-1937b0996cc0} |
Trạng thái âm thanh | {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 sẽ triển khai Dịch vụ thông tin thiết bị để cho phép 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 | Sự miêu tả |
---|---|
0 | Phiên bản - phải là 0x01 |
1 | Xem Khả năng của thiết bị . |
2-9 | Xem HiSyncId . |
10 | Xem FeatureMap . |
11-12 | Kết xuất chậm trễ. Đây là thời gian, tính bằng mili giây, kể từ khi thiết bị ngoại vi nhận được khung âm thanh cho đến khi thiết bị ngoại vi hiển thị đầu ra. Các byte này có thể được sử dụng để trì hoãn video đồng bộ hóa với âm thanh. |
13-14 | Để dành mai sau dùng. Khởi tạo thành số không. |
15-16 | ID Codec được hỗ trợ . Đây là một mặt nạ bit của ID codec được hỗ trợ. Vị trí 1 ở vị trí bit tương ứng với một codec được hỗ trợ. Ví dụ: 0x0002 cho biết G.722 ở 16 kHz được hỗ trợ. Tất cả các bit khác sẽ được đặt thành 0. |
Khả năng của thiết bị
Chút | Sự miêu tả |
---|---|
0 | Phía thiết bị (Trái: 0, Phải: 1). |
1 | Một bên (0) / Hai bên (1). Cho biết liệu thiết bị có hoạt động độc lập và nhận dữ liệu đơn hay không hoặc nếu thiết bị là một phần của bộ. |
2-7 | Dành riêng (đặt thành 0). |
HiSyncID
Trường này phải là duy nhất cho tất cả các thiết bị hai tai nhưng nó phải giống nhau cho nhóm bên trái và bên phải.
byte | Sự miêu tả |
---|---|
0-1 | ID của nhà sản xuất. Đó là Mã định danh Công ty do BTSIG chỉ định. |
2-7 | ID duy nhất xác định bộ máy trợ thính. ID này phải được đặt giống nhau trên cả thiết bị ngoại vi bên trái và bên phải. |
Tính năngBản đồ
Chút | Sự miêu tả |
---|---|
0 | Hỗ trợ phát trực tuyến đầu ra âm thanh LE CoC (Có/Không). |
1-7 | Dành riêng (đặt thành 0). |
mã codec
Nếu bit được đặt, thì codec cụ thể đó được hỗ trợ.
ID / Số bit | Codec và tỷ lệ mẫu | tốc độ bit yêu cầu | Khung thời gian | Bắt buộc trên trung tâm (C) hoặc ngoại vi (P) |
---|---|---|---|---|
0 | Để dành | Để dành | Để dành | Để dành |
1 | G.722 @ 16 kHz | 64 kbit/s | Biến đổi | C và P |
2-15 được bảo lưu. 0 cũng được bảo lưu. |
Điểm Kiểm Soát Âm Thanh
Không thể sử dụng điểm kiểm soát này khi đóng LE CoC. Xem Bắt đầu và dừng luồng âm thanh để biết mô tả quy trình.
mã hóa | Tranh luận | thủ tục phụ GATT | Sự miêu tả |
---|---|---|---|
1 «Start» |
| Viết kèm theo phản hồi và mong đợi một thông báo trạng thái bổ sung thông qua đặc tính AudioStatusPoint . | Chỉ thị thiết bị ngoại vi đặt lại codec và bắt đầu phát lại khung hình 0. Trường codec cho biết ID codec sẽ sử dụng cho lần phát lại này. Ví dụ: trường codec là "1" cho G.722 ở 16k Hz. 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 sẽ không yêu cầu cập nhật kết nối trước khi nhận được opcode «Stop» . |
2 «Stop» | Không có | Viết kèm theo phản hồi và mong đợi một thông báo trạng thái bổ sung thông qua đặc tính AudioStatusPoint . | Hướng dẫn thiết bị ngoại vi ngừng kết xuất âm thanh. Trình tự thiết lập âm thanh mới sẽ được bắt đầu sau điểm dừng này để hiển thị lại âm thanh. |
3 «Status» |
| Viết mà không có phản hồi | Thông báo cho thiết bị ngoại vi được kết nối rằng có một cập nhật trạng thái trên thiết bị ngoại vi kia. Trường được kết nối cho biết loại cập nhật:
|
Âm ThanhTrạng TháiĐiểm
Trường báo cáo trạng thái cho điểm kiểm soát âm thanh
mã lệnh | Sự miêu tả |
---|---|
0 | Trạng thái OK |
-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ụ ASHA GATT
UUID dịch vụ phải có trong gói quảng cáo. Trong quảng cáo hoặc khung phản hồi quét, thiết bị ngoại vi phải có Dữ liệu dịch vụ:
bù byte | Tên | Sự miêu tả |
---|---|---|
0 | Độ dài QUẢNG CÁO | >= 0x09 |
1 | Loại QUẢNG CÁO | 0x16 (Dữ liệu dịch vụ - UUID 16 bit) |
2-3 | Dịch vụ UUID | 0xFDF0 (cuối nhỏ) Lưu ý: Đây là ID tạm thời. |
4 | Phiên bản giao thức | 0x01 |
5 | khả năng |
|
6-9 | HiSyncID bị cắt bớt | Bốn byte ít quan trọng nhất của HiSyncId . Các byte này phải là phần ngẫu nhiên nhất của ID. |
Các thiết bị ngoại vi phải có loại dữ liệu Complete Local Name cho biết tên của thiết bị trợ thính. Tên này sẽ được sử 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 sẽ không chỉ ra kênh trái hoặc 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à loại dữ liệu dịch vụ ASHA trong cùng một loại khung (ADV hoặc SCAN RESP), thì hai loại dữ liệu ("Tên cục bộ đầy đủ" và "Dữ liệu dịch vụ cho dịch vụ ASHA") sẽ xuất hiện trong cùng một khung. Điều này cho phép máy quét thiết bị di động nhận được 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 quảng cáo với tốc độ đủ nhanh để thiết bị di động nhanh chóng phát hiện ra các thiết bị ngoại vi và liên kết với chúng.
Đồng bộ hóa thiết bị ngoại vi trái và phải
Để hoạt động với Bluetooth trên thiết bị di động Android, các thiết bị ngoại vi có trách nhiệm đảm bảo rằng chúng được đồng bộ hóa. Việc phát lại trên các thiết bị ngoại vi bên trái và bên phải cần được đồng bộ hóa kịp thời. Cả hai thiết bị ngoại vi phải phát lại 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ộ hóa thời gian của chúng bằng cách sử dụng số thứ tự được thêm vào trước mỗi gói của tải trọng âm thanh. Trung tâm đảm bảo rằng các gói âm thanh được phát đồng thời trên mỗi thiết bị ngoại vi 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 độ mẫ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 Thời gian và định dạng gói âm thanh .
Trung tâm hỗ trợ bằng cách cung cấp trình kích hoạt cho các thiết bị hai tai khi có thể cần phải đồng bộ hóa. Các trình 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 của nó bất cứ khi nào có một hoạt động có thể ảnh hưởng đến việc đồng bộ hóa. Các kích hoạt là:
- Là một phần của lệnh
«Start»
của AudioControlPoint, trạng thái kết nối hiện tại của phía bên kia của thiết bị hai tai được cung cấp. - Bất cứ khi nào có hoạt động kết nối, ngắt kết nối hoặc cập nhật thông 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 gói âm thanh và thời gian
Việc đóng gói các khung âm thanh (khối mẫu) thành các gói cho phép thiết bị trợ thính xác định thời gian từ các neo định thời của lớp liên kết. Để đơn giản hóa việc thực hiện:
- 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 sẽ chứa 320 mẫu.
- Tốc độ lấy mẫu trong hệ thống được giới hạn ở bội số của 8kHz để luôn có số lượng mẫu nguyên trong một khung bất kể thời gian của khung hoặc khoảng thời gian kết nối.
- Một byte trình tự sẽ thêm trước các khung âm thanh. Byte thứ tự sẽ được đếm với tính năng bao quanh và cho phép thiết bị ngoại vi phát hiện bộ đệm không khớp hoặc tràn.
- Một khung âm thanh sẽ luôn phù hợp với một gói LE duy nhất. Khung âm thanh sẽ được gửi dưới dạng gói L2CAP riêng biệt. Kích thước của LE LL PDU sẽ 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) - Một 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 để dự trữ băng thông cho các lần truyền lại. 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 bị phân mảnh cho mỗi sự kiện kết nối.
Để cung cấp 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 tin G.722 có thể thay đổi dựa trên 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 Rec. ITU-T G.722 (09/2012) phần 1.4.4 "Bộ ghép kênh"
Đối với tất cả các codec mà thiết bị ngoại vi hỗ trợ, thiết bị ngoại vi sẽ hỗ trợ các tham số kết nối bên dưới. Đây là danh sách không đầy đủ các cấu hình mà trung tâm có thể triển khai.
giải mã | tốc độ bit | Khoảng thời gian kết nối | Chiều dài CE (1M/2M PHY) | Kích thước tải trọng âm thanh |
---|---|---|---|---|
G.722 @ 16 kHz | 64 kbit/s | 20 mili giây | 5000/3750 chúng tôi | 160 byte |
Bắt đầu và dừng luồng âm thanh
Trước khi bắt đầu một luồng âm thanh, trung tâm truy vấn các thiết bị ngoại vi và thiết lập một codec mẫu số chung. Quá trình thiết lập luồng sau đó tiến hành theo trình tự sau:
- PSM và tùy chọn, RenderDelay được đọc. Các giá trị này có thể được lưu trữ bởi trung tâm.
- Kênh CoC L2CAP được mở – ban đầu thiết bị ngoại vi sẽ cấp 8 tín dụng.
- Một bản cập nhật kết nối được phát hành để chuyển liên kết sang các tham số cần thiết cho codec đã chọn. Trung tâm có thể thực hiện 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ã hóa âm thanh và đặt lại số thứ tự gói thành 0. Lệnh
«Start»
với các thông số liên quan được đưa ra trên AudioControlPoint. Trung tâm đợi 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ị đường dẫn phát lại âm thanh của nó. Trong quá trình truyền phát âm thanh, bản sao sẽ có sẵn ở mọi sự kiện kết nối mặc dù độ trễ hiện tại của bản sao có thể khác không. - Thiết bị ngoại vi lấy gói âm thanh đầu tiên từ hàng đợi bên trong của nó (số thứ tự 0) và phát nó.
Trung tâm đưa ra 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 trên mọi sự kiện kết nối. Để khởi động lại quá trình truyền phát âm thanh, hãy thực hiện trình tự trên, bắt đầu từ bước 5. Khi trung tâm không truyền phát âm thanh, nó vẫn phải duy trì kết nối LE cho các dịch vụ GATT.
Thiết bị ngoại vi sẽ không đưa ra một bản cập nhật kết nối đến thiết bị trung tâm. Để tiết kiệm năng lượng, trung tâm có thể đưa ra bản cập nhật kết nối cho thiết bị ngoại vi khi nó không phát trực tuyến âm thanh.