سوئیچ صوتی

از آنجایی که کاربران به طور فزاینده ای از چندین دستگاه منبع صوتی برای انجام وظایف روزانه خود استفاده می کنند، تقاضا برای یک راه حل ساده تر برای مدیریت استفاده از هدست در سراسر دستگاه ها افزایش می یابد. سوئیچ صوتی به طور یکپارچه اتصالات هدست را بین دستگاه ها بر اساس فعالیت کاربر (مانند شروع یک فیلم) و رویدادهای اولویت بندی شده (مانند تماس ورودی) انتقال می دهد.

اصول UX

  1. سوئیچینگ اتصال باید سریع و بر اساس عملکرد کاربر باشد.
  2. سوئیچینگ اتصال باید برای کاربران شفاف باشد و به کاربران اجازه می دهد در صورت نامطلوب بودن سوئیچینگ، کنترل/برگردند.
  3. تعویض باید به حریم خصوصی کاربر احترام بگذارد.

نقش ها

جستجوگر سوئیچ صوتی : جستجوگر یک دستگاه منبع صوتی (به عنوان مثال، تلفن یا رایانه لوحی) است که به دنبال یک هدست نزدیک برای اتصال در صورت لزوم است.

ارائه‌دهنده سوئیچ صوتی : ارائه‌دهنده معمولاً هدستی است که حضور و وضعیت اتصال خود را برای جستجوگرها تبلیغ می‌کند تا تصمیمات تعویض را بگیرند.

بررسی اجمالی نیازمندیها

برای دستیابی به سوئیچینگ هوشمند، ارائه دهندگان باید الزامات زیر را رعایت کنند:

نام شرح الزامات اجباری؟
اسکن صفحه برای پذیرش یک درخواست اتصال جدید از جستجوگر دیگر در صورت وجود یک اتصال موجود.
برای ارائه دهندگان تک نقطه ای:
  • هنگامی که ارائه دهنده در حال قطع شدن است، دستگاه منبع اصلی به طور خودکار پخش صدای خود را متوقف می کند.
برای ارائه دهندگان چند نقطه ای:
  • اگر هنوز یک اتصال در دسترس باشد، درخواست اتصال را می‌پذیرد.
  • اگر پهنای باند اتصال پر است، اتصالی که اخیراً استفاده شده است را قطع کنید (مثلاً هیچ رویداد صوتی برای مدت طولانی وجود ندارد)، و درخواست ورودی جدید را بپذیرید.
حالت اسکن صفحه با تأخیر کم (فاصله اسکن نباید بیشتر از 640 میلی ثانیه باشد) برای بهبود عملکرد مورد نیاز است.
برای ایجاد معاوضه بین عمر باتری و عملکرد سوئیچینگ، ارائه دهنده می تواند حالت اسکن صفحه پیش فرض را برای اکثر موارد داشته باشد (حالت کم مصرف، فاصله اسکن نباید بیشتر از 1280 میلی ثانیه باشد). اما حالت تاخیر کم باید در شرایط زیر استفاده شود:
  • 30 ثانیه اول روشن شدن
  • 30 ثانیه اول بدون اتصال یا پیجینگ
  • 30 ثانیه اول بیکار بودن دستگاه
اجباری
تاریخچه اتصال برای بازگشت به اتصال قبلی و از سرگیری بازی در صورت وجود.
بازگشت مجدد توسط ارتباطات از طریق APIهای جریان پیام آغاز می شود.
رویداد صوتی مکث باید در ضبط گنجانده شود تا در صورت وجود، پخش از سر گرفته شود.
تاریخچه اتصال را حفظ کنید و API های جریان پیام را پیاده سازی کنید. اجباری
وضعیت اتصال برای جویندگان برای انجام قضاوت تعویض اتصال. وضعیت اتصال شامل موارد زیر است:
  • وضعیت اتصال
  • نوع صوتی اتصال فعال
  • اطلاعات حساب اتصال فعال
  • دستگاه(های) متصل
