ממשק הבקר המארח (HCI) משמש לאינטראקציה עם בקר Bluetooth.
במסמך הזה מפורטות הדרישות של ממשק HCI ל-Bluetooth (BT) ול-Bluetooth עם צריכת אנרגיה נמוכה (BLE). המטרה היא שספקי סטאק BT למארח וספקי בקרי BT יעמדו בדרישות הפלטפורמה האלה כדי להשתמש בקבוצת התכונות שמתוארת בהמשך.
במסמך הזה, מפרט Bluetooth Core 5.2 נקרא "מפרט". המפרט של Bluetooth Core 5.2 זמין ב אתר של Bluetooth SIG, יחד עם מסמכים מאושרים אחרים.
סקירה כללית על העיצוב
יכולות ותצורה של צ'יפ
Android היא פלטפורמה פתוחה עם מטריצה של גרסאות תוכנה, יצרני ציוד מקורי (OEM), ספקים ויכולות של פלטפורמות ושבבים.
כדי לנהל את הסביבה המשתנה ולנהל את ההעברות, במסמך הזה מתוארת פילוסופיית תכנון שמאפשרת לבקרים של BT לחשוף את היכולות שלהם (מעבר למפרט הסטנדרטי של Bluetooth Core 5.2). לאחר מכן, סטאק ה-BT המארח יכול להשתמש ביכולות האלה כדי לקבוע אילו תכונות להפעיל.
תמיכה בתקנים פתוחים
אחד מהיעדים של Android הוא לתמוך בתקנים פתוחים אחרי אישור במפרט Bluetooth. אם תכונה שמתוארת בהמשך תהיה זמינה בשיטות HCI רגילות במפרט Bluetooth עתידי, נשתדל להפוך את הגישה הזו לברירת המחדל.
יכולות ספציפיות לספק
פקודה ספציפית לספק: LE_Get_Vendor_Capabilities_Command
שדה הפקודה של קוד הפעולה (OCF): 0x153
פרמטר של פקודה | גודל | המטרה |
---|---|---|
לא רלוונטי | רשימת פרמטרים ריקה של פקודה |
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
max_advt_instances (הוצאה משימוש) |
אוקטט אחד |
מספר המופעים של המודעות שנתמכים. השדה הזה שמור לגרסה 0.98 ואילך. הפרמטר הזה הוצא משימוש במפרט התכונות של Google בגרסה 0.98 ואילך, לטובת LE Extended Advertising שזמין במפרט BT בגרסה 5.0 ואילך. |
offloaded_resolution_of_private-address (הוצאה משימוש) |
אוקטט אחד |
יכולת הצ'יפ של BT ב-RPA. אם יש תמיכה בצ'יפ, צריך להפעיל אותו במארח. 0 = לא מסוגל 1 = מסוגל שמורה אחרי גרסה 0.98. הפרמטר הזה הוצא משימוש במפרט התכונות של Google בגרסה 0.98 ואילך, לטובת תכונה לשמירה על הפרטיות שזמינה במפרט BT בגרסה 4.2 ואילך. |
total_scan_results_storage |
2 אוקטטים | נפח האחסון של תוצאות הסריקה, בבייט |
max_irk_list_sz |
אוקטט אחד | מספר הרשומות של IRK שנתמכות בקושחה |
filtering_support |
אוקטט אחד |
תמיכה בסינון בבקרה 0 = לא נתמך 1 = נתמך |
max_filter |
אוקטט אחד | מספר המסננים הנתמכים |
activity_energy_info_support |
8 תווים |
תמיכה בדיווח על נתוני פעילות ואנרגיה 0 = אין תמיכה 1 = יש תמיכה |
version_supported |
2 אוקטטים |
מציין את הגרסה של מפרט התכונות של Google שנתמכת byte[0] = מספר ראשי byte[1] = מספר משני v1.04 byte[0] = 0x01 byte[1] = 0x04 |
total_num_of_advt_tracked |
2 אוקטטים |
המספר הכולל של המפרסמים שנערכת עליהם מעקב למטרות OnLost /OnFound
|
extended_scan_support |
אוקטט אחד | תמיכה בחלון ובמרווח זמן מורחבים לסריקה |
debug_logging_supported |
אוקטט אחד | תמיכה ברישום ביומן של פרטי ניפוי באגים בינאריים מהבקר |
LE_address_generation_offloading_support (הוצאה משימוש) |
אוקטט אחד |
0 = לא נתמך 1 = נתמך שמור אחרי גרסה 0.98. הפרמטר הזה הוצא משימוש במפרט התכונות של Google בגרסה 0.98 ואילך, לטובת תכונה לשמירה על הפרטיות שזמינה במפרט BT בגרסה 4.2 ואילך. |
A2DP_source_offload_capability_mask |
4 אוקטטים |
מסכות ביטים של סוגי הקודקים הנתמכים ביט 0 – SBC ביט 1 – AAC ביט 2 – APTX ביט 3 – APTX HD ביט 4 – LDAC ביטים 5-31 שמורים |
bluetooth_quality_report_support |
אוקטט אחד |
תמיכה בדיווח על אירועי איכות של Bluetooth 0 = אין יכולת 1 = יש יכולת |
dynamic_audio_buffer_support |
4 אוקטטים |
תמיכה במאגר אודיו דינמי ב-Bluetooth Controller מסיכות ביט לסוגי הקודקים הנתמכים ביט 0 – SBC ביט 1 – AAC ביט 2 – APTX ביט 3 – APTX HD ביט 4 – LDAC ביטים 5-31 שמורים |
a2dp_offload_v2_support |
אוקטט אחד |
תמיכה בפקודות A2DP offload v2 ב-Bluetooth controller (ראו Start A2DP offload, Stop A2DP offload) 0 = לא נתמך 1 = נתמך |
תוצאות של סריקה בכמות גדולה
מטרת התכנון היא לשפר את האופן שבו התראות על אירועי תגובה לסריקה של Bluetooth LE מועברות למארח, כדי לחסוך באנרגיה במארח.
אם תפחיתו את התדירות שבה הבקר מודיע למעבד של אפליקציית המארח לסרוק את התוצאות, מעבד אפליקציית המארח יוכל להישאר במצב חוסר פעילות או שינה למשך זמן ארוך יותר. כך ניתן לצמצם את צריכת החשמל במארח. הפרמטר המוחזר total_scan_results_storage
של LE_Get_Vendor_Capabilities_Command
מציין את יכולת השמירה של התוצאות מהסריקה.
התכונה הזו מתמקדת בניהול ובהגדרה של מאגר התוצאות של סריקת LE ב-Bluetooth Controller. האחסון משמש לאיסוף זמני של נתוני מודעות ולסריקה של נתונים ומטא-נתונים שמתקבלים על ידי הבקר, לצורך העברה מאוחר יותר למארח.
הקושחה תומכת בשני סוגים של קיבוץ, שאפשר להפעיל בו-זמנית:
- חתוך. מכיל את רכיבי המידע הבאים: {MAC, TX Power, RSSI, Timestamp}
- מלא. מכיל את רכיבי המידע הבאים: {MAC, TX Power, RSSI, Timestamp, Adv Data, Scan Response}
LE_Batch_Scan_Command
OCF: 0x156
פרמטר של פקודה | גודל | המטרה |
---|---|---|
Batch_Scan_opcode |
אוקטט אחד |
0x1 – הפעלת תכונה ספציפית ללקוח 0x2 – הגדרת פרמטרים של אחסון של סריקת אצווה 0x3 – הגדרת פרמטרים של סריקת אצווה 0x4 – קריאת פרמטרים של תוצאות סריקת אצווה |
ייווצר אירוע Command Complete עבור הפקודה הזו. הפעלת התכונה הספציפית ללקוח לא מתחילה את הסריקה.
פרמטר להחזרה | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
Batch_Scan_opcode |
אוקטט אחד |
0x1 – הפעלת תכונה ספציפית ללקוח 0x2 – הגדרת פרמטרים של אחסון של סריקת אצווה 0x3 – הגדרת פרמטרים של סריקת אצווה 0x4 – קריאת פרמטרים של תוצאות סריקת אצווה |
LE_Batch_Scan_Command: הפעלת תכונה ספציפית ללקוח
Sub OCF: 0x01
פרמטר של פקודת משנה | גודל | המטרה |
---|---|---|
enable_customer_specific_feature_set |
אוקטט אחד |
0x01 – הפעלת התכונה 'סריקה בכמות גדולה' 0x00 – השבתת התכונה 'סריקה בכמות גדולה' |
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
Batch_Scan_opcode |
אוקטט אחד |
0x1 – הפעלת תכונה ספציפית ללקוח 0x2 – הגדרת פרמטרים של אחסון של סריקת אצווה 0x3 – הגדרת פרמטרים של סריקת אצווה 0x4 – קריאת פרמטרים של תוצאות סריקת אצווה |
LE_Batch_Scan_Command: פקודה משנית להגדרת פרמטר האחסון של סריקת באצ'ט
Sub OCF: 0x02
פרמטר של פקודת משנה | גודל | המטרה |
---|---|---|
Batch_Scan_Full_Max |
אוקטט אחד |
נפח האחסון המקסימלי (באחוזים) שהוקצה לסגנון מלא [טווח: 0-100] |
Batch_Scan_Truncated_Max |
אוקטט אחד |
נפח האחסון המקסימלי (באחוזים) שהוקצה לסגנון המקוצר [טווח: 0-100] |
Batch_Scan_Notify_Threshold |
אוקטט אחד |
הגדרת רמת ההתראות (באחוזים) למאגר אחסון ספציפי
[טווח: 0-100] הגדרה של 0 תשבית את ההתראות. נוצר אירוע HCI ספציפי לספק (אירוע משנה של הפרת סף אחסון) |
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
Batch_scan_opcode |
אוקטט אחד | 0x02 [הגדרת פרמטרים של סריקה בכמות גדולה] |
LE_Batch_Scan_Command: פקודה משנית להגדרת פרמטר של סריקה בכמות גדולה
Sub OCF: 0x03
פרמטר של פקודת משנה | גודל | המטרה |
---|---|---|
Batch_Scan_Mode |
אוקטט אחד |
0x00 – הסריקה בכמות גדולה מושבתת 0x01 – מצב קטועה מופעל 0x02 – מצב מלא מופעל 0x03 – מצב קטועה ומצב מלא מופעלים |
Duty_cycle_scan_window |
4 אוקטטים | זמן הסריקה של Batch Scan (# of slot) |
Duty_cyle_scan_interval |
4 אוקטטים | פרק הזמן של מרווח הזמן לסריקה בכמות גדולה (מספר המשבצות) |
own_address_type |
אוקטט אחד |
0x00 – כתובת מכשיר ציבורית 0x01 – כתובת מכשיר אקראית |
Batch_scan_Discard_Rule |
אוקטט אחד |
0 – ביטול המודעה הישנה ביותר 1 – ביטול המודעה עם ערך ה-RSSI החלש ביותר |
הפקודה המשנית הזו תתחיל סריקה באצווה, אם היא מופעלת. בסריקה עם קיצוץ, התוצאות מאוחסנות בצורה מקוצרת, כאשר המפתח הייחודי לסגנון המקוצר הוא {BD_ADDR,
scan_interval}. כלומר, רק BD_ADDR will
אחד יירשם לכל מרווח סריקה. הרשומה שצריך לשמור במצב Truncated היא: {BD_ADDR
, Tx Power, RSSI, Timestamp}
כשמפעילים את המצב המלא, נעשה שימוש בסריקה פעילה והתגובות לסריקה מתועדות. המפתח הייחודי בסגנון מלא = {MAC, Ad packet}, ללא קשר למרווח הסריקה. הרשומה שצריך לשמור במצב מלא היא
{BD_ADDR
, Tx Power, RSSI, Timestamp, Ad packet, Scan
Response}. בסגנון מלא, אותה חבילה של מודעות, אם היא מופיעה כמה פעמים במרווחי סריקה שונים, מתועדת רק פעם אחת. עם זאת, במצב Truncated, העניין הוא בחשיפה של BA_ADDR
במרווחי סריקה שונים (פעם לכל מרווחי הסריקה). הערך של RSSI הוא הערך הממוצע של כל העותקים הכפולים של מודעה ייחודית במהלך מרווח הסריקה.
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
Batch_scan_opcode |
אוקטט אחד | 0x03 [הגדרת פרמטרים של סריקה בכמות גדולה] |
LE_Batch_Scan_Command: פקודת משנה לקריאת תוצאות של סריקה בכמות גדולה
Sub OCF: 0x04
פרמטר של פקודת משנה | גודל | המטרה |
---|---|---|
Batch_Scan_Data_read |
אוקטט אחד |
0x01 – נתונים במצב קטועים 0x02 – נתונים במצב מלא |
ייווצר אירוע Command Complete עבור הפקודה הזו. כשהמארח נותן את הפקודה הזו, יכול להיות שכל התוצאות בבקרה לא ייכנסו לאירוע אחד של Command Complete. המארח ימשיך להוציא את הפקודה הזו עד שהתוצאות התואמות באירוע Command Complete יציינו 0 במספר הרשומות, מה שמציין שלבקר אין יותר רשומות להעביר למארח. כל אירוע Command Complete יכול להכיל כמה רשומות של סוג נתונים אחד בלבד (מלא או חתוך).
ההפניות לזמן של הבקר והמארח לא מסונכרנות. יחידת חותמת הזמן היא 50 אלפיות השנייה. הערך של חותמת הזמן מבוסס על המועד שבו המארח הגדיר את הערך של Read_Batch_Scan_Results_Sub_cmd
. אם זמן ההגעה של הפקודה הוא T_c
בקושחה, הזמן בפועל שבו חותמת הזמן נלקחה בקושחה הוא T_fw
. זמן הדיווח יהיה:
(T_c
- T_fw
). הערכים T_c
ו-T_fw
נמצאים במרחב הזמן של הקושחה. כך המארח יכול לחשב כמה זמן עבר מאז האירוע.
פרמטר להחזרה | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
Batch_scan_opcode |
אוקטט אחד | 0x03 [Set Batch Scan parameters] |
Batch_Scan_data_read |
אוקטט אחד | מזהה את הפורמט (קטועה או מלאה) |
num_of_records |
אוקטט אחד | מספר הרשומות של Batch_Scan_data_read |
format_of_data |
משתנה |
מצב קטועה: Address[0]: 6 octets Address_Type[0]: 1 octet Tx_Pwr[0]: 1 octet RSSI[0] : 1 octet Timestamp[0]: 2 octets [multiple records ( num_of_records ) with above format]מצב מלא: Address[0]: 6 octets Address_Type[0]: 1 octet Tx_Pwr[0]: 1 octet RSSI[0]: 1 octet Timestamp[0]: 2 octets Adv packet_len[0]: 1 octet Adv_packet[0]: Adv_packet_len octets Scan_data_resp_len[0]: 1 octet Scan_data_resp[0]: Scan_data_resp octets[multiple records with above format ( num_of_records )]
|
מסנן תוכן של חבילות פרסום
אפשר להשתמש בהגדרה הזו כדי להפעיל, להשבית או להגדיר את מסנן התוכן של חבילות הפרסום (APCF) בבקרים. APCF מסנן דוחות פרסום במסוף, אבל לא מסנן פרסום תקופתי.
LE_APCF_Command
OCF: 0x157
פרמטר של פקודה | גודל | המטרה |
---|---|---|
APCF_opcode |
אוקטט אחד |
0x00 – הפעלת APCF 0x01 – הגדרת הפרמטרים של סינון ב-APCF 0x02 – כתובת של משדר ב-APCF 0x03 – מזהה UUID של שירות ב-APCF 0x04 – מזהה UUID של בקשה לשירות ב-APCF 0x05 – שם מקומי ב-APCF 0x06 – נתוני היצרן ב-APCF 0x07 – נתוני השירות ב-APCF 0x08 – שירות גילוי התעבורה ב-APCF 0x09 – מסנן של סוג ה-AD ב-APCF 0x10 עד 0xAF – שמורים לשימוש עתידי 0xB0 עד 0xDF – שמורים לספק 0xE0 עד 0xFE – שמורים לשימוש עתידי 0xFF – קריאת תכונות מורחבות ב-APCF |
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס ההחזרה |
APCF_opcode |
אוקטט אחד |
0x00 – הפעלת APCF 0x01 – הגדרת הפרמטרים של סינון ב-APCF 0x02 – כתובת של משדר ב-APCF 0x03 – מזהה UUID של שירות ב-APCF 0x04 – מזהה UUID של בקשה לשירות ב-APCF 0x05 – שם מקומי ב-APCF 0x06 – נתוני היצרן ב-APCF 0x07 – נתוני השירות ב-APCF 0x08 – שירות גילוי התעבורה ב-APCF 0x09 – מסנן של סוג ה-AD ב-APCF 0x10 עד 0xAF – שמורים לשימוש עתידי 0xB0 עד 0xDF – שמורים לספק 0xE0 עד 0xFE – שמורים לשימוש עתידי 0xFF – קריאת תכונות מורחבות ב-APCF |
LE_APCF_Command: Enable_sub_cmd
Sub OCF: 0x00
פרמטר של פקודת משנה | גודל | המטרה |
---|---|---|
APCF_enable |
אוקטט אחד |
0x01 – הפעלת התכונה APCF 0x00 – השבתת התכונה APCF |
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
APCF_opcode |
אוקטט אחד | 0x0 – הפעלת APCF |
APCF_Enable |
אוקטט אחד | ההפעלה או ההשבתה מוגדרות דרך APCF_enable |
LE_APCF_Command: set_filtering_parameters_sub_cmd
פקודת המשנה הזו משמשת להוספה או למחיקה של מפרט מסנן, או לניקוי רשימת המסננים לסינון בשבב.
Sub OCF: 0x01
פרמטר של פקודת משנה | גודל | המטרה |
---|---|---|
APCF_Action |
אוקטט אחד |
0x00 – הוספה 0x01 – מחיקה 0x02 – ניקוי המחיקה תמחק את המסנן הספציפי ואת הרשומות של המאפיינים המשויכים בטבלאות אחרות. לחיצה על סמל הניקוי תמחק את כל המסננים והרשומות המשויכות בטבלאות אחרות. |
APCF_Filter_Index |
אוקטט אחד | מסנן אינדקס (0, max_filter-1 ) |
APCF_Feature_Selection |
2 אוקטטים |
מסיכות ביט לתכונות שנבחרו: ביט 0: מוגדר להפעלת מסנן כתובת השידור ביט 1: מוגדר להפעלת מסנן לשינוי נתוני השירות ביט 2: מוגדר להפעלת בדיקה של מזהה UUID של השירות ביט 3: מוגדר להפעלת בדיקה של מזהה UUID של בקשת השירות ביט 4: מוגדר להפעלת בדיקה של השם המקומי ביט 5: מוגדר להפעלת בדיקה של נתוני היצרן ביט 6: מוגדר להפעלת בדיקה של נתוני השירות ביט 7: מוגדר להפעלת בדיקה של שירות גילוי התעבורה ביט 8: מוגדר להפעלת בדיקה של סוג ה-AD |
APCF_List_Logic_Type |
2 אוקטטים |
פעולה לוגית לכל בחירת תכונה (לכל עמדת ביט) שצוינה ב-APCF_Feature_Selection .
תקף רק כשתכונה מופעלת. הערך של מיקום הבייט: 0: OR 1: AND אם בוחרים בלוגיקת AND, חבילה של ADV תעבור את המסנן רק אם היא מכילה את כל הרשומות ברשימה. אם בוחרים בלוגיקת 'OR', חבילה של ADV תעבור את המסנן אם היא מכילה אחת מהרשומות ברשימה. |
APCF_Filter_Logic_Type |
אוקטט אחד |
0x00: OR 0x01: AND הערה: סוג הלוגיקה הוא N/A בשלושת השדות הראשונים של APCF_Feature_Selection , שהם תמיד לוגיקה מסוג 'AND'. הן רלוונטיות רק לארבעה שדות של APCF_Feature_Selection (ביט 3 עד ביט 6).
|
rssi_high_thresh |
אוקטט אחד |
[ב-dBm] המפרסם נחשב כגלוי רק אם האות גבוה מהסף הגבוה של RSSI. אחרת, הקושחה צריכה לפעול כאילו היא אף פעם לא ראתה אותו. |
delivery_mode |
אוקטט אחד |
0x00 – immediate 0x01 – on_found 0x02 – batched
|
onfound_timeout |
2 אוקטטים |
תקף רק אם הערך של delivery_mode הוא on_found .[במיליסקונדים] הזמן שחלף עד שהתוכנה הקבועה (firmware) התעכבה ואספה מודעות נוספות לפני הדיווח. |
onfound_timeout_cnt |
אוקטט אחד |
תקף רק אם הערך של delivery_mode הוא on_found .[count] אם מודעה ב- onFound נשארת בקושחה למשך onfound_timeout , היא תאסוף כמה מודעות והספירה תבדק. אם המספר חורג מ-onfound_timeout_cnt , הוא מדווח OnFound מיד לאחר מכן.
|
rssi_low_thresh |
אוקטט אחד |
תקף רק אם הערך של delivery_mode הוא on_found .[ב-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 |
אוקטט אחד | סטטוס Command Complete |
APCF_opcode |
אוקטט אחד | 0x01 – APCF Set Filtering Parameters |
APCF_Action |
אוקטט אחד | הדהוד של APCF_Action בפקודה |
APCF_AvailableSpaces |
אוקטט אחד | מספר הרשומות הזמינות בטבלת המסננים |
LE_APCF_Command: broadcast_address_sub_cmd
הפקודה המשנית הזו משמשת להוספה או למחיקה של כתובת של מפרסם, או לניקוי רשימת הכתובות של המפרסמים לצורך סינון בשבב.
Sub OCF: 0x02
פרמטר של פקודת משנה | גודל | המטרה |
---|---|---|
APCF_Action |
אוקטט אחד |
0x00 – הוספה 0x01 – מחיקה 0x02 – ניקוי המחיקה תמחק את כתובת השידור המצוינת במסנן שצוין. הלחצן Clear ינקה את כל כתובות השידור במסנן שצוין. |
APCF_Filter_Index |
אוקטט אחד | מסנן אינדקס (0, max_filter-1 ) |
APCF_Broadcaster_Address |
6 אוקטטים | כתובת מכשיר בת 6 בייטים שרוצים להוסיף לרשימת הכתובות של המפרסם או למחוק ממנה |
APCF_Application_Address_type |
אוקטט אחד |
0x00: ציבורי 0x01: אקראי 0x02: לא רלוונטי (המערכת מתעלמת מסוג הכתובת) כדי לסנן דוחות פרסום עם סוגי כתובות של זהויות (0x02, 0x03). כדי לקבל דוחות פרסום עם סוגי כתובות 0x02 ו-0x03, מגדירים את השדה הזה לערך 0x02: NA (מתעלמים מסוג הכתובת). |
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
APCF_opcode |
אוקטט אחד | 0x02 – כתובת של משדר APCF |
APCF_Action |
אוקטט אחד | הדהוד של APCF_Action בפקודה |
APCF_AvailableSpaces |
אוקטט אחד | מספר הרשומות בחינם שעדיין זמינות בטבלה Broadcast Address |
LE_APCF_Command: service_uuid_sub_cmd
פקודת המשנה הזו משמשת להוספה או למחיקה של מזהה UUID של שירות, או לניקוי רשימת מזהי UUID של שירות לצורך סינון בשבב.
Sub OCF: 0x03
פרמטר של פקודת משנה | גודל | המטרה |
---|---|---|
APCF_Action |
אוקטט אחד |
0x00 – הוספה 0x01 – מחיקה 0x02 – ניקוי המחיקה תמחק את כתובת ה-UUID של השירות שצוינה במסנן שצוין. הלחצן Clear (ניקוי) ינקה את כל מזהי ה-UUID של השירות במסנן שצוין. |
APCF_Filter_Index |
אוקטט אחד | אינדקס המסנן (0, max_filter -1) |
APCF_UUID |
2,4,16 octet | מזהה ה-UUID של השירות (16 ביט, 32 ביט או 128 ביט) להוספה לרשימה או למחיקה ממנה. |
APCF_UUID_MASK |
2,4,16 octet |
המסכה של UUID השירות (16 ביט, 32 ביט או 128 ביט) שרוצים להוסיף לרשימה.
האורך שלו צריך להיות זהה לאורך של APCF_UUID.
|
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
APCF_opcode |
אוקטט אחד | 0x03 – מזהה UUID של שירות APCF |
APCF_Action |
אוקטט אחד | הדהוד של APCF_Action בפקודה |
APCF_AvailableSpaces |
אוקטט אחד | מספר הרשומות הפנויות שעדיין זמינות בטבלה Service UUID |
LE_APCF_Command: solicitation_uuid_sub_cmd
פקודת המשנה הזו משמשת להוספה או למחיקה של UUID של בקשה או לניקוי רשימת UUID של בקשה לסינון בשבב.
Sub OCF: 0x04
פרמטר של פקודת משנה | גודל | המטרה |
---|---|---|
APCF_Action |
אוקטט אחד |
0x00 – הוספה 0x01 – מחיקה 0x02 – ניקוי המחיקה תמחק את כתובת ה-UUID של הבקשה במסנן שצוין. האפשרות Clear (ניקוי) תמחק את כל מזהי ה-UUID של הבקשות במסנן שצוין. |
APCF_Filter_Index |
אוקטט אחד | אינדקס המסנן (0, max_filter -1) |
APCF_UUID |
2,4,16 octet | מזהה ה-UUID של הבקשה (16 ביט, 32 ביט או 128 ביט) שרוצים להוסיף לרשימה או למחוק ממנה. |
APCF_UUID_MASK |
2,4,16 octet |
המסכה של UUID של הבקשה (16 ביט, 32 ביט או 128 ביט) שרוצים להוסיף לרשימת הבקשות. האורך שלו צריך להיות זהה לאורך של APCF_UUID .
|
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
APCF_opcode |
אוקטט אחד | 0x04 – UUID של בקשה ל-APCF |
APCF_Action |
אוקטט אחד | הדהוד של APCF_Action בפקודה |
APCF_AvailableSpaces |
אוקטט אחד | מספר הרשומות בחינם שעדיין זמינות בטבלה Solicitation UUID |
LE_APCF_Command: local_name_sub_cmd
הפקודה המשנית הזו משמשת להוספה או למחיקה של מחרוזת שם מקומית, או לניקוי רשימת מחרוזות השמות המקומיות לצורך סינון בשבב.
OCF משני: 0x05
פרמטר של פקודת משנה | גודל | המטרה |
---|---|---|
APCF_Action |
אוקטט אחד |
0x00 – הוספה 0x01 – מחיקה 0x02 – ניקוי המחיקה תמחק את מחרוזת השם המקומי שצוינה במסנן שצוין. הפקודה Clear תמחק את כל מחרוזות השמות המקומיים במסנן שצוין. |
APCF_Filter_Index |
אוקטט אחד | אינדקס המסנן (0, max_filter -1) |
APCF_LocName_Mandata_or_SerData |
גודל משתנה |
מחרוזת תווים לשם המקומי. הערות:
|
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
APCF_opcode |
אוקטט אחד | 0x05 – שם מקומי של APCF |
APCF_Action |
אוקטט אחד | הדהוד של APCF_Action בפקודה |
APCF_AvailableSpaces |
אוקטט אחד | מספר הרשומות בחינם שעדיין זמינות בטבלת השמות המקומיים |
LE_APCF_Command: manf_data_sub_cmd
הפקודה המשנית הזו משמשת להוספה או למחיקה של מחרוזת של נתוני יצרן, או כדי לנקות את רשימת המחרוזות של נתוני היצרן לצורך סינון בשבב.
OCF משני: 0x06
פרמטר של פקודת משנה | גודל | המטרה |
---|---|---|
APCF_Action |
8 תווים |
0x00 – הוספה 0x01 – מחיקה 0x02 – ניקוי המחיקה תמחק את מחרוזת נתוני היצרן שצוינה במסנן שצוין. הלחצן Clear (ניקוי) ינקה את כל מחרוזות נתוני היצרן במסנן שצוין. |
APCF_Filter_Index |
אוקטט אחד | אינדקס המסנן (0, max_filter -1) |
APCF_LocName_Mandata_or_SerData |
גודל משתנה |
מחרוזת תווים לנתוני היצרן. הערות:
|
APCF_ManData_Mask |
גודל משתנה |
המסכה של נתוני היצרן שרוצים להוסיף לרשימה. האורך שלו צריך להיות זהה לאורך של APCF_LocName_or_ManData_or_SerData .
|
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
APCF_opcode |
אוקטט אחד | 0x06 – נתוני יצרן של APCF |
APCF_Action |
אוקטט אחד | הדהוד של APCF_Action בפקודה |
APCF_AvailableSpaces |
אוקטט אחד | מספר הרשומות בחינם שעדיין זמינות בטבלה 'נתוני היצרן' |
LE_APCF_Command: service_data_sub_cmd
הפקודה המשנית הזו משמשת להוספה או למחיקה של מחרוזת של נתוני שירות, או לניקוי רשימת המחרוזות של נתוני השירות לצורך סינון בשבב.
Sub OCF: 0x07
פרמטר של פקודת משנה | גודל | המטרה |
---|---|---|
APCF_Action |
אוקטט אחד |
0x00 – הוספה 0x01 – מחיקה 0x02 – ניקוי המחיקה תמחק את מחרוזת נתוני השירות שצוינה במסנן שצוין. הפקודה Clear תמחק את כל מחרוזות נתוני השירות במסנן שצוין. |
APCF_Filter_Index |
אוקטט אחד | אינדקס המסנן (0, max_filter -1) |
APCF_LocName_Mandata_or_SerData |
גודל משתנה |
מחרוזת תווים לנתוני השירות. הערות:
|
APCF_LocName_Mandata_or_SerData_Mask |
גודל משתנה |
המסכה של נתוני השירות שרוצים להוסיף לרשימה. האורך שלו צריך להיות זהה לאורך של APCF_LocName_or_ManData_or_SerData.
|
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
APCF_opcode |
אוקטט אחד | 0x07 – נתוני שירות של APCF |
APCF_Action |
אוקטט אחד | הדהוד של APCF_Action בפקודה |
APCF_AvailableSpaces |
אוקטט אחד | מספר הרשומות בחינם שעדיין זמינות בטבלה Service Data |
LE_APCF_Command: ad_type_sub_cmd
הפקודה המשנית הזו משמשת להוספה או למחיקה של סוג מודעה, או לניקוי רשימת סוגי המודעות לסינון בשבב. משתמשים בפקודה read_extended_features_sub_cmd
כדי לבדוק אם הפקודה הזו נתמכת.
כשהערך של APCF_AD_DATA_Length
הוא 0, מתבצע סינון של APCF_AD_TYPE
בלי
להשוות בין נתוני AD לבין נתוני AD שהוסתרו.
אם אורך הנתונים של חבילת ה-ADV שהתקבלה חורג מ-AD_DATA_LENGTH
, צריך להשוות רק את AD_DATA_LENGTH
הבייטים הראשונים של נתוני ה-AD ולהתעלם מהנתונים הנותרים.
Sub OCF: 0x09
פרמטר של פקודת משנה | גודל | המטרה |
---|---|---|
APCF_Action |
אוקטט אחד |
0x00 – הוספה 0x01 – מחיקה 0x02 – ניקוי המחיקה תמחק את סוג ה-AD שצוין במסנן שצוין. הלחצן Clear (ניקוי) מנקה את כל סוגי המודעות לרשת המדיה במסנן שצוין. |
APCF_Filter_Index |
אוקטט אחד | אינדקס המסנן (0, max_filter -1) |
APCF_AD_TYPE |
אוקטט אחד | סוג המודעה שרוצים להוסיף לרשימה או למחוק ממנה. התעלמות כאשר APCF_Action הוא 0x02 (Clear) |
APCF_AD_DATA_Length |
אוקטט אחד |
0x00 – המשמעות היא שלא לסנן את תוכן הנתונים התעלמות כשהערך של APCF_Action הוא 0x02 (ניקוי)
|
APCF_AD_DATA |
גודל משתנה |
בגודל משתנה, על סמך APCF_AD_DATA_Length התעלמות כאשר APCF_Action הוא 0x02 (ריק) |
APCF_AD_DATA_MASK |
גודל משתנה |
גודל משתנה, על סמך APCF_AD_DATA_Length התעלמות כאשר APCF_Action הוא 0x02 (ריק)האורך שלו צריך להיות זהה לאורך של APCF_AD_DATA .
|
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
APCF_opcode |
אוקטט אחד | 0x09 – סוג מודעה של APCF |
APCF_Action |
8 תווים | הדהוד של APCF_Action בפקודה |
APCF_AvailableSpaces |
אוקטט אחד | מספר הרשומות בחינם שעדיין זמינות בטבלה 'סוג מודעה' |
LE_APCF_Command: read_extended_features_sub_cmd
הפקודה המשנית הזו משמשת לקריאת תכונות APCF מורחבות.
OCF משני: 0xFF
פרמטר של פקודת משנה | גודל | המטרה |
---|---|---|
לא רלוונטי | פרמטר פקודה ריק. |
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
APCF_opcode |
אוקטט אחד | 0xFF – APCF_Read_Extended_Features |
APCF_extended_features |
2 אוקטטים |
מסכות ביט לתכונות מורחבות נתמכות:
הערך של הבייט
|
הפקודה 'מידע על פעילות ונתוני אנרגיה של הבקר'
המטרה של המידע הזה היא לאפשר לפונקציות ברמה גבוהה יותר במערכת המארח לנתח את הפעילויות הכוללות של כל הרכיבים, כולל הבקר של BT ומצב המאקרו שלו, בשילוב עם מה שקורה באפליקציות ובמסגרת. כדי לעשות זאת, נדרשים הפרטים הבאים מהמארז של BT ומהבקר:
- BT stack: דיווח על המצב המבצעי המאקרו-אופרטיבי הנוכחי של הבקר
- קושחת: דיווח על נתונים מצטברים של פעילות ואנרגיה
מצבי המאקרו של סטאק המארחים של BT, כפי שנקבע ברמת המשתמש:
- במצב חוסר פעילות: [סריקת דף, מודעה של LE, סריקה של פנייה, סריקה של LE]
- סריקה: [העברת הודעות/בירור/ניסיון להתחבר]
- פעיל: [קישור ACL מופעל, קישור SCO מתמשך, מצב ניטור]
הפעילויות שהבקר עוקב אחריהן במהלך חייו הן זמן ההעברה, זמן הקבלה, זמן ההמתנה והאנרגיה הכוללת שנצרכה. הם נמחקים כשהם נקראים מהמארח.
LE_Get_Controller_Activity_Energy_Info
זוהי פקודה ספציפית לספק.
OCF: 0x159
פרמטר של פקודת משנה | גודל | המטרה |
---|---|---|
לא רלוונטי | פרמטרים ריקים של פקודות |
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
total_tx_time_ms |
4 אוקטטים | הזמן הכולל לביצוע העברה (Tx) |
total_rx_time_ms |
4 אוקטטים | הזמן הכולל לביצוע Rx |
total_idle_time_ms |
4 אוקטטים | משך הזמן הכולל במצב ללא פעילות (לא במצבי חיסכון בסוללה שאינם שינה) |
total_energy_used |
4 אוקטטים | סך האנרגיה שנעשה בה שימוש [המוצר של הזרם (mA), המתח (V) והזמן (ms)] |
הפקודה LE extended set scan parameters
אפשר להשתמש בפקודה הזו כדי להגדיל את חלון הסריקה ואת המרווח בזמן הסריקה בבקר. בהתאם למפרט BT Core 5.2, לחלון הסריקה ולמרווח הזמן יש גבול עליון של 10.24 שניות, מה שמקשה על מרווחים של סריקות באפליקציות מעבר ל-10.24 שניות.
מקור מידע בסיסי: מפרט BT Core 5.2, דף 2493 (פקודה להגדרת הפרמטרים של הסריקה ב-LE)
OCF: 0x15A
פרמטר של פקודה | גודל | המטרה |
---|---|---|
LE_Ex_Scan_Type |
אוקטט אחד |
0x00 – סריקה פסיבית. לא יישלחו חבילות SCAN_REQ (ברירת המחדל).0x01 – סריקה פעילה. ייתכן שיישלחו חבילות SCAN_REQ .
|
LE_Ex_Scan_Interval |
4 אוקטטים |
מוגדר כמרווח הזמן מהרגע שבו הבקר התחיל את הסריקה האחרונה של LE ועד שהוא התחיל את הסריקה הבאה של LE. טווח: 0x0004 עד 0x00FFFFFF ברירת מחדל: 0x0010 (10 אלפיות שנייה) זמן = N * 0.625 אלפיות שנייה טווח זמן: 2.5 אלפיות שנייה עד 10,442.25 שניות |
LE_Ex_Scan_Window |
4 אוקטטים |
משך הסריקה של LE. הערך של LE_Scan_Window חייב להיות קטן מ-LE_Scan_Interval או שווה לו.
טווח: 0x0004 עד 0xFFFF ברירת מחדל: 0x0010 (10 אלפיות שנייה) זמן = N * 0.625 אלפיות שנייה טווח הזמן: 2.5 אלפיות שנייה עד 40.95 שניות |
Own_Address_Type |
אוקטט אחד |
0x00 – כתובת מכשיר גלויה לכולם (ברירת המחדל) 0x01 – כתובת מכשיר אקראית |
LE_Ex_Scan_Filter_Policy |
0x00 – אישור כל חבילות הפרסום (ברירת המחדל). חבילות של פרסום מותאם אישית שלא מיועדות למכשיר הזה יידחו. 0x01 – התעלמות מחבילות מודעות ממכשירים שלא נמצאים ברשימת ההיתרים בלבד. חבילות של פרסום מותאם אישית שלא מיועדות למכשיר הזה יידחו. |
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
הפקודה לקבלת מידע על תוצאות ניפוי הבאגים של הבקר
מטרת אלמנט המידע הזה היא לאפשר למארח לקבל מידע על ניפוי באגים של הבקר, בפורמט בינארי, לצורך עיבוד ופענוח לאחר מכן. כך אפשר לנפות באגים בשטח ולספק למהנדסים ערכת כלים לתיעוד מידע לצורך ניתוח. ארגון שמנהל את הנתונים יכול לספק את המידע כשהוא מתבקש על ידי המארח באמצעות האירוע (אירוע המשנה Controller Debug Info) או באופן עצמאי לפי הצורך של ארגון המנהל את הנתונים. לדוגמה, אפשר להשתמש בהם כדי לדווח על מידע לגבי מצב הקושחה, מידע על גרסת דמפ של קריסה, מידע ביומן וכו'.
OCF: 0x15B
פרמטר של פקודה | גודל | המטרה |
---|---|---|
לא רלוונטי | רשימת פרמטרים ריקה של פקודה |
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס 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 |
Max_Latency |
2 אוקטטים | זמן האחזור המקסימלי המותר (באלפיות שנייה). ערך אפס משבית את השטיפה. |
SCMS-T_Enable |
2 אוקטטים |
אוקטט 0: דגל שמאפשר להוסיף כותרת SCMS-T.
אוקטט 1: הערך של הכותרת SCMS-T, כשהיא מופעלת. |
Sampling_Frequency |
4 אוקטטים |
0x01 – 44,100Hz 0x02 – 48,000Hz 0x04 – 88,200Hz 0x08 – 96,000Hz |
Bits_Per_Sample |
אוקטט אחד |
0x01 – 16 סיביות לדגימה 0x02 – 24 סיביות לדגימה 0x04 – 32 סיביות לדגימה |
Channel_Mode |
אוקטט אחד |
0x01 – מונו 0x02 – סטריאו |
Encoded_Audio_Bitrate |
4 אוקטטים |
קצב העברת הנתונים של האודיו המקודד, בסיביות לשנייה. 0x00000000 – קצב הנתונים של האודיו לא צוין / לא בשימוש. 0x00000001 – 0x00FFFFFF – קצב העברת הנתונים של האודיו המקודד בסיביות לשנייה. 0x01000000 – 0xFFFFFFFF – שמור. |
Connection_Handle |
2 אוקטטים | ה-Connection Handle של חיבור A2DP שמוגדר |
L2CAP_Channel_ID |
2 אוקטטים | מזהה הערוץ של L2CAP שישמש לחיבור A2DP הזה |
L2CAP_MTU_Size |
2 אוקטטים | הגודל המקסימלי של MTU ב-L2CAP שמכיל חבילות אודיו מקודדות |
Codec_Information |
32 אוקטטים |
מידע ספציפי לקודק.
קודק SBC:
אפשר לעיין ברכיבי המידע הספציפיים של SBC Codec ב-A2DP v1.3. קודק AAC:
ראו רכיבי מידע ספציפיים לקודק AAC ב-A2DP v1.3 קודק LDAC:
אוקטט 0-3: מזהה הספק
אוקטט 4-5: מזהה הקודק
אוקטט 6: מדד קצב העברת הנתונים:
אוקטט 7: LDAC Channel Mode אוקטט 8-31: שמורים כל שאר הקודקים: אוקטט 0-31: שמורות |
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
Sub_Opcode |
אוקטט אחד | 0x01 – התחלת העברה לחומרת A2DP |
התחלת העברה של A2DP
Sub OCF: 0x03
משתמשים בפקודה הזו גם כדי להגדיר את תהליך העברת הנתונים של A2DP וגם כדי להפעיל את הסטרימינג של A2DP.
פרמטר של פקודה | גודל | המטרה |
---|---|---|
Connection Handle |
2 אוקטטים | הידית של חיבור ה-HCI הפעיל |
L2CAP_Channel_ID |
2 אוקטטים | המזהה של ערוץ ה-L2CAP שנפתח לסטרימינג של A2DP |
Data_Path_Direction |
אוקטט אחד |
0x00 – פלט (AVDTP Source/Merge) 0x01 – קלט (AVDTP Sink/Split) |
Peer_MTU |
2 אוקטטים | הגודל המקסימלי של חבילות L2CAP, שמוסכם עם השותף. |
CP_Enable_SCMS_T |
אוקטט אחד |
0x00 – השבתת כותרת ההגנה על תוכן של SCMS-T 0x01 – הפעלת כותרת ההגנה על תוכן של SCMS-T |
CP_Header_SCMS_T |
אוקטט אחד |
כשהכותרת של הגנה על תוכן מסוג SCMS-T מופעלת (CP_SCMS_T_Enable מוגדר ל-0x01), היא מגדירה את ערך הכותרת שקודם לתוכן האודיו (ראו A2DP, חלקים 3.2.1-2) כפי שמוגדר במספרים שהוקצו ל-Bluetooth, חלק 6.3.2.התכונה מתעלמת מהערך הזה אם ההגנה על התוכן של SCMS-T לא מופעלת. |
Vendor_Specific_Parameters_Length |
אוקטט אחד |
האורך של הפרמטרים הספציפיים לספק, בטווח שבין 0 ל-128. המערכת משתמשת בערך 0 כשלא מציינים פרמטרים נוספים. |
Vendor_Specific_Parameters |
0 עד 128 אוקטטים |
פרמטרים ספציפיים לספק שסופקו על ידי Bluetooth Audio HAL, CodecParameters.vendorSpecificParameters[] .
|
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
Sub_Opcode |
אוקטט אחד | 0x03 – התחלת העברה של A2DP |
הפסקת העברת נתונים (offload) של A2DP (מדור קודם)
Sub OCF: 0x02
הפקודה הזו משמשת כדי לעצור את ההעברה של מקור הנתונים של A2DP.
פרמטר של פקודה | גודל | המטרה |
---|---|---|
לא רלוונטי | רשימת פרמטרים ריקה של פקודה. |
לא מוגדרים פרמטרים לפקודה הזו.
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
Sub_Opcode |
אוקטט אחד | 0x02 – הפסקת העברת הנתונים של A2DP |
הפסקת העברת הנתונים של A2DP
Sub OCF: 0x04
הפקודה הזו משמשת כדי לעצור את ההעברה של מקור הנתונים של A2DP.
פרמטר של פקודה | גודל | המטרה |
---|---|---|
Connection Handle |
2 אוקטטים | הידית של חיבור ה-HCI הפעיל |
L2CAP_Channel_ID |
2 אוקטטים | המזהה של ערוץ ה-L2CAP שנפתח לסטרימינג של A2DP |
Data_Path_Direction |
אוקטט אחד |
0x00 – פלט (AVDTP Source/Merge) 0x01 – קלט (AVDTP Sink/Split) |
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
Sub_Opcode |
אוקטט אחד | 0x04 – עצירת העברת הנתונים של A2DP |
הפקודה 'דוח איכות Bluetooth'
תכונת הפקודה BT Quality Report מפעילה את המנגנון ב-Bluetooth Controller כדי לדווח למארח על אירועי איכות Bluetooth. אפשר להפעיל ארבע אפשרויות:
- מצב מעקב אחר איכות: המאגר שולח למארח מדי פעם אירוע משנה של BQR שקשור לאיכות הקישור.
- Approaching LSTO: אם לא מתקבלות מנות ממכשיר ה-BT המחובר במשך יותר ממחצית ערך זמן הקצאת הזמן לניטור הקישור (LSTO), הבקר מדווח למארח על אירוע Approaching LSTO.
- אודיו קטועה ב-A2DP: כשבבקר מזוהים גורמים שגורמים לאודיו קטועה, הבקר מדווח למארח על אירוע אודיו קטועה ב-A2DP.
- (e)SCO Voice Choppy: כשבקר מזהה גורמים שגורמים לקול קטועה, הבקר מדווח למארח על אירוע (e)SCO Voice Choppy.
- Root Inflammation: האירוע הזה נשלח על ידי הבקר לסטאק כש-HAL או הבקר נתקלים בשגיאה קטלנית וצריך להפעיל מחדש את Bluetooth.
- מעקב אחר הודעות LMP/LL: הבקר שולח למארח את לחיצת היד של ההודעה LMP/LL עם המכשיר המרוחק.
- מעקב תזמון של מספר פרופילים ב-Bluetooth או של Coex: הבקר שולח למארח את פרטי התזמון שלו לטיפול במספר פרופילים של Bluetooth ובקיום משותף של רשתות אלחוטיות בתדר 2.4GHz.
- מנגנון של מידע על ניפוי באגים של בקר: כשהמנגנון מופעל, הבקר יכול לדווח באופן עצמאי למארח על מידע מהיומן של ניפוי הבאגים באמצעות אירוע המשנה של מידע על ניפוי באגים של הבקר.
- אודיו קטועה ב-LE Audio: כשהבקר מזהה גורמים שגורמים לאודיו קטועה, הוא מדווח למארח על אירוע של אודיו קטועה ב-LE Audio.
-
מצב נתונים סטטיסטיים מתקדמים של תדר רדיו: הבקר מדווח למארח על המידע הקשור לנתונים הסטטיסטיים של תדר הרדיו, ותומך בשני תרחישים לדוגמה לדיווח:
- דוחות תקופתיים
- טריגרים של אירועים (התחלה/עצירה של שידור וטריגר של אירוע איכות קישור).
- BQR_Report_Action של פקודת דוח האיכות של Bluetooth: המארח יכול להשתמש בפקודת ה-HCI הזו כדי לקבל שאילתה חד-פעמית למצב מעקב איכות, למצב מעקב אנרגיה או למצב סטטיסטי RF מתקדם.
OCF: 0x15E
פרמטר של פקודה | גודל | המטרה |
---|---|---|
BQR_Report_Action |
אוקטט אחד |
פעולה להוספה או למחיקה של דיווח על אירועי איכות שהוגדרו בפרמטר BQR_Quality_Event_Mask, או לניקוי הכול.
0x00 – הוספה
מחיקת האירועים תגרום למחיקת הדיווח על אירועי איכות ספציפיים. |
BQR_Quality_Event_Mask |
4 אוקטטים |
מסיכות ביט לדיווח על אירועי איכות שנבחרו.
ביט 0: מוגדר להפעלת מצב מעקב אחר איכות. |
BQR_Minimum_Report_Interval |
2 אוקטטים |
הגדרת מרווח הזמן המינימלי לדיווח על אירועי איכות באירועי האיכות שנבחרו. קושחת הבקר לא אמורה לדווח על האירוע הבא במהלך מרווח הזמן המוגדר. הגדרת המרווח צריכה להיות תואמת ומתאימה לאירוע האיכות שנוסף.
יחידה: 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 מוגדר לפי הפורמט : BQR Report Interval = BQR_Minimum_Report_Interval x Report_interval_multiple. קושחת הבקר לא חייבת לדווח על האירוע הבא במרווח הזמן המוגדר. הגדרת המרווח מוקדשת במיוחד לאירועי האיכות שנוספו.
יחידה: ms BQR_Report_Interval גדולה מהיכולת של הבקר, הבקר צריך להחזיר את הזמן המקסימלי של BQR_Report_Interval בסיום הפקודה.
|
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
Current_Quality_Event_Mask |
4 אוקטטים |
מציין את ההגדרה הנוכחית של מסכת הביטים. ביט 0: מצב מעקב האיכות מופעל. ביט 1: הדיווח על אירועי LSTO מתקרב מופעל. ביט 2: הדיווח על אירועי אודיו קטועים ב-A2DP מופעל. ביט 3: הדיווח על אירועי קול קטוע (e)SCO מופעל. ביט 4: הדיווח על אירועי דלקת ברמה הבסיסית מופעל. ביט 5: מצב מעקב האנרגיה מופעל. ביט 6: הדיווח על אירועים של אודיו LE קטועים מופעל. ביט 7: אירוע של כשל התחברות. ביט 8: מוגדר כדי להפעיל את הטריגר של אירוע במצב 'נתונים מתקדמים של תדרי רדיו'. ביט 9: מוגדר כדי לאפשר דיווח תקופתי על נתונים סטטיסטיים מתקדמים של תדרי רדיו. ביטים 10 עד 14: שמורים. ביט 15: הדיווח על אירועי איכות ספציפיים לספק מופעל. ביט 16: מעקב אחר הודעות LMP/LL מופעל. ביט 17: מעקב תזמון של Bluetooth Multi-link/Coex מופעל. ביט 18: מנגנון המידע על תוצאות ניפוי הבאגים של הבקר מופעל. ביטים 19 עד 30: שמורים. ביט 31: מעקב ספציפי לספק מופעל. |
Current_Vendor_Specific_Quality_Event_Mask |
4 אוקטטים | מציין את ההגדרה הנוכחית של מסכת הביטים. |
Current_Vendor_Specific_Trace_Mask |
4 אוקטטים | מציין את ההגדרה הנוכחית של מסכת הביטים. |
BQR_Report_interval |
4 אוקטטים | מציין את ההגדרה הנוכחית של מסכת הביטים. |
Current_Vendor_Specific_Trace_Mask |
4 אוקטטים |
ההגדרה של BQR_Report_interval . הערך צריך להיות הערך המינימלי בין BQR_Minimum_Report_Interval * Report_interval_multiple לבין מרווח התמיכה המקסימלי של הבקר. |
פקודה של מאגר נתונים זמני דינמי של אודיו
מאגר האודיו הדינמי מפחית את הבעיות באודיו על ידי שינוי גודל מאגר האודיו בבורר ה-Bluetooth, בהתאם לתרחישים שונים.
OCF: 0x15F
אחזור היכולת של מאגר הנתונים הזמני של האודיו
Sub OCF: 0x01
משתמשים בפקודה הזו כדי לקבל את היכולת של זמן מאגר האודיו מהבקר של ה-Bluetooth.
פרמטר של פקודה | גודל | המטרה |
---|---|---|
לא רלוונטי | רשימת פרמטרים ריקה של פקודה |
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
Dynamic_Audio_Buffer_opcode |
אוקטט אחד | 0x01 – אחזור של הזמן של מאגר הנתונים הזמני של האודיו |
Audio_Codec_Type_Supported |
4 אוקטטים |
מסכות ביט לסוגים הנתמכים של קודקים ביט 0 – SBC ביט 1 – AAC ביט 2 – APTX ביט 3 – APTX HD ביט 4 – LDAC ביטים 5-31 שמורים |
Audio_Codec_Buffer_Default_Time_For_Bit_0 |
2 אוקטטים |
זמן האחסון הזמני שמוגדר כברירת מחדל לסוג הקודק של ביט 0 שצוין ב-Audio_Codec_Type_Supported. הערך הזה צריך להיות 0 אם סוג הקודק של ביט 0 לא נתמך. יחידה: אלפיות השנייה |
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 |
2 אוקטטים |
זמן האחסון הזמני המקסימלי של סוג ה-Codec של Bit 0 שצוין ב-Audio_Codec_Type_Supported. הערך הזה צריך להיות 0 אם סוג הקודק של ביט 0 לא נתמך. יחידה: אלפיות השנייה |
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 |
2 אוקטטים |
זמן האחסון הזמני המינימלי של סוג ה-Codec של ביט 0 שצוין ב-Audio_Codec_Type_Supported. הערך הזה צריך להיות 0 אם סוג הקודק של ביט 0 לא נתמך. יחידה: אלפיות השנייה |
Audio_Codec_Buffer_Default_Time_For_Bit_1 |
2 אוקטטים |
זמן האחסון הזמני שמוגדר כברירת מחדל לסוג ה-codec של ביט 1 שצוין ב-Audio_Codec_Type_Supported. הערך הזה צריך להיות 0 אם סוג הקודק של ביט 1 לא נתמך. יחידה: אלפיות השנייה |
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 |
2 אוקטטים |
זמן האחסון המקסימלי של סוג ה-Codec של ביט 1 שצוין ב-Audio_Codec_Type_Supported. הערך הזה צריך להיות 0 אם סוג הקודק של ביט 1 לא נתמך. יחידה: אלפיות השנייה |
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 |
2 אוקטטים |
זמן האחסון הזמני המינימלי של סוג ה-Codec של ביט 1 שצוין ב-Audio_Codec_Type_Supported. הערך הזה יהיה 0 אם סוג הקודק של ביט 1 לא נתמך. יחידה: אלפיות השנייה |
...... | ...... | ...... |
Audio_Codec_Buffer_Default_Time_For_Bit_31 |
2 אוקטטים |
זמן ברירת המחדל של מאגר הנתונים הזמני של סוג הקודק בביט 31 שצוין ב-Audio_Codec_Type_Supported. הערך הזה צריך להיות 0 אם סוג הקודק של ביט 31 לא נתמך. יחידה: אלפיות השנייה |
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 |
2 אוקטטים |
זמן האחסון המקסימלי של סוג ה-codec בביט 31 שצוין ב-Audio_Codec_Type_Supported. הערך הזה צריך להיות 0 אם סוג הקודק של ביט 31 לא נתמך. יחידה: אלפיות השנייה |
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 |
2 אוקטטים |
זמן האחסון הזמני המינימלי של סוג הקודק בביט 31 שצוין ב-Audio_Codec_Type_Supported. הערך הזה צריך להיות 0 אם סוג הקודק של ביט 31 לא נתמך. יחידה: אלפיות השנייה |
הגדרת זמן למאגר הנתונים הזמני של האודיו
Sub OCF: 0x02
משתמשים בפקודה הזו כדי להגדיר את זמן מאגר האודיו ב-Bluetooth.
פרמטר של פקודה | גודל | המטרה |
---|---|---|
Audio_Codec_Buffer_Time |
2 אוקטטים |
משך הזמן המבוקש של מאגר האודיו לקודק הנוכחי בשימוש. יחידה: אלפיות השנייה |
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
Dynamic_Audio_Buffer_opcode |
אוקטט אחד | 0x02 – הגדרת הזמן של מאגר הנתונים הזמני של האודיו |
Audio_Codec_Buffer_Time |
2 אוקטטים |
משך המאגר הזמני הנוכחי של האודיו בבקר ה-Bluetooth. יחידה: אלפיות השנייה |
אירוע HCI (ספציפי לספק)
במקרים מסוימים נדרשים אירועי HCI ספציפיים לספק. אפשר לעיין באיור 5.4 בדף 1897 במפרט BT Core 5.2. פרמטר האירוע 0 תמיד יכיל את קוד אירוע המשנה הראשון, על סמך קוד זה מתבצע פענוח של שאר אירוע ה-HCI.
פרמטר אירוע | גודל | המטרה |
---|---|---|
HCI_vendor_specific_event_code |
אוקטט אחד | 0xFF |
sub_event_code |
אוקטט אחד | קוד אירוע משני יהיה באורך אוקטט אחד, הבית שמופיע מיד אחרי אורך הפרמטר בחבילת האירוע של HCI. |
אירוע משנה של הפרת סף אחסון
האירוע הזה מציין שחרגו מהסף של נפח האחסון.
קוד האירוע המשני = 0x54
פרמטר של אירוע משנה | גודל | המטרה |
---|---|---|
ללא |
אירוע משנה של שינוי מצב של פרסום בכמה רשתות ב-LE
האירוע הזה מציין שמצב של מופע פרסום השתנה. בשלב זה, האירוע הזה משמש רק כדי לציין איזה מופע פרסום הופסק כתוצאה מחיבור.
קוד האירוע המשני = 0x55
פרמטר של אירוע משנה | גודל | המטרה |
---|---|---|
Advertising_instance |
אוקטט אחד |
מזהה את מופע הפרסום הספציפי ערכים חוקיים: 0 עד max_advt_instances -1
|
State_Change_Reason |
אוקטט אחד | 0x00: התקבל חיבור |
Connection_handle |
2 אוקטטים |
מזהה את החיבור שגרם להשבתת המכונה של advt (0xFFFF אם לא תקין)
|
אירוע משנה של מעקב אחר מודעות LE
האירוע הזה מציין מתי מפרסם נמצא או אבד.
קוד האירוע המשני = 0x56
פרמטר של אירוע משנה | גודל | המטרה |
---|---|---|
APCF_Filter_Index |
אוקטט אחד | אינדקס המסנן (0, max_filter -1) |
Advertiser_State |
אוקטט אחד |
0x00: המפרסם נמצא 0x01: המפרסם לא נמצא |
Advt_Info_Present |
אוקטט אחד |
0x00: פרטי המפרסם (Advt_Info ) נמצאים0x01: פרטי המפרסם ( Advt_Info ) לא נמצאים
|
Advertiser_Address |
6 אוקטטים | כתובת ציבורית או אקראית |
Advertiser_Address_Type |
אוקטט אחד |
0x00: כתובת ציבורית 0x01: כתובת אקראית |
Advt_Info |
Tx_Pwr[0] : אוקטט אחדRSSI[0] : אוקטט אחדTimestamp[0] : 2 אוקטטיםAdv packet_len[0] : אוקטט אחדAdv_packet[0] : Adv_packet_len אוקטטיםScan_data_resp_len[0] : אוקטט אחדScan_data_resp[0] : Scan_data_resp אוקטטים
|
אירוע משנה של מידע על תוצאות ניפוי הבאגים של הבקר
האירוע הזה משמש את הבקר כדי לספק למארח מידע על ניפוי באגים של קוד בינארי.
קוד האירוע המשני = 0x57
פרמטר של אירוע משנה | גודל | המטרה |
---|---|---|
debug_block_byte_offset_start |
2 אוקטטים | ניפוי באגים של היסט בייטים בבלוק מההתחלה |
last_block |
אוקטט אחד |
0x00: יש עוד נתוני ניפוי באגים 0x01: הבלוק הבינארי האחרון, אין עוד נתוני ניפוי באגים |
cur_pay_load_sz |
2 אוקטטים | גודל הבלוק הבינארי באירוע הנוכחי |
Debug_Data |
משתנה | נתוני ניפוי באגים של cur_payload_sz |
אירוע משנה של דוח איכות Bluetooth
האירוע הזה מציין אחד מהמצבים הבאים: אירוע איכות של Bluetooth התרחש, הבקר העלאה את המעקב אחר ההודעות של LMP/LL ואת המעקב אחר תזמון של Bluetooth Multi-link/Coex, או שהבקרים שפכו נתוני מידע של ניפוי באגים.
קוד אירוע משני = 0x58 [Quality_Report_Id = 0x01 עד 0x04, אירוע שקשור לאיכות הקישור]
פרמטר של אירוע משנה | גודל | המטרה |
---|---|---|
Quality_Report_Id |
אוקטט אחד |
0x01: דיווח על איכות במצב המעקב. 0x02: הגעה ל-LSTO. 0x03: אודיו A2DP קטוע. 0x04: (e)SCO Voice Choppy. 0x05 עד 0x06: שמורים. 0x07: אודיו LE קטועה. 0x08: התחברות נכשלה. 0x09 עד 0xFF: שמורים. |
Packet_Types |
אוקטט אחד |
0x01: ID 0x02: NULL 0x03: POLL 0x04: FHS 0x05: HV1 0x06: HV2 0x07: HV3 0x08: DV 0x09: EV3 0x0A: EV4 0x0B: EV5 0x0C: 2-EV3 0x0D: 2-EV5 0x0E: 3-EV3 0x0F: 3-EV5 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: שמורות 0x51: חבילה מסוג ISO 0x52 עד 0xFF: שמורות |
Connection_Handle |
2 אוקטטים | הידית החיבור של ACL/(e)SCO/ISO. |
Connection_Role |
אוקטט אחד |
התפקיד שמבצע את החיבור. 0x00: מרכזי 0x01: היקפי 0x02 עד 0xFF: שמור. |
TX_Power_Level |
אוקטט אחד |
רמת ההספק הנוכחית של השידור עבור Connection_Handle שצוין.
הערך הזה צריך להיות זהה לתגובה של הבקר לפקודת ה-HCI HCI_Read_Transmit_Power_Level. |
RSSI |
אוקטט אחד |
[ב-dBm]
הערך של Received Signal Strength Indication (RSSI) עבור Connection_Handle שצוין. |
SNR |
אוקטט אחד |
[בדציבלים]
הערך של יחס אות לרעש (SNR) עבור Connection_Handle שצוין. |
Unused_AFH_Channel_Count |
אוקטט אחד |
מציין את מספר הערוצים שלא בשימוש ב-AFH_channel_map. 0x4F עד 0xFF: שמורים. |
AFH_Select_Unideal_Channel_Count |
אוקטט אחד |
מספר הערוצים שנמצאים באיכות נמוכה ומושפעים מהפרעה, אבל עדיין נבחרו ל-AFH. מספר הערוצים המינימלי שמוגדר במפרט Bluetooth הוא 20, כך שגם אם כל 79 הערוצים מושפעים מהפרעות ואיכות האות שלהם נמוכה, הבקר עדיין צריך לבחור לפחות 20 ערוצים ל-AFH. |
LSTO |
2 אוקטטים |
ההגדרה הנוכחית של זמן הקצאת הקישור בפיקוח. זמן = N * 0.625 אלפיות השנייה טווח זמן: 0.625 אלפיות השנייה עד 40.9 שניות |
Connection_Piconet_Clock |
4 אוקטטים |
שעון Piconet של Connection_Handle שצוין. הערך הזה צריך להיות זהה לתגובה של הבקר לפקודת HCI HCI_Read_Clock עם הפרמטר 'Which_Clock' של 0x01 (שעון Piconet). יחידה: N * 0.3125 אלפיות השנייה (שעון Bluetooth אחד) |
Retransmission_Count |
4 אוקטטים |
מספר ההעברות החוזרות מאז האירוע האחרון. הספירה הזו תתאפס אחרי הדיווח למארח. |
No_RX_Count |
4 אוקטטים |
אין ספירת RX מאז האירוע האחרון. המספר גדל כשלא מתקבלת חבילה במועד הזמן המתוזמן או כשהחבילה שהתקבלה פגומה. הספירה הזו תתאפס אחרי הדיווח למארח. |
NAK_Count |
4 אוקטטים |
מספר ה-NAK (הודעה שלילית על אישור) מאז האירוע האחרון. הספירה הזו תתאפס אחרי הדיווח למארח. |
Last_TX_ACK_Timestamp |
4 אוקטטים |
חותמת הזמן של אישור ה-TX האחרון. הוא מבוסס על שעון ה-Bluetooth של ה-piconet central (CLK). יחידה: N * 0.3125 אלפיות השנייה (שעון Bluetooth אחד) |
Flow_Off_Count |
4 אוקטטים |
מספר הפעמים שבהן הבקר מקבל אירוע Flow-off (STOP) מאז האירוע האחרון. הספירה הזו תתאפס אחרי הדיווח למארח. |
Last_Flow_On_Timestamp |
4 אוקטטים |
חותמת הזמן של ה-Flow-on (GO) האחרון. הוא מבוסס על שעון ה-Bluetooth של ה-piconet central (CLK). יחידה: N * 0.3125 אלפיות השנייה (שעון Bluetooth אחד) |
Buffer_Overflow_Bytes |
4 אוקטטים |
[בבייט]
מספר האירועים של זליגת נתונים מאז האירוע האחרון. |
Buffer_Underflow_Bytes |
4 אוקטטים |
[בבייט]
מספר אירועי מצב 'חסר ב-buffer' מאז האירוע האחרון. |
bdaddr |
6 אוקטטים | כתובת המכשיר המרוחק |
cal_failed_item_count |
אוקטט אחד | מספר הפריטים שנכשלו בכיול |
TX_Total_Packets |
4 אוקטטים | מספר החבילות שנשלחות. |
TX_UnAcked_Packets |
4 אוקטטים |
מספר החבילות שלא מקבלות אישור. המספר הזה מתאפס אחרי שמדווחים למארח. |
TX_Flushed_Packets |
4 אוקטטים |
מספר החבילות שלא נשלחות עד לנקודת השטיפה. המספר הזה מתאפס אחרי שמדווחים למארח. |
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. כשהערך הזה עולה, שכבת הקישור לא מקבלת עומס שימושי ספציפי עד לנקודת ה-flush (ב-CIS) או בסוף האירוע שאליו הוא משויך (ב-BIS. אפשר לעיין במפרט הליבה של Bluetooth, גרסה 5.4, כרך 6, חלק ב', סעיף 4.4.6.6). |
Coex_Info_Mask |
2 אוקטטים |
ביט 0 – CoexInvolvement: מוגדר כדי לציין שיש חשד שפעילויות של שיתוף תדרים מעורבות ביצירת הדוח הזה (לדוגמה, קטעי קול קטועים ב-A2DP והתקרבות ל-LSTO). ביט 1 – WL 2G Radio Active: מוגדר כדי לציין שהרדיו של WLAN 2G פעיל. ביט 2 – WL 2G Connected: מוגדר כדי לציין שהרדיו של WLAN 2G פעיל ומחובר. ביט 3 – WL 5G/6G Radio Active: מוגדר כדי לציין ש-WLAN 5G/6G Radio פעיל. ביט 4-15 – שמור |
פרמטר ספציפי לספק | (אורך הפרמטר הכולל – TBD) * אוקטטים | כדי שספק הבקר יוכל לקבל פרמטרים נוספים שספציפיים לספק. |
קוד אירוע משני = 0x58 [Quality_Report_Id = 0x05, אירוע Root Inflammation]
האירוע הזה מציין ש-HAL של Bluetooth או הבקר נתקלו בשגיאה קטלנית, ושצריך את סטאק 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 |
אוקטט אחד |
0x00 עד 0x04: שמורים. 0x05: דלקת בשורש. 0x06 עד 0xFF: שמורים. |
Error_Code |
אוקטט אחד |
0x00: קוד שגיאה ספציפי לספק של ערכת השבבים כלול. 0x01 עד 0xFF: אירעה תקלה בבקר. לרשימת קודי השגיאה והתיאורים שלהם, אפשר לעיין במפרט Bluetooth [כרך 2] חלק D, קודי שגיאה. |
Vendor_Specific_Error_Code |
אוקטט אחד |
0x00: לא כלול קוד שגיאה ספציפי לספק הצ'יפסט. 0x01 עד 0xFF: קוד שגיאה ספציפי לספק של ערכת השבבים. |
פרמטר ספציפי לספק | (אורך הפרמטר הכולל - 4) * אוקטטים | כדי שספק הבקר יוכל לקבל פרמטרים נוספים שספציפיים לספק. |
קוד אירוע משנה = 0x58 [Quality_Report_Id = 0x11 ~ 0x13, אירוע שקשור ל-Log Dump]
פרמטר של אירוע משנה | גודל | המטרה |
---|---|---|
Quality_Report_Id |
אוקטט אחד |
0x00 עד 0x10: שמורים. 0x11: מעקב אחרי הודעות LMP/LL. 0x12: מעקב תזמון של Bluetooth Multi-link/Coex. 0x13: העתקת נתונים של מידע על תוצאות ניפוי הבאגים של הבקר. 0x14 עד 0xFF: שמורים. |
Connection_Handle |
2 אוקטטים | Connection Handle. |
פרמטר ספציפי לספק | (אורך הפרמטר הכולל - 4) * אוקטטים | פורמט ספציפי לספק של מעקב אחר הודעות LMP, מעקב אחר תזמון של Bluetooth Multi-link/Coex ו-dump של נתוני מידע לניפוי באגים של בקר. |
תמיכה במספר מפרסמים
מטרות התמיכה במספר מפרסמים הן:
-
יכולת לתמוך בכמה מודעות
(
max_advt_instances
) - עוצמות שידור שונות שמאפשרות טווח משתנה
- תוכן פרסומי שונה
- תגובה מותאמת אישית לכל מפרסם
- פרטיות (לא ניתן לעקוב) לכל מפרסם
- ניתן להתחבר
כדי שהמפרט הזה יהיה קרוב לסטנדרטים הקיימים, צירפנו את הפקודות הבאות שספציפיות לכל ספק. הם נגזרים מהמפרט של Bluetooth Core 4.1.
LE_Multi_Advt_Command
OCF: 0x154
פרמטר של פקודה | גודל | המטרה |
---|---|---|
Multi_advt_opcode |
אוקטט אחד |
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 |
אוקטט אחד | סטטוס Command Complete |
Multi_advt_opcode |
אוקטט אחד |
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, דף 964 (פקודה להגדרת פרמטר של פרסום ב-LE)
Sub OCF: 0x01
פרמטר של פקודת משנה | גודל | המטרה |
---|---|---|
Advertising_Interval_Min |
לפי מפרט | לפי מפרט |
Advertising_Interval_Max |
לפי מפרט | לפי מפרט |
Advertising_Type |
לפי מפרט | לפי מפרט |
Own_Address_Type |
לפי מפרט | לפי מפרט |
Own_Address |
לפי מפרט | לפי מפרט |
Direct_Address_Type |
לפי מפרט | לפי מפרט |
Direct_Address |
לפי מפרט | לפי מפרט |
Advertising_Channel_Map |
לפי מפרט | לפי מפרט |
Adverstising_Filter_Policy |
לפי מפרט | לפי מפרט |
Advertising_Instance |
אוקטט אחד | מציין את ההתאמה של הפרמטרים שלמעלה למכונה |
Tx_power |
אוקטט אחד |
Transmit_Power יחידה – ב-dBm (מספר שלם עם סימן) טווח (-70 עד +20) |
הפרמטר Own_Address
יכול להיות כתובת שמוגדרת על ידי המארח בזמן הגדרת המכונה עם כמה מודעות. כך אפשר לקבל כתובת פרטית שניתן לפתור בזמן השידור של האות הראשון. הפרסום במכונה ימשיך ללא קשר לחיבור. סטאק BT המארח יכול להנפיק פקודה להפעלת פרסום במכונה אחרי החיבור.
אירוע Command Complete (השלמת הפקודה) ייווצר עבור הפקודה הזו, כפי שמפורט במפרט של Bluetooth Core 4.1, בהתאם לפקודה שלמעלה. אם מופעלת מודעה לא חוקית או אם הפרמטרים של Tx_Power
לא חוקיים, המערכת תחזיר מהבקר קוד שאיננו קוד הצלחה (פרמטר לא חוקי).
פרמטר להחזרה | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
Multi_advt_opcode |
אוקטט אחד | 0x01 [Set_Advt_Param_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd
מקור המידע: מפרט Bluetooth Core 4.1, דף 969 (פקודה להגדרת נתוני פרסום ב-LE)
Sub OCF: 0x02
פרמטר של פקודת משנה | גודל | המטרה |
---|---|---|
Advertising_Data_Length |
לפי מפרט | לפי מפרט |
Advertising_Data |
לפי מפרט | לפי מפרט |
Advertising_Instance |
אוקטט אחד | מציין את ההתאמה של הפרמטרים שלמעלה למכונה |
אירוע Command Complete (השלמת הפקודה) ייווצר עבור הפקודה הזו, כפי שמפורט במפרט של Bluetooth Core 4.1, בהתאם לפקודה שלמעלה. אם מופעלת שגיאה במכונה הפרסום או בפרמטרים Tx_Power
, הבקר יגיב עם קוד שאיננו קוד הצלחה.
פרמטר להחזרה | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
Multi_advt_opcode |
אוקטט אחד | 0x02 [Set_Advt_Data_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd
מקור מידע בסיסי: מפרט Bluetooth Core 4.1, דף 970 (פקודת נתוני תגובה של LE Set Scan)
Sub OCF: 0x03
פרמטר של פקודת משנה | גודל | המטרה |
---|---|---|
Scan_Response_Data_Length |
לפי מפרט | לפי מפרט |
Scan_Response_Data |
לפי מפרט | לפי מפרט |
Advertising_Instance |
אוקטט אחד | מציין את ההתאמה של הפרמטרים שלמעלה למכונה |
אירוע Command Complete (השלמת הפקודה) ייווצר עבור הפקודה הזו, כפי שמפורט במפרט של Bluetooth Core 4.1, בהתאם לפקודה שלמעלה. אם מופע הפרסום או הפרמטרים של Tx_Power
לא חוקיים, המערכת תשיב עם קוד שאיננו קוד הצלחה (פרמטר לא חוקי).
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
Multi_advt_opcode |
אוקטט אחד | 0x03 [Set_Scan_Resp_Data_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd
מקור מידע בסיסי: מפרט Bluetooth Core 4.1, דף 963 (פקודה להגדרת כתובת אקראית ב-LE)
Sub OCF: 0x04
פרמטר של פקודת משנה | גודל | המטרה |
---|---|---|
כתובת אקראית | לפי מפרט | לפי מפרט |
Advertising_Instance |
אוקטט אחד | מציין את ההתאמה של הפרמטרים שלמעלה למכונה |
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
Multi_advt_opcode |
אוקטט אחד | 0x04 [Set_Random_Addr_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd
מקור מידע בסיסי: מפרט Bluetooth Core 4.1, דף 971 (פקודה להפעלת מודעות LE במפרט הליבה הזה)
OCF: 0x05
פרמטר של פקודת משנה | גודל | המטרה |
---|---|---|
Advertising_Enable |
אוקטט אחד | ערך של 1 מציין הפעלה. כל ערך אחר פירושו השבתה. |
Advertising_Instance |
אוקטט אחד | מציין את ההתאמה של הפרמטרים שלמעלה למכונה. מכונה 0 היא מכונה רגילה של HCI. |
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
Multi_advt_opcode |
אוקטט אחד | 0x05 [Set_Advt_Enable_Multi_Sub_Cmd] |
העברה של פתרון כתובת פרטית
התכונה הזו מאפשרת פתרון של כתובת פרטית בקושחה או בחומרה של הבקר, ומספקת את היתרונות הבאים:
- זמן האחזור המשויך למארח בפתרון כתובת פרטית
- חיסכון באנרגיה על ידי הימנעות מהפעלת המארח
LE_Set_RPA_Timeout
OCF: 0x15C
פרמטר של פקודה | גודל | המטרה |
---|---|---|
LE_local_IRK |
16 אוקטטים | מפתח ה-IRK המקומי של המכשיר ששימש ליצירת הכתובות הניתנות לפתרון באופן אקראי. |
tRPA_min |
2 אוקטטים |
הזמן הקצוב המינימלי ליצירת RPA בשניות. אחרי הזמן הקצוב הזה, המאגר צריך ליצור כתובות חדשות שניתן למצוא אותן לכל אירוע פרסום/סריקה/חיבור. טווח תקין: 300-1800 |
tRPA_max |
2 אוקטטים |
הזמן המקסימלי ליצירת RPA בשניות. הבקר חייב ליצור כתובות חדשות שניתן לפתור לכל אירועי הפרסום/הסריקה/החיבור לפני או במהלך הזמן הקצוב לתפוגה. טווח תקין: tRPA_min -1800
|
פרמטר להחזרה | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד |
הסטטוס של הפקודה. הצעות לערכים של סטטוס HCI: 0x00 הצלחה 0x01 פקודה לא מוכרת (אם היא לא נתמכת) 0x12 פרמטרים לא חוקיים של פקודה (אם פרמטרים כלשהם נמצאים מחוץ למגוון הנתון) |
LE_RPA_offload_Command
OCF: 0x155
פרמטר של פקודה | גודל | המטרה |
---|---|---|
RPA_offload_opcode |
אוקטט אחד |
0x1 – הפעלת תכונה ספציפית ללקוח 0x2 – הוספת IRK לרשימה 0x3 – הסרת IRK מהרשימה 0x4 – ניקוי רשימת ה-IRK 0x5 – קריאת רשומת IRK ברשימה |
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
Event_RPA_offload_opcode |
אוקטט אחד |
0x1 – הפעלת תכונה ספציפית ללקוח 0x2 – הוספת IRK לרשימה 0x3 – הסרת IRK מהרשימה 0x4 – ניקוי רשימת ה-IRK 0x5 – קריאת רשומת IRK ברשימה |
LE_RPA_offload: Enable_cust_specific_sub_Command
Sub OCF: 0x01
פרמטר של פקודת משנה | גודל | המטרה |
---|---|---|
enable_customer_specific_feature_set |
אוקטט אחד |
0x01 – הפעלת תכונת RPA שהועברה לענן 0x00 – השבתת תכונת RPA שהועברה לענן |
המארח צריך להפעיל את העברת העומסים של RPA על סמך יכולת הצ'יפ. מידע נוסף זמין ב-LE_Get_Vendor_Capabilities_Command
.
לכל צ'יפ יכול להיות max_irk_list_sz
משתנה בקושחת.
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
Event_cust_specific_feature_opcode |
אוקטט אחד | 0x01 [Enable customer-specific feature] |
LE_RPA_offload: Add_IRK_to_list_sub_Command
Sub OCF: 0x02
פרמטר של פקודת משנה | גודל | המטרה |
---|---|---|
LE_IRK |
16 אוקטטים | LE IRK (1st byte LSB) |
Address_Type |
אוקטט אחד |
0: כתובת ציבורית 1: כתובת אקראית |
LE_Device_Address |
6 אוקטטים | כתובת ציבורית או אקראית שמשויכת ל-IRK (הביט ה-LSB הראשון) |
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
Event_cust_specific_feature_opcode |
אוקטט אחד | 0x02 [Add IRK to the list] |
LE_IrkList_AvailableSpaces |
אוקטט אחד | רשימת הרשומות הזמינות ב-IRL אחרי הפעולה הנוכחית |
LE_RPA_offload: Remove_IRK_to_list_sub_Command
Sub OCF: 0x03
פרמטר של פקודת משנה | גודל | המטרה |
---|---|---|
Address_Type |
אוקטט אחד |
0: כתובת ציבורית 1: כתובת אקראית |
LE_Device_Address |
6 אוקטטים | כתובת ציבורית או אקראית שמשויכת ל-IRK |
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
Event_cust_specific_feature_opcode |
אוקטט אחד | 0x03 [הסרת IRK מהרשימה] |
LE_IrkList_AvailableSpaces |
אוקטט אחד | רשימת הרשומות הזמינות ב-IRL אחרי הפעולה הנוכחית |
LE_RPA_offload: Clear_IRK_list_sub_Command
Sub OCF: 0x04
פרמטר של פקודת משנה | גודל | המטרה |
---|---|---|
ללא |
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
Event_cust_specific_feature_opcode |
אוקטט אחד | 0x04 [Clear IRK List] |
LE_IrkList_AvailableSpaces |
אוקטט אחד |
רשימת הרשומות הזמינות ב-IRL אחרי הפעולה הנוכחית [max_irk_list_sz]
|
LE_RPA_offload: Read_IRK_list_sub_Command
OCF משני: 0x05
פרמטר של פקודת משנה | גודל | המטרה |
---|---|---|
LE_read_IRK_list_entry-index |
אוקטט אחד | אינדקס של רשימת IRK [0, max_irk_list_sz-1] |
ייווצר אירוע Command Complete עבור הפקודה הזו.
פרמטר להחזרת נתונים | גודל | המטרה |
---|---|---|
Status |
אוקטט אחד | סטטוס Command Complete |
Event_cust_specific_feature_opcode |
אוקטט אחד | 0x05 [קריאת רשומה ברשימה של IRK] |
LE_Read_IRK_List_entry |
אוקטט אחד | האינדקס של ה-IRK שהמארח רוצה לקרוא חזרה (הגודל המקסימלי של רשימת ה-IRK הוא 32) |
LE_IRK |
16 אוקטטים | ערך IRK |
Address_Type |
אוקטט אחד |
0: כתובת ציבורית 1: כתובת אקראית |
LE_Device_Address |
6 אוקטטים | כתובת ציבורית או אקראית שמשויכת ל-IRK |
LE_Resolved_Private_Address |
6 אוקטטים | הכתובת הפרטית הנוכחית שניתן לפתור של ה-IRK הזה |