Z5_HA_K18_NFC 0527需求修改
author@CHENG <2393524978@qq.com>
Tue, 27 May 2025 08:49:27 +0000 (16:49 +0800)
committer@CHENG <2393524978@qq.com>
Tue, 27 May 2025 08:49:27 +0000 (16:49 +0800)
2.sdk/project/Z5_HA_K18_NFC/gui/lv_watch/mmi_default_CUSTOM.h
2.sdk/project/Z5_HA_K18_NFC/gui/lv_watch/resource/png/custom_function/ICON_NFC_EXPERIENCE_HEART_M.png [moved from 2.sdk/project/Z5_HA_K18_NFC/gui/lv_watch/resource/png/custom_function/ICON_NFC_EXPERIENCE_TITLE.png with 56% similarity]
2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_http_protocol.c
2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/k18_nfc_experience_ui.c
2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/k18_nfc_experience_ui.h
2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_measure.c
2.sdk/sdk/gui/lv_watch/lv_watch.c
2.sdk/sdk/gui/lv_watch/lv_watch_res.h

index c5f4c3e..c5c5865 100644 (file)
 
 
 //health measure timed
-#define MMI_CUSTOMER_HEART_TIMED_FLAG          false
+#define MMI_CUSTOMER_HEART_TIMED_FLAG          (true)
 
-#define MMI_CUSTOMER_HEART_TIMED_INTERVAL              (60 * 60) // unit:s
+#define MMI_CUSTOMER_HEART_TIMED_INTERVAL              (5 * 60) // unit:s
 
-#define MMI_CUSTOMER_TEMPERATURE_TIMED_FLAG            false
+#define MMI_CUSTOMER_TEMPERATURE_TIMED_FLAG            (true)
 
-#define MMI_CUSTOMER_TEMPERATURE_TIMED_INTERVAL                (60 * 60) // unit:s
+#define MMI_CUSTOMER_TEMPERATURE_TIMED_INTERVAL                (5 * 60) // unit:s
 
-#define MMI_CUSTOMER_BLOOD_TIMED_FLAG          false
+#define MMI_CUSTOMER_BLOOD_TIMED_FLAG          (true)
 
-#define MMI_CUSTOMER_BLOOD_TIMED_INTERVAL              (15 * 60) // unit:s
+#define MMI_CUSTOMER_BLOOD_TIMED_INTERVAL              (5 * 60) // unit:s
 
-#define MMI_CUSTOMER_SPO2_TIMED_FLAG           false
+#define MMI_CUSTOMER_SPO2_TIMED_FLAG           (true)
 
-#define MMI_CUSTOMER_SPO2_TIMED_INTERVAL               (60 * 60) // unit:s
+#define MMI_CUSTOMER_SPO2_TIMED_INTERVAL               (5 * 60) // unit:s
 
 
 //default language
similarity index 56%
rename from 2.sdk/project/Z5_HA_K18_NFC/gui/lv_watch/resource/png/custom_function/ICON_NFC_EXPERIENCE_TITLE.png
rename to 2.sdk/project/Z5_HA_K18_NFC/gui/lv_watch/resource/png/custom_function/ICON_NFC_EXPERIENCE_HEART_M.png
index a8d6c69..7385c25 100644 (file)
Binary files a/2.sdk/project/Z5_HA_K18_NFC/gui/lv_watch/resource/png/custom_function/ICON_NFC_EXPERIENCE_TITLE.png and b/2.sdk/project/Z5_HA_K18_NFC/gui/lv_watch/resource/png/custom_function/ICON_NFC_EXPERIENCE_HEART_M.png differ
index fc292a5..e6da481 100644 (file)
@@ -1511,7 +1511,7 @@ bool mmi_hengai_health_data_parse(unsigned char * next_buff, unsigned int next_b
                                        {
                                                float value_happiness = (cJSON_GetObjectItem(json_data, "happiness"))->valuedouble;
                                        
-                                               mmi_hengai_happinss_value_set(value_happiness);
+                                               mmi_hengai_blood_happinss_value_set(value_happiness);
                                        }
                                #endif
                                }
index f6fde75..e504c1b 100644 (file)
@@ -33,6 +33,7 @@ typedef struct
        int total_duration;
        int remain_duration;
        float happiness_value; // int happiness_value;
