【BLE Host UUID】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


0. 前言

在BLE Host协议中离不开UUID这个专有名词,若不能准确理解它,则影响对Host协议的理解深度。


1. UUID是什么?

UUID是Universally Unique Identifier的缩写。它是基于特定算法生成的128位长的数字,其目的是确保特定范围内这个数字的唯一性。
这个128位的数字通常以36个字符,以“-”为分隔符,以5段的形式表示(这样分段的原因后文说明),例如:

01234567-89AB-CDEF-0123-456789ABCDEF

UUID的定义标准为"ITU-T Rec. X.667"或“ISO/IEC 9834-8”。
前面说的“特定范围”,在标准中主要有以下三种:

  • Time-Based
  • Name Based
  • Random-number-Based

1.1 格式

128位的UUID的格式定义如下:
在这里插入图片描述对应到5段式表示方式来看:

  • 第1段的32bit和第2段的16bit及第3段的低12bit一起组成60bit的UUID“Time”
  • 第5段的48bit为UUID的“Node”
  • 第4段16bit由Variant和ClockSeq组成
    在这里插入图片描述
  • 第3段的Version表示是Time-Based,Name-Based,Random-number-Based
    在这里插入图片描述

2、BLE中的UUID

在BLE Host协议中定义了各种服务,数据类型等,那么交互的蓝牙设备通过什么来识别对方表示的是哪种服务或数据类型呢?UUID是一个好的选择,因为在蓝牙协议中各种服务或数据类型都是唯一的,用UUID建立一一映射即可。

需要注意的是,在蓝牙协议中,各种类型的UUID是统一编码的,而不是嵌套编码,即表示服务类型的UUID和表示数据类型的UUID等所有的UUID都是不一样的128位数值。打个比方:中国所有的小区和楼栋及房号统一编码到128位数值,即任意一个128位数值要么表示小区,要么表示楼栋,要么表示房间,不再存在A小区的01栋楼1102号房,B小区也有01栋1102号房。这种定义方式避免类型的重复定义。

2.1 16 bit UUID

128位表示的数值范围太大了,在蓝牙协议中用16位就已经足够表示各种数据类型的,再加上再无线网络上传输16位比传输128位的效率更高,因此蓝牙协议中建议使用16位数值来映射128位的UUID。
怎么建立一一映射呢?容易想到基地址-偏移地址的方式来表示:

0000XXXX-0000-1000-8000-00805F9B34FB

其中“000-1000-8000-00805F9B34FB”为基础UUID,“0000XXXX”为偏移UUID,即16 bit UUID值。

2.2 UUID类型

前文中的“000-1000-8000-00805F9B34FB”为SIG定义的基地址,16 bit UUID是在SIG的基础UUID之上再细分定义的,详情见SIG文档《16-bit UUID Numbers Document》。当然也可以自己申请128位UUID。

在《16-bit UUID Numbers Document》中主要分以下9类:
在这里插入图片描述

2.3 UUID申请

这些都是向SIG申请(需要费用)。

2.3.1 基于SIG Based UUID

参考2.2节的表,主要申请3类,如下:

  • SDO

在这里插入图片描述

  • Member
    在这里插入图片描述
  • Charateristics
    在这里插入图片描述
2.3.1 基于Sustom UUID

在这里插入图片描述

3. 总结

至此,我们知道UUID的来处(128bit,16bit),在BLE的作用(表示9大类数据类型),以及怎么申请自定义UUID。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值