Link Manager Protocol Specification(4.1)

4 Procedure Rules

4.1 Connection Control

4.1.1 Connection Establishment

在paging过程以后,LMP要查询clock offset,LMP版本, 支持的features,name request and/or detach

《Link Manager Protocol Specification(4.1)》

当已page的设备想建立一个LM以上层的连接时,可以发送
LMP_host_connection_req,当另一端收到这个PDU时,会将这个incoming connection通知到host。远端可以通过发送
LMP_accepted或者
LMP_not_accepted来接收或者拒绝这个连接。或者,如果slave需要role switch, 在它收到
LMP_host_connection_req后需要发出
LMP_slot_offset
LMP_switch_req。如果role switch失败,LM可以继续进行连接,除非由于limited resources导致不支持这个连接,这时可以发送
LMP_detach带error code
Remote Device Terminated Connection due to Low Resources(0x14)来结束连接。如果role switch成功,原来的slave需要发送
LMP_accepted或者
LMP_not_accepted来回复
LMP_host_connection_req,注意此时的TID为0.

《Link Manager Protocol Specification(4.1)》

《Link Manager Protocol Specification(4.1)》

如果paging设备收到了
LMP_not_accepted作为对
LMP_host_connection_req的回复,那么它会立即断开链路,见4.1.2节。

如果
LMP_host_connection_req被接收,那么LMP的安全机制可能将被触发,主要有pairing, authentication, encryption。如果一个设备不打算触发安全机制,那么它将发送
LMP_setup_complete。如果双方设备都已发送
LMP_setup_complete,那么ACL-U逻辑链路就建立成功。

《Link Manager Protocol Specification(4.1)》

《Link Manager Protocol Specification(4.1)》

4.1.2 Detach

两个蓝牙设备之间的连接可以由master和slave任一一方任意时间发起断开,命令包含一个断开原因的error code.

《Link Manager Protocol Specification(4.1)》

连接发起者LM可以暂停ACL-U链路上的传输。
后面讲了讲断开后的时序情况,以及LT_ADDR断开后可以重用。

《Link Manager Protocol Specification(4.1)》

在air log中也可以看到只有1条

《Link Manager Protocol Specification(4.1)》

4.1.3 Power Control

如果接收到的信号特征与之前预期值相差太大,就会去增大或降低远端设备的传输功率。设备的传输功率是它的物理链路特性,会影响到基于这个物理链路上的所有逻辑链路。请求设备的默认ACL-C上的功率控制只会影响它相关的物理链路,而不会影响连接到别的slave上的物理链路的功率等级。
有两种功率控制机制:传统功率控制与增强型功率控制,都会在后续4.3节详细描述。支持增强型功率控制的设备必须也支持传统功率控制。

《Link Manager Protocol Specification(4.1)》

在设备page以后LM支持的feature回复之前的任意时刻,都可以用传统功率控制机制发出功率调节请求。在LM支持的feature回复之后,如果双方都支持增强型功率控制,那么只有增强型功率控制可用,否则,如果任一设备支持传统功率控制,就只能用传统功率控制了。

如果设备的feature mask显示它不支持
power control requests,那么在LM已经回复feature以后,它将不能发送功率控制请求。在此之前,功率调节可以发送,接收者如果不支持功率控制的话,可以用
LMP_max_power来回复
LMP_incr_power_req,用
LMP_min_power来回复
LMP_decr_power_req。或者回复带error code
Unsupported LMP Feature(0x1A)
LMP_not_accepted

一旦接收到
LMP_incr_power_req或者
LMP_decr_power_req后,输出功率将增大或者减小一步,具体步长见radio部分协议。

《Link Manager Protocol Specification(4.1)》

如果接收
LMP_incr_power_req的设备已经在最大功率,那么回复
LMP_max_power。发送者只有在发送降低功率至少一次后才可再发送增加功率。如果接收
LMP_decr_power_req的设备已经在最小功率,那么回复
LMP_min_power。发送者只有在发送增加功率至少一次后才可再发送减少功率。

《Link Manager Protocol Specification(4.1)》

《Link Manager Protocol Specification(4.1)》

LMP_incr/decr_power_req中有一字节留待后用,值为0可忽略。

后面具体讲了增强型功率控制,用的上再看吧。。

4.1.4 Adaptive Frequency Hopping

AFH是用来优化物理链路性能的,减少ISM band上其他设备的物理链路带来的干扰。AFH只在连接模式下可用。

《Link Manager Protocol Specification(4.1)》

LMP_set_AFH包含3个参数:
AFH_Instant,
AFH_Mode
AFH_Channel_Map
AFH_Instant用来表示哪个hopset即将启用,由蓝牙时钟值来控制,对两端都适用。

。。。

4.1.5 Channel Classification

master可以像支持AFH的slave查询信道分类信息。
支持AFH_classification_slave feature的slave可以进行信道分类,并根据它的AFH_reporting_mode来上报。master必须用LMP_channel_classification_req来控制AFH_reporting_mode, 然后slave通过LMP_channel_classification来上报信道分类信息。
slave按对上报多个信道信息,分类有good, bad, unknown。如果一对信道的一个是good一个是unknown,那么上报good。如果一个bad一个unknown,那么就是bad。一个good一个bad的情况自定义。

《Link Manager Protocol Specification(4.1)》

