สวิตช์เสียง
เมื่อผู้ใช้ใช้อุปกรณ์แหล่งที่มาของเสียงหลายเครื่องในการทำงานประจำวันมากขึ้น ความต้องการโซลูชันที่จัดการการใช้งานหูฟังในอุปกรณ์ต่างๆ ได้ง่ายขึ้นจึงเพิ่มขึ้นตามไปด้วย สวิตช์เสียงจะเปลี่ยนการเชื่อมต่อชุดหูฟังระหว่างอุปกรณ์ต่างๆ อย่างราบรื่นโดยอิงตามกิจกรรมของผู้ใช้ (เช่น การเริ่มดูภาพยนตร์) และเหตุการณ์ที่มีลำดับความสำคัญ (เช่น สายเรียกเข้า)
หลักการ UX
- การเปลี่ยนการเชื่อมต่อควรรวดเร็วและอิงตามการกระทำของผู้ใช้
- การเปลี่ยนการเชื่อมต่อควรมีความโปร่งใสต่อผู้ใช้ ซึ่งจะช่วยให้ผู้ใช้ควบคุม/เปลี่ยนกลับได้หากไม่ต้องการการเปลี่ยน
- การเปลี่ยนควรเคารพความเป็นส่วนตัวของผู้ใช้
บทบาท
อุปกรณ์ค้นหาเพื่อสลับอุปกรณ์เสียง: อุปกรณ์ค้นหาเป็นอุปกรณ์แหล่งที่มาของเสียง (เช่น โทรศัพท์หรือแท็บเล็ต) ซึ่งจะค้นหาชุดหูฟังที่อยู่ใกล้เคียงเพื่อเชื่อมต่อด้วย (หากมี)
ผู้ให้บริการสวิตช์เสียง: โดยปกติแล้ว ผู้ให้บริการคือหูฟังที่โฆษณาสถานะการมีอยู่และการเชื่อมต่อเพื่อให้ผู้ค้นหาตัดสินใจเปลี่ยน
ภาพรวมของข้อกำหนด
ผู้ให้บริการต้องปฏิบัติตามข้อกำหนดต่อไปนี้เพื่อให้การสลับอัจฉริยะทำงานได้
ชื่อ | คำอธิบาย | ข้อกำหนด | ต้องระบุหรือไม่ |
---|---|---|---|
การสแกนหน้าเว็บ | วิธียอมรับคําขอเชื่อมต่อใหม่จากผู้ค้นหารายอื่นเมื่อมีการเชื่อมต่ออยู่แล้ว สําหรับผู้ให้บริการแบบจุดเดียว:
|
ต้องใช้โหมดการสแกนหน้าเว็บที่มีเวลาในการตอบสนองต่ำ (ช่วงเวลาการสแกนไม่ควรเกิน 640 มิลลิวินาที) เพื่อปรับปรุงประสิทธิภาพ ผู้ให้บริการสามารถกำหนดโหมดการสแกนหน้าเว็บเริ่มต้นสำหรับกรณีส่วนใหญ่ (โหมดพลังงานต่ำ ช่วงเวลาการสแกนไม่ควรเกิน 1280 มิลลิวินาที) เพื่อแลกเปลี่ยนระหว่างอายุการใช้งานแบตเตอรี่กับประสิทธิภาพการสลับ แต่ต้องใช้โหมดค่าความหน่วงต่ำในสถานการณ์ต่อไปนี้
|
บังคับ |
ประวัติการเชื่อมต่อ | หากต้องการเปลี่ยนกลับไปใช้การเชื่อมต่อก่อนหน้าและเล่นต่อ (หากมี) การเปลี่ยนกลับไปจะทริกเกอร์โดยการสื่อสารผ่าน Message Stream API เหตุการณ์การหยุดเสียงชั่วคราวควรรวมอยู่ในบันทึกเพื่อเล่นต่อ (หากมี) |
รักษาประวัติการเชื่อมต่อและใช้ Message Stream API | บังคับ |
สถานะการเชื่อมต่อ | สำหรับ Seekers ที่จะตัดสินการเปลี่ยนการเชื่อมต่อ สถานะการเชื่อมต่อมีดังนี้
|
รวมสถานะการเชื่อมต่อไว้ในสตรีมโฆษณาและข้อความ BLE | บังคับ |
การเปลี่ยนแปลงความสามารถของรันไทม์ | คุณเปิดใช้สวิตช์เสียงได้โดยอัปเกรดเฟิร์มแวร์ในอุปกรณ์ของผู้ให้บริการ ดังนั้นความสามารถต่างๆ จึงต้องซิงค์กันระหว่างอุปกรณ์ค้นหาและอุปกรณ์ของผู้ให้บริการขณะรันไทม์ | ใช้ Message Stream API เพื่อเข้าถึงความสามารถของรันไทม์ | บังคับ |
กฎการเปลี่ยนที่กำหนดค่าได้ | อนุญาตให้ Seeker กำหนดลำดับความสำคัญระหว่างสตรีมมิงเสียงที่ใช้งานอยู่ในปัจจุบันกับคําขอสตรีมมิงเสียงใหม่ผ่านการตั้งค่าค่ากําหนดของผู้ใช้ เช่น Seeker สวิตช์เสียงอาจให้การตั้งค่า UI เพื่อให้ผู้ใช้เปิด/ปิดการสลับอัตโนมัติระหว่างสตรีมมิงสื่อกับการโทร ตัวค้นหาสวิตช์เสียงจะตั้งค่าและรับกฎการสลับผ่านสตรีมข้อความ |
ผู้ให้บริการแบบหลายจุดเท่านั้น ใช้ Message Stream API เพื่อกำหนดค่ากฎการเปลี่ยนระหว่างอุปกรณ์ที่เชื่อมต่อ |
ไม่บังคับ |
การสลับอุปกรณ์ที่ใช้งานอยู่ | ให้ผู้ค้นหาตัวสลับเสียงจำลองการสลับเสียงระหว่างอุปกรณ์ที่เชื่อมต่อ ฝั่งผู้ค้นหาตัวสลับเสียงอาจมี UI เพื่อให้ผู้ใช้สลับระหว่างอุปกรณ์ที่เชื่อมต่อได้อย่างง่ายดาย |
ผู้ให้บริการแบบหลายจุดเท่านั้น ใช้ Message Stream API สำหรับ Audio Switch Seeker เพื่อระบุแหล่งที่มาของเสียงที่ใช้งานอยู่ระหว่างอุปกรณ์ที่เชื่อมต่อ |
บังคับ |
การแจ้งเตือนการเปลี่ยนหลายจุด | ให้ผู้ค้นหาสวิตช์เสียงแสดงการแจ้งเตือนการเปลี่ยน | ผู้ให้บริการแบบหลายจุดเท่านั้น ใช้ Message Stream API เพื่อแจ้งให้ผู้ค้นหาอุปกรณ์เปลี่ยนเสียงที่เชื่อมต่ออยู่ทราบเมื่อมีการสลับหลายจุด |
บังคับ |
เพย์โหลดการโฆษณา
ผู้ให้บริการต้องระบุสถานะการเชื่อมต่อปัจจุบันในโฆษณา ซึ่งจะอิงตามข้อมูลบัญชีการจับคู่ด่วนที่อธิบายไว้ในการโฆษณา: เมื่อตรวจไม่พบ
โปรดทราบว่าเวอร์ชันของ table 4.2 คือ 0x1
ช่องสถานะการเชื่อมต่อ
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า | ต้องระบุหรือไม่ |
---|---|---|---|---|
0 | uint8 |
ความยาวและประเภทฟิลด์ 0bLLLLTTTT
|
0bLLLL0101
|
บังคับ |
1 | uint8 |
สถานะการเชื่อมต่อ 0bHAFRSSSS
|
0bHAFRSSSS
|
บังคับ |
2 | uint8 |
ข้อมูลที่กำหนดเอง ปัจจุบันมีเฉพาะประเภทเนื้อหาที่ใช้อธิบายการใช้งานสตรีมมิงเสียงปัจจุบันเท่านั้น ผู้ค้นหาจะส่งคำขอไปยังผู้ให้บริการ |
ระบบจะส่งค่าจากผู้ค้นหาสตรีมมิงที่ใช้งานอยู่ในปัจจุบันไปยังผู้ให้บริการผ่านสตรีมข้อความ 0 หากสตรีมมิงที่ใช้งานอยู่ในปัจจุบันไม่ได้มาจาก Seeker | บังคับ |
3 - var | บิตแมปอุปกรณ์ที่เชื่อมต่อ บิตแมปเพื่อแสดงอุปกรณ์ที่เชื่อมต่อกับผู้ให้บริการอยู่ในขณะนี้ อุปกรณ์ที่ผสานรวมทั้งหมดจะจัดเรียงตามลำดับ โดย 1 บิตสำหรับอุปกรณ์ที่ผสานรวม 1 เครื่อง ความยาวจะขึ้นอยู่กับจำนวนอุปกรณ์ที่ผูกไว้ของผู้ให้บริการ |
บิตที่แมปจะตั้งค่าเป็น 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 - สตรีมมิงสื่อแบบไม่มีการควบคุม
- 0x8: เสียง LE - สตรีมมิงสื่อที่มีการควบคุม
- 0x9: LE Audio - การสตรีมการโทร
- 0xA: LE Audio - ออกอากาศ
- 0xF: ปิดใช้สวิตช์การเชื่อมต่อชั่วคราว (เช่น การอัปเดตเฟิร์มแวร์)
ประเภทบริบทและสถานะการเชื่อมต่อของ LE Audio
แนะนำให้ผู้ให้บริการ LE Audio ควรจัดการกับประเภทบริบททั้งหมดที่ระบุไว้ใน หมายเลขที่กำหนด 6.12.3 (เว้นแต่ผู้ให้บริการจะไม่รองรับประเภทบริบทหนึ่งๆ อย่างชัดเจน) และจับคู่ประเภทบริบทกับสถานะการเชื่อมต่อดังด้านล่าง
- สนทนา: 0x9
- สื่อ: 0x8
- เกม: 0x7
- วิธีการ: 0x7
- ผู้ช่วยแบบเสียง: 0x9
- ถ่ายทอดสด: 0x9
- เอฟเฟกต์เสียง: 0x2
- การแจ้งเตือน: 0x2
- เสียงเรียกเข้า: 0x9
- การแจ้งเตือน: 0x7
- สัญญาณเตือนฉุกเฉิน: 0x9
สำหรับสถานการณ์ประเภทบริบทเสียง LE แบบผสม เช่น การเล่นสื่อระหว่างการโทร ผู้ให้บริการจะใช้สถานะการเชื่อมต่อที่มีลำดับความสำคัญสูงสุด เช่น ใช้ 0x9 (การโทร) สำหรับสถานการณ์ข้างต้นแทน 0x8 (สื่อ)
บิตแมปอุปกรณ์ที่เชื่อมต่อ
อุปกรณ์ค้นหาอาจต้องทราบว่าชุดหูฟังเชื่อมต่ออยู่กับอุปกรณ์ใดอยู่เพื่อหลีกเลี่ยงการเปลี่ยนการเชื่อมต่อที่ไม่ต้องการ เช่น เมื่อเชื่อมต่อหูฟังกับโทรศัพท์ ผู้ใช้ไม่ต้องการให้การสลับการเชื่อมต่อขัดจังหวะเมื่อสมาชิกในครอบครัวเริ่มเล่น 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 ไบต์ของข้อมูลคีย์บัญชีที่มีการเติมค่า 0 กล่าวคือ IV คือ concat(salt, 14-byte ZEROs)
ข้อมูลดิบของสถานะการเชื่อมต่อจะระบุไว้ในตาราง 4.1 หากสถานะการเชื่อมต่อมีการเปลี่ยนแปลง คุณควรสร้าง Salt และ RPA อีกครั้งในช่วงเวลาการโฆษณาเดียวกัน
ซึ่งจะทำให้ฟิลด์สถานะการเชื่อมต่อที่เข้ารหัสหมุนเวียนไปพร้อมๆ กับที่ข้อมูลคีย์บัญชีหมุนเวียน
โฆษณา BLE จะมีโครงสร้างดังนี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า | ต้องระบุหรือไม่ |
---|---|---|---|---|
0 | uint8 |
เวอร์ชันและธง | 0x10 | บังคับ |
1 - t | ข้อมูลคีย์บัญชี | แตกต่างกัน | บังคับ | |
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 หากอุปกรณ์ที่เชื่อมต่ออยู่ในปัจจุบันคืออุปกรณ์ค้นหาสวิตช์เสียง ผู้ให้บริการควรรับคีย์บัญชีที่เชื่อมโยงกับอุปกรณ์ค้นหานี้ได้ และใช้คีย์บัญชีนี้เพื่อเข้ารหัสฟิลด์สถานะการเชื่อมต่อ หากแหล่งที่มาของเสียงที่เชื่อมต่อไม่ใช่ Audio switch Seeker ผู้ให้บริการควรใช้คีย์บัญชีที่ใช้ล่าสุด
ก่อนคํานวณตัวกรองคีย์บัญชี ผู้ให้บริการควรแก้ไขไบต์แรกของคีย์บัญชีให้รวมรูปแบบการใช้งานอย่างใดอย่างหนึ่งต่อไปนี้
- 0b00000100
ไม่มีการใช้คีย์บัญชีนี้
ตัวเลือกนี้เป็นตัวเลือกเริ่มต้น (ดูคีย์บัญชี) - 0b00000101
คีย์บัญชีนี้เป็นคีย์บัญชีที่ใช้ล่าสุด
คีย์บัญชีนี้จะเข้ารหัสช่องสถานะการเชื่อมต่อ ไม่มีข้อมูลคีย์บัญชีของสถานะการเชื่อมต่อปัจจุบัน ซึ่งอาจหมายความว่าไม่มีอุปกรณ์ที่เชื่อมต่ออยู่ หรืออุปกรณ์ที่เชื่อมต่อไม่ใช่ตัวค้นหาสวิตช์เสียง - 0b00000110
คีย์บัญชีนี้เป็นคีย์บัญชีที่ใช้อยู่
ฟิลด์สถานะการเชื่อมต่อได้รับการเข้ารหัสโดยคีย์บัญชีนี้ และอุปกรณ์ที่เชื่อมต่ออยู่ในปัจจุบันจะเชื่อมโยงกับคีย์บัญชีนี้
แผนภาพสำหรับเพย์โหลดการเปลี่ยนเสียง
รูปภาพด้านล่างแสดงแผนภาพสำหรับเพย์โหลดสวิตช์เสียง

