什么范围的蓝牙UUID可用于厂商定义的配置文件?

17
我想要构建一个简单的基于蓝牙低功耗自定义配置文件的应用程序。采用的配置文件/服务/特征/描述符使用16位UUID,如官方网站所示。
16位UUID是相应的128位UUID的快捷方式,并且被翻译为:
128-bit UUID = 16-bit Attribute UUID * 2^96 + Bluetooth_Base_UUID 

由于使用了自定义配置文件,我想知道可以用哪些UUIDs。

  • Bluetooth Low Energy 中,哪个128位UUID范围可用于描述供应商定义的属性?

其中 Bluetooth_Base_UUID 的值为 00000000-0000-1000-8000-00805F9B34FB(来源:Bluetooth Core Specification Vol 3 Part F Section 3.2.1)

4个回答

20

在您展示的基本UUID之上,所有16位和32位UUID都保留用于规范(或未来规范)中的项目。 因此,供应商应用程序可以自由使用小于基本UUID的任何128位UUID。 没有为供应商使用16位或32位UUID保留空间。


2
你能指定一个证实所有 UUID 小于基本 UUID 都可以由任何人自由使用的来源吗? - Etan
7
应用程序不得将128位UUID转换为16位UUID进行比较,因为不能保证128位UUID基于蓝牙基本UUID;它可能是供应商定义的128位UUID。请参阅Vol 3 Part B 2.5,以及https://www.bluetooth.org/Technical/AssignedNumbers/service_discovery.htm(需要注册),其中最清楚地说明了此问题。 - TJD
@TJD:你分享的内容非常重要,非常感谢! - user2045557
6
@TJD:你能提供一下关于语句中“小于基本UUID”的参考吗?我在规范中找不到这个。此外,如果将UUID视为128位整数,则没有真正的“小于”,因为UUID范围是非连续的。请看我的回答。 - Martijn Thé

12
您可以在蓝牙SIG中注册16位UUID: https://www.bluetooth.org/en-us/Pages/LoginRestrictedAll/16-bit-UUIDs-member.aspx 如果需要节省字节(出于空间、能源或其他性能原因),这会非常有用。 根据我对蓝牙规范的理解,您可以自由地使用蓝牙UUID基础“范围”之外的任何128位UUID:outside
 xxxxxxxx-0000-1000-8000-00805F9B34FB

我在引号中加入了“range”,因为你引用的规范中,16位到128位的转换公式表明左侧字节最高有效(大端序!)。请注意,如果您将UUID视为128位整数,则Bluetooth UUID Base“范围”不是连续的值范围。


您提供的链接目前不可用 :-( - Rakesh L

3

如果16位或32位UUID未被注册分配给您,则不得使用。

使用未注册的短UUID将导致设备与未来标准和其他设备的已注册号码不兼容。蓝牙认证将需要有效的号码。

未注册时,请生成自己的有效128位UUID:


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接