嗨,对话框中,
我们想用自定义配置文件实现一个中心设备。我参照DSPS Client项目创建了我的项目,在发现服务的过程中遇到了一些问题。
1.第一次连接时,中心设备能成功发现业务。连接后,中心设备可以将数据写入外设的特性,并接收外设的通知指示消息。一切都是好的。
2.那么中心设备在重新连接时无法发现服务,配置文件启用请求消息发送后GATTC_DISC_SVC_IND消息没有收到,并且总是得到PRF_ERR_REQ_DISALLOWED状态。这种联系已经建立并保持。操作顺序:断开->启动扫描->停止扫描->连接。
关于这个问题你能给我一些建议吗?非常感谢。
设备:
嗨,祖马,
您必须检查返回PRF_ERR_REQ_DISALLOWED的请求是什么,状态返回这种状态的函数是什么?我怀疑下一个连接无法执行发现的原因是由于缺少内存资源(我假设返回错误状态的函数是宏PRF_CLIENT_ENABLE)。设备断开连接时gapc_disconnect_ind_handler()分配给需求方概要文件应该调用和PRF_CLIENT_DISABLE_IND_SEND宏在该函数应该被称为为了自由分配的内存空间,从之前的连接(不是gapc_disconnect_ind_handler TASK_APP分配but the one that is located in the sps_client_task), if that is not get invoked, you wont have enough memory to allocate for the next enviroment that should be allocated for sub-sequent enviroments due to the new connections and the discovery procedures.
由于MT_dialog
嗨,MT_dialog
谢谢你的快速回复。你的假设是正确的,自定义客户端概要文件(custc_task.c)中的gapc_disconnect_ind_handler()没有被调用,内存空间不够。断开连接后,自定义概要文件(ke_state_get(TASK_CUSTC))的状态仍然是连接的。现在我已经将PRF_CLIENT_DISABLE_IND_SEND宏移动到app回调函数user_on_disconnect,基本上解决了问题,但是我仍然有疑问为什么GAPC_DISCONNECT_IND消息没有传递到custc_task。
1.我已经实现了gapc_disconnect_ind_handler手GAPC_DISCONNECT_IND消息引用SPS客户端项目。
2.中央设备只需调用app_easy_gap_disconnect()来与Periphral设备断开连接。
嗨,祖马,
至少在DSPS主机项目上,函数prf_cleanup_func()正在被堆栈调用,根据启用的配置文件,相应的断开指示被发送到相应的任务,因此,gapc_send_disconnect_ind()的函数是向概要任务本身发送一条消息,以便执行任何清理功能。
由于MT_dialog