⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
8个帖子/ 0新
最后一篇
ciano
离线
最后一次露面:1周4天前
加入:2014-10-03 08:13
App Easy Timer.

你好对话框

我正在使用“app_easy_timer_modify()”,我有一些问题修改后修改的计时器运行。
当当前超时与对app_easy_timer_modify()的调用碰撞时,发生了我的问题。
我设法通过更改Call_callback()函数来解决问题:

静态void call_callback(const timer_hnd timer_id)
{
如果app_easy_timer_hnd_is_valid(timer_id)
{
if(timer_callbacks [app_easy_timer_hnd_to_idx(timer_id)]!= null)
{
timer_callback fn = timer_callbacks [app_easy_timer_hnd_to_idx(timer_id)];
if(fn!= timer_modified_handler)
{
timer_callbacks [app_easy_timer_hnd_to_idx(timer_id)] = null;
modified_timer_callbacks [app_easy_timer_hnd_to_idx(timer_id)] = null;
}
fn();
}
}
别的
{
assert_warning(0);
}
}

所以现在我测试超时是否在当前正在修改的计时器上,如果是,则我不会删除/ null到回调函数。
首先,如果在这种情况下,它们设置为null,那么阵列索引将免费为要创建的其他计时器,这是错误的,因为定时器正在修改,因此索引正在重用。所以在同一时间创建一个新的计时器勾选,会导致问题。
其次,如果设置为NULL,则CANCEL_TIMER_HANDLER()中的修改过程命名为“else(timer_callbacks [i] == timer_modified_modified_handler)”不起作用,并且修改的计时器永远不会使用新延迟重启。

您能否确认我的观察,并确认我的修正?
我的修正吗?
或者我应该做别的事情来实现这个工作吗?

此致,
Ciano Frost.

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

嗨Ciano,

我假设您提到了计时器即将经过的情况,但App_easy_timer_modify()已经成功地设法将回调更改为虚拟回调,因此当计时器实际上经过它将执行虚拟回调而不是实际回调?是你所指的情况?我不确定是否有这样的东西,因为它可以在更改回调之前清除定时器,因此永远不会发生虚拟回调。如果您正在遇到这样的内容,那么它的竞赛条件,修复程序看起来它涵盖了一定时间,即问题可能发生,但我无法确定它是否会覆盖所有定时情况。我会在SDK团队中发出一张票,但作为一个要求,我希望您报告您是否可以复制什么?如果可以复制,请您可以共享代码以便在我们身边复制这一点?

谢谢mt_dialog.

ciano
离线
最后一次露面:1周4天前
加入:2014-10-03 08:13
你好对话框

你好对话框

是的,我能够复制计时器问题。
是的,我可以尝试选择代码,这会导致问题发生,因此您将拥有一个小的示例,可再现问题。虽然我需要一些时间。

此致,
ciano

ciano
离线
最后一次露面:1周4天前
加入:2014-10-03 08:13
嗨对话框,

嗨对话框,

你有任何“无公共”的地方,我可以上传代码,它可以复制这个问题吗?

此致,
Ciano Frost.

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

嗨Ciano,

请使用此链接以上传文件https://diasemi.egnyte.com/ul/def6jr26jd.

谢谢mt_dialog.

ciano
离线
最后一次露面:1周4天前
加入:2014-10-03 08:13
嗨对话框

嗨对话框

已发送复制问题的代码。

此致,
Ciano Frost.

ciano
离线
最后一次露面:1周4天前
加入:2014-10-03 08:13
你好对话框,

你好对话框,

你一直在寻找,我们发给你的代码吗?

此致,
Ciano Frost.

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

嗨Ciano,

我发送了在SDK团队中复制问题的代码,以便检查一下并修复SDK上存在的任何问题,就是我的代码,我没有看到可能由您放置在Call_callback中的mod引起的任何问题。您只需使用旧计时器执行虚拟回调,并且将创建具有修改值的新计时器,并将其过期,因为它应该使用以前的回调。我想你会好的。

谢谢mt_dialog.