שינוי מקור אודיו

יותר ויותר משתמשים משתמשים במספר מכשירים עם מקור אודיו כדי לבצע את המשימות היומיומיות, ולכן יש ביקוש הולך וגדל לפתרון פשוט יותר לניהול השימוש באוזניות במכשירים שונים. שינוי מקור האודיו מעביר בצורה חלקה את חיבורי האוזניות בין מכשירים בהתאם לפעילות המשתמש (למשל, הפעלת סרט) ולאירועים בעדיפות גבוהה (למשל שיחה נכנסת).

העקרונות של חוויית המשתמש

  1. המעבר לחיבור צריך להיות מהיר המבוסס על פעולת המשתמש.
  2. המעבר מחיבור צריך להיות שקוף למשתמשים, כדי לאפשר למשתמשים להחליט אם המעבר לא רצוי או להחזיר אותו לפעולה אחרת.
  3. המעבר אמור לכבד את פרטיות המשתמשים.

תפקידים

Audio Switch Useker: מחפש מקור אודיו (למשל טלפון או טאבלט) שמחפש אוזניות בקרבת מקום כדי להתחבר אליהן, כשזה רלוונטי.

ספק מתג אודיו: הספק הוא בדרך כלל אוזניות שמפרסמות את הנוכחות ואת סטטוס החיבור שלו כדי שמחפשי האודיו יוכלו לקבל החלטות בנוגע למעבר.

סקירה כללית של הדרישות

כדי להשיג את המעבר החכם, הספקים חייבים לעמוד בדרישות הבאות:

שם תיאור דרישות חובה?
סריקת דפים כדי לאשר בקשת חיבור חדשה ממחפש אחר כשיש חיבור קיים.
לספקים עם נקודה יחידה:
  • מכשיר המקור המקורי ישהה באופן אוטומטי את הפעלת האודיו כשהספק יתנתק.
לספקי מרובה נקודות:
  • אם יש עדיין חיבור זמין, המכשיר יאשר את בקשת החיבור.
  • אם רוחב הפס בחיבור מלא, נתקו את החיבור שבו הכי פחות נעשה שימוש (למשל, לא היה אירוע אודיו במשך זמן רב) ואשרו את הבקשה הנכנסת החדשה.
כדי לשפר את הביצועים, נדרש מצב של סריקת דפים עם זמן אחזור קצר (מרווח הסריקה לא גדול מ-640 אלפיות השנייה).
כדי לאזן בין חיי הסוללה לבין הביצועים, לרוב הספק יכול להגדיר מצב ברירת מחדל לסריקת דפים (מצב צריכת חשמל נמוכה, מרווח הזמן בין הסריקה לא יכול להיות גדול מ-1,280 אלפיות השנייה). עם זאת, כדאי להשתמש במצב זמן אחזור נמוך במצבים הבאים:
  • 30 השניות הראשונות של הפעלה
  • 30 השניות הראשונות ללא חיבור או מעבר בין דפים
  • 30 השניות הראשונות של מכשיר ללא פעילות
חובה
היסטוריית חיבורים כדי לחזור לחיבור הקודם ולהמשיך בהפעלה אם רלוונטי.
הפעלה מחדש תופעל על ידי תקשורת דרך ממשקי Message Stream API.
אירוע השהיית האודיו צריך להיכלל ברשומה כדי להמשיך בהפעלה, אם רלוונטי.
ניהול היסטוריית החיבורים והטמעת ממשקי Message Stream API. חובה
סטטוס החיבור שמבקשים לבצע את שיפוט המעבר בין החיבורים.סטטוס החיבור כולל:
  • מצב חיבור
  • סוג האודיו של החיבור הפעיל
  • פרטי החשבון של החיבור הפעיל
  • מכשירים מחוברים
