دستگاههای سمعک (HA) میتوانند بااستفاده از کانالهای L2CAP اتصالگرا (CoC) ازطریق «بلوتوث کممصرف» (BLE)، در دستگاههای همراه مجهز به Android قابلیت دسترسی بهبودیافتهای داشته باشند. CoC از میانگیر ارتجاعی چند بسته صوتی استفاده میکند تا جریان صوتی ثابتی را حفظ کند، حتی درصورت ازدست رفتن بسته. این میانگیر کیفیت صدا را برای دستگاههای سمعک فراهم میکند، اما تأخیر ایجاد میکند.
طراحی CoC به Bluetooth (BT) Core Specification Version 6.0 ارجاع میدهد. برای همراستا ماندن با مشخصات اصلی، همه مقادیر چندبایتی در این صفحه باید بهصورت «لیتل اندین» خوانده شوند.
اصطلاحات
- مرکزی
- دستگاه Android که تبلیغات را ازطریق بلوتوث اسکن میکند.
- جانبی
- سمعکی که بستههای تبلیغاتی را ازطریق بلوتوث ارسال میکند.
توپولوژی شبکه و معماری سیستم
هنگام استفاده از CoC برای سمعک، توپولوژی شبکه یک دستگاه مرکزی و دو دستگاه جانبی (یکی چپ و یکی راست) را فرض میکند، همانطور که در شکل ۱ نشان داده شده است. سیستم صوتی بلوتوث لوازم جانبی چپ و راست را بهعنوان یک منبع صوتی واحد درنظر میگیرد. اگر دستگاه جانبی بهدلیل تناسب یکگوشی یا ازدست رفتن اتصال وجود نداشته باشد، دستگاه مرکزی کانال صوتی چپ و راست را ترکیب میکند و صدا را به دستگاه جانبی باقیمانده منتقل میکند. اگر مرکزی اتصال به هر دو دستگاه جانبی را ازدست بدهد، مرکزی پیوند به چاهک صوتی را ازدسترفته درنظر میگیرد. در این موارد، مرکز صدا را به برونداد دیگری هدایت میکند.

