ข้อกำหนดด้าน HCI

Host Controller Interface (HCI) ใช้สำหรับการโต้ตอบกับคอนโทรลเลอร์ Bluetooth

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

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

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

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

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

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

รองรับมาตรฐานแบบเปิด

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

ความสามารถเฉพาะของผู้ขาย

คำสั่งเฉพาะผู้จำหน่าย: LE_Get_Vendor_Capabilities_Command

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

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

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

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

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

สงวนไว้หลังเวอร์ชัน 0.98
พารามิเตอร์นี้เลิกใช้งานแล้วในข้อมูลจำเพาะฟีเจอร์ของ Google เวอร์ชัน 0.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 ที่รองรับ
ไบต์[0] = จำนวนหลัก
ไบต์[1] = จำนวนรอง

เวอร์ชัน 1.03
ไบต์[0] = 0x01
ไบต์[1] = 0x03
total_num_of_advt_tracked 2 ออคเต็ต จำนวนผู้โฆษณาทั้งหมดที่ติดตามเพื่อวัตถุประสงค์ OnLost / OnFound
extended_scan_support 1 ออคเต็ต รองรับหน้าต่างการสแกนแบบขยายและช่วงเวลา
debug_logging_supported 1 ออคเต็ต รองรับการบันทึกข้อมูลดีบักไบนารีจากคอนโทรลเลอร์
LE_address_generation_offloading_support
(เลิกใช้แล้ว)
1 ออคเต็ต 0 = ไม่รองรับ
1 = รองรับ

สงวนไว้หลังเวอร์ชัน 0.98
พารามิเตอร์นี้เลิกใช้งานแล้วในข้อมูลจำเพาะฟีเจอร์ของ Google เวอร์ชัน 0.98 และสูงกว่า โดยหันไปใช้ ฟีเจอร์ความเป็นส่วนตัว ที่มีในข้อมูลจำเพาะ BT เวอร์ชัน 4.2 ขึ้นไป
A2DP_source_offload_capability_mask 4 ออคเต็ต รองรับบิตมาสก์สำหรับประเภทตัวแปลงสัญญาณ
บิต 0 - SBC
บิต 1 - AAC
บิต 2 - APTX
บิต 3 - APTX HD
บิต 4 - LDAC
บิต 5-31 สงวนไว้แล้ว
bluetooth_quality_report_support 1 ออคเต็ต รองรับการรายงานเหตุการณ์คุณภาพ Bluetooth
0 = ไม่สามารถ
1 = มีความสามารถ
dynamic_audio_buffer_support 4 ออคเต็ต รองรับบัฟเฟอร์เสียงแบบไดนามิกในตัวควบคุม Bluetooth
รองรับบิตมาสก์สำหรับประเภทตัวแปลงสัญญาณ
บิต 0 - SBC
บิต 1 - AAC
บิต 2 - APTX
บิต 3 - APTX HD
บิต 4 - LDAC
บิต 5-31 สงวนไว้แล้ว

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

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

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

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

เฟิร์มแวร์จะต้องรองรับการแบทช์สองประเภท ซึ่งสามารถทำงานพร้อมกันได้:

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

LE_Batch_Scan_Command

โอซีเอฟ: 0x156

พารามิเตอร์คำสั่ง ขนาด วัตถุประสงค์
Batch_Scan_opcode 1 ออคเต็ต 0x1 - เปิดใช้งานคุณลักษณะเฉพาะของลูกค้า
0x2 - ตั้งค่าพารามิเตอร์ Batch Scan Storage
0x3 - ตั้งค่าพารามิเตอร์การสแกนเป็นชุด
0x4 - อ่านพารามิเตอร์ผลลัพธ์การสแกนเป็นชุด

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

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

LE_Batch_Scan_Command: เปิดใช้งานคุณลักษณะเฉพาะของลูกค้า

โอซีเอฟย่อย: 0x01

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

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

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

LE_Batch_Scan_Command: ตั้งค่าคำสั่งย่อย Batch Scan Storage Param

โอซีเอฟย่อย: 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: ตั้งค่าคำสั่งย่อย Batch Scan Param

โอซีเอฟย่อย: 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 เพียงหนึ่งรายการเท่านั้นสำหรับแต่ละช่วงการสแกน บันทึกที่จะเก็บไว้สำหรับโหมด Truncated มีดังต่อไปนี้: { BD_ADDR , Tx Power, RSSI, Timestamp}

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

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

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

