app_easy_timer_cancel检查是否已过期

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
4个帖子/ 0新
最后一篇
niekvdd.
离线
最后一次露面:2年2个月前
加入:2017-01-25 09:29
app_easy_timer_cancel检查是否已过期

你好呀,

我在app_onconnection上启动计时器。此计时器在给定的时间内终止连接。如果用户在计时器经过之前断开连接,则应取消计时器。这在用户在计时器经过之前断开连接的情况下工作,但当定时器处理程序终止连接时,它会给我出错。
对于我的理解,由于传递给app_easy_timer_cancel的Timer_ID在计时器已过期时无效。然而,我想添加一个类似于(conn_timeout!= easy_timer_invalid_timer){..}会照顾这个问题。

1.)有人可以告诉我为什么App_easy_timer_Cancel仍然被执行,尽管我以前检查有效性吗?这是来自App_on_disconnect执行的代码的代码段。

printf_string(“用户断开连接!\ n \ r”);
if(conn_timeout!= eyle_timer_invalid_timer){
//取消计时器
printf_string(由于用户\ n \ n \ n \ n inspection conn_timeout被取消));
app_easy_timer_cancel(conn_timeout);
}

2.)我使用Keil的手表工具密切关注Conn_Timeout的值。它最初是0x00,如果在计时器经过之前连接和断开连接,则保持此值。但是,当计时器进行时间并执行CONN_TIMEOUT的回调时,CONN_TIMEOUT会保留值0x03。它即使我继续该软件(在Void App_easy_timer_cancel(const timer_hnd timer_id)中陷入困境之后,它会留下此值连接和断开也可能。执行此操作(比计时器周期更快)也不会对值0x03进行更改。
这个值是什么意思?当计时器经过或取消计时器时,该值并不是该值被重置为0x00?

亲切的问候,
niek.

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

嗨niekvdd,

1)设置计时器的计时器时,当定时器经过存储定时器句柄的句柄变量时不会获得无效值,如果您不知道更改它,则检查的定时器句柄仍然存在有效的计时器ID计时器的回调。例如,当计时器经过并执行回调时,在计时器中的回调存储中处理无效值,并且在使用app_easy_timer_cancel()之前检查该句柄中存储的值是否有效。

2)如上所述,存储定时器句柄的变量在应用程序级别中,除非您明确地进行定时器,否则不会更新。

谢谢mt_dialog.

niekvdd.
离线
最后一次露面:2年2个月前
加入:2017-01-25 09:29
嗨mt_dialog,

嗨mt_dialog,

将计时器处理程序设置为easy_timer_invalid_timer修复了问题。
谢谢您的帮助!

你可以告诉我我可以在哪里找到easy_timer_invalid_timer这样的定义吗?
在UM-B-050中,NOR UM-B-051是easy_timer_invalid_timer的定义。我错过了一些文件吗?
我通过论坛知道这个值,但我认为将有更多识别的返回值,如easy_timer_invalid_timer。
(就像我之前问过的那样,当定时器处理程序有效时它返回0x03;我可以在某个地方找到这些值的意思吗?)

亲切的问候,
niek.

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

嗨niekvdd,

我不认为有任何文档,提到定义,并非记录了SDK的所有定义和API。设置计时器时返回的值只是ID值,只要它们与Easy_Timer_Invalid_Timer不同,其有效的计时器ID。

谢谢mt_dialog.