شکل ۱. توپولوژی برای جفت کردن سمعک با
دستگاههای همراه Android بااستفاده از CoC ازطریق بلوتوث کممصرف.
وقتی دستگاه مرکزی دادههای صوتی را به دستگاه جانبی جاریسازی نمیکند و میتواند اتصال BLE را حفظ کند، دستگاه مرکزی نباید اتصالش را با دستگاه جانبی قطع کند. حفظ اتصال امکان ارتباط دادهای با سرور GATT را که در پیرامونی قرار دارد فراهم میکند.
هنگام مرتبطسازی و اتصال دستگاههای کمکشنوایی، دستگاه مرکزی باید:
- لوازم جانبی چپ و راست جفتشده اخیر را پیگیری کنید.
- اگر جفتسازی معتبری وجود داشته باشد، فرض کنید که لوازم جانبی درحال استفاده هستند. وقتی اتصال قطع میشود، دستگاه مرکزی باید تلاش کند به دستگاه جفتشده متصل شود یا دوباره متصل شود.
- اگر جفتسازی حذف شود، فرض میشود که لوازم جانبی دیگر درحال استفاده نیستند.
در موارد بالا، جفتسازی به کنش ثبت مجموعهای از سمعکها با UUID معین و نامهای چپ/راست در سیستمعامل اشاره دارد، نه فرایند جفتسازی بلوتوث.
ملزومات سیستم
برای پیادهسازی صحیح CoC برای تجربه کاربری خوب، سیستمهای بلوتوث در دستگاههای مرکزی و جانبی باید موارد زیر را انجام دهند:
- کنترلکننده BT 4.2 یا بالاتر سازگار را پیادهسازی کنید. «اتصالهای امن LE» را قویاً توصیه میکنیم.
- حداقل از دو پیوند «کممصرف» همزمان در دستگاه مرکزی با پارامترهایی که در قالب و زمانبندی بسته صوتی توضیح داده شده است پشتیبانی کند.
- حداقل از یک پیوند «کممصرف» در دستگاه جانبی با پارامترهای توضیحدادهشده در قالب و زمانبندی بسته صوتی پشتیبانی کنید.
- از کنترل جریان مبتنی بر اعتبار LE پشتیبانی کنید [BT Vol 3, Part A, Sec 10.1]. دستگاهها باید از اندازه MTU و MPS حداقل ۱۶۷ بایت در CoC پشتیبانی کنند و بتوانند تا هشت بسته را بافر کنند.
- از افزونه طول داده LE [BT Vol 6, Part B, Sec 5.1.9] با بار مفید حداقل ۱۶۷ بایت پشتیبانی کند.
-
مطمئن شوید که دستگاه مرکزی از «فرمان بهروزرسانی اتصال HCI LE» پشتیبانی میکند
و با پارامترهای غیرصفر
maximum_CE_Lengthوminimum_CE_Lengthمطابقت دارد. - حفظ توان عملیاتی دادهها در مرکز برای دو اتصال LE CoC به دو دستگاه جانبی مختلف با فواصل اتصال و اندازههای بار مفید در قالب و زمانبندی بسته صوتی.
-
پارامترهای
MaxRxOctetsوMaxRxTimeرا در قابهایLL_LENGTH_REQیاLL_LENGTH_RSPدر دستگاه جانبی روی کوچکترین مقادیر لازم که برای این مشخصات ضروری است تنظیم کنید. این کار به واحد مرکزی اجازه میدهد زمانبندی خود را هنگام محاسبه مقدار زمان لازم برای دریافت قاب بهینهسازی کند.
اکیداً توصیه میکنیم که مرکزی و جانبی از PHY 2M همانطور که در مشخصات BT 5.0 مشخص شده است پشتیبانی کنند. دستگاه مرکزی باید از پیوندهای صوتی با سرعت حداقل ۶۴ کیلوبیت بر ثانیه در هر دو PHY ۱ مگابیت بر ثانیه و ۲ مگابیت بر ثانیه پشتیبانی کند. نباید از PHY با برد بلند BLE استفاده شود.
CoC از سازوکارهای استاندارد بلوتوث برای رمزگذاری لایه پیوند و جهش فرکانسی استفاده میکند.
خدمات ASHA GATT
دستگاه جانبی باید سرویس سرور GATT «جاریسازی صوتی برای سمعک» (ASHA) را که در زیر توضیح داده شده است پیادهسازی کند. دستگاه جانبی باید این سرویس را هنگام قرار داشتن در حالت قابلکشف عمومی تبلیغ کند تا دستگاه مرکزی بتواند گیرنده صدا را تشخیص دهد. همه عملیات جاریسازی صوتی کممصرف باید به رمزگذاری نیاز داشته باشند. جاریسازی صوتی بلوتوث کممصرف شامل ویژگیهای زیر است:
| ویژگی | مشخصات | شرح |
|---|---|---|
ReadOnlyProperties |
خواندن | ReadOnlyProperties را ببینید. |
AudioControlPoint |
نوشتن و نوشتن بدون پاسخ |
نقطه کنترل برای جاریسازی صوتی. AudioControlPoint را ببینید.
|
AudioStatusPoint |
خواندن/اطلاع دادن |
فیلد گزارش وضعیت برای نقطه کنترل صوتی. به
AudioStatusPoint مراجعه کنید.
|
Volume |
نوشتن بدون پاسخ | بایت بین -۱۲۸ و ۰ که نشاندهنده میزان تضعیف اعمالشده بر سیگنال صوتی جاریسازیشده است، از -۴۸ دسیبل تا ۰ دسیبل. تنظیم -128 باید بهعنوان کاملاً بیصدا تفسیر شود، یعنی پایینترین سطح صدای بیصدا نشده -127 است که معادل تضعیف -47.625 dB است. در تنظیم ۰، یک صدای سینوسی از نوع ریل-تو-ریل جاریسازیشده باید نشاندهنده ورودی معادل ۱۰۰ دسیبل فشار صدا در سمعک باشد. مرکزی باید در مقیاس کامل اسمی جاریسازی کند و از این متغیر برای تنظیم سطح ارائه موردنظر در پیرامونی استفاده کند. |
LE_PSM_OUT |
خواندن | «مدیر امنیت پلتفرم» برای استفاده در اتصال کانال صوتی. از محدوده پویای [BT Vol 3, Part A, Sec 4.22] انتخاب شود. |
جدولهای زیر «شناسههای یکتای جهانی» اختصاصدادهشده به سرویس و ویژگیهای آنها را شرح میدهد.
شناسه UUID سرویس: {0xFDF0}
| ویژگی | شناسه منحصربهفرد جهانی |
|---|---|
ReadOnlyProperties |
{6333651e-c481-4a3e-9169-7c902aad37bb} |
AudioControlPoint |
{f0d4de7e-4a88-476c-9d9f-1937b0996cc0} |
AudioStatus |
{38663f1a-e711-4cac-b641-326b56404837} |
Volume |
{00e4ca9e-ab14-41e4-8823-f9e70c7e91df} |
LE_PSM_OUT |
{2d410339-82b6-42aa-b34e-e2e01df8cc1a} |
علاوهبر سرویس ASHA GATT، پیرامونی باید «سرویس اطلاعات دستگاه» را نیز پیادهسازی کند تا به مرکزی اجازه دهد نام سازنده و نام دستگاه پیرامونی را تشخیص دهد.
ReadOnlyProperties
ReadOnlyProperties دارای مقادیر زیر است:
| بایت | شرح |
|---|---|
| 0 | نسخه - باید 0x01 باشد |
| 1 | DeviceCapabilities را ببینید. |
| 2-9 | HiSyncId را ببینید. |
| 10 | FeatureMap را ببینید. |
| 11-12 |
RenderDelay. این زمان، برحسب میلیثانیه، از زمانی است که
دستگاه جانبی قاب صوتی را دریافت میکند تا زمانی که دستگاه جانبی
برونداد را پردازش میکند. از این بایتها میتوان برای تأخیر ویدیو برای همگامسازی با صدا استفاده کرد.
|
| 13-14 | برای استفاده در آینده رزرو شده است. مقداردهی اولیه به صفر. |
| 15-16 | شناسههای کدک پشتیبانیشده. این یک ماسک بیت از شناسههای کدک پشتیبانیشده است. عدد ۱ در مکان بیت به کدک پشتیبانیشده مربوط میشود. برای مثال، 0x0002 نشان میدهد که G.722 در ۱۶ کیلوهرتز پشتیبانی میشود. همه بیتهای دیگر باید روی ۰ تنظیم شوند. |
قابلیتهای دستگاه
| بیت | شرح |
|---|---|
| 0 | طرف دستگاه (۰: چپ، ۱: راست) |
| 1 | نشان میدهد که آیا دستگاه مستقل است و دادههای تککاناله دریافت میکند یا اینکه دستگاه بخشی از یک مجموعه است (۰: تککاناله، ۱: دوکاناله) |
| 2 | دستگاه از CSIS پشتیبانی میکند (۰: پشتیبانی نمیشود، ۱: پشتیبانی میشود) |
| 3-7 | رزروشده (روی ۰ تنظیم شد) |
HiSyncId
این فیلد باید برای همه دستگاههای دوگوشی منحصربهفرد باشد اما باید برای مجموعه چپ و راست یکسان باشد.
| بایت | شرح |
|---|---|
| 0-1 | شناسه سازنده. این شناسه شرکت است که BTSIG اختصاص داده است. |
| 2-7 | شناسه یکتایی که مجموعه سمعک را شناسایی میکند. این شناسه باید برای هر دو دستگاه جانبی چپ و راست یکسان تنظیم شود. |
FeatureMap
| بیت | شرح |
|---|---|
| 0 | پشتیبانی از جاریسازی خروجی صوتی LE CoC (بله/خیر). |
| 1-7 | رزروشده (روی ۰ تنظیم شده است). |
شناسههای کدک
اگر بیت تنظیم شده باشد، آن کدک خاص پشتیبانی میشود.
| شناسه / شماره بیت | کدک و بسامد نمونه | نرخ بیت الزامی | زمان پردازش فریم | در دستگاه مرکزی (C) یا جانبی (P) الزامی است |
|---|---|---|---|---|
| 0 | رزروشده | رزروشده | رزروشده | رزروشده |
| 1 | G.722 @ 16 kHz | ۶۴ کیلوبیت در ثانیه | متغیر | C و P |
| ۲ تا ۱۵ رزرو شده است. | ||||
AudioControlPoint
وقتی LE CoC بسته است نمیتوان از این نقطه کنترل استفاده کرد. برای شرح رویه، شروع و توقف جاریسازی صوتی را ببینید.
| کد عملیات | آرگومانها | زیررویه GATT | شرح |
|---|---|---|---|
۱ «Start» |
|
با پاسخ بنویسید و انتظار اعلان وضعیت اضافی بااستفاده از مشخصه
AudioStatusPoint را داشته باشید.
|
به دستگاه جانبی دستور میدهد کدک را بازنشانی کند و
بازپخش قاب ۰ را شروع کند. فیلد codec شناسه کدک را برای استفاده در این بازپخش نشان میدهد.
برای مثال، فیلد codec برای G.722 در ۱۶ کیلوهرتز برابر با `۱` است.فیلد بیت نوع صدا نشاندهنده انواع صدای موجود در جریان است:
otherstate نشان میدهد که طرف دیگر دستگاههای دوگوشی
متصل است یا نه.
وقتی دستگاه جانبی دیگر متصل باشد، مقدار فیلد ۱ است،
درغیراینصورت مقدار ۰ است.
دستگاه جانبی نباید قبلاز دریافت کد عملیاتی «Stop» درخواست بهروزرسانی اتصال کند.
|
۲ «Stop» |
هیچکدام |
با پاسخ بنویسید و بااستفاده از مشخصه AudioStatusPoint منتظر اعلان وضعیت تکمیلی باشید.
|
به دستگاه جانبی دستور میدهد که پردازش صدا را متوقف کند. برای اینکه صدا دوباره ارائه شود، پساز این توقف باید توالی راهاندازی صدای جدیدی آغاز شود. |
۳ «Status» |
|
نوشتن بدون پاسخ |
به دستگاه جانبی متصل اطلاع میدهد که دستگاه جانبی دیگر بهروزرسانی وضعیت دارد. فیلد connected نوع بهروزرسانی را نشان میدهد:
|
AudioStatusPoint
فیلد گزارش وضعیت برای نقطه کنترل صدا
| کدهای عملیاتی | شرح |
|---|---|
| 0 | وضعیت: خوب |
| ۱- | فرمان ناشناخته |
| ۲- | پارامترهای غیرقانونی |
تبلیغات برای سرویس ASHA GATT
شناسه UUID سرویس باید در بسته آگهی باشد. در آگهی یا قاب پاسخ اسکن، دستگاههای جانبی باید نوع داده سرویس داشته باشند:
| انحراف بایت | نام | شرح |
|---|---|---|
| 0 | طول آگهی | >= 0x09 |
| 1 | نوع AD | 0x16 (دادههای سرویس - شناسه منحصربهفرد جهانی ۱۶ بیتی) |
| 2-3 | شناسه منحصربهفرد جهانی سرویس |
0xFDF0 (ترتیب بایت کوچک) توجه: این شناسه موقت است. |
| 4 | نسخه پروتکل | 0x01 |
| 5 | قابلیت |
|
| 6-9 | HiSyncId کوتاه شد |
چهار بایت مهمترین
HiSyncId. این بایتها باید تصادفیترین بخش شناسه باشند.
|
لوازم جانبی باید نوع داده نام محلی کامل
داشته باشند که نام سمعک را نشان دهد. این نام در
میانای کاربر دستگاه همراه استفاده میشود تا کاربر بتواند
دستگاه درست را انتخاب کند. نام نباید نشاندهنده کانال چپ یا راست باشد زیرا این اطلاعات در DeviceCapabilities ارائه شده است.
اگر لوازم جانبی نام و انواع داده سرویس ASHA را در نوع قاب یکسانی (ADV یا SCAN RESP) قرار دهند، دو نوع داده («نام محلی کامل» و «داده سرویس برای سرویس ASHA») باید در قاب یکسانی ظاهر شوند. این کار به اسکنر دستگاه همراه اجازه میدهد هر دو داده را در نتیجه اسکن یکسان دریافت کند.
درطول جفتسازی اولیه، مهم است که دستگاههای جانبی با نرخی بهاندازه کافی سریع تبلیغ کنند تا دستگاه همراه بتواند بهسرعت دستگاههای جانبی را شناسایی کند و به آنها متصل شود.
همگامسازی دستگاههای جانبی چپ و راست
برای کار با بلوتوث در دستگاههای همراه Android، دستگاههای جانبی مسئول اطمینان از همگامسازی آنها هستند. بازپخش در دستگاههای جانبی چپ و راست باید بهموقع همگامسازی شود. هر دو دستگاه جانبی باید نمونههای صوتی را از منبع بهطور همزمان پخش کنند.
دستگاههای جانبی میتوانند زمان خود را بااستفاده از یک عدد توالی که به ابتدای هر بسته داده بار صوتی اضافه میشود، همگامسازی کنند. مرکزی تضمین میکند که بستههای صوتی که قرار است در یک زمان در هر محیطی پخش شوند، شماره ترتیب یکسانی داشته باشند. این توالی پساز هر بسته صوتی یک واحد افزایش مییابد. هر توالی عدد ۸ بیتی است، بنابراین اعداد توالی پساز ۲۵۶ بسته صوتی تکرار میشوند. ازآنجاییکه اندازه هر بسته صوتی و نرخ نمونه برای هر اتصال ثابت است، دو دستگاه جانبی میتوانند زمان پخش نسبی را استنباط کنند. برای اطلاعات بیشتر درباره بسته صوتی، به قالب بسته صوتی و زمانبندی مراجعه کنید.
مرکز با ارائه محرکهایی به دستگاههای دوگوشی در مواقعی که ممکن است نیاز به همگامسازی باشد، کمک میکند. این محرکها هر دستگاه جانبی را از وضعیت دستگاه جانبی جفتشدهاش مطلع میکنند، هرگاه عملیاتی وجود داشته باشد که بتواند بر همگامسازی تأثیر بگذارد. راهاندازها عبارتاند از:
-
بهعنوان بخشی از فرمان
«Start»مربوط بهAudioControlPoint، وضعیت اتصال فعلی طرف دیگر دستگاههای دوگوشی ارائه میشود. -
هرگاه عملیات اتصال، قطع اتصال، یا بهروزرسانی پارامتر اتصال در یک دستگاه جانبی انجام شود، فرمان
«Status»ازAudioControlPointبه طرف دیگر دستگاههای دوگوشی ارسال میشود.
قالب و زمانبندی بسته صوتی
با بستهبندی قابهای صوتی (بلوکهای نمونه) در بستهها، سمعک میتواند زمانبندی را از لنگرهای زمانبندی لایه پیوند استخراج کند. برای ساده کردن پیادهسازی:
- قاب صوتی همیشه باید با فاصله زمانی اتصال در زمان مطابقت داشته باشد. برای مثال، اگر فاصله اتصال ۲۰ میلیثانیه و نرخ نمونهبرداری ۱۶ کیلوهرتز باشد، قاب صوتی باید حاوی ۳۲۰ نمونه باشد.
- نرخهای نمونهبرداری در سیستم به مضربهای ۸ کیلوهرتز محدود شده است تا همواره تعداد نمونههای صحیح در یک قاب داشته باشد، صرفنظر از زمان قاب یا فاصله اتصال.
- بایت توالی باید به قابهای صوتی اضافه شود. بایت توالی باید با پیچش شمارش شود و به دستگاه جانبی اجازه دهد عدم تطابق یا سرریز منفی میانگیر را شناسایی کند.
-
قاب صوتی همیشه باید در یک بسته «کممصرف» جای بگیرد. قاب صوتی
باید بهعنوان بسته L2CAP جداگانه ارسال شود. اندازه واحد داده پروتکل LL LE باید:
اندازه بار صوتی + ۱ (شمارنده توالی) + ۶ (۴ برای سرایند L2CAP، ۲ برای SDU) باشد - رویداد اتصال همیشه باید بهاندازه کافی بزرگ باشد تا دو بسته صوتی و دو بسته خالی برای ACK داشته باشد تا پهنای باند برای انتقال مجدد رزرو شود. توجه داشته باشید که بسته صوتی ممکن است توسط کنترلکننده بلوتوث مرکزی تکهتکه شود. دستگاه جانبی باید بتواند بیشاز دو بسته صوتی تکهتکهشده در هر رویداد اتصال دریافت کند.
برای اینکه مرکز انعطافپذیری داشته باشد، طول بسته G.722 مشخص نشده است. طول بسته G.722 میتواند براساس فاصله اتصال که مرکز تنظیم میکند تغییر کند.
قالب اکتت برونداد G.722 به Rec. ITU-T G.722 (09/2012) بخش ۱.۴.۴ «چندبرابرکننده» ارجاع میدهد.
برای همه کدکهایی که یک دستگاه جانبی پشتیبانی میکند، دستگاه جانبی باید از پارامترهای اتصال زیر پشتیبانی کند. این فهرست بخشی از پیکربندیهایی است که مرکزی میتواند پیادهسازی کند.
| کدک | نرخ بیت | فاصله اتصال | طول CE (1M/2M PHY) | اندازه پایهبار صوتی |
|---|---|---|---|---|
| G.722 @ 16 kHz | ۶۴ کیلوبیت در ثانیه | ۲۰ میلیثانیه | ۵۰۰۰/۳۷۵۰ us | ۱۶۰ بایت |
شروع و متوقف کردن جاریسازی صوتی
قبلاز شروع جاریسازی صوتی، مرکزی از پیرامونیها پُرسمان میکند و کدک مخرج مشترک را برقرار میکند. راهاندازی جاریسازی سپس ازطریق توالی زیر ادامه مییابد:
- PSM و درصورت تمایل،
RenderDelayخوانده میشود. این مقادیر ممکن است توسط مرکزی ذخیره شوند. - کانال CoC L2CAP باز میشود – پیرامونی باید در ابتدا هشت اعتبار اعطا کند.
- بهروزرسانی اتصال برای تغییر پیوند به پارامترهای موردنیاز برای کدک انتخابشده صادر میشود. مرکز ممکن است این بهروزرسانی اتصال را قبلاز اتصال CoC در مرحله قبلی انجام دهد.
- هم میزبان مرکزی و هم میزبان پیرامونی منتظر رویداد تکمیل بهروزرسانی میمانند.
-
کدبند صوتی را بازراهاندازی کنید و تعداد توالی بستهها را به ۰ بازنشانی کنید.
فرمان
«Start»با پارامترهای مربوط درAudioControlPointصادر شده است. دستگاه مرکزی قبلاز جاریسازی منتظر دریافت اعلان وضعیت موفقیتآمیز فرمان«Start»قبلی از دستگاه جانبی میماند. این انتظار به دستگاه جانبی فرصت میدهد تا خط لوله بازپخش صوتی خود را آماده کند. درطول جاریسازی صوتی، نسخه بدل باید در هر رویداد اتصال دردسترس باشد، حتی اگر تأخیر نسخه بدل فعلی غیرصفر باشد. - دستگاه جانبی اولین بسته صوتی را از صف داخلی خود (شماره توالی ۰) برمیدارد و آن را پخش میکند.
مرکز فرمان «توقف» را برای بستن جاریسازی صوتی صادر میکند. پساز این فرمان، لازم نیست پیرامونی در هر رویداد اتصال دردسترس باشد. برای بازراهاندازی جاریسازی صوتی، توالی بالا را از مرحله ۵ شروع کنید. وقتی دستگاه مرکزی درحال جاریسازی صدا نیست، باید اتصال «کممصرف» را برای خدمات GATT حفظ کند.
دستگاه جانبی نباید بهروزرسانی اتصال را به دستگاه مرکزی ارسال کند. برای صرفهجویی در مصرف انرژی، وقتی دستگاه جانبی درحال جاریسازی صدا نیست، دستگاه مرکزی ممکن است بهروزرسانی اتصال را برای دستگاه جانبی صادر کند.