Sifli-sdk:v2.4.6 Lvgl: v9 v9.2.0
1.Ble:
case BLE_DATATRANS_COLLECT_DATA_VALUE:
{
// Store value that remote device writes
uint32_t old_val = env->data.data;
LOG_HEX("BLE RX", 16, para->value, para->len);
// if (para->len <= 4)
// memcpy(&env->data.data, para->value, para->len);
// LOG_I("Updated app value from:%d to:%d", old_val, env->data.data);
// ble_app_start_send_thread();
LOG_D("\_DATATRANS_COLLECT_DATA!!!");
// gui_app_cleanup();
vsm_msg_t\* vsm = lv_malloc(sizeof(vsm_msg_t));
vsm->type = para->value\[1\];
vsm->collect_type = para->value\[0\];
LOG_D("type:%d, collect:%d",para->value\[1\], para->value\[0\]);
bool ecg_active = gui_app_is_actived("app_ecg");
bool collect_active = gui_app_is_actived("app_collect");
gui_runing_app_t\* curRunningApp = gui_app_get_actived();
LOG_D("cur app Id:%s", curRunningApp->id);
if(vsm->type == 1)
{
gui_app_cleanup_now();
}
LOG_D("Active: ecg:%d, collect:%d",ecg_active, collect_active);
if(!ecg_active && !collect_active)
{
LOG_D("APP ECG IS NOT ACTIVE JUMP ECG MAIN PAGE");
// gui_app_self_exit();
gui_app_run("app_ecg");
// \_ui_screen_change(&ui_ecg, LV_SCR_LOAD_ANIM_FADE_ON, 100, 0, &app_ecg_init);
lv_async_call(ecg_opearation_from_ble_cb, vsm);
}
if(ecg_active)
{
LOG_D("ECG MAIN PAGE!");
lv_async_call(ecg_opearation_from_ble_cb, vsm);
}
if(collect_active)
{
LOG_D("ECG COLLECT MAIN PAGE!");
if( vsm->type == 0)
{
lv_async_call(collect_opearation_from_ble_cb, vsm);
}else{
LOG_D("JUMP ECG MAIN PAGE!");
lv_async_call(ecg_opearation_from_ble_cb, vsm);
}
}
lv_free(vsm);
break;
}
2.app:
app 1:
static void wait_collect_interval_timer(lv_timer_t *task)//延迟启动, 时长3s
{
// gui_app_cleanup_now();
gui_app_run("app_collect");
// gui_app_exit(“app_ecg”);
if (COMMON_APP_RET_OK != app_msg_send(APP_TASK_VSM, ecg_msg)) {
LOG_D("Collect Data Msg: app_msg_send() Fail");
}
lv_timer_delete(collect_task);
}
extern void ecg_opearation_from_ble_cb(void *data)
{
LOG_D("ECG BLE CB!!!");
vsm_msg_t\* vsmOp = (vsm_msg_t\*)data ;
LOG_D(“User Op: Type: %d, Collect: %d”,vsmOp->type, vsmOp->collect_type);
// \_ui_screen_change(&ui_collect, LV_SCR_LOAD_ANIM_FADE_ON, 100, 0, &ui_ecg_collect_init);
ecg_msg.main_task_type = APP_TASK_VSM;
ecg_msg.u.vsm_msg.collect_type = vsmOp->collect_type;
ecg_msg.u.vsm_msg.type = vsmOp->type;
// gui_app_run(“app_ecg”);
collect_task = lv_timer_create(wait_collect_interval_timer, 3000, (void \*)0);
}
app2:
static void result_wait_time(lv_timer_t *task)//定时更新指针角度,刷新时钟显示,处理相关图像效果,记录时间状态
{
gui_app_cleanup_now();
gui_app_run("ecg_result");
// gui_app_exit(“app_collect”);
lv_timer_delete(result_task);
LOG_D("result_task Delete Timer!");
result_task = NULL;
// lv_screen_load_anim(ui_result, LV_SCR_LOAD_ANIM_NONE, 0, 0, true);
}
void collect_opearation_from_ble_cb(void *data)
{
LOG_D("Collect operation CB");
vsm_msg_t\* vsmOp = (vsm_msg_t\*)data ;
LOG_D("User Op: Type: %d, Collect: %d",vsmOp->type, vsmOp->collect_type);
common_app_msg_t collect_msg;
collect_msg.main_task_type = APP_TASK_VSM;
collect_msg.u.vsm_msg.collect_type = vsmOp->collect_type;
collect_msg.u.vsm_msg.type = vsmOp->type;
if (COMMON_APP_RET_OK != app_msg_send(APP_TASK_VSM, collect_msg)) {
LOG_D("Collect Data Msg: app_msg_send() Fail");
}
// gui_app_run(“app_ecg”);
lv_timer_del(countdown_task);
countdown_task = NULL;
lv_label_set_text(coundown_time, "0");
result_task = lv_timer_create(result_wait_time, 3000, (void \*)0);
}
app3:
static void result_show_time(lv_timer_t *task)//定时更新指针角度,刷新时钟显示,处理相关图像效果,记录时间状态
{
// lv_obj_clean(ui_result);
lv_timer_delete(result_show_task);
LOG_D("result_show_task Delete Timer!");
result_show_task = NULL;
// lv_obj_add_flag(ui_result, LV_OBJ_FLAG_HIDDEN);
// gui_app_remove_page(“ecg_result”);
gui_app_run("app_icons");
// gui_app_exit(“ecg_result”);
// lv_screen_load_anim(ui_ecg, LV_SCR_LOAD_ANIM_NONE, 100, 0, false);
}
页面是从BLE 发起的, 第一次ble 发起开始指令, 清掉所有running app, 拉起app1. 等3s, 清掉app1, 拉起app2. 在这个界面维持1min, ble 发起结束指令。等3s,清掉app 2, 拉起APP3. app3 目前是个假界面,仅显示。等3s ,清掉app3, 跳到app_icon(或其他界面)。 再从ble 发起开始指令,就会一直卡在app1.
uart:
[11:08:45.441]收←◆D/HEX BLE RX: 0000-0010: 01 01 ..
[2946477] D/ble_datatrans KE_EVT2: _DATATRANS_COLLECT_DATA!!!
[2946502] D/ble_datatrans KE_EVT2: type:1, collect:1
[2946523] D/ble_datatrans KE_EVT2: cur app Id:app_icons
[2946545] I/APP.FWK KE_EVT2: gui_app_cleanup_now Start
[2946568] D/APP.FWK KE_EVT2: send msg[GUI_APP_MSG_CLEANUP] [0x0] to gui_app_mbx tick:90045.
[2946603] D/APP.SCHE KE_EVT2: ----------------app_schedule_task---------------start
[2946634] I/APP.SCHE KE_EVT2: >>Execute msg[GUI_APP_MSG_CLEANUP] tick:90045
[2946662] D/APP.SCHE KE_EVT2: Stop all app
[2946684] D/APP.SCHE KE_EVT2: app_destory [app_icons]
[2946705] D/APP.SCHE KE_EVT2: page[app_icons][root] tgt_state [RESUMED] → [STOPED]
[2946737] D/APP.SCHE KE_EVT2: app[app_icons] tgt_state [RUNNING] → [DESTORYED]
[2946767] D/APP.SCHE KE_EVT2: app_destory [ecg_result]
[2946787] D/APP.SCHE KE_EVT2: page[ecg_result][root] tgt_state [PAUSED] → [STOPED]
[2946818] D/APP.SCHE KE_EVT2: app[ecg_result] tgt_state [RUNNING] → [DESTORYED]
[2946850] I/APP.SCHE KE_EVT2: page[app_icons][root] do ONPAUSE, 2005c124
[2946878] I/APP.SCHE KE_EVT2: page[ecg_result][root] do ONSTOP, 2004dc60
[2946906] D/[ECG_RESULT] KE_EVT2: ECG Result: Destory!
[2946948] D/APP.SCHE KE_EVT2: app[ecg_result] remove&free page[root] 2004dc60
[2946978] I/APP.SCHE KE_EVT2: app[ecg_result] do SUSPEND, 2004dd5c
[2947004] I/APP.SCHE KE_EVT2: page[app_icons][root] do ONSTOP, 2005c124
[2947082] D/APP.SCHE KE_EVT2: app[app_icons] remove&free page[root] 2005c124
[2947111] I/APP.SCHE KE_EVT2: app[app_icons] do SUSPEND, 2006b068
[2947136] I/APP.SCHE KE_EVT2: app[app_icons] do DESTROY, 2006b068
[2947162] I/APP.SCHE KE_EVT2: app[ecg_result] do DESTROY, 2004dd5c
[2947187] D/APP.SCHE KE_EVT2: app_schedule_task done.
[2947207] I/APP.FWK KE_EVT2: gui_app_cleanup_now Cnt 2
[2947228] I/APP.FWK KE_EVT2: gui_app_cleanup_now Done.
[2947249] D/ble_datatrans KE_EVT2: Active: ecg:0, collect:0
[2947271] D/ble_datatrans KE_EVT2: APP ECG IS NOT ACTIVE JUMP ECG MAIN PAGE
[2947301] D/APP.FWK KE_EVT2: send msg[GUI_APP_MSG_RUN_APP] [app_ecg] to gui_app_mbx tick:90067.
[2947338] I/APP.FWK.INT KE_EVT2: [app_ecg]
[2947355] I/APP.FWK KE_EVT2: gui_app_run: id:app_ecg, err:0
[2947384] D/[UI_ECG] watch: ECG BLE CB!!!
[2947400] D/[UI_ECG] watch: User Op: Type: 1, Collect: 1
[2947745] D/APP.SCHE watch: ----------------app_schedule_task---------------start
[2947777] I/APP.SCHE watch: >>Execute msg[GUI_APP_MSG_RUN_APP] tick:90067
[2947806] I/APP.SCHE watch: app[app_ecg] do LOAD, 2004dd5c
[2947829] I/APP.FWK watch: finding app_ecg in builtin apps…
[2947853] D/APP.SCHE watch: app[app_ecg] tgt_state [LAUNCHED] → [RUNNING]
[2947882] I/APP.SCHE watch: app[app_ecg] do START, 2004dd5c
[2947905] I/APP.FWK.INT watch: [app_ecg]
[2947922] D/APP.FWK watch: send msg[GUI_APP_MSG_OPEN_PAGE] [0x2004dd5c] to gui_app_mbx tick:90086.
[2947959] D/APP.SCHE watch: running apps idx[0]:[app_ecg].
[2947982] D/APP.SCHE watch: running apps idx[0]:[app_ecg].
[2948004] I/APP.SCHE watch: >>Execute msg[GUI_APP_MSG_OPEN_PAGE] tick:90086
[2948035] D/APP.SCHE watch: app[app_ecg] create page[root] 2005b82c
[2948062] D/APP.SCHE watch: page[app_ecg][root] tgt_state [CREATED] → [RESUMED]
[2948094] D/APP.SCHE watch: Pause all app, and resume to app_ecg app
[2948121] D/APP.SCHE watch: running apps idx[0]:[app_ecg].
[2948156] I/APP.SCHE watch: page[app_ecg][root] do ONSTART, 2005b82c
[2948184] D/[UI_ECG] watch: ECG Create!
ui_titlegroup_create
ui_titlegroup_create title
ui_titlegroup_create subtitle
ui_titlegroup_create finish
[2948528] D/APP.SCHE watch: running apps idx[0]:[app_ecg].
[2948553] D/APP.SCHE watch: running apps idx[0]:[app_ecg].
[2948578] I/APP.SCHE watch: page[app_ecg][root] do ONRESUME, 2005b82c
[2948605] D/[UI_ECG] watch: ECG : Resume!
[2948622] I/APP.SCHE watch: Try setup trans-anim
[2948641] I/APP.SCHE watch: Trans-anim is OFF, skip.
[2948663] D/APP.SCHE watch: running apps idx[0]:[app_ecg].
[2948685] D/APP.SCHE watch: running apps idx[0]:[app_ecg].
[2948708] D/APP.SCHE watch: running apps idx[0]:[app_ecg].
[2948731] D/APP.SCHE watch: app_schedule_task done.
[11:08:48.468]收←◆[3045610] D/APP.FWK watch: send msg[GUI_APP_MSG_RUN_APP] [app_collect] to gui_app_mbx tick:93073.
[3045651] I/APP.FWK.INT watch: [app_collect]
[3045669] I/APP.FWK watch: gui_app_run: id:app_collect, err:0
[11:08:48.495]收←◆[3046491] D/APP.SCHE watch: ----------------app_schedule_task---------------start
[3046521] I/APP.SCHE watch: >>Execute msg[GUI_APP_MSG_RUN_APP] tick:93073
[3046552] I/APP.SCHE watch: app[app_collect] do LOAD, 20072858
[3046576] I/APP.FWK watch: finding app_collect in builtin apps…
[3046602] D/APP.SCHE watch: app[app_collect] tgt_state [LAUNCHED] → [RUNNING]
[3046632] I/APP.SCHE watch: app[app_collect] do START, 20072858
[3046659] I/APP.FWK.INT watch: [app_collect]
[3046679] D/APP.FWK watch: send msg[GUI_APP_MSG_OPEN_PAGE] [0x20072858] to gui_app_mbx tick:93105.
[3046716] D/APP.SCHE watch: running apps idx[0]:[app_collect].
[3046740] D/APP.SCHE watch: running apps idx[1]:[app_ecg].
[3046762] D/APP.SCHE watch: running apps idx[0]:[app_ecg].
[3046785] D/APP.SCHE watch: running apps idx[1]:[app_collect].
[3046808] I/APP.SCHE watch: >>Execute msg[GUI_APP_MSG_OPEN_PAGE] tick:93105
[3046839] D/APP.SCHE watch: app[app_collect] create page[root] 2006e504
[3046866] D/APP.SCHE watch: page[app_collect][root] tgt_state [CREATED] → [RESUMED]
[3046898] D/APP.SCHE watch: Pause all app, and resume to app_collect app
[3046925] D/APP.SCHE watch: page[app_ecg][root] tgt_state [RESUMED] → [PAUSED]
[3046955] D/APP.SCHE watch: running apps idx[0]:[app_ecg].
[3046977] D/APP.SCHE watch: running apps idx[1]:[app_collect].
[3047002] I/APP.SCHE watch: page[app_ecg][root] do ONPAUSE, 2005b82c
[3047028] D/[UI_ECG] watch: ECG: Pause!
[3047067] I/APP.SCHE watch: page[app_collect][root] do ONSTART, 2006e504
[3047095] D/[UI_COLLECT] watch: ECG COLLECT: Create!
[3047115] D/[UI_COLLECT] watch: ui_ecg_collect_init
[3047421] D/APP.SCHE watch: running apps idx[0]:[app_ecg].
[3047446] D/APP.SCHE watch: running apps idx[1]:[app_collect].
[3047470] D/APP.SCHE watch: running apps idx[0]:[app_ecg].
[3047492] D/APP.SCHE watch: running apps idx[1]:[app_collect].
[3047518] I/APP.SCHE watch: page[app_collect][root] do ONRESUME, 2006e504
[3047547] D/[UI_COLLECT] watch: COLLECT : Resume!
[3047586] D/[UI_COLLECT] watch: COLLECT TIMER START
[3047607] I/APP.SCHE watch: Try setup trans-anim
app_anim_buf_alloc: 0x603252f0 index 0 size 351000
[3047661] I/APP.ANI watch: buf = 603252f0
[3048053] I/APP.ANI watch: app_trans_animation_obj_create = 2005c124
app_anim_buf_alloc: 0x602cf7d8 index 1 size 351000
[3048103] I/APP.ANI watch: buf = 602cf7d8
[11:08:48.625]收←◆assertion “z != ((void *)0)” failed: file “D:\OpenSiFli\sifli-sdk\external\lvgl_v9\src\libs\tiny_ttf\stb_truetype_htcw.h”, line 3160, function: stbtt__new_active
thread:watch abort!
[11:09:45.548]收←◆D/HEX BLE RX: 0000-0010: 01 00 ..
[4916104] D/ble_datatrans KE_EVT2: _DATATRANS_COLLECT_DATA!!!
[4916129] D/ble_datatrans KE_EVT2: type:0, collect:1
[4916151] D/ble_datatrans KE_EVT2: cur app Id:app_collect
[4916172] D/ble_datatrans KE_EVT2: Active: ecg:0, collect:1
[4916195] D/ble_datatrans KE_EVT2: ECG COLLECT MAIN PAGE!
[11:08:48.625]收←◆assertion “z != ((void *)0)” failed: file “D:\OpenSiFli\sifli-sdk\external\lvgl_v9\src\libs\tiny_ttf\stb_truetype_htcw.h”, line 3160, function: stbtt__new_active
thread:watch abort!
这个abort 不是必现,整个流程是一样的。 这个abort 有处理的方法没有吗?
上面的日志对应ble 发起结束到第二次发起开始的阶段,对应问题出现的位置