דרישות ל-HCI

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

במסמך הזה מפורטת רשימה של דרישות ל-Bluetooth (BT) ול-Bluetooth Low Energy (BLE) HCI. המטרה היא שספקים של בקרי BT וספקים של בקרי BT צריכים לעמוד בדרישות הפלטפורמה האלה כדי להשתמש במערך התכונות שמתואר בהמשך.

במסמך הזה מתייחס למפרט Bluetooth Core 5.2 כ'מפרט'. מפרט Bluetooth Core 5.2 זמין באתר Bluetooth SIG יחד עם מסמכים אחרים שאומצו.

סקירה כללית של העיצוב

היכולות וההגדרות האישיות של הצ'יפים

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

כדי לנהל את הסביבה המשתנה ולנהל את ההעברות, פילוסופיית עיצוב של מתן אפשרות לבקרי BT לחשוף את היכולות שלהם (מעבר למפרט הסטנדרטי של Bluetooth Core 5.2) מתוארת במסמך הזה. מקבץ ה-BT המארח יכול להשתמש ביכולות האלה כדי לקבוע אילו תכונות להפעיל.

תמיכה בסטנדרטים פתוחים

אחת המטרות של Android היא לתמוך בתקנים פתוחים לאחר האישור במפרט Bluetooth. אם תכונה שמתוארת בהמשך תהפוך לזמינה בשיטות HCI סטנדרטיות במפרט Bluetooth עתידי, ניאלץ להגדיר את הגישה הזו כברירת המחדל.

יכולות ספציפיות לספק

פקודה ספציפית לספק: LE_Get_Vendor_Capabilities_Command

שדה הפקודה של OpCode (OCF): 0x153

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

המערכת תיצור אירוע Command complete (הרצת הפקודה) עבור הפקודה הזו.

פרמטר החזרה גודל המטרה
Status אוקטט אחד הסטטוס של הפקודה 'הושלמה'
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.
הפרמטר הזה הוצא משימוש בגרסה 0.98 של מפרט התכונות של Google, והוחלף בתכונת הפרטיות שזמינה במפרט של BT מגרסה 4.2 ואילך.
total_scan_results_storage 2 אוקטטים נפח אחסון לתוצאות סריקה בבייטים
max_irk_list_sz אוקטט אחד מספר רשומות IRK שנתמכות בקושחה
filtering_support אוקטט אחד תמיכה בסינון בבקר
0 = לא נתמך
1 = נתמך
max_filter אוקטט אחד מספר המסננים הנתמכים
activity_energy_info_support אוקטט אחד תמיכה בדיווח על פרטי פעילות ואנרגיה
0 = לא מסוגל
1 = יכול
version_supported 2 אוקטטים המדיניות הזו מציינת את הגרסה של מפרט התכונות של Google שנתמך
byte[0] = מספר ראשי
byte[1] = מספר משני

v1.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 = נתמך

צוין אחרי גרסה v0.98.
הפרמטר הזה הוצא משימוש בגרסה 0.98 של מפרט התכונות של Google, והוחלף בתכונת הפרטיות שזמינה במפרט של 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
מסכות ביט לסוגי קודק נתמכים
ביט 0 – SBC
ביט 1 – AAC
ביט 2 – APTX
Bit 3 – APTX HD
ביט 4 – LDAC
ביט 5-31 שמור
a2dp_offload_v2_support אוקטט אחד תמיכה בפקודות A2dp Offload v2 בבקר Bluetooth (מידע נוסף זמין במאמר התחלת טעינה של A2DP, הפסקת עומס A2DP)
0 = לא נתמך
1 = נתמך

קיבוץ תוצאות סריקה

מטרת התכנון היא לשפר את האופן שבו ההתראות על אירועים של Bluetooth LE Scan Response נשלחות למארח, כדי לחסוך בצריכת החשמל אצל המארח.

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

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

הקושחה תתמוך בשני סוגים של קיבוץ, שאפשר להפעיל בו-זמנית:

  • בוצע חיתוך. מכיל את רכיבי המידע הבאים: {MAC, TX Power, RSSI, Timestamp}
  • מלא. מכיל את רכיבי המידע הבאים: {MAC, TX Power, RSSI, Timestamp, Adv Data, Scan Response}

LE_Batch_Scan_Command

OCF: 0x156

פרמטר של פקודה גודל המטרה
Batch_Scan_opcode אוקטט אחד 0x1 – הפעלת תכונה ספציפית ללקוח
0x2 - הגדרת פרמטרים של סריקת פריטים באצווה
0x3 - הגדרת פרמטרים של סריקת באצווה
0x4 - קריאת פרמטרים של תוצאות סריקת באצווה

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

פרמטר החזרה גודל המטרה
Status אוקטט אחד הסטטוס של הפקודה 'הושלמה'
Batch_Scan_opcode אוקטט אחד 0x1 – הפעלת תכונה ספציפית ללקוח
0x2 - הגדרת פרמטרים של סריקת פריטים באצווה
0x3 - הגדרת פרמטרים של סריקת באצווה
0x4 - קריאת פרמטרים של תוצאות סריקת באצווה

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

Sub OCF: 0x01

פרמטר של פקודת משנה גודל המטרה
enable_customer_specific_feature_set אוקטט אחד 0x01 - הפעלת התכונה 'סריקת באצווה'
0x00 - השבתת התכונה 'סריקת באצווה'

המערכת תיצור אירוע Command complete (הרצת הפקודה) עבור הפקודה הזו.

פרמטר החזרה גודל המטרה
Status אוקטט אחד הסטטוס של הפקודה 'הושלמה'
Batch_Scan_opcode אוקטט אחד 0x1 – הפעלת תכונה ספציפית ללקוח
0x2 - הגדרת פרמטרים של סריקת פריטים באצווה
0x3 - הגדרת פרמטרים של סריקת באצווה
0x4 - קריאת פרמטרים של תוצאות סריקת באצווה

LE_Batch_Scan_Command: הגדרה של פקודת המשנה Batch Scan Storage Param

Sub OCF: 0x02

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

המערכת תיצור אירוע Command complete (הרצת הפקודה) עבור הפקודה הזו.

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

LE_Batch_Scan_Command: הגדרה של פקודת המשנה Batch Scan Param

Sub OCF: 0x03

