דרישות HCI

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

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

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

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

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

יכולות ותצורה של שבבים

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

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

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

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

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

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

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

פרמטר פקודה גודל מַטָרָה
NA רשימת פרמטרי פקודה ריקה

יווצר אירוע 'השלמה של פקודה' עבור פקודה זו.

פרמטר החזרה גודל מַטָרָה
Status 1 אוקטט מצב הפקודה הושלמה
max_advt_instances
(הוצא משימוש)
1 אוקטט מספר מופעי פרסומת נתמכים.

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

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

v1.00
byte[0] = 0x01
byte[1] = 0x00
total_num_of_advt_tracked 2 אוקטטים המספר הכולל של מפרסמים אחריהם למטרות OnLost / OnFound
extended_scan_support 1 אוקטט תומך בחלון סריקה מורחב ובמרווח
debug_logging_supported 1 אוקטט תומך ברישום של מידע ניפוי באגים בינארי מהבקר
LE_address_generation_offloading_support
(הוצא משימוש)
1 אוקטט 0 = לא נתמך
1 = נתמך

שמור לאחר v0.98.
פרמטר זה הוצא משימוש במפרט התכונה של Google v0.98 ומעלה לטובת תכונת הפרטיות הזמינה במפרט BT גרסה 4.2 ומעלה.
A2DP_source_offload_capability_mask 4 אוקטטים נתמכות מסכות סיביות עבור סוגי codec
ביט 0 - SBC
ביט 1 - AAC
ביט 2 - APTX
ביט 3 - APTX HD
ביט 4 - LDAC
סיביות 5-31 שמורות
bluetooth_quality_report_support 1 אוקטט תומך בדיווח על אירועים באיכות Bluetooth
0 = לא מסוגל
1 = מסוגל
dynamic_audio_buffer_support 4 אוקטטים תומך במאגר שמע דינמי בבקר ה-Bluetooth
נתמכות מסכות סיביות עבור סוגי codec
ביט 0 - SBC
ביט 1 - AAC
ביט 2 - APTX
ביט 3 - APTX HD
ביט 4 - LDAC
סיביות 5-31 שמורות

אצווה של תוצאות סריקה

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

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

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

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

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

LE_Batch_Scan_Command

OCF: 0x156

פרמטר פקודה גודל מַטָרָה
Batch_Scan_opcode 1 אוקטט 0x1 - אפשר תכונה ספציפית ללקוח
0x2 - הגדר פרמטרים של אחסון סריקת אצווה
0x3 - הגדר פרמטרים של סריקת אצווה
0x4 - קרא את הפרמטרים של תוצאות סריקת אצווה

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

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

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

תת OCF: 0x01

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

יווצר אירוע 'השלמה של פקודה' עבור פקודה זו.

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

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

תת OCF: 0x02

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

יווצר אירוע 'השלמה של פקודה' עבור פקודה זו.

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

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

תת OCF: 0x03

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

פקודה משנה זו תתחיל סריקה אצווה, אם מופעלת. בסריקה קטועה, התוצאות מאוחסנות בצורה קטומה כאשר המפתח הייחודי לסגנון קטוע = { BD_ADDR, scan_interval}. המשמעות היא שרק BD_ADDR will אחד יוקלט עבור כל מרווח סריקה. הרשומה שיש לשמור עבור מצב קצוץ היא הבאה: { BD_ADDR , Tx Power, RSSI, Timestamp}

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

יווצר אירוע 'השלמה של פקודה' עבור פקודה זו.

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

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

תת OCF: 0x04

פרמטר פקודה משנה גודל מַטָרָה
Batch_Scan_Data_read 1 אוקטט 0x01 - נתוני מצב קצוץ
0x02 - נתוני מצב מלא

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

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

פרמטר החזרה גודל מַטָרָה
Status 1 אוקטט מצב הפקודה הושלמה
Batch_scan_opcode 1 אוקטט 0x03 [הגדר פרמטרים של סריקה אצווה]
Batch_Scan_data_read 1 אוקטט מזהה את הפורמט (קטוע או מלא)
num_of_records 1 אוקטט מספר הרשומות של Batch_Scan_data_read
format_of_data מִשְׁתַנֶה מצב קטוע:
כתובת[0]: 6 אוקטטים
Address_Type[0]: 1 אוקטט
Tx_Pwr[0]: 1 אוקטט
RSSI[0] : 1 אוקטט
חותמת זמן[0]: 2 אוקטטים
[רשומות מרובות ( num_of_records ) עם הפורמט שלמעלה]

מצב מלא:
כתובת[0]: 6 אוקטטים
Address_Type[0]: 1 אוקטט
Tx_Pwr[0]: 1 אוקטט
RSSI[0]: 1 אוקטט
חותמת זמן[0]: 2 אוקטטים
Adv packet_len[0]: 1 אוקטט
Adv_packet[0]: Adv_packet_len אוקטטים
Scan_data_resp_len[0]: 1 אוקטט
Scan_data_resp[0]: Scan_data_resp של Scan_data_resp
[רשומות מרובות בפורמט לעיל ( num_of_records )]

מסנן תוכן מנות פרסום

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

LE_APCF_פקודה

OCF: 0x157

פרמטר פקודה גודל מַטָרָה
APCF_opcode 1 אוקטט 0x00 - הפעלה של APCF
0x01 - APCF הגדר פרמטרים של סינון
0x02 - כתובת APCF Broadcaster
0x03 - APCF Service UUID
0x04 - APCF Service Solicitation UUID
0x05 - שם מקומי של APCF
0x06 - נתוני יצרן APCF
0x07 - נתוני שירות APCF