LE_Batch_Scan_Command: อ่านคำสั่งย่อยผลลัพธ์การสแกนเป็นกลุ่ม

โอซีเอฟย่อย: 0x04

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

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

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

พารามิเตอร์ส่งคืน ขนาด วัตถุประสงค์
Status 1 ออคเต็ต สถานะคำสั่งเสร็จสมบูรณ์
Batch_scan_opcode 1 ออคเต็ต 0x03 [ตั้งค่าพารามิเตอร์การสแกนเป็นชุด]
Batch_Scan_data_read 1 ออคเต็ต ระบุรูปแบบ (ตัดทอนหรือเต็ม)
num_of_records 1 ออคเต็ต จำนวนบันทึกของ Batch_Scan_data_read
format_of_data ตัวแปร โหมดที่ถูกตัดทอน:
ที่อยู่ [0]: 6 ออคเท็ต
ที่อยู่_ประเภท[0]: 1 ออคเต็ต
Tx_Pwr[0]: 1 ออคเต็ต
RSSI[0] : 1 ออคเต็ต
การประทับเวลา[0]: 2 ออคเต็ต
[หลายบันทึก ( num_of_records ) ด้วยรูปแบบด้านบน]

โหมดเต็ม:
ที่อยู่ [0]: 6 ออคเท็ต
ที่อยู่_ประเภท[0]: 1 ออคเต็ต
Tx_Pwr[0]: 1 ออคเต็ต
RSSI[0]: 1 ออคเต็ต
การประทับเวลา[0]: 2 ออคเต็ต
Adv packet_len[0]: 1 ออคเต็ต
Adv_packet[0]: ออคเต็ต Adv_packet_len
Scan_data_resp_len[0]: 1 ออคเต็ต
Scan_data_resp[0]: ออคเต็ต Scan_data_resp
[หลายบันทึกที่มีรูปแบบด้านบน ( num_of_records )]

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

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

LE_APCF_คำสั่ง

โอซีเอฟ: 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 AD
0x10 ~ 0xAF - สงวนไว้สำหรับใช้ในอนาคต
0xB0 ~ 0xDF - สงวนไว้สำหรับผู้ขาย
0xE0 ~ 0xFE - สงวนไว้สำหรับใช้ในอนาคต
0xFF - APCF อ่านคุณสมบัติเพิ่มเติม

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

พารามิเตอร์ส่งคืน ขนาด วัตถุประสงค์
Status 1 ออคเต็ต สถานะการคืนสินค้า
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 AD
0x10 ~ 0xAF - สงวนไว้สำหรับใช้ในอนาคต
0xB0 ~ 0xDF - สงวนไว้สำหรับผู้ขาย
0xE0 ~ 0xFE - สงวนไว้สำหรับใช้ในอนาคต
0xFF - APCF อ่านคุณสมบัติเพิ่มเติม

LE_APCF_คำสั่ง: Enable_sub_cmd

โอซีเอฟย่อย: 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

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

โอซีเอฟย่อย: 0x01

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

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

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

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

ขั้นตอนการประมวลผลนี้แสดงให้เห็นแบบจำลองแนวความคิด:

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

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

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

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

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

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

LE_APCF_คำสั่ง: Broadcast_address_sub_cmd

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

โอซีเอฟย่อย: 0x02

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

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

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

LE_APCF_คำสั่ง: service_uuid_sub_cmd

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

โอซีเอฟย่อย: 0x03

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

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

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

LE_APCF_Command: solicitation_uuid_sub_cmd

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

โอซีเอฟย่อย: 0x04

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

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

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

LE_APCF_คำสั่ง: local_name_sub_cmd

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

โอซีเอฟย่อย: 0x05

พารามิเตอร์คำสั่งย่อย ขนาด วัตถุประสงค์
APCF_Action 1 ออคเต็ต 0x00 - เพิ่ม
0x01 - ลบ
0x02 - ล้าง
Delete จะลบสตริงชื่อท้องถิ่นที่ระบุในตัวกรองที่ระบุ
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
APCF_Action 1 ออคเต็ต APCF_Action ของคำสั่ง Echo back
APCF_AvailableSpaces 1 ออคเต็ต จำนวนรายการฟรียังคงมีอยู่ในตารางชื่อท้องถิ่น

LE_APCF_คำสั่ง: manf_data_sub_cmd

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

