GATT协议:
GATT是服务端/客户端模型,通常外设是server端,提供不同的服务,不同的事务被区分成不同的服务;而中央设备是client 端,通过操作UUID或者handle, 进行读写,或者监听通知的操作。
GATT相关术语
特征值 characteristic
1.特征值的表征:区分特征值有唯一的UUID,或者句柄(server端属性表的索引)
2.特征值的权限:write 可读,read 可写,notify 可监听通知,write no response 可读(不应答的方式)
3.对特征值的操作:
write 有两种方式:notify 和 indication 应答或者不应答
read 可以通过UUID读取特征值,也可以通过特征值的句柄读取特征值
notify 通知,可以在客户端不主动请求的情况下,服务端主动推送数据。需要客户端(接收端)对该特征值进行监听
流程(个人理解):
服务端在属性表添加 notify 权限的特征值,此时会在该handle +1 多一个cccd
服务端写入:
对该handle写入数据即可
客户端接收:
客户端开启对特征值的通知监听,需要向该特征值的handle+1,写入01 00(notify),写入02 00(indication)
客户端取消对特征值的通知监听,需要向该特征值的handle+1,写入00 00
技巧:利用notify给主机发数据,可以避免在外设也实现一套 GATT client 的代码