Host Controller Interface (HCI) ใช้สำหรับการโต้ตอบกับ ตัวควบคุมบลูทูธ
เอกสารนี้แสดงรายการข้อกำหนด HCI ของบลูทูธ (BT) และบลูทูธพลังงานต่ำ (BLE) โดยมีเป้าหมายเพื่อให้ผู้ให้บริการสแต็ก BT ของโฮสต์และผู้ให้บริการคอนโทรลเลอร์ BT ปฏิบัติตามข้อกำหนดของแพลตฟอร์มเหล่านี้เพื่อใช้ชุดฟีเจอร์ที่อธิบายไว้ด้านล่าง
เอกสารนี้อ้างอิงถึงข้อกำหนดหลักของบลูทูธ 5.2 เป็น "ข้อกำหนด" ดูข้อกำหนดหลักของบลูทูธ 5.2 ได้ที่ เว็บไซต์ของ Bluetooth SIG พร้อมกับเอกสารอื่นๆ ที่นำมาใช้
ภาพรวมการออกแบบทั่วไป
ความสามารถและการกำหนดค่าชิป
Android เป็นแพลตฟอร์มแบบเปิด จึงมีเมทริกซ์การเปิดตัวซอฟต์แวร์, OEM, ผู้ให้บริการ, แพลตฟอร์ม และความสามารถของชิป
เอกสารนี้จะอธิบายปรัชญาการออกแบบที่อนุญาตให้ตัวควบคุม BT แสดงความสามารถของตน (นอกเหนือจากข้อกำหนดหลักของบลูทูธ 5.2 มาตรฐาน) เพื่อจัดการกับสภาพแวดล้อมที่แตกต่างกันและจัดการการย้ายข้อมูล จากนั้นสแต็ก BT ของโฮสต์จะใช้ความสามารถเหล่านี้เพื่อพิจารณา ว่าจะเปิดใช้ฟีเจอร์ใด
สนับสนุนมาตรฐานแบบเปิด
เป้าหมายอย่างหนึ่งของ Android คือการรองรับมาตรฐานเปิดหลังจากที่มีการให้สัตยาบันใน ข้อกำหนดของบลูทูธ หากฟีเจอร์ที่อธิบายไว้ด้านล่างพร้อมใช้งานใน วิธีการ HCI มาตรฐานในข้อกำหนดของบลูทูธในอนาคต เราจะ พิจารณาให้วิธีการดังกล่าวเป็นค่าเริ่มต้น
ความสามารถเฉพาะของผู้ให้บริการ
คำสั่งเฉพาะของผู้ให้บริการ: LE_Get_Vendor_Capabilities_Command
ฟิลด์คำสั่ง OpCode (OCF): 0x153
| พารามิเตอร์คำสั่ง | ขนาด | วัตถุประสงค์ |
|---|---|---|
| NA | รายการพารามิเตอร์คำสั่งที่ว่างเปล่า |
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
max_advt_instances(เลิกใช้งานแล้ว) |
1 อ็อกเท็ต |
จำนวนอินสแตนซ์โฆษณาที่รองรับ สงวนไว้หลังเวอร์ชัน 0.98 พารามิเตอร์นี้เลิกใช้งานแล้วในข้อกำหนดฟีเจอร์ของ Google v0.98 และ สูงกว่าเพื่อรองรับการโฆษณาแบบขยาย LE ที่มีให้บริการใน ข้อกำหนด BT เวอร์ชัน 5.0 ขึ้นไป |
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.05 byte[0] = 0x01 byte[1] = 0x05 การเพิ่มฟีเจอร์ในเวอร์ชันต่อไปนี้ v1.05:
|
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 อ็อกเท็ต |
บิตมาสก์สำหรับประเภทตัวแปลงรหัสที่รองรับ บิต 0 - SBC บิต 1 - AAC บิต 2 - APTX บิต 3 - APTX HD บิต 4 - LDAC บิต 5 - Opus บิต 6-31 สงวนไว้ |
bluetooth_quality_report_support |
1 อ็อกเท็ต |
รองรับการรายงานเหตุการณ์คุณภาพของบลูทูธ 0 = ไม่สามารถ 1 = สามารถ |
dynamic_audio_buffer_support |
4 อ็อกเท็ต |
รองรับบัฟเฟอร์เสียงแบบไดนามิกในตัวควบคุมบลูทูธ บิตมาสก์สำหรับประเภทตัวแปลงรหัสที่รองรับ บิต 0 - SBC บิต 1 - AAC บิต 2 - APTX บิต 3 - APTX HD บิต 4 - LDAC บิต 5 - Opus บิต 6-31 สงวนไว้ |
a2dp_offload_v2_support |
1 อ็อกเท็ต |
รองรับคำสั่งการลดภาระ A2DP เวอร์ชัน 2 ในตัวควบคุมบลูทูธ (ดู
เริ่มการลดภาระ A2DP
หยุดการลดภาระ A2DP) 0 = ไม่รองรับ 1 = รองรับ |
iso_link_feedback_support |
1 อ็อกเท็ต |
รองรับเหตุการณ์ ISO Link Feedback 0 = ไม่รองรับ 1 = รองรับ |
sniff_offload_support |
1 อ็อกเท็ต |
รองรับคำสั่ง Sniff Offload ในตัวควบคุมบลูทูธ 0 = ไม่รองรับ 1 = รองรับ |
ผลการสแกนแบบเป็นชุด
เป้าหมายการออกแบบคือการปรับปรุงวิธีส่งการแจ้งเตือนเหตุการณ์การตอบกลับการสแกน Bluetooth LE ไปยังโฮสต์ เพื่อประหยัดพลังงานในโฮสต์
การลดความถี่ที่ตัวควบคุมจะแจ้งให้โปรเซสเซอร์ของแอปโฮสต์
สแกนผลลัพธ์จะช่วยให้โปรเซสเซอร์ของแอปโฮสต์
อยู่ในโหมดว่าง/สลีปได้นานขึ้น ซึ่งจะช่วยลดการใช้พลังงานในโฮสต์ พารามิเตอร์ return
total_scan_results_storage of
LE_Get_Vendor_Capabilities_Command ระบุความสามารถของชิป
ในการจัดเก็บผลการสแกน
ฟีเจอร์นี้มุ่งเน้นที่การจัดการและการกำหนดค่าที่เก็บผลการสแกน LE ในตัวควบคุมบลูทูธ โดยใช้พื้นที่เก็บข้อมูล เพื่อจัดกลุ่มข้อมูลโฆษณาและข้อมูลการสแกน รวมถึงข้อมูลเมตาที่ ผู้ควบคุมได้รับชั่วคราวเพื่อส่งไปยังโฮสต์ในภายหลัง
เฟิร์มแวร์ต้องรองรับการประมวลผลแบบกลุ่ม 2 ประเภท ซึ่งสามารถใช้พร้อมกันได้ ดังนี้
- ถูกตัด มีองค์ประกอบข้อมูลต่อไปนี้ {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 - อ่านพารามิเตอร์ผลการสแกนเป็นชุด |
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้ การเปิดใช้ ฟีเจอร์เฉพาะลูกค้าไม่ได้เริ่มการสแกน
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
Batch_Scan_opcode |
1 อ็อกเท็ต |
0x1 - เปิดใช้ฟีเจอร์เฉพาะลูกค้า 0x2 - ตั้งค่าพารามิเตอร์ที่จัดเก็บการสแกนเป็นชุด 0x3 - ตั้งค่าพารามิเตอร์การสแกนเป็นชุด 0x4 - อ่านพารามิเตอร์ผลการสแกนเป็นชุด |
LE_Batch_Scan_Command: เปิดใช้ฟีเจอร์เฉพาะลูกค้า
Sub OCF: 0x01
| พารามิเตอร์คำสั่งย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
enable_customer_specific_feature_set |
1 อ็อกเท็ต |
0x01 - เปิดใช้ฟีเจอร์สแกนเป็นชุด 0x00 - ปิดใช้ฟีเจอร์สแกนเป็นชุด |
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
Batch_Scan_opcode |
1 อ็อกเท็ต |
0x1 - เปิดใช้ฟีเจอร์เฉพาะลูกค้า 0x2 - ตั้งค่าพารามิเตอร์ที่เก็บข้อมูลการสแกนเป็นชุด 0x3 - ตั้งค่าพารามิเตอร์การสแกนเป็นชุด 0x4 - อ่านพารามิเตอร์ผลการสแกนเป็นชุด |
LE_Batch_Scan_Command: ตั้งค่าคำสั่งย่อยพารามิเตอร์ที่เก็บข้อมูลการสแกนแบบกลุ่ม
Sub OCF: 0x02
| พารามิเตอร์คำสั่งย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
Batch_Scan_Full_Max |
1 อ็อกเท็ต |
พื้นที่เก็บข้อมูลสูงสุด (เป็น %) ที่จัดสรรให้กับสไตล์แบบเต็ม [ช่วง: 0-100] |
Batch_Scan_Truncated_Max |
1 อ็อกเท็ต |
พื้นที่เก็บข้อมูลสูงสุด (เป็น %) ที่จัดสรรให้กับรูปแบบที่ถูกตัด [ช่วง: 0-100] |
Batch_Scan_Notify_Threshold |
1 อ็อกเท็ต |
ตั้งค่าระดับการแจ้งเตือน (เป็น %) สำหรับ Storage Pool แต่ละรายการ
[ช่วง: 0-100] การตั้งค่าเป็น 0 จะปิดใช้การแจ้งเตือน สร้างเหตุการณ์ HCI เฉพาะผู้ให้บริการ (เหตุการณ์ย่อยการละเมิดเกณฑ์พื้นที่เก็บข้อมูล) |
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
Batch_scan_opcode |
1 อ็อกเท็ต | 0x02 [ตั้งค่าพารามิเตอร์การสแกนเป็นชุด] |
LE_Batch_Scan_Command: ตั้งค่าคำสั่งย่อยของพารามิเตอร์การสแกนแบบกลุ่ม
Sub 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 เพียง 1 รายการ
สำหรับช่วงเวลาการสแกนแต่ละครั้ง ระเบียนที่ต้องเก็บไว้สำหรับโหมดตัดทอนคือ {BD_ADDR,
กำลังส่ง, RSSI, การประทับเวลา}
เมื่อเปิดใช้โหมดเต็ม ระบบจะใช้การสแกนที่ใช้งานอยู่และบันทึกการตอบกลับการสแกน
คีย์ที่ไม่ซ้ำของรูปแบบเต็ม = {MAC, แพ็กเก็ตโฆษณา}
โดยไม่คำนึงถึงช่วงเวลาการสแกน บันทึกที่จะเก็บไว้สำหรับโหมดเต็มคือ
{BD_ADDR, กำลังส่ง, RSSI, การประทับเวลา, แพ็กเกตโฆษณา, การสแกน
การตอบกลับ} ในรูปแบบเต็ม ระบบจะบันทึกแพ็กเก็ต AD เดียวกันเพียงครั้งเดียวเมื่อเห็นหลายครั้ง
ในช่วงเวลาการสแกนที่ต่างกัน อย่างไรก็ตาม ใน
โหมดตัดทอน สิ่งที่น่าสนใจคือระดับการมองเห็นของ BA_ADDR ใน
ช่วงเวลาการสแกนต่างๆ (1 ครั้งต่อช่วงเวลาการสแกน)
RSSI คือค่าเฉลี่ยของโฆษณาที่ซ้ำกันทั้งหมดของโฆษณาที่ไม่ซ้ำกัน
ภายในช่วงการสแกน
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
Batch_scan_opcode |
1 อ็อกเท็ต | 0x03 [ตั้งค่าพารามิเตอร์การสแกนแบบกลุ่ม] |
LE_Batch_Scan_Command: อ่านคำสั่งย่อยผลการสแกนแบบเป็นชุด
Sub OCF: 0x04
| พารามิเตอร์คำสั่งย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
Batch_Scan_Data_read |
1 อ็อกเท็ต |
0x01 - ข้อมูลโหมดที่ถูกตัดทอน 0x02 - ข้อมูลโหมดเต็ม |
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้ เมื่อโฮสต์ ออกคำสั่งนี้ ผลลัพธ์ทั้งหมดในคอนโทรลเลอร์อาจไม่พอดีในเหตุการณ์ Command Complete รายการเดียว โฮสต์จะวนซ้ำในการออกคำสั่งนี้จนกว่า ผลลัพธ์ที่เกี่ยวข้องในเหตุการณ์ Command Complete จะระบุ 0 ใน จำนวนระเบียน ซึ่งบ่งชี้ว่าคอนโทรลเลอร์ไม่มีระเบียนที่จะ สื่อสารกับโฮสต์อีกต่อไป เหตุการณ์ Command Complete แต่ละรายการอาจมี หลายระเบียนของข้อมูลประเภทเดียวเท่านั้น (แบบเต็มหรือแบบย่อ)
การอ้างอิงเวลาของคอนโทรลเลอร์และโฮสต์ไม่ซิงค์กัน หน่วยของ
การประทับเวลาคือ 50 มิลลิวินาที ค่าของแสตมป์เวลาจะอิงตามเวลาที่โฮสต์ให้ Read_Batch_Scan_Results_Sub_cmd
หากเวลาที่คำสั่งมาถึงคือ
T_c ในเฟิร์มแวร์ เวลาจริงที่การประทับเวลา
ในเฟิร์มแวร์คือ T_fw เวลาในการรายงานจะเป็น
(T_c - T_fw) T_c และ
T_fw อยู่ในโดเมนเวลาของเฟิร์มแวร์ ซึ่งจะช่วยให้โฮสต์
คำนวณได้ว่าเหตุการณ์เกิดขึ้นนานเท่าใดแล้ว
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
Batch_scan_opcode |
1 อ็อกเท็ต | 0x03 [ตั้งค่าพารามิเตอร์การสแกนแบบเป็นชุด] |
Batch_Scan_data_read |
1 อ็อกเท็ต | ระบุรูปแบบ (ย่อหรือเต็ม) |
num_of_records |
1 อ็อกเท็ต | จำนวนบันทึกของ Batch_Scan_data_read |
format_of_data |
ตัวแปร |
โหมดตัดทอน: Address[0]: 6 octets Address_Type[0]: 1 octet Tx_Pwr[0]: 1 octet RSSI[0] : 1 octet Timestamp[0]: 2 octets [multiple records ( num_of_records) with above format]โหมดเต็ม: Address[0]: 6 octets Address_Type[0]: 1 octet Tx_Pwr[0]: 1 octet RSSI[0]: 1 octet Timestamp[0]: 2 octets Adv packet_len[0]: 1 octet Adv_packet[0]: Adv_packet_len octets Scan_data_resp_len[0]: 1 octet Scan_data_resp[0]: Scan_data_resp octets[multiple records with above format ( num_of_records)]
|
ตัวกรองเนื้อหาแพ็กเก็ตโฆษณา
ใช้เพื่อเปิด/ปิด/ตั้งค่าตัวกรองเนื้อหาแพ็กเก็ตโฆษณา (APCF) ในคอนโทรลเลอร์ APCF จะกรองรายงานการโฆษณาใน คอนโทรลเลอร์ แต่จะไม่กรองการโฆษณาเป็นระยะ
LE_APCF_Command
OCF: 0x157
| พารามิเตอร์คำสั่ง | ขนาด | วัตถุประสงค์ |
|---|---|---|
APCF_opcode |
1 อ็อกเท็ต |
0x00 - เปิดใช้ APCF 0x01 - ตั้งค่าพารามิเตอร์การกรอง APCF 0x02 - ที่อยู่ผู้ส่ง APCF 0x03 - UUID ของบริการ APCF 0x04 - UUID ของการขอใช้บริการ APCF 0x05 - ชื่อในเครื่องของ APCF 0x06 - ข้อมูลผู้ผลิตของ APCF 0x07 - ข้อมูลบริการของ APCF 0x08 - บริการค้นหาการรับส่งของ APCF 0x09 - ตัวกรองประเภทโฆษณาของ APCF 0x10 ~ 0xAF - สงวนไว้สำหรับการใช้งานในอนาคต 0xB0 ~ 0xDF - สงวนไว้สำหรับผู้จำหน่าย 0xE0 ~ 0xFE - สงวนไว้สำหรับการใช้งานในอนาคต 0xFF - อ่านฟีเจอร์เพิ่มเติมของ APCF |
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะการคืนสินค้า |
APCF_opcode |
1 อ็อกเท็ต |
0x00 - เปิดใช้ APCF 0x01 - ตั้งค่าพารามิเตอร์การกรอง APCF 0x02 - ที่อยู่ Broadcaster ของ APCF 0x03 - UUID ของบริการ APCF 0x04 - UUID ของการร้องขอบริการ APCF 0x05 - ชื่อในเครื่องของ APCF 0x06 - ข้อมูลผู้ผลิตของ APCF 0x07 - ข้อมูลบริการของ APCF 0x08 - บริการค้นหาการรับส่งของ APCF 0x09 - ตัวกรองประเภทโฆษณาของ APCF 0x10 ~ 0xAF - สงวนไว้สำหรับใช้ในอนาคต 0xB0 ~ 0xDF - สงวนไว้สำหรับผู้ให้บริการ 0xE0 ~ 0xFE - สงวนไว้สำหรับใช้ในอนาคต 0xFF - อ่านฟีเจอร์เพิ่มเติมของ APCF |
LE_APCF_Command: Enable_sub_cmd
Sub OCF: 0x00
| พารามิเตอร์คำสั่งย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
APCF_enable |
1 อ็อกเท็ต |
0x01 - เปิดใช้ฟีเจอร์ APCF 0x00 - ปิดใช้ฟีเจอร์ APCF |
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
APCF_opcode |
1 อ็อกเท็ต | 0x0 - เปิดใช้ APCF |
APCF_Enable |
1 อ็อกเท็ต | เปิด/ปิดใช้ได้ผ่าน APCF_enable |
LE_APCF_Command: set_filtering_parameters_sub_cmd
คำสั่งย่อยนี้ใช้เพื่อเพิ่มหรือลบข้อกำหนดตัวกรอง หรือล้างรายการตัวกรองสำหรับการกรองในชิป
Sub OCF: 0x01
| พารามิเตอร์คำสั่งย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
APCF_Action |
1 อ็อกเท็ต |
0x00 - เพิ่ม 0x01 - ลบ 0x02 - ล้าง การลบจะล้างตัวกรองที่เฉพาะเจาะจงพร้อมกับรายการฟีเจอร์ที่เกี่ยวข้อง ในตารางอื่นๆ ล้างจะล้างตัวกรองทั้งหมดและรายการที่เกี่ยวข้องในตารางอื่นๆ |
APCF_Filter_Index |
1 อ็อกเท็ต | ดัชนีตัวกรอง (0, max_filter-1) |
APCF_Feature_Selection |
2 อ็อกเท็ต |
บิตมาสก์สำหรับฟีเจอร์ที่เลือก บิต 0: ตั้งค่าเพื่อเปิดใช้ตัวกรองที่อยู่บรอดแคสต์ บิต 1: ตั้งค่าเพื่อเปิดใช้ตัวกรองการเปลี่ยนแปลงข้อมูลบริการ บิต 2: ตั้งค่าเพื่อเปิดใช้การตรวจสอบ UUID ของบริการ บิต 3: ตั้งค่าเพื่อเปิดใช้การตรวจสอบ UUID ของการชักชวนบริการ บิต 4: ตั้งค่าเพื่อเปิดใช้การตรวจสอบชื่อในเครื่อง บิต 5: ตั้งค่าเพื่อเปิดใช้การตรวจสอบข้อมูลผู้ผลิต บิต 6: ตั้งค่าเพื่อเปิดใช้การตรวจสอบข้อมูลบริการ บิต 7: ตั้งค่าเพื่อเปิดใช้การตรวจสอบบริการค้นหาการรับส่ง บิต 8: ตั้งค่าเพื่อเปิดใช้การตรวจสอบประเภท AD |
APCF_List_Logic_Type |
2 อ็อกเท็ต |
การดำเนินการเชิงตรรกะสำหรับการเลือกฟีเจอร์แต่ละรายการ (ตำแหน่งต่อบิต)
ที่ระบุใน APCF_Feature_Selection
ใช้ได้เมื่อเปิดใช้ฟีเจอร์เท่านั้น ค่าตำแหน่งบิต: 0: OR 1: AND หากเลือกตรรกะ "AND" แพ็กเก็ต ADV จะผ่านตัวกรองได้ก็ต่อเมื่อ มีรายการทั้งหมดในรายการ หากเลือกตรรกะ "OR" แพ็กเก็ต ADV จะผ่านตัวกรองหากมีรายการใดรายการหนึ่งในรายการ |
APCF_Filter_Logic_Type |
1 อ็อกเท็ต |
0x00: OR 0x01: AND หมายเหตุ: ประเภทตรรกะคือ N/A สำหรับฟิลด์ 3 รายการแรกของ APCF_Feature_Selection ซึ่งเป็นตรรกะ "AND" เสมอ โดยจะ
ใช้ได้กับฟิลด์ 4 ฟิลด์ (บิตที่ 3 - บิตที่ 6) ของ
APCF_Feature_Selection เท่านั้น
|
rssi_high_thresh |
1 อ็อกเท็ต |
[ในหน่วย dBm] ระบบจะถือว่าผู้ลงโฆษณาเห็นเฉพาะในกรณีที่สัญญาณสูงกว่า เกณฑ์สูงของ RSSI มิฉะนั้น เฟิร์มแวร์ต้องทำงานราวกับว่าไม่เคยเห็น อุปกรณ์ดังกล่าว |
delivery_mode |
1 อ็อกเท็ต |
0x00 - immediate0x01 - on_found0x02 - batched
|
onfound_timeout |
2 อ็อกเท็ต |
ใช้ได้เฉพาะในกรณีที่ delivery_mode เป็น
on_found[เป็นมิลลิวินาที] เวลาที่เฟิร์มแวร์จะคงอยู่และรวบรวมโฆษณาเพิ่มเติม ก่อนที่จะรายงาน |
onfound_timeout_cnt |
1 อ็อกเท็ต |
ใช้ได้เฉพาะในกรณีที่ delivery_mode เป็น
on_found[count] หากโฆษณาใน onFound ยังคงอยู่ในเฟิร์มแวร์เป็นเวลา
onfound_timeout ระบบจะรวบรวมโฆษณา 2-3 รายการ
และตรวจสอบจำนวน หากจำนวนเกิน
onfound_timeout_cnt ระบบจะรายงาน
OnFound ทันทีหลังจากนั้น
|
rssi_low_thresh |
1 อ็อกเท็ต |
ใช้ได้เฉพาะในกรณีที่ delivery_mode เป็น
on_found[ในหน่วย dBm] ระบบจะถือว่าไม่เห็นแพ็กเก็ตของผู้ลงโฆษณา หาก RSSI ของ แพ็กเก็ตที่ได้รับไม่สูงกว่าเกณฑ์ต่ำของ RSSI |
onlost_timeout |
2 อ็อกเท็ต |
ใช้ได้เฉพาะในกรณีที่ delivery_mode เป็น
on_found[เป็นมิลลิวินาที] หากตรวจพบโฆษณาแล้ว แต่โฆษณาไม่ได้แสดงอย่างต่อเนื่องเป็นระยะเวลา lost_timeout ระบบจะรายงานว่าโฆษณาหายไปทันที
|
num_of_tracking_entries |
2 อ็อกเท็ต |
ใช้ได้เฉพาะในกรณีที่ delivery_mode เป็น
on_found[count] จำนวนผู้ลงโฆษณาทั้งหมดที่จะติดตามต่อตัวกรอง |
ค่า RSSI ต้องใช้ส่วนเติมเต็มของ 2 เพื่อแสดงค่าลบ
โฮสต์ต้องกำหนดค่าตัวกรองหลายรายการได้โดยมี
APCF_Application_Address_type ตั้งค่าเป็น 0x02 (สำหรับที่อยู่ผู้แพร่ภาพกระจายเสียงทั้งหมด
) เพื่อจัดการชุดค่าผสมตัวกรองต่างๆ
การกรอง การจัดกลุ่ม และการรายงานเป็นแนวคิดที่เชื่อมโยงกัน โฆษณาทุกรายการ
และการตอบกลับการสแกนที่เกี่ยวข้องจะต้องผ่านตัวกรองทั้งหมด
ทีละรายการ ดังนั้น การดำเนินการที่ได้
(delivery_mode) จึงเชื่อมโยงกับการกรองอย่างใกล้ชิด วิธีการส่งข้อมูลราคา
มีดังนี้ report_immediately
batch และ onFound ค่า OnLost เกี่ยวข้องกับ OnFound ในแง่ที่ว่า
ค่านี้จะปรากฏหลังจาก OnFound เมื่อแพ้
ขั้นตอนการประมวลผลนี้แสดงโมเดลแนวคิด
เมื่อได้รับเฟรมโฆษณา (หรือการตอบกลับการสแกน) ระบบจะใช้เฟรมดังกล่าว กับตัวกรองทั้งหมดตามลำดับ โฆษณาอาจทำให้เกิดการรายงานทันทีตามตัวกรองหนึ่ง และการจัดกลุ่มของโฆษณาเดียวกันเนื่องจากการดำเนินการตัวกรองที่แตกต่างกัน
เกณฑ์ระดับ RSSI (สูงและต่ำ) ช่วยให้คุณควบคุมได้ว่าเฟรมจะแสดงเมื่อใดสำหรับการประมวลผลตัวกรอง แม้ว่าตัวควบคุมจะได้รับแพ็กเก็ตที่ถูกต้องก็ตาม ในกรณีที่ตั้งค่าโหมดการนำส่งเป็น immediate หรือ batched ระบบจะพิจารณา RSSI ของเฟรมสำหรับการประมวลผล คอนโทรลเลอร์เพิ่มเติม แอปต่างๆ ต้องการการรายงานและ ลักษณะการทำงานแบบเป็นกลุ่มที่แตกต่างกัน ซึ่งจะช่วยให้แอปหลายแอปสามารถรายงานโดยตรง และ/หรือจัดกลุ่มผลลัพธ์ในเฟิร์มแวร์พร้อมกันได้ ตัวอย่างเช่น กรณีที่ การสแกนเป็นกลุ่มทำงานจากแอปหนึ่ง และต่อมาแอปอื่นออกการสแกน LE ปกติ ก่อนที่จะออกการสแกนเป็นกลุ่ม เฟรมเวิร์ก/แอป จะตั้งค่าตัวกรองที่เหมาะสม ต่อมาเมื่อแอปที่ 2 ออกการสแกนปกติ การจัดกลุ่มก่อนหน้าจะดำเนินต่อไป อย่างไรก็ตาม เนื่องจากการสแกนปกติ จึง คล้ายกับการเพิ่มตัวกรอง Null ในเชิงแนวคิด (พร้อมกับตัวกรองที่มีอยู่ทั้งหมด ) พร้อมกับคำสั่งสแกน LE พารามิเตอร์คำสั่งการสแกน LE จะมีความสำคัญเหนือกว่าเมื่อใช้งานอยู่ เมื่อปิดใช้การสแกน LE ปกติ คอนโทรลเลอร์จะเปลี่ยนกลับไปใช้การสแกนเป็นชุดก่อนหน้า หากมี
OnFoundโหมดการนำส่งจะอิงตามตัวกรองที่กำหนดค่าไว้
ระบบจะถือว่าชุดค่าผสมที่ทําให้การดําเนินการของตัวกรองสําเร็จเป็น
เอนทิตีที่จะติดตามสําหรับ onLost เหตุการณ์ที่เกี่ยวข้องคือเหตุการณ์ย่อยการติดตามโฆษณา LE
OnFound/OnLost การเปลี่ยนผ่านสำหรับตัวกรอง (หากเปิดใช้) จะมีลักษณะดังนี้
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
APCF_opcode |
1 อ็อกเท็ต | 0x01 - APCF Set Filtering Parameters |
APCF_Action |
1 อ็อกเท็ต | APCF_Action คำสั่งตอบกลับ |
APCF_AvailableSpaces |
1 อ็อกเท็ต | จำนวนรายการที่ใช้ได้ในตารางตัวกรอง |
LE_APCF_Command: broadcast_address_sub_cmd
คำสั่งย่อยนี้ใช้เพื่อเพิ่มหรือลบที่อยู่ของผู้ลงโฆษณา หรือเพื่อล้าง รายการที่อยู่ของผู้ลงโฆษณาสำหรับการกรองในชิป
Sub OCF: 0x02
| พารามิเตอร์คำสั่งย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
APCF_Action |
1 อ็อกเท็ต |
0x00 - เพิ่ม 0x01 - ลบ 0x02 - ล้าง ลบจะลบที่อยู่ผู้แพร่ภาพที่ระบุใน ตัวกรองที่ระบุ ล้างจะล้างที่อยู่ของผู้แพร่ภาพกระจายเสียงทั้งหมดในตัวกรองที่ระบุ |
APCF_Filter_Index |
1 อ็อกเท็ต | ดัชนีตัวกรอง (0, max_filter-1) |
APCF_Broadcaster_Address |
6 อ็อกเท็ต | ที่อยู่อุปกรณ์ 6 ไบต์ที่จะเพิ่มหรือลบออกจากรายการที่อยู่ของผู้ออกอากาศ |
APCF_Application_Address_type |
1 อ็อกเท็ต |
0x00: สาธารณะ 0x01: สุ่ม 0x02: NA (ไม่สนใจประเภทที่อยู่) เพื่อกรองรายงานการโฆษณาที่มีประเภทที่อยู่ระบุตัวตน (0x02, 0x03) หากต้องการรับรายงานการโฆษณาที่มีประเภทที่อยู่ 0x02 และ 0x03 ให้ตั้งค่าฟิลด์นี้เป็น 0x02: NA (ไม่สนใจประเภทที่อยู่) |
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
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 ของบริการสำหรับการกรองในชิป
Sub OCF: 0x03
| พารามิเตอร์คำสั่งย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
APCF_Action |
1 อ็อกเท็ต |
0x00 - เพิ่ม 0x01 - ลบ 0x02 - ล้าง ลบจะลบที่อยู่ 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.
|
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
APCF_opcode |
1 อ็อกเท็ต | 0x03 - UUID ของบริการ APCF |
APCF_Action |
1 อ็อกเท็ต | APCF_Action คำสั่งตอบกลับ |
APCF_AvailableSpaces |
1 อ็อกเท็ต | จำนวนรายการฟรีที่ยังใช้ได้ในตาราง UUID ของบริการ |
LE_APCF_Command: solicitation_uuid_sub_cmd
คำสั่งย่อยนี้ใช้เพื่อเพิ่มหรือลบ UUID ของการชักชวน หรือเพื่อล้างรายการ UUID ของการชักชวนสำหรับการกรองในชิป
Sub OCF: 0x04
| พารามิเตอร์คำสั่งย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
APCF_Action |
1 อ็อกเท็ต |
0x00 - เพิ่ม 0x01 - ลบ 0x02 - ล้าง ลบจะลบที่อยู่ 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
|
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
APCF_opcode |
1 อ็อกเท็ต | 0x04 - UUID ของการชักชวน APCF |
APCF_Action |
1 อ็อกเท็ต | APCF_Action คำสั่งตอบกลับ |
APCF_AvailableSpaces |
1 อ็อกเท็ต | จำนวนรายการฟรีที่ยังใช้ได้ในตาราง UUID ของการชักชวน |
LE_APCF_Command: local_name_sub_cmd
คำสั่งย่อยนี้ใช้เพื่อเพิ่มหรือลบสตริงชื่อในเครื่อง หรือเพื่อล้าง รายการสตริงชื่อในเครื่องสำหรับการกรองในชิป
Sub OCF: 0x05
| พารามิเตอร์คำสั่งย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
APCF_Action |
1 อ็อกเท็ต |
0x00 - เพิ่ม 0x01 - ลบ 0x02 - ล้าง ลบจะลบสตริงชื่อในเครื่องที่ระบุใน ตัวกรองที่ระบุ Clear จะล้างสตริงชื่อในเครื่องทั้งหมดในตัวกรองที่ระบุ |
APCF_Filter_Index |
1 อ็อกเท็ต | ดัชนีตัวกรอง (0, max_filter-1) |
APCF_LocName_Mandata_or_SerData |
ขนาดตัวแปร |
สตริงอักขระสำหรับชื่อท้องถิ่น หมายเหตุ:
|
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
APCF_opcode |
1 อ็อกเท็ต | 0x05 - APCF Local Name |
APCF_Action |
1 อ็อกเท็ต | APCF_Action คำสั่งตอบกลับ |
APCF_AvailableSpaces |
1 อ็อกเท็ต | จำนวนรายการฟรีที่ยังใช้ได้ในตารางชื่อในพื้นที่ |
LE_APCF_Command: manf_data_sub_cmd
คำสั่งย่อยนี้ใช้เพื่อเพิ่มหรือลบสตริงข้อมูลของผู้ผลิต หรือเพื่อ ล้างรายการสตริงข้อมูลของผู้ผลิตสำหรับการกรองในชิป
Sub OCF: 0x06
| พารามิเตอร์คำสั่งย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
APCF_Action |
1 อ็อกเท็ต |
0x00 - เพิ่ม 0x01 - ลบ 0x02 - ล้าง การลบจะลบสตริงข้อมูลของผู้ผลิตที่ระบุใน ตัวกรองที่ระบุ Clear จะล้างสตริงข้อมูลของผู้ผลิตทั้งหมดในตัวกรองที่ระบุ |
APCF_Filter_Index |
1 อ็อกเท็ต | ดัชนีตัวกรอง (0, max_filter-1) |
APCF_LocName_Mandata_or_SerData |
ขนาดตัวแปร |
สตริงอักขระสำหรับข้อมูลผู้ผลิต หมายเหตุ:
|
APCF_ManData_Mask |
ขนาดตัวแปร |
มาสก์ข้อมูลการผลิตที่จะเพิ่มลงในรายการ โดยควรมีความยาวเท่ากับ APCF_LocName_or_ManData_or_SerData
|
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
APCF_opcode |
1 อ็อกเท็ต | 0x06 - ข้อมูลผู้ผลิต APCF |
APCF_Action |
1 อ็อกเท็ต | APCF_Action คำสั่งตอบกลับ |
APCF_AvailableSpaces |
1 อ็อกเท็ต | จำนวนรายการฟรีที่ยังใช้ได้ในตารางข้อมูลผู้ผลิต |
LE_APCF_Command: service_data_sub_cmd
ใช้คำสั่งย่อยนี้เพื่อเพิ่มหรือลบสตริงข้อมูลบริการ หรือเพื่อล้างรายการสตริงข้อมูลบริการสำหรับการกรองในชิป
Sub OCF: 0x07
| พารามิเตอร์คำสั่งย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
APCF_Action |
1 อ็อกเท็ต |
0x00 - เพิ่ม 0x01 - ลบ 0x02 - ล้าง การลบจะลบสตริงข้อมูลบริการที่ระบุในตัวกรองที่ระบุ Clear จะล้างสตริงข้อมูลบริการทั้งหมดในตัวกรองที่ระบุ |
APCF_Filter_Index |
1 อ็อกเท็ต | ดัชนีตัวกรอง (0, max_filter-1) |
APCF_LocName_Mandata_or_SerData |
ขนาดตัวแปร |
สตริงอักขระสำหรับข้อมูลบริการ หมายเหตุ:
|
APCF_LocName_Mandata_or_SerData_Mask |
ขนาดตัวแปร |
มาสก์ข้อมูลบริการที่จะเพิ่มลงในรายการ โดยควรมีความยาวเท่ากับ APCF_LocName_or_ManData_or_SerData.
|
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
APCF_opcode |
1 อ็อกเท็ต | 0x07 - ข้อมูลบริการ APCF |
APCF_Action |
1 อ็อกเท็ต | APCF_Action คำสั่งตอบกลับ |
APCF_AvailableSpaces |
1 อ็อกเท็ต | จำนวนรายการฟรีที่ยังใช้ได้สำหรับตารางข้อมูลบริการ |
LE_APCF_Command: ad_type_sub_cmd
ใช้คำสั่งย่อยนี้เพื่อเพิ่มหรือลบประเภทโฆษณา หรือล้างรายการประเภทโฆษณา
สำหรับการกรองในชิป ใช้
read_extended_features_sub_cmd เพื่อตรวจสอบว่าคำสั่งนี้
รองรับหรือไม่
เมื่อ APCF_AD_DATA_Length เป็น 0 ให้กรอง APCF_AD_TYPE โดยไม่
เปรียบเทียบข้อมูลโฆษณาและข้อมูลโฆษณาที่มาสก์
หากความยาวของข้อมูลในแพ็กเก็ต ADV ที่ได้รับเกิน AD_DATA_LENGTH ให้เปรียบเทียบ
เฉพาะไบต์แรก AD_DATA_LENGTH ของข้อมูล AD และไม่สนใจข้อมูลที่เหลือ
Sub OCF: 0x09
| พารามิเตอร์คำสั่งย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
APCF_Action |
1 อ็อกเท็ต |
0x00 - เพิ่ม 0x01 - ลบ 0x02 - ล้าง การลบจะลบโฆษณาประเภทที่ระบุในตัวกรองที่ระบุ ล้างจะล้างประเภทโฆษณาทั้งหมดในตัวกรองที่ระบุ |
APCF_Filter_Index |
1 อ็อกเท็ต | ดัชนีตัวกรอง (0, max_filter-1) |
APCF_AD_TYPE |
1 อ็อกเท็ต | ประเภทโฆษณาสำหรับการเพิ่มหรือลบออกจากรายการ ไม่สนใจเมื่อ APCF_Action เป็น 0x02 (ล้าง) |
APCF_AD_DATA_Length |
1 อ็อกเท็ต |
0x00 - หมายถึงไม่กรองเนื้อหาข้อมูล ไม่สนใจเมื่อ APCF_Action เป็น 0x02 (ล้าง)
|
APCF_AD_DATA |
ขนาดตัวแปร |
ขนาดแปรผันตาม APCF_AD_DATA_Lengthไม่สนใจเมื่อ APCF_Action เป็น 0x02 (ล้าง) |
APCF_AD_DATA_MASK |
ขนาดตัวแปร |
ขนาดตัวแปรตาม APCF_AD_DATA_Lengthไม่สนใจเมื่อ APCF_Action เป็น 0x02 (ล้าง)ควรมีความยาวเท่ากับ APCF_AD_DATA
|
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
APCF_opcode |
1 อ็อกเท็ต | 0x09 - ประเภทโฆษณา APCF |
APCF_Action |
1 อ็อกเท็ต | APCF_Action คำสั่งตอบกลับ |
APCF_AvailableSpaces |
1 อ็อกเท็ต | จำนวนรายการฟรีที่ยังคงมีอยู่ในตารางประเภทโฆษณา |
LE_APCF_Command: read_extended_features_sub_cmd
ใช้คำสั่งย่อยนี้เพื่ออ่านฟีเจอร์ APCF แบบขยาย
Sub OCF: 0xFF
| พารามิเตอร์คำสั่งย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
| ไม่เกี่ยวข้อง | พารามิเตอร์คำสั่งว่าง |
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
APCF_opcode |
1 อ็อกเท็ต | 0xFF - APCF_Read_Extended_Features |
APCF_extended_features |
2 อ็อกเท็ต |
มาสก์บิตสำหรับฟีเจอร์เพิ่มเติมที่รองรับมีดังนี้
ค่าของบิต
|
คำสั่งกิจกรรมของตัวควบคุมและข้อมูลพลังงาน
วัตถุประสงค์ของข้อมูลนี้คือเพื่อให้ฟังก์ชันระบบโฮสต์ระดับสูงวิเคราะห์กิจกรรมทั้งหมดของคอมโพเนนต์ทั้งหมด ซึ่งรวมถึงคอนโทรลเลอร์ BT และสถานะมาโครของคอนโทรลเลอร์ร่วมกับสิ่งที่เกิดขึ้นในแอปและเฟรมเวิร์ก หากต้องการทำเช่นนี้ คุณจะต้องมีข้อมูลต่อไปนี้ จากสแต็ก BT และคอนโทรลเลอร์
- สแต็ก BT: การรายงานสถานะการทำงานระดับมาโครปัจจุบันของ คอนโทรลเลอร์
- เฟิร์มแวร์: การรายงานข้อมูลกิจกรรมและพลังงานรวม
สถานะมาโครของสแต็กโฮสต์ BT ตามที่กำหนดที่ระดับผู้ใช้
- ไม่ได้ใช้งาน: [page scan, LE advt, inquiry scan, LE scan]
- สแกน: [paging/inquiry/trying to connect]
- ใช้งานอยู่: [ลิงก์ ACL เปิดอยู่ ลิงก์ SCO กำลังดำเนินการ โหมดดมกลิ่น]
กิจกรรมที่ตัวควบคุมติดตามตลอดอายุการใช้งาน ได้แก่ เวลา Tx เวลา Rx เวลาที่ไม่มีการใช้งาน และพลังงานทั้งหมดที่ใช้ไป ระบบจะล้างข้อมูลเมื่อ อ่านจากโฮสต์
LE_Get_Controller_Activity_Energy_Info
นี่คือคำสั่งเฉพาะของผู้ให้บริการ
OCF: 0x159
| พารามิเตอร์คำสั่งย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
| NA | พารามิเตอร์คำสั่งที่ว่างเปล่า |
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
total_tx_time_ms |
4 อ็อกเท็ต | เวลาทั้งหมดที่ใช้ในการทำธุรกรรม |
total_rx_time_ms |
4 อ็อกเท็ต | เวลาทั้งหมดที่ใช้ในการดำเนินการ Rx |
total_idle_time_ms |
4 อ็อกเท็ต | เวลาทั้งหมดในโหมดว่าง (สถานะใช้พลังงานต่ำที่ไม่ใช่การหลับ) |
total_energy_used |
4 อ็อกเท็ต | พลังงานทั้งหมดที่ใช้ [ผลคูณของกระแสไฟฟ้า (mA), แรงดันไฟฟ้า (V) และเวลา (ms)] |
คำสั่งพารามิเตอร์การสแกนชุดขยาย LE
คำสั่งนี้ใช้เพื่อเปิดใช้หน้าต่างการสแกนและช่วงเวลาที่ใหญ่ขึ้นใน คอนโทรลเลอร์ ตามข้อกำหนด BT Core 5.2 หน้าต่างการสแกนและ ช่วงเวลาจะมีขีดจำกัดสูงสุดที่ 10.24 วินาที ซึ่งจะขัดขวาง ช่วงเวลาการสแกนที่เกิน 10.24 วินาทีสำหรับแอป
การอ้างอิงพื้นฐาน: ข้อกําหนด BT Core 5.2 หน้า 2493 (คําสั่งพารามิเตอร์ LE Set Scan )
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 - Ignore advertisement packets from devices not in the White List Only list. ระบบจะไม่สนใจแพ็กเก็ตโฆษณาที่กำหนดเป้าหมายซึ่งไม่ได้ระบุไว้สำหรับ อุปกรณ์นี้ |
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
รับคำสั่งข้อมูลการแก้ไขข้อบกพร่องของตัวควบคุม
วัตถุประสงค์ขององค์ประกอบข้อมูลนี้คือการรับข้อมูลการแก้ไขข้อบกพร่องของตัวควบคุม จากโฮสต์ในรูปแบบไบนารีสำหรับการประมวลผลและการวิเคราะห์ภายหลัง ซึ่งจะช่วยแก้ไขข้อบกพร่องของปัญหาในฟิลด์และมอบชุดเครื่องมือให้วิศวกร เพื่อบันทึกข้อมูลสำหรับการวิเคราะห์ ผู้ควบคุมข้อมูลสามารถให้ข้อมูล เมื่อโฮสต์ขอผ่านเหตุการณ์ (เหตุการณ์ย่อยข้อมูลการแก้ไขข้อบกพร่องของผู้ควบคุมข้อมูล) หรือโดยอิสระเมื่อผู้ควบคุมข้อมูลต้องการ ตัวอย่างการใช้งานอาจรวมถึงการ รายงานข้อมูลสถานะเฟิร์มแวร์ ข้อมูลการทิ้งหน่วยความจำเมื่อเกิดข้อขัดข้อง ข้อมูลการบันทึก เป็นต้น
OCF: 0x15B
| พารามิเตอร์คำสั่ง | ขนาด | วัตถุประสงค์ |
|---|---|---|
| ไม่มี | รายการพารามิเตอร์คำสั่งที่ว่างเปล่า |
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
รองรับการลดภาระฮาร์ดแวร์ A2DP
ฟีเจอร์การส่งต่อ A2DP รองรับการส่งต่อกระบวนการเข้ารหัสเสียง A2DP ไปยังตัวประมวลผลเสียงที่เชื่อมต่อกับตัวควบคุม BT สตรีมข้อมูลเสียงที่เข้ารหัสจะส่งจากตัวประมวลผลเสียงไปยังตัวควบคุม BT โดยตรงโดยไม่ต้องผ่านโฮสต์ BT โฮสต์ BT ยังคง รับผิดชอบในการกำหนดค่าและควบคุมเซสชัน A2DP คำสั่งมี 2 เวอร์ชัน คำสั่งเดิมที่มี Sub OCF 0x01-0x02 รองรับเฉพาะตัวแปลงรหัสแบบโอเพนซอร์ส เวอร์ชันที่มี Sub-OCF 0x03-0x04 จะไม่ขึ้นอยู่กับตัวแปลงรหัสที่กำหนดค่าไว้
OCF: 0x15D
เริ่มการลดภาระ A2DP (เดิม)
Sub OCF: 0x01
ใช้คำสั่งนี้ทั้งเพื่อกำหนดค่ากระบวนการออฟโหลด A2DP และเพื่อเริ่ม สตรีม A2DP
| พารามิเตอร์คำสั่ง | ขนาด | วัตถุประสงค์ |
|---|---|---|
Codec |
4 อ็อกเท็ต |
ระบุประเภทตัวแปลงรหัส 0x01 - SBC 0x02 - AAC 0x04 - APTX 0x08 - APTX HD 0x10 - LDAC 0x20 - Opus |
Max_Latency |
2 อ็อกเท็ต | เวลาในการตอบสนองสูงสุดที่อนุญาต (เป็นมิลลิวินาที) ค่า 0 จะเป็นการปิดใช้การล้าง |
SCMS-T_Enable |
2 อ็อกเท็ต |
Octet 0: แฟล็กที่เปิดใช้การเพิ่มส่วนหัว SCMS-T
Octet 1: ค่าสำหรับส่วนหัว SCMS-T เมื่อเปิดใช้ |
Sampling_Frequency |
4 อ็อกเท็ต |
0x01 - 44100 Hz 0x02 - 48000 Hz 0x04 - 88200 Hz 0x08 - 96000 Hz |
Bits_Per_Sample |
1 อ็อกเท็ต |
0x01 - 16 บิตต่อตัวอย่าง 0x02 - 24 บิตต่อตัวอย่าง 0x04 - 32 บิตต่อตัวอย่าง |
Channel_Mode |
1 อ็อกเท็ต |
0x01 - โมโน 0x02 - สเตอริโอ |
Encoded_Audio_Bitrate |
4 อ็อกเท็ต |
อัตราบิตของเสียงที่เข้ารหัสในหน่วยบิตต่อวินาที 0x00000000 - ไม่ได้ระบุอัตราบิตของเสียง และไม่ได้ใช้ 0x00000001 - 0x00FFFFFF - อัตราบิตของเสียงที่เข้ารหัสในหน่วยบิตต่อวินาที 0x01000000 - 0xFFFFFFFF - สงวนไว้ |
Connection_Handle |
2 อ็อกเท็ต | Connection Handle ของการเชื่อมต่อ A2DP ที่กำลังกำหนดค่า |
L2CAP_Channel_ID |
2 อ็อกเท็ต | รหัสช่อง L2CAP ที่จะใช้สำหรับการเชื่อมต่อ A2DP นี้ |
L2CAP_MTU_Size |
2 อ็อกเท็ต | ขนาดสูงสุดของ L2CAP MTU ที่มีแพ็กเก็ตเสียงที่เข้ารหัส |
Codec_Information |
32 อ็อกเท็ต |
ข้อมูลเฉพาะของตัวแปลงรหัส
ตัวแปลงรหัส SBC:
ดูองค์ประกอบข้อมูลเฉพาะของตัวแปลงรหัส SBC ใน A2DP v1.3 ตัวแปลงรหัส AAC:
ดูองค์ประกอบข้อมูลเฉพาะของตัวแปลงรหัส AAC ใน A2DP v1.3 ตัวแปลงสัญญาณ LDAC:
Octet 0-3: รหัสผู้ให้บริการ
อ็อกเท็ต 4-5: รหัสตัวแปลงรหัส
Octet 6: ดัชนีอัตราบิต:
Octet 7: โหมดช่อง LDAC Octet 8-31: reserved ตัวแปลงรหัส Opus:
Octet 0-3: รหัสผู้ให้บริการ
อ็อกเท็ต 4-5: รหัสตัวแปลงรหัส Octet 6-31: reserved ตัวแปลงรหัสอื่นๆ ทั้งหมด: อ็อกเท็ต 0-31: สงวนไว้ |
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
Sub_Opcode |
1 อ็อกเท็ต | 0x01 - เริ่มการลดภาระ A2DP |
เริ่มการลดภาระ A2DP
Sub OCF: 0x03
ใช้คำสั่งนี้ทั้งเพื่อกำหนดค่ากระบวนการออฟโหลด A2DP และเพื่อเริ่ม สตรีม A2DP
| พารามิเตอร์คำสั่ง | ขนาด | วัตถุประสงค์ |
|---|---|---|
Connection Handle |
2 อ็อกเท็ต | แฮนเดิลของการเชื่อมต่อ HCI ที่ใช้งานอยู่ |
L2CAP_Channel_ID |
2 อ็อกเท็ต | ตัวระบุของช่อง L2CAP ที่เปิดสำหรับการสตรีม A2DP |
Data_Path_Direction |
1 อ็อกเท็ต |
0x00 - เอาต์พุต (AVDTP Source/Merge) 0x01 - อินพุต (AVDTP Sink/Split) |
Peer_MTU |
2 อ็อกเท็ต | ขนาดสูงสุดของแพ็กเก็ต L2CAP ที่เจรจาต่อรองกับเพียร์ |
CP_Enable_SCMS_T |
1 อ็อกเท็ต |
0x00 - ปิดใช้ส่วนหัวการป้องกันเนื้อหา SCMS-T 0x01 - เปิดใช้ส่วนหัวการป้องกันเนื้อหา SCMS-T |
CP_Header_SCMS_T |
1 อ็อกเท็ต |
เมื่อเปิดใช้ส่วนหัวการป้องกันเนื้อหา SCMS-T (CP_SCMS_T_Enable
ตั้งค่าเป็น 0x01) จะกำหนดค่าส่วนหัวที่อยู่ก่อนเนื้อหาเสียง (ดู
A2DP ส่วนที่ 3.2.1-2) ตามที่กำหนดโดยหมายเลขที่กำหนดของบลูทูธ ส่วนที่
6.3.2จะไม่สนใจเมื่อไม่ได้เปิดใช้การป้องกันเนื้อหา SCMS-T |
Vendor_Specific_Parameters_Length |
1 อ็อกเท็ต |
ความยาวของพารามิเตอร์เฉพาะผู้ให้บริการในช่วง 0-128 ระบบจะใช้ค่า 0 เมื่อไม่ได้ระบุพารามิเตอร์เพิ่มเติม |
Vendor_Specific_Parameters |
0-128 อ็อกเทต |
พารามิเตอร์เฉพาะของผู้ให้บริการที่จัดทำโดย Bluetooth Audio HAL
CodecParameters.vendorSpecificParameters[]
|
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
Sub_Opcode |
1 อ็อกเท็ต | 0x03 - เริ่มการลดภาระ A2DP |
หยุดการลดภาระ A2DP (เดิม)
Sub OCF: 0x02
คำสั่งนี้ใช้เพื่อหยุดสตรีมการออฟโหลด A2DP
| พารามิเตอร์คำสั่ง | ขนาด | วัตถุประสงค์ |
|---|---|---|
| ไม่มี | รายการพารามิเตอร์คำสั่งว่างเปล่า |
ไม่ได้กำหนดพารามิเตอร์สำหรับคำสั่งนี้
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
Sub_Opcode |
1 อ็อกเท็ต | 0x02 - หยุดการลดภาระ A2DP |
หยุดการลดภาระ A2DP
Sub OCF: 0x04
คำสั่งนี้ใช้เพื่อหยุดสตรีมการออฟโหลด A2DP
| พารามิเตอร์คำสั่ง | ขนาด | วัตถุประสงค์ |
|---|---|---|
Connection Handle |
2 อ็อกเท็ต | แฮนเดิลของการเชื่อมต่อ HCI ที่ใช้งานอยู่ |
L2CAP_Channel_ID |
2 อ็อกเท็ต | ตัวระบุของช่อง L2CAP ที่เปิดสำหรับการสตรีม A2DP |
Data_Path_Direction |
1 อ็อกเท็ต |
0x00 - เอาต์พุต (AVDTP Source/Merge) 0x01 - อินพุต (AVDTP Sink/Split) |
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
Sub_Opcode |
1 อ็อกเท็ต | 0x04 - หยุดการลดภาระ A2DP |
คำสั่งรายงานคุณภาพบลูทูธ
ฟีเจอร์คำสั่งรายงานคุณภาพ BT จะเริ่มกลไกใน ตัวควบคุมบลูทูธเพื่อรายงานเหตุการณ์คุณภาพบลูทูธไปยังโฮสต์ คุณ เปิดใช้ตัวเลือกได้ 4 รายการ ดังนี้
- โหมดการตรวจสอบคุณภาพ: ตัวควบคุมจะส่งเหตุการณ์ย่อย BQR ที่เกี่ยวข้องกับคุณภาพของลิงก์ไปยังโฮสต์เป็นระยะๆ
- ใกล้ถึง LSTO: หากไม่ได้รับแพ็กเก็ตจากอุปกรณ์ BT ที่เชื่อมต่อเป็นเวลานานกว่าครึ่งหนึ่งของค่า Link Supervision TimeOut (LSTO) คอนโทรลเลอร์จะรายงานเหตุการณ์ Approaching LSTO ไปยังโฮสต์
- เสียง A2DP ตะกุกตะกัก: เมื่อตัวควบคุมตรวจพบปัจจัยที่ทำให้เสียงตะกุกตะกัก ตัวควบคุมจะรายงานเหตุการณ์เสียง A2DP ตะกุกตะกักไปยังโฮสต์
- (จ) เสียง (e)SCO ขาดๆ หายๆ: เมื่อตัวควบคุมตรวจพบปัจจัยที่ทำให้เสียงขาดๆ หายๆ ตัวควบคุมจะรายงานเหตุการณ์เสียง (e)SCO ขาดๆ หายๆ ไปยังโฮสต์
- Root Inflammation: คอนโทรลเลอร์จะส่งเหตุการณ์นี้ไปยังสแต็ก เมื่อ HAL หรือคอนโทรลเลอร์พบข้อผิดพลาดร้ายแรงและต้อง รีสตาร์ทบลูทูธ
- การติดตามข้อความ LMP/LL: คอนโทรลเลอร์จะส่งข้อความ LMP/LL การแฮนด์เชคกับอุปกรณ์ระยะไกลไปยังโฮสต์
- การติดตามการจัดกำหนดการแบบหลายโปรไฟล์/การทำงานร่วมกันของบลูทูธ: คอนโทรลเลอร์จะส่ง ข้อมูลการจัดกำหนดการเกี่ยวกับการจัดการโปรไฟล์บลูทูธหลายรายการและ การทำงานร่วมกันแบบไร้สายในย่านความถี่ 2.4 GHz ไปยังโฮสต์
- กลไกข้อมูลการแก้ไขข้อบกพร่องของตัวควบคุม: เมื่อเปิดใช้ ตัวควบคุมจะรายงานข้อมูลการบันทึกการแก้ไขข้อบกพร่องโดยอัตโนมัติผ่านเหตุการณ์ย่อยข้อมูลการแก้ไขข้อบกพร่องของตัวควบคุมไปยังโฮสต์
- LE Audio Choppy: เมื่อตัวควบคุมตรวจพบปัจจัยที่ทำให้เสียงขาดหาย ตัวควบคุมจะรายงานเหตุการณ์ LE Audio Choppy ไปยังโฮสต์
-
โหมดสถิติ RF ขั้นสูง: คอนโทรลเลอร์จะรายงานสถิติ RF ที่เกี่ยวข้อง
ให้กับโฮสต์ โดยรองรับกรณีการใช้งานการรายงาน 2 กรณีต่อไปนี้
- รายงานเป็นระยะ
- ทริกเกอร์เหตุการณ์ (ทริกเกอร์เหตุการณ์เริ่ม/หยุดสตรีมและคุณภาพลิงก์)
- กลไกการตรวจสอบสถานะของตัวควบคุมจะให้ข้อมูลที่เกี่ยวข้องกับสถานะแก่โฮสต์ ผ่านเหตุการณ์ 2 ประเภท ได้แก่ รายงานเป็นระยะและรายงานที่ทริกเกอร์ด้วยเหตุการณ์
- BQR_Report_Action ของคำสั่งรายงานคุณภาพบลูทูธ: โฮสต์สามารถ ใช้คำสั่ง HCI นี้เพื่อรับการค้นหาแบบครั้งเดียวสำหรับโหมดการตรวจสอบคุณภาพ โหมดการตรวจสอบพลังงาน หรือโหมดสถิติ RF ขั้นสูง
OCF: 0x15E
| พารามิเตอร์คำสั่ง | ขนาด | วัตถุประสงค์ |
|---|---|---|
BQR_Report_Action |
1 อ็อกเท็ต |
การดำเนินการเพื่อเพิ่ม / ลบการรายงานเหตุการณ์คุณภาพที่ตั้งค่าไว้ใน
พารามิเตอร์ BQR_Quality_Event_Mask หรือล้างทั้งหมด
0x00 - เพิ่ม
การลบจะล้างการรายงานเหตุการณ์ด้านคุณภาพที่เฉพาะเจาะจง |
BQR_Quality_Event_Mask |
4 อ็อกเท็ต |
บิตมาสก์สำหรับการรายงานเหตุการณ์ด้านคุณภาพที่เลือก
บิต 0: ตั้งค่าเพื่อเปิดใช้โหมดการตรวจสอบคุณภาพ |
BQR_Minimum_Report_Interval |
2 อ็อกเท็ต |
กำหนดช่วงเวลาขั้นต่ำของการรายงานเหตุการณ์ด้านคุณภาพสำหรับ
เหตุการณ์ด้านคุณภาพที่เลือก เฟิร์มแวร์ของคอนโทรลเลอร์ไม่ควรรายงาน
เหตุการณ์ถัดไปภายในช่วงเวลาที่กำหนด การตั้งค่าช่วงเวลา
ต้องเป็นไปตามและเฉพาะสำหรับเหตุการณ์ด้านคุณภาพที่
กำลังเพิ่ม
หน่วย: มิลลิวินาที |
BQR_Vendor_Specific_Quality_Event_Mask |
4 อ็อกเท็ต |
บิตมาสก์สําหรับการรายงานเหตุการณ์ด้านคุณภาพที่เฉพาะเจาะจงของผู้ให้บริการที่เลือก พารามิเตอร์นี้จะใช้ได้ก็ต่อเมื่อตั้งค่าบิตที่ 15 ของ BQR_Quality_Event_Mask
บิตที่ 0 ~ 31: สงวนไว้ |
BQR_Vendor_Specific_Trace_Mask |
4 อ็อกเท็ต |
บิตมาสก์สำหรับการรายงานการติดตามที่เฉพาะเจาะจงของผู้ให้บริการที่เลือก พารามิเตอร์นี้จะใช้ได้ก็ต่อเมื่อตั้งค่าบิตที่ 31 ของ BQR_Quality_Event_Mask
บิตที่ 0 ~ 31: สงวนไว้ |
Report_interval_multiple |
4 อ็อกเท็ต |
ตัวคูณสำหรับ BQR_Minimum_Report_Interval เมื่อค่านี้ >= 1
ช่วงเวลารายงาน BQR จะเป็นไปตามรูปแบบ ช่วงเวลารายงาน BQR = BQR_Minimum_Report_Interval x Report_interval_multiple เฟิร์มแวร์ของคอนโทรลเลอร์ต้องไม่รายงานเหตุการณ์ถัดไปภายในช่วงเวลาที่กำหนด การตั้งค่าช่วงเวลาจะใช้เฉพาะกับเหตุการณ์ที่มีคุณภาพที่เพิ่มเข้ามา
หน่วย: มิลลิวินาที BQR_Report_Interval มากกว่าความสามารถ
ของคอนโทรลเลอร์ คอนโทรลเลอร์ต้องแสดงเวลา BQR_Report_Interval
สูงสุดเมื่อคำสั่งเสร็จสมบูรณ์
|
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
Current_Quality_Event_Mask |
4 อ็อกเท็ต |
ระบุการตั้งค่าบิตมาสก์ปัจจุบัน บิตที่ 0: เปิดใช้โหมดการตรวจสอบคุณภาพ บิตที่ 1: เปิดใช้การรายงานเหตุการณ์ LSTO ที่กำลังจะเกิดขึ้น บิตที่ 2: เปิดใช้การรายงานเหตุการณ์เสียง A2DP ขาดๆ หายๆ บิตที่ 3: เปิดใช้การรายงานเหตุการณ์เสียง (e)SCO ขาดๆ หายๆ บิตที่ 4: เปิดใช้การรายงานเหตุการณ์การอักเสบของราก บิตที่ 5: เปิดใช้โหมดการตรวจสอบพลังงาน บิตที่ 6: เปิดใช้การรายงานเหตุการณ์เสียง LE ขาดๆ หายๆ บิตที่ 7: เหตุการณ์การเชื่อมต่อล้มเหลว บิตที่ 8: ตั้งค่าเพื่อเปิดใช้ทริกเกอร์เหตุการณ์โหมดสถิติ RF ขั้นสูง บิตที่ 9: ตั้งค่าเพื่อเปิดใช้การรายงานสถิติ RF ขั้นสูงเป็นระยะๆ บิตที่ 10: ตั้งค่าเป็นทริกเกอร์เหตุการณ์กลไกการตรวจสอบสถานะของตัวควบคุมที่เปิดใช้ บิตที่ 11: ตั้งค่าเป็นเปิดใช้กลไกการตรวจสอบสถานะของตัวควบคุมเพื่อรายงานเป็นระยะ บิต 12 ~ 14: สงวนไว้ บิตที่ 15: เปิดใช้การรายงานเหตุการณ์คุณภาพเฉพาะผู้ให้บริการ บิตที่ 16: เปิดใช้การติดตามข้อความ LMP/LL บิตที่ 17: เปิดใช้การติดตามการจัดกำหนดการแบบหลายลิงก์/การทำงานร่วมกันของบลูทูธ บิตที่ 18: เปิดใช้กลไกข้อมูลการแก้ไขข้อบกพร่องของตัวควบคุม บิตที่ 19: สงวนไว้สำหรับข้อมูลการแก้ไขข้อบกพร่องในการออฟโหลด บิตที่ 20: ทริกเกอร์เหตุการณ์การดัมพ์ประวัติ UART บิตที่ 21 ~ 30: สงวนไว้ บิต 31: เปิดใช้การติดตามที่เฉพาะเจาะจงผู้ให้บริการ |
Current_Vendor_Specific_Quality_Event_Mask |
4 อ็อกเท็ต | ระบุการตั้งค่าบิตมาสก์ปัจจุบัน |
Current_Vendor_Specific_Trace_Mask |
4 อ็อกเท็ต | ระบุการตั้งค่าบิตมาสก์ปัจจุบัน |
BQR_Report_interval |
4 อ็อกเท็ต | ระบุการตั้งค่าบิตมาสก์ปัจจุบัน |
Current_Vendor_Specific_Trace_Mask |
4 อ็อกเท็ต |
การตั้งค่าของ BQR_Report_interval โดยต้องเป็นค่าต่ำสุดระหว่าง
BQR_Minimum_Report_Interval * Report_interval_multiple หรือช่วงเวลาสูงสุดที่รองรับของ
คอนโทรลเลอร์ |
คำสั่งบัฟเฟอร์เสียงแบบไดนามิก
บัฟเฟอร์เสียงแบบไดนามิกช่วยลดอาการเสียงกระตุกโดยการเปลี่ยนขนาดบัฟเฟอร์เสียงในตัวควบคุมบลูทูธตามสถานการณ์ต่างๆ
OCF: 0x15F
รับความสามารถในการใช้ระยะบัฟเฟอร์ของเสียง
Sub OCF: 0x01
ใช้คำสั่งนี้เพื่อรับความสามารถของเวลาบัฟเฟอร์เสียงจาก ตัวควบคุมบลูทูธ
| พารามิเตอร์คำสั่ง | ขนาด | วัตถุประสงค์ |
|---|---|---|
| ไม่มี | รายการพารามิเตอร์คำสั่งที่ว่างเปล่า |
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
Dynamic_Audio_Buffer_opcode |
1 อ็อกเท็ต | 0x01 - รับระยะบัฟเฟอร์ของเสียง |
Audio_Codec_Type_Supported |
4 อ็อกเท็ต |
บิตมาสก์สำหรับประเภทตัวแปลงรหัสที่รองรับ บิต 0 - SBC บิต 1 - AAC บิต 2 - APTX บิต 3 - APTX HD บิต 4 - LDAC บิต 5-31 สงวนไว้ |
Audio_Codec_Buffer_Default_Time_For_Bit_0 |
2 อ็อกเท็ต |
เวลาบัฟเฟอร์เริ่มต้นของประเภทตัวแปลงรหัส Bit 0 ที่ระบุใน
Audio_Codec_Type_Supported ค่านี้ต้องเป็น 0 หากไม่รองรับประเภทตัวแปลงรหัสบิต 0 หน่วย: มิลลิวินาที |
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 |
2 อ็อกเท็ต |
เวลาบัฟเฟอร์สูงสุดของประเภทตัวแปลงรหัส Bit 0 ที่ระบุใน
Audio_Codec_Type_Supported ค่านี้ต้องเป็น 0 หากไม่รองรับประเภทตัวแปลงรหัสบิต 0 หน่วย: มิลลิวินาที |
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 |
2 อ็อกเท็ต |
เวลาบัฟเฟอร์ขั้นต่ำของประเภทตัวแปลงรหัส Bit 0 ที่ระบุใน
Audio_Codec_Type_Supported ค่านี้ต้องเป็น 0 หากไม่รองรับประเภทตัวแปลงรหัสบิต 0 หน่วย: มิลลิวินาที |
Audio_Codec_Buffer_Default_Time_For_Bit_1 |
2 อ็อกเท็ต |
เวลาบัฟเฟอร์เริ่มต้นของประเภทตัวแปลงรหัส Bit 1 ที่ระบุใน
Audio_Codec_Type_Supported ค่านี้ต้องเป็น 0 หากไม่รองรับประเภทตัวแปลงรหัส Bit 1 หน่วย: มิลลิวินาที |
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 |
2 อ็อกเท็ต |
เวลาบัฟเฟอร์สูงสุดของประเภทตัวแปลงรหัส Bit 1 ที่ระบุใน
Audio_Codec_Type_Supported ค่านี้ต้องเป็น 0 หากไม่รองรับประเภทตัวแปลงรหัส Bit 1 หน่วย: มิลลิวินาที |
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 |
2 อ็อกเท็ต |
เวลาบัฟเฟอร์ขั้นต่ำของประเภทตัวแปลงรหัส Bit 1 ที่ระบุใน
Audio_Codec_Type_Supported ค่านี้ต้องเป็น 0 หากไม่รองรับประเภทตัวแปลงรหัส Bit 1 หน่วย: มิลลิวินาที |
| ...... | ...... | ...... |
Audio_Codec_Buffer_Default_Time_For_Bit_31 |
2 อ็อกเท็ต |
เวลาบัฟเฟอร์เริ่มต้นของประเภทตัวแปลงรหัส Bit 31 ที่ระบุใน
Audio_Codec_Type_Supported ค่านี้ต้องเป็น 0 หากไม่รองรับประเภทตัวแปลงรหัสบิต 31 หน่วย: มิลลิวินาที |
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 |
2 อ็อกเท็ต |
เวลาบัฟเฟอร์สูงสุดของประเภทตัวแปลงรหัส Bit 31 ที่ระบุใน
Audio_Codec_Type_Supported ค่านี้ต้องเป็น 0 หากไม่รองรับประเภทตัวแปลงรหัสบิต 31 หน่วย: มิลลิวินาที |
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 |
2 อ็อกเท็ต |
เวลาบัฟเฟอร์ขั้นต่ำของประเภทตัวแปลงรหัส Bit 31 ที่ระบุใน
Audio_Codec_Type_Supported ค่านี้ต้องเป็น 0 หากไม่รองรับประเภทตัวแปลงรหัสบิต 31 หน่วย: มิลลิวินาที |
ตั้งเวลาบัฟเฟอร์เสียง
Sub OCF: 0x02
ใช้คำสั่งนี้เพื่อตั้งค่าเวลาบัฟเฟอร์เสียงเป็นตัวควบคุมบลูทูธ
| พารามิเตอร์คำสั่ง | ขนาด | วัตถุประสงค์ |
|---|---|---|
Audio_Codec_Buffer_Time |
2 อ็อกเท็ต |
เวลาบัฟเฟอร์เสียงที่ขอสำหรับตัวแปลงรหัสที่ใช้ในปัจจุบัน หน่วย: มิลลิวินาที |
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
Dynamic_Audio_Buffer_opcode |
1 อ็อกเท็ต | 0x02 - ตั้งค่าระยะบัฟเฟอร์ของเสียง |
Audio_Codec_Buffer_Time |
2 อ็อกเท็ต |
เวลาบัฟเฟอร์เสียงปัจจุบันในตัวควบคุมบลูทูธ หน่วย: มิลลิวินาที |
เหตุการณ์ HCI (เฉพาะผู้ให้บริการ)
ในบางกรณี คุณจะต้องใช้เหตุการณ์ HCI เฉพาะของผู้ให้บริการ ดูรูปที่ 5.4 ในหน้า 1897 ของข้อกำหนด BT Core 5.2 พารามิเตอร์เหตุการณ์ 0 จะ มีรหัสเหตุการณ์ย่อยแรกเสมอ ซึ่งเป็นรหัสที่ใช้ในการถอดรหัสส่วนที่เหลือของ เหตุการณ์ HCI
| พารามิเตอร์เหตุการณ์ | ขนาด | วัตถุประสงค์ |
|---|---|---|
HCI_vendor_specific_event_code |
1 อ็อกเท็ต | 0xFF |
sub_event_code |
1 อ็อกเท็ต | รหัสเหตุการณ์ย่อยจะมีขนาด 1 อ็อกเท็ต โดยไบต์จะอยู่ต่อจากความยาวของพารามิเตอร์ในแพ็กเก็ตเหตุการณ์ HCI ทันที |
เหตุการณ์ย่อยการละเมิดเกณฑ์พื้นที่เก็บข้อมูล
เหตุการณ์นี้บ่งชี้ว่ามีการละเมิดเกณฑ์พื้นที่เก็บข้อมูล
รหัสเหตุการณ์ย่อย = 0x54
| พารามิเตอร์เหตุการณ์ย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
| ไม่มี |
เหตุการณ์ย่อยการเปลี่ยนแปลงสถานะการโฆษณาหลายรายการของ LE
เหตุการณ์นี้บ่งชี้ว่าอินสแตนซ์การโฆษณาได้เปลี่ยนสถานะแล้ว ในขณะนี้ ระบบจะใช้เหตุการณ์นี้เพื่อระบุเฉพาะอินสแตนซ์การโฆษณาที่หยุดเนื่องจากการเชื่อมต่อ
รหัสเหตุการณ์ย่อย = 0x55
| พารามิเตอร์เหตุการณ์ย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
Advertising_instance |
1 อ็อกเท็ต |
ระบุอินสแตนซ์การโฆษณาที่เฉพาะเจาะจง ค่าที่ใช้ได้คือ 0 ถึง max_advt_instances-1
|
State_Change_Reason |
1 อ็อกเท็ต | 0x00: ได้รับการเชื่อมต่อแล้ว |
Connection_handle |
2 อ็อกเท็ต |
ระบุการเชื่อมต่อที่ทำให้ปิดใช้advtอินสแตนซ์ (0xFFFF หากไม่ถูกต้อง)
|
เหตุการณ์ย่อยการติดตามโฆษณา LE
เหตุการณ์นี้จะระบุเมื่อพบหรือสูญเสียผู้ลงโฆษณา
รหัสเหตุการณ์ย่อย = 0x56
| พารามิเตอร์เหตุการณ์ย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
APCF_Filter_Index |
1 อ็อกเท็ต | ดัชนีตัวกรอง (0, max_filter-1) |
Advertiser_State |
1 อ็อกเท็ต |
0x00: พบผู้ลงโฆษณา 0x01: ไม่พบผู้ลงโฆษณา |
Advt_Info_Present |
1 อ็อกเท็ต |
0x00: มีข้อมูลผู้ลงโฆษณา (Advt_Info)0x01: ไม่มีข้อมูลผู้ลงโฆษณา ( Advt_Info)
|
Advertiser_Address |
6 อ็อกเท็ต | ที่อยู่สาธารณะหรือแบบสุ่ม |
Advertiser_Address_Type |
1 อ็อกเท็ต |
0x00: ที่อยู่สาธารณะ 0x01: ที่อยู่แบบสุ่ม |
Advt_Info |
Tx_Pwr[0]: 1 อ็อกเทตRSSI[0]: 1 อ็อกเทตTimestamp[0]: 2 อ็อกเทตAdv packet_len[0]: 1 อ็อกเทตAdv_packet[0]: Adv_packet_len อ็อกเทตScan_data_resp_len[0]: 1 อ็อกเทตScan_data_resp[0]: Scan_data_resp อ็อกเทต
|
เหตุการณ์ย่อยของข้อมูลการแก้ไขข้อบกพร่องของตัวควบคุม
เหตุการณ์นี้ใช้โดยตัวควบคุมเพื่อระบุข้อมูลการแก้ไขข้อบกพร่องแบบไบนารีให้กับโฮสต์
รหัสเหตุการณ์ย่อย = 0x57
| พารามิเตอร์เหตุการณ์ย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
debug_block_byte_offset_start |
2 อ็อกเท็ต | แก้ไขข้อบกพร่องของออฟเซ็ตไบต์ของบล็อกตั้งแต่เริ่มต้น |
last_block |
1 อ็อกเท็ต |
0x00: มีข้อมูลการแก้ไขข้อบกพร่องเพิ่มเติม 0x01: บล็อกไบนารีสุดท้าย ไม่มีข้อมูลการแก้ไขข้อบกพร่องเพิ่มเติม |
cur_pay_load_sz |
2 อ็อกเท็ต | ขนาดบล็อกไบนารีในเหตุการณ์ปัจจุบัน |
Debug_Data |
ตัวแปร | ข้อมูลการแก้ไขข้อบกพร่องของ cur_payload_sz |
เหตุการณ์ย่อยของรายงานคุณภาพบลูทูธ
เหตุการณ์นี้บ่งบอกถึงสิ่งต่อไปนี้อย่างใดอย่างหนึ่ง เหตุการณ์คุณภาพบลูทูธ เกิดขึ้น, คอนโทรลเลอร์อัปโหลดการติดตามข้อความ LMP/LL และการติดตามการจัดกำหนดการ แบบหลายลิงก์/การทำงานร่วมกันของบลูทูธ หรือคอนโทรลเลอร์ทิ้งข้อมูลการแก้ไขข้อบกพร่อง
รหัสเหตุการณ์ย่อย = 0x58 [Quality_Report_Id = 0x01 ~ 0x04, เหตุการณ์ที่เกี่ยวข้องกับคุณภาพลิงก์]
| พารามิเตอร์เหตุการณ์ย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
Quality_Report_Id |
1 อ็อกเท็ต |
0x01: การรายงานคุณภาพในโหมดการตรวจสอบ 0x02: Approaching LSTO. 0x03: เสียง A2DP ขาดๆ หายๆ 0x04: (e)SCO Voice Choppy 0x05 ~ 0x06: จองไว้ 0x07: เสียง LE ขาดๆ หายๆ 0x08: เชื่อมต่อไม่สำเร็จ 0x09 ~ 0xFF: สงวนไว้ |
Packet_Types |
1 อ็อกเท็ต |
0x01: ID 0x02: NULL 0x03: POLL 0x04: FHS 0x05: HV1 0x06: HV2 0x07: HV3 0x08: DV 0x09: EV3 0x0A: EV4 0x0B: EV5 0x0C: 2-EV3 0x0D: 2-EV5 0x0E: 3-EV3 0x0F: 3-EV5 0x10: DM1 0x11: DH1 0x12: DM3 0x13: DH3 0x14: DM5 0x15: DH5 0x16: AUX1 0x17: 2-DH1 0x18: 2-DH3 0x19: 2-DH5 0x1A: 3-DH1 0x1B: 3-DH3 0x1C: 3-DH5 0x1D ~ 0x50: Reserved 0x51: ISO packet 0x52: 1M PHY 0x53: 2M PHY 0x54: Codec PHY S=2 0x55: Codec PHY S=8 0x56 ~ 0xFF: Reserved |
Connection_Handle |
2 อ็อกเท็ต | แฮนเดิลการเชื่อมต่อ ACL/(e)SCO/ISO |
Connection_Role |
1 อ็อกเท็ต |
บทบาทในการเชื่อมต่อ 0x00: กลาง 0x01: อุปกรณ์ต่อพ่วง 0x02 ~ 0xFF: สงวนไว้ |
TX_Power_Level |
1 อ็อกเท็ต |
ระดับกำลังส่งปัจจุบันสำหรับ Connection_Handle ที่ระบุ
ค่านี้ต้องเหมือนกับค่าที่ตัวควบคุมตอบสนองต่อคำสั่ง HCI_Read_Transmit_Power_Level HCI |
RSSI |
1 อ็อกเท็ต |
[ในหน่วย dBm]
ค่าการบ่งชี้ความแรงของสัญญาณที่ได้รับ (RSSI) สำหรับ
Connection_Handle ที่ระบุ |
SNR |
1 อ็อกเท็ต |
[ในหน่วย dB]
ค่าอัตราส่วนสัญญาณต่อสัญญาณรบกวน (SNR) สำหรับ
Connection_Handle ที่ระบุ |
Unused_AFH_Channel_Count |
1 อ็อกเท็ต |
ระบุจำนวนช่องที่ไม่ได้ใช้ใน AFH_channel_map 0x4F ~ 0xFF: สงวนไว้ |
AFH_Select_Unideal_Channel_Count |
1 อ็อกเท็ต |
ระบุจำนวนช่องที่ถูกรบกวนและมีคุณภาพไม่ดี
แต่ยังคงได้รับเลือกสำหรับ AFH ข้อกำหนดของบลูทูธอนุญาตให้ใช้ช่องอย่างน้อย 20 ช่อง ดังนั้นแม้ว่าช่องทั้ง 79 ช่องจะถูกรบกวนและมีคุณภาพไม่ดี แต่ตัวควบคุมก็ยังต้องเลือกช่องอย่างน้อย 20 ช่องสำหรับ AFH |
LSTO |
2 อ็อกเท็ต |
การตั้งค่าการหมดเวลาของการควบคุมดูแลลิงก์ปัจจุบัน เวลา = N * 0.625 มิลลิวินาที ช่วงเวลา: 0.625 มิลลิวินาทีถึง 40.9 วินาที |
Connection_Piconet_Clock |
4 อ็อกเท็ต |
Piconet Clock สำหรับ Connection_Handle ที่ระบุ ค่านี้ต้องเหมือนกับค่าที่ตัวควบคุมตอบกลับ คำสั่ง HCI_Read_Clock HCI ที่มีพารามิเตอร์ "Which_Clock" เป็น 0x01 (Piconet Clock) หน่วย: N * 0.3125 มิลลิวินาที (1 นาฬิกาบลูทูธ) |
Retransmission_Count |
4 อ็อกเท็ต |
จำนวนการส่งซ้ำตั้งแต่เหตุการณ์ล่าสุด ระบบจะรีเซ็ตจำนวนนี้หลังจากรายงานไปยังโฮสต์ |
No_RX_Count |
4 อ็อกเท็ต |
ไม่มีการนับ RX ตั้งแต่เหตุการณ์ล่าสุด จำนวนจะเพิ่มขึ้นเมื่อไม่ได้รับแพ็กเก็ตตามช่วงเวลาที่กำหนด หรือแพ็กเก็ตที่ได้รับเสียหาย ระบบจะรีเซ็ตจำนวนนี้หลังจากรายงานไปยังโฮสต์ |
NAK_Count |
4 อ็อกเท็ต |
จำนวน NAK (การรับทราบเชิงลบ) ตั้งแต่เหตุการณ์ล่าสุด ระบบจะรีเซ็ตจำนวนนี้หลังจากรายงานไปยังโฮสต์ |
Last_TX_ACK_Timestamp |
4 อ็อกเท็ต |
การประทับเวลาของ ACK การส่งครั้งล่าสุด โดยจะอิงตามนาฬิกาบลูทูธของ
ส่วนกลางของพิโคเน็ต (CLK) หน่วย: N * 0.3125 มิลลิวินาที (1 นาฬิกาบลูทูธ) |
Flow_Off_Count |
4 อ็อกเท็ต |
จํานวนครั้งที่ตัวควบคุมได้รับ Flow-off (STOP) ตั้งแต่
เหตุการณ์ล่าสุด ระบบจะรีเซ็ตจำนวนนี้หลังจากรายงานไปยังโฮสต์ |
Last_Flow_On_Timestamp |
4 อ็อกเท็ต |
การประทับเวลาของการส่งต่อครั้งล่าสุด (GO) โดยจะอิงตามนาฬิกาบลูทูธของ
ส่วนกลางของพิโคเน็ต (CLK) หน่วย: N * 0.3125 มิลลิวินาที (1 นาฬิกาบลูทูธ) |
Buffer_Overflow_Bytes |
4 อ็อกเท็ต |
[เป็นไบต์]
จำนวนการล้นบัฟเฟอร์ตั้งแต่เหตุการณ์ล่าสุด |
Buffer_Underflow_Bytes |
4 อ็อกเท็ต |
[เป็นไบต์]
จำนวนการไหลออกของบัฟเฟอร์ตั้งแต่เหตุการณ์ล่าสุด |
bdaddr |
6 อ็อกเท็ต | ที่อยู่อุปกรณ์ระยะไกล |
cal_failed_item_count |
1 อ็อกเท็ต | จำนวนรายการที่ปรับไม่สำเร็จ |
TX_Total_Packets |
4 อ็อกเท็ต | จำนวนแพ็กเก็ตที่ส่งออก |
TX_UnAcked_Packets |
4 อ็อกเท็ต |
จำนวนแพ็กเกตที่ไม่ได้รับการรับทราบ ระบบจะรีเซ็ตจำนวนนี้หลังจากรายงานไปยังโฮสต์ |
TX_Flushed_Packets |
4 อ็อกเท็ต |
จำนวนแพ็กเกตที่ไม่ได้ส่งออกโดยจุดล้างข้อมูล ระบบจะรีเซ็ตจำนวนนี้หลังจากรายงานไปยังโฮสต์ |
TX_Last_Subevent_Packets |
4 อ็อกเท็ต |
จำนวนแพ็กเก็ตที่เลเยอร์ลิงก์ส่ง PDU ข้อมูล CIS ในเหตุการณ์ย่อยสุดท้ายของเหตุการณ์ CIS ระบบจะรีเซ็ตจำนวนนี้หลังจากรายงานไปยังโฮสต์ ค่าจะเป็น 0 หากไม่มีค่าที่ถูกต้องสำหรับลิงก์ |
CRC_Error_Packets |
4 อ็อกเท็ต |
จำนวนแพ็กเกจที่ได้รับซึ่งมีข้อผิดพลาด CRC ตั้งแต่เหตุการณ์ล่าสุด ระบบจะรีเซ็ตจำนวนนี้หลังจากรายงานไปยังโฮสต์ |
RX_Duplicate_Packets |
4 อ็อกเท็ต |
จำนวนแพ็กเก็ตที่ซ้ำกัน (ส่งซ้ำ) ที่ได้รับตั้งแต่เหตุการณ์ล่าสุด ระบบจะรีเซ็ตจำนวนนี้หลังจากรายงานไปยังโฮสต์ |
RX_Unreceived_Packets |
4 อ็อกเท็ต |
จำนวนแพ็กเกตที่ไม่ได้รับจะเหมือนกับพารามิเตอร์ของคำสั่ง LE READ ISO Link
Quality (ดูข้อกำหนดหลักของบลูทูธเวอร์ชัน 5.4) สตรีมที่เกี่ยวข้อง
คือ CIS และ BIS เมื่อเพิ่มค่านี้ เลเยอร์ลิงก์จะไม่ได้รับเพย์โหลดที่เฉพาะเจาะจงตามจุดล้างข้อมูล (ใน CIS) หรือเมื่อสิ้นสุดเหตุการณ์ที่เชื่อมโยง (ใน BIS ดูข้อกำหนดหลักของบลูทูธเวอร์ชัน 5.4 เล่ม 6 ส่วน B ส่วนที่ 4.4.6.6) |
Coex_Info_Mask |
2 อ็อกเท็ต |
บิต 0 - CoexInvolvement: ตั้งค่าเพื่อระบุว่าสงสัยว่ากิจกรรม Coex เกี่ยวข้อง
เมื่อสร้างรายงานนี้ (เช่น A2DP Chops และ Approaching LSTO) บิต 1 - WL 2G Radio Active: ตั้งค่าเพื่อระบุว่า WLAN 2G Radio ทำงานอยู่ บิต 2 - WL 2G Connected: ตั้งค่าเพื่อระบุว่าวิทยุ WLAN 2G ทำงานอยู่และเชื่อมต่อแล้ว บิต 3 - วิทยุ WL 5G/6G ใช้งานอยู่: ตั้งค่าเพื่อระบุว่าวิทยุ WLAN 5G/6G ใช้งานอยู่ บิต 4-15 - สงวนไว้ |
| พารามิเตอร์เฉพาะของผู้ให้บริการ | (ความยาวรวมของพารามิเตอร์ - TBD) * อ็อกเท็ต | เพื่อให้ผู้ให้บริการตัวควบคุมได้รับพารามิเตอร์เฉพาะของผู้ให้บริการเพิ่มเติม |
รหัสเหตุการณ์ย่อย = 0x58 [Quality_Report_Id = 0x05, Root Inflammation event]
เหตุการณ์นี้บ่งชี้ว่า HAL ของบลูทูธหรือตัวควบคุมพบข้อผิดพลาดร้ายแรงและต้องใช้สแต็กบลูทูธเพื่อบันทึกสถานการณ์นี้และรีสตาร์ท โดยตัวควบคุมต้องส่ง Root_Inflammation_Event ไปยังสแต็ก Bluetooth ก่อนส่งส่วนแรกของเหตุการณ์ข้อมูลการแก้ไขข้อบกพร่องในทุกกรณี
พารามิเตอร์ Error_Code มีรหัสข้อผิดพลาดที่รายงานจาก HAL/Controller หรือ 0 หากเป็นข้อผิดพลาดเฉพาะของผู้ให้บริการชิปเซ็ต Vendor_Specific_Error_Code มีรหัสข้อผิดพลาดเฉพาะของผู้ให้บริการชิปเซ็ต จาก HAL/Controller ควรตั้งค่าเป็น 0 หากพารามิเตอร์ Error_Code ไม่ใช่ 0 พารามิเตอร์ Error_Code และ Vendor_Specific_Error_Code ไม่ควรเป็น 0 ทั้งคู่
| พารามิเตอร์เหตุการณ์ย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
Quality_Report_Id |
1 อ็อกเท็ต |
0x00 ~ 0x04: จองไว้ 0x05: การอักเสบที่ราก 0x06 ~ 0xFF: สงวนไว้ |
Error_Code |
1 อ็อกเท็ต |
0x00: มีรหัสข้อผิดพลาดเฉพาะของผู้ให้บริการชิปเซ็ต 0x01 ~ 0xFF: เกิดข้อผิดพลาดของตัวควบคุม ดูรายการรหัสข้อผิดพลาดและคำอธิบายได้ที่ข้อกำหนดของบลูทูธ [Vol 2] ส่วน D, รหัสข้อผิดพลาด |
Vendor_Specific_Error_Code |
1 อ็อกเท็ต |
0x00: ไม่ได้รวมรหัสข้อผิดพลาดเฉพาะของผู้ให้บริการชิปเซ็ต 0x01 ~ 0xFF: รหัสข้อผิดพลาดเฉพาะของผู้ให้บริการชิปเซ็ต |
| พารามิเตอร์เฉพาะของผู้ให้บริการ | (ความยาวทั้งหมดของพารามิเตอร์ - 4) * อ็อกเท็ต | เพื่อให้ผู้ให้บริการตัวควบคุมได้รับพารามิเตอร์เฉพาะของผู้ให้บริการเพิ่มเติม |
รหัสเหตุการณ์ย่อย = 0x58 [Quality_Report_Id = 0x06, เหตุการณ์การตรวจสอบพลังงาน]
เหตุการณ์นี้แสดงภาพรวมของการใช้พลังงานและสถานะการทำงานของตัวควบคุมบลูทูธในช่วงระยะเวลาหนึ่ง เหตุการณ์นี้ช่วยให้นักพัฒนาแอปและวิศวกรวิเคราะห์วิธีที่ คอนโทรลเลอร์จัดการพลังงาน ระบุว่ากิจกรรมใดใช้พลังงานมากที่สุด และแก้ปัญหา ที่เกี่ยวข้องกับพลังงาน
พารามิเตอร์ในรายงานจะติดตามเมตริกสําคัญ ซึ่งรวมถึง
- การใช้กระแสไฟฟ้าปัจจุบันโดยเฉลี่ย: กระแสไฟฟ้าปัจจุบันโดยรวมที่ตัวควบคุมใช้
- เวลาที่ใช้ในสถานะต่างๆ: เวลาทั้งหมด (เป็นมิลลิวินาที) ที่คอนโทรลเลอร์ใช้ในสถานะไม่ได้ใช้งาน (สลีป/ใช้พลังงานต่ำ) เทียบกับสถานะใช้งานอยู่ (เชื่อมต่อ ส่ง หรือรับข้อมูล)
- จำนวนการเปลี่ยนสถานะ: จำนวนครั้งที่คอนโทรลเลอร์เปลี่ยนระหว่างสถานะ ไม่ได้ใช้งานและใช้งานอยู่
- เวลาที่ใช้ในสถานะวิทยุที่เฉพาะเจาะจง: เมตริกแยกต่างหากสำหรับเวลาที่ใช้ในการส่ง (Tx) และรับ (Rx) สำหรับทั้งลิงก์ BR/EDR (Bluetooth Classic) และ LE (บลูทูธพลังงานต่ำ)
- ระดับกำลังส่งโดยเฉลี่ย: กำลังโดยเฉลี่ย (เป็น dBm) ที่ใช้สำหรับการส่งในลิงก์ BR/EDR และ LE
- กิจกรรมของเชนโดยละเอียด: รายงานเกี่ยวกับเวลาที่ใช้กับเชนการส่งหรือรับที่ใช้งานอยู่ โดยแยกความแตกต่างระหว่างการทำงานแบบ 1 เชนและ 2 เชน รวมถึงระหว่างเครื่องขยายสัญญาณภายใน (iPA) และภายนอก (ePA)
- เวลาในการสแกนกิจกรรม: เวลาที่ตัวควบคุมใช้ในการสแกนหาอุปกรณ์ BR/EDR และ LE อย่างต่อเนื่อง
การตรวจสอบพารามิเตอร์เหล่านี้ช่วยให้วิศวกรได้รับข้อมูลเชิงลึกเกี่ยวกับประสิทธิภาพการใช้พลังงานของตัวควบคุม และเพิ่มประสิทธิภาพการทำงานของตัวควบคุม
| พารามิเตอร์เหตุการณ์ย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
Quality_Report_Id |
1 อ็อกเท็ต | 0x06: การตรวจสอบการใช้พลังงาน |
Average_Current_Consumption |
2 อ็อกเท็ต | [ในหน่วย mA] การใช้กระแสไฟฟ้าโดยเฉลี่ยของกิจกรรมทั้งหมดที่ตัวควบคุมใช้ |
Idle_Total_Time (การนอนหลับ) |
4 อ็อกเท็ต | [เป็นมิลลิวินาที] เวลาทั้งหมดในสถานะว่าง (สถานะพลังงานต่ำ, สลีป) |
Idle_Sate_Enter_Count |
4 อ็อกเท็ต | ระบุจำนวนครั้งที่ตัวควบคุมเข้าสู่สถานะว่าง |
Active_Total_Time |
4 อ็อกเท็ต | [เป็นมิลลิวินาที] เวลาทั้งหมดในสถานะใช้งาน (การสอบถาม การแบ่งหน้า การรับส่งข้อมูล ACL/SCO/eSCO/BIS/CIS การประมวลผลงาน) |
Active_State_Enter_Count |
4 อ็อกเท็ต | ระบุจำนวนครั้งที่ตัวควบคุมเข้าสู่สถานะที่ใช้งานอยู่ |
BR_RDR_Tx_Total_Time |
4 อ็อกเท็ต | [เป็นมิลลิวินาที] เวลาทั้งหมดในสถานะ Tx(การส่งสำหรับการรับส่งข้อมูล ACL/SCO/eSCO) เฉพาะ BR/EDR |
BR_RDR_Tx_State_Enter_Count |
4 อ็อกเท็ต | ระบุจำนวนครั้งที่คอนโทรลเลอร์เข้าสู่สถานะ Tx เฉพาะของ BR/EDR |
BR_RDR_Tx_Average_Power_Level |
1 อ็อกเท็ต | [ในหน่วย dBm] ระดับกำลัง Tx เฉลี่ยของลิงก์ BR/EDR ทั้งหมด |
BR_RDR_Rx_Total_Time |
4 อ็อกเท็ต | [มิลลิวินาที] เวลาทั้งหมดในสถานะ Rx (รับจากการเข้าชม ACL/SCO/eSCO) เฉพาะของ BR/EDR |
BR_RDR_Rx_State_Enter_Count |
4 อ็อกเท็ต | [เป็นมิลลิวินาที] ระบุจำนวนครั้งที่คอนโทรลเลอร์เข้าสู่สถานะ Rx เฉพาะของ BR/EDR |
LE_Tx_Total_Time |
4 อ็อกเท็ต | [เป็นมิลลิวินาที] เวลาทั้งหมดในสถานะ Tx (การส่งสำหรับ ACL/BIS/CIS หรือ LE การรับส่งโฆษณา) ที่เฉพาะเจาะจงของ LE |
LE_Tx_State_Enter_Count |
4 อ็อกเท็ต | ระบุจำนวนครั้งที่คอนโทรลเลอร์เข้าสู่สถานะ Rx เฉพาะของ BR/EDR |
LE_Tx_Average_Power_Level |
1 อ็อกเท็ต | [ในหน่วย dBm] ระดับกำลังส่งเฉลี่ยของลิงก์ LE ทั้งหมด |
LE_Rx_Total_Time |
4 อ็อกเท็ต | [เป็นมิลลิวินาที] เวลาทั้งหมดในสถานะ Rx (รับจาก ACL/BIS/CIS หรือ การเข้าชมการสแกน LE) ที่เฉพาะเจาะจงของ LE |
LE_Rx_State_Enter_Count |
4 อ็อกเท็ต | [ในหน่วยมิลลิวินาที] ระบุจำนวนครั้งที่คอนโทรลเลอร์เข้าสู่สถานะ Rx เฉพาะของ LE |
Report_Time_Duration (เวลาทั้งหมด) |
4 อ็อกเท็ต | [เป็นมิลลิวินาที] ระยะเวลาทั้งหมดในการรวบรวมข้อมูลที่เกี่ยวข้องกับพลังงาน |
RX_Active_One_Chain_Time |
4 อ็อกเท็ต | [เป็นมิลลิวินาที] ระยะเวลาที่ RX ใช้งานอยู่ในเชนเดียว |
RX_Active_Two_Chain_Time |
4 อ็อกเท็ต | [เป็นมิลลิวินาที] ระยะเวลาที่ RX ทำงานใน 2 เชน |
TX_iPA_Active_One_Chain_Time |
4 อ็อกเท็ต | [เป็นมิลลิวินาที] ระยะเวลาของ TX ภายในที่ใช้งานอยู่ในเชนเดียว |
TX_iPA_Active_Two_Chain_Time |
4 อ็อกเท็ต | [เป็นมิลลิวินาที] ระยะเวลาที่ TX ภายในทำงานใน 2 เชน |
TX_ePA_Active_One_Chain_Time |
4 อ็อกเท็ต | [เป็นมิลลิวินาที] ระยะเวลาที่ TX ภายนอกทำงานในเชนเดียว |
TX_ePA_Active_Two_Chain_Time |
4 อ็อกเท็ต | [เป็นมิลลิวินาที] ระยะเวลาที่ TX ภายนอกทำงานใน 2 เชน |
BREDR_RX_Active_Scan_total_Time |
4 อ็อกเท็ต | [ในหน่วยมิลลิวินาที] ระยะเวลา (มิลลิวินาที) ในเวลาที่สแกน BR/EDR RX ใช้งานอยู่ |
LE_RX_Active_Scan_total_Time |
4 อ็อกเท็ต | [เป็นมิลลิวินาที] ระยะเวลา (มิลลิวินาที) ในเวลาที่ RX ของการสแกน LE ทำงาน |
รหัสเหตุการณ์ย่อย = 0x58 [Quality_Report_Id = 0x09~0x0A, เหตุการณ์สถิติ RF ขั้นสูง]
เหตุการณ์สถิติ RF (ความถี่วิทยุ) ขั้นสูงของบลูทูธจะแสดงเมตริกประสิทธิภาพโดยละเอียด เกี่ยวกับลักษณะการทำงานของวิทยุของตัวควบคุมบลูทูธ ระบบจะทริกเกอร์เหตุการณ์ได้ 2 วิธีดังนี้
- ตามทริกเกอร์ (0x09): ระบบจะส่งรายงานแบบครั้งเดียวเพื่อตอบสนองต่อคำสั่งที่เฉพาะเจาะจง
- ตามจอภาพ (0x0A): คอนโทรลเลอร์จะส่งรายงานเป็นระยะๆ ตามช่วงเวลาที่ระบุ
พารามิเตอร์ของเหตุการณ์คือตัวนับแพ็กเก็ตที่ติดตามลักษณะการทำงานของวิทยุต่างๆ ในช่วงระยะเวลาที่ระบุ
เมตริกหลักและวัตถุประสงค์ของเมตริก
- ส่งสถิติพลังงาน: ตัวนับเหล่านี้จะติดตามแพ็กเก็ตที่ส่งโดยใช้การกำหนดค่าพลังงานที่แตกต่างกัน โดยจะแยกความแตกต่างระหว่างเครื่องขยายสัญญาณภายใน (iPA) และภายนอก (ePA) รวมถึงโหมดความหลากหลายของเสาอากาศ (Div) หรือการสร้างลำแสง (BF) ต่างๆ ซึ่งจะช่วย พิจารณาว่ามีการใช้การตั้งค่ากำลังและเสาอากาศใดบ่อยที่สุด
- กลุ่มตัวบ่งชี้ความแรงของสัญญาณที่ได้รับ (RSSI): พารามิเตอร์เหล่านี้จัดหมวดหมู่ แพ็กเก็ตที่ได้รับตามความแรงของสัญญาณ การระบุจำนวนแพ็กเก็ตภายใน ช่วง RSSI ที่เฉพาะเจาะจง (เช่น น้อยกว่า -90 dBm, -70 ถึง -75 dBm) จะช่วยให้รายงานแสดง ภาพคุณภาพลิงก์ได้อย่างชัดเจน จำนวนที่สูงในกลุ่มสัญญาณ "อ่อน" (เช่น < -90 dBm) แสดงว่าการเชื่อมต่อไม่ดี
- เดลต้า RSSI: เมตริกนี้จะวัดความแตกต่างของความแรงของสัญญาณระหว่าง เสาอากาศรับสัญญาณ 2 เสา (หากมี) เคาน์เตอร์จะติดตามจำนวนแพ็กเก็ตที่มีเดลต้า RSSI ในช่วงต่างๆ เดลต้าขนาดใหญ่ (เช่น >11 dBm) อาจบ่งบอกถึงการรบกวนหรือสิ่งกีดขวาง ทางกายภาพ เนื่องจากเสาอากาศหนึ่งรับสัญญาณได้แรงกว่าอีกเสาอากาศหนึ่งมาก
- การสลับเสาอากาศและการส่งซ้ำ: รายงานจะนับความถี่ที่ตัวควบคุม สลับระหว่างเสาอากาศและติดตามแพ็กเก็ตที่ส่งซ้ำ (ReTX) การส่งซ้ำจำนวนมาก มักบ่งชี้ว่าการเชื่อมต่อมีสัญญาณอ่อนหรือไม่เสถียร จึงต้องส่งแพ็กเก็ต อีกครั้ง
- คุณภาพของช่องทาง: พารามิเตอร์เหล่านี้จะให้ข้อมูลสรุประดับสูงเกี่ยวกับสถานะ ของช่องทางการสื่อสารต่างๆ โดยจัดหมวดหมู่เป็น "ดี" "พอใช้" "ไม่ดี" หรือ "แย่มาก" ตาม RSSI ซึ่งจะแสดงภาพรวมของสภาพแวดล้อม RF ในทันที
- คิวบัฟเฟอร์ TX: ส่วนนี้จะตรวจสอบจำนวนแพ็กเก็ตที่รอในบัฟเฟอร์การส่งของ คอนโทรลเลอร์สำหรับลิงก์ประเภทต่างๆ เช่น ACL (ลิงก์เชิงตรรกะแบบเชื่อมต่อที่ไม่พร้อมกัน) LECONN (การเชื่อมต่อ LE) และ LEISOC (LE Isochronous) จำนวนบัฟเฟอร์สูงอาจบ่งบอกถึงคอขวดหรือปัญหาเกี่ยวกับ การไหลของข้อมูลจากโฮสต์ไปยังคอนโทรลเลอร์
| พารามิเตอร์เหตุการณ์ย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
Quality_Report_Id |
1 อ็อกเท็ต | 0x09: สถิติ RF ขั้นสูงตามทริกเกอร์ 0x0A: สถิติ RF ขั้นสูงตามจอภาพ |
Extension_info |
1 อ็อกเท็ต | ข้อมูลเวอร์ชัน BQR 0x01 สำหรับ BQRv6 0x02 สำหรับ BQRv7 |
Report_Time_Period |
4 อ็อกเท็ต | ระยะเวลาในการรวบรวมข้อมูลประสิทธิภาพ หน่วย: มิลลิวินาที |
TX_Power_iPA_BF |
4 อ็อกเท็ต | เคาน์เตอร์แพ็กเกตของ iPA BF |
TX_Power_ePA_BF |
4 อ็อกเท็ต | ตัวนับแพ็กเกตของ ePA BF |
TX_Power_iPA_Div |
4 อ็อกเท็ต | เคาน์เตอร์แพ็กเกตของ ePA Div |
TX_Power_ePA_Div |
4 อ็อกเท็ต | เคาน์เตอร์แพ็กเกตของ ePA Div |
RSSI_chain_50 |
4 อ็อกเท็ต | ตัวนับแพ็กเกตของเชน RSSI > -50 dBm |
RSSI_chain_50_55 |
4 อ็อกเท็ต | ตัวนับแพ็กเก็ตของเชน RSSI ระหว่าง -50 dBm ~ >-55 dBm |
RSSI_chain_55_60 |
4 อ็อกเท็ต | ตัวนับแพ็กเก็ตของเชน RSSI ระหว่าง -55 dBm ~ >-60 dBm |
RSSI_chain_60_65 |
4 อ็อกเท็ต | ตัวนับแพ็กเก็ตของเชน RSSI ระหว่าง -60 dBm ~ >-65 dBm |
RSSI_chain_65_70 |
4 อ็อกเท็ต | ตัวนับแพ็กเก็ตของเชน RSSI ระหว่าง -65 dBm ~ >-70 dBm |
RSSI_chain_70_75 |
4 อ็อกเท็ต | ตัวนับแพ็กเก็ตของเชน RSSI ระหว่าง -70 dBm ~ >-75 dBm |
RSSI_chain_75_80 |
4 อ็อกเท็ต | ตัวนับแพ็กเก็ตของเชน RSSI ระหว่าง -75 dBm ~ >-80 dBm |
RSSI_chain_80_85 |
4 อ็อกเท็ต | ตัวนับแพ็กเก็ตของเชน RSSI ระหว่าง -80 dBm ~ >-85 dBm |
RSSI_chain_85_90 |
4 อ็อกเท็ต | ตัวนับแพ็กเก็ตของเชน RSSI ระหว่าง -85 dBm ~ >-90 dBm |
RSSI_chain_90 |
4 อ็อกเท็ต | ตัวนับแพ็กเก็ตของห่วงโซ่ RSSI < -90 dBm |
RSSI_delta_2 |
4 อ็อกเท็ต | ตัวนับแพ็กเกตของเดลต้า RSSI < 2 dBm |
RSSI_delta_2_5 |
4 อ็อกเท็ต | ตัวนับแพ็กเกตของเดลต้า RSSI ระหว่าง 2 dBm ~ 5 dBm |
RSSI_delta_5_8 |
4 อ็อกเท็ต | ตัวนับแพ็กเกตของเดลต้า RSSI ระหว่าง 5 dBm ~ 8 dBm |
RSSI_delta_8_11 |
4 อ็อกเท็ต | ตัวนับแพ็กเกตของเดลต้า RSSI ระหว่าง 8 dBm ~ 11 dBm |
RSSI_delta_11 |
4 อ็อกเท็ต | ตัวนับแพ็กเกตของเดลต้า RSSI > 11 dBm |
Antenna_Switch_Count |
4 อ็อกเท็ต | ตัวนับแพ็กเก็ตของเหตุการณ์การสลับเสาอากาศ |
ReTX_iPA_BF |
4 อ็อกเท็ต | ตัวนับแพ็กเก็ตของ ReTX_iPA_BF ในช่วงเวลาล่าสุด |
ReTX_ePA_BF |
4 อ็อกเท็ต | ตัวนับแพ็กเก็ตของ ReTX_ePA_BF ในช่วงเวลาล่าสุด |
ReTX_iPA_Div |
4 อ็อกเท็ต | ตัวนับแพ็กเก็ตของ ReTX_iPA_Div ในช่วงเวลาล่าสุด |
ReTX_ePA_Div |
4 อ็อกเท็ต | ตัวนับแพ็กเก็ตของ ReTX_ePA_Div ในช่วงเวลาล่าสุด |
Channel_count_Good |
1 อ็อกเท็ต | จำนวนช่องที่มี RSSI อยู่ใน Bin-1 (<-90) |
Channel_count_OK |
1 อ็อกเท็ต | จำนวนช่องที่มี RSSI อยู่ใน Bin-2 (-90~-76) |
Channel_count_Bad |
1 อ็อกเท็ต | จำนวนช่องที่มี RSSI อยู่ใน Bin-3 (-76~-50) |
Channel_count_VeryBad |
1 อ็อกเท็ต | จำนวนช่องที่มี RSSI อยู่ใน Bin-4 (>-50) |
TX_buffer_Queue_Count |
4 อ็อกเท็ต | ตัวนับสถานะคิวบัฟเฟอร์ - บัฟเฟอร์ TX ของคอนโทรลเลอร์ในช่วงเวลาล่าสุด [0:3] ACL_1 [4:7] ACL_2 [8:11] LECONN_1 [12:15] LECONN_2 [16:19] LEISOC_1 [20:23] LEISOC_2 [24:27] LEBroadcast [28:31] rsvd |
รหัสเหตุการณ์ย่อย = 0x58 [Quality_Report_Id = 0x0B~0x0C, เหตุการณ์การตรวจสอบสถานะของตัวควบคุม]
เหตุการณ์การตรวจสอบประสิทธิภาพของตัวควบคุมบลูทูธจะแสดงข้อมูลสรุปเกี่ยวกับ สถานะการทำงานของตัวควบคุม ระบบจะทริกเกอร์เหตุการณ์ได้ 2 วิธีดังนี้
- ตามทริกเกอร์ (0x09): ระบบจะส่งรายงานแบบครั้งเดียวเพื่อตอบสนองต่อคำสั่งที่เฉพาะเจาะจง
- ตามจอภาพ (0x0A): คอนโทรลเลอร์จะส่งรายงานเป็นระยะๆ ตามช่วงเวลาที่ระบุ
เหตุการณ์การตรวจสอบความสมบูรณ์ของตัวควบคุมบลูทูธเป็นเครื่องมือวินิจฉัยที่แสดงข้อมูลสรุป เกี่ยวกับสถานะการทำงานของตัวควบคุม เหตุการณ์นี้เป็นส่วนหนึ่งของเฟรมเวิร์กรายงานคุณภาพบลูทูธ (BQR) และใช้สำหรับการแก้ไขข้อบกพร่องด้านการเชื่อมต่อ การจัดการพลังงาน และปัญหาด้านเวลา โดยสามารถส่งเป็นรายงานแบบครั้งเดียวหรือส่งเป็นระยะๆ เพื่อให้มีการตรวจสอบอย่างต่อเนื่อง
เมตริกหลักและวัตถุประสงค์ของเมตริก
- ตัวนับแพ็กเก็ต HCI: เหตุการณ์จะติดตามจำนวนแพ็กเก็ตทั้งหมดที่ส่งจาก โฮสต์ไปยังคอนโทรลเลอร์และในทางกลับกัน เคาน์เตอร์เหล่านี้มีความสำคัญต่อการแก้ไขข้อบกพร่องเกี่ยวกับ การรับส่งข้อมูลของ Host Controller Interface (HCI) ซึ่งเป็น ช่องทางการสื่อสารระหว่างสแต็กซอฟต์แวร์กับชิปตัวควบคุมบลูทูธ
- ความยาวของแพ็กเก็ต: เหตุการณ์จะรายงานความยาวของแพ็กเก็ต HCI สุดท้ายที่ส่งและ ได้รับ ซึ่งจะช่วยยืนยันว่ามีการส่งข้อมูลอย่างถูกต้องและไม่มีปัญหาเกี่ยวกับขนาดที่ไม่คาดคิด
- จำนวนสัญญาณปลุก: รายงานจะแสดงจำนวนครั้งทั้งหมดที่ยืนยันพิน BT_Wake และ HOST_Wake สัญญาณทางกายภาพเหล่านี้มีความสําคัญอย่างยิ่งต่อการจัดการพลังงาน เนื่องจากใช้เพื่อปลุกเอนทิตีที่เกี่ยวข้อง จากสถานะพลังงานต่ำ การตรวจสอบจำนวนเหล่านี้จะช่วยแก้ไขปัญหาที่เกี่ยวข้องกับพลังงาน เช่น การปลุกที่ไม่คาดคิดหรือการเข้าสู่โหมดพักเครื่องไม่สำเร็จ
- การประทับเวลา: เหตุการณ์นี้มีการประทับเวลาหลายรายการ รวมถึงเวลาของ สัญญาณปลุกครั้งล่าสุดและการรีเซ็ต HCI ครั้งล่าสุด การประทับเวลาเหล่านี้ช่วยแก้ปัญหาที่เกี่ยวข้องกับเวลา และเป็นจุดอ้างอิงสำหรับเวลาที่เกิดเหตุการณ์บางอย่าง
- ตัวนับเวลา Watchdog: แฟล็กที่เฉพาะเจาะจงจะระบุว่าเหตุการณ์สร้างขึ้นเป็น คำเตือนล่วงหน้าว่าตัวนับเวลา Watchdog ของคอนโทรลเลอร์กำลังจะหมดอายุ นี่คือ การแจ้งเตือนที่สำคัญสำหรับตัวควบคุมที่อาจหยุดทำงานหรือทำงานผิดปกติ
- สถานะลิงก์: รายงานจะสรุปสถานะปัจจุบันของการเชื่อมต่อที่ใช้งานอยู่ รวมถึงจำนวนลิงก์ BR/EDR, LE และ CIS (Connected Isochronous Stream) ทั้งหมด นอกจากนี้ยังระบุว่าลิงก์ SCO (Synchronous Connection-Oriented) ใช้งานอยู่หรือไม่ ข้อมูลนี้ แสดงภาพรวมของภาระการเชื่อมต่อปัจจุบันของคอนโทรลเลอร์
| พารามิเตอร์เหตุการณ์ย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
Quality_Report_Id |
1 อ็อกเท็ต | 0xB~0xC 0x0B: รายงานแบบครั้งเดียวหรือรายงานที่ทริกเกอร์ด้วยเหตุการณ์ 0x0C: รายงานเป็นระยะ |
Packet_Count_Host_to_Controller |
4 อ็อกเท็ต | จำนวนแพ็กเก็ตทั้งหมดที่ส่งจากโฮสต์ไปยังคอนโทรลเลอร์ผ่านการรับส่ง HCI ฟิลด์นี้ใช้เพื่อวัตถุประสงค์ในการแก้ไขข้อบกพร่องของปัญหา HCI (เช่น UART) ลักษณะการทำงาน: ตัวนับจะรีเซ็ตเมื่อตัวควบคุมได้รับการรีเซ็ต HCI |
Packet_Count_Controller_to_Host |
4 อ็อกเท็ต | จำนวนแพ็กเก็ตเหตุการณ์ HCI ทั้งหมดที่ส่งไปยังโฮสต์ ฟิลด์นี้ใช้เพื่อวัตถุประสงค์ในการ แก้ไขข้อบกพร่องของปัญหา HCI (เช่น UART) ลักษณะการทำงาน: ตัวนับจะรีเซ็ตเมื่อตัวควบคุม ได้รับรีเซ็ต HCI |
Last_Packet_Length_Host_to_Controller |
2 อ็อกเท็ต | ความยาวของแพ็กเก็ต HCI สุดท้ายที่ส่งไปยัง UART ของโฮสต์ หมายเหตุ: ความยาวแพ็กเก็ต HCI สูงสุด 2 อ็อกเท็ต (รวม HCI, ACL, SCO, ISO) |
Last_Packet_Length_Controller_To_host |
2 อ็อกเท็ต | ความยาวของแพ็กเกต HCI ล่าสุดที่ได้รับจาก UART ของโฮสต์ หมายเหตุ: ความยาวแพ็กเก็ต HCI สูงสุด 2 อ็อกเท็ต (รวม HCI, ACL, SCO, ISO) |
Total_BT_Wake_Count |
4 อ็อกเท็ต | การนับรวมการยืนยันพิน BT_Wake โดยเอนทิตีโฮสต์ ฟิลด์นี้ทำหน้าที่เป็น เครื่องมือวินิจฉัยสำหรับการแก้ไขข้อบกพร่องที่เกี่ยวข้องกับปัญหาด้านพลังงาน ลักษณะการทำงาน: ตัวนับจะรีเซ็ตเมื่อคอนโทรลเลอร์ได้รับรีเซ็ต HCI |
Total_HOST_Wake_Count |
4 อ็อกเท็ต | การคำนวณแบบรวมของการยืนยันพิน Host_Wake ที่เริ่มต้นโดยตัวควบคุม ฟิลด์นี้ ทำหน้าที่เป็นเครื่องมือวินิจฉัยสำหรับการแก้ไขข้อบกพร่องที่เกี่ยวข้องกับปัญหาด้านพลังงาน ลักษณะการทำงาน: ตัวนับจะรีเซ็ตเมื่อตัวควบคุมได้รับการรีเซ็ต HCI |
Last_BT_Wake_TimeStamp |
4 อ็อกเท็ต | การประทับเวลาล่าสุดเมื่อโฮสต์ยืนยันพิน BT_Wake ฟิลด์นี้ได้รับการติดตั้งใช้งานเพื่อวัตถุประสงค์ในการ แก้ไขข้อบกพร่องเกี่ยวกับปัญหาด้านพลังงาน |
Last_HOST_Wake_TimeStamp |
4 อ็อกเท็ต | การประทับเวลาล่าสุดเมื่อตัวควบคุมยืนยันพิน Host_Wake ฟิลด์นี้ใช้สำหรับการแก้ไขข้อบกพร่องเกี่ยวกับปัญหาด้านพลังงาน |
Reset_Timestamp |
4 อ็อกเท็ต | การประทับเวลาที่ระบุว่าการรีเซ็ต HCI ครั้งล่าสุดเสร็จสมบูรณ์แล้ว ฟิลด์นี้ใช้ เพื่อวัตถุประสงค์ที่ชัดเจนในการอำนวยความสะดวกในการแก้ไขปัญหาที่เกี่ยวข้องกับเวลา โดยควร ใช้เป็นจุดบันทึกเริ่มต้นเพื่อใช้อ้างอิงกับรายการอื่นๆ ทั้งหมด |
Current_Timestamp |
4 อ็อกเท็ต | เวลาปัจจุบันเมื่อสร้างเหตุการณ์นี้ ช่องนี้ใช้เพื่อวัตถุประสงค์ในการ แก้ปัญหาความคลาดเคลื่อนของเวลา โดยควรใช้เป็นจุดบันทึกทริกเกอร์ที่ องค์ประกอบอื่นๆ ทั้งหมดอ้างอิง |
Is_WatchDog_Timer_About_To_Expire |
4 อ็อกเท็ต | Flag to denote that this health status event is generated by the controller as an early warning of watch dog expiration. การประทับเวลาปัจจุบันใช้เพื่อระบุเวลาที่เกิดเหตุการณ์ ขึ้น |
Coex_Status_Mask |
2 อ็อกเท็ต | บิต 0 - สงวนไว้ |
Total_Links_BR_EDR_LE_Active |
1 อ็อกเท็ต | จำนวนลิงก์ทั้งหมดของ BR/EDR/LE ในสถานะ "ใช้งานอยู่" |
Total_Links_BR_EDR_Sniff |
1 อ็อกเท็ต | จำนวนลิงก์ทั้งหมดของ BR/EDR ในสถานะ Sniff/Idle |
Total_Links_CIS |
1 อ็อกเท็ต | จำนวนลิงก์ทั้งหมดของ ISO |
Is_SCO_Active |
1 อ็อกเท็ต | ตัวบ่งชี้เพื่อตรวจสอบว่าลิงก์ SCO เปิดใช้งานอยู่หรือไม่ |
รหัสเหตุการณ์ย่อย = 0x58 [Quality_Report_Id = 0x11 ~ 0x13, เหตุการณ์ที่เกี่ยวข้องกับการทิ้งบันทึก]
| พารามิเตอร์เหตุการณ์ย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
Quality_Report_Id |
1 อ็อกเท็ต |
0x00 ~ 0x10: Reserved 0x11: การติดตามข้อความ LMP/LL 0x12: การติดตามการกำหนดเวลาแบบหลายลิงก์/การทำงานร่วมกันของบลูทูธ 0x13: ดัมพ์ข้อมูลการแก้ไขข้อบกพร่องของคอนโทรลเลอร์ 0x14 ~ 0xFF: จองไว้ |
Connection_Handle |
2 อ็อกเท็ต | แฮนเดิลการเชื่อมต่อ |
| พารามิเตอร์เฉพาะของผู้ให้บริการ | (ความยาวทั้งหมดของพารามิเตอร์ - 4) * อ็อกเท็ต | รูปแบบเฉพาะของผู้ให้บริการของการติดตามข้อความ LMP, การติดตามการจัดกำหนดการแบบหลายลิงก์/การทำงานร่วมกันของบลูทูธ และการทิ้งข้อมูลการแก้ไขข้อบกพร่องของคอนโทรลเลอร์ |
เหตุการณ์ย่อยของความคิดเห็นเกี่ยวกับลิงก์ ISO
รหัสเหตุการณ์ย่อย = 0x5C
เมื่อเปิดใช้งานแล้ว ระบบต้องสร้างเหตุการณ์นี้ในช่วง ISO แต่ละช่วง
การดำเนินการ
การเปิดใช้งานจะดำเนินการโดยการเลือกData_Path_IDรหัส
0x19ของผู้ให้บริการในHCI_LE_Setup_ISO_Data_Pathคำสั่งมาตรฐาน
ต้องยอมรับคำสั่ง HCI_Configure_Data_Path ที่มี Data_Path_ID ตั้งค่าเป็น
0x19 และ Vendor_Specific_Config_Length ตั้งค่าเป็น 0
แม้ว่าตัวควบคุมจะไม่คาดหวังให้ดำเนินการใดๆ เมื่อได้รับคำสั่งนี้
ก็ตาม
เวลาการเลือกจ่ายงาน
เหตุการณ์จะปล่อยจากจุดเริ่มต้นของช่วง ISO (จุดยึด CIG หรือ BIG) ไปยังช่วง ISO ถัดไป โดยตัวควบคุมจะระบุความล่าช้าด้วยเวลาเริ่มต้นที่มีผลของ ช่วง ISO โดยใช้Anchor_Point_Delay
การซิงค์คอนโทรลเลอร์
เมื่อช่วงเวลา ISO เริ่มต้นขึ้น ตัวควบคุมจะคำนวณ StreamSN โดยการเพิ่มค่าปัจจุบันตามISO_Interval ÷ SDU_Interval ที่กำหนดค่าไว้ ในช่วงเวลาแรก ค่านี้จะเริ่มต้นเป็น 0จากนั้นสำหรับแต่ละแพ็กเก็ตใน FIFO ของ ISO จะมีผลดังนี้
-
คอนโทรลเลอร์จะคำนวณความแตกต่างของการวนรอบ SNdiff ระหว่างหมายเลขลำดับ 2 รายการ
ดังนี้
SNdiff = (SDUSN - StreamSN + 0x10000) mod 0x10000 - เมื่อ
(SNdiff + (FT-1) × ISO_Interval ÷ SDU_Interval) mod 0x10000 <= (FT-1) × ISO_Interval ÷ SDU_Interval:
แพ็กเก็ตอยู่ในหน้าต่างการส่งซ้ำ โดยควรมีการกำหนดเวลาสำหรับการ ส่งในช่วงเวลาก่อนหน้า และตอนนี้พร้อมสำหรับการส่งซ้ำแล้ว หากไม่ใช่กรณีนี้ (ยังไม่ได้กำหนดเวลาส่ง) แสดงว่าได้รับล่าช้า ต้องส่งสัญญาณนี้ไปยังโฮสต์โดยใช้In_Statusแพ็กเก็ตดังกล่าวอาจถูกทิ้งหรือกำหนดเวลาส่งได้ ซึ่งการเลือกจะขึ้นอยู่กับการใช้งาน - หรือเมื่อ
SNdiff < ISO_Interval ÷ SDU_Interval:
ระบบจะกำหนดเวลาแพ็กเก็ตสำหรับการส่งจากเหตุการณ์นี้จนกว่าจะหมดเวลาการล้าง - หรือเมื่อ
SNdiff >= ISO_Interval ÷ SDU_IntervalและSNdiff <= Max_Forward_Buffers:
แพ็กเก็ตอยู่ในอนาคต ระบบจะส่งแพ็กเก็ตพร้อมกับเหตุการณ์ถัดไป เนื่องจากระบบจะส่งแพ็กเก็ตตามลำดับ เงื่อนไขนี้จึงสิ้นสุดการค้นหาแพ็กเก็ตสำหรับช่วงเวลานี้
บัฟเฟอร์ที่โฮสต์ใช้จะไม่สื่อสารกับคอนโทรลเลอร์ แต่จะจำกัดไว้ที่Max_Forward_Buffers = 16 - หรือเมื่อไม่เป็นไปตามเงื่อนไขใดๆ ข้างต้น
ระบบจะทิ้งแพ็กเก็ต เมื่อถึงขีดจำกัดการหมดเวลาของ Flush หรือได้รับแพ็กเก็ตที่ มีรูปแบบไม่ถูกต้อง
| พารามิเตอร์เหตุการณ์ย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
Connection_Handle |
2 อ็อกเท็ต |
แฮนเดิลการเชื่อมต่อของ CIS หรือ BIS ช่วง: 0x0000 ถึง 0x0EFF |
Sequence_Number |
2 อ็อกเท็ต |
หมายเลขลำดับของสตรีมที่ตัวควบคุมจัดการ เริ่มต้นเป็น 0 เมื่อสร้าง CIS หรือ BIS และเพิ่มขึ้นตามจำนวน SDU ตามช่วงเวลา Isochronous ของ ISO ซึ่งกำหนดเป็น ISO_interval ÷ SDU_Interval
ในแต่ละช่วงเวลา ISO
|
Anchor_Point_Delay |
2 อ็อกเท็ต |
ความล่าช้าในหน่วยไมโครวินาทีระหว่างการสร้างเหตุการณ์กับจุดยึด BIG หรือ CIG ที่มีผล
หรือจุดเริ่มต้นของช่วง ISO
การประทับเวลาของจุดยึดที่มีผลจะกำหนดโดยสิ่งต่อไปนี้Event generation time - Anchor_Point_Delay
ช่วง: 0 ถึงช่วงเวลา ISO ในหน่วยไมโครวินาที |
In_Status |
2 อ็อกเท็ต |
สถานะบัฟเฟอร์ ISO ของตัวควบคุม เมื่อเริ่มต้นช่วงเวลา ISO ระบบจะตั้งค่าแต่ละบิต bi เมื่อ SDU (Sequence_Number + i) mod 0x10000 พร้อมใช้งาน เมื่อไม่พร้อมใช้งาน ระบบจะระบุ SDU เป็น Not received from the hostค่า i อยู่ในช่วง 0 ถึง ISO_Interval ÷ SDU_Interval - 1
สำหรับค่าอื่นๆ ของ i ระบบจะตั้งค่าบิตเป็น 0
|
Tx_Status |
2 อ็อกเท็ต |
สถานะการส่งเทียบกับ SDU ที่มีหมายเลขลำดับ(Sequence_Number - Flush_Timeout × ISO_Interval ÷ SDU_Interval + i + 0x10000)
mod 0x10000
บิต bi แต่ละบิตจะตั้งค่าเมื่อ PDU ทั้งหมดของ SDU ที่ระบุตามหมายเลขลำดับ ได้รับการส่งและรับทราบเรียบร้อยแล้ว ค่า i อยู่ในช่วง 0 ถึง ISO_Interval ÷ SDU_Interval - 1
สำหรับค่าอื่นๆ ของ i ระบบจะตั้งค่าบิตเป็น 0ในกลุ่มออกอากาศ ระบบจะถือว่ามีการรับทราบการส่งเสมอ |
การรองรับผู้ลงโฆษณาหลายราย
วัตถุประสงค์ของการรองรับผู้ลงโฆษณาหลายรายมีดังนี้
-
ความสามารถในการรองรับโฆษณาหลายรายการ
(
max_advt_instances) - กำลังส่งที่แตกต่างกันเพื่อให้มีช่วงที่แตกต่างกัน
- เนื้อหาโฆษณาที่แตกต่างกัน
- การตอบกลับที่ปรับเปลี่ยนในแบบของคุณสำหรับผู้ลงโฆษณาแต่ละราย
- ความเป็นส่วนตัว (ติดตามไม่ได้) สำหรับผู้ลงโฆษณาแต่ละราย
- เชื่อมต่อได้
เรามีคำสั่งเฉพาะของผู้ให้บริการต่อไปนี้เพื่อให้ข้อกำหนดนี้ใกล้เคียงกับมาตรฐานที่มีอยู่ ซึ่งได้มาจากข้อกำหนดหลัก 4.1 ของบลูทูธ
LE_Multi_Advt_Command
OCF: 0x154
| พารามิเตอร์คำสั่ง | ขนาด | วัตถุประสงค์ |
|---|---|---|
Multi_advt_opcode |
1 อ็อกเท็ต |
0x01 - Set_Advt_Param_Multi_Sub_Cmd0x02 - Set_Advt_Data_Multi_Sub_Cmd0x03 - Set_Scan_Resp_Data_Multi_Sub_Cmd0x04 - Set_Random_Addr_Multi_Sub_Cmd0x05 - Set_Advt_Enable_Multi_Sub_Cmd
|
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
Multi_advt_opcode |
1 อ็อกเท็ต |
0x01 - Set_Advt_Param_Multi_Command0x02 - Set_Advt_Data_Multi_Command0x03 - Set_Scan_Resp_Data_Multi_Command0x04 - Set_Random_Addr_Multi_Command0x05 - Set_Advt_Enable_Multi_Command
|
LE_Multi_Advt_Command: Set_Advt_Param_Multi_Sub_Cmd
การอ้างอิงพื้นฐาน: ข้อกําหนดหลักของบลูทูธ 4.1 หน้า 964 (LE Set Advertising Parameter Command)
Sub OCF: 0x01
| พารามิเตอร์คำสั่งย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
Advertising_Interval_Min |
ตามข้อกำหนด | ตามข้อกำหนด |
Advertising_Interval_Max |
ตามข้อกำหนด | ตามข้อกำหนด |
Advertising_Type |
ตามข้อกำหนด | ตามข้อกำหนด |
Own_Address_Type |
ตามข้อกำหนด | ตามข้อกำหนด |
Own_Address |
ตามข้อกำหนด | ตามข้อกำหนด |
Direct_Address_Type |
ตามข้อกำหนด | ตามข้อกำหนด |
Direct_Address |
ตามข้อกำหนด | ตามข้อกำหนด |
Advertising_Channel_Map |
ตามข้อกำหนด | ตามข้อกำหนด |
Adverstising_Filter_Policy |
ตามข้อกำหนด | ตามข้อกำหนด |
Advertising_Instance |
1 อ็อกเท็ต | ระบุความเกี่ยวข้องของพารามิเตอร์ข้างต้นกับอินสแตนซ์ |
Tx_power |
1 อ็อกเท็ต |
Transmit_Power หน่วย - ใน dBm (จำนวนเต็มที่มีเครื่องหมาย) ช่วง (-70 ถึง +20) |
พารามิเตอร์ Own_Address อาจเป็นที่อยู่ที่โฮสต์กำหนดค่า
ในขณะที่ตั้งค่าอินสแตนซ์โฆษณาหลายรายการนี้ ซึ่งจะช่วยให้มีที่อยู่ส่วนตัวที่แก้ไขได้ในขณะที่
ส่งบีคอนแรก โฆษณาในอินสแตนซ์จะยังคงแสดงต่อไป
ไม่ว่าการเชื่อมต่อจะเป็นอย่างไร สแต็ก BT ของโฮสต์สามารถออกคำสั่งเพื่อ
เริ่มการโฆษณาในอินสแตนซ์ได้หลังจากเชื่อมต่อ
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้ตามที่ระบุ
ในข้อกำหนดหลักของบลูทูธ 4.1 ตามคำสั่งข้างต้น
ตัวควบคุมจะตอบกลับด้วยรหัสที่ไม่สําเร็จ (พารามิเตอร์ไม่ถูกต้อง) หากอินสแตนซ์การโฆษณาหรือพารามิเตอร์ Tx_Power ไม่ถูกต้อง
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
Multi_advt_opcode |
1 อ็อกเท็ต | 0x01 [Set_Advt_Param_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd
การอ้างอิงพื้นฐาน: ข้อกำหนดหลักของบลูทูธ 4.1 หน้า 969 (คำสั่งข้อมูลการโฆษณา LE Set )
Sub OCF: 0x02
| พารามิเตอร์คำสั่งย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
Advertising_Data_Length |
ตามข้อกำหนด | ตามข้อกำหนด |
Advertising_Data |
ตามข้อกำหนด | ตามข้อกำหนด |
Advertising_Instance |
1 อ็อกเท็ต | ระบุความเกี่ยวข้องของพารามิเตอร์ข้างต้นกับอินสแตนซ์ |
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้ตามที่ระบุ
ในข้อกำหนดหลักของบลูทูธ 4.1 ตามคำสั่งข้างต้น
ตัวควบคุมจะตอบกลับด้วยรหัสที่ไม่สําเร็จหากอินสแตนซ์การโฆษณาหรือTx_Powerพารามิเตอร์ไม่ถูกต้อง
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
Multi_advt_opcode |
1 อ็อกเท็ต | 0x02 [Set_Advt_Data_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd
การอ้างอิงพื้นฐาน: ข้อกำหนดหลักของบลูทูธ 4.1 หน้า 970 (LE Set Scan Response Data Command)
Sub OCF: 0x03
| พารามิเตอร์คำสั่งย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
Scan_Response_Data_Length |
ตามข้อกำหนด | ตามข้อกำหนด |
Scan_Response_Data |
ตามข้อกำหนด | ตามข้อกำหนด |
Advertising_Instance |
1 อ็อกเท็ต | ระบุความเกี่ยวข้องของพารามิเตอร์ข้างต้นกับอินสแตนซ์ |
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้ตามที่ระบุ
ในข้อกำหนดหลักของบลูทูธ 4.1 ตามคำสั่งข้างต้น
ตัวควบคุมจะตอบกลับด้วยรหัสที่ไม่สําเร็จ (พารามิเตอร์ไม่ถูกต้อง) หาก
อินสแตนซ์การโฆษณาหรือพารามิเตอร์ Tx_Power ไม่ถูกต้อง
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
Multi_advt_opcode |
1 อ็อกเท็ต | 0x03 [Set_Scan_Resp_Data_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd
การอ้างอิงพื้นฐาน: ข้อกำหนดหลักของบลูทูธ 4.1 หน้า 963 (คำสั่ง LE Set Random Address)
Sub OCF: 0x04
| พารามิเตอร์คำสั่งย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
| ที่อยู่แบบสุ่ม | ตามข้อกำหนด | ตามข้อกำหนด |
Advertising_Instance |
1 อ็อกเท็ต | ระบุความเกี่ยวข้องของพารามิเตอร์ข้างต้นกับอินสแตนซ์ |
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
Multi_advt_opcode |
1 อ็อกเท็ต | 0x04 [Set_Random_Addr_Multi_Sub_Cmd] |
LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd
การอ้างอิงพื้นฐาน: ข้อกำหนดหลักของบลูทูธ 4.1 หน้า 971 (LE Set Advertise Enable Command ในข้อกำหนดหลักนั้น)
OCF: 0x05
| พารามิเตอร์คำสั่งย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
Advertising_Enable |
1 อ็อกเท็ต | ค่า 1 หมายถึงเปิดใช้ ค่าอื่นๆ หมายถึงปิดใช้ |
Advertising_Instance |
1 อ็อกเท็ต | ระบุความเกี่ยวข้องของพารามิเตอร์ข้างต้นกับอินสแตนซ์ อินสแตนซ์ 0 หมายถึงอินสแตนซ์ HCI มาตรฐาน |
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
Multi_advt_opcode |
1 อ็อกเท็ต | 0x05 [Set_Advt_Enable_Multi_Sub_Cmd] |
การแก้ปัญหาที่อยู่ส่วนตัวที่ออฟโหลด
ฟีเจอร์นี้จะแก้ไขที่อยู่ส่วนตัวในเฟิร์มแวร์หรือฮาร์ดแวร์ของตัวควบคุม ซึ่งมีประโยชน์ดังนี้
- เวลาในการตอบสนองที่เกี่ยวข้องกับโฮสต์ในการแก้ไขที่อยู่ส่วนตัว
- ประหยัดพลังงานโดยไม่ปลุกโฮสต์
LE_Set_RPA_Timeout
OCF: 0x15C
| พารามิเตอร์คำสั่ง | ขนาด | วัตถุประสงค์ |
|---|---|---|
LE_local_IRK |
16 อ็อกเท็ต | IRK ของอุปกรณ์ในพื้นที่ที่ใช้สร้างที่อยู่ที่แก้ไขได้แบบสุ่ม |
tRPA_min |
2 อ็อกเท็ต |
การหมดเวลาในการสร้าง RPA ขั้นต่ำเป็นวินาที คอนโทรลเลอร์ต้อง
สร้างที่อยู่ที่แก้ไขได้ใหม่สำหรับ
เหตุการณ์การโฆษณา/การสแกน/การเชื่อมต่อใดๆ ในหรือหลังช่วงหมดเวลานี้ ช่วงที่ใช้ได้: 300-1800 |
tRPA_max |
2 อ็อกเท็ต |
การหมดเวลาในการสร้าง RPA สูงสุดเป็นวินาที คอนโทรลเลอร์ต้อง
สร้างที่อยู่ที่แก้ไขได้ใหม่สำหรับ
เหตุการณ์การโฆษณา/การสแกน/การเชื่อมต่อใดๆ ก่อนหรือภายในระยะหมดเวลานี้ ช่วงที่ใช้ได้: tRPA_min-1800
|
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต |
สถานะของคำสั่ง ค่าสถานะ HCI ที่แนะนำ 0x00 สำเร็จ 0x01 คำสั่งที่ไม่รู้จัก (หากไม่รองรับ) 0x12 พารามิเตอร์คำสั่งไม่ถูกต้อง (หากมีพารามิเตอร์อยู่นอก ช่วงที่กำหนด) |
LE_RPA_offload_Command
OCF: 0x155
| พารามิเตอร์คำสั่ง | ขนาด | วัตถุประสงค์ |
|---|---|---|
RPA_offload_opcode |
1 อ็อกเท็ต |
0x1 - เปิดใช้ฟีเจอร์เฉพาะลูกค้า 0x2 - เพิ่ม IRK ลงในรายการ 0x3 - นำ IRK ออกจากรายการ 0x4 - ล้างรายการ IRK 0x5 - อ่านรายการ IRK |
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
Event_RPA_offload_opcode |
1 อ็อกเท็ต |
0x1 - เปิดใช้ฟีเจอร์เฉพาะลูกค้า 0x2 - เพิ่ม IRK ลงในรายการ 0x3 - นำ IRK ออกจากรายการ 0x4 - ล้างรายการ IRK 0x5 - อ่านรายการ IRK |
LE_RPA_offload: Enable_cust_specific_sub_Command
Sub OCF: 0x01
| พารามิเตอร์คำสั่งย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
enable_customer_specific_feature_set |
1 อ็อกเท็ต |
0x01 - เปิดใช้ฟีเจอร์ RPA ที่ลดภาระ 0x00 - ปิดใช้ฟีเจอร์ RPA ที่ลดภาระ |
โฮสต์ต้องเปิดใช้การส่งต่อ RPA โดยอิงตามความสามารถของชิป
โปรดดู LE_Get_Vendor_Capabilities_Command
ชิปแต่ละตัวอาจมี max_irk_list_sz ที่แตกต่างกันในเฟิร์มแวร์
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
Event_cust_specific_feature_opcode |
1 อ็อกเท็ต | 0x01 [เปิดใช้ฟีเจอร์เฉพาะลูกค้า] |
LE_RPA_offload: Add_IRK_to_list_sub_Command
Sub OCF: 0x02
| พารามิเตอร์คำสั่งย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
LE_IRK |
16 อ็อกเท็ต | LE IRK (ไบต์แรก LSB) |
Address_Type |
1 อ็อกเท็ต |
0: ที่อยู่สาธารณะ 1: ที่อยู่ที่สุ่ม |
LE_Device_Address |
6 อ็อกเท็ต | ที่อยู่สาธารณะหรือที่อยู่แบบสุ่มที่เชื่อมโยงกับ IRK (LSB ไบต์แรก) |
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
Event_cust_specific_feature_opcode |
1 อ็อกเท็ต | 0x02 [เพิ่ม IRK ลงในรายการ] |
LE_IrkList_AvailableSpaces |
1 อ็อกเท็ต | รายการในรายการที่อนุญาตในชีวิตจริงหลังจากดำเนินการปัจจุบัน |
LE_RPA_offload: Remove_IRK_to_list_sub_Command
Sub OCF: 0x03
| พารามิเตอร์คำสั่งย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
Address_Type |
1 อ็อกเท็ต |
0: ที่อยู่สาธารณะ 1: ที่อยู่ที่สุ่ม |
LE_Device_Address |
6 อ็อกเท็ต | ที่อยู่สาธารณะหรือที่อยู่แบบสุ่มที่เชื่อมโยงกับ IRK |
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
Event_cust_specific_feature_opcode |
1 อ็อกเท็ต | 0x03 [นำ IRK ออกจากรายการ] |
LE_IrkList_AvailableSpaces |
1 อ็อกเท็ต | รายการในรายการที่อนุญาตในชีวิตจริงหลังจากดำเนินการปัจจุบัน |
LE_RPA_offload: Clear_IRK_list_sub_Command
Sub OCF: 0x04
| พารามิเตอร์คำสั่งย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
| ไม่มี |
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
Event_cust_specific_feature_opcode |
1 อ็อกเท็ต | 0x04 [ล้างรายการ IRK] |
LE_IrkList_AvailableSpaces |
1 อ็อกเท็ต |
รายการ IRL ที่พร้อมใช้งานหลังจากการดำเนินการปัจจุบัน [max_irk_list_sz]
|
LE_RPA_offload: Read_IRK_list_sub_Command
Sub OCF: 0x05
| พารามิเตอร์คำสั่งย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
LE_read_IRK_list_entry-index |
1 อ็อกเท็ต | ดัชนีของรายการ IRK [0, max_irk_list_sz-1] |
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
Event_cust_specific_feature_opcode |
1 อ็อกเท็ต | 0x05 [อ่านรายการ IRK] |
LE_Read_IRK_List_entry |
1 อ็อกเท็ต | ดัชนีของ IRK ที่โฮสต์ต้องการอ่านกลับ (ขนาดรายการ IRK สูงสุด คือ 32) |
LE_IRK |
16 อ็อกเท็ต | ค่า IRK |
Address_Type |
1 อ็อกเท็ต |
0: ที่อยู่สาธารณะ 1: ที่อยู่ที่สุ่ม |
LE_Device_Address |
6 อ็อกเท็ต | ที่อยู่แบบสาธารณะหรือแบบสุ่มที่เชื่อมโยงกับ IRK |
LE_Resolved_Private_Address |
6 อ็อกเท็ต | ที่อยู่ส่วนตัวที่แก้ไขได้ในปัจจุบันของ IRK นี้ |
Sniff Offload
ฟีเจอร์ Sniff Offload จะโอนการจัดการโหมด Sniff จากสแต็กโฮสต์ Bluetooth ไปยัง คอนโทรลเลอร์ Bluetooth ซึ่งจะช่วยให้ตัวควบคุมจัดการเวลาในการเข้า/ออกจากโหมด Sniff และใช้พารามิเตอร์ Sniff และ Sniff sub-rating ที่กำหนดค่าได้ ในขณะที่โฮสต์ยังคง ควบคุมการเลือกพารามิเตอร์ตามการเปลี่ยนแปลงกิจกรรมของโปรไฟล์บลูทูธ
สถานะ Sniff Offload
ส่วนนี้จะกำหนดสถานะภายในตัวควบคุมบลูทูธที่เกี่ยวข้องกับฟังก์ชัน Sniff Offload มีการกำหนดสถานะส่วนกลาง 2 สถานะเพื่อระบุสถานะของตัวควบคุมบลูทูธเมื่อ เปิดใช้ Sniff Offload มีการกำหนดสถานะเฉพาะของการเชื่อมต่อ 2 สถานะเพื่อ ระบุสถานะการเชื่อมต่อ BR/EDR เมื่อตัวควบคุมบลูทูธอยู่ในสถานะเปิดใช้การส่งผ่านข้อมูล
สถานะระดับระบบ
มีการกำหนดสถานะส่วนกลาง 2 สถานะเพื่อระบุสถานะของตัวควบคุมบลูทูธที่เกี่ยวข้องกับการเปิดใช้ Sniff Offload
สถานะปิดใช้ Sniff Offload
โดยค่าเริ่มต้น ระบบจะถือว่าตัวควบคุมบลูทูธอยู่ในสถานะ "ปิดใช้ Sniff Offload" คาดว่าตัวควบคุมบลูทูธจะจัดการคำสั่ง HCI_Sniff_Mode, HCI_Exit_Sniff_Mode และ HCI_Sniff_Subrating ที่ออกโดยโฮสต์บลูทูธ ตัวควบคุมบลูทูธจะต้อง ส่งต่อเหตุการณ์ HCI_Mode_Change และ HCI_Sniff_Subrating ไปยังโฮสต์บลูทูธตาม มาสก์เหตุการณ์ที่โฮสต์บลูทูธตั้งค่าไว้ด้วย
สถานะเปิดใช้ Sniff Offload
ระบบจะถือว่าตัวควบคุมบลูทูธอยู่ในสถานะ "เปิดใช้ Sniff Offload" หลังจากที่ จัดการ "WriteSniffOffloadEnable" เพื่อเปิดใช้ Sniff Offload ได้สำเร็จ ในสถานะนี้ คาดว่าตัวควบคุมบลูทูธจะส่งต่อเหตุการณ์ HCI_Mode_Change และ HCI_Sniff_Subrating ไปยังโฮสต์บลูทูธตามที่ฟังก์ชัน AND เชิงตรรกะของมาสก์เหตุการณ์ที่ตั้งค่าโดยโฮสต์บลูทูธและแฟล็กการระงับเหตุการณ์กำหนด
สถานะเฉพาะของการเชื่อมต่อ
เมื่อตัวควบคุมบลูทูธอยู่ในสถานะ "เปิดใช้ Sniff Offload" ACL ที่ใช้งานอยู่แต่ละรายการจะอยู่ในสถานะใดสถานะหนึ่งที่อธิบายไว้ด้านล่าง
สถานะพารามิเตอร์ที่รอดำเนินการ
ระบบจะถือว่า ACL อยู่ในสถานะ "รอดำเนินการ - พารามิเตอร์" เมื่อตัวควบคุมบลูทูธอยู่ในสถานะ "เปิดใช้การส่งต่อการดมกลิ่น" แต่โฮสต์บลูทูธยังไม่ได้ออกคำสั่งเฉพาะของผู้ให้บริการ "WriteSniffOffloadParameters" อย่างน้อย 1 ครั้งสำหรับ ACL ปัจจุบัน
สถานะเริ่มการควบคุม
ระบบจะถือว่า ACL อยู่ในสถานะ "เริ่มควบคุม" เมื่อตัวควบคุมบลูทูธอยู่ในสถานะ "เปิดใช้การส่งต่อการดมกลิ่น" และโฮสต์บลูทูธได้ออกคำสั่งเฉพาะของผู้ให้บริการ "WriteSniffOffloadParameters" อย่างน้อย 1 ครั้งสำหรับ ACL ปัจจุบัน
WriteSniffOffloadEnable
OCF: 0x310
| พารามิเตอร์คำสั่ง | ขนาด | วัตถุประสงค์ |
|---|---|---|
Enable_Sniff_Offload |
1 อ็อกเท็ต | 0x00 : ปิดใช้ 0x01 : เปิดใช้ |
Subrating_Max_Latency |
2 อ็อกเท็ต | พารามิเตอร์เวลาในการตอบสนองสูงสุดจะใช้ในการคำนวณอัตราการดมกลิ่นย่อยสูงสุดที่อุปกรณ์ระยะไกลอาจใช้ ค่าเริ่มต้น: เวลาในการตอบสนอง T*sniff* = N × 0.625 มิลลิวินาที (1 ช่องเบสแบนด์) ช่วง: 0x0002 ถึง 0xFFFE ช่วงเวลา: 1.25 มิลลิวินาทีถึง 40.9 วินาที |
Subrating_Min_Remote_Timeout |
2 อ็อกเท็ต | ระยะหมดเวลาโหมดดมกลิ่นขั้นต่ำ (T*sniff_mode_timeout*) ที่อุปกรณ์ระยะไกลอาจใช้ ค่าเริ่มต้น: 0x0000 ระยะหมดเวลา = N × 0.625 มิลลิวินาที (1 ช่องเบสแบนด์) ช่วง: 0x0000 ถึง 0xFFFE เวลา ช่วง: 0 วินาทีถึง 40.9 วินาที |
Subrating_Min_Local_Timeout |
2 อ็อกเท็ต | ระยะหมดเวลาโหมดดมกลิ่นขั้นต่ำ (T*sniff_mode_timeout*) ที่อุปกรณ์ในพื้นที่อาจใช้ ค่าเริ่มต้น: 0x0000 หมดเวลา = N × 0.625 มิลลิวินาที (1 ช่องเบสแบนด์) ช่วง: 0x0000 ถึง 0xFFFE เวลา ช่วง: 0 วินาทีถึง 40.9 วินาที |
Suppress_Mode_Change_Event |
1 อ็อกเท็ต | 0x00 : คอนโทรลเลอร์บลูทูธต้องรายงานเหตุการณ์ HCI Mode_Change ไปยังโฮสต์
โดยขึ้นอยู่กับการกำหนดค่าที่ตั้งไว้ในคำสั่ง HCI_Set_Event_Mask 0x01 : คอนโทรลเลอร์บลูทูธ ต้องไม่รายงานเหตุการณ์ HCI Mode_Change ไปยังโฮสต์ |
Suppress_Sniff_Subrating_Event |
1 อ็อกเท็ต | 0x00 : คอนโทรลเลอร์บลูทูธต้องรายงานเหตุการณ์ HCI Sniff_Subrating ไปยังโฮสต์
โดยขึ้นอยู่กับการกำหนดค่าที่ตั้งไว้ในคำสั่ง HCI_Set_Event_Mask 0x01 : คอนโทรลเลอร์บลูทูธ ต้องไม่รายงานเหตุการณ์ HCI Sniff_Subrating ไปยังโฮสต์ |
WriteSniffOffloadParameters
OCF: 0x311
| พารามิเตอร์คำสั่ง | ขนาด | วัตถุประสงค์ |
|---|---|---|
Connection_Handle |
2 อ็อกเท็ต | แฮนเดิลการเชื่อมต่อ ACL ของ BR/EDR แบบ 16 บิต ช่วง: 0x0000 ถึง 0x0EFF |
Sniff_Max_Interval |
2 อ็อกเท็ต | - ช่วงที่กำหนดโดย Bluetooth SIG ซึ่งโดยปกติจะใช้สำหรับการเข้าสู่โหมดดมกลิ่น ช่วง: 0x0002 ถึง 0xFFFE; ใช้ได้เฉพาะค่าคู่เท่านั้น ช่วงที่ต้องระบุ: 0x0006 ถึง 0x0540 เวลา = N × 0.625 มิลลิวินาที ช่วงเวลา: 1.25 มิลลิวินาทีถึง 40.9 วินาที – กรณีพิเศษ 0x0000 : ใช้เพื่อเลือก "Push-Active" โหมด Sniff-Offload 0x0001 : ใช้เพื่อเลือกโหมด Sniff-Offload "Prefer-Active" |
Sniff_Min_Interval |
2 อ็อกเท็ต | ช่วง: 0x0002 ถึง 0xFFFE; ใช้ได้เฉพาะค่าคู่เท่านั้น ช่วงที่ต้องระบุ: 0x0006 ถึง 0x0540 เวลา = N × 0.625 มิลลิวินาที ช่วงเวลา: 1.25 มิลลิวินาที ถึง 40.9 วินาที |
Sniff_Attempts |
2 อ็อกเท็ต | จำนวนช่องรับสัญญาณเบสแบนด์สำหรับการพยายามดมกลิ่น ความยาว = N × 1.25 มิลลิวินาที ช่วง: 0x0001 ถึง 0x7FFF ช่วงเวลา: 1.25 มิลลิวินาที ถึง 40.9 วินาที ช่วงที่ต้องระบุสำหรับตัวควบคุม: 1 ถึง T*sniff* ÷ 2 |
Sniff_Timeout |
2 อ็อกเท็ต | จำนวนสล็อตรับสัญญาณเบสแบนด์สำหรับการหมดเวลาการดมกลิ่น ความยาว = N × 1.25 มิลลิวินาที ช่วง: 0x0000 ถึง 0x7FFF ช่วงเวลา: 0 มิลลิวินาที ถึง 40.9 วินาที ช่วงที่ต้องระบุสำหรับคอนโทรลเลอร์: 0 ถึง 0x0028 |
Link_Inactivity_Timeout |
2 อ็อกเท็ต | ค่าการหมดเวลาเป็นมิลลิวินาที Link_Inactivity Timer started/reset at every HCI-ACL transaction. เมื่อตัวจับเวลานี้หมดอายุ คอนโทรลเลอร์จะเริ่มเข้าสู่โหมด Sniff |
Subrating_Max_Latency |
2 อ็อกเท็ต | พารามิเตอร์เวลาในการตอบสนองสูงสุดจะใช้ในการคำนวณอัตราการดมกลิ่นย่อยสูงสุดที่อุปกรณ์ระยะไกลอาจใช้ ค่าเริ่มต้น: เวลาในการตอบสนอง T*sniff* = N × 0.625 มิลลิวินาที (1 ช่องเบสแบนด์) ช่วง: 0x0002 ถึง 0xFFFE ช่วงเวลา: 1.25 มิลลิวินาทีถึง 40.9 วินาที |
Subrating_Min_Remote_Timeout |
2 อ็อกเท็ต | ระยะหมดเวลาโหมดดมกลิ่นขั้นต่ำ (T*sniff_mode_timeout*) ที่อุปกรณ์ระยะไกลอาจใช้ ค่าเริ่มต้น: 0x0000 ระยะหมดเวลา = N × 0.625 มิลลิวินาที (1 ช่องเบสแบนด์) ช่วง: 0x0000 ถึง 0xFFFE เวลา ช่วง: 0 วินาทีถึง 40.9 วินาที |
Subrating_Min_Local_Timeout |
2 อ็อกเท็ต | ระยะหมดเวลาโหมดดมกลิ่นขั้นต่ำ (T*sniff_mode_timeout*) ที่อุปกรณ์ในพื้นที่อาจใช้ ค่าเริ่มต้น: 0x0000 หมดเวลา = N × 0.625 มิลลิวินาที (1 ช่องเบสแบนด์) ช่วง: 0x0000 ถึง 0xFFFE เวลา ช่วง: 0 วินาทีถึง 40.9 วินาที |
Allow_Exit_Sniff_On_Rx |
1 อ็อกเท็ต | Flag เพื่อควบคุมการออกจากโหมดดมกลิ่นในธุรกรรม HCI-ACL ที่มีทิศทางการรับ 0x00 : Do not exit sniff on Rx. 0x01 : Exit Sniff on Rx Receive-direction HCI-ACL is defined as ACL packet transmission from controller to host over HCI. |
Allow_Exit_Sniff_On_Tx |
1 อ็อกเท็ต | Flag เพื่อควบคุมการออกจากโหมดดมกลิ่นในธุรกรรม HCI-ACL ทิศทางการส่ง 0x00 : Do not exit sniff on Tx. 0x01 : Exit Sniff on Tx Transmit-direction HCI-ACL is defined as ACL packet transmission from host to controller over HCI. |