CC2640R2F BLE 开发之如何更新连接参数

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/LinQiPing233/article/details/93862152

写在前面
蓝牙的连接参数主要是指:

  1. 更新模式(paramUpdateEnable)
  2. 最小连接间隔(minConnInterval)
  3. 最大连接间隔(maxConnInterval)
  4. 潜伏个数(slaveLatency)
  5. 连接超时时间(timeoutMultiplier)
    例程:examples\rtos\CC2640R2_LAUNCHXL\blestack\simple_peripheral

相关说明

1、更新模式(paramUpdateEnable)

说明:

模式 说明
GAPROLE_LINK_PARAM_UPDATE_WAIT_REMOTE_PARAMS
GAPROLE_LINK_PARAM_UPDATE_INITIATE_BOTH_PARAMS 协商主机从机的连接参数进行更新
GAPROLE_LINK_PARAM_UPDATE_INITIATE_APP_PARAMS
GAPROLE_LINK_PARAM_UPDATE_WAIT_APP_PARAMS
GAPROLE_LINK_PARAM_UPDATE_WAIT_BOTH_PARAMS
GAPROLE_LINK_PARAM_UPDATE_REJECT_REQUEST

设置API:
GAPRole_SetParameter(GAPROLE_PARAM_UPDATE_ENABLE, sizeof(uint8_t), &value);
获取当前参数API:GAPRole_GetParameter(GAPROLE_PARAM_UPDATE_ENABLE,&value);

2、最小连接间隔(minConnInterval)

设置API:
GAPRole_SetParameter(GAPROLE_MIN_CONN_INTERVAL, sizeof(uint16_t), &value);
获取当前参数API:GAPRole_GetParameter(GAPROLE_PARAM_UPDATE_ENABLE,&value);

3、最大连接间隔(maxConnInterval)

设置API:
GAPRole_SetParameter(GAPROLE_MAX_CONN_INTERVAL, sizeof(uint16_t), &value);
获取当前参数API:GAPRole_GetParameter(GAPROLE_MAX_CONN_INTERVAL,&value);

4、潜伏个数(slaveLatency)

设置API:
GAPRole_SetParameter(GAPROLE_SLAVE_LATENCY, sizeof(uint16_t), &value);
获取当前参数API:GAPRole_GetParameter(GAPROLE_SLAVE_LATENCY,&value);

5、连接超时时间(timeoutMultiplier)

设置API:
GAPRole_SetParameter(GAPROLE_TIMEOUT_MULTIPLIER, sizeof(uint16_t), &value);
获取当前参数API:GAPRole_GetParameter(GAPROLE_TIMEOUT_MULTIPLIER,&value);

执行更新连接参数

以上API设置只是加载相关数值,并不会发起更新,调用以下API主从机就会发起协商更新连接参数(如果参数符合要求
更新参数要求:

  • 每次更新必须有且一个参数与当前的参数不一致,如下代码所示,最好每次的连接超时时间要改变一下,不然会返回0x18,
  • timeoutMultiplier > (1+slaveLatency) * maxConnInterval * 2,timeoutMultiplier 应为100 ms的倍数,范围为100 ms至32.0 s,最好把余量放大点。
int8_t enableUpdateRequest = TRUE;
GAPRole_SetParameter( GAPROLE_PARAM_UPDATE_REQ,sizeof(uint8_t), &enableUpdateRequest)

更新参数执行限制条件

  if ((gapRole_ConnInterval < pConnParams->minConnInterval)   ||
       (gapRole_ConnInterval > pConnParams->maxConnInterval)   ||
       (gapRole_ConnSlaveLatency != pConnParams->slaveLatency) ||
       (gapRole_ConnTimeout  != pConnParams->timeoutMultiplier))
  {
  //执行更新操作
  }
展开阅读全文

没有更多推荐了,返回首页