+       float total_happiness_value;
        TIMER_ID cycle_timer_id;
        TASK_HANDLE * task_id;
 }k18_nfc_expr_data_t;
@@ -48,6 +49,10 @@ static int s_happiness_raw_data_len = 0;
 /* happiness value */
 static float s_happiness_total_value = 0;
 
+// debug
+//#define __now_test__
+
+
 static void mmi_k18_nfc_experience_happiness_value_get(void);
 static int mmi_k18_nfc_experience_stop(char is_interrupt);
 
@@ -277,14 +282,12 @@ void mmi_k18_nfc_experience_finish_screen(lv_obj_t * par)
        lv_obj_t * label_value = lv_label_create(img_value, NULL);
        lv_obj_add_style(label_value, LV_LABEL_PART_MAIN, &lv_watch_font24);
        char temp_value[16] = {0};
-       unsigned int value1 = 0;
-       unsigned char value2 = 0, value3 = 0;
-       //value1 = (uint8_t)(s_experience_data.happiness_value);
-       //value2 = (uint8_t)((s_experience_data.happiness_value - value1) * 10);
-       //value3 = (uint8_t)(((s_experience_data.happiness_value - value1) * 10 - value2) * 10);
-       value1 = (unsigned int)(s_happiness_total_value);
-       value2 = (uint8_t)((s_happiness_total_value - value1) * 10);
-       value3 = (uint8_t)(((s_happiness_total_value - value1) * 10 - value2) * 10);
+       uint32_t value1 = 0;
+       uint8_t value2 = 0, value3 = 0;
+       float happiness_value = s_experience_data.total_happiness_value;
+       value1 = (uint32_t)(happiness_value);
+       value2 = (uint8_t)((happiness_value - value1) * 10);
+       value3 = (uint8_t)(((happiness_value - value1) * 10 - value2) * 10);
        
        if(0 == value3)
        {
@@ -331,7 +334,9 @@ static void mmi_k18_nfc_experience_timer_time_cb(void * para)
                s_experience_data.remain_duration--;
        
                lv_ntc_experience_ext_t * ext = mmi_k18_nfc_experience_ext_get();
-               if(NULL != ext && NULL != ext->label_time_remaining) 
+               if(NULL == ext)
+                       return;
+               if(NULL != ext->label_time_remaining) 
                {
                        if(true == lv_obj_get_hidden(ext->img))
                                return;
@@ -340,6 +345,37 @@ static void mmi_k18_nfc_experience_timer_time_cb(void * para)
                        mmi_k18_nfc_experience_time_remain_str(s_experience_data.remain_duration, time_remain_str, TIMER_TIME_STR_LEN_MAX);
                        lv_label_set_text(ext->label_time_remaining, time_remain_str);
                }
+               if(0 != s_experience_data.happiness_value)
+               {
+                       if(NULL != ext->img_prompt)
+                               lv_obj_set_hidden(ext->img_prompt, true);
+                       if(NULL != ext->img_value)
+                               lv_obj_set_hidden(ext->img_value, false);
+                       if(NULL != ext->label_value)
+                       {
+                               char temp_value[16] = {0};
+                               uint8_t value1 = 0, value2 = 0, value3 = 0;
+                               float happiness_value = s_experience_data.happiness_value;
+                               value1 = (uint32_t)(happiness_value);
+                               value2 = (uint8_t)((happiness_value - value1) * 10);
+                               value3 = (uint8_t)(((happiness_value - value1) * 10 - value2) * 10);
+                               
+                               if(0 == value3)
+                               {
+                                       if(0 == value2)
+                                               sprintf(temp_value, "%d", value1);
+                                       else
+                                               sprintf(temp_value, "%d.%d", value1, value2);
+                               }
+                               else
+                               {
+                                       sprintf(temp_value, "%d.%d%d", value1, value2, value3);
+                               }
+                               lv_label_set_text(ext->label_value, temp_value);
+                               lv_label_set_align(ext->label_value, LV_LABEL_ALIGN_CENTER);
+                               lv_obj_align(ext->label_value, NULL, LV_ALIGN_CENTER, 0, -10);
+                       }
+               }
        }
        else
        {
@@ -448,6 +484,22 @@ lv_obj_t * mmi_k18_nfc_experience_create(lv_obj_t * activity_obj)
        lv_img_set_src(img_prompt, ICON_NFC_EXPERIENCE_PROMPT);
        lv_obj_set_click(img_prompt, false);
        lv_obj_align(img_prompt, label_time_remaining, LV_ALIGN_OUT_BOTTOM_MID, 0, 15);
+       ext->img_prompt = img_prompt;
+
+       // info
+       lv_obj_t * img_value = lv_img_create(img, NULL);
+       lv_img_set_src(img_value, ICON_NFC_EXPERIENCE_HEART_M);
+       lv_obj_set_click(img_value, false);
+       lv_obj_align(img_value, label_time_remaining, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
+       ext->img_value = img_value;
+
+       lv_obj_t * label_value = lv_label_create(img_value, NULL);
+       lv_obj_add_style(label_value, LV_LABEL_PART_MAIN, &lv_watch_font24);
+       char temp_value[16] = {0};
+       lv_label_set_text(label_value, temp_value);
+       lv_obj_align(label_value, NULL, LV_ALIGN_CENTER, 0, -10);
+       ext->label_value = label_value;
+       lv_obj_set_hidden(img_value, true);
 
        lv_obj_t * img_info = lv_img_create(img, NULL);
        lv_img_set_src(img_info, ICON_NFC_EXPERIENCE_HEART_S);
@@ -489,7 +541,7 @@ void mmi_k18_nfc_experience_create_event_cb(lv_obj_t * btn, lv_event_t e)
        }
 
 
-#if 0 // __now_test__
+#ifdef __now_test__
        char *project_name = (char *)lv_lang_get_text(WATCH_TEXT_ID_OUTDOOR_RUNNING); // "8DD16B65673A";
        int temp_len = strlen(project_name);
        char *temp_ptr = lv_mem_alloc(temp_len + 1);
@@ -503,9 +555,6 @@ void mmi_k18_nfc_experience_create_event_cb(lv_obj_t * btn, lv_event_t e)
        s_experience_data.name = temp_ptr;
        s_experience_data.total_duration = 60 * 3;
        s_experience_data.remain_duration = s_experience_data.total_duration;
-       s_experience_data.happiness_value = 76.89; // 168;
-
-       s_happiness_total_value += 76.89;
 #endif
 
        
@@ -641,18 +690,18 @@ void mmi_hengai_happinss_value_set(float value_happiness)
                return;
        }
        
