网站建设江西有多少家,html所有标签大全,常德网站制作建设,鲜花网网站开发的目标搞定蓝牙——第四章#xff08;GATT协议#xff09; 原理介绍层次结构server和client端Attribute ESP32代码 文章下面用的英文表示#xff1a; server和client#xff1a;服务端和客户端 char.#xff1a;characteristic缩写#xff0c;特征 Attribute:属性 ATT:Attribut… 搞定蓝牙——第四章GATT协议 原理介绍层次结构server和client端Attribute ESP32代码 文章下面用的英文表示 server和client服务端和客户端 char.characteristic缩写特征 Attribute:属性 ATT:Attribute Protocol缩写
原理介绍
GATT是蓝牙协议栈的一种协议它定义了ble设备数据通讯的方法设备角色、数据格式、服务发现、安全加密等等也就是说两个ble设备是通讯的规范就是GATT协议。GAP也是一种协议但是它是规范通讯之前的广播、连接等。
层次结构
GATT的层次结构是这样的。 一个Profile包含多个server与server和client中的server不是一个意思一个server包含多个char.profile只是一个定义表示某个功能例如测心率、测血氧等server是一个服务也表示某个功能不传递实际的数据。char.是一个特征可以理解为数据存放的地方。char.里面包含了属性、值和描述符属性定义了访问权限值就是一个要传递的数据描述符描述了这个数据、例如单位。所以只有server和char.是实际运行的组件。
server和client端
Server端和client端这个也是GATT定义的一般server端提供服务要传输的数据也在服务里面client读取server的服务也就是获取数据。有的服务可以接收client的数据例如通知和指示。
Attribute
因为GATT是一种通讯规范那通讯的数据是怎么样的呢你想哈好多地方都用到了蓝牙技术但是应用场景差异有些很大所以这种数据格式必须能满足所有这些应用场景。于是SIG蓝牙技术联盟就定义了一个统一的数据格式称为Attribute属性也是ble传输最小单元了每次最少发一个数据就是一个Attribute。 Attribute的结构是怎么样的呢。看图。 一个Attribute有四种类型的数据一个一个展开说明。 Handle因为ble发送数据都是一个一个Attribute发送的所以需要加一个表示符来表示这个Attribute可以看作为这个Attribute的名字这个handle就是这个东西。 Type表示Attribute的类型使用16bit的UUID来表示例如0x2800表示这个一个server声明的Attribute更多看下图。 Value表示这个Attribute的值这个值有两种情况如果从上面的Type中发现这是一个server声明的Attribute或者是char.声明的Attribute那么这是一个UUID,这个可以自己定义也可以用通用的如果是其他那么就是一个数据例如心率、血氧。 Permissions权限也就是运行client对于这个Attribute的Value操作权限因为server声明和char.声明是UUDI所以该值为只读。
Ble是按照Attribute的格式来定义一个一个的数据的在server端需要配置这一些Attribute也就是Attribute表这个表必须包含server声明、char.声明和char.值。 例如看看ESP32中的Attribute表对于应用而言维护这张表非常重要
ESP32代码