โอซีเอฟย่อย: 0x06

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

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

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

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

LE_APCF_Command: service_data_sub_cmd

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

โอซีเอฟย่อย: 0x07

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

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

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

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

LE_APCF_คำสั่ง: ad_type_sub_cmd

คำสั่งย่อยนี้ใช้เพื่อเพิ่มหรือลบประเภท AD หรือเพื่อล้างรายการประเภท AD สำหรับการกรองบนชิป ใช้ read_extended_features_sub_cmd เพื่อตรวจสอบว่าคำสั่งนี้รองรับหรือไม่

โอซีเอฟย่อย: 0x09

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

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

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

LE_APCF_คำสั่ง: read_extend_features_sub_cmd

คำสั่งย่อยนี้ใช้เพื่ออ่านคุณลักษณะ APCF เพิ่มเติม

โอซีเอฟย่อย: 0xFF

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

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

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

บิตมาสก์สำหรับคุณสมบัติเพิ่มเติมที่รองรับ:

  • บิต 0: รองรับตัวกรอง Transport Discovery Service
  • บิต 1: รองรับตัวกรองประเภท AD
  • บิต 2 ~15: สงวนไว้สำหรับใช้ในอนาคต

ค่าของบิต

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

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

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

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

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

  • ไม่ได้ใช้งาน: [สแกนหน้า, LE advt, สแกนข้อซักถาม]
  • สแกน: [เพจ/สอบถาม/พยายามเชื่อมต่อ]
  • ใช้งานอยู่: [เปิดลิงก์ ACL, ลิงก์ SCO กำลังดำเนินอยู่, โหมดดมกลิ่น]

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

LE_Get_Controller_Activity_Energy_Info

นี่เป็นคำสั่งเฉพาะของผู้ขาย

โอซีเอฟ: 0x159

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

เหตุการณ์ 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)

โอซีเอฟ: 0x15A

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

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

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

รับคำสั่งข้อมูลการแก้ไขข้อบกพร่องของคอนโทรลเลอร์

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

โอซีเอฟ: 0x15B

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

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

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

รองรับการถ่ายข้อมูลฮาร์ดแวร์ A2DP

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

โอซีเอฟ: 0x15D

เริ่มการถ่ายโอนข้อมูล A2DP (แบบเดิม)

โอซีเอฟย่อย: 0x01

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

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

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

Sampling_Frequency 4 ออคเต็ต 0x01 - 44100 เฮิรตซ์
0x02 - 48000 เฮิรตซ์
0x04 - 88200 เฮิรตซ์
0x08 - 96000 เฮิรตซ์
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 ออคเต็ต หมายเลขอ้างอิงการเชื่อมต่อของการเชื่อมต่อ A2DP กำลังได้รับการกำหนดค่า
L2CAP_Channel_ID 2 ออคเต็ต L2CAP Channel ID ที่จะใช้สำหรับการเชื่อมต่อ A2DP นี้
L2CAP_MTU_Size 2 ออคเต็ต ขนาดสูงสุดของ L2CAP MTU ที่มีแพ็กเก็ตเสียงที่เข้ารหัส
Codec_Information 32 ออคเต็ต ข้อมูลเฉพาะของตัวแปลงสัญญาณ

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

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

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

โปรดดูองค์ประกอบข้อมูลเฉพาะของ AAC Codec ใน A2DP เวอร์ชัน 1.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 - โมโน
ที่เหลือก็สงวนไว้

8-31 ต.ค.: สงวนไว้

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

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

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

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

เริ่มออฟโหลด A2DP

โอซีเอฟย่อย: 0x03

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

พารามิเตอร์คำสั่ง ขนาด วัตถุประสงค์
Connection Handle 2 ออคเต็ต หมายเลขอ้างอิงของการเชื่อมต่อ HCI ที่ใช้งานอยู่
L2CAP_Channel_ID 2 ออคเต็ต ตัวระบุของช่อง L2CAP ที่เปิดสำหรับการสตรีม A2DP
Data_Path_Direction 1 ออคเต็ต 0x00 - เอาต์พุต (แหล่ง AVDTP/ผสาน)
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) ตามที่กำหนดโดย Bluetooth Assigned Numbers ส่วน 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 (แบบเดิม)

โอซีเอฟย่อย: 0x02

คำสั่งนี้ใช้เพื่อหยุดสตรีม A2DP Offload

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

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

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

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

