דרישות HCI

ממשק בקר המארח (HCI) משמש לאינטראקציה עם בקר Bluetooth.

במאמר הזה מפורטות הדרישות של HCI‏ (Host Controller Interface) ל-Bluetooth‏ (BT) ול-Bluetooth עם צריכת אנרגיה נמוכה (BLE). המטרה היא שספקי ערימות 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 ‫1 octet הסטטוס Command Complete
max_advt_instances
(הוצאה משימוש)
‫1 octet מספר המופעים של מודעות שנתמכים.

שמור אחרי גרסה v0.98.
הפרמטר הזה הוצא משימוש במפרט התכונות של Google בגרסה 0.98 ומעלה, לטובת פרסום מורחב ב-LE שזמין במפרט BT בגרסה 5.0 ומעלה.
offloaded_resolution_of_private-address
(הוצאה משימוש)
‫1 octet יכולת של צ'יפ BT של RPA.
אם השבב תומך בכך, המארח צריך להפעיל את האפשרות.
‫0 = לא מסוגל
‫1 = מסוגל

שמור אחרי גרסה 0.98.
הפרמטר הזה הוצא משימוש במפרט התכונות של Google בגרסה 0.98 ומעלה, לטובת תכונת הפרטיות שזמינה במפרט BT בגרסה 4.2 ומעלה.
total_scan_results_storage ‫2 אוקטטים נפח האחסון של תוצאות הסריקה בבייטים
max_irk_list_sz ‫1 octet מספר רשומות ה-IRK שנתמכות בקושחה
filtering_support ‫1 octet תמיכה בסינון בבקר
‫0 = לא נתמך
‫1 = נתמך
max_filter ‫1 octet מספר המסננים הנתמכים
activity_energy_info_support ‫1 octet תמיכה בדיווח על פעילות ומידע על אנרגיה
0 = לא תומך
1 = תומך
version_supported ‫2 אוקטטים מציין את הגרסה של מפרט התכונות של Google שנתמכת
‫byte[0] = מספר הגרסה הראשית
‫byte[1] = מספר הגרסה המשנית

v1.06
‫byte[0] = 0x01
‫byte[1] = 0x06

תוספות של תכונות בגרסאות הבאות:
v1.06:
  • big_set_channel_map_classification_support
  • vendor_connection_handle_min
  • vendor_connection_handle_max
  • connection_proximity_threshold_support
v1.05:
  • iso_link_feedback_support
  • BQRv7
  • sniff_offload_support
V1.04:
  • BQRv6
total_num_of_advt_tracked ‫2 אוקטטים המספר הכולל של מפרסמים שמתבצע אחריהם מעקב למטרות OnLost/OnFound
extended_scan_support ‫1 octet תמיכה בחלון סריקה ובמרווח סריקה מורחבים
debug_logging_supported ‫1 octet תמיכה ברישום ביומן של מידע בינארי לניפוי באגים מהבקר
LE_address_generation_offloading_support
(הוצאה משימוש)
‫1 octet ‫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 ‫1 octet תומך בדיווח על אירועי איכות של 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 ‫1 octet תמיכה בפקודות A2DP offload v2 בבקר Bluetooth (ראו Start A2DP offload,‏ Stop A2DP offload)
‫0 = אין תמיכה
‫1 = יש תמיכה
iso_link_feedback_support ‫1 octet תמיכה באירוע ISO Link Feedback
‫0 = לא אפשרי
‫1 = נתמך
sniff_offload_support ‫1 octet תמיכה בפקודות Sniff Offload בבקר Bluetooth
‫0 = לא נתמך
‫1 = נתמך
big_set_channel_map_classification_support ‫2 אוקטטים תמיכה בתת-קוד אופרציה של התכונה 'סיווג מפת ערוצים של שידור LE'
ביט 0 – תמיכה בתת-קוד אופרציה 0x01 (הגדרת מפת ערוצים של BIG באמצעות נקודות אחיזה של חיבור LE ACL)
ביטים 1 עד 15 – שמורים
ערך הביט: 0
0 = לא נתמך
1 = נתמך
vendor_connection_handle_min ‫2 אוקטטים דיווח על ערך מינימלי של נקודות אחיזה לחיבור ספק לאירועי ספק HCI שהתקבלו דרך מנות ACL. הידית 0 משמשת לציון תמיכה חסרה בדיווח על אירועים של ספקים באמצעות מנות נתונים של ACL.
vendor_connection_handle_max ‫2 אוקטטים דיווח על הערך המקסימלי של נקודות האחיזה של חיבור הספק לאירועי ספק HCI שהתקבלו דרך חבילות ACL. הידית 0 משמשת לציון תמיכה חסרה בדיווח על אירועים של ספקים באמצעות מנות נתונים של ACL.
connection_proximity_threshold_support ‫1 octet האם הצ'יפ תומך בסף הקרבה לחיבור
‫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 ‫1 octet ‫0x1 – הפעלת תכונה ספציפית ללקוח
‫ 0x2 – הגדרת פרמטרים של אחסון סריקות באצווה
‫ 0x3 – הגדרת פרמטרים של סריקות באצווה
‫ 0x4 – קריאת פרמטרים של תוצאות סריקות באצווה

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

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
Batch_Scan_opcode ‫1 octet ‫0x1 – הפעלת תכונה ספציפית ללקוח
‫ 0x2 – הגדרת פרמטרים של אחסון סריקות באצווה
‫ 0x3 – הגדרת פרמטרים של סריקות באצווה
‫ 0x4 – קריאת פרמטרים של תוצאות סריקות באצווה

LE_Batch_Scan_Command: הפעלת תכונה ספציפית ללקוח

Sub OCF: 0x01

פרמטר של פקודת משנה גודל מטרה
enable_customer_specific_feature_set ‫1 octet ‫0x01 – הפעלת התכונה 'סריקה של קבוצת מסמכים'
‫ 0x00 – השבתת התכונה 'סריקה של קבוצת מסמכים'

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
Batch_Scan_opcode ‫1 octet ‫0x1 – הפעלת תכונה ספציפית ללקוח
‫0x2 – הגדרת פרמטרים של אחסון סריקות באצווה
‫0x3 – הגדרת פרמטרים של סריקות באצווה
‫0x4 – קריאת פרמטרים של תוצאות סריקות באצווה

‫LE_Batch_Scan_Command: פקודת משנה להגדרת פרמטר האחסון של סריקת אצווה

Sub OCF: 0x02

פרמטר של פקודת משנה גודל מטרה
Batch_Scan_Full_Max ‫1 octet נפח האחסון המקסימלי (באחוזים) שהוקצה לסגנון מלא
[טווח: 0-100]
Batch_Scan_Truncated_Max ‫1 octet נפח אחסון מקסימלי (באחוזים) שהוקצה לסגנון קטוע
[טווח: 0-100]
Batch_Scan_Notify_Threshold ‫1 octet הגדרת רמת ההתראה (באחוזים) עבור מאגר אחסון ספציפי
[טווח: 0-100]
הגדרה של 0 תשבית את ההתראה. נוצר אירוע HCI ספציפי לספק (אירוע משנה של חריגה מסף אחסון)

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
Batch_scan_opcode ‫1 octet ‫0x02 [הגדרת פרמטרים של סריקה באצווה]

‫LE_Batch_Scan_Command: פקודת משנה להגדרת פרמטר של סריקת אצווה

Sub OCF: 0x03

פרמטר של פקודת משנה גודל מטרה
Batch_Scan_Mode ‫1 octet ‫0x00 – סריקת אצווה מושבתת
‫0x01 – מצב חלקי מופעל
‫0x02 – מצב מלא מופעל
‫0x03 – מצב חלקי ומצב מלא מופעלים
Duty_cycle_scan_window ‫4 אוקטטים זמן הסריקה של סריקת קבוצות (מספר המשבצת)
Duty_cyle_scan_interval ‫4 אוקטטים פרק הזמן של מרווח הסריקה של המקבץ (מספר המשבצות)
own_address_type ‫1 octet ‫0x00 – כתובת מכשיר ציבורית
‫0x01 – כתובת מכשיר אקראית
Batch_scan_Discard_Rule ‫1 octet ‫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}. בסגנון 'מלא', אותו חבילת מודעות, כשרואים אותה כמה פעמים במרווחי סריקה שונים, נרשמת רק פעם אחת. עם זאת, במצב קטום, מה שמעניין הוא הנראות של BA_ADDR במרווחי סריקה שונים (פעם אחת בכל מרווח סריקה). ה-RSSI הוא הערך הממוצע של כל הכפילויות של מודעה ייחודית במרווח סריקה.

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
Batch_scan_opcode ‫1 octet ‫0x03 [הגדרת פרמטרים של סריקת אצווה]

LE_Batch_Scan_Command: Read batch scan results subcommand

Sub OCF: 0x04

פרמטר של פקודת משנה גודל מטרה
Batch_Scan_Data_read ‫1 octet ‫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 ‫1 octet הסטטוס Command Complete
Batch_scan_opcode ‫1 octet ‫0x03 [הגדרת פרמטרים של סריקת אצווה]
Batch_Scan_data_read ‫1 octet מזהה את הפורמט (חתוך או מלא)
num_of_records ‫1 octet מספר הרשומות של Batch_Scan_data_read
format_of_data משתנה מצב קטום:
כתובת[0]: 6 אוקטטות
סוג הכתובת[0]: אוקטטה אחת
הספק השידור[0]: אוקטטה אחת
עוצמת האות הנמדדת[0] : אוקטטה אחת
חותמת זמן[0]: 2 אוקטטות
[multiple records (num_of_records) with above format]

