From: @CHENG <2393524978@qq.com> Date: Sat, 11 May 2024 01:42:58 +0000 (+0800) Subject: gengxin X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=1e4d978e1f19f712e8d75ab4fe542b30c8e50dac;p=mirrors%2FASR3603_Z5_DS.git gengxin --- diff --git a/2.sdk/sdk/gui/lv_watch/framework/language/lang_ch.c b/2.sdk/sdk/gui/lv_watch/framework/language/lang_ch.c index b8e3bf52..510940f9 100644 --- a/2.sdk/sdk/gui/lv_watch/framework/language/lang_ch.c +++ b/2.sdk/sdk/gui/lv_watch/framework/language/lang_ch.c @@ -968,6 +968,11 @@ const void * lang_text_ch[] = { "目标步数", // WATCH_TEXT_ID_GOAL_STEP, "我需要你的帮助!", // WATCH_TEXT_ID_SOS_SMS_HELP_CONTENT, "确保设备联网\n点击获取APP二维码", // WATCH_TEXT_ID_APP_QRCODE_REFRESH, + "爱体检", // WATCH_TEXT_ID_PHYSICAL_EXAMINATION, + "房颤检测", // WATCH_TEXT_ID_ATRIAL_FIBRILLATION, + "有房颤风险", // WATCH_TEXT_ID_ATRIAL_FIBRILLATION_RISK, + "无房颤风险", // WATCH_TEXT_ID_ATRIAL_FIBRILLATION_NO_RISK, + "请重新测量", // WATCH_TEXT_ID_IN_MEASURE_AGAIN, //CHENG_MODIFY "确认是否跌倒?", // WATCH_TEXT_ID_falldown, "确认是否删除", diff --git a/2.sdk/sdk/gui/lv_watch/framework/language/lang_en.c b/2.sdk/sdk/gui/lv_watch/framework/language/lang_en.c index 5d678ff7..44352503 100644 --- a/2.sdk/sdk/gui/lv_watch/framework/language/lang_en.c +++ b/2.sdk/sdk/gui/lv_watch/framework/language/lang_en.c @@ -969,6 +969,11 @@ const void * lang_text_en[] = { "Goal steps", // WATCH_TEXT_ID_GOAL_STEP, "I NEED YOUR HELP!", // WATCH_TEXT_ID_SOS_SMS_HELP_CONTENT, "Click to get qrcode", // WATCH_TEXT_ID_APP_QRCODE_REFRESH, + "Physical examination" , // WATCH_TEXT_ID_PHYSICAL_EXAMINATION, + "Atrial fibrillation", // WATCH_TEXT_ID_ATRIAL_FIBRILLATION, + "With risk", // WATCH_TEXT_ID_ATRIAL_FIBRILLATION_RISK, + "No risk", // WATCH_TEXT_ID_ATRIAL_FIBRILLATION_NO_RISK, + "Please try again", // WATCH_TEXT_ID_IN_MEASURE_AGAIN, //CHENG_MODIFY "Confirm a fall", "Confirm deletion", diff --git a/2.sdk/sdk/gui/lv_watch/include/ui_textid.h b/2.sdk/sdk/gui/lv_watch/include/ui_textid.h index f1b6abff..9d69c095 100644 --- a/2.sdk/sdk/gui/lv_watch/include/ui_textid.h +++ b/2.sdk/sdk/gui/lv_watch/include/ui_textid.h @@ -976,6 +976,11 @@ enum WATCH_TEXT_ID_GOAL_STEP, /* "目标步数" "Goal steps" */ WATCH_TEXT_ID_SOS_SMS_HELP_CONTENT, /* "我需要你的帮助!" "I NEED YOUR HELP!" */ WATCH_TEXT_ID_APP_QRCODE_REFRESH, /* "确保设备联网\n点击获取APP二维码" "Click to get qrcode" */ + WATCH_TEXT_ID_PHYSICAL_EXAMINATION, /* "爱体检" "Physical examination" */ + WATCH_TEXT_ID_ATRIAL_FIBRILLATION, /* "房颤检测" "Atrial fibrillation" */ + WATCH_TEXT_ID_ATRIAL_FIBRILLATION_RISK, /* "有房颤风险" "With risk" */ + WATCH_TEXT_ID_ATRIAL_FIBRILLATION_NO_RISK, /* "无房颤风险" "No risk" */ + WATCH_TEXT_ID_IN_MEASURE_AGAIN, /* "请重新测量" "Please try again" */ //CHENG_MODIFY WATCH_TEXT_ID_FALLDWON, /*确认是否跌倒*/ WATCH_TEXT_ID_CONFIRM_DELETE, /*确认是否删除*/ diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_atrial_fibrillation.c b/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_atrial_fibrillation.c index ff3feb4d..5b652ad3 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_atrial_fibrillation.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_atrial_fibrillation.c @@ -37,16 +37,12 @@ void health_atrial_fibrillation_display_update(void) lv_obj_set_hidden(ext->img, TRUE); lv_label_set_text_id(ext->label_info, WATCH_TEXT_ID_MEASURING); - lv_obj_align(ext->label_info, ext->cont, LV_ALIGN_IN_TOP_MID, 0, HEART_LABEL_INFO_Y); - - lv_label_set_text(ext->label_value, ext->heart_rate); - lv_obj_align(ext->label_value, ext->cont, LV_ALIGN_IN_TOP_MID, 0, HEART_LABEL_VALUE_Y-10); - lv_obj_set_hidden(ext->label_value, ((strlen(ext->heart_rate)) ? FALSE : TRUE)); - - lv_label_set_text(ext->label_value_blood, ext->blood_low_high); - lv_obj_align(ext->label_value_blood, ext->cont, LV_ALIGN_IN_TOP_MID, 0, HEART_LABEL_VALUE_Y+10); - lv_obj_set_hidden(ext->label_value_blood, TRUE); + lv_obj_align(ext->label_info, ext->cont, LV_ALIGN_IN_TOP_MID, 0, ATRIAL_FIBRILLATION_LABEL_INFO_Y); + //lv_label_set_text(ext->label_value, ext->heart_rate); + //lv_obj_align(ext->label_value, ext->cont, LV_ALIGN_IN_TOP_MID, 0, ATRIAL_FIBRILLATION_LABEL_VALUE_Y - 10); + //lv_obj_set_hidden(ext->label_value, ((strlen(ext->heart_rate)) ? FALSE : TRUE)); + lv_obj_set_hidden(ext->label_value, TRUE); break; case STATE_ATRIAL_FIBRILLATION_MEASURE_FAIL: @@ -54,12 +50,12 @@ void health_atrial_fibrillation_display_update(void) lv_obj_set_hidden(ext->img, FALSE); lv_label_set_text_id(ext->label_info, WATCH_TEXT_ID_MEASURE_FAIL); - lv_obj_align(ext->label_info, ext->cont, LV_ALIGN_IN_TOP_MID, 0, HEART_LABEL_INFO_Y); + lv_obj_align(ext->label_info, ext->cont, LV_ALIGN_IN_TOP_MID, 0, ATRIAL_FIBRILLATION_LABEL_INFO_Y); lv_obj_remove_style(ext->label_value, LV_LABEL_PART_MAIN, &lv_watch_font40); lv_obj_add_style(ext->label_value, LV_LABEL_PART_MAIN, &lv_watch_font30); lv_label_set_text_id(ext->label_value, WATCH_TEXT_ID_NOT_WEAR); - lv_obj_align(ext->label_value, ext->cont, LV_ALIGN_IN_TOP_MID, 0, HEART_LABEL_VALUE_Y); + lv_obj_align(ext->label_value, ext->cont, LV_ALIGN_IN_TOP_MID, 0, ATRIAL_FIBRILLATION_LABEL_VALUE_Y); lv_obj_set_hidden(ext->label_value, FALSE); break; @@ -68,28 +64,27 @@ void health_atrial_fibrillation_display_update(void) lv_obj_set_hidden(ext->img, FALSE); lv_label_set_text_id(ext->label_info, WATCH_TEXT_ID_MEASURE_DONE); - lv_obj_align(ext->label_info, ext->cont, LV_ALIGN_IN_TOP_MID, 0, HEART_LABEL_INFO_Y); + lv_obj_align(ext->label_info, ext->cont, LV_ALIGN_IN_TOP_MID, 0, ATRIAL_FIBRILLATION_LABEL_INFO_Y); - lv_label_set_text(ext->label_value, ext->heart_rate); - lv_obj_align(ext->label_value, ext->cont, LV_ALIGN_IN_TOP_MID, 0, HEART_LABEL_VALUE_Y-10); + lv_obj_remove_style(ext->label_value, LV_LABEL_PART_MAIN, &lv_watch_font40); + lv_obj_add_style(ext->label_value, LV_LABEL_PART_MAIN, &lv_watch_font30); + lv_label_set_text_id(ext->label_value, ((120 <= ext->heart_rate) ? WATCH_TEXT_ID_ATRIAL_FIBRILLATION_RISK : WATCH_TEXT_ID_ATRIAL_FIBRILLATION_NO_RISK)); + lv_obj_align(ext->label_value, ext->cont, LV_ALIGN_IN_TOP_MID, 0, ATRIAL_FIBRILLATION_LABEL_VALUE_Y); lv_obj_set_hidden(ext->label_value, FALSE); + break; - uint16_t blood_high_value = 0, blood_low_value = 0; - mmi_hsensor_blood_value_get(&blood_high_value,&blood_low_value); - //HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %d/%d\n", __FUNCTION__, __LINE__, blood_low_value, blood_low_value); - - sprintf(ext->blood_low_high, "%d / %d mmHg", blood_high_value, blood_low_value); - - mmi_protocol_action_send_blood(blood_high_value, blood_low_value); - - lv_label_set_text(ext->label_value_blood, ext->blood_low_high); - #ifdef USE_LV_WATCH_UI_240_280 - lv_obj_align(ext->label_value_blood, ext->cont, LV_ALIGN_IN_TOP_MID, 0, HEART_LABEL_VALUE_Y + 30); - #else - lv_obj_align(ext->label_value_blood, ext->cont, LV_ALIGN_IN_TOP_MID, 0, HEART_LABEL_VALUE_Y+10); - #endif - lv_obj_set_hidden(ext->label_value_blood, FALSE); - + case STATE_ATRIAL_FIBRILLATION_MEASURE_NONE: + lv_img_set_src(ext->img, ICON_HEART_RATE_MEASURE_FAIL); + lv_obj_set_hidden(ext->img, FALSE); + + lv_label_set_text_id(ext->label_info, WATCH_TEXT_ID_MEASURE_FAIL); + lv_obj_align(ext->label_info, ext->cont, LV_ALIGN_IN_TOP_MID, 0, ATRIAL_FIBRILLATION_LABEL_INFO_Y); + + lv_obj_remove_style(ext->label_value, LV_LABEL_PART_MAIN, &lv_watch_font40); + lv_obj_add_style(ext->label_value, LV_LABEL_PART_MAIN, &lv_watch_font30); + lv_label_set_text_id(ext->label_value, WATCH_TEXT_ID_IN_MEASURE_AGAIN); + lv_obj_align(ext->label_value, ext->cont, LV_ALIGN_IN_TOP_MID, 0, ATRIAL_FIBRILLATION_LABEL_VALUE_Y); + lv_obj_set_hidden(ext->label_value, FALSE); break; default: @@ -134,18 +129,8 @@ static void health_atrial_fibrillation_measure_cycle_timeout(void * para) mmi_health_measure_heart_data_ui_get(&value); if(MMI_HEART_RATE_VALUE_MIN <= value) // (value) - { - sprintf(ext->heart_rate, "%d bpm", value); - } - // uint16_t blood_high_value = 0; - // uint16_t blood_low_value = 0; - // mmi_hsensor_blood_value_get(&blood_high_value,&blood_low_value); - // sprintf(ext->blood_low_high, "%d / %d mmhg", blood_low_value,blood_high_value); - - //else - //{ - // sprintf(ext->heart_rate, "-- bpm"); - //} + ext->heart_rate = value; + ext->measure_state = STATE_ATRIAL_FIBRILLATION_MEASURING; } else @@ -161,7 +146,12 @@ static void health_atrial_fibrillation_measure_cycle_timeout(void * para) ext->gif_info = NULL; } lv_obj_del(ext->gif_cont); - ext->measure_state = STATE_ATRIAL_FIBRILLATION_MEASURE_DONE; + + if(0 == ext->heart_rate) + ext->measure_state = STATE_ATRIAL_FIBRILLATION_MEASURE_NONE; + else + ext->measure_state = STATE_ATRIAL_FIBRILLATION_MEASURE_DONE; + watch_set_suspend_enable(true, ACT_ID_HEALTH_MEASURE_ATRIAL_FIBRILLATION, 0); watch_wakeup_time_reset(); } @@ -234,7 +224,7 @@ lv_obj_t * health_atrial_fibrillation_create(lv_obj_t * activity_obj) ext->img = NULL; ext->gif_cont = NULL; ext->measure_state = STATE_ATRIAL_FIBRILLATION_MEASURE_NONE; - _lv_memset_00(ext->heart_rate, sizeof(ext->heart_rate)); + ext->heart_rate = 0; lv_obj_t * cont = lv_cont_create(watch_obj, NULL); lv_obj_set_size(cont, LV_HOR_RES, LV_VER_RES); @@ -251,7 +241,7 @@ lv_obj_t * health_atrial_fibrillation_create(lv_obj_t * activity_obj) lv_obj_t * img = lv_img_create(cont, NULL); lv_img_set_src(img, ICON_HEART_RATE_MEASURE_FAIL); - lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_MID, 0, HEART_MEASURE_IMAGE_Y); + lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_MID, 0, ATRIAL_FIBRILLATION_MEASURE_IMAGE_Y); lv_obj_set_hidden(img, true); ext->img = img; @@ -260,28 +250,19 @@ lv_obj_t * health_atrial_fibrillation_create(lv_obj_t * activity_obj) lv_obj_add_style(label_info, LV_LABEL_PART_MAIN, &lv_watch_font20); lv_label_set_text_id(label_info, WATCH_TEXT_ID_MEASURING); //lv_label_set_align(label_info, LV_LABEL_ALIGN_CENTER); - lv_obj_align(label_info, cont, LV_ALIGN_IN_TOP_MID, 0, HEART_LABEL_INFO_Y); + lv_obj_align(label_info, cont, LV_ALIGN_IN_TOP_MID, 0, ATRIAL_FIBRILLATION_LABEL_INFO_Y); lv_obj_set_click(label_info, false); ext->label_info = label_info; lv_obj_t * label_value = lv_label_create(cont, NULL); //lv_obj_set_size(label_value, LV_HOR_RES, 40); lv_obj_add_style(label_value, LV_LABEL_PART_MAIN, &lv_watch_font24); - lv_label_set_text(label_value, ext->heart_rate); + //lv_label_set_text(label_value, ext->heart_rate); //lv_label_set_align(label_value, LV_LABEL_ALIGN_CENTER); - lv_obj_align(label_value, cont, LV_ALIGN_IN_TOP_MID, 0, HEART_LABEL_VALUE_Y-10); + lv_obj_align(label_value, cont, LV_ALIGN_IN_TOP_MID, 0, ATRIAL_FIBRILLATION_LABEL_VALUE_Y - 10); lv_obj_set_click(label_value, false); ext->label_value = label_value; - lv_obj_t * label_value_blood = lv_label_create(cont, NULL); - //lv_obj_set_size(label_value, LV_HOR_RES, 40); - lv_obj_add_style(label_value_blood, LV_LABEL_PART_MAIN, &lv_watch_font24); - lv_label_set_text(label_value_blood, ext->heart_rate); - //lv_label_set_align(label_value, LV_LABEL_ALIGN_CENTER); - lv_obj_align(label_value_blood, cont, LV_ALIGN_IN_TOP_MID, 0, HEART_LABEL_VALUE_Y+10); - lv_obj_set_click(label_value_blood, false); - ext->label_value_blood = label_value_blood; - if(false == mmi_health_measure_wear_state_get() || HAL_CHG_CONNECTED == Hal_Charger_Get_Status()) { ext->measure_state = STATE_ATRIAL_FIBRILLATION_MEASURE_FAIL; @@ -293,7 +274,7 @@ lv_obj_t * health_atrial_fibrillation_create(lv_obj_t * activity_obj) lv_obj_t * gif_cont = lv_cont_create(cont, NULL); lv_obj_set_size(gif_cont, LV_HOR_RES, 100); lv_obj_set_style_local_bg_color(gif_cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); - lv_obj_align(gif_cont, cont, LV_ALIGN_IN_TOP_MID, 0, HEART_MEASURE_IMAGE_Y); + lv_obj_align(gif_cont, cont, LV_ALIGN_IN_TOP_MID, 0, ATRIAL_FIBRILLATION_MEASURE_IMAGE_Y); ext->gif_cont = gif_cont; ext->gif_info = gif_open(gif_cont, ANIM_HEART_RATE_MEASURING, 0); @@ -302,7 +283,7 @@ lv_obj_t * health_atrial_fibrillation_create(lv_obj_t * activity_obj) HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: gif open fail\n", __FUNCTION__, __LINE__); } - ext->cycle_timer_id = Hal_Timer_Start(HEALTH_HEART_MEASURE_CYCLE, health_atrial_fibrillation_measure_cycle_timeout, NULL, TRUE); + ext->cycle_timer_id = Hal_Timer_Start(HEALTH_ATRIAL_FIBRILLATION_MEASURE_CYCLE, health_atrial_fibrillation_measure_cycle_timeout, NULL, TRUE); ext->measure_state = STATE_ATRIAL_FIBRILLATION_MEASURING; watch_set_suspend_enable(false, ACT_ID_HEALTH_MEASURE_ATRIAL_FIBRILLATION, 0); diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_atrial_fibrillation.h b/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_atrial_fibrillation.h index 133a4337..2eadea62 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_atrial_fibrillation.h +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_atrial_fibrillation.h @@ -19,74 +19,74 @@ extern "C" { #ifdef __MMI_HEALTH_MEASURE_ATRIAL_FIBRILLATION_SUPPORT__ -#define HEALTH_HEART_MEASURE_CYCLE (1000 * 1) +#define HEALTH_ATRIAL_FIBRILLATION_MEASURE_CYCLE (1000 * 1) #ifdef USE_LV_WATCH_UI_CIRCLE #if USE_LV_WATCH_UI_240_240 -#define HEART_MEASURE_IMAGE_Y (25) -#define HEART_LABEL_INFO_X (0) -#define HEART_LABEL_INFO_Y (135) -#define HEART_LABEL_INFO_W (LV_HOR_RES - HEART_LABEL_INFO_X) -#define HEART_LABEL_INFO_H (30) +#define ATRIAL_FIBRILLATION_MEASURE_IMAGE_Y (25) +#define ATRIAL_FIBRILLATION_LABEL_INFO_X (0) +#define ATRIAL_FIBRILLATION_LABEL_INFO_Y (135) +#define ATRIAL_FIBRILLATION_LABEL_INFO_W (LV_HOR_RES - ATRIAL_FIBRILLATION_LABEL_INFO_X) +#define ATRIAL_FIBRILLATION_LABEL_INFO_H (30) -#define HEART_LABEL_VALUE_X (0) -#define HEART_LABEL_VALUE_Y (165) -#define HEART_LABEL_VALUE_W (LV_HOR_RES - HEART_LABEL_VALUE_X) -#define HEART_LABEL_VALUE_H (50) +#define ATRIAL_FIBRILLATION_LABEL_VALUE_X (0) +#define ATRIAL_FIBRILLATION_LABEL_VALUE_Y (165) +#define ATRIAL_FIBRILLATION_LABEL_VALUE_W (LV_HOR_RES - ATRIAL_FIBRILLATION_LABEL_VALUE_X) +#define ATRIAL_FIBRILLATION_LABEL_VALUE_H (50) #else -#define HEART_MEASURE_IMAGE_Y (40) -#define HEART_LABEL_INFO_X (0) -#define HEART_LABEL_INFO_Y (180) -#define HEART_LABEL_INFO_W (LV_HOR_RES - HEART_LABEL_INFO_X) -#define HEART_LABEL_INFO_H (30) +#define ATRIAL_FIBRILLATION_MEASURE_IMAGE_Y (40) +#define ATRIAL_FIBRILLATION_LABEL_INFO_X (0) +#define ATRIAL_FIBRILLATION_LABEL_INFO_Y (180) +#define ATRIAL_FIBRILLATION_LABEL_INFO_W (LV_HOR_RES - ATRIAL_FIBRILLATION_LABEL_INFO_X) +#define ATRIAL_FIBRILLATION_LABEL_INFO_H (30) -#define HEART_LABEL_VALUE_X (0) -#define HEART_LABEL_VALUE_Y (220) -#define HEART_LABEL_VALUE_W (LV_HOR_RES - HEART_LABEL_VALUE_X) -#define HEART_LABEL_VALUE_H (50) +#define ATRIAL_FIBRILLATION_LABEL_VALUE_X (0) +#define ATRIAL_FIBRILLATION_LABEL_VALUE_Y (220) +#define ATRIAL_FIBRILLATION_LABEL_VALUE_W (LV_HOR_RES - ATRIAL_FIBRILLATION_LABEL_VALUE_X) +#define ATRIAL_FIBRILLATION_LABEL_VALUE_H (50) #endif #else #if USE_LV_WATCH_UI_240_320 -#define HEART_MEASURE_IMAGE_Y (40) -#define HEART_LABEL_INFO_X (0) -#define HEART_LABEL_INFO_Y (180) -#define HEART_LABEL_INFO_W (LV_HOR_RES - HEART_LABEL_INFO_X) -#define HEART_LABEL_INFO_H (30) +#define ATRIAL_FIBRILLATION_MEASURE_IMAGE_Y (40) +#define ATRIAL_FIBRILLATION_LABEL_INFO_X (0) +#define ATRIAL_FIBRILLATION_LABEL_INFO_Y (180) +#define ATRIAL_FIBRILLATION_LABEL_INFO_W (LV_HOR_RES - ATRIAL_FIBRILLATION_LABEL_INFO_X) +#define ATRIAL_FIBRILLATION_LABEL_INFO_H (30) -#define HEART_LABEL_VALUE_X (0) -#define HEART_LABEL_VALUE_Y (220) -#define HEART_LABEL_VALUE_W (LV_HOR_RES - HEART_LABEL_VALUE_X) -#define HEART_LABEL_VALUE_H (50) +#define ATRIAL_FIBRILLATION_LABEL_VALUE_X (0) +#define ATRIAL_FIBRILLATION_LABEL_VALUE_Y (220) +#define ATRIAL_FIBRILLATION_LABEL_VALUE_W (LV_HOR_RES - ATRIAL_FIBRILLATION_LABEL_VALUE_X) +#define ATRIAL_FIBRILLATION_LABEL_VALUE_H (50) #elif USE_LV_WATCH_UI_240_280 -#define HEART_MEASURE_IMAGE_Y (40) -#define HEART_LABEL_INFO_X (0) -#define HEART_LABEL_INFO_Y (155) -#define HEART_LABEL_INFO_W (LV_HOR_RES - HEART_LABEL_INFO_X) -#define HEART_LABEL_INFO_H (30) +#define ATRIAL_FIBRILLATION_MEASURE_IMAGE_Y (40) +#define ATRIAL_FIBRILLATION_LABEL_INFO_X (0) +#define ATRIAL_FIBRILLATION_LABEL_INFO_Y (155) +#define ATRIAL_FIBRILLATION_LABEL_INFO_W (LV_HOR_RES - ATRIAL_FIBRILLATION_LABEL_INFO_X) +#define ATRIAL_FIBRILLATION_LABEL_INFO_H (30) -#define HEART_LABEL_VALUE_X (0) -#define HEART_LABEL_VALUE_Y (195) -#define HEART_LABEL_VALUE_W (LV_HOR_RES - HEART_LABEL_VALUE_X) -#define HEART_LABEL_VALUE_H (50) +#define ATRIAL_FIBRILLATION_LABEL_VALUE_X (0) +#define ATRIAL_FIBRILLATION_LABEL_VALUE_Y (195) +#define ATRIAL_FIBRILLATION_LABEL_VALUE_W (LV_HOR_RES - ATRIAL_FIBRILLATION_LABEL_VALUE_X) +#define ATRIAL_FIBRILLATION_LABEL_VALUE_H (50) #else -#define HEART_MEASURE_IMAGE_Y (40) -#define HEART_LABEL_INFO_X (0) -#define HEART_LABEL_INFO_Y (180) -#define HEART_LABEL_INFO_W (LV_HOR_RES - HEART_LABEL_INFO_X) -#define HEART_LABEL_INFO_H (30) +#define ATRIAL_FIBRILLATION_MEASURE_IMAGE_Y (40) +#define ATRIAL_FIBRILLATION_LABEL_INFO_X (0) +#define ATRIAL_FIBRILLATION_LABEL_INFO_Y (180) +#define ATRIAL_FIBRILLATION_LABEL_INFO_W (LV_HOR_RES - ATRIAL_FIBRILLATION_LABEL_INFO_X) +#define ATRIAL_FIBRILLATION_LABEL_INFO_H (30) -#define HEART_LABEL_VALUE_X (0) -#define HEART_LABEL_VALUE_Y (220) -#define HEART_LABEL_VALUE_W (LV_HOR_RES - HEART_LABEL_VALUE_X) -#define HEART_LABEL_VALUE_H (50) +#define ATRIAL_FIBRILLATION_LABEL_VALUE_X (0) +#define ATRIAL_FIBRILLATION_LABEL_VALUE_Y (220) +#define ATRIAL_FIBRILLATION_LABEL_VALUE_W (LV_HOR_RES - ATRIAL_FIBRILLATION_LABEL_VALUE_X) +#define ATRIAL_FIBRILLATION_LABEL_VALUE_H (50) #endif @@ -112,11 +112,9 @@ typedef struct lv_obj_t * img; lv_obj_t * label_info; lv_obj_t * label_value; - lv_obj_t * label_value_blood; lv_obj_t * gif_cont; lv_atrial_fibrillation_state_e measure_state; - char heart_rate[8]; - char blood_low_high[16]; + uint16_t heart_rate; } lv_atrial_fibrillation_obj_ext_t; diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_heart_rate.c b/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_heart_rate.c index ab909a09..34bf44a5 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_heart_rate.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_heart_rate.c @@ -86,10 +86,23 @@ void health_heart_rate_display_update(void) #ifdef USE_LV_WATCH_UI_240_280 lv_obj_align(ext->label_value_blood, ext->cont, LV_ALIGN_IN_TOP_MID, 0, HEART_LABEL_VALUE_Y + 30); #else - lv_obj_align(ext->label_value_blood, ext->cont, LV_ALIGN_IN_TOP_MID, 0, HEART_LABEL_VALUE_Y+10); + lv_obj_align(ext->label_value_blood, ext->cont, LV_ALIGN_IN_TOP_MID, 0, HEART_LABEL_VALUE_Y + 15); #endif lv_obj_set_hidden(ext->label_value_blood, FALSE); - + break; + + case STATE_HEART_RATE_MEASURE_NONE: + lv_img_set_src(ext->img, ICON_HEART_RATE_MEASURE_FAIL); + lv_obj_set_hidden(ext->img, FALSE); + + lv_label_set_text_id(ext->label_info, WATCH_TEXT_ID_MEASURE_FAIL); + lv_obj_align(ext->label_info, ext->cont, LV_ALIGN_IN_TOP_MID, 0, HEART_LABEL_INFO_Y); + + lv_obj_remove_style(ext->label_value, LV_LABEL_PART_MAIN, &lv_watch_font40); + lv_obj_add_style(ext->label_value, LV_LABEL_PART_MAIN, &lv_watch_font30); + lv_label_set_text_id(ext->label_value, WATCH_TEXT_ID_IN_MEASURE_AGAIN); + lv_obj_align(ext->label_value, ext->cont, LV_ALIGN_IN_TOP_MID, 0, HEART_LABEL_VALUE_Y); + lv_obj_set_hidden(ext->label_value, FALSE); break; default: @@ -137,15 +150,6 @@ static void health_heart_rate_measure_cycle_timeout(void * para) { sprintf(ext->heart_rate, "%d bpm", value); } - // uint16_t blood_high_value = 0; - // uint16_t blood_low_value = 0; - // mmi_hsensor_blood_value_get(&blood_high_value,&blood_low_value); - // sprintf(ext->blood_low_high, "%d / %d mmhg", blood_low_value,blood_high_value); - - //else - //{ - // sprintf(ext->heart_rate, "-- bpm"); - //} ext->measure_state = STATE_HEART_RATE_MEASURING; } else @@ -161,7 +165,12 @@ static void health_heart_rate_measure_cycle_timeout(void * para) ext->gif_info = NULL; } lv_obj_del(ext->gif_cont); - ext->measure_state = STATE_HEART_RATE_MEASURE_DONE; + + if(0 == strlen(ext->heart_rate)) + ext->measure_state = STATE_HEART_RATE_MEASURE_NONE; + else + ext->measure_state = STATE_HEART_RATE_MEASURE_DONE; + watch_set_suspend_enable(true, ACT_ID_HEALTH_MEASURE_HEART, 0); watch_wakeup_time_reset(); } diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_measure.c b/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_measure.c index 31178ca1..da69303e 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_measure.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_measure.c @@ -949,13 +949,6 @@ bool mmi_health_measure_timed_measure_start(MMI_HEALTH_MEASURE_TYPE_E measure_ty if(NULL != lv_watch_get_activity_obj(ACT_ID_FACTORY_MODE_TEST)) return false; - -#ifdef __MMI_CUSTOM_HENGAI_HEALTH__ - if(mmi_hengai_bp_measuring_flag_get()) - { - return false; - } -#endif if(true == mmi_health_measure_state_is_in_measure()) { @@ -991,17 +984,8 @@ void mmi_health_measure_app_measure_start(MMI_HEALTH_MEASURE_TYPE_E measure_type if(NULL != lv_watch_get_activity_obj(ACT_ID_FACTORY_MODE_TEST)) return; - if(MMI_HEALTH_MEASURE_STATE_UI == s_health_measure_run_data.measure_state) - { + if(true == mmi_health_measure_state_is_ui_measure()) return; - } - -#ifdef __MMI_CUSTOM_HENGAI_HEALTH__ - if(mmi_hengai_bp_measuring_flag_get()) - { - return; - } -#endif if(MMI_HEALTH_MEASURE_STATE_TIMED == s_health_measure_run_data.measure_state) { diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_measure.h b/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_measure.h index fa62eab4..67fa9ddb 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_measure.h +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_measure.h @@ -32,6 +32,7 @@ extern "C" { #define MMI_HEALTH_MEASURE_CYCLE_DURATION (1 * 1000) // ms #define MMI_HEART_RATE_VALUE_MIN (45) +#define MMI_HEART_RATE_VALUE_MAX (220) #define DEFAULT_BP_HIGH_VALUE_MAX (180) #define DEFAULT_BP_HIGH_VALUE_MIN (95) diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_spo2.c b/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_spo2.c index 93600c0d..681a7774 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_spo2.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_spo2.c @@ -72,6 +72,20 @@ void health_spo2_display_update(void) lv_obj_set_hidden(ext->label_value, FALSE); break; + case STATE_SPO2_MEASURE_NONE: + lv_img_set_src(ext->img, ICON_SPO2_MEASURE_FAIL); + lv_obj_set_hidden(ext->img, FALSE); + + lv_label_set_text_id(ext->label_info, WATCH_TEXT_ID_MEASURE_FAIL); + lv_obj_align(ext->label_info, ext->cont, LV_ALIGN_IN_TOP_MID, 0, SPO2_LABEL_INFO_Y); + + lv_obj_remove_style(ext->label_value, LV_LABEL_PART_MAIN, &lv_watch_font40); + lv_obj_add_style(ext->label_value, LV_LABEL_PART_MAIN, &lv_watch_font30); + lv_label_set_text_id(ext->label_value, WATCH_TEXT_ID_IN_MEASURE_AGAIN); + lv_obj_align(ext->label_value, ext->cont, LV_ALIGN_IN_TOP_MID, 0, SPO2_LABEL_VALUE_Y); + lv_obj_set_hidden(ext->label_value, FALSE); + break; + default: break; } @@ -137,7 +151,11 @@ static void health_spo2_measure_cycle_timeout(void * para) } lv_obj_del(ext->gif_cont); - ext->measure_state = STATE_SPO2_MEASURE_DONE; + if(0 == strlen(ext->spo2)) + ext->measure_state = STATE_SPO2_MEASURE_NONE; + else + ext->measure_state = STATE_SPO2_MEASURE_DONE; + watch_set_suspend_enable(true, ACT_ID_HEALTH_MEASURE_SPO2, 0); watch_wakeup_time_reset(); } diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_temperature.c b/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_temperature.c index af6dedc7..756a4181 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_temperature.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_temperature.c @@ -72,6 +72,20 @@ void health_temperature_display_update(void) lv_obj_set_hidden(ext->label_value, FALSE); break; + case STATE_TEMPERATURE_MEASURE_NONE: + lv_img_set_src(ext->img, ICON_TEMPERATURE_MEASURE_FAIL); + lv_obj_set_hidden(ext->img, FALSE); + + lv_label_set_text_id(ext->label_info, WATCH_TEXT_ID_MEASURE_FAIL); + lv_obj_align(ext->label_info, ext->cont, LV_ALIGN_IN_TOP_MID, 0, TEMPERATURE_LABEL_INFO_Y); + + lv_obj_remove_style(ext->label_value, LV_LABEL_PART_MAIN, &lv_watch_font40); + lv_obj_add_style(ext->label_value, LV_LABEL_PART_MAIN, &lv_watch_font30); + lv_label_set_text_id(ext->label_value, WATCH_TEXT_ID_IN_MEASURE_AGAIN); + lv_obj_align(ext->label_value, ext->cont, LV_ALIGN_IN_TOP_MID, 0, TEMPERATURE_LABEL_VALUE_Y); + lv_obj_set_hidden(ext->label_value, FALSE); + break; + default: break; } @@ -136,7 +150,12 @@ static void health_temperature_measure_cycle_timeout(void * para) ext->gif_info = NULL; } lv_obj_del(ext->gif_cont); - ext->measure_state = STATE_TEMPERATURE_MEASURE_DONE; + + if(0 == strlen(ext->body_value)) + ext->measure_state = STATE_TEMPERATURE_MEASURE_NONE; + else + ext->measure_state = STATE_TEMPERATURE_MEASURE_DONE; + watch_set_suspend_enable(true, ACT_ID_HEALTH_MEASURE_TEMPERATURE, 0); watch_wakeup_time_reset(); } diff --git a/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_common_task.c b/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_common_task.c new file mode 100644 index 00000000..fa051d18 --- /dev/null +++ b/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_common_task.c @@ -0,0 +1,96 @@ + + + +#include "lv_watch.h" + +#ifdef __MMI_ZHSX_SUPPORT__ + +static TASK_HANDLE * s_watch_common_task_id = NULL; + +void mmi_watch_common_task_msg_send(MMI_TASK_MSG_ID_E msg_id, void * msg_param) +{ + if(NULL == s_watch_common_task_id) + { + COMMON_TASK_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: task not exist\n", __FUNCTION__, __LINE__); + if(NULL != msg_param) + Hal_Mem_Free(msg_param); + + return; + } + + if((MMI_COMMON_TASK_MSG_QUEUE_SIZE - 1) < Hal_Get_Message_Count(s_watch_common_task_id)) + { + COMMON_TASK_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: msg queue full\n", __FUNCTION__, __LINE__); + if(NULL != msg_param) + Hal_Mem_Free(msg_param); + + return; + } + + COMMON_TASK_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: msg_id=%d\n", __FUNCTION__, __LINE__, msg_id); + mmi_common_task_msg_t * msg = Hal_Mem_Alloc(sizeof(mmi_common_task_msg_t)); + if(NULL == msg) + { + COMMON_TASK_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: memory alloc fail\n", __FUNCTION__, __LINE__); + if(NULL != msg_param) + Hal_Mem_Free(msg_param); + + return; + } + msg->msg_id = msg_id; + msg->msg_param = msg_param; + + Hal_Send_Message((TASK_ID)s_watch_common_task_id, (void *)msg); +} + +static void mmi_watch_common_task_handle(void * param) +{ + mmi_common_task_msg_t * msg = (mmi_common_task_msg_t *)param; + MMI_GUI_TIMING_MSG_ID_E msg_id = msg->msg_id; + void * msg_param = msg->msg_param; + + COMMON_TASK_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: msg_id=%d\n", __FUNCTION__, __LINE__, msg_id); + switch(msg_id) + { + case MMI_TASK_MSG_CHECK_SOMETHING: + //mmi_gui_timing_task_3_second_mission(msg_param); + break; + + default: + break; + } +} + +static void mmi_watch_common_task_entry(void * para) +{ + while(NULL == s_watch_common_task_id) + { + uos_sleep(10); + } + + while(1) + { + mmi_common_task_msg_t * msg = (mmi_common_task_msg_t *)Hal_Receive_Message((TASK_ID)s_watch_common_task_id, TRUE); + + mmi_watch_common_task_handle(msg); + + Hal_Mem_Free(msg->msg_param); + Hal_Mem_Free(msg); + } +} + +void mmi_watch_common_task_create(void) +{ + s_watch_common_task_id = uos_create_task(mmi_watch_common_task_entry, + NULL, + MMI_COMMON_TASK_MSG_QUEUE_SIZE, + MMI_COMMON_TASK_STACK_SIZE, + MMI_COMMON_TASK_PRIORITY, + "mmi_watch_common_task"); + + COMMON_TASK_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: task_id=0x%x\n", __FUNCTION__, __LINE__, s_watch_common_task_id); +} + +#endif + + diff --git a/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_common_task.h b/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_common_task.h new file mode 100644 index 00000000..b1bae682 --- /dev/null +++ b/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_common_task.h @@ -0,0 +1,66 @@ + + + +#ifndef __MMI_COMMON_TASK_H__ +#define __MMI_COMMON_TASK_H__ + +#ifdef __cplusplus +extern "C" +{ +#endif //__cplusplus + +#ifdef LV_CONF_INCLUDE_SIMPLE +#include "lvgl.h" +#include "lv_watch_conf.h" +#else +#include "../../../lvgl/lvgl.h" +#include "../../../lv_watch_conf.h" +#endif + +#ifdef __MMI_ZHSX_SUPPORT__ + +#define __MMI_COMMON_TASK_DEBUG__ +#ifdef __MMI_COMMON_TASK_DEBUG__ +#define COMMON_TASK_DEBUG_PRINTF(fmt, ...) printf("[COMMON_TASK]"fmt, ##__VA_ARGS__) +#else +#define COMMON_TASK_DEBUG_PRINTF(fmt, ...) +#endif + + +#define MMI_COMMON_TASK_PRIORITY (219) +#define MMI_COMMON_TASK_STACK_SIZE (8 * 1024) +#define MMI_COMMON_TASK_MSG_QUEUE_SIZE (64) + + +typedef enum +{ + MMI_TASK_MSG_ID_START, + + MMI_TASK_MSG_CHECK_SOMETHING = MMI_TASK_MSG_ID_START, + MMI_TASK_MSG_XXX, + + MMI_TASK_MSG_ID_END +}MMI_TASK_MSG_ID_E; + +typedef struct +{ + uint16_t msg_id; + void * msg_param; +}mmi_common_task_msg_t; + + +void mmi_watch_common_task_msg_send(MMI_TASK_MSG_ID_E msg_id, void * msg_param); +void mmi_watch_common_task_create(void); + + + +#endif + + +#ifdef __cplusplus +} /* extern "C" */ +#endif //__cplusplus + +#endif + +