我想强制向具有某些特定连接参数的从站发送LL_CONNECTION_UPDATE_REQ。我如何在Bluedroid中实现这一目标?是否有可能来自Bluedroid?
目标:AOSP v5.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.2
和LL_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指出这一点。