2016-03-25 16 views
5

Tutti gli assigned services indicano solo l'UUID a 16 bit. Come posso determinare la controparte a 128 bit se devo specificare il servizio in quel formato?Come posso convertire un UUID di servizio a 16 bit Bluetooth in un UUID a 128 bit?

Da Service Discovery Protocol Overview so che UUID a 128 bit sono basate su un cosiddetto "BASE UUID", che è anche dichiarato che non:

00000000-0000-1000-8000-00805F9B34FB 

Ma come faccio a creare un UUID a 128 bit dalla controparte a 16 bit? Probabilmente alcune delle 0 cifre devono essere sostituite, ma quali e come?

risposta

16

Questo può essere trovato nella specifica Bluetooth 4.0 Core Vol. 3 - Sistema principale. Vedi the list of adopted specs.

In parte B, che copre il Service Discovery Protocol (SDP) sotto capitolo 2.5.1 "Ricerca per i Servizi/UUID" spiegherà come calcolare l'UUID.

Il valore intero di 128 bit di un UUID a 16 bit o 32 bit può essere calcolato mediante una semplice operazione aritmetica.

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

A UUID a 16 bit può essere convertito in formato UUID 32 bit zero estendendo il valore 16 bit a 32 bit. Un metodo equivalente consiste nell'aggiungere il valore UUID a 16 bit a un UUID a 32 bit a valore zero.

Si noti che, in un'altra sezione, c'è un pratico mnemonico:

O, per dirla più semplicemente, a 16 bit attributo UUID sostituisce le X nel follow- ing:

0000xxxx-0000-1000-8000-00805F9B34FB 

Inoltre, uuid 32 bit sostituisce le x nel seguente:

xxxxxxxx-0000-1000-8000-00805F9B34FB 

Le stesse equazioni vanno per gli UUID degli attributi. Vedere Parte F, che copre il Attribute Protocol (ATT) in Capitolo 3.2.1 "Requisiti di protocollo/Concetti di base". Gli UUID degli attributi a 32 bit vengono prima specificati nelle specifiche Bluetooth Core 4.1.