יש לכלול את סטטוס החיבור בפרסומת ב-BLE ובשידור ההודעות. חובה
שינוי ביכולות של זמן ריצה ניתן להפעיל את שינוי מקור האודיו על ידי שדרוג הקושחה של הספק, כך שיש לסנכרן את היכולות בין המחפש לספק בזמן הריצה. הטמעת ממשקי Message Stream API כדי לקבל גישה ליכולות זמן ריצה. חובה
כללי החלפה שניתן להגדיר התכונה 'מחפש' יכולה להגדיר את העדיפות בין סטרימינג פעיל של אודיו ובקשות חדשות לסטרימינג של אודיו באמצעות ההגדרות של העדפות המשתמש.
לדוגמה, המחפש של מתג האודיו יכול לספק הגדרות ממשק משתמש כדי לאפשר למשתמשים להפעיל או להשבית מעבר אוטומטי בין סטרימינג של מדיה לשיחות.
מחפש מתג אודיו יגדיר ויקבל את כלל ההחלפה דרך זרם הודעות.
ספקי Multipoint בלבד.
יש להטמיע ממשקי Message Stream API כדי שניתן יהיה להגדיר את כללי המעבר בין מכשירים מחוברים.
אופציונלי
החלפת מכשירים פעילה מתן הרשאה לתכונה 'מחפש שינוי של מקור האודיו' לדמות מעברי אודיו בין מכשירים מחוברים.
בצד המחפש של החלפת האודיו, יכול להיות שיופיע ממשק משתמש שבו המשתמשים יוכלו לעבור בקלות בין מכשירים מחוברים.
ספקי Multipoint בלבד.
יש להטמיע ממשקי API של Message Stream עבור מחפש מתג אודיו כדי לקבוע את מקור האודיו הפעיל בין מכשירים מחוברים.
חובה
התראת מעבר מרובה נקודות אפשר לשירות המחפש של מתג האודיו להציג את התראת המעבר. ספקי Multipoint בלבד.
יש להטמיע ממשקי API של Message Stream כדי להודיע למחפשי מתג אודיו מחוברים כשמתרחש מעבר רב-נקודתי.
חובה

מטען ייעודי (payload) של פרסום

הספק יכלול בפרסומת את סטטוס החיבור הנוכחי, שעומד על נתוני החשבון בהתאמה המהירה, שמתוארים בקטע פרסום: כשלא ניתן למצוא אותו.

לתשומת ליבכם: הגרסה של טבלה 4.2 היא 0x1.

שדה סטטוס החיבור

8 תווים סוג הנתונים תיאור ערך חובה?
0 uint8 אורך וסוג השדה
0bLLLLTTTT
  • L = אורך סטטוס החיבור בבייטים
  • T = סוג
0bLLLL0101
  • אורך: משתנה
  • type = 0b0101
חובה
1 uint8 מצב החיבור
0bHAFRSSSS
  • H = זיהוי על הראש
  • A = זמינות חיבור
  • F = מצב התמקדות
  • R = מחובר מחדש באופן אוטומטי
  • S = מצב חיבור
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 (שיחת טלפון/שיחת Voip), כולל רינגטון שדורש תדרים In-and ורינגטון שאינו רצועה
  • 0x7: LE audio – סטרימינג של מדיה ללא שליטה
  • 0x8: LE audio – סטרימינג של מדיה עם שליטה
  • 0x9: LE audio – סטרימינג של שיחות
  • 0xA: LE audio – שידור
  • 0xF: השבתה זמנית של מתג החיבור (למשל, עדכון קושחה)
מפת הסיביות של המכשיר המחובר

כדי למנוע מעבר לא רצוי בין החיבורים, ייתכן שהמחפש יצטרך לדעת לאילו מכשירים האוזניות מחוברות כרגע. לדוגמה, כשהאוזניות מחוברות לטלפון, המשתמש לא רוצה שמעבר החיבור יופרע כשאחד מבני המשפחה מפעיל את YouTube בטאבלט.

שימו לב שמפת הסיביות הזו היא אנונימית. למחפש אין אפשרות לדעת אילו מכשירים אחרים קשורים לספק. לדוגמה, ניקח 5 מכשירים קשורים:

  • 0: מחשב נייד (0bx0000000)
  • 1: phoneA (0b0x000000)
  • 2: phoneB (0b00x00000)
  • 3: טאבלט (0b000x0000)
  • 4: טלוויזיה (0b0000x000)

אם המכשירים המחוברים הנוכחיים הם מחשב נייד וטאבלט, הערך של מפת הסיביות יהיה 0b10010000. השינוי בהזמנה קביל אם הוא בלתי נמנע, למשל כשהמשתמשים מאפסים את האוזניות להגדרות המקוריות או כשמספר המכשירים המשויכים מגיעים למגבלה העליונה.

פרסומת אקראית שניתנת לפענוח

כדי למנוע מעקב ולכבד את פרטיות המשתמשים, הספק צריך לבצע רוטציה של השדה ולהצפין אותו לפי מפתח החשבון באמצעות AES-CTR:

 encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)

