gengxin
author@CHENG <2393524978@qq.com>
Tue, 28 May 2024 09:39:14 +0000 (17:39 +0800)
committer@CHENG <2393524978@qq.com>
Tue, 28 May 2024 09:39:14 +0000 (17:39 +0800)
2.sdk/sdk/gui/lv_watch/framework/language/lang_ch.c
2.sdk/sdk/gui/lv_watch/framework/language/lang_en.c
2.sdk/sdk/gui/lv_watch/include/ui_textid.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_http_protocol.c
2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_http_protocol.h
2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.c
2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c

index ba8d2c0..a61a8d6 100644 (file)
@@ -968,6 +968,8 @@ const void * lang_text_ch[] = {
     "校准结果已上传,当前血压异常。建议吃降压药2小时后重新校准", // WATCH_TEXT_ID_BLOOD_PRESSURE_HIGH_PROMPT,
     "校准结果已上传,当前血压异常。建议休息后重新校准", // WATCH_TEXT_ID_BLOOD_PRESSURE_LOW_PROMPT,
     "校准失败,请重新校准", // WATCH_TEXT_ID_BLOOD_PRESSURE_FAILED_PROMPT,
+    "清除记录", // WATCH_TEXT_ID_CLEAN_MODEL,
+    "确定清除?" , // WATCH_TEXT_ID_CLEAN_Q,
     "今日步数", // WATCH_TEXT_ID_TODAY_STEP,
     "目标步数", // WATCH_TEXT_ID_GOAL_STEP,
     "我需要你的帮助!", // WATCH_TEXT_ID_SOS_SMS_HELP_CONTENT,
index 60aa366..72dbccf 100644 (file)
@@ -969,6 +969,8 @@ const void * lang_text_en[] = {
     "Blood pressure high prompt", // WATCH_TEXT_ID_BLOOD_PRESSURE_HIGH_PROMPT, 
     "Blood pressure low prompt", // WATCH_TEXT_ID_BLOOD_PRESSURE_LOW_PROMPT,
     "Blood pressure failed prompt", // WATCH_TEXT_ID_BLOOD_PRESSURE_FAILED_PROMPT,
+    "Clean record", // WATCH_TEXT_ID_CLEAN_MODEL,
+    "Clean ?", // WATCH_TEXT_ID_CLEAN_Q,
     "Today steps", // WATCH_TEXT_ID_TODAY_STEP,
     "Goal steps", // WATCH_TEXT_ID_GOAL_STEP,
     "I NEED YOUR HELP!", // WATCH_TEXT_ID_SOS_SMS_HELP_CONTENT,
index 51398cc..bb4ad22 100644 (file)
@@ -976,6 +976,8 @@ enum
     WATCH_TEXT_ID_BLOOD_PRESSURE_HIGH_PROMPT,           /* "校准结果已上传,当前血压异常。建议吃降压药2小时后重新校准"                      "Blood pressure high prompt" */
     WATCH_TEXT_ID_BLOOD_PRESSURE_LOW_PROMPT,            /* "校准结果已上传,当前血压异常。建议休息后重新校准"                      "Blood pressure low prompt" */
     WATCH_TEXT_ID_BLOOD_PRESSURE_FAILED_PROMPT,         /* "校准失败,请重新校准"                      "Blood pressure failed prompt" */
+    WATCH_TEXT_ID_CLEAN_MODEL,                          /* "清除记录"                      "Clean record" */
+    WATCH_TEXT_ID_CLEAN_Q,                              /* "确定清除?"                      "Clean ?" */
     WATCH_TEXT_ID_TODAY_STEP,                           /* "今日步数"                      "Today steps" */
     WATCH_TEXT_ID_GOAL_STEP,                            /* "目标步数"                      "Goal steps" */
     WATCH_TEXT_ID_SOS_SMS_HELP_CONTENT,                 /* "我需要你的帮助!"                      "I NEED YOUR HELP!" */
index 536d851..ad184b1 100644 (file)
@@ -1919,12 +1919,78 @@ void mmi_hengai_bp_calibration_record_screen_clean(void)
        }
 }
 
