对话框断开连接

14个新帖子/ 0
最后一篇文章
罗尼
离线
最后一次见到:4年10个月前
硕士
已加入:2014-05-15 15:02
对话框断开连接

不确定如何处理以下情况:
对话框运行良好,已连接到应用程序。
当我们离开传感器和芯片时,RSSI会像预期的那样发生变化。
突然之间,对话框似乎断开了连接,我们唯一能再次连接的方法就是重新启动设备。

当RSI水平太低时,我们可以从应用程序向芯片发送一条断开连接的消息,并告诉用户靠近一点,但是有没有更优雅的解决方案呢?
谢谢

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

嗨,罗尼,

您不必从设备向芯片发送断开连接消息…当设备在范围内时,您将有一个GAPC\u DISCONNECT\u IND通过使用GAPC\u DISCONNECT\u IND\u处理程序()您可以从该函数重新公布您的设备。

谢谢你的对话

罗尼
离线
最后一次见到:4年10个月前
硕士
已加入:2014-05-15 15:02
如果我理解正确

如果我理解正确,GAPC\u DISCONNECT\u IND将在我的配置文件任务中激活gap\u DISCONNECT\u IND处理程序。
顺便说一句,我们的解决方案基于样本128。
我在gap\u disconnect\u ind\u处理程序中有一个断点。
我在android应用程序断开连接时到达断点,而不是在设备超出范围时。
在这种情况下,处理程序是否可能在其他地方被激活?
谢谢

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

嗨,罗尼,

当外设超出范围且原因为0x08时,应激活处理程序。激活的处理程序是gapc\u disconnect\u ind\u处理程序,如app\u task\u handlers.h中所定义。请尝试使用sample128项目的默认版本验证此操作。

谢谢你的对话

罗尼
离线
最后一次见到:4年10个月前
硕士
已加入:2014-05-15 15:02
这是应用程序中的处理程序

这是app\u task.c中的处理程序
int gapc\u disconnect\u ind\u处理程序(ke\u msg\u id\u t const msgid,
结构gapc\u disconnect\u ind const*参数,
任务id常量目标id,
Keu任务\u id \u t const src \u id)
{
app\u disconnect\u func(目标id,参数);

返回(已消耗的消息);
}

当android应用程序断开连接时,我可以到达那里,但当芯片超出范围时,我无法到达那里

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

嗨,罗尼,

是的,这不应该发生,指示应该不是立即激活,而是在禁止超时过期时激活。

如果你停止调试时,中央是够不着的地方,代码结束?

请在platform\u reset函数中放置一个断点,以查看代码是否在那里结束。

谢谢你的对话

罗尼
离线
最后一次见到:4年10个月前
硕士
已加入:2014-05-15 15:02
站台复位在哪里?

站台复位在哪里?
在跳转表中找到它,但找不到代码。

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

嗨,罗尼,

你有没有检查过当外围设备无法从中央连接到后,代码会去哪里?

忘了提到您必须实现自己的自定义函数(my\u platform\u reset\u func)并替换跳转表中的platform\u reset\u func。然后在自定义函数中放置一个断点,以查看是否发出了平台重置函数。

谢谢你的对话

罗尼
离线
最后一次见到:4年10个月前
硕士
已加入:2014-05-15 15:02
超出程序范围时

当超出范围时,程序停止。
拆卸是地址0
命令窗口有一个警告:
cpu could not be halted
以及一系列:
jlink错误:在cpu运行时无法读取寄存器xx

罗尼
离线
最后一次见到:4年10个月前
硕士
已加入:2014-05-15 15:02
你有这个例子吗

你有没有一个实现(my\u platform\u reset\u func)的例子来看看它是如何实现的?

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

嗨,罗尼,

只需将跳转表中的普通函数替换为自定义函数,以便放置断点并捕获它。

从你的9篇文章来看,你的程序似乎要重新设置平台了。丢失调试器的事实是一个有力的迹象。据我所知,当外设超出范围时,您正在耗尽内存,或者您正在分配内存而没有释放内存。我假设来自外设的消息在监视超时之前一直堆积,并且在调用gapc\u disconnect\u ind\u处理程序之前发出平台重置。如果是这样的话,你必须在你的设备上实现某种流量控制。

谢谢你的对话

罗尼
离线
最后一次见到:4年10个月前
硕士
已加入:2014-05-15 15:02
试图在跳跃中替换

尝试在跳转表.c中替换,但在生成时失败。
请告诉我在哪里换。

关于流控制,我将尝试实现一个。
谢谢

罗尼
离线
最后一次见到:4年10个月前
硕士
已加入:2014-05-15 15:02
取得了一些进展。

取得了一些进展。
添加了我的重置函数,调用时出错=0xf2f2

这是什么意思?

罗尼
离线
最后一次见到:4年10个月前
硕士
已加入:2014-05-15 15:02
我想你解决了。

我想你解决了。
添加了逻辑,用于统计应用程序发送的通知数与配置文件发送的通知数。
当差值为9时,当android应用程序告诉我时,我停止发送并继续发送。
很好用。
谢谢你的帮助

主题已锁定