原文地址
https://note.youdao.com/s/WzgVsHTx
通常我们所说的蓝牙分为两种:
服务特征值和描述符的关系
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qcFUevFE-1663402674358)(https://note.youdao.com/yws/res/19073/WEBRESOURCE8649d31b1b8a6868a5bf2ec30b8bd71f)]
服务包含特征值,描述符修饰特征值
特征值个人理解是一个管道,管道拥有权限,可读可写,通知权限。
两个蓝牙设备可以通过这个管道根据他们的权限进行传输数据。
特征值既然是两个设备之间传输的管道,那么两个蓝牙设备直接就有了关系客户端和服务端的关系
拥有服务和特征值的就是gatt server
查询访问特征值的就是gatt client
设备数据传输通道有了如何建立连接呢?tcp是通过ip和端口连接,蓝牙呢?
一个设备既可以同时成为中心设备和从机设备,只要蓝牙协议栈支持两个模块
一个GAP Periphereal在被连接后,就扮演GATT Server的角色,GAP Central设备正在连接一个GAP Periphereal设备那么他就成为了一个GATT Client的角色。
需要理解一个点是,GAP Periphereal或者Central和GATT Client和Server,是两个独立的个体。一个GAP Central设备在连接了一个设备之后,他还可以承担GATT Server的角色
* The Atribute Protocol,是蓝牙协议栈的一个分层,允许GATT Client和GATT Server之间互相通信。发现远程服务的特征值,关闭打开notify
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MNFcyjqd-1663402674359)(https://note.youdao.com/yws/res/19336/WEBRESOURCEd1dc17d29a174a386e16f681fc23724a)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-joyGcm31-1663402674360)(https://note.youdao.com/yws/res/19348/WEBRESOURCEdaf38973aeed63f13404ea7710df27f9)]
参考:
(蓝牙参考资料,核心规范下载地址) https://www.bluetooth.com/develop-with-bluetooth/build/