+void mmi_hengai_bp_model_clean_ok_btn_event_cb(lv_obj_t * obj, lv_event_t e)
+{
+       if(LV_EVENT_CLICKED != e)
+               return;
+       
+       mmi_hengai_tcp_bp_calibrate_model_clean();
+       mmi_hengai_bp_calibration_record_screen_clean();
+}
+
+void mmi_hengai_bp_model_clean_cancel_btn_event_cb(lv_obj_t * obj, lv_event_t e)
+{
+    if(LV_EVENT_CLICKED != e) 
+               return;
+
+       lv_obj_t * par = lv_obj_get_parent(obj);
+       if(NULL != par)
+       {
+               lv_obj_del(par);
+       }
+}
+
+void mmi_hengai_bp_model_clean_action(lv_obj_t * obj)
+{
+       HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+       
+       lv_obj_t * par = lv_obj_get_parent(obj);
+       if(NULL != par)
+       {
+               lv_obj_t * cont = lv_cont_create(par, NULL);
+               lv_obj_set_size(cont, LV_HOR_RES, LV_VER_RES);
+               //lv_obj_add_style(cont, LV_CONT_PART_MAIN, &lv_style_transp_tight);
+               lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
+               lv_obj_set_click(cont, false);
+
+           lv_obj_t * label_prompt = lv_label_create(cont, NULL);
+           lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font40);
+               lv_label_set_text_id(label_prompt, WATCH_TEXT_ID_CLEAN_Q);
+           lv_obj_align(label_prompt, NULL, LV_ALIGN_CENTER, 0, -30);
+
+           lv_obj_t * btn_cancel = lv_btn_create(cont, NULL);
+           lv_obj_set_size(btn_cancel, 140, 70);
+           lv_obj_set_style_local_bg_color(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, lv_color_make(0x47, 0xA6, 0xFF));
+           lv_obj_set_style_local_radius(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 30);
+           lv_obj_set_style_local_bg_color(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_PRESSED, lv_color_make(0x47, 0xA6, 0xFF));
+           lv_obj_set_style_local_radius(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_PRESSED, 30);
+           lv_obj_align(btn_cancel, NULL, LV_ALIGN_IN_BOTTOM_LEFT, 70, -60);
+           lv_obj_set_event_cb(btn_cancel, mmi_hengai_bp_model_clean_cancel_btn_event_cb);
+
+           lv_obj_t * label_cancel = lv_label_create(btn_cancel, NULL);
+           lv_obj_add_style(label_cancel, LV_LABEL_PART_MAIN, &lv_watch_font40);
+           lv_label_set_text_id(label_cancel, WATCH_TEXT_ID_CANCEL);
+
+           lv_obj_t * btn_ok = lv_btn_create(cont, btn_cancel);
+           lv_obj_set_style_local_bg_color(btn_ok, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, lv_color_make(0xFF, 0x6F, 0x91));
+           lv_obj_set_style_local_bg_color(btn_ok, LV_BTN_PART_MAIN, LV_STATE_PRESSED, lv_color_make(0xFF, 0x6F, 0x91));
+           lv_obj_align(btn_ok, NULL, LV_ALIGN_IN_BOTTOM_RIGHT, -70, -60);
+           lv_obj_set_event_cb(btn_ok, mmi_hengai_bp_model_clean_ok_btn_event_cb);
+               
+           lv_obj_t * label_ok = lv_label_create(btn_ok, label_cancel);
+           lv_label_set_text_id(label_ok, WATCH_TEXT_ID_OK);
+       }
+}
+
 void mmi_hengai_bp_calibration_record_screen_btn_event_cb(lv_obj_t * obj, lv_event_t e)
 {
        if(LV_EVENT_CLICKED != e)
                return;
 
-       mmi_hengai_bp_calibration_record_screen_clean();
+       if(0 == mmi_hengai_bp_calibrated_flag_get())
+               mmi_hengai_bp_calibration_record_screen_clean();
+       else
+               mmi_hengai_bp_model_clean_action(obj);
 }
 
 lv_obj_t * mmi_hengai_bp_calibration_record_screen_create(lv_obj_t * activity_obj)
