本文主要是介绍nrf51822蓝牙笔记之GAP(通用属性配置文件)解读,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
该说明书定义了通用属性配置文件,该文件描述了一个使用属性协议的 一个服务框架,该服务框架用来在一对设备间发现服务,读写特征值。
1 介绍
1.1 作用域
通用属性配置文件定义了一个使用属性协议的服务框架,该框架定义了一个服务的流程、格式和它的特性.流程的定义包括发现,读写,通知和指示特性.
2 配置文件概观
通用属性配置文件被应用和其他的配置文件调用,所以客户端才能通过服务传递信息.每个服务包含了许多属性,通用属性配置文件定义了怎样使用属性协议层去发现,读写,并且获得这些属性的标志,就像配置广播的属性.
2.1 协议栈

图2.1展示了被这个配置文件是使用的对等协议
2.2 配置和角色
执行这个配置文件的设备可以被定义为客户端和服务器端.
客户端---能够向服务器端发送命令和请求,并且能够接收服务器端发送的应答,指示和通知.
服务器端---与客户端功能相对.
2.3 属性协议
通用属性配置文件需要执行属性协议和属性操作码.
2.3.1 概观
通用属性配置文件使用属性协议来以命令,请求,应答,指示,通知和验证的形式来传递数据。
在一个协议数据单元中,包含以下数据。

操作码包含指定的命令,请求,应答,指示,通知或者验证码和身份鉴别标志.属性参数中包含了命令,请求的数据或者从指示,通知,应答用返回的数据。
属性协议的命令和请求的值存储在服务器端设备的属性中.一个属性由四部分组成,属性句柄,属性类型,属性值,和属性权限。

属性句柄是一个特定属性的索引.
属性类型是一个描述属性值的UUID.
属性值是被属性类型描述和被属性句柄索引的数据.
属性权限是不能通过属性协议读写的部分属性.它被用来定义给定的属性是否具有读写权限.
2.4 通用属性配置文件层级
2.4.1 概观
协议栈的最高层是配置文件,配置文件包含了填充使用案例的一个或多个服务.每一个服务包含许多的特性和其他服务的调用.每一个特性包含一个值并且可能包含该值的可选择信息.服务、特征值、和特征值包含的内容,这些东西包含的数据全部被存储在服务器的属性中。

2.4.2 服务
服务是数据和相关行为的集合(完成特定的功能).在GATT中,服务被服务定义所定义。一个服务定义包含关联服务,强制特性和可选特性。服务或特性中的定义或声明都是由属性完成的。
2.4.3 特性
特征是一个用来描述服务属性和值是如何访问的配置信息和的值是怎样被显示和代表的.在GATT中,a characteristic is defined by its characteristicdefinition. A characteristic definition contains a characteristic declaration,characteristic properties, and a value and may contain descriptors thatdescribe the value or permit configuration of the server with respect to thecharacteristic.
2.5 广播配置
对于LE物理连接,广播配置是当服务器端处于广播模式进程是,客户端向服务器端指示哪个特性值会被在广告数据中别广播的一种方法.
3 服务互操作性需求
3.1 服务定义
一个服务定义必须包含服务的声明,可能包含includedefinitions和特性定义.
服务的声明是一个具有根据<>或者<>中特定属性了类型的属性.

3.2 包含定义
包含定义必须包含一个仅有的包含声明
包含声明是一个具有根据<>中特定属性类型的属性.

3.3 特性定义
特性定义必须包含一个特性声明,一个特性值声明,可能包含特性描述符声明.
以上的声明被包含在独立的属性中.特性值的声明必须紧跟在特性的声明后面.
3.3.1特性声明
特性声明是一个具有根据<>中特定属性类型的属性.

特性声明中的属性值是只读的

一个服务可以有多重的特性定义以相同的特征UUID.
在一个服务定义里面,一些特性是强制的,并且这些特性必须位于任一个可选特性之前,位于包含特性之后.
3.3.1.1 特性性能
特性性能位字段定义了特性值是怎样被使用的,或者特性描述符是怎样被获取的.如过下列表中的一些位被置位,描述的行为将会被允许.

3.3.1.2 特性值属性句柄
特性值属性句柄字段包含了特性值的属性的属性句柄.
3.3.1.3 特性UUID
特性UUID是一个16位或者128位的蓝牙UUID,用来描述特性值的类型.
3.3.2 特性值声明
特性值声明包含了这个特性的值,它是特性声明后的第一个属性.

3.3.3 特性描述符声明
特性描述符用来包含特性值的相关信息.
每一个特性描述符都被一个特性描述符UUID定义.
3.4 通用属性配置文件属性类型概要

4 功能要求
每一个功能都被映射到一个进程或者副进程,这些进程和副进程描述属性协议是怎样被使用来完成这些功能的.
4.1 功能支持和进程映射
下表描述了功能和进程的映射关系,并且描述了进程是可选的还是强制的.


这篇关于nrf51822蓝牙笔记之GAP(通用属性配置文件)解读的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!