איפה

  1. המפתח נגזר ממפתח החשבון שבשימוש, שמוגדר בקטע הבא.

    • המפתח נוצר על ידי הפונקציה HKDF, IETF RFC 5869, באמצעות פונקציית הגיבוב SHA-256.

        Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
      
    • הספק ישתמש במפתח החשבון המקורי כאן, כלומר הבייט הראשון של המפתח הוא 0x04, לא נכלל בתבנית השימוש.

  2. IV (וקטור ראשוני) הוא ה-salt של 2 בייטים של נתוני מפתח החשבון ללא מרווח פנימי. כלומר, IV הוא concat(salt, ZEROs 14-bytes).

  3. הנתונים הגולמיים של סטטוס החיבור מוגדרים בטבלה 4.1. אם סטטוס החיבור משתנה, צריך ליצור מחדש את ה-salt וה-RPA באותה מסגרת זמן לפרסום.

כך השדה של סטטוס החיבור המוצפן יסתובב במקביל לרוטציה של נתוני המפתח של החשבון.

מבנה המודעה ב-BLE יהיה במבנה הבא:

8 תווים סוג הנתונים תיאור ערך חובה?
0 uint8 גרסה וסימונים 0x10 חובה
1 עד t נתוני מפתח של החשבון משתנה חובה
t+1 - s נתוני סוללה משתנה אופציונלי
s+1 - var נתונים אקראיים שניתנים לפתרון משתנה חובה אם רשימת המפתחות של החשבון לא ריקה,
אחרת לא נכללה.

טבלה 4.2: פרסום ב-BLE עם נתונים אקראיים שניתנים לפתרון

נתונים אקראיים שניתנים לפתרון כוללים:

8 תווים סוג הנתונים תיאור ערך חובה?
0 uint8 אורך וסוג השדה
0bLLLLTTTT
  • L = אורך הנתונים המוצפנים
  • T = סוג
0bLLLL0110
  • אורך: משתנה
  • type = 0b0110
חובה
1 - var נתונים מוצפנים משתנה חובה

טבלה 4.2.1: נתונים אקראיים שניתנים לפתרון

לדוגמה, אם השדה random Resolvable Data מכיל שדה סטטוס חיבור מוצפן, התוצאה המפוענחת תהיה השדה של סטטוס החיבור.

כדי למנוע פגיעה בנתונים, צריך לשנות מעט את הנתונים המרכזיים של החשבון שמופיעים למעלה כשהם כוללים בפרסומת נתונים אקראיים שניתנים לפתרון. בדרך כלל, כשבונים את מסנן מפתחות החשבון, נוצר ערך V על ידי שילוב המסנן של מפתחות החשבון עם salt. במקום זאת, כשמפרסמים גם 'נתונים אקראיים שניתנים לפתרון', צריך לבנות את הערך 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
    מפתח החשבון הזה הוא מפתח החשבון שנמצא בשימוש.
    השדה של סטטוס החיבור מוצפן על ידי מפתח החשבון הזה, והמכשיר המחובר הנוכחי משויך למפתח החשבון הזה.

סכמה למטען ייעודי (payload) של מתג אודיו

באיור שלמטה מוצגת הסכימה של המטען הייעודי (payload) של מתג האודיו.

הודעות

אחרי ההתחברות, המחפש והספק יכולים להשתמש בשידור ההודעה כדי לסנכרן את יכולות מתג האודיו, להפעיל מתג חיבור, להגדיר ולקבל את העדפת ההחלפה, לעדכן את סטטוס החיבור וכן הלאה. אנחנו יוצרים קבוצת הודעות וקודים של הודעות ספציפיים עבור מתג האודיו, כפי שמפורט בהמשך.

השם של קבוצת ההודעות ערך
שינוי מקור אודיו 0x07

בקטעים הבאים תוכלו למצוא פרטים נוספים על כל קוד הודעה.