-       unsigned int value1 = 0;
-       unsigned char value2 = 0, value3 = 0;
-       value1 = (unsigned int)(value_happiness);
+       uint8_t value1 = 0, value2 = 0, value3 = 0;
+       value1 = (uint8_t)(value_happiness);
        value2 = (uint8_t)((value_happiness - value1) * 10);
        value3 = (uint8_t)(((value_happiness - value1) * 10 - value2) * 10);
        K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: %d-%d-%d\n", __FUNCTION__, __LINE__, value1, value2, value3);
        
        s_happiness_total_value += value_happiness;
 
-#if 0
        s_experience_data.happiness_value = value_happiness;
-       
+       s_experience_data.total_happiness_value += s_experience_data.happiness_value;
+
+#if 0
        nv_watch_health_info_t health_info = {0};
        mmi_health_info_get(&health_info);
        health_info.happiness_value = value_happiness;
@@ -660,6 +709,17 @@ void mmi_hengai_happinss_value_set(float value_happiness)
 #endif
 }
 
+void mmi_hengai_blood_happinss_value_set(float value_happiness)
+{
+       uint8_t value1 = 0, value2 = 0, value3 = 0;
+       value1 = (uint8_t)(value_happiness);
+       value2 = (uint8_t)((value_happiness - value1) * 10);
+       value3 = (uint8_t)(((value_happiness - value1) * 10 - value2) * 10);
+       K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: %d-%d-%d\n", __FUNCTION__, __LINE__, value1, value2, value3);
+       
+       s_happiness_total_value += value_happiness;
+}
+
 float mmi_hengai_happiness_value_get(void)
 {
        return s_happiness_total_value;
@@ -777,11 +837,11 @@ void mmi_happiness_raw_data_send(void)
 
        temp_len += sprintf(json_data + temp_len, "\"ppg_fs\":%d,", MMI_HENGAI_BP_RAW_DATA_SAMPLE_RATE);
 
-       temp_len += sprintf(json_data + temp_len, "\"measure_mode\":1,"); /* ²âÁ¿Ä£Ê½(0:±»¶¯²âÁ¿/1:Ö÷¶¯²âÁ¿/2:Á¬Ðø²âÁ¿/3:ÆäËû²âÁ¿) */
+       temp_len += sprintf(json_data + temp_len, "\"measure_mode\":1,"); /* 测量模式(0:被动测量/1:主动测量/2:连续测量/3:其他测量) */
 
-       temp_len += sprintf(json_data + temp_len, "\"measure_type\":7}"); /* ²âÁ¿ÀàÐÍ(2:ѪÑõÏà¹Ø²âÁ¿/6:ÇéÐ÷Ïà¹Ø²âÁ¿/7:ѪѹÏà
-                                                                                                                                                       ¹Ø²âÁ¿/8:ѪÌÇÏà¹Ø²âÁ¿/9:HRVÏà¹Ø²âÁ¿/10:Ѫѹ±ê¶¨
-                                                                                                                                                       ²âÁ¿/11:ѪÌDZ궨²âÁ¿/)
+       temp_len += sprintf(json_data + temp_len, "\"measure_type\":7}"); /* 测量类型(2:血氧相关测量/6:情绪相关测量/7:血压相
+                                                                                                                                                       关测量/8:血糖相关测量/9:HRV相关测量/10:血压标定
+                                                                                                                                                       测量/11:血糖标定测量/)
                                                                                                                                                */
 
        K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, temp_len);