وضعیت اتصال را در BLE Advertisement و Message Stream لحاظ کنید. اجباری
قابلیت های زمان اجرا تغییر می کند سوئیچ صوتی را می توان با ارتقاء سیستم عامل در Provider فعال کرد، بنابراین قابلیت ها باید بین Seeker و Provider در زمان اجرا همگام شوند. برای دسترسی به قابلیت‌های زمان اجرا، APIهای جریان پیام را پیاده‌سازی کنید. اجباری
قوانین سوئیچینگ قابل تنظیم به Seeker اجازه دهید اولویت بین جریان صوتی فعال موجود و درخواست‌های جریان صوتی جدید را از طریق تنظیمات برگزیده کاربر پیکربندی کند.
برای مثال، جستجوگر سوئیچ صوتی ممکن است تنظیمات رابط کاربری را ارائه دهد تا به کاربران اجازه دهد سوئیچ خودکار بین جریان رسانه و تماس را فعال/غیرفعال کنند.
جستجوگر سوئیچ صوتی قانون تعویض را از طریق جریان پیام تنظیم می کند و دریافت می کند.
فقط ارائه دهندگان چند نقطه.
API های جریان پیام را پیاده سازی کنید تا قوانین جابجایی بین دستگاه های متصل را قابل تنظیم کنید.
اختیاری
سوئیچینگ فعال دستگاه اجازه دهید Audio switch Seeker جابجایی صدا را بین دستگاه های متصل شبیه سازی کند.
در سمت جستجوگر سوئیچ صوتی، ممکن است یک رابط کاربری برای کاربران وجود داشته باشد که به راحتی بین دستگاه های متصل جابجا شوند.
فقط ارائه دهندگان چند نقطه.
برای تعیین منبع صوتی فعال بین دستگاه‌های متصل، APIهای جریان پیام را برای جستجوگر سوئیچ صوتی پیاده‌سازی کنید.
اجباری
اعلان سوئیچینگ چند نقطه اجازه دهید Audio switch Seker اعلان تعویض را نشان دهد. فقط ارائه دهندگان چند نقطه.
APIهای جریان پیام را اجرا کنید تا به جویندگان سوئیچ صوتی متصل در هنگام تغییر چند نقطه اطلاع دهید.
اجباری

بار تبلیغاتی

ارائه‌دهنده باید وضعیت اتصال فعلی خود را در آگهی درج کند، که بر روی داده‌های حساب جفت سریع توضیح داده شده در تبلیغات: وقتی قابل کشف نیست ساخته شده است.

توجه داشته باشید که نسخه جدول 4.2 0x1 است.

فیلد وضعیت اتصال

اکتت نوع داده شرح ارزش اجباری؟
0 uint8 طول و نوع میدان
0bLLLLTTTT
  • L = طول وضعیت اتصال بر حسب بایت
  • T = نوع
0bLLLL0101
  • طول: متفاوت است
  • نوع = 0b0101
اجباری
1 uint8 وضعیت اتصال
0bHAFRSSSSS
  • H = در تشخیص سر
  • A = در دسترس بودن اتصال
  • F = حالت فوکوس
  • R = اتصال مجدد خودکار
  • S = وضعیت اتصال
0bHAFRSSSSS
اجباری
2 uint8 داده های سفارشی
در حال حاضر، فقط حاوی نوع محتوایی است که برای توصیف استفاده از جریان صوتی فعلی استفاده می‌شود. سالک آن را برای ارائه دهنده ارسال می کند.
مقدار از طریق جریان پیام از جستجوگر جریان فعال فعلی به ارائه دهنده ارسال می شود. 0 اگر پخش جریانی فعال فعلی از Seeker نباشد. اجباری
3 - var بیت مپ دستگاه های متصل
یک بیت مپ برای نشان دادن دستگاه‌هایی که در حال حاضر به ارائه‌دهنده متصل هستند. همه دستگاه های باند شده به ترتیب چیده شده اند، یک بیت برای یک دستگاه چسبانده شده. طول بستگی به تعداد دستگاه های متصل ارائه دهنده دارد.
اگر دستگاه در حال حاضر به ارائه‌دهنده متصل باشد، بیت نگاشت شده را روی 1 تنظیم می‌کند، در غیر این صورت، 0 را تنظیم می‌کند.
برای جزئیات بیشتر به Bitmap دستگاه متصل مراجعه کنید
اختیاری

