פקדים של מכשיר שמיעה
הפקדים של מכשירי השמיעה בתכונה 'התאמה מהירה' נועדו לספק אמצעי בקרה טובים יותר לגישה לתכונות חשובות של מכשירי שמיעה ב-Android. כדי לעשות את זה, הוספנו קבוצה חדשה של הודעות שניתן לשמוע אותן. האמצעים לשליטה בהן נמצאים בזרם ההודעות.
| שם קבוצת ההודעות | ערך |
|---|---|
| שליטה במכשיר שמיעה | 0x08 |
ביטול רעשים פעיל
ביטול רעשים פעיל הופך לתכונה חשובה באוזניות פרימיום. בצד של המכשיר המחפש, ההתאמה המהירה תכלול את ממשק המשתמש והלוגיקה להגדרה, לקבלת ולשמירת המצב, והמצב יישמר בצד של המכשיר המספק. חובה על הספק לשלוח Session Nonce כשהוא מתחבר לזרם האירועים. כדי להשיג את זה, מוגדרים קודי ההודעות הבאים:
| שם הקוד של ההודעה | ערך | השולח | משיב/ה | MAC | ACK |
|---|---|---|---|---|---|
| קבלת סטטוס ANC | 0x11 | מבקש | ספק | לא | לא |
| הגדרת מצב ANC | 0x12 | מבקש | ספק | Y | Y |
| הודעה על מצב ה-ANC | 0x13 | ספק | מבקש | לא | לא |
כשמכשיר Seeker מתחבר למכשיר Provider, או כשמכשיר Provider מקבל הודעה מסוג Get ANC state, מכשיר Provider יכול לשלוח הודעה על סטטוס ה-ANC כדי שמכשיר Seeker ידע מה היכולות של ה-ANC ומה הסטטוס השמור שלו. ההודעה היא:
| בייט | סוג הנתונים | תיאור | ערך |
|---|---|---|---|
| 0 | uint8 | שליטה במכשיר שמיעה | 0x08 |
| 1 | uint8 | הודעה על מצב ה-ANC | 0x13 |
| 2 - 3 | uint16 | אורך נתונים נוסף | 0x04 |
| 4 - 7 | נתוני בקרה של ANC | משתנה |
נתוני בקרה של ANC
| בייט | סוג הנתונים | תיאור | ערך |
|---|---|---|---|
| 0 | uint8 | קוד גירסה | משתנה, 0x02 לגרסה הזו |
| 1 | דגלים | החלפות בממשק המשתמש כל מצב מופעל (1) או מושבת (0) בהתאם לערך של הביט בדגל שלו, באופן הבא: ביט 0 (MSB): שקוף ביט 1: אדפטיבי (או 0 אם הוא לא נתמך) ביט 2: כבוי ביט 3: שמור (הגדרת הביט ל-0) ביט 4: ANC |
משתנה |
| 2 | דגלים | מתגים שניתנים להגדרה אפשר להגדיר כאן גם את כל המתגים של ממשק המשתמש שמופיעים למעלה, כדי לציין אילו מהם מופעלים כרגע. |
משתנה |
| 3 | דגלים | המצב הנוכחי אפשר להגדיר רק ביט אחד, והערך של הבייט הזה לא יכול להיות אפס. |
משתנה |
ממשק המשתמש של פס ההזזה יציג את מצב ההפעלה או ההשבתה של ANC בהתאם לנתוני השליטה של ANC.
דוגמה 1: הספק תומך ב-ANC תלת-כיווני: שקוף – מושבת – ANC והאוזניות על הראש, כל המצבים ניתנים להגדרה עכשיו, והמצב הנוכחי מושבת:
| בייט | סוג הנתונים | תיאור | ערך |
|---|---|---|---|
| 0 | uint8 | קוד גירסה | 0x02 |
| 1 | דגלים | לחצנים להחלפת מצב בממשק המשתמש | 0b10101000 |
| 2 | דגלים | מתגים שניתנים להגדרה | 0b10101000 |
| 3 | דגלים | המצב הנוכחי | 0b00100000 |
דוגמה 2: הספק תומך ב-ANC עם 3 מצבים: שקוף – כבוי – ANC. רק אוזנייה אחת נמצאת על הראש או שאף אוזנייה לא נמצאת על הראש, ולכן אי אפשר להגדיר מצבים, והמצב הנוכחי הוא כבוי:
| בייט | סוג הנתונים | תיאור | ערך |
|---|---|---|---|
| 0 | uint8 | קוד גירסה | 0x02 |
| 1 | דגלים | מתג בממשק המשתמש | 0b10101000 |
| 2 | דגלים | מתג שאפשר להגדיר | 0b00000000 |
| 3 | דגלים | המצב הנוכחי | 0b00100000 |
אם המשתמש משנה את מצב המתג, כלי החיפוש יגדיר את המצב הנוכחי לספק באופן הבא:
| בייט | סוג הנתונים | תיאור | ערך |
|---|---|---|---|
| 0 | uint8 | שליטה במכשיר שמיעה | 0x08 |
| 1 | uint8 | הגדרת מצב ANC | 0x12 |
| 2 - 3 | uint16 | אורך נתונים נוסף | משתנה, 0x04 או 0x14 |
| 4 | uint8 | קוד גרסה של Seeker | משתנה, 0x01 או 0x02 |
| 5 | דגלים | מצבים שניתן להגדיר ל-ANC (החלפה בממשק המשתמש) | משתנה |
| 6 | דגלים | מצבים שבהם ANC מופעל (אפשר להגדיר את המעבר ביניהם) | משתנה |
| 7 | דגלים | אינדקס חדש של מצב ANC (מצב חדש) | משתנה |
| 8 - 23 | בוצעה הזמנה | משתנה |
בפועל, בבייט 4 עד 7 יש נתוני בקרה של ANC שנשלחים מצד ה-Seeker. אם ערך האורך הנוסף מוגדר כ-0x14, הבייטים השמורים 8-23 יהיו נוכחים, והספק צריך להתעלם מהם כשהוא מקבל אותם. אם ערך האורך הנוסף מוגדר כ-0x04, לא קיימים בייטים שמורים.
כשספק מקבל הודעה מסוג Set ANC state (הגדרת סטטוס ANC), הוא צריך לאשר את קבלת ההודעה ולשלוח הודעה על סטטוס ה-ANC לכל המכשירים שמחוברים אליו. אם המשתמש משנה את ההגדרה באמצעות תנועת ראש או אפליקציה נלווית, הספק צריך לשלוח הודעה גם לכל המשתמשים שמחוברים למכשיר.
דוגמה 3: הספק תומך ב-ANC ב-4 דרכים: שקוף – דינמי – מושבת – ANC, האוזניות על הראש, כל המצבים ניתנים להגדרה עכשיו, והמצב הנוכחי הוא דינמי:
| בייט | סוג הנתונים | תיאור | ערך |
|---|---|---|---|
| 0 | uint8 | קוד גירסה | 0x02 |
| 1 | דגלים | מתג בממשק המשתמש | 0b11101000 |
| 2 | דגלים | מתג שאפשר להגדיר | 0b11101000 |
| 3 | דגלים | המצב הנוכחי | 0b01000000 |