ข้อความ
เมื่อเชื่อมต่อแล้ว ผู้ค้นหาและผู้ให้บริการสามารถใช้สตรีมข้อความเพื่อซิงค์ความสามารถในการสลับเสียง ทริกเกอร์การสลับการเชื่อมต่อ ตั้งค่าและรับค่ากําหนดการสลับ แจ้งสถานะการเชื่อมต่อ และอื่นๆ เราสร้างกลุ่มข้อความและรหัสข้อความสำหรับสวิตช์เสียงโดยเฉพาะ ดังนี้
ชื่อกลุ่มข้อความ | ค่า |
---|---|
สลับอุปกรณ์เสียง | 0x07 |
รายละเอียดเพิ่มเติมสำหรับรหัสข้อความแต่ละรหัสมีอยู่ในหัวข้อต่อไปนี้
ชื่อรหัสข้อความ | ค่า | การเชื่อมต่อหลายอุปกรณ์เท่านั้น | ผู้ส่ง | Responder | เข้ารหัส | MAC | ACK |
---|---|---|---|---|---|---|---|
ดูความสามารถของสวิตช์เสียง | 0x10 | N | ทั้งคู่ | ทั้ง 2 อย่างผ่านรหัส 0x11 | N | ไม่ | N |
แจ้งความสามารถของสวิตช์เสียง | 0x11 | N | ทั้งคู่ | ทั้งคู่ | N | ได้ | Y |
ตั้งค่าสถานะหลายจุด | 0x12 | Y | ผู้ค้นหา | ผู้ให้บริการ | N | ได้ | Y |
ตั้งค่ากำหนดการเปลี่ยน | 0x20 | Y | ผู้ค้นหา | ผู้ให้บริการ | N | ได้ | Y |
ดูค่ากำหนดการเปลี่ยน | 0x21 | Y | ผู้ค้นหา | ผู้ให้บริการผ่านรหัส 0x22 | N | ไม่ | N |
แจ้งค่ากำหนดการเปลี่ยน | 0x22 | Y | ผู้ให้บริการ | ผู้บรรยาย | N | ไม่ | N |
เปลี่ยนแหล่งที่มาของเสียงที่ใช้งานอยู่(ไปยังอุปกรณ์ที่เชื่อมต่อ) | 0x30 | Y | ผู้ค้นหา | ผู้ให้บริการ | N | ได้ | Y |
เปลี่ยนกลับ | 0x31 | N | ผู้บรรยาย | ผู้ให้บริการ | N | ได้ | Y |
แจ้งเหตุการณ์สวิตช์หลายจุด | 0x32 | Y | ผู้ให้บริการ | ผู้บรรยาย | N | ไม่ | N |
ดูสถานะการเชื่อมต่อ | 0x33 | Y | ผู้ค้นหา | ผู้ให้บริการผ่านรหัส 0x34 | N | ไม่ | N |
แจ้งสถานะการเชื่อมต่อ | 0x34 | Y | ผู้ให้บริการ | ผู้บรรยาย | Y | ไม่ | N |
แจ้งเตือนการเชื่อมต่อที่เริ่มต้นโดยสวิตช์เสียง | 0x40 | N | ผู้บรรยาย | ผู้ให้บริการ | N | ได้ | Y |
ระบุคีย์บัญชีที่ใช้อยู่ | 0x41 | N | ผู้บรรยาย | ผู้ให้บริการ | N | ได้ | Y |
ส่งข้อมูลที่กำหนดเอง | 0x42 | N | ผู้บรรยาย | ผู้ให้บริการ | N | ได้ | Y |
ตั้งค่าเป้าหมายการเชื่อมต่อแบบ Drop | 0x43 | Y | ผู้ค้นหา | ผู้ให้บริการ | N | ได้ | Y |
ตาราง 4.3: ข้อความสลับอุปกรณ์เสียง
MAC ของข้อความสลับอุปกรณ์เสียง
หากต้องการตรวจสอบสิทธิ์ข้อความ ข้อความสวิตช์เสียงทั้งหมดที่มีข้อมูลเพิ่มเติมที่ส่งจากผู้ค้นหาไปยังผู้ให้บริการจะต้องมี รหัสการตรวจสอบสิทธิ์ข้อความ เมื่อได้รับข้อความที่มี MAC คุณควรรับทราบเพื่อให้ผู้ค้นหาทราบว่าผู้ให้บริการได้ตอบสนองต่อข้อความหรือไม่
หากการตรวจสอบสิทธิ์ข้อความสําเร็จ ผู้ให้บริการจะส่ง ACK สําหรับข้อความ ดังนี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | รับทราบ | 0xFF |
1 | uint8 | ACK | 0x01 |
2 - 3 | uint16 | ความยาวข้อมูลเพิ่มเติม | แตกต่างกัน |
4 | uint8 | สลับอุปกรณ์เสียง | 0x07 |
5 | uint8 | รหัสข้อความสลับอุปกรณ์เสียง | แตกต่างกัน |
6 - วินาที | ข้อมูลเพิ่มเติม | แตกต่างกัน |
หากไม่สำเร็จ ผู้ให้บริการจะต้องส่ง NAK สำหรับข้อความดังกล่าว
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | รับทราบ | 0xFF |
1 | uint8 | NAK | 0x02 |
2 - 3 | uint16 | ความยาวข้อมูลเพิ่มเติม | 0x0003 |
4 | uint8 | สาเหตุของข้อผิดพลาด | แตกต่างกัน |
5 | uint8 | สลับอุปกรณ์เสียง | 0x07 |
6 | uint8 | รหัสข้อความสลับอุปกรณ์เสียง | แตกต่างกัน |
โปรดทราบว่าหากผู้ให้บริการเป็นผู้ส่ง ก็ไม่จำเป็นต้องระบุ MAC
ดูความสามารถของสวิตช์เสียง
ทั้งผู้ให้บริการและอุปกรณ์ค้นหาสวิตช์เสียงสามารถตรวจสอบว่าอุปกรณ์ที่เชื่อมต่ออยู่ซึ่งใช้การจับคู่ด่วน (Seeker/ผู้ให้บริการ) รองรับสวิตช์เสียงหรือไม่โดยใช้ข้อความด้านล่างนี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | uint8 | ดูความสามารถของสวิตช์เสียง | 0x10 |
2 - 3 | uint16 | ความยาวข้อมูลเพิ่มเติม | 0 |
ตาราง 4.3.1.0: รับความสามารถของสวิตช์เสียง
แจ้งความสามารถของสวิตช์เสียง
เมื่อได้รับรหัสข้อความ get capability of Audio switch ผู้ค้นหา/ผู้ให้บริการสวิตช์เสียงจะตอบกลับด้วย Flag รายการใดรายการหนึ่งต่อไปนี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | uint8 | แจ้งความสามารถของสวิตช์เสียง | 0x11 |
2 - 3 | uint16 | ความยาวข้อมูลเพิ่มเติม | 20 หากส่งโดยผู้ค้นหา 4 หากส่งโดยผู้ให้บริการ |
4 - 5 | uint16 | รหัสเวอร์ชันของการเปลี่ยนเสียง | ค่าที่ไม่ใช่ 0 หมายความว่าอุปกรณ์รองรับสวิตช์เสียง รหัสเวอร์ชันปัจจุบัน (ที่มีการปรับปรุงความปลอดภัย) คือ 0x0102 0x0000 หรือการไม่ตอบกลับภายใน 1 วินาทีหมายความว่าอุปกรณ์นี้ไม่รองรับสวิตช์เสียง |
6 - 7 | ธง | Flag ความสามารถของปุ่มสลับเสียงของผู้ให้บริการ หาก Seeker ส่งข้อมูลนี้ ระบบจะไม่สนใจไบต์ 2 ตัวนี้ |
แตกต่างกันไป ดูFlag ความสามารถของสวิตช์เสียง |
8 - 15 | ข้อความ Nonce ต้องระบุเฉพาะเมื่อส่งโดยผู้ค้นหา |
แตกต่างกัน | |
16 - 23 | รหัสการตรวจสอบสิทธิ์ข้อความ ต้องระบุเฉพาะในกรณีที่ผู้ค้นหาส่ง |
แตกต่างกัน |
ตาราง 4.3.1.1: ความสามารถในการแจ้งของสวิตช์เสียง
Flag ความสามารถของสวิตช์เสียง
บิต 0 (อ็อกเต็ต 6, MSB): สถานะสวิตช์เสียง
- 1, หากสถานะการสลับอุปกรณ์เสียงเปิดอยู่
- 0 ไม่เช่นนั้น
บิตที่ 1: ความสามารถในการกำหนดค่าแบบหลายจุด
- 1. หากอุปกรณ์รองรับการเชื่อมต่อหลายจุดและสามารถสลับระหว่างเปิดและปิดได้
- 0 ไม่เช่นนั้น (ไม่รองรับหลายจุดหรือหลายจุดเปิดอยู่เสมอ)
บิต 2: สถานะปัจจุบันแบบหลายจุด
- 1 หากเปิดการเชื่อมต่อหลายจุดไว้
- 0 ไม่เช่นนั้น
บิตที่ 3: การตรวจจับบนศีรษะ
- 1. หากอุปกรณ์นี้รองรับการตรวจจับการสวมบนศีรษะ (แม้ว่าตอนนี้จะปิดการตรวจจับการสวมบนศีรษะอยู่ก็ตาม)
- 0 ไม่เช่นนั้น
บิต 4: สถานะปัจจุบันของการตรวจจับเมื่อสวมใส่
- 1 หากเปิดการตรวจจับการสวมบนศีรษะไว้
- 0 ไม่เช่นนั้น (ไม่รองรับการตรวจจับการสวมใส่หูฟังหรือการตรวจจับการสวมใส่หูฟังปิดอยู่)
บิตอื่นๆ ทั้งหมดเป็นค่าที่สงวนไว้ โดยค่าเริ่มต้นคือ 0
ตั้งค่าสถานะหลายจุด
ในรีโมตคอนโทรลแบบเปลี่ยนช่องเสียง เราอาจให้การตั้งค่าสำหรับให้ผู้ใช้เปิด/ปิดฟังก์ชันการทำงานแบบหลายจุด ผู้ค้นหาจะตั้งค่าสถานะหลายจุดให้กับผู้ให้บริการโดยใช้ข้อความด้านล่าง
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
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 | ธง | ค่ากำหนดการเปลี่ยน | แตกต่างกันไป ดูFlag ค่ากำหนดการเปลี่ยนหลายจุด |
5 | การตั้งค่าการเปลี่ยนขั้นสูง ไบต์นี้สงวนไว้ ค่าเริ่มต้นคือ 0 |
แตกต่างกัน | |
6 - 13 | Nonce ของข้อความ | แตกต่างกัน | |
14 - 21 ปี | รหัสการตรวจสอบสิทธิ์ข้อความ | แตกต่างกัน |
ตาราง 4.3.2.0: ตั้งค่ากำหนดการเปลี่ยน
Flag ค่ากำหนดการเปลี่ยนโหมดหลายจุด
- บิต 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 | ธง | การเปลี่ยนสถานะค่ากําหนด | แตกต่างกันไป ดูFlag ค่ากำหนดการเปลี่ยนหลายจุด |
5 | การตั้งค่าการเปลี่ยนขั้นสูง ไบต์นี้สงวนไว้ ค่าเริ่มต้นควรเป็น 0 |
แตกต่างกัน |
ตาราง 4.3.2.2: แจ้งค่ากําหนดการเปลี่ยน
เปลี่ยนแหล่งที่มาของเสียงที่ใช้งานอยู่ (ไปยังอุปกรณ์ที่เชื่อมต่อ)
ผู้ค้นหาสวิตช์เสียงสามารถขอให้ผู้ให้บริการแบบหลายจุดสลับแหล่งที่มาของเสียงที่ใช้งานอยู่ระหว่างอุปกรณ์ที่เชื่อมต่อโดยใช้ข้อความด้านล่าง
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | uint8 | เปลี่ยนแหล่งที่มาของเสียงที่ใช้งานอยู่ (ไปยังอุปกรณ์ที่เชื่อมต่อ) | 0x30 |
2 - 3 | uint16 | ความยาวข้อมูลเพิ่มเติม | 17 |
4 | ธง | การเปลี่ยน Flag เหตุการณ์แหล่งที่มาของเสียงที่ใช้งานอยู่ | แตกต่างกันไป ดูเหตุการณ์การสลับแหล่งที่มาของเสียงที่ใช้งานอยู่ |
5 - 12 | Nonce ของข้อความ | แตกต่างกัน | |
13 - 20 | รหัสการตรวจสอบสิทธิ์ข้อความ | แตกต่างกัน |
ตาราง 4.3.3.0: สลับแหล่งที่มาของเสียงที่ใช้งานอยู่ (ไปยังอุปกรณ์ที่เชื่อมต่อ)
การเปลี่ยนเหตุการณ์แหล่งที่มาของเสียงที่เล่นอยู่
- บิต 0 (MSB): 1 สลับไปยังอุปกรณ์นี้ 0 สลับไปยังอุปกรณ์ที่เชื่อมต่อที่ 2
- บิตที่ 1: 1 เล่นต่อเมื่อเปลี่ยนไปใช้อุปกรณ์อื่นหลังจากสลับ 0 ไม่เช่นนั้น การเล่นต่อหมายความว่าผู้ให้บริการส่งการแจ้งเตือน "เล่น" ไปยังอุปกรณ์ค้นหาผ่านโปรไฟล์ AVRCP หากสถานะก่อนหน้า (ก่อนที่จะเปลี่ยน) ไม่ใช่ PLAY ผู้ให้บริการควรละเว้นการแจ้งนี้
- บิต 2: 1 ปฏิเสธ SCO ในอุปกรณ์ที่เปลี่ยนไปใช้อุปกรณ์อื่น 0 ไม่เช่นนั้น
- บิต 3: 1 ยกเลิกการเชื่อมต่อบลูทูธในอุปกรณ์สวิตช์ออก ไม่เช่นนั้นจะเป็น 0
- บิต 4-7: สงวนไว้
ผู้ค้นหาสวิตช์เสียงอาจไม่ทราบสถานะของตนอย่างถูกต้องเสมอไป จึงเป็นไปได้ที่ผู้ให้บริการจะได้รับข้อความ "เปลี่ยนไปใช้อุปกรณ์นี้" เมื่อผู้ค้นหาเป็นอุปกรณ์ที่ใช้งานอยู่ ในกรณีนี้ หากต้องการแสดง UI ที่ถูกต้องใน Seeker ผู้ให้บริการสามารถส่ง NAK พร้อมเหตุผลของข้อผิดพลาด 0x4 - การดำเนินการกับอุปกรณ์ซ้ำซ้อน
สําหรับผู้ให้บริการเสียง LE ที่มีสมาชิกชุดมากกว่า 1 คน ผู้ให้บริการควรยกเลิกการเชื่อมต่อสมาชิกทั้งหมดจากอุปกรณ์ค้นหา มิฉะนั้นสแต็กบลูทูธของอุปกรณ์ค้นหาจะเชื่อมต่อกับผู้ให้บริการอีกครั้ง
เปลี่ยนกลับไป (ไปยังอุปกรณ์ที่ไม่ได้เชื่อมต่อ)
หากไม่ต้องการการสลับการเชื่อมต่อ ผู้ใช้สามารถเปลี่ยนกลับได้ และในบางสถานการณ์ การกู้คืนการเชื่อมต่อเสียงเพื่อลดการหยุดชะงักก็เป็นสิ่งที่ควรทำ ผู้ค้นหาจะใช้ข้อความด้านล่างเพื่อทริกเกอร์การเปลี่ยนกลับ
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
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 อีกครั้ง และเล่นวิดีโอที่หยุดชั่วคราวบนแท็บเล็ตต่อ
แจ้งเหตุการณ์การเปลี่ยนหลายจุด
ตัวค้นหาสวิตช์เสียงอาจแสดงการแจ้งเตือนให้ผู้ใช้ทราบเพื่อให้ผู้ใช้ทราบว่ามีเหตุการณ์สวิตช์หลายจุดเกิดขึ้น ผู้ให้บริการควรแจ้งให้ผู้ค้นหาตัวสลับเสียงที่เชื่อมต่ออยู่ทราบเกี่ยวกับเหตุการณ์การสลับ
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | uint8 | แจ้งเหตุการณ์สวิตช์หลายจุด ผู้ให้บริการควรส่งสวิตช์ทุกครั้ง ซึ่งรวมถึงผู้ค้นหาสวิตช์เสียงไปยังผู้ค้นหาสวิตช์ที่ไม่ใช่เสียง ผู้ค้นหาสวิตช์ที่ไม่ใช่เสียงไปยังผู้ค้นหาสวิตช์เสียง และผู้ค้นหาสวิตช์เสียงไปยังผู้ค้นหาสวิตช์เสียง |
0x32 |
2 - 3 | uint16 | ความยาวข้อมูลเพิ่มเติม | แตกต่างกัน |
4 | uint8 | เหตุผลในการเปลี่ยน ค่านี้ควรพิจารณาตามสถานะการเชื่อมต่อ สําหรับกรณีการใช้งาน LE Audio การดูการแมประหว่างประเภทบริบทของ LE Audio กับสถานะการเชื่อมต่ออาจมีประโยชน์ ตัวอย่างเช่น สถานะการเชื่อมต่อที่สอดคล้องกับผู้ช่วยเสียงคือ 0x9(เสียง LE - สตรีมมิงการโทร) ดังนั้น เหตุผลในการเปลี่ยนสำหรับการเปลี่ยนที่เริ่มต้นโดยผู้ช่วยเสียงควรเป็น 0x02 |
แตกต่างกัน 0x00: ไม่ระบุ 0x01: สื่อ (เช่น สตรีมมิง A2DP, สตรีมมิงสื่อ LEA) 0x02: การโทร (เช่น สตรีมมิง HFP, สตรีมมิงการโทร LEA) |
5 | uint8 | อุปกรณ์เป้าหมาย | แตกต่างกัน 0x01: อุปกรณ์นี้ 0x02: อุปกรณ์อื่นที่เชื่อมต่ออยู่ |
6 - n | utf8 | ชื่ออุปกรณ์เป้าหมาย หากอุปกรณ์เป้าหมายคือตัวค้นหาสวิตช์เสียง ให้ใช้ชื่อที่ตัวค้นหาส่งไป หรือใช้ชื่อ BT หากไม่เกี่ยวข้อง ให้ใช้ 2 ไบต์สุดท้ายของที่อยู่ |
แตกต่างกัน |
ตาราง 4.3.3.2: แจ้งเหตุการณ์สวิตช์หลายจุด
รับสถานะการเชื่อมต่อ
ผู้ค้นหาดูสถานะการเชื่อมต่อปัจจุบันจากผู้ให้บริการได้ ดังนี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | uint8 | รับสถานะการเชื่อมต่อ | 0x33 |
2 - 3 | uint16 | ความยาวข้อมูลเพิ่มเติม | 0 |
ตาราง 4.3.3.3: รับสถานะการเชื่อมต่อ
เมื่อได้รับข้อความนี้ ผู้ให้บริการจะตอบกลับด้วยรหัสข้อความ 0x34 แจ้งสถานะการเชื่อมต่อ
แจ้งสถานะการเชื่อมต่อ
ตามที่ระบุไว้ใน BLE advertising payload สำหรับผู้ให้บริการแบบหลายจุด หากสถานะการเชื่อมต่อมีการเปลี่ยนแปลง นอกเหนือจากการเปลี่ยนแปลงแพ็กเก็ตโฆษณา ผู้ให้บริการควรแจ้งให้ผู้ค้นหาที่เชื่อมต่ออยู่ซึ่งใช้คีย์บัญชีเดียวกันทราบเกี่ยวกับการเปลี่ยนแปลงด้วย หากผู้ให้บริการเชื่อมต่อกับ Seeker ที่เป็น Switch เสียงและ Seeker ที่เป็น Switch ที่ไม่ใช้เสียง หาก Seeker ที่เป็น Switch ที่ไม่ใช้เสียงทำงานอยู่ ผู้ให้บริการควรแจ้งสถานะการเชื่อมต่อให้ Seeker ที่เป็น Switch เสียงที่เชื่อมต่ออยู่ทราบด้วย (โดยใช้คีย์บัญชีของ Seeker)
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | uint8 | แจ้งสถานะการเชื่อมต่อ | 0x34 |
2 - 3 | uint16 | ความยาวข้อมูลเพิ่มเติม | แตกต่างกัน |
4 | uint8 | Flag อุปกรณ์ที่ใช้งานอยู่ | แตกต่างกัน 0x00: ตัวค้นหานี้ไม่ได้ใช้งาน และอุปกรณ์ที่ใช้งานอยู่ใช้คีย์บัญชีเดียวกัน 0x01: ตัวค้นหานี้คืออุปกรณ์ที่ใช้งานอยู่ 0x02: ตัวค้นหานี้ไม่ได้ใช้งาน และอุปกรณ์ที่ใช้งานอยู่ไม่ใช่ตัวค้นหาสวิตช์เสียง |
5 - n | สถานะการเชื่อมต่อที่เข้ารหัส | แตกต่างกัน | |
n+1 - n+8 | Nonce ของข้อความ | แตกต่างกัน |
ตาราง 4.3.3.4: แจ้งสถานะการเชื่อมต่อ
ข้อความสถานะการเชื่อมต่อที่เข้ารหัส
encrypted_connection_status = connection_status_raw_data ^ AES(Key, IV)
where:
คีย์จะมาจากคีย์บัญชีที่ใช้อยู่ ดูข้อมูลเพิ่มเติมได้ที่ โฆษณาแบบสุ่มที่แก้ไขได้
Key = HKDF(account_key, NULL, UTF8("SASS-RRD-KEY"),16)
IV คือ concat(Session_nonce, Message_nonce)
connection_status_raw_data = concat(connection_state, custom_data, connected_devices) ซึ่งกำหนดไว้ใน BLE advertising payload โปรดทราบว่าไม่ควรรวมไบต์สำหรับความยาวและประเภทของช่อง เนื่องจากเรามีรหัสข้อความและความยาวของข้อมูลที่นี่
แจ้งเตือนการเชื่อมต่อที่เริ่มต้นโดยสวิตช์เสียง
ผู้ให้บริการสวิตช์เสียงอาจต้องทราบว่าการสลับการเชื่อมต่อทริกเกอร์โดยสวิตช์เสียงหรือไม่เพื่อให้มีปฏิกิริยาที่ต่างกัน เช่น ปิดใช้เสียงแจ้งสำหรับเหตุการณ์สวิตช์เสียง ผู้ค้นหาจะส่งข้อความเพื่อแจ้งให้ผู้ให้บริการทราบว่าการเชื่อมต่อนี้เป็นการเชื่อมต่อที่เริ่มต้นโดยสวิตช์เสียง
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | uint8 | แจ้งเตือนการเชื่อมต่อที่เริ่มต้นโดยสวิตช์เสียง | 0x40 |
2 - 3 | uint16 | ความยาวข้อมูลเพิ่มเติม | 17 |
4 | uint8 | สัญญาณบอกสถานะการเชื่อมต่อที่เริ่มต้นโดยสวิตช์เสียง | แตกต่างกัน 0: การเชื่อมต่อนี้ไม่ได้ทริกเกอร์โดยสวิตช์เสียง 1: การเชื่อมต่อนี้เป็นการเริ่มต้นโดยสวิตช์เสียง |
5 - 12 | Nonce ของข้อความ | แตกต่างกัน | |
13 - 20 | รหัสการตรวจสอบสิทธิ์ข้อความ | แตกต่างกัน |
ตาราง 4.3.4.0: แจ้งการเชื่อมต่อที่เริ่มต้นโดยสวิตช์เสียง
ระบุคีย์บัญชีที่ใช้อยู่
หากมีการใช้คีย์บัญชีหลายรายการในเครื่องมือค้นหา (เช่น ผู้ใช้หลายคน) กับผู้ให้บริการ เครื่องมือค้นหาจะใช้ข้อความด้านล่างเพื่อระบุว่ามีการใช้คีย์บัญชีใดอยู่
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | uint8 | ระบุคีย์บัญชีที่ใช้อยู่ | 0x41 |
2 - 3 | uint16 | ความยาวข้อมูลเพิ่มเติม | 22 |
4 - 9 | utf8 | สตริง "ใช้งานอยู่" | UTF8 ("ใช้งานอยู่") |
10 - 17 | Nonce ของข้อความ | แตกต่างกัน | |
18 - 25 ปี | รหัสการตรวจสอบสิทธิ์ข้อความ | แตกต่างกัน |
ตาราง 4.3.4.1: ระบุคีย์บัญชีที่ใช้อยู่
เมื่อได้รับข้อความนี้ ผู้ให้บริการจะทราบได้ว่ามีการใช้คีย์บัญชีใดอยู่โดยยืนยันรหัสการตรวจสอบสิทธิ์ข้อความ
ส่งข้อมูลที่กำหนดเอง
Seeker สวิตช์เสียงที่ใช้งานอยู่สามารถรวมข้อมูล (เช่น การใช้งานเสียง) ของสตรีมเสียงไว้ในไบต์ข้อมูลที่กำหนดเอง และส่งไปยังผู้ให้บริการโดยใช้ข้อความด้านล่าง
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
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: ตั้งค่าเป้าหมายการเชื่อมต่อที่ตัดทิ้ง