蓝牙协议栈之att(chapter 4)

一、概要

ATT(attribute)属性,宽泛来讲,属性是一条带有标签,可被寻址的数据,它是描述一个数据的固有特征
在ble中,属性域由三部分构成,属性句柄(handler),属性类型(type)和属性值(value)
蓝牙协议栈之att(chapter 4)_第1张图片
大家可能会问,属性是描述一个事务的固有属性,我们只需要属性类型和属性值就OK了,这样又节省带宽,又简介,这个属性句柄是什么鬼?
这里我们做一个假设,假设你的ble上有温度属性,属性类型 = “温度” 属性值 = 13
但是,如果有多个温度属性勒,这时候就需要属性句柄来发挥作用了,
属性句柄: 用来标识这是第几个温度属性。
属性类型: 应该不用解释了吧,温度啊,压强啊,功率啊,血压什么的都可以看着一个属性。但是这些属性类型不可能让我们各大商家去自主定义啊,肯定需要一个通用的规范啊,这时候SIG就出了熟悉的分配规则叫“蓝牙UUID“,
低功耗的蓝牙属性被SIG划分为如下几组范围:
蓝牙协议栈之att(chapter 4)_第2张图片

二、属性数据库,服务器,客户端以及属性许可

很多属性的集合称为属性的数据库,最小为6种属性(具体为GAP服务 《首要服务》,设备名的 《特性》,设备名的 《值》,外观的 《特征》《值》 和gatt的 《首要服务》 这6种),最大可到(u32种)。
既然有了属性的数据库,肯定要有为数据库服务的服务器和消费数据的客户端了。
上面我们已经引入了属性的服务器和客户端的作用了,这里就不废话了。
属性许可:许可是运用操作的属性权限,比如,可读,可写,即可读又可写,即不可读又不可写。
举个栗子:温度属性,温度属性是环境上的具体属性,只可读,不具有可写权限。

2.1、客户端的接入属性

客户端可以通过如下任何一种消息类型来访问属性数据的各个属性、
蓝牙协议栈之att(chapter 4)_第3张图片
在偌大的数据库中,如何提高客户端的访问速率勒???
1、客户端首先发起寻找请求来查找数据库中的属性。
2、发起读取请求去获取某一个属性值,这里会得到一个或者多个属性句柄以及属性的类型。
3、客户端对获取到的多个属性句柄发起写入操作。

三、属性协议

属性协议主要有以下6种基本操作构成、

蓝牙协议栈之att(chapter 4)_第4张图片

具体交互方式如下、
蓝牙协议栈之att(chapter 4)_第5张图片
蓝牙协议栈之att(chapter 4)_第6张图片
蓝牙协议栈之att(chapter 4)_第7张图片
蓝牙协议栈之att(chapter 4)_第8张图片

你可能感兴趣的:(Android)