יווצר אירוע 'השלמה של פקודה' עבור פקודה זו.

פרמטר החזרה גודל מַטָרָה
Status 1 אוקטט סטטוס החזרה
APCF_opcode 1 אוקטט 0x00 - הפעלה של APCF
0x01 - APCF הגדר פרמטרים של סינון
0x02 - כתובת APCF Broadcaster
0x03 - APCF Service UUID
0x04 - APCF Service Solicitation UUID
0x05 - שם מקומי של APCF
0x06 - נתוני יצרן APCF
0x07 - נתוני שירות APCF

LE_APCF_Command: Enable_sub_cmd

תת OCF: 0x00

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

יווצר אירוע 'השלמה של פקודה' עבור פקודה זו.

פרמטר החזרה גודל מַטָרָה
Status 1 אוקטט מצב הפקודה הושלמה
APCF_opcode 1 אוקטט 0x0 - הפעלה של APCF
APCF_Enable 1 אוקטט Enable/disable מוגדר באמצעות APCF_enable

LE_APCF_Command: set_filtering_parameters_sub_cmd

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

תת OCF: 0x01

פרמטר פקודה משנה גודל מַטָרָה
APCF_Action 1 אוקטט 0x00 - הוסף
0x01 - מחק
0x02 - נקה
מחיקה תנקה את המסנן הספציפי יחד עם ערכי תכונה משויכים בטבלאות אחרות.
Clear ינקה את כל המסננים והערכים המשויכים בטבלאות אחרות.
APCF_Filter_Index 1 אוקטט אינדקס מסנן (0, max_filter-1 )
APCF_Feature_Selection 2 אוקטטים מסכות סיביות עבור התכונות שנבחרו:
סיביות 0: הגדר להפעלת מסנן כתובת שידור
סיביות 1: הגדר להפעלת מסנן שינוי נתוני שירות
סיביות 2: הגדר לאפשר בדיקת UUID של שירות
סיביות 3: הגדר לאפשר בדיקת UUID של שידול שירות
סיביות 4: הגדר לאפשר בדיקת שמות מקומיים
סיביות 5: הגדר לאפשר בדיקת נתוני יצרן
סיביות 6: הגדר לאפשר בדיקת נתוני שירות
APCF_List_Logic_Type 2 אוקטטים פעולה לוגית עבור כל בחירת תכונה (מיקום לכל סיביות) שצוינה ב- APCF_Feature_Selection .
תקף רק כאשר תכונה מופעלת.
ערך מיקום ביט:
0: או
1: ו
אם לוגיקה "AND" נבחרה, חבילת ADV תעבור את המסנן רק אם היא מכילה את כל הערכים ברשימה.
אם לוגיקה "OR" נבחרה, חבילת ADV תעבור את המסנן אם היא מכילה אחד מהערכים ברשימה.
APCF_Filter_Logic_Type 1 אוקטט 0x00: או
0x01: AND
הערה: סוג ההיגיון אינו רלוונטי עבור שלושת השדות הראשונים של APCF_Feature_Selection , שהוא תמיד "AND" היגיון. הם ישימים רק עבור (Bit 3 - Bit 6) ארבעה שדות של APCF_Feature_Selection .
rssi_high_thresh 1 אוקטט [ב-dBm]
המפרסם נחשב לראות רק אם האות גבוה מהסף הגבוה של RSSI. אחרת, הקושחה חייבת להתנהג כאילו היא מעולם לא ראתה אותה.
delivery_mode 1 אוקטט 0x00 - immediate
0x01 - on_found
batched - אצווה
onfound_timeout 2 אוקטטים תקף רק on_found delivery_mode מופעל.
[במילישניות]
הגיע הזמן שהקושחה תתעכב ולאסוף פרסומות נוספות לפני הדיווח.
onfound_timeout_cnt 1 אוקטט תקף רק on_found delivery_mode מופעל.
[לספור]
אם פרסומת ב- onFound מתעכבת בקושחה במשך משך onfound_timeout , היא תאסוף כמה פרסומות והספירה נבדקת. אם הספירה עולה על onfound_timeout_cnt , היא מדווחת על OnFound מיד לאחר מכן.
rssi_low_thresh 1 אוקטט תקף רק on_found delivery_mode מופעל.
[ב-dBm]
חבילת המפרסם נחשבת כלא נראית אם ה-RSSI של החבילה שהתקבלה אינו מעל הסף הנמוך של RSSI.
onlost_timeout 2 אוקטטים תקף רק on_found delivery_mode מופעל.
[במילישניות]
אם פרסומת, לאחר שנמצאה, לא נראית ברציפות במשך תקופת lost_timeout , היא תדווח מיד כאבדה.
num_of_tracking_entries 2 אוקטטים תקף רק on_found delivery_mode מופעל.
[לספור]
המספר הכולל של מפרסמים למעקב לכל מסנן.

ערכי RSSI חייבים להשתמש בהשלמה של 2 כדי לייצג ערכים שליליים.

המארח יוכל להגדיר מסננים מרובים עם APCF_Application_Address_type מוגדר ל-0x02 (עבור כל כתובות השדרנים) כדי לנהל שילובי מסננים שונים.