جدول 4.1: داده های خام فیلد وضعیت اتصال

پرچم های اتصال
وضعیت اتصال
Bitmap دستگاه متصل

برای جلوگیری از تغییر اتصال ناخواسته، جستجوگر ممکن است نیاز داشته باشد که بداند هدست در حال حاضر به کدام دستگاه (ها) متصل است. به عنوان مثال، وقتی هدست به تلفن متصل است، کاربر نمی‌خواهد وقتی یکی از اعضای خانواده‌اش یوتیوب را روی رایانه لوحی راه‌اندازی می‌کند، با تعویض اتصال قطع شود.

توجه داشته باشید که این بیت مپ ناشناس است، جستجوگر نمی تواند بداند چه دستگاه های دیگری با ارائه دهنده متصل هستند. به عنوان مثال، 5 دستگاه متصل را در نظر بگیرید:

اگر دستگاه های متصل فعلی یک لپ تاپ و یک تبلت باشند، مقدار بیت مپ 0b10010000 خواهد بود. تغییر سفارش در صورتی قابل قبول است که اجتناب ناپذیر باشد، به عنوان مثال زمانی که کاربران هدست را به تنظیمات کارخانه بازنشانی می کنند یا زمانی که تعداد دستگاه های متصل به حد بالا می رسد.

تبلیغات تصادفی قابل حل

برای جلوگیری از ردیابی و احترام به حریم خصوصی کاربر، ارائه‌دهنده باید فیلد را با کلید حساب با استفاده از AES-CTR بچرخاند و رمزگذاری کند:

 encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)

جایی که

  1. Key از کلید حساب کاربری در حال استفاده مشتق شده است که در قسمت بعدی تعریف می شود.

    • کلید توسط تابع HKDF، IETF RFC 5869، با استفاده از تابع هش SHA-256 تولید می شود.

        Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
      
    • ارائه‌دهنده باید از کلید حساب اصلی در اینجا استفاده کند، یعنی اولین بایت کلید 0x04 است که در الگوی استفاده گنجانده نشده است.

  2. IV (بردار اولیه) نمک 2 بایتی داده های کلید حساب با لایه صفر است، یعنی IV concat است (نمک، 14 بایت صفر).

  3. داده های خام وضعیت اتصال در جدول 4.1 تعریف شده است، اگر وضعیت اتصال تغییر کند، نمک و RPA باید در یک بازه زمانی تبلیغاتی بازسازی شوند.

این باعث می شود که فیلد وضعیت اتصال رمزگذاری شده همزمان با چرخش داده های کلید حساب بچرخد.

تبلیغات BLE به شرح زیر است:

اکتت نوع داده شرح ارزش اجباری؟
0 uint8 نسخه و پرچم ها 0x10 اجباری
1 - ت داده های کلیدی حساب متفاوت است اجباری
t+1 - s داده های باتری متفاوت است اختیاری
s+1 - var داده های قابل حل تصادفی متفاوت است اگر فهرست کلید حساب خالی نباشد، اجباری است،
در غیر این صورت مستثنی شده است.

جدول 4.2: تبلیغات BLE با داده های قابل حل تصادفی

داده های قابل حل تصادفی شامل:

اکتت نوع داده شرح ارزش اجباری؟
0 uint8 طول و نوع میدان
0bLLLLTTTT
  • L = طول داده های رمزگذاری شده
  • T = نوع
0bLLLL0110
  • طول: متفاوت است
  • نوع = 0b0110
