Bluedroid:如何发送LL_CONNECTION_UPDATE_REQ

时间:2016-04-13 06:31:39

标签: android bluetooth android-source bluetooth-lowenergy

我想强制向具有某些特定连接参数的从站发送LL_CONNECTION_UPDATE_REQ。我如何在Bluedroid中实现这一目标?是否有可能来自Bluedroid?

目标:AOSP v5.1 +

1 个答案:

答案 0 :(得分:0)

通过调用函数btsnd_hcic_ble_upd_ll_conn_params() [在l2c_ble.c中] 函数在hciblecmds.c中定义

如果slave和master都支持在Connection Parameter Update Procedure规范9.3.9中定义并在BLUETOOTH SPECIFICATION Version 4.2LL_FEATURE_REQ (2.4.2.9)中声明的LL_FEATURE_RSP (2.4.2.10),则链接层发送{{1} }。

如果任一主机不支持此功能,LL将发送LL_CONNECTION_PARAM_REQ (2.4.2.16)

来自LL_CONNECTION_UPDATE_REQ 2.4.2.1中的9.3.9.2 Conditions

  

启动连接参数更新程序的中心应使用   链路层连接更新程序在[Vol。第6部分,B部分   5.1.1具有所需的连接参数,如果是Central或   外围设备不支持连接参数请求链路层   控制程序。

     

如果Central和Peripheral都支持连接参数请求   链路层控制程序,然后中央或外围启动   连接参数更新程序应使用连接参数   请求链路层控制程序在[Vol。 6],B部分第5.1.7节   使用所需的连接参数。

虽然我在此处添加BLUETOOTH SPECIFICATION Version 4.2仅需要最小和最大连接间隔,并将它们用作提示

根据我的经验,当传递一系列值时,LL会选择范围内的任何值。

我只进行了有限的测试,所以我不确定LL是否总是会从提供的范围中选择,或者在某些情况下它是否可以选择超出此范围,例如:如果已连接的从站具有此范围之外的CI

btsnd_hcic_ble_upd_ll_conn_params()起,LL将始终从主机提供的范围中选择连接间隔。 感谢@Emil指出这一点。