שם קוד ההודעה ערך Multipoint בלבד השולח משיב/ה הצפנה ל-MAC ACK
היכולת לעבור למצב אודיו 0x10 צ' שניהם שניהם, באמצעות קוד 0x11 צ' לא צ'
עדכון לגבי היכולת של שינוי מקור האודיו 0x11 צ' שניהם שניהם צ' כן כן
הגדרת מצב מרובה נקודות 0x12 כן מחפש הספק צ' כן כן
הגדרת העדפה למעבר 0x20 כן מחפש הספק צ' כן כן
קבלת העדפה למעבר 0x21 כן מחפש ספק, באמצעות קוד 0x22 צ' לא צ'
שליחת הודעה לגבי העדפה למעבר 0x22 כן הספק מחפש צ' לא צ'
החלפה של מקור האודיו הפעיל(למכשיר המחובר) 0x30 כן מחפש הספק צ' כן כן
חזרה חזרה (למכשיר מנותק) 0x31 צ' מחפש הספק צ' כן כן
התראה על אירוע החלפה עם כמה נקודות 0x32 כן הספק מחפש צ' לא צ'
קבלת סטטוס החיבור 0x33 כן מחפש ספק, באמצעות קוד 0x34 צ' לא צ'
שליחת הודעה לסטטוס החיבור 0x34 כן הספק מחפש כן לא צ'
שליחת הודעה לחיבור שהופעל על ידי שינוי מקור האודיו 0x40 צ' מחפש הספק צ' כן כן
ציון מפתח החשבון שנמצא בשימוש 0x41 צ' מחפש הספק צ' כן כן
שליחת נתונים בהתאמה אישית 0x42 צ' מחפש הספק צ' כן כן
הגדרת היעד לחיבור 0x43 כן מחפש הספק צ' כן כן

טבלה 4.3: הודעות להעברת אודיו

הודעות על מתג האודיו של MAC

כדי לאמת הודעות, כל ההודעות על מתג האודיו עם נתונים נוספים שנשלחים ממחפש לספק מחייבות קוד אימות הודעה. כשמתקבלים הודעה עם MAC, צריך לאשר אותה כדי שהמחפש ידע אם הספק הגיב להודעה.

אם אימות ההודעה בוצע בהצלחה, הספק ישלח את ה-ACK של ההודעה:

8 תווים סוג הנתונים תיאור ערך
0 uint8 אישור 0xFF
1 uint8 ACK 0x01
2 - 3 uint16 אורך של נתונים נוספים משתנה
4 uint8 שינוי מקור אודיו 0x07
5 uint8 קוד ההודעה להחלפת אודיו משתנה
6 – s נתונים נוספים משתנה

אם הפעולה נכשלת, הספק ישלח את ה-NAK עבור ההודעה:

8 תווים סוג הנתונים תיאור ערך
0 uint8 אישור 0xFF
1 uint8 לא (NAK) 0x02
2 - 3 uint16 אורך של נתונים נוספים 0x0003
4 uint8 סיבת השגיאה משתנה
5 uint8 שינוי מקור אודיו 0x07
6 uint8 קוד ההודעה להחלפת אודיו משתנה

הערה: אם הספק הוא השולח, לא נדרשת MAC.

יכולת לעבור לאודיו

גם ספק מתג האודיו וגם המחפש יכולים לבדוק אם ה-Seeker/Provider המחובר תומך במתג אודיו, באמצעות ההודעה הבאה:

8 תווים סוג הנתונים תיאור ערך
0 uint8 שינוי מקור אודיו 0x07
1 uint8 יכולת לעבור לאודיו 0x10
2 - 3 uint16 אורך של נתונים נוספים 0

טבלה 4.3.1.0: יכולת לעבור לאודיו

התראה על היכולת של שינוי מקור האודיו

אחרי שמקבלים יכולת להפעיל את קוד ההודעות של שינוי מקור האודיו, המחפש/ספק של מתג האודיו מגיב עם אחד מהסימונים הבאים:

8 תווים סוג הנתונים תיאור ערך
0 uint8 שינוי מקור אודיו 0x07
1 uint8 התראה על היכולת של שינוי מקור האודיו 0x11
2 - 3 uint16 אורך של נתונים נוספים 20 אם ההודעה נשלחה על ידי המחפש
4 אם הוא נשלח על ידי הספק
4 - 5 uint16 קוד הגרסה של שינוי מקור האודיו אם הערך לא אפס, הוא תומך בשינוי מקור האודיו. הקוד הנוכחי (עם קוד שיפור האבטחה) הוא 0x0102.
0x0,000 או 'אין תגובה' תוך שנייה אחת, המשמעות היא שאין תמיכה בשינוי מקור האודיו במכשיר הזה
6 - 7 דגלים דגלים של יכולות החלפת אודיו של הספק
אם המידע הזה נשלח על ידי המחפש, יש להתעלם משני הבייטים האלה.
משתנה
למידע נוסף, ניתן לעיין בקטע סימונים של יכולות החלפת אודיו
8 - 15 הודעה חד-פעמית
נדרשת רק כאשר ההודעה נשלחת על ידי המחפש
משתנה
16 - 23 קוד אימות הודעה
נדרש רק כאשר הוא נשלח על ידי המחפש
משתנה

