2016-03-25 24 views
5

Tất cả assigned services chỉ ghi rõ UUID 16 bit. Làm cách nào để xác định đối tác 128 bit nếu tôi phải chỉ định dịch vụ ở định dạng đó?Làm cách nào để chuyển đổi UUID dịch vụ 16 bit Bluetooth thành UUID 128 bit?

Từ Service Discovery Protocol Overview Tôi biết rằng UUIDs 128 bit được dựa trên một cái gọi là "CƠ SỞ UUID" mà cũng được ghi có:

00000000-0000-1000-8000-00805F9B34FB 

Nhưng làm thế nào để tạo ra một UUID 128 bit từ đối tác 16 bit? Có lẽ một số 0 chữ số phải được thay thế, nhưng cái nào và như thế nào?

Trả lời

16

Điều này có thể được tìm thấy trong thông số kỹ thuật Bluetooth 4.0 Vol. 3 - Hệ thống lõi. Xem the list of adopted specs.

Trong Phần B, bao gồm các Service Discovery Protocol (SDP) dưới Chương 2.5.1 "Đang tìm kiếm các dịch vụ/UUID" sẽ giải thích làm thế nào để tính toán UUID.

Giá trị 128 bit đầy đủ của UUID 16 bit hoặc 32 bit có thể được tính bằng thao tác số học đơn giản.

128_bit_value = 16_bit_value * 2^96 + Bluetooth_Base_UUID 
128_bit_value = 32_bit_value * 2^96 + Bluetooth_Base_UUID 

UUID 16 bit có thể được chuyển đổi sang định dạng UUID 32 bit bằng cách mở rộng giá trị 16 bit thành 32 bit. Phương pháp tương đương là thêm giá trị UUID 16 bit vào UUID 32 bit không có giá trị.

Lưu ý rằng, trong phần khác, có một tiện dụng ghi nhớ:

Hoặc, để đặt nó đơn giản hơn, 16-bit Attribute UUID thay thế của x trong follow- ing:

0000xxxx-0000-1000-8000-00805F9B34FB 

Bên cạnh đó, 32-bit Thuộc tính UUID thay thế của x trong những điều sau đây:

xxxxxxxx-0000-1000-8000-00805F9B34FB 

Phương trình tương tự cũng áp dụng cho UUID thuộc tính. Xem Phần F, bao gồm Giao thức thuộc tính (ATT) dưới Chương 3.2.1 "Yêu cầu giao thức/khái niệm cơ bản". UUID thuộc tính 32 bit được chỉ định đầu tiên trong thông số kỹ thuật Bluetooth Core 4.1.

Các vấn đề liên quan