蓝牙(四)LMP协议
1.序
链路管理器(link manager, LM)协议(LMP)是蓝牙协议中的一个重要组成部分。它主要完成三个方面的工作:
(1)处理、控制和协商发送数据所使用的分组的大小
(2)管理蓝牙单元的功率模式和PICONET中的状态
(3)处理链路和秘钥的生成、交换与控制
LMP协议用于链路的建立、链路安全和控制。链路管理器协议可以直接发送有效载荷而不用L2CAP方式来发送,同时通过有效载荷额L_CH字段的一个保留值(11)来区分不同的发送方式。在接收端,消息被LM过滤并解析而不再转发给更高层的协议;
如下图所示,在整个协议栈中,链路管理器(LM)位于链路管理器(LC)之上,且使用LC提供的链路进行通信。
2.LMP格式
注意第一个字节由7bit或15bit的opcode和1bit的 transaction ID(最低位)组成的。
示例:
3.过程规则与PDU
每个不同的过程都以一个时序图来进行描述;
2.1.通用响应消息
PDU:
示例:
2.2.鉴权
PDU:
示例:
2.3.匹配
PDU:
示例:
2.4.改变链路秘钥
PDU:
示例:
2.5.改变当前链路秘钥
PDU:
示例:
2.6.加密
PDU:
示例:
2.7.时钟偏移请求
PDU:
抓包示例:
2.8.时隙偏移消息
示例:
2.9.计时准确度信息请求
当设备从保持状态返回并延长保持时间时,该信息能够减少扫描窗口,而且该信息也可以在扫描sniff mode是数据分组最小化scan window。返回的计时准确参数是drift(250x10^6)和jitter(10us),这些参数对于一个特定的设备将保持不变,而且在多次请求中将保持一致。
PDU:
示例:
2.10.LMP版本
PDU:
示例:
2.11.支持特性
PDU:
示例:
PDU_EX:
2.12.主从角色切换
PDU:
示例:
2.13.设备名称请求
2.14.断开连接
PDU:
示例:
2.15.保持(hold)模式
PDU:
示例:
2.16.呼吸(sniff)模式
PDU:
2.17.休眠(park)模式
不再支持.
2.18.功率控制
PDU:
功率增加示例:
2.19.质量激励下信道在DH和DM间转换-Channel Quality Driven Data Rate Change
PDU:
示例:
2.20.服务质量(QOS)
链路管理器提供服务质量的能力。poll interval、Nbc两个参数,注意Nbc参数只有master发给salve才有意义;
协议接受流程如下:
协议发送抓包示例如下:
2.21.SCO链路
PDU:
2.22.eSCO链路
PDU:
2.23.多时隙分组的控制
PDU:
示例:
2.24.寻呼方案
PDU:
示例:
2.25.链路监视
3.建立连接
建立连接的过程如下所示。建立连接的过程如遇到page过程后,master必须通过发poll或null分组对salve进行轮询,之后在执行LMP的过程;