טבלה 4.3.1.1: עדכון היכולת של שינוי מקור האודיו

סימונים של היכולת לשנות את מקור האודיו
  1. Bit 0 (octet 6, MSB): מצב שינוי מקור אודיו

    • 1, אם מצב שינוי מקור האודיו מופעל
    • 0, אחרת
  2. חלק 1: יכולת הגדרה רב-נקודתית

    • 1, אם המכשיר תומך ב-Multipoint וניתן להעביר אותו בין למצב מופעל וכבוי
    • 0, אחרת (לא תומכת ב-Multipoint או ב-Multipoint כל הזמן פועלים)
  3. סיביות 2: המצב הנוכחי של רב-נקודתיים

    • 1, אם האפשרות Multipoint פועלת
    • 0, אחרת
  4. Bit 3: זיהוי נשיאה על הראש

    • 1, אם המכשיר הזה תומך בזיהוי על הראש (גם אם התכונה 'זיהוי על הראש' כבויה עכשיו)
    • 0, אחרת
  5. ביט 4: המצב הנוכחי של זיהוי נשיאה על הראש

    • 1, אם זיהוי הנשיאה על הראש מופעל
    • 0, אחרת (האפשרות הזו לא תומכת בזיהוי נשיאה על הראש או שזיהוי הנשיאה על הראש מושבת)
  6. כל שאר הביטים שמורים, ברירת המחדל היא 0.

הגדרת מצב רב-נקודתי

במחפשי מתג אודיו, יכול להיות שנספק למשתמשים הגדרות להפעלה או להשבתה של פונקציונליות רב-נקודתית. המחפש יגדיר את מצב הריבוי נקודות לספק באמצעות ההודעה הבאה:

8 תווים סוג הנתונים תיאור ערך
0 uint8 שינוי מקור אודיו 0x07
1 uint8 הגדרת מצב רב-נקודתי 0x12
2 - 3 uint16 אורך של נתונים נוספים 17
4 uint8 מצב Multipoint 0: כיבוי של Multipoint
1: הפעלה של Multipoint
5 - 12 הודעה חד-פעמית (nonce) משתנה
13 - 20 קוד האימות של ההודעה משתנה

טבלה 4.3.1.2: הגדרת מצב מרובה נקודות

הגדרת העדפה למעבר

מחפשי מתג אודיו יכולים לשנות את העדפת המעבר של Multipoint ולהגדיר אותה לספק באמצעות ההודעה הבאה:

8 תווים סוג הנתונים תיאור ערך
0 uint8 שינוי מקור אודיו 0x07
1 uint8 הגדרת העדפה למעבר 0x20
2 - 3 uint16 אורך של נתונים נוספים 18
4 דגלים מחליף העדפה משתנה
ראה סימון העדפה של מעבר מרובה נקודות
5 הגדרות מעבר מתקדמות
הבייט הזה שמור, ערך ברירת המחדל הוא 0
משתנה
6 - 13 הודעה חד-פעמית (nonce) משתנה
14 - 21 קוד האימות של ההודעה משתנה

טבלה 4.3.2.0: הגדרת העדפת מעבר

סימון העדפת מעבר של Multipoint
  • Bit 0 (MSB): A2DP לעומת A2DP (ברירת המחדל היא 0)
  • Bit 1: HFP לעומת HFP (ברירת מחדל 0)
  • Bit 2: A2DP לעומת HFP (ברירת מחדל 0)
  • Bit 3: HFP לעומת A2DP (ברירת מחדל 1)
  • סיביות 4-7: שמורה
  • למעלה מייצג "בקשת פרופיל חדש" לעומת "פרופיל פעיל נוכחי"
    • 0 לאי החלפה
    • 1 למעבר

קבלת העדפה לשינוי

מחפשי מתג אודיו יכולים לשלוח שאילתה לגבי העדפת המעבר של Multipoint מהספק באמצעות ההודעה הבאה:

8 תווים סוג הנתונים תיאור ערך
0 uint8 שינוי מקור אודיו 0x07
1 uint8 התחלת שינוי בהגדרה 0x21
2 - 3 uint16 אורך של נתונים נוספים 0

טבלה 4.3.2.1: קבלת העדפת מעבר

שליחת הודעה לגבי החלפת העדפה

8 תווים סוג הנתונים תיאור ערך
0 uint8 שינוי מקור אודיו 0x07
1 uint8 שליחת הודעה לגבי החלפת העדפה 0x22
2 - 3 uint16 אורך של נתונים נוספים 2
4 דגלים החלפת דגלי העדפות משתנה
ראה סימון העדפה של מעבר מרובה נקודות
5 הגדרות מעבר מתקדמות
הבייט הזה שמור, ערך ברירת המחדל צריך להיות 0
משתנה

טבלה 4.3.2.2: שליחת התראה להעדפה למעבר

החלפה של מקור האודיו הפעיל (למכשיר המחובר)

מחפשי העברת אודיו יכולים לבקש מספק מרובה נקודות להעביר את מקור האודיו הפעיל בין מכשירים מחוברים באמצעות ההודעה הבאה:

8 תווים סוג הנתונים תיאור ערך
0 uint8 שינוי מקור אודיו 0x07
1 uint8 החלפה של מקור האודיו הפעיל (למכשיר המחובר) 0x30
2 - 3 uint16 אורך של נתונים נוספים 17
4 דגלים החלפת הסימונים הפעילים של אירועי מקור האודיו משתנה
מידע נוסף זמין במאמר החלפת אירוע של מקור אודיו פעיל
5 - 12 הודעה חד-פעמית (nonce) משתנה
13 - 20 קוד האימות של ההודעה משתנה

טבלה 4.3.3.0: החלפת מקור האודיו הפעיל (למכשיר המחובר)

החלפת האירוע של מקור האודיו הפעיל
  • ביט 0 (MSB): מתג 1 למכשיר הזה, 0 מתג למכשיר מחובר שני
  • ביט 1: 1 המשך הפעלה במתג למכשיר לאחר ההחלפה. אחרת, 0. אם בוחרים להמשיך בהפעלה, הספק שולח הודעת PLAY למחפש דרך פרופיל AVRCP. אם המצב הקודם (לפני המעבר) לא היה PLAY, על הספק להתעלם מהסימון הזה.
  • Bit 2: 1 דחיית SCO במכשיר מנותק, 0 אחרת
  • Bit 3: 1 מנתקים את ה-Bluetooth במכשיר במתג 'מחוץ'. אם לא, 0.
  • סיביות 4-7: שמורה.

יכול להיות שמחפשי מתג אודיו לא תמיד ידעו נכון את המצב שלהם, לכן הספק יכול לקבל את ההודעה "מעבר למכשיר הזה" כשהמחפש כבר מוגדר כמכשיר הפעיל. במקרה כזה, כדי להציג את ממשק המשתמש הנכון ב-Seeker, הספק יכול לשלוח NAK עם סיבת השגיאה, 0x4 – פעולה יתירה במכשיר.

מעבר חזרה (למכשיר מנותק)

אם המעבר בין החיבורים לא רצוי, המשתמשים יוכלו לבטל את המעבר, ובמקרים מסוימים כדאי לשחזר את חיבור האודיו כדי לצמצם את השיבושים. המחפש ישתמש בהודעה הבאה כדי להפעיל חזרה חזרה:

8 תווים סוג הנתונים תיאור ערך
0 uint8 שינוי מקור אודיו 0x07
1 uint8 מעבר חזרה (למכשיר מנותק) 0x31
2 - 3 uint16 אורך של נתונים נוספים 17
4 uint8 חזרה לאירוע הקודם משתנה
0x01: חזרה אחורה
0x02: חזרה אחורה והמשך הפעלה
5 - 12 הודעה חד-פעמית (nonce) משתנה
13 - 20 קוד האימות של ההודעה משתנה

טבלה 4.3.3.1: מעבר חזרה (למכשיר מנותק)

