蓝牙学习-BLE入门

参考:《Bluetooth for Linux Developers Study Guide》

关于蓝牙Profiles(剖面|情景模式|配置文件)

A profile is a Bluetooth technical specification which describes device roles, processing algorithms, concurrency limitations, security requirements and state data definitions amongst other things. In particular, and this is the aspect of profiles we’ll be focusing on in this study guide, a Bluetooth LE profile defines a remote interface to a device’s state data and associated capabilities.

Profile是蓝牙技术规范,描述设备角色,处理逻辑,并行限制,安全规范和状态数据定义。最后一项就是这篇文章主要说明的profile的定义。BLE的profile定义了设备属性的远程接口以及相关联的能力。

如果上面的概念太抽象,我们用个具体的例子来帮助我们理解BLE的Profile。设想我们开发一个BLE设备,它有几个按键和显示屏。Profile设计者需要考虑如何暴露这个设备的能力给其他蓝牙设备,如手机。远端手机应该可以发送文字到我们的BLE设备并在显示屏上显示,同时如果手机按键我们的BLE设备应该也能收到通知。这是用就可以用Generic Attribute Profile或GATT。

GATT

GATT允许用户定义数据表来定义设备能力和状态,并且可以操作其中的数据。所以在上面的例子里我们需要定义button的状态数据和显示屏的状态数据,同时我们也需要定义操作方法如读、写button的状态数据和显示屏的状态数据。那么包括这些属性的数据就叫属性表。

GATT以整洁,灵活的方式组织状态数据,包括:Services,Characteristics和Descriptiors

Services:服务是最外围包装,表示设备的主要功能
Characteristic:特征是状态数据的一个个单独项目,包括数据类型,关联的值和支持的方法。特征是归属于一个服务的。服务是一个容器,可以包含很多个特征并且提供一个功能场景,而特征可以是多个服务的成员。
Descriptors:描述符属于具体的特征并且包含元数据比如特征类型的文本描述或者是特征操作方法的定义(比如,GATT提供一种操作叫通知,也就是特征数据变化时或者一种定时通知,但是当对端设备设置了具体的操作描述符,则通知的行为模式也就被确定了)。描述符是可选项。

Bluetooth SIG已经定义了一些服务,特征和描述符:https://www.bluetooth.com/specifications/assigned-numbers/

GATT Server:提供服务,特征和描述符的设备;

GATT Client:访问服务,特征和描述符的设备;

GAP

GAP是通用访问协议(Generic Access Profile)。GAP主要责任是定义设备间互相发现,连接,断开的协议。根据GAP的定义,BLE设备支持4种角色:

外设:提供发送广播包,邀请和同意中心连接的能力。比如耳机,鼠标,腕带等都是外设。

中心节点:提供扫描,接收广播包和发起连接的能力。比如手机,平板都是外设。

广播者:只提供发送广播包的能力;比如Beacon设备。

观察者:只提供扫描和接收广播包的能力;比如用于蓝牙定位的蓝牙网关或者软件。

注意:

* 外设不能建立连接,只能同意连接请求;外设也不能收听蓝牙广播;

* 任意设备只要对应配置都可以又是蓝牙外设,也是蓝牙中心节点;

* 蓝牙广播包只能在payload数据字段包括不超过31字节自定义数据;

ATT

ATT(Attribute Protocol)协议允许蓝牙连接中的GATT客户端和GATT服务端双向访问。比如,客户端可以通过ATT协议发现GATT服务端,请求当前状态,改变具体特征数据,开关通知(notification)或提示(indication)

GATT提供结构和文本数据,ATT提供通过蓝牙连接查询,更改这些数据的方法。应用程序一般不直接操作ATT。应用程序通过API接口初始化,发送,接收和编解码ATT的protocal data units(PDUs)

你可能感兴趣的:(蓝牙学习-BLE入门)