文章目录[隐藏]
一、在server端编写维护属性表(Attribute Table)
属性表一般在server端维护(设备端也称作:peripheral,server,slave。与之对应的手机端,称作:central,client,master。),一般在设备端编写MCU程序,维护属性表,蓝牙芯片MCU厂商(比如TI CC26xx)都有自己的SDK,我们的精力主要用在维护属性表,属性表编写好后,设备注册,蓝牙连接成功,就可以进行通信,收发数据了。
属性表的内容一般就是属性的内容,对应4个部分,attribute handle,attribute type,attribute value,attribute permissions。
二、属性表举例:
1)第一行,定义了一个service,UUID = 0xFF00;
2)第二到第四行,定义了第一个特性characteristic,UUID = 0xFF01,它的property为可写,无需应答,描述内容放在char1中;
3)第五到第八行,定义了第二个特性characteristic,UUID = 0xFF02,它的property为可写,具有notify功能,描述内容放在char2中;
4)手机端和设备端是通过特性characteristic UUID来收发数据的,我们在定义具体的characteristic UUID的时候,一般都是从功能码0x2803开始,到功能码0x2901结束;
在nRF Connect蓝牙调试APP中看到的情况:
三、具体理解过程
Attribute Type 分类
1)关于attribute type的定义,其实就是UUID,由2个byte构成。在Bluetooth SIG中,把UUID的范围(0x0000 - 0xFFFF)划分为若干个区域,即把attribute type类型分为几种类型,详见《16-bit UUID Numbers Document》:
1.GATT Declaration: 0x2800 - 0x2803, 声明类型;
2.GATT Descriptor:0x2900 - 0x290F,描述类型;
3.GATT Service: 0x1800 - 0x1852,服务类型;
4.GATT Unit: 0x2700 - 0x27C5,单位类型;
5.GATT Characteristic and Object Type: 0x2A00 - 0x2BD9,特性值类型;
说明:
1)我个人理解,1,2,3,4类型attribute type为功能型UUID,通过这些UUID完成某种功能,比如要添加一个描述,可以使用0x2900开始的UUID,他对应的值就描述的内容;
2)我个人理解,5类型attribute type为数据型UUID,通过这些UUID实现短数据通信,比如要添加物理量星期,可以使用0xFF00开始的UUID,他对应的值就是星期,手机端和设备端就是通过这个UUID实现数据通信;
版权声明:本文为CSDN博主「hill_guo」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/hill_guo/article/details/121605863
暂无评论