在哪里可以找到服务数据 UUID?

rai*_*l33 7 bluetooth bluetooth-lowenergy beacon

当在蓝牙 LE 中发送广告数据包时,可以在 PDU 内部添加不同类型的数据。其中一些是服务数据类型,其数据类型值为: 0x16 服务数据 - 16 位 UUID 0x20 服务数据 - 32 位 UUID 0x21 服务数据 - 128 位 UUID

我见过一些使用此类数据的信标。例如,使用 0x16 后跟 0x6E2A 来发送温度。

我一直在搜索,但找不到包含所有这些服务数据的值的列表在哪里,以查看每种类型指标的代码。

dav*_*ung 2

您在广告中看到的 0x16、0x20 和 0x21 字节值是广告“AD”类型,指示以下字节包括该类型指定长度的 GATT 服务 UUID,后跟服务数据。有关 AD 类型值的完整列表,请参阅此处。

在信标通告中,最常见的是使用 16 位 UUID,因为该 UUID 长度在通告数据包中占用最少的空间,为数据留下最多的字节。您提到的16位服务UUID(例如0x6e2A)理论上是在蓝牙SIG注册的,并且确实有它们的列表。有几种不同的类型:

  1. 关贸总协定公共服务
  2. Bluetooth SIG 成员的私有 GATT 服务
  3. 标准制定组织的GATT 服务

第一个列表是任何人都可以实施的公共规范。后两个列表用于私人规范。这些号码是保留的,但其使用方式是拥有号码分配的组织专有的。

如果您查看这些列表,您会发现您找不到您提到的 6E2A 编号。怎么可能?

没有什么可以阻止人们在不注册的情况下构建使用 16 位服务 UUID 的蓝牙设备。 注册既费钱又费时间。因此,许多项目都会跳过这一步,尤其是在开发过程中,即使蓝牙 SIG 认为这是不良行为。

对于像这样的“黑市”关贸总协定服务,根本没有办法找到现有服务的完整列表。 您只能逐一查找它们并对它们进行逆向工程。或者您可以向制造商索要文档。

此外,无论服务UUID是否向蓝牙SIG注册,UUID之后的服务数据字节都不是标准化的。广告服务数据的设备制造商可以在这些字节中编码他或她希望用于特定用例的任何数据。不幸的是,没有中央登记系统来记录它们的含义。含义必须来自制造商的文档或逆向工程。

  • 找不到 0x6E2A,因为它是使用错误的字节顺序进行解码的。作为一个小尾数,它是 0x2A6E,它是“温度”的“GATT 特征和对象类型”。所以这里没有黑市。 (2认同)