2016-03-25 33 views
5

すべてassigned servicesは16ビットのUUIDのみを示します。どのように私はその形式でサービスを指定する必要がある場合、128ビットの対応を決定することができますか? Service Discovery Protocol OverviewからBluetooth 16ビットサービスのUUIDを128ビットのUUIDに変換するにはどうすればよいですか?

私は128ビットのUUIDもそこに記載されている、いわゆる「BASEのUUID」に基づいていることを知っている:

00000000-0000-1000-8000-00805F9B34FB 

しかし、どのように私は16ビット相手から128ビットのUUIDを作成するのですか?おそらく0桁の一部を置き換える必要がありますが、どのようにして?

答えて

16

これは、Bluetooth 4.0コア仕様Vol。 3 - コアシステムthe list of adopted specsを参照してください。 "サービス/ UUIDを検索する" パートBサービス発見プロトコル(SDP)をカバーする下の章2.5.1で

はUUIDを計算する方法を説明します。

16ビットまたは32ビットのUUIDの完全な128ビット値は、単純な算術演算によって計算できます。

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

16ビットUUIDは、32ビット、16ビット値をゼロ拡張することによって、32ビットのUUIDのフォーマットに変換することができます。同等の方法は、16ビットのUUID値を0値の32ビットUUIDに追加することです。別のセクションでは、便利なニーモニックがあります、ということ

注:

あるいは、もっと単純にそれを置くために、16ビットのUUIDをフォロー INGでのxのを置き換える属性:

また
0000xxxx-0000-1000-8000-00805F9B34FB 

、32ビット項目UUIDは以下でのxのを置き換える:

xxxxxxxx-0000-1000-8000-00805F9B34FB 

属性UUIDについても同じ式が使用されます。 パートFを参照し、アトリビュートプロトコル(ATT)第3.2.1項「プロトコル要件/基本概念」を参照してください。 32ビットの属性UUIDは、Bluetooth Core 4.1仕様で最初に指定されます。