LMP_channel_classification_req有3个参数:
AFH_Reporting_Mode,
AFH_Min_Interval
AFH_Max_Interval。在
AFH_reporting_disabled模式下,slave是不能产生信道分类报告的。
AFH_Min_Interval定义了从两个
LMP_channel_classification报告之间的最小时间。
AFH_Max_Interval定义了slave去检测radio environment的变化产生
LMP_channel_classification报告的最大时间。
AFH_Max_Interval必须大于等于
AFH_Min_Interval

AFH_Reporting_Mode决定slave是在
AFH_reporting_disabled模式还是在
AFH_reporting_enabled模式,默认值是
AFH_reporting_disabled模式。

以下情况
AFH_Reporting_Mode会自动切换到
AFH_reporting_disabled模式:

  • 在baseband层建立连接
  • master-slave role switch
  • 进入park模式
  • 进入hold模式
    以下情况AFH_Reporting_Mode会自动恢复到之前模式:
  • 从park模式退出
  • 从hold模式退出
  • master-slave role switch失败

4.1.5.1 Channel classification reportin enabling and disabling

master通过发送LMP_channel_classification_req,把AFH_Reporting_Mode置为AFH_reporting_enabled模式来启动信道分类报告。
当slave的信道分类被master启动后,它会根据前一次LMP_channel_classification_req的参数来发送LMP_channel_classification PDU。如果slave的信道信息没有变化,那么无需发送LMP_channel_classification PDU。
master通过发送LMP_channel_classification_req,把AFH_Reporting_Mode置为AFH_reporting_disabled模式来关闭信道分类报告。

《Link Manager Protocol Specification(4.1)》

《Link Manager Protocol Specification(4.1)》

4.1.6 Link Supervision

每个物理链路都有一个时钟来进行监督。这个时钟会检测设备移出区域或者被干扰而block造成的物理链路link loss,设备掉电,或者其他的失败情况。

《Link Manager Protocol Specification(4.1)》

《Link Manager Protocol Specification(4.1)》

4.1.7 Channel Quality Driven Data Rate Change(CQDDR)

一个给定类型的包的throughput取决于RF信道质量。接收方的信道质量检测机制可以动态的控制远端传输来的包的类型从而优化throughput。设备A发送LMP_auto_rate来提示设备B启用该feature。一旦启动,设备B会发送LMP_preferred_rate来提出希望A发送的数据类型。如果期望的数据大小大于最大值,A也还是按最大值发送。
参数有期望的Basic Rate模式和增强数据模式。如果是Basic Rate模式,设备用bits 0-2来表示期望数据速率,如果是增强数据模式,则用bits 3-6来表示。如果设备支持增强数据模式,那么期望的速率值对Basic Rate和增强型模式都有效。
连接建立完成后任何时候都可以发送这些PDU。

《Link Manager Protocol Specification(4.1)》

4.1.8 Quality of Service(QoS)

4.1.9 Paging Scheme Parameters

LMP提供了用于协商下次设备paging时的参数的机制。

《Link Manager Protocol Specification(4.1)》

4.1.9.1 Page Mode

设备A发起的后续 设备A对设备B的page 过程的协商。设备A的发起包含了page过程的参数,设备B可以接收或则拒绝。如果拒绝那么保持旧的设置。对于一个想切换至保留page机制的请求必须被拒绝。

《Link Manager Protocol Specification(4.1)》

4.1.9.2 Page Scan Mode

设备A发起的后续 设备B对设备A的page 过程的协商。设备A的发起包含了page过程的参数,设备B可以接收或则拒绝。如果拒绝那么保持旧的设置。说明强制机制的请求必须接收,说明非强制机制的请求必须拒绝。当设备A改变了它的page机制时必须发起这个协商。当连接建立后,slave也必须发送这个信息给master来告诉master slave现在的page机制与设置。

《Link Manager Protocol Specification(4.1)》

《Link Manager Protocol Specification(4.1)》

4.1.10 Control of Multi-slot Packets

一个设备在ACL-U逻辑链路上持续的包的个数是可以被限制的。它并不影响eSCO链路上的传输。一个设备通过LMP_max_slot来告诉远端设备可接受的最大包个数。每个设备也可以通过LMP_max_slot_req来让远端按最大包数来传输,最大包数在参数中。建立新的连接后,默认值是1 slot。只要连接完成,任意时刻都可以发送这些PDU。

《Link Manager Protocol Specification(4.1)》

《Link Manager Protocol Specification(4.1)》

4.1.11 Enhanced Data Rate

4.1.12 Encapsulated LMP PDUs

当载荷超过16字节时可以发送聚合的LMP PDU。聚合LMP PDU最小有2个LMP消息,一个PDU头,更多载荷。

《Link Manager Protocol Specification(4.1)》

4.1.13 Ping

当两端设备都支持Ping feature时,LM可以通过LMP ping机制来确认远端的LM状态。LMP ping机制也可以通过要求远端设备必须发送带MIC的ACL包来确认ACL逻辑链路上的消息完整性。由于LMP_ping_res包含MIC会更新包计数器,LMP_PING_req的发送者可以与上次收到的计数器值进行对比从而确认是否有包被拦截。
不论是master或者slave都可以发起这个过程。

4.1.14 Piconet Clock Adjustment

master可以调节整个piconet的时钟

    原文作者:lucca_x
    原文地址: https://www.jianshu.com/p/380716678c72
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