不确定如何处理以下情况:对话框运行正常连接到应用程序。当我们远离传感器和芯片时,RSSI按预期的变化。突然间,对话框断开连接和我们可以再次连接的唯一方式是通过重新启动设备。
当RSI级别太低时,我们可以从应用程序向芯片发送断开消息并告诉用户更近,但有更优雅的解决方案吗?谢谢
嗨rony,
您不必从设备发送断开消息到芯片...当设备是范围时,使用GapC_Disconnect_ind_Handler()您可以使用Gapc_disconnect_ind_ind_handler()您可以从该功能重新授予您的设备。
谢谢mt_dialog.
如果我理解正确,Gapc_disconnect_ind将在我的配置文件任务中激活Gap_disconnect_ind_handler。BTW我们基于我们在Sample128上的解决方案。我在gap_disconnect_ind_handler中有一个断点。Android应用程序断开连接但在设备超出范围时,我达到断点。在这种情况下是否有可能在某个地方激活处理程序?谢谢
当外围设备超出范围时,应激活处理程序,原因0x08。激活的处理程序是如app_task_handlers.h中定义的gapc_disconnect_ind_handler。请尝试使用Sample128项目的默认版本验证。
这是app_task.c中的处理程序int gapc_disconnect_ind_handler(ke_msg_id_t const msgid,struct gapc_disconnect_ind const * param,ke_task_id_t const dest_id,ke_task_id_t const src_id){app_disconnect_func(dest_id,param);
return(ke_msg_consumed);}
当Android应用程序断开连接时,我到达那里但是当芯片超出范围时,我没有到达那里
是的,这不应该发生,应立即激活指示,但是当宿宿期超时到期时。
如果您在CONTER结束的地方停止调试时停止调试?
请将休闲点放入platform_reset函数,看看代码是否在那里结束。
platform_reset在哪里?发现它在跳转表中,但找不到代码。
您是否检查了代码在外围从中心遥不可及的地方进行的位置?
忘了提到您必须实现自己的自定义函数(my_platform_reset_func)并替换跳转表中的platform_reset_func。然后在自定义功能中放置一个断点,以便查看平台复位功能是否已发出。
当超出范围时,程序停止。拆卸是地址0命令窗口有警告:cpu could not be halted和一系列:jlink错误:CPU运行时无法读取寄存器XX
您有一个示例的实现(my_platform_reset_func),看看它是如何完成的吗?
只需用自定义一个替换跳转表中的普通函数,以便放置断点并捕获它。
似乎您的计划将要从您的#9帖子中重置判断。你丢失调试器的事实是一个很好的迹象。据我所知,当外设超出范围或者您正在分配内存而不释放时,您就在内存不足。我想从外设的消息拍摄直到监控超时,并且在调用GAPC_DISCONNECT_IND_HAND_HANDLLER之前发出平台复位。如果是这种情况,您必须在设备中实现某种流量控制。
试图在jump_table.c中替换但在构建上失败。请告诉我究竟在哪里改变它。
关于流量控制我将尝试实现一个。谢谢
取得了一些进展。添加了我的重置函数并被错误调用= 0xF2F2F2F2
这是什么意思?
我猜你解决了它。添加逻辑,用于计算应用程序发送的通知数与配置文件发送的通知数。当差异是9时,我停止在Android应用程序告诉我时发送和恢复。工作良好。谢谢您的帮助
嗨rony,
您不必从设备发送断开消息到芯片...当设备是范围时,使用GapC_Disconnect_ind_Handler()您可以使用Gapc_disconnect_ind_ind_handler()您可以从该功能重新授予您的设备。
谢谢mt_dialog.
如果我理解正确,Gapc_disconnect_ind将在我的配置文件任务中激活Gap_disconnect_ind_handler。
BTW我们基于我们在Sample128上的解决方案。
我在gap_disconnect_ind_handler中有一个断点。
Android应用程序断开连接但在设备超出范围时,我达到断点。
在这种情况下是否有可能在某个地方激活处理程序?
谢谢
嗨rony,
当外围设备超出范围时,应激活处理程序,原因0x08。激活的处理程序是如app_task_handlers.h中定义的gapc_disconnect_ind_handler。请尝试使用Sample128项目的默认版本验证。
谢谢mt_dialog.
这是app_task.c中的处理程序
int gapc_disconnect_ind_handler(ke_msg_id_t const msgid,
struct gapc_disconnect_ind const * param,
ke_task_id_t const dest_id,
ke_task_id_t const src_id)
{
app_disconnect_func(dest_id,param);
return(ke_msg_consumed);
}
当Android应用程序断开连接时,我到达那里但是当芯片超出范围时,我没有到达那里
嗨rony,
是的,这不应该发生,应立即激活指示,但是当宿宿期超时到期时。
如果您在CONTER结束的地方停止调试时停止调试?
请将休闲点放入platform_reset函数,看看代码是否在那里结束。
谢谢mt_dialog.
platform_reset在哪里?
发现它在跳转表中,但找不到代码。
嗨rony,
您是否检查了代码在外围从中心遥不可及的地方进行的位置?
忘了提到您必须实现自己的自定义函数(my_platform_reset_func)并替换跳转表中的platform_reset_func。然后在自定义功能中放置一个断点,以便查看平台复位功能是否已发出。
谢谢mt_dialog.
当超出范围时,程序停止。
拆卸是地址0
命令窗口有警告:
cpu could not be halted
和一系列:
jlink错误:CPU运行时无法读取寄存器XX
您有一个示例的实现(my_platform_reset_func),看看它是如何完成的吗?
嗨rony,
只需用自定义一个替换跳转表中的普通函数,以便放置断点并捕获它。
似乎您的计划将要从您的#9帖子中重置判断。你丢失调试器的事实是一个很好的迹象。据我所知,当外设超出范围或者您正在分配内存而不释放时,您就在内存不足。我想从外设的消息拍摄直到监控超时,并且在调用GAPC_DISCONNECT_IND_HAND_HANDLLER之前发出平台复位。如果是这种情况,您必须在设备中实现某种流量控制。
谢谢mt_dialog.
试图在jump_table.c中替换但在构建上失败。
请告诉我究竟在哪里改变它。
关于流量控制我将尝试实现一个。
谢谢
取得了一些进展。
添加了我的重置函数并被错误调用= 0xF2F2F2F2
这是什么意思?
我猜你解决了它。
添加逻辑,用于计算应用程序发送的通知数与配置文件发送的通知数。
当差异是9时,我停止在Android应用程序告诉我时发送和恢复。
工作良好。
谢谢您的帮助