כשמדובר בספק מרובה נקודות, כדי לבצע מתג חיבור, הספק עשוי לבטל את החיבור למכשיר אחד של מקור אודיו ולהשהות את סשן האודיו במקור האודיו השני. לדוגמה, נניח שהאוזניות עם כמה נקודות מחוברות לטאבלט ולמכשיר אודיו נוסף שיש בו תמיכה של צד שלישי. המשתמש צופה בווידאו בטאבלט כשיש שיחה נכנסת בטלפון. הטלפון יפעיל מתג חיבור באוזניות, שצריך לנתק את החיבור של המכשיר השלישי כדי להתחבר לטלפון, ולהשהות את הפעלת המדיה בטאבלט כדי לקבל את הרינגטון מהטלפון. אם המשתמש ידחה את השיחה, הטלפון עשוי לבקש מהאוזניות "לחזור אחורה ולהמשיך לשחק". עם קבלת הבקשה, האוזניות חייבות להתחבר מחדש למכשיר השלישי ולהמשיך להפעיל את הסרטון שהושהה בטאבלט.

שליחת התראה על אירוע החלפת נקודות מרובה

כדי ליידע את המשתמשים על אירוע רב-נקודתי שמתרחש, יכול להיות שתוצג למשתמשים התראה מבודק האודיו. הספק צריך להודיע למחפשי מתג האודיו המחובר על אירוע המעבר.

8 תווים סוג הנתונים תיאור ערך
0 uint8 שינוי מקור אודיו 0x07
1 uint8 שליחת הודעה על אירוע של החלפת אודיו בכמה נקודות
הספק צריך לשלוח אותו בכל מתג, כולל המחפש של העברת אודיו למחפש מתג שאינו אודיו, חיפוש של העברת אודיו ללא העברת אודיו למחפש העברת אודיו, ומחפש העברת אודיו למחפש העברת אודיו
0x32
2 - 3 uint16 אורך של נתונים נוספים משתנה
4 uint8 סיבת ההחלפה משתנה
0x00: לא מוגדר
0x01: סטרימינג A2DP
0x02: HFP
5 uint8 מכשיר יעד משתנה
0x01: המכשיר הזה
0x02: מכשיר מחובר אחר
6 - n utf8 שם מכשיר היעד
אם מכשיר היעד הוא חיפוש של מתג אודיו, תוך שימוש בשם שהמחפש שלח אליו. אם לא, הוא ישתמש בשם ה-BT, אם לא רלוונטי, תוך שימוש ב-2 הבייטים האחרונים מהכתובת שלו
משתנה

טבלה 4.3.3.2: התראה על אירוע של החלפת נקודות מרובות

קבלת סטטוס החיבור

המחפש יכול לקבל מהספק את סטטוס החיבור הנוכחי:

8 תווים סוג הנתונים תיאור ערך
0 uint8 שינוי מקור אודיו 0x07
1 uint8 קבלת סטטוס החיבור 0x33
2 - 3 uint16 אורך של נתונים נוספים 0

טבלה 4.3.3.3: קבלת סטטוס החיבור

עם קבלת ההודעה הזו, הספק יגיב באמצעות קוד ההודעה 0x34, והודעה על סטטוס החיבור.

עדכון סטטוס החיבור

כפי שמוגדר ב-BLE מטען ייעודי (payload) של פרסום לספקי ריבוי נקודות, אם סטטוס החיבור משתנה, מלבד שינוי של חבילת פרסום, על הספק להודיע גם למבקשים המקושרים שמשתמשים באותו מפתח חשבון לגבי השינוי. אם הספק מחובר למחפש מתגי אודיו ולכלי חיפוש מסוג אחר שאינו אודיו, אם המחפש של מתג האודיו שאינו אודיו פועל, הספק צריך גם להודיע למחפש המתג האודיו המחובר לגבי סטטוס החיבור (באמצעות מפתח החשבון של המחפש).

8 תווים סוג הנתונים תיאור ערך
0 uint8 שינוי מקור אודיו 0x07
1 uint8 עדכון סטטוס החיבור 0x34
2 - 3 uint16 אורך של נתונים נוספים משתנה
4 uint8 סימון מכשיר פעיל משתנה
0x00: המחפש הזה הוא פסיבי, והמכשיר הפעיל משתמש באותו מפתח חשבון
0x01: המחפש הוא המכשיר הפעיל
0x02: המחפש הוא פסיבי, והמכשיר הפעיל אינו מחפש מתג אודיו.
5 - n סטטוס החיבור המוצפן משתנה
n+8 - n+1 הודעה חד-פעמית (nonce) משתנה

טבלה 4.3.3.4: עדכון סטטוס החיבור

