gengxin
author@CHENG <2393524978@qq.com>
Wed, 3 Jan 2024 09:26:35 +0000 (17:26 +0800)
committer@CHENG <2393524978@qq.com>
Wed, 3 Jan 2024 09:26:35 +0000 (17:26 +0800)
13 files changed:
2.sdk/sdk/gui/lv_watch/framework/nvm/ui_nvm.h
2.sdk/sdk/gui/lv_watch/framework/nvm/ui_nvm_api.c
2.sdk/sdk/gui/lv_watch/include/ui_activity_id.h
2.sdk/sdk/gui/lv_watch/include/ui_nvm_interface.h
2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/custom_function.c
2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/custom_function.h
2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_blood_pressure.c
2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_blood_pressure.h
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/heng_ai_http_protocol.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 2fa0ae5..55efb74 100644 (file)
@@ -89,8 +89,8 @@ extern "C" {
 #define NV_SECTION_UI_HENG_AI_WAKE_RING_TYPE_LEN       (sizeof(nv_watch_switch_t))
 #define NV_SECTION_UI_HENG_AI_SLEEP_ACTIVATION_LEN     (sizeof(nv_watch_heng_ai_sleep_activation_t))
 #endif
-#ifdef __MMI_CUSTOM_HENG_AI_BLOOD_PRESSURE__
-#define NV_SECTION_UI_HENG_AI_BLOOD_PRESSURE_LEN       (sizeof(nv_watch_heng_ai_blood_pressure_t))
+#ifdef __MMI_CUSTOM_HENGAI_HEALTH__
+#define NV_SECTION_UI_HENGAI_HEALTH_DATA_LEN   (sizeof(nv_watch_hengai_health_data_t))
 #endif
 
 
@@ -228,8 +228,8 @@ typedef lv_fs_dir_t  ui_dir_t;
 #define NV_SECTION_UI_HENG_AI_WAKE_RING_TYPE_FILE      "ui_heng_ai_wake_ring_type.nv"
 #define NV_SECTION_UI_HENG_AI_SLEEP_ACTIVATION_FILE    "ui_heng_ai_sleep_activation.nv"
 #endif
-#ifdef __MMI_CUSTOM_HENG_AI_BLOOD_PRESSURE__
-#define NV_SECTION_UI_HENG_AI_BLOOD_PRESSURE_FILE      "ui_heng_ai_blood_pressure.nv"
+#ifdef __MMI_CUSTOM_HENGAI_HEALTH__
+#define NV_SECTION_UI_HENGAI_HEALTH_DATA_FILE  "ui_hengai_health_data.nv"
 #endif
 
 
index df2fff2..994860f 100644 (file)
@@ -150,9 +150,9 @@ uint32_t UI_NV_Get_Section_Len(NV_UI_SECTION_ID SectionId)
                case NV_SECTION_UI_HENG_AI_SLEEP_ACTIVATION:
                        return (NV_SECTION_LEN(NV_SECTION_UI_HENG_AI_SLEEP_ACTIVATION));
        #endif
-       #ifdef __MMI_CUSTOM_HENG_AI_BLOOD_PRESSURE__
-               case NV_SECTION_UI_HENG_AI_BLOOD_PRESSURE:
-                       return (NV_SECTION_LEN(NV_SECTION_UI_HENG_AI_BLOOD_PRESSURE));
+       #ifdef __MMI_CUSTOM_HENGAI_HEALTH__
+               case NV_SECTION_UI_HENGAI_HEALTH_DATA:
+                       return (NV_SECTION_LEN(NV_SECTION_UI_HENGAI_HEALTH_DATA));
        #endif
                                
                        
@@ -305,9 +305,9 @@ char * UI_NV_Get_Section_path(NV_UI_SECTION_ID SectionId)
                case NV_SECTION_UI_HENG_AI_SLEEP_ACTIVATION:
                        return (NV_SECTION_FILE_PATH(NV_SECTION_UI_HENG_AI_SLEEP_ACTIVATION));
        #endif
-       #ifdef __MMI_CUSTOM_HENG_AI_BLOOD_PRESSURE__
-               case NV_SECTION_UI_HENG_AI_BLOOD_PRESSURE:
-                       return (NV_SECTION_FILE_PATH(NV_SECTION_UI_HENG_AI_BLOOD_PRESSURE));
+       #ifdef __MMI_CUSTOM_HENGAI_HEALTH__
+               case NV_SECTION_UI_HENGAI_HEALTH_DATA:
+                       return (NV_SECTION_FILE_PATH(NV_SECTION_UI_HENGAI_HEALTH_DATA));
        #endif
 
                        
@@ -400,8 +400,8 @@ uint8_t UI_NV_Reset_Default(NV_UI_SECTION_ID SectionId)
 #ifdef __MMI_CUSTOM_HENG_AI__
        nv_watch_heng_ai_sleep_activation_t * heng_ai_sleep_activation;
 #endif
-#ifdef __MMI_CUSTOM_HENG_AI_BLOOD_PRESSURE__
-       nv_watch_heng_ai_blood_pressure_t * heng_ai_blood_pressure;
+#ifdef __MMI_CUSTOM_HENGAI_HEALTH__
+       nv_watch_hengai_health_data_t * hengai_health;
 #endif
 
 #endif
@@ -730,11 +730,11 @@ uint8_t UI_NV_Reset_Default(NV_UI_SECTION_ID SectionId)
                        break;
        #endif
 
-       #ifdef __MMI_CUSTOM_HENG_AI_BLOOD_PRESSURE__
-               case NV_SECTION_UI_HENG_AI_BLOOD_PRESSURE:
-                       heng_ai_blood_pressure = lv_mem_alloc(SectionLen);
-                       memset(heng_ai_blood_pressure, 0x0, SectionLen);
-                       TempData = (char *)heng_ai_blood_pressure;
+       #ifdef __MMI_CUSTOM_HENGAI_HEALTH__
+               case NV_SECTION_UI_HENGAI_HEALTH_DATA:
+                       hengai_health = lv_mem_alloc(SectionLen);
+                       memset(hengai_health, 0x0, SectionLen);
+                       TempData = (char *)hengai_health;
                        break;
        #endif
                        
index ff56fde..51886f6 100644 (file)
@@ -213,7 +213,7 @@ enum
 #ifdef __MMI_CUSTOM_HENG_AI__
        ACT_ID_HENG_AI_WARNING,
 #endif
-#ifdef __MMI_CUSTOM_HENG_AI_BLOOD_PRESSURE__
+#ifdef __MMI_CUSTOM_HENGAI_HEALTH__
        ACT_ID_HENG_AI_BP,
        ACT_ID_HENG_AI_BP_MEASURE,
        ACT_ID_HENG_AI_BP_CALIBRATE,
index f5411a1..a3264a1 100644 (file)
@@ -453,17 +453,16 @@ typedef struct
 } __packed nv_watch_heng_ai_sleep_activation_t;
 #endif
 
