สลับอุปกรณ์เสียง
เมื่อผู้ใช้ใช้อุปกรณ์แหล่งที่มาของเสียงหลายๆ เครื่องเพื่อทำสิ่งต่างๆ ในแต่ละวันกันมากขึ้น ผู้ใช้ก็ต้องการโซลูชันที่ง่ายขึ้นในการจัดการการใช้งานชุดหูฟังในอุปกรณ์ต่างๆ มากขึ้น การสลับอุปกรณ์เสียงจะเปลี่ยนการเชื่อมต่อชุดหูฟังระหว่างอุปกรณ์ต่างๆ ได้อย่างราบรื่นตามกิจกรรมของผู้ใช้ (เช่น การเริ่มต้นภาพยนตร์) และเหตุการณ์ที่จัดลำดับความสำคัญ (เช่น สายเรียกเข้า)
หลักการเกี่ยวกับ UX
- การเปลี่ยนการเชื่อมต่อควรเร็วและขึ้นอยู่กับการดำเนินการของผู้ใช้
- การสลับการเชื่อมต่อควรมีความโปร่งใสต่อผู้ใช้ ซึ่งช่วยให้ผู้ใช้ควบคุม/เปลี่ยนกลับได้ถ้าไม่เป็นที่ต้องการ
- การเปลี่ยนควรเคารพความเป็นส่วนตัวของผู้ใช้
บทบาท
เครื่องมือหาสวิตช์เสียง: เครื่องมือหาคืออุปกรณ์แหล่งที่มาของเสียง (เช่น โทรศัพท์หรือแท็บเล็ต) ซึ่งจะมองหาชุดหูฟังที่อยู่ใกล้ๆ เพื่อเชื่อมต่อด้วยหากทำได้
ผู้ให้บริการสลับสัญญาณเสียง: โดยปกติผู้ให้บริการจะเป็นชุดหูฟังที่โฆษณาการปรากฏและสถานะการเชื่อมต่อของตนให้ผู้ร้องขอตัดสินใจเปลี่ยน
ภาพรวมของข้อกำหนด
ผู้ให้บริการต้องปฏิบัติตามข้อกำหนดต่อไปนี้เพื่อให้เปลี่ยนไปใช้ฟีเจอร์อัจฉริยะได้
ชื่อ | คำอธิบาย | ข้อกำหนด | จำเป็นหรือไม่ |
---|---|---|---|
การสแกนหน้า | หากต้องการยอมรับคำขอเชื่อมต่อใหม่จากผู้ส่งคำขอรายอื่นเมื่อมีการเชื่อมต่อที่มีอยู่แล้ว สำหรับผู้ให้บริการแบบจุดเดียว:
|
จำเป็นต้องใช้โหมดสแกนหน้าที่มีเวลาในการตอบสนองต่ำ (ช่วงเวลาการสแกนไม่ควรมากกว่า 640 มิลลิวินาที) เพื่อปรับปรุงประสิทธิภาพ เพื่อแลกกับอายุการใช้งานแบตเตอรี่และการสลับประสิทธิภาพ ผู้ให้บริการสามารถใช้โหมดสแกนหน้าเว็บเริ่มต้นในเกือบทุกกรณี (โหมดพลังงานต่ำ ช่วงเวลาการสแกนไม่ควรมากกว่า 1280 มิลลิวินาที) แต่จะต้องใช้โหมดเวลาในการตอบสนองต่ำในสถานการณ์ต่อไปนี้
|
จำเป็น |
ประวัติการเชื่อมต่อ | หากต้องการเปลี่ยนกลับไปใช้การเชื่อมต่อก่อนหน้าและเล่นต่อหากมี การสื่อสารจะทริกเกอร์โดยการสื่อสารผ่าน Message Stream API ควรรวมเหตุการณ์เสียงที่หยุดไว้ชั่วคราวไว้ในบันทึกด้วยเพื่อให้เล่นต่อได้ (หากมี) |
รักษาประวัติการเชื่อมต่อและติดตั้งใช้งาน Message Stream API | จำเป็น |
สถานะการเชื่อมต่อ | สำหรับผู้ร้องขอให้ดำเนินการสลับเปลี่ยนการเชื่อมต่อ สถานะการเชื่อมต่อประกอบด้วย:
|
ใส่สถานะการเชื่อมต่อในโฆษณา BLE และสตรีมข้อความ | จำเป็น |
การเปลี่ยนแปลงความสามารถด้านรันไทม์ | การสลับอุปกรณ์เสียงสามารถเปิดใช้ได้โดยการอัปเกรดเฟิร์มแวร์ของผู้ให้บริการ จึงต้องซิงค์ความสามารถระหว่างผู้หาและผู้ให้บริการระหว่างรันไทม์ | ติดตั้งใช้งาน API ของ Message Stream เพื่อเข้าถึงความสามารถของรันไทม์ | จำเป็น |
กฎการเปลี่ยนที่กำหนดค่าได้ | ให้ผู้ส่งคำขอกำหนดค่าลำดับความสำคัญระหว่างการสตรีมเสียงที่ใช้งานอยู่และคำขอสตรีมเสียงใหม่ผ่านการตั้งค่ากำหนดของผู้ใช้ ตัวอย่างเช่น ผู้ส่งคำขอการสลับเสียงอาจกำหนดการตั้งค่า UI เพื่ออนุญาตให้ผู้ใช้เปิด/ปิดใช้การสลับอัตโนมัติระหว่างการสตรีมสื่อและการโทรได้ ผู้ค้นหาการสลับแทร็กเสียงจะตั้งค่าและรับกฎการเปลี่ยนผ่านทางสตรีมข้อความ |
ผู้ให้บริการแบบหลายรายเท่านั้น ใช้ Message Stream API เพื่อให้กำหนดค่าการสลับระหว่างอุปกรณ์ที่เชื่อมต่อได้ |
ไม่บังคับ |
การเปลี่ยนอุปกรณ์ที่ใช้งานอยู่ | ให้ตัวค้นหาการสลับเสียงจำลองการสลับเสียงระหว่างอุปกรณ์ที่เชื่อมต่อ ในด้านตัวค้นหาสวิตช์เสียง อาจมี UI เพื่อให้ผู้ใช้สลับระหว่างอุปกรณ์ที่เชื่อมต่อได้โดยง่าย |
ผู้ให้บริการแบบหลายรายเท่านั้น ใช้ API ของสตรีมข้อความสำหรับผู้ต้องการสลับสัญญาณเสียงเพื่อระบุแหล่งที่มาของเสียงที่ใช้งานอยู่ระหว่างอุปกรณ์ที่เชื่อมต่อ |
จำเป็น |
การแจ้งเตือนการเปลี่ยนโหมดหลายจุด | ให้ผู้ค้นหาการสลับเสียงแสดงการแจ้งเตือนการเปลี่ยน | ผู้ให้บริการแบบหลายรายเท่านั้น ใช้งาน API ของสตรีมข้อความเพื่อแจ้งเตือนผู้ต้องการสลับอุปกรณ์เสียงที่เชื่อมต่ออยู่เมื่อมีการเปลี่ยนไปใช้สัญญาณหลายจุด |
จำเป็น |
เพย์โหลดการโฆษณา
ผู้ให้บริการจะต้องใส่สถานะการเชื่อมต่อปัจจุบันของตนในโฆษณา ซึ่งสร้างขึ้นจากข้อมูลบัญชีการจับคู่ด่วนที่อธิบายไว้ใน การโฆษณา: เมื่อไม่สามารถค้นพบได้
โปรดทราบว่าเวอร์ชันของตาราง 4.2 คือ 0x1
ช่องสถานะการเชื่อมต่อ
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า | จำเป็นหรือไม่ |
---|---|---|---|---|
0 | uint8 |
ความยาวและประเภทของช่อง 0bLLLLTTTT
|
0bLLLL0101
|
จำเป็น |
1 | uint8 |
สถานะการเชื่อมต่อ 0bHAFRSSSS
|
0bHAFRSSSS
|
จำเป็น |
2 | uint8 |
ข้อมูลที่กำหนดเอง ปัจจุบันมีเฉพาะประเภทเนื้อหาที่ใช้เพื่ออธิบายการใช้งานสตรีมมิงเสียงในปัจจุบัน โดยผู้ร้องขอจะส่งไปให้กับผู้ให้บริการ |
ระบบจะส่งค่าจากผู้ร้องขอสตรีมมิงที่ใช้งานอยู่ปัจจุบันไปยังผู้ให้บริการผ่านสตรีมข้อความ 0 หากการสตรีมที่ใช้งานอยู่ในปัจจุบันไม่ได้มาจาก Seeker | จำเป็น |
3 - var | บิตแมปของอุปกรณ์ที่เชื่อมต่อ บิตแมปเพื่อแสดงว่าอุปกรณ์ใดเชื่อมต่ออยู่กับผู้ให้บริการในขณะนี้ อุปกรณ์ที่มีความสัมพันธ์กันทั้งหมดจัดเรียงอย่างเป็นระเบียบ โดยแบ่งเป็นบิตหนึ่งสำหรับอุปกรณ์ที่มีข้อผูกมัด 1 ชิ้น โดยความยาวจะขึ้นอยู่กับจำนวนอุปกรณ์ผูกมัดของผู้ให้บริการที่มีอยู่ |
หากบิตที่แมปไว้ โดยที่อุปกรณ์เชื่อมต่อกับผู้ให้บริการอยู่ จะเป็น 0 หากไม่ใช่ ดูรายละเอียดในบิตแมปของอุปกรณ์ที่เชื่อมต่อ |
ไม่บังคับ |
ตารางที่ 4.1: ข้อมูลดิบของช่องสถานะการเชื่อมต่อ
แฟล็กการเชื่อมต่อ
0bH = การตรวจจับศีรษะ
- 1 จัดไปนะ
- 0 หากไม่ใช่ จะไม่อยู่บนศีรษะ หรือไม่มีเซ็นเซอร์ OHD
0bA = ความพร้อมใช้งานของการเชื่อมต่อ
- 1 มีการเชื่อมต่อที่ใช้งานได้
- 0 หากไม่ใช่
0bF = โหมดโฟกัส
- 1. ในโหมดโฟกัสในตอนนี้ ไม่อนุญาตให้สลับการเชื่อมต่อสำหรับการใช้งานสื่อ กล่าวคือ ไม่มีการสลับ A2DP เป็น A2DP
- 0 หากไม่ใช่
0bR = เชื่อมต่อใหม่โดยอัตโนมัติ
- 1 ถ้าผู้ให้บริการเชื่อมต่อการเชื่อมต่อปัจจุบันใหม่โดยอัตโนมัติ หมายความว่าผู้ใช้ไม่ได้เชื่อมต่อ (สำหรับการเชื่อมต่อหลายจุด หากผู้ให้บริการเชื่อมต่อที่มีอยู่เชื่อมต่อใหม่โดยอัตโนมัติ ควรตั้งค่าเป็น 1)
- 0 หากไม่ใช่
สถานะการเชื่อมต่อ
- 0x0: ไม่มีการเชื่อมต่อ
- 0x1: การแบ่งหน้า
- 0x2: เชื่อมต่อแล้วแต่ไม่มีการโอนข้อมูล
- 0x3: การโอนข้อมูลที่ไม่ใช่เสียง (เมื่อสลับได้เฉพาะเมื่อไม่โอน ใช้ 0xF)
- 0x4: การสตรีม A2DP, ไม่สามารถใช้ AVRCP
- 0x5: การสตรีม A2DP และการเล่น AVRCP
- 0x6: สตรีมมิง HFP (การโทร/สาย VoIP) รวมถึงเสียงเรียกเข้าแบบอินแบนด์และนอกวงดนตรี
- 0x7: LE Audio - สตรีมสื่อแบบไม่มีตัวควบคุม
- 0x8: LE Audio - การสตรีมสื่อแบบมีการควบคุม
- 0x9: LE Audio - การสตรีมการโทร
- 0xA: LE Audio - ออกอากาศ
- 0xF: ปิดสวิตช์การเชื่อมต่อชั่วคราว (เช่น อัปเดตเฟิร์มแวร์)
บิตแมปของอุปกรณ์ที่เชื่อมต่อ
เพื่อหลีกเลี่ยงการเปลี่ยนการเชื่อมต่อที่ไม่พึงประสงค์ ผู้ค้นหาอาจต้องทราบว่าชุดหูฟังเชื่อมต่อกับอุปกรณ์ใดอยู่ ตัวอย่างเช่น เมื่อชุดหูฟังเชื่อมต่อกับโทรศัพท์ ผู้ใช้ไม่ต้องการให้มีการสลับการเชื่อมต่อเมื่อสมาชิกในครอบครัวคนหนึ่งเริ่มใช้งาน YouTube บนแท็บเล็ต
โปรดทราบว่าบิตแมปนี้ไม่ระบุชื่อ ผู้ร้องขอจะไม่สามารถทราบได้ว่าอุปกรณ์อื่นๆ เชื่อมโยงกับผู้ให้บริการหรือไม่ เช่น นำอุปกรณ์ที่เชื่อมโยง 5 เครื่องมาใช้ ดังนี้
- 0: แล็ปท็อป (0bx0000000)
- 1: phoneA (0b0x000000)
- 2: phoneB (0b00x00000)
- 3: แท็บเล็ต (0b000x0000)
- 4: ทีวี (0b0000x000)
หากอุปกรณ์ที่เชื่อมต่อในปัจจุบันคือแล็ปท็อปและแท็บเล็ต ค่าของบิตแมปจะเป็น 0b10010000 ระบบจะยอมรับการเปลี่ยนแปลงลำดับหากหลีกเลี่ยงไม่ได้ เช่น เมื่อผู้ใช้รีเซ็ตชุดหูฟังเป็นค่าเริ่มต้น หรือเมื่อจำนวนอุปกรณ์ที่มีการเชื่อมโยงถึงขีดจำกัดสูงสุด
โฆษณาแบบสุ่มที่สามารถแก้ไขได้
ผู้ให้บริการควรหมุนเวียนและเข้ารหัสช่องด้วยคีย์บัญชีโดยใช้ AES-CTR เพื่อหลีกเลี่ยงการติดตามและเคารพความเป็นส่วนตัวของผู้ใช้
encrypted_connection_status_field = connection_status_raw_data ^ AES(Key, IV)
ที่ไหน
คีย์ได้มาจากคีย์บัญชีที่มีการใช้งาน ซึ่ง ได้กำหนดไว้ในส่วนถัดไป
คีย์สร้างขึ้นโดยฟังก์ชัน HKDF ซึ่งก็คือ IETF RFC 5869 โดยใช้ฟังก์ชันแฮช SHA-256
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
ผู้ให้บริการต้องใช้คีย์บัญชีดั้งเดิมในที่นี้ เช่น ไบต์แรกของคีย์คือ 0x04 ซึ่งไม่รวมอยู่ในรูปแบบการใช้งาน
IV (เวกเตอร์เริ่มต้น) คือ Salt 2 ไบต์ของคีย์ข้อมูลของบัญชีที่มีระยะห่างจากขอบเป็นศูนย์ เช่น IV คือ Concat(Salt, 14 ไบต์)
ข้อมูลดิบของสถานะการเชื่อมต่อระบุไว้ในตาราง 4.1 หากสถานะการเชื่อมต่อมีการเปลี่ยนแปลง คุณควรสร้าง Salt และ RPA ใหม่ในกรอบเวลาการโฆษณาเดียวกัน
ซึ่งจะทำให้ช่องสถานะการเชื่อมต่อที่เข้ารหัสหมุนเวียนไปพร้อมกับการหมุนเวียนข้อมูลคีย์บัญชี
โฆษณา BLE มีโครงสร้างดังนี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า | จำเป็นหรือไม่ |
---|---|---|---|---|
0 | uint8 |
เวอร์ชันและแฟล็ก | 0x10 | จำเป็น |
1 - ตัน | ข้อมูลคีย์บัญชี | แตกต่างกันออกไป | จำเป็น | |
t+1 - s | ข้อมูลแบตเตอรี่ | แตกต่างกันออกไป | ไม่บังคับ | |
s+1 - var | ข้อมูลแบบสุ่มที่แก้ไขได้ | แตกต่างกันออกไป | จำเป็นต้องบังคับหากรายการคีย์บัญชีไม่ว่างเปล่า มิเช่นนั้นให้ยกเว้น |
ตารางที่ 4.2: โฆษณา BLE ที่มีข้อมูลซึ่งแก้ไขได้แบบสุ่ม
ข้อมูลแบบสุ่มซึ่งแก้ไขได้ประกอบด้วย
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า | จำเป็นหรือไม่ |
---|---|---|---|---|
0 | uint8 |
ความยาวและประเภทของช่อง 0bLLLLTTTT
|
0bLLLL0110
|
จำเป็น |
1 - var | ข้อมูลที่เข้ารหัส | แตกต่างกันออกไป | จำเป็น |
ตารางที่ 4.2.1: ข้อมูลแบบสุ่มที่แก้ไขได้
ตัวอย่างเช่น หากข้อมูลแบบสุ่มซึ่งแก้ไขได้มีช่องสถานะการเชื่อมต่อที่เข้ารหัส ผลลัพธ์ที่ถอดรหัสแล้วจะเป็น ช่องสถานะการเชื่อมต่อ
เพื่อเป็นการป้องกันการงัดแงะ ควรปรับเปลี่ยนข้อมูลคีย์บัญชีด้านบนเล็กน้อย เมื่อมีการรวมข้อมูลแบบสุ่มที่แก้ไขได้ไว้ในโฆษณา โดยปกติแล้ว เมื่อสร้างตัวกรองคีย์บัญชี ค่า V จะสร้างขึ้นโดยการรวมตัวกรองคีย์บัญชีกับ Salt เมื่อมีการโฆษณาข้อมูลแบบสุ่มซึ่งแก้ไขได้ด้วยเช่นกัน คุณควรสร้างค่า V เป็น
V = concat(account_key, salt, random_resolvable_data)
หากลงโฆษณาทั้งข้อมูลแบตเตอรี่และข้อมูลแบบสุ่มที่แก้ไขได้ V ควรสร้างเป็น
V = concat(account_key, salt, battery_data, random_resolvable_data)
คีย์บัญชีที่ใช้งานอยู่
การเปลี่ยนการเชื่อมต่อจะขึ้นอยู่กับบัญชี ดังนั้นผู้ให้บริการจึงควรรวมข้อมูลบัญชีของการเชื่อมต่อปัจจุบันในโฆษณา BLE หากอุปกรณ์ที่เชื่อมต่อปัจจุบันเป็นผู้หาสวิตช์เสียง ผู้ให้บริการควรรับคีย์บัญชีที่เชื่อมโยงกับผู้ร้องขอนี้ได้ และใช้คีย์บัญชีนี้เพื่อเข้ารหัสช่องสถานะการเชื่อมต่อ หากแหล่งที่มาของเสียงที่เชื่อมต่อไม่ใช่ตัวค้นหาสวิตช์เสียง ผู้ให้บริการควรใช้คีย์บัญชีที่ใช้ล่าสุด
ก่อนคำนวณตัวกรองคีย์บัญชี ผู้ให้บริการควรแก้ไขไบต์แรกของคีย์บัญชีให้มีรูปแบบการใช้งานอย่างใดอย่างหนึ่งต่อไปนี้
- 0b00000100
ไม่ได้ใช้งานคีย์บัญชีนี้
นี่คือคีย์เริ่มต้น (ดูคีย์บัญชี) - 0b00000101
คีย์บัญชีนี้เป็นคีย์บัญชีที่ใช้ล่าสุด
ช่องสถานะการเชื่อมต่อมีการเข้ารหัสโดยคีย์บัญชีนี้ ไม่มีข้อมูลคีย์บัญชีของสถานะการเชื่อมต่อปัจจุบัน อาจหมายความว่าไม่มีอุปกรณ์ที่เชื่อมต่ออยู่หรืออุปกรณ์ที่เชื่อมต่อไม่ใช่ตัวค้นหาสวิตช์เสียง - 0b00000110
คีย์บัญชีนี้เป็นคีย์บัญชีที่ใช้งานอยู่
ช่องสถานะการเชื่อมต่อมีการเข้ารหัสด้วยคีย์บัญชีนี้ และอุปกรณ์ที่เชื่อมต่อในปัจจุบันมีการเชื่อมโยงอยู่กับคีย์บัญชีนี้
สคีมาสำหรับเพย์โหลดการเปลี่ยนเสียง
รูปด้านล่างแสดงสคีมาสำหรับเพย์โหลดการเปลี่ยนสัญญาณเสียง
ข้อความ
เมื่อเชื่อมต่อแล้ว ผู้ร้องขอและผู้ให้บริการจะใช้สตรีมข้อความเพื่อซิงค์ความสามารถในการสลับเสียง ทริกเกอร์สวิตช์การเชื่อมต่อ ตั้งค่าและรับค่ากำหนดการสลับ แจ้งสถานะการเชื่อมต่อ และอื่นๆ ได้ เราจะสร้างกลุ่มข้อความและรหัสข้อความ เฉพาะสำหรับการเปลี่ยนเสียง ดังนี้
ชื่อกลุ่มข้อความ | ค่า |
---|---|
สลับอุปกรณ์เสียง | 0x07 |
รายละเอียดเพิ่มเติมสำหรับแต่ละรหัสข้อความจะรวมอยู่ในส่วนต่อไปนี้
ชื่อรหัสข้อความ | ค่า | เชื่อมต่อหลายจุดเท่านั้น | ผู้ส่ง | ผู้ตอบ | เข้ารหัส | MAC | รับทราบ |
---|---|---|---|---|---|---|---|
ลองสลับอุปกรณ์เสียง | 0x10 | N | ทั้งคู่ | ทั้ง 2 อย่างผ่านโค้ด 0x11 | N | ไม่ | N |
แจ้งเตือนความสามารถในการสลับอุปกรณ์เสียง | 11 | N | ทั้งคู่ | ทั้งคู่ | N | ใช่ | ใช่ |
ตั้งสถานะหลายจุด | 0x12 | ใช่ | ผู้ค้นหา | ผู้ให้บริการ | N | ใช่ | ใช่ |
ตั้งค่ากำหนดของการเปลี่ยน | 0x20 | ใช่ | ผู้ค้นหา | ผู้ให้บริการ | N | ใช่ | ใช่ |
ลองเปลี่ยนค่ากำหนด | 0x21 | ใช่ | ผู้ค้นหา | ผู้ให้บริการผ่านรหัส 0x22 | N | ไม่ | N |
แจ้งเตือนการเปลี่ยนค่ากำหนด | 0x22 | ใช่ | ผู้ให้บริการ | ผู้ค้นหา | N | ไม่ | N |
เปลี่ยนแหล่งที่มาของเสียงที่ใช้งานอยู่(เป็นอุปกรณ์ที่เชื่อมต่อ) | 0x30 | ใช่ | ผู้ค้นหา | ผู้ให้บริการ | N | ใช่ | ใช่ |
เปลี่ยนกลับ (เป็นอุปกรณ์ที่ไม่ได้เชื่อมต่อ) | 0x31 | N | ผู้ค้นหา | ผู้ให้บริการ | N | ใช่ | ใช่ |
แจ้งเตือนเหตุการณ์การเปลี่ยนจุดหลายจุด | 0x32 | ใช่ | ผู้ให้บริการ | ผู้ค้นหา | N | ไม่ | N |
ดูสถานะการเชื่อมต่อ | 0x33 | ใช่ | ผู้ค้นหา | ผู้ให้บริการผ่านรหัส 0x34 | N | ไม่ | N |
แจ้งเตือนสถานะการเชื่อมต่อ | 0x34 | ใช่ | ผู้ให้บริการ | ผู้ค้นหา | ใช่ | ไม่ | N |
แจ้งเตือนการเชื่อมต่อที่เริ่มต้นการสลับอุปกรณ์เสียง | 0x40 | N | ผู้ค้นหา | ผู้ให้บริการ | N | ใช่ | ใช่ |
ระบุคีย์บัญชีที่ใช้งานอยู่ | 0x41 | N | ผู้ค้นหา | ผู้ให้บริการ | N | ใช่ | ใช่ |
ส่งข้อมูลที่กำหนดเอง | 0x42 | N | ผู้ค้นหา | ผู้ให้บริการ | N | ใช่ | ใช่ |
กำหนดเป้าหมายการตัดการเชื่อมต่อ | 0x43 | ใช่ | ผู้ค้นหา | ผู้ให้บริการ | N | ใช่ | ใช่ |
ตารางที่ 4.3: ข้อความสลับเสียง
MAC ของข้อความสลับเสียง
หากต้องการตรวจสอบสิทธิ์ข้อความ ข้อความแบบสลับเสียงทั้งหมดที่มีข้อมูลเพิ่มเติมซึ่งส่งจากผู้หาถึงผู้ให้บริการจะต้องมี รหัสการตรวจสอบสิทธิ์ข้อความ เมื่อได้รับข้อความที่มี MAC ข้อความควรได้รับการตอบรับเพื่อให้ผู้ร้องขอทราบว่าผู้ให้บริการได้ตอบสนองต่อข้อความหรือไม่
หากการตรวจสอบสิทธิ์ข้อความสำเร็จ ผู้ให้บริการจะต้องส่ง ACK สำหรับข้อความดังนี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | Uint8 | รับทราบ | 0xFF |
1 | Uint8 | รับทราบ | 0x01 |
2 - 3 | Uint16 | ความยาวของข้อมูลเพิ่มเติม | แตกต่างกันออกไป |
4 | Uint8 | สลับอุปกรณ์เสียง | 0x07 |
5 | Uint8 | รหัสข้อความการสลับอุปกรณ์เสียง | แตกต่างกันออกไป |
6 - วิ | ข้อมูลเพิ่มเติม | แตกต่างกันออกไป |
หากไม่สำเร็จ ผู้ให้บริการจะต้องส่ง NAK สำหรับข้อความ
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | Uint8 | รับทราบ | 0xFF |
1 | Uint8 | นาค | 0x02 |
2 - 3 | Uint16 | ความยาวของข้อมูลเพิ่มเติม | 0x0003 |
4 | Uint8 | สาเหตุของข้อผิดพลาด | แตกต่างกันออกไป |
5 | Uint8 | สลับอุปกรณ์เสียง | 0x07 |
6 | Uint8 | รหัสข้อความการสลับอุปกรณ์เสียง | แตกต่างกันออกไป |
โปรดทราบว่าหากผู้ให้บริการเป็นผู้ส่ง ก็ไม่จำเป็นต้องใช้ MAC
รับความสามารถในการสลับอุปกรณ์เสียง
ทั้งผู้ให้บริการสลับเสียงและผู้จัดหาสามารถตรวจสอบว่าผู้หา/ผู้ให้บริการจับคู่ด่วนที่เชื่อมต่อนั้นรองรับการสลับอุปกรณ์เสียงหรือไม่ โดยใช้ข้อความด้านล่างนี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | Uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | Uint8 | รับความสามารถในการสลับอุปกรณ์เสียง | 0x10 |
2 - 3 | Uint16 | ความยาวของข้อมูลเพิ่มเติม | 0 |
ตารางที่ 4.3.1.0: รับความสามารถในการสลับอุปกรณ์เสียง
แจ้งเตือนความสามารถในการสลับอุปกรณ์เสียง
เมื่อได้รับ ความสามารถในการรับรหัสข้อความของ Audio Switch ผู้ค้นหา/ผู้ให้บริการสวิตช์ Audio จะตอบกลับด้วยการแจ้งอย่างใดอย่างหนึ่งต่อไปนี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | Uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | Uint8 | แจ้งเตือนความสามารถในการสลับอุปกรณ์เสียง | 11 |
2 - 3 | Uint16 | ความยาวของข้อมูลเพิ่มเติม | 20 หากผู้ร้องขอ 4 เป็นผู้ส่งข้อมูลนี้ หากผู้ให้บริการเป็นผู้ส่งข้อมูล |
4-5 ปี | Uint16 | รหัสเวอร์ชันการสลับอุปกรณ์เสียง | ค่าที่ไม่ใช่ 0 หมายความว่ารองรับการสลับอุปกรณ์เสียง รหัสเวอร์ชันปัจจุบัน (ที่มีการเพิ่มประสิทธิภาพความปลอดภัย) คือ 0x0102 0x0000 หรือไม่ตอบสนองใน 1 วินาที หมายความว่าระบบไม่รองรับการสลับอุปกรณ์เสียงในอุปกรณ์นี้ |
6 - 7 | แฟล็ก | แฟล็กความสามารถในการเปลี่ยนเสียงของผู้ให้บริการ หาก Seeker ส่งข้อมูลนี้ ระบบควรละเว้น 2 ไบต์นี้ |
แตกต่างกันออกไป โปรดดูค่าสถานะความสามารถในการสลับเสียง |
8-15 ปี | ค่า Nonce ของข้อความ จำเป็นเมื่อผู้ค้นหาส่งสิ่งนี้เท่านั้น |
แตกต่างกันออกไป | |
16 - 23 | รหัสการตรวจสอบสิทธิ์ข้อความ ต้องใช้เฉพาะเมื่อ Seeker เป็นผู้ส่งข้อความนี้ |
แตกต่างกันออกไป |
ตารางที่ 4.3.1.1: แจ้งเตือนความสามารถในการสลับอุปกรณ์เสียง
แฟล็กความสามารถในการสลับเสียง
บิต 0 (อ็อกเท็ต 6, MSB): สถานะการเปลี่ยนเสียง
- 1 หากสถานะการเปลี่ยนเสียงเปิดอยู่
- 0 หากไม่ใช่
บิต 1: การกำหนดค่าหลายจุด
- 1 หากอุปกรณ์รองรับหลายจุดและสามารถสลับเปิดปิดได้
- 0 ไม่เช่นนั้น (ไม่รองรับหลายจุดหรือหลายจุดเปิดอยู่)
บิต 2: สถานะปัจจุบันของหลายจุด
- 1 หากเปิดหลายจุด
- 0 หากไม่ใช่
บิต 3: การตรวจจับด้านหน้า
- 1 ถ้าอุปกรณ์นี้รองรับการตรวจจับบนศีรษะ (แม้ว่าจะปิดการตรวจจับบนศีรษะแล้วในตอนนี้)
- 0 หากไม่ใช่
บิต 4: สถานะปัจจุบันของการตรวจจับบนศีรษะ
- 1 หากการตรวจจับศีรษะเปิดอยู่
- 0 หากไม่ใช่ (ไม่รองรับการตรวจจับบนศีรษะหรือการตรวจจับบนศีรษะปิดอยู่)
บิตอื่นๆ ทั้งหมดถูกสงวนไว้ โดยค่าเริ่มต้นคือ 0
ตั้งค่าสถานะหลายจุด
สำหรับผู้ที่ต้องการสลับสวิตช์เสียง เราอาจมีการตั้งค่าให้ผู้ใช้เปิด/ปิดฟังก์ชันหลายจุด Seeker จะตั้งค่าสถานะหลายจุดให้กับผู้ให้บริการโดยใช้ข้อความด้านล่างนี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | Uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | Uint8 | ตั้งค่าสถานะหลายจุด | 0x12 |
2 - 3 | Uint16 | ความยาวของข้อมูลเพิ่มเติม | 17 |
4 | Uint8 | สถานะหลายจุด | 0: ปิดสวิตช์หลายจุด 1: เปิดสวิตช์หลายจุด |
5-12 ปี | ค่า Nonce ของข้อความ | แตกต่างกันออกไป | |
13 - 20 ปี | รหัสการตรวจสอบสิทธิ์ข้อความ | แตกต่างกันออกไป |
ตาราง 4.3.1.2: ตั้งค่าสถานะหลายจุด
ตั้งค่ากำหนดของการเปลี่ยน
ผู้ที่มองหาการสลับอุปกรณ์เสียงอาจแก้ไขค่ากำหนดการเปลี่ยนของการสลับอุปกรณ์หลายจุด และตั้งค่าให้กับผู้ให้บริการโดยใช้ข้อความด้านล่างนี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | Uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | Uint8 | ตั้งค่ากำหนดของการเปลี่ยน | 0x20 |
2 - 3 | Uint16 | ความยาวของข้อมูลเพิ่มเติม | 18 |
4 | แฟล็ก | การเปลี่ยนค่ากำหนด | แตกต่างกันออกไป ดูสถานะค่ากำหนดการสลับหลายจุด |
5 | การตั้งค่าการเปลี่ยนขั้นสูง ไบต์นี้มีการสงวนไว้ ค่าเริ่มต้นคือ 0 |
แตกต่างกันออกไป | |
6 - 13 ปี | ค่า Nonce ของข้อความ | แตกต่างกันออกไป | |
14-21 ปี | รหัสการตรวจสอบสิทธิ์ข้อความ | แตกต่างกันออกไป |
ตาราง 4.3.2.0: ตั้งค่ากำหนดการเปลี่ยน
แฟล็กค่ากำหนดการสลับหลายจุด
- บิต 0 (MSB): A2DP เทียบกับ A2DP (ค่าเริ่มต้น 0)
- บิต 1: HFP เทียบกับ HFP (ค่าเริ่มต้น 0)
- บิต 2: A2DP เทียบกับ HFP (ค่าเริ่มต้น 0)
- บิต 3: HFP เทียบกับ A2DP (ค่าเริ่มต้น 1)
- บิต 4 - 7: สงวนไว้
- ข้อมูลข้างต้นแสดงเป็น "คำขอโปรไฟล์ใหม่" กับ "โปรไฟล์ที่ใช้งานอยู่ในปัจจุบัน"
- 0 สำหรับการไม่เปลี่ยน
- 1 สำหรับการเปลี่ยน
รับการเปลี่ยนการตั้งค่า
ผู้ที่มองหาการสลับอุปกรณ์เสียงสามารถค้นหาค่ากำหนดการเปลี่ยนหลายจุดจากผู้ให้บริการโดยใช้ข้อความด้านล่างนี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | Uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | Uint8 | รับการเปลี่ยนการกำหนดค่า | 0x21 |
2 - 3 | Uint16 | ความยาวของข้อมูลเพิ่มเติม | 0 |
ตาราง 4.3.2.1: รับการเปลี่ยนค่ากำหนด
แจ้งเตือนการเปลี่ยนค่ากำหนด
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | Uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | Uint8 | แจ้งเตือนการเปลี่ยนค่ากำหนด | 0x22 |
2 - 3 | Uint16 | ความยาวของข้อมูลเพิ่มเติม | 2 |
4 | แฟล็ก | การสลับแฟล็กค่ากำหนด | แตกต่างกันออกไป ดูสถานะค่ากำหนดการสลับหลายจุด |
5 | การตั้งค่าการเปลี่ยนขั้นสูง ไบต์นี้มีการสงวนไว้ ค่าเริ่มต้นควรเป็น 0 |
แตกต่างกันออกไป |
ตาราง 4.3.2.2: แจ้งค่ากำหนดการเปลี่ยน
สลับแหล่งที่มาของเสียงที่ใช้งานอยู่ (เป็นอุปกรณ์ที่เชื่อมต่อ)
ผู้ที่มองหาการสลับอุปกรณ์เสียงสามารถขอให้ผู้ให้บริการหลายจุดสลับแหล่งที่มาของเสียงที่ใช้งานอยู่ระหว่างอุปกรณ์ที่เชื่อมต่อได้โดยใช้ข้อความด้านล่างนี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | Uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | Uint8 | สลับแหล่งที่มาของเสียงที่ใช้งานอยู่ (เป็นอุปกรณ์ที่เชื่อมต่อ) | 0x30 |
2 - 3 | Uint16 | ความยาวของข้อมูลเพิ่มเติม | 17 |
4 | แฟล็ก | การเปลี่ยนแฟล็กเหตุการณ์แหล่งที่มาของเสียงที่ใช้งานอยู่ | แตกต่างกันออกไป ดูการเปลี่ยนเหตุการณ์แหล่งที่มาของเสียงที่ทำงานอยู่ |
5-12 ปี | ค่า Nonce ของข้อความ | แตกต่างกันออกไป | |
13 - 20 ปี | รหัสการตรวจสอบสิทธิ์ข้อความ | แตกต่างกันออกไป |
ตารางที่ 4.3.3.0: เปลี่ยนแหล่งที่มาของเสียงที่ใช้งานอยู่ (เป็นอุปกรณ์ที่เชื่อมต่อ)
กำลังสลับเหตุการณ์แหล่งที่มาของเสียงที่ใช้งานอยู่
- บิต 0 (MSB): 1 เปลี่ยนไปยังอุปกรณ์นี้, 0 เปลี่ยนเป็นอุปกรณ์ที่เชื่อมต่อเครื่องที่ 2
- บิต 1: 1 เล่นต่อเมื่อสลับไปที่อุปกรณ์หลังจากเปลี่ยน หรือ 0 หากไม่ใช่ การกลับมาเล่นต่อหมายความว่าผู้ให้บริการจะส่งการแจ้งเตือน PLAY ไปยังผู้ร้องขอผ่านโปรไฟล์ AVRCP หากสถานะก่อนหน้า (ก่อนที่จะเปลี่ยน) ไม่ได้เป็น PLAY ผู้ให้บริการควรเพิกเฉยต่อแฟล็กนี้
- บิตที่ 2: 1 ปฏิเสธ SCO ในอุปกรณ์ที่ไม่มีการใช้งาน หากไม่ใช่ 0 หากไม่ใช่
- บิต 3: 1 ยกเลิกการเชื่อมต่อบลูทูธในอุปกรณ์สวิตช์เป็น 0 หรือไม่เช่นนั้น
- บิต 4-7: สงวนไว้
ผู้ที่ขอการสลับอุปกรณ์เสียงอาจไม่ทราบสถานะของตนเองอย่างถูกต้องเสมอไป จึงเป็นไปได้ที่ผู้ให้บริการจะได้รับข้อความ "เปลี่ยนไปใช้อุปกรณ์นี้" เมื่อผู้ร้องขอเป็นอุปกรณ์ที่ใช้งานอยู่แล้ว ในกรณีนี้ ผู้ให้บริการสามารถส่ง NAK พร้อมเหตุผลที่ข้อผิดพลาด 0x4 - การทำงานของอุปกรณ์ซ้ำซ้อน เพื่อแสดง UI ที่ถูกต้องใน Seeker
เปลี่ยนกลับ (เป็นอุปกรณ์ที่ตัดการเชื่อมต่อ)
หากการสลับการเชื่อมต่อไม่เป็นที่ต้องการ ผู้ใช้สามารถเปลี่ยนกลับการเปลี่ยนได้ และในบางกรณีก็ควรคืนค่าการเชื่อมต่อเสียงเพื่อลดการขัดจังหวะให้เหลือน้อยที่สุด ผู้ค้นหาจะใช้ข้อความด้านล่างเพื่อทริกเกอร์การเปลี่ยนกลับ
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | Uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | Uint8 | เปลี่ยนกลับ (เป็นอุปกรณ์ที่ตัดการเชื่อมต่อ) | 0x31 |
2 - 3 | Uint16 | ความยาวของข้อมูลเพิ่มเติม | 17 |
4 | Uint8 | เปลี่ยนกลับกิจกรรม | แตกต่างกันออกไป 0x01: เปลี่ยนกลับ 0x02: สลับกลับไปเล่นต่อ |
5-12 ปี | ค่า Nonce ของข้อความ | แตกต่างกันออกไป | |
13 - 20 ปี | รหัสการตรวจสอบสิทธิ์ข้อความ | แตกต่างกันออกไป |
ตารางที่ 4.3.3.1: เปลี่ยนกลับไปใช้อุปกรณ์ที่ไม่ได้เชื่อมต่อ)
สำหรับผู้ให้บริการหลายจุด หากต้องการเปลี่ยนการเชื่อมต่อ ผู้ให้บริการอาจตัดการเชื่อมต่อกับอุปกรณ์แหล่งที่มาของเสียงเครื่องหนึ่งและหยุดเซสชันเสียงกับอีกแหล่งหนึ่งไว้ชั่วคราว เช่น สมมติว่าชุดหูฟังหลายจุดเชื่อมต่อกับแท็บเล็ตและอุปกรณ์สลับอุปกรณ์เสียงที่รองรับตัวที่ 3 ผู้ใช้กำลังดูวิดีโอบนแท็บเล็ตเมื่อมีสายเรียกเข้า โทรศัพท์จะทริกเกอร์สวิตช์การเชื่อมต่อในชุดหูฟัง ซึ่งจำเป็นต้องยกเลิกการเชื่อมต่ออุปกรณ์ที่ 3 เพื่อเชื่อมต่อกับโทรศัพท์ ในขณะเดียวกันก็จะหยุดเซสชันสื่อในแท็บเล็ตไว้ชั่วคราวเพื่อรับเสียงเรียกเข้าจากโทรศัพท์ หากผู้ใช้ไม่รับสาย โทรศัพท์อาจขอให้ชุดหูฟัง "สลับกลับมาเล่นต่อ" เมื่อได้รับคำขอนี้ ชุดหูฟังจะต้องเชื่อมต่อกับอุปกรณ์ที่ 3 อีกครั้ง แล้วเล่นวิดีโอที่หยุดชั่วคราวบนแท็บเล็ตต่อ
แจ้งเตือนเหตุการณ์การเปลี่ยนจุดหลายจุด
เพื่อให้ผู้ใช้ทราบว่าเกิดเหตุการณ์การเปลี่ยนโหมดหลายจุด เครื่องมือสลับเสียงอาจแสดงการแจ้งเตือนแก่ผู้ใช้ ผู้ให้บริการควรแจ้งให้ผู้ที่ขอสวิตช์สัญญาณเสียงที่เชื่อมต่อได้ทราบเกี่ยวกับเหตุการณ์การเปลี่ยนอุปกรณ์
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | Uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | Uint8 | แจ้งเตือนเหตุการณ์การเปลี่ยนหลายจุด ผู้ให้บริการควรส่งข้อมูลนี้ในทุกสวิตช์ รวมถึง ตัวเรียกดูสวิตช์เสียง ไปยัง ตัวเรียกดูสวิตช์ที่ไม่ใช่เสียง, ตัวค้นหาสวิตช์ที่ไม่ใช่เสียง, ตัวค้นหาเปลี่ยนเป็นเสียง ตัวหาและการสลับเสียง และผู้ต้องการสลับเสียง เป็นผู้หาสวิตช์เสียง |
0x32 |
2 - 3 | Uint16 | ความยาวของข้อมูลเพิ่มเติม | แตกต่างกันออกไป |
4 | Uint8 | เหตุผลในการเปลี่ยน | แตกต่างกันออกไป 0x00: ไม่ระบุ 0x01: สตรีมแบบ A2DP 0x02: HFP |
5 | Uint8 | อุปกรณ์เป้าหมาย | แตกต่างกันออกไป 0x01: อุปกรณ์นี้ 0x02: อุปกรณ์ที่เชื่อมต่ออีกเครื่องหนึ่ง |
6 - n | Utf8 | ชื่ออุปกรณ์เป้าหมาย หากอุปกรณ์เป้าหมายคือ "ผู้ที่ต้องสลับสัญญาณเสียง" โดยใช้ชื่อที่ Seeker ส่งไปยัง หรือใช้ชื่อ BT หากไม่เกี่ยวข้อง หรือใช้ชื่อ 2 ไบต์สุดท้ายของที่อยู่ |
แตกต่างกันออกไป |
ตารางที่ 4.3.3.2: แจ้งเตือนเหตุการณ์การเปลี่ยนจุดหลายจุด
ดูสถานะการเชื่อมต่อ
ผู้ขอจะทราบสถานะการเชื่อมต่อปัจจุบันจากผู้ให้บริการได้โดยทำดังนี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | Uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | Uint8 | ดูสถานะการเชื่อมต่อ | 0x33 |
2 - 3 | Uint16 | ความยาวของข้อมูลเพิ่มเติม | 0 |
ตาราง 4.3.3.3: ดูสถานะการเชื่อมต่อ
เมื่อได้รับข้อความนี้ ผู้ให้บริการจะต้องตอบกลับด้วยรหัสข้อความ 0x34 แจ้งสถานะการเชื่อมต่อ
แจ้งเตือนสถานะการเชื่อมต่อ
ตามที่กำหนดไว้ใน BLE เพย์โหลดการโฆษณาสำหรับผู้ให้บริการหลายจุด หากสถานะการเชื่อมต่อเปลี่ยนไป ยกเว้นการเปลี่ยนแพ็กเก็ตโฆษณา ผู้ให้บริการควรแจ้งให้ผู้ค้นหาที่เชื่อมต่อที่ใช้คีย์บัญชีเดียวกันทราบเกี่ยวกับการเปลี่ยนแปลงนี้ด้วย ถ้าผู้ให้บริการเชื่อมต่อกับ ผู้หาสวิตช์เสียงและตัวค้นหาสวิตช์ที่ไม่ใช่เสียง ถ้าตัวค้นหาสวิตช์ที่ไม่ใช่เสียง เปิดใช้งานอยู่ ผู้ให้บริการควรแจ้งให้ผู้ค้นหาสวิตช์เสียงที่เชื่อมต่อ เกี่ยวกับสถานะการเชื่อมต่อ (โดยใช้คีย์บัญชีของผู้หา) ด้วย
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | Uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | Uint8 | แจ้งเตือนสถานะการเชื่อมต่อ | 0x34 |
2 - 3 | Uint16 | ความยาวของข้อมูลเพิ่มเติม | แตกต่างกันออกไป |
4 | Uint8 | แฟล็กอุปกรณ์ที่ใช้งานอยู่ | แตกต่างกัน 0x00: Seeker นี้เป็นแบบแพสซีฟ และอุปกรณ์ที่ใช้งานอยู่ใช้คีย์บัญชีเดียวกัน 0x01: Seeker นี้เป็นอุปกรณ์ที่มีการใช้งาน 0x02: Seeker เป็นแบบแพสซีฟ และอุปกรณ์ที่ใช้งานอยู่ไม่ใช่ผู้หาสวิตช์เสียง |
5 - n | สถานะการเชื่อมต่อที่เข้ารหัส | แตกต่างกันออกไป | |
n+1 - n+8 | ค่า Nonce ของข้อความ | แตกต่างกันออกไป |
ตาราง 4.3.3.4: แจ้งสถานะการเชื่อมต่อ
ข้อความสถานะการเชื่อมต่อที่เข้ารหัส
encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)
โดยมี
คีย์ได้มาจากคีย์บัญชีที่ใช้งานอยู่ โปรดดู โฆษณาแบบสุ่มซึ่งแก้ไขได้
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
IV คือ concat(Session_nonce, Message_nonce)
Connect_status_raw_data = concat(connection_state, custom_data, connect_devices) ซึ่งกำหนดไว้ใน เพย์โหลดการโฆษณา BLE โปรดทราบว่าไม่ควรใส่ไบต์สำหรับความยาวและประเภทของช่อง เนื่องจากเรามีรหัสข้อความและความยาวของข้อมูลที่นี่
แจ้งเตือนการเชื่อมต่อที่เริ่มต้นการสลับอุปกรณ์เสียง
ผู้ให้บริการการสลับอุปกรณ์เสียงอาจต้องการทราบว่าการสลับการเชื่อมต่อมีการทริกเกอร์โดยการเปลี่ยนสัญญาณเสียงให้มีปฏิกิริยาต่างกันหรือไม่ เช่น ปิดใช้งานเอียร์คอนสำหรับเหตุการณ์การสลับอุปกรณ์เสียง ผู้ร้องขอจะส่งข้อความเพื่อแจ้งผู้ให้บริการว่าการเชื่อมต่อนี้เป็นการเชื่อมต่อที่เริ่มต้นโดยการเปลี่ยนอุปกรณ์เสียง
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | Uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | Uint8 | แจ้งเตือนการเชื่อมต่อที่เริ่มต้นการสลับอุปกรณ์เสียง | 0x40 |
2 - 3 | Uint16 | ความยาวของข้อมูลเพิ่มเติม | 17 |
4 | Uint8 | สัญญาณบอกสถานะการเชื่อมต่อที่เริ่มต้นโดยการเปลี่ยนอุปกรณ์เสียง | แตกต่างกันออกไป 0: การเชื่อมต่อนี้ไม่ได้ทริกเกอร์โดยสวิตช์เสียง 1: นี่เป็นการเชื่อมต่อที่เริ่มการสลับอุปกรณ์เสียง |
5-12 ปี | ค่า Nonce ของข้อความ | แตกต่างกันออกไป | |
13 - 20 ปี | รหัสการตรวจสอบสิทธิ์ข้อความ | แตกต่างกันออกไป |
ตารางที่ 4.3.4.0: แจ้งเตือนการเชื่อมต่อที่เริ่มการสลับอุปกรณ์เสียง
ระบุคีย์บัญชีที่ใช้งานอยู่
หากมีคีย์บัญชีหลายรายการใน Seeker (เช่น ผู้ใช้หลายคน) เชื่อมโยงกับผู้ให้บริการ ผู้ส่งคำขอจะใช้ข้อความด้านล่างเพื่อระบุว่ากำลังใช้คีย์บัญชีใดอยู่
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | Uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | Uint8 | ระบุคีย์บัญชีที่ใช้งานอยู่ | 0x41 |
2 - 3 | Uint16 | ความยาวของข้อมูลเพิ่มเติม | 22 |
4 - 9 | Utf8 | สตริงที่ใช้อยู่ | UTF8 ("ใช้งานอยู่") |
10 - 17 ปี | ค่า Nonce ของข้อความ | แตกต่างกันออกไป | |
18 - 25 ปี | รหัสการตรวจสอบสิทธิ์ข้อความ | แตกต่างกันออกไป |
ตารางที่ 4.3.4.1: ระบุคีย์บัญชีที่ใช้งานอยู่
เมื่อได้รับข้อความนี้ ผู้ให้บริการจะทราบได้ว่ากำลังใช้คีย์บัญชีใดอยู่ โดยการยืนยันรหัสการตรวจสอบสิทธิ์ข้อความ
ส่งข้อมูลที่กำหนดเอง
ตัวค้นหาสวิตช์เสียงที่ใช้งานอยู่สามารถรวบรวมข้อมูล (เช่น การใช้เสียง) ของสตรีมเสียงเป็นไบต์ข้อมูลที่กำหนดเอง และส่งไปยังผู้ให้บริการโดยใช้ข้อความด้านล่างนี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | Uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | Uint8 | ส่งข้อมูลที่กำหนดเอง | 0x42 |
2 - 3 | Uint16 | ความยาวของข้อมูลเพิ่มเติม | 17 |
4 | Uint8 | ข้อมูลที่กำหนดเอง | แตกต่างกันออกไป |
5-12 ปี | ค่า Nonce ของข้อความ | แตกต่างกันออกไป | |
13 - 20 ปี | รหัสการตรวจสอบสิทธิ์ข้อความ | แตกต่างกันออกไป |
ตารางที่ 4.3.4.2: ส่งข้อมูลที่กำหนดเอง
เมื่อได้รับข้อมูลที่กำหนดเองแล้ว ผู้ให้บริการจะอัปเดตแพ็กเก็ตการโฆษณาให้รวมข้อมูลที่กำหนดเอง สำหรับผู้ให้บริการหลายจุด ผู้ให้บริการควรแจ้งการเปลี่ยนแปลงสถานะการเชื่อมต่อไปยังผู้ร้องขอที่เชื่อมต่อรายอื่นโดยใช้คีย์บัญชีเดียวกัน
กำหนดเป้าหมายการตัดการเชื่อมต่อ
ในชุดหูฟังหลายจุด หากการเชื่อมต่อที่ต้องการสำหรับตัดไม่ใช่การเชื่อมต่อที่มีการใช้งานน้อยที่สุด ผู้ที่มองหาการสลับอุปกรณ์เสียงจะบอกผู้ให้บริการได้ว่าจะวางอุปกรณ์ใดลง โดยใช้ข้อความด้านล่างนี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | Uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | Uint8 | กำหนดเป้าหมายการตัดการเชื่อมต่อ | 0x43 |
2 - 3 | Uint16 | ความยาวของข้อมูลเพิ่มเติม | 17 |
4 | Uint8 | กำหนดเป้าหมายอุปกรณ์ที่เชื่อมต่อที่จะละทิ้ง | แตกต่างกันออกไป 1: อุปกรณ์นี้ |
5-12 ปี | ค่า Nonce ของข้อความ | แตกต่างกันออกไป | |
13 - 20 ปี | รหัสการตรวจสอบสิทธิ์ข้อความ | แตกต่างกันออกไป |
ตารางที่ 4.3.4.3: ตั้งเป้าหมายการเชื่อมต่อที่ลดลง
การติดตั้งข้อมูลอ้างอิง
ดู ไลบรารี SDK ที่ฝังอยู่ใกล้เคียงสำหรับการติดตั้งใช้งานข้อมูลอ้างอิง