蓝牙基础知识进阶——Link Manager通用规则介绍



Link Manager Protocol(简称LMP)是用来建立和控制link的。它在整个蓝牙的架构中所处的位置如图0-1中红色矩形所示。



蓝牙基础知识进阶——Link Manager通用规则介绍_第1张图片

0-1 Link Manager在蓝牙架构中所处的位置


 


一、通用的规则


Q1LMPmsg是如何进行传输的


一般而言,我们认为LMPmsg是通过ACL-C来进行传输,在baseband那章中我们知道ACL-CACL-U是通过LogicalLink IdentifierLLID)域来进行区分的。LLID2bit大小,当他的值为11b’的时候,表示传输的是ACL-Clogical link。因此,他的纠错和帧错能力都是由ACL传输来实现的,他本身并没有包含对应的错误侦测和纠正的info


masterslave进行交换的时候,master发送一个msgslaveslave回应一个ackmaster。然而,我们并不能很准确地知道对方状态改变的时间。尤其是在负载比较重的情况下。

蓝牙基础知识进阶——Link Manager通用规则介绍_第2张图片


1-1 masterslave之间的lmp msg的传输示意图


         从图1-1可以看出,slave并不知道master是何时开始发送message的,所以,他无法知道Tdeliver的大小,master也不知道slave是何时开始回应ack的,所以,无法确定Tack的大小。不过有一点需要注意的是,每次message的发送间隔都不得大于TpollTpoll其实就是master和特定slave之间定义的传输最大时间间隔。


         Q2LMP的格式是什么样子的?


         LMPpacket的格式如下图1-2所示:


蓝牙基础知识进阶——Link Manager通用规则介绍_第3张图片

1-2 LMP PDUpacket格式


         从图中可以看出,他主要由三个部分组成:TID(Transaction ID)OpCode以及Payload


         TID:同一个传输的TID的值需要相同,若是这个传输是由master初始化的,则TID=0,反之,由slave初始化的传输TID则为1。这里所谓的传输,就是一次类似一次控制,比如连接的建立是一个传输,连接的断开是一个传输等。


OpCode有两种长度,分别是7bit15bit,如何来区分7bit15bit呢,当7bit的值为124~127之间的值时,就表示有ExtendedOpcode,也就是opcode的长度为15bit。因为LMP都是在ACL-C的逻辑link上传输的,一版而言他的packet type使用的是DM1的格式。当然也有一种另外,就是可以使用DVpacket type进行传输,它的条件就是有HV1SCO link存在,同时payload的长度小于9byte。当然此时DM1packet type仍然可以使用。所以,任何一个LMP PDU都不能超过一个DM1packet payloadlength


你可能感兴趣的:(android蓝牙分析)