تبديل الصوت
مع تزايد استخدام المستخدمين لأجهزة متعددة لمصادر الصوت من أجل تنفيذ مهامهم اليومية، تزداد الحاجة إلى حلّ أبسط لإدارة استخدام سماعات الرأس على جميع الأجهزة. تنقل ميزة "تبديل الصوت" اتصالات سمّاعات الرأس بسلاسة بين الأجهزة استنادًا إلى نشاط المستخدم (مثل بدء فيلم) والأحداث التي تم منح الأولوية لها (مثل مكالمة واردة).
مبادئ تجربة المستخدم
- يجب أن يكون تبديل الاتصال سريعًا ويستند إلى إجراء المستخدم.
- يجب أن يكون تبديل الاتصال شفافًا للمستخدمين، ما يسمح لهم بالتحكم فيه أو التراجع عنه إذا لم يكن التبديل مرغوبًا فيه.
- يجب أن يحترم التبديل خصوصية المستخدم.
الأدوار
جهاز البحث عن مصدر الصوت: هو جهاز مصدر صوت (مثل هاتف أو جهاز لوحي)، ويبحث عن سماعة رأس مجاورة للاتصال بها عند الاقتضاء.
موفّر "تبديل الصوت": عادةً ما يكون الموفّر سماعة رأس تُعلِن عن تواجدها وحالة الاتصال بها كي يتمكّن الباحثون من اتخاذ قرارات التبديل.
نظرة عامة على المتطلبات
لاستخدام ميزة "التبديل الذكي"، يجب أن يلتزم مقدّمو الخدمات بالمتطلبات التالية:
الاسم | الوصف | المتطلبات | هل هذه المعلومات إلزامية؟ |
---|---|---|---|
مسح الصفحة ضوئيًا | لقبول طلب ربط جديد من باحث آخر عندما يكون هناك ربط حالي: بالنسبة إلى مقدّمي الخدمة الذين يقدّمون خدمة في نقطة واحدة:
|
يجب استخدام وضع فحص الصفحة الذي يتميز بوقت استجابة منخفض (يجب ألا يزيد فاصل الفحص عن 640 ملي ثانية) لتحسين الأداء. للتوفّر بين عمر البطارية وأداء التبديل، يمكن أن يستخدم مقدّم الخدمة وضع فحص الصفحة التلقائي في معظم الحالات (وضع الطاقة المنخفضة، يجب ألا يزيد فاصل الفحص عن 1280 ملي ثانية). ولكن يجب استخدام وضع وقت الاستجابة المنخفض في الحالات التالية:
|
إلزامي |
سجلّ عمليات الربط | للتبديل إلى الاتصال السابق واستئناف التشغيل إن أمكن. سيتم بدء عملية التبديل من خلال الاتصالات عبر Message Stream APIs. يجب تضمين حدث إيقاف الصوت مؤقتًا في السجلّ لاستئناف التشغيل إن أمكن. |
الاحتفاظ بسجلّ عمليات الربط وتنفيذ واجهات برمجة التطبيقات Message Stream API | إلزامي |
حالة الاتصال | على الباحثين إجراء عملية التحكّم في التبديل بين الاتصال.وتشمل حالة الاتصال ما يلي:
|
يجب تضمين حالة الاتصال في إعلان BLE وبث الرسائل. | إلزامي |
تغيير إمكانات وقت التشغيل | يمكن تفعيل ميزة "تبديل الصوت" من خلال ترقية البرامج الثابتة على "موفّر المحتوى"، لذا يجب مزامنة الإمكانات بين "المستخدِم" و"موفّر المحتوى" أثناء التشغيل. | تنفيذ واجهات برمجة تطبيقات Message Stream للوصول إلى إمكانات وقت التشغيل | إلزامي |
قواعد التبديل القابلة للضبط | يجب السماح لتطبيق Seeker بضبط الأولوية بين عمليات بث الصوت النشطة الحالية وطلبات بث الصوت الجديدة من خلال إعدادات الإعدادات المفضّلة للمستخدم. على سبيل المثال، قد يقدّم تطبيق Seeker لتشغيل/إيقاف الصوت إعدادات واجهة المستخدم للسماح للمستخدمين بتفعيل/إيقاف التبديل التلقائي بين بث الوسائط والمكالمات. سيضبط "مُشغِّل تبديل الصوت" قاعدة التبديل ويحصل عليها من خلال "بث الرسائل". |
مقدّمو خدمات نقاط الاتصال المتعدّدة فقط: تنفيذ Message Stream APIs لجعل قواعد التبديل بين الأجهزة المتصلة قابلة للضبط |
اختياري |
تبديل الجهاز النشط | يجب أن يتيح تطبيق "تبديل الصوت" لمستخدمي "مفتاح الصوت" محاكاة تبديل الصوت بين الأجهزة المتصلة. قد يتضمّن تطبيق "تبديل الصوت" واجهة مستخدم تتيح للمستخدمين التبديل بسهولة بين الأجهزة المتصلة. |
مقدّمو خدمات النقاط المتعددة فقط: يجب تنفيذ Message Stream APIs لتطبيق Audio switch Seeker من أجل تحديد مصدر الصوت النشط بين الأجهزة المتصلة. |
إلزامي |
إشعار التبديل المتعدّد النقاط | السماح لتطبيق Audio switch Seeker بعرض إشعار التبديل | مقدّمو خدمات النقاط المتعددة فقط: يجب تنفيذ واجهات برمجة التطبيقات Message Stream لإشعار مستخدمي ميزة "تبديل مصدر الصوت" المتصلين عند إجراء عملية تبديل في نقاط متعددة. |
إلزامي |
الحمولة الإعلانية
على مقدّم الخدمة تضمين حالة الاتصال الحالية في الإعلان، استنادًا إلى بيانات حساب Fast Pair الموضّحة في الإعلان: في حال عدم إمكانية العثور على الجهاز.
يُرجى العلم أنّ إصدار الجدول 4.2 هو 0x1.
حقل حالة الاتصال
وحدة ثمانيّة البت | نوع البيانات | الوصف | القيمة | هل هذه المعلومات إلزامية؟ |
---|---|---|---|---|
0 | uint8 |
طول الحقل ونوعه 0bLLLLTTTT
|
0bLLLL0101
|
إلزامي |
1 | uint8 |
حالة الاتصال 0bHAFRSSSS
|
0bHAFRSSSS
|
إلزامي |
2 | uint8 |
البيانات المخصّصة لا تتضمّن حاليًا سوى نوع المحتوى الذي يُستخدَم لوصف استخدام بث الصوت الحالي. سيرسله الباحث إلى مقدّم الخدمة. |
يتم إرسال القيمة من "المُستخدِم الذي يبحث عن البث النشط الحالي" إلى "مزوّد الخدمة" عبر "بث الرسائل". 0 إذا لم يكن البث المباشر النشط الحالي من Seeker | إلزامي |
3 - var | الصورة النقطية للأجهزة المتصلة صورة نقطية لعرض الأجهزة المتصلة حاليًا بالموفّر يتم ترتيب جميع الأجهزة المرتبطة بترتيب معيّن، بت واحد لكل جهاز مرتبط. ويعتمد طول المدة على عدد الأجهزة المرتبطة التي يمتلكها مقدّم الخدمة. |
يتم ضبط القيمة المُعرَّفة على 1 إذا كان الجهاز متصلاً حاليًا بالموفّر، و0 في الحالات الأخرى. راجِع الصورة النقطية للجهاز المتصل لمعرفة التفاصيل. |
اختياري |
الجدول 4.1: البيانات الأولية لحقل حالة الاتصال
علامات الاتصال
0bH = رصد الجهاز على الرأس
- 1، في الرأس الآن
- 0، وإلا، يعني ذلك أنّه ليس على الرأس أو أنّه لا يتضمّن أداة استشعار OHD
0bA = توفّر الاتصال
- 1، توفُّر اتصال
- 0، وإلا
0bF = وضع التركيز
- 1، في الوضع "التركيز" الآن، لا يُسمح بتبديل الاتصال لاستخدام الوسائط، أي لا يمكن التبديل من A2DP إلى A2DP
- 0، بخلاف ذلك
0bR = إعادة الاتصال تلقائيًا
- 1، إذا أعاد مقدّم الخدمة الاتصال الحالي تلقائيًا، ما يعني أنّه لم يتصل به المستخدمون (بالنسبة إلى نقاط الاتصال المتعددة، إذا تمت إعادة ربط أحد النقاط الحالية تلقائيًا، يجب ضبطها على 1)
- 0، وإلا
حالة الاتصال
- 0x0: لا يتوفّر اتصال
- 0x1: تقسيم الذاكرة
- 0x2: تم الاتصال ولكن لا يتم نقل البيانات
- 0x3: نقل البيانات غير الصوتية (فقط عند إمكانية التبديل، وإلا يتم استخدام 0xF)
- 0x4: بث A2DP، لا ينطبق بروتوكول AVRCP
- 0x5: بث A2DP وتشغيل AVRCP
- 0x6: بث HFP (مكالمات هاتفية/عبر الإنترنت) بما في ذلك نغمة الرنين داخل النطاق وغير داخل النطاق
- 0x7: بث الوسائط بدون التحكّم في الصوت عبر بروتوكول LE Audio
- 0x8: بث الوسائط مع التحكّم في الصوت من خلال بروتوكول LE Audio
- 0x9: بث الصوت عبر LE Audio
- 0xA: LE audio - البث
- 0xF: إيقاف مفتاح التبديل مؤقتًا (مثلاً تحديث البرامج الثابتة)
نوع سياق LE Audio وحالة الاتصال
ننصح بأن يتعامل مقدّم خدمة LE Audio مع جميع أنواع السياق المحدّدة في الأرقام المحدّدة 6.12.3 (ما لم يكن مقدّم الخدمة لا يتيح استخدام نوع سياق معيّن صراحةً) وأن يربط نوع السياق بحالة الاتصال كما هو موضّح أدناه.
- أسلوب المحادثة: 0x9
- الوسائط: 0×8
- اللعبة: 0x7
- محتوى تعليمي: 0x7
- أدوات المساعدة الصوتية: 0x9
- البث المباشر: 0×9
- التأثيرات الصوتية: 0x2
- الإشعارات: 0x2
- نغمة الرنين: 0x9
- التنبيهات: 0x7
- إنذار الطوارئ: 0x9
بالنسبة إلى سيناريو نوع سياق LE Audio المختلط، مثل تشغيل الوسائط أثناء المكالمة، يجب أن يستخدم مقدّم الخدمة حالة الاتصال ذات الأولوية القصوى، أي استخدام 0x9 (مكالمة) للسيناريو أعلاه بدلاً من 0x8 (وسائط).
صورة نقطية للجهاز المتّصل
لتجنُّب التبديل غير المرغوب فيه بين الأجهزة، قد يحتاج "المستكشف" إلى معرفة الأجهزة التي تكون سمّاعة الرأس متصلة بها حاليًا. على سبيل المثال، عندما تكون سماعات الرأس متصلّة بالهاتف، لا يريد المستخدم أن يقاطعه عملية تبديل الاتصال عندما يبدأ أحد أفراد عائلته تشغيل YouTube على الجهاز اللوحي.
يُرجى العِلم أنّ هذه الصورة النقطية مجهولة الهوية، ولا يمكن للمستخدِم الذي يبحث عن جهاز معرفة الأجهزة الأخرى المرتبطة بالمقدّم. على سبيل المثال، لنفترض أنّ لديك 5 أجهزة مرتبطة:
- 0: كمبيوتر محمول (0bx0000000)
- 1: phoneA (0b0x000000)
- 2: phoneB (0b00x00000)
- 3: جهاز لوحي (0b000x0000)
- 4: تلفزيون (0b0000x000)
إذا كانت الأجهزة المتصلة حاليًا هي جهاز كمبيوتر محمول وجهاز لوحي، ستكون قيمة bitmap هي 0b10010000. يُسمح بتغيير الطلب إذا كان لا مفر منه، مثلاً عندما يعيد المستخدمون ضبط سماعة الرأس على الإعدادات الأصلية أو عندما يصل عدد الأجهزة المرتبطة إلى الحد الأقصى.
إعلان عشوائي قابل للحل
لتجنُّب التتبُّع واحترام خصوصية المستخدم، على "الموفّر" تغيير الحقل و تشفيره باستخدام مفتاح الحساب باستخدام AES-CTR:
encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)
أين
يتم اشتقاق المفتاح من مفتاح الحساب قيد الاستخدام، والذي يتم تحديده في القسم التالي.
يتم إنشاء المفتاح بواسطة دالة HKDF، وهي IETF RFC 5869، باستخدام دالة التجزئة SHA-256.
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
على مقدّم الخدمة استخدام مفتاح الحساب الأصلي هنا، أي أنّ البايت الأول من المفتاح هو 0x04، وليس مضمّنًا في نمط الاستخدام.
متّجه الإعداد (IV) هو القيمة العشوائية المكونة من بايتين لبيانات مفتاح الحساب مع إضافة صفر ، أي أنّ متّجه الإعداد هو concat(salt, 14-byte ZEROs).
يتم تحديد البيانات الأولية لحالة الاتصال في الجدول 4.1. في حال تغيّرت حالة الاتصال، يجب إعادة إنشاء الملح وRPA في الإطار الزمني الإعلاني نفسه.
يؤدي ذلك إلى تناوب حقل حالة الاتصال المشفَّر في الوقت نفسه الذي يتم فيه تناوب بيانات مفتاح الحساب.
سيتم تنظيم إعلان BLE على النحو التالي:
وحدة ثمانيّة البت | نوع البيانات | الوصف | القيمة | هل هذه المعلومات إلزامية؟ |
---|---|---|---|---|
0 | uint8 |
الإصدار والعلامات | 0x10 | إلزامي |
1 - t | بيانات مفتاح الحساب | تختلف | إلزامي | |
t+1 - s | بيانات البطارية | تختلف | اختياري | |
s+1 - var | بيانات عشوائية قابلة للحل | تختلف | مطلوب إذا لم تكن قائمة مفاتيح الحسابات فارغة، وإلا تكون "مستبعدة". |
الجدول 4.2: إعلان BLE مع بيانات عشوائية قابلة للحل
تحتوي البيانات العشوائية التي يمكن حلّها على ما يلي:
وحدة ثمانيّة البت | نوع البيانات | الوصف | القيمة | هل هذه المعلومات إلزامية؟ |
---|---|---|---|---|
0 | uint8 |
طول الحقل ونوعه 0bLLLLTTTT
|
0bLLLL0110
|
إلزامي |
1 - var | البيانات المشفَّرة | تختلف | إلزامي |
الجدول 4.2.1: البيانات العشوائية التي يمكن حلّها
على سبيل المثال، إذا كانت "البيانات العشوائية التي يمكن حلّها" تحتوي على حقل حالة اتصال مشفَّر، ستكون النتيجة التي تم فك تشفيرها هي حقل حالة الاتصال.
لمنع التلاعب، يجب تعديل "بيانات مفتاح الحساب" أعلاه قليلاً عند تضمين "البيانات العشوائية القابلة للحل" في الإعلان. عادةً، عند إنشاء فلتر مفتاح الحساب، يتم إنشاء القيمة V من خلال دمج فلتر مفتاح الحساب مع الملح. بدلاً من ذلك، عند عرض "البيانات العشوائية التي يمكن حلّها" أيضًا، يجب إنشاء القيمة V على النحو التالي:
V = concat(account_key, salt, random_resolvable_data)
في حال عرض "بيانات البطارية" و"البيانات العشوائية التي يمكن حلّها"، يجب إنشاء V على النحو التالي:
V = concat(account_key, salt, battery_data, random_resolvable_data)
مفتاح الحساب قيد الاستخدام
يعتمد تبديل الاتصال على الحساب، لذا على مقدّم الخدمة تضمين معلومات الحساب للاتصال الحالي في إعلان BLE. إذا كان الجهاز المتصل حاليًا هو جهاز بحث عن مفتاح التبديل الصوتي، من المفترض أن يتمكّن مقدّم الخدمة من الحصول على مفتاح الحساب المرتبط بهذا الجهاز، واستخدام مفتاح الحساب هذا لتشفير حقل حالة الاتصال. إذا كان مصدر الصوت المتصل غير مزوّد بجهاز التحكّم في الصوت، على مقدّم الخدمة استخدام مفتاح الحساب المستخدَم مؤخرًا.
قبل احتساب فلتر مفتاح الحساب، على مقدّم الخدمة تعديل أول ملف شخصي بايت من مفاتيح الحساب لتضمين أحد العناصر التالية في أنماط الاستخدام:
- 0b00000100
مفتاح الحساب هذا غير قيد الاستخدام.
هذا هو المفتاح التلقائي (راجِع مفتاح الحساب). - 0b00000101
مفتاح الحساب هذا هو مفتاح الحساب المستخدَم مؤخرًا.
يتم تشفير حقل حالة الربط باستخدام مفتاح الحساب هذا. لا تتوفّر معلومات عن مفتاح الحساب لحالة الاتصال الحالية، ما قد يعني عدم اتصال أي أجهزة أو أنّ الجهاز المتصل ليس أداة البحث عن مفتاح التبديل الصوتي. - 0b00000110
مفتاح الحساب هذا هو مفتاح الحساب قيد الاستخدام.
يتم تشفير حقل حالة الاتصال باستخدام مفتاح الحساب هذا، ويكون الجهاز المتصل حاليًا مرتبطًا بمفتاح الحساب هذا.
مخطّط لأداة تحميل تبديل الصوت
يعرض الشكل أدناه المخطط البياني لحمولة مفتاح الصوت.

