ข้อกำหนด HCI

Host Controller Interface (HCI) ใช้สำหรับการโต้ตอบกับ ตัวควบคุมบลูทูธ

เอกสารนี้แสดงรายการข้อกำหนด HCI ของบลูทูธ (BT) และบลูทูธพลังงานต่ำ (BLE) โดยมีเป้าหมายเพื่อให้ผู้ให้บริการสแต็ก BT ของโฮสต์และผู้ให้บริการคอนโทรลเลอร์ BT ปฏิบัติตามข้อกำหนดของแพลตฟอร์มเหล่านี้เพื่อใช้ชุดฟีเจอร์ที่อธิบายไว้ด้านล่าง

เอกสารนี้อ้างอิงถึงข้อกำหนดหลักของบลูทูธ 5.2 เป็น "ข้อกำหนด" ดูข้อกำหนดหลักของบลูทูธ 5.2 ได้ที่ เว็บไซต์ของ Bluetooth SIG พร้อมกับเอกสารอื่นๆ ที่นำมาใช้

ภาพรวมการออกแบบทั่วไป

ความสามารถและการกำหนดค่าชิป

Android เป็นแพลตฟอร์มแบบเปิด จึงมีเมทริกซ์การเปิดตัวซอฟต์แวร์, OEM, ผู้ให้บริการ, แพลตฟอร์ม และความสามารถของชิป

เอกสารนี้จะอธิบายปรัชญาการออกแบบที่อนุญาตให้ตัวควบคุม BT แสดงความสามารถของตน (นอกเหนือจากข้อกำหนดหลักของบลูทูธ 5.2 มาตรฐาน) เพื่อจัดการกับสภาพแวดล้อมที่แตกต่างกันและจัดการการย้ายข้อมูล จากนั้นสแต็ก BT ของโฮสต์จะใช้ความสามารถเหล่านี้เพื่อพิจารณา ว่าจะเปิดใช้ฟีเจอร์ใด

สนับสนุนมาตรฐานแบบเปิด

เป้าหมายอย่างหนึ่งของ Android คือการรองรับมาตรฐานเปิดหลังจากที่มีการให้สัตยาบันใน ข้อกำหนดของบลูทูธ หากฟีเจอร์ที่อธิบายไว้ด้านล่างพร้อมใช้งานใน วิธีการ HCI มาตรฐานในข้อกำหนดของบลูทูธในอนาคต เราจะ พิจารณาให้วิธีการดังกล่าวเป็นค่าเริ่มต้น

ความสามารถเฉพาะของผู้ให้บริการ

คำสั่งเฉพาะของผู้ให้บริการ: LE_Get_Vendor_Capabilities_Command

ฟิลด์คำสั่ง OpCode (OCF): 0x153

พารามิเตอร์คำสั่ง ขนาด วัตถุประสงค์
NA รายการพารามิเตอร์คำสั่งที่ว่างเปล่า

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
max_advt_instances
(เลิกใช้งานแล้ว)
1 อ็อกเท็ต จำนวนอินสแตนซ์โฆษณาที่รองรับ

สงวนไว้หลังเวอร์ชัน 0.98
พารามิเตอร์นี้เลิกใช้งานแล้วในข้อกำหนดฟีเจอร์ของ Google v0.98 และ สูงกว่าเพื่อรองรับการโฆษณาแบบขยาย LE ที่มีให้บริการใน ข้อกำหนด BT เวอร์ชัน 5.0 ขึ้นไป
offloaded_resolution_of_private-address
(เลิกใช้งานแล้ว)
1 อ็อกเท็ต ความสามารถของชิป BT ของ RPA
หากชิปรองรับ โฮสต์จะต้องเปิดใช้
0 = ไม่สามารถ
1 = สามารถ

สงวนไว้หลังจาก v0.98
พารามิเตอร์นี้เลิกใช้งานแล้วในข้อกำหนดฟีเจอร์ของ Google v0.98 และ สูงกว่าเพื่อรองรับฟีเจอร์ความเป็นส่วนตัวที่พร้อมใช้งานในข้อกำหนด BT เวอร์ชัน 4.2 ขึ้นไป
total_scan_results_storage 2 อ็อกเท็ต พื้นที่เก็บข้อมูลสำหรับผลการสแกนในหน่วยไบต์
max_irk_list_sz 1 อ็อกเท็ต จำนวนรายการ IRK ที่เฟิร์มแวร์รองรับ
filtering_support 1 อ็อกเท็ต รองรับการกรองในคอนโทรลเลอร์
0 = ไม่รองรับ
1 = รองรับ
max_filter 1 อ็อกเท็ต จำนวนตัวกรองที่รองรับ
activity_energy_info_support 1 อ็อกเท็ต รองรับการรายงานข้อมูลกิจกรรมและพลังงาน
0 = ไม่รองรับ
1 = รองรับ
version_supported 2 อ็อกเท็ต ระบุเวอร์ชันของข้อกำหนดฟีเจอร์ของ Google ที่รองรับ
byte[0] = หมายเลขเวอร์ชันหลัก
byte[1] = หมายเลขเวอร์ชันย่อย

v1.05
byte[0] = 0x01
byte[1] = 0x05

การเพิ่มฟีเจอร์ในเวอร์ชันต่อไปนี้
v1.05:
  • iso_link_feedback_support
  • BQRv7
  • sniff_offload_support
V1.04:
  • BQRv6
total_num_of_advt_tracked 2 อ็อกเท็ต จำนวนผู้ลงโฆษณาทั้งหมดที่ติดตามเพื่อวัตถุประสงค์OnLost/OnFound
extended_scan_support 1 อ็อกเท็ต รองรับช่วงเวลาและช่วงการสแกนที่ขยาย
debug_logging_supported 1 อ็อกเท็ต รองรับการบันทึกข้อมูลการแก้ไขข้อบกพร่องแบบไบนารีจากคอนโทรลเลอร์
LE_address_generation_offloading_support
(เลิกใช้งานแล้ว)
1 อ็อกเท็ต 0 = ไม่รองรับ
1 = รองรับ

สงวนไว้หลังจาก v0.98
พารามิเตอร์นี้เลิกใช้งานแล้วในข้อกำหนดฟีเจอร์ของ Google v0.98 และ สูงกว่าเพื่อรองรับฟีเจอร์ความเป็นส่วนตัวที่พร้อมใช้งานในข้อกำหนด BT เวอร์ชัน 4.2 ขึ้นไป
A2DP_source_offload_capability_mask 4 อ็อกเท็ต บิตมาสก์สำหรับประเภทตัวแปลงรหัสที่รองรับ
บิต 0 - SBC
บิต 1 - AAC
บิต 2 - APTX
บิต 3 - APTX HD
บิต 4 - LDAC
บิต 5 - Opus
บิต 6-31 สงวนไว้
bluetooth_quality_report_support 1 อ็อกเท็ต รองรับการรายงานเหตุการณ์คุณภาพของบลูทูธ
0 = ไม่สามารถ
1 = สามารถ
dynamic_audio_buffer_support 4 อ็อกเท็ต รองรับบัฟเฟอร์เสียงแบบไดนามิกในตัวควบคุมบลูทูธ
บิตมาสก์สำหรับประเภทตัวแปลงรหัสที่รองรับ
บิต 0 - SBC
บิต 1 - AAC
บิต 2 - APTX
บิต 3 - APTX HD
บิต 4 - LDAC
บิต 5 - Opus
บิต 6-31 สงวนไว้
a2dp_offload_v2_support 1 อ็อกเท็ต รองรับคำสั่งการลดภาระ A2DP เวอร์ชัน 2 ในตัวควบคุมบลูทูธ (ดู เริ่มการลดภาระ A2DP หยุดการลดภาระ A2DP)
0 = ไม่รองรับ
1 = รองรับ
iso_link_feedback_support 1 อ็อกเท็ต รองรับเหตุการณ์ ISO Link Feedback
0 = ไม่รองรับ
1 = รองรับ
sniff_offload_support 1 อ็อกเท็ต รองรับคำสั่ง Sniff Offload ในตัวควบคุมบลูทูธ
0 = ไม่รองรับ
1 = รองรับ

ผลการสแกนแบบเป็นชุด

เป้าหมายการออกแบบคือการปรับปรุงวิธีส่งการแจ้งเตือนเหตุการณ์การตอบกลับการสแกน Bluetooth LE ไปยังโฮสต์ เพื่อประหยัดพลังงานในโฮสต์

การลดความถี่ที่ตัวควบคุมจะแจ้งให้โปรเซสเซอร์ของแอปโฮสต์ สแกนผลลัพธ์จะช่วยให้โปรเซสเซอร์ของแอปโฮสต์ อยู่ในโหมดว่าง/สลีปได้นานขึ้น ซึ่งจะช่วยลดการใช้พลังงานในโฮสต์ พารามิเตอร์ return total_scan_results_storage of LE_Get_Vendor_Capabilities_Command ระบุความสามารถของชิป ในการจัดเก็บผลการสแกน

ฟีเจอร์นี้มุ่งเน้นที่การจัดการและการกำหนดค่าที่เก็บผลการสแกน LE ในตัวควบคุมบลูทูธ โดยใช้พื้นที่เก็บข้อมูล เพื่อจัดกลุ่มข้อมูลโฆษณาและข้อมูลการสแกน รวมถึงข้อมูลเมตาที่ ผู้ควบคุมได้รับชั่วคราวเพื่อส่งไปยังโฮสต์ในภายหลัง

เฟิร์มแวร์ต้องรองรับการประมวลผลแบบกลุ่ม 2 ประเภท ซึ่งสามารถใช้พร้อมกันได้ ดังนี้

  • ถูกตัด มีองค์ประกอบข้อมูลต่อไปนี้ {MAC, TX Power, RSSI, Timestamp}
  • เต็ม มีองค์ประกอบข้อมูลต่อไปนี้ {MAC, TX Power, RSSI, Timestamp, Adv Data, Scan Response}

LE_Batch_Scan_Command

OCF: 0x156

พารามิเตอร์คำสั่ง ขนาด วัตถุประสงค์
Batch_Scan_opcode 1 อ็อกเท็ต 0x1 - เปิดใช้ฟีเจอร์เฉพาะลูกค้า
0x2 - ตั้งค่าพารามิเตอร์ที่จัดเก็บการสแกนเป็นชุด
0x3 - ตั้งค่าพารามิเตอร์การสแกนเป็นชุด
0x4 - อ่านพารามิเตอร์ผลการสแกนเป็นชุด

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้ การเปิดใช้ ฟีเจอร์เฉพาะลูกค้าไม่ได้เริ่มการสแกน

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
Batch_Scan_opcode 1 อ็อกเท็ต 0x1 - เปิดใช้ฟีเจอร์เฉพาะลูกค้า
0x2 - ตั้งค่าพารามิเตอร์ที่จัดเก็บการสแกนเป็นชุด
0x3 - ตั้งค่าพารามิเตอร์การสแกนเป็นชุด
0x4 - อ่านพารามิเตอร์ผลการสแกนเป็นชุด

LE_Batch_Scan_Command: เปิดใช้ฟีเจอร์เฉพาะลูกค้า

Sub OCF: 0x01

พารามิเตอร์คำสั่งย่อย ขนาด วัตถุประสงค์
enable_customer_specific_feature_set 1 อ็อกเท็ต 0x01 - เปิดใช้ฟีเจอร์สแกนเป็นชุด
0x00 - ปิดใช้ฟีเจอร์สแกนเป็นชุด

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
Batch_Scan_opcode 1 อ็อกเท็ต 0x1 - เปิดใช้ฟีเจอร์เฉพาะลูกค้า
0x2 - ตั้งค่าพารามิเตอร์ที่เก็บข้อมูลการสแกนเป็นชุด
0x3 - ตั้งค่าพารามิเตอร์การสแกนเป็นชุด
0x4 - อ่านพารามิเตอร์ผลการสแกนเป็นชุด

LE_Batch_Scan_Command: ตั้งค่าคำสั่งย่อยพารามิเตอร์ที่เก็บข้อมูลการสแกนแบบกลุ่ม

Sub OCF: 0x02

พารามิเตอร์คำสั่งย่อย ขนาด วัตถุประสงค์
Batch_Scan_Full_Max 1 อ็อกเท็ต พื้นที่เก็บข้อมูลสูงสุด (เป็น %) ที่จัดสรรให้กับสไตล์แบบเต็ม
[ช่วง: 0-100]
Batch_Scan_Truncated_Max 1 อ็อกเท็ต พื้นที่เก็บข้อมูลสูงสุด (เป็น %) ที่จัดสรรให้กับรูปแบบที่ถูกตัด
[ช่วง: 0-100]
Batch_Scan_Notify_Threshold 1 อ็อกเท็ต ตั้งค่าระดับการแจ้งเตือน (เป็น %) สำหรับ Storage Pool แต่ละรายการ
[ช่วง: 0-100]
การตั้งค่าเป็น 0 จะปิดใช้การแจ้งเตือน สร้างเหตุการณ์ HCI เฉพาะผู้ให้บริการ (เหตุการณ์ย่อยการละเมิดเกณฑ์พื้นที่เก็บข้อมูล)

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
Batch_scan_opcode 1 อ็อกเท็ต 0x02 [ตั้งค่าพารามิเตอร์การสแกนเป็นชุด]

LE_Batch_Scan_Command: ตั้งค่าคำสั่งย่อยของพารามิเตอร์การสแกนแบบกลุ่ม

Sub OCF: 0x03

