我正考虑为一个定制的应用程序实现关贸总协定的几个服务,但我现在还停留在研究中。我知道这些服务不是随机的,有些部分定义得很好,有些部分仍然让我感到困惑。
例如,设备信息服务似乎被宣传为0000180a-xxx,我可以在https://www.bluetooth.com/specifications/gatt/services/中找到“180 a”,但是例如,子字段"Model Number String“具有id 00002a24-xxx,这是一个完全不同的前缀,它也没有在相同的列表中定义,而是在这里定义:https://www.bluetooth.com/specifications/gatt/characteristics/。我怎么能得到所有这些前缀的列表?
我用xxx标记的那部分似乎等于我的手机里的随机装置。有没有什么地方概述了uuid应该如何构建,以及我可以在自己的GATT服务中使用哪些“安全”前缀?
发布于 2020-02-06 17:43:26
在蓝牙中,属性类型、GATT服务类型、特征类型和描述符类型以及其他常量都是通过UUID识别的。
UUID不过是标识符,128位标识符.一个给定的128位值指定一个给定的事物.使用128位随机值可以使独立生成标识符的双方碰撞的可能性最小,而不需要中央注册表。
蓝牙中的UUID
蓝牙标准定义的UUID得到特殊待遇,因为它们通常在规范的各种协议中使用。它们围绕着蓝牙基础UUID (xxxxxxxx 0000-1000-8000-00805F9B34FB)进行分组,并共享96个公共比特。(见岩心规格,3.B.2.5.1)
在各种协议部分中,标准UUID可以以短形式传输,跳过公共比特,因此只能在空中使用16或32位。这是一个实现细节,特定于整个堆栈中的一些协议。因此,标准定义的UUID通常称为短UUID.
除了标准UUID之外,任何实现者都可以自由地从128位随机产生自己的UUID,并在任何需要的地方使用它们。自定义UUID不能使用蓝牙Base (不能以短格式编码,但您不应该关心这一点)。
对自定义服务的影响
在实现标准服务和特性时使用标准UUID。
永远不要使用蓝牙基地-基于UUID的UUID用于自定义目的。
在开发自定义服务和属性时,从代码中重用现有的UUID(或UUID的一部分)并不是一个好主意。你真的应该再生你的。
旁注
规范没有为自定义UUID定义任何分组方案(您称之为前缀),但一些供应商确实会煽动对自定义did进行分组,其方式是生成一个96位的自定义基本UUID,并由此发出增量值,就像蓝牙一样。这是不标准的,也不会带来协议优化。
https://stackoverflow.com/questions/60017350
复制相似问题