对于Classic Bluetooth的Connection,有一个Link_Policy_Settings,是HCI configuration parameters中的一个。
Link_Policy_Settings 参数决定了本地链路管理器(Link Manager)在收到来自远程链路管理器的请求时的行为,还用来决定改变角色(role)或进入Hold or Sniff mode。本地链路管理器将自动接受或拒绝来自远程设备的此类请求,甚至可能自动提出请求,具体取决于相应 Connection_Handle 的 Link_Policy_Settings 参数值。当某个 Connection_Handle 的 Link_Policy_Settings 参数值被更改后,新值将仅用于该命令完成后来自远程设备或本地链路管理器本身的请求。通过单独启用每种模式,主机可以选择支持各种操作模式所需的任意组合。通过对不同活动类型执行比特位(bitwise)的OR 运算,可为 Link_Policy_Settings 参数指定多个 Link Manager策略。
注: 无论 Link_Policy_Settings 参数的值如何,远程设备都可以强制本地 BR/EDR 控制器进入Hold mode(无论本地设备是Central中心设备还是Peripheral外设设备)。不过,只有在连接已通过 LMP 请求(Link_Policy_Settings 决定是否接受或拒绝来自远程设备的请求)进入Hold mode后,才能强制进入Hold mode。在此之后,只要连接还在继续,就可以强制执行Hold mode,而与 Link_Policy_Settings 参数中的Hold mode设置无关。
注:如果远程设备中的实现是一种 "礼貌 "实现,不会通过 LMP PDUs 将另一台设备强制转入Hold mode,这样Link_Policy_Settings将一直被遵循。
Bit Number | Parameter Description |
0 | Enable Role switch. |
1 | Enable Hold mode. |
2 | Enable Sniff mode. |
All other bits | Reserved for future use. |
参考:
1,蓝牙core spec v5.3
Vol 4: Host Controller Interface -> Part E: Host Controller Interface Functional Specification -> 6 HCI configuration parameters-> 6.18 Link Policy Settings