一.完整过程
二.过程详细分析
1.广播数据----可连接的无定向广播包:ADV_IND
2.广播数据----主动扫描:扫描请求(SCAN_REQ) 扫描相应(SCAN_RSP)3.被动扫描数据发送连接请求
4.蓝牙配对(没有用到)
5.更新MTU与蓝牙有效数据长度
1.更新MTU为251=4字节L2CAP头部+247字节ATT数据
2.LL_LENGTH_REQ和LL_LENGTH_RSP实现payload长度修改,默认为27字节,最大251字节;
0x02 Exchange MTU Request 交换MTU
0x03 Exchange MTU Response 交换MTU
对于MTU的更新操作为
客户端设备向服务端设备发送交换MTU请求,提供客户端设备的MTU值。
服务端设备获知客户端的MTU值,并返回自己的MTU值。
两端设备都将设置较小的MTU值作为新的MTU值。
如果两端设备没有交换MTU,则使用默认的MTU值处理属性事务。
6.GATT客户端(主机)向服务器(从机)获取GATT服务
客户端Find By Type Value Request:查找属性句柄
服务器Find By Type Value Response:按类型值查找应答
7.GATT客户端(主机)向服务器(从机)获取Characteristic特征
客户端:Read By Type Request
服务器Read By Type Response
在GATT层有过介绍
特征值1描述符句柄0x1f,特征值1句柄0x20;特征值1: FFF1
特征值2描述符句柄0x23,特征值1句柄0x24; 特征值2: FFF2
8.通过向特征值特征配置描述符写0x0001设置为通知(指示0x0002)
9.连接参数更新
对比修改连接间隔前后
连接间隔20–25ms | 连接间隔20–25ms |
---|---|
![]() | ![]() |
10.进行数据传输
数据包的格式如下