@@ -1967,6 +2033,8 @@ lv_obj_t * mmi_hengai_bp_calibration_record_screen_create(lv_obj_t * activity_ob
                lv_label_set_align(label_prompt, LV_LABEL_ALIGN_CENTER);
                lv_label_set_text_id(label_prompt, WATCH_TEXT_ID_BP_NO_RECORD);
                lv_obj_align(label_prompt, NULL, LV_ALIGN_CENTER, 0, -20);
+
+               mmi_bp_screen_common_bottom_button_create(cont, WATCH_TEXT_ID_OK, mmi_hengai_bp_calibration_record_screen_btn_event_cb);
        }
        else
        {
@@ -2003,9 +2071,9 @@ lv_obj_t * mmi_hengai_bp_calibration_record_screen_create(lv_obj_t * activity_ob
                lv_label_set_text_id(label_prompt, WATCH_TEXT_ID_BLOOD_PRESSURE_NORMAL_PROMPT);
                lv_obj_align(label_prompt, NULL, LV_ALIGN_IN_TOP_MID, 0, 292);
        */
-       }
 
-       mmi_bp_screen_common_bottom_button_create(cont, WATCH_TEXT_ID_OK, mmi_hengai_bp_calibration_record_screen_btn_event_cb);
+               mmi_bp_screen_common_bottom_button_create(cont, WATCH_TEXT_ID_CLEAN_MODEL, mmi_hengai_bp_calibration_record_screen_btn_event_cb);
+       }
 
        return watch_obj;
 }
index 9effbde..a32d1da 100644 (file)
@@ -892,6 +892,128 @@ FREE_AND_EXIT:
        }
 }
 
+// clean model
+void mmi_hengai_tcp_bp_calibrate_model_clean(void)
+{
+       char * data_ptr = NULL;
+       uint32_t data_len = 0;
+       char * encode_str = NULL;
+       uint32_t encode_len = 0;
+       char * encode_header_str = NULL;
+       uint32_t encode_header_len = 0;
+       uint32_t output_len = 0;
+       uint32_t output_header_len = 0;
+       int temp_len = 0;
+       int json_data_len = 256;
+       char * json_data = NULL;
+
+       // json body
+       json_data = lv_mem_alloc(json_data_len);
+       if(NULL == json_data)
+       {
+               HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: memory alloc failed\n", __FUNCTION__, __LINE__);
+               goto FREE_AND_EXIT;
+       }
+       _lv_memset_00(json_data, json_data_len);
+
+       temp_len = 0;
+       temp_len += sprintf(json_data + temp_len, "{\"app_key\":\"%s\",", HENGAI_HTTP_POST_APP_KEY);
+       
+       char imei[16 + 1] = {0};
+       app_adp_get_imei_req(imei);
+       temp_len += sprintf(json_data + temp_len, "\"mac\":\"%s\"}", imei);
+
+       HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, temp_len);
+
+       // base64 body
+       encode_len = temp_len * 3 / 2;
+       encode_str = lv_mem_alloc(encode_len);
+       if(NULL == encode_str)
+       {
+               HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: memory alloc failed\n", __FUNCTION__, __LINE__);
+               goto FREE_AND_EXIT;
+       }
+       _lv_memset_00(encode_str, encode_len);
+       if(0 != mbedtls_base64_encode(encode_str, encode_len, &output_len, json_data, temp_len))
+       {
+               HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: base64 encode failed\n", __FUNCTION__, __LINE__);
+               goto FREE_AND_EXIT;
+       }
+
+       // json header
+       _lv_memset_00(json_data, json_data_len);
+
+       temp_len = 0;
+       temp_len += sprintf(json_data + temp_len, "{\"headers\":[");
+
+       temp_len += sprintf(json_data + temp_len, "{\"key\":\"token\",");
+
+       char * token = mmi_hengai_health_token_get();
+       temp_len += sprintf(json_data + temp_len, "\"value\":\"%s\"}", token);
+
+       temp_len += sprintf(json_data + temp_len, "]}");
+       
+       HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, temp_len);
+
+       // base64 header
+       encode_header_len = temp_len * 3 / 2;
+       encode_header_str = lv_mem_alloc(encode_header_len);
+       if(NULL == encode_header_str)
+       {
+               HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: memory alloc failed\n", __FUNCTION__, __LINE__);
+               goto FREE_AND_EXIT;
+       }
+       _lv_memset_00(encode_header_str, encode_header_len);
+       if(0 != mbedtls_base64_encode(encode_header_str, encode_header_len, &output_header_len, json_data, temp_len))
+       {
+               HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: base64 encode failed\n", __FUNCTION__, __LINE__);
+               goto FREE_AND_EXIT;
+       }       
+       
+       // content
+       data_len = output_len + output_header_len + 128;
+       data_ptr = lv_mem_alloc(data_len);
+       if(NULL == data_ptr)
+       {
+               HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: memory alloc failed\n", __FUNCTION__, __LINE__);
+               goto FREE_AND_EXIT;
+       }
+       _lv_memset_00(data_ptr, data_len);
+       
+#if 1
+       sprintf(data_ptr, ",POST,%s%s,%s,%s", HENGAI_HTTP_POST_URL_COMMON_PREFIX, "/health/bp/model/delete", encode_header_str, encode_str);
+#else
+       sprintf(data_ptr, "POST,%s%s,%s,%s", HENGAI_HTTP_POST_URL_COMMON_PREFIX, "/health/bp/model/delete", encode_header_str, encode_str);
+#endif
+       data_len = strlen(data_ptr);
+
+       s_hengai_bp_send_code = HENGAI_HEALTH_SEND_CLEAN_MODEL;
+       mmi_protocol_fzd_action_tcp_http(data_ptr, data_len);
+       
+FREE_AND_EXIT:
+       if(NULL != json_data)
+       {
+               lv_mem_free(json_data);
+               json_data = NULL;
+       }
+       if(NULL != encode_str)
+       {
+               lv_mem_free(encode_str);
+               encode_str = NULL;
+       }
+       if(NULL != encode_header_str)
+       {
+               lv_mem_free(encode_header_str);
+               encode_header_str = NULL;
+       }
+       if(NULL != data_ptr)
+       {
+               lv_mem_free(data_ptr);
+               data_ptr = NULL;
+       }
+}
+
+
 void mmi_hengai_tcp_health_lib_activation_feedback(void)
 {
        char * data_ptr = NULL;
@@ -1312,6 +1434,21 @@ bool mmi_hengai_health_data_parse(unsigned char * next_buff, unsigned int next_b
                                }
                                break;
 
+                       case HENGAI_HEALTH_SEND_CLEAN_MODEL:
+                               if(cJSON_IsTrue(cJSON_GetObjectItem(json_recv, "status")))
+                               {
+                                       HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: true\n", __FUNCTION__, __LINE__);
+
+                                       mmi_hengai_bp_calibrated_flag_set(0);
+                                       // update
+                               }
+                               else
+                               {
+                                       HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: false\n", __FUNCTION__, __LINE__);
+                                       // update
+                               }
+                               break;
+
                        default:
                                break;
                }       
