C2640R2F 更新连接参数,debug发现更新时部分手机类型执行 GAP_UPDATE_LINK_PARAM_REQ_EVENT 分支失败,其他仅执行events & START_CONN_UPDATE_EVT能成功;怎么解决?
请教:
2640R2F 更新连接参数时,如果执行分支:
if (events & START_CONN_UPDATE_EVT)
{
// Start connection update procedure
gapRole_startConnUpdate(GAPROLE_NO_ACTION, &gapRole_updateConnParams);
}
更新成功;
但是有的是执行gapRole_processGAPMsg() 里的
case GAP_UPDATE_LINK_PARAM_REQ_EVENT:
分支,导致更新失败(好像是先执行了之前的更新分支,因为启动定时器了,又执行这个),操作完成后,
连接参数没更新,什么情况?
你说的是不是 case GAP_LINK_PARAM_UPDATE_EVENT?有返回不正常的状态吗?
不是你说的这个分支,正常情况下:
连接确立之后case GAP_LINK_ESTABLISHED_EVENT
启动定时器,直到事件发生,
if (events & START_CONN_UPDATE_EVT)
gapRole_startConnUpdate(GAPROLE_NO_ACTION, &gapRole_updateConnParams);
执行更新,这个流程正常,
但是有的手机会执行到case GAP_UPDATE_LINK_PARAM_REQ_EVENT:分支里面,这里为什么?
而且这种情况下,连接参数没有更新;
还有,论坛沟通效率太低了……
主机先请求更新,请求接受后,执行更新:LL_Connection_Update_Req,执行到case GAP_UPDATE_LINK_PARAM_REQ_EVENT:分支,同时中断了从机请求更新的定时器,稍后,主机再次请求更新请求接受后,执行更新:LL_Connection_Update_Req,导致后一次更新生效,而后一次即是连接较慢的参数;