gengxin
authorCCC <2393524978@qq.com>
Thu, 3 Aug 2023 03:40:10 +0000 (11:40 +0800)
committerCCC <2393524978@qq.com>
Thu, 3 Aug 2023 03:40:10 +0000 (11:40 +0800)
2.sdk/sdk/gui/lv_watch/include/ui_textid.h
2.sdk/sdk/gui/lv_watch/lv_apps/album/album.h
2.sdk/sdk/gui/lv_watch/lv_apps/camera/camera.c
2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode.h
2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode_bt_test_main.c
2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode_main.c
2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode_test.c
2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_measure.c

index 21fb5cb..63953f1 100644 (file)
@@ -262,7 +262,7 @@ enum
     WATCH_TEXT_ID_OPEN_CAMERA_LTE,                  /* "打开LTEPOWER"                  "Open LTEPOWER"*/
     WATCH_TEXT_ID_PLAY_MUSIC,                       /* "播放音乐"                      "Play music"*/
     WATCH_TEXT_ID_CPU_OVERLOAD,                     /* "CPU重载"                       "CPU overload"*/
-    WATCH_TEXT_ID_GSENSOR,                          /* "gsensor"                       "gsensor"*/
+    WATCH_TEXT_ID_GSENSOR,                          /* "Gsensor"                       "Gsensor"*/
     WATCH_TEXT_ID_SELECT_ALL,                       /* "全选"                          "Select all"*/
     WATCH_TEXT_ID_SELECT_NONE,                      /* "清空"                          "Select none"*/
 
@@ -867,6 +867,13 @@ enum
     WATCH_TEXT_ID_VOICE_CALL_RINGING,                            /* "语音呼入中"     "Ringing"  */
     WATCH_TEXT_ID_PHONEBOOK,                            /* "通讯录"             "Phonebook" */
     WATCH_TEXT_ID_NO_ALARM,                             /* "请在APP设置闹钟"             "No alarm" */
+    WATCH_TEXT_ID_HEART_TEST,                           /* "心率测试"                    "Heart test" */
+    WATCH_TEXT_ID_SPO2_TEST,                            /* "血氧测试"                    "Spo2 test" */
+    WATCH_TEXT_ID_TEMPERATURE_TEST,                     /* "体温测试"                    "Temperatur test" */
+    WATCH_TEXT_ID_NO_SIM_POWER_OFF_PROMPT,              /* "秒后\n设备将关机"           "s later\ndevice will shut down" */
+    WATCH_TEXT_ID_CHARGE_CONNECTED,                     /* "充电已连接"                    "Charging connected" */
+    WATCH_TEXT_ID_CHARGE_REMOVED,                       /* "充电已移除"                    "Charging removed" */
+
 
     //CHENG_MODIFY
 
index 8d10ba3..69385ea 100644 (file)
@@ -26,7 +26,7 @@ extern "C" {
 /*********************
  *      DEFINES
  *********************/
-#define PHOTO_MAX_COUNT 20
+#define PHOTO_MAX_COUNT (12) // 20
 #define PHOTO_PATH_LEN 18
 #define PHOTO_PATH_FILE  "C:/photo_path"
 #define PHOTO_SHARE_TMEP_PATH  "C:/share_temp"
index dd18df9..58128f9 100644 (file)
@@ -288,7 +288,8 @@ static void camera_out_of_memory_create(lv_obj_t * obj)
 
     lv_obj_t * img_mem = lv_img_create(cont_bg, NULL);
     lv_img_set_src(img_mem, ICON_CAMERA_MEMORY);
-    lv_obj_align(img_mem, NULL, LV_ALIGN_IN_TOP_MID, 0, 10);
+    //lv_obj_align(img_mem, NULL, LV_ALIGN_IN_TOP_MID, 0, 10);
+    lv_obj_align(img_mem, NULL, LV_ALIGN_IN_TOP_MID, 0, 40);
 
     lv_obj_t * label = lv_label_create(cont_bg, NULL);
     lv_label_set_text_id(label, WATCH_TEXT_ID_OUT_OF_MEM);
@@ -305,10 +306,11 @@ static void camera_out_of_memory_create(lv_obj_t * obj)
     lv_obj_set_style_local_radius(btn, LV_BTN_PART_MAIN, LV_STATE_PRESSED, 30);
     lv_obj_set_size(btn, 200, 56);
     lv_obj_set_event_cb(btn, camera_outmem_btn_event_cb);
-    lv_obj_align(btn, label, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
+    //lv_obj_align(btn, label, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
+    lv_obj_align(btn, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -20);
     lv_obj_t * btn_label = lv_label_create(btn, NULL);
     lv_label_set_text_id(btn_label, WATCH_TEXT_ID_GOT_IT);
-    lv_obj_add_style(btn_label,LV_LABEL_PART_MAIN, &lv_watch_font30);
+    lv_obj_add_style(btn_label,LV_LABEL_PART_MAIN, &lv_watch_font26); // &lv_watch_font30);
 }
 
 #if 0
@@ -381,7 +383,7 @@ static void camera_save_failed_create(int32_t error)
 
     lv_obj_t * label = lv_label_create(cont_bg, NULL);
     lv_label_set_text_id(label, WATCH_TEXT_ID_SAVE_FAILED);
-    lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font30);
+    lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font26); // &lv_watch_font30);
     lv_label_set_align(label, LV_LABEL_ALIGN_CENTER);
     lv_obj_align(label, img_fail, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
 
index 0b6e892..0336f07 100644 (file)
@@ -175,10 +175,15 @@ void factorymode_battery_create_btn_cb(lv_obj_t * btn,lv_event_t e);
 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__
+void mmi_factorymode_temperature_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);
+void mmi_factorymode_spo2_test_create_btn_cb(lv_obj_t * btn,lv_event_t e);
+#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);
-void factorymode_gps_create_btn_cb(lv_obj_t * btn,lv_event_t e);
 void factorymode_temperature_test_create_btn_cb(lv_obj_t * btn,lv_event_t e);
