LLCP Overview
??LLCP(Link Layer Control Protocol),链路控制协议用于对链路间的相关参数或状态进行协商和控制。其包括诸如链接参数更新,加密等流程(Procedure),Procedure即LL Control PDU的交互组成的流程或步骤。如右表所示为Spec 4.0至5.0的所有Procdure 。
Link Layer Control
??Link Layer Controller Procedure主要是对LL Control PDU交互的描述,Spec中一般对一个流程的描述可以分为5点:
- 目的(Purpose)
- 发起方式(Initiator)
- 交互过程(Procedure)
- 完成方式(Complete)
- 条件限制(Condition)
??Link Layer Controller Procedure与固件的实现强相关,固件里的实现可能会表现出Spec描述之外的行为,由于双方发起的流程间没有明确规定限制条件,因此可能会导致最终使用的参数和预期的不一致,或导致链路断开等问题。
Procedure Collisions
??由于LL Control PDU的交互并非阻塞式的,因此slave和master发起流程时可能会导致冲突,如发起相同的流程或发起不兼容的流程。不兼容的流程指的是LL Control PDU包含Instant的流程。
??一个设备在响应上一个不兼容流程的LL Control PDU之后不应重新发起新的不兼容流程。
?如果设备为master,则在遇到流程冲突的情况时将使用LL_REJECT_EXT_IND或LL_REJECT_IND PDU来拒绝slave,并执行master发起的流程。slave则应该接受并执行master发起的流程。
Procedure Timeout
??流程超时规则适用于所有的流程,但是ConneCtion Update和Channel Map Update流程并不采用该规则。
??当发起流程时,流程响应超时定时器T将会重置并开启,当流程完成时,T将会被关闭。如果T计时到达40s,Controller将认为ACL connection丢失并通知Host。
Procedure Instant
??Instant指的是流程生效时的connEventCount,如参数更新生效时,链路信道更新生效时,connEventCount指的是建立连接后对每个connection event的计数。
??当slave接收到包含Instant的PDU时(Instant-connEventCount) modulo 655636小于32767时(公式中的connEventCount指收到LL Control PDU时的connEventCount),slave将监听所有的connection events直到确认master接收到该PDU的响应或connEventCount等于Instant。
the slave shall listen to all the connection events until it has
confirmation that the master has received its acknowledgment of the PDU or connEventCount equals
Instant.
??当slave接收到包含Instant的PDU时(Instant-connEventCount) modulo 655636大于32767时(Instant在过去),此时将认为链路已经丢失。
Link Layer Control Procedure
Version Exchange
Purpose:Exchanged parameters for version information
Condition:v4.0, Connection state
Initiator:Master or Slave, Host request or Control autonomously(自主得)
Complete:LL_VERSION_IND has been received from the peer device
Special & Constraint:
一个设备在一次连接只能发起一次LL_VERSION_IND