yabo国际娱乐Dialog半导体客户支持-应用程序\u easy\u timer\u cancel https://support.dialog-semiconductor.com/resource-keywords/appeasytimercancel 应用程序\u easy\u计时器\u取消检查是否过期 https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bluetooth-low-energy-%E2%80%93-software/appeasytimercancel-checking-if-expired

嗨,在应用程序上启动一个定时器,在连接上。此计时器在给定时间后终止连接。如果用户在计时器关闭之前断开,则应取消计时器。这在用户在计时器关闭之前断开连接时有效,但当计时器处理程序终止连接时,它会给我一个错误。
据我所知,由于传递给应用程序的计时器id“easy”计时器取消在计时器过期时无效。但是我想添加一个检查,比如if(conn\u timeout!=EASY\u TIMER\u INVALID\u TIMER{..}将处理此问题。

1.)有人能告诉我为什么应用程序轻松u TIMER\u取消仍然执行,即使我刚才检查了有效性?这是从应用程序断开连接时执行的代码的片段。

printf\u字符串(“用户断开连接\n\r“)
如果(conn\u超时!=EASY\u TIMER\u imiter无效{
取消计时器
printf\u字符串(“由于用户断开连接而取消了conn\u超时”)
应用程序轻松u timer_ucancel(conn\u超时)
}

2.)我使用Keil的手表工具来监视conn\u timeout的值。它最初是0x00,如果在计时器关闭之前连接和断开连接,则保持此值。但是,当计时器超时并执行conn\u超时回调时,conn\u timeout将保持值0x03。即使我继续软件(在void app\u easy\u timer\u cancel(const timer\uhnd timer\u id))中的ASSERT_WARNING(0)上卡住后),它仍然保持在此值。此外,仍可以连接和断开连接。这样做(比计时器周期快)也不会改变值0x03。
这个值是什么意思?当计时器关闭或计时器取消时,该值是否应重置为0x00?

问候,
Niek

设备:>
设备:
2017年7月19日星期三19:38:13+0000 尼克夫德 69370,位于https://support.dialog-semiconductor.com https://support.dialog-semiconductor.com/forums/post/dialog-smartbond-bluetooth-low-energy-%E2%80%93-software/appeasytimercancel-checking-if-expired#comments