اجباری
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 درج کند. اگر دستگاه متصل فعلی یک جستجوگر سوئیچ صوتی است، ارائه‌دهنده باید بتواند کلید حساب مرتبط با این جستجوگر را دریافت کند و از این کلید حساب برای رمزگذاری فیلد وضعیت اتصال استفاده کند. اگر منبع صوتی متصل شده جستجوگر سوئیچ صوتی نیست، ارائه‌دهنده باید از آخرین کلید حساب استفاده شده استفاده کند.

قبل از محاسبه فیلتر کلید حساب ، ارائه‌دهنده باید اولین بایت کلیدهای حساب را تغییر دهد تا یکی از الگوهای در حال استفاده زیر را شامل شود:

  1. 0b00000100
    این کلید حساب کاربری استفاده نمی شود.
    این پیش فرض است ( کلید حساب را ببینید).
  2. 0b00000101
    این کلید حساب جدیدترین کلید حساب کاربری است.
    فیلد وضعیت اتصال توسط این کلید حساب رمزگذاری شده است. هیچ اطلاعات کلیدی حسابی از وضعیت اتصال فعلی وجود ندارد، می‌تواند به این معنی باشد که دستگاهی متصل نیست یا دستگاه متصل جستجوگر سوئیچ صوتی نیست.
  3. 0b00000110
    این کلید حساب، کلید حساب کاربری در حال استفاده است.
    فیلد وضعیت اتصال توسط این کلید حساب رمزگذاری شده است و دستگاه متصل فعلی با این کلید حساب مرتبط است.

شماتیک برای محموله سوئیچ صوتی

شکل زیر شماتیک مربوط به بار سوئیچ صوتی را نشان می دهد.

پیام ها

هنگام اتصال، جستجوگر و ارائه‌دهنده می‌توانند از جریان پیام برای همگام‌سازی قابلیت سوئیچ صوتی، راه‌اندازی سوئیچ اتصال، تنظیم و دریافت اولویت سوئیچینگ، اطلاع‌رسانی وضعیت اتصال و غیره استفاده کنند. ما یک گروه پیام و کدهای پیام مخصوص سوئیچ صوتی را به صورت زیر ایجاد می کنیم.

نام گروه پیام ارزش
سوئیچ صوتی 0x07

جزئیات بیشتر برای هر کد پیام در بخش های زیر گنجانده شده است.

نام کد پیام ارزش فقط چند نقطه ای فرستنده پاسخ دهنده رمزگذاری کنید مک ACK
دریافت قابلیت سوئیچ صوتی 0x10 ن هر دو هر دو، از طریق کد 0x11 ن ن ن
اطلاع از قابلیت سوئیچ صوتی 0x11 ن هر دو هر دو ن Y Y
حالت چند نقطه ای را تنظیم کنید 0x12 Y جوینده ارائه دهنده ن Y Y
تنظیم اولویت سوئیچینگ 0x20 Y جوینده ارائه دهنده ن Y Y
اولویت تعویض را دریافت کنید 0x21 Y جوینده ارائه دهنده، از طریق کد 0x22 ن ن ن
اولویت تعویض را اطلاع دهید 0x22 Y ارائه دهنده جوینده ن ن ن
سوئیچ منبع صوتی فعال (به دستگاه متصل) 0x30 Y جوینده ارائه دهنده ن Y Y
بازگشت به عقب (به دستگاه قطع شده) 0x31 ن جوینده ارائه دهنده ن Y Y
رویداد سوئیچ چند نقطه را اطلاع دهید 0x32 Y ارائه دهنده جوینده ن ن ن
وضعیت اتصال را دریافت کنید 0x33 Y جوینده ارائه دهنده، از طریق کد 0x34 ن ن ن
اطلاع از وضعیت اتصال 0x34 Y ارائه دهنده جوینده Y ن ن
به اتصال سوئیچ صوتی اطلاع دهید 0x40 ن جوینده ارائه دهنده ن Y Y
کلید حساب کاربری در حال استفاده را نشان دهید 0x41 ن جوینده ارائه دهنده ن Y Y
ارسال داده های سفارشی 0x42 ن جوینده ارائه دهنده ن Y Y
هدف اتصال drop را تنظیم کنید 0x43 Y جوینده ارائه دهنده ن Y Y

