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

my_lbs属性表
这个属性表描述了一个名为“my_lbs”的自定义服务。my_lbs服务包含三个特征:
-
按钮特征
-
LED特征
-
MySensor特征
服务声明
属性表的第一行用服务声明属性声明了此服务。如前所述,声明属性的Type字段持有一个由SIG定义的唯一值,对于服务声明,UUID即为0x2800。声明属性无需写入操作,其权限总是只读。最后,服务声明属性的Value字段填入所声明服务的UUID。

按钮特征
接下来是按钮特征值属性,实际持有用户数据,此处即表示按钮是否被按下。
由于按钮特征支持Indicate(指示)操作,还需定义一个CCCD来使能按钮特征的指示功能。CCCD的UUID总是0x2902,权限为可读可写。在该属性表里可以看到已使能指示位字段。值得注意的是,CCCD不会像特征值属性那样在声明属性中被直接引用,但可以通过UUID区分出来。
即便CCCD没有被特征声明属性直接引用,中心设备也能根据句柄判断其所属特征,因CCCD列在该特征声明下一行,直到出现下一个特征声明(UUID 0x2803)前,表里的所有内容都归属于这一特征。

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

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

您的资助是我最大的动力!
金额随意,欢迎来赏!

浙公网安备 33010602011771号