@@ -883,6 +943,13 @@ static void mmi_k18_nfc_experience_happiness_value_get(void)
 
        //send
        mmi_happiness_raw_data_send();
+
+#ifdef __now_test__
+       float happiness_value = 67.89 + (rand() % 10);
+       s_experience_data.happiness_value = happiness_value;
+       s_experience_data.total_happiness_value += happiness_value;
+       s_happiness_total_value += happiness_value;
+#endif
 }
 
 void mmi_k18_nfc_experience_happiness_deinit(void)
@@ -917,8 +984,8 @@ void mmi_k18_nfc_experience_happiness_init(void)
 
 
 /*
-¿ªÊ¼ÌåÑé
-{? ? "code":"31000" // ¸æËßÉ豸¿ªÊ¼ÌåÑé? ? "name":"Ãû³Æ", // ¸æËßÉ豸ÌåÑéµÄÏîÄ¿£¬UTF8? ? "duration":600 // ¸æËßÉ豸ÌåÑéµÄʱ³¤£¬µ¥Î» Ãë}
+开始体验
+{? ? "code":"31000" // 告诉设备开始体验? ? "name":"名称", // 告诉设备体验的项目,UTF8? ? "duration":600 // 告诉设备体验的时长,单位 秒}
 */
 int mmi_k18_nfc_experience_trigger(char * data_ptr, int data_len)
 {
@@ -966,6 +1033,7 @@ int mmi_k18_nfc_experience_trigger(char * data_ptr, int data_len)
                        s_experience_data.total_duration = cJSON_GetIntValue(cJSON_GetObjectItem(json_recv, "duration"));
                        s_experience_data.remain_duration = s_experience_data.total_duration;
                        s_experience_data.happiness_value = 0;
+                       s_experience_data.total_happiness_value = 0;
 
                        mmi_watch_wake_up();
                        mmi_ui_msg_action_k18_nfc_experience();
@@ -992,8 +1060,8 @@ EXIT_FUNC:
 }
 
 /*
-½áÊøÌåÑé
-{? ? "code":"32000" // Í¨ÖªÔ¶¶ËÊÖ±íÌåÑé½áÊø? ? "deviceID":"IMEI", // ÌåÑéµÄÊÖ±íÉ豸ID? ? "interrupt":0/1 // 0 ±íʾÕý³£ÌåÑé½áÊø£»1 ±íʾÓû§ÖÐ;ȡÏûÌåÑé}
+结束体验
+{? ? "code":"32000" // 通知远端手表体验结束? ? "deviceID":"IMEI", // 体验的手表设备ID? ? "interrupt":0/1 // 0 表示正常体验结束;1 表示用户中途取消体验}
 */
 static int mmi_k18_nfc_experience_stop(char is_interrupt)
 {
index 66036b1..661f60e 100644 (file)
@@ -37,6 +37,9 @@ typedef struct
        lv_obj_t * img;
     lv_obj_t * label_time_remaining;
        lv_obj_t * cont_stop;
+       lv_obj_t * img_prompt;
+       lv_obj_t * img_value;
+       lv_obj_t * label_value;
 }lv_ntc_experience_ext_t;
 
 
