在 CC2541 的 simpleBLESwitch 例程
因为我要一直搜索从机, 所以每当 GAP_DEVICE_DISCOVERY_EVENT事件没有找到相应的设备时, 就调用 GAPCentralRole_StartDiscovery( DEVDISC_MODE_ALL, TRUE, FALSE); 以继续寻找设备, 但是我发现循环了十几次都没有我要找的设备时, 就再也没有产生GAP_DEVICE_DISCOVERY_EVENT事件了。
请问这是什么原因?
Viki Shi:
要实现连续扫描的话,不要连续调用GAPCentralRole_StartDiscovery,而是在GAP_DEVICE_DISCOVERY_EVENT事件里再次调用GAPCentralRole_StartDiscovery
user1878904:
回复 Viki Shi:
对呀, 我上面就是这样说的呀。 担心是什么造成的冲突, 刚才再尝试了定义一个周期性的事件来调用 GAPCentralRole_StartDiscovery(), 并且搜索的时间也是比这个事件的周期要短的。结果还是十几次以后就不再产生 GAP_DEVICE_DISCOVERY_EVENT 事件了
SDK是 1.4.2
user1878904:
回复 Viki Shi:
对呀, 我上面就是这样说的呀。
担心是什么造成的冲突, 刚才再尝试了定义一个周期性的事件来调用 GAPCentralRole_StartDiscovery(), 并且搜索的时间也是比这个事件的周期要短的。结果还是十几次以后就不再产生 GAP_DEVICE_DISCOVERY_EVENT 事件了SDK 1.4.2
Viki Shi:
回复 user1878904:
查一下内存是不是用完了,持续扫描容易出现内存问题
user1878904:
回复 Viki Shi:
那要怎么检查和解决呢
Viki Shi:
回复 user1878904:
查看一下MemAlo和memMax
/** Return the current number of bytes allocated.*/uint16 osal_heap_mem_used( void );
/** Return the highest number of bytes ever used in the heap.*/uint16 osal_heap_high_water( void );
user1878904:
回复 Viki Shi:
的确是heap满了就停止了, 有没有什么解决办法吗? 记得以前旧版的SDK是没这个问题的