פרמטר של פקודת משנה גודל המטרה
Batch_Scan_Mode אוקטט אחד 0x00 – סריקת פריטים באצווה מושבתת
0x01 – מצב קטוע מופעל
0x02 – מצב מלא מופעל
0x03 – מצב קטוע ומצב מלא מופעלים
Duty_cycle_scan_window 4 אוקטטים זמן סריקה באצווה (# מהמשבצת)
Duty_cyle_scan_interval 4 אוקטטים פרק זמן לסריקת אצווה (# חריץ)
own_address_type אוקטט אחד 0x00 - כתובת ציבורית של המכשיר
0x01 - כתובת אקראית של המכשיר
Batch_scan_Discard_Rule אוקטט אחד 0 – מחיקת הפרסומת הישנה ביותר
1 – מחיקת הפרסומת עם ה-RSSI החלשה ביותר

אם הפקודה הזו מופעלת, פקודת המשנה הזו תתחיל סריקה באצווה. בסריקה קטועה, התוצאות מאוחסנות בצורת קטועה שבה המפתח הייחודי של Truncated style = {BD_ADDR, Scan_interval}. כלומר, רק BD_ADDR will אחד מתועד בכל מרווח סריקה. הרשומה שצריך לשמור במצב 'חיתוך' היא: {BD_ADDR, Tx Power, RSSI, Timestamp}

כאשר מצב מלא מופעל, ייעשה שימוש בסריקה פעילה והתגובות לסריקה יוקלטו. המפתח הייחודי בסגנון מלא = {MAC, Ad Package}, ללא קשר למרווח הסריקה. התיעוד שצריך לשמור במצב מלא הוא {BD_ADDR, Tx Power, RSSI, Timestamp, Ad Package, Scan תגובה}. בסגנון מלא, אותה חבילת מודעות, כשהיא מוצגת מספר פעמים במרווחי סריקה שונים, מתועדת פעם אחת בלבד. עם זאת, במצב חתוך, ניתן לראות את BA_ADDR במרווחי זמן שונים של סריקה לפי הצורך (פעם אחת בכל מרווח סריקה). ה-RSSI הוא הערך הממוצע של כל הכפילויות של מודעה ייחודית בפרק זמן של סריקה.

המערכת תיצור אירוע Command complete (הרצת הפקודה) עבור הפקודה הזו.

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

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

Sub OCF: 0x04

פרמטר של פקודת משנה גודל המטרה
Batch_Scan_Data_read אוקטט אחד 0x01 – נתונים במצב חתוך
0x02 – נתונים במצב מלא

המערכת תיצור אירוע Command complete (הרצת הפקודה) עבור הפקודה הזו. כשהמארח מנפיק את הפקודה הזו, יכול להיות שכל התוצאות בשלט הרחוק לא יתאימו לאירוע אחד של CommandComplete. המארח יבצע איטרציה להרצת הפקודה הזו עד שבמספר הרשומות יהיה 0 מבחינת התוצאות המתאימות באירוע CommandComplete. המשמעות היא שלבקר אין עוד רשומות לתקשר עם המארח. כל אירוע של Command הושלם יכול להכיל מספר רשומות של סוג אחד בלבד של נתונים (מלאות או קטועות).

הפניות זמן של בקר ומארח לא מסונכרנות. היחידה של חותמת הזמן היא 50 אלפיות השנייה. הערך של חותמת הזמן מבוסס על הזמן שבו המארח נותן Read_Batch_Scan_Results_Sub_cmd על ידי המארח. אם זמן ההגעה של הפקודה הוא T_c בקושחה, השעה בפועל שבה נלקחה חותמת הזמן בקושחה היא T_fw. מועד הדיווח יהיה: (T_c - T_fw). T_c ו-T_fw נמצאים בדומיין זמן הקושחה. ההגדרה הזו מאפשרת למארח לחשב כמה זמן עבר האירוע.

פרמטר החזרה גודל המטרה
Status אוקטט אחד הסטטוס של הפקודה 'הושלמה'
Batch_scan_opcode אוקטט אחד 0x03 [הגדרת פרמטרים של סריקת באצווה]
Batch_Scan_data_read אוקטט אחד מזהה את הפורמט (קטוע או מלא)
num_of_records אוקטט אחד מספר הרשומות של Batch_Scan_data_read
format_of_data משתנה [truncet Mode [Toct_Templates:
Address[0]: 6 octets:
oct_Schedule_[0_octets:
oct_Schedule:
Address_Type[0]: 1 octet
Tx_Pwr[0]: 1 octet
RSSI[0] : 1 octet
Timestamp[0]: 2 octets
[מספר רשומות (num_of_records) עם פורמט למעלה]









num_of_recordsScan_data_resp

מסנן התוכן של חבילת הפרסום

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

LE_APCF_Command

OCF: 0x157

פרמטר של פקודה גודל המטרה
APCF_opcode אוקטט אחד 0x00 - Ax04 Ax- הפעלת Ax-D
המשך Ax01 - APCF Set Filtering parameters
0x01 - APCF Set Filtering parameters
0x02 - כתובת APCF של רשת שידור
0x03 - APCF Service UUID
0x04 - APCF Service SoliPC UUID
0x05 - APCF Set: שם מקומי
0x05






המערכת תיצור אירוע Command complete (הרצת הפקודה) עבור הפקודה הזו.

פרמטר החזרה גודל המטרה
Status אוקטט אחד סטטוס החזרה
APCF_opcode אוקטט אחד 0x00 - Ax04 Ax- הפעלת Ax-D
המשך Ax01 - APCF Set Filtering parameters
0x01 - APCF Set Filtering parameters
0x02 - כתובת APCF של רשת שידור
0x03 - APCF Service UUID
0x04 - APCF Service SoliPC UUID
0x05 - APCF Set: שם מקומי
0x05






LE_APCF_Command: Enable_sub_cmd

Sub OCF: 0x00

פרמטר של פקודת משנה גודל המטרה
APCF_enable אוקטט אחד 0x01 - הפעלת תכונת APCF
0x00 - השבתת תכונת APCF

המערכת תיצור אירוע Command complete (הרצת הפקודה) עבור הפקודה הזו.

פרמטר החזרה גודל המטרה
Status אוקטט אחד הסטטוס של הפקודה 'הושלמה'
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 אוקטטים מסכות ביט 3 לתכונות שנבחרו:
ביט 0: מוגדר להפעלת מסנן כתובת השידור
ביט 1: מוגדר להפעלת מסנן שינוי נתוני השירות
ביט 2: מגדירים להפעלת בדיקת UUID של השירות
ביט 3: מגדירים להפעלת בדיקת UUID של השירות שידול
ביט 4: מפעילים את בדיקת השם של היצרן להרשאת שירות
שלב 5: בודקים את סוג הביט של נתוני השירות


APCF_List_Logic_Type 2 אוקטטים פעולה לוגית לכל בחירת תכונה (מיקום לכל ביט) שצוינה ב-APCF_Feature_Selection.
תקף רק כשהתכונה מופעלת.
ערך המיקום של ביט:
0: או
1: AND
אם נבחרה לוגיקת "AND", חבילת ADV תעביר את המסנן רק אם היא מכילה את כל הערכים שברשימה.
אם נבחרה לוגיקת "OR", חבילת ADV תעביר את המסנן אם היא מכילה אחת מהרשומות שברשימה.
APCF_Filter_Logic_Type אוקטט אחד 0x00: או
0x01: וגם
הערה: סוג הלוגיקה הוא לא רלוונטי בשלושת השדות הראשונים של APCF_Feature_Selection, שהוא תמיד לוגיקת "AND". הם רלוונטיים רק לארבעה שדות של APCF_Feature_Selection (ביט 3 – ביט 6).
rssi_high_thresh אוקטט אחד [in dBm]
המערכת נחשבת למפרסמים שהם צופים רק אם האות גבוה מהסף הגבוה של ה-RSSI. אחרת, הקושחה צריכה להתנהג כאילו היא לא ראתה אותה.
delivery_mode אוקטט אחד 0x00 - immediate
0x01 - on_found
0x02 - batched
onfound_timeout 2 אוקטטים תקף רק אם הערך של delivery_mode הוא on_found.
[באלפיות שנייה]
הגיע הזמן שהקושחה תישאר מושהית ותאסוף פרסומות נוספות לפני הדיווח.
onfound_timeout_cnt אוקטט אחד תקף רק אם הערך של delivery_mode הוא on_found.
[count]
אם מודעה ב-onFound נשארת בקושחה למשך onfound_timeout, היא תאסוף כמה מודעות והספירה תיבחן. אם המספר יחרוג מ- onfound_timeout_cnt, נדווח על כך OnFound מיד לאחר מכן.
rssi_low_thresh אוקטט אחד תקף רק אם הערך של delivery_mode הוא on_found.
[in dBm]
חבילת המפרסם נחשבת כחבילת שלא מוצגת אם ערך ה-RSSI של החבילה שהתקבלה לא גבוה מהסף הנמוך של 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 Advt.

המעבר של OnFound/OnLost למסנן (אם הוא מופעל) ייראה כך:

המערכת תיצור אירוע Command complete (הרצת הפקודה) עבור הפקודה הזו.

פרמטר החזרה גודל המטרה
Status אוקטט אחד הסטטוס של הפקודה 'הושלמה'
APCF_opcode אוקטט אחד 0x01 - פרמטרים לסינון של קבוצת APCF
APCF_Action אוקטט אחד הדהוד של APCF_Action של הפקודה
APCF_AvailableSpaces אוקטט אחד מספר הערכים הזמינים בטבלת המסננים

LE_APCF_Command: broadcast_address_sub_cmd

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

Sub OCF: 0x02

פרמטר של פקודת משנה גודל המטרה
APCF_Action אוקטט אחד 0x00 – הוספה
0x01 – מחיקה
0x02 – ניקוי
מחיקה תגרום למחיקת כתובת השידור שצוינה במסנן שצוין.
ניקוי הפעולה ינקה את כל כתובות השידור במסנן שצוין.
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 אוקטט אחד הסטטוס של הפקודה 'הושלמה'
APCF_opcode אוקטט אחד 0x02 - כתובת השדרן APCF
APCF_Action אוקטט אחד הדהוד של APCF_Action של הפקודה
APCF_AvailableSpaces אוקטט אחד מספר הרשומות בחינם שעדיין זמינות בטבלה 'כתובת השידור'

LE_APCF_Command: service_uuid_sub_cmd

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

Sub OCF: 0x03

פרמטר של פקודת משנה גודל המטרה
APCF_Action אוקטט אחד 0x00 – הוספה
0x01 – מחיקה
0x02 – ניקוי
מחיקה תגרום למחיקת כתובת ה-UUID של השירות שצוינה במסנן שצוין.
הפעולה הזו תגרום למחיקת כל מזהי UUID של השירות במסנן שצוין.
APCF_Filter_Index אוקטט אחד אינדקס המסננים (0, max_filter-1)
APCF_UUID 2,4,16 אוקטט ה-UUID של השירות (בגרסת 16 סיביות, 32 ביט או 128 ביט) להוספה לרשימה או למחיקה ממנה.
APCF_UUID_MASK 2,4,16 אוקטט מסכת ה-UUID של השירות (16 סיביות, 32 ביט או 128 סיביות) שיש להוסיף לרשימה. היא צריכה להיות באותו אורך כמו APCF_UUID.

המערכת תיצור אירוע Command complete (הרצת הפקודה) עבור הפקודה הזו.

פרמטר החזרה גודל המטרה
Status אוקטט אחד הסטטוס של הפקודה 'הושלמה'
APCF_opcode אוקטט אחד 0x03 - UUID של שירות APCF
APCF_Action אוקטט אחד הדהוד של APCF_Action של הפקודה
APCF_AvailableSpaces אוקטט אחד מספר הרשומות בחינם שעדיין זמינות בטבלה Service UUID

LE_APCF_Command: requestation_uuid_sub_cmd

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

Sub OCF: 0x04

פרמטר של פקודת משנה גודל המטרה
APCF_Action אוקטט אחד 0x00 – הוספה
0x01 - מחיקה
0x02 - ניקוי
מחיקה תגרום למחיקת כתובת ה-UUID של השידול במסנן שצוין.
הפעולה 'ניקוי' תגרום למחיקת כל מזהי UUID של השידול במסנן שצוין.
APCF_Filter_Index אוקטט אחד אינדקס המסננים (0, max_filter-1)
APCF_UUID 2,4,16 אוקטט ה-UUID של השידול (16 ביט, 32 ביט או 128 ביט) שצריך להוסיף לרשימה או למחוק אותה.
APCF_UUID_MASK 2,4,16 אוקטט מסכת ה-UUID של השידול (16 ביט, 32 ביט או 128 ביט) שצריך להוסיף לרשימה. האורך שלה צריך להיות זהה לזה של APCF_UUID.

המערכת תיצור אירוע Command complete (הרצת הפקודה) עבור הפקודה הזו.

פרמטר החזרה גודל המטרה
Status אוקטט אחד הסטטוס של הפקודה 'הושלמה'
APCF_opcode אוקטט אחד 0x04 – מזהה ייחודי אוניברסלי (UUID) של APCF
APCF_Action אוקטט אחד הדהוד של APCF_Action של הפקודה
APCF_AvailableSpaces אוקטט אחד מספר הרשומות ללא תשלום שעדיין זמינות בטבלת ה-UUID של השידול

LE_APCF_Command: Local_name_sub_cmd

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

Sub OCF: 0x05

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

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

המערכת תיצור אירוע Command complete (הרצת הפקודה) עבור הפקודה הזו.

פרמטר החזרה גודל המטרה
Status אוקטט אחד הסטטוס של הפקודה 'הושלמה'
APCF_opcode אוקטט אחד 0x05 - שם מקומי של APCF
APCF_Action אוקטט אחד הדהוד של APCF_Action של הפקודה
APCF_AvailableSpaces אוקטט אחד מספר הרשומות בחינם שעדיין זמינות בטבלת השמות המקומיים

LE_APCF_Command: manf_data_sub_cmd

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

Sub OCF: 0x06

פרמטר של פקודת משנה גודל המטרה
APCF_Action אוקטט אחד 0x00 – הוספה
0x01 – מחיקה
0x02 – ניקוי
מחיקה תגרום למחיקת מחרוזת נתוני היצרן שצוינה במסנן שצוין.
הפעולה הזו תגרום למחיקת כל מחרוזות הנתונים של היצרן במסנן שצוין.
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 אוקטט אחד הסטטוס של הפקודה 'הושלמה'
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 – ניקוי
מחיקה תגרום למחיקת מחרוזת נתוני השירות שצוינה במסנן שצוין.
הפעולה הזו תגרום למחיקת כל מחרוזות נתוני השירות במסנן שצוין.
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 אוקטט אחד הסטטוס של הפקודה 'הושלמה'
APCF_opcode אוקטט אחד 0x07 - נתוני שירות של APCF
APCF_Action אוקטט אחד הדהוד של APCF_Action של הפקודה
APCF_AvailableSpaces אוקטט אחד מספר הרשומות בחינם שעדיין זמינות לטבלת נתוני השירות

LE_APCF_Command: ad_type_sub_cmd

פקודת המשנה הזו משמשת להוספה או למחיקה של סוג מודעה, או לניקוי רשימת סוגי AD לסינון על שבב. אפשר לבדוק באמצעות 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 – ניקוי
מחיקה תגרום למחיקת סוג המודעה שצוין במסנן שצוין.
ניקוי הבחירה יגרום למחיקת כל סוגי המודעות במסנן שצוין.
APCF_Filter_Index אוקטט אחד אינדקס מסננים (0, max_filter-1)
APCF_AD_TYPE אוקטט אחד סוג המודעה להוספה לרשימה או למחיקה ממנה. התעלמות כאשר APCF_Action הוא 0x02 (ניקוי)
APCF_AD_DATA_Length אוקטט אחד 0x00 – משמעותו 'ללא סינון של תוכן נתונים'
התעלמות כשהערך של APCF_Action הוא 0x02 (ניקוי)
APCF_AD_DATA גודל משתנה גודל משתנה, לפי APCF_AD_DATA_Length
מתעלמים כאשר APCF_Action הוא 0x02 (ניקוי)
APCF_AD_DATA_MASK גודל משתנה גודל משתנה, לפי APCF_AD_DATA_Length
מתעלמים כאשר APCF_Action הוא 0x02 (ניקוי)
האורך צריך להיות זהה לזה של APCF_AD_DATA.

המערכת תיצור אירוע Command complete (הרצת הפקודה) עבור הפקודה הזו.

פרמטר החזרה גודל המטרה
Status אוקטט אחד הסטטוס של הפקודה 'הושלמה'
APCF_opcode אוקטט אחד 0x09 – סוג מודעה APCF
APCF_Action אוקטט אחד הדהוד של APCF_Action של הפקודה
APCF_AvailableSpaces אוקטט אחד מספר הרשומות בחינם שעדיין זמינות בטבלה 'סוג מודעה'

LE_APCF_Command: read_extended_features_sub_cmd

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

Sub OCF: 0xFF

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

המערכת תיצור אירוע Command complete (הרצת הפקודה) עבור הפקודה הזו.

פרמטר החזרה גודל המטרה
Status אוקטט אחד הסטטוס של הפקודה 'הושלמה'
APCF_opcode אוקטט אחד 0xFF – APCF_Read_Extended_Features
APCF_extended_features 2 אוקטט

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

  • Bit 0: תמיכה במסנן של Transport Discovery Service
  • קטע 1: מסנן סוגי מודעות לתמיכה
  • Bit 2 ~15: שמור לשימוש עתידי

ערך הביט

  • 0 = אין תמיכה
  • 1 = נתמך

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

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

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

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

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

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

LE_Get_Controller_Activity_Energy_Info

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

OCF: 0x159

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

המערכת תיצור אירוע Command complete (הרצת הפקודה) עבור הפקודה הזו.

פרמטר החזרה גודל המטרה
Status אוקטט אחד הסטטוס של הפקודה 'הושלמה'
total_tx_time_ms 4 אוקטטים זמן ביצוע כולל
total_rx_time_ms 4 אוקטטים זמן ביצוע כולל
total_idle_time_ms 4 אוקטטים משך הזמן הכולל ללא פעילות (מצבים של צריכת חשמל נמוכה כשהם לא במצב שינה)
total_energy_used 4 אוקטטים סה"כ אנרגיה בשימוש [מוצר של נוכחי (mA), מתח (V) וזמן (אלפיות שנייה)]

פקודת LE מורחבות של הפרמטרים לסריקה

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

חומר עזר על בסיס: BT Core 5.2 Specification, עמוד 2493 (LE Set Scan Parameters Command)

OCF: 0x15A

פרמטר הפקודה גודל המטרה
LE_Ex_Scan_Type אוקטט אחד 0x00 – סריקה פסיבית. לא יישלחו מנות SCAN_REQ (ברירת מחדל).
0x01 - סריקה פעילה. ניתן לשלוח SCAN_REQ מנות.
LE_Ex_Scan_Interval 4 אוקטטים מוגדר כמרווח הזמן מרגע התחלת סריקת ה-LE האחרונה של הבקר עד שהתחילה בסריקת ה-LE הבאה.
טווח: 0x0004 עד 0x00FFFFFF
ברירת מחדל: 0x0010 (10 אלפיות שנייה)
זמן = N * 0.625 אלפיות שנייה
טווח זמן: 2.5 אלפיות השנייה עד 10442.25 שניות
LE_Ex_Scan_Window 4 אוקטטים משך הזמן של סריקת ה-LE. LE_Scan_Window יהיה שווה ל-LE_Scan_Interval או קטן ממנו.
טווח: 0x0004 עד 0xFFFF
ברירת מחדל: 0x0010 (10 אלפיות שנייה)
זמן = N * 0.625 אלפיות שנייה
טווח זמן: 2.5 אלפיות השנייה עד 40.95 שניות
Own_Address_Type אוקטט אחד 0x00 – כתובת ציבורית של המכשיר (ברירת מחדל)
0x01 – כתובת אקראית של המכשיר
LE_Ex_Scan_Filter_Policy 0x00 – קבלת כל חבילות הפרסום (ברירת מחדל). המערכת תתעלם מחבילות פרסום מכוונות שלא מכוונות למכשיר הזה.
0x01 – התעלמות מחבילות מודעות ממכשירים שלא מופיעים ברשימה הלבנה בלבד. המערכת תתעלם מחבילות פרסום מכוון שלא ממוענות למכשיר הזה.

המערכת תיצור אירוע Command complete (הרצת הפקודה) עבור הפקודה הזו.

פרמטר החזרה גודל המטרה
Status אוקטט אחד הסטטוס של הפקודה 'הושלמה'

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

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

OCF: 0x15B

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

המערכת תיצור אירוע Command complete (הרצת הפקודה) עבור הפקודה הזו.

פרמטר החזרה גודל המטרה
Status אוקטט אחד הסטטוס של הפקודה 'הושלמה'

תמיכה בייצוא מחומרה של A2DP

התכונה 'הפסקת טעינה' A2DP תומכת בהעלאת העומס של תהליך קידוד האודיו A2DP למעבד אודיו שמחובר לבקר של BT. שידור נתוני האודיו המקודד עובר ישירות ממעבד האודיו אל בקר BT ללא מעורבות של מארח ה-BT. מארח BT עדיין אחראי להגדרה ולבקרה של סשן A2DP. יש שתי גרסאות של הפקודות. הפקודות הקודמות עם Sub OCF 0x01-0x02 תומכות רק בקודקים בקוד פתוח. הגרסאות עם Sub-OCF 0x02-0x03 לא רלוונטיות לקודק שהוגדר.

OCF: 0x15D

התחלת ההעברה של A2DP (מדור קודם)

Sub OCF: 0x01

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

פרמטר של פקודה גודל המטרה
Codec 4 אוקטטים ההגדרה של סוג ה-Codec
0x01 – SBC
0x02 – AAC
0x04 – APTX
0x08 – APTX HD
0x10 – LDAC
Max_Latency 2 אוקטטים זמן אחזור מקסימלי מותר (באלפיות השנייה). ערך של אפס משבית את Flash.
SCMS-T_Enable 2 אוקטטים Octet 0: סימון שמאפשר הוספה של כותרת SCMS-T.
  • 0x00 - כותרת SCMS-T לא כלולה.
  • 0x01 - כותרת SCMS-T כלולה.

אוקטובר 1: הערך לכותרת SCMS-T, כשהיא מופעלת.

Sampling_Frequency 4 אוקטטים 0x01 עד 44,100 Hz
0x02 עד 48,000 Hz
0x04 עד 88,200 Hz
0x08 עד 96,000 Hz
Bits_Per_Sample אוקטט אחד 0x01 עד 16 ביט לכל דגימה
0x02 עד 24 ביט לכל דגימה
0x04 עד 32 ביט לכל דגימה
Channel_Mode אוקטט אחד 0x01 – מונו
0x02 – סטריאו
Encoded_Audio_Bitrate 4 אוקטטים קצב העברת הנתונים של האודיו המקודד בסיביות לשנייה.
0x00000000 – קצב העברת הנתונים של האודיו לא צוין / unused.
0x00000001 – 0x00FFFFFF – קצב העברת הנתונים של האודיו מקודד בביטים לשנייה.
0x01000000 – 0xFFFFFFFF – שמורים.
Connection_Handle 2 אוקטטים נקודת אחיזה לחיבור של חיבור A2DP בתהליך הגדרה
L2CAP_Channel_ID 2 אוקטטים מזהה הערוץ L2CAP לשימוש בחיבור A2DP הזה
L2CAP_MTU_Size 2 אוקטטים הגודל המקסימלי של L2CAP MTU המכיל חבילות אודיו מקודדות
Codec_Information 32 אוקטטים מידע ספציפי ל-Codec

קוד SBC:

כדאי לעיין ברכיבי מידע ספציפיים של SBC Codec ב-A2DP גרסה 1.3.
אוקטובר 0: אורך בלוק | תת-רצועות | שיטת הקצאה
אוקטט 1: ערך מינימלי של ביטפול
אוקטובר 2: ערך מקסימלי של ביטפול
אוקטובר 3: תדירות דגימה | מצב ערוץ
אוקטובר 4-31:

קודק AAC:

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

קודק LDAC:

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

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

באוקטובר





Octet 7: מצב ערוץ LDAC
0x01 – סטריאו
0x02 – כפול
0x04 – מונו
אחרים שמורים

8-31 באוקטובר: מקום שמור

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

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

המערכת תיצור אירוע Command complete (הרצת הפקודה) עבור הפקודה הזו.

פרמטר החזרה גודל המטרה
Status אוקטט אחד הסטטוס של הפקודה 'הושלמה'
Sub_Opcode אוקטט אחד 0x01 - התחלת ההעברה של A2DP

התחלת העברה של A2DP

Sub OCF: 0x03

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

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

המערכת תיצור אירוע Command complete (הרצת הפקודה) עבור הפקודה הזו.

פרמטר החזרה גודל המטרה
Status אוקטט אחד הסטטוס של הפקודה 'הושלמה'
Sub_Opcode אוקטט אחד 0x03 - התחלת ההעברה של A2DP

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

Sub OCF: 0x02

הפקודה הזו משמשת כדי להפסיק את הסטרימינג של A2DP Offload.

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

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

המערכת תיצור אירוע Command complete (הרצת הפקודה) עבור הפקודה הזו.

פרמטר החזרה גודל המטרה
Status אוקטט אחד הסטטוס של הפקודה 'הושלמה'
Sub_Opcode אוקטט אחד 0x02 - הפסקת העומס של A2DP

הפסקת העברת A2DP

Sub OCF: 0x04

הפקודה הזו משמשת כדי להפסיק את הסטרימינג של A2DP Offload.

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

המערכת תיצור אירוע Command complete (הרצת הפקודה) עבור הפקודה הזו.

פרמטר החזרה גודל המטרה
Status אוקטט אחד הסטטוס של הפקודה 'הושלמה'
Sub_Opcode אוקטט אחד 0x04 - הפסקת העומס של A2DP

הפקודה 'דוח איכות Bluetooth'

תכונת הפקודה 'דוח איכות של BT' מפעילה את המנגנון בבקר ה-Bluetooth כדי לדווח למארח על אירועי איכות Bluetooth. אפשר להפעיל ארבע אפשרויות:

  • מצב מעקב האיכות: הבקר שולח מדי פעם למארח אירוע משנה של BQR שקשור לאיכות הקישור.
  • מתקרב ל-LSTO: אם לא התקבלו מנות ממכשיר ה-BT המחובר במשך יותר ממחצית מערך הזמן הקצוב לתפוגה של פיקוח על קישורים (LSTO), השלט רחוק ידווח למארח על אירוע LSTO שמתקרב.
  • אודיו קטוע ב-A2DP: כשהבקר מזהה גורמים שגורמים לאודיו קטוע, השלט רחוק מדווח למארח על אירוע קטוע אודיו A2DP.
  • (ה) SCO קטוע קול: כשהבקר מזהה גורמים שגורמים לקול קטוע, השלט רחוק מדווח למארח על אירוע קטוע קול (e) SCO.
  • דלקת בסיסית: האירוע הזה נשלח על ידי השלט רחוק לסטאק כשה-HAL או הבקר נתקלים בשגיאה חמורה וצריך להפעיל מחדש את ה-Bluetooth.
  • מעקב אחר הודעות LMP/LL: הבקר שולח למארח את הודעת ה-LMP/LL שבה מתבצעת לחיצת יד עם המכשיר המרוחק.
  • מעקב אחר תזמון Multi-profile/Coex: הבקר שולח את פרטי התזמון שלו לגבי טיפול במספר פרופילים של Bluetooth ודו-קיום אלחוטי בתדר 2.4 Ghz אל המארח.
  • מנגנון מידע על ניפוי באגים לנאמני מידע: כשהאפשרות הזו מופעלת, הבקר יכול לדווח באופן עצמאי למארח על פרטי הרישום של ניפוי הבאגים באמצעות אירוע המשנה של פרטי ניפוי הבאגים של הבקר.
  • LE Audio קטוע: כשהבקר מזהה גורמים שגורמים לאודיו קטוע, השלט רחוק מדווח למארח על אירוע LE Audio קטוע.
  • מצב 'נתונים סטטיסטיים מתקדמים של תדרי רדיו': הבקר מדווח למארח על הנתונים הסטטיסטיים של ה-RF, בהתאם לתמיכה בשני תרחישים לדוגמה של דוחות:
    • דוחות תקופתיים
    • טריגרים של אירועים (טריגרים של אירועים מסוג 'התחלת סטרימינג/עצירה' ובעקבות זאת איכות הקישור).
  • BQR_Report_Action של הפקודה בדוח איכות Bluetooth: המארח יכול להשתמש בפקודת ה-HCI הזו כדי לקבל שאילתה חד-פעמית עבור מצב ניטור איכות, מצב ניטור צריכת אנרגיה או מצב מתקדם של נתוני תדרי רדיו.

OCF: 0x15E

פרמטר של פקודה גודל המטרה
BQR_Report_Action אוקטט אחד פעולה של הוספה או מחיקה של דיווח על אירועי איכות שהוגדרו בפרמטר BQR_ Quality_Event_Mask, או ניקוי של הכול.

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

מחיקה תנקה את הדיווחים על אירועי איכות ספציפיים.
הפעולה 'ניקוי' תגרום למחיקת כל הדיווחים על אירועי איכות (אפשר להתעלם מהפרמטר BQR_ Quality_Event_Mask).

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

קטע 0: הוגדר כדי להפעיל את מצב ניטור האיכות.
Bit 1: מגדירים להפעלת אירוע LSTO קרוב (ל-ACL/(e)SCO/ISO).
ביט 2: מוגדר להפעלת אירוע קטוע אודיו A2DP.
Bit 3: מוגדר להפעלה (e)SCO אירוע קטוע קול.
קטע 4: מוגדר להפעלת אירוע של דלקת ברמה הבסיסית (root).
Bit 5: מגדירים את המכשיר להפעלת מצב ניטור אנרגיה.
Bit 6: מוגדר להפעלת האירוע הקטוע של LE audio.
Bit 7: מגדירים את האירוע 'נכשל' של ההתחברות.
קטע 8: מוגדר להפעלת טריגר האירועים של מצב Advance RFStation.
קטע 9: מוגדר להפעלת הדוח התקופתי של 'נתונים סטטיסטיים מתקדמים של תדרי רדיו'.
Bit 10 ~ 14: שמור.
שלב 15: מגדירים את האפשרות להפעיל אירועי איכות ספציפיים לספק.
קטע 16: מוגדר להפעלת מעקב הודעות LMP/LL.
Bit 17: מוגדר להפעלת מעקב אחר תזמון Bluetooth Multi-link/Coex.
Bit 18: מוגדר להפעלת מנגנון המידע על ניפוי באגים לנאמני מידע.
Bit 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.

Bit 0 ~ 31: שמור.

BQR_Vendor_Specific_Trace_Mask 4 אוקטטים מסכות ביט עבור דיווח המעקב הספציפי לספק שנבחר.
הפרמטר הזה תקף רק כשמגדירים ביט 31 של BQR_Quality_Event_Mask.

Bit 0 ~ 31: שמור.

Report_interval_multiple 4 אוקטטים המכפיל של BQR_Minimum_Report_Interval. כשהערך הזה >= 1, אינטרוול הדוח של BQR תואם לפורמט
מרווח בין דוחות BQR = BQR_Minimum_Report_Interval x Report_interval_number.
אסור לקושחת הבקר לדווח על האירוע הבא בפרק הזמן שהוגדר. הגדרת המרווח מיועדת ספציפית לאירועי האיכות שנוספו.

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

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

המערכת תיצור אירוע Command complete (הרצת הפקודה) עבור הפקודה הזו.

פרמטר החזרה גודל המטרה
Status אוקטט אחד הסטטוס של הפקודה 'הושלמה'
Current_Quality_Event_Mask 4 אוקטטים מציין את הגדרת המסכה הנוכחית של הביט.
קטע 0: מצב מעקב האיכות מופעל.
Bit 1: מופעל דיווח על אירועים של LSTO.
Bit 2: מופעל דיווח על אירועים של אודיו קטוע ב-A2DP.
Bit 3: (ה) התכונה 'דיווח על אירועים של קטוע קול' מופעלת ב-SCO.
קטע 4: הדיווח על אירועים של דלקת בסיסית (root) מופעל.
קטע 5: מצב ניטור האנרגיה מופעל.
Bit 6: מופעל דיווח על אירועים קטועים של LE audio.
שלב 7: אירוע כשל בחיבור.
קטע 8: מוגדר להפעלת טריגר האירועים של מצב Advance RFStation.
קטע 9: מגדירים מדי פעם להפעלת הדוח 'נתונים סטטיסטיים מתקדמים של תדרי רדיו'.
Bit 10 ~ 14: שמור.
שלב 15: מופעל דיווח על אירועי איכות ספציפיים לספק.
קטע 16: מעקב הודעות LMP/LL מופעל.
Bit 17: מעקב Bluetooth Multi-link/Coex מופעל.
Bit 18: מנגנון המידע על ניפוי באגים לנאמני מידע מופעל.
Bit 19 ~ 30: שמור.
Bit 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 אוקטט אחד הסטטוס של הפקודה 'הושלמה'
Dynamic_Audio_Buffer_opcode אוקטט אחד 0x01 – קבלת זמן למאגר הנתונים הזמני של האודיו
Audio_Codec_Type_Supported 4 אוקטטים מסכות ביט לסוגי קודק הנתמכים
ביט 0 – SBC
ביט 1 – AAC
ביט 2 – APTX
Bit 3 – APTX HD
Bit 4 – LDAC
ביט 5-31 שמור
Audio_Codec_Buffer_Default_Time_For_Bit_0 2 אוקטטים זמן ברירת מחדל למאגר נתונים של סוג ה-codec ביט 0 שצוין ב-Audio_Codec_Type_Supported.
הערך הזה יהיה 0 אם סוג הקודק של Bit 0 לא נתמך.
יחידה: אלפיות השנייה
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 2 אוקטטים הזמן המרבי למאגר הנתונים הזמני של סוג ה-codec ביט 0 שצוין ב-Audio_Codec_Type_Supported.
הערך הזה יהיה 0 אם סוג הקודק של Bit 0 לא נתמך.
יחידה: אלפיות השנייה
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 2 אוקטטים זמן מאגר נתונים זמני מינימלי מסוג קודק Bit 0 שצוין ב-Audio_Codec_Type_Supported.
הערך הזה יהיה 0 אם סוג הקודק של Bit 0 לא נתמך.
יחידה: אלפיות השנייה
Audio_Codec_Buffer_Default_Time_For_Bit_1 2 אוקטטים זמן ברירת המחדל למאגר הנתונים של סוג ה-codec ביט 1 שצוין ב-Audio_Codec_Type_Supported.
אם אין תמיכה בסוג הקודק של Bit 1, הערך הזה יהיה 0.
יחידה: אלפיות השנייה
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 2 אוקטטים הזמן המקסימלי למאגר הנתונים הזמני של סוג ה-codec ביט 1 שצוין ב-Audio_Codec_Type_Supported.
אם אין תמיכה בסוג הקודק של Bit 1, הערך הזה יהיה 0.
יחידה: אלפיות השנייה
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 2 אוקטטים זמן מאגר נתונים זמני מינימלי של סוג ה-codec ביט 1 שצוין ב-Audio_Codec_Type_Supported.
אם אין תמיכה בסוג הקודק של Bit 1, הערך הזה יהיה 0.
יחידה: אלפיות השנייה
...... ...... ......
Audio_Codec_Buffer_Default_Time_For_Bit_31 2 אוקטטים זמן ברירת המחדל למאגר הנתונים של סוג ה-codec של ביט 31 שצוין ב-Audio_Codec_Type_Supported.
הערך הזה יהיה 0 אם סוג הקודק של Bit 31 לא נתמך.
יחידה: אלפיות השנייה
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 2 אוקטטים הזמן המרבי למאגר הנתונים הזמני של סוג הקודק Bit 31 שצוין ב-Audio_Codec_Type_Supported.
הערך הזה יהיה 0 אם סוג הקודק של Bit 31 לא נתמך.
יחידה: אלפיות השנייה
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 2 אוקטטים זמן מאגר נתונים זמני מינימלי של סוג ה-codec של ביט 31 שצוין ב-Audio_Codec_Type_Supported.
הערך הזה יהיה 0 אם סוג הקודק של Bit 31 לא נתמך.
יחידה: אלפיות השנייה

הגדרת הזמן למאגר הנתונים הזמני של האודיו

Sub OCF: 0x02

משתמשים בפקודה הזו כדי להגדיר את הזמן למאגר הנתונים הזמני של האודיו לבקר ה-Bluetooth.

פרמטר של פקודה גודל המטרה
Audio_Codec_Buffer_Time 2 אוקטטים נדרש זמן למאגר הנתונים של האודיו עבור ה-codec הנוכחי שנמצא בשימוש.
יחידה: ms

המערכת תיצור אירוע Command complete (הרצת הפקודה) עבור הפקודה הזו.

פרמטר החזרה גודל המטרה
Status אוקטט אחד הסטטוס של הפקודה 'הושלמה'
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 אוקטט אחד קוד אירוע משנה יהיה בגודל 18 תווים, הבייט שמופיע מיד אחרי 'אורך פרמטר' בחבילת האירועים 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]: 8 octet
RSSI[0]: 1 octet
Timestamp[0]: 2 octet
Adv packet_len[0]: 1 octet
Adv_packet[0]: Adv_packet_len octet
Scan_data_resp_len[0]:1 octet
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 קטוע.
0x05 ~ 0x06: שמור.
0x07: LE audio קטוע.
0x08: החיבור נכשל.
0x09 ~ 0xFF: שמור.
Packet_Types אוקטט אחד 0x01: ID
0x02: NULL
0x03: POLL
0x04: FHS
0x05: HV1
0x06: HV2
0x07: HV3
0x08: DV
0x04: FHS
0x05: HV1
0x06: HV2
0x07: HV3

















Connection_Handle 2 אוקטטים נקודת אחיזה של חיבור ACL/(e)SCO/ISO.
Connection_Role אוקטט אחד מבצע את התפקיד של החיבור.
0x00: מרכז
0x01: ציוד היקפי
0x02 ~ 0xFF: שמור.
TX_Power_Level אוקטט אחד רמת עוצמת השידור הנוכחית של Connection_Handle שצוינה.

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

RSSI אוקטט אחד [ב-dBm]

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

SNR אוקטט אחד [ב-dB]

ערך 'יחס אות לרעש' (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_Read_Clock HCI עם הפרמטר 'Happy_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 ACK האחרון. הוא מבוסס על שעון ה-Bluetooth של piconet Central (CLK).
יחידה: N * 0.3125 אלפיות השנייה (שעון Bluetooth אחד)
Flow_Off_Count 4 אוקטטים מספר הפעמים שנאמן המידע קיבל פונקציית זרימה (STOP) מאז האירוע האחרון.
המספר הזה יאופס אחרי הדיווח למארח.
Last_Flow_On_Timestamp 4 אוקטטים חותמת הזמן של הזרימה האחרונה (GO). הוא מבוסס על שעון ה-Bluetooth של piconet Central (CLK).
יחידה: N * 0.3125 אלפיות השנייה (שעון Bluetooth אחד)
Buffer_Overflow_Bytes 4 אוקטטים [בבייט]

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

Buffer_Underflow_Bytes 4 אוקטטים [בבייט]

מספר הסשנים של מאגר הנתונים הזמני מאז האירוע האחרון.
המספר הזה יאופס אחרי הדיווח למארח.

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 (ראו גרסה 5.4 של מפרט הליבה של Bluetooth). מקורות הנתונים המשויכים הם CIS ו-BIS.
כשערך הגדלה הזה גדל, שכבת הקישור לא מקבלת מטען ייעודי (payload) ספציפי בנקודת הטעינה שלה (ב-CIS) או בסוף האירוע שאליו הוא משויך (ב-BIS; ראו מפרט ליבה של Bluetooth גרסה 5.4 כרך 6 חלק ב', סעיף 4.4.6.6).
Coex_Info_Mask 2 אוקטטים Bit 0 – CoexInvolvement: מוגדר כדי לציין שיש חשד שפעילויות Coex מעורבות כשהדוח הזה נוצר (לדוגמה, חיתוך A2DP ו-LSTO מסוג גישה).
Bit 1 – רדיו WL 2G פעיל: מוגדר כדי לציין רדיו WLAN 2G פעיל.
ביט 2 – WL 2G מחובר: מגדירים לציין שרדיו WLAN 2G מחובר ופעיל.
Bit 3 – רדיו WL 5G/6G פעיל: מוגדר לציין שרדיו WLAN 5G/6G פעיל.
Bit 4-15 – שמור
פרמטר ספציפי לספק (אורך כולל של הפרמטר - TBD) * אוקטטים כדי שספק הנאמן מידע יוכל לקבל פרמטרים נוספים שספציפיים לספק.

קוד אירוע משני = 0x58 [איכות_דוח_Id = 0x05, אירוע דלקת בסיסי]

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

הפרמטר Error_Code מכיל קוד שגיאה שדווח מ-HAL/Controller, 0 אם מדובר בשגיאה ספציפית לספק של ערכת שבבים. הערך Vendor_specific_Error_Code' מכיל קוד שגיאה ספציפי לספק של ערכת שבבים מ-HAL/Controller. הערך צריך להיות 0 אם הפרמטר Error_Code אינו 0. הפרמטרים Error_Code ו-Vendor_specific_Error_Code לא יכולים להיות 0.

פרמטר של אירוע משנה גודל המטרה
Quality_Report_Id אוקטט אחד 0x00 ~ 0x04: שמור.
0x05: דלקת שורש
0x06 ~ 0xFF: שמור.
Error_Code אוקטט אחד 0x00: מצורף קוד שגיאה ספציפי לספק ערכת שבבים.
0x01 ~ 0xFF: התרחש כשל בבקר. רשימה של קודי שגיאה ותיאורים מופיעה במפרט Bluetooth [Vol 2] חלק D, קודי שגיאה.
Vendor_Specific_Error_Code אוקטט אחד 0x00: לא נכלל קוד שגיאה ספציפי לספק ערכת שבבים.
0x01 ~ 0xFF: קוד שגיאה ספציפי לספק של ערכת שבבים.
פרמטר ספציפי לספק (אורך הפרמטר הכולל – 4) * אוקטטים כדי שספק הנאמן מידע יוכל לקבל פרמטרים נוספים שספציפיים לספק.
פרמטר של אירוע משנה גודל המטרה
Quality_Report_Id אוקטט אחד 0x00 ~ 0x10: שמור.
0x11: מעקב הודעות LMP/LL.
0x12: מעקב Bluetooth מרובה-קישורים/Coex.
0x13: תמונת מצב של מידע על ניפוי באגים לנאמני מידע.
0x14 ~ 0xFF: שמור.
Connection_Handle 2 אוקטטים נקודת אחיזה לחיבור.
פרמטר ספציפי לספק (אורך הפרמטר הכולל – 4) * אוקטטים פורמט ספציפי לספק של מעקב הודעות LMP, מעקב תזמון Bluetooth Multi-link/Coex וקובץ נתונים של מידע על ניפוי באגים לנאמני מידע.

תמיכה במפרסמים מרובים

אלה מטרות התמיכה במפרסמים מרובים:

  • יכולת לתמוך במספר מודעות (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 אוקטט אחד הסטטוס של הפקודה 'הושלמה'
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 Specification, דף 964 (LE Set Advertising Parameter Command)

Sub OCF: 0x01

פרמטר של פקודת משנה גודל המטרה
Advertising_Interval_Min לכל מפרט לכל מפרט
Advertising_Interval_Max לכל מפרט לכל מפרט
Advertising_Type לכל מפרט לכל מפרט
Own_Address_Type לכל מפרט לכל מפרט
Own_Address לכל מפרט לכל מפרט
Direct_Address_Type לכל מפרט לכל מפרט
Direct_Address לכל מפרט לכל מפרט
Advertising_Channel_Map לכל מפרט לכל מפרט
Adverstising_Filter_Policy לכל מפרט לכל מפרט
Advertising_Instance אוקטט אחד מציינת את יישום הפרמטרים שלמעלה על מופע מסוים
Tx_power אוקטט אחד Transmit_Power
יחידה – ב-dBm (מספר שלם חתום)
טווח (-70 עד +20)

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

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

פרמטר החזרה גודל המטרה
Status אוקטט אחד הסטטוס של הפקודה 'הושלמה'
Multi_advt_opcode אוקטט אחד 0x01 [Set_Advt_Param_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd

סימוכין בסיסיים: Bluetooth Core 4.1 Specification, דף 969 (LE Set Advertising Data Command)

Sub OCF: 0x02

פרמטר של פקודת משנה גודל המטרה
Advertising_Data_Length לכל מפרט לכל מפרט
Advertising_Data לכל מפרט לכל מפרט
Advertising_Instance אוקטט אחד מציינת את יישום הפרמטרים שלמעלה על מופע מסוים

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

פרמטר החזרה גודל המטרה
Status אוקטט אחד הסטטוס של הפקודה 'הושלמה'
Multi_advt_opcode אוקטט אחד 0x02 [Set_Advt_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd

חומר עזר בסיסי: Bluetooth Core 4.1 Specification, עמוד 970 (LE Set Scan Response Data Command)

Sub OCF: 0x03

פרמטר של פקודת משנה גודל המטרה
Scan_Response_Data_Length לכל מפרט לכל מפרט
Scan_Response_Data לכל מפרט לכל מפרט
Advertising_Instance אוקטט אחד מציינת את יישום הפרמטרים שלמעלה על מופע מסוים

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

פרמטר החזרה גודל המטרה
Status אוקטט אחד הסטטוס של הפקודה 'הושלמה'
Multi_advt_opcode אוקטט אחד 0x03 [Set_Scan_Resp_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd

סימוכין בסיסיים: Bluetooth Core 4.1 Specification, עמוד 963 (LE Set Random Address Command)

Sub OCF: 0x04

פרמטר של פקודת משנה גודל המטרה
כתובת אקראית לכל מפרט לכל מפרט
Advertising_Instance אוקטט אחד מציינת את יישום הפרמטרים שלמעלה על מופע מסוים

המערכת תיצור אירוע Command complete (הרצת הפקודה) עבור הפקודה הזו.

פרמטר החזרה גודל המטרה
Status אוקטט אחד הסטטוס של הפקודה 'הושלמה'
Multi_advt_opcode אוקטט אחד 0x04 [Set_Random_Addr_Multi_Sub_Cmd]]

LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd

חומר עזר בסיסי: Bluetooth Core 4.1 Specification, דף 971 (LE Set Publish Enable Command in אותו מפרט ליבה)

OCF: 0x05

פרמטר של פקודת משנה גודל המטרה
Advertising_Enable אוקטט אחד הערך 1 פירושו הפעלה. כל ערך אחר פירושו השבתה.
Advertising_Instance אוקטט אחד מציינת מהם הפרמטרים שלמעלה חלים על מופע מסוים. מכונה 0 היא מכונה רגילה של HCI.

המערכת תיצור אירוע Command complete (הרצת הפקודה) עבור הפקודה הזו.

פרמטר החזרה גודל המטרה
Status אוקטט אחד הסטטוס של הפקודה 'הושלמה'
Multi_advt_opcode אוקטט אחד 0x05 [Set_Advt_Enable_Multi_Sub_Cmd]

הרזולוציה של כתובת פרטית לאחר העמסה

התכונה הזו מאתרת כתובת פרטית בקושחה או בחומרה של הבקר, ומספקת את היתרונות הבאים:

  • זמן אחזור מעורב עם המארח בטיפול בכתובת פרטית
  • חיסכון בצריכת החשמל באמצעות הימנעות מהוצאת המארח ממצב שינה

LE_Set_RPA_זמן קצוב לתפוגה

OCF: 0x15C

פרמטר של פקודה גודל המטרה
LE_local_IRK 16 אוקטט המכשיר המקומי IRK שבו נעשה שימוש כדי ליצור את הכתובות האקראיות שניתנות לפתרון.
tRPA_min 2 אוקטטים הזמן הקצוב לתפוגה של יצירת מודעות רספונסיביות לרשת החיפוש (RPA) בשניות. נאמן המידע צריך ליצור כתובות חדשות שניתנות לפענוח לכל אירועי פרסום, סריקה או חיבור, בסיום פרק הזמן הזה או אחריו.
הטווח החוקי: 300-1,800
tRPA_max 2 אוקטטים הזמן הקצוב לתפוגה של יצירת מודעות רספונסיביות לרשת החיפוש (RPA) בשניות. נאמן המידע צריך ליצור כתובות חדשות שניתנות לפענוח לכל אירועי פרסום, סריקה או חיבור, לפני הזמן הקצוב הזה או לפניו.
טווח תקין: tRPA_min-1,800
פרמטר החזרה גודל המטרה
Status אוקטט אחד סטטוס הפקודה.

ערכים מוצעים לסטטוס HCI:
0x00 Success
0x01 פקודה לא ידועה (אם אין תמיכה)
0x12 פרמטרים לא חוקיים של פקודה (אם פרמטרים כלשהם נמצאים מחוץ לטווח הנתון)

LE_RPA_offload_Command

OCF: 0x155

פרמטר של פקודה גודל המטרה
RPA_offload_opcode אוקטט אחד 0x1 – הפעלת תכונה ספציפית ללקוח
0x2 – הוספת IRK לרשימה
0x3 – הסרת IRK מהרשימה
0x4 – מחיקת רשימת IRK
0x5 - קריאת הרשומה של IRK

המערכת תיצור אירוע Command complete (הרצת הפקודה) עבור הפקודה הזו.

פרמטר החזרה גודל המטרה
Status אוקטט אחד הסטטוס של הפקודה 'הושלמה'
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 אוקטט אחד הסטטוס של הפקודה 'הושלמה'
Event_cust_specific_feature_opcode אוקטט אחד 0x01 [הפעלת תכונה ספציפית ללקוח]

LE_RPA_offload: Add_IRK_to_list_sub_Command

Sub OCF: 0x02

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

המערכת תיצור אירוע Command complete (הרצת הפקודה) עבור הפקודה הזו.

פרמטר החזרה גודל המטרה
Status אוקטט אחד הסטטוס של הפקודה 'הושלמה'
Event_cust_specific_feature_opcode אוקטט אחד 0x02 [הוספת IRK לרשימה]
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 אוקטט אחד הסטטוס של הפקודה 'הושלמה'
Event_cust_specific_feature_opcode אוקטט אחד 0x03 [הסרת IRK מהרשימה]
LE_IrkList_AvailableSpaces אוקטט אחד הרשומות הזמינות ברשימת IRL אחרי הפעולה הנוכחית

LE_RPA_offload: ניקוי_IRK_list_sub_Command

Sub OCF: 0x04

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

המערכת תיצור אירוע Command complete (הרצת הפקודה) עבור הפקודה הזו.

פרמטר החזרה גודל המטרה
Status אוקטט אחד הסטטוס של הפקודה 'הושלמה'
Event_cust_specific_feature_opcode אוקטט אחד 0x04 [ניקוי רשימת IRK]
LE_IrkList_AvailableSpaces אוקטט אחד הרשומות הזמינות ברשימת IRL לאחר הפעולה הנוכחית [max_irk_list_sz]

LE_RPA_offload: Read_IRK_list_sub_Command

Sub OCF: 0x05

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

המערכת תיצור אירוע Command complete (הרצת הפקודה) עבור הפקודה הזו.

פרמטר החזרה גודל המטרה
Status אוקטט אחד הסטטוס של הפקודה 'הושלמה'
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 הזה שאפשר לפענח