前面一直都是在说理论上的内容,比较枯燥,在这一章,我们举个例子来进行具体说明
在这个例子里,我们用心率服务来说明,心率服务的数据如何发送给监控设备。
在这个图中,是一个设备上的心率服务,当然在这个设备上不只这一个服务,这个图可以看做是这个设备上服务的一小部分。客户端可以访问这里的数据。
可以看到属性由4个部分构成,分别是句柄,UUID,权限和数值。
服务有服务属性,特性有特性属性,描述符有描述符的属性。内容都不一样。
首先来看第一行的属性。
句柄为0x0021,这个属性包含了服务的声明,声明了一个HRS,Heart Rate Service,表示自己是一个心率的服务。UUID使用了标准的16位UUID,值使用了16位的UUID值,这个值是已经被定义好的,专门指心率服务。
然后看第二行的属性
第二行是一个特性,包含了特性声明,特性声明中包含了一下的内容
UUID也是一个标准的16位数值,表示这个属性是一个特性声明,也就是0x2803。数值部分是用来通知的,所以权限是只读。
再看第三行的属性
这个属性包含了特性值,在这个例子中,也就是心跳测试仪自己本身,所以特性值属性的组成是:UUID就是特性定义中的数值部分。全新是不可以读也不可以写,数值部分是心跳测试仪。
接下来看第四个属性,这个属性包含了一个CCCD。CCCD属性的组成为:UUID为CCCD的固定UUID。权限是可以被读取也可以被写入。数值部分是一个位,被设置为需要通知的。
然后是第五个属性,句柄值为0x002A,这个属性包含了特性声明,在这个例子里,保存了身体传感器位置BSL Body Sensor Location的特性。组成如下:UUID是一个标准的16位的UUID,用于特性声明。数值是只读的,特性值是002C.
最后是第六个属性,属性包含了特性值,就是身体传感器的位置。
有一些工具可以读取类似的表格。具体的使用方法会在后面的章节中介绍。