"校准结果已上传,当前血压异常。建议吃降压药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,
"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,
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!" */
}
}
+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)
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
{
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;
}
}
}
+// 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;
}
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;
}
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;
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
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();