หยุดการถ่ายโอนข้อมูล A2DP

โอซีเอฟย่อย: 0x04

คำสั่งนี้ใช้เพื่อหยุดสตรีม A2DP Offload

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

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

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

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

คุณลักษณะคำสั่งรายงานคุณภาพ BT เริ่มกลไกในตัวควบคุม Bluetooth เพื่อรายงานเหตุการณ์คุณภาพ Bluetooth ไปยังโฮสต์ คุณสามารถเปิดใช้งานสี่ตัวเลือก:

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

OCF: 0x15e

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

0x00 - เพิ่ม
0x01 - ลบ
0x02 - ชัดเจน

DELETE จะล้างการรายงานเหตุการณ์คุณภาพเฉพาะ
CLEAR จะล้างการรายงานเหตุการณ์คุณภาพทั้งหมด (พารามิเตอร์ BQR_QUALITY_EVENT_MASK สามารถละเว้นได้)

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

บิต 0: ตั้งค่าเพื่อเปิดใช้งานโหมดการตรวจสอบคุณภาพ
บิต 1: ตั้งค่าเป็นเปิดใช้งานเหตุการณ์ LSTO (สำหรับ ACL/(E) SCO/ISO)
บิต 2: ตั้งค่าเพื่อเปิดใช้งานเหตุการณ์ A2DP Audio Choppy
บิต 3: ตั้งค่าเพื่อเปิดใช้งาน (e) เหตุการณ์ SCO Voice Choppy
บิต 4: ตั้งค่าเพื่อเปิดใช้งานเหตุการณ์การอักเสบของรูท
บิต 5: ตั้งค่าเพื่อเปิดใช้งานโหมดการตรวจสอบพลังงาน
บิต 6: ตั้งค่าเพื่อเปิดใช้งานกิจกรรม Le Audio Choppy
บิต 7: ตั้งค่าเพื่อเปิดใช้งานเหตุการณ์การเชื่อมต่อล้มเหลว
บิต 8 ~ 14: สงวนไว้
บิต 15: ตั้งค่าเพื่อเปิดใช้งานกิจกรรมคุณภาพเฉพาะของผู้ขาย
บิต 16: ตั้งค่าเพื่อเปิดใช้งานการติดตามข้อความ LMP/LL
บิต 17: ตั้งค่าเพื่อเปิดใช้งานการติดตามการจัดตารางการกำหนดตารางเวลาบลูทู ธ/COEX
บิต 18: ตั้งค่าเพื่อเปิดใช้งานกลไกข้อมูลการดีบักคอนโทรลเลอร์
บิต 19 ~ 30: สงวนไว้
บิต 31: ตั้งค่าเพื่อเปิดใช้งานการติดตามเฉพาะของผู้ขาย

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

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

BQR_Vendor_Specific_Quality_Event_Mask 4 octets มาสก์บิตสำหรับการรายงานเหตุการณ์คุณภาพเฉพาะผู้ขายที่เลือก
พารามิเตอร์นี้ใช้ได้เฉพาะเมื่อมีการตั้งค่าบิต 15 ของ BQR_Quality_Event_Mask

บิต 0 ~ 31: สงวนไว้

BQR_Vendor_Specific_Trace_Mask 4 octets หน้ากากบิตสำหรับการรายงานการติดตามเฉพาะของผู้ขายที่เลือก
พารามิเตอร์นี้ใช้ได้เฉพาะเมื่อมีการตั้งค่าบิต 31 ของ BQR_Quality_Event_Mask

บิต 0 ~ 31: สงวนไว้

เหตุการณ์คำสั่งที่สมบูรณ์จะถูกสร้างขึ้นสำหรับคำสั่งนี้

