中央设备的服务发现问题

⚠️
你好。。谢谢你来参加论坛。令人兴奋的消息!我们现在正在移动到我们的新论坛平台,将提供更好的功能,并包含在主对话网站的过程。所有帖子和账号都已迁移。我们现在只接受新论坛上的流量-请在//www.wsdof.com/support. 我们将在未来几天内修复bug/优化搜索和标记。
4个职位/0个新职位
最后一篇文章
祖马
离线
最后一次见到:1周2天前
已加入:2016-01-13 09:35
中央设备的服务发现问题

嗨,对话,
我们想实现一个中央设备与我们的自定义配置文件。我参考DSPS客户机项目创建了我的项目,在发现服务时遇到了一些问题。
1中心设备可以在第一次连接期间成功发现服务。连接后,中央设备可以将数据写入外围设备的特性,并接收来自外围设备的通知指示消息。一切都好。
2然后中央设备在重新连接时无法发现服务,在发送profile enable请求消息后未收到GATTC\u DISC\u SVC\u IND消息,并且我总是得到PRF\u ERR\u REQ\u DISALLOWED状态。已建立并保持连接。操作顺序,断开->开始扫描->停止扫描->连接。

你能就这个问题给我一些建议吗?谢谢。

设备:
MT\u对话框
离线
最后一次见到:1个月3周前
工作人员
已加入:2015-06-08 11:34
你好,祖玛,

你好,祖玛,

您必须检查返回PRF\u ERR\u REQ\u DISALLOWED的请求是什么,状态返回这种状态的函数是什么?我怀疑下一个连接无法执行发现的原因是由于内存资源不足(我假设返回错误状态的函数是宏PRF\u CLIENT\u ENABLE)。当设备断开连接时,应调用分配给DSPS配置文件的gapc\ U disconnect\ U ind\ U handler(),并在该函数中调用PRF\ U CLIENT\ U DISABLE\ U ind\ U SEND宏,以便释放从上一个连接分配给它的内存空间(而不是分配给DSPS配置文件的gapc\ U disconnect\ U ind\ U handler)任务(但位于sps客户端中的任务)如果未调用该任务,则由于新的连接和发现过程,您将没有足够的内存分配给下一个应分配给后续环境的环境。

谢谢你的对话

祖马
离线
最后一次见到:1周2天前
已加入:2016-01-13 09:35
嗨,MT\u dialog

嗨,MT\u dialog
谢谢你的快速回复。您的假设是正确的,自定义客户机概要文件(custc\u task.c)中的gapc\u disconnect\u ind\u handler()没有被调用,内存空间也不够。断开连接后,自定义配置文件的状态(ke\u state\u get(TASK\u CUSTC))仍处于连接状态。现在我把PRF\u CLIENT\u DISABLE\u IND\u SEND宏移到app callback function user\u on\u disconnect上,基本解决了这个问题,但是我仍然怀疑为什么GAPC\u disconnect\u IND消息没有传递给custc\u task。

1我已经实现了gapc\u disconnect\u ind\u处理程序,以将gapc\u disconnect\u ind消息传递给SPS客户机项目。
2中央设备只需调用app\u easy\u gap\u disconnect()即可与外围设备断开连接。

MT\u对话框
离线
最后一次见到:1个月3周前
工作人员
已加入:2015-06-08 11:34
你好,祖玛,

你好,祖玛,

至少在DSPS主机项目中,堆栈调用函数prf_cleanup_func(),并根据启用的配置文件,将相应的断开连接指示发送到相应的任务,因此gapc\u send\u disconnect\u ind()的功能是向概要文件任务本身发送一条消息,以便执行任何清理功能。

谢谢你的对话