我的应用需要同时做peripheral和observer,所以使用了这个profile:http://processors.wiki.ti.com/index.php/SimpleBLE_ComboRoles
同时也打了这个patch:http://e2e.ti.com/support/wireless_connectivity/f/538/t/346265,协议栈是1.4.0。
在使用过程中发现设备突然扫描不到广播,并且自身也不发广播了,发现是GAP_DEVICE_INFO_EVENT没有进入。广播端广播间隔为50ms
关键代码如下:
case GAP_DEVICE_INFO_EVENT:
{
GAPObserverRole_CancelDiscovery();
if (pEvent->deviceInfo.eventType == GAP_ADRPT_ADV_IND) {
if (simpleBLEFindSvcUuid(PREFIX_SERVICE_UUID, pEvent->deviceInfo.pEvtData, pEvent->deviceInfo.dataLen))
doSomthing(pEvent->deviceInfo.pEvtData, pEvent->deviceInfo.dataLen);
}
}
在接受到GAP_DEVICE_DISCOVERY_EVENT事件后,间隔50ms后会再次开启扫描,其中扫描时间是3s。
为什么会不定期的接受不到GAP_DEVICE_INFO_EVENT事件,在接受不到事件的同时,作为peripheral也不发广播了,这种情况下profile也没有返回错误
GAPROLE_ERROR,加了定时器发现芯片也没有跑飞,感觉像协议栈跑飞了,请TI工程师能够给予解答,谢谢。
yanming zhang:
顶一下,哪位高手能解答啊
xiangyang guo:
回复 yanming zhang:
你好,yanming zhang :
我也遇到这样的问题了,请问你找到解决方面了吧?
kqian0327:
你好,
请把更新至最新版的协议栈1.41版本,希望对你有帮助。
yanming zhang:
回复 xiangyang guo:
尝试广播和搜索交替执行。
xiangyang guo:
回复 yanming zhang:
你好,yanming zhang:
谢谢你的回复,目前正在尝试这种方法。