דרישות בנוגע ל-HCI

ממשק הבקר המארח (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 גודל משתנה מחרוזת תווים לשם המקומי.

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

ייווצר אירוע 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 גודל משתנה מחרוזת תווים לנתוני היצרן.

הערות:
  • נכון לעכשיו, מספר התווים המקסימלי במחרוזת שם מקומית הוא 29
  • לא רלוונטי כשהפעולה היא 'ניקוי' (0x2)
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 גודל משתנה מחרוזת תווים לנתוני השירות.

הערות:
  • נכון לעכשיו, מספר התווים המקסימלי במחרוזת שם מקומית הוא 29
  • לא רלוונטי כשהפעולה היא 'ניקוי' (0x2)
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 אוקטטים

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

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

הערך של הבייט

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

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

המטרה של המידע הזה היא לאפשר לפונקציות ברמה גבוהה יותר במערכת המארח לנתח את הפעילויות הכוללות של כל הרכיבים, כולל הבקר של 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.
  • 0x00 – כותרת SCMS-T לא כלולה.
  • 0x01 – כותרת 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.
שמינייה 0: אורך בלוק | תת-תדרים | שיטת הקצאה
שמינייה 1: ערך מינימלי של מאגר ביט
שמינייה 2: ערך מקסימלי של מאגר ביט
שמינייה 3: תדירות דגימה | מצב ערוץ
שמיניות 4-31: שמורות

קודק AAC:

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

קודק LDAC:

אוקטט 0-3: מזהה הספק
0x0000012D

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

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

אוקטט 7: LDAC Channel Mode
0x01 – סטריאו
0x02 – כפול
0x04 – מונו
ערכים אחרים שמורים

אוקטט 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 – הוספה
0x01 – מחיקה
0x02 – ניקוי
0x03 – שאילתה חד-פעמית

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

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

ביט 0: מוגדר להפעלת מצב מעקב אחר איכות.
ביט 1: מוגדר כדי להפעיל אירוע Approaching LSTO (עבור ACL/‏(e)SCO/‏ISO).
ביט 2: מוגדר להפעלת אירוע של אודיו קטועה ב-A2DP.
ביט 3: מוגדר להפעלת אירוע של קול קטוע ב-(e)SCO.
ביט 4: מוגדר כדי להפעיל את האירוע Root inflammation.
ביט 5: מוגדר להפעלת מצב מעקב אחר צריכת אנרגיה.
ביט 6: מוגדר להפעלת אירוע של אודיו LE קטועה.
ביט 7: מוגדר כדי להפעיל אירוע של כשל התחברות.
ביט 8: מוגדר כדי להפעיל את הטריגר של אירוע במצב 'נתונים מתקדמים של תדרי רדיו'.
ביט 9: מוגדר כדי להפעיל את הדוח המחזורי של נתוני ה-RF המתקדמים.
ביטים 10 עד 14: שמורים.
ביט 15: מוגדר כדי להפעיל אירועי איכות ספציפיים לספק.
ביט 16: מוגדר כדי להפעיל מעקב אחרי הודעות LMP/LL.
ביט 17: מוגדר כדי להפעיל את המעקב אחר תזמון של Bluetooth Multi-link/Coex.
ביט 18: מוגדר כדי להפעיל את מנגנון המידע של ניפוי הבאגים של הבקר.
ביטים 19 עד 30: שמורים.
ביט 31: מוגדר כדי להפעיל מעקב ספציפי לספק.

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

יחידה: ms
ברירת מחדל: 0 (אין הגבלה על המרווח).
טווח: 0 עד 65,535 אלפיות שנייה

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
ברירת מחדל: 1
טווח: 0 עד 4294967295 (0: מוגדר כ-1)

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

פרמטר של אירוע משנה גודל המטרה
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 שצוין.
הערך הזה הוא ערך מוחלט של עוצמת האות של המקלט.
טווח: -127 עד +20

SNR אוקטט אחד [בדציבלים]

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

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 אוקטטים [בבייט]

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

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) * אוקטטים כדי שספק הבקר יוכל לקבל פרמטרים נוספים שספציפיים לספק.
פרמטר של אירוע משנה גודל המטרה
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 הזה