index 325aedd..8995b53 100644 (file)
@@ -57,6 +57,7 @@ typedef enum
        HENGAI_HEALTH_SEND_CALIBRATE_MODEL,
        HENGAI_HEALTH_SEND_MEASURE_DATA,
        HENGAI_HEALTH_SEND_BACK_MEASURE_DATA,
+       HENGAI_HEALTH_SEND_CLEAN_MODEL,
        
        HENGAI_HEALTH_SEND_MAX,
 }HENGAI_HEALTH_SEND_TYPE_ENUM;
index b9c4b93..69d9985 100644 (file)
@@ -751,14 +751,6 @@ void mmi_protocol_timing_mission_stop(void)
 extern void dm_send_msg_active(void);
 bool mmi_protocol_watch_link_action(void)
 {
-#ifdef __MMI_CUSTOM_HENGAI_HEALTH__
-#ifdef __MMI_CUSTOM_HENGAI_HEALTH_UPLOAD_USE_TCP__
-       mmi_hengai_tcp_algorithm_interface_login_action();
-#else
-       mmi_hengai_algorithm_interface_login_action();
-       mmi_hengai_health_lib_activation_check_action();
-#endif
-#endif
 #if USE_DS_DM
        dm_send_msg_active();
 #endif
index 9da41cd..ee6eb68 100644 (file)
@@ -561,6 +561,15 @@ bool mmi_protocol_fzd_action_LINK(void)
 
 bool mmi_protocol_fzd_parse_LINK(unsigned char * next_buff, unsigned int next_buff_len)
 {
+#ifdef __MMI_CUSTOM_HENGAI_HEALTH__
+#ifdef __MMI_CUSTOM_HENGAI_HEALTH_UPLOAD_USE_TCP__
+       mmi_hengai_tcp_algorithm_interface_login_action();
+#else
+       mmi_hengai_algorithm_interface_login_action();
+       mmi_hengai_health_lib_activation_check_action();
+#endif
+#endif
+       
        if(true != mmi_protocol_watch_bind_state_get())
        {
                mmi_protocol_fzd_action_bind();