-#ifdef __MMI_CUSTOM_HENG_AI_BLOOD_PRESSURE__
+#ifdef __MMI_CUSTOM_HENGAI_HEALTH__
 typedef struct
 {
-#if 0
        uint8_t is_activated; // 0-not activated; 1-activated
        char req_code[128];
        char act_code[128];
-#endif
+       char token[64];
        uint8_t is_calibrated; // 0-not calibrated; 1-calibrated
        hal_rtc_t calibrate_time;
-} __packed nv_watch_heng_ai_blood_pressure_t;
+} __packed nv_watch_hengai_health_data_t;
 #endif
 
 
@@ -701,8 +700,8 @@ enum
        NV_SECTION_UI_HENG_AI_WAKE_RING_TYPE,                   // nv_watch_switch_t
        NV_SECTION_UI_HENG_AI_SLEEP_ACTIVATION,                 // nv_watch_heng_ai_sleep_activation_t
 #endif
-#ifdef __MMI_CUSTOM_HENG_AI_BLOOD_PRESSURE__
-       NV_SECTION_UI_HENG_AI_BLOOD_PRESSURE,                   // nv_watch_heng_ai_blood_pressure_t
+#ifdef __MMI_CUSTOM_HENGAI_HEALTH__
+       NV_SECTION_UI_HENGAI_HEALTH_DATA,                               // nv_watch_hengai_health_data_t
 #endif
 
 
index 09915ff..973aaf3 100644 (file)
@@ -9,7 +9,7 @@
 #include "heng_ai.c"
 #include "heng_ai_sleep_activation.c"
 #endif