+#endif
 void factory_mode_calibration_create_btn_cb(lv_obj_t * btn,lv_event_t e);
 void factorymode_agetest_create_btn_cb(lv_obj_t * btn,lv_event_t e);
 void factorymode_init_test_res(void);
index b33d671..417a059 100644 (file)
@@ -252,7 +252,7 @@ static void factory_mode_bt_test_101_btn_event_cb(lv_obj_t * btn, lv_event_t e)
         SensorHub_boot_bin_check_cmd();
         char tip_str[64] = {0};
         snprintf(tip_str, 64, "Gsensor:0x%02x\nHeartrate:0x%02x\nreboot_cnt:%d\nboot_bin:%d",
-                 asl_pedometer_sensor_id_get(), asl_hr_bp_bo_sensor_id_get(), SensorHub_bt_reboot_cnt_get(), SensorHub_boot_bin_status_get());
+                 mmi_gsensor_sensor_id_get(), asl_hr_bp_bo_sensor_id_get(), SensorHub_bt_reboot_cnt_get(), SensorHub_boot_bin_status_get());
         lv_watch_msgbox_tip_create(lv_watch_get_top_activity_obj(), LV_HOR_RES * 3/4, tip_str, 1000);
     }
 }
@@ -397,14 +397,14 @@ static void factory_mode_bt_test_261_btn_event_cb(lv_obj_t * btn, lv_event_t e)
 static void factory_mode_bt_test_271_btn_event_cb(lv_obj_t * btn, lv_event_t e)
 {
     if(LV_EVENT_CLICKED == e) {
-        asl_temperature_measure_start();
+        mmi_tsensor_temperature_measure_start();
     }
 }
 
 static void factory_mode_bt_test_273_btn_event_cb(lv_obj_t * btn, lv_event_t e)
 {
     if(LV_EVENT_CLICKED == e) {
-        asl_temperature_measure_stop();
+        mmi_tsensor_temperature_measure_stop();
     }
 }
 