@@ -51,6 +54,8 @@ int mmi_k18_nfc_experience_trigger(char * data_ptr, int data_len);
 
 void mmi_hengai_happinss_value_set(float value_happiness);
 
+void mmi_hengai_blood_happinss_value_set(float value_happiness);
+
 float mmi_hengai_happiness_value_get(void);
 
 void mmi_hengai_happiness_value_clean(void);
index ddcadf6..b1312e9 100644 (file)
@@ -1082,6 +1082,11 @@ static void mmi_health_measure_start(MMI_HEALTH_MEASURE_TYPE_E measure_type, uin
 
 bool mmi_health_measure_timed_measure_start(MMI_HEALTH_MEASURE_TYPE_E measure_type)
 {
+#ifdef MMI_PROJECT_Z5_HA_K18_NFC
+       if(HAL_CHG_CONNECTED == Hal_Charger_Get_Status())
+               return false;
+#endif
+
        if(false == mmi_health_measure_wear_state_get())
                return false;
        
@@ -1120,6 +1125,11 @@ bool mmi_health_measure_timed_measure_start(MMI_HEALTH_MEASURE_TYPE_E measure_ty
 void mmi_health_measure_app_measure_start(MMI_HEALTH_MEASURE_TYPE_E measure_type)
 {
        HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+#ifdef MMI_PROJECT_Z5_HA_K18_NFC
+       if(HAL_CHG_CONNECTED == Hal_Charger_Get_Status())
+               return ;
+#endif
        
        if(false == mmi_health_measure_wear_state_get())
                return;
@@ -1158,6 +1168,11 @@ void mmi_health_measure_app_measure_start(MMI_HEALTH_MEASURE_TYPE_E measure_type
 
 void mmi_health_measure_ui_measure_start(MMI_HEALTH_MEASURE_TYPE_E measure_type)
 {
+#ifdef MMI_PROJECT_Z5_HA_K18_NFC
+       if(HAL_CHG_CONNECTED == Hal_Charger_Get_Status())
+               return ;
+#endif
+
        if(true == mmi_health_measure_state_is_back_measure())
        {
                mmi_health_measure_interrupt();
index 9d757e7..58d6bd6 100644 (file)
@@ -929,6 +929,9 @@ static void watch_normal_charging_status_change(VOID * para)
 #ifdef MMI_PROJECT_Z5_HA_K18_NFC
        mmi_hengai_happiness_value_clean();
        asl_pedometer_steps_clear();
+    
+    nv_watch_health_info_t health_info = {0};
+       mmi_health_info_set(&health_info);
 #endif
 }
 
index ecb33b5..6c615f6 100644 (file)
@@ -1101,10 +1101,11 @@ LV_IMG_DECLARE(img_poweron_logo);
 
 #ifdef MMI_PROJECT_Z5_HA_K18_NFC
 #define ICON_K18_NFC_EXPERIENCE_BG           "R:/png/custom_function/ICON_K18_NFC_EXPERIENCE_BG.png"
-#define ICON_NFC_EXPERIENCE_TITLE           "R:/png/custom_function/ICON_NFC_EXPERIENCE_TITLE.png"
+//#define ICON_NFC_EXPERIENCE_TITLE           "R:/png/custom_function/ICON_NFC_EXPERIENCE_TITLE.png"
 #define ICON_NFC_EXPERIENCE_PROMPT           "R:/png/custom_function/ICON_NFC_EXPERIENCE_PROMPT.png"
 #define ICON_NFC_EXPERIENCE_HEART_S           "R:/png/custom_function/ICON_NFC_EXPERIENCE_HEART_S.png"
 #define ICON_NFC_EXPERIENCE_HEART_B           "R:/png/custom_function/ICON_NFC_EXPERIENCE_HEART_B.png"
+#define ICON_NFC_EXPERIENCE_HEART_M           "R:/png/custom_function/ICON_NFC_EXPERIENCE_HEART_M.png"
 #endif