TI中文支持网
TI专业的中文技术问题搜集分享网站

广播关闭之后无法重新开启

最近我们在程序中增加开关广播的命令接口,遇到了如题的问题:可以关闭广播,但是关闭之后就无法开启了。想不出来问题在哪里,请教一下TI的专家有没有什么思路。开关操作的代码如下:

  if(en == 0){ // Disable Advertisingif(advEnabled == TRUE){GapAdv_disable(advHandleLongRange);GapAdv_disable(advHandleLegacy);advEnabled = FALSE;}}else{ // Enable Advertisingif ((linkDB_NumActive() < maxNumBleConns) && (advEnabled == FALSE)){GapAdv_enable(advHandleLegacy, GAP_ADV_ENABLE_OPTIONS_USE_MAX, 0);GapAdv_enable(advHandleLongRange, GAP_ADV_ENABLE_OPTIONS_USE_MAX, 0);advEnabled = TRUE;}}

可以确认的是代码行都可以执行到,但只有disable部分像期望的一样工作,enable部分执行之后,旁边扫描的手机上可以看到广播包一闪而过,然后就不再广播了。

一些额外的信息:我们的程序是在multi_role项目的基础上改来的。目前使用的SDK版本:1.50.00.71。

Viki Shi:

针对这个TI发布了一个patch,用于关闭弊病重启广播,下载地址: processors.wiki.ti.com/…/File:Simple_peripheral_ble_221_advRestart.zip

版本跟你的不一样,请根据SDK的migration guide进行移植

goodluck:

回复 Viki Shi:

非常感谢回答。

看了一下这个patch,似乎跟我们遇到的问题有所不同。这个patch是在周期性地重启广播,解决的问题按照这个页面的介绍:“Advertising (ADV) may stop when performing extended periods (i.e., more than 1 hour) of continuous Advertising due to an anomaly in the TI-RTOS RF Driver used by BLE-Stack v2.2.0 and v2.2.1. The workaround is to stop and restart ADV on a periodic basis using a TI-RTOS Clock instance.”

这个patch生效的前提是,开启的动作是好用的。可是这正是我们目前遇到的问题:广播被关闭之后的重新开启不成功。

赞(0)
未经允许不得转载:TI中文支持网 » 广播关闭之后无法重新开启
分享到: 更多 (0)