พารามิเตอร์ส่งคืน ขนาด วัตถุประสงค์
Status 1 octet คำสั่งสถานะสมบูรณ์
Current_Quality_Event_Mask 4 octets ระบุการตั้งค่าบิตปัจจุบัน
บิต 0: เปิดใช้งานโหมดการตรวจสอบคุณภาพแล้ว
บิต 1: เปิดใช้งานการรายงานเหตุการณ์ LSTO
บิต 2: เปิดใช้งานการรายงานเหตุการณ์ Audio Choppy
บิต 3: (e) เปิดใช้งานการรายงานเหตุการณ์ SCO Voice Choppy
บิต 4: เปิดใช้งานการรายงานเหตุการณ์การอักเสบของรูท
บิต 5: เปิดใช้งานโหมดการตรวจสอบพลังงาน
บิต 6: เปิดใช้งานการรายงานเหตุการณ์ LE Audio Choppy
บิต 7: เชื่อมต่อเหตุการณ์ล้มเหลว
บิต 8 ~ 14: สงวนไว้
บิต 15: เปิดใช้งานการรายงานเหตุการณ์คุณภาพเฉพาะของผู้ขาย
บิต 16: เปิดใช้งานการติดตามข้อความ LMP/LL
บิต 17: เปิดใช้งานการติดตามการกำหนดตารางเวลาของ Bluetooth Multi-Link/Coex
บิต 18: เปิดใช้งานกลไกข้อมูลการดีบักคอนโทรลเลอร์
บิต 19 ~ 30: สงวนไว้
บิต 31: เปิดใช้งานการติดตามเฉพาะของผู้ขาย
Current_Vendor_Specific_Quality_Event_Mask 4 octets ระบุการตั้งค่าบิตปัจจุบัน
Current_Vendor_Specific_Trace_Mask 4 octets ระบุการตั้งค่าบิตปัจจุบัน

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

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

OCF: 0x15f

รับความสามารถเวลาบัฟเฟอร์เสียง

Sub OCF: 0x01

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

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

เหตุการณ์คำสั่งที่สมบูรณ์จะถูกสร้างขึ้นสำหรับคำสั่งนี้

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

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

Sub OCF: 0x02

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

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

เหตุการณ์คำสั่งที่สมบูรณ์จะถูกสร้างขึ้นสำหรับคำสั่งนี้

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

เหตุการณ์ HCI (เฉพาะผู้ขาย)

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

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

กิจกรรมย่อยการฝ่าฝืนเกณฑ์การจัดเก็บข้อมูล

เหตุการณ์นี้บ่งชี้ว่าเกณฑ์การจัดเก็บได้ถูกละเมิด

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

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

การเปลี่ยนแปลงสถานะการเปลี่ยนแปลงของรัฐหลายครั้ง

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

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

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

Leadisement Tracking Event

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

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

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

EVENT ข้อมูลการดีบักควบคุมคอนโทรลเลอร์

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

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

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

รายงานคุณภาพบลูทู ธ

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

พารามิเตอร์เหตุการณ์ย่อย ขนาด วัตถุประสงค์
Quality_Report_Id 1 octet 0x01: การรายงานคุณภาพในโหมดการตรวจสอบ
0x02: ใกล้ LSTO
0x03: A2DP Audio Choppy
0x04: (e) เสียง SCO ขาด ๆ หาย ๆ
0x05 ~ 0x06: สงวนไว้
0x07: Le Audio ขาด ๆ หาย ๆ
0x08: เชื่อมต่อล้มเหลว
0x09 ~ 0xff: สงวนไว้
Packet_Types 1 octet 0x01: id
0x02: null
0x03: โพล
0x04: FHS
0x05: HV1
0x06: Hv2
0x07: HV3
0x08: DV
0x09: EV3
0x0a: ev4
0x0b: EV5
0x0c: 2-ev3
0x0d: 2-ev5
0x0e: 3-ev3
0x0f: 3-ev5
0x11: DH1
0x12: DM3
0x13: DH3
0x14: DM5
0x15: DH5
0x16: aux1
0x17: 2-DH1
0x18: 2-DH3
0x19: 2-DH5
0x1a: 3-DH1
0x1b: 3-DH3
0x1c: 3-DH5
0x1d ~ 0x50: สงวนไว้
0x51: แพ็คเก็ต ISO
0x52 ~ 0xff: สงวนไว้
Connection_Handle 2 ออคเต็ต ACL/(E) ที่จับการเชื่อมต่อ SCO/ISO
Connection_Role 1 octet แสดงบทบาทสำหรับการเชื่อมต่อ
0x00: กลาง
0x01: อุปกรณ์ต่อพ่วง
0x02 ~ 0xff: สงวนไว้
TX_Power_Level 1 octet ระดับพลังงานส่งปัจจุบันสำหรับการเชื่อมต่อที่ระบุที่ระบุ

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

RSSI 1 octet [ใน DBM]

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

SNR 1 octet [ใน db]

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

