每次外围设备发出消息“ 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_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(sus_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);
}

嗨,费尔南多,
如果您不使用看门狗,应用程序会失速吗?如果是,申请停滞的位置?您是否将通知从设备发送到中央?
关于Task_App的状态,SDK更改任务task_App的状态,通常是在调用用户回调之前完成的,例如,当您开始使用API APP_EASY_GAP_GAP_ENDIREDECTED_ADVERTISE_START()开始广告时,此使用ke_state_set(task_app_app,app_connectable);为了将task_app设置为可连接,此函数ke_state_set()也将在设备连接时使用。
谢谢mt_dialog
是的,即使禁用了WDT,应用程序也会失速。当它失速时,PC指向“ global_int_start();”。
我正在向中央发送通知。
嗨,费尔南多,
如本文所述https://support.dialog-spoomendonductor.com/forums/post/dialog-smartbond-bl ...由于您的设备没有任何地方,因此它只能无所事事地运行。在回调中,当实际断开连接发生时,设备指示开始广告吗?
谢谢mt_dialog
在我的用例中,当发生断开连接时,周围不应重新启动广告。它只能在计时器耗时时重新启动广告,这意味着它有新数据要发送到中央。
因此,在我将链接与外围设置断开连接之后,它要做的就是等待计时器时间。在后台运行的计时器没有什么意思?
嗨,费尔南多,
如果您不使用睡眠模式,这意味着580保持清醒,如果设备保持清醒而无需做任何事情(计时器只是在返回的手臂中计数,则手臂无需做任何事情,因此它在WFI()中等待)。然后看门狗将击中。如果您将设备处于睡眠模式,那么看门狗将冻结,并且您的计时器将继续计数。
谢谢mt_dialog