"目标步数", // 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,
"确认是否删除",
"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",
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, /*确认是否删除*/
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:
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;
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:
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
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();
}
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);
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;
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;
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);
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);
#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
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;
#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:
{
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
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();
}
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())
{
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)
{
#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)
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;
}
}
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();
}
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;
}
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();
}
--- /dev/null
+
+
+
+#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
+
+
--- /dev/null
+
+
+
+#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
+
+