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

GAPCentralRole_StartDiscovery( )函数使用多次会失效

在 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是没这个问题的

赞(0)
未经允许不得转载:TI中文支持网 » GAPCentralRole_StartDiscovery( )函数使用多次会失效
分享到: 更多 (0)