جدول 4.3: پیام های سوئیچ صوتی

MAC پیام های سوئیچ صوتی

برای ارائه احراز هویت پیام، همه پیام‌های سوئیچ صوتی با داده‌های اضافی که از جستجوگر به ارائه‌دهنده ارسال می‌شوند به کد احراز هویت پیام نیاز دارند. هنگامی که پیامی با MAC دریافت می شود، باید تایید شود تا جستجوگر بداند که آیا ارائه دهنده به پیام واکنش نشان داده است یا خیر.

در صورت موفقیت آمیز بودن تأیید اعتبار پیام، ارائه دهنده باید ACK را برای پیام ارسال کند:

اکتت نوع داده شرح ارزش
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 مورد نیاز نیست.

دریافت قابلیت سوئیچ صوتی

ارائه‌دهنده سوئیچ صوتی و جستجوگر می‌توانند با استفاده از پیام زیر بررسی کنند که آیا جفت جستجوگر/ارائه‌دهنده جفت سریع متصل از سوئیچ صوتی پشتیبانی می‌کند یا خیر:

اکتت نوع داده شرح ارزش
0 uint8 سوئیچ صوتی 0x07
1 uint8 دریافت قابلیت سوئیچ صوتی 0x10
2 - 3 uint16 طول داده های اضافی 0

جدول 4.3.1.0: دریافت قابلیت سوئیچ صوتی

اطلاع از قابلیت سوئیچ صوتی

به محض دریافت کد پیام سوئیچ صوتی ، جستجوگر/ارائه‌دهنده سوئیچ صوتی با یکی از پرچم‌های زیر پاسخ می‌دهد:

اکتت نوع داده شرح ارزش
0 uint8 سوئیچ صوتی 0x07
1 uint8 اطلاع از قابلیت سوئیچ صوتی 0x11
2 - 3 uint16 طول داده های اضافی 20 اگر این توسط جستجوگر ارسال شده باشد
4 اگر این توسط ارائه دهنده ارسال شده باشد
4 - 5 uint16 کد نسخه سوئیچ صوتی مقدار غیر صفر به این معنی است که از سوئیچ صوتی پشتیبانی می کند. کد نسخه فعلی (با بهبود امنیت) 0x0102 است.
0x0000 یا عدم پاسخ در 1 ثانیه به این معنی است که سوئیچ صوتی در این دستگاه پشتیبانی نمی‌شود
6 - 7 پرچم ها پرچم های قابلیت سوئیچ صوتی ارائه دهنده
اگر این توسط Seeker ارسال شده باشد، این دو بایت باید نادیده گرفته شوند.
متفاوت است
پرچم‌های قابلیت سوئیچ صوتی را ببینید
8 - 15 هیچ پیامی بده
فقط زمانی مورد نیاز است که توسط جستجوگر ارسال شود
متفاوت است
16 - 23 کد احراز هویت پیام
فقط زمانی مورد نیاز است که توسط جستجوگر ارسال شود
متفاوت است

جدول 4.3.1.1: اطلاع از قابلیت سوئیچ صوتی

پرچم های قابلیت سوئیچ صوتی
  1. بیت 0 (اکتت 6، MSB): وضعیت سوئیچ صوتی

  2. بیت 1: قابلیت تنظیم چند نقطه

  3. بیت 2: وضعیت فعلی چند نقطه ای

  4. بیت 3: تشخیص روی سر

  5. بیت 4: وضعیت فعلی تشخیص روی سر

  6. همه بیت های دیگر رزرو شده اند، پیش فرض 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 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 تغییر منبع صوتی فعال (به دستگاه متصل) 0x30