พารามิเตอร์คำสั่งย่อย ขนาด วัตถุประสงค์
Batch_Scan_Mode 1 อ็อกเท็ต 0x00 – ปิดใช้การสแกนเป็นชุด
0x01 – เปิดใช้โหมดตัดทอน
0x02 – เปิดใช้โหมดเต็ม
0x03 – เปิดใช้โหมดตัดทอนและโหมดเต็ม
Duty_cycle_scan_window 4 อ็อกเท็ต เวลาในการสแกนแบบกลุ่ม (# ช่อง)
Duty_cyle_scan_interval 4 อ็อกเท็ต ระยะเวลาช่วงการสแกนแบบกลุ่ม (จำนวนช่อง)
own_address_type 1 อ็อกเท็ต 0x00 - ที่อยู่อุปกรณ์สาธารณะ
0x01 - ที่อยู่อุปกรณ์แบบสุ่ม
Batch_scan_Discard_Rule 1 อ็อกเท็ต 0 - ทิ้งโฆษณาที่เก่าที่สุด
1 - ทิ้งโฆษณาที่มี RSSI อ่อนที่สุด

คำสั่งย่อยนี้จะเริ่มการสแกนเป็นชุด หากเปิดใช้ไว้ ในการสแกนแบบย่อ ระบบจะจัดเก็บผลลัพธ์ในรูปแบบย่อ โดยคีย์ที่ไม่ซ้ำกันสำหรับ รูปแบบย่อ = {BD_ADDR, scan_interval} ซึ่งหมายความว่าระบบจะบันทึก BD_ADDR will เพียง 1 รายการ สำหรับช่วงเวลาการสแกนแต่ละครั้ง ระเบียนที่ต้องเก็บไว้สำหรับโหมดตัดทอนคือ {BD_ADDR, กำลังส่ง, RSSI, การประทับเวลา}

เมื่อเปิดใช้โหมดเต็ม ระบบจะใช้การสแกนที่ใช้งานอยู่และบันทึกการตอบกลับการสแกน คีย์ที่ไม่ซ้ำของรูปแบบเต็ม = {MAC, แพ็กเก็ตโฆษณา} โดยไม่คำนึงถึงช่วงเวลาการสแกน บันทึกที่จะเก็บไว้สำหรับโหมดเต็มคือ {BD_ADDR, กำลังส่ง, RSSI, การประทับเวลา, แพ็กเกตโฆษณา, การสแกน การตอบกลับ} ในรูปแบบเต็ม ระบบจะบันทึกแพ็กเก็ต AD เดียวกันเพียงครั้งเดียวเมื่อเห็นหลายครั้ง ในช่วงเวลาการสแกนที่ต่างกัน อย่างไรก็ตาม ใน โหมดตัดทอน สิ่งที่น่าสนใจคือระดับการมองเห็นของ BA_ADDR ใน ช่วงเวลาการสแกนต่างๆ (1 ครั้งต่อช่วงเวลาการสแกน) RSSI คือค่าเฉลี่ยของโฆษณาที่ซ้ำกันทั้งหมดของโฆษณาที่ไม่ซ้ำกัน ภายในช่วงการสแกน

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
Batch_scan_opcode 1 อ็อกเท็ต 0x03 [ตั้งค่าพารามิเตอร์การสแกนแบบกลุ่ม]

LE_Batch_Scan_Command: อ่านคำสั่งย่อยผลการสแกนแบบเป็นชุด

Sub OCF: 0x04

พารามิเตอร์คำสั่งย่อย ขนาด วัตถุประสงค์
Batch_Scan_Data_read 1 อ็อกเท็ต 0x01 - ข้อมูลโหมดที่ถูกตัดทอน
0x02 - ข้อมูลโหมดเต็ม

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้ เมื่อโฮสต์ ออกคำสั่งนี้ ผลลัพธ์ทั้งหมดในคอนโทรลเลอร์อาจไม่พอดีในเหตุการณ์ Command Complete รายการเดียว โฮสต์จะวนซ้ำในการออกคำสั่งนี้จนกว่า ผลลัพธ์ที่เกี่ยวข้องในเหตุการณ์ Command Complete จะระบุ 0 ใน จำนวนระเบียน ซึ่งบ่งชี้ว่าคอนโทรลเลอร์ไม่มีระเบียนที่จะ สื่อสารกับโฮสต์อีกต่อไป เหตุการณ์ Command Complete แต่ละรายการอาจมี หลายระเบียนของข้อมูลประเภทเดียวเท่านั้น (แบบเต็มหรือแบบย่อ)

การอ้างอิงเวลาของคอนโทรลเลอร์และโฮสต์ไม่ซิงค์กัน หน่วยของ การประทับเวลาคือ 50 มิลลิวินาที ค่าของแสตมป์เวลาจะอิงตามเวลาที่โฮสต์ให้ Read_Batch_Scan_Results_Sub_cmd หากเวลาที่คำสั่งมาถึงคือ T_c ในเฟิร์มแวร์ เวลาจริงที่การประทับเวลา ในเฟิร์มแวร์คือ T_fw เวลาในการรายงานจะเป็น (T_c - T_fw) T_c และ T_fw อยู่ในโดเมนเวลาของเฟิร์มแวร์ ซึ่งจะช่วยให้โฮสต์ คำนวณได้ว่าเหตุการณ์เกิดขึ้นนานเท่าใดแล้ว

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
Batch_scan_opcode 1 อ็อกเท็ต 0x03 [ตั้งค่าพารามิเตอร์การสแกนแบบเป็นชุด]
Batch_Scan_data_read 1 อ็อกเท็ต ระบุรูปแบบ (ย่อหรือเต็ม)
num_of_records 1 อ็อกเท็ต จำนวนบันทึกของ Batch_Scan_data_read
format_of_data ตัวแปร โหมดตัดทอน:
Address[0]: 6 octets
Address_Type[0]: 1 octet
Tx_Pwr[0]: 1 octet
RSSI[0] : 1 octet
Timestamp[0]: 2 octets
[multiple records (num_of_records) with above format]

โหมดเต็ม:
Address[0]: 6 octets
Address_Type[0]: 1 octet
Tx_Pwr[0]: 1 octet
RSSI[0]: 1 octet
Timestamp[0]: 2 octets
Adv packet_len[0]: 1 octet
Adv_packet[0]: Adv_packet_len octets
Scan_data_resp_len[0]: 1 octet
Scan_data_resp[0]: Scan_data_resp octets
[multiple records with above format (num_of_records)]

ตัวกรองเนื้อหาแพ็กเก็ตโฆษณา

ใช้เพื่อเปิด/ปิด/ตั้งค่าตัวกรองเนื้อหาแพ็กเก็ตโฆษณา (APCF) ในคอนโทรลเลอร์ APCF จะกรองรายงานการโฆษณาใน คอนโทรลเลอร์ แต่จะไม่กรองการโฆษณาเป็นระยะ

LE_APCF_Command

OCF: 0x157

พารามิเตอร์คำสั่ง ขนาด วัตถุประสงค์
APCF_opcode 1 อ็อกเท็ต 0x00 - เปิดใช้ APCF
0x01 - ตั้งค่าพารามิเตอร์การกรอง APCF
0x02 - ที่อยู่ผู้ส่ง APCF
0x03 - UUID ของบริการ APCF
0x04 - UUID ของการขอใช้บริการ APCF
0x05 - ชื่อในเครื่องของ APCF
0x06 - ข้อมูลผู้ผลิตของ APCF
0x07 - ข้อมูลบริการของ APCF
0x08 - บริการค้นหาการรับส่งของ APCF
0x09 - ตัวกรองประเภทโฆษณาของ APCF
0x10 ~ 0xAF - สงวนไว้สำหรับการใช้งานในอนาคต
0xB0 ~ 0xDF - สงวนไว้สำหรับผู้จำหน่าย
0xE0 ~ 0xFE - สงวนไว้สำหรับการใช้งานในอนาคต
0xFF - อ่านฟีเจอร์เพิ่มเติมของ APCF

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะการคืนสินค้า
APCF_opcode 1 อ็อกเท็ต 0x00 - เปิดใช้ APCF
0x01 - ตั้งค่าพารามิเตอร์การกรอง APCF
0x02 - ที่อยู่ Broadcaster ของ APCF
0x03 - UUID ของบริการ APCF
0x04 - UUID ของการร้องขอบริการ APCF
0x05 - ชื่อในเครื่องของ APCF
0x06 - ข้อมูลผู้ผลิตของ APCF
0x07 - ข้อมูลบริการของ APCF
0x08 - บริการค้นหาการรับส่งของ APCF
0x09 - ตัวกรองประเภทโฆษณาของ APCF
0x10 ~ 0xAF - สงวนไว้สำหรับใช้ในอนาคต
0xB0 ~ 0xDF - สงวนไว้สำหรับผู้ให้บริการ
0xE0 ~ 0xFE - สงวนไว้สำหรับใช้ในอนาคต
0xFF - อ่านฟีเจอร์เพิ่มเติมของ APCF

LE_APCF_Command: Enable_sub_cmd

Sub OCF: 0x00

พารามิเตอร์คำสั่งย่อย ขนาด วัตถุประสงค์
APCF_enable 1 อ็อกเท็ต 0x01 - เปิดใช้ฟีเจอร์ APCF
0x00 - ปิดใช้ฟีเจอร์ APCF

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
APCF_opcode 1 อ็อกเท็ต 0x0 - เปิดใช้ APCF
APCF_Enable 1 อ็อกเท็ต เปิด/ปิดใช้ได้ผ่าน APCF_enable

LE_APCF_Command: set_filtering_parameters_sub_cmd

คำสั่งย่อยนี้ใช้เพื่อเพิ่มหรือลบข้อกำหนดตัวกรอง หรือล้างรายการตัวกรองสำหรับการกรองในชิป

Sub OCF: 0x01

พารามิเตอร์คำสั่งย่อย ขนาด วัตถุประสงค์
APCF_Action 1 อ็อกเท็ต 0x00 - เพิ่ม
0x01 - ลบ
0x02 - ล้าง
การลบจะล้างตัวกรองที่เฉพาะเจาะจงพร้อมกับรายการฟีเจอร์ที่เกี่ยวข้อง ในตารางอื่นๆ
ล้างจะล้างตัวกรองทั้งหมดและรายการที่เกี่ยวข้องในตารางอื่นๆ
APCF_Filter_Index 1 อ็อกเท็ต ดัชนีตัวกรอง (0, max_filter-1)
APCF_Feature_Selection 2 อ็อกเท็ต บิตมาสก์สำหรับฟีเจอร์ที่เลือก
บิต 0: ตั้งค่าเพื่อเปิดใช้ตัวกรองที่อยู่บรอดแคสต์
บิต 1: ตั้งค่าเพื่อเปิดใช้ตัวกรองการเปลี่ยนแปลงข้อมูลบริการ
บิต 2: ตั้งค่าเพื่อเปิดใช้การตรวจสอบ UUID ของบริการ
บิต 3: ตั้งค่าเพื่อเปิดใช้การตรวจสอบ UUID ของการชักชวนบริการ
บิต 4: ตั้งค่าเพื่อเปิดใช้การตรวจสอบชื่อในเครื่อง
บิต 5: ตั้งค่าเพื่อเปิดใช้การตรวจสอบข้อมูลผู้ผลิต
บิต 6: ตั้งค่าเพื่อเปิดใช้การตรวจสอบข้อมูลบริการ
บิต 7: ตั้งค่าเพื่อเปิดใช้การตรวจสอบบริการค้นหาการรับส่ง
บิต 8: ตั้งค่าเพื่อเปิดใช้การตรวจสอบประเภท AD
APCF_List_Logic_Type 2 อ็อกเท็ต การดำเนินการเชิงตรรกะสำหรับการเลือกฟีเจอร์แต่ละรายการ (ตำแหน่งต่อบิต) ที่ระบุใน APCF_Feature_Selection
ใช้ได้เมื่อเปิดใช้ฟีเจอร์เท่านั้น
ค่าตำแหน่งบิต:
0: OR
1: AND
หากเลือกตรรกะ "AND" แพ็กเก็ต ADV จะผ่านตัวกรองได้ก็ต่อเมื่อ มีรายการทั้งหมดในรายการ
หากเลือกตรรกะ "OR" แพ็กเก็ต ADV จะผ่านตัวกรองหากมีรายการใดรายการหนึ่งในรายการ
APCF_Filter_Logic_Type 1 อ็อกเท็ต 0x00: OR
0x01: AND
หมายเหตุ: ประเภทตรรกะคือ N/A สำหรับฟิลด์ 3 รายการแรกของ APCF_Feature_Selection ซึ่งเป็นตรรกะ "AND" เสมอ โดยจะ ใช้ได้กับฟิลด์ 4 ฟิลด์ (บิตที่ 3 - บิตที่ 6) ของ APCF_Feature_Selection เท่านั้น
rssi_high_thresh 1 อ็อกเท็ต [ในหน่วย dBm]
ระบบจะถือว่าผู้ลงโฆษณาเห็นเฉพาะในกรณีที่สัญญาณสูงกว่า เกณฑ์สูงของ RSSI มิฉะนั้น เฟิร์มแวร์ต้องทำงานราวกับว่าไม่เคยเห็น อุปกรณ์ดังกล่าว
delivery_mode 1 อ็อกเท็ต 0x00 - immediate
0x01 - on_found
0x02 - batched
onfound_timeout 2 อ็อกเท็ต ใช้ได้เฉพาะในกรณีที่ delivery_mode เป็น on_found
[เป็นมิลลิวินาที]
เวลาที่เฟิร์มแวร์จะคงอยู่และรวบรวมโฆษณาเพิ่มเติม ก่อนที่จะรายงาน
onfound_timeout_cnt 1 อ็อกเท็ต ใช้ได้เฉพาะในกรณีที่ delivery_mode เป็น on_found
[count]
หากโฆษณาใน onFound ยังคงอยู่ในเฟิร์มแวร์เป็นเวลา onfound_timeout ระบบจะรวบรวมโฆษณา 2-3 รายการ และตรวจสอบจำนวน หากจำนวนเกิน onfound_timeout_cnt ระบบจะรายงาน OnFound ทันทีหลังจากนั้น
rssi_low_thresh 1 อ็อกเท็ต ใช้ได้เฉพาะในกรณีที่ delivery_mode เป็น on_found
[ในหน่วย dBm]
ระบบจะถือว่าไม่เห็นแพ็กเก็ตของผู้ลงโฆษณา หาก RSSI ของ แพ็กเก็ตที่ได้รับไม่สูงกว่าเกณฑ์ต่ำของ RSSI
onlost_timeout 2 อ็อกเท็ต ใช้ได้เฉพาะในกรณีที่ delivery_mode เป็น on_found
[เป็นมิลลิวินาที]
หากตรวจพบโฆษณาแล้ว แต่โฆษณาไม่ได้แสดงอย่างต่อเนื่องเป็นระยะเวลา lost_timeout ระบบจะรายงานว่าโฆษณาหายไปทันที
num_of_tracking_entries 2 อ็อกเท็ต ใช้ได้เฉพาะในกรณีที่ delivery_mode เป็น on_found
[count]
จำนวนผู้ลงโฆษณาทั้งหมดที่จะติดตามต่อตัวกรอง

ค่า RSSI ต้องใช้ส่วนเติมเต็มของ 2 เพื่อแสดงค่าลบ

โฮสต์ต้องกำหนดค่าตัวกรองหลายรายการได้โดยมี APCF_Application_Address_type ตั้งค่าเป็น 0x02 (สำหรับที่อยู่ผู้แพร่ภาพกระจายเสียงทั้งหมด ) เพื่อจัดการชุดค่าผสมตัวกรองต่างๆ

การกรอง การจัดกลุ่ม และการรายงานเป็นแนวคิดที่เชื่อมโยงกัน โฆษณาทุกรายการ และการตอบกลับการสแกนที่เกี่ยวข้องจะต้องผ่านตัวกรองทั้งหมด ทีละรายการ ดังนั้น การดำเนินการที่ได้ (delivery_mode) จึงเชื่อมโยงกับการกรองอย่างใกล้ชิด วิธีการส่งข้อมูลราคา มีดังนี้ report_immediately batch และ onFound ค่า OnLost เกี่ยวข้องกับ OnFound ในแง่ที่ว่า ค่านี้จะปรากฏหลังจาก OnFound เมื่อแพ้

ขั้นตอนการประมวลผลนี้แสดงโมเดลแนวคิด

เมื่อได้รับเฟรมโฆษณา (หรือการตอบกลับการสแกน) ระบบจะใช้เฟรมดังกล่าว กับตัวกรองทั้งหมดตามลำดับ โฆษณาอาจทำให้เกิดการรายงานทันทีตามตัวกรองหนึ่ง และการจัดกลุ่มของโฆษณาเดียวกันเนื่องจากการดำเนินการตัวกรองที่แตกต่างกัน

เกณฑ์ระดับ RSSI (สูงและต่ำ) ช่วยให้คุณควบคุมได้ว่าเฟรมจะแสดงเมื่อใดสำหรับการประมวลผลตัวกรอง แม้ว่าตัวควบคุมจะได้รับแพ็กเก็ตที่ถูกต้องก็ตาม ในกรณีที่ตั้งค่าโหมดการนำส่งเป็น immediate หรือ batched ระบบจะพิจารณา RSSI ของเฟรมสำหรับการประมวลผล คอนโทรลเลอร์เพิ่มเติม แอปต่างๆ ต้องการการรายงานและ ลักษณะการทำงานแบบเป็นกลุ่มที่แตกต่างกัน ซึ่งจะช่วยให้แอปหลายแอปสามารถรายงานโดยตรง และ/หรือจัดกลุ่มผลลัพธ์ในเฟิร์มแวร์พร้อมกันได้ ตัวอย่างเช่น กรณีที่ การสแกนเป็นกลุ่มทำงานจากแอปหนึ่ง และต่อมาแอปอื่นออกการสแกน LE ปกติ ก่อนที่จะออกการสแกนเป็นกลุ่ม เฟรมเวิร์ก/แอป จะตั้งค่าตัวกรองที่เหมาะสม ต่อมาเมื่อแอปที่ 2 ออกการสแกนปกติ การจัดกลุ่มก่อนหน้าจะดำเนินต่อไป อย่างไรก็ตาม เนื่องจากการสแกนปกติ จึง คล้ายกับการเพิ่มตัวกรอง Null ในเชิงแนวคิด (พร้อมกับตัวกรองที่มีอยู่ทั้งหมด ) พร้อมกับคำสั่งสแกน LE พารามิเตอร์คำสั่งการสแกน LE จะมีความสำคัญเหนือกว่าเมื่อใช้งานอยู่ เมื่อปิดใช้การสแกน LE ปกติ คอนโทรลเลอร์จะเปลี่ยนกลับไปใช้การสแกนเป็นชุดก่อนหน้า หากมี

OnFoundโหมดการนำส่งจะอิงตามตัวกรองที่กำหนดค่าไว้ ระบบจะถือว่าชุดค่าผสมที่ทําให้การดําเนินการของตัวกรองสําเร็จเป็น เอนทิตีที่จะติดตามสําหรับ onLost เหตุการณ์ที่เกี่ยวข้องคือเหตุการณ์ย่อยการติดตามโฆษณา LE

OnFound/OnLost การเปลี่ยนผ่านสำหรับตัวกรอง (หากเปิดใช้) จะมีลักษณะดังนี้

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
APCF_opcode 1 อ็อกเท็ต 0x01 - APCF Set Filtering Parameters
APCF_Action 1 อ็อกเท็ต APCF_Action คำสั่งตอบกลับ
APCF_AvailableSpaces 1 อ็อกเท็ต จำนวนรายการที่ใช้ได้ในตารางตัวกรอง

LE_APCF_Command: broadcast_address_sub_cmd

คำสั่งย่อยนี้ใช้เพื่อเพิ่มหรือลบที่อยู่ของผู้ลงโฆษณา หรือเพื่อล้าง รายการที่อยู่ของผู้ลงโฆษณาสำหรับการกรองในชิป

Sub OCF: 0x02

พารามิเตอร์คำสั่งย่อย ขนาด วัตถุประสงค์
APCF_Action 1 อ็อกเท็ต 0x00 - เพิ่ม
0x01 - ลบ
0x02 - ล้าง
ลบจะลบที่อยู่ผู้แพร่ภาพที่ระบุใน ตัวกรองที่ระบุ
ล้างจะล้างที่อยู่ของผู้แพร่ภาพกระจายเสียงทั้งหมดในตัวกรองที่ระบุ
APCF_Filter_Index 1 อ็อกเท็ต ดัชนีตัวกรอง (0, max_filter-1)
APCF_Broadcaster_Address 6 อ็อกเท็ต ที่อยู่อุปกรณ์ 6 ไบต์ที่จะเพิ่มหรือลบออกจากรายการที่อยู่ของผู้ออกอากาศ
APCF_Application_Address_type 1 อ็อกเท็ต 0x00: สาธารณะ
0x01: สุ่ม
0x02: NA (ไม่สนใจประเภทที่อยู่)
เพื่อกรองรายงานการโฆษณาที่มีประเภทที่อยู่ระบุตัวตน (0x02, 0x03) หากต้องการรับรายงานการโฆษณาที่มีประเภทที่อยู่ 0x02 และ 0x03 ให้ตั้งค่าฟิลด์นี้เป็น 0x02: NA (ไม่สนใจประเภทที่อยู่)

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
APCF_opcode 1 อ็อกเท็ต 0x02 - ที่อยู่ของ APCF Broadcaster
APCF_Action 1 อ็อกเท็ต APCF_Action คำสั่งตอบกลับ
APCF_AvailableSpaces 1 อ็อกเท็ต จำนวนรายการฟรีที่ยังใช้ได้ในตารางที่อยู่การออกอากาศ

LE_APCF_Command: service_uuid_sub_cmd

คำสั่งย่อยนี้ใช้เพื่อเพิ่มหรือลบ UUID ของบริการ หรือล้างรายการ UUID ของบริการสำหรับการกรองในชิป

Sub OCF: 0x03

พารามิเตอร์คำสั่งย่อย ขนาด วัตถุประสงค์
APCF_Action 1 อ็อกเท็ต 0x00 - เพิ่ม
0x01 - ลบ
0x02 - ล้าง
ลบจะลบที่อยู่ UUID ของบริการที่ระบุในตัวกรองที่ระบุ
Clear จะล้าง UUID ของบริการทั้งหมดในตัวกรองที่ระบุ
APCF_Filter_Index 1 อ็อกเท็ต ดัชนีตัวกรอง (0, max_filter-1)
APCF_UUID 2,4,16 อ็อกเท็ต UUID ของบริการ (16 บิต, 32 บิต หรือ 128 บิต) สำหรับเพิ่มลงในหรือ ลบออกจากรายการ
APCF_UUID_MASK 2,4,16 อ็อกเท็ต มาสก์ UUID ของบริการ (16 บิต 32 บิต หรือ 128 บิต) ที่จะเพิ่มลงในรายการ โดยควรมีความยาวเท่ากับ APCF_UUID.

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
APCF_opcode 1 อ็อกเท็ต 0x03 - UUID ของบริการ APCF
APCF_Action 1 อ็อกเท็ต APCF_Action คำสั่งตอบกลับ
APCF_AvailableSpaces 1 อ็อกเท็ต จำนวนรายการฟรีที่ยังใช้ได้ในตาราง UUID ของบริการ

LE_APCF_Command: solicitation_uuid_sub_cmd

คำสั่งย่อยนี้ใช้เพื่อเพิ่มหรือลบ UUID ของการชักชวน หรือเพื่อล้างรายการ UUID ของการชักชวนสำหรับการกรองในชิป

Sub OCF: 0x04

พารามิเตอร์คำสั่งย่อย ขนาด วัตถุประสงค์
APCF_Action 1 อ็อกเท็ต 0x00 - เพิ่ม
0x01 - ลบ
0x02 - ล้าง
ลบจะลบที่อยู่ UUID ของการชักชวนในตัวกรองที่ระบุ
Clear จะล้าง UUID ของการชักชวนทั้งหมดในตัวกรองที่ระบุ
APCF_Filter_Index 1 อ็อกเท็ต ดัชนีตัวกรอง (0, max_filter-1)
APCF_UUID 2,4,16 อ็อกเท็ต UUID ของการชักชวน (16 บิต 32 บิต หรือ 128 บิต) ที่จะเพิ่มหรือลบ ออกจากรายการ
APCF_UUID_MASK 2,4,16 อ็อกเท็ต มาสก์ UUID การชักชวน (16 บิต, 32 บิต หรือ 128 บิต) ที่จะเพิ่มลงใน รายการ โดยควรมีความยาวเท่ากับ APCF_UUID

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
APCF_opcode 1 อ็อกเท็ต 0x04 - UUID ของการชักชวน APCF
APCF_Action 1 อ็อกเท็ต APCF_Action คำสั่งตอบกลับ
APCF_AvailableSpaces 1 อ็อกเท็ต จำนวนรายการฟรีที่ยังใช้ได้ในตาราง UUID ของการชักชวน

LE_APCF_Command: local_name_sub_cmd

คำสั่งย่อยนี้ใช้เพื่อเพิ่มหรือลบสตริงชื่อในเครื่อง หรือเพื่อล้าง รายการสตริงชื่อในเครื่องสำหรับการกรองในชิป

Sub OCF: 0x05

พารามิเตอร์คำสั่งย่อย ขนาด วัตถุประสงค์
APCF_Action 1 อ็อกเท็ต 0x00 - เพิ่ม
0x01 - ลบ
0x02 - ล้าง
ลบจะลบสตริงชื่อในเครื่องที่ระบุใน ตัวกรองที่ระบุ
Clear จะล้างสตริงชื่อในเครื่องทั้งหมดในตัวกรองที่ระบุ
APCF_Filter_Index 1 อ็อกเท็ต ดัชนีตัวกรอง (0, max_filter-1)
APCF_LocName_Mandata_or_SerData ขนาดตัวแปร สตริงอักขระสำหรับชื่อท้องถิ่น

หมายเหตุ:
  • ปัจจุบันจำนวนอักขระสูงสุดในสตริงชื่อในภาษาท้องถิ่นคือ 29
  • ไม่เกี่ยวข้องเมื่อการดำเนินการคือ "ล้าง" (0x2)

ระบบจะสร้างเหตุการณ์ 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 ขนาดตัวแปร สตริงอักขระสำหรับข้อมูลผู้ผลิต

หมายเหตุ:
  • ปัจจุบันจำนวนอักขระสูงสุดในสตริงชื่อในภาษาท้องถิ่นคือ 29
  • ไม่เกี่ยวข้องเมื่อการดำเนินการคือ "ล้าง" (0x2)
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 ขนาดตัวแปร สตริงอักขระสำหรับข้อมูลบริการ

หมายเหตุ:
  • ปัจจุบันจำนวนอักขระสูงสุดในสตริงชื่อในภาษาท้องถิ่นคือ 29
  • ไม่เกี่ยวข้องเมื่อการดำเนินการคือ "ล้าง" (0x2)
APCF_LocName_Mandata_or_SerData_Mask ขนาดตัวแปร มาสก์ข้อมูลบริการที่จะเพิ่มลงในรายการ โดยควรมีความยาวเท่ากับ APCF_LocName_or_ManData_or_SerData.

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
APCF_opcode 1 อ็อกเท็ต 0x07 - ข้อมูลบริการ APCF
APCF_Action 1 อ็อกเท็ต APCF_Action คำสั่งตอบกลับ
APCF_AvailableSpaces 1 อ็อกเท็ต จำนวนรายการฟรีที่ยังใช้ได้สำหรับตารางข้อมูลบริการ

LE_APCF_Command: ad_type_sub_cmd

ใช้คำสั่งย่อยนี้เพื่อเพิ่มหรือลบประเภทโฆษณา หรือล้างรายการประเภทโฆษณา สำหรับการกรองในชิป ใช้ read_extended_features_sub_cmd เพื่อตรวจสอบว่าคำสั่งนี้ รองรับหรือไม่
เมื่อ APCF_AD_DATA_Length เป็น 0 ให้กรอง APCF_AD_TYPE โดยไม่ เปรียบเทียบข้อมูลโฆษณาและข้อมูลโฆษณาที่มาสก์ หากความยาวของข้อมูลในแพ็กเก็ต ADV ที่ได้รับเกิน AD_DATA_LENGTH ให้เปรียบเทียบ เฉพาะไบต์แรก AD_DATA_LENGTH ของข้อมูล AD และไม่สนใจข้อมูลที่เหลือ

Sub OCF: 0x09

พารามิเตอร์คำสั่งย่อย ขนาด วัตถุประสงค์
APCF_Action 1 อ็อกเท็ต 0x00 - เพิ่ม
0x01 - ลบ
0x02 - ล้าง
การลบจะลบโฆษณาประเภทที่ระบุในตัวกรองที่ระบุ
ล้างจะล้างประเภทโฆษณาทั้งหมดในตัวกรองที่ระบุ
APCF_Filter_Index 1 อ็อกเท็ต ดัชนีตัวกรอง (0, max_filter-1)
APCF_AD_TYPE 1 อ็อกเท็ต ประเภทโฆษณาสำหรับการเพิ่มหรือลบออกจากรายการ ไม่สนใจเมื่อ APCF_Action เป็น 0x02 (ล้าง)
APCF_AD_DATA_Length 1 อ็อกเท็ต 0x00 - หมายถึงไม่กรองเนื้อหาข้อมูล
ไม่สนใจเมื่อ APCF_Action เป็น 0x02 (ล้าง)
APCF_AD_DATA ขนาดตัวแปร ขนาดแปรผันตาม APCF_AD_DATA_Length
ไม่สนใจเมื่อ APCF_Action เป็น 0x02 (ล้าง)
APCF_AD_DATA_MASK ขนาดตัวแปร ขนาดตัวแปรตาม APCF_AD_DATA_Length
ไม่สนใจเมื่อ APCF_Action เป็น 0x02 (ล้าง)
ควรมีความยาวเท่ากับ APCF_AD_DATA

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
APCF_opcode 1 อ็อกเท็ต 0x09 - ประเภทโฆษณา APCF
APCF_Action 1 อ็อกเท็ต APCF_Action คำสั่งตอบกลับ
APCF_AvailableSpaces 1 อ็อกเท็ต จำนวนรายการฟรีที่ยังคงมีอยู่ในตารางประเภทโฆษณา

LE_APCF_Command: read_extended_features_sub_cmd

ใช้คำสั่งย่อยนี้เพื่ออ่านฟีเจอร์ APCF แบบขยาย

Sub OCF: 0xFF

พารามิเตอร์คำสั่งย่อย ขนาด วัตถุประสงค์
ไม่เกี่ยวข้อง พารามิเตอร์คำสั่งว่าง

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
APCF_opcode 1 อ็อกเท็ต 0xFF - APCF_Read_Extended_Features
APCF_extended_features 2 อ็อกเท็ต

มาสก์บิตสำหรับฟีเจอร์เพิ่มเติมที่รองรับมีดังนี้

  • บิตที่ 0: รองรับตัวกรองบริการค้นหาการรับส่ง
  • บิต 1: รองรับตัวกรองประเภทโฆษณา
  • บิต 2 ~15: สงวนไว้สำหรับการใช้งานในอนาคต

ค่าของบิต

  • 0 = ไม่รองรับ
  • 1 = รองรับ

คำสั่งกิจกรรมของตัวควบคุมและข้อมูลพลังงาน

วัตถุประสงค์ของข้อมูลนี้คือเพื่อให้ฟังก์ชันระบบโฮสต์ระดับสูงวิเคราะห์กิจกรรมทั้งหมดของคอมโพเนนต์ทั้งหมด ซึ่งรวมถึงคอนโทรลเลอร์ BT และสถานะมาโครของคอนโทรลเลอร์ร่วมกับสิ่งที่เกิดขึ้นในแอปและเฟรมเวิร์ก หากต้องการทำเช่นนี้ คุณจะต้องมีข้อมูลต่อไปนี้ จากสแต็ก BT และคอนโทรลเลอร์

  • สแต็ก BT: การรายงานสถานะการทำงานระดับมาโครปัจจุบันของ คอนโทรลเลอร์
  • เฟิร์มแวร์: การรายงานข้อมูลกิจกรรมและพลังงานรวม

สถานะมาโครของสแต็กโฮสต์ BT ตามที่กำหนดที่ระดับผู้ใช้

  • ไม่ได้ใช้งาน: [page scan, LE advt, inquiry scan, LE scan]
  • สแกน: [paging/inquiry/trying to connect]
  • ใช้งานอยู่: [ลิงก์ ACL เปิดอยู่ ลิงก์ SCO กำลังดำเนินการ โหมดดมกลิ่น]

กิจกรรมที่ตัวควบคุมติดตามตลอดอายุการใช้งาน ได้แก่ เวลา Tx เวลา Rx เวลาที่ไม่มีการใช้งาน และพลังงานทั้งหมดที่ใช้ไป ระบบจะล้างข้อมูลเมื่อ อ่านจากโฮสต์

LE_Get_Controller_Activity_Energy_Info

นี่คือคำสั่งเฉพาะของผู้ให้บริการ

OCF: 0x159

พารามิเตอร์คำสั่งย่อย ขนาด วัตถุประสงค์
NA พารามิเตอร์คำสั่งที่ว่างเปล่า

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
total_tx_time_ms 4 อ็อกเท็ต เวลาทั้งหมดที่ใช้ในการทำธุรกรรม
total_rx_time_ms 4 อ็อกเท็ต เวลาทั้งหมดที่ใช้ในการดำเนินการ Rx
total_idle_time_ms 4 อ็อกเท็ต เวลาทั้งหมดในโหมดว่าง (สถานะใช้พลังงานต่ำที่ไม่ใช่การหลับ)
total_energy_used 4 อ็อกเท็ต พลังงานทั้งหมดที่ใช้ [ผลคูณของกระแสไฟฟ้า (mA), แรงดันไฟฟ้า (V) และเวลา (ms)]

คำสั่งพารามิเตอร์การสแกนชุดขยาย LE

คำสั่งนี้ใช้เพื่อเปิดใช้หน้าต่างการสแกนและช่วงเวลาที่ใหญ่ขึ้นใน คอนโทรลเลอร์ ตามข้อกำหนด BT Core 5.2 หน้าต่างการสแกนและ ช่วงเวลาจะมีขีดจำกัดสูงสุดที่ 10.24 วินาที ซึ่งจะขัดขวาง ช่วงเวลาการสแกนที่เกิน 10.24 วินาทีสำหรับแอป

การอ้างอิงพื้นฐาน: ข้อกําหนด BT Core 5.2 หน้า 2493 (คําสั่งพารามิเตอร์ LE Set Scan )

OCF: 0x15A

พารามิเตอร์คำสั่ง ขนาด วัตถุประสงค์
LE_Ex_Scan_Type 1 อ็อกเท็ต 0x00 - การสแกนแบบพาสซีฟ ห้ามส่งแพ็กเก็ต SCAN_REQ (ค่าเริ่มต้น)
0x01 - การสแกนที่ใช้งานอยู่ อาจมีการส่งแพ็กเก็ต SCAN_REQ
LE_Ex_Scan_Interval 4 อ็อกเท็ต กำหนดเป็นช่วงเวลาตั้งแต่ตัวควบคุมเริ่มการสแกน LE ครั้งสุดท้าย จนถึงเริ่มการสแกน LE ครั้งถัดไป
ช่วง: 0x0004 ถึง 0x00FFFFFF
ค่าเริ่มต้น: 0x0010 (10 มิลลิวินาที)
เวลา = N * 0.625 มิลลิวินาที
ช่วงเวลา: 2.5 มิลลิวินาทีถึง 10442.25 วินาที
LE_Ex_Scan_Window 4 อ็อกเท็ต ระยะเวลาของการสแกน LE LE_Scan_Window ต้องน้อยกว่า หรือเท่ากับ LE_Scan_Interval
ช่วง: 0x0004 ถึง 0xFFFF
ค่าเริ่มต้น: 0x0010 (10 มิลลิวินาที)
เวลา = N * 0.625 มิลลิวินาที
ช่วงเวลา: 2.5 มิลลิวินาทีถึง 40.95 วินาที
Own_Address_Type 1 อ็อกเท็ต 0x00 - ที่อยู่อุปกรณ์สาธารณะ (ค่าเริ่มต้น)
0x01 - ที่อยู่อุปกรณ์แบบสุ่ม
LE_Ex_Scan_Filter_Policy 0x00 - ยอมรับแพ็กเก็ตโฆษณาทั้งหมด (ค่าเริ่มต้น) แพ็กเก็ตโฆษณาที่กำหนด ซึ่งไม่ได้ระบุที่อยู่สำหรับอุปกรณ์นี้จะ ไม่มีผล
0x01 - Ignore advertisement packets from devices not in the White List Only list. ระบบจะไม่สนใจแพ็กเก็ตโฆษณาที่กำหนดเป้าหมายซึ่งไม่ได้ระบุไว้สำหรับ อุปกรณ์นี้

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์

รับคำสั่งข้อมูลการแก้ไขข้อบกพร่องของตัวควบคุม

วัตถุประสงค์ขององค์ประกอบข้อมูลนี้คือการรับข้อมูลการแก้ไขข้อบกพร่องของตัวควบคุม จากโฮสต์ในรูปแบบไบนารีสำหรับการประมวลผลและการวิเคราะห์ภายหลัง ซึ่งจะช่วยแก้ไขข้อบกพร่องของปัญหาในฟิลด์และมอบชุดเครื่องมือให้วิศวกร เพื่อบันทึกข้อมูลสำหรับการวิเคราะห์ ผู้ควบคุมข้อมูลสามารถให้ข้อมูล เมื่อโฮสต์ขอผ่านเหตุการณ์ (เหตุการณ์ย่อยข้อมูลการแก้ไขข้อบกพร่องของผู้ควบคุมข้อมูล) หรือโดยอิสระเมื่อผู้ควบคุมข้อมูลต้องการ ตัวอย่างการใช้งานอาจรวมถึงการ รายงานข้อมูลสถานะเฟิร์มแวร์ ข้อมูลการทิ้งหน่วยความจำเมื่อเกิดข้อขัดข้อง ข้อมูลการบันทึก เป็นต้น

OCF: 0x15B

พารามิเตอร์คำสั่ง ขนาด วัตถุประสงค์
ไม่มี รายการพารามิเตอร์คำสั่งที่ว่างเปล่า

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์

รองรับการลดภาระฮาร์ดแวร์ A2DP

ฟีเจอร์การส่งต่อ A2DP รองรับการส่งต่อกระบวนการเข้ารหัสเสียง A2DP ไปยังตัวประมวลผลเสียงที่เชื่อมต่อกับตัวควบคุม BT สตรีมข้อมูลเสียงที่เข้ารหัสจะส่งจากตัวประมวลผลเสียงไปยังตัวควบคุม BT โดยตรงโดยไม่ต้องผ่านโฮสต์ BT โฮสต์ BT ยังคง รับผิดชอบในการกำหนดค่าและควบคุมเซสชัน A2DP คำสั่งมี 2 เวอร์ชัน คำสั่งเดิมที่มี Sub OCF 0x01-0x02 รองรับเฉพาะตัวแปลงรหัสแบบโอเพนซอร์ส เวอร์ชันที่มี Sub-OCF 0x03-0x04 จะไม่ขึ้นอยู่กับตัวแปลงรหัสที่กำหนดค่าไว้

OCF: 0x15D

เริ่มการลดภาระ A2DP (เดิม)

Sub OCF: 0x01

ใช้คำสั่งนี้ทั้งเพื่อกำหนดค่ากระบวนการออฟโหลด A2DP และเพื่อเริ่ม สตรีม A2DP

พารามิเตอร์คำสั่ง ขนาด วัตถุประสงค์
Codec 4 อ็อกเท็ต ระบุประเภทตัวแปลงรหัส
0x01 - SBC
0x02 - AAC
0x04 - APTX
0x08 - APTX HD
0x10 - LDAC
0x20 - Opus
Max_Latency 2 อ็อกเท็ต เวลาในการตอบสนองสูงสุดที่อนุญาต (เป็นมิลลิวินาที) ค่า 0 จะเป็นการปิดใช้การล้าง
SCMS-T_Enable 2 อ็อกเท็ต Octet 0: แฟล็กที่เปิดใช้การเพิ่มส่วนหัว SCMS-T
  • 0x00 - ไม่ได้รวมส่วนหัว SCMS-T
  • 0x01 - มีส่วนหัว SCMS-T

Octet 1: ค่าสำหรับส่วนหัว SCMS-T เมื่อเปิดใช้

Sampling_Frequency 4 อ็อกเท็ต 0x01 - 44100 Hz
0x02 - 48000 Hz
0x04 - 88200 Hz
0x08 - 96000 Hz
Bits_Per_Sample 1 อ็อกเท็ต 0x01 - 16 บิตต่อตัวอย่าง
0x02 - 24 บิตต่อตัวอย่าง
0x04 - 32 บิตต่อตัวอย่าง
Channel_Mode 1 อ็อกเท็ต 0x01 - โมโน
0x02 - สเตอริโอ
Encoded_Audio_Bitrate 4 อ็อกเท็ต อัตราบิตของเสียงที่เข้ารหัสในหน่วยบิตต่อวินาที
0x00000000 - ไม่ได้ระบุอัตราบิตของเสียง และไม่ได้ใช้
0x00000001 - 0x00FFFFFF - อัตราบิตของเสียงที่เข้ารหัสในหน่วยบิตต่อวินาที
0x01000000 - 0xFFFFFFFF - สงวนไว้
Connection_Handle 2 อ็อกเท็ต Connection Handle ของการเชื่อมต่อ A2DP ที่กำลังกำหนดค่า
L2CAP_Channel_ID 2 อ็อกเท็ต รหัสช่อง L2CAP ที่จะใช้สำหรับการเชื่อมต่อ A2DP นี้
L2CAP_MTU_Size 2 อ็อกเท็ต ขนาดสูงสุดของ L2CAP MTU ที่มีแพ็กเก็ตเสียงที่เข้ารหัส
Codec_Information 32 อ็อกเท็ต ข้อมูลเฉพาะของตัวแปลงรหัส

ตัวแปลงรหัส SBC:

ดูองค์ประกอบข้อมูลเฉพาะของตัวแปลงรหัส SBC ใน A2DP v1.3
อ็อกเท็ต 0: ความยาวบล็อก | แถบย่อย | วิธีการจัดสรร
อ็อกเท็ต 1: ค่า Bitpool ต่ำสุด
อ็อกเท็ต 2: ค่า Bitpool สูงสุด
อ็อกเท็ต 3: ความถี่ในการสุ่มตัวอย่าง | โหมดช่อง
อ็อกเท็ต 4-31: สงวนไว้

ตัวแปลงรหัส AAC:

ดูองค์ประกอบข้อมูลเฉพาะของตัวแปลงรหัส AAC ใน A2DP v1.3
อ็อกเทต 0: ประเภทออบเจ็กต์
อ็อกเทต 1; b7: VBR
อ็อกเทต 2-31: สงวนไว้

ตัวแปลงสัญญาณ LDAC:

Octet 0-3: รหัสผู้ให้บริการ
0x0000012D

อ็อกเท็ต 4-5: รหัสตัวแปลงรหัส
0x00AA - LDAC
ค่าอื่นๆ ทั้งหมดสงวนไว้

Octet 6: ดัชนีอัตราบิต:
0x00 - สูง
0x01 - ปานกลาง
0x02 - ต่ำ
0x03 - 0x7E - สงวนไว้
0x7F - ABR (อัตราบิตที่ปรับเปลี่ยนได้)
0x80 - 0xFF - สงวนไว้

Octet 7: โหมดช่อง LDAC
0x01 - สเตอริโอ
0x02 - คู่
0x04 - โมโน
อื่นๆ สงวนไว้

Octet 8-31: reserved

ตัวแปลงรหัส Opus:

Octet 0-3: รหัสผู้ให้บริการ
0x000000E0

อ็อกเท็ต 4-5: รหัสตัวแปลงรหัส
0x0001 - Opus
ค่าอื่นๆ ทั้งหมดสงวนไว้

Octet 6-31: reserved

ตัวแปลงรหัสอื่นๆ ทั้งหมด:

อ็อกเท็ต 0-31: สงวนไว้

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
Sub_Opcode 1 อ็อกเท็ต 0x01 - เริ่มการลดภาระ A2DP

เริ่มการลดภาระ A2DP

Sub OCF: 0x03

ใช้คำสั่งนี้ทั้งเพื่อกำหนดค่ากระบวนการออฟโหลด A2DP และเพื่อเริ่ม สตรีม A2DP

พารามิเตอร์คำสั่ง ขนาด วัตถุประสงค์
Connection Handle 2 อ็อกเท็ต แฮนเดิลของการเชื่อมต่อ HCI ที่ใช้งานอยู่
L2CAP_Channel_ID 2 อ็อกเท็ต ตัวระบุของช่อง L2CAP ที่เปิดสำหรับการสตรีม A2DP
Data_Path_Direction 1 อ็อกเท็ต 0x00 - เอาต์พุต (AVDTP Source/Merge)
0x01 - อินพุต (AVDTP Sink/Split)
Peer_MTU 2 อ็อกเท็ต ขนาดสูงสุดของแพ็กเก็ต L2CAP ที่เจรจาต่อรองกับเพียร์
CP_Enable_SCMS_T 1 อ็อกเท็ต 0x00 - ปิดใช้ส่วนหัวการป้องกันเนื้อหา SCMS-T
0x01 - เปิดใช้ส่วนหัวการป้องกันเนื้อหา SCMS-T
CP_Header_SCMS_T 1 อ็อกเท็ต เมื่อเปิดใช้ส่วนหัวการป้องกันเนื้อหา SCMS-T (CP_SCMS_T_Enable ตั้งค่าเป็น 0x01) จะกำหนดค่าส่วนหัวที่อยู่ก่อนเนื้อหาเสียง (ดู A2DP ส่วนที่ 3.2.1-2) ตามที่กำหนดโดยหมายเลขที่กำหนดของบลูทูธ ส่วนที่ 6.3.2
จะไม่สนใจเมื่อไม่ได้เปิดใช้การป้องกันเนื้อหา SCMS-T
Vendor_Specific_Parameters_Length 1 อ็อกเท็ต ความยาวของพารามิเตอร์เฉพาะผู้ให้บริการในช่วง 0-128
ระบบจะใช้ค่า 0 เมื่อไม่ได้ระบุพารามิเตอร์เพิ่มเติม
Vendor_Specific_Parameters 0-128 อ็อกเทต พารามิเตอร์เฉพาะของผู้ให้บริการที่จัดทำโดย Bluetooth Audio HAL CodecParameters.vendorSpecificParameters[]

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
Sub_Opcode 1 อ็อกเท็ต 0x03 - เริ่มการลดภาระ A2DP

หยุดการลดภาระ A2DP (เดิม)

Sub OCF: 0x02

คำสั่งนี้ใช้เพื่อหยุดสตรีมการออฟโหลด A2DP

พารามิเตอร์คำสั่ง ขนาด วัตถุประสงค์
ไม่มี รายการพารามิเตอร์คำสั่งว่างเปล่า

ไม่ได้กำหนดพารามิเตอร์สำหรับคำสั่งนี้

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
Sub_Opcode 1 อ็อกเท็ต 0x02 - หยุดการลดภาระ A2DP

หยุดการลดภาระ A2DP

Sub OCF: 0x04

คำสั่งนี้ใช้เพื่อหยุดสตรีมการออฟโหลด A2DP

พารามิเตอร์คำสั่ง ขนาด วัตถุประสงค์
Connection Handle 2 อ็อกเท็ต แฮนเดิลของการเชื่อมต่อ HCI ที่ใช้งานอยู่
L2CAP_Channel_ID 2 อ็อกเท็ต ตัวระบุของช่อง L2CAP ที่เปิดสำหรับการสตรีม A2DP
Data_Path_Direction 1 อ็อกเท็ต 0x00 - เอาต์พุต (AVDTP Source/Merge)
0x01 - อินพุต (AVDTP Sink/Split)

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
Sub_Opcode 1 อ็อกเท็ต 0x04 - หยุดการลดภาระ A2DP

คำสั่งรายงานคุณภาพบลูทูธ

ฟีเจอร์คำสั่งรายงานคุณภาพ BT จะเริ่มกลไกใน ตัวควบคุมบลูทูธเพื่อรายงานเหตุการณ์คุณภาพบลูทูธไปยังโฮสต์ คุณ เปิดใช้ตัวเลือกได้ 4 รายการ ดังนี้

  • โหมดการตรวจสอบคุณภาพ: ตัวควบคุมจะส่งเหตุการณ์ย่อย BQR ที่เกี่ยวข้องกับคุณภาพของลิงก์ไปยังโฮสต์เป็นระยะๆ
  • ใกล้ถึง LSTO: หากไม่ได้รับแพ็กเก็ตจากอุปกรณ์ BT ที่เชื่อมต่อเป็นเวลานานกว่าครึ่งหนึ่งของค่า Link Supervision TimeOut (LSTO) คอนโทรลเลอร์จะรายงานเหตุการณ์ Approaching LSTO ไปยังโฮสต์
  • เสียง A2DP ตะกุกตะกัก: เมื่อตัวควบคุมตรวจพบปัจจัยที่ทำให้เสียงตะกุกตะกัก ตัวควบคุมจะรายงานเหตุการณ์เสียง A2DP ตะกุกตะกักไปยังโฮสต์
  • (จ) เสียง (e)SCO ขาดๆ หายๆ: เมื่อตัวควบคุมตรวจพบปัจจัยที่ทำให้เสียงขาดๆ หายๆ ตัวควบคุมจะรายงานเหตุการณ์เสียง (e)SCO ขาดๆ หายๆ ไปยังโฮสต์
  • Root Inflammation: คอนโทรลเลอร์จะส่งเหตุการณ์นี้ไปยังสแต็ก เมื่อ HAL หรือคอนโทรลเลอร์พบข้อผิดพลาดร้ายแรงและต้อง รีสตาร์ทบลูทูธ
  • การติดตามข้อความ LMP/LL: คอนโทรลเลอร์จะส่งข้อความ LMP/LL การแฮนด์เชคกับอุปกรณ์ระยะไกลไปยังโฮสต์
  • การติดตามการจัดกำหนดการแบบหลายโปรไฟล์/การทำงานร่วมกันของบลูทูธ: คอนโทรลเลอร์จะส่ง ข้อมูลการจัดกำหนดการเกี่ยวกับการจัดการโปรไฟล์บลูทูธหลายรายการและ การทำงานร่วมกันแบบไร้สายในย่านความถี่ 2.4 GHz ไปยังโฮสต์
  • กลไกข้อมูลการแก้ไขข้อบกพร่องของตัวควบคุม: เมื่อเปิดใช้ ตัวควบคุมจะรายงานข้อมูลการบันทึกการแก้ไขข้อบกพร่องโดยอัตโนมัติผ่านเหตุการณ์ย่อยข้อมูลการแก้ไขข้อบกพร่องของตัวควบคุมไปยังโฮสต์
  • LE Audio Choppy: เมื่อตัวควบคุมตรวจพบปัจจัยที่ทำให้เสียงขาดหาย ตัวควบคุมจะรายงานเหตุการณ์ LE Audio Choppy ไปยังโฮสต์
  • โหมดสถิติ RF ขั้นสูง: คอนโทรลเลอร์จะรายงานสถิติ RF ที่เกี่ยวข้อง ให้กับโฮสต์ โดยรองรับกรณีการใช้งานการรายงาน 2 กรณีต่อไปนี้
    • รายงานเป็นระยะ
    • ทริกเกอร์เหตุการณ์ (ทริกเกอร์เหตุการณ์เริ่ม/หยุดสตรีมและคุณภาพลิงก์)
  • กลไกการตรวจสอบสถานะของตัวควบคุมจะให้ข้อมูลที่เกี่ยวข้องกับสถานะแก่โฮสต์ ผ่านเหตุการณ์ 2 ประเภท ได้แก่ รายงานเป็นระยะและรายงานที่ทริกเกอร์ด้วยเหตุการณ์
  • BQR_Report_Action ของคำสั่งรายงานคุณภาพบลูทูธ: โฮสต์สามารถ ใช้คำสั่ง HCI นี้เพื่อรับการค้นหาแบบครั้งเดียวสำหรับโหมดการตรวจสอบคุณภาพ โหมดการตรวจสอบพลังงาน หรือโหมดสถิติ RF ขั้นสูง

OCF: 0x15E

พารามิเตอร์คำสั่ง ขนาด วัตถุประสงค์
BQR_Report_Action 1 อ็อกเท็ต การดำเนินการเพื่อเพิ่ม / ลบการรายงานเหตุการณ์คุณภาพที่ตั้งค่าไว้ใน พารามิเตอร์ BQR_Quality_Event_Mask หรือล้างทั้งหมด

0x00 - เพิ่ม
0x01 - ลบ
0x02 - ล้าง
0x03 - การค้นหาครั้งเดียว

การลบจะล้างการรายงานเหตุการณ์ด้านคุณภาพที่เฉพาะเจาะจง
Clear จะล้างการรายงานเหตุการณ์คุณภาพทั้งหมด (ไม่สนใจพารามิเตอร์ BQR_Quality_Event_Mask ได้)

BQR_Quality_Event_Mask 4 อ็อกเท็ต บิตมาสก์สำหรับการรายงานเหตุการณ์ด้านคุณภาพที่เลือก

บิต 0: ตั้งค่าเพื่อเปิดใช้โหมดการตรวจสอบคุณภาพ
บิตที่ 1: ตั้งค่าเพื่อเปิดใช้เหตุการณ์ LSTO ที่กำลังจะเกิดขึ้น (สำหรับ ACL/(e)SCO/ISO)
บิตที่ 2: ตั้งค่าเพื่อเปิดใช้เหตุการณ์เสียง A2DP ขาดๆ หายๆ
บิตที่ 3: ตั้งค่าเพื่อเปิดใช้เหตุการณ์เสียง (e)SCO ขาดๆ หายๆ
บิตที่ 4: ตั้งค่าเพื่อเปิดใช้เหตุการณ์การอักเสบของรูท
บิตที่ 5: ตั้งค่าเพื่อเปิดใช้โหมดการตรวจสอบพลังงาน
บิตที่ 6: ตั้งค่าเพื่อเปิดใช้เหตุการณ์เสียง LE ขาดๆ หายๆ
บิตที่ 7: ตั้งค่าเพื่อเปิดใช้เหตุการณ์การเชื่อมต่อไม่สำเร็จ
บิตที่ 8: ตั้งค่าเพื่อเปิดใช้ทริกเกอร์เหตุการณ์โหมดสถิติ RF ขั้นสูง
บิต 9: ตั้งค่าเพื่อเปิดใช้รายงานเป็นระยะเกี่ยวกับสถิติ RF ขั้นสูง
บิตที่ 10: ตั้งค่าเพื่อเปิดใช้ทริกเกอร์เหตุการณ์กลไกการตรวจสอบสถานะของตัวควบคุม (เพิ่มใน BQRv7)
บิตที่ 11: ตั้งค่าเพื่อเปิดใช้กลไกการตรวจสอบความสมบูรณ์ของคอนโทรลเลอร์ให้รายงานเป็นระยะ (เพิ่มใน BQRv7)
บิตที่ 12 ~ 14: สงวนไว้
บิตที่ 15: ตั้งค่าเพื่อเปิดใช้เหตุการณ์คุณภาพเฉพาะผู้ให้บริการ
บิตที่ 16: ตั้งค่าเพื่อเปิดใช้การติดตามข้อความ LMP/LL
บิตที่ 17: ตั้งค่าเพื่อเปิดใช้การติดตามการจัดกำหนดการแบบหลายลิงก์/การทำงานร่วมกันของบลูทูธ
บิตที่ 18: ตั้งค่าเพื่อเปิดใช้กลไกข้อมูลการแก้ไขข้อบกพร่องของตัวควบคุม
บิตที่ 19: สงวนไว้สำหรับข้อมูลการแก้ไขข้อบกพร่องในการออฟโหลด
บิตที่ 20: ทริกเกอร์เหตุการณ์การดัมพ์ประวัติ UART (เพิ่มใน BQRv7)
บิตที่ 21 ~ 30: สงวนไว้
บิต 31: ตั้งค่าเพื่อเปิดใช้การติดตามเฉพาะผู้ให้บริการ

BQR_Minimum_Report_Interval 2 อ็อกเท็ต กำหนดช่วงเวลาขั้นต่ำของการรายงานเหตุการณ์ด้านคุณภาพสำหรับ เหตุการณ์ด้านคุณภาพที่เลือก เฟิร์มแวร์ของคอนโทรลเลอร์ไม่ควรรายงาน เหตุการณ์ถัดไปภายในช่วงเวลาที่กำหนด การตั้งค่าช่วงเวลา ต้องเป็นไปตามและเฉพาะสำหรับเหตุการณ์ด้านคุณภาพที่ กำลังเพิ่ม

หน่วย: มิลลิวินาที
ค่าเริ่มต้น: 0 (ไม่มีข้อจำกัดสำหรับช่วงเวลา)
ช่วง: 0 ~ 65535 มิลลิวินาที

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
เฟิร์มแวร์ของคอนโทรลเลอร์ต้องไม่รายงานเหตุการณ์ถัดไปภายในช่วงเวลาที่กำหนด การตั้งค่าช่วงเวลาจะใช้เฉพาะกับเหตุการณ์ที่มีคุณภาพที่เพิ่มเข้ามา

หน่วย: มิลลิวินาที
ค่าเริ่มต้น: 1
ช่วง: 0 ~ 4294967295 (0: เท่ากับตั้งค่าเป็น 1)

หมายเหตุ: หากการตั้งค่า BQR_Report_Interval มากกว่าความสามารถ ของคอนโทรลเลอร์ คอนโทรลเลอร์ต้องแสดงเวลา BQR_Report_Interval สูงสุดเมื่อคำสั่งเสร็จสมบูรณ์

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
Current_Quality_Event_Mask 4 อ็อกเท็ต ระบุการตั้งค่าบิตมาสก์ปัจจุบัน
บิตที่ 0: เปิดใช้โหมดการตรวจสอบคุณภาพ
บิตที่ 1: เปิดใช้การรายงานเหตุการณ์ LSTO ที่กำลังจะเกิดขึ้น
บิตที่ 2: เปิดใช้การรายงานเหตุการณ์เสียง A2DP ขาดๆ หายๆ
บิตที่ 3: เปิดใช้การรายงานเหตุการณ์เสียง (e)SCO ขาดๆ หายๆ
บิตที่ 4: เปิดใช้การรายงานเหตุการณ์การอักเสบของราก
บิตที่ 5: เปิดใช้โหมดการตรวจสอบพลังงาน
บิตที่ 6: เปิดใช้การรายงานเหตุการณ์เสียง LE ขาดๆ หายๆ
บิตที่ 7: เหตุการณ์การเชื่อมต่อล้มเหลว
บิตที่ 8: ตั้งค่าเพื่อเปิดใช้ทริกเกอร์เหตุการณ์โหมดสถิติ RF ขั้นสูง
บิตที่ 9: ตั้งค่าเพื่อเปิดใช้การรายงานสถิติ RF ขั้นสูงเป็นระยะๆ
บิตที่ 10: ตั้งค่าเป็นทริกเกอร์เหตุการณ์กลไกการตรวจสอบสถานะของตัวควบคุมที่เปิดใช้
บิตที่ 11: ตั้งค่าเป็นเปิดใช้กลไกการตรวจสอบสถานะของตัวควบคุมเพื่อรายงานเป็นระยะ
บิต 12 ~ 14: สงวนไว้
บิตที่ 15: เปิดใช้การรายงานเหตุการณ์คุณภาพเฉพาะผู้ให้บริการ
บิตที่ 16: เปิดใช้การติดตามข้อความ LMP/LL
บิตที่ 17: เปิดใช้การติดตามการจัดกำหนดการแบบหลายลิงก์/การทำงานร่วมกันของบลูทูธ
บิตที่ 18: เปิดใช้กลไกข้อมูลการแก้ไขข้อบกพร่องของตัวควบคุม
บิตที่ 19: สงวนไว้สำหรับข้อมูลการแก้ไขข้อบกพร่องในการออฟโหลด
บิตที่ 20: ทริกเกอร์เหตุการณ์การดัมพ์ประวัติ UART
บิตที่ 21 ~ 30: สงวนไว้
บิต 31: เปิดใช้การติดตามที่เฉพาะเจาะจงผู้ให้บริการ
Current_Vendor_Specific_Quality_Event_Mask 4 อ็อกเท็ต ระบุการตั้งค่าบิตมาสก์ปัจจุบัน
Current_Vendor_Specific_Trace_Mask 4 อ็อกเท็ต ระบุการตั้งค่าบิตมาสก์ปัจจุบัน
BQR_Report_interval 4 อ็อกเท็ต ระบุการตั้งค่าบิตมาสก์ปัจจุบัน
Current_Vendor_Specific_Trace_Mask 4 อ็อกเท็ต การตั้งค่าของ BQR_Report_interval โดยต้องเป็นค่าต่ำสุดระหว่าง BQR_Minimum_Report_Interval * Report_interval_multiple หรือช่วงเวลาสูงสุดที่รองรับของ คอนโทรลเลอร์

คำสั่งบัฟเฟอร์เสียงแบบไดนามิก

บัฟเฟอร์เสียงแบบไดนามิกช่วยลดอาการเสียงกระตุกโดยการเปลี่ยนขนาดบัฟเฟอร์เสียงในตัวควบคุมบลูทูธตามสถานการณ์ต่างๆ

OCF: 0x15F

รับความสามารถในการใช้ระยะบัฟเฟอร์ของเสียง

Sub OCF: 0x01

ใช้คำสั่งนี้เพื่อรับความสามารถของเวลาบัฟเฟอร์เสียงจาก ตัวควบคุมบลูทูธ

พารามิเตอร์คำสั่ง ขนาด วัตถุประสงค์
ไม่มี รายการพารามิเตอร์คำสั่งที่ว่างเปล่า

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
Dynamic_Audio_Buffer_opcode 1 อ็อกเท็ต 0x01 - รับระยะบัฟเฟอร์ของเสียง
Audio_Codec_Type_Supported 4 อ็อกเท็ต บิตมาสก์สำหรับประเภทตัวแปลงรหัสที่รองรับ
บิต 0 - SBC
บิต 1 - AAC
บิต 2 - APTX
บิต 3 - APTX HD
บิต 4 - LDAC
บิต 5-31 สงวนไว้
Audio_Codec_Buffer_Default_Time_For_Bit_0 2 อ็อกเท็ต เวลาบัฟเฟอร์เริ่มต้นของประเภทตัวแปลงรหัส Bit 0 ที่ระบุใน Audio_Codec_Type_Supported
ค่านี้ต้องเป็น 0 หากไม่รองรับประเภทตัวแปลงรหัสบิต 0
หน่วย: มิลลิวินาที
Audio_Codec_Buffer_Maximum_Time_For_Bit_0 2 อ็อกเท็ต เวลาบัฟเฟอร์สูงสุดของประเภทตัวแปลงรหัส Bit 0 ที่ระบุใน Audio_Codec_Type_Supported
ค่านี้ต้องเป็น 0 หากไม่รองรับประเภทตัวแปลงรหัสบิต 0
หน่วย: มิลลิวินาที
Audio_Codec_Buffer_Minimum_Time_For_Bit_0 2 อ็อกเท็ต เวลาบัฟเฟอร์ขั้นต่ำของประเภทตัวแปลงรหัส Bit 0 ที่ระบุใน Audio_Codec_Type_Supported
ค่านี้ต้องเป็น 0 หากไม่รองรับประเภทตัวแปลงรหัสบิต 0
หน่วย: มิลลิวินาที
Audio_Codec_Buffer_Default_Time_For_Bit_1 2 อ็อกเท็ต เวลาบัฟเฟอร์เริ่มต้นของประเภทตัวแปลงรหัส Bit 1 ที่ระบุใน Audio_Codec_Type_Supported
ค่านี้ต้องเป็น 0 หากไม่รองรับประเภทตัวแปลงรหัส Bit 1
หน่วย: มิลลิวินาที
Audio_Codec_Buffer_Maximum_Time_For_Bit_1 2 อ็อกเท็ต เวลาบัฟเฟอร์สูงสุดของประเภทตัวแปลงรหัส Bit 1 ที่ระบุใน Audio_Codec_Type_Supported
ค่านี้ต้องเป็น 0 หากไม่รองรับประเภทตัวแปลงรหัส Bit 1
หน่วย: มิลลิวินาที
Audio_Codec_Buffer_Minimum_Time_For_Bit_1 2 อ็อกเท็ต เวลาบัฟเฟอร์ขั้นต่ำของประเภทตัวแปลงรหัส Bit 1 ที่ระบุใน Audio_Codec_Type_Supported
ค่านี้ต้องเป็น 0 หากไม่รองรับประเภทตัวแปลงรหัส Bit 1
หน่วย: มิลลิวินาที
...... ...... ......
Audio_Codec_Buffer_Default_Time_For_Bit_31 2 อ็อกเท็ต เวลาบัฟเฟอร์เริ่มต้นของประเภทตัวแปลงรหัส Bit 31 ที่ระบุใน Audio_Codec_Type_Supported
ค่านี้ต้องเป็น 0 หากไม่รองรับประเภทตัวแปลงรหัสบิต 31
หน่วย: มิลลิวินาที
Audio_Codec_Buffer_Maximum_Time_For_Bit_31 2 อ็อกเท็ต เวลาบัฟเฟอร์สูงสุดของประเภทตัวแปลงรหัส Bit 31 ที่ระบุใน Audio_Codec_Type_Supported
ค่านี้ต้องเป็น 0 หากไม่รองรับประเภทตัวแปลงรหัสบิต 31
หน่วย: มิลลิวินาที
Audio_Codec_Buffer_Minimum_Time_For_Bit_31 2 อ็อกเท็ต เวลาบัฟเฟอร์ขั้นต่ำของประเภทตัวแปลงรหัส Bit 31 ที่ระบุใน Audio_Codec_Type_Supported
ค่านี้ต้องเป็น 0 หากไม่รองรับประเภทตัวแปลงรหัสบิต 31
หน่วย: มิลลิวินาที

ตั้งเวลาบัฟเฟอร์เสียง

Sub OCF: 0x02

ใช้คำสั่งนี้เพื่อตั้งค่าเวลาบัฟเฟอร์เสียงเป็นตัวควบคุมบลูทูธ

พารามิเตอร์คำสั่ง ขนาด วัตถุประสงค์
Audio_Codec_Buffer_Time 2 อ็อกเท็ต เวลาบัฟเฟอร์เสียงที่ขอสำหรับตัวแปลงรหัสที่ใช้ในปัจจุบัน
หน่วย: มิลลิวินาที

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
Dynamic_Audio_Buffer_opcode 1 อ็อกเท็ต 0x02 - ตั้งค่าระยะบัฟเฟอร์ของเสียง
Audio_Codec_Buffer_Time 2 อ็อกเท็ต เวลาบัฟเฟอร์เสียงปัจจุบันในตัวควบคุมบลูทูธ
หน่วย: มิลลิวินาที

เหตุการณ์ HCI (เฉพาะผู้ให้บริการ)

ในบางกรณี คุณจะต้องใช้เหตุการณ์ HCI เฉพาะของผู้ให้บริการ ดูรูปที่ 5.4 ในหน้า 1897 ของข้อกำหนด BT Core 5.2 พารามิเตอร์เหตุการณ์ 0 จะ มีรหัสเหตุการณ์ย่อยแรกเสมอ ซึ่งเป็นรหัสที่ใช้ในการถอดรหัสส่วนที่เหลือของ เหตุการณ์ HCI

พารามิเตอร์เหตุการณ์ ขนาด วัตถุประสงค์
HCI_vendor_specific_event_code 1 อ็อกเท็ต 0xFF
sub_event_code 1 อ็อกเท็ต รหัสเหตุการณ์ย่อยจะมีขนาด 1 อ็อกเท็ต โดยไบต์จะอยู่ต่อจากความยาวของพารามิเตอร์ในแพ็กเก็ตเหตุการณ์ HCI ทันที

เหตุการณ์ย่อยการละเมิดเกณฑ์พื้นที่เก็บข้อมูล

เหตุการณ์นี้บ่งชี้ว่ามีการละเมิดเกณฑ์พื้นที่เก็บข้อมูล

รหัสเหตุการณ์ย่อย = 0x54

พารามิเตอร์เหตุการณ์ย่อย ขนาด วัตถุประสงค์
ไม่มี

เหตุการณ์ย่อยการเปลี่ยนแปลงสถานะการโฆษณาหลายรายการของ LE

เหตุการณ์นี้บ่งชี้ว่าอินสแตนซ์การโฆษณาได้เปลี่ยนสถานะแล้ว ในขณะนี้ ระบบจะใช้เหตุการณ์นี้เพื่อระบุเฉพาะอินสแตนซ์การโฆษณาที่หยุดเนื่องจากการเชื่อมต่อ

รหัสเหตุการณ์ย่อย = 0x55

พารามิเตอร์เหตุการณ์ย่อย ขนาด วัตถุประสงค์
Advertising_instance 1 อ็อกเท็ต ระบุอินสแตนซ์การโฆษณาที่เฉพาะเจาะจง
ค่าที่ใช้ได้คือ 0 ถึง max_advt_instances-1
State_Change_Reason 1 อ็อกเท็ต 0x00: ได้รับการเชื่อมต่อแล้ว
Connection_handle 2 อ็อกเท็ต ระบุการเชื่อมต่อที่ทำให้ปิดใช้advtอินสแตนซ์ (0xFFFF หากไม่ถูกต้อง)

เหตุการณ์ย่อยการติดตามโฆษณา LE

เหตุการณ์นี้จะระบุเมื่อพบหรือสูญเสียผู้ลงโฆษณา

รหัสเหตุการณ์ย่อย = 0x56

พารามิเตอร์เหตุการณ์ย่อย ขนาด วัตถุประสงค์
APCF_Filter_Index 1 อ็อกเท็ต ดัชนีตัวกรอง (0, max_filter-1)
Advertiser_State 1 อ็อกเท็ต 0x00: พบผู้ลงโฆษณา
0x01: ไม่พบผู้ลงโฆษณา
Advt_Info_Present 1 อ็อกเท็ต 0x00: มีข้อมูลผู้ลงโฆษณา (Advt_Info)
0x01: ไม่มีข้อมูลผู้ลงโฆษณา (Advt_Info)
Advertiser_Address 6 อ็อกเท็ต ที่อยู่สาธารณะหรือแบบสุ่ม
Advertiser_Address_Type 1 อ็อกเท็ต 0x00: ที่อยู่สาธารณะ
0x01: ที่อยู่แบบสุ่ม
Advt_Info Tx_Pwr[0]: 1 อ็อกเทต
RSSI[0]: 1 อ็อกเทต
Timestamp[0]: 2 อ็อกเทต
Adv packet_len[0]: 1 อ็อกเทต
Adv_packet[0]: Adv_packet_len อ็อกเทต
Scan_data_resp_len[0]: 1 อ็อกเทต
Scan_data_resp[0]: Scan_data_resp อ็อกเทต

เหตุการณ์ย่อยของข้อมูลการแก้ไขข้อบกพร่องของตัวควบคุม

เหตุการณ์นี้ใช้โดยตัวควบคุมเพื่อระบุข้อมูลการแก้ไขข้อบกพร่องแบบไบนารีให้กับโฮสต์

รหัสเหตุการณ์ย่อย = 0x57

พารามิเตอร์เหตุการณ์ย่อย ขนาด วัตถุประสงค์
debug_block_byte_offset_start 2 อ็อกเท็ต แก้ไขข้อบกพร่องของออฟเซ็ตไบต์ของบล็อกตั้งแต่เริ่มต้น
last_block 1 อ็อกเท็ต 0x00: มีข้อมูลการแก้ไขข้อบกพร่องเพิ่มเติม
0x01: บล็อกไบนารีสุดท้าย ไม่มีข้อมูลการแก้ไขข้อบกพร่องเพิ่มเติม
cur_pay_load_sz 2 อ็อกเท็ต ขนาดบล็อกไบนารีในเหตุการณ์ปัจจุบัน
Debug_Data ตัวแปร ข้อมูลการแก้ไขข้อบกพร่องของ cur_payload_sz

เหตุการณ์ย่อยของรายงานคุณภาพบลูทูธ

เหตุการณ์นี้บ่งบอกถึงสิ่งต่อไปนี้อย่างใดอย่างหนึ่ง เหตุการณ์คุณภาพบลูทูธ เกิดขึ้น, คอนโทรลเลอร์อัปโหลดการติดตามข้อความ LMP/LL และการติดตามการจัดกำหนดการ แบบหลายลิงก์/การทำงานร่วมกันของบลูทูธ หรือคอนโทรลเลอร์ทิ้งข้อมูลการแก้ไขข้อบกพร่อง

พารามิเตอร์เหตุการณ์ย่อย ขนาด วัตถุประสงค์
Quality_Report_Id 1 อ็อกเท็ต 0x01: การรายงานคุณภาพในโหมดการตรวจสอบ
0x02: Approaching LSTO.
0x03: เสียง A2DP ขาดๆ หายๆ
0x04: (e)SCO Voice Choppy
0x05 ~ 0x06: จองไว้
0x07: เสียง LE ขาดๆ หายๆ
0x08: เชื่อมต่อไม่สำเร็จ
0x09 ~ 0xFF: สงวนไว้
Packet_Types 1 อ็อกเท็ต 0x01: ID
0x02: NULL
0x03: POLL
0x04: FHS
0x05: HV1
0x06: HV2
0x07: HV3
0x08: DV
0x09: EV3
0x0A: EV4
0x0B: EV5
0x0C: 2-EV3
0x0D: 2-EV5
0x0E: 3-EV3
0x0F: 3-EV5
0x10: DM1
0x11: DH1
0x12: DM3
0x13: DH3
0x14: DM5
0x15: DH5
0x16: AUX1
0x17: 2-DH1
0x18: 2-DH3
0x19: 2-DH5
0x1A: 3-DH1
0x1B: 3-DH3
0x1C: 3-DH5
0x1D ~ 0x50: Reserved
0x51: ISO packet
0x52: 1M PHY
0x53: 2M PHY
0x54: Codec PHY S=2
0x55: Codec PHY S=8
0x56 ~ 0xFF: Reserved
Connection_Handle 2 อ็อกเท็ต แฮนเดิลการเชื่อมต่อ ACL/(e)SCO/ISO
Connection_Role 1 อ็อกเท็ต บทบาทในการเชื่อมต่อ
0x00: กลาง
0x01: อุปกรณ์ต่อพ่วง
0x02 ~ 0xFF: สงวนไว้
TX_Power_Level 1 อ็อกเท็ต ระดับกำลังส่งปัจจุบันสำหรับ Connection_Handle ที่ระบุ

ค่านี้ต้องเหมือนกับค่าที่ตัวควบคุมตอบสนองต่อคำสั่ง HCI_Read_Transmit_Power_Level HCI

RSSI 1 อ็อกเท็ต [ในหน่วย dBm]

ค่าการบ่งชี้ความแรงของสัญญาณที่ได้รับ (RSSI) สำหรับ Connection_Handle ที่ระบุ
ค่านี้ต้องเป็นค่าความแรงของสัญญาณตัวรับแบบสัมบูรณ์
ช่วง: -127 ถึง +20

SNR 1 อ็อกเท็ต [ในหน่วย dB]

ค่าอัตราส่วนสัญญาณต่อสัญญาณรบกวน (SNR) สำหรับ Connection_Handle ที่ระบุ
ตัวควบคุมต้องระบุ SNR เฉลี่ยของช่องทั้งหมด ที่ลิงก์ใช้

Unused_AFH_Channel_Count 1 อ็อกเท็ต ระบุจำนวนช่องที่ไม่ได้ใช้ใน AFH_channel_map
0x4F ~ 0xFF: สงวนไว้
AFH_Select_Unideal_Channel_Count 1 อ็อกเท็ต ระบุจำนวนช่องที่ถูกรบกวนและมีคุณภาพไม่ดี แต่ยังคงได้รับเลือกสำหรับ AFH
ข้อกำหนดของบลูทูธอนุญาตให้ใช้ช่องอย่างน้อย 20 ช่อง ดังนั้นแม้ว่าช่องทั้ง 79 ช่องจะถูกรบกวนและมีคุณภาพไม่ดี แต่ตัวควบคุมก็ยังต้องเลือกช่องอย่างน้อย 20 ช่องสำหรับ AFH
LSTO 2 อ็อกเท็ต การตั้งค่าการหมดเวลาของการควบคุมดูแลลิงก์ปัจจุบัน
เวลา = N * 0.625 มิลลิวินาที
ช่วงเวลา: 0.625 มิลลิวินาทีถึง 40.9 วินาที
Connection_Piconet_Clock 4 อ็อกเท็ต Piconet Clock สำหรับ Connection_Handle ที่ระบุ
ค่านี้ต้องเหมือนกับค่าที่ตัวควบคุมตอบกลับ คำสั่ง HCI_Read_Clock HCI ที่มีพารามิเตอร์ "Which_Clock" เป็น 0x01 (Piconet Clock)
หน่วย: N * 0.3125 มิลลิวินาที (1 นาฬิกาบลูทูธ)
Retransmission_Count 4 อ็อกเท็ต จำนวนการส่งซ้ำตั้งแต่เหตุการณ์ล่าสุด
ระบบจะรีเซ็ตจำนวนนี้หลังจากรายงานไปยังโฮสต์
No_RX_Count 4 อ็อกเท็ต ไม่มีการนับ RX ตั้งแต่เหตุการณ์ล่าสุด
จำนวนจะเพิ่มขึ้นเมื่อไม่ได้รับแพ็กเก็ตตามช่วงเวลาที่กำหนด หรือแพ็กเก็ตที่ได้รับเสียหาย
ระบบจะรีเซ็ตจำนวนนี้หลังจากรายงานไปยังโฮสต์
NAK_Count 4 อ็อกเท็ต จำนวน NAK (การรับทราบเชิงลบ) ตั้งแต่เหตุการณ์ล่าสุด
ระบบจะรีเซ็ตจำนวนนี้หลังจากรายงานไปยังโฮสต์
Last_TX_ACK_Timestamp 4 อ็อกเท็ต การประทับเวลาของ ACK การส่งครั้งล่าสุด โดยจะอิงตามนาฬิกาบลูทูธของ ส่วนกลางของพิโคเน็ต (CLK)
หน่วย: N * 0.3125 มิลลิวินาที (1 นาฬิกาบลูทูธ)
Flow_Off_Count 4 อ็อกเท็ต จํานวนครั้งที่ตัวควบคุมได้รับ Flow-off (STOP) ตั้งแต่ เหตุการณ์ล่าสุด
ระบบจะรีเซ็ตจำนวนนี้หลังจากรายงานไปยังโฮสต์
Last_Flow_On_Timestamp 4 อ็อกเท็ต การประทับเวลาของการส่งต่อครั้งล่าสุด (GO) โดยจะอิงตามนาฬิกาบลูทูธของ ส่วนกลางของพิโคเน็ต (CLK)
หน่วย: N * 0.3125 มิลลิวินาที (1 นาฬิกาบลูทูธ)
Buffer_Overflow_Bytes 4 อ็อกเท็ต [เป็นไบต์]

จำนวนการล้นบัฟเฟอร์ตั้งแต่เหตุการณ์ล่าสุด
ตัวควบคุมจะนับจำนวนไบต์ของข้อมูลที่ถูกทิ้ง
ระบบจะรีเซ็ตจำนวนนี้หลังจากรายงานไปยังโฮสต์

Buffer_Underflow_Bytes 4 อ็อกเท็ต [เป็นไบต์]

จำนวนการไหลออกของบัฟเฟอร์ตั้งแต่เหตุการณ์ล่าสุด
ระบบจะรีเซ็ตจำนวนนี้หลังจากรายงานไปยังโฮสต์

bdaddr 6 อ็อกเท็ต ที่อยู่อุปกรณ์ระยะไกล
cal_failed_item_count 1 อ็อกเท็ต จำนวนรายการที่ปรับไม่สำเร็จ
TX_Total_Packets 4 อ็อกเท็ต จำนวนแพ็กเก็ตที่ส่งออก
TX_UnAcked_Packets 4 อ็อกเท็ต จำนวนแพ็กเกตที่ไม่ได้รับการรับทราบ
ระบบจะรีเซ็ตจำนวนนี้หลังจากรายงานไปยังโฮสต์
TX_Flushed_Packets 4 อ็อกเท็ต จำนวนแพ็กเกตที่ไม่ได้ส่งออกโดยจุดล้างข้อมูล
ระบบจะรีเซ็ตจำนวนนี้หลังจากรายงานไปยังโฮสต์
TX_Last_Subevent_Packets 4 อ็อกเท็ต จำนวนแพ็กเก็ตที่เลเยอร์ลิงก์ส่ง PDU ข้อมูล CIS ในเหตุการณ์ย่อยสุดท้ายของเหตุการณ์ CIS
ระบบจะรีเซ็ตจำนวนนี้หลังจากรายงานไปยังโฮสต์
ค่าจะเป็น 0 หากไม่มีค่าที่ถูกต้องสำหรับลิงก์
CRC_Error_Packets 4 อ็อกเท็ต จำนวนแพ็กเกจที่ได้รับซึ่งมีข้อผิดพลาด CRC ตั้งแต่เหตุการณ์ล่าสุด
ระบบจะรีเซ็ตจำนวนนี้หลังจากรายงานไปยังโฮสต์
RX_Duplicate_Packets 4 อ็อกเท็ต จำนวนแพ็กเก็ตที่ซ้ำกัน (ส่งซ้ำ) ที่ได้รับตั้งแต่เหตุการณ์ล่าสุด
ระบบจะรีเซ็ตจำนวนนี้หลังจากรายงานไปยังโฮสต์
RX_Unreceived_Packets 4 อ็อกเท็ต จำนวนแพ็กเกตที่ไม่ได้รับจะเหมือนกับพารามิเตอร์ของคำสั่ง LE READ ISO Link Quality (ดูข้อกำหนดหลักของบลูทูธเวอร์ชัน 5.4) สตรีมที่เกี่ยวข้อง คือ CIS และ BIS
เมื่อเพิ่มค่านี้ เลเยอร์ลิงก์จะไม่ได้รับเพย์โหลดที่เฉพาะเจาะจงตามจุดล้างข้อมูล (ใน CIS) หรือเมื่อสิ้นสุดเหตุการณ์ที่เชื่อมโยง (ใน BIS ดูข้อกำหนดหลักของบลูทูธเวอร์ชัน 5.4 เล่ม 6 ส่วน B ส่วนที่ 4.4.6.6)
Coex_Info_Mask 2 อ็อกเท็ต บิต 0 - CoexInvolvement: ตั้งค่าเพื่อระบุว่าสงสัยว่ากิจกรรม Coex เกี่ยวข้อง เมื่อสร้างรายงานนี้ (เช่น A2DP Chops และ Approaching LSTO)
บิต 1 - WL 2G Radio Active: ตั้งค่าเพื่อระบุว่า WLAN 2G Radio ทำงานอยู่
บิต 2 - WL 2G Connected: ตั้งค่าเพื่อระบุว่าวิทยุ WLAN 2G ทำงานอยู่และเชื่อมต่อแล้ว
บิต 3 - วิทยุ WL 5G/6G ใช้งานอยู่: ตั้งค่าเพื่อระบุว่าวิทยุ WLAN 5G/6G ใช้งานอยู่
บิต 4-15 - สงวนไว้
พารามิเตอร์เฉพาะของผู้ให้บริการ (ความยาวรวมของพารามิเตอร์ - TBD) * อ็อกเท็ต เพื่อให้ผู้ให้บริการตัวควบคุมได้รับพารามิเตอร์เฉพาะของผู้ให้บริการเพิ่มเติม

รหัสเหตุการณ์ย่อย = 0x58 [Quality_Report_Id = 0x05, Root Inflammation event]

เหตุการณ์นี้บ่งชี้ว่า HAL ของบลูทูธหรือตัวควบคุมพบข้อผิดพลาดร้ายแรงและต้องใช้สแต็กบลูทูธเพื่อบันทึกสถานการณ์นี้และรีสตาร์ท โดยตัวควบคุมต้องส่ง Root_Inflammation_Event ไปยังสแต็ก Bluetooth ก่อนส่งส่วนแรกของเหตุการณ์ข้อมูลการแก้ไขข้อบกพร่องในทุกกรณี

พารามิเตอร์ Error_Code มีรหัสข้อผิดพลาดที่รายงานจาก HAL/Controller หรือ 0 หากเป็นข้อผิดพลาดเฉพาะของผู้ให้บริการชิปเซ็ต Vendor_Specific_Error_Code มีรหัสข้อผิดพลาดเฉพาะของผู้ให้บริการชิปเซ็ต จาก HAL/Controller ควรตั้งค่าเป็น 0 หากพารามิเตอร์ Error_Code ไม่ใช่ 0 พารามิเตอร์ Error_Code และ Vendor_Specific_Error_Code ไม่ควรเป็น 0 ทั้งคู่

พารามิเตอร์เหตุการณ์ย่อย ขนาด วัตถุประสงค์
Quality_Report_Id 1 อ็อกเท็ต 0x00 ~ 0x04: จองไว้
0x05: การอักเสบที่ราก
0x06 ~ 0xFF: สงวนไว้
Error_Code 1 อ็อกเท็ต 0x00: มีรหัสข้อผิดพลาดเฉพาะของผู้ให้บริการชิปเซ็ต
0x01 ~ 0xFF: เกิดข้อผิดพลาดของตัวควบคุม ดูรายการรหัสข้อผิดพลาดและคำอธิบายได้ที่ข้อกำหนดของบลูทูธ [Vol 2] ส่วน D, รหัสข้อผิดพลาด
Vendor_Specific_Error_Code 1 อ็อกเท็ต 0x00: ไม่ได้รวมรหัสข้อผิดพลาดเฉพาะของผู้ให้บริการชิปเซ็ต
0x01 ~ 0xFF: รหัสข้อผิดพลาดเฉพาะของผู้ให้บริการชิปเซ็ต
พารามิเตอร์เฉพาะของผู้ให้บริการ (ความยาวทั้งหมดของพารามิเตอร์ - 4) * อ็อกเท็ต เพื่อให้ผู้ให้บริการตัวควบคุมได้รับพารามิเตอร์เฉพาะของผู้ให้บริการเพิ่มเติม

รหัสเหตุการณ์ย่อย = 0x58 [Quality_Report_Id = 0x06, เหตุการณ์การตรวจสอบพลังงาน]

เหตุการณ์นี้แสดงภาพรวมของการใช้พลังงานและสถานะการทำงานของตัวควบคุมบลูทูธในช่วงระยะเวลาหนึ่ง เหตุการณ์นี้ช่วยให้นักพัฒนาแอปและวิศวกรวิเคราะห์วิธีที่ คอนโทรลเลอร์จัดการพลังงาน ระบุว่ากิจกรรมใดใช้พลังงานมากที่สุด และแก้ปัญหา ที่เกี่ยวข้องกับพลังงาน

พารามิเตอร์ในรายงานจะติดตามเมตริกสําคัญ ซึ่งรวมถึง

  • การใช้กระแสไฟฟ้าปัจจุบันโดยเฉลี่ย: กระแสไฟฟ้าปัจจุบันโดยรวมที่ตัวควบคุมใช้
  • เวลาที่ใช้ในสถานะต่างๆ: เวลาทั้งหมด (เป็นมิลลิวินาที) ที่คอนโทรลเลอร์ใช้ในสถานะไม่ได้ใช้งาน (สลีป/ใช้พลังงานต่ำ) เทียบกับสถานะใช้งานอยู่ (เชื่อมต่อ ส่ง หรือรับข้อมูล)
  • จำนวนการเปลี่ยนสถานะ: จำนวนครั้งที่คอนโทรลเลอร์เปลี่ยนระหว่างสถานะ ไม่ได้ใช้งานและใช้งานอยู่
  • เวลาที่ใช้ในสถานะวิทยุที่เฉพาะเจาะจง: เมตริกแยกต่างหากสำหรับเวลาที่ใช้ในการส่ง (Tx) และรับ (Rx) สำหรับทั้งลิงก์ BR/EDR (Bluetooth Classic) และ LE (บลูทูธพลังงานต่ำ)
  • ระดับกำลังส่งโดยเฉลี่ย: กำลังโดยเฉลี่ย (เป็น dBm) ที่ใช้สำหรับการส่งในลิงก์ BR/EDR และ LE
  • กิจกรรมของเชนโดยละเอียด: รายงานเกี่ยวกับเวลาที่ใช้กับเชนการส่งหรือรับที่ใช้งานอยู่ โดยแยกความแตกต่างระหว่างการทำงานแบบ 1 เชนและ 2 เชน รวมถึงระหว่างเครื่องขยายสัญญาณภายใน (iPA) และภายนอก (ePA)
  • เวลาในการสแกนกิจกรรม: เวลาที่ตัวควบคุมใช้ในการสแกนหาอุปกรณ์ BR/EDR และ LE อย่างต่อเนื่อง

การตรวจสอบพารามิเตอร์เหล่านี้ช่วยให้วิศวกรได้รับข้อมูลเชิงลึกเกี่ยวกับประสิทธิภาพการใช้พลังงานของตัวควบคุม และเพิ่มประสิทธิภาพการทำงานของตัวควบคุม

พารามิเตอร์เหตุการณ์ย่อย ขนาด วัตถุประสงค์
Quality_Report_Id 1 อ็อกเท็ต 0x06: การตรวจสอบการใช้พลังงาน
Average_Current_Consumption 2 อ็อกเท็ต [ในหน่วย mA] การใช้กระแสไฟฟ้าโดยเฉลี่ยของกิจกรรมทั้งหมดที่ตัวควบคุมใช้
Idle_Total_Time (การนอนหลับ) 4 อ็อกเท็ต [เป็นมิลลิวินาที] เวลาทั้งหมดในสถานะว่าง (สถานะพลังงานต่ำ, สลีป)
Idle_Sate_Enter_Count 4 อ็อกเท็ต ระบุจำนวนครั้งที่ตัวควบคุมเข้าสู่สถานะว่าง
Active_Total_Time 4 อ็อกเท็ต [เป็นมิลลิวินาที] เวลาทั้งหมดในสถานะใช้งาน (การสอบถาม การแบ่งหน้า การรับส่งข้อมูล ACL/SCO/eSCO/BIS/CIS การประมวลผลงาน)
Active_State_Enter_Count 4 อ็อกเท็ต ระบุจำนวนครั้งที่ตัวควบคุมเข้าสู่สถานะที่ใช้งานอยู่
BR_RDR_Tx_Total_Time 4 อ็อกเท็ต [เป็นมิลลิวินาที] เวลาทั้งหมดในสถานะ Tx(การส่งสำหรับการรับส่งข้อมูล ACL/SCO/eSCO) เฉพาะ BR/EDR
BR_RDR_Tx_State_Enter_Count 4 อ็อกเท็ต ระบุจำนวนครั้งที่คอนโทรลเลอร์เข้าสู่สถานะ Tx เฉพาะของ BR/EDR
BR_RDR_Tx_Average_Power_Level 1 อ็อกเท็ต [ในหน่วย dBm] ระดับกำลัง Tx เฉลี่ยของลิงก์ BR/EDR ทั้งหมด
BR_RDR_Rx_Total_Time 4 อ็อกเท็ต [มิลลิวินาที] เวลาทั้งหมดในสถานะ Rx (รับจากการเข้าชม ACL/SCO/eSCO) เฉพาะของ BR/EDR
BR_RDR_Rx_State_Enter_Count 4 อ็อกเท็ต [เป็นมิลลิวินาที] ระบุจำนวนครั้งที่คอนโทรลเลอร์เข้าสู่สถานะ Rx เฉพาะของ BR/EDR
LE_Tx_Total_Time 4 อ็อกเท็ต [เป็นมิลลิวินาที] เวลาทั้งหมดในสถานะ Tx (การส่งสำหรับ ACL/BIS/CIS หรือ LE การรับส่งโฆษณา) ที่เฉพาะเจาะจงของ LE
LE_Tx_State_Enter_Count 4 อ็อกเท็ต ระบุจำนวนครั้งที่คอนโทรลเลอร์เข้าสู่สถานะ Rx เฉพาะของ BR/EDR
LE_Tx_Average_Power_Level 1 อ็อกเท็ต [ในหน่วย dBm] ระดับกำลังส่งเฉลี่ยของลิงก์ LE ทั้งหมด
LE_Rx_Total_Time 4 อ็อกเท็ต [เป็นมิลลิวินาที] เวลาทั้งหมดในสถานะ Rx (รับจาก ACL/BIS/CIS หรือ การเข้าชมการสแกน LE) ที่เฉพาะเจาะจงของ LE
LE_Rx_State_Enter_Count 4 อ็อกเท็ต [ในหน่วยมิลลิวินาที] ระบุจำนวนครั้งที่คอนโทรลเลอร์เข้าสู่สถานะ Rx เฉพาะของ LE
Report_Time_Duration (เวลาทั้งหมด) 4 อ็อกเท็ต [เป็นมิลลิวินาที] ระยะเวลาทั้งหมดในการรวบรวมข้อมูลที่เกี่ยวข้องกับพลังงาน
RX_Active_One_Chain_Time 4 อ็อกเท็ต [เป็นมิลลิวินาที] ระยะเวลาที่ RX ใช้งานอยู่ในเชนเดียว
RX_Active_Two_Chain_Time 4 อ็อกเท็ต [เป็นมิลลิวินาที] ระยะเวลาที่ RX ทำงานใน 2 เชน
TX_iPA_Active_One_Chain_Time 4 อ็อกเท็ต [เป็นมิลลิวินาที] ระยะเวลาของ TX ภายในที่ใช้งานอยู่ในเชนเดียว
TX_iPA_Active_Two_Chain_Time 4 อ็อกเท็ต [เป็นมิลลิวินาที] ระยะเวลาที่ TX ภายในทำงานใน 2 เชน
TX_ePA_Active_One_Chain_Time 4 อ็อกเท็ต [เป็นมิลลิวินาที] ระยะเวลาที่ TX ภายนอกทำงานในเชนเดียว
TX_ePA_Active_Two_Chain_Time 4 อ็อกเท็ต [เป็นมิลลิวินาที] ระยะเวลาที่ TX ภายนอกทำงานใน 2 เชน
BREDR_RX_Active_Scan_total_Time 4 อ็อกเท็ต [ในหน่วยมิลลิวินาที] ระยะเวลา (มิลลิวินาที) ในเวลาที่สแกน BR/EDR RX ใช้งานอยู่
LE_RX_Active_Scan_total_Time 4 อ็อกเท็ต [เป็นมิลลิวินาที] ระยะเวลา (มิลลิวินาที) ในเวลาที่ RX ของการสแกน LE ทำงาน

รหัสเหตุการณ์ย่อย = 0x58 [Quality_Report_Id = 0x09~0x0A, เหตุการณ์สถิติ RF ขั้นสูง]

เหตุการณ์สถิติ RF (ความถี่วิทยุ) ขั้นสูงของบลูทูธจะแสดงเมตริกประสิทธิภาพโดยละเอียด เกี่ยวกับลักษณะการทำงานของวิทยุของตัวควบคุมบลูทูธ ระบบจะทริกเกอร์เหตุการณ์ได้ 2 วิธีดังนี้

  • ตามทริกเกอร์ (0x09): ระบบจะส่งรายงานแบบครั้งเดียวเพื่อตอบสนองต่อคำสั่งที่เฉพาะเจาะจง
  • ตามจอภาพ (0x0A): คอนโทรลเลอร์จะส่งรายงานเป็นระยะๆ ตามช่วงเวลาที่ระบุ

พารามิเตอร์ของเหตุการณ์คือตัวนับแพ็กเก็ตที่ติดตามลักษณะการทำงานของวิทยุต่างๆ ในช่วงระยะเวลาที่ระบุ

เมตริกหลักและวัตถุประสงค์ของเมตริก
  • ส่งสถิติพลังงาน: ตัวนับเหล่านี้จะติดตามแพ็กเก็ตที่ส่งโดยใช้การกำหนดค่าพลังงานที่แตกต่างกัน โดยจะแยกความแตกต่างระหว่างเครื่องขยายสัญญาณภายใน (iPA) และภายนอก (ePA) รวมถึงโหมดความหลากหลายของเสาอากาศ (Div) หรือการสร้างลำแสง (BF) ต่างๆ ซึ่งจะช่วย พิจารณาว่ามีการใช้การตั้งค่ากำลังและเสาอากาศใดบ่อยที่สุด
  • กลุ่มตัวบ่งชี้ความแรงของสัญญาณที่ได้รับ (RSSI): พารามิเตอร์เหล่านี้จัดหมวดหมู่ แพ็กเก็ตที่ได้รับตามความแรงของสัญญาณ การระบุจำนวนแพ็กเก็ตภายใน ช่วง RSSI ที่เฉพาะเจาะจง (เช่น น้อยกว่า -90 dBm, -70 ถึง -75 dBm) จะช่วยให้รายงานแสดง ภาพคุณภาพลิงก์ได้อย่างชัดเจน จำนวนที่สูงในกลุ่มสัญญาณ "อ่อน" (เช่น < -90 dBm) แสดงว่าการเชื่อมต่อไม่ดี
  • เดลต้า RSSI: เมตริกนี้จะวัดความแตกต่างของความแรงของสัญญาณระหว่าง เสาอากาศรับสัญญาณ 2 เสา (หากมี) เคาน์เตอร์จะติดตามจำนวนแพ็กเก็ตที่มีเดลต้า RSSI ในช่วงต่างๆ เดลต้าขนาดใหญ่ (เช่น >11 dBm) อาจบ่งบอกถึงการรบกวนหรือสิ่งกีดขวาง ทางกายภาพ เนื่องจากเสาอากาศหนึ่งรับสัญญาณได้แรงกว่าอีกเสาอากาศหนึ่งมาก
  • การสลับเสาอากาศและการส่งซ้ำ: รายงานจะนับความถี่ที่ตัวควบคุม สลับระหว่างเสาอากาศและติดตามแพ็กเก็ตที่ส่งซ้ำ (ReTX) การส่งซ้ำจำนวนมาก มักบ่งชี้ว่าการเชื่อมต่อมีสัญญาณอ่อนหรือไม่เสถียร จึงต้องส่งแพ็กเก็ต อีกครั้ง
  • คุณภาพของช่องทาง: พารามิเตอร์เหล่านี้จะให้ข้อมูลสรุประดับสูงเกี่ยวกับสถานะ ของช่องทางการสื่อสารต่างๆ โดยจัดหมวดหมู่เป็น "ดี" "พอใช้" "ไม่ดี" หรือ "แย่มาก" ตาม RSSI ซึ่งจะแสดงภาพรวมของสภาพแวดล้อม RF ในทันที
  • คิวบัฟเฟอร์ TX: ส่วนนี้จะตรวจสอบจำนวนแพ็กเก็ตที่รอในบัฟเฟอร์การส่งของ คอนโทรลเลอร์สำหรับลิงก์ประเภทต่างๆ เช่น ACL (ลิงก์เชิงตรรกะแบบเชื่อมต่อที่ไม่พร้อมกัน) LECONN (การเชื่อมต่อ LE) และ LEISOC (LE Isochronous) จำนวนบัฟเฟอร์สูงอาจบ่งบอกถึงคอขวดหรือปัญหาเกี่ยวกับ การไหลของข้อมูลจากโฮสต์ไปยังคอนโทรลเลอร์
พารามิเตอร์เหตุการณ์ย่อย ขนาด วัตถุประสงค์
Quality_Report_Id 1 อ็อกเท็ต 0x09: สถิติ RF ขั้นสูงตามทริกเกอร์
0x0A: สถิติ RF ขั้นสูงตามจอภาพ
Extension_info 1 อ็อกเท็ต ข้อมูลเวอร์ชัน BQR
0x01 สำหรับ BQRv6
0x02 สำหรับ BQRv7
Report_Time_Period 4 อ็อกเท็ต ระยะเวลาในการรวบรวมข้อมูลประสิทธิภาพ หน่วย: มิลลิวินาที
TX_Power_iPA_BF 4 อ็อกเท็ต เคาน์เตอร์แพ็กเกตของ iPA BF
TX_Power_ePA_BF 4 อ็อกเท็ต ตัวนับแพ็กเกตของ ePA BF
TX_Power_iPA_Div 4 อ็อกเท็ต เคาน์เตอร์แพ็กเกตของ ePA Div
TX_Power_ePA_Div 4 อ็อกเท็ต เคาน์เตอร์แพ็กเกตของ ePA Div
RSSI_chain_50 4 อ็อกเท็ต ตัวนับแพ็กเกตของเชน RSSI > -50 dBm
RSSI_chain_50_55 4 อ็อกเท็ต ตัวนับแพ็กเก็ตของเชน RSSI ระหว่าง -50 dBm ~ >-55 dBm
RSSI_chain_55_60 4 อ็อกเท็ต ตัวนับแพ็กเก็ตของเชน RSSI ระหว่าง -55 dBm ~ >-60 dBm
RSSI_chain_60_65 4 อ็อกเท็ต ตัวนับแพ็กเก็ตของเชน RSSI ระหว่าง -60 dBm ~ >-65 dBm
RSSI_chain_65_70 4 อ็อกเท็ต ตัวนับแพ็กเก็ตของเชน RSSI ระหว่าง -65 dBm ~ >-70 dBm
RSSI_chain_70_75 4 อ็อกเท็ต ตัวนับแพ็กเก็ตของเชน RSSI ระหว่าง -70 dBm ~ >-75 dBm
RSSI_chain_75_80 4 อ็อกเท็ต ตัวนับแพ็กเก็ตของเชน RSSI ระหว่าง -75 dBm ~ >-80 dBm
RSSI_chain_80_85 4 อ็อกเท็ต ตัวนับแพ็กเก็ตของเชน RSSI ระหว่าง -80 dBm ~ >-85 dBm
RSSI_chain_85_90 4 อ็อกเท็ต ตัวนับแพ็กเก็ตของเชน RSSI ระหว่าง -85 dBm ~ >-90 dBm
RSSI_chain_90 4 อ็อกเท็ต ตัวนับแพ็กเก็ตของห่วงโซ่ RSSI < -90 dBm
RSSI_delta_2 4 อ็อกเท็ต ตัวนับแพ็กเกตของเดลต้า RSSI < 2 dBm
RSSI_delta_2_5 4 อ็อกเท็ต ตัวนับแพ็กเกตของเดลต้า RSSI ระหว่าง 2 dBm ~ 5 dBm
RSSI_delta_5_8 4 อ็อกเท็ต ตัวนับแพ็กเกตของเดลต้า RSSI ระหว่าง 5 dBm ~ 8 dBm
RSSI_delta_8_11 4 อ็อกเท็ต ตัวนับแพ็กเกตของเดลต้า RSSI ระหว่าง 8 dBm ~ 11 dBm
RSSI_delta_11 4 อ็อกเท็ต ตัวนับแพ็กเกตของเดลต้า RSSI > 11 dBm
Antenna_Switch_Count 4 อ็อกเท็ต ตัวนับแพ็กเก็ตของเหตุการณ์การสลับเสาอากาศ
ReTX_iPA_BF 4 อ็อกเท็ต ตัวนับแพ็กเก็ตของ ReTX_iPA_BF ในช่วงเวลาล่าสุด
ReTX_ePA_BF 4 อ็อกเท็ต ตัวนับแพ็กเก็ตของ ReTX_ePA_BF ในช่วงเวลาล่าสุด
ReTX_iPA_Div 4 อ็อกเท็ต ตัวนับแพ็กเก็ตของ ReTX_iPA_Div ในช่วงเวลาล่าสุด
ReTX_ePA_Div 4 อ็อกเท็ต ตัวนับแพ็กเก็ตของ ReTX_ePA_Div ในช่วงเวลาล่าสุด
Channel_count_Good 1 อ็อกเท็ต จำนวนช่องที่มี RSSI อยู่ใน Bin-1 (<-90)
Channel_count_OK 1 อ็อกเท็ต จำนวนช่องที่มี RSSI อยู่ใน Bin-2 (-90~-76)
Channel_count_Bad 1 อ็อกเท็ต จำนวนช่องที่มี RSSI อยู่ใน Bin-3 (-76~-50)
Channel_count_VeryBad 1 อ็อกเท็ต จำนวนช่องที่มี RSSI อยู่ใน Bin-4 (>-50)
TX_buffer_Queue_Count 4 อ็อกเท็ต ตัวนับสถานะคิวบัฟเฟอร์ - บัฟเฟอร์ TX ของคอนโทรลเลอร์ในช่วงเวลาล่าสุด [0:3] ACL_1 [4:7] ACL_2 [8:11] LECONN_1 [12:15] LECONN_2 [16:19] LEISOC_1 [20:23] LEISOC_2 [24:27] LEBroadcast [28:31] rsvd

รหัสเหตุการณ์ย่อย = 0x58 [Quality_Report_Id = 0x0B~0x0C, เหตุการณ์การตรวจสอบสถานะของตัวควบคุม]

เหตุการณ์การตรวจสอบประสิทธิภาพของตัวควบคุมบลูทูธจะแสดงข้อมูลสรุปเกี่ยวกับ สถานะการทำงานของตัวควบคุม ระบบจะทริกเกอร์เหตุการณ์ได้ 2 วิธีดังนี้

  • ตามทริกเกอร์ (0x09): ระบบจะส่งรายงานแบบครั้งเดียวเพื่อตอบสนองต่อคำสั่งที่เฉพาะเจาะจง
  • ตามจอภาพ (0x0A): คอนโทรลเลอร์จะส่งรายงานเป็นระยะๆ ตามช่วงเวลาที่ระบุ

เหตุการณ์การตรวจสอบความสมบูรณ์ของตัวควบคุมบลูทูธเป็นเครื่องมือวินิจฉัยที่แสดงข้อมูลสรุป เกี่ยวกับสถานะการทำงานของตัวควบคุม เหตุการณ์นี้เป็นส่วนหนึ่งของเฟรมเวิร์กรายงานคุณภาพบลูทูธ (BQR) และใช้สำหรับการแก้ไขข้อบกพร่องด้านการเชื่อมต่อ การจัดการพลังงาน และปัญหาด้านเวลา โดยสามารถส่งเป็นรายงานแบบครั้งเดียวหรือส่งเป็นระยะๆ เพื่อให้มีการตรวจสอบอย่างต่อเนื่อง

เมตริกหลักและวัตถุประสงค์ของเมตริก
  • ตัวนับแพ็กเก็ต HCI: เหตุการณ์จะติดตามจำนวนแพ็กเก็ตทั้งหมดที่ส่งจาก โฮสต์ไปยังคอนโทรลเลอร์และในทางกลับกัน เคาน์เตอร์เหล่านี้มีความสำคัญต่อการแก้ไขข้อบกพร่องเกี่ยวกับ การรับส่งข้อมูลของ Host Controller Interface (HCI) ซึ่งเป็น ช่องทางการสื่อสารระหว่างสแต็กซอฟต์แวร์กับชิปตัวควบคุมบลูทูธ
  • ความยาวของแพ็กเก็ต: เหตุการณ์จะรายงานความยาวของแพ็กเก็ต HCI สุดท้ายที่ส่งและ ได้รับ ซึ่งจะช่วยยืนยันว่ามีการส่งข้อมูลอย่างถูกต้องและไม่มีปัญหาเกี่ยวกับขนาดที่ไม่คาดคิด
  • จำนวนสัญญาณปลุก: รายงานจะแสดงจำนวนครั้งทั้งหมดที่ยืนยันพิน BT_Wake และ HOST_Wake สัญญาณทางกายภาพเหล่านี้มีความสําคัญอย่างยิ่งต่อการจัดการพลังงาน เนื่องจากใช้เพื่อปลุกเอนทิตีที่เกี่ยวข้อง จากสถานะพลังงานต่ำ การตรวจสอบจำนวนเหล่านี้จะช่วยแก้ไขปัญหาที่เกี่ยวข้องกับพลังงาน เช่น การปลุกที่ไม่คาดคิดหรือการเข้าสู่โหมดพักเครื่องไม่สำเร็จ
  • การประทับเวลา: เหตุการณ์นี้มีการประทับเวลาหลายรายการ รวมถึงเวลาของ สัญญาณปลุกครั้งล่าสุดและการรีเซ็ต HCI ครั้งล่าสุด การประทับเวลาเหล่านี้ช่วยแก้ปัญหาที่เกี่ยวข้องกับเวลา และเป็นจุดอ้างอิงสำหรับเวลาที่เกิดเหตุการณ์บางอย่าง
  • ตัวนับเวลา Watchdog: แฟล็กที่เฉพาะเจาะจงจะระบุว่าเหตุการณ์สร้างขึ้นเป็น คำเตือนล่วงหน้าว่าตัวนับเวลา Watchdog ของคอนโทรลเลอร์กำลังจะหมดอายุ นี่คือ การแจ้งเตือนที่สำคัญสำหรับตัวควบคุมที่อาจหยุดทำงานหรือทำงานผิดปกติ
  • สถานะลิงก์: รายงานจะสรุปสถานะปัจจุบันของการเชื่อมต่อที่ใช้งานอยู่ รวมถึงจำนวนลิงก์ BR/EDR, LE และ CIS (Connected Isochronous Stream) ทั้งหมด นอกจากนี้ยังระบุว่าลิงก์ SCO (Synchronous Connection-Oriented) ใช้งานอยู่หรือไม่ ข้อมูลนี้ แสดงภาพรวมของภาระการเชื่อมต่อปัจจุบันของคอนโทรลเลอร์
พารามิเตอร์เหตุการณ์ย่อย ขนาด วัตถุประสงค์
Quality_Report_Id 1 อ็อกเท็ต 0xB~0xC
0x0B: รายงานแบบครั้งเดียวหรือรายงานที่ทริกเกอร์ด้วยเหตุการณ์
0x0C: รายงานเป็นระยะ
Packet_Count_Host_to_Controller 4 อ็อกเท็ต จำนวนแพ็กเก็ตทั้งหมดที่ส่งจากโฮสต์ไปยังคอนโทรลเลอร์ผ่านการรับส่ง HCI ฟิลด์นี้ใช้เพื่อวัตถุประสงค์ในการแก้ไขข้อบกพร่องของปัญหา HCI (เช่น UART) ลักษณะการทำงาน: ตัวนับจะรีเซ็ตเมื่อตัวควบคุมได้รับการรีเซ็ต HCI
Packet_Count_Controller_to_Host 4 อ็อกเท็ต จำนวนแพ็กเก็ตเหตุการณ์ HCI ทั้งหมดที่ส่งไปยังโฮสต์ ฟิลด์นี้ใช้เพื่อวัตถุประสงค์ในการ แก้ไขข้อบกพร่องของปัญหา HCI (เช่น UART) ลักษณะการทำงาน: ตัวนับจะรีเซ็ตเมื่อตัวควบคุม ได้รับรีเซ็ต HCI
Last_Packet_Length_Host_to_Controller 2 อ็อกเท็ต ความยาวของแพ็กเก็ต HCI สุดท้ายที่ส่งไปยัง UART ของโฮสต์ หมายเหตุ: ความยาวแพ็กเก็ต HCI สูงสุด 2 อ็อกเท็ต (รวม HCI, ACL, SCO, ISO)
Last_Packet_Length_Controller_To_host 2 อ็อกเท็ต ความยาวของแพ็กเกต HCI ล่าสุดที่ได้รับจาก UART ของโฮสต์ หมายเหตุ: ความยาวแพ็กเก็ต HCI สูงสุด 2 อ็อกเท็ต (รวม HCI, ACL, SCO, ISO)
Total_BT_Wake_Count 4 อ็อกเท็ต การนับรวมการยืนยันพิน BT_Wake โดยเอนทิตีโฮสต์ ฟิลด์นี้ทำหน้าที่เป็น เครื่องมือวินิจฉัยสำหรับการแก้ไขข้อบกพร่องที่เกี่ยวข้องกับปัญหาด้านพลังงาน ลักษณะการทำงาน: ตัวนับจะรีเซ็ตเมื่อคอนโทรลเลอร์ได้รับรีเซ็ต HCI
Total_HOST_Wake_Count 4 อ็อกเท็ต การคำนวณแบบรวมของการยืนยันพิน Host_Wake ที่เริ่มต้นโดยตัวควบคุม ฟิลด์นี้ ทำหน้าที่เป็นเครื่องมือวินิจฉัยสำหรับการแก้ไขข้อบกพร่องที่เกี่ยวข้องกับปัญหาด้านพลังงาน ลักษณะการทำงาน: ตัวนับจะรีเซ็ตเมื่อตัวควบคุมได้รับการรีเซ็ต HCI
Last_BT_Wake_TimeStamp 4 อ็อกเท็ต การประทับเวลาล่าสุดเมื่อโฮสต์ยืนยันพิน BT_Wake ฟิลด์นี้ได้รับการติดตั้งใช้งานเพื่อวัตถุประสงค์ในการ แก้ไขข้อบกพร่องเกี่ยวกับปัญหาด้านพลังงาน
Last_HOST_Wake_TimeStamp 4 อ็อกเท็ต การประทับเวลาล่าสุดเมื่อตัวควบคุมยืนยันพิน Host_Wake ฟิลด์นี้ใช้สำหรับการแก้ไขข้อบกพร่องเกี่ยวกับปัญหาด้านพลังงาน
Reset_Timestamp 4 อ็อกเท็ต การประทับเวลาที่ระบุว่าการรีเซ็ต HCI ครั้งล่าสุดเสร็จสมบูรณ์แล้ว ฟิลด์นี้ใช้ เพื่อวัตถุประสงค์ที่ชัดเจนในการอำนวยความสะดวกในการแก้ไขปัญหาที่เกี่ยวข้องกับเวลา โดยควร ใช้เป็นจุดบันทึกเริ่มต้นเพื่อใช้อ้างอิงกับรายการอื่นๆ ทั้งหมด
Current_Timestamp 4 อ็อกเท็ต เวลาปัจจุบันเมื่อสร้างเหตุการณ์นี้ ช่องนี้ใช้เพื่อวัตถุประสงค์ในการ แก้ปัญหาความคลาดเคลื่อนของเวลา โดยควรใช้เป็นจุดบันทึกทริกเกอร์ที่ องค์ประกอบอื่นๆ ทั้งหมดอ้างอิง
Is_WatchDog_Timer_About_To_Expire 4 อ็อกเท็ต Flag to denote that this health status event is generated by the controller as an early warning of watch dog expiration. การประทับเวลาปัจจุบันใช้เพื่อระบุเวลาที่เกิดเหตุการณ์ ขึ้น
Coex_Status_Mask 2 อ็อกเท็ต บิต 0 - สงวนไว้
Total_Links_BR_EDR_LE_Active 1 อ็อกเท็ต จำนวนลิงก์ทั้งหมดของ BR/EDR/LE ในสถานะ "ใช้งานอยู่"
Total_Links_BR_EDR_Sniff 1 อ็อกเท็ต จำนวนลิงก์ทั้งหมดของ BR/EDR ในสถานะ Sniff/Idle
Total_Links_CIS 1 อ็อกเท็ต จำนวนลิงก์ทั้งหมดของ ISO
Is_SCO_Active 1 อ็อกเท็ต ตัวบ่งชี้เพื่อตรวจสอบว่าลิงก์ SCO เปิดใช้งานอยู่หรือไม่
พารามิเตอร์เหตุการณ์ย่อย ขนาด วัตถุประสงค์
Quality_Report_Id 1 อ็อกเท็ต 0x00 ~ 0x10: Reserved
0x11: การติดตามข้อความ LMP/LL
0x12: การติดตามการกำหนดเวลาแบบหลายลิงก์/การทำงานร่วมกันของบลูทูธ
0x13: ดัมพ์ข้อมูลการแก้ไขข้อบกพร่องของคอนโทรลเลอร์
0x14 ~ 0xFF: จองไว้
Connection_Handle 2 อ็อกเท็ต แฮนเดิลการเชื่อมต่อ
พารามิเตอร์เฉพาะของผู้ให้บริการ (ความยาวทั้งหมดของพารามิเตอร์ - 4) * อ็อกเท็ต รูปแบบเฉพาะของผู้ให้บริการของการติดตามข้อความ LMP, การติดตามการจัดกำหนดการแบบหลายลิงก์/การทำงานร่วมกันของบลูทูธ และการทิ้งข้อมูลการแก้ไขข้อบกพร่องของคอนโทรลเลอร์

รหัสเหตุการณ์ย่อย = 0x5C

เมื่อเปิดใช้งานแล้ว ระบบต้องสร้างเหตุการณ์นี้ในช่วง ISO แต่ละช่วง

การดำเนินการ
การเปิดใช้งานจะดำเนินการโดยการเลือกData_Path_IDรหัส 0x19ของผู้ให้บริการในHCI_LE_Setup_ISO_Data_Pathคำสั่งมาตรฐาน ต้องยอมรับคำสั่ง HCI_Configure_Data_Path ที่มี Data_Path_ID ตั้งค่าเป็น 0x19 และ Vendor_Specific_Config_Length ตั้งค่าเป็น 0 แม้ว่าตัวควบคุมจะไม่คาดหวังให้ดำเนินการใดๆ เมื่อได้รับคำสั่งนี้ ก็ตาม
เวลาการเลือกจ่ายงาน
เหตุการณ์จะปล่อยจากจุดเริ่มต้นของช่วง ISO (จุดยึด CIG หรือ BIG) ไปยังช่วง ISO ถัดไป โดยตัวควบคุมจะระบุความล่าช้าด้วยเวลาเริ่มต้นที่มีผลของ ช่วง ISO โดยใช้ Anchor_Point_Delay
การซิงค์คอนโทรลเลอร์
เมื่อช่วงเวลา ISO เริ่มต้นขึ้น ตัวควบคุมจะคำนวณ StreamSN โดยการเพิ่มค่าปัจจุบันตาม ISO_Interval ÷ SDU_Interval ที่กำหนดค่าไว้ ในช่วงเวลาแรก ค่านี้จะเริ่มต้นเป็น 0
จากนั้นสำหรับแต่ละแพ็กเก็ตใน FIFO ของ ISO จะมีผลดังนี้
  • คอนโทรลเลอร์จะคำนวณความแตกต่างของการวนรอบ SNdiff ระหว่างหมายเลขลำดับ 2 รายการ ดังนี้
    SNdiff = (SDUSN - StreamSN + 0x10000) mod 0x10000
  • เมื่อ (SNdiff + (FT-1) × ISO_Interval ÷ SDU_Interval) mod 0x10000 <= (FT-1) × ISO_Interval ÷ SDU_Interval:
    แพ็กเก็ตอยู่ในหน้าต่างการส่งซ้ำ โดยควรมีการกำหนดเวลาสำหรับการ ส่งในช่วงเวลาก่อนหน้า และตอนนี้พร้อมสำหรับการส่งซ้ำแล้ว หากไม่ใช่กรณีนี้ (ยังไม่ได้กำหนดเวลาส่ง) แสดงว่าได้รับล่าช้า ต้องส่งสัญญาณนี้ไปยังโฮสต์โดยใช้ In_Status แพ็กเก็ตดังกล่าวอาจถูกทิ้งหรือกำหนดเวลาส่งได้ ซึ่งการเลือกจะขึ้นอยู่กับการใช้งาน
  • หรือเมื่อ SNdiff < ISO_Interval ÷ SDU_Interval:
    ระบบจะกำหนดเวลาแพ็กเก็ตสำหรับการส่งจากเหตุการณ์นี้จนกว่าจะหมดเวลาการล้าง
  • หรือเมื่อ SNdiff >= ISO_Interval ÷ SDU_Interval และ SNdiff <= Max_Forward_Buffers:
    แพ็กเก็ตอยู่ในอนาคต ระบบจะส่งแพ็กเก็ตพร้อมกับเหตุการณ์ถัดไป เนื่องจากระบบจะส่งแพ็กเก็ตตามลำดับ เงื่อนไขนี้จึงสิ้นสุดการค้นหาแพ็กเก็ตสำหรับช่วงเวลานี้
    บัฟเฟอร์ที่โฮสต์ใช้จะไม่สื่อสารกับคอนโทรลเลอร์ แต่จะจำกัดไว้ที่ Max_Forward_Buffers = 16
  • หรือเมื่อไม่เป็นไปตามเงื่อนไขใดๆ ข้างต้น
    ระบบจะทิ้งแพ็กเก็ต เมื่อถึงขีดจำกัดการหมดเวลาของ Flush หรือได้รับแพ็กเก็ตที่ มีรูปแบบไม่ถูกต้อง

พารามิเตอร์เหตุการณ์ย่อย ขนาด วัตถุประสงค์
Connection_Handle 2 อ็อกเท็ต แฮนเดิลการเชื่อมต่อของ CIS หรือ BIS
ช่วง: 0x0000 ถึง 0x0EFF
Sequence_Number 2 อ็อกเท็ต หมายเลขลำดับของสตรีมที่ตัวควบคุมจัดการ

เริ่มต้นเป็น 0 เมื่อสร้าง CIS หรือ BIS และเพิ่มขึ้นตามจำนวน SDU ตามช่วงเวลา Isochronous ของ ISO ซึ่งกำหนดเป็น ISO_interval ÷ SDU_Interval ในแต่ละช่วงเวลา ISO
Anchor_Point_Delay 2 อ็อกเท็ต ความล่าช้าในหน่วยไมโครวินาทีระหว่างการสร้างเหตุการณ์กับจุดยึด BIG หรือ CIG ที่มีผล หรือจุดเริ่มต้นของช่วง ISO การประทับเวลาของจุดยึดที่มีผลจะกำหนดโดยสิ่งต่อไปนี้
Event generation time - Anchor_Point_Delay

ช่วง: 0 ถึงช่วงเวลา ISO ในหน่วยไมโครวินาที
In_Status 2 อ็อกเท็ต สถานะบัฟเฟอร์ ISO ของตัวควบคุม

เมื่อเริ่มต้นช่วงเวลา ISO ระบบจะตั้งค่าแต่ละบิต bi เมื่อ SDU (Sequence_Number + i) mod 0x10000 พร้อมใช้งาน เมื่อไม่พร้อมใช้งาน ระบบจะระบุ SDU เป็น Not received from the host

ค่า i อยู่ในช่วง 0 ถึง ISO_Interval ÷ SDU_Interval - 1 สำหรับค่าอื่นๆ ของ i ระบบจะตั้งค่าบิตเป็น 0
Tx_Status 2 อ็อกเท็ต สถานะการส่งเทียบกับ SDU ที่มีหมายเลขลำดับ
(Sequence_Number - Flush_Timeout × ISO_Interval ÷ SDU_Interval + i + 0x10000) mod 0x10000

บิต bi แต่ละบิตจะตั้งค่าเมื่อ PDU ทั้งหมดของ SDU ที่ระบุตามหมายเลขลำดับ ได้รับการส่งและรับทราบเรียบร้อยแล้ว

ค่า i อยู่ในช่วง 0 ถึง ISO_Interval ÷ SDU_Interval - 1 สำหรับค่าอื่นๆ ของ i ระบบจะตั้งค่าบิตเป็น 0
ในกลุ่มออกอากาศ ระบบจะถือว่ามีการรับทราบการส่งเสมอ

การรองรับผู้ลงโฆษณาหลายราย

วัตถุประสงค์ของการรองรับผู้ลงโฆษณาหลายรายมีดังนี้

  • ความสามารถในการรองรับโฆษณาหลายรายการ (max_advt_instances)
  • กำลังส่งที่แตกต่างกันเพื่อให้มีช่วงที่แตกต่างกัน
  • เนื้อหาโฆษณาที่แตกต่างกัน
  • การตอบกลับที่ปรับเปลี่ยนในแบบของคุณสำหรับผู้ลงโฆษณาแต่ละราย
  • ความเป็นส่วนตัว (ติดตามไม่ได้) สำหรับผู้ลงโฆษณาแต่ละราย
  • เชื่อมต่อได้

เรามีคำสั่งเฉพาะของผู้ให้บริการต่อไปนี้เพื่อให้ข้อกำหนดนี้ใกล้เคียงกับมาตรฐานที่มีอยู่ ซึ่งได้มาจากข้อกำหนดหลัก 4.1 ของบลูทูธ

LE_Multi_Advt_Command

OCF: 0x154

พารามิเตอร์คำสั่ง ขนาด วัตถุประสงค์
Multi_advt_opcode 1 อ็อกเท็ต 0x01 - Set_Advt_Param_Multi_Sub_Cmd
0x02 - Set_Advt_Data_Multi_Sub_Cmd
0x03 - Set_Scan_Resp_Data_Multi_Sub_Cmd
0x04 - Set_Random_Addr_Multi_Sub_Cmd
0x05 - Set_Advt_Enable_Multi_Sub_Cmd

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
Multi_advt_opcode 1 อ็อกเท็ต 0x01 - Set_Advt_Param_Multi_Command
0x02 - Set_Advt_Data_Multi_Command
0x03 - Set_Scan_Resp_Data_Multi_Command
0x04 - Set_Random_Addr_Multi_Command
0x05 - Set_Advt_Enable_Multi_Command

LE_Multi_Advt_Command: Set_Advt_Param_Multi_Sub_Cmd

การอ้างอิงพื้นฐาน: ข้อกําหนดหลักของบลูทูธ 4.1 หน้า 964 (LE Set Advertising Parameter Command)

Sub OCF: 0x01

พารามิเตอร์คำสั่งย่อย ขนาด วัตถุประสงค์
Advertising_Interval_Min ตามข้อกำหนด ตามข้อกำหนด
Advertising_Interval_Max ตามข้อกำหนด ตามข้อกำหนด
Advertising_Type ตามข้อกำหนด ตามข้อกำหนด
Own_Address_Type ตามข้อกำหนด ตามข้อกำหนด
Own_Address ตามข้อกำหนด ตามข้อกำหนด
Direct_Address_Type ตามข้อกำหนด ตามข้อกำหนด
Direct_Address ตามข้อกำหนด ตามข้อกำหนด
Advertising_Channel_Map ตามข้อกำหนด ตามข้อกำหนด
Adverstising_Filter_Policy ตามข้อกำหนด ตามข้อกำหนด
Advertising_Instance 1 อ็อกเท็ต ระบุความเกี่ยวข้องของพารามิเตอร์ข้างต้นกับอินสแตนซ์
Tx_power 1 อ็อกเท็ต Transmit_Power
หน่วย - ใน dBm (จำนวนเต็มที่มีเครื่องหมาย)
ช่วง (-70 ถึง +20)

พารามิเตอร์ Own_Address อาจเป็นที่อยู่ที่โฮสต์กำหนดค่า ในขณะที่ตั้งค่าอินสแตนซ์โฆษณาหลายรายการนี้ ซึ่งจะช่วยให้มีที่อยู่ส่วนตัวที่แก้ไขได้ในขณะที่ ส่งบีคอนแรก โฆษณาในอินสแตนซ์จะยังคงแสดงต่อไป ไม่ว่าการเชื่อมต่อจะเป็นอย่างไร สแต็ก BT ของโฮสต์สามารถออกคำสั่งเพื่อ เริ่มการโฆษณาในอินสแตนซ์ได้หลังจากเชื่อมต่อ

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้ตามที่ระบุ ในข้อกำหนดหลักของบลูทูธ 4.1 ตามคำสั่งข้างต้น ตัวควบคุมจะตอบกลับด้วยรหัสที่ไม่สําเร็จ (พารามิเตอร์ไม่ถูกต้อง) หากอินสแตนซ์การโฆษณาหรือพารามิเตอร์ Tx_Power ไม่ถูกต้อง

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
Multi_advt_opcode 1 อ็อกเท็ต 0x01 [Set_Advt_Param_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Data_Multi_Sub_Cmd

การอ้างอิงพื้นฐาน: ข้อกำหนดหลักของบลูทูธ 4.1 หน้า 969 (คำสั่งข้อมูลการโฆษณา LE Set )

Sub OCF: 0x02

พารามิเตอร์คำสั่งย่อย ขนาด วัตถุประสงค์
Advertising_Data_Length ตามข้อกำหนด ตามข้อกำหนด
Advertising_Data ตามข้อกำหนด ตามข้อกำหนด
Advertising_Instance 1 อ็อกเท็ต ระบุความเกี่ยวข้องของพารามิเตอร์ข้างต้นกับอินสแตนซ์

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้ตามที่ระบุ ในข้อกำหนดหลักของบลูทูธ 4.1 ตามคำสั่งข้างต้น ตัวควบคุมจะตอบกลับด้วยรหัสที่ไม่สําเร็จหากอินสแตนซ์การโฆษณาหรือTx_Powerพารามิเตอร์ไม่ถูกต้อง

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
Multi_advt_opcode 1 อ็อกเท็ต 0x02 [Set_Advt_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Scan_Resp_Data_Multi_Sub_Cmd

การอ้างอิงพื้นฐาน: ข้อกำหนดหลักของบลูทูธ 4.1 หน้า 970 (LE Set Scan Response Data Command)

Sub OCF: 0x03

พารามิเตอร์คำสั่งย่อย ขนาด วัตถุประสงค์
Scan_Response_Data_Length ตามข้อกำหนด ตามข้อกำหนด
Scan_Response_Data ตามข้อกำหนด ตามข้อกำหนด
Advertising_Instance 1 อ็อกเท็ต ระบุความเกี่ยวข้องของพารามิเตอร์ข้างต้นกับอินสแตนซ์

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้ตามที่ระบุ ในข้อกำหนดหลักของบลูทูธ 4.1 ตามคำสั่งข้างต้น ตัวควบคุมจะตอบกลับด้วยรหัสที่ไม่สําเร็จ (พารามิเตอร์ไม่ถูกต้อง) หาก อินสแตนซ์การโฆษณาหรือพารามิเตอร์ Tx_Power ไม่ถูกต้อง

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
Multi_advt_opcode 1 อ็อกเท็ต 0x03 [Set_Scan_Resp_Data_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Random_Addr_Multi_Sub_Cmd

การอ้างอิงพื้นฐาน: ข้อกำหนดหลักของบลูทูธ 4.1 หน้า 963 (คำสั่ง LE Set Random Address)

Sub OCF: 0x04

พารามิเตอร์คำสั่งย่อย ขนาด วัตถุประสงค์
ที่อยู่แบบสุ่ม ตามข้อกำหนด ตามข้อกำหนด
Advertising_Instance 1 อ็อกเท็ต ระบุความเกี่ยวข้องของพารามิเตอร์ข้างต้นกับอินสแตนซ์

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
Multi_advt_opcode 1 อ็อกเท็ต 0x04 [Set_Random_Addr_Multi_Sub_Cmd]

LE_Multi_Advt_Command: Set_Advt_Enable_Multi_Sub_Cmd

การอ้างอิงพื้นฐาน: ข้อกำหนดหลักของบลูทูธ 4.1 หน้า 971 (LE Set Advertise Enable Command ในข้อกำหนดหลักนั้น)

OCF: 0x05

พารามิเตอร์คำสั่งย่อย ขนาด วัตถุประสงค์
Advertising_Enable 1 อ็อกเท็ต ค่า 1 หมายถึงเปิดใช้ ค่าอื่นๆ หมายถึงปิดใช้
Advertising_Instance 1 อ็อกเท็ต ระบุความเกี่ยวข้องของพารามิเตอร์ข้างต้นกับอินสแตนซ์ อินสแตนซ์ 0 หมายถึงอินสแตนซ์ HCI มาตรฐาน

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
Multi_advt_opcode 1 อ็อกเท็ต 0x05 [Set_Advt_Enable_Multi_Sub_Cmd]

การแก้ปัญหาที่อยู่ส่วนตัวที่ออฟโหลด

ฟีเจอร์นี้จะแก้ไขที่อยู่ส่วนตัวในเฟิร์มแวร์หรือฮาร์ดแวร์ของตัวควบคุม ซึ่งมีประโยชน์ดังนี้

  • เวลาในการตอบสนองที่เกี่ยวข้องกับโฮสต์ในการแก้ไขที่อยู่ส่วนตัว
  • ประหยัดพลังงานโดยไม่ปลุกโฮสต์

LE_Set_RPA_Timeout

OCF: 0x15C

พารามิเตอร์คำสั่ง ขนาด วัตถุประสงค์
LE_local_IRK 16 อ็อกเท็ต IRK ของอุปกรณ์ในพื้นที่ที่ใช้สร้างที่อยู่ที่แก้ไขได้แบบสุ่ม
tRPA_min 2 อ็อกเท็ต การหมดเวลาในการสร้าง RPA ขั้นต่ำเป็นวินาที คอนโทรลเลอร์ต้อง สร้างที่อยู่ที่แก้ไขได้ใหม่สำหรับ เหตุการณ์การโฆษณา/การสแกน/การเชื่อมต่อใดๆ ในหรือหลังช่วงหมดเวลานี้
ช่วงที่ใช้ได้: 300-1800
tRPA_max 2 อ็อกเท็ต การหมดเวลาในการสร้าง RPA สูงสุดเป็นวินาที คอนโทรลเลอร์ต้อง สร้างที่อยู่ที่แก้ไขได้ใหม่สำหรับ เหตุการณ์การโฆษณา/การสแกน/การเชื่อมต่อใดๆ ก่อนหรือภายในระยะหมดเวลานี้
ช่วงที่ใช้ได้: tRPA_min-1800
พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะของคำสั่ง

ค่าสถานะ HCI ที่แนะนำ
0x00 สำเร็จ
0x01 คำสั่งที่ไม่รู้จัก (หากไม่รองรับ)
0x12 พารามิเตอร์คำสั่งไม่ถูกต้อง (หากมีพารามิเตอร์อยู่นอก ช่วงที่กำหนด)

LE_RPA_offload_Command

OCF: 0x155

พารามิเตอร์คำสั่ง ขนาด วัตถุประสงค์
RPA_offload_opcode 1 อ็อกเท็ต 0x1 - เปิดใช้ฟีเจอร์เฉพาะลูกค้า
0x2 - เพิ่ม IRK ลงในรายการ
0x3 - นำ IRK ออกจากรายการ
0x4 - ล้างรายการ IRK
0x5 - อ่านรายการ IRK

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
Event_RPA_offload_opcode 1 อ็อกเท็ต 0x1 - เปิดใช้ฟีเจอร์เฉพาะลูกค้า
0x2 - เพิ่ม IRK ลงในรายการ
0x3 - นำ IRK ออกจากรายการ
0x4 - ล้างรายการ IRK
0x5 - อ่านรายการ IRK

LE_RPA_offload: Enable_cust_specific_sub_Command

Sub OCF: 0x01

พารามิเตอร์คำสั่งย่อย ขนาด วัตถุประสงค์
enable_customer_specific_feature_set 1 อ็อกเท็ต 0x01 - เปิดใช้ฟีเจอร์ RPA ที่ลดภาระ
0x00 - ปิดใช้ฟีเจอร์ RPA ที่ลดภาระ

โฮสต์ต้องเปิดใช้การส่งต่อ RPA โดยอิงตามความสามารถของชิป โปรดดู LE_Get_Vendor_Capabilities_Command ชิปแต่ละตัวอาจมี max_irk_list_sz ที่แตกต่างกันในเฟิร์มแวร์

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
Event_cust_specific_feature_opcode 1 อ็อกเท็ต 0x01 [เปิดใช้ฟีเจอร์เฉพาะลูกค้า]

LE_RPA_offload: Add_IRK_to_list_sub_Command

Sub OCF: 0x02

พารามิเตอร์คำสั่งย่อย ขนาด วัตถุประสงค์
LE_IRK 16 อ็อกเท็ต LE IRK (ไบต์แรก LSB)
Address_Type 1 อ็อกเท็ต 0: ที่อยู่สาธารณะ
1: ที่อยู่ที่สุ่ม
LE_Device_Address 6 อ็อกเท็ต ที่อยู่สาธารณะหรือที่อยู่แบบสุ่มที่เชื่อมโยงกับ IRK (LSB ไบต์แรก)

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
Event_cust_specific_feature_opcode 1 อ็อกเท็ต 0x02 [เพิ่ม IRK ลงในรายการ]
LE_IrkList_AvailableSpaces 1 อ็อกเท็ต รายการในรายการที่อนุญาตในชีวิตจริงหลังจากดำเนินการปัจจุบัน

LE_RPA_offload: Remove_IRK_to_list_sub_Command

Sub OCF: 0x03

พารามิเตอร์คำสั่งย่อย ขนาด วัตถุประสงค์
Address_Type 1 อ็อกเท็ต 0: ที่อยู่สาธารณะ
1: ที่อยู่ที่สุ่ม
LE_Device_Address 6 อ็อกเท็ต ที่อยู่สาธารณะหรือที่อยู่แบบสุ่มที่เชื่อมโยงกับ IRK

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
Event_cust_specific_feature_opcode 1 อ็อกเท็ต 0x03 [นำ IRK ออกจากรายการ]
LE_IrkList_AvailableSpaces 1 อ็อกเท็ต รายการในรายการที่อนุญาตในชีวิตจริงหลังจากดำเนินการปัจจุบัน

LE_RPA_offload: Clear_IRK_list_sub_Command

Sub OCF: 0x04

พารามิเตอร์คำสั่งย่อย ขนาด วัตถุประสงค์
ไม่มี

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
Event_cust_specific_feature_opcode 1 อ็อกเท็ต 0x04 [ล้างรายการ IRK]
LE_IrkList_AvailableSpaces 1 อ็อกเท็ต รายการ IRL ที่พร้อมใช้งานหลังจากการดำเนินการปัจจุบัน [max_irk_list_sz]

LE_RPA_offload: Read_IRK_list_sub_Command

Sub OCF: 0x05

พารามิเตอร์คำสั่งย่อย ขนาด วัตถุประสงค์
LE_read_IRK_list_entry-index 1 อ็อกเท็ต ดัชนีของรายการ IRK [0, max_irk_list_sz-1]

ระบบจะสร้างเหตุการณ์ Command Complete สำหรับคำสั่งนี้

พารามิเตอร์การคืนค่า ขนาด วัตถุประสงค์
Status 1 อ็อกเท็ต สถานะคำสั่งเสร็จสมบูรณ์
Event_cust_specific_feature_opcode 1 อ็อกเท็ต 0x05 [อ่านรายการ IRK]
LE_Read_IRK_List_entry 1 อ็อกเท็ต ดัชนีของ IRK ที่โฮสต์ต้องการอ่านกลับ (ขนาดรายการ IRK สูงสุด คือ 32)
LE_IRK 16 อ็อกเท็ต ค่า IRK
Address_Type 1 อ็อกเท็ต 0: ที่อยู่สาธารณะ
1: ที่อยู่ที่สุ่ม
LE_Device_Address 6 อ็อกเท็ต ที่อยู่แบบสาธารณะหรือแบบสุ่มที่เชื่อมโยงกับ IRK
LE_Resolved_Private_Address 6 อ็อกเท็ต ที่อยู่ส่วนตัวที่แก้ไขได้ในปัจจุบันของ IRK นี้

Sniff Offload

ฟีเจอร์ Sniff Offload จะโอนการจัดการโหมด Sniff จากสแต็กโฮสต์ Bluetooth ไปยัง คอนโทรลเลอร์ Bluetooth ซึ่งจะช่วยให้ตัวควบคุมจัดการเวลาในการเข้า/ออกจากโหมด Sniff และใช้พารามิเตอร์ Sniff และ Sniff sub-rating ที่กำหนดค่าได้ ในขณะที่โฮสต์ยังคง ควบคุมการเลือกพารามิเตอร์ตามการเปลี่ยนแปลงกิจกรรมของโปรไฟล์บลูทูธ

สถานะ Sniff Offload

ส่วนนี้จะกำหนดสถานะภายในตัวควบคุมบลูทูธที่เกี่ยวข้องกับฟังก์ชัน Sniff Offload มีการกำหนดสถานะส่วนกลาง 2 สถานะเพื่อระบุสถานะของตัวควบคุมบลูทูธเมื่อ เปิดใช้ Sniff Offload มีการกำหนดสถานะเฉพาะของการเชื่อมต่อ 2 สถานะเพื่อ ระบุสถานะการเชื่อมต่อ BR/EDR เมื่อตัวควบคุมบลูทูธอยู่ในสถานะเปิดใช้การส่งผ่านข้อมูล

สถานะระดับระบบ

มีการกำหนดสถานะส่วนกลาง 2 สถานะเพื่อระบุสถานะของตัวควบคุมบลูทูธที่เกี่ยวข้องกับการเปิดใช้ Sniff Offload

สถานะปิดใช้ Sniff Offload

โดยค่าเริ่มต้น ระบบจะถือว่าตัวควบคุมบลูทูธอยู่ในสถานะ "ปิดใช้ Sniff Offload" คาดว่าตัวควบคุมบลูทูธจะจัดการคำสั่ง HCI_Sniff_Mode, HCI_Exit_Sniff_Mode และ HCI_Sniff_Subrating ที่ออกโดยโฮสต์บลูทูธ ตัวควบคุมบลูทูธจะต้อง ส่งต่อเหตุการณ์ HCI_Mode_Change และ HCI_Sniff_Subrating ไปยังโฮสต์บลูทูธตาม มาสก์เหตุการณ์ที่โฮสต์บลูทูธตั้งค่าไว้ด้วย

สถานะเปิดใช้ Sniff Offload

ระบบจะถือว่าตัวควบคุมบลูทูธอยู่ในสถานะ "เปิดใช้ Sniff Offload" หลังจากที่ จัดการ "WriteSniffOffloadEnable" เพื่อเปิดใช้ Sniff Offload ได้สำเร็จ ในสถานะนี้ คาดว่าตัวควบคุมบลูทูธจะส่งต่อเหตุการณ์ HCI_Mode_Change และ HCI_Sniff_Subrating ไปยังโฮสต์บลูทูธตามที่ฟังก์ชัน AND เชิงตรรกะของมาสก์เหตุการณ์ที่ตั้งค่าโดยโฮสต์บลูทูธและแฟล็กการระงับเหตุการณ์กำหนด

สถานะเฉพาะของการเชื่อมต่อ

เมื่อตัวควบคุมบลูทูธอยู่ในสถานะ "เปิดใช้ Sniff Offload" ACL ที่ใช้งานอยู่แต่ละรายการจะอยู่ในสถานะใดสถานะหนึ่งที่อธิบายไว้ด้านล่าง

สถานะพารามิเตอร์ที่รอดำเนินการ

ระบบจะถือว่า ACL อยู่ในสถานะ "รอดำเนินการ - พารามิเตอร์" เมื่อตัวควบคุมบลูทูธอยู่ในสถานะ "เปิดใช้การส่งต่อการดมกลิ่น" แต่โฮสต์บลูทูธยังไม่ได้ออกคำสั่งเฉพาะของผู้ให้บริการ "WriteSniffOffloadParameters" อย่างน้อย 1 ครั้งสำหรับ ACL ปัจจุบัน

สถานะเริ่มการควบคุม

ระบบจะถือว่า ACL อยู่ในสถานะ "เริ่มควบคุม" เมื่อตัวควบคุมบลูทูธอยู่ในสถานะ "เปิดใช้การส่งต่อการดมกลิ่น" และโฮสต์บลูทูธได้ออกคำสั่งเฉพาะของผู้ให้บริการ "WriteSniffOffloadParameters" อย่างน้อย 1 ครั้งสำหรับ ACL ปัจจุบัน

WriteSniffOffloadEnable

OCF: 0x310

พารามิเตอร์คำสั่ง ขนาด วัตถุประสงค์
Enable_Sniff_Offload 1 อ็อกเท็ต 0x00 : ปิดใช้
0x01 : เปิดใช้
Subrating_Max_Latency 2 อ็อกเท็ต พารามิเตอร์เวลาในการตอบสนองสูงสุดจะใช้ในการคำนวณอัตราการดมกลิ่นย่อยสูงสุดที่อุปกรณ์ระยะไกลอาจใช้ ค่าเริ่มต้น: เวลาในการตอบสนอง T*sniff* = N × 0.625 มิลลิวินาที (1 ช่องเบสแบนด์) ช่วง: 0x0002 ถึง 0xFFFE ช่วงเวลา: 1.25 มิลลิวินาทีถึง 40.9 วินาที
Subrating_Min_Remote_Timeout 2 อ็อกเท็ต ระยะหมดเวลาโหมดดมกลิ่นขั้นต่ำ (T*sniff_mode_timeout*) ที่อุปกรณ์ระยะไกลอาจใช้ ค่าเริ่มต้น: 0x0000 ระยะหมดเวลา = N × 0.625 มิลลิวินาที (1 ช่องเบสแบนด์) ช่วง: 0x0000 ถึง 0xFFFE เวลา ช่วง: 0 วินาทีถึง 40.9 วินาที
Subrating_Min_Local_Timeout 2 อ็อกเท็ต ระยะหมดเวลาโหมดดมกลิ่นขั้นต่ำ (T*sniff_mode_timeout*) ที่อุปกรณ์ในพื้นที่อาจใช้ ค่าเริ่มต้น: 0x0000 หมดเวลา = N × 0.625 มิลลิวินาที (1 ช่องเบสแบนด์) ช่วง: 0x0000 ถึง 0xFFFE เวลา ช่วง: 0 วินาทีถึง 40.9 วินาที
Suppress_Mode_Change_Event 1 อ็อกเท็ต 0x00 : คอนโทรลเลอร์บลูทูธต้องรายงานเหตุการณ์ HCI Mode_Change ไปยังโฮสต์ โดยขึ้นอยู่กับการกำหนดค่าที่ตั้งไว้ในคำสั่ง HCI_Set_Event_Mask
0x01 : คอนโทรลเลอร์บลูทูธ ต้องไม่รายงานเหตุการณ์ HCI Mode_Change ไปยังโฮสต์
Suppress_Sniff_Subrating_Event 1 อ็อกเท็ต 0x00 : คอนโทรลเลอร์บลูทูธต้องรายงานเหตุการณ์ HCI Sniff_Subrating ไปยังโฮสต์ โดยขึ้นอยู่กับการกำหนดค่าที่ตั้งไว้ในคำสั่ง HCI_Set_Event_Mask
0x01 : คอนโทรลเลอร์บลูทูธ ต้องไม่รายงานเหตุการณ์ HCI Sniff_Subrating ไปยังโฮสต์

WriteSniffOffloadParameters

OCF: 0x311

พารามิเตอร์คำสั่ง ขนาด วัตถุประสงค์
Connection_Handle 2 อ็อกเท็ต แฮนเดิลการเชื่อมต่อ ACL ของ BR/EDR แบบ 16 บิต ช่วง: 0x0000 ถึง 0x0EFF
Sniff_Max_Interval 2 อ็อกเท็ต - ช่วงที่กำหนดโดย Bluetooth SIG ซึ่งโดยปกติจะใช้สำหรับการเข้าสู่โหมดดมกลิ่น ช่วง: 0x0002 ถึง 0xFFFE; ใช้ได้เฉพาะค่าคู่เท่านั้น ช่วงที่ต้องระบุ: 0x0006 ถึง 0x0540 เวลา = N × 0.625 มิลลิวินาที ช่วงเวลา: 1.25 มิลลิวินาทีถึง 40.9 วินาที – กรณีพิเศษ 0x0000 : ใช้เพื่อเลือก "Push-Active" โหมด Sniff-Offload 0x0001 : ใช้เพื่อเลือกโหมด Sniff-Offload "Prefer-Active"
Sniff_Min_Interval 2 อ็อกเท็ต ช่วง: 0x0002 ถึง 0xFFFE; ใช้ได้เฉพาะค่าคู่เท่านั้น ช่วงที่ต้องระบุ: 0x0006 ถึง 0x0540 เวลา = N × 0.625 มิลลิวินาที ช่วงเวลา: 1.25 มิลลิวินาที ถึง 40.9 วินาที
Sniff_Attempts 2 อ็อกเท็ต จำนวนช่องรับสัญญาณเบสแบนด์สำหรับการพยายามดมกลิ่น ความยาว = N × 1.25 มิลลิวินาที ช่วง: 0x0001 ถึง 0x7FFF ช่วงเวลา: 1.25 มิลลิวินาที ถึง 40.9 วินาที ช่วงที่ต้องระบุสำหรับตัวควบคุม: 1 ถึง T*sniff* ÷ 2
Sniff_Timeout 2 อ็อกเท็ต จำนวนสล็อตรับสัญญาณเบสแบนด์สำหรับการหมดเวลาการดมกลิ่น ความยาว = N × 1.25 มิลลิวินาที ช่วง: 0x0000 ถึง 0x7FFF ช่วงเวลา: 0 มิลลิวินาที ถึง 40.9 วินาที ช่วงที่ต้องระบุสำหรับคอนโทรลเลอร์: 0 ถึง 0x0028
Link_Inactivity_Timeout 2 อ็อกเท็ต ค่าการหมดเวลาเป็นมิลลิวินาที Link_Inactivity Timer started/reset at every HCI-ACL transaction. เมื่อตัวจับเวลานี้หมดอายุ คอนโทรลเลอร์จะเริ่มเข้าสู่โหมด Sniff
Subrating_Max_Latency 2 อ็อกเท็ต พารามิเตอร์เวลาในการตอบสนองสูงสุดจะใช้ในการคำนวณอัตราการดมกลิ่นย่อยสูงสุดที่อุปกรณ์ระยะไกลอาจใช้ ค่าเริ่มต้น: เวลาในการตอบสนอง T*sniff* = N × 0.625 มิลลิวินาที (1 ช่องเบสแบนด์) ช่วง: 0x0002 ถึง 0xFFFE ช่วงเวลา: 1.25 มิลลิวินาทีถึง 40.9 วินาที
Subrating_Min_Remote_Timeout 2 อ็อกเท็ต ระยะหมดเวลาโหมดดมกลิ่นขั้นต่ำ (T*sniff_mode_timeout*) ที่อุปกรณ์ระยะไกลอาจใช้ ค่าเริ่มต้น: 0x0000 ระยะหมดเวลา = N × 0.625 มิลลิวินาที (1 ช่องเบสแบนด์) ช่วง: 0x0000 ถึง 0xFFFE เวลา ช่วง: 0 วินาทีถึง 40.9 วินาที
Subrating_Min_Local_Timeout 2 อ็อกเท็ต ระยะหมดเวลาโหมดดมกลิ่นขั้นต่ำ (T*sniff_mode_timeout*) ที่อุปกรณ์ในพื้นที่อาจใช้ ค่าเริ่มต้น: 0x0000 หมดเวลา = N × 0.625 มิลลิวินาที (1 ช่องเบสแบนด์) ช่วง: 0x0000 ถึง 0xFFFE เวลา ช่วง: 0 วินาทีถึง 40.9 วินาที
Allow_Exit_Sniff_On_Rx 1 อ็อกเท็ต Flag เพื่อควบคุมการออกจากโหมดดมกลิ่นในธุรกรรม HCI-ACL ที่มีทิศทางการรับ 0x00 : Do not exit sniff on Rx. 0x01 : Exit Sniff on Rx Receive-direction HCI-ACL is defined as ACL packet transmission from controller to host over HCI.
Allow_Exit_Sniff_On_Tx 1 อ็อกเท็ต Flag เพื่อควบคุมการออกจากโหมดดมกลิ่นในธุรกรรม HCI-ACL ทิศทางการส่ง 0x00 : Do not exit sniff on Tx. 0x01 : Exit Sniff on Tx Transmit-direction HCI-ACL is defined as ACL packet transmission from host to controller over HCI.