מצב מלא:
כתובת[0]: 6 אוקטטות
סוג הכתובת[0]: אוקטטה אחת
הספק השידור[0]: אוקטטה אחת
עוצמת האות הנמדדת[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 ‫1 octet ‫0x00 – הפעלה של APCF
‫ 0x01 – הגדרת פרמטרים של סינון APCF
‫ 0x02 – כתובת של APCF Broadcaster
‫ 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 ‫1 octet סטטוס החזרה
APCF_opcode ‫1 octet ‫0x00 – הפעלה של APCF
‫ 0x01 – הגדרת פרמטרים של סינון APCF
‫ 0x02 – כתובת של APCF Broadcaster
‫ 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 ‫1 octet ‫0x01 – הפעלת התכונה APCF
‫ 0x00 – השבתת התכונה APCF

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
APCF_opcode ‫1 octet ‫0x0 – הפעלת APCF
APCF_Enable ‫1 octet ההגדרה 'הפעלה/השבתה' מוגדרת דרך APCF_enable

LE_APCF_Command: set_filtering_parameters_sub_cmd

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

Sub OCF: 0x01

פרמטר של פקודת משנה גודל מטרה
APCF_Action ‫1 octet ‫0x00 – הוספה
‫ 0x01 – מחיקה
‫ 0x02 – ניקוי
‫ הפעולה 'מחיקה' תנקה את המסנן הספציפי יחד עם רשומות התכונות המשויכות בטבלאות אחרות.
האפשרות Clear (ניקוי) תנקה את כל המסננים והערכים המשויכים בטבלאות אחרות.
APCF_Filter_Index ‫1 octet מסנן אינדקס (0, max_filter-1)
APCF_Feature_Selection ‫2 אוקטטים מסכות ביטים לתכונות שנבחרו:
Bit 0: Set to enable Broadcast Address filter
Bit 1: Set to enable Service Data Change filter
Bit 2: Set to enable Service UUID check
Bit 3: Set to enable Service Solicitation UUID check
Bit 4: Set to enable Local Name check
Bit 5: Set to enable Manufacturer Data Check
Bit 6: Set to enable Service Data Check
Bit 7: Set to enable Transport Discovery Service Check
Bit 8: Set to enable AD Type Check
APCF_List_Logic_Type ‫2 אוקטטים פעולה לוגית לכל בחירת תכונה (לפי מיקום ביט) שמצוינת ב-APCF_Feature_Selection.
תקף רק כשתכונה מופעלת.
ערך מיקום הביט:
‫0: OR
‫1: AND
אם נבחרה לוגיקת AND, חבילת ADV תעבור את הסינון רק אם היא מכילה את כל הרשומות ברשימה.
אם נבחרה לוגיקת OR, מנה של נתוני ADV תעבור את המסנן אם היא מכילה אחד מהערכים ברשימה.
APCF_Filter_Logic_Type ‫1 octet ‫0x00: OR
‫0x01: AND
הערה: סוג הלוגיקה הוא N/A בשלושת השדות הראשונים שלAPCF_Feature_Selection, שהלוגיקה שלהם היא תמיד AND. הם רלוונטיים רק לארבעה שדות (Bit 3 - ­Bit 6) של APCF_Feature_Selection.
rssi_high_thresh ‫1 octet ‫[in dBm]
המפרסם נחשב כמי שראה את המודעה רק אם עוצמת האות גבוהה מהסף הגבוה של RSSI. אחרת, הקושחה צריכה להתנהג כאילו היא לא ראתה את הנתונים האלה.
delivery_mode ‫1 octet 0x00 - immediate
0x01 - on_found
0x02 - batched
onfound_timeout ‫2 אוקטטים המבצע תקף רק אם delivery_mode הוא on_found.
[באלפיות השנייה]
הזמן שבו קושחה ממתינה ואוספת מודעות נוספות
לפני הדיווח.
onfound_timeout_cnt ‫1 octet המבצע תקף רק אם delivery_mode הוא on_found.
‫[count]
אם מודעה ב-onFound נשארת בקושחה למשך onfound_timeout, היא תאסוף כמה מודעות והמערכת תבדוק את המספר. אם הספירה חורגת מ-onfound_timeout_cnt, המערכת מדווחת על כך באופן מיידי.OnFound
rssi_low_thresh ‫1 octet המבצע תקף רק אם delivery_mode הוא on_found.
[in dBm]
חבילת המפרסם נחשבת כלא נראית אם ערך ה-RSSI של החבילה שהתקבלה לא גבוה מסף ה-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 ‫1 octet הסטטוס Command Complete
APCF_opcode ‫1 octet ‫0x01 – APCF Set Filtering Parameters
APCF_Action ‫1 octet פקודת ההדהוד APCF_Action
APCF_AvailableSpaces ‫1 octet מספר הרשומות הזמינות בטבלת המסננים

LE_APCF_Command: broadcast_address_sub_cmd

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

Sub OCF: 0x02

פרמטר של פקודת משנה גודל מטרה
APCF_Action ‫1 octet ‫0x00 – הוספה
‫0x01 – מחיקה
‫0x02 – ניקוי
הפעולה 'מחיקה' תמחק את כתובת השידור שצוינה במסנן שצוין.
הפקודה Clear תנקה את כל כתובות השידור במסנן שצוין.
APCF_Filter_Index ‫1 octet מסנן אינדקס (0, max_filter-1)
APCF_Broadcaster_Address ‫6 אוקטטים כתובת מכשיר באורך 6 בייט שרוצים להוסיף לרשימת הכתובות של המשדר או למחוק ממנה
APCF_Application_Address_type ‫1 octet ‫0x00: ציבורי
‫0x01: אקראי
‫0x02: לא רלוונטי (התעלמות מסוג הכתובת)
כדי לסנן דוחות פרסום לפי סוגי כתובות של זהויות (0x02, ‏ 0x03). כדי לקבל דוחות פרסום עם סוגי הכתובות 0x02 ו-0x03, צריך להגדיר את השדה הזה ל-0x02: NA (התעלמות מסוג הכתובת).

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
APCF_opcode ‫1 octet ‫0x02 – כתובת של משדר APCF
APCF_Action ‫1 octet פקודת ההדהוד APCF_Action
APCF_AvailableSpaces ‫1 octet מספר הרשומות החינמיות שעדיין זמינות בטבלה Broadcast Address

LE_APCF_Command: service_uuid_sub_cmd

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

Sub OCF: 0x03

פרמטר של פקודת משנה גודל מטרה
APCF_Action ‫1 octet ‫0x00 – הוספה
‫0x01 – מחיקה
‫0x02 – ניקוי
מחיקה תמחק את כתובת ה-UUID של השירות שצוינה במסנן שצוין.
הפקודה Clear תנקה את כל המזהים הייחודיים האוניברסליים (UUIDs) של השירות במסנן שצוין.
APCF_Filter_Index ‫1 octet אינדקס המסנן (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 ‫1 octet הסטטוס Command Complete
APCF_opcode ‫1 octet ‫0x03 – APCF Service UUID
APCF_Action ‫1 octet פקודת ההדהוד APCF_Action
APCF_AvailableSpaces ‫1 octet מספר הרשומות החינמיות שעדיין זמינות בטבלה Service UUID

LE_APCF_Command: solicitation_uuid_sub_cmd

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

Sub OCF: 0x04

פרמטר של פקודת משנה גודל מטרה
APCF_Action ‫1 octet ‫0x00 – הוספה
‫ 0x01 – מחיקה
‫ 0x02 – ניקוי
‫ הפעולה 'מחיקה' תמחק את כתובת ה-UUID של הבקשה במסנן שצוין.
האפשרות Clear תנקה את כל מזהי ה-UUID של הבקשות במסנן שצוין.
APCF_Filter_Index ‫1 octet אינדקס המסנן (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 ‫1 octet הסטטוס Command Complete
APCF_opcode ‫1 octet ‫0x04 – מזהה ייחודי אוניברסלי (UUID) של בקשת APCF
APCF_Action ‫1 octet פקודת ההדהוד APCF_Action
APCF_AvailableSpaces ‫1 octet מספר הכניסות החינמיות שעדיין זמינות בטבלה Solicitation UUID

LE_APCF_Command: local_name_sub_cmd

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

Sub OCF: 0x05

פרמטר של פקודת משנה גודל מטרה
APCF_Action ‫1 octet ‫0x00 – הוספה
‫0x01 – מחיקה
‫0x02 – ניקוי
הפעולה 'מחיקה' תמחק את מחרוזת השם המקומי שצוינה במסנן שצוין.
האפשרות Clear תנקה את כל המחרוזות של השמות המקומיים במסנן שצוין.
APCF_Filter_Index ‫1 octet אינדקס המסנן (0, max_filter-1)
APCF_LocName_Mandata_or_SerData גודל משתנה מחרוזת תווים לשם מקומי.

הערות:
  • נכון לעכשיו, מספר התווים המקסימלי במחרוזת של שם מקומי הוא 29
  • לא רלוונטי כשהפעולה היא 'ניקוי' (0x2)

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
APCF_opcode ‫1 octet ‫0x05 - APCF Local Name
APCF_Action ‫1 octet פקודת ההדהוד APCF_Action
APCF_AvailableSpaces ‫1 octet מספר הרשומות החינמיות שעדיין זמינות בטבלה Local name (שם מקומי)

LE_APCF_Command: manf_data_sub_cmd

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

Sub OCF: 0x06

פרמטר של פקודת משנה גודל מטרה
APCF_Action ‫1 octet ‫0x00 – הוספה
‫ 0x01 – מחיקה
‫ 0x02 – ניקוי
‫ הפעולה 'מחיקה' תמחק את מחרוזת נתוני היצרן שצוינה במסנן שצוין.
האפשרות Clear תנקה את כל המחרוזות של נתוני היצרן במסנן שצוין.
APCF_Filter_Index ‫1 octet אינדקס המסנן (0, max_filter-1)
APCF_LocName_Mandata_or_SerData גודל משתנה מחרוזת תווים לנתוני יצרן.

הערות:
  • נכון לעכשיו, מספר התווים המקסימלי במחרוזת של שם מקומי הוא 29
  • לא רלוונטי כשהפעולה היא 'ניקוי' (0x2)
APCF_ManData_Mask גודל משתנה מסכת הנתונים של היצרן שרוצים להוסיף לרשימה. האורך שלו צריך להיות זהה לאורך של APCF_LocName_or_ManData_or_SerData.

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
APCF_opcode ‫1 octet ‫0x06 – נתוני יצרן של APCF
APCF_Action ‫1 octet פקודת ההדהוד APCF_Action
APCF_AvailableSpaces ‫1 octet מספר הרשומות החינמיות שעדיין זמינות בטבלה 'נתוני יצרן'

LE_APCF_Command: service_data_sub_cmd

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

Sub OCF: 0x07

פרמטר של פקודת משנה גודל מטרה
APCF_Action ‫1 octet ‫0x00 – הוספה
‫0x01 – מחיקה
‫0x02 – ניקוי
הפעולה 'מחיקה' תמחק את מחרוזת נתוני השירות שצוינה במסנן שצוין.
האפשרות Clear (ניקוי) תנקה את כל מחרוזות הנתונים של השירות במסנן שצוין.
APCF_Filter_Index ‫1 octet אינדקס המסנן (0, max_filter-1)
APCF_LocName_Mandata_or_SerData גודל משתנה מחרוזת תווים של נתוני שירות.

הערות:
  • נכון לעכשיו, מספר התווים המקסימלי במחרוזת של שם מקומי הוא 29
  • לא רלוונטי כשהפעולה היא 'ניקוי' (0x2)
APCF_LocName_Mandata_or_SerData_Mask גודל משתנה מסכת נתוני השירות שרוצים להוסיף לרשימה. האורך שלו צריך להיות זהה לאורך של APCF_LocName_or_ManData_or_SerData.

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
APCF_opcode ‫1 octet ‫0x07 – נתוני שירות של APCF
APCF_Action ‫1 octet פקודת ההדהוד APCF_Action
APCF_AvailableSpaces ‫1 octet מספר הרשומות החינמיות שעדיין זמינות לטבלה Service Data

LE_APCF_Command: transport_discovery_service_sub_cmd

משתמשים בפקודת המשנה הזו כדי להוסיף או למחוק מסנן של Transport Discovery Service‏ (TDS) או כדי לנקות את רשימת המסננים של TDS לסינון בתוך השבב. משתמשים בפקודה read_extended_features_sub_cmd כדי לבדוק אם הפקודה הזו נתמכת.

Sub OCF: 0x08

פרמטר של פקודת משנה גודל מטרה
APCF_Action ‫1 octet ‫0x00 – הוספה
‫ 0x01 – מחיקה
‫ 0x02 – ניקוי
‫ מחיקה תמחק את המסנן שצוין של TDS במסנן שצוין.
האפשרות Clear תנקה את כל המסננים של TDS במסנן שצוין.
APCF_Filter_Index ‫1 octet אינדקס המסנן (0, max_filter-1)
Org_ID ‫1 octet מזהה הארגון שמוגדר על ידי Bluetooth SIG. התעלמות אם APCF_Action הוא 0x02 (ניקוי).
TDS_Flags ‫1 octet התרעות לגבי ניכוי מס במקור שצריך להתאים. התעלמות אם APCF_Action הוא 0x02 (ניקוי).
TDS_Flags_Mask ‫1 octet מסכה לסימון ניכוי מס במקור. התעלמות אם APCF_Action הוא 0x02 (ניקוי).
Transport_Data_Length ‫1 octet אורך של Transport_Data. התעלמות אם APCF_Action הוא 0x02 (ניקוי).
Transport_Data גודל משתנה גודל משתנה, על סמך Transport_Data_Length. נתוני חסימה של העברה להתאמה. התעלמות אם APCF_Action הוא 0x02 (ניקוי).
Transport_Data_Mask_Length ‫1 octet אורך של Transport_Data_Mask. הערך הזה צריך להיות שווה ל-Transport_Data_Length. התעלמות אם APCF_Action הוא 0x02 (ניקוי).
Transport_Data_Mask גודל משתנה גודל משתנה, על סמך Transport_Data_Mask_Length. מסכה לנתונים של בלוק Transport. האורך שלו צריך להיות זהה לאורך של Transport_Data. התעלמות אם APCF_Action הוא 0x02 (ניקוי).
Meta_Data_Type ‫1 octet ‫0x00 – לא חוקי
‫ 0x01 – גיבוב של Wi-Fi NAN
‫ התעלמות אם APCF_Action הוא 0x02 (ברור).
Meta_Data_Length ‫1 octet אורך של Meta_Data. התעלמות אם APCF_Action הוא 0x02 (ניקוי).
Meta_Data גודל משתנה גודל משתנה, על סמך Meta_Data_Length. מטא-נתונים להתאמה. התעלמות אם APCF_Action הוא 0x02 (ניקוי).

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
APCF_opcode ‫1 octet ‫0x08 - APCF Transport Discovery Service
APCF_Action ‫1 octet פקודת ההדהוד APCF_Action
APCF_AvailableSpaces ‫1 octet מספר הרשומות החינמיות שעדיין זמינות בטבלת המסננים של TDS

LE_APCF_Command: ad_type_sub_cmd

משתמשים בפקודת המשנה הזו כדי להוסיף או למחוק סוג של מודעה, או כדי לנקות רשימה של סוגי מודעות לסינון בתוך השבב. משתמשים בפקודה read_extended_features_sub_cmd כדי לבדוק אם הפקודה הזו נתמכת.
אם APCF_AD_DATA_Length הוא 0, מסננים את APCF_AD_TYPE בלי להשוות בין AD Data לבין AD Data Mask. אם אורך הנתונים של חבילת ה-ADV שהתקבלה גדול מ-AD_DATA_LENGTH, המערכת משווה רק את AD_DATA_LENGTH הבייטים הראשונים של נתוני ה-AD ומתעלמת מהנתונים הנותרים.

Sub OCF: 0x09

פרמטר של פקודת משנה גודל מטרה
APCF_Action ‫1 octet ‫0x00 – הוספה
‫0x01 – מחיקה
‫0x02 – ניקוי
האפשרות 'מחיקה' תמחק את סוג ה-AD שצוין במסנן שצוין.
האפשרות Clear תנקה את כל סוגי המודעות במסנן שצוין.
APCF_Filter_Index ‫1 octet אינדקס המסנן (0, max_filter-1)
APCF_AD_TYPE ‫1 octet סוג המודעה להוספה לרשימה או למחיקה ממנה. התעלמות כש-APCF_Action הוא 0x02 (ניקוי)
APCF_AD_DATA_Length ‫1 octet ‫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 ‫1 octet הסטטוס Command Complete
APCF_opcode ‫1 octet ‫0x09 – סוג מודעה של APCF
APCF_Action ‫1 octet פקודת ההדהוד APCF_Action
APCF_AvailableSpaces ‫1 octet מספר הכניסות החינמיות שעדיין זמינות בטבלה 'סוג המודעה'

LE_APCF_Command: read_extended_features_sub_cmd

פקודת המשנה הזו משמשת לקריאת תכונות APCF מורחבות.

Sub OCF: 0xFF

פרמטר של פקודת משנה גודל מטרה
לא רלוונטי פרמטר פקודה ריק.

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
APCF_opcode ‫1 octet 0xFF - APCF_Read_Extended_Features
APCF_extended_features ‫2 אוקטטים

מסיביות ביטים לתכונות מורחבות נתמכות:

  • ביט 0: תמיכה במסנן של שירות איתור התעבורה
  • ביט 1: תמיכה במסנן סוג המודעה
  • ביט 2 עד 15: שמור לשימוש בעתיד

ערך הביט

  • ‫0 = לא נתמך
  • ‫1 = נתמך

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

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

  • ‫BT stack: דיווח על המצב המקרו-תפעולי הנוכחי של הבקר
  • קושחה: דיווח על פעילות מצטברת ופרטי אנרגיה

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

  • במצב המתנה: [סריקת דף, פרסום LE, סריקת שאילתות, סריקת LE]
  • סריקה: [איתור/בקשה/ניסיון להתחבר]
  • פעיל: [קישור ACL פועל, קישור SCO מתבצע, מצב sniff]

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

LE_Get_Controller_Activity_Energy_Info

זוהי פקודה ספציפית לספק.

OCF: 0x159

פרמטר של פקודת משנה גודל מטרה
לא רלוונטי פרמטרים ריקים של פקודות

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
total_tx_time_ms ‫4 אוקטטים הזמן הכולל של ביצוע העברה
total_rx_time_ms ‫4 אוקטטים הזמן הכולל של ביצוע Rx
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 ‫1 octet ‫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 ‫1 octet ‫0x00 – כתובת ציבורית של המכשיר (ברירת מחדל)
‫0x01 – כתובת אקראית של המכשיר
LE_Ex_Scan_Filter_Policy ‫0x00 – קבלת כל חבילות הפרסום (ברירת מחדל). חבילות פרסום מכוונות שלא מיועדות למכשיר הזה יתעלמו מהן.
0x01 - Ignore advertisement packets from devices not in the White List Only list. חבילות של פרסום ממוקד שלא מיועדות למכשיר הזה יתעלמו מהן.

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete

קבלת פקודה למידע על תוצאות ניפוי הבאגים של בקר

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

OCF: 0x15B

פרמטר של פקודה גודל מטרה
לא רלוונטי רשימת פרמטרים ריקה של פקודה

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete

תמיכה בהורדת עומס של A2DP מהמעבד

התכונה A2DP offload תומכת בהעברה של תהליך קידוד האודיו של A2DP למעבד אודיו שמחובר לבקר ה-BT. סטרימינג של נתוני אודיו מקודדים עובר ישירות ממעבד האודיו לבקר ה-BT בלי מעורבות של מארח ה-BT. המארח של BT עדיין אחראי להגדרה ולשליטה בסשן של 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.
  • ‫0x00 – הכותרת SCMS-T לא נכללת.
  • ‫0x01 – הכותרת 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 ‫1 octet ‫0x01 – 16 ביטים לדגימה
‫0x02 – 24 ביטים לדגימה
‫0x04 – 32 ביטים לדגימה
Channel_Mode ‫1 octet ‫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.‫
שמינייה 0: אורך הבלוק | תת-פסים | שיטת ההקצאה
שמינייה 1: ערך מינימלי של מאגר ביטים
שמינייה 2: ערך מקסימלי של מאגר ביטים
שמינייה 3: תדירות הדגימה | מצב הערוץ
שמינייה 4-31: שמור

קודק AAC:

אפשר לעיין ברכיבי מידע ספציפיים של קודק AAC ב-A2DP v1.3
Octet 0: Object Type
Octet 1; b7: VBR
Octet 2-31: reserved

קודק LDAC:

‫Octet 0-3: מזהה הספק
0x0000012D

אוקטט 4-5: מזהה קודק
‫0x00AA – LDAC
כל שאר הערכים שמורים

אוקטט 6: אינדקס קצב העברת נתונים:
‫0x00 – גבוה
‫0x01 – בינוני
‫0x02 – נמוך
‫0x03 עד 0x7E – שמור
‫0x7F – ABR (קצב העברת נתונים דינמי)
‫0x80 עד 0xFF – שמור

‫Octet 7: LDAC Channel Mode
0x01 - Stereo
0x02 - Dual
0x04 - Mono
Others are reserved

‫Octet 8-31: שמור

קודק Opus:

שמינייה 0-3: מזהה הספק
0x000000E0

שמינייה 4-5: מזהה קודק
‫0x0001 – Opus
כל שאר הערכים שמורים

אוקטט 6-31: שמור

כל שאר הקודקים:

אוקטט 0-31: שמור

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
Sub_Opcode ‫1 octet ‫0x01 – הפעלת הפחתת עומס A2DP

הפעלת הורדת העומס של A2DP

Sub OCF: 0x03

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

פרמטר של פקודה גודל מטרה
Connection Handle ‫2 אוקטטים ה-handle של חיבור ה-HCI הפעיל
L2CAP_Channel_ID ‫2 אוקטטים מזהה של ערוץ L2CAP שנפתח לסטרימינג של A2DP
Data_Path_Direction ‫1 octet ‫0x00 – פלט (AVDTP Source/Merge)
‫0x01 – קלט (AVDTP Sink/Split)
Peer_MTU ‫2 אוקטטים הגודל המקסימלי של מנות L2CAP, שנקבע בהסכם עם העמית.
CP_Enable_SCMS_T ‫1 octet ‫0x00 – השבתה של כותרת להגנה על תוכן SCMS-T
‫ 0x01 – הפעלה של כותרת להגנה על תוכן SCMS-T
CP_Header_SCMS_T ‫1 octet כשהכותרת של הגנת התוכן SCMS-T מופעלת (CP_SCMS_T_Enable מוגדרת ל-0x01), מוגדר ערך הכותרת שקודם לתוכן האודיו (ראו A2DP, סעיף 3.2.1-2) כפי שמוגדר ב-Bluetooth Assigned Numbers, סעיף 6.3.2.
התעלמות מההגדרה הזו אם ההגנה על תוכן SCMS-T לא מופעלת.
Vendor_Specific_Parameters_Length ‫1 octet אורך הפרמטרים הספציפיים לספק, בטווח 0 עד 128.
הערך 0 משמש כשלא מסופקים פרמטרים נוספים.
Vendor_Specific_Parameters ‫0 עד 128 אוקטטים פרמטרים ספציפיים לספק שסופקו על ידי Bluetooth Audio HAL, CodecParameters.vendorSpecificParameters[].

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
Sub_Opcode ‫1 octet ‫0x03 – הפעלת העברה לחומרת A2DP

הפסקת הורדת העומס של A2DP (גרסה קודמת)

Sub OCF: 0x02

הפקודה הזו משמשת לעצירת הזרמת הנתונים של A2DP offload.

פרמטר של פקודה גודל מטרה
לא רלוונטי רשימת פרמטרים ריקה של פקודה.

לא הוגדרו פרמטרים לפקודה הזו.

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
Sub_Opcode ‫1 octet ‫0x02 – עצירת הפחתת עומס A2DP

הפסקת הורדת העומס של A2DP

Sub OCF: 0x04

הפקודה הזו משמשת לעצירת הזרמת הנתונים של A2DP offload.

פרמטר של פקודה גודל מטרה
Connection Handle ‫2 אוקטטים ה-handle של חיבור ה-HCI הפעיל
L2CAP_Channel_ID ‫2 אוקטטים מזהה של ערוץ L2CAP שנפתח לסטרימינג של A2DP
Data_Path_Direction ‫1 octet ‫0x00 – פלט (AVDTP Source/Merge)
‫0x01 – קלט (AVDTP Sink/Split)

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
Sub_Opcode ‫1 octet ‫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: האירוע הזה נשלח מהבקר אל המערך כשה-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 ‫1 octet פעולה להוספה או למחיקה של דיווח על אירועים איכותיים שהוגדרו בפרמטר BQR_Quality_Event_Mask, או מחיקה של כל האירועים.

‫0x00 – הוספה
‫0x01 – מחיקה
‫0x02 – ניקוי
‫0x03 – שאילתה חד-פעמית

מחיקה תנקה את הדיווח על אירועי איכות ספציפיים.
הפונקציה Clear תמחק את כל הדיווחים על אירועים שקשורים לאיכות (אפשר להתעלם מהפרמטר BQR_Quality_Event_Mask).

BQR_Quality_Event_Mask ‫4 אוקטטים מסיכות ביטים לדיווח על אירועי האיכות שנבחרו.

ביט 0: מוגדר להפעלה של מצב מעקב אחר איכות.
ביט 1: מוגדר להפעלה של אירוע LSTO מתקרב (עבור ACL/(e)SCO/ISO).
Bit 2: Set to enable A2DP Audio Choppy event.
Bit 3: Set to enable (e)SCO Voice Choppy event.
ביט 4: מוגדר להפעלה של אירוע דלקת שורש.
‫Bit 5: מוגדר להפעלה של מצב מעקב אחר צריכת אנרגיה.
Bit 6: Set to enable LE audio choppy event.
ביט 7: מוגדר להפעלה של אירוע כשל בחיבור.
ביט 8: מוגדר להפעלה של טריגר לאירוע במצב 'סטטיסטיקות מתקדמות של RF'.
ביט 9: מוגדר להפעלה של דוח תקופתי של נתוני RF מתקדמים.
‫Bit 10: מוגדר להפעלה של טריגר אירוע של מנגנון מעקב אחר תקינות הבקר. (נוסף ב-BQRv7)
ביט 11: מוגדר להפעלה של מנגנון מעקב אחר תקינות הבקר, שמדווח באופן תקופתי. (נוסף ב-BQRv7)
ביט 12 עד 14: שמור.
ביט 15: מוגדר להפעלה של אירועי איכות ספציפיים לספק.
ביט 16: מוגדר להפעלה של מעקב אחר הודעות LMP/LL.
ביט 17: מוגדר להפעלה של מעקב אחר תזמון של Bluetooth Multi-link/Coex.
‫Bit 18: מוגדר להפעלה של מנגנון מידע לניפוי באגים של בקר.‫
Bit 19: Reserved for offload debug information.
ביט 20: טריגר לאירוע של פריקת היסטוריית UART. (נוסף ב-BQRv7)
ביט 21 עד 30: שמור.
ביט 31: מוגדר להפעלה של מעקב ספציפי לספק.

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

יחידה: אלפיות השנייה
ברירת מחדל: 0 (אין הגבלה על המרווח).
Range: 0 ~ 65535 ms

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

יחידה: ms
ברירת מחדל: 1
טווח: 0 עד 4294967295 (0: שווה ל-1)

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

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
Current_Quality_Event_Mask ‫4 אוקטטים מציין את הגדרת מסכת הביטים הנוכחית.
ביט 0: מצב מעקב האיכות מופעל.
Bit 1: Approaching LSTO event reporting is enabled.
‫Bit 2: הדיווח על אירועים של אודיו מקוטע ב-A2DP מופעל.
Bit 3: (e)SCO Voice Choppy event reporting is enabled.
‫Bit 4: דיווח על אירועי דלקת ב-Root מופעל.
ביט 5: מצב מעקב אחרי צריכת אנרגיה מופעל.
‫Bit 6: הדיווח על אירועים של אודיו לא רציף ב-LE מופעל.
ביט 7: אירוע של כשל בחיבור.
ביט 8: מוגדר להפעלה של טריגר לאירוע במצב 'סטטיסטיקות מתקדמות של RF'.
ביט 9: מוגדר להפעלה של דיווח תקופתי של נתונים סטטיסטיים מתקדמים של RF.
‫Bit 10: מוגדר להפעלה של מנגנון מעקב אחר תקינות הבקר, הפעלה של טריגר לאירוע.
‫Bit 11: מוגדר להפעלה של מנגנון מעקב אחרי תקינות הבקר, כדי שידווח מעת לעת.
ביט 12 עד 14: שמור.
Bit 15: Vendor-specific quality event reporting is enabled.
ביט 16: מעקב אחר הודעות LMP/LL מופעל.
ביט 17: מופעל מעקב אחר תזמון של Bluetooth Multi-link/Coex.
Bit 18: Controller Debug Information mechanism is enabled.
‫Bit 19: שמור למידע על ניפוי באגים בהפחתת עומס
‫Bit 20: טריגר של אירוע ליצירת dump של היסטוריית UART
‫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 ‫1 octet הסטטוס Command Complete
Dynamic_Audio_Buffer_opcode ‫1 octet ‫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 אוקטטים הזמן המבוקש של מאגר האודיו (buffer) עבור הקודק שנעשה בו שימוש כרגע.
יחידה: אלפית השנייה

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
Dynamic_Audio_Buffer_opcode ‫1 octet ‫0x02 – הגדרת זמן מאגר הנתונים הזמני של האודיו
Audio_Codec_Buffer_Time ‫2 אוקטטים משך מאגר האודיו הנוכחי בבקר ה-Bluetooth.
יחידה: אלפיות השנייה

סף הקרבה לחיבור (גרסה 1.06)

LE_Add_Device_To_Filter_Accept_List_With_Proximity_Threshold_Command

אפשר להשתמש בפקודה הזו כדי לספק את סף הקרבה לחיבור (Path Loss ו-RSSI) כשמוסיפים מכשיר לרשימת ההיתרים של המסנן.

החיבור צריך להתבצע רק אם ערך אובדן הנתיב של האות נמוך מסף אובדן הנתיב.

אם הערך של TxPower לא זמין או אם נעשה שימוש בערך No Path Loss filtering, צריך לנסות להתחבר רק אם ערך ה-RSSI של האות גבוה יותר מסף ה-RSSI שצוין.

אפשר להשתמש בפקודה הזו במקום בפקודה הרגילה של Bluetooth‏ LE Add Device To Filter Accept List command.

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

הפניה לבסיס: BT Core 6.2 Specification, 7.8.16 (פקודה להוספת מכשיר לרשימת ההיתרים של המסנן LE)

אין להשתמש בפקודה הזו במקרים הבאים:

  • אם מדיניות סינון הפרסום משתמשת ברשימת ההיתרים לסינון והפרסום מופעל,
  • מדיניות סינון הסריקה משתמשת ברשימת ההיתרים לסינון והסריקה מופעלת, או
  • מדיניות הסינון של היוזם משתמשת ברשימת ההיתרים של המסנן, ופקודה של HCI_LE_Create_Connection או HCI_LE_Extended_Create_Connection נמצאת בהמתנה.

LE Remove Device From Filter Accept List צריך להסיר את המכשיר מרשימת המכשירים שמותרים לשימוש במסנן, שנוספה באמצעות הפקודה הזו.

קוד אופרציה: 0xFD66 (OCF: 0x166)

פרמטר של פקודה גודל מטרה
Address_Type ‫1 octet ‫0x00 – כתובת ציבורית של המכשיר
‫0x01 – כתובת אקראית של המכשיר
‫0xFF – מכשירים ששולחים מודעות אנונימיות
כל הערכים האחרים – שמורים לשימוש עתידי
LE_Device_Address ‫6 אוקטטות כתובת ציבורית או אקראית
המערכת תתעלם מהכתובת אם הערך של Address_Type הוא 0xFF.
Connection_Path_Loss_Threshold ‫1 octet טווח: 0 עד +100, ‏ +127 [בדציבלים]
מציין את סף אובדן הנתיב של החיבור כדי ליזום חיבור למכשיר כשהוא מתגלה (0 עד +100). כדי ליצור חיבור, הערך של אובדן הנתיב צריך להיות נמוך יותר. הערך +127 משמש לציון No Path Loss filtering. אם הערך של TxPower לא זמין או שהוא +127, הפקודה הזו צריכה לחזור לסינון RSSI שמופיע בהמשך.
Connection_RSSI_Threshold ‫1 octet טווח: ‎-127 עד ‎+20, ‎+127 [ב-dBm]
מציין את סף RSSI של החיבור כדי ליזום חיבור למכשיר כשהוא מתגלה. ‫‎(-127 עד ‎+20). כדי ליצור חיבור, ערך ה-RSSI צריך להיות גבוה יותר. הסינון לפי RSSI הוא חלופה למקרה ש-TxPower לא זמין או כשערך הסף של Path Loss מוגדר ל-+127. הערך +127 משמש לציון No RSSI filtering.

אם גם סף אובדן הנתיב וגם סף RSSI הם ‎+127, הפקודה הזו צריכה להתנהג כמו בתקן Bluetooth LE Add Device To Filter Accept List command.

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete

אירוע HCI (ספציפי לספק)

במקרים מסוימים נדרשים אירועי HCI ספציפיים לספק. אפשר לעיין באיור 5.4 בעמוד 1897 של המפרט BT Core 5.2. פרמטר של אירוע 0 תמיד יכיל את קוד אירוע המשנה הראשון, שעל פיו יפוענח שאר אירוע ה-HCI.

פרמטר של אירוע גודל מטרה
HCI_vendor_specific_event_code ‫1 octet ‫0xFF
sub_event_code ‫1 octet קוד אירוע המשנה יהיה בגודל אוקטט אחד, הבייט שמיד אחרי אורך הפרמטר בחבילת אירוע ה-HCI.

אירוע משנה של חריגה מסף האחסון

האירוע הזה מציין שהיה חריגה מסף האחסון.

קוד אירוע משנה = 0x54

פרמטר של אירוע משני גודל מטרה
ללא

אירוע משנה של שינוי מצב פרסום מרובה ב-LE

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

קוד אירוע משנה = 0x55

פרמטר של אירוע משני גודל מטרה
Advertising_instance ‫1 octet מזהה את מופע הפרסום הספציפי
הערכים התקינים הם 0 עד max_advt_instances-1
State_Change_Reason ‫1 octet ‫0x00: התקבל חיבור
Connection_handle ‫2 אוקטטים מזהה את החיבור שגרם להשבתת המופע [advt] (0xFFFF אם לא תקין)

אירוע משנה של מעקב אחרי פרסום ב-LE

האירוע הזה מציין מתי נמצא מפרסם או מתי הוא לא נמצא.

קוד אירוע משנה = 0x56

פרמטר של אירוע משני גודל מטרה
APCF_Filter_Index ‫1 octet אינדקס המסנן (0, max_filter-1)
Advertiser_State ‫1 octet ‫0x00: נמצא מפרסם
‫0x01: המפרסם לא נמצא
Advt_Info_Present ‫1 octet ‫0x00: פרטי המפרסם (Advt_Info) קיימים
‫0x01: פרטי המפרסם (Advt_Info) לא קיימים
Advertiser_Address ‫6 אוקטטות כתובת ציבורית או אקראית
Advertiser_Address_Type ‫1 octet ‫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 ‫1 octet ‫0x00: יש עוד נתוני ניפוי באגים
‫0x01: הבלוק הבינארי האחרון; אין עוד נתוני ניפוי באגים
cur_pay_load_sz ‫2 אוקטטים גודל הבלוק הבינארי באירוע הנוכחי
Debug_Data משתנה נתונים של ניפוי באגים של cur_payload_sz

LE Broadcast Channel Map Classification (v1.06)

רמת הרעש של גלי הרדיו בערוצי Bluetooth היא גורם קריטי שמשפיע על הצלחת קבלת המנות. כדי לבצע אופטימיזציה של מהימנות השידור, חיוני להשתמש במנגנון לסיווג מפת הערוצים כדי לזהות את איכות הערוץ. בתרחיש רגיל של מקור שידור LE Audio, למקור בדרך כלל אין מידע על המכשירים שמקשיבים באופן פעיל לשידור שלו. לכן, מקור השידור חייב להסתמך רק על ההערכה שלו לגבי איכות הערוץ כדי לקבוע את מפת הערוצים הגדולה. עם זאת, יכול להיות שמיפוי ערוצים גדול שנקבע רק על ידי המקור לא יהיה אופטימלי לכל המקלטים, בגלל תנאי סביבה שונים או בגלל נוכחות של מקורות הפרעה מקומיים ליד מקלטים ספציפיים. אם מקלט שידור יכול להעביר את פרטי סיווג הערוץ שלו למקור השידור, המקור יכול להתאים את מפת הערוצים של ה-BIG בהתאם. השיפור הזה יגדיל באופן משמעותי את העמידות של שידור הסטרימינג וקליטת הנתונים מפני הפרעות.

לדוגמה, באפליקציות של שיתוף אודיו אישי (PAS), נוצר קישור LE ACL (שפועל כעוזר שידור כדי לבצע סנכרון עם מקור השידור המקומי) בין האוזניות לבין מקור השידור. אפשר להשתמש בחיבור הקיים של LE ACL כדי לספק מידע על סיווג הערוץ מאוזניות ה-Earbuds (באמצעות מנות LL_CHANNEL_STATUS_IND) למקור השידור. לאחר מכן, מקור השידור יכול להשתמש במידע הזה כדי לשפר את מיפוי הערוצים של BIG.

לכן אנחנו מגדירים את LE_BIG_Set_Channel_Map_Classification_Command. הפקודה הזו מאפשרת לניהול מיפוי הערוצים במקור BIG לקחת בחשבון מידע על סיווג הערוצים שהתקבל ממכשירים היקפיים. הפקודה הזו מאפשרת להגדיר ל-Controller ידית חיבור ספציפית של LE ACL. אחרי קבלת המידע הזה, בקר ה-BIG יקבע את מיפוי הערוצים שלו על סמך נתוני סיווג הערוצים שמשויכים לחיבורי ה-ACL של ה-LE שסופקו.

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

LE_BIG_Set_Channel_Map_Classification_Command

קוד פעולה: 0xFD65 ‏ (OCF: ‏ 0x165)

פרמטר של פקודה גודל מטרה
Sub_opcode ‫1 octet ‫0x01 – הגדרת מיפוי ערוצים גדול לפי נקודות אחיזה של חיבור LE ACL
‫0x02-0x0E – שמור לשימוש עתידי
Set_BIG_Channel_Action ‫1 octet פעולה להוספה או למחיקה של BD_ADDR או של LE ACL Connection Handles, או לניקוי הכל.
‫0x00 – הוספה
‫0x01 – מחיקה
‫0x02 – ניקוי
‫0x03-0xFF – שמור
BIG_Handle ‫1 octet מציינת את הכינוי הגדול לעדכון עם סיווג הערוץ של הציוד ההיקפי
טווח: 0x00 עד 0xEF
cmd_para[] משתנה פרמטרים משתנים תלויים ב-Set_BIG_Channel_opcode

LE_BIG_Set_Channel_Map_Classification_Command_by_Conn_Handle

Sub OCF: 0x01

פרמטר של פקודה גודל מטרה
Sub_opcode ‫1 octet ‫0x01 – הגדרת מיפוי ערוצים גדול לפי נקודות אחיזה של חיבור LE ACL
‫0x02-0x0E – שמור לשימוש עתידי
Set_BIG_Channel_Action ‫1 octet פעולה להוספה או למחיקה של נקודות אחיזה לחיבור LE ACL, או לניקוי הכל.
‫0x00 – הוספה
‫0x01 – מחיקה
‫0x02 – ניקוי
‫0x03-0xFF – שמור
BIG_Handle ‫1 octet מציינת את ה-BIG handle לעדכון עם סיווג הערוץ של הציוד ההיקפי.
Range: 0x00 to 0xEF
Number_of_LE_ACL_Connections ‫1 octet המדיניות קובעת את מספר החיבורים של רשימת ה-ACL של LE שבהם יש להשתמש לעדכון מפת הערוצים של BIG.
התעלמות כש-Set_BIG_Channel_Action הוא Clear ‏ (0x02)
הטווח: 0x01 עד 0xFF
LE_ACL_Connection_Handles משתנה (Number_of_LE_ACL_Connections * 2 octets) גודל משתנה, בהתאם ל-Number_of_LE_ACL_Connections
יש להתעלם אם Set_BIG_Channel_Action הוא Clear ‏ (0x02)
טווח של ידיות חיבור: 0x0000 עד 0x0EFF

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet סטטוס השלמת הפקודה. הפונקציה מחזירה SUCCESS כשכל ה-conn_handle של LE ACL מתווספים.
Set_BIG_Channel_opcode ‫1 octet הפקודה Echo back של קוד האופרציה Set_BIG_Channel_opcode
Set_BIG_Channel_Action ‫1 octet הפקודה Echo back command's Set_BIG_Channel_Action
BIG_Handle ‫1 octet החזרת BIG_Handle של פקודה

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

האירוע הזה מציין אחד מהמקרים הבאים: התרחש אירוע איכות של Bluetooth, הבקר העלה את מעקב ההודעות של LMP/LL ואת מעקב התזמון של Bluetooth Multi-link/Coex, או שהבקר ביצע dump של נתוני מידע לניפוי באגים.

פרמטר של אירוע משני גודל מטרה
Quality_Report_Id ‫1 octet ‫0x01: דיווח על איכות במצב מעקב.
‫0x02: מתקרב ל-LSTO.
‫0x03: A2DP Audio Choppy.
‫0x04: (e)SCO Voice Choppy.
‫0x05 ~ 0x06: שמור.
‫0x07: LE Audio choppy.
‫0x08: חיבור נכשל.
‫0x09 עד 0xFF: שמור.
Packet_Types ‫1 octet ‫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_Role ‫1 octet ביצוע תפקיד לחיבור.
‫0x00: מרכזי
‫0x01: היקפי
‫0x02 עד 0xFF: שמור.
TX_Power_Level ‫1 octet רמת עוצמת השידור הנוכחית של Connection_Handle שצוין.

הערך הזה צריך להיות זהה לערך של בקר התגובה לפקודת HCI_Read_Transmit_Power_Level HCI.

RSSI ‫1 octet [in dBm]

ערך של אינדיקטור עוצמת האות המתקבל (RSSI) עבור Connection_Handle שצוין.
הערך הזה צריך להיות ערך מוחלט של עוצמת האות של המקלט.
טווח: ‎-127 to +20

SNR ‫1 octet [בדציבלים]

ערך יחס האות לרעש (SNR) עבור Connection_Handle שצוין.
הבקר יספק את יחס האות לרעש הממוצע של כל הערוצים שבהם נעשה שימוש בקישור.

Unused_AFH_Channel_Count ‫1 octet מציין את מספר הערוצים שלא בשימוש ב-AFH_channel_map.
‫0x4F עד 0xFF: שמור.
AFH_Select_Unideal_Channel_Count ‫1 octet מציין את מספר הערוצים שמופרעים ושאיכותם ירודה, אבל הם עדיין נבחרים ל-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 ‫1 octet מספר הפריטים שכיול שלהם נכשל
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 (ראו 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) כשדוח זה נוצר.
ביט 1 – רדיו WL 2G פעיל: מוגדר כדי לציין שרדיו WLAN 2G פעיל.
‫Bit 2 - WL 2G Connected: מוגדר כדי לציין שרדיו WLAN 2G פעיל ומחובר.
‫Bit 3 - WL 5G/6G Radio Active: Set to indicate WLAN 5G/6G Radio is active.
ביט 4 עד 15 – שמור
פרמטר ספציפי לספק (אורך כולל של הפרמטר – TBD) * אוקטט כדי שספק הבקר יקבל פרמטרים ספציפיים יותר לספק.

קוד אירוע משנה = ‏0x58 ‏[‎Quality_Report_Id = 0x05, אירוע של דלקת בשורש]

האירוע הזה מציין ש-Bluetooth HAL או הבקר נתקלו בשגיאה חמורה, וצריך להפעיל מחדש את מחסנית Bluetooth כדי לתעד את המצב הזה. הבקר צריך לשלוח את האירוע 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 ‫1 octet ‫0x00 עד 0x04: שמור.
‫0x05: דלקת בשורש.
‫0x06 עד 0xFF: שמור.
Error_Code ‫1 octet ‫0x00: קוד שגיאה ספציפי לספק של ערכת השבבים כלול.
‫0x01 עד 0xFF: אירעה שגיאה בבקר. רשימה של קודי שגיאה ותיאורים מופיעה במפרט Bluetooth [כרך 2], חלק D, קודי שגיאה.
Vendor_Specific_Error_Code ‫1 octet ‫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 ‫1 octet ‫0x06: ניטור אנרגיה
Average_Current_Consumption ‫2 אוקטטים [ב-mA] צריכת הזרם הממוצעת של כל הפעילויות שנצרכות על ידי הבקר
Idle_Total_Time (שינה) ‫4 אוקטטים ‫[in ms] הזמן הכולל במצב לא פעיל (מצבי צריכת חשמל נמוכה, שינה).
Idle_Sate_Enter_Count ‫4 אוקטטים מציין כמה פעמים הבקר נכנס למצב בלי פעילות.
Active_Total_Time ‫4 אוקטטים ‫[in ms] הזמן הכולל במצב פעיל (במהלך שאילתה, החלפה בין דפים, תנועה של ACL/SCO/eSCO/BIS/CIS, עיבוד של משימה כלשהי).
Active_State_Enter_Count ‫4 אוקטטים מציין כמה פעמים הבקר נכנס למצבים הפעילים.
BR_RDR_Tx_Total_Time ‫4 אוקטטים ‫[in ms] סך הזמן במצב Tx(שידור תנועה ספציפית של BR/EDR עבור ACL/SCO/eSCO).
BR_RDR_Tx_State_Enter_Count ‫4 אוקטטים מציין כמה פעמים הבקר נכנס למצב Tx ספציפי של BR/EDR.
BR_RDR_Tx_Average_Power_Level ‫8 תווים ‫[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 ‫8 תווים ‫[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 אוקטטים [במילי-שניות] משך הזמן של פעילות 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: הפרמטרים האלה מסווגים מנות שהתקבלו על סמך עוצמת האות שלהן. הדוח מספק תמונה ברורה של איכות הקישור על ידי הצגת מספר החבילות בטווחים ספציפיים של RSSI (למשל, פחות מ-90-dBm,‏ 70- עד 75-dBm). מספר גבוה של מדידות בעמודות של קליטה חלשה (לדוגמה, < ‎-90 dBm) מצביע על חיבור חלש.
  • דלתא של RSSI: המדד הזה מודד את ההבדל בעוצמת האות בין שתי האנטנות לקליטה (אם רלוונטי). המונים עוקבים אחרי מספר החבילות עם דלתא של RSSI<0x0A> בטווחים שונים. דלתא גדולה (למשל >‎11 dBm) יכולה להצביע על הפרעה או על חסימה פיזית, כי אנטנה אחת מקבלת אות חזק בהרבה מהאנטנה השנייה.
  • החלפת אנטנות ושידור חוזר: בדוח מפורט כמה פעמים הבקר מחליף בין אנטנות, ומתבצע מעקב אחרי מנות שמשודרות מחדש (ReTX). מספר גבוה של שידורים חוזרים מצביע בדרך כלל על חיבור חלש או לא אמין, שדורש שליחה מחדש של מנות.
  • איכות הערוץ: הפרמטרים האלה מספקים סיכום ברמה גבוהה של תקינות ערוצי תקשורת שונים, ומסווגים אותם כ'טובים', 'בסדר', 'גרועים' או 'גרועים מאוד' על סמך עוצמת האות (RSSI). כך אפשר לקבל סקירה כללית מיידית של סביבת ה-RF.
  • תור במאגר נתונים זמני של שידור: בקטע הזה אפשר לעקוב אחרי מספר המנות שממתינות בתור במאגר נתונים זמני של השידור של הבקר לסוגים שונים של קישורים, כמו ACL (קישור לוגי אסינכרוני מבוסס-חיבור), LECONN (חיבור LE) ו-LEISOC (איזו-כרוני LE). מספרים גבוהים של מאגרים זמניים יכולים להעיד על צוואר בקבוק או על בעיה בזרימת הנתונים מהמארח לבקר.
פרמטר של אירוע משני גודל מטרה
Quality_Report_Id ‫1 octet ‫0x09: Advance RF Stats By Trigger
0x0A: Advance RF Stats By Monitor
Extension_info ‫1 octet פרטי הגרסה של 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 בין 2 dBm ל-5 dBm
RSSI_delta_5_8 ‫4 אוקטטים מונה מנות של דלתא RSSI בין ‎5 dBm ל-‎8 dBm
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 ‫8 תווים מספר הערוצים שערך ה-RSSI שלהם נמוך מ-Bin-1 (<-90)
Channel_count_OK ‫8 תווים מספר הערוצים שערך ה-RSSI שלהם נמצא בטווח של Bin-2‏ (‎-90~-76)
Channel_count_Bad ‫8 תווים מספר הערוצים שערך ה-RSSI שלהם נמצא בטווח של Bin-3 ‏ (-76~‎-50)
Channel_count_VeryBad ‫8 תווים מספר הערוצים שערך ה-RSSI שלהם נכלל בטווח של Bin-4 (>-50)
TX_buffer_Queue_Count ‫4 אוקטטים מונה של תור במאגר נתונים זמני (buffer queue) של בקר הסטטוס – מאגר הנתונים הזמני של 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: האירוע עוקב אחרי המספר הכולל של חבילות הנתונים שנשלחו מהמארח לבקר ולהפך. המונים האלה חיוניים לניפוי באגים ב-Host Controller Interface (HCI) transport, שהוא ערוץ התקשורת בין מחסנית התוכנה לבין שבב בקר ה-Bluetooth.
  • אורכי מנות: האירוע מדווח על האורך של מנת ה-HCI האחרונה שנשלחה ושהתקבלה. כך אפשר לוודא שהנתונים מועברים בצורה נכונה ושאין בעיות לא צפויות בגודל.
  • מספר האותות להפעלת המכשיר: הדוח כולל את המספר הכולל של הפעמים שבהן הוצהרו הפינים 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 אוקטטים חותמת הזמן האחרונה שבה המארח טען את פין ההפעלה של ה-Bluetooth.השדה הזה מיועד לניפוי באגים בבעיות שקשורות להפעלה.
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 מופעל כרגע.
פרמטר של אירוע משני גודל מטרה
Quality_Report_Id ‫1 octet ‫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 ופריקת נתונים של מידע על ניפוי באגים בבקר.

קוד אירוע משנה = ‏0x58 ‏[‎Quality_Report_Id = 0x16, אירוע מקור של שידור LEA]

הפרמטרים BIG Handle עד Timestamp מאפשרים לבקר לדווח באופן יזום על פרטי המקור של השידור, כולל BD_ADDR שמועבר דרך האוויר ומפת הערוצים BIG שנעשה בה שימוש כרגע. הפרמטרים מ-Broadcast ID of Broadcast Receiver Subscribed עד RSSI מיועדים למקלט שידורים כדי לדווח על מידע לגבי מקור ה-BIG שאליו נרשמתם. המידע הזה צריך להיות מועבר מ-מקלט שידורים למקור BIG דרך PAwR, חיבור LE ACL או שיטות רלוונטיות אחרות.

פרמטר של אירוע משני גודל מטרה
Quality_Report_Id ‫1 octet ‫0x16: אירוע מקור שידור LEA.
BIG_Handle ‫1 octet ה-BIG handle שהוקצה על ידי המארח.
Broadcast_Source_BD_ADDR_Type ‫1 octet סוג BD_ADDR של מקור שידור (ידית BIG) שנשלח לאוויר.
Broadcast_Source_BD_ADDR ‫6 אוקטטות כתובת ה-BD_ADDR של מקור השידור (ה-handle של ה-BIG) שנשלחה לאוויר.
BIG_Source_Prefer_Channel_Map ‫5 אוקטטים מיפוי הערוצים הגדול שמועדף על ידי הבקר ומזוהה על ידי סיווג הערוצים.
BIG_Source_Used_Channel_Map ‫5 אוקטטים הערוץ הגדול (BIG) שבו הבקר משתמש.
BIG_TX_Power ‫1 octet עוצמת השידור הנוכחית שמשמשת במזהה השידור.
Timestamp ‫4 אוקטטים חותמת הזמן (שעון Piconet) של ה-BIG Handle שצוין. הערך הזה צריך להיות זהה לערך של הפקודה HCI_Read_Clock HCI שהבקר מגיב לה עם הפרמטר Which_Clock של 0x01 (שעון Piconet).
יחידה: N * 0.3125 ms (שעון Bluetooth אחד)
Broadcast_ID_of_Broadcast_Receiver_Subscribed ‫3 אוקטטים מזהה השידור המנוי של מכשיר הלקוח.
ערך לא תקין: 0xFFFFFF
Broadcast_Receiver_BD_ADDR_Type ‫1 octet סוג ה-BD_ADDR של מקלט השידורים.
ערך לא תקין: 0xFF
Broadcast_Receiver_BD_ADDR ‫6 אוקטטות כתובת ה-BD_ADDR של מקלט השידורים.
ערך לא תקין: 0x000000000000
Time_Duration ‫4 אוקטטים משך הזמן לאיסוף נתוני הביצועים.
יחידה: אלפיות שנייה.
ערך לא תקין: 0xFFFFFFFF
BIS_Choppy_count ‫4 אוקטטים ‫BIS Choppy count: ספירת שיחות עם הפרעות עם Time_Duration.
ערך לא תקין: 0xFFFFFFFF
PER ‫4 אוקטטים שיעור השגיאות במנות (PER) בתוך Time_Duration.
ערך לא תקין: 0xFFFFFFFF
No_Sync ‫4 אוקטטים מספר הפעמים שבהן RX לא מסונכרן.
ערך לא תקין: 0xFFFFFFFF
Receiver_Prefer_Channel_Map ‫5 אוקטטים מציין את מיפוי הערוצים של מקלט השידור.
ערך לא תקין: 0x0000000000
Receiver_Tx_Power ‫1 octet מציין את רמת העוצמה שבה מועבר ממקלט השידורים חבילת נתונים.
ערך לא תקין: 0xFF
RSSI ‫1 octet ה-RSSI של המנות שהתקבלו ממקלט השידורים.
ערך לא תקין: 0x7F
Reserved ‫4 אוקטטים שמור

קוד אירוע משנה = 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 אוקטטים העיכוב במיקרו-שניות בין יצירת האירוע לבין נקודת העוגן או תחילת המרווח לפי ISO. חותמת הזמן של נקודת העוגן בפועל מוגדרת לפי:
Event generation time - Anchor_Point_Delay

טווח: 0 עד מרווח ISO במיקרו-שניות
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 ‫1 octet ‫0x01 – Set_Advt_Param_Multi_Sub_Cmd
‫ 0x02 – Set_Advt_Data_Multi_Sub_Cmd
‫ 0x03 – Set_Scan_Resp_Data_Multi_Sub_Cmd
‫ 0x04 – Set_Random_Addr_Multi_Sub_Cmd
‫ 0x05 – Set_Advt_Enable_Multi_Sub_Cmd

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
Multi_advt_opcode ‫1 octet ‫0x01 – Set_Advt_Param_Multi_Command
‫ 0x02 – Set_Advt_Data_Multi_Command
‫ 0x03 – Set_Scan_Resp_Data_Multi_Command
‫ 0x04 – Set_Random_Addr_Multi_Command
‫ 0x05 – 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 ‫1 octet מציין את תחולת הפרמטרים שלמעלה על מופע
Tx_power ‫1 octet Transmit_Power
יחידה – ב-dBm (מספר שלם עם סימן)
טווח (‎-70 עד ‎+20)

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

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

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
Multi_advt_opcode ‫1 octet 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 ‫1 octet מציין את תחולת הפרמטרים שלמעלה על מופע

אירוע Command Complete ייווצר עבור הפקודה הזו, כפי שמצוין במפרט Bluetooth Core 4.1, בהתאם לפקודה שלמעלה. הבקר יגיב עם קוד שאינו קוד הצלחה אם מופע הפרסום או הפרמטרים של Tx_Power לא תקינים.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
Multi_advt_opcode ‫1 octet 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 ‫1 octet מציין את תחולת הפרמטרים שלמעלה על מופע

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

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
Multi_advt_opcode ‫1 octet 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 ‫1 octet מציין את תחולת הפרמטרים שלמעלה על מופע

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
Multi_advt_opcode ‫1 octet 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 octet הערך 1 מציין הפעלה. כל ערך אחר משמעותו השבתה.
Advertising_Instance ‫1 octet מציין את תחולת הפרמטרים שלמעלה על מופע. מכונה 0 מייצגת מכונת HCI רגילה.

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
Multi_advt_opcode ‫1 octet 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 ‫1 octet הסטטוס של הפקודה.

ערכי הסטטוס המומלצים של 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 ‫1 octet ‫0x1 – הפעלת תכונה ספציפית ללקוח
‫0x2 – הוספת IRK לרשימה
‫0x3 – הסרת IRK מהרשימה
‫0x4 – ניקוי רשימת ה-IRK
‫0x5 – קריאת רשומה ברשימת ה-IRK

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
Event_RPA_offload_opcode ‫1 octet ‫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 ‫1 octet ‫0x01 – הפעלת התכונה של RPA עם הורדת עומס
‫ 0x00 – השבתת התכונה של RPA עם הורדת עומס

המארח צריך להפעיל את העברת העומס של RPA על סמך יכולת השבב. מידע נוסף מפורט בLE_Get_Vendor_Capabilities_Command. לכל שבב יכול להיות max_irk_list_sz שונה בקושחה.

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
Event_cust_specific_feature_opcode ‫1 octet ‫0x01 [הפעלת תכונה ספציפית ללקוח]

LE_RPA_offload: Add_IRK_to_list_sub_Command

Sub OCF: 0x02

פרמטר של פקודת משנה גודל מטרה
LE_IRK ‫16 אוקטטים LE IRK (הבייט הראשון LSB)
Address_Type ‫1 octet ‫0: כתובת ציבורית
‫1: כתובת אקראית
LE_Device_Address ‫6 אוקטטות כתובת ציבורית או אקראית שמשויכת ל-IRK (הבייט הראשון LSB)

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
Event_cust_specific_feature_opcode ‫1 octet ‫0x02 [Add IRK to the list]
LE_IrkList_AvailableSpaces ‫1 octet רשומות ברשימת ה-IRL שזמינות אחרי הפעולה הנוכחית

LE_RPA_offload: Remove_IRK_to_list_sub_Command

Sub OCF: 0x03

פרמטר של פקודת משנה גודל מטרה
Address_Type ‫1 octet ‫0: כתובת ציבורית
‫1: כתובת אקראית
LE_Device_Address ‫6 אוקטטות כתובת ציבורית או אקראית שמשויכת ל-IRK

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
Event_cust_specific_feature_opcode ‫1 octet ‫0x03 [הסרת IRK מהרשימה]
LE_IrkList_AvailableSpaces ‫1 octet רשומות ברשימת ה-IRL שזמינות אחרי הפעולה הנוכחית

LE_RPA_offload: Clear_IRK_list_sub_Command

Sub OCF: 0x04

פרמטר של פקודת משנה גודל מטרה
ללא

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
Event_cust_specific_feature_opcode ‫1 octet ‫0x04 [Clear IRK List]
LE_IrkList_AvailableSpaces ‫1 octet רשומות זמינות ברשימת ה-IRL אחרי הפעולה הנוכחית [max_irk_list_sz]

LE_RPA_offload: Read_IRK_list_sub_Command

Sub OCF: 0x05

פרמטר של פקודת משנה גודל מטרה
LE_read_IRK_list_entry-index ‫1 octet אינדקס של רשימת ה-IRK‏ [0, max_irk_list_sz-1]

אירוע Command Complete (הפקודה הושלמה) ייווצר עבור הפקודה הזו.

פרמטר החזרה גודל מטרה
Status ‫1 octet הסטטוס Command Complete
Event_cust_specific_feature_opcode ‫1 octet ‫0x05 [קריאת רשומה ברשימת IRK]
LE_Read_IRK_List_entry ‫1 octet אינדקס של ה-IRK שהמארח רוצה לקרוא בחזרה (גודל רשימת ה-IRK המקסימלי הוא 32)
LE_IRK ‫16 אוקטטים ערך IRK
Address_Type ‫1 octet ‫0: כתובת ציבורית
‫1: כתובת אקראית
LE_Device_Address ‫6 אוקטטות כתובת ציבורית או אקראית שמשויכת ל-IRK
LE_Resolved_Private_Address ‫6 אוקטטות כתובת פרטית נוכחית שניתן לפתור את הבעיה שלה ב-IRK הזה

Sniff Offload

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

מצב בקר הופעל

רשימת ACL נחשבת במצב Control-Started אם בקר ה-Bluetooth נמצא במצב Sniff Offload Enabled, והפקודה WriteSniffOffloadParameters הספציפית לספק הונפקה לפחות פעם אחת על ידי מארח ה-Bluetooth עבור רשימת ה-ACL הנוכחית.

WriteSniffOffloadEnable

OCF: 0x310

פרמטר של פקודה גודל מטרה
Enable_Sniff_Offload ‫1 octet ‫0x00 : השבתה
‫0x01 : הפעלה
Subrating_Max_Latency ‫2 אוקטטים הפרמטר Maximum Latency (זמן האחזור המקסימלי) ישמש לחישוב קצב המשנה המקסימלי של ההרחה שבו המכשיר שמחובר לרשת אחרת יכול להשתמש. ברירת מחדל: זמן האחזור של T*sniff* ‎‏ = N × 0.625 ms (משבצת אחת של פס בסיס) טווח: 0x0002 עד 0xFFFE טווח זמן: 1.25 מילי-שנייה עד 40.9 שניות
Subrating_Min_Remote_Timeout ‫2 אוקטטים הזמן הקצוב המינימלי לתפוגה של מצב Sniff (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 ‫1 octet ‫0x00 : בקר ה-Bluetooth ידווח על אירוע HCI Mode_Change למארח, בכפוף להגדרה שנקבעה בפקודה HCI_Set_Event_Mask.
‫0x01 : בקר ה-Bluetooth לא ידווח על אירוע HCI Mode_Change למארח.
Suppress_Sniff_Subrating_Event ‫1 octet ‫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 : משמש לבחירת מצב 'העברה פעילה' 'העברת נתונים לזיכרון המטמון'. ‫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 מילי-שנייה עד 40.9 שניות
Subrating_Min_Remote_Timeout ‫2 אוקטטים הזמן הקצוב המינימלי לתפוגה של מצב Sniff (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 ‫1 octet דגל לשליטה ביציאה ממצב 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 ‫1 octet דגל לשליטה ביציאה ממצב 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.