Attribute table(属性表)

为更好地可视化属性在GATT服务器中的存储方式,让我们来看看一个属性表的实例。属性表就是属性在GATT服务器中的实际存储结构。下方这个属性表来自本课第二个练习中将要创建的一个自定义服务。

image

my_lbs属性表

这个属性表描述了一个名为“my_lbs”的自定义服务。my_lbs服务包含三个特征:

  • 按钮特征

  • LED特征

  • MySensor特征


服务声明

属性表的第一行用服务声明属性声明了此服务。如前所述,声明属性的Type字段持有一个由SIG定义的唯一值,对于服务声明,UUID即为0x2800。声明属性无需写入操作,其权限总是只读。最后,服务声明属性的Value字段填入所声明服务的UUID。

image


按钮特征

接下来是按钮特征值属性,实际持有用户数据,此处即表示按钮是否被按下。

由于按钮特征支持Indicate(指示)操作,还需定义一个CCCD来使能按钮特征的指示功能。CCCD的UUID总是0x2902,权限为可读可写。在该属性表里可以看到已使能指示位字段。值得注意的是,CCCD不会像特征值属性那样在声明属性中被直接引用,但可以通过UUID区分出来。

即便CCCD没有被特征声明属性直接引用,中心设备也能根据句柄判断其所属特征,因CCCD列在该特征声明下一行,直到出现下一个特征声明(UUID 0x2803)前,表里的所有内容都归属于这一特征。

image


LED特征

紧接着是LED特征,其定义与按钮特征类似,但只支持Write操作,因此没有CCCD。该特征只有声明属性和特征值属性两项。

image


MySensor特征

最后是MySensor特征的定义,其只支持Notify(通知)操作。可看到MySensor特征的CCCD已使能通知位字段。

image

posted @ 2025-11-26 11:40  毛豆*_*  阅读(21)  评论(0)    收藏  举报