GATT(二)

三、SERVICE INTEROPERABILITY REQUIREMENTS

       Server、service以及service的组件之间的关系如下图所示:

 

举例:

3.1 SERVICE DEFINITION

service definition应该包含一个service declaration,可能包含include definitions 和characteristic definitions,发现下一个service declaration或者Attribute Handle达到最大值则表示service definition结束了;

Service definitions在server端是按照Attribute Handle排序的;

所有的include definitions应该在service declaration之后,在所有的characteristic definitions之前,一个service definition可能有0个或者多个include definitions;

所有的characteristic definitions应该在最后一个include definition之后(或者没有include definitions的情况下就在service declaration之后),一个service definition可能有0个或者多个characteristic definitions;

       service declaration的Attribute Type可以设置为«Primary Service»(即0x2800)或者«Secondary Service»(0x2801),Attribute Value应该是16bit或者128bit的UUID,当有多个service存在时,service declarations使用16bit UUID的service分成一组,service declarations使用128bit UUID的service分成另一组

注意:

(1)一个设备可能有多个service definitions,并且多个service definitions可能会有相同的service UUID

(2)虽然Service definitions在server端是按照Attribute Handle排序的,但是server上的Service definitions可能以任何顺序存在

3.2 INCLUDE DEFINITION

include definition只能包含一个include declaration;

include declaration的Attribute Type只能设置为«Include»(即0x2802);

Attribute Value包括included service Attribute Handle、End Group Handle、service UUID(注意: Service UUID只能是16-bit Bluetooth UUID)

注意:禁止循环嵌套(例如:service A中include service B,service B里面又include service A),如果client检测到循环嵌套应该终止ATT Bearer

3.3 CHARACTERISTIC DEFINITION

一个characteristic definition包含一个characteristic declaration、一个Characteristic Value declaration、可能包含characteristic descriptor declarations;发现下一个characteristic declaration或者service declaration或者Attribute Handle达到最大值则表示characteristic definition结束了;

Service definition中的Characteristic definitions是按照Attribute Handle顺序排列的;

Characteristic Value declaration应该在characteristic declaration之后,所有的characteristic descriptor declarations都应该在Characteristic Value declaration之后,characteristic descriptor declarations的顺序不重要;

一个characteristic definition可能连接多个Characteristic Values形成一个聚合的Characteristic Value,这样通过读写一个聚合的Characteristic Value同时操作多个Characteristic Values,这种类型的characteristic definition与普通类型的characteristic definition一样,应该使用对聚合characteristic definition唯一的characteristic UUID,聚合characteristic definition可能还包含一个聚合characteristic format descriptor用来描述聚合Characteristic Value的格式

3.3.1 Characteristic Declaration

characteristic declaration的Attribute Type是«Characteristic»(即0x2803),Attribute Value 由Characteristic Properties、Characteristic Value Attribute Handle和Characteristic UUID组成

Characteristic Properties、Characteristic Value Attribute Handle和Characteristic UUID含义如下:

一个service definition内,有一些characteristics是强制的,有一些characteristics是可选的,强制的characteristics应该位于include declarations之后,且在可选的characteristics之前,强制的characteristics或者可选的characteristics内部都是没有顺序的,只是需要将16-bit Bluetooth UUID分成一组,将128-bit UUID分成一组

(1)Characteristic Properties:这个参数主要描述Characteristic Value如何使用或者如何访问characteristic descriptors,每个bit位的含义如下图所示,多个bit位可以互相组合

(2)Characteristic Value Attribute Handle:即Characteristic Value declaration中的Attribute Handle

(3)Characteristic UUID:即Characteristic Value declaration的Attribute Type,使一个16-bit Bluetooth UUID或者128-bit UUID

3.3.2 Characteristic Value Declaration

Characteristic Value declaration包含characteristic的value,Characteristic Value declaration紧跟在characteristic declaration之后,一个characteristic definitions都有一个Characteristic Value declaration,具体组成如下图所示:

3.3.3 Characteristic Descriptor Declarations

Characteristic descriptors主要包含一些Characteristic Value的相关信息

Characteristic descriptors位于Characteristic Value declaration之后,多个Characteristic descriptors之间没有顺序要求。

3.3.3.1 Characteristic Extended Properties

