ממשק בקר המארח (HCI) משמש לאינטראקציה עם בקר Bluetooth.
במסמך הזה מפורטות הדרישות של Bluetooth (BT) ו-Bluetooth עם צריכת אנרגיה נמוכה (BLE) HCI. המטרה היא שספקי ערימות BT של המארח וספקי בקרי BT יעמדו בדרישות הפלטפורמה האלה כדי להשתמש במערכת התכונות שמתוארת בהמשך.
במסמך הזה, המונח "מפרט" מתייחס למפרט הליבה של Bluetooth 5.2. מפרט Bluetooth Core 5.2 זמין ב אתר Bluetooth SIG, יחד עם מסמכים מאומצים אחרים.
סקירה כללית של העיצוב
יכולות והגדרות של צ'יפים
Android היא פלטפורמה פתוחה, ולכן יש בה מטריצה של גרסאות תוכנה, יצרני ציוד מקורי (OEM), ספקים ויכולות של פלטפורמות ושבבים.
כדי לנהל את המצב המשתנה ולנהל העברות, במסמך הזה מתואר עיקרון עיצובי שמאפשר לבקרי BT לחשוף את היכולות שלהם (מעבר למפרט הליבה של Bluetooth 5.2). לאחר מכן, מחסנית ה-BT של המארח יכולה להשתמש ביכולות האלה כדי לקבוע אילו תכונות להפעיל.
תמיכה בתקנים פתוחים
אחת המטרות של Android היא לתמוך בתקנים פתוחים אחרי אישור במפרט Bluetooth. אם תכונה שמתוארת בהמשך תהיה זמינה בשיטות HCI רגילות במפרט Bluetooth עתידי, נשאף להפוך את הגישה הזו לגישת ברירת המחדל.
יכולות ספציפיות לספק
פקודה ספציפית לספק: LE_Get_Vendor_Capabilities_Command
שדה הפקודה של קוד האופרציה (OCF): 0x153
| פרמטר של פקודה | גודל | מטרה |
|---|---|---|
| לא רלוונטי | רשימת פרמטרים ריקה של פקודה |
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
max_advt_instances(הוצאה משימוש) |
אוקטט אחד |
מספר המופעים של מודעות שנתמכים. שמור אחרי גרסה v0.98. הפרמטר הזה הוצא משימוש במפרט התכונות של Google בגרסה 0.98 ומעלה, לטובת פרסום מורחב ב-LE שזמין במפרט BT בגרסה 5.0 ומעלה. |
offloaded_resolution_of_private-address(הוצאה משימוש) |
אוקטט אחד |
יכולת של צ'יפ BT של RPA. אם השבב תומך בכך, המארח צריך להפעיל את האפשרות. 0 = לא מסוגל 1 = מסוגל שמור אחרי גרסה 0.98. הפרמטר הזה הוצא משימוש במפרט התכונות של Google בגרסה 0.98 ומעלה, לטובת תכונת הפרטיות שזמינה במפרט BT בגרסה 4.2 ומעלה. |
total_scan_results_storage |
2 אוקטטים | נפח האחסון של תוצאות הסריקה בבייטים |
max_irk_list_sz |
אוקטט אחד | מספר רשומות ה-IRK שנתמכות בקושחה |
filtering_support |
אוקטט אחד |
תמיכה בסינון בבקר 0 = לא נתמך 1 = נתמך |
max_filter |
אוקטט אחד | מספר המסננים הנתמכים |
activity_energy_info_support |
אוקטט אחד |
תומך בדיווח על פעילות ועל נתוני אנרגיה 0 = לא מסוגל 1 = מסוגל |
version_supported |
2 אוקטטים |
מציין את הגרסה של מפרט התכונות של Google שנתמכת byte[0] = מספר הגרסה הראשית byte[1] = מספר הגרסה המשנית v1.05 byte[0] = 0x01 byte[1] = 0x05 תוספות של תכונות בגרסאות הבאות: v1.05:
|
total_num_of_advt_tracked |
2 אוקטטים |
המספר הכולל של מפרסמים שמתבצע אחריהם מעקב למטרות OnLost/OnFound
|
extended_scan_support |
אוקטט אחד | תמיכה בחלון סריקה ובמרווח סריקה מורחבים |
debug_logging_supported |
אוקטט אחד | תמיכה ברישום ביומן של מידע בינארי לניפוי באגים מהבקר |
LE_address_generation_offloading_support(הוצאה משימוש) |
אוקטט אחד |
0 = לא נתמך 1 = נתמך שמור אחרי גרסה 0.98. הפרמטר הזה הוצא משימוש במפרט התכונות של Google בגרסה 0.98 ומעלה, לטובת תכונת הפרטיות שזמינה במפרט BT בגרסה 4.2 ומעלה. |
A2DP_source_offload_capability_mask |
4 אוקטטים |
מסכות ביטים לסוגי קודקים נתמכים ביט 0 – SBC ביט 1 – AAC ביט 2 – APTX ביט 3 – APTX HD ביט 4 – LDAC ביט 5 – Opus ביטים 6 עד 31 שמורים |
bluetooth_quality_report_support |
אוקטט אחד |
תומך בדיווח על אירועי איכות של Bluetooth 0 = לא מסוגל 1 = מסוגל |
dynamic_audio_buffer_support |
4 אוקטטים |
תמיכה במאגר אודיו דינמי בבקר Bluetooth מסיכות ביטים לסוגי קודקים נתמכים ביט 0 – SBC ביט 1 – AAC ביט 2 – APTX ביט 3 – APTX HD ביט 4 – LDAC ביט 5 – Opus ביטים 6-31 שמורים |
a2dp_offload_v2_support |
אוקטט אחד |
תמיכה בפקודות A2DP offload v2 בבקר Bluetooth (ראו Start A2DP offload, Stop A2DP offload) 0 = לא נתמך 1 = נתמך |
iso_link_feedback_support |
אוקטט אחד |
תמיכה באירוע ISO Link Feedback 0 = לא נתמך 1 = נתמך |
sniff_offload_support |
אוקטט אחד |
תמיכה בפקודות Sniff Offload בבקר Bluetooth 0 = לא נתמך 1 = נתמך |
תוצאות של סריקה של קבוצת קבצים
אחת ממטרות התכנון היא לשפר את האופן שבו ההתראות על אירוע התגובה לסריקה של Bluetooth LE מועברות למארח, כדי לחסוך בחשמל במארח.
הפחתת התדירות שבה בקר מודיע למעבד של אפליקציית המארח לסרוק תוצאות מאפשרת למעבד של אפליקציית המארח להישאר במצב סרק או שינה למשך זמן ארוך יותר. כך מצמצמים את צריכת החשמל במארח. פרמטר ההחזרה total_scan_results_storage של LE_Get_Vendor_Capabilities_Command מציין את יכולת השבב לאחסון תוצאות הסריקה.
התכונה הזו מתמקדת בניהול ובהגדרה של מתקן האחסון של תוצאות הסריקה של LE בבקר Bluetooth. האחסון משמש לאגירת נתונים של מודעות ונתוני סריקה ומטא-נתונים שמתקבלים על ידי הבקר, כדי להעביר אותם מאוחר יותר למארח.
הקושחה תתמוך בשני סוגים של אצווה, שאפשר להפעיל אותם בו-זמנית:
- חתוך. הוא מכיל את רכיבי המידע הבאים: {MAC, TX Power, RSSI, Timestamp}
- מלא. מכיל את רכיבי המידע הבאים: {MAC, TX Power, RSSI, Timestamp, Adv Data, Scan Response}
LE_Batch_Scan_Command
OCF: 0x156
| פרמטר של פקודה | גודל | מטרה |
|---|---|---|
Batch_Scan_opcode |
אוקטט אחד |
0x1 – הפעלת תכונה ספציפית ללקוח 0x2 – הגדרת פרמטרים של אחסון סריקות באצווה 0x3 – הגדרת פרמטרים של סריקות באצווה 0x4 – קריאת פרמטרים של תוצאות סריקות באצווה |
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו. הפעלת התכונה הספציפית ללקוח לא מתחילה את הסריקה.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
Batch_Scan_opcode |
אוקטט אחד |
0x1 – הפעלת תכונה ספציפית ללקוח 0x2 – הגדרת פרמטרים של אחסון סריקות באצווה 0x3 – הגדרת פרמטרים של סריקות באצווה 0x4 – קריאת פרמטרים של תוצאות סריקות באצווה |
LE_Batch_Scan_Command: הפעלת תכונה ספציפית ללקוח
Sub OCF: 0x01
| פרמטר של פקודת משנה | גודל | מטרה |
|---|---|---|
enable_customer_specific_feature_set |
אוקטט אחד |
0x01 – הפעלה של התכונה 'סריקה של קבוצת מסמכים' 0x00 – השבתה של התכונה 'סריקה של קבוצת מסמכים' |
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
Batch_Scan_opcode |
אוקטט אחד |
0x1 – הפעלת תכונה ספציפית ללקוח 0x2 – הגדרת פרמטרים של אחסון סריקות באצווה 0x3 – הגדרת פרמטרים של סריקות באצווה 0x4 – קריאת פרמטרים של תוצאות סריקות באצווה |
LE_Batch_Scan_Command: פקודת משנה להגדרת פרמטר האחסון של סריקת אצווה
Sub OCF: 0x02
| פרמטר של פקודת משנה | גודל | מטרה |
|---|---|---|
Batch_Scan_Full_Max |
אוקטט אחד |
נפח האחסון המקסימלי (באחוזים) שהוקצה לסגנון מלא [טווח: 0-100] |
Batch_Scan_Truncated_Max |
אוקטט אחד |
נפח האחסון המקסימלי (באחוזים) שהוקצה לסגנון קטוע [טווח: 0-100] |
Batch_Scan_Notify_Threshold |
אוקטט אחד |
הגדרת רמת ההתראה (באחוזים) עבור מאגר אחסון לשימוש פרטי
[טווח: 0-100] הגדרה של 0 תשבית את ההתראה. נוצר אירוע HCI ספציפי לספק (אירוע משנה של חריגה מסף האחסון) |
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
Batch_scan_opcode |
אוקטט אחד | 0x02 [הגדרת פרמטרים של סריקה באצווה] |
LE_Batch_Scan_Command: פקודת משנה להגדרת פרמטר של סריקה באצווה
Sub OCF: 0x03
| פרמטר של פקודת משנה | גודל | מטרה |
|---|---|---|
Batch_Scan_Mode |
אוקטט אחד |
0x00 – סריקת אצווה מושבתת 0x01 – מצב חלקי מופעל 0x02 – מצב מלא מופעל 0x03 – מצב חלקי ומצב מלא מופעלים |
Duty_cycle_scan_window |
4 אוקטטים | זמן הסריקה של סריקת קבוצות (מספר המשבצת) |
Duty_cyle_scan_interval |
4 אוקטטים | פרק הזמן של מרווח הסריקה של המקבץ (מספר המשבצות) |
own_address_type |
אוקטט אחד |
0x00 – כתובת מכשיר ציבורית 0x01 – כתובת מכשיר אקראית |
Batch_scan_Discard_Rule |
אוקטט אחד |
0 – השמטת המודעה הכי ישנה 1 – השמטת המודעה עם עוצמת האות הכי חלשה (RSSI) |
אם האפשרות הזו מופעלת, פקודת המשנה הזו תתחיל סריקה של קבוצת קבצים. בסריקה קטומה, התוצאות מאוחסנות בצורה קטומה, כאשר המפתח הייחודי לסגנון קטום = {BD_ADDR, scan_interval}. כלומר, רק BD_ADDR will יתועד לכל מרווח סריקה. הרשומה שצריך לשמור למצב קטוע היא הבאה: {BD_ADDR,
Tx Power, RSSI, Timestamp}
כשמצב מלא מופעל, נעשה שימוש בסריקה פעילה והתגובות לסריקה נרשמות. המפתח הייחודי בסגנון מלא = {MAC, חבילת מודעות},
ללא קשר למרווח הסריקה. הרשומה שצריך לשמור למצב מלא היא
{BD_ADDR, Tx Power, RSSI, Timestamp, Ad packet, Scan
Response}. בסגנון Full, אותו חבילת נתונים של מודעה, כשרואים אותה כמה פעמים במרווחי סריקה שונים, נרשמת רק פעם אחת. עם זאת, במצב קטום, מה שמעניין הוא הנראות של BA_ADDR במרווחי סריקה שונים (פעם אחת בכל מרווח סריקה). הערך של
RSSI הוא הערך הממוצע של כל הכפילויות של מודעה ייחודית
בתוך מרווח סריקה.
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
Batch_scan_opcode |
אוקטט אחד | 0x03 [הגדרת פרמטרים של סריקת אצווה] |
LE_Batch_Scan_Command: פקודת משנה לקריאת תוצאות של סריקה אצווה
Sub OCF: 0x04
| פרמטר של פקודת משנה | גודל | מטרה |
|---|---|---|
Batch_Scan_Data_read |
אוקטט אחד |
0x01 – נתונים במצב חלקי 0x02 – נתונים במצב מלא |
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו. כשהמארח מנפיק את הפקודה הזו, יכול להיות שכל התוצאות בבקר לא יתאימו לאירוע אחד של השלמת פקודה. המארח יחזור על הפקודה הזו עד שהתוצאות המתאימות באירוע Command Complete יציינו 0 במספר הרשומות, מה שמצביע על כך שלבקר אין יותר רשומות להעביר למארח. כל אירוע Command Complete יכול להכיל כמה רשומות של סוג נתונים אחד בלבד (מלא או חלקי).
ההפניות לזמן של הבקר והמארח לא מסונכרנות. יחידת הזמן של חותמת הזמן היא 50 אלפיות השנייה. הערך של חותמת הזמן מבוסס על המועד שבו המארח מספק את Read_Batch_Scan_Results_Sub_cmd. אם זמן ההגעה של הפקודה הוא
T_c בקושחה, אז הזמן בפועל שבו חותמת הזמן נוצרה בקושחה הוא T_fw. מועד הדיווח יהיה:
(T_c - T_fw). T_c ו-
T_fw הם בתחום הזמן של הקושחה. כך המארח יכול לחשב כמה זמן עבר מאז שהאירוע קרה.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
Batch_scan_opcode |
אוקטט אחד | 0x03 [הגדרת פרמטרים של סריקת אצווה] |
Batch_Scan_data_read |
אוקטט אחד | מזהה את הפורמט (חתוך או מלא) |
num_of_records |
אוקטט אחד | מספר הרשומות של Batch_Scan_data_read |
format_of_data |
משתנה |
מצב חיתוך: כתובת[0]: 6 אוקטטות סוג הכתובת[0]: אוקטטה אחת הספק השידור[0]: אוקטטה אחת עוצמת האות הנמדדת (RSSI)[0] : אוקטטה אחת חותמת זמן[0]: 2 אוקטטות [multiple records ( num_of_records) with above format]מצב מלא: כתובת[0]: 6 אוקטטות סוג הכתובת[0]: אוקטטה אחת הספק השידור[0]: אוקטטה אחת עוצמת האות הנמדדת (RSSI)[0]: אוקטטה אחת חותמת זמן[0]: 2 אוקטטות אורך מנת המידע של הפרסום[0]: אוקטטה אחת מנת המידע של הפרסום[0]: אוקטטות באורך מנת המידע של הפרסום אורך נתוני התגובה לסריקה[0]: אוקטטה אחת נתוני התגובה לסריקה[0]: Scan_data_resp אוקטטות[multiple records with above format ( num_of_records)]
|
מסנן תוכן של חבילת פרסום
משתמשים בזה כדי להפעיל/להשבית/להגדיר את מסנן התוכן של חבילת הפרסום (APCF) בבקר. מסנני APCF מסננים דוחות פרסום בבקר, אבל לא מסננים פרסום תקופתי.
LE_APCF_Command
OCF: 0x157
| פרמטר של פקודה | גודל | מטרה |
|---|---|---|
APCF_opcode |
אוקטט אחד |
0x00 – הפעלת APCF 0x01 – הגדרת פרמטרים של סינון APCF 0x02 – כתובת שידור של APCF 0x03 – מזהה ייחודי אוניברסלי (UUID) של שירות APCF 0x04 – מזהה ייחודי אוניברסלי (UUID) של בקשת שירות APCF 0x05 – שם מקומי של APCF 0x06 – נתוני יצרן של APCF 0x07 – נתוני שירות של APCF 0x08 – שירות גילוי תחבורה של APCF 0x09 – מסנן סוג מודעה של APCF 0x10 עד 0xAF – שמור לשימוש עתידי 0xB0 עד 0xDF – שמור לספק 0xE0 עד 0xFE – שמור לשימוש עתידי 0xFF – קריאת תכונות מורחבות של APCF |
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | סטטוס החזרה |
APCF_opcode |
אוקטט אחד |
0x00 – הפעלת APCF 0x01 – הגדרת פרמטרים של סינון APCF 0x02 – כתובת שידור של APCF 0x03 – מזהה ייחודי אוניברסלי (UUID) של שירות APCF 0x04 – מזהה ייחודי אוניברסלי (UUID) של בקשת שירות APCF 0x05 – שם מקומי של APCF 0x06 – נתוני יצרן של APCF 0x07 – נתוני שירות של APCF 0x08 – שירות גילוי תחבורה של APCF 0x09 – מסנן סוג מודעה של APCF 0x10 עד 0xAF – שמור לשימוש עתידי 0xB0 עד 0xDF – שמור לספק 0xE0 עד 0xFE – שמור לשימוש עתידי 0xFF – קריאת תכונות מורחבות של APCF |
LE_APCF_Command: Enable_sub_cmd
Sub OCF: 0x00
| פרמטר של פקודת משנה | גודל | מטרה |
|---|---|---|
APCF_enable |
אוקטט אחד |
0x01 – הפעלת התכונה APCF 0x00 – השבתת התכונה APCF |
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
APCF_opcode |
אוקטט אחד | 0x0 – הפעלת APCF |
APCF_Enable |
אוקטט אחד | ההגדרה 'הפעלה/השבתה' מוגדרת דרך APCF_enable |
LE_APCF_Command: set_filtering_parameters_sub_cmd
משתמשים בפקודת המשנה הזו כדי להוסיף או למחוק מפרט של מסנן, או כדי לנקות רשימת מסננים לסינון על שבב.
Sub OCF: 0x01
| פרמטר של פקודת משנה | גודל | מטרה |
|---|---|---|
APCF_Action |
אוקטט אחד |
0x00 – הוספה 0x01 – מחיקה 0x02 – ניקוי הפעולה 'מחיקה' תנקה את המסנן הספציפי יחד עם רשומות התכונות המשויכות בטבלאות אחרות. האפשרות Clear (ניקוי) תנקה את כל המסננים והערכים המשויכים בטבלאות אחרות. |
APCF_Filter_Index |
אוקטט אחד | אינדקס המסנן (0, max_filter-1) |
APCF_Feature_Selection |
2 אוקטטים |
מיסוך סיביות לתכונות שנבחרו: ביט 0: מוגדר להפעלה של מסנן כתובות שידור ביט 1: מוגדר להפעלה של מסנן שינויים בנתוני השירות ביט 2: מוגדר להפעלה של בדיקת מזהה ייחודי אוניברסלי (UUID) של השירות ביט 3: מוגדר להפעלה של בדיקת מזהה ייחודי אוניברסלי (UUID) של בקשת שירות ביט 4: מוגדר להפעלה של בדיקת שם מקומי ביט 5: מוגדר להפעלה של בדיקת נתוני יצרן ביט 6: מוגדר להפעלה של בדיקת נתוני שירות ביט 7: מוגדר להפעלה של בדיקת שירות גילוי תעבורה ביט 8: מוגדר להפעלה של בדיקת סוג מודעה |
APCF_List_Logic_Type |
2 אוקטטים |
פעולה לוגית לכל בחירת תכונה (לפי מיקום ביט)
שמצוינת ב-APCF_Feature_Selection.
תקף רק כשתכונה מופעלת. ערך מיקום הביט: 0: OR 1: AND אם נבחרה לוגיקת AND, חבילת ADV תעבור את הסינון רק אם היא מכילה את כל הערכים ברשימה. אם נבחרה לוגיקת OR, מנה של נתוני ADV תעבור את המסנן אם היא מכילה אחת מהרשומות ברשימה. |
APCF_Filter_Logic_Type |
אוקטט אחד |
0x00: OR 0x01: AND הערה: סוג הלוגיקה לא רלוונטי לשלושת השדות הראשונים של APCF_Feature_Selection, שתמיד מוגדרת בהם לוגיקת AND. הם רלוונטיים רק לארבעה שדות (Bit 3 - Bit 6) של APCF_Feature_Selection.
|
rssi_high_thresh |
אוקטט אחד |
[in dBm] המערכת מחשיבה שהמשתמש ראה את המודעה רק אם עוצמת האות גבוהה מהסף הגבוה של RSSI. אחרת, הקושחה צריכה להתנהג כאילו היא לא ראתה את הנתונים האלה. |
delivery_mode |
אוקטט אחד |
0x00 - immediate0x01 - on_found0x02 - batched
|
onfound_timeout |
2 אוקטטים |
המבצע תקף רק אם delivery_mode הוא on_found.[באלפיות השנייה] הזמן שחולף עד שהקושחה אוספת עוד מודעות לפני הדיווח. |
onfound_timeout_cnt |
אוקטט אחד |
המבצע תקף רק אם delivery_mode הוא on_found.[count] אם מודעה ב- onFound נשארת בקושחה למשך
onfound_timeout, היא תאסוף כמה מודעות והמערכת תבדוק את המספר. אם הספירה חורגת מ-onfound_timeout_cnt, המערכת מדווחת על כך באופן מיידי.OnFound
|
rssi_low_thresh |
אוקטט אחד |
המבצע תקף רק אם delivery_mode הוא on_found.[in dBm] חבילת המפרסם נחשבת כלא נראית אם עוצמת האות (RSSI) של החבילה שהתקבלה לא גבוהה מסף עוצמת האות הנמוך. |
onlost_timeout |
2 אוקטטים |
המבצע תקף רק אם delivery_mode הוא on_found.[באלפיות השנייה] אם מודעה לא מוצגת ברציפות במשך lost_timeout, אחרי שהיא נמצאה, המערכת תדווח מיד שהיא אבדה.
|
num_of_tracking_entries |
2 אוקטטים |
המבצע תקף רק אם delivery_mode הוא on_found.[count] המספר הכולל של מפרסמים למעקב לפי מסנן. |
כדי לייצג ערכים שליליים של RSSI, צריך להשתמש בשיטת המשלים ל-2.
המארח יוכל להגדיר כמה מסננים עם
APCF_Application_Address_type שמוגדר ל-0x02 (לכל כתובות השידור) כדי לנהל שילובים שונים של מסננים.
סינון, אצווה ודיווח הם מושגים שקשורים זה לזה. כל מודעה ותגובה קשורה לסריקה יעברו את כל המסננים, אחד אחרי השני. לכן, הפעולות שמתקבלות
(delivery_mode) קשורות קשר הדוק לסינון. מצבי המסירה הם: report_immediately, batch ו-onFound. הערך OnLost קשור לערך OnFound במובן הזה שהוא יופיע אחרי OnFound אם הוא יאבד.
תרשים הזרימה הזה מתאר את המודל הקונספטואלי:
כשמתקבלת מסגרת של מודעה (או תגובה לסריקה), היא מוחלת על כל המסננים בסדר סדרתי. יכול להיות שמודעה תגרום לדיווח מיידי על סמך מסנן אחד, ולדיווח באצווה על סמך פעולת מסנן אחרת.
סף הרמות של RSSI (גבוה ונמוך) מאפשר לשלוט במועד שבו הפריים גלוי לעיבוד הסינון, גם כשנאמן המידע מקבל מנה תקפה. אם אופן השליחה מוגדר כ'מיידי' או כ'אצווה', עוצמת האות (RSSI) של פריים נלקחת בחשבון לצורך עיבוד נוסף של הבקר. אפליקציות שונות צריכות התנהגות שונה של דיווח ושל עיבוד בקבוצות. כך אפשר לכמה אפליקציות לדווח ישירות ו/או לאגד תוצאות בקושחה, בו-זמנית. דוגמה למקרה כזה היא כשסריקת אצווה פעילה מאפליקציה אחת, ומאוחר יותר אפליקציה אחרת מנפיקה סריקת LE רגילה. לפני הנפקת סריקת אצווה, המסגרת או האפליקציה מגדירות מסננים מתאימים. בשלב מאוחר יותר, כשהאפליקציה השנייה מבצעת סריקה רגילה, האצווה הקודמת ממשיכה. עם זאת, בגלל הסריקה הרגילה, זה דומה מבחינה מושגית להוספת מסנן null (יחד עם כל המסננים הקיימים) יחד עם פקודת הסריקה LE. הפרמטרים של פקודת הסריקה LE מקבלים עדיפות כשהם פעילים. אם סריקת ה-LE הרגילה מושבתת, הבקר יחזור לסריקת אצווה קודמת, אם הייתה כזו.
אופן השליחה OnFound מבוסס על מסננים שהוגדרו. שילוב שמפעיל את הפעולה של המסנן בהצלחה נחשב לישות למעקב עבור onLost. האירוע המתאים הוא אירוע המשנה של מעקב אחר מודעות LE.
המעבר של מסנן OnFound/OnLost (אם הוא מופעל) ייראה כך:
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
APCF_opcode |
אוקטט אחד | 0x01 – APCF Set Filtering Parameters |
APCF_Action |
אוקטט אחד | פקודת ההדהוד APCF_Action |
APCF_AvailableSpaces |
אוקטט אחד | מספר הרשומות הזמינות בטבלת המסננים |
LE_APCF_Command: broadcast_address_sub_cmd
פקודת המשנה הזו משמשת להוספה או למחיקה של כתובת מפרסם, או לניקוי רשימת הכתובות של המפרסמים לצורך סינון בתוך השבב.
Sub OCF: 0x02
| פרמטר של פקודת משנה | גודל | מטרה |
|---|---|---|
APCF_Action |
אוקטט אחד |
0x00 – הוספה 0x01 – מחיקה 0x02 – ניקוי הפעולה 'מחיקה' תמחק את כתובת השידור שצוינה במסנן שצוין. האפשרות Clear תנקה את כל כתובות השידור במסנן שצוין. |
APCF_Filter_Index |
אוקטט אחד | אינדקס המסנן (0, max_filter-1) |
APCF_Broadcaster_Address |
6 אוקטטים | כתובת מכשיר באורך 6 בייט שרוצים להוסיף לרשימת הכתובות של המשדר או למחוק ממנה |
APCF_Application_Address_type |
אוקטט אחד |
0x00: ציבורי 0x01: אקראי 0x02: לא רלוונטי (מתעלמים מסוג הכתובת) כדי לסנן דוחות פרסום עם סוגי כתובות של זהות (0x02, 0x03). כדי לקבל דוחות פרסום עם סוגי הכתובות 0x02 ו-0x03, צריך להגדיר את השדה הזה ל-0x02: NA (התעלמות מסוג הכתובת). |
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
APCF_opcode |
אוקטט אחד | 0x02 – כתובת של משדר APCF |
APCF_Action |
אוקטט אחד | פקודת ההדהוד APCF_Action |
APCF_AvailableSpaces |
אוקטט אחד | מספר הרשומות החינמיות שעדיין זמינות בטבלה Broadcast Address |
LE_APCF_Command: service_uuid_sub_cmd
משתמשים בפקודת המשנה הזו כדי להוסיף או למחוק מזהה ייחודי אוניברסלי (UUID) של שירות, או כדי לנקות רשימה של מזהים ייחודיים אוניברסליים של שירות לסינון בתוך השבב.
Sub OCF: 0x03
| פרמטר של פקודת משנה | גודל | מטרה |
|---|---|---|
APCF_Action |
אוקטט אחד |
0x00 – הוספה 0x01 – מחיקה 0x02 – ניקוי מחיקה תמחק את כתובת ה-UUID של השירות שצוינה במסנן שצוין. הפעולה Clear תנקה את כל המזהים הייחודיים האוניברסליים של השירותים במסנן שצוין. |
APCF_Filter_Index |
אוקטט אחד | אינדקס המסנן (0, max_filter-1) |
APCF_UUID |
2,4,16 אוקטט | ה-UUID של השירות (16 ביט, 32 ביט או 128 ביט) להוספה לרשימה או למחיקה ממנה. |
APCF_UUID_MASK |
2,4,16 אוקטט |
מסכת ה-UUID של השירות (16 ביט, 32 ביט או 128 ביט) שרוצים להוסיף לרשימה.
האורך שלו צריך להיות זהה לאורך של APCF_UUID.
|
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
APCF_opcode |
אוקטט אחד | 0x03 – UUID של שירות APCF |
APCF_Action |
אוקטט אחד | פקודת ההדהוד APCF_Action |
APCF_AvailableSpaces |
אוקטט אחד | מספר הרשומות החינמיות שעדיין זמינות בטבלה Service UUID |
LE_APCF_Command: solicitation_uuid_sub_cmd
פקודת המשנה הזו משמשת להוספה או למחיקה של UUID של בקשת מידע, או לניקוי של רשימת UUID של בקשות מידע לסינון על שבב.
Sub OCF: 0x04
| פרמטר של פקודת משנה | גודל | מטרה |
|---|---|---|
APCF_Action |
אוקטט אחד |
0x00 – הוספה 0x01 – מחיקה 0x02 – ניקוי הפעולה 'מחיקה' תמחק את כתובת ה-UUID של הבקשה במסנן שצוין. האפשרות Clear תנקה את כל מזהי ה-UUID של בקשות ההצטרפות במסנן שצוין. |
APCF_Filter_Index |
אוקטט אחד | אינדקס המסנן (0, max_filter-1) |
APCF_UUID |
2,4,16 אוקטט | ה-UUID של הבקשה (16 ביט, 32 ביט או 128 ביט) שרוצים להוסיף לרשימה או למחוק ממנה. |
APCF_UUID_MASK |
2,4,16 אוקטט |
מסכת ה-UUID של בקשת ההצטרפות (16 ביט, 32 ביט או 128 ביט) שרוצים להוסיף לרשימה. האורך שלו צריך להיות זהה לאורך של APCF_UUID.
|
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
APCF_opcode |
אוקטט אחד | 0x04 – מזהה ייחודי אוניברסלי (UUID) של בקשת APCF |
APCF_Action |
אוקטט אחד | פקודת ההדהוד APCF_Action |
APCF_AvailableSpaces |
אוקטט אחד | מספר הרשומות החינמיות שעדיין זמינות בטבלה Solicitation UUID |
LE_APCF_Command: local_name_sub_cmd
פקודת המשנה הזו משמשת להוספה או למחיקה של מחרוזת שם מקומי, או לניקוי של רשימת מחרוזות השמות המקומיים לסינון בתוך השבב.
Sub OCF: 0x05
| פרמטר של פקודת משנה | גודל | מטרה |
|---|---|---|
APCF_Action |
אוקטט אחד |
0x00 – הוספה 0x01 – מחיקה 0x02 – ניקוי המחיקה תמחק את מחרוזת השם המקומי שצוינה במסנן שצוין. הפעולה Clear תנקה את כל המחרוזות של השמות המקומיים במסנן שצוין. |
APCF_Filter_Index |
אוקטט אחד | אינדקס המסנן (0, max_filter-1) |
APCF_LocName_Mandata_or_SerData |
גודל משתנה |
מחרוזת תווים לשם מקומי. הערות:
|
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
APCF_opcode |
אוקטט אחד | 0x05 - APCF Local Name |
APCF_Action |
אוקטט אחד | פקודת ההדהוד APCF_Action |
APCF_AvailableSpaces |
אוקטט אחד | מספר הרשומות החינמיות שעדיין זמינות בטבלה Local name |
LE_APCF_Command: manf_data_sub_cmd
פקודת המשנה הזו משמשת להוספה או למחיקה של מחרוזת נתוני יצרן, או לניקוי רשימת מחרוזות נתוני היצרן לצורך סינון בתוך השבב.
Sub OCF: 0x06
| פרמטר של פקודת משנה | גודל | מטרה |
|---|---|---|
APCF_Action |
אוקטט אחד |
0x00 – הוספה 0x01 – מחיקה 0x02 – ניקוי הפעולה 'מחיקה' תמחק את מחרוזת נתוני היצרן שצוינה במסנן שצוין. האפשרות Clear תנקה את כל מחרוזות הנתונים של היצרן במסנן שצוין. |
APCF_Filter_Index |
אוקטט אחד | מסנן אינדקס (0, max_filter-1) |
APCF_LocName_Mandata_or_SerData |
גודל משתנה |
מחרוזת תווים של נתוני יצרן. הערות:
|
APCF_ManData_Mask |
גודל משתנה |
מסכת נתונים של יצרן שרוצים להוסיף לרשימה. הוא צריך להיות באורך זהה ל-APCF_LocName_or_ManData_or_SerData.
|
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
APCF_opcode |
אוקטט אחד | 0x06 – נתוני יצרן של APCF |
APCF_Action |
אוקטט אחד | פקודת ההדהוד APCF_Action |
APCF_AvailableSpaces |
אוקטט אחד | מספר הרשומות החינמיות שעדיין זמינות בטבלה 'נתוני יצרן' |
LE_APCF_Command: service_data_sub_cmd
משתמשים בפקודת המשנה הזו כדי להוסיף או למחוק מחרוזת של נתוני שירות, או כדי לנקות את רשימת המחרוזות של נתוני השירות לסינון בתוך השבב.
Sub OCF: 0x07
| פרמטר של פקודת משנה | גודל | מטרה |
|---|---|---|
APCF_Action |
אוקטט אחד |
0x00 – הוספה 0x01 – מחיקה 0x02 – ניקוי האפשרות 'מחיקה' תמחק את מחרוזת נתוני השירות שצוינה במסנן שצוין. האפשרות Clear תנקה את כל מחרוזות הנתונים של השירות במסנן שצוין. |
APCF_Filter_Index |
אוקטט אחד | מסנן אינדקס (0, max_filter-1) |
APCF_LocName_Mandata_or_SerData |
גודל משתנה |
מחרוזת תווים של נתוני שירות. הערות:
|
APCF_LocName_Mandata_or_SerData_Mask |
גודל משתנה |
מסכת נתוני השירות שרוצים להוסיף לרשימה. האורך שלו צריך להיות זהה לאורך של APCF_LocName_or_ManData_or_SerData.
|
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
APCF_opcode |
אוקטט אחד | 0x07 – נתוני שירות של APCF |
APCF_Action |
אוקטט אחד | פקודת ההדהוד APCF_Action |
APCF_AvailableSpaces |
אוקטט אחד | מספר הרשומות החינמיות שעדיין זמינות לטבלה 'נתוני שירות' |
LE_APCF_Command: ad_type_sub_cmd
פקודת המשנה הזו משמשת להוספה או למחיקה של סוג מודעה, או לניקוי רשימת סוגי המודעות לסינון בתוך השבב. משתמשים בפקודה read_extended_features_sub_cmd כדי לבדוק אם הפקודה הזו נתמכת.
אם APCF_AD_DATA_Length הוא 0, מסננים את APCF_AD_TYPE בלי להשוות בין נתוני AD לבין נתוני AD Mask.
אם אורך הנתונים של חבילת ה-ADV שהתקבלה חורג מ-AD_DATA_LENGTH, המערכת משווה רק את AD_DATA_LENGTH הבייטים הראשונים של נתוני ה-AD ומתעלמת מהנתונים הנותרים.
Sub OCF: 0x09
| פרמטר של פקודת משנה | גודל | מטרה |
|---|---|---|
APCF_Action |
אוקטט אחד |
0x00 – הוספה 0x01 – מחיקה 0x02 – ניקוי מחיקה תמחק את סוג ה-AD שצוין במסנן שצוין. האפשרות Clear תנקה את כל סוגי המודעות במסנן שצוין. |
APCF_Filter_Index |
אוקטט אחד | מסנן אינדקס (0, max_filter-1) |
APCF_AD_TYPE |
אוקטט אחד | סוג המודעה להוספה לרשימה או למחיקה ממנה. התעלמות כש-APCF_Action הוא 0x02 (ניקוי) |
APCF_AD_DATA_Length |
אוקטט אחד |
0x00 – לא לסנן את תוכן הנתונים התעלמות כש- APCF_Action הוא 0x02 (ניקוי)
|
APCF_AD_DATA |
גודל משתנה |
גודל משתנה, בהתאם ל-APCF_AD_DATA_Lengthהתעלמות כש- APCF_Action הוא 0x02 (ניקוי) |
APCF_AD_DATA_MASK |
גודל משתנה |
גודל משתנה, בהתאם ל-APCF_AD_DATA_Lengthצריך להתעלם ממנו אם הערך של APCF_Action הוא 0x02 (ניקוי)האורך שלו צריך להיות זהה לאורך של APCF_AD_DATA.
|
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
APCF_opcode |
אוקטט אחד | 0x09 – סוג מודעה של APCF |
APCF_Action |
אוקטט אחד | פקודת ההדהוד APCF_Action |
APCF_AvailableSpaces |
אוקטט אחד | מספר הכניסות החינמיות שעדיין זמינות בטבלה 'סוג המודעה' |
LE_APCF_Command: read_extended_features_sub_cmd
פקודת המשנה הזו משמשת לקריאת תכונות APCF מורחבות.
Sub OCF: 0xFF
| פרמטר של פקודת משנה | גודל | מטרה |
|---|---|---|
| לא רלוונטי | פרמטר פקודה ריק. |
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
APCF_opcode |
אוקטט אחד | 0xFF - APCF_Read_Extended_Features |
APCF_extended_features |
2 אוקטטים |
מסיביות ביטים לתכונות מתקדמות נתמכות:
ערך הביט
|
פקודה של מידע על פעילות ובקרה של בקר
המטרה של המידע הזה היא לאפשר לפונקציות גבוהות יותר של מערכת המארח לנתח את כל הפעילויות של כל הרכיבים, כולל בקר ה-BT והמצב המאקרו שלו, בשילוב עם מה שקורה באפליקציות ובמסגרת. כדי לעשות זאת, נדרשים הפרטים הבאים ממערך ה-BT ומבקר ה-BT:
- BT stack: דיווח על המצב המקרו-תפעולי הנוכחי של הבקר
- קושחה: דיווח על פעילות מצטברת ומידע על אנרגיה
מצבי מאקרו של מחסנית מארח BT, כפי שנקבעו ברמת המשתמש:
- במצב המתנה: [סריקת דף, פרסום LE, סריקת שאילתה, סריקת LE]
- סריקה: [איתור/שאילתה/ניסיון להתחבר]
- פעיל: [קישור ACL פועל, קישור SCO מתבצע, מצב sniff]
הפעילויות שהבקר עוקב אחריהן במהלך חייו הן זמן השידור (Tx), זמן הקבלה (Rx), זמן ההמתנה וסך האנרגיה שנצרכה. הם נמחקים כשקוראים אותם מהמארח.
LE_Get_Controller_Activity_Energy_Info
זוהי פקודה ספציפית לספק.
OCF: 0x159
| פרמטר של פקודת משנה | גודל | מטרה |
|---|---|---|
| לא רלוונטי | פרמטרים ריקים של פקודות |
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
total_tx_time_ms |
4 אוקטטים | הזמן הכולל של ביצוע העברה |
total_rx_time_ms |
4 אוקטטים | הזמן הכולל של ביצוע מרשם |
total_idle_time_ms |
4 אוקטטים | הזמן הכולל במצב ללא פעילות (מצבי צריכת חשמל נמוכה שאינם שינה) |
total_energy_used |
4 אוקטטים | האנרגיה הכוללת שנעשה בה שימוש [מכפלה של הזרם (mA), המתח (V) והזמן (ms)] |
פקודה של פרמטרים לסריקה של קבוצת LE מורחבת
אפשר להשתמש בפקודה הזו כדי להפעיל חלון סריקה ומרווח גדולים יותר בבקר. לפי מפרט BT Core 5.2, חלון סריקה ומרווח סריקה מוגבלים ל-10.24 שניות, מה שמקשה על אפליקציות להשתמש במרווחי סריקה מעל 10.24 שניות.
הפניה לבסיס: BT Core 5.2 Specification, page 2493 (LE Set Scan Parameters Command)
OCF: 0x15A
| פרמטר של פקודה | גודל | מטרה |
|---|---|---|
LE_Ex_Scan_Type |
אוקטט אחד |
0x00 – סריקה פסיבית. לא יישלחו מנות SCAN_REQ (ברירת מחדל).0x01 – סריקה פעילה. יכול להיות שיישלחו מנות SCAN_REQ.
|
LE_Ex_Scan_Interval |
4 אוקטטים |
מוגדר כמרווח הזמן שחלף מהרגע שבו הבקר התחיל את סריקת ה-LE האחרונה שלו ועד הרגע שבו הוא התחיל את סריקת ה-LE הבאה. טווח: 0x0004 עד 0x00FFFFFF ברירת מחדל: 0x0010 (10 אלפיות השנייה) זמן = N * 0.625 אלפיות השנייה טווח זמן: 2.5 אלפיות השנייה עד 10442.25 שניות |
LE_Ex_Scan_Window |
4 אוקטטים |
משך הסריקה של LE. הערך של LE_Scan_Window צריך להיות קטן מ-LE_Scan_Interval או שווה לו.
טווח: 0x0004 עד 0xFFFF ברירת מחדל: 0x0010 (10 אלפיות השנייה) זמן = N * 0.625 אלפיות השנייה טווח זמן: 2.5 אלפיות השנייה עד 40.95 שניות |
Own_Address_Type |
אוקטט אחד |
0x00 – כתובת ציבורית של המכשיר (ברירת מחדל) 0x01 – כתובת אקראית של המכשיר |
LE_Ex_Scan_Filter_Policy |
0x00 – קבלת כל חבילות הפרסום (ברירת מחדל). חבילות של מודעות ממוקדות שלא מיועדות למכשיר הזה יתעלמו מהן. 0x01 - Ignore advertisement packets from devices not in the White List Only list. חבילות של פרסום ממוקד שלא מיועדות למכשיר הזה יתעלמו מהן. |
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
קבלת פקודה למידע על תוצאות ניפוי הבאגים של בקר
המטרה של רכיב המידע הזה היא לאפשר למארח לקבל מידע על ניפוי באגים בבקר, בפורמט בינארי, לצורך עיבוד וניתוח לאחר מכן. כך אפשר לנפות באגים בבעיות שמתרחשות בשטח, והמהנדסים מקבלים ערכת כלים לרישום מידע לצורך ניתוח. נאמן מידע יכול לספק את המידע כשמארח מבקש אותו באמצעות האירוע (אירוע משנה של פרטי ניפוי באגים של נאמן מידע) או באופן אוטונומי כשנאמן המידע רוצה בכך. דוגמאות לשימושים אפשריים: דיווח על מידע לגבי מצב הקושחה, מידע על קובץ dump של קריסה, מידע על רישום ביומן וכו'.
OCF: 0x15B
| פרמטר של פקודה | גודל | מטרה |
|---|---|---|
| לא רלוונטי | רשימת פרמטרים ריקה של פקודה |
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
תמיכה בהורדת עומס של A2DP מהחומרה
התכונה A2DP offload תומכת בהעברה של תהליך קידוד האודיו של A2DP למעבד אודיו שמחובר לבקר ה-BT. סטרימינג של נתוני אודיו מקודדים עובר ישירות ממעבד האודיו לבקר ה-BT בלי מעורבות של מארח ה-BT. המארח של Bluetooth עדיין אחראי להגדרה ולשליטה בסשן A2DP. יש שתי גרסאות של הפקודות. הפקודות הקודמות עם Sub OCF 0x01-0x02 תומכות רק בקוֹדֶקים בקוד פתוח. הגרסאות עם Sub-OCF 0x03-0x04 לא תלויות בקודק שהוגדר.
OCF: 0x15D
הפעלת הורדת העומס של A2DP (גרסה קודמת)
Sub OCF: 0x01
משתמשים בפקודה הזו כדי להגדיר את תהליך הפחתת העומס של A2DP וכדי להתחיל את הזרמת הנתונים של A2DP.
| פרמטר של פקודה | גודל | מטרה |
|---|---|---|
Codec |
4 אוקטטים |
מציין את סוג הקודק 0x01 – SBC 0x02 – AAC 0x04 – APTX 0x08 – APTX HD 0x10 – LDAC 0x20 – Opus |
Max_Latency |
2 אוקטטים | זמן האחזור המקסימלי המותר (באלפיות השנייה). הערך אפס משבית את השטיפה. |
SCMS-T_Enable |
2 אוקטטים |
אוקטט 0: דגל שמאפשר הוספה של כותרת SCMS-T.
אוקטט 1: ערך הכותרת SCMS-T, כשהיא מופעלת. |
Sampling_Frequency |
4 אוקטטים |
0x01 – 44,100 Hz 0x02 – 48,000 Hz 0x04 – 88,200 Hz 0x08 – 96,000 Hz |
Bits_Per_Sample |
אוקטט אחד |
0x01 – 16 ביטים לדגימה 0x02 – 24 ביטים לדגימה 0x04 – 32 ביטים לדגימה |
Channel_Mode |
אוקטט אחד |
0x01 – מונו 0x02 – סטריאו |
Encoded_Audio_Bitrate |
4 אוקטטים |
קצב העברת הנתונים של האודיו המקודד בסיביות לשנייה. 0x00000000 – קצב העברת הנתונים של האודיו לא צוין או לא נעשה בו שימוש. 0x00000001 - 0x00FFFFFF - קצב העברת הנתונים של אודיו מקודד בסיביות לשנייה. 0x01000000 עד 0xFFFFFFFF – שמור. |
Connection_Handle |
2 אוקטטים | ידית החיבור של חיבור A2DP שמגדירים |
L2CAP_Channel_ID |
2 אוקטטים | מזהה הערוץ של L2CAP שבו יש להשתמש לחיבור A2DP הזה |
L2CAP_MTU_Size |
2 אוקטטים | הגודל המקסימלי של L2CAP MTU שמכיל חבילות אודיו מקודדות |
Codec_Information |
32 אוקטטים |
מידע ספציפי לקודק.
קודק SBC:
אפשר לעיין ברכיבי מידע ספציפיים של SBC Codec ב-A2DP v1.3. קודק AAC:
אפשר לעיין ברכיבי מידע ספציפיים של קודק AAC ב-A2DP v1.3 קודק LDAC:
אוקטט 0-3: מזהה הספק
שמינייה 4-5: מזהה קודק
Octet 6: Bitrate Index:
Octet 7: LDAC Channel Mode Octet 8-31: שמור קודק Opus:
שמינייה 0-3: מזהה הספק
שמינייה 4-5: מזהה קודק אוקטט 6-31: שמור כל שאר הקודקים: אוקטט 0-31: שמור |
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
Sub_Opcode |
אוקטט אחד | 0x01 – הפעלת העברה לחומרת A2DP |
הפעלת הורדת העומס של A2DP מהמעבד
Sub OCF: 0x03
משתמשים בפקודה הזו כדי להגדיר את תהליך הפחתת העומס של A2DP וכדי להתחיל את הזרמת הנתונים של A2DP.
| פרמטר של פקודה | גודל | מטרה |
|---|---|---|
Connection Handle |
2 אוקטטים | ה-handle של חיבור ה-HCI הפעיל |
L2CAP_Channel_ID |
2 אוקטטים | מזהה של ערוץ L2CAP שנפתח להזרמת A2DP |
Data_Path_Direction |
אוקטט אחד |
0x00 – פלט (מקור/מיזוג של AVDTP) 0x01 – קלט (יעד/פיצול של AVDTP) |
Peer_MTU |
2 אוקטטים | הגודל המקסימלי של מנות L2CAP, שנקבע בהסכם עם העמית. |
CP_Enable_SCMS_T |
אוקטט אחד |
0x00 – השבתה של כותרת הגנה על תוכן SCMS-T 0x01 – הפעלה של כותרת הגנה על תוכן SCMS-T |
CP_Header_SCMS_T |
אוקטט אחד |
כשהכותרת של הגנת התוכן SCMS-T מופעלת (CP_SCMS_T_Enable
מוגדרת ל-0x01), הערך של הכותרת שקודם לתוכן האודיו מוגדר (ראו A2DP, סעיף 3.2.1-2) כפי שמוגדר ב-Bluetooth Assigned Numbers, סעיף
6.3.2.התעלמות מהערך אם ההגנה על תוכן SCMS-T לא מופעלת. |
Vendor_Specific_Parameters_Length |
אוקטט אחד |
אורך הפרמטרים הספציפיים לספק, בטווח 0 עד 128. הערך 0 משמש כשלא מסופקים פרמטרים נוספים. |
Vendor_Specific_Parameters |
0 עד 128 אוקטטים |
פרמטרים ספציפיים לספק שסופקו על ידי Bluetooth Audio HAL,
CodecParameters.vendorSpecificParameters[].
|
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
Sub_Opcode |
אוקטט אחד | 0x03 – הפעלת העברה לחומרת A2DP |
הפסקת הורדת העומס של A2DP (גרסה קודמת)
Sub OCF: 0x02
הפקודה הזו משמשת להפסקת הזרמת הנתונים של A2DP offload.
| פרמטר של פקודה | גודל | מטרה |
|---|---|---|
| לא רלוונטי | רשימת פרמטרים ריקה של פקודה. |
לא הוגדרו פרמטרים לפקודה הזו.
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
Sub_Opcode |
אוקטט אחד | 0x02 – עצירת הפחתת עומס A2DP |
הפסקת הורדת העומס של A2DP
Sub OCF: 0x04
הפקודה הזו משמשת להפסקת הזרמת הנתונים של A2DP offload.
| פרמטר של פקודה | גודל | מטרה |
|---|---|---|
Connection Handle |
2 אוקטטים | ה-handle של חיבור ה-HCI הפעיל |
L2CAP_Channel_ID |
2 אוקטטים | מזהה של ערוץ L2CAP שנפתח להזרמת A2DP |
Data_Path_Direction |
אוקטט אחד |
0x00 – פלט (מקור/מיזוג של AVDTP) 0x01 – קלט (יעד/פיצול של AVDTP) |
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
Sub_Opcode |
אוקטט אחד | 0x04 – עצירת הורדת העומס של A2DP |
פקודה של דוח איכות Bluetooth
התכונה של פקודת דוח איכות ה-BT מפעילה את המנגנון בבקר ה-Bluetooth כדי לדווח על אירועי איכות ה-Bluetooth למארח. אתם יכולים להפעיל ארבע אפשרויות:
- מצב ניטור איכות: הבקר שולח למארח מעת לעת אירוע משנה של BQR שקשור לאיכות הקישור.
- התקרבות ל-LSTO: אם לא מתקבלות מנות מהמכשיר המחובר ב-BT במשך יותר ממחצית הזמן של Link Supervision TimeOut (LSTO), הבקר מדווח על אירוע התקרבות ל-LSTO למארח.
- האודיו ב-A2DP קטוע: כשהבקר מזהה גורמים שגורמים לאודיו קטוע, הבקר מדווח על אירוע של אודיו קטוע ב-A2DP למארח.
- (e)SCO Voice Choppy: כשהבקר מזהה גורמים שגורמים לדיבור מקוטע, הבקר מדווח על אירוע (e)SCO Voice Choppy למארח.
- Root Inflammation: האירוע הזה נשלח מהבקר אל ה-stack כשמתרחשת שגיאה חמורה ב-HAL או בבקר, וצריך להפעיל מחדש את Bluetooth.
- מעקב אחר הודעות LMP/LL: הבקר שולח את הודעת LMP/LL למארח לאחר לחיצת היד עם המכשיר המרוחק.
- מעקב אחר תזמון של Bluetooth Multi-profile/Coex: הבקר שולח למארח את פרטי התזמון שלו לגבי טיפול בפרופילים מרובים של Bluetooth ודו-קיום אלחוטי בפס 2.4GHz.
- מנגנון מידע לניפוי באגים של בקר: כשההגדרה הזו מופעלת, הבקר יכול לדווח באופן אוטונומי על מידע לניפוי באגים באמצעות אירוע המשנה של מידע לניפוי באגים של הבקר למארח.
- LE Audio Choppy: כשהבקר מזהה גורמים שגורמים לאודיו קטוע, הבקר מדווח על אירוע LE Audio Choppy למארח.
-
מצב 'נתוני RF מתקדמים': הבקר מדווח למארח על נתוני ה-RF שלו, ותומך בשני תרחישי שימוש בדיווח:
- דוחות תקופתיים
- טריגרים של אירועים (התחלה או עצירה של סטרימינג וטריגר של אירוע איכות הקישור).
- מנגנון המעקב אחר תקינות הבקר מספק למארח מידע שקשור לתקינות באמצעות שני סוגי אירועים: דוחות תקופתיים ודוחות שמופעלים על ידי אירועים.
- BQR_Report_Action של פקודת דוח איכות Bluetooth: המארח יכול להשתמש בפקודת ה-HCI הזו כדי לקבל שאילתה חד-פעמית למצב ניטור איכות, למצב ניטור אנרגיה או למצב מתקדם של נתוני RF.
OCF: 0x15E
| פרמטר של פקודה | גודל | מטרה |
|---|---|---|
BQR_Report_Action |
אוקטט אחד |
פעולה להוספה או למחיקה של דיווח על אירועים איכותיים שהוגדרו בפרמטר BQR_Quality_Event_Mask, או מחיקה של כל האירועים.
0x00 – הוספה
מחיקה תנקה את הדיווח על אירועי איכות ספציפיים. |
BQR_Quality_Event_Mask |
4 אוקטטים |
מסיכות ביטים לדיווח על אירועים שקשורים לאיכות שנבחרו.
ביט 0: הגדרה להפעלה של מצב מעקב אחר איכות. |
BQR_Minimum_Report_Interval |
2 אוקטטים |
מגדירים את מרווח הזמן המינימלי בין דיווחים על אירועי איכות עבור האירועים שנבחרו. הקושחה של הבקר לא אמורה לדווח על האירוע הבא בתוך מרווח הזמן המוגדר. הגדרת המרווח
צריכה להיות רלוונטית ומיועדת לאירועי האיכות שמוסיפים.
יחידה: אלפיות השנייה |
BQR_Vendor_Specific_Quality_Event_Mask |
4 אוקטטים |
מסיכות ביטים לדיווח על אירועים ספציפיים של איכות הספק שנבחר. הפרמטר הזה תקף רק אם הביט 15 של BQR_Quality_Event_Mask מוגדר.
ביט 0 עד 31: שמור. |
BQR_Vendor_Specific_Trace_Mask |
4 אוקטטים |
מסכות ביטים לדיווח על מעקב ספציפי לספק שנבחר. הפרמטר הזה תקף רק אם הביט 31 של BQR_Quality_Event_Mask מוגדר.
ביט 0 עד 31: שמור. |
Report_interval_multiple |
4 אוקטטים |
המכפיל של BQR_Minimum_Report_Interval. אם הערך הזה הוא >= 1,
הפורמט של BQR Report Interval (מרווח הדיווח של BQR) הוא BQR Report Interval = BQR_Minimum_Report_Interval x Report_interval_multiple. הקושחה של הבקר לא יכולה לדווח על האירוע הבא בתוך מרווח הזמן המוגדר. הגדרת המרווח מיועדת במיוחד לאירועי האיכות שנוספו.
יחידה: אלפית השנייה BQR_Report_Interval גדול מהיכולת של בקר, הבקר צריך להחזיר את הזמן המקסימלי של BQR_Report_Interval עם השלמת הפקודה.
|
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
Current_Quality_Event_Mask |
4 אוקטטים |
מציין את הגדרת מיסוך הסיביות הנוכחית. ביט 0: מצב מעקב אחר איכות מופעל. Bit 1: Approaching LSTO event reporting is enabled. Bit 2: הדיווח על אירועים של אודיו מקוטע ב-A2DP מופעל. ביט 3: (e)SCO Voice Choppy event reporting is enabled. Bit 4: דיווח על אירועי דלקת בשורש מופעל. ביט 5: מצב מעקב אחרי צריכת אנרגיה מופעל. Bit 6: הפעלת דיווח על אירועים של אודיו LE מקוטע. ביט 7: אירוע של כשל בחיבור. ביט 8: מוגדר להפעלה של טריגר לאירוע במצב 'סטטיסטיקות מתקדמות של RF'. Bit 9: Set to enable Advance RF Stats periodically report. Bit 10: מוגדר להפעלה של טריגר אירוע של מנגנון מעקב אחר תקינות הבקר. Bit 11: מוגדר להפעלה של מנגנון מעקב אחרי תקינות הבקר, כדי שידווח מדי פעם. ביט 12 עד 14: שמור. Bit 15: דיווח על אירועי איכות ספציפיים לספק מופעל. ביט 16: מעקב אחר הודעות LMP/LL מופעל. Bit 17: Bluetooth Multi-link/Coex scheduling trace is enabled. Bit 18: Controller Debug Information mechanism is enabled. Bit 19: שמור לפרטי ניפוי באגים של העברה Bit 20: טריגר של אירוע UART History Dump Bit 21 עד 30: שמור. ביט 31: מעקב ספציפי לספק מופעל. |
Current_Vendor_Specific_Quality_Event_Mask |
4 אוקטטים | מציין את הגדרת מיסוך הסיביות הנוכחית. |
Current_Vendor_Specific_Trace_Mask |
4 אוקטטים | מציין את הגדרת מיסוך הסיביות הנוכחית. |
BQR_Report_interval |
4 אוקטטים | מציין את הגדרת מיסוך הסיביות הנוכחית. |
Current_Vendor_Specific_Trace_Mask |
4 אוקטטים |
ההגדרה של BQR_Report_interval. הערך צריך להיות הערך המינימלי בין BQR_Minimum_Report_Interval * Report_interval_multiple לבין מרווח התמיכה המקסימלי של הבקר. |
פקודה דינמית למאגר נתונים זמני של אודיו
מאגר האודיו הדינמי מצמצם את התקלות באודיו על ידי שינוי גודל מאגר האודיו בבקר Bluetooth בהתאם לתרחישים שונים.
OCF: 0x15F
קבלת יכולת של זמן מאגר נתונים זמני של אודיו
Sub OCF: 0x01
משתמשים בפקודה הזו כדי לקבל את היכולת של זמן מאגר האודיו מבקר ה-Bluetooth.
| פרמטר של פקודה | גודל | מטרה |
|---|---|---|
| לא רלוונטי | רשימת פרמטרים ריקה של פקודה |
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
Dynamic_Audio_Buffer_opcode |
אוקטט אחד | 0x01 – קבלת הפסקה בין פגישות |
Audio_Codec_Type_Supported |
4 אוקטטים |
מסכות ביטים לסוגי הקודקים הנתמכים ביט 0 – SBC ביט 1 – AAC ביט 2 – APTX ביט 3 – APTX HD ביט 4 – LDAC ביטים 5 עד 31 שמורים |
Audio_Codec_Buffer_Default_Time_For_Bit_0 |
2 אוקטטים |
זמן ברירת המחדל של מאגר הנתונים הזמני של סוג הקודק Bit 0 שצוין ב-Audio_Codec_Type_Supported. הערך הזה צריך להיות 0 אם לא נתמך סוג ה-codec של ביט 0. יחידה: אלפיות השנייה |
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 |
2 אוקטטים |
זמן המאגר המקסימלי של סוג קודק Bit 0 שצוין ב-Audio_Codec_Type_Supported. הערך הזה צריך להיות 0 אם לא נתמך סוג ה-codec של ביט 0. יחידה: אלפיות השנייה |
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 |
2 אוקטטים |
זמן מאגר הנתונים הזמני המינימלי של סוג הקודק Bit 0 שצוין ב-Audio_Codec_Type_Supported. הערך הזה צריך להיות 0 אם לא נתמך סוג ה-codec של ביט 0. יחידה: אלפיות השנייה |
Audio_Codec_Buffer_Default_Time_For_Bit_1 |
2 אוקטטים |
זמן ברירת המחדל של מאגר הנתונים הזמני של סוג הקודק Bit 1 שצוין ב-Audio_Codec_Type_Supported. הערך הזה צריך להיות 0 אם סוג הקודק Bit 1 לא אפשרי. יחידה: אלפיות השנייה |
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 |
2 אוקטטים |
זמן המאגר המקסימלי של סוג קודק Bit 1 שצוין ב-Audio_Codec_Type_Supported. הערך הזה צריך להיות 0 אם סוג הקודק Bit 1 לא אפשרי. יחידה: אלפיות השנייה |
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 |
2 אוקטטים |
זמן מאגר מינימלי של סוג קודק Bit 1 שצוין ב-Audio_Codec_Type_Supported. הערך הזה צריך להיות 0 אם סוג הקודק Bit 1 לא אפשרי. יחידה: אלפיות השנייה |
| ...... | ...... | ...... |
Audio_Codec_Buffer_Default_Time_For_Bit_31 |
2 אוקטטים |
זמן ברירת המחדל של מאגר הנתונים הזמני של סוג הקודק Bit 31 שצוין ב-Audio_Codec_Type_Supported. הערך הזה צריך להיות 0 אם לא נתמך סוג קודק של Bit 31. יחידה: אלפיות השנייה |
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 |
2 אוקטטים |
זמן החציצה המקסימלי של סוג הקודק Bit 31 שצוין ב-Audio_Codec_Type_Supported. הערך הזה צריך להיות 0 אם לא נתמך סוג קודק של Bit 31. יחידה: אלפיות השנייה |
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 |
2 אוקטטים |
זמן מאגר מינימלי של סוג הקודק Bit 31 שצוין ב-Audio_Codec_Type_Supported. הערך הזה צריך להיות 0 אם לא נתמך סוג קודק של Bit 31. יחידה: אלפיות השנייה |
הגדרת זמן מאגר הנתונים הזמני של האודיו
Sub OCF: 0x02
משתמשים בפקודה הזו כדי להגדיר את זמן מאגר האודיו לבקר Bluetooth.
| פרמטר של פקודה | גודל | מטרה |
|---|---|---|
Audio_Codec_Buffer_Time |
2 אוקטטים |
משך מאגר האודיו המבוקש לקודק הנוכחי שבשימוש. יחידה: אלפיות השנייה |
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
Dynamic_Audio_Buffer_opcode |
אוקטט אחד | 0x02 – הגדרת זמן מאגר הנתונים הזמני של האודיו |
Audio_Codec_Buffer_Time |
2 אוקטטים |
משך מאגר האודיו הנוכחי בבקר ה-Bluetooth. יחידה: אלפיות השנייה |
אירוע HCI (ספציפי לספק)
במקרים מסוימים נדרשים אירועי HCI ספציפיים לספק. אפשר לעיין באיור 5.4 בעמוד 1897 של מפרט BT Core 5.2. פרמטר של אירוע 0 תמיד יכיל את קוד אירוע המשנה הראשון, שעל פיו יפוענח שאר אירוע ה-HCI.
| פרמטר של אירוע | גודל | מטרה |
|---|---|---|
HCI_vendor_specific_event_code |
אוקטט אחד | 0xFF |
sub_event_code |
אוקטט אחד | קוד אירוע המשנה יהיה בגודל אוקטט אחד, הבייט שמיד אחרי אורך הפרמטר בחבילת אירועי ה-HCI. |
אירוע משנה של חריגה מסף האחסון
האירוע הזה מציין שהיה חריגה מסף האחסון.
קוד אירוע משנה = 0x54
| פרמטר של אירוע משנה | גודל | מטרה |
|---|---|---|
| ללא |
אירוע משנה של שינוי מצב פרסום מרובה ב-LE
האירוע הזה מציין שמופע של פרסום שינה את המצב שלו. בשלב הזה, האירוע הזה משמש רק כדי לציין איזה מופע של פרסום הופסק כתוצאה מחיבור.
קוד אירוע משנה = 0x55
| פרמטר של אירוע משני | גודל | מטרה |
|---|---|---|
Advertising_instance |
אוקטט אחד |
מזהה את מופע הפרסום הספציפי הערכים התקינים הם 0 עד max_advt_instances-1
|
State_Change_Reason |
אוקטט אחד | 0x00: התקבל חיבור |
Connection_handle |
2 אוקטטים |
מזהה את החיבור שגרם להשבתת המופע advt (0xFFFF אם הוא לא תקין)
|
אירוע משנה של מעקב אחרי פרסום ב-LE
האירוע הזה מציין מתי נמצא מפרסם או מתי הוא לא נמצא.
קוד אירוע משנה = 0x56
| פרמטר של אירוע משנה | גודל | מטרה |
|---|---|---|
APCF_Filter_Index |
אוקטט אחד | מסנן אינדקס (0, max_filter-1) |
Advertiser_State |
אוקטט אחד |
0x00: נמצא מפרסם 0x01: המפרסם לא נמצא |
Advt_Info_Present |
אוקטט אחד |
0x00: פרטי המפרסם (Advt_Info) קיימים0x01: פרטי המפרסם ( Advt_Info) לא קיימים
|
Advertiser_Address |
6 אוקטטים | כתובת ציבורית או אקראית |
Advertiser_Address_Type |
אוקטט אחד |
0x00: כתובת ציבורית 0x01: כתובת אקראית |
Advt_Info |
Tx_Pwr[0]: 1 אוקטטה RSSI[0]: 1 אוקטטה Timestamp[0]: 2 אוקטטות Adv packet_len[0]: 1 אוקטטה Adv_packet[0]: Adv_packet_len אוקטטות Scan_data_resp_len[0]: 1 אוקטטה Scan_data_resp[0]: Scan_data_resp אוקטטות
|
אירוע משנה של מידע על תוצאות ניפוי באגים של בקר
האירוע הזה משמש את בקר כדי לספק מידע בינארי לניפוי באגים למארח.
קוד אירוע משנה = 0x57
| פרמטר של אירוע משנה | גודל | מטרה |
|---|---|---|
debug_block_byte_offset_start |
2 אוקטטים | ניפוי באגים של היסט בייטים של בלוק מההתחלה |
last_block |
אוקטט אחד |
0x00: יש עוד נתוני ניפוי באגים 0x01: הבלוק הבינארי האחרון; אין עוד נתוני ניפוי באגים |
cur_pay_load_sz |
2 אוקטטים | גודל הבלוק הבינארי באירוע הנוכחי |
Debug_Data |
משתנה | נתונים של ניפוי באגים של cur_payload_sz |
אירוע משנה של דוח איכות Bluetooth
האירוע הזה מציין אחד מהמקרים הבאים: התרחש אירוע איכות של Bluetooth, הבקר העלה את מעקב ההודעות של LMP/LL ואת מעקב התזמון של Bluetooth Multi-link/Coex, או שהבקר ביצע dump של נתוני מידע לניפוי באגים.
קוד אירוע משנה = 0x58 [Quality_Report_Id = 0x01 ~ 0x04, אירוע שקשור לאיכות הקישור]
| פרמטר של אירוע משני | גודל | מטרה |
|---|---|---|
Quality_Report_Id |
אוקטט אחד |
0x01: דיווח על איכות במצב מעקב. 0x02: מתקרב למועד האחרון להפעלת המינוי. 0x03: A2DP Audio Choppy. 0x04: (e)SCO Voice Choppy. 0x05 ~ 0x06: שמור. 0x07: LE Audio קטוע. 0x08: חיבור נכשל. 0x09 ~ 0xFF: שמור. |
Packet_Types |
אוקטט אחד |
0x01: ID 0x02: NULL 0x03: POLL 0x04: FHS 0x05: HV1 0x06: HV2 0x07: HV3 0x08: DV 0x09: EV3 0x0A: EV4 0x0B: EV5 0x0C: 2-EV3 0x0D: 2-EV5 0x0E: 3-EV3 0x0F: 3-EV5 0x10: DM1 0x11: DH1 0x12: DM3 0x13: DH3 0x14: DM5 0x15: DH5 0x16: AUX1 0x17: 2-DH1 0x18: 2-DH3 0x19: 2-DH5 0x1A: 3-DH1 0x1B: 3-DH3 0x1C: 3-DH5 0x1D ~ 0x50: Reserved 0x51: ISO packet 0x52: 1M PHY 0x53: 2M PHY 0x54: Codec PHY S=2 0x55: Codec PHY S=8 0x56 ~ 0xFF: Reserved |
Connection_Handle |
2 אוקטטים | ACL/(e)SCO/ISO connection handle. |
Connection_Role |
אוקטט אחד |
התפקיד שמוקצה לחיבור. 0x00: מרכזי 0x01: היקפי 0x02 עד 0xFF: שמור. |
TX_Power_Level |
אוקטט אחד |
רמת עוצמת השידור הנוכחית של Connection_Handle שצוין.
הערך הזה צריך להיות זהה לערך של בקר שמגיב לפקודת HCI_Read_Transmit_Power_Level HCI. |
RSSI |
אוקטט אחד |
[in dBm]
ערך של אינדיקטור עוצמת האות המתקבל (RSSI) עבור Connection_Handle שצוין. |
SNR |
אוקטט אחד |
[בדציבלים]
ערך יחס האות לרעש (SNR) עבור Connection_Handle שצוין. |
Unused_AFH_Channel_Count |
אוקטט אחד |
מציין את מספר הערוצים שלא בשימוש ב-AFH_channel_map. 0x4F ~ 0xFF: שמור. |
AFH_Select_Unideal_Channel_Count |
אוקטט אחד |
מציין את מספר הערוצים שמופרעים ושאיכותם ירודה, אבל הם עדיין נבחרים ל-AFH. מספר הערוצים המינימלי שמותר לפי מפרט ה-Bluetooth הוא 20, כך שגם אם יש הפרעות בכל 79 הערוצים והאיכות שלהם נמוכה, הבקר עדיין צריך לבחור לפחות 20 ערוצים ל-AFH. |
LSTO |
2 אוקטטים |
ההגדרה הנוכחית של הזמן הקצוב לתפוגה של הפיקוח על הקישור. Time = N * 0.625 ms Time Range: 0.625 ms to 40.9 s |
Connection_Piconet_Clock |
4 אוקטטים |
שעון Piconet עבור Connection_Handle שצוין. הערך הזה צריך להיות זהה לערך של בקר שמגיב לפקודת HCI_Read_Clock HCI עם הפרמטר Which_Clock של 0x01 (שעון Piconet). יחידה: N * 0.3125 ms (שעון Bluetooth אחד) |
Retransmission_Count |
4 אוקטטים |
מספר השידורים החוזרים מאז האירוע האחרון. הספירה הזו תאופס אחרי הדיווח למארח. |
No_RX_Count |
4 אוקטטים |
אין ספירת RX מאז האירוע האחרון. הספירה גדלה אם לא מתקבל אף חבילת נתונים במשבצת הזמן המתוזמנת, או אם חבילת הנתונים שהתקבלה פגומה. הספירה הזו תתאפס אחרי הדיווח למארח. |
NAK_Count |
4 אוקטטים |
מספר ה-NAK (אישור שלילי) מאז האירוע האחרון. הספירה הזו תאופס אחרי הדיווח למארח. |
Last_TX_ACK_Timestamp |
4 אוקטטים |
חותמת הזמן של אישור קבלת הנתונים האחרון. הוא מבוסס על שעון ה-Bluetooth של
המרכז של ה-piconet (CLK). יחידה: N * 0.3125 ms (שעון Bluetooth אחד) |
Flow_Off_Count |
4 אוקטטים |
מספר הפעמים שהבקר קיבל Flow-off (STOP) מאז האירוע האחרון. הספירה הזו תאופס אחרי הדיווח למארח. |
Last_Flow_On_Timestamp |
4 אוקטטים |
חותמת הזמן של ההעברה האחרונה (GO). הוא מבוסס על שעון ה-Bluetooth של
המרכז של ה-piconet (CLK). יחידה: N * 0.3125 ms (שעון Bluetooth אחד) |
Buffer_Overflow_Bytes |
4 אוקטטים |
[in Byte]
מספר הגלישות מעבר לגבולות המאגר מאז האירוע האחרון. |
Buffer_Underflow_Bytes |
4 אוקטטים |
[in Byte]
מספר המקרים של חוסר בנתונים במאגר הזמני מאז האירוע האחרון. |
bdaddr |
6 אוקטטים | כתובת של מכשיר שמחובר לרשת אחרת |
cal_failed_item_count |
אוקטט אחד | מספר הפריטים שכיול שלהם נכשל |
TX_Total_Packets |
4 אוקטטים | מספר החבילות שנשלחו. |
TX_UnAcked_Packets |
4 אוקטטים |
מספר החבילות שלא מתקבל אישור לגביהן. הספירה הזו מתאפסת אחרי שהמארח מקבל את הדוח. |
TX_Flushed_Packets |
4 אוקטטים |
מספר החבילות שלא נשלחו על ידי נקודת ה-flush שלו. הספירה הזו מתאפסת אחרי שהמארח מקבל את הדוח. |
TX_Last_Subevent_Packets |
4 אוקטטים |
מספר החבילות ששכבת הקישור מעבירה ב-PDU של נתוני CIS באירוע המשנה האחרון של אירוע CIS. הספירה הזו מתאפסת אחרי שהמארח מקבל את הדוח. הערך הוא אפס אם אין ערך תקין לקישור. |
CRC_Error_Packets |
4 אוקטטים |
מספר החבילות שהתקבלו עם שגיאת CRC מאז האירוע האחרון. הספירה הזו מתאפסת אחרי שהמארח מקבל את הדוח. |
RX_Duplicate_Packets |
4 אוקטטים |
מספר החבילות הכפולות (שידור חוזר) שהתקבלו מאז האירוע האחרון. הספירה הזו מתאפסת אחרי שהמארח מקבל את הדוח. |
RX_Unreceived_Packets |
4 אוקטטים |
מספר המנות שלא התקבלו זהה לפרמטר של הפקודה LE READ ISO Link Quality (קריאת איכות הקישור ISO) (ראו Bluetooth core Specification Version 5.4). מקורות הנתונים המשויכים הם CIS ו-BIS. כשמגדילים את הערך הזה, שכבת הקישור לא מקבלת מטען ייעודי (payload) ספציפי עד לנקודת הניקוי שלה (ב-CIS) או עד לסוף האירוע שהיא משויכת אליו (ב-BIS; ראו Bluetooth core Specification Version 5.4 Vol 6 Part B, Section 4.4.6.6). |
Coex_Info_Mask |
2 אוקטטים |
ביט 0 – CoexInvolvement: מוגדר כדי לציין שקיים חשד לפעילויות של שיתוף פעולה (Coex) כשדוח זה נוצר (לדוגמה, A2DP Chops ו-Approaching LSTO). Bit 1 - WL 2G Radio Active: Set to indicate WLAN 2G Radio is active. Bit 2 - WL 2G Connected: מוגדר כדי לציין שרדיו WLAN 2G פעיל ומחובר. Bit 3 - WL 5G/6G Radio Active: Set to indicate WLAN 5G/6G Radio is active. Bit 4-15 - שמור |
| פרמטר ספציפי לספק | (אורך כולל של הפרמטר – TBD) * אוקטטים | כדי שספק הבקר יקבל פרמטרים ספציפיים יותר לספק. |
קוד אירוע משנה = 0x58 [Quality_Report_Id = 0x05, אירוע של דלקת בשורש]
האירוע הזה מציין ש-Bluetooth HAL או הבקר נתקלו בשגיאה חמורה, וצריך ש-Bluetooth stack יתעד את המצב הזה ויפעיל מחדש. הבקר חייב לשלוח את האירוע Root_Inflammation_Event למערך Bluetooth לפני שליחת המקטע הראשון של אירועי פרטי הניפוי בכל מקרה.
הפרמטר Error_Code מכיל קוד שגיאה שדווח מ-HAL/Controller, או 0 אם זו שגיאה ספציפית של ספק ערכת השבבים. התג Vendor_Specific_Error_Code מכיל קוד שגיאה ספציפי של ספק ערכת השבבים מ-HAL/Controller. הערך צריך להיות 0 אם הפרמטר Error_Code לא שווה ל-0. הפרמטרים Error_Code ו-Vendor_Specific_Error_Code לא יכולים להיות שניהם 0.
| פרמטר של אירוע משני | גודל | מטרה |
|---|---|---|
Quality_Report_Id |
אוקטט אחד |
0x00 עד 0x04: שמור. 0x05: דלקת בשורש. 0x06 עד 0xFF: שמור. |
Error_Code |
אוקטט אחד |
0x00: קוד שגיאה ספציפי של ספק ערכת השבבים נכלל. 0x01 עד 0xFF: אירעה שגיאה בבקר. רשימה של קודי שגיאה ותיאורים מופיעה במפרט Bluetooth [כרך 2], חלק D, קודי שגיאה. |
Vendor_Specific_Error_Code |
אוקטט אחד |
0x00: לא נכלל קוד שגיאה ספציפי של ספק ערכת השבבים. 0x01 ~ 0xFF: קוד שגיאה ספציפי לספק של ערכת השבבים. |
| פרמטר ספציפי לספק | (Parameter Total Length - 4) * octets | כדי שספק הבקר יקבל פרמטרים ספציפיים יותר לספק. |
קוד אירוע משנה = 0x58 [Quality_Report_Id = 0x06, אירוע של ניטור אנרגיה]
האירוע הזה מספק תמונת מצב של צריכת החשמל של בקר ה-Bluetooth ומצבי הפעולה שלו במהלך תקופה ספציפית. האירוע הזה עוזר למפתחים ולמהנדסים לנתח את אופן ניהול ההספק של הבקר, לזהות אילו פעילויות צורכות הכי הרבה אנרגיה ולפתור בעיות שקשורות להספק.
הפרמטרים בדוח עוקבים אחרי מדדים מרכזיים, כולל:
- הצריכה הממוצעת הנוכחית: הזרם הכולל שמשמש את הבקר.
- הזמן שחלף במצבים שונים: הזמן הכולל (באלפיות השנייה) שהבקר מבלה במצב idle (שינה או צריכת חשמל נמוכה) לעומת מצב active (חיבור, שידור או קבלת נתונים).
- ספירת מעברים בין מצבים: מספר הפעמים שהבקר עובר בין מצבים לא פעילים ופעילים.
- הזמן שחלף במצבי רדיו ספציפיים: מדדים נפרדים לזמן שחלף בשידור (Tx) ובקליטה (Rx) גם בקישורי BR/EDR (Bluetooth Classic) וגם בקישורי LE (Bluetooth Low Energy).
- רמות הספק שידור ממוצעות: הספק ממוצע (ב-dBm) שמשמש לשידורים בקישורי BR/EDR ו-LE.
- פעילות מפורטת של השרשרת: דוחות על הזמן שחלף במהלך שידור או קבלה פעילים של שרשרות, עם הבחנה בין פעולות של שרשרת אחת לבין פעולות של שתי שרשרות, ובין מגברי הספק פנימיים (iPA) לבין מגברי הספק חיצוניים (ePA).
- זמן פעילות הסריקה: הזמן שבו הבקר מבצע סריקה פעילה של מכשירי BR/EDR ו-LE.
בדיקת הפרמטרים האלה מאפשרת למהנדסים לקבל תובנות לגבי יעילות צריכת החשמל של הבקר ולשפר את הביצועים שלו.
| פרמטר של אירוע משני | גודל | מטרה |
|---|---|---|
Quality_Report_Id |
אוקטט אחד | 0x06: ניטור אנרגיה |
Average_Current_Consumption |
2 אוקטטים | [ב-mA] צריכת הזרם הממוצעת של כל הפעילויות שנצרכות על ידי הבקר |
Idle_Total_Time (שינה) |
4 אוקטטים | [in ms] הזמן הכולל במצב לא פעיל (מצבי צריכת חשמל נמוכה, שינה). |
Idle_Sate_Enter_Count |
4 אוקטטים | מציין כמה פעמים הבקר נכנס למצב לא פעיל. |
Active_Total_Time |
4 אוקטטים | [in ms] הזמן הכולל במצב הפעיל (inquiring, paging, ACL/SCO/eSCO/BIS/CIS traffic, processing any task). |
Active_State_Enter_Count |
4 אוקטטים | מציין כמה פעמים הבקר נכנס למצבים הפעילים. |
BR_RDR_Tx_Total_Time |
4 אוקטטים | [in ms] סך הזמן במצב Tx(שידור לתנועת ACL/SCO/eSCO) הספציפי ל-BR/EDR. |
BR_RDR_Tx_State_Enter_Count |
4 אוקטטים | מציין כמה פעמים הבקר נכנס למצב Tx ספציפי של BR/EDR. |
BR_RDR_Tx_Average_Power_Level |
1 octets | [in dBm] רמת הספק השידור הממוצעת של כל קישורי ה-BR/EDR |
BR_RDR_Rx_Total_Time |
4 אוקטטים | [in ms] הזמן הכולל במצב Rx (קבלת תנועה מ-ACL/SCO/eSCO) הספציפי ל-BR/EDR. |
BR_RDR_Rx_State_Enter_Count |
4 אוקטטים | [in ms] מציין כמה פעמים הבקר נכנס למצב Rx ספציפי של BR/EDR. |
LE_Tx_Total_Time |
4 אוקטטים | [in ms] משך הזמן הכולל במצב LE specific Tx (שידור עבור ACL/BIS/CIS או תנועת פרסום של LE ). |
LE_Tx_State_Enter_Count |
4 אוקטטים | מציין כמה פעמים הבקר נכנס למצב קבלה ספציפי של BR/EDR. |
LE_Tx_Average_Power_Level |
1 octets | [in dBm] רמת הספק השידור הממוצעת של כל קישורי ה-LE. |
LE_Rx_Total_Time |
4 אוקטטים | [in ms] משך הזמן הכולל במצב LE specific Rx (קבלת נתונים מ-ACL/BIS/CIS או מתנועת סריקה של LE). |
LE_Rx_State_Enter_Count |
4 אוקטטים | [in ms] מציין כמה פעמים הבקר נכנס למצב Rx ספציפי של LE |
Report_Time_Duration (זמן כולל) |
4 אוקטטים | [in ms] משך הזמן הכולל לאיסוף מידע שקשור לצריכת חשמל. |
RX_Active_One_Chain_Time |
4 אוקטטים | [in ms] משך הזמן של RX פעיל בשרשרת אחת |
RX_Active_Two_Chain_Time |
4 אוקטטים | [in ms] משך הזמן של RX פעיל בשני שרשורים |
TX_iPA_Active_One_Chain_Time |
4 אוקטטים | [in ms] משך הזמן של פעילות TX פנימית בשרשרת אחת |
TX_iPA_Active_Two_Chain_Time |
4 אוקטטים | [in ms] משך הזמן של פעילות TX פנימית בשני שרשורים |
TX_ePA_Active_One_Chain_Time |
4 אוקטטים | [in ms] משך הזמן של שידור חיצוני פעיל בשרשרת אחת |
TX_ePA_Active_Two_Chain_Time |
4 אוקטטים | [in ms] משך הזמן של שידור חיצוני פעיל בשני שרשורים |
BREDR_RX_Active_Scan_total_Time |
4 אוקטטים | [באלפיות השנייה] משך הזמן (באלפיות השנייה) של זמן הפעילות של קבלת נתונים בסריקת BR/EDR |
LE_RX_Active_Scan_total_Time |
4 אוקטטים | [in ms] Time period (ms) on LE scan RX active time |
קוד אירוע משנה = 0x58 [Quality_Report_Id = 0x09~0x0A, אירוע נתונים סטטיסטיים של RF מתקדם]
האירוע Bluetooth Advanced RF (Radio Frequency) Stats מספק מדדי ביצועים מפורטים לגבי התנהגות הרדיו של בקר ה-Bluetooth. יש שתי דרכים להפעיל את האירוע:
- לפי טריגר (0x09): דוח חד-פעמי נשלח בתגובה לפקודה ספציפית.
- לפי Monitor (0x0A): הבקר שולח דוחות באופן תקופתי במרווח זמן מוגדר.
הפרמטרים של האירוע הם בעצם מונים של מנות מידע שעוקבים אחרי התנהגויות שונות של רדיו במהלך תקופה מוגדרת.
מדדים מרכזיים והמטרה שלהם
- נתונים סטטיסטיים של עוצמת השידור: מוניטורים שמודדים מנות מידע שנשלחות באמצעות הגדרות שונות של עוצמת השידור, ומבחינים בין מגברי עוצמת שידור פנימיים (iPA) וחיצוניים (ePA) לבין מצבים שונים של גיוון אנטנות (Div) או של עיצוב אלומה (BF). כך אפשר לקבוע אילו הגדרות של עוצמת האות והאנטנה נמצאות בשימוש הכי תדיר.
- סלי RSSI (Received Signal Strength Indicator): הפרמטרים האלה מסווגים מנות שהתקבלו על סמך עוצמת האות שלהן. הדוח מספק תמונה ברורה של איכות הקישור, באמצעות ספירת החבילות בטווחים ספציפיים של RSSI (למשל, פחות מ-90- dBm, 70- עד 75- dBm). מספר גבוה של נקודות בטווחים של קליטה חלשה (לדוגמה, < -90 dBm) מצביע על חיבור גרוע.
- דלתא של RSSI: המדד הזה מודד את ההבדל בעוצמת האות בין שתי האנטנות הקולטות (אם רלוונטי). המונים עוקבים אחרי מספר החבילות עם דלתא של RSSI בטווחים שונים. דלתא גדולה (למשל, >11 dBm) יכולה להצביע על הפרעה או על חסימה פיזית, כי אנטנה אחת מקבלת אות חזק בהרבה מהאנטנה השנייה.
- החלפת אנטנות ושידור חוזר: בדוח מפורט כמה פעמים הבקר מחליף בין האנטנות, ומתבצע מעקב אחרי מנות שמשודרות מחדש (ReTX). מספר גבוה של שידורים חוזרים מצביע בדרך כלל על חיבור חלש או לא אמין, שדורש שליחה מחדש של חבילות.
- איכות הערוץ: הפרמטרים האלה מספקים סיכום ברמה גבוהה של תקינות ערוצי תקשורת שונים, ומסווגים אותם כ'טובים', 'בסדר', 'גרועים' או 'גרועים מאוד' על סמך ה-RSSI שלהם. כך אפשר לקבל סקירה כללית מיידית של סביבת ה-RF.
- תור במאגר נתונים זמני (buffer queue) של שידור (TX): בקטע הזה אפשר לעקוב אחרי מספר החבילות שממתינות במאגר הזמני של השידור של הבקר עבור סוגים שונים של קישורים, כמו ACL (קישור לוגי אסינכרוני מבוסס-חיבור), LECONN (חיבור LE) ו-LEISOC (איזו-כרוני LE). מספרים גבוהים של מאגרים זמניים יכולים להעיד על צוואר בקבוק או על בעיה בזרימת הנתונים מהמארח לבקר.
| פרמטר של אירוע משני | גודל | מטרה |
|---|---|---|
Quality_Report_Id |
אוקטט אחד | 0x09: נתונים סטטיסטיים מתקדמים של RF לפי טריגר 0x0A: נתונים סטטיסטיים מתקדמים של RF לפי ניטור |
Extension_info |
אוקטט אחד | פרטי הגרסה של BQR. 0x01 ל-BQRv6 0x02 ל-BQRv7 |
Report_Time_Period |
4 אוקטטים | תקופת הזמן שבה נאסף מידע על הביצועים. יחידה: אלפיות השנייה |
TX_Power_iPA_BF |
4 אוקטטים | מונה חבילות של iPA BF |
TX_Power_ePA_BF |
4 אוקטטים | מונה חבילות של ePA BF |
TX_Power_iPA_Div |
4 אוקטטים | מונה מנות של ePA Div |
TX_Power_ePA_Div |
4 אוקטטים | מונה מנות של ePA Div |
RSSI_chain_50 |
4 אוקטטים | מונה מנות של שרשרת RSSI > -50 dBm |
RSSI_chain_50_55 |
4 אוקטטים | מונה מנות של שרשרת RSSI בין -50 dBm לבין >-55 dBm |
RSSI_chain_55_60 |
4 אוקטטים | מונה מנות של שרשרת RSSI בין -55 dBm לבין >-60 dBm |
RSSI_chain_60_65 |
4 אוקטטים | מונה מנות של שרשרת RSSI בין -60 dBm לבין >-65 dBm |
RSSI_chain_65_70 |
4 אוקטטים | מונה מנות של שרשרת RSSI בין -65 dBm לבין >-70 dBm |
RSSI_chain_70_75 |
4 אוקטטים | מונה מנות של שרשרת RSSI בין -70 dBm לבין >-75 dBm |
RSSI_chain_75_80 |
4 אוקטטים | מונה מנות של שרשרת RSSI בין -75 dBm לבין >-80 dBm |
RSSI_chain_80_85 |
4 אוקטטים | מונה מנות של שרשרת RSSI בין -80 dBm לבין >-85 dBm |
RSSI_chain_85_90 |
4 אוקטטים | מונה מנות של שרשרת RSSI בין -85 dBm לבין >-90 dBm |
RSSI_chain_90 |
4 אוקטטים | מונה המנות של שרשרת RSSI < -90 dBm |
RSSI_delta_2 |
4 אוקטטים | מונה מנות של דלתא RSSI < 2 dBm |
RSSI_delta_2_5 |
4 אוקטטים | מונה מנות של דלתא RSSI בין 2dBm ל-5dBm |
RSSI_delta_5_8 |
4 אוקטטים | מונה מנות של דלתא RSSI בין 5dBm ל-8dBm |
RSSI_delta_8_11 |
4 אוקטטים | מונה מנות של דלתא RSSI בין 8 dBm ל-11 dBm |
RSSI_delta_11 |
4 אוקטטים | מונה מנות של דלתא RSSI > 11 dBm |
Antenna_Switch_Count |
4 אוקטטים | מונה המנות של אירוע החלפת האנטנה |
ReTX_iPA_BF |
4 אוקטטים | מונה המנות של ReTX_iPA_BF בתקופת הזמן האחרונה |
ReTX_ePA_BF |
4 אוקטטים | מונה המנות של ReTX_ePA_BF בתקופת הזמן האחרונה |
ReTX_iPA_Div |
4 אוקטטים | מונה המנות של ReTX_iPA_Div בתקופת הזמן האחרונה |
ReTX_ePA_Div |
4 אוקטטים | מונה המנות של ReTX_ePA_Div בתקופת הזמן האחרונה |
Channel_count_Good |
1 octets | מספר הערוצים שערך ה-RSSI שלהם נמוך מ-Bin-1 (<-90) |
Channel_count_OK |
1 octets | מספר הערוצים שערך ה-RSSI שלהם נמצא בטווח של Bin-2 (-90~-76) |
Channel_count_Bad |
1 octets | מספר הערוצים שעוצמת האות שלהם (RSSI) נכללת בטווח של Bin-3 (-76~-50) |
Channel_count_VeryBad |
1 octets | מספר הערוצים שערך ה-RSSI שלהם נכלל בטווח Bin-4 (>-50) |
TX_buffer_Queue_Count |
4 אוקטטים | מונה של סטטוס תור במאגר נתונים זמני (buffer queue) – מאגר נתונים זמני (buffer) TX של בקר בטווח הזמן האחרון [0:3] ACL_1 [4:7] ACL_2 [8:11] LECONN_1 [12:15] LECONN_2 [16:19] LEISOC_1 [20:23] LEISOC_2 [24:27] LEBroadcast [28:31] rsvd |
קוד אירוע משני = 0x58 [Quality_Report_Id = 0x0B~0x0C, אירוע מעקב אחר תקינות הבקר]
האירוע 'מעקב אחר תקינות בקר Bluetooth' מספק סיכום של הסטטוס התפעולי של הבקר. יש שתי דרכים להפעיל את האירוע:
- לפי טריגר (0x09): דוח חד-פעמי נשלח בתגובה לפקודה ספציפית.
- לפי Monitor (0x0A): הבקר שולח דוחות באופן תקופתי במרווח זמן מוגדר.
האירוע 'מעקב אחר תקינות של בקר Bluetooth' הוא כלי אבחון שמספק סיכום של סטטוס הפעולה של הבקר. האירוע הזה הוא חלק ממסגרת דוח איכות ה-Bluetooth (BQR), והוא משמש לניפוי באגים בקישוריות, בניהול צריכת החשמל ובבעיות תזמון. אפשר לשלוח אותו כדוח חד-פעמי או באופן תקופתי כדי לספק מעקב רציף.
מדדים מרכזיים והמטרה שלהם
- HCI Packet Counters: האירוע עוקב אחרי המספר הכולל של חבילות הנתונים שנשלחו מהמארח לבקר ולהפך. המונים האלה חיוניים לניפוי באגים בשינוע של ממשק בקר המארח (HCI), שהוא ערוץ התקשורת בין מחסנית התוכנה לבין שבב בקר ה-Bluetooth.
- Packet Lengths: The event reports the length of the last HCI packet sent and received. כך אפשר לוודא שהנתונים מועברים בצורה נכונה ושאין בעיות לא צפויות בגודל.
- מספר אותות ההפעלה: הדוח כולל את המספר הכולל של הפעמים שבהן הוצהרו הפינים BT_Wake ו-HOST_Wake. האותות הפיזיים האלה חשובים מאוד לניהול צריכת החשמל, כי הם משמשים להוצאת הישויות הרלוונטיות ממצבים של צריכת חשמל נמוכה. מעקב אחרי המספרים האלה עוזר לנפות באגים בבעיות שקשורות להפעלה, כמו התעוררויות לא צפויות או כשלים בכניסה למצב שינה.
- חותמות זמן: האירוע מספק כמה חותמות זמן, כולל הזמן של אות ההפעלה האחרון ושל האיפוס האחרון של HCI. חותמות הזמן האלה עוזרות לפתור בעיות שקשורות לתזמון, ומספקות נקודת התייחסות לזמן שבו התרחשו אירועים מסוימים.
- טיימר Watchdog: דגל ספציפי מציין אם האירוע נוצר כאזהרה מוקדמת לכך שטיימר Watchdog של הבקר עומד לפוג. זו התראה קריטית לגבי קפיאות או תקלות אפשריות בבקר.
- סטטוס הקישור: בדוח מופיע סיכום של המצב הנוכחי של חיבורים פעילים, כולל המספר הכולל של קישורי BR/EDR, LE ו-CIS (Connected Isochronous Stream). הוא גם מציין אם יש קישורי SCO (Synchronous Connection-Oriented) פעילים. המידע הזה מספק תמונת מצב של עומס החיבור הנוכחי של הבקר.
| פרמטר של אירוע משני | גודל | מטרה |
|---|---|---|
Quality_Report_Id |
1 אוקטט | 0xB~0xC 0x0B: דוחות חד-פעמיים או דוחות שמופעלים על ידי אירועים 0x0C: דוחות תקופתיים. |
Packet_Count_Host_to_Controller |
4 אוקטטים | המספר הכולל של חבילות שנשלחו מהמארח לבקר דרך HCI transport. השדה הזה משמש לניפוי באגים ב-HCI (לדוגמה, UART). התנהגות: המונים מתאפסים כשהבקר מקבל איפוס HCI. |
Packet_Count_Controller_to_Host |
4 אוקטטים | המספר הכולל של חבילות נתונים של אירועי HCI שנשלחו למארח. השדה הזה משמש למטרת ניפוי באגים ב-HCI (למשל, UART). התנהגות: המונים מתאפסים כשהבקר מקבל איפוס HCI. |
Last_Packet_Length_Host_to_Controller |
2 אוקטטים | האורך של חבילת ה-HCI האחרונה שנשלחה אל Host UART. הערה: האורך המקסימלי של מנות HCI הוא 2 אוקטט (כולל HCI, ACL, SCO, ISO) |
Last_Packet_Length_Controller_To_host |
2 אוקטטים | אורך חבילת ה-HCI האחרונה שהתקבלה מ-Host UART. הערה: האורך המקסימלי של מנות HCI הוא 2 אוקטט (כולל HCI, ACL, SCO, ISO) |
Total_BT_Wake_Count |
4 אוקטטים | הספירה המצטברת של הצהרות על פינים של BT_Wake לפי ישות המארח. השדה הזה משמש ככלי אבחון לניפוי באגים בבעיות שקשורות להפעלה. התנהגות: המונים מתאפסים כשהבקר מקבל איפוס של HCI. |
Total_HOST_Wake_Count |
4 אוקטטים | חישוב מצטבר של הצהרות על נעצים מסוג Host_Wake שהופעלו על ידי הבקר. השדה הזה משמש ככלי אבחון לניפוי באגים בבעיות שקשורות להפעלה. התנהגות: המונים מתאפסים כשהבקר מקבל איפוס HCI. |
Last_BT_Wake_TimeStamp |
4 אוקטטים | חותמת הזמן האחרונה שבה המארח אישר את פין ההפעלה של ה-BT.השדה הזה מיושם למטרת ניפוי באגים בבעיות שקשורות להספק. |
Last_HOST_Wake_TimeStamp |
4 אוקטטים | חותמת הזמן האחרונה שבה הבקר הפעיל את הפין Host_Wake. השדה הזה משמש לניפוי באגים של בעיות שקשורות להספק. |
Reset_Timestamp |
4 אוקטטים | חותמת זמן שמציינת את השלמת האיפוס האחרון של HCI. השדה הזה משמש אך ורק כדי לפתור בעיות שקשורות לתזמון. היא צריכה לשמש כנקודת ההקלטה הראשונית שביחס אליה מתייחסים לכל הפריטים האחרים. |
Current_Timestamp |
4 אוקטטים | השעה הנוכחית שבה האירוע הזה נוצר. השדה הזה משמש לפתרון בעיות שקשורות להבדלים בתזמון. הוא צריך לשמש כנקודת הטריגר לתיעוד שכל הרכיבים האחרים מפנים אליה. |
Is_WatchDog_Timer_About_To_Expire |
4 אוקטטים | דגל שמציין שאירוע הסטטוס הזה נוצר על ידי הבקר כאזהרה מוקדמת על תפוגה של כלב שמירה. חותמת הזמן הנוכחית מציינת את השעה שבה האירוע התרחש. |
Coex_Status_Mask |
2 אוקטטים | ביט 0 – שמור |
Total_Links_BR_EDR_LE_Active |
1 אוקטט | המספר הכולל של קישורי BR/EDR/LE במצב פעיל. |
Total_Links_BR_EDR_Sniff |
1 אוקטט | מספר הקישורים הכולל של BR/EDR במצב Sniff/Idle. |
Total_Links_CIS |
1 אוקטט | המספר הכולל של הקישורים ב-ISO. |
Is_SCO_Active |
1 אוקטט | אינדיקטור לבדיקה אם קישור ה-SCO מופעל כרגע. |
קוד אירוע משנה = 0x58 [Quality_Report_Id = 0x11 ~ 0x13, אירוע שקשור ל-Log Dump]
| פרמטר של אירוע משנה | גודל | מטרה |
|---|---|---|
Quality_Report_Id |
אוקטט אחד |
0x00 עד 0x10: שמור. 0x11: מעקב אחר הודעות LMP/LL. 0x12: מעקב אחר תזמון של Bluetooth Multi-link/Coex. 0x13: העתקת נתונים של מידע על תוצאות ניפוי הבאגים של הבקר. 0x14 ~ 0xFF: שמור. |
Connection_Handle |
2 אוקטטים | נקודת אחיזה של החיבור. |
| פרמטר ספציפי לספק | (Parameter Total Length - 4) * octets | פורמט ספציפי לספק של מעקב אחר הודעות LMP, מעקב אחר תזמון של Bluetooth Multi-link/Coex ופריקת נתונים של מידע על ניפוי באגים בבקר. |
אירוע משנה של משוב על קישור ISO
קוד אירוע משנה = 0x5C
כשמפעילים את האירוע הזה, חובה ליצור אותו במהלך כל מרווח זמן לפי תקן ISO.
הפעלה
ההפעלה מתבצעת על ידי בחירת קוד הספקData_Path_ID 0x19 בפקודה הרגילה HCI_LE_Setup_ISO_Data_Path.
פקודת HCI_Configure_Data_Path עם הערך Data_Path_ID שמוגדר ל-0x19 והערך Vendor_Specific_Config_Length שמוגדר ל-0 חייבת להתקבל, גם אם לא צפויה פעולה מצד הבקר עם קבלת הפקודה הזו.
נקודת זמן של שליחת המוצר
האירוע מתרחש מתחילת מרווח ISO (נקודת עיגון CIG או BIG) ועד למרווח ה-ISO הבא. הבקר מציין את העיכוב בהתחלה בפועל של מרווח הזמן לפי תקן ISO באמצעותAnchor_Point_Delay.
סנכרון של בקרים
בתחילת מרווח זמן לפי ISO, הבקר מחשב את StreamSN על ידי הגדלת הערך הנוכחי ב-ISO_Interval ÷ SDU_Interval שהוגדר. במרווח הזמן הראשון, הערך הזה מאותחל ל-0.לאחר מכן, לכל מנה בתור FIFO של ISO, חלים התנאים הבאים:
-
הבקר מחשב את ההפרש SNdiff בין שני מספרי הרצף:
SNdiff = (SDUSN - StreamSN + 0x10000) mod 0x10000 - כאשר
(SNdiff + (FT-1) × ISO_Interval ÷ SDU_Interval) mod 0x10000 <= (FT-1) × ISO_Interval ÷ SDU_Interval:
החבילה נמצאת בחלון השידור מחדש. היא הייתה אמורה להיות מתוזמנת לשידור במרווחים הקודמים ועכשיו היא זמינה לשידור חוזר. אם זה לא המקרה (ההעברה לא תוכננה), המשמעות היא שההעברה התקבלה באיחור. צריך להעביר את המידע הזה למארח באמצעות התגIn_Status. אפשר להשליך את המנות האלה או לתזמן את השידור שלהן. הבחירה תלויה בהטמעה. - או כשמתרחש
SNdiff < ISO_Interval ÷ SDU_Interval:
החבילה מתוזמנת לשידור מהאירוע הזה עד שתפוג ההמתנה לניקוי המאגר. - או כשהתנאים
SNdiff >= ISO_Interval ÷ SDU_Intervalו-SNdiff <= Max_Forward_Buffersמתקיימים:
החבילה היא עתידית; היא תועבר עם אירוע עוקב. המנות נשלחות לפי הסדר, ולכן התנאי הזה מסיים את החיפוש של מנות למרווח הזמן הזה.
המאגרי נתונים הזמניים שבהם משתמש המארח לא מועברים לבקר, אבל הם מוגבלים ל-Max_Forward_Buffers = 16. - או אם אף אחד מהתנאים שלמעלה לא מתקיים:
המנה נפסלת, חלף הזמן הקצוב לתפוגה הגיע או שהתקבלה מנה פגומה.
| פרמטר של אירוע משני | גודל | מטרה |
|---|---|---|
Connection_Handle |
2 אוקטטים |
ה-handle של החיבור ב-CIS או ב-BIS הטווח: 0x0000 עד 0x0EFF |
Sequence_Number |
2 אוקטטים |
מספר הרצף של הזרם, שמנוהל על ידי הבקר. הערך ההתחלתי הוא 0 כשיוצרים את ה-CIS או ה-BIS, והוא גדל במספר ה-SDU במרווח הזמן האיזו-כרוני של ISO, שמוגדר כ- ISO_interval ÷ SDU_Interval,
בכל מרווח זמן של ISO.
|
Anchor_Point_Delay |
2 אוקטטים |
העיכוב במיקרו-שניות בין יצירת האירוע לבין נקודת העיגון האפקטיבית של BIG או CIG
או תחילת המרווח לפי ISO.
חותמת הזמן האפקטיבית של נקודת העוגן מוגדרת לפי:Event generation time - Anchor_Point_Delay
Range: 0 to ISO interval in microseconds |
In_Status |
2 אוקטטים |
מצב המאגר של בקר ISO בתחילת מרווח ISO, כל ביט bi מוגדר כשה-SDU (Sequence_Number + i) mod 0x10000 זמין. אם ה-SDU לא זמין, הוא מזוהה כ-Not received from the host.הערך i נע בין 0 ל- ISO_Interval ÷ SDU_Interval - 1.
לערכים אחרים של i, הביטים מוגדרים כ-0.
|
Tx_Status |
2 אוקטטים |
סטטוס השידור, ביחס ל-SDU עם מספרים סידוריים:(Sequence_Number - Flush_Timeout × ISO_Interval ÷ SDU_Interval + i + 0x10000)
mod 0x10000
כל ביט bi מוגדר כשכל יחידות ה-PDU של יחידת ה-SDU שזוהתה, לפי מספר הרצף שלה, הועברו בהצלחה ואושרו. הערך i נע בין 0 ל- ISO_Interval ÷ SDU_Interval - 1.
לערכים אחרים של i, הביטים מוגדרים כ-0.בקבוצת שידור, תמיד אמורה להתקבל אינדיקציה שהשידור התקבל. |
תמיכה בכמה מפרסמים
היעדים של התמיכה בכמה מפרסמים הם:
-
אפשרות לתמוך בכמה מודעות
(
max_advt_instances) - הספק שידור שונה כדי לאפשר טווח משתנה
- תוכן פרסומי שונה
- תשובה מותאמת אישית לכל מפרסם
- פרטיות (לא ניתן למעקב) לכל מפרסם
- ניתן לחיבור
כדי שהמפרט הזה יהיה קרוב לסטנדרטים קיימים, סיפקנו את הפקודות הבאות שספציפיות לספקים. הם נגזרים מהמפרט של Bluetooth Core 4.1.
LE_Multi_Advt_Command
OCF: 0x154
| פרמטר של פקודה | גודל | מטרה |
|---|---|---|
Multi_advt_opcode |
אוקטט אחד |
0x01 – Set_Advt_Param_Multi_Sub_Cmd0x02 – Set_Advt_Data_Multi_Sub_Cmd0x03 – Set_Scan_Resp_Data_Multi_Sub_Cmd0x04 – Set_Random_Addr_Multi_Sub_Cmd0x05 – Set_Advt_Enable_Multi_Sub_Cmd
|
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
Multi_advt_opcode |
אוקטט אחד |
0x01 – Set_Advt_Param_Multi_Command0x02 – Set_Advt_Data_Multi_Command0x03 – Set_Scan_Resp_Data_Multi_Command0x04 – Set_Random_Addr_Multi_Command0x05 – Set_Advt_Enable_Multi_Command
|
LE_Multi_Advt_Command: Set_Advt_Param_Multi_Sub_Cmd
הפניה לבסיס: Bluetooth Core 4.1 Specification, page 964 (LE Set Advertising Parameter Command)
Sub OCF: 0x01
| פרמטר של פקודת משנה | גודל | מטרה |
|---|---|---|
Advertising_Interval_Min |
לפי מפרט | לפי מפרט |
Advertising_Interval_Max |
לפי מפרט | לפי מפרט |
Advertising_Type |
לפי מפרט | לפי מפרט |
Own_Address_Type |
לפי מפרט | לפי מפרט |
Own_Address |
לפי מפרט | לפי מפרט |
Direct_Address_Type |
לפי מפרט | לפי מפרט |
Direct_Address |
לפי מפרט | לפי מפרט |
Advertising_Channel_Map |
לפי מפרט | לפי מפרט |
Adverstising_Filter_Policy |
לפי מפרט | לפי מפרט |
Advertising_Instance |
אוקטט אחד | מציין את תחולת הפרמטרים שלמעלה על מופע |
Tx_power |
אוקטט אחד |
Transmit_Power יחידה – ב-dBm (מספר שלם עם סימן) טווח (-70 עד +20) |
הפרמטר Own_Address יכול להיות כתובת שהוגדרה על ידי המארח בזמן ההגדרה של המופע הזה של כמה מודעות. הפעולה הזו מאפשרת להקצות כתובת פרטית שניתנת לפתרון בזמן השידור של האות הראשון. הפרסום במופע יימשך ללא קשר לחיבור. מערך ה-BT של המארח יכול להנפיק פקודה כדי להתחיל פרסום במופע, אחרי החיבור.
אירוע Command Complete ייווצר עבור הפקודה הזו, כפי שמצוין במפרט Bluetooth Core 4.1, בהתאם לפקודה שלמעלה. הבקר יגיב עם קוד שאינו מציין הצלחה (פרמטר לא תקין) אם מופע הפרסום או הפרמטרים של Tx_Power לא תקינים.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
Multi_advt_opcode |
אוקטט אחד | 0x01 [Set_Advt_Param_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd
הפניה לבסיס: Bluetooth Core 4.1 Specification, page 969 (LE Set Advertising Data Command)
Sub OCF: 0x02
| פרמטר של פקודת משנה | גודל | מטרה |
|---|---|---|
Advertising_Data_Length |
לפי מפרט | לפי מפרט |
Advertising_Data |
לפי מפרט | לפי מפרט |
Advertising_Instance |
אוקטט אחד | מציין את תחולת הפרמטרים שלמעלה על מופע |
אירוע Command Complete ייווצר עבור הפקודה הזו, כפי שמצוין במפרט Bluetooth Core 4.1, בהתאם לפקודה שלמעלה. הבקר יגיב עם קוד שאינו קוד הצלחה אם מופע הפרסום או הפרמטרים של Tx_Power לא תקינים.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
Multi_advt_opcode |
אוקטט אחד | 0x02 [Set_Advt_Data_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd
הפניה לבסיס: Bluetooth Core 4.1 Specification, page 970 (LE Set Scan Response Data Command)
Sub OCF: 0x03
| פרמטר של פקודת משנה | גודל | מטרה |
|---|---|---|
Scan_Response_Data_Length |
לפי מפרט | לפי מפרט |
Scan_Response_Data |
לפי מפרט | לפי מפרט |
Advertising_Instance |
אוקטט אחד | מציין את תחולת הפרמטרים שלמעלה על מופע |
אירוע Command Complete ייווצר עבור הפקודה הזו, כפי שמצוין במפרט Bluetooth Core 4.1, בהתאם לפקודה שלמעלה. הבקר יגיב עם קוד שאינו קוד הצלחה (פרמטר לא תקין) אם מופע הפרסום או הפרמטרים של Tx_Power לא תקינים.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
Multi_advt_opcode |
אוקטט אחד | 0x03 [Set_Scan_Resp_Data_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd
הפניה לבסיס: Bluetooth Core 4.1 Specification, page 963 (LE Set Random Address Command)
Sub OCF: 0x04
| פרמטר של פקודת משנה | גודל | מטרה |
|---|---|---|
| כתובת אקראית | לפי מפרט | לפי מפרט |
Advertising_Instance |
אוקטט אחד | מציין את תחולת הפרמטרים שלמעלה על מופע |
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
Multi_advt_opcode |
אוקטט אחד | 0x04 [Set_Random_Addr_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd
הפניה לבסיס: Bluetooth Core 4.1 Specification, page 971 (LE Set Advertise Enable Command in that core specification)
OCF: 0x05
| פרמטר של פקודת משנה | גודל | מטרה |
|---|---|---|
Advertising_Enable |
אוקטט אחד | הערך 1 מציין הפעלה. כל ערך אחר משמעותו השבתה. |
Advertising_Instance |
אוקטט אחד | מציין את הרלוונטיות של הפרמטרים שלמעלה למופע. מכונה 0 היא מכונת HCI רגילה. |
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
Multi_advt_opcode |
אוקטט אחד | 0x05 [Set_Advt_Enable_Multi_Sub_Cmd] |
העברת ההחלטה לגבי כתובת פרטית
התכונה הזו פותרת כתובת פרטית בקושחה או בחומרה של הבקר, ומספקת את היתרונות הבאים:
- השהייה שקשורה למארח בפענוח כתובת פרטית
- חיסכון בחשמל על ידי מניעת הפעלה של המארח
LE_Set_RPA_Timeout
OCF: 0x15C
| פרמטר של פקודה | גודל | מטרה |
|---|---|---|
LE_local_IRK |
16 אוקטטים | ה-IRK של המכשיר המקומי שמשמש ליצירת כתובות אקראיות שניתנות לזיהוי. |
tRPA_min |
2 אוקטטים |
הזמן הקצוב המינימלי ליצירת RPA בשניות. הבקר צריך ליצור כתובות חדשות שניתנות לפתרון לכל אירועי הפרסום, הסריקה או החיבור שמתרחשים במהלך זמן קצוב לתפוגה זה או אחריו. הטווח התקין: 300-1800 |
tRPA_max |
2 אוקטטים |
הזמן הקצוב המקסימלי ליצירת RPA בשניות. הבקר צריך ליצור כתובות חדשות שניתנות לפתרון לכל אירועי הפרסום, הסריקה או החיבור, עד לזמן הקצוב לתפוגה הזה. הטווח התקין: tRPA_min-1800
|
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד |
הסטטוס של הפקודה. ערכי הסטטוס המומלצים של HCI: 0x00 Success 0x01 Unknown command (if not supported) 0x12 Invalid command parameters (if any parameters are outside the given range) |
LE_RPA_offload_Command
OCF: 0x155
| פרמטר של פקודה | גודל | מטרה |
|---|---|---|
RPA_offload_opcode |
אוקטט אחד |
0x1 – הפעלת תכונה ספציפית ללקוח 0x2 – הוספת IRK לרשימה 0x3 – הסרת IRK מהרשימה 0x4 – ניקוי רשימת IRK 0x5 – קריאת רשומה ברשימת IRK |
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
Event_RPA_offload_opcode |
אוקטט אחד |
0x1 – הפעלת תכונה ספציפית ללקוח 0x2 – הוספת IRK לרשימה 0x3 – הסרת IRK מהרשימה 0x4 – ניקוי רשימת IRK 0x5 – קריאת רשומה ברשימת IRK |
LE_RPA_offload: Enable_cust_specific_sub_Command
Sub OCF: 0x01
| פרמטר של פקודת משנה | גודל | מטרה |
|---|---|---|
enable_customer_specific_feature_set |
אוקטט אחד |
0x01 – הפעלת התכונה של RPA עם הורדת עומס 0x00 – השבתת התכונה של RPA עם הורדת עומס |
המארח צריך להפעיל את העברת העומס של RPA על סמך יכולת השבב. מידע נוסף מפורט בLE_Get_Vendor_Capabilities_Command.
לכל שבב יכול להיות max_irk_list_sz שונה בקושחה.
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
Event_cust_specific_feature_opcode |
אוקטט אחד | 0x01 [הפעלת תכונה ספציפית ללקוח] |
LE_RPA_offload: Add_IRK_to_list_sub_Command
Sub OCF: 0x02
| פרמטר של פקודת משנה | גודל | מטרה |
|---|---|---|
LE_IRK |
16 אוקטטים | LE IRK (הבייט הראשון LSB) |
Address_Type |
אוקטט אחד |
0: כתובת ציבורית 1: כתובת אקראית |
LE_Device_Address |
6 אוקטטים | כתובת ציבורית או אקראית שמשויכת ל-IRK (הבייט הראשון LSB) |
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
Event_cust_specific_feature_opcode |
אוקטט אחד | 0x02 [Add IRK to the list] |
LE_IrkList_AvailableSpaces |
אוקטט אחד | רשומות ברשימת ה-IRL שזמינות אחרי הפעולה הנוכחית |
LE_RPA_offload: Remove_IRK_to_list_sub_Command
Sub OCF: 0x03
| פרמטר של פקודת משנה | גודל | מטרה |
|---|---|---|
Address_Type |
אוקטט אחד |
0: כתובת ציבורית 1: כתובת אקראית |
LE_Device_Address |
6 אוקטטים | כתובת ציבורית או אקראית שמשויכת ל-IRK |
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
Event_cust_specific_feature_opcode |
אוקטט אחד | 0x03 [הסרת IRK מהרשימה] |
LE_IrkList_AvailableSpaces |
אוקטט אחד | רשומות ברשימת ה-IRL שזמינות אחרי הפעולה הנוכחית |
LE_RPA_offload: Clear_IRK_list_sub_Command
Sub OCF: 0x04
| פרמטר של פקודת משנה | גודל | מטרה |
|---|---|---|
| ללא |
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
Event_cust_specific_feature_opcode |
אוקטט אחד | 0x04 [מחיקת רשימת מפתחות ה-IRK] |
LE_IrkList_AvailableSpaces |
אוקטט אחד |
רשומות ברשימת ה-IRL שזמינות אחרי הפעולה הנוכחית [max_irk_list_sz]
|
LE_RPA_offload: Read_IRK_list_sub_Command
Sub OCF: 0x05
| פרמטר של פקודת משנה | גודל | מטרה |
|---|---|---|
LE_read_IRK_list_entry-index |
אוקטט אחד | אינדקס של רשימת ה-IRK [0, max_irk_list_sz-1] |
אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.
| פרמטר החזרה | גודל | מטרה |
|---|---|---|
Status |
אוקטט אחד | הסטטוס Command Complete |
Event_cust_specific_feature_opcode |
אוקטט אחד | 0x05 [Read IRK List Entry] |
LE_Read_IRK_List_entry |
אוקטט אחד | אינדקס של ה-IRK שהמארח רוצה לקרוא בחזרה (הגודל המקסימלי של רשימת ה-IRK הוא 32) |
LE_IRK |
16 אוקטטים | ערך IRK |
Address_Type |
אוקטט אחד |
0: כתובת ציבורית 1: כתובת אקראית |
LE_Device_Address |
6 אוקטטים | כתובת ציבורית או אקראית שמשויכת ל-IRK |
LE_Resolved_Private_Address |
6 אוקטטים | כתובת פרטית נוכחית שניתן לפתור את הבעיה שלה ב-IRK הזה |
Sniff Offload
התכונה Sniff Offload מעבירה את הניהול של מצב Sniff ממקבץ הפיצ'רים של מארח Bluetooth לבקר Bluetooth. כך בקר יכול לנהל את התזמון של הכניסה למצב Sniff או היציאה ממנו, ולהחיל פרמטרים של Sniff ושל Sniff sub-rating שניתנים להגדרה, בזמן שהמארח שומר על השליטה בבחירת הפרמטרים על סמך שינויים בפעילות של פרופיל Bluetooth.
מצבי Sniff Offload
בקטע הזה מוגדרים המצבים בבקר Bluetooth בהקשר של הפונקציה Sniff Offload. הוגדרו שני מצבים גלובליים כדי לזהות את הסטטוס של בקר Bluetooth ביחס להפעלת Sniff Offload. הוגדרו שני מצבים ספציפיים לחיבור כדי לזהות את הסטטוס של חיבור BR/EDR כשהבקר של Bluetooth נמצא במצב Sniff Offload Enabled.
מצבים גלובליים
הוגדרו שני מצבים גלובליים כדי לזהות את הסטטוס של בקר Bluetooth ביחס להפעלת Sniff Offload.
מצב Sniff Offload מושבת
בקר Bluetooth נחשב כברירת מחדל במצב 'Sniff Offload מושבת'. הבקר של Bluetooth אמור לטפל בפקודות HCI_Sniff_Mode, HCI_Exit_Sniff_Mode ו-HCI_Sniff_Subrating שמונפקות ממארח Bluetooth. בקר ה-Bluetooth צריך להעביר גם את האירועים HCI_Mode_Change ו-HCI_Sniff_Subrating למארח Bluetooth בהתאם למסכת האירועים שהוגדרה על ידי מארח ה-Bluetooth.
מצב Sniff Offload מופעל
בקר Bluetooth נחשב במצב Sniff Offload Enabled (העברת נתונים ל-Sniff Offload מופעלת) אחרי שהוא טיפל בהצלחה ב-WriteSniffOffloadEnable כדי להפעיל את Sniff Offload. במצב הזה, בקר ה-Bluetooth אמור להעביר את האירועים HCI_Mode_Change ו-HCI_Sniff_Subrating למארח Bluetooth, בהתאם להחלטה של פונקציית AND לוגית של מסכת האירועים שהוגדרה על ידי מארח ה-Bluetooth ודגלי דיכוי האירועים.
מצבים ספציפיים לחיבור
כשבקר Bluetooth נמצא במצב Sniff Offload Enabled, כל ACL פעיל יכול להיות באחד משני המצבים שמתוארים בהמשך.
מצב המתנה לפרמטר
רשימת ACL נחשבת במצב Pending-Parameters (המתנה לפרמטרים) כשהבקר של Bluetooth נמצא במצב Sniff Offload Enabled (העברת נתונים ב-Sniff מופעלת), אבל פקודה ספציפית של ספק WriteSniffOffloadParameters לא הונפקה לפחות פעם אחת על ידי מארח ה-Bluetooth עבור רשימת ה-ACL הנוכחית.
מצב בקר הופעל
רשימת ACL נחשבת במצב Control-Started אם בקר ה-Bluetooth נמצא במצב Sniff Offload Enabled, והפקודה WriteSniffOffloadParameters הספציפית לספק הונפקה לפחות פעם אחת על ידי מארח ה-Bluetooth עבור רשימת ה-ACL הנוכחית.
WriteSniffOffloadEnable
OCF: 0x310
| פרמטר של פקודה | גודל | מטרה |
|---|---|---|
Enable_Sniff_Offload |
אוקטט אחד | 0x00 : השבתה 0x01 : הפעלה |
Subrating_Max_Latency |
2 אוקטטים | הפרמטר Maximum Latency (זמן האחזור המקסימלי) ישמש לחישוב קצב הדגימה המקסימלי שבו המכשיר המרוחק יכול להשתמש. ברירת מחדל: זמן האחזור T*sniff* = N × 0.625 ms (משבצת אחת של פס בסיס) טווח: 0x0002 עד 0xFFFE טווח זמן: 1.25 ms עד 40.9 s |
Subrating_Min_Remote_Timeout |
2 אוקטטים | הזמן הקצוב לתפוגה המינימלי (T*sniff_mode_timeout*) במצב חיפוש, שבו המכשיר שמחובר לרשת אחרת יכול להשתמש ברירת מחדל: 0x0000 הזמן הקצוב לתפוגה = N × 0.625 ms (משבצת אחת של פס בסיס) טווח: 0x0000 עד 0xFFFE זמן טווח: 0 שניות עד 40.9 שניות |
Subrating_Min_Local_Timeout |
2 אוקטטים | זמן קצוב לתפוגה מינימלי במצב סניפר (T*sniff_mode_timeout*) שבו המכשיר המקומי יכול להשתמש. ברירת מחדל: 0x0000 זמן קצוב לתפוגה = N × 0.625 ms (משבצת אחת של פס בסיס) טווח זמן: 0x0000 עד 0xFFFE טווח זמן טווח: 0 שניות עד 40.9 שניות |
Suppress_Mode_Change_Event |
אוקטט אחד | 0x00 : בקר ה-Bluetooth ידווח על אירוע HCI Mode_Change למארח, בכפוף להגדרה שנקבעה בפקודה HCI_Set_Event_Mask. 0x01 : בקר ה-Bluetooth לא ידווח על אירוע HCI Mode_Change למארח. |
Suppress_Sniff_Subrating_Event |
אוקטט אחד | 0x00 : בקר ה-Bluetooth ידווח על אירוע HCI Sniff_Subrating למארח
בכפוף להגדרה שנקבעה בפקודה HCI_Set_Event_Mask. 0x01 : בקר ה-Bluetooth לא ידווח על אירוע HCI Sniff_Subrating למארח. |
WriteSniffOffloadParameters
OCF: 0x311
| פרמטר של פקודה | גודל | מטרה |
|---|---|---|
Connection_Handle |
2 אוקטטים | נקודת אחיזה לחיבור ACL של BR/EDR באיכות 16 ביט. טווח: 0x0000 עד 0x0EFF |
Sniff_Max_Interval |
2 אוקטטים | – טווח מוגדר של Bluetooth SIG, שמשמש בדרך כלל לכניסה למצב Sniff. טווח: 0x0002 עד 0xFFFE; רק ערכים זוגיים תקפים. טווח חובה: 0x0006 עד 0x0540. זמן = N × 0.625 ms. טווח זמן: 1.25 ms עד 40.9 s – מקרים מיוחדים 0x0000 : משמש לבחירת מצב 'העברה פעילה' של Sniff-Offload. 0x0001 : משמש לבחירת מצב 'העדפה-פעילה' של Sniff-Offload. |
Sniff_Min_Interval |
2 אוקטטים | טווח: 0x0002 עד 0xFFFE; רק ערכים זוגיים הם חוקיים. טווח חובה: 0x0006 עד 0x0540 זמן = N × 0.625 ms טווח זמן: 1.25 ms עד 40.9 s |
Sniff_Attempts |
2 אוקטטים | מספר משבצות הזמן לקבלת פס בסיס לניסיון לריח. אורך = N × 1.25 ms טווח: 0x0001 עד 0x7FFF טווח זמן: 1.25 ms עד 40.9 s טווח חובה לבקר: 1 עד T*sniff* ÷ 2 |
Sniff_Timeout |
2 אוקטטים | מספר משבצות קליטת פס בסיס לזמן קצוב לתפוגה של הרחרחן. אורך = N × 1.25 ms טווח: 0x0000 עד 0x7FFF טווח זמן: 0 ms עד 40.9 s טווח חובה לבקר: 0 עד 0x0028 |
Link_Inactivity_Timeout |
2 אוקטטים | ערך הזמן הקצוב לתפוגה באלפיות השנייה. הטיימר של Link_Inactivity הופעל או אופס בכל עסקה של HCI-ACL. בסיום הטיימר הזה, הבקר יתחיל את הכניסה למצב Sniff. |
Subrating_Max_Latency |
2 אוקטטים | הפרמטר Maximum Latency (זמן האחזור המקסימלי) ישמש לחישוב קצב הדגימה המקסימלי שבו המכשיר המרוחק יכול להשתמש. ברירת מחדל: זמן האחזור T*sniff* = N × 0.625 ms (משבצת אחת של פס בסיס) טווח: 0x0002 עד 0xFFFE טווח זמן: 1.25 ms עד 40.9 s |
Subrating_Min_Remote_Timeout |
2 אוקטטים | הזמן הקצוב לתפוגה המינימלי (T*sniff_mode_timeout*) במצב חיפוש, שבו המכשיר שמחובר לרשת אחרת יכול להשתמש ברירת מחדל: 0x0000 הזמן הקצוב לתפוגה = N × 0.625 ms (משבצת אחת של פס בסיס) טווח: 0x0000 עד 0xFFFE זמן טווח: 0 שניות עד 40.9 שניות |
Subrating_Min_Local_Timeout |
2 אוקטטים | זמן קצוב לתפוגה מינימלי במצב סניפר (T*sniff_mode_timeout*) שבו המכשיר המקומי יכול להשתמש. ברירת מחדל: 0x0000 זמן קצוב לתפוגה = N × 0.625 ms (משבצת אחת של פס בסיס) טווח זמן: 0x0000 עד 0xFFFE טווח זמן טווח: 0 שניות עד 40.9 שניות |
Allow_Exit_Sniff_On_Rx |
אוקטט אחד | דגל לשליטה ביציאה ממצב Sniff בעסקה של HCI-ACL בכיוון קבלה. 0x00 : Do not exit sniff on Rx. 0x01 : Exit Sniff on Rx Receive-direction HCI-ACL is defined as ACL packet transmission from controller to host over HCI |
Allow_Exit_Sniff_On_Tx |
אוקטט אחד | דגל לשליטה ביציאה ממצב Sniff בעסקה של HCI-ACL בכיוון השידור. 0x00 : Do not exit sniff on Tx. 0x01 : Exit Sniff on Tx Transmit-direction HCI-ACL is defined as ACL packet transmission from host to controller over HCI |