app_easy_timer重置后不起作用

5个帖子/ 0新
最后一篇
Wisilica.
离线
最后一次露面:10个月3周前
加入:2015-03-17 08:16
app_easy_timer重置后不起作用

嗨对话框,

我正在研究BLE_APP_PERITELAL项目。我正在发布特定持续时间的app_easy_timer。在此持续时间内,设备正在从观察者到广播公司的角色切换角色,反之亦然,次数,次数发出了许多GAPM_RESET_Commands。出现的问题是,计时器的句柄不会被调用。请建议同样的解决方案。

提前致谢,
Wisilica.

设备:
mt_dialog.
离线
最后一次露面:2个月3周前
职员
加入:2015-06-08 11:34
嗨Wisilica,

嗨Wisilica,

你怎么知道计时器的处理程序没有被调用?我想在开始特定角色时,您正在设置计时器,然后从处理程序中发出GAPM_RESET命令,然后再次启动新角色的开始。那么你在你的代码究竟发出计时器?例如,如果计时器在.app_on_init()回调函数中,则在该函数之后发出GAPM_RESET,并且在内核队列中的所有消息都被刷新,包括计时器,并且在该命令之前发出的所有定时器之后一般地刷新。冲洗。因此,您必须检查定时器是否确实设置,并且在定时器已过时之前不会调用GapM_RESET。

谢谢mt_dialog.

Wisilica.
离线
最后一次露面:10个月3周前
加入:2015-03-17 08:16
你好,

你好,

该场景是计时器1,并且定时器2被启动,以便在说明3SEC和500ms并且设备是广告分组的持续时间。定时器2的回调重置间隙并切换到扫描模式。在扫描模式下,为500ms创建定时器2,并在回调重置间隙中并切换到ADV模式。因此,计时器2将在扫描和广告之间交替。在Timer1的回调中,删除计时器2,并且设备停止广告并睡眠。
在此,计时器2将正常工作,因为在角色交换机后创建并在逻辑开关完成后下次创建时。

根据您的回复,如果每当差距角色切换发生时刷新时机,我们怎样才能跟踪时间?是否有任何方法可以识别,对计时器的时间有更多的时间?我们有要求跟踪角色交换机之间的时间。

mt_dialog.
离线
最后一次露面:2个月3周前
职员
加入:2015-06-08 11:34
嗨Wisilica,

嗨Wisilica,

由于当我提到的GapM_Reset发生的情况下,重置整个堆栈,以便您在不同的角色配置设备,因此定时器被刷新。从描述的场景(如果我纠正了我的错误),您希望作为中央和外围设备(如此广告和扫描),并在每5毫秒的每两个角色之间切换,总共3秒。我发现你的问题是在切换过程中刷新定时器1,因此您的目标是在睡觉前的3秒操作。所以对于此,您有以下选项:

  • 计算切换,如果每个角色应该持续500ms,那么你可以计算你转换的次数,例如3秒对应于6个交换机,我想这是最可靠的方式。
  • 您可以做的另一件事是读取并存储在切换发生之前的基本时间计数器(LLD_EVT_TIME_GET())的值(使您在交换机之后没有零)并在要切换时检查累积值,如果它比您的预定义的时间大,可以将您的设备睡眠。

谢谢mt_dialog.

Chris0409.
离线
最后一次露面:3年10个月前
加入:2017-01-11 05:59
嗨,Wisilica,

嗨,Wisilica,
我有一个相同的场景,因为您需要更改观察者和律师之间的角色。我使用一个按钮要触发重置动作,并发送重置cmd并重新配置设备的角色,但是当堆栈总是在nmi_handlerc崩溃时,所以我认为我的过程有点问题,你能分享你吗?我的代码参考,我一直困惑这个问题,非常欣赏!谢谢,我的邮件是gjhe0409@163.com.