-#ifdef __MMI_CUSTOM_HENG_AI_BLOOD_PRESSURE__
+#ifdef __MMI_CUSTOM_HENGAI_HEALTH__
 #include "heng_ai_blood_pressure.c"
 #include "heng_ai_http_protocol.c"
 #endif
index a27ef2c..eeaf038 100644 (file)
@@ -23,7 +23,7 @@ extern "C" {
 #include "heng_ai.h"
 #include "heng_ai_sleep_activation.h"
 #endif
-#ifdef __MMI_CUSTOM_HENG_AI_BLOOD_PRESSURE__
+#ifdef __MMI_CUSTOM_HENGAI_HEALTH__
 #include "heng_ai_blood_pressure.h"
 #include "heng_ai_http_protocol.h"
 #endif
index 7a0b468..633be02 100644 (file)
@@ -3,79 +3,7 @@
 
 #include "lv_watch.h"
 
-#ifdef __MMI_CUSTOM_HENG_AI_BLOOD_PRESSURE__
-
-static nv_watch_heng_ai_blood_pressure_t s_hengai_blood_pressure_data = {0};
-
-void mmi_hengai_blood_pressure_nv_write(void)
-{
-       uint32_t nv_data_length = sizeof(nv_watch_heng_ai_blood_pressure_t);
-       
-       if(nv_data_length != UI_NV_Write_Req(NV_SECTION_UI_HENG_AI_BLOOD_PRESSURE, 0, nv_data_length, (uint8_t *)&s_hengai_blood_pressure_data))
-       {
-               printf("[@CHENG_DEBUG][%s][%d]: nv write fail\n", __FUNCTION__, __LINE__);
-       }
-}
-
-void mmi_hengai_blood_pressure_nv_read(void)
-{
-       uint32_t nv_data_length = sizeof(nv_watch_heng_ai_blood_pressure_t);
-       
-       if(nv_data_length != UI_NV_Read_Req(NV_SECTION_UI_HENG_AI_BLOOD_PRESSURE, 0, nv_data_length, (uint8_t *)&s_hengai_blood_pressure_data))
-       {
-               printf("[@CHENG_DEBUG][%s][%d]: nv read fail\n", __FUNCTION__, __LINE__);
-               _lv_memset_00(&s_hengai_blood_pressure_data, sizeof(nv_watch_heng_ai_blood_pressure_t));
-       }
-}
-
-void mmi_hengai_blood_pressure_data_set(nv_watch_heng_ai_blood_pressure_t * data)
-{
-       if(NULL != data)
-       {
-               _lv_memset_00(&s_hengai_blood_pressure_data, sizeof(nv_watch_heng_ai_blood_pressure_t));
-               _lv_memcpy(&s_hengai_blood_pressure_data, data, sizeof(nv_watch_heng_ai_blood_pressure_t));
-               mmi_hengai_blood_pressure_nv_write();
-       }
-}
-
-uint8_t mmi_hengai_bp_is_calibrated(void)
-{
-       return (s_hengai_blood_pressure_data.is_calibrated);
-}
-
-#if 0
-uint8_t mmi_hengai_bp_is_activated(void)
-{
-       return (s_hengai_blood_pressure_data.is_activated);
-}
-
-char * mmi_hengai_bp_req_code_get(void)
-{
-       return (s_hengai_blood_pressure_data.req_code);
-}
-
-void mmi_hengai_bp_req_code_set(char * req_code)
-{
-       _lv_memcpy(s_hengai_blood_pressure_data.req_code, req_code, strlen(req_code));
-}
-
-char * mmi_hengai_bp_act_code_get(void)
-{
-       return (s_hengai_blood_pressure_data.act_code);
-}
-
-void mmi_hengai_bp_act_code_set(char * act_code)
-{
-       _lv_memcpy(s_hengai_blood_pressure_data.act_code, act_code, strlen(act_code));
-}
-
-void mmi_hengai_bp_activated_finish(void)
-{
-       s_hengai_blood_pressure_data.is_activated = 1;
-       mmi_hengai_blood_pressure_nv_write();
-}
-#endif
-
+#ifdef __MMI_CUSTOM_HENGAI_HEALTH__
 
 #if 0
 static lv_obj_t * mmi_heng_ai_warning_screen_create(lv_obj_t * activity_obj)
@@ -698,7 +626,6 @@ void mmi_hengai_bp_measure_start_btn_event_cb(lv_obj_t * obj, lv_event_t e)
                printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
                mmi_hsensor_bp_open();
                mmi_hengai_bp_measure_action_time_string_set(1);
-
                s_hengai_bp_measure_count = 0;
 
                gif_info_t * gif_info = gif_open(cont, ANIM_HENGAI_BP_MEASURE, 0);
@@ -1045,7 +972,7 @@ void mmi_hengai_bp_calibrate_update_result(bool is_success)
 
        if(is_success)
        {
-               nv_watch_heng_ai_blood_pressure_t data = {0};
+               nv_watch_hengai_health_data_t data = {0};
 
                data.is_calibrated = 1;
                mmi_hengai_blood_pressure_data_set(&data);
@@ -1109,6 +1036,7 @@ void mmi_hengai_bp_calibrate_end_input_event_cb(lv_obj_t * obj, lv_event_t e)
        }
 }
 
