蓝牙GATT服务uuid 概述

问题描述 投票:0回答:1

我正在考虑为自定义应用程序实现一些GATT服务,但是我现在仍停留在研究中。我知道服务uuid​​并不是随机的,某些部分定义明确,另一些仍然使我感到困惑。

例如设备信息服务似乎广告为0000180a-xxx,即我在https://www.bluetooth.com/specifications/gatt/services/中可以找到的“ 180a”,但例如子字段“型号字符串”的ID为00002a24-xxx,这是一个完全不同的前缀,也未在同一列表中定义,而是在此处:https://www.bluetooth.com/specifications/gatt/characteristics/。如何获得所有这些前缀的列表?

我标记为xxx的那部分似乎与我的手机找到的随机设备相同。是否有概述如何建立uuid以及我可以为自己的GATT服务使用的“安全”前缀?

bluetooth bluetooth-lowenergy gatt bluetooth-gatt
1个回答
1
投票

在蓝牙中,属性类型,GATT服务类型,特征类型和描述符类型以及其他常量通过UUID标识。

UUID仅是标识符,128位标识符。一个给定的128位值表示一个给定的事物。使用128位随机值可使两方自行生成标识符的冲突机会最小,而无需中央注册表。

蓝牙中的UUID

蓝牙标准定义的UUID受到特殊待遇,因为它们在本规范的各种协议中都普遍使用。它们围绕Bluetooth Base UUID(xxxxxxxx-0000-1000-8000-00805F9B34FB)分组,并共享96个公共位。 (请参见core specification,3.B.2.5.1)

在各种协议部分中,标准UUID可以以短格式发送,跳过公共位,因此仅在空中使用16或32位。这是一个实现细节,特定于整个堆栈中的某些协议。因此,标准定义的UUID通常称为Short UUID。

除标准UUID外,任何实现者都可以自由地从128位随机数生成自己的UUID,并在需要的任何地方使用它们。自定义UUID不得使用Bluetooth Base UUID(并且不能以短格式进行编码,但您不必为此担心)。

自定义服务的含义

在实现标准服务和特性时使用标准UUID。

切勿将基于Bluetooth Base-UUID的UUID用于自定义目的。

开发自定义服务和属性时,重复使用示例代码,供应商SDK或其他任何地方的代码中现有的UUID(或UUID的一部分)不是一个好主意。您应该真正重新生成您的。

旁注

规范未为自定义UUID定义任何分组方案(您称其为前缀),但是某些供应商确实鼓励对自定义UUID进行分组,因为它们会生成一个96位的自定义基本UUID,并以此为单位发出递增值,例如蓝牙做到了。这不是标准的,并且没有带来协议优化。

© www.soinside.com 2019 - 2024. All rights reserved.