يمكن أن تتمتع أجهزة المعينات السمعية (HA) بإمكانية وصول محسنة على الأجهزة المحمولة التي تعمل بنظام Android باستخدام قنوات L2CAP (CoC) الموجهة للاتصال عبر تقنية Bluetooth منخفضة الطاقة (BLE). تستخدم CoC مخزنًا مؤقتًا مرنًا للعديد من حزم الصوت للحفاظ على تدفق ثابت للصوت ، حتى في حالة فقدان الحزمة. يوفر هذا المخزن المؤقت جودة صوت لأجهزة المعينات السمعية على حساب زمن الوصول.
يشير تصميم CoC إلى الإصدار 5 من مواصفات Bluetooth الأساسية (BT). للبقاء متماشية مع المواصفات الأساسية ، يجب قراءة جميع القيم متعددة البايت في هذه الصفحة على أنها قيم صغيرة.
المصطلح
- مركزي - جهاز Android الذي يفحص الإعلانات عبر البلوتوث.
- الطرفية - أداة السمع التي ترسل حزم الإعلانات عبر البلوتوث.
طوبولوجيا الشبكة وبنية النظام
عند استخدام CoC للمعينات السمعية ، يفترض هيكل الشبكة وجود جهاز مركزي واحد وجهازين طرفيين ، أحدهما يسار والآخر يمين ، كما هو موضح في الشكل 1 . ينظر نظام صوت Bluetooth إلى الأجهزة الطرفية اليسرى واليمنى على أنها حوض صوت واحد. إذا كان أحد الأجهزة الطرفية مفقودًا ، بسبب التوافق أحادي السمع أو فقدان الاتصال ، فسيقوم الجهاز المركزي بخلط قناة الصوت اليمنى واليسرى وينقل الصوت إلى الأجهزة الطرفية المتبقية. إذا فقد الجهاز المركزي الاتصال بكلا الجهازين الطرفيين ، فإن الجهاز المركزي يعتبر الرابط إلى مصدر الصوت مفقودًا. في تلك الحالات ، يقوم المركز بتوجيه الصوت إلى إخراج آخر.
الشكل 1. مخطط إقران المعينات السمعية بأجهزة Android المحمولة باستخدام CoC عبر BLE
عندما لا يقوم الجهاز المركزي بدفق البيانات الصوتية إلى الأجهزة الطرفية ويمكنه الحفاظ على اتصال BLE ، يجب ألا ينفصل الجهاز المركزي عن الجهاز المحيطي. يسمح الحفاظ على الاتصال بنقل البيانات إلى خادم الجات الموجود على الجهاز الطرفي.
عند إقران وتوصيل أجهزة السمع ، يجب على الجهاز المركزي:
- تتبع أحدث الأجهزة الطرفية اليسرى واليمنى المقترنة.
- افترض أن الأجهزة الطرفية قيد الاستخدام في حالة وجود اقتران صالح. سيحاول المركز الاتصال أو إعادة الاتصال بالجهاز المقترن عند فقد الاتصال.
- افترض أن الأجهزة الطرفية لم تعد قيد الاستخدام إذا تم حذف الاقتران.
في الحالات المذكورة أعلاه ، يشير الاقتران إلى إجراء تسجيل مجموعة من المعينات السمعية باستخدام UUID محدد ومعرفات أيسر / يمين في نظام التشغيل ، وليس عملية إقران Bluetooth.
متطلبات النظام
لتنفيذ مدونة قواعد السلوك بشكل صحيح للحصول على تجربة مستخدم جيدة ، يجب أن تقوم أنظمة Bluetooth في الأجهزة المركزية والطرفية بما يلي:
- تنفيذ وحدة تحكم BT 4.2 متوافقة أو أعلى. يوصى بشدة باستخدام LE Secure Connections.
- الحصول على الدعم المركزي على الأقل ارتباطين LE متزامنين مع معلمات كما هو موضح في تنسيق حزمة الصوت والتوقيت .
- لديك دعم طرفي على الأقل ارتباط 1 LE مع المعلمات الموصوفة في تنسيق حزمة الصوت والتوقيت .
- لديك تحكم في التدفق قائم على الائتمان LE [BT Vol 3، Part A، Sec 10.1]. يجب أن تدعم الأجهزة حجم MTU و MPS لا يقل عن 167 بايت على CoC وأن تكون قادرة على تخزين ما يصل إلى 8 حزم.
- لها امتداد طول بيانات LE [BT Vol 6، Part B، Sec 5.1.9] بحمولة لا تقل عن 167 بايت.
- اجعل الجهاز المركزي يدعم أمر تحديث اتصال HCI LE ويتوافق مع معلمات
maximum_CE_Length
غير الصفري والحدminimum_CE_Length
. - اجعل الجهاز المركزي يحافظ على إنتاجية البيانات لتوصيلي LE CoC إلى جهازين طرفيين مختلفين مع فترات الاتصال وأحجام الحمولة في تنسيق وتوقيت حزم الصوت .
- اجعل الجهاز المحيطي يضبط معلمات
MaxRxOctets
وMaxRxTime
في الإطاراتLL_LENGTH_REQ
أوLL_LENGTH_RSP
لتكون أصغر القيم المطلوبة اللازمة لهذه المواصفات. يتيح ذلك للمركز تحسين جدولة الوقت عند حساب مقدار الوقت اللازم لاستقبال إطار.
يوصى بشدة أن يدعم المركزين والطرفين 2 ميجابايت PHY كما هو محدد في مواصفات BT 5.0. يجب أن يدعم المركز الوصلات الصوتية بمعدل 64 كيلوبت / ثانية على الأقل على كل من 1M و 2M PHY. لا يجوز استخدام PHY بعيد المدى BLE.
يستخدم CoC آليات Bluetooth القياسية لتشفير طبقة الارتباط وقفز التردد.
خدمات آشا جات
يجب على الجهاز الطرفي تنفيذ خدمة خادم GATT للبث الصوتي للمساعدة على السمع (ASHA) الموضحة أدناه. يجب أن يعلن الجهاز الطرفي عن هذه الخدمة عندما يكون في وضع قابل للاكتشاف بشكل عام للسماح للمركز بالتعرف على مصدر الصوت. يجب أن تتطلب أي عمليات دفق صوت LE التشفير. يتكون دفق الصوت BLE من الخصائص التالية:
صفة مميزة | ملكيات | وصف |
---|---|---|
عقارات للقراءة فقط | يقرأ | انظر ReadOnlyProperties . |
AudioControlPoint | اكتب واكتب بدون رد | نقطة تحكم لدفق الصوت. انظر AudioControlPoint . |
AudioStatusPoint | قراءة / إعلام | حقل تقرير الحالة لنقطة التحكم في الصوت. انظر AudioStatusPoint |
مقدار | اكتب بدون رد | بايت بين -128 و 0 يشير إلى مقدار التوهين المراد تطبيقه على إشارة الصوت المتدفقة ، والتي تتراوح من -48 ديسيبل إلى 0 ديسيبل. يجب تفسير الضبط -128 على أنه مكتوم تمامًا ، أي أن أدنى مستوى صوت غير مكتوم هو -127 وهو ما يعادل التوهين -47.625 ديسيبل. عند الإعداد 0 ، يجب أن تمثل نغمة الجيب المتدفقة من السكك الحديدية إلى السكك الحديدية ما يعادل إدخال 100 dBSPL على جهاز السمع. يجب أن يتدفق المركز بالمقياس الكامل الاسمي ويستخدم هذا المتغير لضبط مستوى العرض المطلوب في الطرف. |
LE_PSM_OUT | يقرأ | PSM لاستخدامه لتوصيل قناة الصوت. ليتم انتقاؤها من النطاق الديناميكي [BT Vol 3، Part A، Sec 4.22] |
المعرفات الفريدة UUID المخصصة للخدمة والخصائص:
UUID للخدمة : {0xFDF0}
صفة مميزة | UUID |
---|---|
عقارات للقراءة فقط | {6333651e-c481-4a3e-9169-7c902aad37bb} |
AudioControlPoint | {f0d4de7e-4a88-476c-9d9f-1937b0996cc0} |
الصوت | {38663f1a-e711-4cac-b641-326b56404837} |
مقدار | {00e4ca9e-ab14-41e4-8823-f9e70c7e91df} |
LE_PSM_OUT | {2d410339-82b6-42aa-b34e-e2e01df8cc1a} |
بالإضافة إلى خدمة ASHA GATT ، يجب على الجهاز الطرفي أيضًا تنفيذ خدمة معلومات الجهاز للسماح للمركز بالكشف عن أسماء الشركة المصنعة وأسماء الأجهزة الطرفية.
عقارات للقراءة فقط
تحتوي ReadOnlyProperties على القيم التالية:
بايت | وصف |
---|---|
0 | الإصدار - يجب أن يكون 0x01 |
1 | انظر DeviceCapabilities . |
2-9 | راجع HiSyncId . |
10 | انظر FeatureMap . |
11-12 | RenderDelay. هذا هو الوقت ، بالمللي ثانية ، من وقت استقبال الجهاز المحيطي لإطار صوتي حتى يقوم الجهاز المحيطي بإخراج الإخراج. يمكن استخدام هذه البايت لتأخير الفيديو لمزامنته مع الصوت. |
13-14 | محجوزة للاستخدام في المستقبل. التهيئة إلى الأصفار. |
15-16 | معرّفات الترميز المدعومة. هذا هو قناع بت لمعرفات الترميز المدعومة. يتوافق 1 في موقع بت مع برنامج ترميز مدعوم. على سبيل المثال ، يشير 0x0002 إلى أن G.722 عند 16 كيلو هرتز مدعوم. يجب تعيين جميع وحدات البت الأخرى على 0. |
DeviceCapabilities
قليل | وصف |
---|---|
0 | جانب الجهاز (0: يسار ، 1: يمين) |
1 | يشير إلى ما إذا كان الجهاز قائمًا بذاته ويتلقى بيانات أحادية ، أو إذا كان الجهاز جزءًا من مجموعة (0: أحادي السمع ، 1: بكلتا الأذنين) |
2 | يدعم الجهاز CSIS (0: غير مدعوم ، 1: مدعوم) |
3-7 | محجوز (ضبط على 0) |
HiSyncID
يجب أن يكون هذا الحقل فريدًا لجميع أجهزة الأذنين ولكن يجب أن يكون هو نفسه للمجموعة اليمنى واليسرى.
بايت | وصف |
---|---|
0-1 | معرف الشركة المصنعة. إنها معرّفات الشركة المعينة من قبل BTSIG. |
2-7 | معرف فريد يحدد مجموعة المعينات السمعية. يجب تعيين هذا المعرف على نفس المعرف على كلا الطرفين الأيمن والأيسر. |
FeatureMap
قليل | وصف |
---|---|
0 | دعم تدفق خرج الصوت LE CoC (نعم / لا). |
1-7 | محجوز (مضبوط على 0). |
معرفات الترميز
إذا تم تعيين البت ، فسيكون برنامج الترميز هذا هو الدعم.
رقم المعرف / البت | معدل الترميز والعينة | معدل البت المطلوب | وقت الإطار | إلزامي على المركز (C) أو المحيطي (P) |
---|---|---|---|---|
0 | محجوز | محجوز | محجوز | محجوز |
1 | G.722 @ 16 كيلو هرتز | 64 كيلوبت / ثانية | عامل | C و P |
2-15 محجوزة. 0 محجوز أيضًا. |
AudioControlPoint
لا يمكن استخدام نقطة التحكم هذه عند إغلاق LE CoC. راجع بدء دفق صوتي وإيقافه للحصول على وصف الإجراء.
كود التشغيل | الحجج | الإجراء الفرعي للجات | وصف |
---|---|---|---|
1 «Start» |
| اكتب مع الرد ، وتوقع إشعارًا إضافيًا بالحالة عبر خاصية AudioStatusPoint . | يوجه الجهاز الطرفي لإعادة تعيين برنامج الترميز وبدء تشغيل الإطار 0. يشير حقل برنامج الترميز إلى معرف برنامج الترميز المراد استخدامه لهذا التشغيل. على سبيل المثال ، حقل برنامج الترميز هو "1" لـ G.722 بسرعة 16 كيلو هرتز. يشير حقل بت نوع الصوت إلى نوع (أنواع) الصوت الموجودة في الدفق:
لن يطلب الجهاز الطرفي تحديثات الاتصال قبل استلام كود التشغيل «Stop» . |
2 «Stop» | لا أحد | اكتب مع الرد ، وتوقع إشعارًا إضافيًا بالحالة عبر خاصية AudioStatusPoint . | يوجه الجهاز الطرفي لإيقاف عرض الصوت. يجب بدء تسلسل إعداد صوت جديد بعد هذا التوقف لتقديم الصوت مرة أخرى. |
3 «Status» |
| اكتب بدون رد | يُعلم الجهاز الطرفي المتصل بوجود تحديث للحالة على الجهاز الطرفي الآخر. يشير الحقل المتصل إلى نوع التحديث:
|
AudioStatusPoint
حقل تقرير الحالة لنقطة التحكم في الصوت
أكواد العمل | وصف |
---|---|
0 | الوضع جيد |
-1 | طلب مجهول |
-2 | معلمات غير قانونية |
إعلانات لخدمة ASHA GATT
يجب أن يكون UUID الخاص بالخدمة في حزمة الإعلان. في أي من الإعلان أو إطار استجابة المسح الضوئي ، يجب أن تحتوي الأجهزة الطرفية على بيانات الخدمة:
إزاحة البايت | اسم | وصف |
---|---|---|
0 | طول ميلادي | > = 0x09 |
1 | نوع م | 0x16 (بيانات الخدمة - 16 بت UUID) |
2-3 | UUID للخدمة | 0xFDF0 (صغير الحجم) ملاحظة: هذا معرف مؤقت. |
4 | إصدار البروتوكول | 0x01 |
5 | الإمكانية |
|
6-9 | HiSyncID مقطوع | أربعة بايت الأقل أهمية من HiSyncId . يجب أن تكون هذه البايتات الجزء الأكثر عشوائية من المعرف. |
يجب أن تحتوي الأجهزة الطرفية على نوع بيانات الاسم المحلي الكامل الذي يشير إلى اسم المعينة السمعية. سيتم استخدام هذا الاسم على واجهة مستخدم الجهاز المحمول حتى يتمكن المستخدم من تحديد الجهاز المناسب. يجب ألا يشير الاسم إلى القناة اليسرى أو اليمنى حيث يتم توفير هذه المعلومات في DeviceCapabilities .
إذا وضعت الأجهزة الطرفية الاسم وأنواع بيانات خدمة ASHA في نفس نوع الإطار (ADV أو SCAN RESP) ، فسيظهر نوعا البيانات ("الاسم المحلي الكامل" و "بيانات الخدمة لخدمة ASHA") في نفس الإطار. يتيح ذلك لماسح الجهاز المحمول الحصول على كلتا البيانات في نفس نتيجة المسح.
أثناء الاقتران الأولي ، من المهم أن تعلن الأجهزة الطرفية بمعدل سريع بما يكفي للسماح للجهاز المحمول باكتشاف الأجهزة الطرفية بسرعة والارتباط بها.
مزامنة الأجهزة الطرفية اليمنى واليسرى
للعمل مع Bluetooth على أجهزة Android المحمولة ، تكون الأجهزة الطرفية مسؤولة عن ضمان مزامنتها. يجب مزامنة التشغيل على الأجهزة الطرفية اليمنى واليسرى في الوقت المناسب. يجب أن يقوم كلا الجهازين الطرفيين بتشغيل عينات صوتية من المصدر في نفس الوقت.
يمكن للأجهزة الطرفية مزامنة وقتها باستخدام رقم تسلسلي مُجهز مسبقًا لكل حزمة من حمولة الصوت. يضمن المركز أن حزم الصوت التي من المفترض تشغيلها في نفس الوقت على كل طرف لها نفس رقم التسلسل. يتزايد الرقم التسلسلي بمقدار واحد بعد كل حزمة صوتية. يبلغ طول كل رقم تسلسلي 8 بت ، لذا ستتكرر الأرقام التسلسلية بعد 256 حزمة صوتية. نظرًا لأن حجم كل حزمة صوت ومعدل عينة ثابتان لكل اتصال ، يمكن للأجهزة الطرفية استنتاج وقت التشغيل النسبي. لمزيد من المعلومات حول حزمة الصوت ، راجع تنسيق حزمة الصوت وتوقيتها .
يساعد الجهاز المركزي من خلال توفير مشغلات للأجهزة بكلتا الأذنين عند الحاجة إلى حدوث التزامن. تقوم هذه المشغلات بإبلاغ كل طرف عن حالة الجهاز المحيطي المقترن كلما كانت هناك عملية قد تؤثر على المزامنة. المحفزات هي:
- كجزء من أمر
«Start»
الخاص بـ AudioControlPoint ، يتم تقديم حالة الاتصال الحالية للجانب الآخر من الأجهزة ذات الأذنين. - عندما يكون هناك اتصال أو فصل أو عملية تحديث معلمة الاتصال على طرف طرفي واحد ، يتم إرسال أمر
«Status»
الخاص بـ AudioControlPoint إلى الجانب الآخر من الأجهزة ذات الأذنين.
تنسيق حزمة الصوت والتوقيت
يتيح تعبئة الإطارات الصوتية (مجموعات من العينات) في حزم لجهاز السمع اشتقاق التوقيت من مثبتات توقيت طبقة الوصلة. لتبسيط التنفيذ:
- يجب أن يتطابق إطار الصوت دائمًا مع فاصل الاتصال الزمني. على سبيل المثال ، إذا كان الفاصل الزمني للتوصيل 20 مللي ثانية وكان معدل العينة 16 كيلو هرتز ، فيجب أن يحتوي الرتل السمعي على 320 عينة.
- تقتصر معدلات العينة في النظام على مضاعفات 8 كيلو هرتز للحصول دائمًا على عدد صحيح من العينات في إطار بغض النظر عن وقت الإطار أو فاصل الاتصال.
- يجب أن تعتمد بايتة التسلسل على الإطارات الصوتية. يجب أن يتم حساب بايت التسلسل مع التفاف حولها والسماح للطرف المحيطي باكتشاف عدم تطابق المخزن المؤقت أو التدفق السفلي.
- يجب أن يتناسب إطار الصوت دائمًا مع حزمة LE واحدة. يجب إرسال الرتل السمعي كحزمة L2CAP منفصلة. يجب أن يكون حجم LE LL PDU:
حجم حمولة الصوت + 1 (عداد التسلسل) + 6 (4 لرأس L2CAP ، 2 لـ SDU) - يجب أن يكون حدث الاتصال دائمًا كبيرًا بما يكفي لاحتواء رزمتين صوتيتين وحزمتين فارغتين لـ ACK لحجز عرض النطاق الترددي لإعادة الإرسال. لاحظ أن حزمة الصوت قد تكون مجزأة بواسطة وحدة تحكم Bluetooth المركزية. يجب أن يكون الجهاز الطرفي قادرًا على استقبال أكثر من حزمتين صوتيتين مجزأتين لكل حدث اتصال.
لإعطاء الوسط بعض المرونة ، لم يتم تحديد طول حزمة G.722. يمكن أن يتغير طول الحزمة G.722 بناءً على فاصل الاتصال الذي تحدده الأجهزة المركزية.
يشير تنسيق ثماني بتات الإخراج G.722 إلى Rec. ITU-T G.722 (09/2012) القسم 1.4.4 "معدد الإرسال"
بالنسبة لجميع برامج الترميز التي يدعمها جهاز طرفي ، يجب أن يدعم الجهاز المحيط معلمات التوصيل أدناه. هذه قائمة غير شاملة من التكوينات التي يمكن للمركز المركزي تنفيذها.
ترميز | معدل البت | الفاصل الزمني للاتصال | طول CE (1M / 2M PHY) | حجم حمولة الصوت |
---|---|---|---|---|
G.722 @ 16 كيلو هرتز | 64 كيلوبت / ثانية | 20 مللي ثانية | 5000/3750 لنا | 160 بايت |
بدء وإيقاف دفق صوتي
قبل بدء دفق صوتي ، يقوم الجهاز المركزي بالاستعلام عن الأجهزة الطرفية وإنشاء برنامج ترميز مشترك. ثم يستمر إعداد الدفق من خلال التسلسل التالي:
- PSM ، واختياريًا ، تتم قراءة RenderDelay. قد يتم تخزين هذه القيم مؤقتًا بواسطة الجهاز المركزي.
- قناة CoC L2CAP مفتوحة - يمنح الطرف المحيط 8 أرصدة مبدئيًا.
- يتم إصدار تحديث اتصال لتبديل الارتباط إلى المعلمات المطلوبة لبرنامج الترميز المختار. قد يقوم الجهاز المركزي بتحديث الاتصال هذا قبل توصيل CoC في الخطوة السابقة.
- ينتظر كل من المضيف المركزي والمحيطي اكتمال حدث التحديث.
- أعد تشغيل مشفر الصوت ، وأعد تعيين عدد تسلسل الحزم إلى 0. يتم إصدار أمر
«Start»
بالمعلمات ذات الصلة في AudioControlPoint. ينتظر الجهاز المركزي إعلامًا ناجحًا بالحالة لأمر«Start»
السابق من الجهاز المحيطي قبل البث. يمنح هذا الانتظار الوقت المحيطي لإعداد خط أنابيب تشغيل الصوت. أثناء دفق الصوت ، يجب أن تكون النسخة المتماثلة متاحة في كل حدث اتصال على الرغم من أن زمن انتقال النسخة المتماثلة الحالي قد يكون غير صفري. - يأخذ الجهاز الطرفي الحزمة الصوتية الأولى من قائمة الانتظار الداخلية (رقم التسلسل 0) ويقوم بتشغيلها.
يصدر المركز أمر "Stop" لإغلاق البث الصوتي. بعد هذا الأمر ، لا يلزم توفر الجهاز الطرفي في كل حدث اتصال. لإعادة تشغيل دفق الصوت ، انتقل إلى التسلسل أعلاه ، بدءًا من الخطوة 5. عندما لا يقوم الجهاز المركزي ببث الصوت ، فلا يزال يتعين عليه الاحتفاظ باتصال LE لخدمات GATT.
يجب ألا يصدر الجهاز الطرفي تحديثًا للاتصال بالجهاز المركزي. لتوفير الطاقة ، قد يصدر الجهاز المركزي تحديثًا للاتصال بالطرف عندما لا يقوم بدفق الصوت.