本人对蓝牙协议栈也算是个小白,以前都没有接触过蓝牙协议栈这块,来到现公司后还是接触,有些客户的蓝牙协议栈在遥控器向主机端发送连接参数更新请求后被拒绝,或者更新成功后发给遥控的又是另外一个数值,之前老大让我改了三个宏定义就可以,BTM_BLE_CONN_INT_MIN_DEF设成6,BTM_BLE_CONN_INT_MAX_DEF设成40,BTM_BLE_CONN_INT_MIN_LIMIT设成0x0006.之前一直不知道为什么这么改下就可以了。后面碰到一个问题,终于找到连接参数是怎么更新的,当然这里只是一部分。有大神看到可以帮忙补充。
因为遥控器发给主机的的更新连接参数的packet是acl data,所以必定会在l2c_rcv_acl_data处理该patcket。该函数是专门处理ACL 类型的数据包的。根据解析出来的rcv_cid为L2CAP_BLE_SIGNALLING_CID,即可找到具体的处理函数l2cble_process_sig_cmd,在该函数中会去解析出packet包中的min_interval,max_interval,latency以及timeout。然后给t_l2c_linkcb这个结构中对应的值更新。