2016-03-25 33 views
5

Tüm assigned services yalnızca 16 bit UUID belirtin. Hizmeti bu formatta belirtmem gerekirse 128 bit karşılığı nasıl belirleyebilirim? Service Discovery Protocol Overview itibarenBluetooth 16 bit hizmet UUID'sini 128 bit UUID'ye nasıl dönüştürebilirim?

Ben 128 bitlik Uuıdlerin orada da belirtilmektedir bir sözde "BASE UUID" dayandığını biliyoruz:

00000000-0000-1000-8000-00805F9B34FB 

Ama nasıl 16 bitlik muadili bir 128 bit UUID oluşturulur? Muhtemelen 0 rakamın bir kısmı değiştirilmeli ama hangisi ve nasıl?

cevap

16

Bu, Bluetooth 4.0 Core ürününde Vol. 3 - Çekirdek Sistem. Bakınız the list of adopted specs. Hizmet Algılama Protokolü (SDP) 2.5.1 Bölüm altında kapsayan Kısım B, içinde

UUID'sini nasıl hesaplanacağını açıklayacağız "Hizmetler/UUID aranıyor".

16 bit veya 32 bit UUID'nin tam 128 bit değeri basit bir aritmetik işlemle hesaplanabilir.

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

bir 16 bit UUID'si sıfır-uzanan, 32-bit, 16-bit değeri ile bir 32-bit UUID'si biçimine dönüştürülebilmektedir. Eşdeğer bir yöntem, 16 bit UUID değerini sıfır değerli 32 bit UUID'ye eklemektir. başka bir bölümde, bir kullanışlı anımsatıcı var ki

Not:

Ya da daha basitçe ifade etmek gerekirse, 16 bit UUID takipçisidir ing x 's değiştirir Özellik:

Ayrıca
0000xxxx-0000-1000-8000-00805F9B34FB 

, 32 bit Özellik UUID aşağıdaki x 's değiştirir:

xxxxxxxx-0000-1000-8000-00805F9B34FB 

Aynı denklemler, UUID özniteliği için de geçerlidir. Öznitelik Protokolü'nü (ATT)kapsamındaki Kısım F'a bakın. Bölüm 3.2.1 "Protokol Gereksinimleri/Temel Kavramlar". 32 bit özniteliği UUID'ler ilk olarak Bluetooth Core 4.1 spesifikasyonunda belirtilir.