Unused_AFH_Channel_Count 1 octet ระบุจำนวนช่องสัญญาณที่ไม่ได้ใช้ใน AFH_CHANNEL_MAP
0x4f ~ 0xff: สงวนไว้
AFH_Select_Unideal_Channel_Count 1 octet ระบุจำนวนช่องที่ถูกรบกวนและมีคุณภาพไม่ดี แต่ยังคงได้รับการคัดเลือกสำหรับ AFH
จำนวนช่องทางขั้นต่ำที่ได้รับอนุญาตจากข้อกำหนดบลูทู ธ คือ 20 ดังนั้นแม้ว่าทั้ง 79 ช่องจะถูกรบกวนและมีคุณภาพไม่ดีคอนโทรลเลอร์ยังคงต้องเลือกอย่างน้อย 20 ช่องสำหรับ AFH
LSTO 2 ออคเต็ต การตั้งค่าการควบคุมเวลาการควบคุมลิงค์ปัจจุบัน
เวลา = n * 0.625 ms
ช่วงเวลา: 0.625 ms ถึง 40.9 s
Connection_Piconet_Clock 4 octets นาฬิกา Piconet สำหรับ connection_handle ที่ระบุ
ค่านี้จะเหมือนกับตัวควบคุมที่ตอบสนองต่อคำสั่ง HCI_READ_CLOCK HCI ด้วยพารามิเตอร์ "ซึ่ง _Clock" ของ 0x01 (นาฬิกา Piconet)
หน่วย: n * 0.3125 ms (1 นาฬิกาบลูทู ธ )
Retransmission_Count 4 octets จำนวนการส่งสัญญาณซ้ำตั้งแต่เหตุการณ์ล่าสุด
การนับนี้จะถูกรีเซ็ตหลังจากรายงานไปยังโฮสต์
No_RX_Count 4 octets ไม่มีการนับ RX ตั้งแต่เหตุการณ์สุดท้าย
การนับจะเพิ่มขึ้นเมื่อไม่ได้รับแพ็กเก็ตในช่วงเวลาที่กำหนดหรือแพ็คเก็ตที่ได้รับจะเสียหาย
การนับนี้จะถูกรีเซ็ตหลังจากรายงานไปยังโฮสต์
NAK_Count 4 octets NAK (รับทราบเชิงลบ) นับตั้งแต่เหตุการณ์สุดท้าย
การนับนี้จะถูกรีเซ็ตหลังจากรายงานไปยังโฮสต์
Last_TX_ACK_Timestamp 4 octets การประทับเวลาของ TX ACK สุดท้าย มันขึ้นอยู่กับนาฬิกาบลูทู ธ ของ Piconet Central (CLK)
หน่วย: n * 0.3125 ms (1 นาฬิกาบลูทู ธ )
Flow_Off_Count 4 octets จำนวนครั้งที่คอนโทรลเลอร์ได้รับการไหลออก (หยุด) ตั้งแต่เหตุการณ์สุดท้าย
การนับนี้จะถูกรีเซ็ตหลังจากรายงานไปยังโฮสต์
Last_Flow_On_Timestamp 4 octets การประทับเวลาของการไหลครั้งสุดท้าย (ไป) มันขึ้นอยู่กับนาฬิกาบลูทู ธ ของ Piconet Central (CLK)
หน่วย: n * 0.3125 ms (1 นาฬิกาบลูทู ธ )
Buffer_Overflow_Bytes 4 octets [ในไบต์]

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

Buffer_Underflow_Bytes 4 octets [ในไบต์]

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