סינון, אצווה ודיווח הם מושגים הקשורים זה בזה. כל פרסומת ותגובת סריקה קשורה יצטרכו לעבור את כל המסננים, בזה אחר זה. לפיכך, הפעולות המתקבלות ( delivery_mode ) קשורות קשר הדוק לסינון. מצבי המסירה הם הבאים: report_immediately , batch ו- onFound . ערך OnLost קשור ל- OnFound במובן זה שהוא יבוא אחרי OnFound .

זרימת עיבוד זו מתארת ​​את המודל הרעיוני:

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

ספי רמת RSSI (גבוהים ונמוכים) נותנים את היכולת לשלוט מתי המסגרת גלויה לעיבוד מסנן, גם כאשר מתקבלת מנה חוקית על ידי הבקר. במקרה של הגדרה של מצב מסירה למיידי או באצווה, ה-RSSI של מסגרת נחשב לעיבוד נוסף של הבקר. אפליקציות שונות זקוקות להתנהגות דיווח ואצווה שונה. זה מאפשר לאפליקציות מרובות לקבל דיווח ישיר ו/או אצווה של תוצאות בקושחה, במקביל. דוגמה לכך היא מקרה שבו סריקת אצווה פעילה מאפליקציה אחת ובהמשך מונפקת סריקת LE רגילה על ידי אפליקציה אחרת. לפני הוצאת סריקה אצווה, המסגרת/אפליקציה מגדירה מסננים מתאימים. מאוחר יותר, כאשר האפליקציה השנייה מנפיקה סריקה רגילה, האצווה הקודמת נמשכת. עם זאת, בשל הסריקה הרגילה, זה דומה להוספת מסנן null (יחד עם כל המסננים הקיימים) מבחינה רעיונית יחד עם פקודת LE scan. פרמטרי פקודת LE scan מקבלים עדיפות כאשר הם פעילים. כאשר סריקת LE הרגילה מושבתת, הבקר יחזור לסריקה אצווה קודמת, אם היא קיימת.

מצב המסירה OnFound מבוסס על מסננים מוגדרים. שילוב שמפעיל פעולת מסנן כדי להצליח נחשב לישות שיש לעקוב אחריה עבור onLost . האירוע המתאים הוא תת-אירוע המעקב של LE Advt.

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

יווצר אירוע 'השלמה של פקודה' עבור פקודה זו.

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

LE_APCF_Command: broadcast_address_sub_cmd

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

תת OCF: 0x02

פרמטר פקודה משנה גודל מַטָרָה
APCF_Action 1 אוקטט 0x00 - הוסף
0x01 - מחק
0x02 - נקה
Delete תמחק את כתובת השדר שצוינה במסנן שצוין.
Clear ינקה את כל כתובות השדרים במסנן שצוין.
APCF_Filter_Index 1 אוקטט אינדקס מסנן (0, max_filter-1 )
APCF_Broadcaster_Address 6 אוקטט כתובת מכשיר של 6 בתים להוספה או מחיקה מרשימת הכתובות של השדרן
APCF_Application_Address_type 1 אוקטט 0x00: ציבורי
0x01: אקראי
0x02: NA (סוג הכתובות אינו רלוונטי)

יווצר אירוע 'השלמה של פקודה' עבור פקודה זו.

פרמטר החזרה גודל מַטָרָה
Status 1 אוקטט מצב הפקודה הושלמה
APCF_opcode 1 אוקטט 0x02 - כתובת APCF Broadcaster
APCF_Action 1 אוקטט אקו חזרה של הפקודה APCF_Action
APCF_AvailableSpaces 1 אוקטט מספר הכניסות החינמיות שעדיין זמינות בטבלת כתובות השידור

LE_APCF_Command: service_uuid_sub_cmd

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

תת OCF: 0x03

