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 | ขนาดตัวแปร | สตริงอักขระสำหรับชื่อท้องถิ่น หมายเหตุ:
|
เหตุการณ์ 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 | ขนาดตัวแปร | สตริงอักขระสำหรับข้อมูลผู้ผลิต หมายเหตุ:
|
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 | ขนาดตัวแปร | สตริงอักขระสำหรับข้อมูลบริการ หมายเหตุ:
|
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 ออคเต็ต | บิตมาสก์สำหรับคุณสมบัติเพิ่มเติมที่รองรับ:
ค่าของบิต
|
คำสั่งกิจกรรมของตัวควบคุมและข้อมูลพลังงาน
วัตถุประสงค์ของข้อมูลนี้มีไว้เพื่อให้ฟังก์ชันระบบโฮสต์ที่สูงกว่าสามารถวิเคราะห์กิจกรรมทั้งหมดของส่วนประกอบทั้งหมด รวมถึงตัวควบคุม 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
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 ตัวแปลงสัญญาณ AAC: โปรดดูองค์ประกอบข้อมูลเฉพาะของ AAC Codec ใน A2DP เวอร์ชัน 1.3 ตัวแปลงสัญญาณ LDAC: Octet 0-3: รหัสผู้ขาย ออคเต็ต 4-5: รหัสตัวแปลงสัญญาณ Octet 6: ดัชนีบิตเรต: Octet 7: โหมดช่อง LDAC 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 - เพิ่ม DELETE จะล้างการรายงานเหตุการณ์คุณภาพเฉพาะ |
BQR_Quality_Event_Mask | 4 octets | มาสก์บิตสำหรับการรายงานเหตุการณ์คุณภาพที่เลือก บิต 0: ตั้งค่าเพื่อเปิดใช้งานโหมดการตรวจสอบคุณภาพ |
BQR_Minimum_Report_Interval | 2 ออคเต็ต | กำหนดช่วงเวลาขั้นต่ำของการรายงานเหตุการณ์คุณภาพสำหรับเหตุการณ์คุณภาพที่เลือก เฟิร์มแวร์คอนโทรลเลอร์ไม่ควรรายงานเหตุการณ์ถัดไปภายในช่วงเวลาที่กำหนด การตั้งค่าช่วงเวลาจะต้องตามลำดับและทุ่มเทสำหรับเหตุการณ์คุณภาพซึ่งกำลังเพิ่ม หน่วย: 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 octetRSSI[0] : 1 octetTimestamp[0] : 2 octetsAdv packet_len[0] : 1 octetAdv_packet[0] : Adv_packet_len octetsScan_data_resp_len[0] : 1 octetScan_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
รหัส Event Sub = 0x58 [Quality_Report_id = 0x01 ~ 0x04, เหตุการณ์ที่เกี่ยวข้องกับคุณภาพของลิงก์]
พารามิเตอร์เหตุการณ์ย่อย | ขนาด | วัตถุประสงค์ |
---|---|---|
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) สำหรับการเชื่อมต่อที่ระบุที่ระบุ |
SNR | 1 octet | [ใน db] ค่าอัตราส่วนสัญญาณต่อสัญญาณรบกวน (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 | เพื่อให้ผู้ขายคอนโทรลเลอร์ได้รับพารามิเตอร์เฉพาะของผู้ขายมากขึ้น |
รหัสภาคใต้ = 0x58 [Quality_Report_ID = 0x11 ~ 0x13, เหตุการณ์ที่เกี่ยวข้องกับบันทึกการถ่ายโอนข้อมูล]
พารามิเตอร์เหตุการณ์ย่อย | ขนาด | วัตถุประสงค์ |
---|---|---|
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 นี้ |