מכשירי שמיעה (HA) יכולים לקבל נגישות משופרת במכשירים ניידים המופעלים על ידי אנדרואיד על ידי שימוש בערוצי L2CAP מוכווני חיבור (CoC) על Bluetooth Low Energy (BLE). CoC משתמש במאגר אלסטי של מספר מנות שמע כדי לשמור על זרימה קבועה של שמע, אפילו בנוכחות אובדן מנות. מאגר זה מספק איכות שמע למכשירי שמיעה על חשבון השהיה.
העיצוב של CoC מתייחס למפרט הליבה של Bluetooth גרסה 5 (BT). כדי להישאר מיושרים עם מפרטי הליבה, כל ערכי ריבוי-בתים בדף זה ייקראו כ-Little-endian.
טרמינולוגיה
- מרכזי - מכשיר האנדרואיד הסורק פרסומות באמצעות בלוטות'.
- ציוד היקפי - מכשיר השמיעה ששולח מנות פרסומת באמצעות בלוטות'.
טופולוגיית רשת וארכיטקטורת מערכת
בעת שימוש ב-CoC עבור מכשירי שמיעה, טופולוגיית הרשת מניחה מכשיר מרכזי אחד ושני ציוד היקפי, אחד משמאל ואחד ימני, כפי שניתן לראות באיור 1 . מערכת השמע Bluetooth רואה את הציוד ההיקפי השמאלי והימני ככיור שמע יחיד. אם חסר ציוד היקפי, עקב התאמה מונואורלית או אובדן חיבור, אז המרכז מערבב את ערוץ השמע השמאלי והימני ומעביר את השמע לשאר הציוד ההיקפי. אם המרכזי מאבד את החיבור לשני הציוד ההיקפי, אז המרכזי מחשיב את הקישור לכיור האודיו שאבד. במקרים אלה, המרכז מנתב אודיו לפלט אחר.
איור 1. טופולוגיה לשיוך מכשירי שמיעה עם מכשירי אנדרואיד ניידים באמצעות CoC על BLE
כאשר המרכז לא מזרים נתוני אודיו לציוד ההיקפי ויכול לשמור על חיבור BLE, המרכז לא צריך להתנתק מהציוד ההיקפי. שמירה על החיבור מאפשרת תקשורת נתונים לשרת GATT השוכן על הציוד ההיקפי.
בעת זיווג וחיבור מכשירי שמיעה, המרכז צריך:
- עקוב אחר הצמדים העדכניים יותר של ציוד היקפי משמאל וימין.
- נניח שהציוד ההיקפי נמצא בשימוש אם קיים התאמה חוקית. המרכז ינסה להתחבר או להתחבר מחדש עם ההתקן המותאם כאשר החיבור אבד.
- נניח שהציוד ההיקפי אינו בשימוש עוד אם התאמה נמחקת.
במקרים שלעיל, צימוד מתייחס לפעולה של רישום קבוצה של מכשירי שמיעה עם UUID נתון וסמלים שמאלה/ימינה במערכת ההפעלה, לא לתהליך ההתאמה של Bluetooth.
דרישות מערכת
כדי ליישם כראוי CoC לחוויית משתמש טובה, מערכות ה-Bluetooth במכשירים המרכזיים וההיקפיים יהיו:
- ליישם בקר תואם BT 4.2 ומעלה. LE Secure Connections מומלץ מאוד.
- יש תמיכה מרכזית ב-2 קישורי LE בו-זמניים לפחות עם פרמטרים כמתואר בפורמט מנות אודיו ובתזמון .
- יש לתמיכה ההיקפית לפחות קישור LE אחד עם הפרמטרים המתוארים בפורמט חבילת אודיו ובתזמון .
- יש בקרת זרימה מבוססת אשראי LE [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
להיות הערכים הדרושים הקטנים ביותר הדרושים למפרטים אלה. זה מאפשר למרכז לבצע אופטימיזציה של מתזמן הזמן שלו בעת חישוב משך הזמן הדרוש לקבלת מסגרת.
מומלץ מאוד שהמרכז וההיקפי יתמוך ב-2MB PHY כמפורט במפרט BT 5.0. המרכז יתמוך בקישורי שמע של לפחות 64 kbit/s בשני 1M ו-2M PHYs. אין להשתמש ב-BLE לטווח ארוך PHY.
CoC משתמש במנגנוני Bluetooth הסטנדרטיים להצפנת שכבת קישור ודילוג תדר.
שירותי ASHA GATT
ציוד היקפי יישם את שירות שרת ה-GATT של Audio Streaming for Hearing Aid (ASHA) המתואר להלן. הציוד ההיקפי יפרסם שירות זה במצב גלוי כללי כדי לאפשר למרכז לזהות כיור שמע. כל פעולות הזרמת אודיו של LE ידרשו הצפנה. הזרמת השמע של BLE מורכבת מהמאפיינים הבאים:
מאפיין | נכסים | תיאור |
---|---|---|
מאפיינים לקריאה בלבד | לקרוא | ראה מאפיינים לקריאה בלבד . |
AudioControlPoint | כתוב וכתוב ללא תגובה | נקודת בקרה לזרם אודיו. ראה AudioControlPoint . |
AudioStatusPoint | קרא/הודע | שדה דוח מצב עבור נקודת בקרת השמע. ראה AudioStatusPoint |
כרך | כתוב ללא תגובה | Byte בין -128 ל-0 המציין את כמות ההנחתה שיש להחיל על אות האודיו המוזרם, בטווח שבין -48 dB עד 0 dB. הגדרה -128 תתפרש כמושתקת לחלוטין, כלומר רמת הווליום הנמוכה ביותר שאינה מושתקת היא -127 אשר שווה ערך להנחתה של -47.625 dB. בהגדרה 0, צליל סינוס מסילה למסילה המוזרם ייצג קלט של 100 dBSPL שווה ערך במכשיר השמיעה. המרכז יזרום בקנה מידה מלא נומינלי וישתמש במשתנה זה כדי להגדיר את רמת ההצגה הרצויה בציוד ההיקפי. |
LE_PSM_OUT | לקרוא | PSM לשימוש לחיבור ערוץ השמע. לבחירה מהטווח הדינמי [BT Vol 3, Part A, Sec 4.22] |
מזהי ה-UUID שהוקצו לשירות ולמאפיינים:
UUID של שירות : {0xFDF0}
מאפיין | UUID |
---|---|
מאפיינים לקריאה בלבד | {6333651e-c481-4a3e-9169-7c902aad37bb} |
AudioControlPoint | {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 | ראה FeatureMap . |
11-12 | RenderDelay. זהו הזמן, באלפיות שניות, מרגע שהציוד ההיקפי מקבל מסגרת שמע ועד שהציוד ההיקפי מעבד את הפלט. ניתן להשתמש בתים אלה כדי לעכב סרטון להסתנכרן עם האודיו. |
13-14 | שמור לשימוש עתידי. אתחול לאפסים. |
15-16 | מזהי Codec נתמכים. זוהי מסכת סיביות של מזהי codec נתמכים. מיקום 1 ב-bit מתאים לקודק נתמך. לדוגמה, 0x0002 מציין ש-G.722 ב-16 קילו-הרץ נתמך. כל שאר הסיביות יוגדרו ל-0. |
יכולות מכשיר
קצת | תיאור |
---|---|
0 | צד המכשיר (שמאל: 0, ימין: 1). |
1 | מונורלי (0) / בינאורלי (1). מציין אם המכשיר עומד בפני עצמו ומקבל נתוני מונו, או שהמכשיר הוא חלק מסט. |
2-7 | שמור (מוגדר ל-0). |
HiSyncID
שדה זה חייב להיות ייחודי עבור כל המכשירים הבינוראליים, אך הוא חייב להיות זהה עבור הקבוצה השמאלית והימנית.
בייט | תיאור |
---|---|
0-1 | מזהה היצרן. זה מזהי החברה שהוקצו על ידי BTSIG. |
2-7 | תעודה מזהה ייחודית המזהה את ערכת מכשיר השמיעה. יש להגדיר את המזהה הזה לאותו מכשיר ההיקפי השמאלי והימני. |
FeatureMap
קצת | תיאור |
---|---|
0 | LE CoC פלט אודיו נתמך (כן/לא). |
1-7 | שמור (מוגדר ל-0). |
מזהי Codec
אם הביט מוגדר, אז ה-Codec המסוים הזה תומך.
מספר מזהה / ביט | Codec וקצב דגימה | קצב סיביות נדרש | זמן מסגרת | חובה על מרכזי (C) או היקפי (P) |
---|---|---|---|---|
0 | שמורות | שמורות | שמורות | שמורות |
1 | G.722 @ 16 קילו-הרץ | 64 kbit/s | מִשְׁתַנֶה | C ו-P |
2-15 שמורות. 0 שמור גם כן. |
AudioControlPoint
לא ניתן להשתמש בנקודת בקרה זו כאשר LE CoC סגור. ראה הפעלה ועצירה של זרם שמע לתיאור ההליך.
Opcode | טיעונים | תת נוהל GATT | תיאור |
---|---|---|---|
1 «Start» |
| כתוב עם תגובה, וצפה להודעת סטטוס נוספת באמצעות מאפיין AudioStatusPoint . | מורה לציוד ההיקפי לאפס את ה-Codec ולהתחיל את ההשמעה של מסגרת 0. שדה ה-Codec מציין את מזהה ה-Codec שישמש עבור השמעה זו. לדוגמה, שדה ה-codec הוא "1" עבור G.722 ב-16k הרץ. שדה הסיביות של סוג האודיו מציין את סוגי האודיו הקיימים בזרם:
הציוד ההיקפי לא יבקש עדכוני חיבור לפני שהתקבל קוד «Stop» . |
2 «Stop» | אף אחד | כתוב עם תגובה, וצפה להודעת סטטוס נוספת באמצעות מאפיין AudioStatusPoint . | מורה לציוד ההיקפי להפסיק את עיבוד האודיו. יש להתחיל רצף הגדרת אודיו חדש לאחר עצירה זו כדי להחזיר אודיו. |
3 «Status» |
| כתוב ללא תגובה | מודיע לציוד ההיקפי המחובר שיש עדכון סטטוס על הציוד ההיקפי השני. השדה המחובר מציין את סוג העדכון:
|
AudioStatusPoint
שדה דוח מצב עבור נקודת בקרת השמע
Opcodes | תיאור |
---|---|
0 | המצב בסדר |
-1 | פקודה לא מזוהה |
-2 | פרמטרים לא חוקיים |
פרסומות לשירות ASHA GATT
שירות UUID חייב להיות בחבילת הפרסום. בפרסומת או במסגרת תגובת הסריקה, הציוד ההיקפי חייב להיות בעל נתוני שירות:
היסט בתים | שֵׁם | תיאור |
---|---|---|
0 | AD אורך | >= 0x09 |
1 | סוג AD | 0x16 (נתוני שירות - 16 סיביות UUID) |
2-3 | שירות UUID | 0xFDF0 (ליט-אנדיאן) הערה: זהו זיהוי זמני. |
4 | גרסת פרוטוקול | 0x01 |
5 | יכולת |
|
6-9 | HiSyncID קטוע | ארבעה בתים הכי פחות משמעותיים של HiSyncId . בתים אלה צריכים להיות החלק האקראי ביותר של המזהה. |
על הציוד ההיקפי להיות סוג נתוני Complete Local Name המציין את שם מכשיר השמיעה. שם זה ישמש בממשק המשתמש של המכשיר הנייד כך שהמשתמש יוכל לבחור את המכשיר הנכון. השם לא יציין את הערוץ השמאלי או הימני מכיוון שמידע זה מסופק ב- DeviceCapabilities .
אם הציוד ההיקפי מכניס את השם ואת סוגי השירות של ASHA באותו סוג מסגרת (ADV או SCAN RESP), אז שני סוגי הנתונים ("שם מקומי מלא" ו"נתוני שירות עבור שירות ASHA") יופיעו באותה מסגרת. זה מאפשר לסורק המכשיר הנייד לקבל את שני הנתונים באותה תוצאת סריקה.
במהלך ההתאמה הראשונית, חשוב שהציוד ההיקפי יפרסם בקצב מהיר מספיק כדי לאפשר למכשיר הנייד לגלות במהירות את הציוד ההיקפי ולהיקשר אליהם.
סנכרון התקנים היקפיים ימני ושמאלי
כדי לעבוד עם Bluetooth במכשירי Android ניידים, התקנים היקפיים אחראים לוודא שהם מסונכרנים. יש לסנכרן את ההשמעה במכשירי ההיקפי השמאלי והימני בזמן. שני המכשירים ההיקפיים חייבים להשמיע דגימות שמע מהמקור בו-זמנית.
התקנים היקפיים יכולים לסנכרן את הזמן שלהם באמצעות מספר רצף המוצמד לכל חבילה של מטען השמע. המרכז מבטיח שחבילות אודיו שנועדו להתנגן באותו זמן בכל ציוד היקפי בעלות אותו מספר רצף. מספר הרצף גדל באחד לאחר כל חבילת שמע. כל מספר רצף הוא באורך 8 סיביות, כך שמספרי הרצף יחזרו על עצמם לאחר 256 מנות שמע. מכיוון שכל גודל חבילת אודיו וקצב הדגימה קבועים עבור כל חיבור, שני הציוד ההיקפי יכולים להסיק את זמן ההשמעה היחסי. למידע נוסף על חבילת השמע, ראה פורמט ותזמון חבילת שמע .
המרכז מסייע על ידי מתן טריגרים למכשירים הבינוראליים כאשר ייתכן שהסנכרון יצטרך לקרות. טריגרים אלו מודיעים לכל ציוד היקפי על מצב ההתקן ההיקפי המותאם שלו בכל פעם שיש פעולה שעשויה להשפיע על הסנכרון. הטריגרים הם:
- כחלק
«Start»
של AudioControlPoint, ניתן מצב החיבור הנוכחי של הצד השני של ההתקנים הבינוראליים. - בכל פעם שיש פעולת חיבור, ניתוק או עדכון פרמטרי חיבור בציוד היקפי אחד, הפקודה
«Status»
של AudioControlPoint נשלחת לצד השני של ההתקנים הבינוראליים.
פורמט ותזמון חבילות אודיו
אריזה של מסגרות שמע (בלוקים של דגימות) לתוך מנות מאפשרת למכשיר השמיעה לגזור תזמון מעוגני התזמון של שכבת הקישור. כדי לפשט את היישום:
- מסגרת שמע צריכה תמיד להתאים את מרווח החיבור בזמן. לדוגמה, אם מרווח החיבור הוא 20ms וקצב הדגימה הוא 16 קילו-הרץ, מסגרת האודיו תכיל 320 דגימות.
- קצבי הדגימה במערכת מוגבלים לכפולות של 8kHz כדי שיהיו תמיד מספר שלם של דגימות במסגרת ללא קשר לזמן המסגרת או מרווח החיבור.
- בייט רצף יהווה מסגרות שמע. בית הרצף ייספר עם עיטוף ויאפשר לציוד ההיקפי לזהות חוסר התאמה של מאגר או זרימה נמוכה.
- מסגרת שמע תמיד תתאים לחבילת LE אחת. מסגרת האודיו תישלח כחבילת L2CAP נפרדת. הגודל של LE LL PDU יהיה:
גודל עומס שמע + 1 (מונה רצפים) + 6 (4 עבור כותרת L2CAP, 2 עבור SDU) - אירוע חיבור צריך תמיד להיות גדול מספיק כדי להכיל 2 מנות שמע ו-2 מנות ריקות כדי ש-ACK ישמור רוחב פס לשידורים חוזרים. שים לב שחבילת השמע עשויה להיות מקוטעת על ידי בקר ה-Bluetooth של המרכז. הציוד ההיקפי חייב להיות מסוגל לקבל יותר מ-2 חבילות שמע מפוצלות לכל אירוע חיבור.
כדי לתת למרכז גמישות מסוימת, אורך החבילה G.722 לא מצוין. אורך מנות G.722 יכול להשתנות בהתאם למרווח החיבור שהמרכז מגדיר.
פורמט אוקטט הפלט G.722 מתייחס ל- Rec. ITU-T G.722 (09/2012) סעיף 1.4.4 "מרובה צדדים"
עבור כל רכיבי ה-codec שבהם תומך ציוד היקפי, הציוד ההיקפי יתמוך בפרמטרי החיבור שלהלן. זוהי רשימה לא ממצה של תצורות שהמרכז יכול ליישם.
Codec | קצב סיביות | מרווח חיבור | אורך CE (1M/2M PHY) | גודל מטען אודיו |
---|---|---|---|---|
G.722 @ 16 קילו-הרץ | 64 kbit/s | 20 אלפיות השנייה | 5000/3750 לנו | 160 בתים |
הפעלה ועצירה של זרם שמע
לפני תחילת זרם אודיו, המרכז מבצע שאילתות על הציוד ההיקפי ומקים קודק מכנה משותף. הגדרת הזרם ממשיכה ברצף הבא:
- PSM, ואופציונלי, RenderDelay נקרא. ערכים אלה עשויים להיות מאוחסנים במטמון על ידי המרכז.
- נפתח ערוץ CoC L2CAP - הציוד ההיקפי יעניק 8 קרדיטים בתחילה.
- עדכון חיבור מונפק כדי להעביר את הקישור לפרמטרים הנדרשים עבור ה-codec הנבחר. המרכז עשוי לבצע את עדכון החיבור הזה לפני חיבור ה-CoC בשלב הקודם.
- גם המארח המרכזי וגם המארח ההיקפי ממתינים לאירוע השלמת העדכון.
- הפעל מחדש את מקודד השמע, ואפס את ספירת רצף החבילות ל-0. פקודת
«Start»
עם הפרמטרים הרלוונטיים מונפקת ב- AudioControlPoint. המרכז ממתין להודעת סטטוס מוצלחת של הפקודה הקודמת«Start»
מהציוד ההיקפי לפני הזרמה. המתנה זו נותנת למכשיר ההיקפי זמן להכין את צינור השמעת האודיו שלו. במהלך הזרמת אודיו, העתק צריך להיות זמין בכל אירוע חיבור למרות שזמן האחזור הנוכחי של העתק עשוי להיות לא אפס. - הציוד ההיקפי לוקח את חבילת האודיו הראשונה מהתור הפנימי שלו (מספר רצף 0) ומשמיע אותה.
המרכז מוציא את הפקודה "עצור" כדי לסגור את זרם האודיו. לאחר פקודה זו, הציוד ההיקפי לא צריך להיות זמין בכל אירוע חיבור. כדי להפעיל מחדש את הזרמת האודיו, עברו על הרצף שלמעלה, החל משלב 5. כאשר המרכז לא מזרים אודיו, הוא עדיין צריך לשמור על חיבור LE עבור שירותי GATT.
הציוד ההיקפי לא יוציא עדכון חיבור למרכז. כדי לחסוך בחשמל, המרכז עשוי להוציא עדכון חיבור לציוד ההיקפי כאשר הוא אינו מזרים אודיו.