دستگاههای سمعک (HA) میتوانند با استفاده از کانالهای L2CAP اتصال گرا (CoC) از طریق بلوتوث کمانرژی (BLE) دسترسی بهتری را در دستگاههای تلفن همراه مجهز به Android داشته باشند. CoC از یک بافر الاستیک از چندین بسته صوتی برای حفظ جریان ثابت صدا، حتی در صورت از دست دادن بسته، استفاده می کند. این بافر کیفیت صدا را برای دستگاه های سمعک با هزینه تأخیر فراهم می کند.
طراحی CoC به مشخصات هسته بلوتوث (BT) نسخه 6.0 اشاره دارد. برای همراستایی با مشخصات اصلی، همه مقادیر چند بایتی در این صفحه باید بهعنوان little-endian خوانده شوند.
اصطلاحات
- مرکزی
- دستگاه اندرویدی که تبلیغات را از طریق بلوتوث اسکن می کند.
- محیطی
- شنوایی که بسته های تبلیغاتی را از طریق بلوتوث ارسال می کند.
توپولوژی شبکه و معماری سیستم
هنگام استفاده از CoC برای سمعک، توپولوژی شبکه یک مرکزی و دو وسیله جانبی، یکی چپ و دیگری راست را در نظر می گیرد، همانطور که در شکل 1 مشاهده می شود. اگر یک وسیله جانبی به دلیل تناسب تک صدایی یا قطع اتصال وجود نداشته باشد، سپس مرکز کانال صوتی چپ و راست را مخلوط می کند و صدا را به دستگاه جانبی باقی مانده منتقل می کند. اگر سانترال اتصال به هر دو دستگاه جانبی را قطع کند، مرکز اتصال به سینک صوتی را از دست رفته در نظر می گیرد. در این موارد، مرکز صدا را به خروجی دیگری هدایت می کند.
شکل 1. توپولوژی برای جفت کردن سمعک با دستگاه های تلفن همراه Android با استفاده از CoC بر روی BLE.
هنگامی که مرکزی داده های صوتی را به دستگاه جانبی پخش نمی کند و می تواند اتصال BLE را حفظ کند، مرکزی نباید از دستگاه جانبی جدا شود. حفظ اتصال اجازه می دهد تا داده ها به سرور GATT مستقر در دستگاه جانبی ارتباط برقرار کند.
هنگام جفت شدن و اتصال دستگاه های شنوایی، سانترال باید:
- جفتشدهترین دستگاههای جانبی چپ و راست اخیر را دنبال کنید.
- فرض کنید اگر یک جفت معتبر وجود داشته باشد، تجهیزات جانبی در حال استفاده هستند. وقتی اتصال قطع شد، سانترال باید سعی کند به دستگاه جفت شده متصل یا دوباره وصل شود.
- فرض کنید اگر جفت شدن حذف شود، دیگر از تجهیزات جانبی استفاده نمی شود.
در موارد بالا، جفتسازی به عمل ثبت مجموعهای از سمعکها با یک UUID معین و نشانههای چپ/راست در سیستمعامل اشاره دارد، نه فرآیند جفتسازی بلوتوث.
سیستم مورد نیاز
برای اجرای صحیح CoC برای تجربه کاربری خوب، سیستمهای بلوتوث در دستگاههای مرکزی و جانبی باید موارد زیر را انجام دهند:
- یک کنترلر سازگار BT 4.2 یا بالاتر را اجرا کنید. ما به شدت LE Secure Connections را توصیه می کنیم.
- حداقل دو پیوند LE همزمان در مرکز را با پارامترهایی که در قالب بسته صوتی و زمان بندی توضیح داده شده است، پشتیبانی کنید.
- حداقل یک پیوند LE در دستگاه جانبی با پارامترهای توصیف شده در قالب بسته صوتی و زمان بندی پشتیبانی کنید.
- از کنترل جریان مبتنی بر اعتبار LE پشتیبانی کنید [BT جلد 3، قسمت A، Sec 10.1]. دستگاه ها باید از اندازه MTU و MPS حداقل 167 بایت در CoC پشتیبانی کنند و بتوانند تا هشت بسته را بافر کنند.
- از یک پسوند طول داده 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
روی دستگاه جانبی تنظیم کنید تا کوچکترین مقادیر لازم برای این مشخصات باشند. این به مرکزی اجازه می دهد تا زمانبندی زمان خود را هنگام محاسبه زمان مورد نیاز برای دریافت فریم بهینه کند.
ما قویاً توصیه می کنیم که مرکز و دستگاه جانبی از 2M PHY همانطور که در مشخصات BT 5.0 مشخص شده است پشتیبانی کند. مرکز باید از پیوندهای صوتی حداقل 64 کیلوبیت بر ثانیه در هر دو 1M و 2M PHY پشتیبانی کند. BLE برد بلند PHY نباید استفاده شود.
CoC از مکانیسم استاندارد بلوتوث برای رمزگذاری لایه پیوند و پرش فرکانس استفاده می کند.
خدمات ASHA GATT
یک دستگاه جانبی باید سرویس سرور GATT پخش جریانی صوتی برای سمعک (ASHA) را که در زیر توضیح داده شده است، اجرا کند. دستگاه جانبی باید این سرویس را هنگامی که در حالت عمومی قابل شناسایی است تبلیغ کند تا به مرکز اجازه دهد یک سینک صوتی را تشخیص دهد. هر عملیات پخش صوتی LE باید به رمزگذاری نیاز داشته باشد. جریان صوتی BLE شامل ویژگی های زیر است:
مشخصه | خواص | توضیحات |
---|---|---|
ReadOnlyProperties | بخوانید | ReadOnlyProperties ببینید. |
AudioControlPoint | بدون پاسخ بنویس و بنویس | نقطه کنترل برای جریان صدا. AudioControlPoint ببینید. |
AudioStatusPoint | بخوانید/اطلاع دهید | قسمت گزارش وضعیت برای نقطه کنترل صدا. AudioStatusPoint ببینید. |
Volume | بدون پاسخ بنویس | بایت بین 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 |
---|---|
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 | شناسه های کدک پشتیبانی شده این یک بیت ماسک از شناسه های کدک پشتیبانی شده است. یک مکان 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 کیلوبیت بر ثانیه | متغیر | C و P |
2-15 رزرو شده است. |
AudioControlPoint
وقتی LE CoC بسته است نمی توان از این نقطه کنترل استفاده کرد. برای توضیحات روش، شروع و توقف یک جریان صوتی را ببینید.
اپکد | استدلال ها | رویه فرعی گات | توضیحات |
---|---|---|---|
1 «Start» |
| با پاسخ بنویسید و با استفاده از مشخصه AudioStatusPoint منتظر اعلان وضعیت اضافی باشید. | به دستگاه جانبی دستور می دهد تا کدک را بازنشانی کند و پخش فریم 0 را شروع کند. قسمت codec شناسه کدک مورد استفاده برای این پخش را نشان می دهد. برای مثال، فیلد codec «1» برای G.722 در 16 کیلوهرتز است.فیلد بیت نوع صدا، انواع صوتی موجود در جریان را نشان می دهد:
otherstate نشان می دهد که آیا طرف دیگر دستگاه های دو گوش متصل است یا خیر. مقدار فیلد زمانی که دستگاه جانبی دیگر متصل است 1 است، در غیر این صورت مقدار 0 است.قبل از دریافت کد عملیاتی «Stop» ، دستگاه جانبی نباید درخواست به روز رسانی اتصال کند. |
2 «Stop» | هیچ کدام | با پاسخ بنویسید و با استفاده از مشخصه AudioStatusPoint منتظر اعلان وضعیت اضافی باشید. | به دستگاه جانبی دستور می دهد تا رندر صدا را متوقف کند. پس از این توقف، یک ترتیب تنظیم صوتی جدید باید آغاز شود تا صدا دوباره ارائه شود. |
3 «Status» |
| بدون پاسخ بنویس | به دستگاه جانبی متصل اطلاع می دهد که وضعیت به روز رسانی در دستگاه جانبی دیگر وجود دارد. فیلد connected نوع به روز رسانی را نشان می دهد:
|
AudioStatusPoint
قسمت گزارش وضعیت برای نقطه کنترل صدا
Opcodes | توضیحات |
---|---|
0 | وضعیت خوب است |
-1 | دستور ناشناخته |
-2 | پارامترهای غیرقانونی |
تبلیغات خدمات ASHA GATT
UUID سرویس باید در بسته تبلیغاتی باشد. در تبلیغات یا قاب پاسخ اسکن، تجهیزات جانبی باید یک نوع داده سرویس داشته باشند:
بایت افست | نام | توضیحات |
---|---|---|
0 | طول AD | >= 0x09 |
1 | نوع AD | 0x16 (داده های سرویس - UUID 16 بیتی) |
2-3 | سرویس UUID | 0xFDF0 (کمی اندین) توجه: این یک شناسه موقت است. |
4 | نسخه پروتکل | 0x01 |
5 | قابلیت |
|
6-9 | HiSyncId کوتاه شده | چهار بایت مهم HiSyncId . این بایت ها باید تصادفی ترین قسمت شناسه باشند. |
تجهیزات جانبی باید دارای یک نوع داده با نام محلی کامل باشند که نام سمعک را نشان می دهد. این نام در رابط کاربری دستگاه تلفن همراه استفاده می شود تا کاربر بتواند دستگاه مناسب را انتخاب کند. نام نباید نشان دهنده کانال چپ یا راست باشد زیرا این اطلاعات در DeviceCapabilities
ارائه شده است.
اگر دستگاههای جانبی نام و انواع دادههای سرویس ASHA را در یک نوع قاب قرار دهند (ADV یا SCAN RESP)، دو نوع داده ("نام محلی کامل" و "دادههای سرویس برای سرویس ASHA") باید در یک قاب ظاهر شوند. این به اسکنر دستگاه تلفن همراه امکان می دهد هر دو داده را در یک نتیجه اسکن دریافت کند.
در طول جفت شدن اولیه، مهم است که وسایل جانبی با سرعت کافی تبلیغ کنند تا به دستگاه تلفن همراه اجازه دهند سریعاً لوازم جانبی را کشف کند و به آنها متصل شود.
دستگاه های جانبی چپ و راست را همگام سازی کنید
برای کار با بلوتوث در دستگاههای تلفن همراه Android، دستگاههای جانبی وظیفه دارند از همگامسازی آنها اطمینان حاصل کنند. پخش در دستگاه های جانبی چپ و راست باید به موقع هماهنگ شود. هر دو دستگاه جانبی باید نمونه های صوتی را از منبع به طور همزمان پخش کنند.
دستگاه های جانبی می توانند زمان خود را با استفاده از شماره دنباله ای که به هر بسته از محموله صوتی اضافه شده است، همگام کنند. بخش مرکزی تضمین میکند که بستههای صوتی که قرار است همزمان روی هر وسیله جانبی پخش شوند دارای یک شماره دنباله باشند. شماره دنباله بعد از هر بسته صوتی یک عدد افزایش می یابد. هر شماره دنباله ای 8 بیتی است، بنابراین اعداد دنباله پس از 256 بسته صوتی تکرار می شوند. از آنجایی که هر اندازه بسته صوتی و نرخ نمونه برای هر اتصال ثابت است، دو دستگاه جانبی می توانند زمان پخش نسبی را استنتاج کنند. برای اطلاعات بیشتر درباره بسته صوتی، قالب بسته صوتی و زمانبندی را ببینید.
هنگامی که ممکن است نیاز به همگام سازی باشد، مرکز با ارائه تریگر به دستگاه های دو گوش کمک می کند. هر زمان که عملیاتی وجود داشته باشد که میتواند بر همگامسازی تأثیر بگذارد، هر دستگاه جانبی را از وضعیت دستگاه جانبی جفت شده خود مطلع میکند. محرک ها عبارتند از:
- به عنوان بخشی از فرمان
«Start»
AudioControlPoint
، وضعیت اتصال فعلی طرف دیگر دستگاههای دوگوشی ارائه میشود. - هر زمان که یک اتصال، قطع یا عملیات بهروزرسانی پارامتر اتصال در یک دستگاه جانبی وجود داشته باشد، فرمان
«Status»
AudioControlPoint
به طرف دیگر دستگاههای دوگوشی ارسال میشود.
قالب و زمان بندی بسته های صوتی
بستهبندی فریمهای صوتی (بلوکهایی از نمونهها) در بستهها به سمعک اجازه میدهد زمانبندی را از لنگرهای زمانبندی لایه پیوند استخراج کند. برای ساده سازی اجرا:
- یک قاب صوتی باید همیشه با فاصله زمانی اتصال مطابقت داشته باشد. برای مثال، اگر فاصله اتصال 20 میلیثانیه و نرخ نمونه 16 کیلوهرتز باشد، قاب صوتی باید شامل 320 نمونه باشد.
- نرخ های نمونه در سیستم به مضرب 8 کیلوهرتز محدود می شود تا همیشه تعداد صحیحی از نمونه ها در یک فریم بدون توجه به زمان فریم یا فاصله اتصال وجود داشته باشد.
- یک بایت دنباله ای باید فریم های صوتی را اضافه کند. بایت دنباله باید با wrap-around شمارش شود و به دستگاه جانبی اجازه دهد تا عدم تطابق بافر یا underflow را تشخیص دهد.
- یک فریم صوتی باید همیشه در یک بسته LE قرار گیرد. فریم صوتی باید به عنوان یک بسته L2CAP جداگانه ارسال شود. اندازه PDU LE LL باید:
اندازه محموله صوتی + 1 (شمارگر ترتیب) + 6 (4 برای هدر L2CAP، 2 برای SDU) - یک رویداد اتصال باید همیشه آنقدر بزرگ باشد که شامل دو بسته صوتی و دو بسته خالی باشد تا یک ACK پهنای باند را برای ارسال مجدد ذخیره کند. توجه داشته باشید که بسته صوتی ممکن است توسط کنترلر بلوتوث مرکزی تکه تکه شود. دستگاه جانبی باید قادر به دریافت بیش از دو بسته صوتی تکه تکه شده در هر رویداد اتصال باشد.
برای ایجاد انعطاف پذیری مرکزی، طول بسته G.722 مشخص نشده است. طول بسته G.722 می تواند بر اساس فاصله زمانی اتصالی که مرکز تنظیم می کند تغییر کند.
فرمت هشتگانه خروجی G.722 به Rec اشاره دارد. ITU-T G.722 (09/2012) بخش 1.4.4 "Multiplexer".
برای همه کدک هایی که یک دستگاه جانبی پشتیبانی می کند، دستگاه جانبی باید از پارامترهای اتصال زیر پشتیبانی کند. این یک لیست جزئی از تنظیماتی است که مرکز می تواند اجرا کند.
کدک | میزان بیت | فاصله اتصال | طول CE (1M/2M PHY) | اندازه محموله صوتی |
---|---|---|---|---|
G.722 @ 16 کیلوهرتز | 64 کیلوبیت بر ثانیه | 20 میلیثانیه | 5000/3750 ما | 160 بایت |
یک جریان صوتی را شروع و متوقف کنید
قبل از شروع یک جریان صوتی، سانترال از لوازم جانبی پرس و جو می کند و یک کدک مخرج مشترک ایجاد می کند. سپس راه اندازی جریان از طریق دنباله زیر ادامه می یابد:
- PSM، و به صورت اختیاری،
RenderDelay
خوانده می شود. این مقادیر ممکن است توسط مرکز ذخیره شوند. - کانال CoC L2CAP باز شد - دستگاه جانبی باید در ابتدا هشت اعتبار اعطا کند.
- یک به روز رسانی اتصال برای تغییر پیوند به پارامترهای مورد نیاز برای کدک انتخابی صادر می شود. مرکز ممکن است این به روز رسانی اتصال را قبل از اتصال CoC در مرحله قبل انجام دهد.
- هر دو میزبان مرکزی و محیطی منتظر رویداد کامل به روز رسانی هستند.
- رمزگذار صوتی را مجدداً راه اندازی کنید و تعداد توالی بسته ها را به 0 بازنشانی کنید. دستور
«Start»
با پارامترهای مربوطه درAudioControlPoint
صادر می شود. مرکز منتظر اعلان وضعیت موفقیت آمیز دستور«Start»
قبلی از دستگاه جانبی قبل از پخش است. این انتظار به دستگاه جانبی زمان میدهد تا خط لوله پخش صوتی خود را آماده کند. در طول پخش صدا، ماکت باید در هر رویداد اتصال در دسترس باشد، حتی اگر تاخیر تکرار فعلی ممکن است غیر صفر باشد. - دستگاه جانبی اولین بسته صوتی را از صف داخلی خود (دنباله شماره 0) می گیرد و آن را پخش می کند.
مرکز فرمان «توقف» را برای بستن جریان صوتی صادر می کند. بعد از این دستور، نیازی نیست که ابزار جانبی در هر رویداد اتصال در دسترس باشد. برای راهاندازی مجدد جریان صوتی، از مرحله 5 شروع کنید، دنباله بالا را طی کنید. هنگامی که مرکز پخش صدا را پخش نمیکند، همچنان باید یک اتصال LE را برای خدمات GATT حفظ کند.
دستگاه جانبی نباید به روز رسانی اتصال به مرکزی را صادر کند. برای صرفه جویی در مصرف برق، ممکن است سانترال به روز رسانی اتصال به دستگاه جانبی را هنگامی که صدا پخش نمی کند صادر کند.