index 39a1fbc..a42040a 100644 (file)
@@ -64,7 +64,7 @@ const struct {
     { WATCH_TEXT_ID_GCF, factorymode_gcf_create_btn_event_cb },
     { WATCH_TEXT_ID_PERFORMANCE_TEST, factorymode_hwtest_create_btn_event_cb },
 #endif
-#if 1 //simware add
+//#if 1 //simware add
 #if USE_MULTI_KEY
     { WATCH_TEXT_ID_PRESS_SOS_KEY,   factorymode_press_sos_key_create_btn_cb},
 #endif
@@ -80,15 +80,21 @@ const struct {
 #if USE_GPS
     { WATCH_TEXT_ID_GPS_TEST,        factorymode_gps_create_btn_cb },
 #endif
+#ifdef __MMI_ZHSX_SUPPORT__
+       { WATCH_TEXT_ID_TEMPERATURE_TEST, mmi_factorymode_temperature_test_create_btn_cb },
+       { WATCH_TEXT_ID_HEART_TEST, mmi_factorymode_heart_test_create_btn_cb },
+       { WATCH_TEXT_ID_SPO2_TEST, mmi_factorymode_spo2_test_create_btn_cb },
+#else
     { WATCH_TEXT_ID_SH_TEMP_MEASURE_START, factorymode_temperature_test_create_btn_cb },
     { WATCH_TEXT_ID_HR_BP_BO_TEST, factorymode_hr_bp_bo_test_create_btn_cb },
     { WATCH_TEXT_ID_SPORT_TEST, factorymode_sport_hr_test_create_btn_cb },
+#endif
 #if USE_BT_SENSOR_HUB
     { WATCH_TEXT_ID_BLUETOOTH, factory_mode_bt_test_main_create_btn_cb},
 #endif
     {WATCH_TEXT_ID_CALOBRATION, factory_mode_calibration_create_btn_cb},
     { WATCH_TEXT_ID_AGING_MODE, factorymode_agetest_create_btn_cb},
-#endif
+//#endif
 };
 
 /**********************
@@ -143,7 +149,7 @@ lv_obj_t * factorymode_main_create(lv_obj_t * activity_obj)
     lv_obj_t * list = lv_list_create(obj, NULL);
     lv_watch_obj_add_element(list);
     lv_watch_obj_add_element(lv_page_get_scrl(list));
-    lv_coord_t interval = 20;
+    lv_coord_t interval = 15; // 20;
     lv_obj_set_size(list, LV_HOR_RES, LV_VER_RES - lv_obj_get_height(title) - interval - 10);
     lv_page_set_edge_flash(list, true);
     lv_obj_add_style(list, LV_PAGE_PART_EDGE_FLASH, &lv_watch_cont_opa1);
index 4721332..5e70866 100644 (file)
@@ -24,9 +24,15 @@ enum {
     NONE = 0,
     FAC_SOS_KEY,
     GSENSOR,
+#ifdef __MMI_ZHSX_SUPPORT__
+       FAC_TEMPERATURE,
+    FAC_HEART,
+    FAC_SPO2,
+#else
     HEART_RATE,
     SPORT_HEART_RATE,
     FAC_TEMPERATURE,
+#endif
     FAC_GPS,
     FAC_BACKLIGHT,
     FAC_WIFI,
@@ -76,11 +82,19 @@ static lv_obj_t * factorymode_wifi_create(lv_obj_t * activity_obj);
 static void factorymode_gps_location_info_update(lv_anim_t * anim);
 static lv_obj_t * factorymode_gps_test_create(lv_obj_t * activity_obj);
 #endif
+
+#ifdef __MMI_ZHSX_SUPPORT__
+static lv_obj_t * mmi_factorymode_gsensor_create(lv_obj_t * activity_obj);
+static lv_obj_t * mmi_factorymode_temperature_test_create(lv_obj_t * activity_obj);
+static lv_obj_t * mmi_factorymode_heart_test_create(lv_obj_t * activity_obj);
+static lv_obj_t * mmi_factorymode_spo2_test_create(lv_obj_t * activity_obj);
+#else
 static lv_obj_t * factorymode_gsensor_create(lv_obj_t * activity_obj);
 static void factorymode_hr_bp_bo_test_status_update(lv_anim_t * anim);
 static lv_obj_t * factorymode_hr_bp_bo_test_create(lv_obj_t * activity_obj);
 static void factorymode_temperature_update(lv_anim_t * anim);
 static lv_obj_t * factorymode_temperature_test_create(lv_obj_t * activity_obj);
+#endif
 static void factory_mode_calibration_destory(lv_obj_t * activity_obj);
 static lv_obj_t * factory_mode_calibration_create(lv_obj_t * activity_obj);
 static void factory_agetest_destory(void);
@@ -119,13 +133,26 @@ static void factorymode_test_prepare_destory(lv_obj_t * activity_obj)
             sos_key_param_set(0);
 #endif
             break;
+
+#ifdef __MMI_ZHSX_SUPPORT__
+               case FAC_TEMPERATURE:
+                       mmi_tsensor_temperature_measure_stop();
+                       break;
+                       
+               case FAC_HEART:
+               case FAC_SPO2:
+                       mmi_hsensor_measure_stop();
+                       break;
+#else
         case HEART_RATE:
         case SPORT_HEART_RATE:
-            asl_hr_bp_bo_measure_stop();
+            mmi_hsensor_measure_stop();
             break;
         case FAC_TEMPERATURE:
-            asl_temperature_measure_stop();
+            mmi_tsensor_temperature_measure_stop();
             break;
+#endif
+       
         case FAC_GPS:
 #if USE_GPS
             gps_core.force_on=0;
@@ -1054,13 +1081,64 @@ static lv_obj_t * factorymode_gps_test_create(lv_obj_t * activity_obj)
 }
 #endif
 
-static lv_obj_t * factorymode_gsensor_create(lv_obj_t * activity_obj)
+#ifdef __MMI_ZHSX_SUPPORT__
+static void mmi_factorymode_gsensor_status_update(lv_anim_t * anim)
 {
-    if(activity_obj == NULL) {
+#if 1
+       char str[128] = {0};
+       uint8_t id = mmi_gsensor_sensor_id_get();
+       int16_t chip_x = 0, chip_y = 0, chip_z = 0;
+       
+       xMotion_Chip_Read_XYZ(&chip_x, &chip_y, &chip_z);
+       sprintf(str, "%s %s 0x%x\nX: %d\nY: %d\nZ: %d\n%s", 
+                               (char *)lv_lang_get_text(WATCH_TEXT_ID_GSENSOR),
+                               "id :", id,
+                               chip_x, chip_y, chip_z,
+                               (char *)lv_lang_get_text(WATCH_TEXT_ID_GSENSOR_SUCCESS));
+
+       lv_label_set_text(anim->var, str);
+#else
+       
+       int16_t chip_x = 0, chip_y = 0, chip_z = 0;
+       xMotion_Chip_Read_XYZ(&chip_x,&chip_y,&chip_z);
+       printf("[@CHENG_DEBUG][%d]:chip_x:%d,chip_y:%d,chip_z:%d\n", __LINE__, chip_x, chip_y, chip_z);
+
+
+       int16_t buffer_x = 0, buffer_y = 0, buffer_z = 0;
+       xMotion_Buffer_Read_XYZ(&buffer_x,&buffer_y,&buffer_z);
+       printf("[@CHENG_DEBUG][%d]:buffer_x:%d,buffer_y:%d,buffer_z:%d\n", __LINE__, buffer_x, buffer_y, buffer_z);
+       
+       
+       int16_t t_mems_data[32 * 3] = {0};
+       int16_t t_x[32]= {0}, t_y[32]= {0}, t_z[32]= {0};
+       get_Gsensor_fifo_xyz(t_mems_data);
+       memcpy(t_x, t_mems_data, 32);
+       memcpy(t_y, t_mems_data + 32, 32);
+       memcpy(t_z, t_mems_data + 64, 32);
+       for(int i=0; i<32; i++)
+               printf("[@CHENG_DEBUG][%d]:i:%d,x:%d,y:%d,z:%d\n", __LINE__, i,t_x[i],t_y[i],t_z[i]);
+
+
+       char str[128] = {0};
+    uint8_t id = mmi_gsensor_sensor_id_get();
+       
+       sprintf(str, "%s %s 0x%x\nX: %s\nY: %s\nZ: %s\n%s", 
+                               (char *)lv_lang_get_text(WATCH_TEXT_ID_GSENSOR),
+                               "id :", id,
+                               t_x, t_y, t_z,
+                               (char *)lv_lang_get_text(WATCH_TEXT_ID_GSENSOR_SUCCESS));
+    lv_label_set_text(anim->var, str);
+#endif
+}
+
+static lv_obj_t * mmi_factorymode_gsensor_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 = factorymode_gsensor_create;
+        activity_ext.create = mmi_factorymode_gsensor_create;
         activity_ext.prepare_destory = factorymode_test_prepare_destory;
         activity_obj = lv_watch_creat_activity_obj(&activity_ext);
         LV_ASSERT_MEM(activity_obj);
@@ -1091,104 +1169,59 @@ static lv_obj_t * factorymode_gsensor_create(lv_obj_t * activity_obj)
     lv_label_set_text_id(title_label, WATCH_TEXT_ID_GSENSOR);
     lv_obj_align(title_label, content, LV_ALIGN_IN_TOP_MID, 0, 10);
 
-    char str[64];
-    memset(str, 0, 64);
-    uint8_t id = asl_pedometer_sensor_id_get();
-
     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);
 #else
     lv_obj_add_style(label,LV_OBJ_PART_MAIN, &lv_watch_font20);
 #endif
-    lv_obj_set_size(label,LV_HOR_RES,LV_VER_RES/2);
-    if(id > 0) {
-        snprintf(str, 64, "%s %s 0x%x\n%s", (char *)lv_lang_get_text(WATCH_TEXT_ID_GSENSOR),"id :",id,(char *)lv_lang_get_text(WATCH_TEXT_ID_GSENSOR_SUCCESS));
-        lv_label_set_text(label,str);
-        lv_obj_align(label, content, LV_ALIGN_CENTER, 0, 0);
-    } else {
-        snprintf(str, 64, "%s %s 0x%x\n%s", (char *)lv_lang_get_text(WATCH_TEXT_ID_GSENSOR),"id :",id,(char *)lv_lang_get_text(WATCH_TEXT_ID_GSENSOR_FAIL));
-        lv_label_set_text(label,str);
-        lv_obj_align(label, content, LV_ALIGN_CENTER, 0, 0);
-    }
-
-    return obj;
-}
-
-static void factorymode_hr_bp_bo_test_status_update(lv_anim_t * anim)
-{
-    char str[128]= {0};
-    uint16_t hr = 0;
-    uint16_t bp_h = 0;
-    uint16_t bp_l = 0;
-    uint16_t bo = 0;
-    asl_hr_bp_bo_value_get(&hr, &bp_h, &bp_l, &bo);
-
-    snprintf(str, 128, "%s: %d bpm \n%s: %d mmHg \n%s: %d mmHg \n%s : %d%%",
-             (char *)lv_lang_get_text(WATCH_TEXT_ID_HEART_RATE), hr,
-             (char *)lv_lang_get_text(WATCH_TEXT_ID_SYSTOLIC_BP), bp_h,
-             (char *)lv_lang_get_text(WATCH_TEXT_ID_DIASTOLIC_BP), bp_l,
-             (char *)lv_lang_get_text(WATCH_TEXT_ID_BLOOD_OXYGEN), bo);
-    lv_label_set_text(anim->var,str);
-}
-
-static lv_obj_t * factorymode_hr_bp_bo_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 = factorymode_hr_bp_bo_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;
-        }
-    }
-
-    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);
-
-    testing_st = HEART_RATE;
-    asl_hr_bp_bo_measure_stop();
-    asl_hr_bp_bo_fac_mode_measure_start(WAKEUP_UPDATE);
-
-    char str[128]= {0};
-
-    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_font20);
-    lv_obj_set_width(label,LV_HOR_RES-40);
+    //lv_obj_set_size(label,LV_HOR_RES,LV_VER_RES/2);
+    lv_obj_set_width(label, LV_HOR_RES - 40);
     lv_obj_set_pos(label, 20, 70);
-#endif
-
-    uint16_t hr = 0;
-    uint16_t bp_h = 0;
-    uint16_t bp_l = 0;
-    uint16_t bo = 0;
-    asl_hr_bp_bo_value_get(&hr, &bp_h, &bp_l, &bo);
 
-    snprintf(str, 128, "%s: %d bpm \n%s: %d mmHg \n%s: %d mmHg \n%s : %d%%",
-             (char *)lv_lang_get_text(WATCH_TEXT_ID_HEART_RATE), hr,
-             (char *)lv_lang_get_text(WATCH_TEXT_ID_SYSTOLIC_BP), bp_h,
-             (char *)lv_lang_get_text(WATCH_TEXT_ID_DIASTOLIC_BP), bp_l,
-             (char *)lv_lang_get_text(WATCH_TEXT_ID_BLOOD_OXYGEN), bo);
+       char str[128] = {0};
+    uint8_t id = mmi_gsensor_sensor_id_get();
+    if(id > 0) 
+       {
+       #if 1
+                 sprintf(str, "%s %s 0x%x\nX: \nY: \nZ: \n", 
+                                       (char *)lv_lang_get_text(WATCH_TEXT_ID_GSENSOR),
+                                       "id :",
+                                       id);
+                                       //t_x, t_y, t_z,
+                                       //(char *)lv_lang_get_text(WATCH_TEXT_ID_GSENSOR_SUCCESS));
+       #else
+               int16_t t_mems_data[32 * 3] = {0};
+               int16_t t_x[32]= {0}, t_y[32]= {0}, t_z[32]= {0};
+
+               get_Gsensor_fifo_xyz(t_mems_data);
+               memcpy(t_x, t_mems_data, 32);
+               memcpy(t_y, t_mems_data + 32, 32);
+               memcpy(t_z, t_mems_data + 64, 32);
+               
+//        sprintf(str, "%s %s 0x%x\nX: %s\nY: %s\nZ: %s\n%s", 
+//                             (char *)lv_lang_get_text(WATCH_TEXT_ID_GSENSOR),
+//                             "id :", id,
+//                             t_x, t_y, t_z,
+//                             (char *)lv_lang_get_text(WATCH_TEXT_ID_GSENSOR_SUCCESS));
+
+               sprintf(str, "%s %s 0x%x\n%s", 
+                                       (char *)lv_lang_get_text(WATCH_TEXT_ID_GSENSOR),
+                                       "id :", id,
+                                       (char *)lv_lang_get_text(WATCH_TEXT_ID_GSENSOR_SUCCESS));
+       #endif
+    } 
+       else
+       {
+        sprintf(str, "%s %s 0x%x\n%s", 
+                                       (char *)lv_lang_get_text(WATCH_TEXT_ID_GSENSOR),
+                                       "id :", id,
+                                       (char *)lv_lang_get_text(WATCH_TEXT_ID_GSENSOR_FAIL));
+    }
     lv_label_set_text(label,str);
+       //lv_obj_align(label, content, LV_ALIGN_CENTER, 0, 0);
 
+#if 1
     lv_anim_path_t path;
     lv_anim_path_init(&path);
     lv_anim_path_set_cb(&path, lv_anim_path_step);
@@ -1196,34 +1229,26 @@ static lv_obj_t * factorymode_hr_bp_bo_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)factorymode_hr_bp_bo_test_status_update);
+    lv_anim_set_start_cb(&a, (lv_anim_ready_cb_t)mmi_factorymode_gsensor_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);
+#endif
 
     return obj;
 }
 
-static void factorymode_sport_hr_test_status_update(lv_anim_t * anim)
-{
-    char str[32] = {0};
-    uint16_t hr = 0;
-    asl_hr_bp_bo_value_get(&hr, NULL, NULL, NULL);
-
-    snprintf(str, 32, "%s: %d bpm", (char *)lv_lang_get_text(WATCH_TEXT_ID_HEART_RATE), hr);
-    lv_label_set_text(anim->var,str);
-}
+#else
 
-static lv_obj_t * factorymode_sport_hr_test_create(lv_obj_t * activity_obj)
+static lv_obj_t * factorymode_gsensor_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 = factorymode_sport_hr_test_create;
+        activity_ext.create = factorymode_gsensor_create;
         activity_ext.prepare_destory = factorymode_test_prepare_destory;
         activity_obj = lv_watch_creat_activity_obj(&activity_ext);
         LV_ASSERT_MEM(activity_obj);
@@ -1232,7 +1257,7 @@ static lv_obj_t * factorymode_sport_hr_test_create(lv_obj_t * activity_obj)
         }
     }
 
-    obj = lv_watch_obj_create(activity_obj);
+    lv_obj_t * obj = lv_watch_obj_create(activity_obj);
     LV_ASSERT_MEM(obj);
     if(NULL == obj) {
         return NULL;
@@ -1243,120 +1268,41 @@ static lv_obj_t * factorymode_sport_hr_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 = SPORT_HEART_RATE;
-    asl_hr_bp_bo_measure_stop();
-    asl_hr_bp_bo_sport_measure_start(5, WAKEUP_UPDATE);
-
-    char str[32]= {0};
-
-    lv_obj_t * label = lv_label_create(content, NULL);
+    lv_obj_t * title_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);
+    lv_obj_add_style(title_label,LV_OBJ_PART_MAIN, &lv_watch_font30_gray);
 #else
-    lv_obj_add_style(label,LV_OBJ_PART_MAIN, &lv_watch_font20);
-    lv_obj_set_width(label,LV_HOR_RES-40);
-    lv_obj_set_pos(label, 20, 70);
+    lv_obj_add_style(title_label,LV_OBJ_PART_MAIN, &lv_watch_font20_gray);
 #endif
+    lv_label_set_align(title_label, LV_LABEL_ALIGN_CENTER);
+    lv_obj_set_click(title_label, false);
+    lv_label_set_text_id(title_label, WATCH_TEXT_ID_GSENSOR);
+    lv_obj_align(title_label, content, LV_ALIGN_IN_TOP_MID, 0, 10);
 
-    uint16_t hr = 0;
-    asl_hr_bp_bo_value_get(&hr, NULL, NULL, NULL);
-
-    snprintf(str, 32, "%s: %d bpm", (char *)lv_lang_get_text(WATCH_TEXT_ID_HEART_RATE), hr);
-    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)factorymode_sport_hr_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;
-}
-
-static void factorymode_temperature_update(lv_anim_t * anim)
-{
-    char str[128]= {0};
-
-    snprintf(str, 128, "cur temp: %.2f°C\navg temp: %.2f°C\nbody temp: %.2f°C",
-             asl_cur_temperature_get(),
-             asl_avg_temperature_get(),
-             asl_body_temperature_get());
-    lv_label_set_text(anim->var,str);
-}
-
-static lv_obj_t * factorymode_temperature_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 = factorymode_temperature_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;
-        }
-    }
-
-    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);
-
-    testing_st = FAC_TEMPERATURE;
-    asl_temperature_measure_start();
-
-    char str[128]= {0};
+    char str[64];
+    memset(str, 0, 64);
+    uint8_t id = mmi_gsensor_sensor_id_get();
 
     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_font20);
-    lv_obj_set_width(label,LV_HOR_RES-40);
-    lv_obj_set_pos(label, 20, 70);
 #endif
-
-    snprintf(str, 128, "cur temp: \navg temp: \nbody temp: ");
-    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)factorymode_temperature_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);
+    lv_obj_set_size(label,LV_HOR_RES,LV_VER_RES/2);
+    if(id > 0) {
+        snprintf(str, 64, "%s %s 0x%x\n%s", (char *)lv_lang_get_text(WATCH_TEXT_ID_GSENSOR),"id :",id,(char *)lv_lang_get_text(WATCH_TEXT_ID_GSENSOR_SUCCESS));
+        lv_label_set_text(label,str);
+        lv_obj_align(label, content, LV_ALIGN_CENTER, 0, 0);
+    } else {
+        snprintf(str, 64, "%s %s 0x%x\n%s", (char *)lv_lang_get_text(WATCH_TEXT_ID_GSENSOR),"id :",id,(char *)lv_lang_get_text(WATCH_TEXT_ID_GSENSOR_FAIL));
+        lv_label_set_text(label,str);
+        lv_obj_align(label, content, LV_ALIGN_CENTER, 0, 0);
+    }
 
     return obj;
 }
-
+#endif
 
 static void factory_mode_calibration_destory(lv_obj_t * activity_obj)
 {
@@ -1668,30 +1614,528 @@ 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)
 {
     if(e == LV_EVENT_CLICKED) {
+               #ifdef __MMI_ZHSX_SUPPORT__
+        mmi_factorymode_gsensor_create(NULL);
+               #else
         factorymode_gsensor_create(NULL);
+               #endif
     }
 }
 
-void factorymode_hr_bp_bo_test_create_btn_cb(lv_obj_t * btn,lv_event_t e)
+#ifdef __MMI_ZHSX_SUPPORT__
+// temperature
+static void mmi_factorymode_temperature_update(lv_anim_t * anim)
 {
-    if(e == LV_EVENT_CLICKED) {
-        factorymode_hr_bp_bo_test_create(NULL);
-    }
+    char str[32]= {0};
+       
+    sprintf(str, "body temp:\n    %.2f %s", mmi_tsensor_body_temperature_get(), (char *)lv_lang_get_text(WATCH_TEXT_ID_TEMPERATURE_UNIT));
+    lv_label_set_text(anim->var,str);
 }
 
-void factorymode_sport_hr_test_create_btn_cb(lv_obj_t * btn,lv_event_t e)
+static lv_obj_t * mmi_factorymode_temperature_test_create(lv_obj_t * activity_obj)
 {
-    if(e == LV_EVENT_CLICKED) {
-        factorymode_sport_hr_test_create(NULL);
+    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_temperature_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;
+        }
     }
-}
 
-void factorymode_temperature_test_create_btn_cb(lv_obj_t * btn,lv_event_t e)
+    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);
+
+    testing_st = FAC_TEMPERATURE;
+    mmi_tsensor_temperature_measure_start();
+
+    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
+
+    char str[32]= {0};
+    sprintf(str, "body temp: ");
+    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_temperature_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_temperature_test_create_btn_cb(lv_obj_t * btn,lv_event_t e)
+{
+       if(e == LV_EVENT_CLICKED) {
+               mmi_factorymode_temperature_test_create(NULL);
+       }
+}
+
+// heart
+static void mmi_factorymode_heart_test_status_update(lv_anim_t * anim)
+{
+    char str[32]= {0};
+    uint16_t hr_value = 0;
+       
+    mmi_hsensor_measure_value_get(&hr_value, NULL, NULL, NULL);
+    sprintf(str, "%s: %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_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_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);
+        if(NULL == activity_obj) {
+            return NULL;
+        }
+    }
+
+    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);
+
+    testing_st = FAC_HEART;
+    mmi_hsensor_measure_stop();
+       mmi_hsensor_hr_measure_start();
+
+    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
+
+    char str[32]= {0};
+    uint16_t hr_value = 0;
+    mmi_hsensor_measure_value_get(&hr_value, NULL, NULL, NULL);
+    sprintf(str, "%s: %d bpm", (char *)lv_lang_get_text(WATCH_TEXT_ID_HEART_RATE), hr_value);
+    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_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);
+    lv_anim_set_repeat_delay(&a, 1000);
+    lv_anim_start(&a);
+
+    return obj;
+}
+
+void mmi_factorymode_heart_test_create_btn_cb(lv_obj_t * btn,lv_event_t e)
+{
+    if(e == LV_EVENT_CLICKED) {
+        mmi_factorymode_heart_test_create(NULL);
+    }
+}
+
+// spo2
+static void mmi_factorymode_spo2_test_status_update(lv_anim_t * anim)
+{
+    char str[32]= {0};
+    uint16_t spo2_value = 0;
+       
+    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);
+    lv_label_set_text(anim->var, str);
+}
+
+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_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);
+        if(NULL == activity_obj) {
+            return NULL;
+        }
+    }
+
+    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);
+
+    testing_st = FAC_SPO2;
+    mmi_hsensor_measure_stop();
+       mmi_hsensor_spo2_measure_start();
+
+    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
+
+    char str[32]= {0};
+    uint16_t spo2_value = 0;
+    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);
+    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_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_spo2_test_create_btn_cb(lv_obj_t * btn,lv_event_t e)
+{
+    if(e == LV_EVENT_CLICKED) {
+        mmi_factorymode_spo2_test_create(NULL);
+    }
+}
+
+#else
+
+static void factorymode_hr_bp_bo_test_status_update(lv_anim_t * anim)
+{
+    char str[128]= {0};
+    uint16_t hr = 0;
+    uint16_t bp_h = 0;
+    uint16_t bp_l = 0;
+    uint16_t bo = 0;
+    mmi_hsensor_measure_value_get(&hr, &bp_h, &bp_l, &bo);
+
+    snprintf(str, 128, "%s: %d bpm \n%s: %d mmHg \n%s: %d mmHg \n%s : %d%%",
+             (char *)lv_lang_get_text(WATCH_TEXT_ID_HEART_RATE), hr,
+             (char *)lv_lang_get_text(WATCH_TEXT_ID_SYSTOLIC_BP), bp_h,
+             (char *)lv_lang_get_text(WATCH_TEXT_ID_DIASTOLIC_BP), bp_l,
+             (char *)lv_lang_get_text(WATCH_TEXT_ID_BLOOD_OXYGEN), bo);
+    lv_label_set_text(anim->var,str);
+}
+
+static lv_obj_t * factorymode_hr_bp_bo_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 = factorymode_hr_bp_bo_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;
+        }
+    }
+
+    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);
+
+    testing_st = HEART_RATE;
+    mmi_hsensor_measure_stop();
+    //asl_hr_bp_bo_fac_mode_measure_start(WAKEUP_UPDATE);
+
+       
+
+    char str[128]= {0};
+
+    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_font20);
+    lv_obj_set_width(label,LV_HOR_RES-40);
+    lv_obj_set_pos(label, 20, 70);
+#endif
+
+    uint16_t hr = 0;
+    uint16_t bp_h = 0;
+    uint16_t bp_l = 0;
+    uint16_t bo = 0;
+    mmi_hsensor_measure_value_get(&hr, &bp_h, &bp_l, &bo);
+
+    snprintf(str, 128, "%s: %d bpm \n%s: %d mmHg \n%s: %d mmHg \n%s : %d%%",
+             (char *)lv_lang_get_text(WATCH_TEXT_ID_HEART_RATE), hr,
+             (char *)lv_lang_get_text(WATCH_TEXT_ID_SYSTOLIC_BP), bp_h,
+             (char *)lv_lang_get_text(WATCH_TEXT_ID_DIASTOLIC_BP), bp_l,
+             (char *)lv_lang_get_text(WATCH_TEXT_ID_BLOOD_OXYGEN), bo);
+    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)factorymode_hr_bp_bo_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 factorymode_hr_bp_bo_test_create_btn_cb(lv_obj_t * btn,lv_event_t e)
+{
+    if(e == LV_EVENT_CLICKED) {
+        factorymode_hr_bp_bo_test_create(NULL);
+    }
+}
+
+static void factorymode_sport_hr_test_status_update(lv_anim_t * anim)
+{
+    char str[32] = {0};
+    uint16_t hr = 0;
+    mmi_hsensor_measure_value_get(&hr, NULL, NULL, NULL);
+
+    snprintf(str, 32, "%s: %d bpm", (char *)lv_lang_get_text(WATCH_TEXT_ID_HEART_RATE), hr);
+    lv_label_set_text(anim->var,str);
+}
+
+static lv_obj_t * factorymode_sport_hr_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 = factorymode_sport_hr_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;
+        }
+    }
+
+    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);
+
+    testing_st = SPORT_HEART_RATE;
+    mmi_hsensor_measure_stop();
+    //asl_hr_bp_bo_sport_measure_start(5, WAKEUP_UPDATE);
+
+       
+
+    char str[32]= {0};
+
+    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_font20);
+    lv_obj_set_width(label,LV_HOR_RES-40);
+    lv_obj_set_pos(label, 20, 70);
+#endif
+
+    uint16_t hr = 0;
+    mmi_hsensor_measure_value_get(&hr, NULL, NULL, NULL);
+
+    snprintf(str, 32, "%s: %d bpm", (char *)lv_lang_get_text(WATCH_TEXT_ID_HEART_RATE), hr);
+    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)factorymode_sport_hr_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 factorymode_sport_hr_test_create_btn_cb(lv_obj_t * btn,lv_event_t e)
+{
+    if(e == LV_EVENT_CLICKED) {
+        factorymode_sport_hr_test_create(NULL);
+    }
+}
+
+static void factorymode_temperature_update(lv_anim_t * anim)
+{
+    char str[128]= {0};
+
+    snprintf(str, 128, "cur temp: %.2f°C\navg temp: %.2f°C\nbody temp: %.2f°C",
+             asl_cur_temperature_get(),
+             asl_avg_temperature_get(),
+             mmi_tsensor_body_temperature_get());
+    lv_label_set_text(anim->var,str);
+}
+
+static lv_obj_t * factorymode_temperature_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 = factorymode_temperature_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;
+        }
+    }
+
+    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);
+
+    testing_st = FAC_TEMPERATURE;
+    mmi_tsensor_temperature_measure_start();
+
+    char str[128]= {0};
+
+    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_font20);
+    lv_obj_set_width(label,LV_HOR_RES-40);
+    lv_obj_set_pos(label, 20, 70);
+#endif
+
+    snprintf(str, 128, "cur temp: \navg temp: \nbody temp: ");
+    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)factorymode_temperature_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 factorymode_temperature_test_create_btn_cb(lv_obj_t * btn,lv_event_t e)
 {
     if(e == LV_EVENT_CLICKED) {
         factorymode_temperature_test_create(NULL);
     }
 }
+#endif
 
 void factory_mode_calibration_create_btn_cb(lv_obj_t * btn,lv_event_t e)
 {
index ff0dc9b..995185f 100644 (file)
@@ -20,25 +20,25 @@ static void mmi_health_measure_process_timer_handle(uint32_t para);
 void mmi_hsensor_close(void)
 {
        HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
-       asl_hr_bp_bo_measure_stop();
+       mmi_hsensor_measure_stop();
 }
 
 void mmi_hsensor_heart_open(void)
 {
        HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
-       asl_hr_measure_start(0);
+       mmi_hsensor_hr_measure_start();
 }
 
 void mmi_hsensor_blood_open(void)
 {
        HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
-       asl_hr_measure_start(0);
+       mmi_hsensor_hr_measure_start();
 }
 
 void mmi_hsensor_spo2_open(void)
 {
        HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
-       asl_bo_measure_start(0);
+       mmi_hsensor_spo2_measure_start();
 }
 
 bool mmi_hsensor_is_open(void)
@@ -48,29 +48,29 @@ bool mmi_hsensor_is_open(void)
 
 static void mmi_hsensor_heart_value_get(uint16 * heart_value)
 {
-       asl_hr_bp_bo_value_get(heart_value, NULL, NULL, NULL);
+       mmi_hsensor_measure_value_get(heart_value, NULL, NULL, NULL);
 }
 
 static void mmi_hsensor_blood_value_get(uint16 * blood_high_value, uint16 * blood_low_value)
 {
-       asl_hr_bp_bo_value_get(NULL, blood_high_value, blood_low_value, NULL);
+       mmi_hsensor_measure_value_get(NULL, blood_high_value, blood_low_value, NULL);
 }
 
 static void mmi_hsensor_spo2_value_get(uint16 * spo2_value)
 {
-       asl_hr_bp_bo_value_get(NULL, NULL, NULL, spo2_value);
+       mmi_hsensor_measure_value_get(NULL, NULL, NULL, spo2_value);
 }
 
 void mmi_tsensor_close(void)
 {
        HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
-       asl_temperature_measure_stop();
+       mmi_tsensor_temperature_measure_stop();
 }
 
 void mmi_tsensor_open(void)
 {
        HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
-       asl_temperature_measure_start();
+       mmi_tsensor_temperature_measure_start();
 }
 
 bool mmi_tsensor_is_open(void)
@@ -85,7 +85,7 @@ static void mmi_tsensor_wrist_value_get(float * wrist_value)
 
 static void mmi_tsensor_body_value_get(float * body_value)
 {
-       * body_value = asl_body_temperature_get();
+       * body_value = mmi_tsensor_body_temperature_get();
 }
 
 bool mmi_health_measure_wear_state_get(void)