bdaddr 6 octets ที่อยู่อุปกรณ์ระยะไกล
cal_failed_item_count 1 octet จำนวนรายการการสอบเทียบล้มเหลว
TX_Total_Packets 4 octets จำนวนแพ็คเก็ตที่ส่งออก
TX_UnAcked_Packets 4 octets จำนวนแพ็กเก็ตที่ไม่ได้รับการตอบรับ
การนับนี้จะถูกรีเซ็ตหลังจากรายงานไปยังโฮสต์
TX_Flushed_Packets 4 octets จำนวนแพ็คเก็ตที่ไม่ได้ส่งไปตามจุดล้าง
การนับนี้จะถูกรีเซ็ตหลังจากรายงานไปยังโฮสต์
TX_Last_Subevent_Packets 4 octets จำนวนแพ็กเก็ตที่เชื่อมโยงเลเยอร์ส่งข้อมูล CIS PDU ในช่วงเวลาสุดท้ายของเหตุการณ์ CIS
การนับนี้จะถูกรีเซ็ตหลังจากรายงานไปยังโฮสต์
ค่าเป็นศูนย์หากไม่มีค่าที่ถูกต้องสำหรับลิงก์
CRC_Error_Packets 4 octets จำนวนแพ็คเกจที่ได้รับพร้อมข้อผิดพลาด CRC ตั้งแต่เหตุการณ์ล่าสุด
การนับนี้จะถูกรีเซ็ตหลังจากรายงานไปยังโฮสต์
RX_Duplicate_Packets 4 octets จำนวนแพ็คเกจที่ซ้ำกัน (retransmission) ที่ได้รับตั้งแต่เหตุการณ์ล่าสุด
การนับนี้จะถูกรีเซ็ตหลังจากรายงานไปยังโฮสต์
พารามิเตอร์เฉพาะของผู้ขาย (พารามิเตอร์ความยาวรวม - tbd) * octets เพื่อให้ผู้ขายคอนโทรลเลอร์ได้รับพารามิเตอร์เฉพาะของผู้ขายมากขึ้น

รหัสเหตุการณ์ย่อย = 0x58 [Quality_Report_id = 0x05, เหตุการณ์การอักเสบของรูท]

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

พารามิเตอร์ 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 octet 0x00 ~ 0x04: สงวนไว้
0x05: การอักเสบของราก
0x06 ~ 0xff: สงวนไว้
Error_Code 1 octet 0x00: รวมถึงรหัสข้อผิดพลาดเฉพาะของผู้ขายชิปเซ็ต
0x01 ~ 0xff: ความล้มเหลวของคอนโทรลเลอร์เกิดขึ้น ดูสเป็คบลูทู ธ [ฉบับที่ 2] ส่วน D, รหัสข้อผิดพลาดสำหรับรายการรหัสข้อผิดพลาดและคำอธิบาย
Vendor_Specific_Error_Code 1 octet 0x00: ไม่มีรหัสข้อผิดพลาดเฉพาะของผู้ขายชิปเซ็ต
0x01 ~ 0xff: รหัสข้อผิดพลาดเฉพาะของผู้ขายชิปเซ็ต
พารามิเตอร์เฉพาะของผู้ขาย (พารามิเตอร์ความยาวรวม - 4) * octets เพื่อให้ผู้ขายคอนโทรลเลอร์ได้รับพารามิเตอร์เฉพาะของผู้ขายมากขึ้น
พารามิเตอร์เหตุการณ์ย่อย ขนาด วัตถุประสงค์
Quality_Report_Id 1 octet 0x00 ~ 0x10: สงวนไว้
0x11: การติดตามข้อความ LMP/LL
0x12: การติดตามการกำหนดตารางเวลามัลติลิงก์/COEX บลูทู ธ
0x13: ข้อมูลการดีบักข้อมูลคอนโทรลเลอร์
0x14 ~ 0xff: สงวนไว้
Connection_Handle 2 ออคเต็ต ที่จับการเชื่อมต่อ
พารามิเตอร์เฉพาะของผู้ขาย (พารามิเตอร์ความยาวรวม - 4) * octets รูปแบบเฉพาะของผู้ขายของการติดตามข้อความ LMP, การติดตามการกำหนดเวลาการกำหนดเวลาของบลูทู ธ มัลติลิงก์/COEX การติดตามและการตรวจสอบข้อมูลการดีบักคอนโทรลเลอร์

การสนับสนุนแบบหลายโฆษณา

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

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

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

le_multi_advt_command

OCF: 0x154

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

เหตุการณ์คำสั่งที่สมบูรณ์จะถูกสร้างขึ้นสำหรับคำสั่งนี้

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

le_multi_advt_command: set_advt_param_multi_sub_cmd

ข้อมูลอ้างอิงพื้นฐาน: Bluetooth Core 4.1 ข้อมูลจำเพาะ, หน้า 964 (คำสั่งพารามิเตอร์โฆษณาชุด))

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 octet ระบุการบังคับใช้ของพารามิเตอร์ข้างต้นกับอินสแตนซ์
Tx_power 1 octet transmit_power
หน่วย - ใน DBM (จำนวนเต็มที่ลงนาม)
ช่วง (-70 ถึง +20)

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

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

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

le_multi_advt_command: set_advt_data_multi_sub_cmd

การอ้างอิงพื้นฐาน: Bluetooth Core 4.1 ข้อมูลจำเพาะ, หน้า 969 (คำสั่งข้อมูลโฆษณาชุด)

