断开连接后的看门狗超时

6个帖子/ 0新
最后一篇
费尔南多耗费
离线
最后一次露面:1年5个月前
加入:2014-11-14 13:50
断开连接后的看门狗超时

每次外设发出消息“GAPC_DISCONNECT_CMD”时,我的应用程序都断开了来自中央的连接,而且由于看门狗超时而崩溃。
断开消息在10(使用计时器)不活动之后发出(无数据发送,往返客户端)。如果我禁用WDT,则应用程序也不正确行为。
看门狗设置为ff。
有什么我可能遗漏的,在断开连接之前我应该​​怎么做?

一个问题,当一个问题“Gapc_disconnect_cmd”时,“task_app”状态会设置为非连接状态,如“app_disabled”或“app_connectable”?
如果没有,它如何以及何时可以再次设置?在发出“GAPC_DISCONNECT_CMD”时,我应该更改“TASK_APP”状态?

**********************************************************************************************************
静态int glps_req_cmp_evt_handler(ke_msg_id_t const msgid,
struct glps_req_cmp_evt const * param,
ke_task_id_t const dest_id,
ke_task_id_t const src_id)

{
user_inact_timer = app_easy_timer(meas_inact_update,user_inact_timer_cb);
}
*********************************************************************************************************
静态int glps_racp_req_ind_handler(ke_msg_id_t const msgid,
struct glps_racp_req_ind const * param,
ke_task_id_t const dest_id,
ke_task_id_t const src_id)

{
app_easy_timer_cancel(user_inact_timer);
}
*********************************************************************************************************
静态void user_inact_timer_cb()
{
uint8_t state = ke_state_get(task_app);

//检查我们是否处于连接状态
if((state == app_security)||(state == app_connected)||(state == app_param_upd)))
{
//断开链接
user_disconnect();
}
}
*********************************************************************************************************
void user_disconnect(void)
{
struct gapc_disconnect_cmd * cmd = ke_msg_alloc(gapc_disconnect_cmd,
task_gapc,task_app,
gapc_disconnect_cmd);

cmd->操作= gapc_disconnect;
cmd->原因= co_error_remote_dev_power_off;

// ke_state_set(task_app,app_disabled);

ke_msg_send(cmd);
}

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

嗨费尔南多,

如果您不使用看门狗,应用程序是否会丢弃?如果是,应用程序摊位的地方?您是否从您的设备向中央发送通知?

关于Task_App的状态,SDK更改任务Task_App的状态,通常这是在调用用户回调之前完成的,例如,当您使用API​​ App_easy_gap_undirectect_advertise_start()启动kadvertise_start()使用ke_state_set(task_app,app_connectable);为了将Task_App设置为可连接,此功能ke_state_set()也会在设备连接时使用。

谢谢mt_dialog.

费尔南多耗费
离线
最后一次露面:1年5个月前
加入:2014-11-14 13:50
是的,应用程序摊位

是的,即使使用WDT禁用,应用程序摊位也是如此。当它停止PC指向“global_int_start();”。
我正在向中央发送通知。

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

嗨费尔南多,

正如这篇文章所述https://support.dialog-semicondiondiondum/forums/post/dialog-smartbond-bl ...由于您的设备并不粘在一起,因此它只是没有任何事情要做。在发生实际断开时的回调中是指示开始通告的设备?

谢谢mt_dialog.

费尔南多耗费
离线
最后一次露面:1年5个月前
加入:2014-11-14 13:50
在我的用例中a

在我的用例中发生断开时,外围设备不应重启广告。它应该只重启一个定时器超时的广告,这意味着它有新数据要发送到Central。
因此,在我断开外设与外设的连接之后,它必须做的就是等待计时器。在后台运行的计时器意味着什么?

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

嗨费尔南多,

如果您不使用睡眠模式,这意味着580保持清醒,如果设备保持清醒,而不会做任何事情(一个计时器只是在Backgroung中计数,ARM在WFI中没有做任何事情,那么它就在WFI()困扰然后看门狗将击中。如果将设备放在睡眠模式下,那么看门狗将冻结,您的计时器将继续计数。

谢谢mt_dialog.