Characteristic Extended Properties declaration是用来定义额外的Characteristic Properties的,如果Characteristic Declaration的Characteristic Properties中Extended Properties bit设置为1,则Characteristic Extended Properties应该存在,但是只能有一个Characteristic Extended存在

Characteristic Extended Properties declaration的Attribute Type是«Characteristic Extended Properties»(即0x2900)

Attribute Value应该设置为Characteristic Extended Properties Bit,如下图所示,可是同时设置多个Characteristic Properties 

 

3.3.3.2 Characteristic User Description

Characteristic User Description declaration主要定义一个可变长度的UTF-8字符串,用来描述Characteristic Value,如果为Characteristic Extended Properties Bit中的Writable Auxiliary设置为1,则Characteristic User Description declaration就可以written,在characteristic definition只能有一个Characteristic User Description存在

Characteristic User Description declaration的Attribute Type是«Characteristic User Description»(即0x2901) 

3.3.3.3 Client Characteristic Configuration

Client Characteristic Configuration declaration定义client可能会如何配置characteristic,对于已经bonded的设备在多次连接之间Client Characteristic Configuration descriptor的值应该是不变的,当连接non-bonded设备时,Client Characteristic Configuration descriptor的值应该设置为默认值(即0x0000),在characteristic definition中只能有一个Client Characteristic Configuration declaration存在

       在server上每个client都有自己的Client Characteristic Configuration,read Client Characteristic Configuration只能显示与当前client相关的配置,write Client Characteristic Configuration也只能修改与当前client相关的配置

Client Characteristic Configuration declaration的Attribute Type是«Client Characteristic Configuration»(即0x2902)

 

Client Characteristic Configuration bits定义如下: 

3.3.3.4 Server Characteristic Configuration

Server Characteristic Configuration declaration定义server可能会如何配置characteristic,在characteristic definition中只能有一个Server Characteristic Configuration declaration存在

注意:client可能通过wirte配置这个configuration descriptor,配置后对所有的client都会起作用

Server Characteristic Configuration declaration的Attribute Type为«Server Characteristic Configuration»(即0x2903)

 

Server Characteristic Configuration bits定义如下: 

3.3.3.5 Characteristic Presentation Format

Characteristic Presentation Format declaration定义Characteristic Value的格式,如果在characteristic definition中有超过1个Characteristic Presentation Format declarations存在,那么肯定要有一个Characteristic Aggregate Format declaration存在

characteristic format value由5部分组成:format、exponent、unit、name space和 description

Characteristic Presentation Format declaration的Attribute Type是«Characteristic Format»(即0x2904)

 

Characteristic Presentation Format descriptor的Attribute Value field字段定义如下: 

(1)Format:定义Characteristic Value中数据的类型,如果format定义的数据类型不是8bit的整数倍,则有效数据应该放在低位,其他数据设置为0,如果format定义的数据类型不足8bit,则占用8bit,取值如下:

注意:

当编码IPv4 address时,应该使用uint32格式,当编码IPv6 address时,应该使用uint128格式,当编码Bluetooth BD_ADDR时,应该是用uint48格式;

duint16是两个uint16 values串联在一起

 

(2)Exponent:这个字段是一个signed integer,只有当Format设置为integer类型时才有效

       实际值 = Characteristic Value * 10Exponent

       例如:Characteristic Value = 23,Exponent = 2,则实际值是23 * 10的平方=2300;Characteristic Value = 3892,Exponent = -3,则实际值是23 * 10的-3次方=3.892

(3)Unit:这个参数是蓝牙Assigned Numbers中定义的一个UUID

(4)Name Space:蓝牙Assigned Numbers中的名字字段

(5)Description:蓝牙Assigned Numbers中的描述字段

 

3.3.3.6 Characteristic Aggregate Format

Characteristic Aggregate Format用来定义聚合Characteristic Value的格式,一个characteristic definition中只能有一个Characteristic Aggregate Format declaration存在,Characteristic Aggregate Format value是由至少2个Characteristic Presentation Format declarations的Attribute Handles组成的链表,链表中每个Attribute Handles指向一个Characteristic Presentation Format declaration.

 

3.4 GATT PROFILE ATTRIBUTE TYPES总结 

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值