สลับอุปกรณ์เสียง
เนื่องจากผู้ใช้หันมาใช้อุปกรณ์แหล่งเสียงที่หลากหลายมากขึ้นในการดำเนินงาน ความต้องการโซลูชันการจัดการชุดหูฟังที่ง่ายขึ้น ใช้งานในอุปกรณ์ต่างๆ การสลับอุปกรณ์เสียงช่วยเปลี่ยนการเชื่อมต่อชุดหูฟังได้อย่างราบรื่น ระหว่างอุปกรณ์ตามกิจกรรมของผู้ใช้ (เช่น การเริ่มดูภาพยนตร์) และการจัดลำดับความสำคัญ กิจกรรม (เช่น สายเรียกเข้า)
หลักการ UX
- การเปลี่ยนการเชื่อมต่อควรรวดเร็วและขึ้นอยู่กับการดำเนินการของผู้ใช้
- การเปลี่ยนการเชื่อมต่อควรเปิดเผยต่อผู้ใช้ ทำให้ผู้ใช้ดำเนินการต่อไปนี้ได้ ควบคุม/เปลี่ยนกลับหากการเปลี่ยนเป็นที่ไม่พึงประสงค์
- การเปลี่ยนควรเคารพความเป็นส่วนตัวของผู้ใช้
บทบาท
ตัวค้นหาสวิตช์เสียง: Seeker คืออุปกรณ์แหล่งที่มาของเสียง (ตัวอย่างเช่น โทรศัพท์หรือแท็บเล็ต) โดยกำลังมองหาชุดหูฟังที่อยู่ใกล้เคียงเพื่อใช้เชื่อมต่อ (หากมี)
ผู้ให้บริการสลับเสียง: โดยปกติผู้ให้บริการจะเป็นชุดหูฟังที่โฆษณา สถานะการเชื่อมต่อและสถานะการเชื่อมต่อของผู้แสวงหาเพื่อให้ตัดสินใจสลับได้
ภาพรวมของข้อกำหนด
หากต้องการเปลี่ยนอุปกรณ์อัจฉริยะ ผู้ให้บริการต้องปฏิบัติตามข้อกำหนดต่อไปนี้
ชื่อ | คำอธิบาย | ข้อกำหนด | จำเป็นไหม |
---|---|---|---|
การสแกนหน้าเว็บ | วิธียอมรับคำขอเชื่อมต่อใหม่จาก Seeker รายอื่นเมื่อมีการเชื่อมต่ออยู่แล้ว สำหรับผู้ให้บริการจุดเดียว ให้ทำดังนี้
|
ต้องมีโหมดสแกนหน้าเว็บที่เวลาในการตอบสนองต่ำ (ช่วงเวลาการสแกนไม่เกิน 640 มิลลิวินาที) เพื่อปรับปรุงประสิทธิภาพ ผู้ให้บริการสามารถใช้โหมดสแกนหน้าเว็บเริ่มต้นสำหรับกรณีส่วนใหญ่ได้ (โหมดใช้พลังงานต่ำ ช่วงเวลาการสแกนไม่ควรเกิน 1,280 มิลลิวินาที) แต่ต้องใช้โหมดเวลาในการตอบสนองต่ำในสถานการณ์ต่อไปนี้
|
บังคับ |
ประวัติการเชื่อมต่อ | หากต้องการเปลี่ยนกลับไปใช้การเชื่อมต่อก่อนหน้าและเล่นต่อ (หากมี) การสื่อสารจะทริกเกอร์การเปลี่ยนกลับผ่าน Message Stream API คุณควรรวมเหตุการณ์เสียงที่หยุดไว้ชั่วคราวไว้ในบันทึกเพื่อให้กลับมาเล่นต่อได้ (หากมี) |
รักษาประวัติการเชื่อมต่อและใช้ Message Stream API | บังคับ |
สถานะการเชื่อมต่อ | สำหรับผู้แสวงหาวิธี พิจารณาการสลับการเชื่อมต่อ สถานะการเชื่อมต่อมีดังต่อไปนี้:
|
ระบุสถานะการเชื่อมต่อในโฆษณา BLE และสตรีมข้อความ | บังคับ |
การเปลี่ยนแปลงความสามารถของรันไทม์ | การสลับอุปกรณ์เสียงสามารถเปิดใช้ได้โดยการอัปเกรดเฟิร์มแวร์ในผู้ให้บริการ จึงต้องซิงค์ความสามารถต่างๆ ระหว่าง Seeker และผู้ให้บริการในช่วงรันไทม์ | ใช้ Message Stream API เพื่อเข้าถึงความสามารถด้านรันไทม์ | บังคับ |
กฎการเปลี่ยนที่กำหนดค่าได้ | อนุญาตให้ Seeker กำหนดค่าลำดับความสำคัญระหว่างสตรีมมิงเสียงที่ใช้งานอยู่และคำขอสตรีมมิงเสียงใหม่ผ่านการตั้งค่ากำหนดของผู้ใช้ ตัวอย่างเช่น เครื่องมือหาสวิตช์เสียงอาจแสดงการตั้งค่า UI เพื่อให้ผู้ใช้เปิด/ปิดใช้การสลับการสตรีมสื่อและการเรียกใช้โดยอัตโนมัติได้ Seeker การสลับอุปกรณ์เสียงจะตั้งค่าและรับกฎการเปลี่ยนผ่านสตรีมข้อความ |
ผู้ให้บริการหลายจุดเท่านั้น ใช้ Message Stream API เพื่อกำหนดค่ากฎการสลับอุปกรณ์ที่เชื่อมต่อได้ |
ไม่บังคับ |
การเปลี่ยนอุปกรณ์ที่ใช้งานอยู่ | ให้ Seeker การสลับอุปกรณ์เสียงจำลองการสลับอุปกรณ์เสียงระหว่างอุปกรณ์ที่เชื่อมต่อ ในส่วน Seeker การสลับอุปกรณ์เสียงอาจมี UI เพื่อให้ผู้ใช้สลับระหว่างอุปกรณ์ที่เชื่อมต่อได้อย่างง่ายดาย |
ผู้ให้บริการหลายจุดเท่านั้น ใช้ Message Stream API สำหรับ Seeker การสลับเสียงเพื่อระบุแหล่งที่มาของเสียงที่ใช้งานอยู่ระหว่างอุปกรณ์ที่เชื่อมต่อ |
บังคับ |
การแจ้งเตือนการเปลี่ยนหลายจุด | ให้ผู้ค้นหาการเปลี่ยนอุปกรณ์แสดงการแจ้งเตือนการสลับอุปกรณ์ | เฉพาะผู้ให้บริการหลายจุด ใช้ Message Stream API เพื่อแจ้งผู้หาสวิตช์เสียงที่เชื่อมต่อเมื่อมีการเปลี่ยนหลายจุด |
บังคับ |
เพย์โหลดการโฆษณา
ผู้ให้บริการจะต้องระบุสถานะการเชื่อมต่อปัจจุบันในโฆษณา สร้างขึ้นจากข้อมูลบัญชีจับคู่ด่วนที่อธิบายไว้ใน การโฆษณา: เมื่อค้นพบไม่ได้
โปรดทราบว่าเวอร์ชันของตาราง 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 Audio - การสตรีมสื่อโดยไม่มีการควบคุม
- 0x8: LE Audio - สตรีมมิงสื่อพร้อมการควบคุม
- 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 Audio แบบผสม เช่น การเล่นสื่อระหว่าง ผู้ให้บริการจะต้องใช้สถานะการเชื่อมต่อที่มีลำดับความสำคัญสูงสุด นั่นคือ 0x9 (การโทร) สำหรับสถานการณ์ด้านบนแทนที่จะเป็น 0x8 (สื่อ)
บิตแมปของอุปกรณ์ที่เชื่อมต่อ
เพื่อหลีกเลี่ยงการเปลี่ยนการเชื่อมต่อที่ไม่พึงประสงค์ ผู้ค้นหาอาจจำเป็นต้องทราบว่า อุปกรณ์ที่ชุดหูฟังเชื่อมต่ออยู่ ตัวอย่างเช่น เมื่อชุดหูฟัง เชื่อมต่อกับโทรศัพท์อยู่ ผู้ใช้จึงไม่ต้องการให้ถูกขัดจังหวะ สลับการเชื่อมต่อเมื่อสมาชิกในครอบครัวคนหนึ่งเริ่มใช้ YouTube บน แท็บเล็ต
โปรดทราบว่าบิตแมปนี้จะเป็นแบบไม่ระบุชื่อ ดังนั้น Seeker ไม่สามารถรู้ข้อมูล มีความผูกพันกับอุปกรณ์กับผู้ให้บริการ เช่น ใช้อุปกรณ์ที่เชื่อมกัน 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-bytes ZEROs)
ข้อมูลดิบของสถานะการเชื่อมต่อได้รับการกําหนดไว้ในตาราง 4.1 หาก การเปลี่ยนแปลงสถานะการเชื่อมต่อ Salt และ RPA ควรสร้างใหม่ที่ กรอบเวลาการโฆษณาเดียวกัน
ซึ่งจะทำให้ช่องสถานะการเชื่อมต่อที่เข้ารหัสหมุนไปพร้อมกับ ข้อมูลคีย์บัญชีจะหมุนเวียน
โฆษณา BLE จะมีโครงสร้างดังนี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า | จำเป็นไหม |
---|---|---|---|---|
0 | uint8 |
เวอร์ชันและแฟล็ก | 10x | บังคับ |
1 - ตัน | ข้อมูลคีย์บัญชี | แตกต่างกัน | บังคับ | |
t+1 - s | ข้อมูลแบตเตอรี่ | แตกต่างกัน | ไม่บังคับ | |
s+1 - var | ข้อมูลที่แปลงได้แบบสุ่ม | แตกต่างกัน | บังคับหากรายการคีย์บัญชีไม่ว่างเปล่า มิฉะนั้นจะยกเว้น |
ตาราง 4.2: โฆษณา BLE ที่มีข้อมูล Resolvable Data แบบสุ่ม
ข้อมูลที่แก้ไขได้แบบสุ่มประกอบด้วยข้อมูลต่อไปนี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า | จำเป็นไหม |
---|---|---|---|---|
0 | uint8 |
ความยาวและประเภทของช่อง 0bLLLLTTTT
|
0bLLLL0110
|
บังคับ |
1 - var | ข้อมูลที่เข้ารหัส | แตกต่างกัน | บังคับ |
ตารางที่ 4.2.1: ข้อมูลที่แปลงได้แบบสุ่ม
เช่น หากข้อมูลที่แก้ไขแบบสุ่มได้มีการเชื่อมต่อที่เข้ารหัส สถานะ ผลลัพธ์ที่ถอดรหัสแล้วจะเป็น ช่องสถานะการเชื่อมต่อ
ข้อมูลคีย์บัญชีด้านบนควรได้รับการแก้ไขเล็กน้อยเพื่อป้องกันการปลอมแปลง เมื่อมีการรวมข้อมูลที่แก้ไขได้แบบสุ่มในโฆษณา โดยปกติเมื่อ ในการสร้างตัวกรองคีย์ของบัญชี ค่า V เกิดจากการรวมบัญชี ตัวกรองคีย์ผสมเกลือ แต่เมื่อมีการสุ่มข้อมูลที่แก้ไขได้ ค่า V ควรมีลักษณะดังต่อไปนี้
V = concat(account_key, salt, random_resolvable_data)
หากมีการโฆษณาทั้งข้อมูลแบตเตอรี่และข้อมูลที่ปรับเปลี่ยนได้แบบสุ่ม V ควร สร้างขึ้นเป็น
V = concat(account_key, salt, battery_data, random_resolvable_data)
คีย์บัญชีที่ใช้งานอยู่
การเปลี่ยนการเชื่อมต่อจะอิงตามบัญชี ดังนั้นผู้ให้บริการควรมี ของการเชื่อมต่อปัจจุบันในโฆษณา BLE หาก อุปกรณ์ที่เชื่อมต่อในปัจจุบันเป็นผู้มองหาสวิตช์เสียง ผู้ให้บริการควรจะสามารถ เพื่อรับคีย์บัญชีที่เชื่อมโยงกับ Seeker นี้ และใช้คีย์บัญชีนี้เพื่อ เข้ารหัสฟิลด์สถานะการเชื่อมต่อ หากแหล่งที่มาของเสียงที่เชื่อมต่อไม่ใช่เสียง สลับ Seeker ผู้ให้บริการควรใช้คีย์บัญชีที่ใช้ล่าสุด
ก่อนที่จะคำนวณตัวกรองคีย์บัญชี ผู้ให้บริการควรแก้ไข ของคีย์บัญชีเพื่อรวมรูปแบบใดรูปแบบหนึ่งต่อไปนี้ไว้ในรูปแบบการใช้งาน
- 0b00000100
ไม่ได้ใช้งานคีย์บัญชีนี้
นี่คือรหัสเริ่มต้น (ดูคีย์บัญชี) - 0b00000101
คีย์บัญชีนี้เป็นคีย์บัญชีที่ใช้งานล่าสุด
ช่องสถานะการเชื่อมต่อได้รับการเข้ารหัสโดยคีย์บัญชีนี้ ไม่มี ข้อมูลคีย์บัญชีของสถานะการเชื่อมต่อปัจจุบัน นั่นอาจหมายถึงไม่มี อุปกรณ์ที่เชื่อมต่ออยู่หรืออุปกรณ์ที่เชื่อมต่อไม่ใช่ผู้ค้นหาสวิตช์เสียง - 0b00000110
คีย์บัญชีนี้เป็นคีย์บัญชีที่ใช้งานอยู่
ช่องสถานะการเชื่อมต่อได้รับการเข้ารหัสโดยคีย์บัญชีนี้ และ อุปกรณ์ที่เชื่อมต่อเชื่อมโยงกับคีย์บัญชีนี้
สคีมาสำหรับเพย์โหลดการเปลี่ยนเสียง
ภาพด้านล่างแสดงสคีมาสำหรับเพย์โหลดการเปลี่ยนเสียง
![](https://developers-dot-devsite-v2-prod.appspot.com/nearby/fast-pair/images/SASS-ble-payload-schematic.png?authuser=0000&hl=th)
ข้อความ
เมื่อเชื่อมต่อแล้ว ผู้ค้นหาและผู้ให้บริการจะใช้สตรีมข้อความเพื่อซิงค์เสียงได้ ความสามารถในการเปลี่ยน ทริกเกอร์สวิตช์การเชื่อมต่อ ตั้งค่าและรับการเปลี่ยน ค่ากำหนด แจ้งสถานะการเชื่อมต่อ และอื่นๆ เราสร้างกลุ่มข้อความและ รหัสข้อความเฉพาะของการสลับอุปกรณ์เสียงตามที่ระบุไว้ด้านล่าง
ชื่อกลุ่มข้อความ | ค่า |
---|---|
สลับอุปกรณ์เสียง | 0x07 |
รายละเอียดเพิ่มเติมสำหรับรหัสข้อความแต่ละรหัสจะอยู่ในส่วนต่อไปนี้
ชื่อรหัสข้อความ | ค่า | การเชื่อมต่อหลายอุปกรณ์เท่านั้น | ผู้ส่ง | ผู้ตอบ | เข้ารหัส | MAC | รับทราบ |
---|---|---|---|---|---|---|---|
รับความสามารถของการสลับอุปกรณ์เสียง | 10x | N | ทั้งคู่ | ทั้ง 2 อย่าง ผ่านโค้ด 0x11 | N | ไม่ | N |
แจ้งเตือนความสามารถของการสลับอุปกรณ์เสียง | 11 x | N | ทั้งคู่ | ทั้งคู่ | N | ได้ | Y |
ตั้งค่าสถานะหลายจุด | 12 x | Y | ผู้ค้นหา | ผู้ให้บริการ | N | ได้ | Y |
ตั้งค่ากำหนดการเปลี่ยน | 20x20 | Y | ผู้ค้นหา | ผู้ให้บริการ | N | ได้ | Y |
รับค่ากำหนดการเปลี่ยน | 21 x | Y | ผู้ค้นหา | ผู้ให้บริการ ผ่านรหัส 0x22 | N | ไม่ | N |
แจ้งค่ากำหนดการเปลี่ยน | 22 x 00 | Y | ผู้ให้บริการ | ผู้ค้นหา | N | ไม่ | N |
เปลี่ยนแหล่งที่มาของเสียงที่ใช้งานอยู่(ไปยังอุปกรณ์ที่เชื่อมต่อ) | 0x30 | Y | ผู้ค้นหา | ผู้ให้บริการ | N | ได้ | Y |
เปลี่ยนกลับ | 0x31 | N | ผู้ค้นหา | ผู้ให้บริการ | N | ได้ | Y |
แจ้งเตือนเหตุการณ์การเปลี่ยนอุปกรณ์หลายจุด | 0x32 | Y | ผู้ให้บริการ | ผู้ค้นหา | N | ไม่ | N |
ดูสถานะการเชื่อมต่อ | 0x33 | Y | ผู้ค้นหา | ผู้ให้บริการ ผ่านรหัส 0x34 | N | ไม่ | N |
แจ้งสถานะการเชื่อมต่อ | 34 x | Y | ผู้ให้บริการ | ผู้ค้นหา | Y | ไม่ | N |
แจ้งเตือนการเชื่อมต่อที่เริ่มการสลับอุปกรณ์เสียง | 0x40 | N | ผู้ค้นหา | ผู้ให้บริการ | N | ได้ | Y |
ระบุคีย์บัญชีที่ใช้ | 0x41 | N | ผู้ค้นหา | ผู้ให้บริการ | N | ได้ | Y |
ส่งข้อมูลที่กำหนดเอง | 0x42 | N | ผู้ค้นหา | ผู้ให้บริการ | N | ได้ | Y |
ตั้งเป้าหมายการเชื่อมต่อแบบลดลง | 0x43 | Y | ผู้ค้นหา | ผู้ให้บริการ | N | ได้ | Y |
ตาราง 4.3: ข้อความสลับอุปกรณ์เสียง
ข้อความ MAC ของการสลับอุปกรณ์เสียง
ข้อความสลับเสียงทั้งหมดที่มี ข้อมูลที่ส่งจาก Seeker ไปยังผู้ให้บริการจะต้องใช้ รหัสการตรวจสอบสิทธิ์ข้อความ วันและเวลา ได้รับข้อความที่มี MAC แล้ว คุณควรรับทราบเพื่อให้ผู้ค้นหา จะทราบว่าผู้ให้บริการได้แสดงความรู้สึกต่อข้อความหรือไม่
หากการตรวจสอบสิทธิ์ข้อความสำเร็จ ผู้ให้บริการจะต้องส่ง ACK สำหรับ ข้อความ:
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | รับทราบ | 0xFF |
1 | uint8 | รับทราบ | 0x |
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 | รับความสามารถของการสลับอุปกรณ์เสียง | 10x |
2-3 ปี | uint16 | ความยาวของข้อมูลเพิ่มเติม | 0 |
ตาราง 4.3.1.0: รับความสามารถของการสลับอุปกรณ์เสียง
แจ้งเตือนความสามารถของการสลับอุปกรณ์เสียง
เมื่อได้รับข้อความ ความสามารถในการสลับอุปกรณ์เสียง โปรแกรมสลับแทร็กเสียง/ผู้ให้บริการจะตอบสนองด้วยสิ่งใดสิ่งหนึ่งต่อไปนี้ แฟล็ก:
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | uint8 | แจ้งเตือนความสามารถของการสลับอุปกรณ์เสียง | 11 x |
2-3 ปี | uint16 | ความยาวของข้อมูลเพิ่มเติม | 20 หากผู้ให้บริการส่งข้อมูลนี้ 4 หากผู้ให้บริการส่งข้อมูลนี้ |
4-5 ปี | uint16 | รหัสเวอร์ชันการเปลี่ยนเสียง | ค่าที่ไม่ใช่ 0 หมายความว่ารองรับการสลับอุปกรณ์เสียง รหัสเวอร์ชันปัจจุบัน (ที่มีการเพิ่มประสิทธิภาพความปลอดภัย) คือ 0x0102 0x0000 หรือไม่มีการตอบสนองใน 1 วินาทีหมายความว่าอุปกรณ์นี้ไม่รองรับการสลับอุปกรณ์เสียง |
6-7 ปี | Flag | แฟล็กความสามารถในการสลับอุปกรณ์เสียงของผู้ให้บริการ หาก Seeker เป็นผู้ส่ง จะต้องไม่สนใจ 2 ไบต์นี้ |
แตกต่างกันไป ดูแฟล็กความสามารถในการสลับเสียง |
8-15 ปี | Nonce ข้อความ ต้องใช้เมื่อ Seeker ส่งเท่านั้น |
แตกต่างกัน | |
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
ตั้งค่าสถานะหลายจุด
สำหรับผู้มองหาสวิตช์เสียง เราอาจจัดเตรียมการตั้งค่าไว้ให้ผู้ใช้เปิด/ปิดได้ การใช้งานหลายจุด ผู้ค้นหาจะตั้งค่าสถานะหลายจุดเป็น ผู้ให้บริการที่ใช้ข้อความต่อไปนี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | uint8 | ตั้งค่าสถานะหลายจุด | 12 x |
2-3 ปี | uint16 | ความยาวของข้อมูลเพิ่มเติม | 17 |
4 | uint8 | สถานะหลายจุด | 0: ปิดหลายจุด 1: เปิดหลายจุด |
5 - 12 ปี | Nonce ข้อความ | แตกต่างกัน | |
13 - 20 คน | รหัสการตรวจสอบสิทธิ์ข้อความ | แตกต่างกัน |
ตาราง 4.3.1.2: ตั้งค่าสถานะหลายจุด
ตั้งค่ากำหนดการเปลี่ยน
ผู้ค้นหาการสลับอุปกรณ์เสียงอาจแก้ไขค่ากำหนดการเปลี่ยนของหลายจุดและตั้งค่า ไปยังผู้ให้บริการโดยใช้ข้อความด้านล่าง
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | uint8 | ตั้งค่ากำหนดการเปลี่ยน | 20x20 |
2-3 ปี | uint16 | ความยาวของข้อมูลเพิ่มเติม | 18 |
4 | Flag | การเปลี่ยนการตั้งค่า | varies ดูค่าสถานะค่ากำหนดการเปลี่ยนหลายจุด |
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 | รับการกำหนดค่าการเปลี่ยน | 21 x |
2-3 ปี | uint16 | ความยาวของข้อมูลเพิ่มเติม | 0 |
ตาราง 4.3.2.1: รับค่ากำหนดการเปลี่ยน
แจ้งค่ากำหนดการเปลี่ยน
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | uint8 | แจ้งค่ากำหนดการเปลี่ยน | 22 x 00 |
2-3 ปี | uint16 | ความยาวของข้อมูลเพิ่มเติม | 2 |
4 | Flag | สลับแฟล็กค่ากำหนด | varies ดูค่าสถานะค่ากำหนดการเปลี่ยนหลายจุด |
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 การกลับมาเล่นต่อหมายความว่าผู้ให้บริการจะส่งการแจ้งเตือน PLAY ไปยังผู้หา ผ่านโปรไฟล์ AVRCP หากสถานะก่อนหน้า (ก่อนเปลี่ยนออก) ไม่ได้ PLAY ผู้ให้บริการควรไม่สนใจ Flag นี้
- บิต 2: 1 ปฏิเสธ SCO บนอุปกรณ์ที่เปลี่ยนห่าง 0
- บิต 3: 1 ยกเลิกการเชื่อมต่อบลูทูธเมื่อสวิตช์อุปกรณ์ไม่อยู่บ้าน หรือไม่ใช่ 0
- บิต 4 - 7: สงวนไว้
ผู้ค้นหาการสลับอุปกรณ์เสียงอาจไม่ทราบสถานะอย่างถูกต้องเสมอไป ดังนั้นจึงเป็นไปได้ เพื่อให้ผู้ให้บริการได้รับ "เปลี่ยนเป็นอุปกรณ์นี้" เมื่อ Seeker อุปกรณ์ที่ใช้งานอยู่อยู่แล้ว ในกรณีนี้ ในการแสดง UI ที่ถูกต้องบน Seeker ผู้ให้บริการสามารถส่ง NAK พร้อมสาเหตุของข้อผิดพลาด ซึ่งก็คือ 0x4 - การดำเนินการของอุปกรณ์ที่ซ้ำซ้อน
สำหรับผู้ให้บริการ LE Audio ที่มีสมาชิกในเซ็ตมากกว่า 1 ราย ผู้ให้บริการควร ยกเลิกการเชื่อมต่อสมาชิกทั้งหมดจาก Seeker มิฉะนั้นแล้ว สแต็กบลูทูธของ ผู้ค้นหาจะเชื่อมต่อกับผู้ให้บริการอีกครั้ง
เปลี่ยนกลับ (ไปยังอุปกรณ์ที่ยกเลิกการเชื่อมต่อ)
หากการเปลี่ยนการเชื่อมต่อเป็นที่ไม่พึงประสงค์ ผู้ใช้สามารถเปลี่ยนกลับการเปลี่ยนได้ และ ในบางสถานการณ์ คุณสามารถคืนค่าการเชื่อมต่อเสียงเพื่อลดขนาด ขัดข้อง ผู้ค้นหาจะใช้ข้อความด้านล่างเพื่อทริกเกอร์ให้เปลี่ยนกลับ
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | uint8 | เปลี่ยนกลับ (ไปยังอุปกรณ์ที่ยกเลิกการเชื่อมต่อ) | 0x31 |
2-3 ปี | uint16 | ความยาวของข้อมูลเพิ่มเติม | 17 |
4 | uint8 | เปลี่ยนกิจกรรมกลับ | varies 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 | เหตุผลในการเปลี่ยน ค่านี้ควรกำหนดตามสถานะการเชื่อมต่อ สําหรับ Use Case ของ LE Audio โปรดดูการแมประหว่างประเภทบริบทของ LE Audio และสถานะการเชื่อมต่ออาจเป็นประโยชน์ ตัวอย่างเช่น สถานะการเชื่อมต่อที่สอดคล้องกับ Voice Assistant จะเป็น 0x9(การสตรีมด้วยเสียง LE - การโทร) ดังนั้น เหตุผลในการเปลี่ยนที่เริ่มโดยผู้ช่วยเสียงจึงควรเป็น 0x02 |
varies 0x00: ไม่ระบุ 0x01: สื่อ (เช่น สตรีมมิง A2DP, การสตรีมสื่อ LEA) 0x02: การโทร (เช่น สตรีมมิง HFP, สตรีมมิงการโทร LEA) |
5 | uint8 | อุปกรณ์เป้าหมาย | แตกต่างกันออกไป 0x01: อุปกรณ์นี้ 0x02: อุปกรณ์ที่เชื่อมต่ออีกเครื่องหนึ่ง |
6 - n | utf8 | ชื่ออุปกรณ์เป้าหมาย หากอุปกรณ์เป้าหมายคือ Audio Switch Seeker โดยใช้ชื่อที่ Seeker ส่งให้ หรือใช้ชื่อ BT (หากไม่มี) และใช้ 2 ไบต์สุดท้ายของที่อยู่ |
แตกต่างกัน |
ตาราง 4.3.3.2: แจ้งเหตุการณ์การเปลี่ยนหลายจุด
ดูสถานะการเชื่อมต่อ
ผู้ค้นหาจะรับสถานะการเชื่อมต่อปัจจุบันจากผู้ให้บริการได้ดังนี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | uint8 | ดูสถานะการเชื่อมต่อ | 0x33 |
2-3 ปี | uint16 | ความยาวของข้อมูลเพิ่มเติม | 0 |
ตาราง 4.3.3.3: ดูสถานะการเชื่อมต่อ
เมื่อได้รับข้อความนี้ ผู้ให้บริการต้องตอบกลับด้วยรหัสข้อความ 0x34 แจ้งสถานะการเชื่อมต่อ
แจ้งสถานะการเชื่อมต่อ
ตามที่กำหนดไว้ในเพย์โหลดโฆษณา BLE สำหรับ ผู้ให้บริการหลายจุด หากสถานะการเชื่อมต่อเปลี่ยนแปลง ยกเว้นการเปลี่ยน ผู้ให้บริการยังควรแจ้งให้ผู้หาซื้อที่เชื่อมต่ออยู่ทราบอีกด้วย กำลังใช้คีย์บัญชีเดียวกันเกี่ยวกับการเปลี่ยนแปลงนี้ หากผู้ให้บริการเชื่อมต่ออยู่ ด้วย Seeker การสลับแทร็กเสียง และ Seeker ที่ไม่ใช่เสียงหากตัวเลือกที่ไม่ใช่เสียง Switch Seeker ทำงานอยู่ ผู้ให้บริการควรแจ้งเสียงที่เชื่อมต่อด้วย สลับ Seeker เกี่ยวกับสถานะการเชื่อมต่อ (โดยใช้คีย์บัญชีของ Seeker)
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | uint8 | แจ้งสถานะการเชื่อมต่อ | 34 x |
2-3 ปี | uint16 | ความยาวของข้อมูลเพิ่มเติม | แตกต่างกัน |
4 | uint8 | Flag อุปกรณ์ที่ใช้งานอยู่ | varies 0x00: Seeker นี้เป็นแบบแพสซีฟ และอุปกรณ์ที่ใช้งานอยู่ใช้คีย์บัญชีเดียวกัน 0x01 โดย Seeker นี้เป็นอุปกรณ์ที่มีการใช้งาน 0x02: Seeker นี้เป็นแบบแพสซีฟและอุปกรณ์ที่ใช้งานอยู่คือ 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)
การเชื่อมต่อ_สถานะ_raw_data = การเชื่อมต่อ(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: ส่งข้อมูลที่กำหนดเอง
เมื่อได้รับข้อมูลที่กำหนดเองแล้ว ผู้ให้บริการจะอัปเดตแพ็กเก็ตโฆษณา เพื่อรวมข้อมูลที่กำหนดเองไว้ด้วย สำหรับผู้ให้บริการหลายจุด ผู้ให้บริการควรแจ้งให้ สถานะการเชื่อมต่อจะเปลี่ยนเป็น Seeker ที่เชื่อมต่อรายอื่นโดยใช้คีย์บัญชีเดียวกัน
ตั้งเป้าหมายการลดลงของการเชื่อมต่อ
ในชุดหูฟังแบบหลายจุด หากการเชื่อมต่อที่ต้องการตัดการเชื่อมต่อไม่ได้ 1 รายการที่ใช้ล่าสุด ผู้มองหาสวิตช์เสียงจะบอกผู้ให้บริการได้ว่าอุปกรณ์ใด วางโดยใช้ข้อความต่อไปนี้
อ็อกเท็ต | ประเภทข้อมูล | คำอธิบาย | ค่า |
---|---|---|---|
0 | uint8 | สลับอุปกรณ์เสียง | 0x07 |
1 | uint8 | ตั้งเป้าหมายการลดลงของการเชื่อมต่อ | 0x43 |
2-3 ปี | uint16 | ความยาวของข้อมูลเพิ่มเติม | 17 |
4 | uint8 | กำหนดเป้าหมายอุปกรณ์ที่เชื่อมต่อที่จะวาง | แตกต่างกันไป 1: อุปกรณ์นี้ |
5 - 12 ปี | Nonce ข้อความ | แตกต่างกัน | |
13 - 20 คน | รหัสการตรวจสอบสิทธิ์ข้อความ | แตกต่างกัน |
ตาราง 4.3.4.3: ตั้งเป้าหมายการลดลงของการเชื่อมต่อ
การใช้งานข้อมูลอ้างอิง
ดู ไลบรารี SDK แบบฝังใกล้เคียงสำหรับการติดตั้งใช้งานข้อมูลอ้างอิง