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.06 byte[0] = 0x01 byte[1] = 0x06 การเพิ่มฟีเจอร์ในเวอร์ชันต่อไปนี้ v1.06:
|
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 0 = ไม่รองรับ 1 = รองรับ |
sniff_offload_support |
1 อ็อกเท็ต |
รองรับคำสั่ง Sniff Offload ในตัวควบคุมบลูทูธ 0 = ไม่รองรับ 1 = รองรับ |
big_set_channel_map_classification_support |
2 อ็อกเท็ต |
รองรับ sub_opcode ของฟีเจอร์การจัดประเภทแผนที่ช่องสัญญาณ LE Broadcast บิต 0 - รองรับ sub_opcode 0x01 (ตั้งค่าแผนที่ช่องสัญญาณ BIG โดยใช้แฮนเดิลการเชื่อมต่อ LE ACL) บิต 1-15 - สงวนไว้ ค่าของบิต: 0 0 = ไม่รองรับ 1 = รองรับ |
vendor_connection_handle_min |
2 อ็อกเท็ต | รายงานค่าต่ำสุดของแฮนเดิลการเชื่อมต่อของผู้ให้บริการสำหรับเหตุการณ์ของผู้ให้บริการ HCI ที่ได้รับผ่านแพ็กเก็ต ACL แฮนเดิล 0 ใช้เพื่อระบุว่าไม่มีการรองรับการรายงานเหตุการณ์ของผู้ให้บริการผ่านแพ็กเก็ตข้อมูล ACL |
vendor_connection_handle_max |
2 อ็อกเท็ต | รายงานค่าสูงสุดของแฮนเดิลการเชื่อมต่อของผู้ให้บริการสำหรับเหตุการณ์ของผู้ให้บริการ HCI ที่ได้รับผ่านแพ็กเก็ต ACL แฮนเดิล 0 ใช้เพื่อระบุว่าไม่มีการรองรับการรายงานเหตุการณ์ของผู้ให้บริการผ่านแพ็กเก็ตข้อมูล ACL |
connection_proximity_threshold_support |
1 อ็อกเท็ต |
ระบุว่าชิปรองรับเกณฑ์การเชื่อมต่อที่ใกล้เคียง 0 = ไม่รองรับ 1 = รองรับ |
ผลการสแกนแบบเป็นชุด
เป้าหมายการออกแบบคือการปรับปรุงวิธีส่งการแจ้งเตือนเหตุการณ์การตอบกลับการสแกนบลูทูธ 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 อ็อกเท็ต |
ตั้งค่าระดับการแจ้งเตือน (เป็น %) สำหรับกลุ่มพื้นที่เก็บข้อมูลแต่ละกลุ่ม
[ช่วง: 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 Broadcaster 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 - ที่อยู่ของ APCF Broadcaster 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 จะผ่านตัวกรองได้ก็ต่อเมื่อ มีรายการทั้งหมดในรายการ หากเลือกตรรกะ "หรือ" แพ็กเก็ต 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 - ล้าง ลบจะลบที่อยู่ผู้แพร่ภาพที่ระบุใน ตัวกรองที่ระบุ Clear จะล้างที่อยู่การออกอากาศทั้งหมดในตัวกรองที่ระบุ |
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: transport_discovery_service_sub_cmd
คำสั่งย่อยนี้ใช้เพื่อเพิ่มหรือลบตัวกรอง Transport Discovery Service (TDS) หรือเพื่อล้าง
รายการตัวกรอง TDS สำหรับการกรองในชิป ใช้ read_extended_features_sub_cmd เพื่อตรวจสอบ
ว่าคำสั่งนี้รองรับหรือไม่
Sub OCF: 0x08
| พารามิเตอร์คำสั่งย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
APCF_Action |
1 อ็อกเท็ต |
0x00 - เพิ่ม 0x01 - ลบ 0x02 - ล้าง ลบจะลบตัวกรอง TDS ที่ระบุในตัวกรองที่ระบุ Clear จะล้างตัวกรอง TDS ทั้งหมดในตัวกรองที่ระบุ |
APCF_Filter_Index |
1 อ็อกเท็ต | ดัชนีตัวกรอง (0, max_filter-1) |
Org_ID |
1 อ็อกเท็ต | รหัสองค์กรที่กำหนดโดย Bluetooth SIG ไม่สนใจเมื่อ APCF_Action เป็น 0x02 (ล้าง) |
TDS_Flags |
1 อ็อกเท็ต | TDS flags to match. ไม่สนใจเมื่อ APCF_Action เป็น 0x02 (ล้าง) |
TDS_Flags_Mask |
1 อ็อกเท็ต | มาสก์สำหรับแฟล็ก TDS ไม่สนใจเมื่อ APCF_Action เป็น 0x02 (ล้าง) |
Transport_Data_Length |
1 อ็อกเท็ต | ความยาวของ Transport_Data ไม่สนใจเมื่อ APCF_Action เป็น 0x02 (ล้าง) |
Transport_Data |
ขนาดตัวแปร | ขนาดแตกต่างกันไปตาม Transport_Data_Length ส่งข้อมูลบล็อกเพื่อจับคู่ ไม่สนใจเมื่อ APCF_Action เป็น 0x02 (ล้าง) |
Transport_Data_Mask_Length |
1 อ็อกเท็ต | ความยาวของ Transport_Data_Mask ค่านี้ต้องเท่ากับ Transport_Data_Length ไม่สนใจเมื่อ APCF_Action เป็น 0x02 (ล้าง) |
Transport_Data_Mask |
ขนาดตัวแปร | ขนาดแตกต่างกันไปตาม Transport_Data_Mask_Length มาสก์สำหรับข้อมูลบล็อกการขนส่ง โดยควรมีความยาวเท่ากับ Transport_Data ไม่สนใจเมื่อ APCF_Action เป็น 0x02 (ล้าง) |
Meta_Data_Type |
1 อ็อกเท็ต |
0x00 - ไม่ถูกต้อง 0x01 - แฮช Wi-Fi NAN ไม่สนใจเมื่อ APCF_Action เป็น 0x02 (ล้าง)
|
Meta_Data_Length |
1 อ็อกเท็ต | ความยาวของ Meta_Data ไม่สนใจเมื่อ APCF_Action เป็น 0x02 (ล้าง) |
Meta_Data |
ขนาดตัวแปร | ขนาดแตกต่างกันไปตาม Meta_Data_Length ข้อมูลเมตาที่จะจับคู่ ไม่สนใจเมื่อ APCF_Action เป็น 0x02 (ล้าง) |
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
APCF_opcode |
1 อ็อกเท็ต | 0x08 - บริการค้นหาการรับส่ง APCF |
APCF_Action |
1 อ็อกเท็ต | APCF_Action ของคำสั่งตอบกลับ |
APCF_AvailableSpaces |
1 อ็อกเท็ต | จำนวนรายการฟรีที่ยังใช้ได้ในตารางตัวกรอง TDS |
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 - ล้าง ลบจะลบประเภทโฆษณาที่ระบุในตัวกรองที่ระบุ Clear จะล้างประเภทโฆษณาทั้งหมดในตัวกรองที่ระบุ |
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 อ็อกเท็ต | เวลาทั้งหมดที่ดำเนินการ 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 )
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 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
คำสั่งดูข้อมูลการแก้ไขข้อบกพร่องของตัวควบคุม
วัตถุประสงค์ขององค์ประกอบข้อมูลนี้คือการรับข้อมูลการแก้ไขข้อบกพร่องของตัวควบคุม จากโฮสต์ในรูปแบบไบนารีสำหรับการประมวลผลภายหลังและการวิเคราะห์ ซึ่งจะช่วยแก้ไขข้อบกพร่องของปัญหาในฟิลด์และมอบชุดเครื่องมือให้วิศวกร เพื่อบันทึกข้อมูลสำหรับการวิเคราะห์ ผู้ควบคุมข้อมูลสามารถให้ข้อมูล เมื่อโฮสต์ขอผ่านเหตุการณ์ (เหตุการณ์ย่อยข้อมูลการแก้ไขข้อบกพร่องของผู้ควบคุมข้อมูล) หรือโดยอิสระเมื่อผู้ควบคุมข้อมูลต้องการ ตัวอย่างการใช้งานอาจเป็นการ รายงานข้อมูลสถานะเฟิร์มแวร์ ข้อมูล Crash Dump ข้อมูลการบันทึก เป็นต้น
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 อ็อกเท็ต | ขนาดสูงสุดของ MTU ของ L2CAP ที่มีแพ็กเก็ตเสียงที่เข้ารหัส |
Codec_Information |
32 อ็อกเท็ต |
ข้อมูลเฉพาะของตัวแปลงรหัส
ตัวแปลงรหัส SBC:
ดูองค์ประกอบข้อมูลเฉพาะของตัวแปลงรหัส SBC ใน A2DP v1.3 ตัวแปลงรหัส AAC:
ดูองค์ประกอบข้อมูลเฉพาะของตัวแปลงรหัส AAC ใน A2DP v1.3 ตัวแปลงสัญญาณ LDAC:
Octet 0-3: รหัสผู้ให้บริการ
อ็อกเท็ต 4-5: รหัสตัวแปลงรหัส
Octet 6: ดัชนีบิตเรต:
ไบต์ที่ 7: โหมดช่อง LDAC Octet 8-31: reserved ตัวแปลงรหัส Opus:
Octet 0-3: Vendor ID
อ็อกเท็ต 4-5: รหัสตัวแปลงรหัส Octet 6-31: สงวนไว้ ตัวแปลงรหัสอื่นๆ ทั้งหมด: Octet 0-31: reserved |
ระบบจะสร้างเหตุการณ์ 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) คอนโทรลเลอร์จะรายงานเหตุการณ์ใกล้ถึง 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 หากไม่รองรับประเภทตัวแปลงรหัสบิต 1 หน่วย: มิลลิวินาที |
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 |
2 อ็อกเท็ต |
ช่วงเผื่อเวลาบัฟเฟอร์สูงสุดของประเภทตัวแปลงรหัส Bit 1 ที่ระบุใน
Audio_Codec_Type_Supported ค่านี้ต้องเป็น 0 หากไม่รองรับประเภทตัวแปลงรหัสบิต 1 หน่วย: มิลลิวินาที |
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 |
2 อ็อกเท็ต |
ช่วงเผื่อเวลาบัฟเฟอร์ขั้นต่ำของประเภทตัวแปลงรหัส Bit 1 ที่ระบุใน
Audio_Codec_Type_Supported ค่านี้ต้องเป็น 0 หากไม่รองรับประเภทตัวแปลงรหัสบิต 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 อ็อกเท็ต |
เวลาบัฟเฟอร์เสียงปัจจุบันในตัวควบคุมบลูทูธ หน่วย: มิลลิวินาที |
เกณฑ์ระยะใกล้ของการเชื่อมต่อ (v1.06)
LE_Add_Device_To_Filter_Accept_List_With_Proximity_Threshold_Command
คำสั่งนี้ใช้เพื่อระบุเกณฑ์ความใกล้เคียงของการเชื่อมต่อ (การสูญเสียเส้นทางและ RSSI) เมื่อเพิ่มอุปกรณ์ลงในรายการที่ยอมรับของตัวกรอง
ต้องพยายามเชื่อมต่อเมื่อสัญญาณมีค่าการสูญเสียเส้นทางต่ำกว่าเกณฑ์การสูญเสียเส้นทางเท่านั้น
หาก TxPower ไม่พร้อมใช้งานหรือใช้ No Path Loss filtering จะต้องพยายามเชื่อมต่อเมื่อสัญญาณมีค่า RSSI สูงกว่าเกณฑ์ RSSI ที่ระบุเท่านั้น
คุณใช้คำสั่งนี้แทนคำสั่งมาตรฐานของบลูทูธ LE Add Device To Filter Accept List command ได้
หากเรียกใช้คำสั่งนี้ด้วยค่าเกณฑ์ที่แตกต่างกันในขณะที่อุปกรณ์อยู่ในรายการที่ยอมรับของตัวกรองอยู่แล้ว คุณต้องอัปเดตค่าเกณฑ์
ข้อมูลอ้างอิงพื้นฐาน: ข้อกำหนด BT Core 6.2, 7.8.16 (คำสั่ง LE Add Device To Filter Accept List)
ห้ามใช้คำสั่งนี้ในกรณีต่อไปนี้
- นโยบายตัวกรองการโฆษณาใช้รายการที่ยอมรับของตัวกรองและเปิดใช้การโฆษณา
- นโยบายตัวกรองการสแกนใช้รายการที่ยอมรับของตัวกรองและเปิดใช้การสแกน หรือ
- นโยบายตัวกรองผู้เริ่มต้นใช้รายการที่ยอมรับตัวกรองและคำสั่ง
HCI_LE_Create_ConnectionหรือHCI_LE_Extended_Create_Connectionอยู่ระหว่างรอดำเนินการ
LE Remove Device From Filter Accept List ต้องนำอุปกรณ์ออกจากรายการที่ยอมรับของตัวกรองที่เพิ่มโดยคำสั่งนี้
Opcode: 0xFD66 (OCF: 0x166)
| พารามิเตอร์คำสั่ง | ขนาด | วัตถุประสงค์ |
|---|---|---|
Address_Type |
1 อ็อกเท็ต |
0x00 - ที่อยู่อุปกรณ์สาธารณะ 0x01 - ที่อยู่อุปกรณ์แบบสุ่ม 0xFF - อุปกรณ์ที่ส่งโฆษณาแบบไม่ระบุชื่อ ค่าอื่นๆ ทั้งหมด - สงวนไว้สำหรับการใช้งานในอนาคต |
LE_Device_Address |
6 อ็อกเท็ต |
ที่อยู่สาธารณะหรือแบบสุ่ม ระบบจะไม่สนใจที่อยู่เมื่อตั้งค่า Address_Type เป็น 0xFF |
Connection_Path_Loss_Threshold |
1 อ็อกเท็ต |
ช่วง: 0 ถึง +100, +127 [ในหน่วย dB] ระบุเกณฑ์การสูญเสียเส้นทางการเชื่อมต่อเพื่อเริ่มการเชื่อมต่อกับอุปกรณ์เมื่อตรวจพบ (0 ถึง +100) ค่าการสูญเสียเส้นทางควรต่ำกว่าเพื่อเริ่มการเชื่อมต่อ ใช้ค่า +127 เพื่อระบุ No Path Loss filtering เมื่อ TxPower ไม่พร้อมใช้งานหรือค่านี้เป็น +127 คำสั่งนี้จะต้องกลับไปใช้การกรอง RSSI ด้านล่าง
|
Connection_RSSI_Threshold |
1 อ็อกเท็ต |
ช่วง: -127 ถึง +20, +127 [ในหน่วย dBm] ระบุเกณฑ์ RSSI ของการเชื่อมต่อเพื่อเริ่มการเชื่อมต่อกับอุปกรณ์เมื่อตรวจพบ (-127 ถึง +20) ค่า RSSI ต้องสูงกว่าเพื่อเริ่มการเชื่อมต่อ การกรอง RSSI เป็นการสำรองเมื่อ TxPower ไม่พร้อมใช้งานหรือเมื่อมีการระบุเกณฑ์การสูญเสียเส้นทางเป็น +127 ใช้ค่า +127 เพื่อระบุ No RSSI filtering
|
เมื่อทั้งเกณฑ์การสูญเสียเส้นทางและเกณฑ์ RSSI เป็น +127 คำสั่งนี้ต้องทำงานเหมือนกับมาตรฐานบลูทูธ LE Add Device To Filter Accept List command
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ |
เหตุการณ์ 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 |
การจัดประเภทแผนที่ช่องออกอากาศของ LE (v1.06)
ระดับสัญญาณรบกวนวิทยุในช่องสัญญาณบลูทูธเป็นปัจจัยสำคัญที่กำหนดความสำเร็จของการรับแพ็กเก็ต กลไกการจัดประเภทแผนที่ช่องเป็นสิ่งจำเป็นในการระบุคุณภาพของช่องเพื่อเพิ่มประสิทธิภาพความน่าเชื่อถือในการส่ง ในสถานการณ์แหล่งที่มาของการบรอดแคสต์ LE Audio มาตรฐาน แหล่งที่มามักจะไม่ทราบว่าอุปกรณ์ใดกำลังฟังการบรอดแคสต์อยู่ ดังนั้น แหล่งที่มาของการออกอากาศจึงต้องอาศัยการประเมินคุณภาพของช่องสัญญาณของตนเองเท่านั้นในการกำหนดช่องสัญญาณเสียง BIG อย่างไรก็ตาม การกำหนดช่องสัญญาณเสียง BIG ที่กำหนดโดยแหล่งที่มาเพียงอย่างเดียวอาจไม่เหมาะสำหรับเครื่องรับทุกเครื่องเนื่องจากสภาพแวดล้อมที่แตกต่างกันหรือมีแหล่งที่มาของการรบกวนในพื้นที่ใกล้กับเครื่องรับแต่ละเครื่อง หาก Broadcast Receiver สามารถสื่อสารข้อมูลการจัดประเภทช่องกับแหล่งที่มาของการออกอากาศได้ แหล่งที่มาจะปรับการกำหนดช่องสัญญาณเสียง BIG ตามนั้น ซึ่งจะช่วยเพิ่มความเสถียรของการส่งและการรับสตรีมการออกอากาศอย่างมากเมื่อเทียบกับการรบกวน
ตัวอย่างเช่น ในแอปพลิเคชันการแชร์เสียงส่วนตัว (PAS) จะมีการสร้างลิงก์ LE ACL (ทำหน้าที่เป็นผู้ช่วยในการออกอากาศเพื่อซิงค์กับแหล่งที่มาของการออกอากาศในพื้นที่) ระหว่างหูฟังเอียร์บัดกับแหล่งที่มาของการออกอากาศ การเชื่อมต่อ ACL LE ที่มีอยู่สามารถใช้เพื่อระบุข้อมูลการจัดประเภทช่องจากหูฟังเอียร์บัด (ผ่านLL_CHANNEL_STATUS_INDแพ็กเก็ต) ไปยังแหล่งที่มาของการออกอากาศ จากนั้นแหล่งที่มาของการออกอากาศจะใช้ข้อมูลนี้เพื่อปรับแต่งการกำหนดช่องสัญญาณเสียง BIG
ดังนั้นเราจึงกำหนด LE_BIG_Set_Channel_Map_Classification_Command คำสั่งนี้ช่วยให้การจัดการการกำหนดช่องสัญญาณเสียงในแหล่งที่มาของ BIG พิจารณาข้อมูลการจัดประเภทช่องที่ได้รับจากอุปกรณ์ต่อพ่วง คำสั่งนี้จะอนุญาตให้ตั้งค่าแฮนเดิลการเชื่อมต่อ ACL LE ที่เฉพาะเจาะจงกับคอนโทรลเลอร์ เมื่อได้รับข้อมูลนี้แล้ว ตัวควบคุมจะกำหนดแผนที่ช่อง BIG โดยอิงตามข้อมูลการจัดประเภทช่องที่เชื่อมโยงกับการเชื่อมต่อ LE ACL ที่ระบุ
การใช้ VSC นี้กำหนดให้แหล่งที่มาของการออกอากาศต้องพิจารณาแหล่งที่มาของการจัดประเภทช่องหลายแหล่งเมื่อสร้างการกำหนดช่องสัญญาณเสียง BIG เช่น คอนโทรลเลอร์อาจระบุการตัดกันของการจัดประเภทช่องทาง "ดี" ที่รายงานโดยอุปกรณ์ระยะไกลที่เชื่อมต่อ และนำไปใช้กับแผนที่ช่องทาง BIG อัลกอริทึมที่เฉพาะเจาะจงสำหรับการผสานการจัดประเภทช่องทางเหล่านี้ขึ้นอยู่กับการพิจารณาของผู้ให้บริการควบคุมแต่ละราย ซึ่งจะช่วยให้เกิดนวัตกรรมและการเพิ่มประสิทธิภาพ
LE_BIG_Set_Channel_Map_Classification_Command
Opcode: 0xFD65 (OCF: 0x165)
| พารามิเตอร์คำสั่ง | ขนาด | วัตถุประสงค์ |
|---|---|---|
Sub_opcode |
1 อ็อกเท็ต |
0x01 - ตั้งค่าการกำหนดช่องสัญญาณเสียง BIG โดยใช้แฮนเดิลการเชื่อมต่อ ACL ของ LE 0x02-0x0E - สงวนไว้สำหรับการใช้งานในอนาคต |
Set_BIG_Channel_Action |
1 อ็อกเท็ต |
การดำเนินการเพื่อเพิ่มหรือลบ BD_ADDR หรือแฮนเดิลการเชื่อมต่อ LE ACL หรือล้างทั้งหมด 0x00 - เพิ่ม 0x01 - ลบ 0x02 - ล้าง 0x03-0xFF - สงวนไว้ |
BIG_Handle |
1 อ็อกเท็ต |
ระบุแฮนเดิล BIG ที่จะอัปเดตด้วยการจัดประเภทช่องของอุปกรณ์ต่อพ่วง ช่วง: 0x00 ถึง 0xEF |
cmd_para[] |
ตัวแปร | พารามิเตอร์ตัวแปรจะขึ้นอยู่กับ Set_BIG_Channel_opcode |
LE_BIG_Set_Channel_Map_Classification_Command_by_Conn_Handle
Sub OCF: 0x01
| พารามิเตอร์คำสั่ง | ขนาด | วัตถุประสงค์ |
|---|---|---|
Sub_opcode |
1 อ็อกเท็ต |
0x01 - ตั้งค่าการกำหนดช่องสัญญาณเสียง BIG โดยใช้แฮนเดิลการเชื่อมต่อ ACL ของ LE 0x02-0x0E - สงวนไว้สำหรับการใช้งานในอนาคต |
Set_BIG_Channel_Action |
1 อ็อกเท็ต |
การดำเนินการเพื่อเพิ่มหรือลบแฮนเดิลการเชื่อมต่อ ACL ของ LE หรือล้างทั้งหมด 0x00 - เพิ่ม 0x01 - ลบ 0x02 - ล้าง 0x03-0xFF - สงวนไว้ |
BIG_Handle |
1 อ็อกเท็ต |
ระบุแฮนเดิล BIG เพื่ออัปเดตด้วยการจัดประเภทแชแนลของอุปกรณ์ต่อพ่วง ช่วง: 0x00 ถึง 0xEF |
Number_of_LE_ACL_Connections |
1 อ็อกเท็ต |
ระบุจำนวนการเชื่อมต่อ LE ACL ที่จะใช้ในการอัปเดตการกำหนดช่องสัญญาณเสียง BIG ไม่สนใจเมื่อ Set_BIG_Channel_Action เป็น Clear (0x02) ช่วง: 0x01 ถึง 0xFF |
LE_ACL_Connection_Handles |
ตัวแปร (Number_of_LE_ACL_Connections * 2 อ็อกเท็ต) |
ขนาดตัวแปรตาม Number_of_LE_ACL_Connections ไม่สนใจเมื่อ Set_BIG_Channel_Action เป็น Clear (0x02) ช่วงแฮนเดิลการเชื่อมต่อ: 0x0000 ถึง 0x0EFF |
ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้
| พารามิเตอร์การคืนค่า | ขนาด | วัตถุประสงค์ |
|---|---|---|
Status |
1 อ็อกเท็ต | สถานะคำสั่งเสร็จสมบูรณ์ ส่งคืน SUCCESS เมื่อเพิ่ม conn_handles ของ LE ACL ทั้งหมดแล้ว |
Set_BIG_Channel_opcode |
1 อ็อกเท็ต | Echo back command's Set_BIG_Channel_opcode |
Set_BIG_Channel_Action |
1 อ็อกเท็ต | Set_BIG_Channel_Action ของคำสั่ง Echo Back |
BIG_Handle |
1 อ็อกเท็ต | BIG_Handle ของคำสั่ง Echo Back |
เหตุการณ์ย่อยของรายงานคุณภาพบลูทูธ
เหตุการณ์นี้บ่งบอกถึงสิ่งต่อไปนี้อย่างใดอย่างหนึ่ง ได้แก่ เกิดเหตุการณ์คุณภาพของบลูทูธ , คอนโทรลเลอร์อัปโหลดการติดตามข้อความ LMP/LL และการติดตามการจัดกำหนดการ แบบหลายลิงก์/การทำงานร่วมกันของบลูทูธ หรือคอนโทรลเลอร์ทิ้งข้อมูลการแก้ไขข้อบกพร่อง
รหัสเหตุการณ์ย่อย = 0x58 [Quality_Report_Id = 0x01 ~ 0x04, Link Quality related event]
| พารามิเตอร์เหตุการณ์ย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
Quality_Report_Id |
1 อ็อกเท็ต |
0x01: การรายงานคุณภาพในโหมดการตรวจสอบ 0x02: Approaching LSTO. 0x03: เสียง A2DP ขาดๆ หายๆ 0x04: (e)SCO Voice Choppy. 0x05 ~ 0x06: จองไว้ 0x07: เสียง LE ขาดๆ หายๆ 0x08: เชื่อมต่อไม่สำเร็จ 0x09 ~ 0xFF: Reserved. |
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 Radio Active: ตั้งค่าเพื่อระบุว่า WLAN 5G/6G Radio ใช้งานอยู่ บิต 4-15 - สงวนไว้ |
| พารามิเตอร์เฉพาะของผู้ให้บริการ | (ความยาวทั้งหมดของพารามิเตอร์ - TBD) * อ็อกเท็ต | เพื่อให้ผู้ให้บริการตัวควบคุมได้รับพารามิเตอร์ที่เฉพาะเจาะจงของผู้ให้บริการมากขึ้น |
รหัสเหตุการณ์ย่อย = 0x58 [Quality_Report_Id = 0x05, เหตุการณ์การอักเสบรูท]
เหตุการณ์นี้บ่งชี้ว่า 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 (บลูทูธคลาสสิก) และ 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] ระดับกำลังส่งเฉลี่ยของลิงก์ BR/EDR ทั้งหมด |
BR_RDR_Rx_Total_Time |
4 อ็อกเท็ต | [เป็นมิลลิวินาที] เวลาทั้งหมดในสถานะ Rx เฉพาะของ BR/EDR (รับจากการเข้าชม ACL/SCO/eSCO) |
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 เฉพาะ LE (รับจาก ACL/BIS/CIS หรือการเข้าชมการสแกน 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 |
LE_RX_Active_Scan_total_Time |
4 อ็อกเท็ต | [ในหน่วยมิลลิวินาที] ระยะเวลา (มิลลิวินาที) ในเวลาที่ LE สแกน RX ทำงาน |
รหัสเหตุการณ์ย่อย = 0x58 [Quality_Report_Id = 0x09~0x0A, เหตุการณ์สถิติ RF ขั้นสูง]
เหตุการณ์สถิติ RF (ความถี่วิทยุ) ขั้นสูงของบลูทูธจะแสดงเมตริกประสิทธิภาพโดยละเอียด เกี่ยวกับลักษณะการทำงานของวิทยุของตัวควบคุมบลูทูธ ระบบจะทริกเกอร์เหตุการณ์ได้ 2 วิธีดังนี้
- โดยทริกเกอร์ (0x09): ระบบจะส่งรายงานแบบครั้งเดียวเพื่อตอบสนองต่อคำสั่งที่เฉพาะเจาะจง
- โดย Monitor (0x0A): ตัวควบคุมจะส่งรายงานเป็นระยะๆ ตามช่วงเวลาที่ระบุ
พารามิเตอร์ของเหตุการณ์คือตัวนับแพ็กเก็ตที่ติดตามลักษณะการทำงานของวิทยุต่างๆ ในช่วงระยะเวลาที่ระบุ
เมตริกหลักและวัตถุประสงค์ของเมตริก
- สถิติพลังงานการส่ง: ตัวนับเหล่านี้จะติดตามแพ็กเก็ตที่ส่งโดยใช้การกำหนดค่าพลังงานที่แตกต่างกัน โดยจะแยกความแตกต่างระหว่างเครื่องขยายสัญญาณภายใน (iPA) และภายนอก (ePA) รวมถึงโหมดความหลากหลายของเสาอากาศ (Div) หรือ Beamforming (BF) ต่างๆ ซึ่งจะช่วย กำหนดการตั้งค่ากำลังและเสาอากาศที่ใช้บ่อยที่สุด
- กลุ่มตัวบ่งชี้ความแรงของสัญญาณที่ได้รับ (RSSI): พารามิเตอร์เหล่านี้จัดหมวดหมู่ แพ็กเก็ตที่ได้รับตามความแรงของสัญญาณ การระบุจำนวนแพ็กเก็ตภายใน ช่วง RSSI ที่เฉพาะเจาะจง (เช่น น้อยกว่า -90 dBm, -70 ถึง -75 dBm) จะช่วยให้รายงานแสดง ภาพรวมคุณภาพลิงก์ได้อย่างชัดเจน จำนวนที่สูงในกลุ่มสัญญาณ "อ่อน" (เช่น < -90 dBm) แสดงว่าการเชื่อมต่อไม่ดี
- เดลต้า RSSI: เมตริกนี้จะวัดความแตกต่างของความแรงของสัญญาณระหว่าง เสาอากาศรับสัญญาณ 2 เสา (หากมี) เคาน์เตอร์จะติดตามจำนวนแพ็กเก็ตที่มีเดลต้า RSSI ภายในช่วงต่างๆ เดลต้าขนาดใหญ่ (เช่น >11 dBm) อาจบ่งบอกถึงการรบกวนหรือสิ่งกีดขวาง ทางกายภาพ เนื่องจากเสาอากาศหนึ่งรับสัญญาณได้แรงกว่าอีกเสาอากาศหนึ่งมาก
- การสลับเสาอากาศและการส่งซ้ำ: รายงานจะนับความถี่ที่ตัวควบคุม สลับระหว่างเสาอากาศและติดตามแพ็กเก็ตที่ส่งซ้ำ (ReTX) การส่งซ้ำจำนวนมาก มักบ่งชี้ว่าการเชื่อมต่อมีสัญญาณอ่อนหรือไม่เสถียร จึงต้อง ส่งแพ็กเก็ตอีกครั้ง
- คุณภาพของช่อง: พารามิเตอร์เหล่านี้จะให้ข้อมูลสรุประดับสูงเกี่ยวกับสถานะ ของช่องทางการสื่อสารต่างๆ โดยจัดหมวดหมู่เป็น "ดี" "พอใช้" "ไม่ดี" หรือ "แย่มาก" ตาม RSSI ซึ่งจะแสดงภาพรวมของสภาพแวดล้อม RF ในทันที
- คิวบัฟเฟอร์ TX: ส่วนนี้จะตรวจสอบจำนวนแพ็กเก็ตที่รอในบัฟเฟอร์การส่งของ คอนโทรลเลอร์สำหรับลิงก์ประเภทต่างๆ เช่น ACL (ลิงก์เชิงตรรกะแบบเชื่อมต่อที่ไม่พร้อมกัน), LECONN (การเชื่อมต่อ LE) และ LEISOC (ไอโซโครนัส LE) จำนวนบัฟเฟอร์สูงอาจบ่งบอกถึงจุดคอขวดหรือปัญหาเกี่ยวกับโฟลว์ข้อมูลจากโฮสต์ไปยังคอนโทรลเลอร์
| พารามิเตอร์เหตุการณ์ย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
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): ระบบจะส่งรายงานแบบครั้งเดียวเพื่อตอบสนองต่อคำสั่งที่เฉพาะเจาะจง
- โดย Monitor (0x0A): ตัวควบคุมจะส่งรายงานเป็นระยะๆ ตามช่วงเวลาที่ระบุ
เหตุการณ์การตรวจสอบความสมบูรณ์ของตัวควบคุมบลูทูธเป็นเครื่องมือวินิจฉัยที่แสดงข้อมูลสรุป เกี่ยวกับสถานะการทำงานของตัวควบคุม เหตุการณ์นี้เป็นส่วนหนึ่งของเฟรมเวิร์กรายงานคุณภาพบลูทูธ (BQR) และใช้สำหรับการแก้ไขข้อบกพร่องด้านการเชื่อมต่อ การจัดการพลังงาน และ ปัญหาด้านเวลา โดยสามารถส่งเป็นรายงานแบบครั้งเดียวหรือส่งเป็นระยะๆ เพื่อให้มีการตรวจสอบอย่างต่อเนื่อง
เมตริกหลักและวัตถุประสงค์ของเมตริก
- ตัวนับแพ็กเก็ต HCI: เหตุการณ์จะติดตามจำนวนแพ็กเก็ตทั้งหมดที่ส่งจาก โฮสต์ไปยังคอนโทรลเลอร์และในทางกลับกัน เคาน์เตอร์เหล่านี้มีความสำคัญต่อการแก้ไขข้อบกพร่องเกี่ยวกับ Host Controller Interface (HCI) Transport ซึ่งเป็นช่องทางการสื่อสารระหว่างสแต็กซอฟต์แวร์กับชิปตัวควบคุมบลูทูธ
- ความยาวของแพ็กเก็ต: เหตุการณ์จะรายงานความยาวของแพ็กเก็ต 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: สงวนไว้ 0x11: การติดตามข้อความ LMP/LL 0x12: การติดตามการจัดกำหนดการแบบหลายลิงก์/การทำงานร่วมกันของบลูทูธ 0x13: ดัมพ์ข้อมูลการแก้ไขข้อบกพร่องของคอนโทรลเลอร์ 0x14 ~ 0xFF: สงวนไว้ |
Connection_Handle |
2 อ็อกเท็ต | แฮนเดิลการเชื่อมต่อ |
| พารามิเตอร์เฉพาะของผู้ให้บริการ | (ความยาวทั้งหมดของพารามิเตอร์ - 4) * อ็อกเท็ต | รูปแบบเฉพาะของผู้ให้บริการของการติดตามข้อความ LMP, การติดตามการจัดกำหนดการแบบหลายลิงก์/การทำงานร่วมกันของบลูทูธ และการทิ้งข้อมูลการแก้ไขข้อบกพร่องของตัวควบคุม |
รหัสเหตุการณ์ย่อย = 0x58 [Quality_Report_Id = 0x16, เหตุการณ์แหล่งที่มาของการออกอากาศ LEA]
พารามิเตอร์ BIG Handle ถึง Timestamp ช่วยให้ตัวควบคุมรายงานข้อมูลแหล่งที่มาของการออกอากาศได้ล่วงหน้า ซึ่งรวมถึง BD_ADDR ที่ส่งผ่านอากาศ (OTA) และการกำหนดช่องสัญญาณเสียง BIG ที่ใช้อยู่ในปัจจุบัน พารามิเตอร์จาก Broadcast ID of Broadcast Receiver Subscribed ถึง RSSI มีไว้เพื่อให้ Broadcast Receiver รายงานข้อมูลเกี่ยวกับแหล่งที่มาของ BIG ที่สมัครใช้บริการ ข้อมูลนี้ต้องส่งจาก Broadcast Receiver ไปยังแหล่งที่มาของ BIG ผ่าน PAwR, การเชื่อมต่อ LE ACL หรือวิธีการอื่นๆ ที่เกี่ยวข้อง
| พารามิเตอร์เหตุการณ์ย่อย | ขนาด | วัตถุประสงค์ |
|---|---|---|
Quality_Report_Id |
1 อ็อกเท็ต | 0x16: เหตุการณ์แหล่งที่มาของการออกอากาศ LEA |
BIG_Handle |
1 อ็อกเท็ต | แฮนเดิล BIG ที่โฮสต์จัดสรร |
Broadcast_Source_BD_ADDR_Type |
1 อ็อกเท็ต | ประเภท BD_ADDR ของแหล่งที่มาของการออกอากาศ (แฮนเดิล BIG) ที่ส่งออกอากาศ |
Broadcast_Source_BD_ADDR |
6 อ็อกเท็ต | BD_ADDR ของแหล่งที่มาของการออกอากาศ (แฮนเดิล BIG) ที่ส่งไปยังอากาศ |
BIG_Source_Prefer_Channel_Map |
5 อ็อกเท็ต | การกำหนดช่องสัญญาณเสียง BIG ที่ผู้ควบคุมต้องการและตรวจพบโดยการจัดประเภทช่อง |
BIG_Source_Used_Channel_Map |
5 อ็อกเท็ต | ช่อง BIG ที่ใช้โดยคอนโทรลเลอร์ |
BIG_TX_Power |
1 อ็อกเท็ต | กำลังส่ง TX ปัจจุบันที่ใช้ในรหัสการออกอากาศ |
Timestamp |
4 อ็อกเท็ต |
การประทับเวลา (นาฬิกา Piconet) สำหรับแฮนเดิล BIG ที่ระบุ ค่านี้ต้องเหมือนกับค่าที่ตัวควบคุมตอบกลับคำสั่ง HCI_Read_Clock HCI ที่มีพารามิเตอร์ Which_Clock เป็น 0x01 (Piconet Clock)หน่วย: N * 0.3125 มิลลิวินาที (1 นาฬิกาบลูทูธ) |
Broadcast_ID_of_Broadcast_Receiver_Subscribed |
3 อ็อกเท็ต |
ระบุรหัสการออกอากาศที่อุปกรณ์ไคลเอ็นต์ติดตาม ค่าไม่ถูกต้อง: 0xFFFFFF |
Broadcast_Receiver_BD_ADDR_Type |
1 อ็อกเท็ต |
ประเภท BD_ADDR ของ Broadcast Receiver ค่าไม่ถูกต้อง: 0xFF |
Broadcast_Receiver_BD_ADDR |
6 อ็อกเท็ต |
BD_ADDR ของ Broadcast Receiver ค่าไม่ถูกต้อง: 0x000000000000 |
Time_Duration |
4 อ็อกเท็ต |
ระยะเวลาในการรวบรวมข้อมูลประสิทธิภาพ หน่วย: มิลลิวินาที ค่าไม่ถูกต้อง: 0xFFFFFFFF |
BIS_Choppy_count |
4 อ็อกเท็ต |
จำนวน BIS Choppy: จำนวน Choppy ที่มี Time_Duration ค่าไม่ถูกต้อง: 0xFFFFFFFF |
PER |
4 อ็อกเท็ต |
อัตราข้อผิดพลาดของแพ็กเก็ต (PER) ภายใน Time_Duration ค่าไม่ถูกต้อง: 0xFFFFFFFF |
No_Sync |
4 อ็อกเท็ต |
จำนวนครั้งที่ RX ไม่ซิงค์ ค่าไม่ถูกต้อง: 0xFFFFFFFF |
Receiver_Prefer_Channel_Map |
5 อ็อกเท็ต |
ระบุแผนที่ช่องของเครื่องรับสัญญาณออกอากาศ ค่าไม่ถูกต้อง: 0x0000000000 |
Receiver_Tx_Power |
1 อ็อกเท็ต |
ระบุระดับพลังงานที่ส่งแพ็กเก็ตที่มีข้อมูลจาก Broadcast Receiver ค่าไม่ถูกต้อง: 0xFF |
RSSI |
1 อ็อกเท็ต |
RSSI ของแพ็กเก็ตที่ได้รับจาก Broadcast Receiver ค่าไม่ถูกต้อง: 0x7F |
Reserved |
4 อ็อกเท็ต | จองแล้ว |
เหตุการณ์ย่อยของความคิดเห็นเกี่ยวกับลิงก์ 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จากนั้นสำหรับแต่ละแพ็กเก็ตใน ISO FIFO จะมีผลดังนี้
-
คอนโทรลเลอร์จะคำนวณ 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 ตามช่วงเวลาแบบไอโซโครนัสของ 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 )
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 อ็อกเท็ต | รายการ IRL ที่พร้อมใช้งานหลังจากการดำเนินการปัจจุบัน |
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 อ็อกเท็ต | รายการ IRL ที่พร้อมใช้งานหลังจากการดำเนินการปัจจุบัน |
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 ที่กำหนดค่าได้ ในขณะที่โฮสต์ยังคง ควบคุมการเลือกพารามิเตอร์ตามการเปลี่ยนแปลงกิจกรรมของโปรไฟล์ Bluetooth ได้
สถานะ Sniff Offload
ส่วนนี้จะกำหนดสถานะภายในตัวควบคุมบลูทูธที่เกี่ยวข้องกับฟังก์ชัน Sniff Offload มีการกำหนดสถานะส่วนกลาง 2 สถานะเพื่อระบุสถานะของตัวควบคุมบลูทูธโดย คำนึงถึงการเปิดใช้ Sniff Offload มีการกำหนดสถานะเฉพาะของการเชื่อมต่อ 2 สถานะเพื่อ ระบุสถานะการเชื่อมต่อ BR/EDR เมื่อตัวควบคุมบลูทูธอยู่ในสถานะ Sniff Offload Enabled
สถานะระดับระบบ
มีการกำหนดสถานะส่วนกลาง 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 to control exit of Sniff mode on transmit-direction HCI-ACL transaction. 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. |