1. GATT的基本概念
通用属性配置文件(GATT)是基于属性协议(ATT)定义的一种服务框架,主要用于蓝牙低功耗(BLE)技术中管理和传输数据。
核心功能:
1)服务与特征的框架
服务(Service):代表设备的一项功能(如心率监测、电池电量)。
特征(Characteristic):服务中的具体数据(如心率值、电量百分比)。
每个特征包含数据值、权限(读/写)和描述符(如通知开关)。
2)关键操作
发现服务/特征:设备连接后,客户端(如手机)扫描并识别服务端的可用服务。
读取(Read):客户端主动获取特征的值(如读取温度传感器的数值)。
写入(Write):客户端修改特征的值(如调节智能灯泡的亮度)。
通知(Notify):服务端主动向客户端推送数据(无需确认,如持续发送心率数据)。
指示(Indicate):类似通知,但需要客户端确认收到(确保关键数据可靠传输)。
广播配置:设置服务端如何广播自身的存在或特定数据(如Beacon设备)。
2. GATT与ATT
ATT提供的是基础的属性操作,比如读写、通知等。而GATT可能在这些基础上构建更复杂的服务框架,比如服务、特征和描述符的结构。
GATT具体如何使用ATT的功能?比如,GATT定义的服务和特征是如何通过ATT的属性来组织的。
每个服务可能是一个属性,特征也是属性,而描述符也是属性的一种。所以GATT的结构其实是基于ATT的属性协议来排列这些属性的。
操作方面,GATT的发现、读写等过程应该都是通过ATT的请求和响应实现的。比如,发现服务可能涉及ATT的“Read By Group Type”请求,用来查找服务列表。特征的发现可能用“Read By Type”请求。读取和写入特征值直接用ATT的Read和Write命令
通知和指示功能也是基于ATT的,比如特征值的通知是通过ATT的Handle Value Notification,而指示则是Handle Value Indication,需要客户端确认。所以GATT的高层功能实际上是对ATT操作的封装和扩展。
权限和安全性方面,GATT可能利用ATT的属性权限设置,比如需要加密或认证才能访问某些属性。这也是依赖ATT的一个方面。
2.1 底层协议的依赖
2.2 数据结构的依赖
2.3 操作依赖
2.4 权限与安全依赖
2.5 分层模型
GATT(应用层逻辑)
│
└── ATT(属性协议,数据层)
│
└── L2CAP(逻辑传输层)
│
└── 蓝牙物理层(PHY)