嗨对话框,
我们希望使用我们的自定义配置文件实现一个中央设备。我参考DSPS客户端项目创建我的项目,并在发现服务期间遇到一些问题。
1.中央设备可以在第一次连接期间成功发现服务。连接后,中央设备可以将数据写入外围设备的特性,并从外围设备接收通知指示消息。一切都好。
然后,中央设备无法在重新连接期间发现服务,在配置文件启用请求消息后未收到GattC_DISC_SVC_ind消息,并且我总是获取PRF_ERR_REQ_DISALLY状态。该连接已建立和维护。操作顺序,断开连接 - >开始扫描 - >停止扫描 - >连接。
你能给我一些关于这个问题的建议吗?非常感谢。
设备:
嗨祖马,
您必须检查返回PRF_ERR_REQ_DISALLED的请求是什么,状态返回此类状态的函数是什么?我怀疑下一个连接无法执行发现的原因是由于缺少内存资源(我想返回错误状态的函数是宏Prf_client_enable)。断开设备时,应调用分配给DSP配置文件的GAPC_DISCONNECT_IND_HANDLER(),并且应该在该函数中调用PRF_CLIETE_DISABLE_IND_SEND宏,以便释放它从上一个连接(不是GAPC_DISCONNECT_IND_HAND_HAND_HAND_HAND_HAND_HAND_HAND_HAND_HAND_HAND_HAND_HAND_HAND_HAND_HAND_HAND_HAND_HAND_HAND_HAND_HAND_HAND_HAND_HAND_HAND_HAND_HAND_HAND_HAND_HAND_Handler中分配给Task_App但位于SPS_Client_Task的那个),如果没有被调用,则您不会有足够的内存来分配所需的下一个环境,因为新的连接和发现导致的子序列环境应该分配。程序。
谢谢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实现手动填充_disconnect_ind消息,请参阅SPS客户端项目。
2.中央设备只需将app_easy_gap_disconnect()调用“与Periphral设备断开连接”。
嗨祖马,
至少在DSP主机项目中,函数prf_cleanup_func()是通过堆栈调用的,并且根据启用的配置文件,将相应的断开指示发送到相应的任务,因此Gapc_send_disconnect_ind()的函数是发送消息到个人资料任务本身才能执行任何清理功能。
谢谢mt_dialog.