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

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

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

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

תפקידים

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

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

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

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

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

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

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

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

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

אוקטט סוג הנתונים תיאור ערך חובה?
0 uint8 אורך השדה וסוג השדה
0bLLLLTTT
  • L = אורך סטטוס החיבור בבייטים
  • T = סוג
0bLLLL0101
  • length: משתנה
  • סוג = 0b0101
חובה
1 uint8 מצב חיבור
0bHAFRSSSS
  • H = זיהוי הראש
  • A = זמינות החיבור
  • F = מצב התמקדות
  • R = חיבור אוטומטי
  • S = מצב החיבור
0bHAFRSSSS
חובה
2 uint8 נתונים מותאמים אישית
בשלב הזה, הם כוללים רק סוג תוכן שמשמש לתיאור השימוש בסטרימינג האודיו הנוכחי. המחפש ישלח אותו לספק.
הערך נשלח מהמחפש של הסטרימינג הפעיל הנוכחי לספק דרך שידור ההודעה. 0 אם הסטרימינג הפעיל הנוכחי לא מגיע מ-Seeker. חובה
3 – var מפת סיביות של מכשירים מחוברים
מפת סיביות (bitmap) שמראה אילו מכשירים מחוברים כרגע לספק. כל המכשירים המחוברים מסודרים לפי הסדר, ביט אחד למכשיר אחד מחובר. משך הזמן תלוי במספר המכשירים המחוברים של הספק.
הערך של הביט הממופה הוא 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 (שיחת טלפון/וידאו) כולל רינגטונים inband ו-in-band.
  • 0x7: LE audio – סטרימינג של מדיה ללא שליטה
  • 0x8: LE audio – סטרימינג של מדיה עם מתג
  • 0x9: LE audio – העברת השיחה
  • 0xA: LE audio – שידור
  • 0xF: השבתה של מתג החיבור באופן זמני (למשל, עדכון קושחה)
סוג ההקשר ומצב החיבור של LE Audio

ההמלצה שספק ה-LE Audio צריך לטפל בכל סוגי ההקשר שצוינו בסעיף מספרים שהוקצו 6.12.3 (אלא אם הספק לא תומך במפורש בסוג הקשר נתון) וממפה את סוג ההקשר למצב החיבור כפי שמתואר בהמשך.

  • תכונות שיחה: 0x9
  • מדיה: 0x8
  • משחק: 0x7
  • הוראות: 0x7
  • עוזרים קוליים: 0x9
  • שידורים חיים: 0x9
  • אפקטים קוליים: 0x2
  • התראות: 0x2
  • רינגטון: 0x9
  • התראות: 0x7
  • התראה על מקרה חירום: 0x9

בתרחיש הקשר מסוג LE Audio מעורב, כמו הפעלת מדיה במהלך קריאה, הספק ישתמש במצב החיבור שהעדיפות שלו היא הגבוהה ביותר, כלומר 0x9 (קריאה) לתרחיש שלמעלה במקום 0x8 (מדיה).

מפת סיביות של מכשיר מחובר

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

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

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

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

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

המבנה של מודעת BLE הוא:

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

טבלה 4.2: פרסומת BLE עם נתונים אקראיים מספקים (Random Resolvable Data)

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

אוקטט סוג הנתונים תיאור ערך חובה?
0 uint8 אורך השדה וסוג השדה
0bLLLLTTT
  • L = אורך הנתונים המוצפנים
  • T = סוג
0bLLLL0110
  • length: משתנה
  • סוג = 0b0110
חובה
1 – var נתונים מוצפנים משתנה חובה

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

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

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

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

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

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

הודעות MAC של העברת אודיו

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

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

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

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

אוקטט סוג הנתונים תיאור ערך
0 uint8 אישור 0xFF
1 uint8 NAK 0x02
2 - 3 uint16 אורך נתונים נוסף 0x0,003
4 uint8 סיבת השגיאה משתנה
5 uint8 חילוף אודיו 0x07
6 uint8 קוד ההודעה של שינוי מקור האודיו משתנה

לתשומת ליבכם: אם הספק הוא השולח, אין צורך ב-MAC.

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

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

אוקטט סוג הנתונים תיאור ערך
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 או לא התקבלה תגובה תוך שנייה אחת, המשמעות היא שמתג האודיו לא נתמך במכשיר הזה.
6 - 7 דגלים סימונים של יכולת החלפת האודיו של הספק
אם ההודעה נשלחת על ידי ה-Seeker, צריך להתעלם משני הבייטים האלה.
משתנה
למידע נוסף על דגלים לגבי יכולות החלפת אודיו
8 - 15 הודעה צולבת
נדרשת רק כאשר ההודעה נשלחת על ידי המחפש
משתנה
16 - 23 קוד אימות הודעה
נדרש רק כאשר הקוד נשלח על ידי ה-Seeker
משתנה

טבלה 4.3.1.1: שליחת התראה לגבי היכולת של החלפת האודיו

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

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

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

    • 1, אם התכונה 'ריבוי נקודות' מופעלת
    • 0, אחרת
  4. Bit 3: זיהוי נשיאה על הראש

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

    • 1, אם התכונה 'זיהוי נשיאה על הראש' מופעלת
    • 0, אחרת (אינו תומך בזיהוי נשיאה על הראש או בזיהוי נשיאה על הראש, מושבת)
  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: הגדרת העדפת מעבר

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

הצגת העדפת ההחלפה

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

אוקטט סוג הנתונים תיאור ערך
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: החלפת מקור האודיו הפעיל (למכשיר מחובר)

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

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

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

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

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

אוקטט סוג הנתונים תיאור ערך
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 שליחת התראה לאירוע מסוג Multipoint-switch
הספק צריך לשלוח אותו בכל מתג, כולל מעבר בין רכיבי אודיו למחפש מתג ללא אודיו, מתג ללא אודיו כמחפש למחפש המתג של האודיו לבין מעבר למכשיר האודיו
0x32
2 - 3 uint16 אורך נתונים נוסף משתנה
4 uint8 סיבת המעבר
צריך לקבוע את הערך הזה לפי מצב החיבור. בתרחישים לדוגמה של LE Audio, יכול להיות שכדאי לבדוק את המיפוי בין LE Audio Context Type לבין מצב החיבור. לדוגמה, מצב החיבור המתאים לעוזרים קוליים הוא 0x9(LE audio – העברת שיחה). לכן, סיבת ההחלפה עבור מתג שהופעל על ידי Assistant Voice צריכה להיות 0x02.
משתנה
0x00: לא צוין
0x01: מדיה (למשל, סטרימינג A2DP, סטרימינג של מדיה מסוג LEA)
0x02: שיחה (למשל, סטרימינג של HFP, סטרימינג של שיחות LEA)
5 uint8 מכשיר היעד משתנה
0x01: המכשיר הזה
0x02: מכשיר מחובר אחר
6 - n utf8 שם מכשיר היעד
אם מכשיר היעד הוא Audio Switch Finder,
משתנה

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

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

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

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

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

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

הודעה על סטטוס החיבור

כפי שמוגדר במטען ייעודי (payload)של 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: שליחת התראה על חיבור שהופעל שינוי מקור אודיו

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

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

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

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

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

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

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

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

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

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

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

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

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

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

הטמעה של קובצי עזר

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