الرسائل
عند الاتصال، يمكن لـ "المستخدِم الذي يبحث عن المحتوى" و"موفِّر المحتوى" استخدام بث الرسائل لمزامنة إمكانية التبديل في ملف الوسائط الصوتية، وبدء عملية تبديل الاتصال، وضبط الإعدادات المفضّلة للتبديل، والحصول عليها، والإبلاغ عن حالة الاتصال وما إلى ذلك. ننشئ مجموعة رسائل و codes رسائل خاصة بمفتاح الصوت كما هو موضّح أدناه.
اسم مجموعة الرسائل | القيمة |
---|---|
تبديل الصوت | 0x07 |
يتم تضمين تفاصيل إضافية لكل رمز رسالة في الأقسام التالية.
اسم رمز الرسالة | القيمة | الاتصال المتعدد فقط | المُرسِل | Responder | تشفير | التحكم في الوصول للوسائط | ACK |
---|---|---|---|---|---|---|---|
الحصول على ميزة "تبديل مصدر الصوت" | 0x10 | لا | كلاهما | كلاهما، من خلال الرمز 0x11 | لا | لا | لا |
إعلام المستخدمين بإمكانية استخدام ميزة "تبديل مصدر الصوت" | 0x11 | لا | كلاهما | كلاهما | لا | نعم | نعم |
ضبط حالة الاتصال المتعدّد النقاط | 0x12 | نعم | الباحث | موفِّر الخدمة | لا | نعم | نعم |
ضبط الخيار المفضّل للتبديل | 0x20 | نعم | الباحث | موفِّر الخدمة | لا | نعم | نعم |
الحصول على الإعدادات المفضّلة للتبديل | 0x21 | نعم | الباحث | موفِّر الخدمة، من خلال الرمز 0x22 | لا | لا | لا |
إعدادات الإشعارات المفضّلة بشأن التبديل | 0x22 | نعم | موفِّر الخدمة | الباحث | لا | لا | لا |
تبديل مصدر الصوت النشط(إلى الجهاز المتصل) | 0×30 | نعم | الباحث | موفِّر الخدمة | لا | نعم | نعم |
التبديل إلى الوضع السابق | 0x31 | لا | الباحث | موفِّر الخدمة | لا | نعم | نعم |
إرسال إشعارات بشأن حدث التبديل المتعدّد النقاط | 0x32 | نعم | موفِّر الخدمة | الباحث | لا | لا | لا |
التعرّف على حالة الاتصال | 0x33 | نعم | الباحث | مقدّم الخدمة، من خلال الرمز 0x34 | لا | لا | لا |
إرسال إشعارات بشأن حالة الاتصال | 0x34 | نعم | موفِّر الخدمة | الباحث | نعم | لا | لا |
إشعار عند بدء عملية الاتصال عبر ميزة "تبديل مصدر الصوت" | 0x40 | لا | الباحث | موفِّر الخدمة | لا | نعم | نعم |
الإشارة إلى مفتاح الحساب قيد الاستخدام | 0x41 | لا | الباحث | موفِّر الخدمة | لا | نعم | نعم |
إرسال بيانات مخصّصة | 0x42 | لا | الباحث | موفِّر الخدمة | لا | نعم | نعم |
ضبط استهداف الاتصال المُراد إسقاطه | 0x43 | نعم | الباحث | موفِّر الخدمة | لا | نعم | نعم |
الجدول 4.3: رسائل تبديل الصوت
عنوان MAC لرسائل تبديل الصوت
لتوفير مصادقة الرسائل، تتطلّب جميع رسائل تبديل الصوت التي تتضمّن data إضافية يتم إرسالها من "المستخدِم" إلى "المزوّد" استخدام رمز مصادقة الرسالة. عند تلقّي رسالة تتضمّن معرّف MAC، يجب الردّ عليها حتى يعرف "المستخدِم الباحث" ما إذا كان "مقدّم الخدمة" قد تفاعل مع الرسالة أم لا.
في حال نجاح مصادقة الرسالة، على "الموفِّر" إرسال رسالة التأكيد بشأن الرسالة:
وحدة ثمانيّة البت | نوع البيانات | الوصف | القيمة |
---|---|---|---|
0 | uint8 | إقرار | 0xFF |
1 | uint8 | ACK | 0x01 |
من 2 إلى 3 | uint16 | طول البيانات الإضافية | تختلف |
4 | uint8 | تبديل الصوت | 0x07 |
5 | uint8 | رمز رسالة تبديل مصدر الصوت | تختلف |
6 - ثانية | البيانات الإضافية | تختلف |
إذا تعذّر إرسال الرسالة، على مقدّم الخدمة إرسال NAK للرسالة:
وحدة ثمانيّة البت | نوع البيانات | الوصف | القيمة |
---|---|---|---|
0 | uint8 | إقرار | 0xFF |
1 | uint8 | NAK | 0x02 |
من 2 إلى 3 | uint16 | طول البيانات الإضافية | 0x0003 |
4 | uint8 | سبب الخطأ | تختلف |
5 | uint8 | تبديل الصوت | 0x07 |
6 | uint8 | رمز رسالة تبديل مصدر الصوت | تختلف |
يُرجى العِلم أنّه إذا كان مقدّم الخدمة هو المُرسِل، لن يكون عنوان MAC مطلوبًا.
الحصول على ميزة "تبديل مصدر الصوت"
يمكن لكل من موفِّر وجهاز التحكّم في الصوت التحقّق مما إذا كان جهاز Fast Pair الموفِّر/جهاز التحكّم في الصوت المتصل يدعم ميزة التحكّم في الصوت أم لا باستخدام الرسالة أدناه:
وحدة ثمانيّة البت | نوع البيانات | الوصف | القيمة |
---|---|---|---|
0 | uint8 | تبديل الصوت | 0x07 |
1 | uint8 | الحصول على ميزة "تبديل مصدر الصوت" | 0x10 |
من 2 إلى 3 | uint16 | طول البيانات الإضافية | 0 |
الجدول 4.3.1.0: الحصول على إمكانية تبديل الصوت
إشعار بإمكانية استخدام ميزة "تبديل مصدر الصوت"
عند تلقّي رمز الرسالة get capability of Audio switch، سيستجيب "الباحث عن التبديل الصوتي" أو "موفّر التبديل الصوتي" باستخدام أحد العلامات التالية:
وحدة ثمانيّة البت | نوع البيانات | الوصف | القيمة |
---|---|---|---|
0 | uint8 | تبديل الصوت | 0x07 |
1 | uint8 | إشعار بإمكانية استخدام ميزة "تبديل مصدر الصوت" | 0x11 |
من 2 إلى 3 | uint16 | طول البيانات الإضافية | 20 إذا تم إرسال هذا الطلب من قِبل الباحث 4 إذا تم إرسال هذا الطلب من قِبل مقدّم الخدمة |
4 - 5 | uint16 | رمز إصدار تبديل مصدر الصوت | تشير القيمة غير الصفرية إلى أنّ الجهاز متوافق مع ميزة "تبديل الصوت". رمز الإصدار الحالي (مع تحسين الأمان) هو 0x0102. 0x0000 أو عدم تلقّي أي استجابة خلال ثانية واحدة يعني أنّ ميزة "تبديل الصوت" غير متاحة على هذا الجهاز. |
6 - 7 | أعلام | علامات إمكانية تبديل الصوت لمقدّم المحتوى إذا تم إرسال هذا العنصر من قِبل أداة التقديم/الترجيع، يجب تجاهل هذين البايتَين. |
تختلف راجِع علامات إمكانيات تبديل الصوت. |
من 8 إلى 15 | رسالة nonce مطلوبة فقط عندما يتم إرسالها من قِبل الباحث |
تختلف | |
16 - 23 | رمز مصادقة الرسالة مطلوب فقط عندما يرسله الباحث |
تختلف |
الجدول 4.3.1.1: إشعار بإمكانية تبديل مصدر الصوت
علامات إمكانات تبديل الصوت
البت 0 (الوحدة 6، البت الأكثر أهمية): حالة تبديل الصوت
- 1، إذا كانت حالة تبديل الصوت مفعَّلة
- 0، وإلا
النقطة 1: إمكانية ضبط النقاط المتعدّدة
- 1، إذا كان الجهاز متوافقًا مع ميزة "الاتصال بنقاط متعددة" ويمكن التبديل بين تفعيلها وإيقافها
- 0، أو غير ذلك (لا تتوفّر ميزة "الاتصال المتعدد النقاط" أو تكون هذه الميزة مفعّلة دائمًا)
الرقّم الثنائي 2: الحالة الحالية للاتصال المتعدّد النقاط
- 1، إذا كان الاتصال المتعدّد النقاط مفعّلاً
- 0، وإلا
العنصر 3: رصد وضع الجهاز على الرأس
- 1، إذا كان هذا الجهاز مزوّدًا بميزة "رصد ارتداء سماعات الرأس" (حتى إذا كانت هذه الميزة متوقفة الآن)
- 0، وإلا
الرقّم الثنائي 4: الحالة الحالية لميزة "التعرّف على وضع الجهاز على الرأس"
- 1، إذا كانت ميزة "رصد الجهاز أثناء حمله" مفعّلة
- 0، بخلاف ذلك (لا يتيح ميزة "رصد الرأس" أو تم إيقافها)
وتكون جميع الوحدات الأخرى محجوزة، ويكون الإعداد التلقائي لها هو 0.
ضبط حالة الاتصال المتعدّد النقاط
في أجهزة التحكّم في الصوت، قد نوفّر للمستخدمين إعدادًا لتفعيل/إيقاف ميزة الاتصال بعدّة نقاط. سيضبط "المُستخدِم" حالة "النقاط المتعدّدة" على "المزوّد" باستخدام الرسالة أدناه:
وحدة ثمانيّة البت | نوع البيانات | الوصف | القيمة |
---|---|---|---|
0 | uint8 | تبديل الصوت | 0x07 |
1 | uint8 | ضبط حالة الاتصال المتعدّد النقاط | 0x12 |
من 2 إلى 3 | uint16 | طول البيانات الإضافية | 17 |
4 | uint8 | حالة الاتصال المتعدّد النقاط | 0: إيقاف الاتصال المتعدّد النقاط 1: تفعيل الاتصال المتعدّد النقاط |
5 - 12 | رقم مميّز للرسالة | تختلف | |
13 - 20 | رمز مصادقة الرسالة | تختلف |
الجدول 4.3.1.2: ضبط حالة الاتصال المتعدّد النقاط
ضبط الخيار المفضّل للتبديل
يمكن للمستخدِمين الذين يبحثون عن إمكانية تبديل الصوت تعديل الخيار المفضّل للتبديل بين نقاط الاتصال المتعددة وضبطه على "مقدّم الخدمة" باستخدام الرسالة أدناه:
وحدة ثمانيّة البت | نوع البيانات | الوصف | القيمة |
---|---|---|---|
0 | uint8 | تبديل الصوت | 0x07 |
1 | uint8 | ضبط الخيار المفضّل للتبديل | 0x20 |
من 2 إلى 3 | uint16 | طول البيانات الإضافية | 18 |
4 | أعلام | الخيار المفضّل للتبديل | تختلف راجِع علامة الإعدادات المفضّلة للتبديل بين نقاط الاتصال. |
5 | إعدادات التبديل المتقدّمة هذا البايت محجوز، والقيمة التلقائية هي 0. |
تختلف | |
من 6 إلى 13 | رقم مميّز للرسالة | تختلف | |
14 - 21 | رمز مصادقة الرسالة | تختلف |
الجدول 4.3.2.0: ضبط الإعدادات المفضّلة للتبديل
علامة الخيار المفضّل للتبديل المتعدّد النقاط
- البت 0 (أعلى بت): A2DP مقابل A2DP (القيمة التلقائية 0)
- النقطة 1: HFP مقابل HFP (القيمة التلقائية 0)
- البتّان 2: A2DP مقابل HFP (الإعداد التلقائي هو 0)
- الرقّم الثنائي 3: HFP مقابل A2DP (القيمة التلقائية 1)
- الوحدات البتية 4 إلى 7: محجوزة
- يمثّل الرمز أعلاه "طلب ملف شخصي جديد" مقابل "الملف الشخصي النشط الحالي".
- 0 في حال عدم التبديل
- 1 للتبديل
الحصول على الخيار المفضّل للتبديل
يمكن للمستخدِمين الذين يبحثون عن مفتاح تبديل الصوت الاستعلام عن الإعدادات المفضّلة للتبديل بين نقاط الاتصال المتعددة من العميل باستخدام الرسالة أدناه:
وحدة ثمانيّة البت | نوع البيانات | الوصف | القيمة |
---|---|---|---|
0 | uint8 | تبديل الصوت | 0x07 |
1 | uint8 | الحصول على إعدادات التبديل | 0x21 |
من 2 إلى 3 | uint16 | طول البيانات الإضافية | 0 |
الجدول 4.3.2.1: الحصول على الإعداد المفضّل للتبديل
الإعدادات المفضّلة لتبديل الإشعارات
وحدة ثمانيّة البت | نوع البيانات | الوصف | القيمة |
---|---|---|---|
0 | uint8 | تبديل الصوت | 0x07 |
1 | uint8 | الإعدادات المفضّلة لتبديل الإشعارات | 0x22 |
من 2 إلى 3 | uint16 | طول البيانات الإضافية | 2 |
4 | أعلام | تبديل علامات الإعدادات المفضّلة | تختلف راجِع علامة الإعدادات المفضّلة للتبديل بين نقاط الاتصال. |
5 | إعدادات التبديل المتقدّمة هذا البايت محجوز، ويجب أن تكون القيمة التلقائية هي 0. |
تختلف |
الجدول 4.3.2.2: إعدادات التبديل المفضّلة للإشعارات
تبديل مصدر الصوت النشط (إلى الجهاز المتصل)
يمكن للمستخدِمين الذين يريدون تبديل مصدر الصوت أن يطلبوا من مقدّم الخدمة المتعدّد النقاط تبديل مصدر الصوت النشط بين الأجهزة المتصلة باستخدام الرسالة أدناه:
وحدة ثمانيّة البت | نوع البيانات | الوصف | القيمة |
---|---|---|---|
0 | uint8 | تبديل الصوت | 0x07 |
1 | uint8 | تبديل مصدر الصوت النشط (إلى الجهاز المتصل) | 0×30 |
من 2 إلى 3 | uint16 | طول البيانات الإضافية | 17 |
4 | أعلام | تبديل علامات أحداث مصدر الصوت النشط | تختلف راجِع تبديل حدث مصدر الصوت النشط. |
5 - 12 | رقم مميّز للرسالة | تختلف | |
13 - 20 | رمز مصادقة الرسالة | تختلف |
الجدول 4.3.3.0: تبديل مصدر الصوت النشط (إلى الجهاز المتصل)
تبديل حدث مصدر الصوت النشط
- البت 0 (MSB): 1 للتبديل إلى هذا الجهاز، 0 للتبديل إلى الجهاز الثاني المتصل
- البتّ الأول: 1 لإعادة تشغيل المحتوى عند التبديل إلى الجهاز بعد التبديل، 0 في الحالات الأخرى. تعني إعادة تشغيل المحتوى أنّ الموفِّر يرسل إشعارًا بتشغيل المحتوى إلى أداة البحث من خلال الملف الشخصي AVRCP. إذا لم تكن الحالة السابقة (قبل إيقاف البث) هي PLAY، على مقدّم المحتوى تجاهل هذا العلامة.
- البتّان 2: 1 لرفض SCO على الجهاز الذي تم إيقافه، 0 بخلاف ذلك
- البتّ 3: 1 لقطع اتصال البلوتوث على جهاز التحكّم عن بُعد، 0 في الحالات الأخرى
- الوحدات البتية 4 إلى 7: محجوزة
قد لا يعرف مستخدمو أداة "تبديل الصوت" حالتهم بشكل صحيح في بعض الأحيان، لذا من الممكن أن يتلقّى مقدّم الخدمة رسالة "التبديل إلى هذا الجهاز" عندما يكون مستخدم أداة "تبديل الصوت" هو الجهاز النشط. في هذه الحالة، لعرض واجهة المستخدم الصحيحة على Seeker، يمكن لـ الموفّر إرسال NAK مع سبب الخطأ 0x4 - إجراء الجهاز المتكرّر.
بالنسبة إلى مقدّم خدمة LE Audio الذي لديه أكثر من جهاز واحد في المجموعة، على مقدّم الخدمة فصل جميع الأجهزة عن جهاز "الباحث"، وإلا ستتم إعادة ربط حِزمة البلوتوث لجهاز "الباحث" بمقدّم الخدمة.
التبديل مرة أخرى (إلى الجهاز غير المتصل)
إذا كان تبديل الاتصال غير مرغوب فيه، يمكن للمستخدمين التراجع عن التبديل، وفي سيناريوهات معيّنة، من المنطقي استعادة الاتصال الصوتي لتقليل المقاطعات. سيستخدم الباحث الرسالة أدناه لبدء عملية التبديل مرة أخرى:
وحدة ثمانيّة البت | نوع البيانات | الوصف | القيمة |
---|---|---|---|
0 | uint8 | تبديل الصوت | 0x07 |
1 | uint8 | التبديل مرة أخرى (إلى الجهاز غير المتصل) | 0x31 |
من 2 إلى 3 | uint16 | طول البيانات الإضافية | 17 |
4 | uint8 | تبديل الحدث | يختلف 0x01: الرجوع إلى الوضع العادي 0x02: الرجوع إلى الوضع العادي واستئناف التشغيل |
5 - 12 | رقم مميّز للرسالة | تختلف | |
13 - 20 | رمز مصادقة الرسالة | تختلف |
الجدول 4.3.3.1: التبديل مرة أخرى (إلى الجهاز غير المتصل)
بالنسبة إلى موفّري الخدمة المتعدّدة النقاط، لإجراء تبديل اتصال، قد يقطع الموفّر الاتصال بأحد أجهزة مصادر الصوت ويوقِف جلسة الصوت مؤقتًا على مصدر الصوت الآخر. على سبيل المثال، لنفترض أنّ سماعة الرأس المتعدّدة النقاط متصلة بجهاز تابلت وجهاز تبديل صوت ثالث متوافق. يشاهد المستخدم فيديو على الجهاز اللوحي عندما تتلقّى مكالمة واردة على هاتفه. سيشغّل الهاتف مفتاح اتصال على سماعة الرأس، والذي يجب أن يقطع اتصال الجهاز الثالث للتبديل إلى الاتصال بالهاتف، مع إيقاف جلسة الوسائط مؤقتًا على الجهاز اللوحي لسماع نغمة الرنين من الهاتف. إذا رفض المستخدم المكالمة، قد يطلب الهاتف من سماعة الرأس "الرجوع إلى وضع الموسيقى واستئناف التشغيل". عند تلقّي هذا الطلب، يجب إعادة توصيل سماعة الرأس بالجهاز الثالث، و استئناف تشغيل الفيديو الذي تم إيقافه مؤقتًا على الجهاز اللوحي.
إشعار حدث التبديل المتعدّد النقاط
لإعلام المستخدمين بحدث تبديل نقاط متعددة يحدث، قد يعرض "مفتاح تبديل/أداة البحث عن الصوت" إشعارًا للمستخدمين. على مقدّم الخدمة إشعار "الباحثين عن التبديل الصوتي" المتصلين بحدث التبديل.
وحدة ثمانيّة البت | نوع البيانات | الوصف | القيمة |
---|---|---|---|
0 | uint8 | تبديل الصوت | 0x07 |
1 | uint8 | إشعار بحدث التبديل المتعدّد النقاط على مقدّم الخدمة إرسال هذا الإشعار عند كل عملية تبديل، بما في ذلك من جهاز "تبديل مصدر الصوت" إلى جهاز غير مزوّد بميزة "تبديل مصدر الصوت"، ومن جهاز غير مزوّد بميزة "تبديل مصدر الصوت" إلى جهاز مزوّد بميزة "تبديل مصدر الصوت"، ومن جهاز مزوّد بميزة "تبديل مصدر الصوت" إلى جهاز آخر مزوّد بميزة "تبديل مصدر الصوت" |
0x32 |
من 2 إلى 3 | uint16 | طول البيانات الإضافية | تختلف |
4 | uint8 | سبب التبديل يجب تحديد هذه القيمة استنادًا إلى حالة الاتصال. بالنسبة إلى حالات استخدام LE Audio، قد يكون من المفيد الاطّلاع على التعيين بين نوع سياق LE Audio وحالة الاتصال. على سبيل المثال، حالة الاتصال المقابلة لتطبيقات "مساعد صوتي" هي 0x9(LE audio - call streaming). وبالتالي، يجب أن يكون سبب التبديل الذي بدأه أحد تطبيقات "مساعد Google" هو 0x02. |
يختلف 0x00: غير محدّد 0x01: الوسائط (مثل بث A2DP وبث الوسائط باستخدام LEA) 0x02: المكالمات (مثل بث HFP وبث المكالمات باستخدام LEA) |
5 | uint8 | الجهاز المستهدَف | يختلف 0x01: هذا الجهاز 0x02: جهاز آخر متصل |
6 - n | utf8 | اسم الجهاز المستهدَف إذا كان الجهاز المستهدَف هو جهاز التحكّم في الصوت Seeker، يتم استخدام الاسم الذي أرسله جهاز التحكّم في الصوت، وإلا يتم استخدام اسم البلوتوث، وإذا لم يكن ذلك منطبقًا، يتم استخدام البايتَين الأخيرَين من عنوانه |
تختلف |
الجدول 4.3.3.2: إشعار بحدث التبديل المتعدّد النقاط
الحصول على حالة الاتصال
يمكن للمستخدِم الحصول على حالة الاتصال الحالية من مقدّم الخدمة:
وحدة ثمانيّة البت | نوع البيانات | الوصف | القيمة |
---|---|---|---|
0 | uint8 | تبديل الصوت | 0x07 |
1 | uint8 | الحصول على حالة الاتصال | 0x33 |
من 2 إلى 3 | uint16 | طول البيانات الإضافية | 0 |
الجدول 4.3.3.3: الحصول على حالة الاتصال
عند تلقّي هذه الرسالة، على "الموفّر" الردّ باستخدام رمز الرسالة 0x34، للإبلاغ عن حالة الاتصال.
إرسال إشعارات بشأن حالة الاتصال
وفقًا لما هو محدّد في حمولة الإعلان في تقنية BLE، على موفّري الخدمة المتعدّدة النقاط إعلام الباحثين المتصلين الذين يستخدمون مفتاح الحساب نفسه بالتغيير في حالة الاتصال، باستثناء تغيير الحزمة الإعلانية. إذا كان مقدّم الخدمة مرتبطًا بجهاز بحث عن التبديل الصوتي وجهاز بحث عن التبديل غير الصوتي، في حال كان جهاز البحث عن التبديل غير الصوتي مفعّلاً، على مقدّم الخدمة أيضًا إبلاغ جهاز البحث عن التبديل الصوتي المرتبط بحالة الاتصال (باستخدام مفتاح حساب جهاز البحث).
وحدة ثمانيّة البت | نوع البيانات | الوصف | القيمة |
---|---|---|---|
0 | uint8 | تبديل الصوت | 0x07 |
1 | uint8 | إرسال إشعارات بشأن حالة الاتصال | 0x34 |
من 2 إلى 3 | uint16 | طول البيانات الإضافية | تختلف |
4 | uint8 | علامة الجهاز النشط | يختلف 0x00: هذا الجهاز مستخدِم سلبي، والجهاز النشط يستخدم مفتاح الحساب نفسه. 0x01: هذا الجهاز هو الجهاز النشط. 0x02: هذا الجهاز مستخدِم سلبي، والجهاز النشط هو جهاز بحث لا يستخدم مفتاح التبديل الصوتي. |
5 - n | حالة الاتصال المشفَّر | تختلف | |
n+1 - n+8 | رقم مميّز للرسالة | تختلف |
الجدول 4.3.3.4: إشعار حالة الاتصال
رسالة حالة الاتصال المشفّر
encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)
حيث:
يتم اشتقاق المفتاح من مفتاح الحساب قيد الاستخدام، راجِع الإعلان العشوائي القابل للحل.
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
IV هو concat(Session_nonce, Message_nonce)
connection_status_raw_data = concat(connection_state, custom_data, connected_devices) تم تحديده في BLE حمل الإعلان يُرجى العلم أنّه يجب عدم تضمين البايت لطول الحقل ونوعه لأنّه لدينا رمز الرسالة وطول البيانات هنا.
إشعار عند بدء عملية الاتصال باستخدام ميزة "تبديل مصدر الصوت"
قد يحتاج مقدّمو ميزة "تبديل مصدر الصوت" إلى معرفة ما إذا كان تبديل الاتصال قد تم تفعيله من خلال ميزة "تبديل مصدر الصوت" لإجراء تفاعلات مختلفة، مثل إيقاف إشارات الصوت لأحداث تبديل مصدر الصوت. يرسل "المُستخدِم الباحث" رسالة لإعلام "المزوّد" بأنّ هذا الربط قد بدأه مفتاح تبديل الصوت.
وحدة ثمانيّة البت | نوع البيانات | الوصف | القيمة |
---|---|---|---|
0 | uint8 | تبديل الصوت | 0x07 |
1 | uint8 | إشعار عند بدء عملية الاتصال باستخدام ميزة "تبديل مصدر الصوت" | 0x40 |
من 2 إلى 3 | uint16 | طول البيانات الإضافية | 17 |
4 | uint8 | إشارة بدء الاتصال عبر ميزة "تبديل مصدر الصوت" | تختلف 0: لم يتم بدء هذا الاتصال من خلال ميزة "تبديل مصدر الصوت" 1: تم بدء هذا الاتصال من خلال ميزة "تبديل مصدر الصوت" |
5 - 12 | رقم مميّز للرسالة | تختلف | |
13 - 20 | رمز مصادقة الرسالة | تختلف |
الجدول 4.3.4.0: إشعار ببدء الاتصال من خلال ميزة "تبديل مصدر الصوت"
الإشارة إلى مفتاح الحساب قيد الاستخدام
إذا كانت مفاتيح حسابات متعددة على "المستخدِم الذي يبحث عن معلومات" (مثل حسابات متعددة للمستخدمين) مرتبطة بـ "موفِّر الخدمة"، سيستخدم "المستخدِم الذي يبحث عن معلومات" الرسالة أدناه للإشارة إلى مفتاح حساب الذي يتم استخدامه.
وحدة ثمانيّة البت | نوع البيانات | الوصف | القيمة |
---|---|---|---|
0 | uint8 | تبديل الصوت | 0x07 |
1 | uint8 | الإشارة إلى مفتاح الحساب قيد الاستخدام | 0x41 |
من 2 إلى 3 | uint16 | طول البيانات الإضافية | 22 |
من 4 إلى 9 | utf8 | سلسلة قيد الاستخدام | UTF8 ("قيد الاستخدام") |
10 - 17 | رقم مميّز للرسالة | تختلف | |
18 - 25 | رمز مصادقة الرسالة | تختلف |
الجدول 4.3.4.1: الإشارة إلى مفتاح الحساب قيد الاستخدام
عند تلقّي هذه الرسالة، يمكن لمقدّم الخدمة معرفة مفتاح الحساب المستخدَم من خلال التحقّق من رمز مصادقة الرسالة.
إرسال بيانات مخصّصة
يمكن لجهاز التحكّم في التبديل الصوتي النشط تجميع المعلومات (مثل استخدام الصوت) لمصدر الصوت في وحدة بيانات مخصّصة وإرسالها إلى الموفّر باستخدام الرسالة أدناه:
وحدة ثمانيّة البت | نوع البيانات | الوصف | القيمة |
---|---|---|---|
0 | uint8 | تبديل الصوت | 0x07 |
1 | uint8 | إرسال بيانات مخصّصة | 0x42 |
من 2 إلى 3 | uint16 | طول البيانات الإضافية | 17 |
4 | uint8 | البيانات المخصّصة | تختلف |
5 - 12 | رقم مميّز للرسالة | تختلف | |
13 - 20 | رمز مصادقة الرسالة | تختلف |
الجدول 4.3.4.2: إرسال بيانات مخصّصة
عند تلقّي البيانات المخصّصة، سيعدّل "المقدّم" الحزمة الإعلانية لتضمين البيانات المخصّصة. بالنسبة إلى مقدّم الخدمة المتعدّد النقاط، من المفترض أن يُعلم أيضًا بتغيير حالة الاتصال إلى باحث آخر متصل باستخدام مفتاح الحساب نفسه.
ضبط استهداف خفض الاتصال
في سماعات الرأس متعددة النقاط، إذا لم يكن الاتصال المفضّل الذي سيتم إيقافه هو الأكثر استخدامًا مؤخرًا، يمكن لمستخدِمي أداة تبديل الصوت إبلاغ مقدّم الخدمة بالجهاز الذي يجب إيقافه باستخدام الرسالة أدناه:
وحدة ثمانيّة البت | نوع البيانات | الوصف | القيمة |
---|---|---|---|
0 | uint8 | تبديل الصوت | 0x07 |
1 | uint8 | ضبط استهداف خفض الاتصال | 0x43 |
من 2 إلى 3 | uint16 | طول البيانات الإضافية | 17 |
4 | uint8 | الجهاز المستهدف المتصل الذي سيتم إسقاطه | يختلف 1: هذا الجهاز |
5 - 12 | رقم مميّز للرسالة | تختلف | |
13 - 20 | رمز مصادقة الرسالة | تختلف |
الجدول 4.3.4.3: ضبط استهداف الاتصال المراد إسقاطه