دعم السمع الصوتي باستخدام Bluetooth LE

يمكن أن تتمتع أجهزة السمع (HA) بإمكانية وصول محسنة على الأجهزة المحمولة التي تعمل بنظام Android باستخدام قنوات L2CAP (CoC) الموجهة للاتصال عبر تقنية Bluetooth منخفضة الطاقة (BLE). تستخدم CoC مخزنًا مؤقتًا مرنًا لعدة حزم صوتية للحفاظ على تدفق ثابت للصوت، حتى في حالة فقدان الحزمة. يوفر هذا المخزن المؤقت جودة الصوت لأجهزة السمع على حساب الكمون.

يشير تصميم CoC إلى الإصدار 5 من مواصفات Bluetooth الأساسية (BT). للبقاء متوافقًا مع المواصفات الأساسية، يجب قراءة جميع القيم متعددة البايت في هذه الصفحة على أنها ذات نهاية صغيرة.

المصطلح

  • Central - جهاز Android الذي يقوم بالبحث عن الإعلانات عبر البلوتوث.
  • الأجهزة الطرفية - أداة السمع التي ترسل حزم الإعلانات عبر البلوتوث.

طوبولوجيا الشبكة وبنية النظام

عند استخدام CoC للمعينات السمعية، تفترض طوبولوجيا الشبكة جهازًا مركزيًا واحدًا وجهازين طرفيين، أحدهما على اليسار والآخر على اليمين، كما هو موضح في الشكل 1 . يعرض نظام الصوت Bluetooth الأجهزة الطرفية اليسرى واليمنى كمخزن صوتي واحد. إذا كان أحد الأجهزة الطرفية مفقودًا، بسبب التوافق الأحادي أو فقدان الاتصال، فإن الجهاز المركزي يمزج قناة الصوت اليسرى واليمنى وينقل الصوت إلى الجهاز الطرفي المتبقي. إذا فقد الجهاز المركزي الاتصال بكلا الجهازين الطرفيين، فسيعتبر الجهاز المركزي أن الارتباط بمصرف الصوت مفقود. في تلك الحالات، يقوم الجهاز المركزي بتوجيه الصوت إلى مخرج آخر.


الشكل 1. طوبولوجيا إقران المعينات السمعية مع الأجهزة المحمولة التي تعمل بنظام Android باستخدام CoC عبر BLE

عندما لا يقوم الجهاز المركزي ببث البيانات الصوتية إلى الجهاز الطرفي ويمكنه الحفاظ على اتصال BLE، يجب ألا ينقطع الجهاز المركزي عن الجهاز الطرفي. يسمح الحفاظ على الاتصال باتصال البيانات بخادم GATT الموجود على الجهاز الطرفي.

عند اقتران أجهزة السمع وتوصيلها، يجب على المركزي:

  • تتبع أحدث الأجهزة الطرفية اليسرى واليمنى المقترنة.
  • افترض أن الأجهزة الطرفية قيد الاستخدام في حالة وجود اقتران صالح. يجب أن يحاول الجهاز المركزي الاتصال أو إعادة الاتصال بالجهاز المقترن عند فقدان الاتصال.
  • افترض أن الأجهزة الطرفية لم تعد قيد الاستخدام إذا تم حذف الاقتران.

في الحالات المذكورة أعلاه، يشير الاقتران إلى إجراء تسجيل مجموعة من المعينات السمعية باستخدام UUID محدد ومحددات يسار/يمين في نظام التشغيل، وليس عملية إقران Bluetooth.

متطلبات النظام

