GAPM不会发送回来的gapm_cmp_evt

7个职位/0个新职位
最后一篇文章
梅里奥伦
离线
最后一次见到:3年7个月前
已加入:2015-08-12 13:45
GAPM不会发送回来的gapm_cmp_evt

嗨对话框,

我有一个外围应用程序,需要我通过停止当前广告来快速更新广告
然后在GAPM\u CMP\u EVT(undirected/non\u connectable adv complete)回调到来之后用一个新数据重新启动它。

然而,我在DA14580(村田包装)上观察到一个奇怪的行为
在统计上很小的机会,有一段时间,GAPM不返回我的应用程序\u容易\u差距\u广告\u停止()。
并在发生这种情况后继续这样做(该问题只能在硬件重置后修复)。

很难重现这一点,这就是为什么我不能确切地告诉什么样的条件时,这发生了。还在努力。

我的问题是,是否有任何类似的已知错误(GAPM不发回adv complete的GAPM\u CMP\u EVT,即使TASK\u LLM在LLM\u广告上)在
SDK 5.0.3版?

谢谢

设备:
梅里奥伦
离线
最后一次见到:3年7个月前
已加入:2015-08-12 13:45
仅供参考,

仅供参考,

发生这种情况后,任务状态似乎正常。
GAPM在GAPM\u IDLE,TASK\LLM在LLM\u advicting(实际上是在广告非连接adv),TASK\u LLC在LLC\u FREE。
但是,GAPM不会返回GAPM\u CMP\u EVT来响应app\u easy\u gap\u adverside\u stop()。
甚至计时器也在工作。。

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

你好,梅里奥伦,

你的问题是,通过发出app_easy_gap_adverting_stop()在停止广告之后,广告永远不会停止,所以处理程序与gapm_cmp_evt永远不会触发?我们没有任何报告这种行为。也许你可以给我一些关于你开始和停止广告程序的快速以及如何实现这种功能的信息?还可以让我知道你正在使用的SDK(SDK5哪个版本)和你的项目在哪个示例基于,也会发生这种情况?

谢谢mt_dialog.

梅里奥伦
离线
最后一次见到:3年7个月前
已加入:2015-08-12 13:45
对。我有两种

对。我有两种广告,
1无向(可连接)广告,间隔50ms(intv 80),每400ms更新一次数据。
2不可连接(信标)广告,间隔100ms(intv 160),每150ms更新一次数据。
是的,我知道,我把间歇时间推到了极限。

这2个播发具有2种操作模式,在连接期间,仅播发信标(仅信标模式),并且在断开连接期间,播发在1和2之间切换(切换模式)。

要更新播发数据,首先通过检查TASK\LLM检查播发是否启动,如果是LLM\u播发,则发送取消(stop)消息,
等待GAPM\u CMP\u EVT消息(adv\u complete with GAPP\u ERR\u CANCELLED status),然后立即再次开始广告。

断开连接后出现问题,断开连接后,我切换到切换模式(这是通过从另一个微控制器发送UART消息异步完成的),
像往常一样,切换到切换模式会发生:它会查看我现在是否在做广告,当它发送app\u easy\u gap\u advertising\u stop()时停止,然后在
一个GAPM\u CMP\u EVT(adv\u complete w/GAP\u ERR\u CANCELLED)提示。但有时甚至没有线索。

在再次调试一下进一步时,我知道几件事:
1发生这种情况后,将返回stop命令,而不是返回GAPM\u CMP\u EVT adv\u complete,返回GAPM\u CMP\u EVT GAPM\u cancel,不允许使用GAPM\u ERR\u命令(0x43)。不管我们试了多少次。
2就在这之前,突然出现了一个GAPM\u CMP\u EVT adv\u complete with GAPM\u ERR\u PROTOCOL\u PROBLEM(0x41)。在论坛的某个地方,我查到有类似的问题与定向广告关于这一点的原因是广告间隔,这不是。我怀疑这会导致第一个问题的出现。然而,在我的例子中,在0x41出现之后,问题1确实出现了。
三。有时,GAPM甚至会停留在GAPM繁忙的空气中,停止响应任何命令。

我们使用的是来自barebone示例的sdk5.0.3。而这个问题在100次断线中大约发生3到4次。

梅里奥伦
离线
最后一次见到:3年7个月前
已加入:2015-08-12 13:45
哦,是的,整个100年

哦,是的,在100次断开连接的过程中,0x41状态只出现过一次。之后,我的广告停止命令总是返回0x43状态。

谢谢

乔奇姆韦
离线
最后一次见到:1年4个月前
格鲁鲁
已加入:2014-01-14 06:45
你能做的第一件事就是

您可以做的第一件事是尽量避免检查Task_LLM的任务状态。由于分层体系结构和消息传递,您的App任务所看到的状态根据检索到的最新消息可能不会与内部任务同步。你应该让自己追踪州。例如,如果您开始通告您设置了一个广告正在进行的变量,并且一旦您获得GapM_CMP_EVT告诉广告已停止,您可以清除该变量。

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

你好,梅里奥伦,

您可以按照Joacimwe的建议尝试一个由您定义的变量,或者您可以尝试使用ke\u state\u get()检查应用程序任务\u APP的状态当设备正在播发时,您应该处于APP\u CONNECTABLE模式。从堆栈的回复中,我假设您正在发送堆栈在当前操作模式下无法执行的命令。

谢谢mt_dialog.