+#if 0
 void mmi_bp_roller_get_optstr_from_num(uint16_t sel_value, char * stropt, uint32_t user_num)
 {
     uint8_t opt_display[5];
@@ -1235,6 +1163,136 @@ void mmi_hengai_bp_calibrate_input_screen(void)
        mmi_bp_screen_common_bottom_button_create(watch_ext->cont, WATCH_TEXT_ID_OK, mmi_hengai_bp_calibrate_end_input_event_cb);
 }
 
+#else
+
+void mmi_hengai_bp_calibrate_input_btn_event_cb(lv_obj_t * obj, lv_event_t e)
+{
+       if(LV_EVENT_CLICKED != e)
+               return;
+       
+       lv_heng_ai_bp_calibrate_ext_t * watch_ext = (lv_heng_ai_bp_calibrate_ext_t *)mmi_heng_ai_bp_calibrate_screen_ext_get();
+       if(NULL == watch_ext)
+               return;
+       
+       lv_obj_t * label = NULL;
+       char temp_str[4] = {0};
+       
+       uint32_t free_num = lv_watch_get_free_num(obj);
+       if(0 == free_num)
+       {
+               (MMI_HENGAI_BP_HIGH_VALUE_MAX > s_bp_value_high) ? s_bp_value_high++ : NULL;
+               sprintf(temp_str, "%d", s_bp_value_high);
+               label = watch_ext->label_input_high;
+       }
+       else if(1 == free_num)
+       {
+               (MMI_HENGAI_BP_HIGH_VALUE_MIN < s_bp_value_high) ? s_bp_value_high-- : NULL;
+               sprintf(temp_str, "%d", s_bp_value_high);
+               label = watch_ext->label_input_high;
+       }
+       else if(2 == free_num)
+       {
+               (MMI_HENGAI_BP_LOW_VALUE_MAX > s_bp_value_low) ? s_bp_value_low++ : NULL;
+               sprintf(temp_str, "%d", s_bp_value_low);
+               label = watch_ext->label_input_low;
+       }
+       else if(3 == free_num)
+       {
+               (MMI_HENGAI_BP_LOW_VALUE_MIN < s_bp_value_low) ? s_bp_value_low-- : NULL;
+               sprintf(temp_str, "%d", s_bp_value_low);
+               label = watch_ext->label_input_low;
+       }
+       lv_label_set_text(label, temp_str);     
+}
+
+void mmi_hengai_bp_calibrate_input_screen(void)
+{      
+       lv_heng_ai_bp_calibrate_ext_t * watch_ext = (lv_heng_ai_bp_calibrate_ext_t *)mmi_heng_ai_bp_calibrate_screen_ext_get();
+       if(NULL == watch_ext)
+               return;
+       
+       s_bp_value_high = 120;
+       s_bp_value_low = 80;
+       lv_obj_clean(watch_ext->cont);
+
+       lv_obj_t * label_title = lv_label_create(watch_ext->cont, NULL);
+       lv_obj_add_style(label_title, LV_LABEL_PART_MAIN, &lv_watch_font32);
+       lv_label_set_align(label_title, LV_LABEL_ALIGN_CENTER);
+       lv_label_set_text_id(label_title, WATCH_TEXT_ID_INPUT_CALIBRATE_VALUE);
+       lv_obj_align(label_title, NULL, LV_ALIGN_IN_TOP_MID, 0, 48);
+       lv_obj_set_click(label_title, false);
+
+       lv_obj_t * label = NULL;
+       lv_obj_t * imgbtn = NULL;
+       char temp_str[4] = {0};
+       
+       label = lv_label_create(watch_ext->cont, NULL);
+       lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font24);
+       lv_label_set_align(label, LV_LABEL_ALIGN_CENTER);
+       lv_label_set_text_id(label, WATCH_TEXT_ID_SYSTOLIC_BP);
+       lv_obj_align(label, NULL, LV_ALIGN_IN_TOP_LEFT, 103, 104);
+       lv_obj_set_click(label, false);
+
+       imgbtn = lv_imgbtn_create(watch_ext->cont, NULL);
+       lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_RELEASED, ICON_HENGAI_BP_UP_ARROW);
+       lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_PRESSED, ICON_HENGAI_BP_UP_ARROW);
+       lv_obj_align(imgbtn, label, LV_ALIGN_OUT_BOTTOM_MID, 0, 10); // 20);
+       lv_obj_set_event_cb(imgbtn, mmi_hengai_bp_calibrate_input_btn_event_cb);
+       lv_watch_set_free_num(imgbtn, 0);
+
+       label = lv_label_create(watch_ext->cont, NULL);
+       lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font60);
+       lv_label_set_align(label, LV_LABEL_ALIGN_CENTER);
+       sprintf(temp_str, "%d", s_bp_value_high);
+       lv_label_set_text(label, temp_str);
+       lv_obj_align(label, imgbtn, LV_ALIGN_OUT_BOTTOM_MID, 0, 8); // 20);
+       lv_obj_set_click(label, false);
+       watch_ext->label_input_high = label;
+
+       imgbtn = lv_imgbtn_create(watch_ext->cont, NULL);
+       lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_RELEASED, ICON_HENGAI_BP_DOWN_ARROW);
+       lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_PRESSED, ICON_HENGAI_BP_DOWN_ARROW);
+       lv_obj_align(imgbtn, label, LV_ALIGN_OUT_BOTTOM_MID, 0, 10); // 20);
+       lv_obj_set_event_cb(imgbtn, mmi_hengai_bp_calibrate_input_btn_event_cb);
+       lv_watch_set_free_num(imgbtn, 1);
+       
+
+       label = lv_label_create(watch_ext->cont, NULL);
+       lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font24);
+       lv_label_set_align(label, LV_LABEL_ALIGN_CENTER);
+       lv_label_set_text_id(label, WATCH_TEXT_ID_DIASTOLIC_BP);
+       lv_obj_align(label, NULL, LV_ALIGN_IN_TOP_LEFT, 280, 104);
+       lv_obj_set_click(label, false);
+
+       imgbtn = lv_imgbtn_create(watch_ext->cont, NULL);
+       lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_RELEASED, ICON_HENGAI_BP_UP_ARROW);
+       lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_PRESSED, ICON_HENGAI_BP_UP_ARROW);
+       lv_obj_align(imgbtn, label, LV_ALIGN_OUT_BOTTOM_MID, 0, 10); // 20);
+       lv_obj_set_event_cb(imgbtn, mmi_hengai_bp_calibrate_input_btn_event_cb);
+       lv_watch_set_free_num(imgbtn, 2);
+
+       label = lv_label_create(watch_ext->cont, NULL);
+       lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font60);
+       lv_label_set_align(label, LV_LABEL_ALIGN_CENTER);
+       sprintf(temp_str, "%d", s_bp_value_low);
+       lv_label_set_text(label, temp_str);
+       lv_obj_align(label, imgbtn, LV_ALIGN_OUT_BOTTOM_MID, 0, 8); // 20);
+       lv_obj_set_click(label, false);
+       watch_ext->label_input_low = label;
+
+       imgbtn = lv_imgbtn_create(watch_ext->cont, NULL);
+       lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_RELEASED, ICON_HENGAI_BP_DOWN_ARROW);
+       lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_PRESSED, ICON_HENGAI_BP_DOWN_ARROW);
+       lv_obj_align(imgbtn, label, LV_ALIGN_OUT_BOTTOM_MID, 0, 10); // 20);
+       lv_obj_set_event_cb(imgbtn, mmi_hengai_bp_calibrate_input_btn_event_cb);
+       lv_watch_set_free_num(imgbtn, 3);
+
+
+       mmi_bp_screen_common_bottom_button_create(watch_ext->cont, WATCH_TEXT_ID_OK, mmi_hengai_bp_calibrate_end_input_event_cb);
+}
+#endif
+
+
 void mmi_hengai_bp_calibrate_end_btn_event_cb(lv_obj_t * obj, lv_event_t e)
 {
        if(LV_EVENT_CLICKED != e)
@@ -1316,8 +1374,10 @@ void mmi_heng_ai_bp_calibrate_start_screen(void)
        }
        else
        {
+               printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
                mmi_hsensor_bp_open();
                mmi_hengai_bp_measure_action_time_string_set(1);
+               s_hengai_bp_measure_count = 0;
                
                lv_obj_t * label_title = lv_label_create(watch_ext->cont, NULL);
                lv_obj_add_style(label_title, LV_LABEL_PART_MAIN, &lv_watch_font32);
@@ -1348,7 +1408,6 @@ void mmi_heng_ai_bp_calibrate_start_screen(void)
                lv_obj_set_click(label, false);
 
                /* start timer (1 min) */
-               s_hengai_bp_measure_count = 0;
                watch_ext->measure_timer_id = Hal_Timer_Start(1000, mmi_hengai_bp_calibrate_cycle_timeout, NULL, true);
        }
 }
