From: @CHENG <2393524978@qq.com> Date: Tue, 28 May 2024 09:39:14 +0000 (+0800) Subject: gengxin X-Git-Url: http://git.snicker.com.cn/sitemap.xml?a=commitdiff_plain;h=457b27daa8eda9c6e9dcbc2c4be174f133019a93;p=mirrors%2FASR3603_Z5.git gengxin --- diff --git a/2.sdk/sdk/gui/lv_watch/framework/language/lang_ch.c b/2.sdk/sdk/gui/lv_watch/framework/language/lang_ch.c index ba8d2c03..a61a8d63 100644 --- a/2.sdk/sdk/gui/lv_watch/framework/language/lang_ch.c +++ b/2.sdk/sdk/gui/lv_watch/framework/language/lang_ch.c @@ -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, diff --git a/2.sdk/sdk/gui/lv_watch/framework/language/lang_en.c b/2.sdk/sdk/gui/lv_watch/framework/language/lang_en.c index 60aa3660..72dbccf8 100644 --- a/2.sdk/sdk/gui/lv_watch/framework/language/lang_en.c +++ b/2.sdk/sdk/gui/lv_watch/framework/language/lang_en.c @@ -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, diff --git a/2.sdk/sdk/gui/lv_watch/include/ui_textid.h b/2.sdk/sdk/gui/lv_watch/include/ui_textid.h index 51398ccf..bb4ad222 100644 --- a/2.sdk/sdk/gui/lv_watch/include/ui_textid.h +++ b/2.sdk/sdk/gui/lv_watch/include/ui_textid.h @@ -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!" */ diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_blood_pressure.c b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_blood_pressure.c index 536d8514..ad184b17 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_blood_pressure.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_blood_pressure.c @@ -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; } diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_http_protocol.c b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_http_protocol.c index 9effbdea..a32d1dac 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_http_protocol.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_http_protocol.c @@ -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; } diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_http_protocol.h b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_http_protocol.h index 325aedde..8995b533 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_http_protocol.h +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_http_protocol.h @@ -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; diff --git a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.c b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.c index b9c4b93b..69d9985f 100644 --- a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.c +++ b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.c @@ -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 diff --git a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c index 9da41cd7..ee6eb683 100644 --- a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c +++ b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c @@ -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();