הודעת סטטוס של חיבור מוצפן

 encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)

איפה:

שליחת הודעה לחיבור שהופעל על ידי שינוי האודיו

יכול להיות שהספקים של מתג האודיו יוכלו לדעת אם שינוי החיבור מופעל על ידי מתג האודיו, כדי שתגובות שונות יופיעו, למשל, השבתה של צלילי חיווי עבור אירועים של מתג האודיו. המחפש שולח הודעה לספק כדי להודיע לספק שהחיבור הזה היה חיבור שהופעל על ידי מתג אודיו.

8 תווים סוג הנתונים תיאור ערך
0 uint8 שינוי מקור אודיו 0x07
1 uint8 שליחת הודעה לחיבור שהופעל על ידי שינוי האודיו 0x40
2 - 3 uint16 אורך של נתונים נוספים 17
4 uint8 אינדיקטור לחיבור פעיל באמצעות שינוי אודיו משתנה
0: החיבור הזה לא הופעל על ידי מתג האודיו
1: זהו חיבור שהופעל על ידי שינוי מקור האודיו
5 - 12 הודעה חד-פעמית (nonce) משתנה
13 - 20 קוד האימות של ההודעה משתנה

טבלה 4.3.4.0: התראה על חיבור שהופעל באמצעות שינוי האודיו

ציון מפתח החשבון שבשימוש

אם משויכים לספק כמה מפתחות חשבון במחפש (למשל, משתמשים מרובים), הוא ישתמש בהודעה הבאה כדי לציין באיזה מפתח חשבון נמצא בשימוש.

8 תווים סוג הנתונים תיאור ערך
0 uint8 שינוי מקור אודיו 0x07
1 uint8 ציון מפתח החשבון שבשימוש 0x41
2 - 3 uint16 אורך של נתונים נוספים 22
4 - 9 utf8 מחרוזת בשימוש UTF8 (בשימוש)
10 - 17 הודעה חד-פעמית (nonce) משתנה
18 - 25 קוד האימות של ההודעה משתנה

טבלה 4.3.4.1: ציון מפתח החשבון שבשימוש

עם קבלת ההודעה הזו, הספק יכול לדעת באיזה מפתח חשבון נמצא השימוש על ידי אימות קוד האימות של ההודעה.

שליחת נתונים בהתאמה אישית

המחפש הפעיל של מתג האודיו יכול לבצע אנקפסולציה של המידע (למשל, שימוש אודיו) של שידור האודיו בבייט נתונים מותאם אישית, ולשלוח אותו לספק באמצעות ההודעה הבאה:

8 תווים סוג הנתונים תיאור ערך
0 uint8 שינוי מקור אודיו 0x07
1 uint8 שליחת נתונים בהתאמה אישית 0x42
2 - 3 uint16 אורך של נתונים נוספים 17
4 uint8 נתונים בהתאמה אישית משתנה
5 - 12 הודעה חד-פעמית (nonce) משתנה
13 - 20 קוד האימות של ההודעה משתנה

טבלה 4.3.4.2: שליחת נתונים מותאמים אישית

לאחר קבלת הנתונים המותאמים אישית, הספק יעדכן את חבילת הפרסום כך שתכלול את הנתונים בהתאמה אישית. עבור ספק מרובה נקודות, הוא צריך גם להודיע על השינוי בסטטוס החיבור למחפש מחובר אחר באמצעות אותו מפתח חשבון.

הגדרת היעד לחיבור

באוזניות מרובות נקודות, אם החיבור המועדף שיש לנתק הוא לא החיבור האחרון שנעשה בו שימוש, 'מחפשי מתג אודיו' יכולים להודיע לספק באמצעות ההודעה הבאה:

8 תווים סוג הנתונים תיאור ערך
0 uint8 שינוי מקור אודיו 0x07
1 uint8 הגדרת היעד לחיבור 0x43
2 - 3 uint16 אורך של נתונים נוספים 17
4 uint8 יש להשמיט את היעד של מכשיר מחובר משתנה
1: המכשיר הזה
5 - 12 הודעה חד-פעמית (nonce) משתנה
13 - 20 קוד האימות של ההודעה משתנה

טבלה 4.3.4.3: הגדרת יעד חיבור לירידה

הטמעת הפניות

ניתן לעיין ב ספריית SDK מוטמעת בקרבת מקום כדי לקבל מידע על ההטמעה של קובץ העזר