2 - 3 uint16 طول داده های اضافی 17
4 پرچم ها تعویض پرچم‌های رویداد منبع صوتی فعال متفاوت است
تغییر رویداد منبع صوتی فعال را ببینید
5 - 12 هیچ پیامی بده متفاوت است
13 - 20 کد احراز هویت پیام متفاوت است

جدول 4.3.3.0: تغییر منبع صوتی فعال (به دستگاه متصل)

تغییر رویداد منبع صوتی فعال

جستجوگران سوئیچ صوتی ممکن است همیشه وضعیت خود را به درستی ندانند، بنابراین ممکن است ارائه‌دهنده پیام "تغییر به این دستگاه" را دریافت کند زمانی که جستجوگر از قبل دستگاه فعال است. در این حالت، برای نشان دادن رابط کاربری صحیح در Seeker، ارائه‌دهنده می‌تواند یک NAK با دلیل خطا، 0x4 - عملکرد دستگاه اضافی ارسال کند.

بازگشت به عقب (به دستگاه قطع شده)

اگر سوئیچینگ اتصال ناخواسته باشد، کاربران می توانند سوئیچینگ را برگردانند، و در سناریوهای خاص، بازیابی اتصال صوتی برای به حداقل رساندن اختلال منطقی است. جستجوگر از پیام زیر برای راه اندازی بازگشت استفاده می کند:

اکتت نوع داده شرح ارزش
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 دلیل تغییر متفاوت است
0x00: نامشخص
0x01: جریان A2DP
0x02: HFP
5 uint8 دستگاه هدف متفاوت است
0x01: این دستگاه
0x02: دستگاه متصل دیگری
6 - n utf8 نام دستگاه مورد نظر
اگر دستگاه مورد نظر Audio switch Seeker باشد، با استفاده از نامی که جستجوگر به آن ارسال شده است، در غیر این صورت با استفاده از نام BT، اگر قابل اجرا نیست، با استفاده از 2 بایت آخر آدرس آن
متفاوت است

جدول 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)

جایی که:

به اتصال سوئیچ صوتی اطلاع دهید

ارائه‌دهندگان سوئیچ صوتی ممکن است نیاز داشته باشند بدانند که آیا سوئیچ اتصال توسط سوئیچ صوتی فعال می‌شود تا واکنش‌های متفاوتی داشته باشد، به عنوان مثال، گوشواره‌ها را برای رویدادهای سوئیچ صوتی غیرفعال کنید. جستجوگر پیامی می فرستد تا به ارائه دهنده اطلاع دهد که این اتصال یک اتصال آغاز شده از سوییچ صوتی است.

اکتت نوع داده شرح ارزش
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: ارسال داده های سفارشی

پس از دریافت داده‌های سفارشی، ارائه‌دهنده بسته تبلیغاتی را به‌روزرسانی می‌کند تا داده‌های سفارشی را شامل شود. برای ارائه‌دهنده چند نقطه‌ای، باید تغییر وضعیت اتصال را به جستجوگر متصل دیگری با استفاده از همان کلید حساب اطلاع دهد.

هدف اتصال drop را تنظیم کنید

در هدست‌های چند نقطه‌ای، اگر اتصال ترجیحی برای قطع شدن، کمترین اتصال اخیری نباشد که اخیراً استفاده شده است، جستجوگر سوئیچ صوتی می‌تواند با استفاده از پیام زیر به ارائه‌دهنده بگوید کدام دستگاه را رها کند:

اکتت نوع داده شرح ارزش
0 uint8 سوئیچ صوتی 0x07
1 uint8 هدف اتصال drop را تنظیم کنید 0x43
2 - 3 uint16 طول داده های اضافی 17
4 uint8 دستگاه متصل را هدف قرار دهید تا رها شود متفاوت است
1: این دستگاه
5 - 12 هیچ پیامی بده متفاوت است
13 - 20 کد احراز هویت پیام متفاوت است

جدول 4.3.4.3: تعیین هدف اتصال drop

پیاده سازی مرجع

برای اجرای مرجع به کتابخانه SDK جاسازی شده Nearby مراجعه کنید