פרמטר פקודה משנה גודל מַטָרָה
APCF_Action 1 אוקטט 0x00 - הוסף
0x01 - מחק
0x02 - נקה
Delete תמחק את כתובת UUID של השירות שצוינה במסנן שצוין.
Clear ינקה את כל מזהי ה-UUID של השירות במסנן שצוין.
APCF_Filter_Index 1 אוקטט אינדקס מסנן (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.

יווצר אירוע 'השלמה של פקודה' עבור פקודה זו.

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

LE_APCF_Command: solicitation_uuid_sub_cmd

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

תת OCF: 0x04

פרמטר פקודה משנה גודל מַטָרָה
APCF_Action 1 אוקטט 0x00 - הוסף
0x01 - מחק
0x02 - נקה
Delete תמחק את כתובת UUID של שידול במסנן שצוין.
Clear ינקה את כל ה-UUIDs של שידול במסנן שצוין.
APCF_Filter_Index 1 אוקטט אינדקס מסנן (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 .

יווצר אירוע 'השלמה של פקודה' עבור פקודה זו.

פרמטר החזרה גודל מַטָרָה
Status 1 אוקטט מצב הפקודה הושלמה
APCF_opcode 1 אוקטט 0x04 - APCF Solicitation UUID
APCF_Action 1 אוקטט אקו חזרה של הפקודה APCF_Action
APCF_AvailableSpaces 1 אוקטט מספר הכניסות החינמיות שעדיין זמינות בטבלה UUID של שידול

LE_APCF_Command: local_name_sub_cmd

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

תת OCF: 0x05

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

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

יווצר אירוע 'השלמה של פקודה' עבור פקודה זו.

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

LE_APCF_Command: manf_data_sub_cmd

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

תת OCF: 0x06

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

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

יווצר אירוע 'השלמה של פקודה' עבור פקודה זו.

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

LE_APCF_Command: service_data_sub_cmd

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

תת OCF: 0x07

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

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

יווצר אירוע 'השלמה של פקודה' עבור פקודה זו.

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

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

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

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

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

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

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

LE_Get_Controller_Activity_Energy_Info

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

OCF: 0x159

פרמטר פקודה משנה גודל מַטָרָה
NA פרמטרי פקודה ריקים

יווצר אירוע 'השלמה של פקודה' עבור פקודה זו.

פרמטר החזרה גודל מַטָרָה
Status 1 אוקטט מצב הפקודה הושלמה
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

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

התייחסות בסיס: מפרט BT Core 5.2, עמוד 2493 (LE Set Scan Parameters Command)

OCF: 0x15A

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

יווצר אירוע 'השלמה של פקודה' עבור פקודה זו.

פרמטר החזרה גודל מַטָרָה
Status 1 אוקטט מצב הפקודה הושלמה

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

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

OCF: 0x15B

פרמטר פקודה גודל מַטָרָה
לא רשימת פרמטרי פקודות ריקה

יווצר אירוע 'השלמה של פקודה' עבור פקודה זו.

פרמטר החזרה גודל מַטָרָה
סטָטוּס 1 אוקטט מצב הפקודה הושלמה

תמיכה בהורדת חומרה A2DP

תכונת ה-A2DP Offload תומכת בהורדה של תהליך קידוד השמע A2DP למעבד שמע המחובר לבקר BT. זרם נתוני האודיו המקודד עובר ישירות ממעבד האודיו לבקר BT ללא מעורבות מארח ה-BT. מארח BT עדיין אחראי על התצורה והשליטה של ​​הפעלת A2DP.

OCF: 0x15D

התחל את ההורדה של A2DP

תת OCF: 0x01

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

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

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

תדר דגימה 4 אוקטטים 0x01 - 44100 הרץ
0x02 - 48000 הרץ
0x04 - 88200 הרץ
0x08 - 96000 הרץ
Bits_Per_Sample 1 אוקטט 0x01 - 16 ביטים לדגימה
0x02 - 24 ביטים לדגימה
0x04 - 32 ביטים לדגימה
ערוץ_מצב 1 אוקטט 0x01 - מונו
0x02 - סטריאו
Encoded_Audio_Bitrate 4 אוקטטים קצב סיביות האודיו המקודד בסיביות לשנייה.
0x00000000 - קצב הסיביות של האודיו לא מצוין / אינו בשימוש.
0x00000001 - 0x00FFFFFF - קצב סיביות אודיו מקודד בסיביות לשנייה.
0x01000000 - 0xFFFFFFFF - שמור.
חיבור_ידית 2 אוקטטים ידית חיבור של חיבור A2DP מוגדר
L2CAP_Channel_ID 2 אוקטטים מזהה ערוץ L2CAP שישמש עבור חיבור A2DP זה
L2CAP_MTU_Size 2 אוקטטים גודל מקסימלי של L2CAP MTU המכיל מנות שמע מקודדות
Codec_Information 32 אוקטטים מידע ספציפי ל-Codec.

SBC Codec:

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

AAC Codec:

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

Codec LDAC:

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

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

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

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

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

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

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

יווצר אירוע 'השלמה של פקודה' עבור פקודה זו.

פרמטר החזרה גודל מַטָרָה
סטָטוּס 1 אוקטט מצב הפקודה הושלמה
Sub_Opcode 1 אוקטט 0x0- התחל את ההורדה של A2DP

עצור פריקת A2DP

תת OCF: 0x02

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

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

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

יווצר אירוע 'השלמה של פקודה' עבור פקודה זו.

פרמטר החזרה גודל מַטָרָה
סטָטוּס 1 אוקטט מצב הפקודה הושלמה
Sub_Opcode 1 אוקטט 0x02 - עצור פריקת A2DP

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

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

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

OCF: 0x15E

פרמטר פקודה גודל מַטָרָה
BQR_Report_Action 1 אוקטט פעולה כדי להוסיף / למחוק דיווח של אירועי איכות שהוגדרו בפרמטר BQR_Quality_Event_Mask, או לנקות הכל.

0x00 - הוסף
0x01 - מחק
0x02 - נקה

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

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

סיביות 0: הגדר לאפשר מצב ניטור איכות.
סיביות 1: הגדר לאפשר אירוע מתקרב LSTO.
סיביות 2: הגדר לאפשר אירוע A2DP Audio Choppy.
סיביות 3: הגדר להפעלת אירוע (e)SCO Voice Choppy.
סיביות 4: הגדר לאפשר אירוע דלקת שורש.
סיביות 5 ~ 15: שמור.
סיביות 16: הגדר לאפשר מעקב אחר הודעות LMP/LL.
סיביות 17: הגדר לאפשר מעקב תזמון של Bluetooth Multi-link/Coex.
סיביות 18: הגדר כדי להפעיל את מנגנון ה-Controller Debug Information.
סיביות 19 ~ 31: שמור.

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

יחידה: MS
ברירת מחדל: 0 (ללא הגבלה למרווח.)
טווח: 0 ~ 65535 אלפיות השנייה

יווצר אירוע 'השלמה של פקודה' עבור פקודה זו.

פרמטר החזרה גודל מַטָרָה
סטָטוּס 1 אוקטט מצב הפקודה הושלמה
מסכת_איכות_נוכחית 4 אוקטטים מציין את הגדרת מסיכת הסיביות הנוכחית.
סיביות 0: מצב ניטור איכות מופעל.
סיביות 1: דיווח אירועי LSTO מתקרב מופעל.
סיביות 2: דיווח אירועי A2DP Audio Choppy מופעל.
Bit 3: (e)SCO Voice Choppy דיווח אירוע מופעל.
Bit 4: Root inflammation event reporting is enabled.
Bit 5 ~ 15: Reserved.
Bit 16: LMP/LL message trace is enabled.
Bit 17: Bluetooth Multi-link/Coex scheduling trace is enabled.
Bit 18: Controller Debug Information mechanism is enabled.
Bit 19 ~ 31: Reserved.

Dynamic Audio Buffer command

The Dynamic Audio Buffer reduces audio glitching by changing the audio buffer size in the Bluetooth controller based on various scenarios.

OCF: 0x15F

Get audio buffer time capability

Sub OCF: 0x01

Use this command to get the audio buffer time capability from the Bluetooth controller.

Command parameter Size Purpose
לא Empty Command parameter list

A Command Complete event will be generated for this command.

Return parameter Size Purpose
Status 1 octet Command Complete status
Dynamic_Audio_Buffer_opcode 1 octet 0x01 - Get audio buffer time
Audio_Codec_Type_Supported 4 octets Bit masks for the supported codec types
Bit 0 - SBC
Bit 1 - AAC
Bit 2 - APTX
Bit 3 - APTX HD
Bit 4 - LDAC
Bit 5-31 are reserved
Audio_Codec_Buffer_Default_Time_For_Bit_0 2 octets Default buffer time of the Bit 0 codec type specified in Audio_Codec_Type_Supported.
This value shall be 0 if the Bit 0 codec type is not supported.
Unit: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 2 octets Maximum buffer time of the Bit 0 codec type specified in Audio_Codec_Type_Supported.
This value shall be 0 if the Bit 0 codec type is not supported.
Unit: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 2 octets Minimum buffer time of the Bit 0 codec type specified in Audio_Codec_Type_Supported.
This value shall be 0 if the Bit 0 codec type is not supported.
Unit: ms
Audio_Codec_Buffer_Default_Time_For_Bit_1 2 octets Default buffer time of the Bit 1 codec type specified in Audio_Codec_Type_Supported.
This value shall be 0 if the Bit 1 codec type is not supported.
Unit: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 2 octets Maximum buffer time of the Bit 1 codec type specified in Audio_Codec_Type_Supported.
This value shall be 0 if the Bit 1 codec type is not supported.
Unit: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 2 octets Minimum buffer time of the Bit 1 codec type specified in Audio_Codec_Type_Supported.
This value shall be 0 if the Bit 1 codec type is not supported.
Unit: ms
...... ...... ......
Audio_Codec_Buffer_Default_Time_For_Bit_31 2 octets Default buffer time of the Bit 31 codec type specified in Audio_Codec_Type_Supported.
This value shall be 0 if the Bit 31 codec type is not supported.
Unit: ms
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 2 octets Maximum buffer time of the Bit 31 codec type specified in Audio_Codec_Type_Supported.
This value shall be 0 if the Bit 31 codec type is not supported.
Unit: ms
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 2 octets Minimum buffer time of the Bit 31 codec type specified in Audio_Codec_Type_Supported.
This value shall be 0 if the Bit 31 codec type is not supported.
Unit: ms

Set audio buffer time

Sub OCF: 0x02

Use this command to set the audio buffer time to the Bluetooth controller.

Command parameter Size Purpose
Audio_Codec_Buffer_Time 2 octets Requested audio buffer time for the current used codec.
Unit: ms

A Command Complete event will be generated for this command.

Return parameter Size Purpose
Status 1 octet Command Complete status
Dynamic_Audio_Buffer_opcode 1 octet 0x02 - Set audio buffer time
Audio_Codec_Buffer_Time 2 octets Current audio buffer time in the Bluetooth controller.
Unit: ms

HCI event (vendor-specific)

Vendor-specific HCI events are required in some cases. Refer to Figure 5.4 on page 1897 of the BT Core 5.2 Specification. Event parameter 0 will always contain the first sub-event code, based on which the rest of the HCI event is decoded.

Event Parameter Size Purpose
HCI_vendor_specific_event_code 1 octet 0xFF
sub_event_code 1 octet A sub-event code will be 1 octet in size, the byte immediately following Parameter Length in the HCI event packet.

Storage threshold breach sub-event

This event indicates that the storage threshold has been breached.

Sub-event code = 0x54

Sub-event Parameter Size Purpose
None

LE multi-advertising state change sub-event

This event indicates that an advertising instance has changed its state. At this time, this event is only used to indicate which advertising instance was stopped as a result of a connection.

Sub-event code = 0x55

Sub-event parameter Size Purpose
Advertising_instance 1 octet Identifies the specific advertising instance
Valid values are 0 through max_advt_instances -1
State_Change_Reason 1 octet 0x00: Connection received
Connection_handle 2 octets Identifies the connection that caused the advt instance to be disabled (0xFFFF if invalid)

LE advertisement tracking sub-event

This event indicates when an advertiser is found or lost.

Sub event code = 0x56

Sub-event Parameter Size Purpose
APCF_Filter_Index 1 octet Filter Index (0, max_filter -1)
Advertiser_State 1 octet 0x00: Advertiser found
0x01: Advertiser lost
Advt_Info_Present 1 octet 0x00: Advertiser information ( Advt_Info ) present
0x01: Advertiser information ( Advt_Info ) not present
Advertiser_Address 6 octets Public or random address
Advertiser_Address_Type 1 octet 0x00: Public address
0x01: Random address
Advt_Info 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

Controller debug info sub-event

This event is used by a Controller to provide binary debug information to a host.

Sub-event code = 0x57

Sub-event Parameter Size Purpose
debug_block_byte_offset_start 2 octets Debug block byte offset from the start
last_block 1 octet 0x00: More debug data present
0x01: Last binary block; no more debug data
cur_pay_load_sz 2 octets Binary block size in a current event
Debug_Data Variable Debug data of cur_payload_sz

Bluetooth Quality Report sub-event

This event indicates one of the following: a Bluetooth quality event occurred, the controller uploaded the LMP/LL message trace and Bluetooth Multi-link/Coex scheduling trace, or the controller dumped debug information data.

Sub-event Parameter Size Purpose
Quality_Report_Id 1 octet 0x01: Quality reporting on the monitoring mode.
0x02: Approaching LSTO.
0x03: A2DP Audio Choppy.
0x04: (e)SCO Voice Choppy.
0x05 ~ 0xFF: Reserved.
Packet_Types 1 octet 0x01: ID
0x02: NULL
0x03: POLL
0x04: FHS
0x05: HV1
0x06: HV2
0x07: HV3
0x08: DV
0x09: EV3
0x0A: EV4
0x0B: EV5
0x0C: 2-EV3
0x0D: 2-EV5
0x0E: 3-EV3
0x0F: 3-EV5
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 ~ 0xFF: Reserved.
Connection_Handle 2 octets Connection Handle.
Connection_Role 1 octet Performing Role for the connection.
0x00: Central
0x01: Peripheral
0x02 ~ 0xFF: Reserved.
TX_Power_Level 1 octet Current transmit power level for the specified Connection_Handle.

This value shall be the same as the controller's responding to the HCI_Read_Transmit_Power_Level HCI command.

RSSI 1 octet [in dBm]

Received Signal Strength Indication (RSSI) value for the specified Connection_Handle.
This value shall be an absolute receiver signal strength value.
Range: -127 to +20

SNR 1 octet [in dB]

Signal-to-Noise Ratio (SNR) value for the specified Connection_Handle.
The controller shall provide the average SNR of all the channels used by the link.

Unused_AFH_Channel_Count 1 octet Indicates the number of unused channels in AFH_channel_map.
0x4F ~ 0xFF: Reserved.
AFH_Select_Unideal_Channel_Count 1 octet Indicates the number of the channels which are interfered and have bad quality, but they are still selected for AFH.
The minimum number of channels allowed by the Bluetooth specification is 20, so even if all 79 channels are interfered and have bad quality, the controller still needs to choose at least 20 channels for AFH.
LSTO 2 octets Current Link Supervision Timeout Setting.
Time = N * 0.625 ms
Time Range: 0.625 ms to 40.9 s
Connection_Piconet_Clock 4 octets Piconet Clock for the specified Connection_Handle.
This value shall be the same as the controller's responding to HCI_Read_Clock HCI command with parameter "Which_Clock" of 0x01 (Piconet Clock).
Unit: N * 0.3125 ms (1 Bluetooth Clock)
Retransmission_Count 4 octets The number of retransmissions since the last event.
This count shall be reset after reporting to the host.
No_RX_Count 4 octets No RX count since the last event.
The count increases when no packet is received at the scheduled time slot or the received packet is corrupted.
This count shall be reset after reporting to the host.
NAK_Count 4 octets NAK (Negative Acknowledge) count since the last event.
This count shall be reset after reporting to the host.
Last_TX_ACK_Timestamp 4 octets Timestamp of last TX ACK. It is based on the Bluetooth Clock of the piconet central (CLK).
Unit: N * 0.3125 ms (1 Bluetooth Clock)
Flow_Off_Count 4 octets The number of times the controller receives Flow-off (STOP) since the last event.
This count shall be reset after reporting to the host.
Last_Flow_On_Timestamp 4 octets Timestamp of last Flow-on (GO). It is based on the Bluetooth Clock of the piconet central (CLK).
Unit: N * 0.3125 ms (1 Bluetooth Clock)
Buffer_Overflow_Bytes 4 octets [in Byte]

Buffer overflow count since the last event.
The controller counts how many bytes of data are dropped.
This count shall be reset after reporting to host.

Buffer_Underflow_Bytes 4 octets [in Byte]

Buffer underflow count since the last event.
This count shall be reset after reporting to host.

Vendor Specific Parameter (Parameter Total Length - 49) * octets For the controller vendor to obtain more vendor specific parameters.

Sub-event code = 0x58 [Quality_Report_Id = 0x05, Root Inflammation event]

This event indicates that Bluetooth HAL or the controller encountered a fatal error and needs Bluetooth stack to record this situation and restart. The controller must send a Root_Inflammation_Event to Bluetooth stack before sending the first fragment of the debug info events in any case.

The Error_Code parameter contains an error code reported from HAL/Controller, 0 if it is a chipset vendor specific error. The Vendor_Specific_Error_Code contains a chipset vendor specific error code from HAL/Controller. It should set as 0 if the parameter Error_Code is not 0. The parameters Error_Code and Vendor_Specific_Error_Code should not both be 0.

Sub-event Parameter Size Purpose
Quality_Report_Id 1 octet 0x00 ~ 0x04: Reserved.
0x05: Root inflammation.
0x06 ~ 0xFF: Reserved.
Error_Code 1 octet 0x00: Chipset vendor specific error code is included.
0x01 ~ 0xFF: Controller failure occurred. See Bluetooth Spec [Vol 2] Part D, Error Codes for a list of error codes and descriptions.
Vendor_Specific_Error_Code 1 octet 0x00: No chipset vendor specific error code is included.
0x01 ~ 0xFF: Chipset vendor specific error code.
Vendor Specific Parameter (Parameter Total Length - 4) * octets For the controller vendor to obtain more vendor specific parameters.
Sub-event Parameter Size Purpose
Quality_Report_Id 1 octet 0x00 ~ 0x10: Reserved.
0x11: LMP/LL message trace.
0x12: Bluetooth Multi-link/Coex scheduling trace.
0x13: Controller Debug Information data dump.
0x14 ~ 0xFF: Reserved.
Connection_Handle 2 octets Connection Handle.
Vendor Specific Parameter (Parameter Total Length - 4) * octets Vendor Specific format of LMP message trace, Bluetooth Multi-link/Coex scheduling trace and Controller Debug Information data dump.

Multi-advertiser support

The objectives of multi-advertiser support are the following:

  • Ability to support multiple advertisements ( max_advt_instances )
  • Different transmit powers to allow for a varying range
  • Different advertising content
  • An individualized response for each advertiser
  • Privacy (non-trackable) for each advertiser
  • Connectable

To keep this specification close to existing standards, the following vendor-specific commands are provided. They are derived from the Bluetooth Core 4.1 Specification.

LE_Multi_Advt_Command

OCF: 0x154

Command parameter Size Purpose
Multi_advt_opcode 1 octet 0x01 - Set_Advt_Param_Multi_Sub_Cmd
0x02 - Set_Advt_Data_Multi_Sub_Cmd
0x03 - Set_Scan_Resp_Data_Multi_Sub_Cmd
0x04 - Set_Random_Addr_Multi_Sub_Cmd
0x05 - Set_Advt_Enable_Multi_Sub_Cmd

A Command Complete event will be generated for this command.

Return parameter Size Purpose
Status 1 octet Command Complete status
Multi_advt_opcode 1 octet 0x01 - Set_Advt_Param_Multi_Command
0x02 - Set_Advt_Data_Multi_Command
0x03 - Set_Scan_Resp_Data_Multi_Command
0x04 - Set_Random_Addr_Multi_Command
0x05 - Set_Advt_Enable_Multi_Command

LE_Multi_Advt_Command: Set_Advt_Param_Multi_Sub_Cmd

Base reference: Bluetooth Core 4.1 Specification, page 964 (LE Set Advertising Parameter Command)

Sub OCF: 0x01

Sub-command parameter Size Purpose
Advertising_Interval_Min Per spec Per spec
Advertising_Interval_Max Per spec Per spec
Advertising_Type Per spec Per spec
Own_Address_Type Per spec Per spec
Own_Address Per spec Per spec
Direct_Address_Type Per spec Per spec
Direct_Address Per spec Per spec
Advertising_Channel_Map Per spec Per spec
Adverstising_Filter_Policy Per spec Per spec
Advertising_Instance 1 octet Specifies the applicability of the above parameters to an instance
Tx_power 1 octet Transmit_Power
Unit - in dBm (signed integer)
Range (-70 to +20)

The Own_Address parameter could be a host-configured address at the time of setting up this multi-advertisement instance. This provides the ability to have a resolvable private address at the time of the transmit of the first beacon. Advertisement on an instance will continue irrespective of the connection. The host BT stack could issue a command to start advertisement on an instance, post connection.

A Command Complete event will be generated for this command as specified in the Bluetooth Core 4.1 Specification, per the above command. The controller will respond with a non-success (invalid parameter) code if the advertising instance or Tx_Power parameters are invalid.

Return parameter Size Purpose
Status 1 octet Command Complete status
Multi_advt_opcode 1 octet 0x01 [ Set_Advt_Param_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd

Base reference: Bluetooth Core 4.1 Specification, page 969 (LE Set Advertising Data Command)

Sub OCF: 0x02

Sub-command parameter Size Purpose
Advertising_Data_Length Per spec Per spec
Advertising_Data Per spec Per spec
Advertising_Instance 1 octet Specifies the applicability of the above parameters to an instance

A Command Complete event will be generated for this command as specified in the Bluetooth Core 4.1 Specification, per the above command. The controller will respond with a non-success code if the advertising instance or Tx_Power parameters are invalid.

Return parameter Size Purpose
Status 1 octet Command Complete status
Multi_advt_opcode 1 octet 0x02 [ Set_Advt_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd

Base reference: Bluetooth Core 4.1 Specification, page 970 (LE Set Scan Response Data Command)

Sub OCF: 0x03

Sub-command parameter Size Purpose
Scan_Response_Data_Length Per spec Per spec
Scan_Response_Data Per spec Per spec
Advertising_Instance 1 octet Specifies the applicability of the above parameters to an instance

A Command Complete event will be generated for this command as specified in the Bluetooth Core 4.1 Specification, per the above command. The controller will respond with a non-success code (invalid parameter) if the advertising instance or Tx_Power parameters are invalid.

Return parameter Size Purpose
Status 1 octet Command Complete status
Multi_advt_opcode 1 octet 0x03 [ Set_Scan_Resp_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd

Base reference: Bluetooth Core 4.1 Specification, page 963 (LE Set Random Address Command)

Sub OCF: 0x04

Sub-command parameter Size Purpose
Random Address Per spec Per spec
Advertising_Instance 1 octet Specifies the applicability of the above parameters to an instance

A Command Complete event will be generated for this command.

Return parameter Size Purpose
Status 1 octet Command Complete status
Multi_advt_opcode 1 octet 0x04 [ Set_Random_Addr_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd

Base reference: Bluetooth Core 4.1 Specification, page 971 (LE Set Advertise Enable Command in that core specification)

OCF: 0x05

Sub-command parameter Size Purpose
Advertising_Enable 1 octet A value of 1 means enable. Any other value means disable.
Advertising_Instance 1 octet Specifies the applicability of the above parameters to an instance. Instance 0 means a standard HCI instance.

A Command Complete event will be generated for this command.

Return parameter Size Purpose
Status 1 octet Command Complete status
Multi_advt_opcode 1 octet 0x05 [ Set_Advt_Enable_Multi_Sub_Cmd]

Offloaded resolution of private address

This feature resolves a private address in the controller firmware or hardware, which provides the following benefits:

  • Latency involved with the host in resolving a private address
  • Saving power by refraining from waking up the host

LE_Set_RPA_Timeout

OCF: 0x15C

Command parameter Size Purpose
LE_local_IRK 16 octet The local device IRK used to generate the random resolvable address(es).
tRPA_min 2 octets The minimum RPA generation timeout in seconds. The controller must generate new resolvable addresses for any advertising/scanning/connection events on or after this timeout.
Valid range: 300-1800
tRPA_max 2 octets The maximum RPA generation timeout in seconds. The controller must generate new resolvable addresses for any advertising/scanning/connection events on or before this timeout.
Valid range: tRPA_min -1800
Return parameter Size Purpose
Status 1 octet The status of the command.

Suggested HCI status values:
0x00 Success
0x01 Unknown command (if not supported)
0x12 Invalid command parameters (if any parameters are outside the given range)

LE_RPA_offload_Command

OCF: 0x155

Command parameter Size Purpose
RPA_offload_opcode 1 octet 0x1 - Enable customer specific feature
0x2 - Add IRK to the list
0x3 - Remove IRK from the list
0x4 - Clear IRK list
0x5 - Read IRK list entry

A Command Complete event will be generated for this command.

Return parameter Size Purpose
Status 1 octet Command Complete status
Event_RPA_offload_opcode 1 octet 0x1 - Enable customer specific feature
0x2 - Add IRK to the list
0x3 - Remove IRK from the list
0x4 - Clear IRK list
0x5 - Read IRK list entry

LE_RPA_offload: Enable_cust_specific_sub_Command

Sub OCF: 0x01

Sub-command parameter Size Purpose
enable_customer_specific_feature_set 1 octet 0x01 - Enable offloaded RPA feature
0x00 - Disable offloaded RPA feature

RPA offload is required to be enabled by the host, based on the chip capability. Refer to the LE_Get_Vendor_Capabilities_Command . Each chip can have a varying max_irk_list_sz in the firmware.

A Command Complete event will be generated for this command.

Return parameter Size Purpose
Status 1 octet Command Complete status
Event_cust_specific_feature_opcode 1 octet 0x01 [Enable customer-specific feature]

LE_RPA_offload: Add_IRK_to_list_sub_Command

Sub OCF: 0x02

Sub-command parameter Size Purpose
LE_IRK 16 octets LE IRK (1st byte LSB)
Address_Type 1 octet 0: Public address
1: Random address
LE_Device_Address 6 octets Public or random address associated to the IRK (1st byte LSB)

A Command Complete event will be generated for this command.

Return parameter Size Purpose
Status 1 octet Command Complete status
Event_cust_specific_feature_opcode 1 octet 0x02 [Add IRK to the list]
LE_IrkList_AvailableSpaces 1 octet Available IRL list entries after current operation

LE_RPA_offload: Remove_IRK_to_list_sub_Command

Sub OCF: 0x03

Sub-command parameter Size Purpose
Address_Type 1 octet 0: Public address
1: Random address
LE_Device_Address 6 octets Public or random address that associates to the IRK

A Command Complete event will be generated for this command.

Return parameter Size Purpose
Status 1 octet Command Complete status
Event_cust_specific_feature_opcode 1 octet 0x03 [Remove IRK from the list]
LE_IrkList_AvailableSpaces 1 octet Available IRL list entries after current operation

LE_RPA_offload: Clear_IRK_list_sub_Command

Sub OCF: 0x04

Sub-command parameter Size Purpose
None

A Command Complete event will be generated for this command.

Return parameter Size Purpose
Status 1 octet Command Complete status
Event_cust_specific_feature_opcode 1 octet 0x04 [Clear IRK List]
LE_IrkList_AvailableSpaces 1 octet Available IRL list entries after current operation [ max_irk_list_sz]

LE_RPA_offload: Read_IRK_list_sub_Command

Sub OCF: 0x05

Sub-command parameter Size Purpose
LE_read_IRK_list_entry-index 1 octet Index of the IRK list [0, max_irk_list_sz-1]

A Command Complete event will be generated for this command.

Return parameter Size Purpose
Status 1 octet Command Complete status
Event_cust_specific_feature_opcode 1 octet 0x05 [Read IRK List Entry]
LE_Read_IRK_List_entry 1 octet Index of the IRK that the host wants to read back (maximum IRK list size is 32)
LE_IRK 16 octets IRK value
Address_Type 1 octet 0: Public address
1: Random address
LE_Device_Address 6 octets Public or random address associated to the IRK
LE_Resolved_Private_Address 6 octets Current resolved resolvable private address of this IRK