لتنفيذ مدونة قواعد السلوك (CoC) بشكل صحيح للحصول على تجربة مستخدم جيدة، يجب على أنظمة Bluetooth في الأجهزة المركزية والطرفية:

  • تنفيذ وحدة تحكم متوافقة مع BT 4.2 أو أعلى. يوصى بشدة باستخدام اتصالات LE الآمنة.
  • احصل على دعم مركزي على الأقل لاثنين من روابط LE المتزامنة مع المعلمات كما هو موضح في تنسيق الحزمة الصوتية وتوقيتها .
  • احصل على دعم طرفي لا يقل عن رابط 1 جنيه مع المعلمات الموضحة في تنسيق حزمة الصوت وتوقيتها .
  • لديك تحكم في التدفق يعتمد على ائتمان جنيه مصري [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 kbit/s على كل من 1M و2M PHYs. لا يجوز استخدام PHY طويل المدى.

تستخدم CoC آليات Bluetooth القياسية لتشفير طبقة الارتباط وقفز التردد.

خدمات آشا جات

يجب على الجهاز الطرفي تنفيذ خدمة خادم GATT للبث الصوتي لأجهزة السمع (ASHA) الموضحة أدناه. يجب أن يعلن الجهاز الطرفي عن هذه الخدمة عندما يكون في الوضع العام القابل للاكتشاف للسماح للجهاز المركزي بالتعرف على مصدر الصوت. يجب أن تتطلب أي عمليات بث صوتي ذات طاقة منخفضة التشفير. يتكون تدفق الصوت بليه من الخصائص التالية:

صفة مميزة ملكيات وصف
قراءة فقط خصائص يقرأ راجع خصائص القراءة فقط .
نقطة التحكم الصوتي أكتب وأكتب دون رد نقطة التحكم للبث الصوتي. راجع نقطة التحكم الصوتي .
AudioStatusPoint قراءة/إخطار حقل تقرير الحالة لنقطة التحكم في الصوت. راجع AudioStatusPoint
مقدار أكتب بدون رد تشير البايتة التي تتراوح بين -128 و0 إلى مقدار التوهين المطبق على الإشارة الصوتية المتدفقة، والذي يتراوح من -48 ديسيبل إلى 0 ديسيبل. يجب تفسير الإعداد -128 على أنه تم كتم الصوت بالكامل، أي أن أدنى مستوى صوت غير كتم الصوت هو -127 وهو ما يعادل -47.625 ديسيبل التوهين. عند الإعداد 0، يجب أن تمثل النغمة الجيبية المتدفقة من خط إلى سكة حديد ما يعادل إدخال 100 ديسيبل في جهاز السمع. يجب أن يتدفق الجهاز المركزي بنطاق كامل اسمي ويستخدم هذا المتغير لتعيين مستوى العرض المطلوب في الجهاز الطرفي.
LE_PSM_OUT يقرأ PSM لاستخدامه في توصيل القناة الصوتية. ليتم انتقاؤها من النطاق الديناميكي [BT Vol 3, Part A, Sec 4.22]

UUIDs المخصصة للخدمة والخصائص:

UUID للخدمة : {0xFDF0}

صفة مميزة UUID
قراءة فقط خصائص {6333651e-c481-4a3e-9169-7c902aad37bb}
نقطة التحكم الصوتي {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 راجع إمكانيات الجهاز .
2-9 راجع HiSyncId .
10 راجع خريطة الميزات .
11-12 تأخير العرض. هذا هو الوقت، بالمللي ثانية، منذ أن يتلقى الجهاز الطرفي إطارًا صوتيًا حتى يعرض الجهاز الطرفي الإخراج. يمكن استخدام هذه البايتات لتأخير الفيديو لمزامنته مع الصوت.
13-14 محجوزة للاستخدام في المستقبل. التهيئة إلى الأصفار.
15-16 معرفات الترميز المدعومة. هذا هو قناع بت لمعرفات برنامج الترميز المدعومة. يتوافق موقع 1 بت مع برنامج الترميز المدعوم. على سبيل المثال، يشير 0x0002 إلى أن G.722 عند تردد 16 كيلو هرتز مدعوم. يجب تعيين كافة البتات الأخرى إلى 0.

قدرات الجهاز

قليل وصف
0 جانب الجهاز (0: يسار، 1: يمين)
1 يشير إلى ما إذا كان الجهاز مستقلاً ويستقبل بيانات أحادية، أو إذا كان الجهاز جزءًا من مجموعة (0: أحادي، 1: ثنائي الأذنين)
2 الجهاز يدعم CSIS (0: غير مدعوم، 1: مدعوم)
3-7 محجوز (تم الضبط على 0)

HiSyncID

يجب أن يكون هذا الحقل فريدًا لجميع الأجهزة ثنائية الأذنين، لكنه يجب أن يكون هو نفسه بالنسبة للمجموعة اليسرى واليمنى.

بايت وصف
0-1 معرف الشركة المصنعة. إنها معرفات الشركة التي تم تعيينها بواسطة BTSIG.
2-7 معرف فريد يحدد مجموعة أدوات السمع. يجب ضبط هذا المعرف على نفس المعرف على كل من الجهاز الطرفي الأيسر والأيمن.

خريطة الميزات

قليل وصف
0 دعم دفق إخراج الصوت LE CoC (نعم/لا).
1-7 محجوز (تم ضبطه على 0).

معرفات الترميز

إذا تم تعيين البت، فإن برنامج الترميز هذا يكون مدعومًا.

رقم الهوية/البت الترميز ومعدل العينة معدل البت المطلوب وقت الإطار إلزامي على المركز (C) أو الطرفي (P)
0 محجوز محجوز محجوز محجوز
1 G.722 @ 16 كيلو هرتز 64 كيلوبت/ثانية عامل ج و ب
2-15 محجوزة.
0 محجوز أيضًا.

نقطة التحكم الصوتي

لا يمكن استخدام نقطة التحكم هذه عند إغلاق LE CoC. راجع بدء وإيقاف دفق صوتي للحصول على وصف الإجراء.

رمز التشغيل الحجج الإجراء الفرعي للغات وصف
1 «Start»
  • uint8_t codec
  • uint8_t audiotype
  • int8_t volume
  • int8_t otherstate
اكتب مع الرد، وتوقع إشعارًا إضافيًا بالحالة عبر خاصية AudioStatusPoint . يوجه الجهاز الطرفي لإعادة ضبط برنامج الترميز وبدء تشغيل الإطار 0. يشير حقل برنامج الترميز إلى معرف برنامج الترميز المطلوب استخدامه لهذا التشغيل. على سبيل المثال، حقل برنامج الترميز هو "1" لـ G.722 عند تردد 16 كيلو هرتز.

يشير حقل بت نوع الصوت إلى نوع (أنواع) الصوت الموجودة في الدفق:
  • 0 - غير معروف
  • 1 - نغمة الرنين
  • 2 -مكالمة هاتفية
  • 3- وسائل الإعلام
يشير حقل الحالة الأخرى إلى ما إذا كان الجانب الآخر من الأجهزة بكلتا الأذنين متصلاً أم لا. تكون قيمة الحقل 1 عندما يكون الجهاز الطرفي الآخر متصلاً، وإلا تكون القيمة 0.

يجب ألا يطلب الجهاز الطرفي تحديثات الاتصال قبل استلام رمز التشغيل «Stop» .
2 «Stop» لا أحد اكتب مع الرد، وتوقع إشعارًا إضافيًا بالحالة عبر خاصية AudioStatusPoint . يوجه الجهاز الطرفي لإيقاف تقديم الصوت. يجب بدء تسلسل إعداد صوتي جديد بعد هذا التوقف لعرض الصوت مرة أخرى.
3 «Status»
  • uint8_t connected
أكتب دون رد يُعلم الجهاز الطرفي المتصل بوجود تحديث للحالة على الجهاز الطرفي الآخر. يشير الحقل المتصل إلى نوع التحديث:
  • 0 - الأجهزة الطرفية الأخرى غير متصلة
  • 1 - أجهزة طرفية أخرى متصلة
  • 2 - حدث تحديث لمعلمة اتصال LE على أي من الاتصالين

AudioStatusPoint

حقل تقرير الحالة لنقطة التحكم في الصوت

رموز التشغيل وصف
0 الحالة موافق
-1 طلب مجهول
-2 معلمات غير قانونية

إعلانات لخدمة ASHA GATT

يجب أن يكون UUID الخاص بالخدمة موجودًا في حزمة الإعلان. سواء في الإعلان أو في إطار استجابة الفحص، يجب أن تحتوي الأجهزة الطرفية على بيانات الخدمة:

إزاحة البايت اسم وصف
0 طول الإعلان >= 0x09
1 نوع الإعلان 0x16 (بيانات الخدمة - UUID 16 بت)
2-3 UUID للخدمة 0xFDF0 (النهاية الصغيرة)

ملحوظة: هذا معرف مؤقت.
4 إصدار البروتوكول 0x01
5 الإمكانية
  • 0 - الجانب الأيسر (0) أو الأيمن (1).
  • 1 - أجهزة فردية (0) أو مزدوجة (1).
  • 2 - الجهاز يدعم CSIS (<0: غير مدعوم، 1: مدعوم)
  • 3-7 - محجوزة. يجب أن تكون هذه البتات صفراً.
6-9 HiSyncID مقطوع أربع وحدات بايت الأقل أهمية من HiSyncId . يجب أن تكون هذه البايتات هي الجزء الأكثر عشوائية من المعرف.

يجب أن تحتوي الأجهزة الطرفية على نوع بيانات Complete Local Name الذي يشير إلى اسم أداة السمع. سيتم استخدام هذا الاسم على واجهة مستخدم الجهاز المحمول حتى يتمكن المستخدم من تحديد الجهاز المناسب. يجب ألا يشير الاسم إلى القناة اليسرى أو اليمنى حيث أن هذه المعلومات متوفرة في 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 بايت

بدء وإيقاف دفق الصوت

قبل بدء البث الصوتي، يقوم المركز بالاستعلام عن الأجهزة الطرفية وإنشاء برنامج ترميز مشترك. ثم يستمر إعداد الدفق من خلال التسلسل التالي:

  1. تتم قراءة PSM واختياريًا RenderDelay. قد يتم تخزين هذه القيم مؤقتًا بواسطة الجهاز المركزي.
  2. تم فتح قناة CoC L2CAP - يمنح الجهاز الطرفي 8 أرصدة في البداية.
  3. يتم إصدار تحديث اتصال لتبديل الارتباط إلى المعلمات المطلوبة لبرنامج الترميز المختار. قد يقوم المركزي بتحديث الاتصال هذا قبل اتصال CoC في الخطوة السابقة.
  4. ينتظر كل من المضيف المركزي والمحيطي حدث اكتمال التحديث.
  5. أعد تشغيل برنامج تشفير الصوت، وأعد تعيين عدد تسلسل الحزمة إلى 0. يتم إصدار أمر «Start» مع المعلمات ذات الصلة على AudioControlPoint. ينتظر الجهاز المركزي إشعارًا ناجحًا بالحالة لأمر «Start» السابق من الجهاز الطرفي قبل البث. يمنح هذا الانتظار الوقت المحيطي لإعداد مسار تشغيل الصوت الخاص به. أثناء دفق الصوت، يجب أن تكون النسخة المتماثلة متاحة في كل حدث اتصال على الرغم من أن زمن الاستجابة الحالي للنسخة المتماثلة قد يكون غير صفر.
  6. يأخذ الجهاز الطرفي الحزمة الصوتية الأولى من قائمة الانتظار الداخلية الخاصة به (رقم التسلسل 0) ويقوم بتشغيلها.

يصدر المركزي أمر «Stop» لإغلاق البث الصوتي. بعد هذا الأمر، لا يلزم أن يكون الجهاز الطرفي متاحًا في كل حدث اتصال. لإعادة تشغيل دفق الصوت، اتبع التسلسل أعلاه، بدءًا من الخطوة 5. عندما لا يقوم المركز المركزي ببث الصوت، يجب أن يحتفظ باتصال LE لخدمات GATT.

لا يجوز للجهاز الطرفي إصدار تحديث اتصال بالجهاز المركزي. لتوفير الطاقة، قد يصدر الجهاز المركزي تحديثًا للاتصال بالجهاز الطرفي عندما لا يقوم ببث الصوت.