From: CCC <2393524978@qq.com> Date: Wed, 29 Nov 2023 09:49:20 +0000 (+0800) Subject: gengxin X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=ea239104c4c55334a5dec9c466fafd7656cff4f0;p=mirrors%2FASR3603_Z5.git gengxin --- diff --git a/2.sdk/project/Z5_DS_Z12XW_QCB/gui/lv_watch/resource/png/signal/icon_signal_1.png b/2.sdk/project/Z5_DS_Z12XW_QCB/gui/lv_watch/resource/png/signal/icon_signal_1.png index 1120645b..74e81936 100644 Binary files a/2.sdk/project/Z5_DS_Z12XW_QCB/gui/lv_watch/resource/png/signal/icon_signal_1.png and b/2.sdk/project/Z5_DS_Z12XW_QCB/gui/lv_watch/resource/png/signal/icon_signal_1.png differ diff --git a/2.sdk/project/Z5_DS_Z12XW_QCB/gui/lv_watch/resource/png/signal/icon_signal_2.png b/2.sdk/project/Z5_DS_Z12XW_QCB/gui/lv_watch/resource/png/signal/icon_signal_2.png index a05b73a9..ba173aa2 100644 Binary files a/2.sdk/project/Z5_DS_Z12XW_QCB/gui/lv_watch/resource/png/signal/icon_signal_2.png and b/2.sdk/project/Z5_DS_Z12XW_QCB/gui/lv_watch/resource/png/signal/icon_signal_2.png differ diff --git a/2.sdk/project/Z5_DS_Z12XW_QCB/gui/lv_watch/resource/png/signal/icon_signal_3.png b/2.sdk/project/Z5_DS_Z12XW_QCB/gui/lv_watch/resource/png/signal/icon_signal_3.png index 4c896cf5..9033179a 100644 Binary files a/2.sdk/project/Z5_DS_Z12XW_QCB/gui/lv_watch/resource/png/signal/icon_signal_3.png and b/2.sdk/project/Z5_DS_Z12XW_QCB/gui/lv_watch/resource/png/signal/icon_signal_3.png differ diff --git a/2.sdk/project/Z5_DS_Z12XW_QCB/gui/lv_watch/resource/png/signal/icon_signal_4.png b/2.sdk/project/Z5_DS_Z12XW_QCB/gui/lv_watch/resource/png/signal/icon_signal_4.png index 603e3517..58fa52b0 100644 Binary files a/2.sdk/project/Z5_DS_Z12XW_QCB/gui/lv_watch/resource/png/signal/icon_signal_4.png and b/2.sdk/project/Z5_DS_Z12XW_QCB/gui/lv_watch/resource/png/signal/icon_signal_4.png differ diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode.h b/2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode.h index e717476e..3856acf2 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode.h +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode.h @@ -182,12 +182,20 @@ void factorymode_wifi_create_btn_cb(lv_obj_t * btn,lv_event_t e); void factorymode_gps_create_btn_cb(lv_obj_t * btn,lv_event_t e); void factorymode_gsensor_create_btn_cb(lv_obj_t * btn,lv_event_t e); #ifdef __MMI_ZHSX_SUPPORT__ +#ifdef __MMI_HEALTH_MEASURE_TEMPERATURE_SUPPORT__ void mmi_factorymode_temperature_test_create_btn_cb(lv_obj_t * btn,lv_event_t e); +#endif +#ifdef __MMI_HEALTH_MEASURE_HEART_SUPPORT__ +#if USE_HX3918 +void mmi_factorymode_live_calibration_create_btn_cb(lv_obj_t * btn,lv_event_t e); +void mmi_factorymode_wear_test_create_btn_cb(lv_obj_t * btn,lv_event_t e); +void mmi_factorymode_light_leak_test_create_btn_cb(lv_obj_t * btn,lv_event_t e); +#endif void mmi_factorymode_heart_test_create_btn_cb(lv_obj_t * btn,lv_event_t e); +#ifdef __MMI_HEALTH_MEASURE_SPO2_SUPPORT__ void mmi_factorymode_spo2_test_create_btn_cb(lv_obj_t * btn,lv_event_t e); -#if USE_HX3918 -void mmi_factorymode_hanging_cali_create_btn_cb(lv_obj_t * btn,lv_event_t e); -#endif //end USE_HX3918 +#endif +#endif #else void factorymode_hr_bp_bo_test_create_btn_cb(lv_obj_t * btn,lv_event_t e); void factorymode_sport_hr_test_create_btn_cb(lv_obj_t * btn,lv_event_t e); diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode_main.c b/2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode_main.c index fd4ea995..c353fd3b 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode_main.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode_main.c @@ -82,17 +82,19 @@ const struct { #endif #if 1 // def __MMI_ZHSX_SUPPORT__ #ifdef __MMI_ZHSX_SUPPORT_HEALTH_SENSOR__ - #ifdef __MMI_HEALTH_MEASURE_TEMPERATURE_SUPPORT__ - { WATCH_TEXT_ID_TEMPERATURE_TEST, mmi_factorymode_temperature_test_create_btn_cb }, - #endif #ifdef __MMI_HEALTH_MEASURE_HEART_SUPPORT__ + #if USE_HX3918 + { WATCH_TEXT_ID_LIVE_CALIBRATION, mmi_factorymode_live_calibration_create_btn_cb }, + { WATCH_TEXT_ID_WEAR_TEST, mmi_factorymode_wear_test_create_btn_cb }, + { WATCH_TEXT_ID_LIGHT_LEAK_TEST, mmi_factorymode_light_leak_test_create_btn_cb }, + #endif { WATCH_TEXT_ID_HEART_TEST, mmi_factorymode_heart_test_create_btn_cb }, #ifdef __MMI_HEALTH_MEASURE_SPO2_SUPPORT__ { WATCH_TEXT_ID_SPO2_TEST, mmi_factorymode_spo2_test_create_btn_cb }, #endif - #if USE_HX3918 - { WATCH_TEXT_ID_HANGING_CALI, mmi_factorymode_hanging_cali_create_btn_cb }, - #endif + #endif + #ifdef __MMI_HEALTH_MEASURE_TEMPERATURE_SUPPORT__ + { WATCH_TEXT_ID_TEMPERATURE_TEST, mmi_factorymode_temperature_test_create_btn_cb }, #endif #endif #else diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode_test.c b/2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode_test.c index 1c58b9b5..2b19dd85 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode_test.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode_test.c @@ -1682,7 +1682,9 @@ static void mmi_factorymode_temperature_update(lv_anim_t * anim) float body_temp_value = 0.0; mmi_tsensor_body_value_get(&body_temp_value); - sprintf(str, "body temp:\n %.2f %s", body_temp_value, (char *)lv_lang_get_text(WATCH_TEXT_ID_TEMPERATURE_UNIT)); + sprintf(str, "%s:\n %.2f %s", (char *)lv_lang_get_text(WATCH_TEXT_ID_TEMPERATURE), + body_temp_value, + (char *)lv_lang_get_text(WATCH_TEXT_ID_TEMPERATURE_UNIT)); lv_label_set_text(anim->var,str); } @@ -1728,7 +1730,7 @@ static lv_obj_t * mmi_factorymode_temperature_test_create(lv_obj_t * activity_ob #endif char str[32]= {0}; - sprintf(str, "body temp: "); + sprintf(str, "%s:", (char *)lv_lang_get_text(WATCH_TEXT_ID_TEMPERATURE)); lv_label_set_text(label,str); lv_anim_path_t path; @@ -1758,24 +1760,173 @@ void mmi_factorymode_temperature_test_create_btn_cb(lv_obj_t * btn,lv_event_t e) // heart #ifdef __MMI_HEALTH_MEASURE_HEART_SUPPORT__ -static void mmi_factorymode_heart_test_status_update(lv_anim_t * anim) + +#if USE_HX3918 + +#include "../../..//lv_drivers/indev/HX3918/hx3918.h" +#include "../../../lv_drivers/indev/HX3918/hx3918_factory_test.h" + +extern factory_result_t factory_reslts; +#ifdef SAR_ALG_LIB +extern int16_t nv_wear_offset[2] ; +extern int16_t nv_base_data[2]; +#else +int16_t nv_wear_offset[2] ; +int16_t nv_base_data[2]; +#endif +static uint32_t s_sensor_counter = 0; + +static void mmi_factorymode_live_calibration_status_update(lv_anim_t * anim) +{ + char str[64]= {0}; + + sprintf(str, "%s: %d,%d,%d,%d", (char *)lv_lang_get_text(WATCH_TEXT_ID_CALIBRATION_DATA), + nv_wear_offset[0], + nv_wear_offset[1], + nv_base_data[0], + nv_base_data[1]); + lv_label_set_text(anim->var, str); + + s_sensor_counter++; + if(3 > s_sensor_counter) + { + // this function need called many times + HX3918_test(255); + } + else if(9 == s_sensor_counter) + { + mmi_hsensor_close(); + + lv_obj_t * par = lv_obj_get_parent(anim->var); + lv_obj_t * label_result = lv_label_create(par, anim->var); + if((nv_wear_offset[0] || nv_wear_offset[1]) && (nv_base_data[0] || nv_base_data[1])) + sprintf(str, "%s%s", (char *)lv_lang_get_text(WATCH_TEXT_ID_LIVE_CALIBRATION), (char *)lv_lang_get_text(WATCH_TEXT_ID_SUCCESS)); + else + sprintf(str, "%s%s", (char *)lv_lang_get_text(WATCH_TEXT_ID_LIVE_CALIBRATION), (char *)lv_lang_get_text(WATCH_TEXT_ID_FAIL)); + + lv_label_set_text(label_result, str); + lv_obj_align(label_result, anim->var, LV_ALIGN_OUT_BOTTOM_MID, 0, 10); + } +} + +static void mmi_factorymode_live_calibration_event_cb(lv_obj_t * btn, lv_event_t e) +{ + if(LV_EVENT_CLICKED != e) + return; + + if(NULL == btn) + return; + + lv_obj_t * par = lv_obj_get_parent((lv_obj_t*)btn); + if(NULL == par) + return; + + lv_obj_del(btn); + + testing_st = FAC_HEART; + HX3918_test(255); + s_sensor_counter = 0; + + lv_obj_t * label = lv_label_create(par, NULL); + lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font20); + lv_label_set_long_mode(label, LV_LABEL_LONG_BREAK); + lv_obj_set_width(label, LV_HOR_RES - 40); + lv_obj_set_pos(label, 20, LV_VER_RES / 4); + + char str[64]= {0}; + sprintf(str, "%s: ", (char *)lv_lang_get_text(WATCH_TEXT_ID_CALIBRATION_DATA)); + lv_label_set_text(label,str); + + lv_anim_path_t path; + lv_anim_path_init(&path); + lv_anim_path_set_cb(&path, lv_anim_path_step); + + lv_anim_t a; + lv_anim_init(&a); + lv_anim_set_var(&a, label); + lv_anim_set_start_cb(&a, (lv_anim_ready_cb_t)mmi_factorymode_live_calibration_status_update); + lv_anim_set_time(&a, 1); + lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE); + lv_anim_set_delay(&a,1000); + lv_anim_set_repeat_delay(&a, 1000); + lv_anim_start(&a); +} + +static lv_obj_t * mmi_factorymode_live_calibration_create(lv_obj_t * activity_obj) +{ + if(activity_obj == NULL) { + lv_watch_activity_ext_t activity_ext; + memset(&activity_ext, 0, sizeof(lv_watch_activity_ext_t)); + activity_ext.actId = ACT_ID_FACTORY_MODE_TEST; + activity_ext.create = mmi_factorymode_live_calibration_create; + activity_ext.prepare_destory = factorymode_test_prepare_destory; + activity_obj = lv_watch_creat_activity_obj(&activity_ext); + LV_ASSERT_MEM(activity_obj); + if(NULL == activity_obj) { + return NULL; + } + } + + lv_obj_t * obj = lv_watch_obj_create(activity_obj); + LV_ASSERT_MEM(obj); + if(NULL == obj) + return NULL; + + lv_obj_t * content = lv_cont_create(obj, NULL); + lv_obj_set_size(content, lv_obj_get_width(obj), lv_obj_get_height(obj)); + lv_obj_add_style(content,LV_OBJ_PART_MAIN, &lv_watch_style_transp); + lv_obj_align(content, NULL, LV_ALIGN_CENTER, 0, 0); + lv_obj_set_click(content, false); + + lv_obj_t * btn_start = lv_btn_create(content, NULL); + lv_obj_set_size(btn_start, LV_HOR_RES * 2 / 3, 40); + lv_obj_set_event_cb(btn_start, mmi_factorymode_live_calibration_event_cb); + lv_obj_align(btn_start, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -10); + + lv_obj_t * label_start = lv_label_create(btn_start, NULL); + lv_label_set_text_id(label_start, WATCH_TEXT_ID_START_TEST); + lv_obj_add_style(label_start,LV_OBJ_PART_MAIN, &lv_watch_font20); + lv_label_set_align(label_start, LV_LABEL_ALIGN_CENTER); + lv_obj_align(label_start, NULL, LV_ALIGN_CENTER, 0, 0); + + + lv_obj_t * label_prompt = lv_label_create(content, NULL); + lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font26); + lv_label_set_text_id(label_prompt, WATCH_TEXT_ID_LIVE_CALIBRATION_PROMPT); + lv_obj_set_width(label_prompt, LV_HOR_RES - 40); + lv_obj_align(label_prompt, btn_start, LV_ALIGN_OUT_TOP_MID, 0, -10); + + return obj; +} + +void mmi_factorymode_live_calibration_create_btn_cb(lv_obj_t * btn,lv_event_t e) +{ + if(e == LV_EVENT_CLICKED) + { + mmi_factorymode_live_calibration_create(NULL); + } +} + +// +static void mmi_factorymode_wear_test_status_update(lv_anim_t * anim) { char str[32]= {0}; - uint16_t hr_value = 0; + bool wear_state = false; - mmi_hsensor_heart_value_get(&hr_value); - sprintf(str, "%s: %d bpm", (char *)lv_lang_get_text(WATCH_TEXT_ID_HEART_RATE), hr_value); + wear_state = mmi_health_measure_wear_state_get(); + sprintf(str, "%s: %s", (char *)lv_lang_get_text(WATCH_TEXT_ID_WEAR_STATE), + (wear_state ? (char *)lv_lang_get_text(WATCH_TEXT_ID_WEARING) : (char *)lv_lang_get_text(WATCH_TEXT_ID_NO_WEAR))); lv_label_set_text(anim->var, str); } -static lv_obj_t * mmi_factorymode_heart_test_create(lv_obj_t * activity_obj) +static lv_obj_t * mmi_factorymode_wear_test_create(lv_obj_t * activity_obj) { lv_obj_t * obj; if(activity_obj == NULL) { lv_watch_activity_ext_t activity_ext; memset(&activity_ext, 0, sizeof(lv_watch_activity_ext_t)); activity_ext.actId = ACT_ID_FACTORY_MODE_TEST; - activity_ext.create = mmi_factorymode_heart_test_create; + activity_ext.create = mmi_factorymode_wear_test_create; activity_ext.prepare_destory = factorymode_test_prepare_destory; activity_obj = lv_watch_creat_activity_obj(&activity_ext); LV_ASSERT_MEM(activity_obj); @@ -1795,23 +1946,14 @@ static lv_obj_t * mmi_factorymode_heart_test_create(lv_obj_t * activity_obj) lv_obj_align(content, NULL, LV_ALIGN_CENTER, 0, 0); lv_obj_set_click(content, false); - testing_st = FAC_HEART; - mmi_hsensor_heart_open(); - lv_obj_t * label = lv_label_create(content, NULL); -#if USE_LV_WATCH_UI_360_360 - lv_obj_add_style(label,LV_OBJ_PART_MAIN, &lv_watch_font30); - lv_obj_set_width(label,LV_HOR_RES-60); - lv_obj_set_pos(label, 30, 105); -#else - lv_obj_add_style(label,LV_OBJ_PART_MAIN, &lv_watch_font26); - lv_obj_set_width(label,LV_HOR_RES-40); - lv_obj_set_pos(label, 20, 70); -#endif + lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font26); + lv_obj_set_width(label, LV_HOR_RES-40); + lv_obj_set_pos(label, 20, LV_VER_RES / 4); char str[32]= {0}; - sprintf(str, "%s: ", (char *)lv_lang_get_text(WATCH_TEXT_ID_HEART_RATE)); + sprintf(str, "%s: ", (char *)lv_lang_get_text(WATCH_TEXT_ID_WEAR_STATE)); lv_label_set_text(label,str); lv_anim_path_t path; @@ -1821,7 +1963,7 @@ static lv_obj_t * mmi_factorymode_heart_test_create(lv_obj_t * activity_obj) lv_anim_t a; lv_anim_init(&a); lv_anim_set_var(&a, label); - lv_anim_set_start_cb(&a, (lv_anim_ready_cb_t)mmi_factorymode_heart_test_status_update); + lv_anim_set_start_cb(&a, (lv_anim_ready_cb_t)mmi_factorymode_wear_test_status_update); lv_anim_set_time(&a, 1); lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE); lv_anim_set_delay(&a,1000); @@ -1831,33 +1973,162 @@ static lv_obj_t * mmi_factorymode_heart_test_create(lv_obj_t * activity_obj) return obj; } -void mmi_factorymode_heart_test_create_btn_cb(lv_obj_t * btn,lv_event_t e) +void mmi_factorymode_wear_test_create_btn_cb(lv_obj_t * btn,lv_event_t e) { - if(e == LV_EVENT_CLICKED) { - mmi_factorymode_heart_test_create(NULL); + if(e == LV_EVENT_CLICKED) + { + mmi_factorymode_wear_test_create(NULL); } } -// spo2 -#ifdef __MMI_HEALTH_MEASURE_SPO2_SUPPORT__ -static void mmi_factorymode_spo2_test_status_update(lv_anim_t * anim) +// +static void mmi_factorymode_light_leak_test_status_update(lv_anim_t * anim) +{ + char str[64]= {0}; + + sprintf(str, "%s: %d,%d,%d", (char *)lv_lang_get_text(WATCH_TEXT_ID_LIGHT_LEAK_DATA), + factory_reslts.green_data_final, + factory_reslts.red_data_final, + factory_reslts.ir_data_final); + lv_label_set_text(anim->var, str); + + s_sensor_counter++; + if(4 == s_sensor_counter) + { + mmi_hsensor_close(); + + lv_obj_t * par = lv_obj_get_parent(anim->var); + lv_obj_t * label_result = lv_label_create(par, anim->var); + if((0 < factory_reslts.green_data_final && 3000 > factory_reslts.green_data_final) + && (0 < factory_reslts.red_data_final && 3000 > factory_reslts.red_data_final) + && (0 < factory_reslts.ir_data_final && 3000 > factory_reslts.ir_data_final) + ) + sprintf(str, "%s%s", (char *)lv_lang_get_text(WATCH_TEXT_ID_LIGHT_LEAK_TEST), (char *)lv_lang_get_text(WATCH_TEXT_ID_SUCCESS)); + else + sprintf(str, "%s%s", (char *)lv_lang_get_text(WATCH_TEXT_ID_LIGHT_LEAK_TEST), (char *)lv_lang_get_text(WATCH_TEXT_ID_FAIL)); + + lv_label_set_text(label_result, str); + lv_obj_align(label_result, anim->var, LV_ALIGN_OUT_BOTTOM_MID, 0, 10); + } +} + +static void mmi_factorymode_light_leak_event_cb(lv_obj_t * btn, lv_event_t e) +{ + if(LV_EVENT_CLICKED != e) + return; + + if(NULL == btn) + return; + + lv_obj_t * par = lv_obj_get_parent((lv_obj_t*)btn); + if(NULL == par) + return; + + lv_obj_del(btn); + + testing_st = FAC_HEART; + HX3918_test(FT_LEAK_LIGHT_MODE); + s_sensor_counter = 0; + + lv_obj_t * label = lv_label_create(par, NULL); + lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font20); + lv_label_set_long_mode(label, LV_LABEL_LONG_BREAK); + lv_obj_set_width(label, LV_HOR_RES - 40); + lv_obj_set_pos(label, 20, LV_VER_RES / 4); + + char str[64]= {0}; + sprintf(str, "%s: ", (char *)lv_lang_get_text(WATCH_TEXT_ID_LIGHT_LEAK_DATA)); + lv_label_set_text(label,str); + + lv_anim_path_t path; + lv_anim_path_init(&path); + lv_anim_path_set_cb(&path, lv_anim_path_step); + + lv_anim_t a; + lv_anim_init(&a); + lv_anim_set_var(&a, label); + lv_anim_set_start_cb(&a, (lv_anim_ready_cb_t)mmi_factorymode_light_leak_test_status_update); + lv_anim_set_time(&a, 1); + lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE); + lv_anim_set_delay(&a,1000); + lv_anim_set_repeat_delay(&a, 1000); + lv_anim_start(&a); +} + +static lv_obj_t * mmi_factorymode_light_leak_test_create(lv_obj_t * activity_obj) +{ + if(activity_obj == NULL) { + lv_watch_activity_ext_t activity_ext; + memset(&activity_ext, 0, sizeof(lv_watch_activity_ext_t)); + activity_ext.actId = ACT_ID_FACTORY_MODE_TEST; + activity_ext.create = mmi_factorymode_light_leak_test_create; + activity_ext.prepare_destory = factorymode_test_prepare_destory; + activity_obj = lv_watch_creat_activity_obj(&activity_ext); + LV_ASSERT_MEM(activity_obj); + if(NULL == activity_obj) { + return NULL; + } + } + + lv_obj_t * obj = lv_watch_obj_create(activity_obj); + LV_ASSERT_MEM(obj); + if(NULL == obj) + return NULL; + + lv_obj_t * content = lv_cont_create(obj, NULL); + lv_obj_set_size(content, lv_obj_get_width(obj), lv_obj_get_height(obj)); + lv_obj_add_style(content,LV_OBJ_PART_MAIN, &lv_watch_style_transp); + lv_obj_align(content, NULL, LV_ALIGN_CENTER, 0, 0); + lv_obj_set_click(content, false); + + lv_obj_t * btn_start = lv_btn_create(content, NULL); + lv_obj_set_size(btn_start, LV_HOR_RES * 2 / 3, 40); + lv_obj_set_event_cb(btn_start, mmi_factorymode_light_leak_event_cb); + lv_obj_align(btn_start, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -10); + + lv_obj_t * label_start = lv_label_create(btn_start, NULL); + lv_label_set_text_id(label_start, WATCH_TEXT_ID_START_TEST); + lv_obj_add_style(label_start,LV_OBJ_PART_MAIN, &lv_watch_font20); + lv_label_set_align(label_start, LV_LABEL_ALIGN_CENTER); + lv_obj_align(label_start, NULL, LV_ALIGN_CENTER, 0, 0); + + + lv_obj_t * label_prompt = lv_label_create(content, NULL); + lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font26); + lv_label_set_text_id(label_prompt, WATCH_TEXT_ID_LIVE_CALIBRATION_PROMPT); + lv_obj_set_width(label_prompt, LV_HOR_RES - 40); + lv_obj_align(label_prompt, btn_start, LV_ALIGN_OUT_TOP_MID, 0, -10); + + return obj; +} + +void mmi_factorymode_light_leak_test_create_btn_cb(lv_obj_t * btn,lv_event_t e) +{ + if(e == LV_EVENT_CLICKED) + { + mmi_factorymode_light_leak_test_create(NULL); + } +} +#endif + +static void mmi_factorymode_heart_test_status_update(lv_anim_t * anim) { char str[32]= {0}; - uint16_t spo2_value = 0; + uint16_t hr_value = 0; - mmi_hsensor_spo2_value_get(&spo2_value); - sprintf(str, "%s: %d%%", (char *)lv_lang_get_text(WATCH_TEXT_ID_BLOOD_OXYGEN), spo2_value); + mmi_hsensor_heart_value_get(&hr_value); + sprintf(str, "%s:\n %d bpm", (char *)lv_lang_get_text(WATCH_TEXT_ID_HEART_RATE), hr_value); lv_label_set_text(anim->var, str); } -static lv_obj_t * mmi_factorymode_spo2_test_create(lv_obj_t * activity_obj) +static lv_obj_t * mmi_factorymode_heart_test_create(lv_obj_t * activity_obj) { lv_obj_t * obj; if(activity_obj == NULL) { lv_watch_activity_ext_t activity_ext; memset(&activity_ext, 0, sizeof(lv_watch_activity_ext_t)); activity_ext.actId = ACT_ID_FACTORY_MODE_TEST; - activity_ext.create = mmi_factorymode_spo2_test_create; + activity_ext.create = mmi_factorymode_heart_test_create; activity_ext.prepare_destory = factorymode_test_prepare_destory; activity_obj = lv_watch_creat_activity_obj(&activity_ext); LV_ASSERT_MEM(activity_obj); @@ -1877,8 +2148,8 @@ static lv_obj_t * mmi_factorymode_spo2_test_create(lv_obj_t * activity_obj) lv_obj_align(content, NULL, LV_ALIGN_CENTER, 0, 0); lv_obj_set_click(content, false); - testing_st = FAC_SPO2; - mmi_hsensor_spo2_open(); + testing_st = FAC_HEART; + mmi_hsensor_heart_open(); lv_obj_t * label = lv_label_create(content, NULL); #if USE_LV_WATCH_UI_360_360 @@ -1887,14 +2158,14 @@ static lv_obj_t * mmi_factorymode_spo2_test_create(lv_obj_t * activity_obj) lv_obj_set_pos(label, 30, 105); #else lv_obj_add_style(label,LV_OBJ_PART_MAIN, &lv_watch_font26); - lv_obj_set_width(label,LV_HOR_RES - 40); + lv_obj_set_width(label,LV_HOR_RES-40); lv_obj_set_pos(label, 20, 70); #endif char str[32]= {0}; - sprintf(str, "%s: ", (char *)lv_lang_get_text(WATCH_TEXT_ID_BLOOD_OXYGEN)); - lv_label_set_text(label, str); + sprintf(str, "%s: ", (char *)lv_lang_get_text(WATCH_TEXT_ID_HEART_RATE)); + lv_label_set_text(label,str); lv_anim_path_t path; lv_anim_path_init(&path); @@ -1903,7 +2174,7 @@ static lv_obj_t * mmi_factorymode_spo2_test_create(lv_obj_t * activity_obj) lv_anim_t a; lv_anim_init(&a); lv_anim_set_var(&a, label); - lv_anim_set_start_cb(&a, (lv_anim_ready_cb_t)mmi_factorymode_spo2_test_status_update); + lv_anim_set_start_cb(&a, (lv_anim_ready_cb_t)mmi_factorymode_heart_test_status_update); lv_anim_set_time(&a, 1); lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE); lv_anim_set_delay(&a,1000); @@ -1913,82 +2184,33 @@ static lv_obj_t * mmi_factorymode_spo2_test_create(lv_obj_t * activity_obj) return obj; } -void mmi_factorymode_spo2_test_create_btn_cb(lv_obj_t * btn,lv_event_t e) +void mmi_factorymode_heart_test_create_btn_cb(lv_obj_t * btn,lv_event_t e) { if(e == LV_EVENT_CLICKED) { - mmi_factorymode_spo2_test_create(NULL); + mmi_factorymode_heart_test_create(NULL); } } -#endif - -#if USE_HX3918 - -#include "../../..//lv_drivers/indev/HX3918/hx3918.h" - -#include "../../../lv_drivers/indev/HX3918/hx3918_factory_test.h" -extern factory_result_t factory_reslts; -extern int ir_wear ;//红外佩戴状态 -extern int cap_wear ;//电容佩戴状态 -extern unsigned char s_HX3918_wear_status ;//佩戴状态 -#ifdef SAR_ALG_LIB -extern int16_t nv_wear_offset[2] ; // 芯片产测校准的两个通道的OFFSET值, 值记录在fash里面 -extern int16_t nv_base_data[2]; // 芯片产测校准的两个通道的对空LP值, 值记录在flash里面 -//lp[0],bl[0],lp[1],bl[1],gdiff[0] -extern int16_t glp[2] ; -extern int16_t gbl[2]; -extern int16_t gdiff[2]; -#else - int16_t nv_wear_offset[2] ; // 芯片产测校准的两个通道的OFFSET值, 值记录在fash里面 - int16_t nv_base_data[2]; // 芯片产测校准的两个通道的对空LP值, 值记录在flash里面 -//lp[0],bl[0],lp[1],bl[1],gdiff[0] - int16_t glp[2] ; - int16_t gbl[2]; - int16_t gdiff[2]; -#endif -char HX3918_close_count = 0; -static void mmi_factorymode_hanging_cali_status_update(lv_anim_t * anim) +// spo2 +#ifdef __MMI_HEALTH_MEASURE_SPO2_SUPPORT__ +static void mmi_factorymode_spo2_test_status_update(lv_anim_t * anim) { - char str[320]= {0}; + char str[32]= {0}; uint16_t spo2_value = 0; - int HX3918_wear_status = - //mmi_hsensor_measure_value_get(NULL, NULL, NULL, &spo2_value); - //sprintf(str, "%s : %d%%", (char *)lv_lang_get_text(WATCH_TEXT_ID_BLOOD_OXYGEN), spo2_value); - sprintf(str, "佩戴状态 :\n红外:%d活体:%d佩戴:%d\ngdiff:%d,%d\n校准数据:\n%d,%d,%d,%d\n漏光数据:\n%d,%d,%d", - ir_wear,cap_wear,s_HX3918_wear_status,gdiff[0],gdiff[1],nv_wear_offset[0],nv_wear_offset[1], - nv_base_data[0],nv_base_data[1],factory_reslts.green_data_final,factory_reslts.red_data_final,factory_reslts.ir_data_final); + + mmi_hsensor_spo2_value_get(&spo2_value); + sprintf(str, "%s:\n %d%%", (char *)lv_lang_get_text(WATCH_TEXT_ID_BLOOD_OXYGEN), spo2_value); lv_label_set_text(anim->var, str); - if(HX3918_close_count) - { - HX3918_close_count -- ; - if(HX3918_close_count == 0) - hx3918_measure_stop(); - } -} -static void factorymode_hanging_cali_btn_event_cb(lv_obj_t * btn, lv_event_t e) -{ - if(LV_EVENT_CLICKED == e) - { - HX3918_test(255); - HX3918_close_count = 3; - } -} -static void factorymode_reslts_label_btn_event_cb(lv_obj_t * btn, lv_event_t e) -{ - if(LV_EVENT_CLICKED == e) - { - HX3918_test(FT_LEAK_LIGHT_MODE); - HX3918_close_count = 3; - } } -static lv_obj_t * mmi_factorymode_hanging_cali_create(lv_obj_t * activity_obj) + +static lv_obj_t * mmi_factorymode_spo2_test_create(lv_obj_t * activity_obj) { lv_obj_t * obj; if(activity_obj == NULL) { lv_watch_activity_ext_t activity_ext; memset(&activity_ext, 0, sizeof(lv_watch_activity_ext_t)); activity_ext.actId = ACT_ID_FACTORY_MODE_TEST; - activity_ext.create = mmi_factorymode_hanging_cali_create; + activity_ext.create = mmi_factorymode_spo2_test_create; activity_ext.prepare_destory = factorymode_test_prepare_destory; activity_obj = lv_watch_creat_activity_obj(&activity_ext); LV_ASSERT_MEM(activity_obj); @@ -2003,50 +2225,28 @@ static lv_obj_t * mmi_factorymode_hanging_cali_create(lv_obj_t * activity_obj) return NULL; } lv_obj_t * content = lv_cont_create(obj, NULL); - //lv_obj_set_size(content, lv_obj_get_width(obj), lv_obj_get_height(obj)); - lv_obj_set_size(content, LV_HOR_RES, LV_VER_RES); + lv_obj_set_size(content, lv_obj_get_width(obj), lv_obj_get_height(obj)); lv_obj_add_style(content,LV_OBJ_PART_MAIN, &lv_watch_style_transp); lv_obj_align(content, NULL, LV_ALIGN_CENTER, 0, 0); lv_obj_set_click(content, false); testing_st = FAC_SPO2; - // mmi_hsensor_measure_stop(); - // mmi_hsensor_spo2_measure_start(); - - lv_obj_t * SAR_btn = lv_btn_create(content, NULL); - lv_obj_set_pos(SAR_btn, 0, LV_VER_RES-50); - lv_obj_set_size(SAR_btn, LV_HOR_RES / 2, 40); - //lv_watch_set_free_num(start_btn, num); - lv_obj_t * SAR_label = lv_label_create(SAR_btn, NULL); - //lv_label_set_text_id(SAR_label, WATCH_TEXT_ID_START_TEST); - lv_label_set_text(SAR_label, "活体校准"); - lv_obj_add_style(SAR_label, LV_LABEL_PART_MAIN, &lv_watch_font26); // &lv_watch_font30); - //lv_obj_align(SAR_btn, NULL, LV_ALIGN_IN_TOP_MID, 0, 80); - lv_obj_set_event_cb(SAR_btn, factorymode_hanging_cali_btn_event_cb); - - lv_obj_t * reslts_btn = lv_btn_create(content, NULL); - lv_obj_set_pos(reslts_btn, LV_HOR_RES / 2, LV_VER_RES-50); - lv_obj_set_size(reslts_btn, LV_HOR_RES / 2, 40); - //lv_watch_set_free_num(start_btn, num); - lv_obj_t * reslts_label = lv_label_create(reslts_btn, NULL); - //lv_label_set_text_id(reslts_label, WATCH_TEXT_ID_START_TEST ; - lv_label_set_text(reslts_label, "漏光测试" ); - lv_obj_add_style(reslts_label, LV_LABEL_PART_MAIN, &lv_watch_font26); // &lv_watch_font30 ); - //lv_obj_align(reslts_btn, NULL, LV_ALIGN_IN_TOP_MID, 0, 80); - lv_obj_set_event_cb(reslts_btn, factorymode_reslts_label_btn_event_cb); + mmi_hsensor_spo2_open(); lv_obj_t * label = lv_label_create(content, NULL); - lv_obj_add_style(label,LV_OBJ_PART_MAIN, &lv_watch_font20); // &lv_watch_font26); - //lv_obj_set_width(label,240 - 10); - lv_obj_set_size(label, LV_HOR_RES - 10, 240); - lv_obj_set_pos(label, 5, 10); +#if USE_LV_WATCH_UI_360_360 + lv_obj_add_style(label,LV_OBJ_PART_MAIN, &lv_watch_font30); + lv_obj_set_width(label,LV_HOR_RES-60); + lv_obj_set_pos(label, 30, 105); +#else + lv_obj_add_style(label,LV_OBJ_PART_MAIN, &lv_watch_font26); + lv_obj_set_width(label,LV_HOR_RES - 40); + lv_obj_set_pos(label, 20, 70); +#endif - //lv_label_set_long_mode(label, LV_LABEL_LONG_BREAK); - char str[320]= {0}; - uint16_t spo2_value = 0; - mmi_hsensor_measure_value_get(NULL, NULL, NULL, &spo2_value); - sprintf(str, "佩戴状态 :\n 红外:0活体:0佩戴:0\n0,0\n校准数据:0,0,0,0\n漏光数据:0,0,0,0" - ); + char str[32]= {0}; + + sprintf(str, "%s: ", (char *)lv_lang_get_text(WATCH_TEXT_ID_BLOOD_OXYGEN)); lv_label_set_text(label, str); lv_anim_path_t path; @@ -2056,24 +2256,24 @@ static lv_obj_t * mmi_factorymode_hanging_cali_create(lv_obj_t * activity_obj) lv_anim_t a; lv_anim_init(&a); lv_anim_set_var(&a, label); - lv_anim_set_start_cb(&a, (lv_anim_ready_cb_t)mmi_factorymode_hanging_cali_status_update); + lv_anim_set_start_cb(&a, (lv_anim_ready_cb_t)mmi_factorymode_spo2_test_status_update); lv_anim_set_time(&a, 1); lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE); lv_anim_set_delay(&a,1000); lv_anim_set_repeat_delay(&a, 1000); lv_anim_start(&a); - - return obj; } -void mmi_factorymode_hanging_cali_create_btn_cb(lv_obj_t * btn,lv_event_t e) + +void mmi_factorymode_spo2_test_create_btn_cb(lv_obj_t * btn,lv_event_t e) { if(e == LV_EVENT_CLICKED) { - mmi_factorymode_hanging_cali_create(NULL); + mmi_factorymode_spo2_test_create(NULL); } } #endif + #endif #endif