Sub OCF: 0x02

พารามิเตอร์ย่อย ขนาด วัตถุประสงค์
Advertising_Data_Length ต่อข้อมูลจำเพาะ ต่อข้อมูลจำเพาะ
Advertising_Data ต่อข้อมูลจำเพาะ ต่อข้อมูลจำเพาะ
Advertising_Instance 1 octet ระบุการบังคับใช้ของพารามิเตอร์ข้างต้นกับอินสแตนซ์

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

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

le_multi_advt_command: set_scan_resp_data_multi_sub_cmd

การอ้างอิงพื้นฐาน: Bluetooth Core 4.1 ข้อมูลจำเพาะ, หน้า 970 (คำสั่งข้อมูลการตอบสนองของ Set Set Set)

Sub OCF: 0x03

พารามิเตอร์ย่อย ขนาด วัตถุประสงค์
Scan_Response_Data_Length ต่อข้อมูลจำเพาะ ต่อข้อมูลจำเพาะ
Scan_Response_Data ต่อข้อมูลจำเพาะ ต่อข้อมูลจำเพาะ
Advertising_Instance 1 octet ระบุการบังคับใช้ของพารามิเตอร์ข้างต้นกับอินสแตนซ์

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

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

le_multi_advt_command: set_random_addr_multi_sub_cmd

การอ้างอิงพื้นฐาน: Bluetooth Core 4.1 Specification, หน้า 963 (คำสั่ง led ที่อยู่สุ่มตั้ง)

Sub OCF: 0x04

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

เหตุการณ์คำสั่งที่สมบูรณ์จะถูกสร้างขึ้นสำหรับคำสั่งนี้

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

le_multi_advt_command: set_advt_enable_multi_sub_cmd

การอ้างอิงพื้นฐาน: Bluetooth Core 4.1 Specification, หน้า 971 (คำสั่ง enable enable โฆษณา le adderive ในข้อกำหนดหลักนั้น)

OCF: 0x05

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

เหตุการณ์คำสั่งที่สมบูรณ์จะถูกสร้างขึ้นสำหรับคำสั่งนี้

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

ความละเอียดของที่อยู่ส่วนตัว

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

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

le_set_rpa_timeout

OCF: 0x15c

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

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

le_rpa_offload_command

OCF: 0x155

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

เหตุการณ์คำสั่งที่สมบูรณ์จะถูกสร้างขึ้นสำหรับคำสั่งนี้

พารามิเตอร์ส่งคืน ขนาด วัตถุประสงค์
Status 1 octet คำสั่งสถานะสมบูรณ์
Event_RPA_offload_opcode 1 octet 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 octet 0x01 - เปิดใช้งานคุณสมบัติ RPA ที่ไม่ได้โหลด
0x00 - ปิดการใช้งานคุณสมบัติ RPA ที่ถ่ายโอน

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

เหตุการณ์คำสั่งที่สมบูรณ์จะถูกสร้างขึ้นสำหรับคำสั่งนี้

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

le_rpa_offload: add_irk_to_list_sub_command

Sub OCF: 0x02

พารามิเตอร์ย่อย ขนาด วัตถุประสงค์
LE_IRK 16 Octets Le Irk (1ST BYTE LSB)
Address_Type 1 octet 0: ที่อยู่สาธารณะ
1: ที่อยู่สุ่ม
LE_Device_Address 6 octets ที่อยู่สาธารณะหรือแบบสุ่มที่เกี่ยวข้องกับ IRK (BYTE LSB 1st)

เหตุการณ์คำสั่งที่สมบูรณ์จะถูกสร้างขึ้นสำหรับคำสั่งนี้

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

le_rpa_offload: remove_irk_to_list_sub_command

Sub OCF: 0x03

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

เหตุการณ์คำสั่งที่สมบูรณ์จะถูกสร้างขึ้นสำหรับคำสั่งนี้

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

le_rpa_offload: clear_irk_list_sub_command

Sub OCF: 0x04

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

เหตุการณ์คำสั่งที่สมบูรณ์จะถูกสร้างขึ้นสำหรับคำสั่งนี้

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

le_rpa_offload: read_irk_list_sub_command

Sub OCF: 0x05

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

เหตุการณ์คำสั่งที่สมบูรณ์จะถูกสร้างขึ้นสำหรับคำสั่งนี้

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