index 720f372..96d837a 100644 (file)
@@ -16,7 +16,7 @@ extern "C" {
 #include "../../../lv_ex_conf.h"
 #endif
 
-#ifdef __MMI_CUSTOM_HENG_AI_BLOOD_PRESSURE__
+#ifdef __MMI_CUSTOM_HENGAI_HEALTH__
 
 #define MMI_HENGAI_BP_TAB_COUNT (3)
 
@@ -26,6 +26,10 @@ extern "C" {
 
 #define MMI_HENGAI_BP_RAW_DATA_SAMPLE_RATE     (81)
 
+#define MMI_HENGAI_BP_HIGH_VALUE_MAX   (200)
+#define MMI_HENGAI_BP_HIGH_VALUE_MIN   (100)
+#define MMI_HENGAI_BP_LOW_VALUE_MAX    (120)
+#define MMI_HENGAI_BP_LOW_VALUE_MIN    (60)
 
 
 
@@ -65,6 +69,8 @@ typedef struct
        lv_obj_t * cont_prompt_0;
        lv_obj_t * cont_prompt_1;
        lv_obj_t * cont_prompt_2;
+       lv_obj_t * label_input_high;
+       lv_obj_t * label_input_low;
        gif_info_t * gif_info;
     TIMER_ID measure_timer_id;
        TIMER_ID result_timer_id;
index 23275ec..3d79d65 100644 (file)
@@ -3,7 +3,7 @@
 
 #include "lv_watch.h"
 
-#ifdef __MMI_CUSTOM_HENG_AI_BLOOD_PRESSURE__
+#ifdef __MMI_CUSTOM_HENGAI_HEALTH__
 
 
 #include "hal/dm/cJSON.h"
@@ -221,7 +221,7 @@ void mmi_hengai_bp_measure_raw_data_send(void)
                        else
                        {
                                // false
-                               printf("[@CHENG_DEBUG][%s][%d]: fail\n", __FUNCTION__, __LINE__);
+                               printf("[@CHENG_DEBUG][%s][%d]: false\n", __FUNCTION__, __LINE__);
                                // update
                                mmi_hengai_bp_measure_update_result(false, 0, 0, NULL);
                        }
@@ -268,6 +268,7 @@ void mmi_hengai_bp_calibrate_model_send(void)
        {
                printf("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, strlen(s_hengai_http_revceive_buf));
                printf("[@CHENG_DEBUG][%d]: %s\n", __LINE__, s_hengai_http_revceive_buf);
+               printf("[@CHENG_DEBUG][%d]: %s\n", __LINE__, s_hengai_http_revceive_buf + 63);
                
                cJSON * json_recv = cJSON_Parse(s_hengai_http_revceive_buf);
                if(NULL != json_recv)
@@ -311,7 +312,7 @@ void mmi_hengai_bp_calibrate_raw_data_send(uint8_t calibrate_times, uint16_t bp_
        cJSON_AddItemToObject(json_send, "mac", cJSON_CreateString(imei));
        cJSON_AddItemToObject(json_send, "begin_time", cJSON_CreateString(begin_time_str));
        cJSON_AddItemToObject(json_send, "end_time", cJSON_CreateString(end_time_str));
-       cJSON_AddItemToObject(json_send, "pulse_wave", cJSON_CreateString("HENGAI"));
+       cJSON_AddItemToObject(json_send, "pulse_wave", cJSON_CreateIntArray(mmi_hengai_bp_raw_data_ptr_get(), mmi_hengai_bp_raw_data_len_get()));
        cJSON_AddItemToObject(json_send, "sample_rate", cJSON_CreateNumber(MMI_HENGAI_BP_RAW_DATA_SAMPLE_RATE));
        cJSON_AddItemToObject(json_send, "sbp", cJSON_CreateNumber(bp_value_high));
        cJSON_AddItemToObject(json_send, "dbp", cJSON_CreateNumber(bp_value_low));
@@ -327,15 +328,14 @@ void mmi_hengai_bp_calibrate_raw_data_send(uint8_t calibrate_times, uint16_t bp_
        {
                printf("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, strlen(s_hengai_http_revceive_buf));
                printf("[@CHENG_DEBUG][%d]: %s\n", __LINE__, s_hengai_http_revceive_buf);
+               printf("[@CHENG_DEBUG][%d]: %s\n", __LINE__, s_hengai_http_revceive_buf + 63);
                
                cJSON * json_recv = cJSON_Parse(s_hengai_http_revceive_buf);
                if(NULL != json_recv)
                {
-                       printf("[@CHENG_DEBUG][%s][%d]: json file\n", __FUNCTION__, __LINE__);
-                       
                        if(cJSON_GetIntValue(cJSON_GetObjectItem(json_recv, "status")))
                        {
-                               // true
+                               printf("[@CHENG_DEBUG][%s][%d]: true\n", __FUNCTION__, __LINE__);
                                if(2 <= calibrate_times)
                                {
                                        mmi_hengai_bp_calibrate_model_send();
@@ -343,8 +343,7 @@ void mmi_hengai_bp_calibrate_raw_data_send(uint8_t calibrate_times, uint16_t bp_
                        }
                        else
                        {
-                               // false
-                               printf("[@CHENG_DEBUG][%s][%d]: fail\n", __FUNCTION__, __LINE__);
+                               printf("[@CHENG_DEBUG][%s][%d]: false\n", __FUNCTION__, __LINE__);
                        }
                }
                else
@@ -572,6 +571,80 @@ void mmi_hengai_algorithm_interface_login_action(void)
 }
 
 
+
+
+static nv_watch_hengai_health_data_t s_hengai_blood_pressure_data = {0};
+
+void mmi_hengai_blood_pressure_nv_write(void)
+{
+       uint32_t nv_data_length = sizeof(nv_watch_hengai_health_data_t);
+       
+       if(nv_data_length != UI_NV_Write_Req(NV_SECTION_UI_HENGAI_HEALTH_DATA, 0, nv_data_length, (uint8_t *)&s_hengai_blood_pressure_data))
+       {
+               printf("[@CHENG_DEBUG][%s][%d]: nv write fail\n", __FUNCTION__, __LINE__);
+       }
+}
+
+void mmi_hengai_blood_pressure_nv_read(void)
+{
+       uint32_t nv_data_length = sizeof(nv_watch_hengai_health_data_t);
+       
+       if(nv_data_length != UI_NV_Read_Req(NV_SECTION_UI_HENGAI_HEALTH_DATA, 0, nv_data_length, (uint8_t *)&s_hengai_blood_pressure_data))
+       {
+               printf("[@CHENG_DEBUG][%s][%d]: nv read fail\n", __FUNCTION__, __LINE__);
+               _lv_memset_00(&s_hengai_blood_pressure_data, sizeof(nv_watch_hengai_health_data_t));
+       }
+}
+
+void mmi_hengai_blood_pressure_data_set(nv_watch_hengai_health_data_t * data)
+{
+       if(NULL != data)
+       {
+               _lv_memset_00(&s_hengai_blood_pressure_data, sizeof(nv_watch_hengai_health_data_t));
+               _lv_memcpy(&s_hengai_blood_pressure_data, data, sizeof(nv_watch_hengai_health_data_t));
+               mmi_hengai_blood_pressure_nv_write();
+       }
+}
+
+uint8_t mmi_hengai_bp_is_calibrated(void)
+{
+       return (s_hengai_blood_pressure_data.is_calibrated);
+}
+
+uint8_t mmi_hengai_bp_is_activated(void)
+{
+       return (s_hengai_blood_pressure_data.is_activated);
+}
+
+char * mmi_hengai_bp_req_code_get(void)
+{
+       return (s_hengai_blood_pressure_data.req_code);
+}
+
+void mmi_hengai_bp_req_code_set(char * req_code)
+{
+       _lv_memcpy(s_hengai_blood_pressure_data.req_code, req_code, strlen(req_code));
+}
+
+char * mmi_hengai_bp_act_code_get(void)
+{
+       return (s_hengai_blood_pressure_data.act_code);
+}
+
+void mmi_hengai_bp_act_code_set(char * act_code)
+{
+       _lv_memcpy(s_hengai_blood_pressure_data.act_code, act_code, strlen(act_code));
+}
+
+void mmi_hengai_bp_activated_finish(void)
+{
+       s_hengai_blood_pressure_data.is_activated = 1;
+       mmi_hengai_blood_pressure_nv_write();
+}
+
+
+
+
 #endif
 
 
index 5d02a11..63e6c5b 100644 (file)
@@ -16,7 +16,7 @@ extern "C" {
 #include "../../../lv_ex_conf.h"
 #endif
 
-#ifdef __MMI_CUSTOM_HENG_AI_BLOOD_PRESSURE__
+#ifdef __MMI_CUSTOM_HENGAI_HEALTH__
 
 
 // ½Ó¿Úǰ׺£º
index 6f373b7..fcec8de 100644 (file)
@@ -785,7 +785,7 @@ bool mmi_health_measure_timed_measure_start(MMI_HEALTH_MEASURE_TYPE_E measure_ty
        if(NULL != lv_watch_get_activity_obj(ACT_ID_FACTORY_MODE_TEST))
                return false;
 
-#ifdef __MMI_CUSTOM_HENG_AI_BLOOD_PRESSURE__
+#ifdef __MMI_CUSTOM_HENGAI_HEALTH__
        if(mmi_hengai_bp_is_measuring())
        {
                return false;
@@ -828,7 +828,7 @@ void mmi_health_measure_app_measure_start(MMI_HEALTH_MEASURE_TYPE_E measure_type
                return;
        }
 
-#ifdef __MMI_CUSTOM_HENG_AI_BLOOD_PRESSURE__
+#ifdef __MMI_CUSTOM_HENGAI_HEALTH__
        if(mmi_hengai_bp_is_measuring())
        {
                return;
index f77fbce..9de967a 100644 (file)
@@ -136,7 +136,7 @@ static void mmi_data_init_after_watch_create(void)
 #ifdef __MMI_SEDENTARY_REMIND_SUPPORT__
        mmi_sedentary_remind_mission_power_on_check();
 #endif
-#ifdef __MMI_CUSTOM_HENG_AI_BLOOD_PRESSURE__
+#ifdef __MMI_CUSTOM_HENGAI_HEALTH__
        mmi_hengai_blood_pressure_nv_read();
 #endif
 
index b73f066..ee9b341 100644 (file)
@@ -1006,7 +1006,7 @@ LV_IMG_DECLARE(img_poweron_logo);
 #define ICON_SETTING_NEW_SMS_SILENT           "R:/png/setting/ICON_SETTING_NEW_SMS_SILENT.png"
 #endif
 
-#ifdef __MMI_CUSTOM_HENG_AI_BLOOD_PRESSURE__
+#ifdef __MMI_CUSTOM_HENGAI_HEALTH__
 #define ICON_HENGAI_BP_BTN_BG           "R:/png/custom_function/ICON_HENGAI_BP_BTN_BG.png"
 #define ICON_HENGAI_BP_BOTTOM_BTN_BG           "R:/png/custom_function/ICON_HENGAI_BP_BOTTOM_BTN_BG.png"
 #define ICON_HENGAI_BP_ALERT           "R:/png/custom_function/ICON_HENGAI_BP_ALERT.png"