#ifdef __MMI_CUSTOM_HENG_AI_BLOOD_PRESSURE__
-static uint8_t s_hengai_bp_calibrated = 0; // 0-not calibrated; 1-calibrated
-static const lv_point_t s_hengai_bp_valid_pos[] = {{0, 0}, {1, 0}, {2, 0}};
-static uint8_t s_hengai_bp_measure_count = 0;
-static uint8_t s_hengai_bp_calibrate_times = 0;
-static uint16_t s_bp_value_high = 0, s_bp_value_low = 0;
-
-
-void mmi_heng_ai_bp_raw_data_save(void){}
-
-void mmi_heng_ai_bp_raw_data_send(void){}
-
-void mmi_heng_ai_bp_calibrate_input_value_send(void){}
+static nv_watch_heng_ai_blood_pressure_t s_hengai_blood_pressure_data = {0};
-
-
-// 0-ring; 1-vibrator
-void mmi_heng_ai_wake_ring_type_set(uint8_t ring_type)
+void mmi_hengai_blood_pressure_nv_write(void)
{
- nv_watch_switch_t ring_type_data = {0};
- uint32_t nv_data_length = sizeof(nv_watch_switch_t);
+ uint32_t nv_data_length = sizeof(nv_watch_heng_ai_blood_pressure_t);
- ring_type_data.switch_flag = ring_type;
- if(nv_data_length != UI_NV_Write_Req(NV_SECTION_UI_HENG_AI_WAKE_RING_TYPE, 0, nv_data_length, (uint8_t *)&ring_type_data))
+ 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__);
}
}
-uint8_t mmi_heng_ai_wake_ring_type_get(void)
+void mmi_hengai_blood_pressure_nv_read(void)
{
- nv_watch_switch_t ring_type_data = {0};
- uint32_t nv_data_length = sizeof(nv_watch_switch_t);
-
- if(nv_data_length != UI_NV_Read_Req(NV_SECTION_UI_HENG_AI_WAKE_RING_TYPE, 0, nv_data_length, (uint8_t *)&ring_type_data))
+ 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));
}
-
- return (ring_type_data.switch_flag);
-}
-
-
-bool mmi_heng_ai_warning_screen_is_active(void)
-{
- lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_HENG_AI_WARNING);
- if(NULL != activity_obj)
- return true;
-
- return false;
}
-static lv_remind_obj_ext_t * mmi_heng_ai_warning_screen_ext_get(void)
+void mmi_hengai_blood_pressure_data_set(nv_watch_heng_ai_blood_pressure_t * data)
{
- lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_HENG_AI_WARNING);
- if(NULL == activity_obj)
- return NULL;
-
- lv_obj_t * watch_obj = NULL;
- lv_watch_get_child_obj(activity_obj, lv_watch_obj_signal, &watch_obj);
- if(NULL != watch_obj)
+ if(NULL != data)
{
- void * ext = lv_obj_get_ext_attr(watch_obj);
- return ext;
+ _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();
}
-
- return NULL;
}
-static void mmi_heng_ai_warning_screen_prepare_destory(lv_obj_t * activity_obj)
+uint8_t mmi_hengai_bp_is_calibrated(void)
{
- lv_watch_png_cache_all_free();
-
- Hal_Vibrator_Play_End();
-
- Hal_Tone_Play_End();
- Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_REMIND);
+ return (s_hengai_blood_pressure_data.is_calibrated);
+}
- printf("[@CHENG_DEBUG][%s][%d]: 0x%x\n", __FUNCTION__, __LINE__, s_heng_ai_warning_info.prompt_str);
- if(NULL != s_heng_ai_warning_info.prompt_str)
- {
- lv_mem_free(s_heng_ai_warning_info.prompt_str);
- s_heng_ai_warning_info.prompt_str = NULL;
- }
+#if 0
+uint8_t mmi_hengai_bp_is_activated(void)
+{
+ return (s_hengai_blood_pressure_data.is_activated);
+}
- lv_heng_ai_warning_obj_ext_t * ext = mmi_heng_ai_warning_screen_ext_get();
- if(ext)
- {
- if(NULL != ext->timer_id)
- {
- Hal_Timer_Stop(ext->timer_id);
- ext->timer_id = NULL;
- }
- }
+char * mmi_hengai_bp_req_code_get(void)
+{
+ return (s_hengai_blood_pressure_data.req_code);
+}
- watch_set_suspend_enable(true, ACT_ID_HENG_AI_WARNING, 0);
+void mmi_hengai_bp_req_code_set(char * req_code)
+{
+ _lv_memcpy(s_hengai_blood_pressure_data.req_code, req_code, strlen(req_code));
}
-void mmi_heng_ai_warning_screen_clean(void)
+char * mmi_hengai_bp_act_code_get(void)
{
- mmi_heng_ai_warning_screen_prepare_destory(NULL);
-
- lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_HENG_AI_WARNING);
- if(NULL != activity_obj)
- {
- printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
- lv_obj_del(activity_obj);
- }
+ return (s_hengai_blood_pressure_data.act_code);
}
-void mmi_heng_ai_warning_btn_event_cb(lv_obj_t * obj, lv_event_t e)
+void mmi_hengai_bp_act_code_set(char * act_code)
{
- if(LV_EVENT_CLICKED == e)
- {
- mmi_heng_ai_warning_screen_clean();
- }
+ _lv_memcpy(s_hengai_blood_pressure_data.act_code, act_code, strlen(act_code));
}
-static void mmi_heng_ai_warning_screen_timeout(void * para)
+void mmi_hengai_bp_activated_finish(void)
{
- mmi_heng_ai_warning_screen_clean();
+ s_hengai_blood_pressure_data.is_activated = 1;
+ mmi_hengai_blood_pressure_nv_write();
}
+#endif
+
+#if 0
static lv_obj_t * mmi_heng_ai_warning_screen_create(lv_obj_t * activity_obj)
{
printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
return obj;
}
-
-
-
lv_heart_rate_obj_ext_t * health_heart_rate_get_ext(void)
{
lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_HEALTH_MEASURE_HEART);
break;
}
}
+#endif
+
+
+static const lv_point_t s_hengai_bp_valid_pos[] = {{0, 0}, {1, 0}, {2, 0}};
+static uint8_t s_hengai_bp_measure_count = 0;
+static uint8_t s_hengai_bp_calibrate_times = 0;
+static uint16_t s_bp_value_high = 0, s_bp_value_low = 0;
+static uint8_t s_hengai_bp_measuring = 0;
+static char s_hengai_bp_begin_time_str[24] = {0}, s_hengai_bp_end_time_str[24] = {0};
+static int * s_hengai_bp_raw_data_ptr = NULL;
+static int s_hengai_bp_raw_data_len = 0;
+
+
+uint8_t mmi_hengai_bp_is_measuring(void)
+{
+ return (s_hengai_bp_measuring);
+}
+
+char * mmi_hengai_bp_measure_action_time_string_get(uint8_t is_begin)
+{
+ return ((1 == is_begin) ? s_hengai_bp_begin_time_str : s_hengai_bp_end_time_str);
+}
+
+void mmi_hengai_bp_measure_action_time_string_set(uint8_t is_begin)
+{
+ hal_rtc_t cur_time = {0};
+ char * temp_ptr = mmi_hengai_bp_measure_action_time_string_get(is_begin);
+
+ Hal_Rtc_Gettime(&cur_time);
+ sprintf(temp_ptr, "%04d-%02d-%02d %02d:%02d:%02d",
+ cur_time.tm_year,
+ cur_time.tm_mon,
+ cur_time.tm_mday,
+ cur_time.tm_hour,
+ cur_time.tm_min,
+ cur_time.tm_sec);
+}
+
+void mmi_hengai_bp_raw_data_fill(void)
+{
+ if(NULL != s_hengai_bp_raw_data_ptr)
+ {
+ lv_mem_free(s_hengai_bp_raw_data_ptr);
+ s_hengai_bp_raw_data_ptr = NULL;
+ }
+ s_hengai_bp_raw_data_ptr = (int *)lv_mem_alloc(MMI_HENGAI_BP_RAW_DATA_SAMPLE_RATE * MMI_BP_MEASURE_TOTAL_COUNT * sizeof(int));
+ _lv_memset_00(s_hengai_bp_raw_data_ptr, sizeof(s_hengai_bp_raw_data_ptr));
+
+ _lv_memcpy(s_hengai_bp_raw_data_ptr, fr8012haq_blood_data_get(&s_hengai_bp_raw_data_len), sizeof(s_hengai_bp_raw_data_ptr));
+
+ printf("[@CHENG_DEBUG][%s][%d]: raw_data_len=%d\n", __FUNCTION__, __LINE__, s_hengai_bp_raw_data_len);
+}
+
+int * mmi_hengai_bp_raw_data_ptr_get(void)
+{
+ return s_hengai_bp_raw_data_ptr;
+}
+
+int mmi_hengai_bp_raw_data_len_get(void)
+{
+ return s_hengai_bp_raw_data_len;
+}
+
+void mmi_hengai_bp_raw_data_free(void)
+{
+ if(NULL != s_hengai_bp_raw_data_ptr)
+ {
+ lv_mem_free(s_hengai_bp_raw_data_ptr);
+ s_hengai_bp_raw_data_ptr = NULL;
+ }
+}
+
+
+static lv_obj_t * mmi_bp_screen_common_bottom_button_create(lv_obj_t * par, uint32_t text_id, lv_event_cb_t event_cb)
+{
+ lv_obj_t * imgbtn = lv_imgbtn_create(par, NULL);
+ lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_RELEASED, ICON_HENGAI_BP_BOTTOM_BTN_BG);
+ lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_PRESSED, ICON_HENGAI_BP_BOTTOM_BTN_BG);
+ lv_obj_align(imgbtn, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, 0);
+ lv_obj_set_event_cb(imgbtn, event_cb);
+
+ lv_obj_t * btn_label = lv_label_create(imgbtn, NULL);
+ lv_obj_add_style(btn_label, LV_LABEL_PART_MAIN, &lv_watch_font32);
+ lv_label_set_align(btn_label, LV_LABEL_ALIGN_CENTER);
+ lv_label_set_text_id(btn_label, text_id);
+ lv_obj_align(btn_label, NULL, LV_ALIGN_CENTER, 0, 0);
+
+ return imgbtn;
+}
+
+static lv_obj_t * mmi_bp_screen_common_left_button_create(lv_obj_t * par, int16_t x_offset, int16_t y_offset,lv_event_cb_t event_cb)
+{
+ lv_obj_t * imgbtn = lv_imgbtn_create(par, NULL);
+ lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_RELEASED, ICON_HENGAI_BP_LEFT_ARROW);
+ lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_PRESSED, ICON_HENGAI_BP_LEFT_ARROW);
+ lv_obj_align(imgbtn, NULL, LV_ALIGN_IN_LEFT_MID, x_offset, y_offset);
+ lv_obj_set_event_cb(imgbtn, event_cb);
+
+ return imgbtn;
+}
+
+static lv_obj_t * mmi_bp_screen_common_right_button_create(lv_obj_t * par, int16_t x_offset, int16_t y_offset,lv_event_cb_t event_cb)
+{
+ lv_obj_t * imgbtn = lv_imgbtn_create(par, NULL);
+ lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_RELEASED, ICON_HENGAI_BP_RIGHT_ARROW);
+ lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_PRESSED, ICON_HENGAI_BP_RIGHT_ARROW);
+ lv_obj_align(imgbtn, NULL, LV_ALIGN_IN_RIGHT_MID, x_offset, y_offset);
+ lv_obj_set_event_cb(imgbtn, event_cb);
+ return imgbtn;
+}
-lv_heng_ai_bp_obj_ext_t * mmi_heng_ai_bp_ext_get(void)
+static lv_heng_ai_bp_ext_t * mmi_heng_ai_bp_ext_get(void)
{
lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_HENG_AI_BP);
if(activity_obj == NULL)
if(NULL == watch_obj)
return NULL;
- lv_heng_ai_bp_obj_ext_t * ext = NULL;
+ lv_heng_ai_bp_ext_t * ext = NULL;
ext = lv_obj_get_ext_attr(watch_obj);
return ext;
}
-static void mmi_heng_ai_blood_pressure_screen_prepare_destory(lv_obj_t * activity_obj)
+static void mmi_heng_ai_bp_screen_prepare_destory(lv_obj_t * activity_obj)
{
- HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
-
- mmi_hengai_http_tcp_disconnect_msg(NULL);
+ printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+ mmi_hengai_bp_raw_data_free();
- watch_set_suspend_enable(true, ACT_ID_HENG_AI_BP, 0);
+ //watch_set_suspend_enable(true, ACT_ID_HENG_AI_BP, 0);
lv_watch_png_cache_all_free();
- //lv_obj_t * watch_obj = NULL;
- //lv_watch_get_child_obj(act, lv_watch_obj_signal, &watch_obj);
- //lv_obj_t * cont = lv_obj_get_child(watch_obj, NULL);
-
- lv_heart_rate_obj_ext_t * ext = health_heart_rate_get_ext();
- if(NULL != ext)
- {
- if(NULL != ext->cycle_timer_id)
- {
- Hal_Timer_Stop(ext->cycle_timer_id);
- ext->cycle_timer_id = NULL;
- }
- if(NULL != ext->gif_info)
- {
- gif_close(ext->gif_info);
- ext->gif_info = NULL;
- }
- if(STATE_HEART_RATE_MEASURING == ext->measure_state)
- {
- mmi_health_measure_interrupt();
- }
+ mmi_heng_ai_bp_measure_screen_clean();
+ mmi_heng_ai_bp_calibrate_screen_clean();
- HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
- }
}
-void mmi_heng_ai_blood_pressure_screen_clean(void)
+void mmi_heng_ai_bp_screen_clean(void)
{
lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_HENG_AI_BP);
if(NULL != activity_obj)
{
printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
- mmi_heng_ai_blood_pressure_screen_prepare_destory(NULL);
+ mmi_heng_ai_bp_screen_prepare_destory(NULL);
lv_obj_del(activity_obj);
}
}
-
lv_obj_t * mmi_heng_ai_bp_tileview_add_tile(lv_obj_t * tileview, uint16_t id)
{
lv_tileview_ext_t * ext = lv_obj_get_ext_attr(tileview);
}
}
-void mmi_heng_ai_bp_measure_result_screen_event_cb(lv_obj_t * obj, lv_event_t e)
+void mmi_hengai_bp_measure_result_screen_event_cb(lv_obj_t * obj, lv_event_t e)
{
if(LV_EVENT_CLICKED != e)
return;
// 0-ok; 1-high; 2-low; 3-fail
-void mmi_heng_ai_bp_measure_result_screen(uint8_t result)
+void mmi_hengai_bp_measure_result_screen(uint8_t result)
{
+ mmi_hengai_bp_raw_data_free();
+
lv_heng_ai_bp_measure_ext_t * watch_ext = (lv_heng_ai_bp_measure_ext_t *)mmi_heng_ai_bp_measure_screen_ext_get();
if(NULL == watch_ext)
return;
gif_close(watch_ext->gif_info);
watch_ext->gif_info = NULL;
}
+ watch_ext->is_watting_result = false;
lv_obj_clean(watch_ext->cont);
- uint32_t label_title_text_id[] = {WATCH_TEXT_ID_CALIBRATE_SUCCESS,
+ uint32_t label_title_text_id[] = {WATCH_TEXT_ID_MEASURE_SUCCESS,
WATCH_TEXT_ID_BLOOD_PRESSURE_HIGH,
WATCH_TEXT_ID_BLOOD_PRESSURE_LOW,
- WATCH_TEXT_ID_CALIBRATE_FAILED};
+ WATCH_TEXT_ID_MEASURE_FAIL};
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_obj_t * img = lv_img_create(watch_ext->cont, NULL);
lv_img_set_src(img, ICON_HENGAI_BP_ALERT);
lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_MID, 0, 104);
-
+
lv_obj_t * label_prompt = lv_label_create(watch_ext->cont, NULL);
lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font28);
lv_label_set_align(label_prompt, LV_LABEL_ALIGN_CENTER);
lv_label_set_long_mode(label_prompt, LV_LABEL_LONG_BREAK);
lv_obj_set_width(label_prompt, 400);
- lv_label_set_text_id(label_prompt, label_prompt_text_id);
+ lv_label_set_text_id(label_prompt, WATCH_TEXT_ID_MEASURE_FAIL);
lv_obj_align(label_prompt, NULL, LV_ALIGN_IN_TOP_MID, 0, 292);
}
else
lv_obj_set_click(label_time, false);
}
- lv_obj_t * imgbtn = lv_imgbtn_create(watch_ext->cont, NULL);
- lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_RELEASED, ICON_HENGAI_BP_BOTTOM_BTN_BG);
- lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_PRESSED, ICON_HENGAI_BP_BOTTOM_BTN_BG);
- lv_obj_align(imgbtn, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, 0);
- lv_obj_set_event_cb(imgbtn, mmi_heng_ai_bp_measure_result_screen_event_cb);
+ mmi_bp_screen_common_bottom_button_create(watch_ext->cont, WATCH_TEXT_ID_OK, mmi_hengai_bp_measure_result_screen_event_cb);
+}
- lv_obj_t * btn_label = lv_label_create(imgbtn, NULL);
- lv_obj_add_style(btn_label, LV_LABEL_PART_MAIN, &lv_watch_font32);
- lv_label_set_align(btn_label, LV_LABEL_ALIGN_CENTER);
- lv_label_set_text_id(btn_label, WATCH_TEXT_ID_OK);
- lv_obj_align(btn_label, NULL, LV_ALIGN_CENTER, 0, 0);
+void mmi_hengai_bp_measure_result_timeout(void * para)
+{
+ mmi_hengai_bp_measure_result_screen(3);
}
-void mmi_heng_ai_bp_measure_result_timeout(void * para)
+void mmi_hengai_bp_measure_update_result(bool state, uint16_t bp_value_high, uint16_t bp_value_low, char * description)
{
lv_heng_ai_bp_measure_ext_t * watch_ext = (lv_heng_ai_bp_measure_ext_t *)mmi_heng_ai_bp_measure_screen_ext_get();
if(NULL == watch_ext)
return;
- if(NULL != watch_ext->result_timer_id)
+ if(true != watch_ext->is_watting_result)
+ return;
+
+ if(true == state)
{
- Hal_Timer_Stop(watch_ext->result_timer_id);
- watch_ext->result_timer_id = NULL;
+ s_bp_value_high = bp_value_high;
+ s_bp_value_low = bp_value_low;
+ if(NULL != description)
+ {
+
+ }
+
+ mmi_hengai_bp_measure_result_screen(0);
+ }
+ else
+ {
+ mmi_hengai_bp_measure_result_screen(3);
+ }
+}
+
+void mmi_hengai_bp_measure_finish_screen(void)
+{
+ mmi_hsensor_close();
+ mmi_hengai_bp_measure_action_time_string_set(0);
+
+ lv_heng_ai_bp_measure_ext_t * watch_ext = (lv_heng_ai_bp_measure_ext_t *)mmi_heng_ai_bp_measure_screen_ext_get();
+ if(NULL == watch_ext)
+ return;
+
+ if(NULL != watch_ext->measure_timer_id)
+ {
+ Hal_Timer_Stop(watch_ext->measure_timer_id);
+ watch_ext->measure_timer_id = NULL;
}
if(NULL != watch_ext->gif_info)
{
gif_close(watch_ext->gif_info);
watch_ext->gif_info = NULL;
}
+ watch_ext->is_watting_result = true;
+ lv_obj_clean(watch_ext->cont);
+
+#if 1
+ gif_info_t * gif_info = gif_open(watch_ext->cont, ANIM_HENGAI_BP_WAITTING, 0);
+ if(NULL == gif_info)
+ return;
+ lv_obj_set_style_local_bg_color(gif_info->container, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
+ lv_obj_align(gif_info->container, NULL, LV_ALIGN_CENTER, 0, 0);
+ watch_ext->gif_info = gif_info;
- mmi_heng_ai_bp_measure_result_screen(3);
+ lv_obj_t * label_prompt = lv_label_create(gif_info->container, NULL);
+ lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font28);
+ lv_label_set_align(label_prompt, LV_LABEL_ALIGN_CENTER);
+ //lv_label_set_long_mode(label_prompt, LV_LABEL_LONG_BREAK);
+ //lv_obj_set_width(label_prompt, 400);
+ lv_label_set_text_id(label_prompt, WATCH_TEXT_ID_WAIT_RESULT);
+ lv_obj_align(label_prompt, NULL, LV_ALIGN_CENTER, 0, 0);
+#else
+
+ lv_obj_t * label_prompt = lv_label_create(watch_ext->cont, NULL);
+ lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font28);
+ lv_label_set_align(label_prompt, LV_LABEL_ALIGN_CENTER);
+ //lv_label_set_long_mode(label_prompt, LV_LABEL_LONG_BREAK);
+ //lv_obj_set_width(label_prompt, 400);
+ lv_label_set_text_id(label_prompt, WATCH_TEXT_ID_WAIT_RESULT);
+ lv_obj_align(label_prompt, NULL, LV_ALIGN_IN_TOP_MID, 0, 292);
+#endif
+
+ watch_ext->result_timer_id = Hal_Timer_Start(MMI_BP_WAIT_RESULT_TIMEOUT, mmi_hengai_bp_measure_result_timeout, NULL, false);
}
-void mmi_heng_ai_bp_measure_cycle_timeout(void * para)
+void mmi_hengai_bp_measure_cycle_timeout(void * para)
{
s_hengai_bp_measure_count++;
- mmi_heng_ai_bp_raw_data_save();
-
- if(0 == (s_hengai_bp_measure_count % MMI_BP_MEASURE_SEND_DATA_COUNT)) // send raw data per 10s
+ if(MMI_BP_MEASURE_TOTAL_COUNT < s_hengai_bp_measure_count) // stop action when 60s
{
- mmi_heng_ai_bp_raw_data_send();
+ mmi_hengai_bp_raw_data_fill();
+ mmi_hengai_bp_measure_raw_data_send();
+ mmi_hengai_bp_measure_finish_screen();
}
-
- if(MMI_BP_MEASURE_TOTAL_COUNT == s_hengai_bp_measure_count) // stop action when 60s
+ else
{
- // close sensor
- mmi_close_sensor();
-
lv_heng_ai_bp_measure_ext_t * watch_ext = (lv_heng_ai_bp_measure_ext_t *)mmi_heng_ai_bp_measure_screen_ext_get();
if(NULL == watch_ext)
return;
- if(NULL != watch_ext->measure_timer_id)
- {
- Hal_Timer_Stop(watch_ext->measure_timer_id);
- watch_ext->measure_timer_id = NULL;
- }
- watch_ext->result_timer_id = Hal_Timer_Start(MMI_BP_WAIT_RESULT_TIMEOUT, mmi_heng_ai_bp_measure_result_timeout, NULL, false);
+ lv_label_set_align(watch_ext->label_time, LV_LABEL_ALIGN_CENTER);
+ char time_str[16] = {0};
+ sprintf(time_str, "%02d:%02d/%02d:%02d", s_hengai_bp_measure_count / 60,
+ s_hengai_bp_measure_count % 60,
+ MMI_BP_MEASURE_TOTAL_COUNT / 60,
+ MMI_BP_MEASURE_TOTAL_COUNT % 60);
+ lv_label_set_text(watch_ext->label_time, time_str);
+ lv_obj_align(watch_ext->label_time, NULL, LV_ALIGN_IN_TOP_MID, 0, 292);
}
}
-void mmi_heng_ai_bp_measure_start_btn_event_cb(lv_obj_t * obj, lv_event_t e)
+void mmi_hengai_bp_measure_start_btn_event_cb(lv_obj_t * obj, lv_event_t e)
{
if(LV_EVENT_CLICKED != e)
return;
+ printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
lv_heng_ai_bp_measure_ext_t * watch_ext = (lv_heng_ai_bp_measure_ext_t *)mmi_heng_ai_bp_measure_screen_ext_get();
if(NULL == watch_ext)
return;
- if(NULL == watch_ext->tileview)
- return;
-
- lv_obj_t * watch_obj = lv_obj_get_parent(watch_ext->tileview);
- lv_obj_del(watch_ext->tileview);
- lv_watch_obj_set_anim_mode(watch_obj, LV_WATCH_ANIM_HOR_RIGHT_HIDE);
-
- lv_obj_t * cont = lv_cont_create(watch_obj, NULL);
- lv_obj_set_size(cont, LV_HOR_RES, LV_VER_RES);
- lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
- lv_obj_set_click(cont, false);
- watch_ext->cont = cont;
+ lv_obj_set_hidden(watch_ext->cont, false);
+ lv_obj_set_hidden(watch_ext->cont_prompt_0, true);
+ lv_obj_set_hidden(watch_ext->cont_prompt_1, true);
+ lv_obj_t * cont = watch_ext->cont;
if(false == mmi_health_measure_wear_state_get())
{
+ printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
lv_obj_t * img = lv_img_create(cont, NULL);
lv_img_set_src(img, ICON_HENGAI_BP_ALERT);
lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_MID, 0, 90);
}
else
{
- mmi_open_sensor();
+ 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);
if(NULL == gif_info)
return;
+ lv_obj_set_style_local_bg_color(gif_info->container, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
lv_obj_align(gif_info->container, NULL, LV_ALIGN_IN_TOP_MID, 0, 104);
watch_ext->gif_info = gif_info;
+ lv_obj_t * label_time = lv_label_create(cont, NULL);
+ lv_obj_add_style(label_time, LV_LABEL_PART_MAIN, &lv_watch_font36);
+ lv_label_set_align(label_time, LV_LABEL_ALIGN_CENTER);
+ char time_str[16] = {0};
+ sprintf(time_str, "%02d:%02d/%02d:%02d", s_hengai_bp_measure_count / 60,
+ s_hengai_bp_measure_count % 60,
+ MMI_BP_MEASURE_TOTAL_COUNT / 60,
+ MMI_BP_MEASURE_TOTAL_COUNT % 60);
+ lv_label_set_text(label_time, time_str);
+ lv_obj_align(label_time, NULL, LV_ALIGN_IN_TOP_MID, 0, 292);
+ lv_obj_set_click(label_time, false);
+ watch_ext->label_time = label_time;
+
lv_obj_t * label = lv_label_create(cont, NULL);
lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font28);
lv_label_set_align(label, LV_LABEL_ALIGN_CENTER);
lv_label_set_text_id(label, WATCH_TEXT_ID_IN_MEASURE_PROMPT);
- lv_obj_align(label, NULL, LV_ALIGN_IN_TOP_MID, 0, 292);
+ lv_obj_align(label, NULL, LV_ALIGN_IN_TOP_MID, 0, 324 + 30);
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_heng_ai_bp_measure_cycle_timeout, NULL, true);
+ watch_ext->measure_timer_id = Hal_Timer_Start(1000, mmi_hengai_bp_measure_cycle_timeout, NULL, true);
}
}
-lv_obj_t * mmi_heng_ai_bp_measure_tab_0(lv_obj_t * tileview, uint16_t id)
+void mmi_hengai_bp_measure_prompt_switch_event_cb(lv_obj_t * obj, lv_event_t e)
{
- lv_obj_t * tab = mmi_heng_ai_bp_tileview_add_tile(tileview, id);
- if(NULL == tab)
- return NULL;
+ if(LV_EVENT_CLICKED != e)
+ return;
+
+ printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+ lv_heng_ai_bp_measure_ext_t * watch_ext = (lv_heng_ai_bp_measure_ext_t *)mmi_heng_ai_bp_measure_screen_ext_get();
+ if(NULL == watch_ext)
+ return;
- lv_obj_t * label_title = lv_label_create(tab, NULL);
+ lv_obj_set_hidden(watch_ext->cont, true);
+ uint8_t free_num = lv_watch_get_free_num(obj);
+ if(0 == free_num)
+ {
+ lv_obj_set_hidden(watch_ext->cont_prompt_0, true);
+ lv_obj_set_hidden(watch_ext->cont_prompt_1, false);
+ }
+ else
+ {
+ lv_obj_set_hidden(watch_ext->cont_prompt_0, false);
+ lv_obj_set_hidden(watch_ext->cont_prompt_1, true);
+ }
+}
+
+void mmi_hengai_bp_measure_prompt_0(lv_obj_t * cont)
+{
+ lv_obj_t * label_title = lv_label_create(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_MEASURE_PROMPT);
lv_obj_align(label_title, NULL, LV_ALIGN_IN_TOP_MID, 0, 48);
lv_obj_set_click(label_title, false);
- lv_obj_t * img = lv_img_create(tab, NULL);
+ lv_obj_t * img = lv_img_create(cont, NULL);
lv_img_set_src(img, ICON_HENGAI_BP_PROMPT_0);
lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_MID, 0, 104);
- lv_obj_t * label_prompt = lv_label_create(tab, NULL);
+ lv_obj_t * label_prompt = lv_label_create(cont, NULL);
lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font28);
lv_label_set_align(label_prompt, LV_LABEL_ALIGN_CENTER);
lv_label_set_long_mode(label_prompt, LV_LABEL_LONG_BREAK);
lv_label_set_text_id(label_prompt, WATCH_TEXT_ID_CALIBRATE_PROMPT_0);
lv_obj_align(label_prompt, NULL, LV_ALIGN_IN_TOP_MID, 0, 292);
- return tab;
+ lv_obj_t * imgbtn = mmi_bp_screen_common_right_button_create(cont, 0, 0, mmi_hengai_bp_measure_prompt_switch_event_cb);
+ lv_watch_set_free_num(imgbtn, 0);
+
+ mmi_bp_screen_common_bottom_button_create(cont, WATCH_TEXT_ID_START_MEASURE, mmi_hengai_bp_measure_start_btn_event_cb);
}
-lv_obj_t * mmi_heng_ai_bp_measure_tab_1(lv_obj_t * tileview, uint16_t id)
-{
- lv_obj_t * tab = mmi_heng_ai_bp_tileview_add_tile(tileview, id);
- if(NULL == tab)
- return NULL;
-
- lv_obj_t * label_title = lv_label_create(tab, NULL);
+void mmi_hengai_bp_measure_prompt_1(lv_obj_t * cont)
+{
+ lv_obj_t * label_title = lv_label_create(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_MEASURE_PROMPT);
lv_obj_align(label_title, NULL, LV_ALIGN_IN_TOP_MID, 0, 48);
lv_obj_set_click(label_title, false);
- lv_obj_t * img = lv_img_create(tab, NULL);
+ lv_obj_t * img = lv_img_create(cont, NULL);
lv_img_set_src(img, ICON_HENGAI_BP_PROMPT_1);
lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_MID, 0, 104);
- lv_obj_t * label_prompt = lv_label_create(tab, NULL);
+ lv_obj_t * label_prompt = lv_label_create(cont, NULL);
lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font28);
lv_label_set_align(label_prompt, LV_LABEL_ALIGN_CENTER);
lv_label_set_long_mode(label_prompt, LV_LABEL_LONG_BREAK);
lv_label_set_text_id(label_prompt, WATCH_TEXT_ID_CALIBRATE_PROMPT_1);
lv_obj_align(label_prompt, NULL, LV_ALIGN_IN_TOP_MID, 0, 292);
- lv_obj_t * imgbtn = lv_imgbtn_create(tab, NULL);
- lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_RELEASED, ICON_HENGAI_BP_BOTTOM_BTN_BG);
- lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_PRESSED, ICON_HENGAI_BP_BOTTOM_BTN_BG);
- lv_obj_align(imgbtn, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, 0);
- lv_obj_set_event_cb(imgbtn, mmi_heng_ai_bp_measure_start_btn_event_cb);
-
- lv_obj_t * btn_label = lv_label_create(imgbtn, NULL);
- lv_obj_add_style(btn_label, LV_LABEL_PART_MAIN, &lv_watch_font32);
- lv_label_set_align(btn_label, LV_LABEL_ALIGN_CENTER);
- lv_label_set_text_id(btn_label, WATCH_TEXT_ID_START_MEASURE);
- lv_obj_align(btn_label, NULL, LV_ALIGN_CENTER, 0, 0);
+ lv_obj_t * imgbtn = mmi_bp_screen_common_left_button_create(cont, 0, 0, mmi_hengai_bp_measure_prompt_switch_event_cb);
+ lv_watch_set_free_num(imgbtn, 1);
- return tab;
+ mmi_bp_screen_common_bottom_button_create(cont, WATCH_TEXT_ID_START_MEASURE, mmi_hengai_bp_measure_start_btn_event_cb);
}
-void mmi_heng_ai_bp_measure_screen_tileview_led(lv_obj_t * tileview)
+lv_obj_t * mmi_heng_ai_bp_measure_screen_create(lv_obj_t * activity_obj)
{
- lv_heng_ai_bp_tileview_ext_t * ext = lv_obj_get_ext_attr(tileview);
- if(NULL == ext)
- return NULL;
-
- if(NULL == ext->led_cont)
+ if(NULL == activity_obj)
{
- ext->led_cont = lv_cont_create(tileview, NULL);
- lv_obj_set_base_dir(ext->led_cont, LV_BIDI_DIR_LTR);
- lv_cont_set_fit(ext->led_cont, LV_FIT_TIGHT);
- lv_cont_set_layout(ext->led_cont, LV_LAYOUT_ROW_MID);
- lv_obj_add_style(ext->led_cont, LV_CONT_PART_MAIN, &lv_watch_style_transp);
- lv_obj_set_click(ext->led_cont, false);
- }
-
- uint8_t i = 0;
- for(i = 0; i < 2; i++)
- {
- if(NULL == ext->led[i])
- {
- ext->led[i] = lv_led_create(ext->led_cont, NULL);
- }
-
- lv_led_off(ext->led[i]);
- lv_obj_set_size(ext->led[i], 6, 6);
- }
-
- lv_coord_t x = -1, y = -1;
- lv_tileview_get_tile_act(tileview, &x, &y);
- lv_led_on(ext->led[x]);
- lv_obj_set_size(ext->led[x], 10, 10);
- lv_obj_set_pos(ext->led_cont, LV_HOR_RES * x + (LV_HOR_RES - lv_obj_get_width(ext->led_cont)) / 2, 100);
-}
-
-void mmi_heng_ai_bp_measure_screen_tileview_event_cb(lv_obj_t * tileview, lv_event_t e)
-{
- if(LV_EVENT_VALUE_CHANGED != e)
- return;
-
- mmi_heng_ai_bp_measure_screen_tileview_led(tileview);
-}
-
-lv_obj_t * mmi_heng_ai_bp_measure_screen_create(lv_obj_t * activity_obj)
-{
- if(NULL == activity_obj)
- {
- lv_watch_activity_ext_t activity_ext = {0};
+ lv_watch_activity_ext_t activity_ext = {0};
activity_ext.actId = ACT_ID_HENG_AI_BP_MEASURE;
activity_ext.create = mmi_heng_ai_bp_measure_screen_create;
LV_ASSERT_MEM(watch_obj);
if(NULL == watch_obj)
return NULL;
- lv_watch_obj_set_anim_mode(watch_obj, LV_WATCH_ANIM_NO);
+ lv_watch_obj_set_anim_mode(watch_obj, LV_WATCH_ANIM_HOR_RIGHT_HIDE);
lv_heng_ai_bp_measure_ext_t * watch_ext = lv_obj_allocate_ext_attr(watch_obj, sizeof(lv_heng_ai_bp_measure_ext_t));
- if(NULL == ext)
+ if(NULL == watch_ext)
return NULL;
- watch_ext->tileview = NULL;
watch_ext->cont = NULL;
+ watch_ext->cont_prompt_0 = NULL;
+ watch_ext->cont_prompt_1 = NULL;
watch_ext->gif_info = NULL;
watch_ext->measure_timer_id = NULL;
watch_ext->result_timer_id = NULL;
-
- lv_obj_t * tileview = lv_tileview_create(watch_obj, NULL);
- if(NULL == tileview)
- return NULL;
- lv_heng_ai_bp_tileview_ext_t * ext = lv_obj_allocate_ext_attr(tileview, sizeof(lv_heng_ai_bp_tileview_ext_t));
- if(NULL == ext)
- return NULL;
-
- watch_ext->tileview = tileview;
- ext->tab_0 = NULL;
- ext->tab_1 = NULL;
- ext->tab_2 = NULL;
- ext->led_cont= NULL;
- ext->led[0] = NULL;
- ext->led[1] = NULL;
- ext->led[2] = NULL;
-
- lv_tileview_set_valid_positions(tileview, s_hengai_bp_valid_pos, 2);
- lv_tileview_set_edge_flash(tileview, true);
- lv_tileview_set_anim_time(tileview, 60);
- lv_page_set_scrollbar_mode(tileview, LV_SCROLLBAR_MODE_OFF);
- lv_obj_add_style(tileview, LV_TILEVIEW_PART_EDGE_FLASH, &lv_watch_cont_opa1);
- ext->tileview = tileview;
-
- ext->tab_0 = mmi_heng_ai_bp_measure_tab_0(tileview, 0);
- LV_ASSERT_MEM(ext->tab_0);
- if(NULL == ext->tab_0)
- return NULL;
- ext->tab_1 = mmi_heng_ai_bp_measure_tab_1(tileview, 1);
- LV_ASSERT_MEM(ext->tab_1);
- if(NULL == ext->tab_1)
- return NULL;
+ lv_obj_t * cont = NULL;
+ cont = lv_cont_create(watch_obj, 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);
+ watch_ext->cont = cont;
- lv_tileview_set_tile_act(tileview, 0, 0, LV_ANIM_OFF);
- lv_watch_obj_add_element(tileview);
- lv_watch_obj_add_element(lv_page_get_scrl(tileview));
- lv_obj_set_event_cb(tileview, mmi_heng_ai_bp_measure_screen_tileview_event_cb);
+ cont = lv_cont_create(watch_obj, NULL);
+ lv_obj_set_size(cont, LV_HOR_RES, LV_VER_RES);
+ lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
+ lv_obj_set_click(cont, false);
+ watch_ext->cont_prompt_0 = cont;
+ mmi_hengai_bp_measure_prompt_0(cont);
+
+ cont = lv_cont_create(watch_obj, NULL);
+ lv_obj_set_size(cont, LV_HOR_RES, LV_VER_RES);
+ lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
+ lv_obj_set_click(cont, false);
+ watch_ext->cont_prompt_1 = cont;
+ mmi_hengai_bp_measure_prompt_1(cont);
- mmi_heng_ai_bp_measure_screen_tileview_led(tileview);
+ lv_obj_set_hidden(watch_ext->cont, true);
+ lv_obj_set_hidden(watch_ext->cont_prompt_0, false);
+ lv_obj_set_hidden(watch_ext->cont_prompt_1, true);
//
watch_set_suspend_enable(false, ACT_ID_HENG_AI_BP_MEASURE, 0);
lv_obj_t * btn_label = lv_label_create(imgbtn, NULL);
lv_obj_add_style(btn_label, LV_LABEL_PART_MAIN, &lv_watch_font32);
lv_label_set_align(btn_label, LV_LABEL_ALIGN_CENTER);
- lv_label_set_text_id(btn_label, WATCH_TEXT_ID_START_MEASURE);
+ lv_label_set_text_id(btn_label, WATCH_TEXT_ID_MEASURE_PROMPT);
lv_obj_align(btn_label, NULL, LV_ALIGN_CENTER, 0, 0);
return tab;
}
}
+void mmi_heng_ai_bp_calibrate_result_event_cb(lv_obj_t * obj, lv_event_t e)
+{
+ if(LV_EVENT_CLICKED != e)
+ return;
+
+ mmi_heng_ai_bp_calibrate_screen_clean();
+}
+
+void mmi_hengai_bp_calibrate_result_screen(bool result)
+{
+ mmi_hengai_bp_raw_data_free();
+
+ 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;
+
+ // clean
+ if(NULL != watch_ext->measure_timer_id)
+ {
+ Hal_Timer_Stop(watch_ext->measure_timer_id);
+ watch_ext->measure_timer_id = NULL;
+ }
+ if(NULL != watch_ext->result_timer_id)
+ {
+ Hal_Timer_Stop(watch_ext->result_timer_id);
+ watch_ext->result_timer_id = NULL;
+ }
+ if(NULL != watch_ext->gif_info)
+ {
+ gif_close(watch_ext->gif_info);
+ watch_ext->gif_info = NULL;
+ }
+ watch_ext->is_watting_result = false;
+ lv_obj_clean(watch_ext->cont);
+
+ // display
+ uint32_t label_title_text_id[] = {WATCH_TEXT_ID_CALIBRATE_SUCCESS, WATCH_TEXT_ID_CALIBRATE_FAILED};
+ void * img_src_path[] = {ICON_HENGAI_BP_SUCCESS, ICON_HENGAI_BP_ALERT};
+ uint32_t label_prompt_text_id[] = {WATCH_TEXT_ID_BLOOD_PRESSURE_NORMAL_PROMPT, WATCH_TEXT_ID_BLOOD_PRESSURE_FAILED_PROMPT};
+
+ 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, label_title_text_id[(result ? 0 : 1)]);
+ lv_obj_align(label_title, NULL, LV_ALIGN_IN_TOP_MID, 0, 48);
+ lv_obj_set_click(label_title, false);
+
+ lv_obj_t * img = lv_img_create(watch_ext->cont, NULL);
+ lv_img_set_src(img, img_src_path[(result ? 0 : 1)]);
+ lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_MID, 0, 104);
+
+ lv_obj_t * label_prompt = lv_label_create(watch_ext->cont, NULL);
+ lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font28);
+ lv_label_set_align(label_prompt, LV_LABEL_ALIGN_CENTER);
+ lv_label_set_long_mode(label_prompt, LV_LABEL_LONG_BREAK);
+ lv_obj_set_width(label_prompt, 400);
+ lv_label_set_text_id(label_prompt, label_prompt_text_id[(result ? 0 : 1)]);
+ lv_obj_align(label_prompt, NULL, LV_ALIGN_IN_TOP_MID, 0, 292);
+
+ mmi_bp_screen_common_bottom_button_create(watch_ext->cont, WATCH_TEXT_ID_OK, mmi_heng_ai_bp_calibrate_result_event_cb);
+}
+
+void mmi_hengai_bp_calibrate_result_timeout(void * para)
+{
+ mmi_hengai_bp_calibrate_result_screen(false);
+}
+
+void mmi_hengai_bp_calibrate_update_result(bool is_success)
+{
+ 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;
+
+ if(true != watch_ext->is_watting_result)
+ return;
+
+ if(is_success)
+ {
+ nv_watch_heng_ai_blood_pressure_t data = {0};
+
+ data.is_calibrated = 1;
+ mmi_hengai_blood_pressure_data_set(&data);
+ }
+ mmi_hengai_bp_calibrate_result_screen(is_success);
+}
+
+void mmi_hengai_bp_calibrate_finish_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;
+
+ lv_obj_clean(watch_ext->cont);
+ watch_ext->is_watting_result = true;
+
+#if 1
+ gif_info_t * gif_info = gif_open(watch_ext->cont, ANIM_HENGAI_BP_WAITTING, 0);
+ if(NULL == gif_info)
+ return;
+ lv_obj_set_style_local_bg_color(gif_info->container, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
+ lv_obj_align(gif_info->container, NULL, LV_ALIGN_CENTER, 0, 0);
+ watch_ext->gif_info = gif_info;
+
+ lv_obj_t * label_prompt = lv_label_create(gif_info->container, NULL);
+ lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font28);
+ lv_label_set_align(label_prompt, LV_LABEL_ALIGN_CENTER);
+ //lv_label_set_long_mode(label_prompt, LV_LABEL_LONG_BREAK);
+ //lv_obj_set_width(label_prompt, 400);
+ lv_label_set_text_id(label_prompt, WATCH_TEXT_ID_WAIT_RESULT);
+ lv_obj_align(label_prompt, NULL, LV_ALIGN_CENTER, 0, 0);
+#else
+ lv_obj_t * label_prompt = lv_label_create(watch_ext->cont, NULL);
+ lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font28);
+ lv_label_set_align(label_prompt, LV_LABEL_ALIGN_CENTER);
+ //lv_label_set_long_mode(label_prompt, LV_LABEL_LONG_BREAK);
+ //lv_obj_set_width(label_prompt, 400);
+ lv_label_set_text_id(label_prompt, WATCH_TEXT_ID_WAIT_RESULT);
+ lv_obj_align(label_prompt, NULL, LV_ALIGN_IN_TOP_MID, 0, 292);
+#endif
+
+ watch_ext->result_timer_id = Hal_Timer_Start(MMI_BP_WAIT_RESULT_TIMEOUT, mmi_hengai_bp_calibrate_result_timeout, NULL, false);
+}
+
+void mmi_hengai_bp_calibrate_end_input_event_cb(lv_obj_t * obj, lv_event_t e)
+{
+ if(LV_EVENT_CLICKED != e)
+ return;
+
+ // send vaule
+ mmi_hengai_bp_calibrate_raw_data_send(s_hengai_bp_calibrate_times, s_bp_value_high, s_bp_value_low);
+
+ if(1 == s_hengai_bp_calibrate_times)
+ {
+ // once again
+ mmi_heng_ai_bp_calibrate_start_screen();
+ }
+ else
+ {
+ mmi_hengai_bp_calibrate_finish_screen();
+ }
+}
+
void mmi_bp_roller_get_optstr_from_num(uint16_t sel_value, char * stropt, uint32_t user_num)
{
-/*
uint8_t opt_display[5];
uint8_t i, pos = 0;
uint8_t min = 0;
if(0 == user_num) // high
{
- min = 80
+ min = 80;
max = 200;
count = 121;
}
stropt[pos++] = 0x0A;
}
stropt [pos - 1] = 0;
-*/
}
void mmi_bp_roller_action(lv_obj_t * roller, lv_event_t event)
uint32_t user_num = lv_watch_get_free_num(roller);
uint16_t sel_value = 0;
char sel_str[4] = {0};
- char stropt[40] = {0};
+ char stropt[16] = {0};
lv_roller_get_selected_str(roller, sel_str, 4);
sel_value = atoi(sel_str);
//lv_obj_align(roller_cont, NULL, LV_ALIGN_IN_TOP_LEFT, 90, 140);
lv_obj_t * roller = lv_roller_create(roller_cont, NULL);
- lv_obj_add_style(roller, LV_ROLLER_PART_BG, &lv_watch_font36_gray);
- lv_obj_set_style_local_text_line_space(roller, LV_ROLLER_PART_BG, LV_STATE_DEFAULT, 20);
+ lv_obj_add_style(roller, LV_ROLLER_PART_BG, &lv_watch_font28_gray); //&lv_watch_font36_gray);
+ lv_obj_set_style_local_text_line_space(roller, LV_ROLLER_PART_BG, LV_STATE_DEFAULT, 28); //36);
lv_obj_set_style_local_bg_opa(roller, LV_ROLLER_PART_BG, LV_STATE_DEFAULT, LV_OPA_TRANSP);
lv_obj_add_style(roller, LV_ROLLER_PART_SELECTED, &lv_watch_font60);
- lv_obj_set_style_local_text_line_space(roller, LV_ROLLER_PART_SELECTED, LV_STATE_DEFAULT, 20);
+ lv_obj_set_style_local_text_line_space(roller, LV_ROLLER_PART_SELECTED, LV_STATE_DEFAULT, 60);
lv_obj_set_style_local_bg_opa(roller, LV_ROLLER_PART_SELECTED, LV_STATE_DEFAULT, LV_OPA_TRANSP);
-
- uint16_t sel_value = 0;
- char stropt[40] = {0};
+ uint16_t sel_value = 90;
+ char stropt[16] = {0};
mmi_bp_roller_get_optstr_from_num(sel_value, stropt, user_num);
return roller_cont;
}
-// 0-ok; 1-high; 2-low; 3-fail
-void mmi_heng_ai_bp_calibrate_result_screen(uint8_t result)
-{
- 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;
-
- // clean
- if(NULL != watch_ext->measure_timer_id)
- {
- Hal_Timer_Stop(watch_ext->measure_timer_id);
- watch_ext->measure_timer_id = NULL;
- }
- if(NULL != watch_ext->result_timer_id)
- {
- Hal_Timer_Stop(watch_ext->result_timer_id);
- watch_ext->result_timer_id = NULL;
- }
- if(NULL != watch_ext->gif_info)
- {
- gif_close(watch_ext->gif_info);
- watch_ext->gif_info = NULL;
- }
- lv_obj_clean(watch_ext->cont);
-
- // display
- uint32_t label_title_text_id[] = {WATCH_TEXT_ID_CALIBRATE_SUCCESS,
- WATCH_TEXT_ID_BLOOD_PRESSURE_HIGH,
- WATCH_TEXT_ID_BLOOD_PRESSURE_LOW,
- WATCH_TEXT_ID_CALIBRATE_FAILED};
- void * img_src_path[] = {ICON_HENGAI_BP_SUCCESS, ICON_HENGAI_BP_ALERT, ICON_HENGAI_BP_ALERT, ICON_HENGAI_BP_ALERT};
- uint32_t label_prompt_text_id[] = {WATCH_TEXT_ID_BLOOD_PRESSURE_NORMAL_PROMPT,
- WATCH_TEXT_ID_BLOOD_PRESSURE_HIGH_PROMPT,
- WATCH_TEXT_ID_BLOOD_PRESSURE_LOW_PROMPT,
- WATCH_TEXT_ID_BLOOD_PRESSURE_FAILED_PROMPT};
-
- 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, label_title_text_id[result]);
- lv_obj_align(label_title, NULL, LV_ALIGN_IN_TOP_MID, 0, 48);
- lv_obj_set_click(label_title, false);
-
- lv_obj_t * img = lv_img_create(watch_ext->cont, NULL);
- lv_img_set_src(img, img_src_path[result]);
- lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_MID, 0, 104);
-
- lv_obj_t * label_prompt = lv_label_create(watch_ext->cont, NULL);
- lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font28);
- lv_label_set_align(label_prompt, LV_LABEL_ALIGN_CENTER);
- lv_label_set_long_mode(label_prompt, LV_LABEL_LONG_BREAK);
- lv_obj_set_width(label_prompt, 400);
- lv_label_set_text_id(label_prompt, label_prompt_text_id[result]);
- lv_obj_align(label_prompt, NULL, LV_ALIGN_IN_TOP_MID, 0, 292);
-}
-
-void mmi_heng_ai_bp_calibrate_result_timeout(void * para)
-{
- 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;
-
- if(NULL != watch_ext->result_timer_id)
- {
- Hal_Timer_Stop(watch_ext->result_timer_id);
- watch_ext->result_timer_id = NULL;
- }
-
- mmi_heng_ai_bp_calibrate_result_screen(3);
-}
-
-void mmi_heng_ai_bp_calibrate_end_btn_event_cb(lv_obj_t * obj, lv_event_t e)
-{
- if(LV_EVENT_CLICKED != e)
- return;
-
- // send vaule
- mmi_heng_ai_bp_calibrate_input_value_send();
-
- if(1 == s_hengai_bp_calibrate_times)
- {
- // once again
- mmi_heng_ai_bp_calibrate_start_screen();
- }
- else
- {
- // finish
- 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;
-
- watch_ext->result_timer_id = Hal_Timer_Start(MMI_BP_WAIT_RESULT_TIMEOUT, mmi_heng_ai_bp_calibrate_result_timeout, NULL, false);
- }
-}
-
-void mmi_heng_ai_bp_calibrate_end_screen(void)
-{
- mmi_close_sensor();
-
+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;
- Hal_Timer_Stop(watch_ext->measure_timer_id);
- watch_ext->measure_timer_id = NULL;
- gif_close(watch_ext->gif_info);
- watch_ext->gif_info = NULL;
lv_obj_clean(watch_ext->cont);
lv_obj_t * label_title = lv_label_create(watch_ext->cont, NULL);
lv_obj_set_click(label_0, false);
lv_obj_t * roller_cont_0 = mmi_bp_roller_create(watch_ext->cont, 0);
- lv_obj_align(roller_cont_0, NULL, LV_ALIGN_IN_TOP_LEFT, 90, 140);
+ lv_obj_align(roller_cont_0, NULL, LV_ALIGN_IN_TOP_LEFT, 96, 140);
lv_obj_t * label_1 = lv_label_create(watch_ext->cont, NULL);
lv_obj_add_style(label_1, LV_LABEL_PART_MAIN, &lv_watch_font24);
lv_obj_set_click(label_1, false);
lv_obj_t * roller_cont_1 = mmi_bp_roller_create(watch_ext->cont, 1);
- lv_obj_align(roller_cont_1, NULL, LV_ALIGN_IN_TOP_LEFT, 270, 140);
+ lv_obj_align(roller_cont_1, NULL, LV_ALIGN_IN_TOP_LEFT, 276, 140);
- lv_obj_t * imgbtn = lv_imgbtn_create(watch_ext->cont, NULL);
- lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_RELEASED, ICON_HENGAI_BP_BOTTOM_BTN_BG);
- lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_PRESSED, ICON_HENGAI_BP_BOTTOM_BTN_BG);
- lv_obj_align(imgbtn, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, 0);
- lv_obj_set_event_cb(imgbtn, mmi_heng_ai_bp_calibrate_end_btn_event_cb);
+ s_bp_value_high = 0;
+ s_bp_value_low = 0;
+ mmi_bp_screen_common_bottom_button_create(watch_ext->cont, WATCH_TEXT_ID_OK, mmi_hengai_bp_calibrate_end_input_event_cb);
+}
- lv_obj_t * btn_label = lv_label_create(imgbtn, NULL);
- lv_obj_add_style(btn_label, LV_LABEL_PART_MAIN, &lv_watch_font32);
- lv_label_set_align(btn_label, LV_LABEL_ALIGN_CENTER);
- lv_label_set_text_id(btn_label, WATCH_TEXT_ID_OK);
- lv_obj_align(btn_label, NULL, LV_ALIGN_CENTER, 0, 0);
+void mmi_hengai_bp_calibrate_end_btn_event_cb(lv_obj_t * obj, lv_event_t e)
+{
+ if(LV_EVENT_CLICKED != e)
+ return;
+
+ mmi_hengai_bp_calibrate_input_screen();
}
-void mmi_heng_ai_bp_calibrate_cycle_timeout(void * para)
+void mmi_hengai_bp_calibrate_end_screen(void)
{
- mmi_heng_ai_bp_raw_data_save();
+ mmi_hsensor_close();
+ mmi_hengai_bp_measure_action_time_string_set(0);
- s_hengai_bp_measure_count++;
+ 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;
- if(0 == (s_hengai_bp_measure_count % MMI_BP_MEASURE_SEND_DATA_COUNT)) // send raw data per 10s
+ if(NULL != watch_ext->measure_timer_id)
{
- mmi_heng_ai_bp_raw_data_send();
+ Hal_Timer_Stop(watch_ext->measure_timer_id);
+ watch_ext->measure_timer_id = NULL;
}
-
- if(MMI_BP_MEASURE_TOTAL_COUNT <= s_hengai_bp_measure_count) // stop action when 60s
+ if(NULL != watch_ext->gif_info)
+ {
+ gif_close(watch_ext->gif_info);
+ watch_ext->gif_info = NULL;
+ }
+ 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_CALIBRATE_PROMPT);
+ lv_obj_align(label_title, NULL, LV_ALIGN_IN_TOP_MID, 0, 48);
+ lv_obj_set_click(label_title, false);
+
+ lv_obj_t * label_prompt = lv_label_create(watch_ext->cont, NULL);
+ lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font28);
+ lv_label_set_align(label_prompt, LV_LABEL_ALIGN_CENTER);
+ lv_label_set_long_mode(label_prompt, LV_LABEL_LONG_BREAK);
+ lv_obj_set_width(label_prompt, 360); // 400);
+ lv_label_set_text_id(label_prompt, WATCH_TEXT_ID_CALIBRATE_PROMPT_3);
+ lv_obj_align(label_prompt, NULL, LV_ALIGN_IN_TOP_MID, 0, 200); // 104);
+
+ mmi_bp_screen_common_bottom_button_create(watch_ext->cont, WATCH_TEXT_ID_OK, mmi_hengai_bp_calibrate_end_btn_event_cb);
+}
+
+void mmi_hengai_bp_calibrate_cycle_timeout(void * para)
+{
+ s_hengai_bp_measure_count++;
+
+ if(MMI_BP_MEASURE_TOTAL_COUNT < s_hengai_bp_measure_count) // stop action when 60s
{
s_hengai_bp_calibrate_times++;
- mmi_heng_ai_bp_calibrate_end_screen();
+ mmi_hengai_bp_raw_data_fill();
+ mmi_hengai_bp_calibrate_end_screen();
}
}
}
else
{
- mmi_open_sensor();
+ mmi_hsensor_bp_open();
+ mmi_hengai_bp_measure_action_time_string_set(1);
+ 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_CALIBRATING);
+ lv_obj_align(label_title, NULL, LV_ALIGN_IN_TOP_MID, 0, 48);
+ lv_obj_set_click(label_title, false);
+
gif_info_t * gif_info = gif_open(watch_ext->cont, ANIM_HENGAI_BP_CALIBRATE, 0);
if(NULL == gif_info)
return;
+ lv_obj_set_style_local_bg_color(gif_info->container, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
lv_obj_align(gif_info->container, NULL, LV_ALIGN_IN_TOP_MID, 0, 104);
watch_ext->gif_info = gif_info;
lv_obj_align(label, NULL, LV_ALIGN_IN_TOP_MID, 0, 292);
lv_obj_set_click(label, false);
+ label = lv_label_create(watch_ext->cont, NULL);
+ lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font28);
+ lv_label_set_align(label, LV_LABEL_ALIGN_CENTER);
+ lv_label_set_text_id(label, WATCH_TEXT_ID_NEED_ONE_MINUTE);
+ lv_obj_align(label, NULL, LV_ALIGN_IN_TOP_MID, 0, 348);
+ 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_heng_ai_bp_calibrate_cycle_timeout, NULL, true);
+ watch_ext->measure_timer_id = Hal_Timer_Start(1000, mmi_hengai_bp_calibrate_cycle_timeout, NULL, true);
}
}
-void mmi_heng_ai_bp_calibrate_start_btn_event_cb(lv_obj_t * obj, lv_event_t e)
+void mmi_hengai_bp_calibrate_start_btn_event_cb(lv_obj_t * obj, lv_event_t e)
{
if(LV_EVENT_CLICKED != e)
return;
if(NULL == watch_ext)
return;
- if(NULL == watch_ext->tileview)
- return;
-
- lv_obj_t * watch_obj = lv_obj_get_parent(watch_ext->tileview);
- lv_obj_del(watch_ext->tileview);
- lv_watch_obj_set_anim_mode(watch_obj, LV_WATCH_ANIM_HOR_RIGHT_HIDE);
-
- lv_obj_t * cont = lv_cont_create(watch_obj, NULL);
- lv_obj_set_size(cont, LV_HOR_RES, LV_VER_RES);
- lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
- lv_obj_set_click(cont, false);
- watch_ext->cont = cont;
+ lv_obj_set_hidden(watch_ext->cont, false);
+ lv_obj_set_hidden(watch_ext->cont_prompt_0, true);
+ lv_obj_set_hidden(watch_ext->cont_prompt_1, true);
+ lv_obj_set_hidden(watch_ext->cont_prompt_2, true);
+ //lv_obj_del(watch_ext->cont_prompt_0);
+ //lv_obj_del(watch_ext->cont_prompt_1);
+ //lv_obj_del(watch_ext->cont_prompt_2);
mmi_heng_ai_bp_calibrate_start_screen();
}
-lv_obj_t * mmi_heng_ai_bp_calibrate_tab_0(lv_obj_t * tileview, uint16_t id)
+void mmi_hengai_bp_calibrate_prompt_switch_event_cb(lv_obj_t * obj, lv_event_t e)
{
- lv_obj_t * tab = mmi_heng_ai_bp_tileview_add_tile(tileview, id);
- if(NULL == tab)
- return NULL;
+ if(LV_EVENT_CLICKED != e)
+ return;
+
+ printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+ 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_title = lv_label_create(tab, NULL);
+ lv_obj_set_hidden(watch_ext->cont, true);
+ uint8_t free_num = lv_watch_get_free_num(obj);
+ if((0 == free_num) || (3 == free_num))
+ {
+ lv_obj_set_hidden(watch_ext->cont_prompt_0, true);
+ lv_obj_set_hidden(watch_ext->cont_prompt_1, false);
+ lv_obj_set_hidden(watch_ext->cont_prompt_2, true);
+ }
+ else if(1 == free_num)
+ {
+ lv_obj_set_hidden(watch_ext->cont_prompt_0, false);
+ lv_obj_set_hidden(watch_ext->cont_prompt_1, true);
+ lv_obj_set_hidden(watch_ext->cont_prompt_2, true);
+ }
+ else if(2 == free_num)
+ {
+ lv_obj_set_hidden(watch_ext->cont_prompt_0, true);
+ lv_obj_set_hidden(watch_ext->cont_prompt_1, true);
+ lv_obj_set_hidden(watch_ext->cont_prompt_2, false);
+ }
+}
+
+void mmi_hengai_bp_calibrate_prompt_0(lv_obj_t * cont)
+{
+ lv_obj_t * label_title = lv_label_create(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_CALIBRATE_PROMPT);
lv_obj_align(label_title, NULL, LV_ALIGN_IN_TOP_MID, 0, 48);
lv_obj_set_click(label_title, false);
- lv_obj_t * img = lv_img_create(tab, NULL);
+ lv_obj_t * img = lv_img_create(cont, NULL);
lv_img_set_src(img, ICON_HENGAI_BP_PROMPT_0);
lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_MID, 0, 104);
- lv_obj_t * label_prompt = lv_label_create(tab, NULL);
+ lv_obj_t * label_prompt = lv_label_create(cont, NULL);
lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font28);
lv_label_set_align(label_prompt, LV_LABEL_ALIGN_CENTER);
lv_label_set_long_mode(label_prompt, LV_LABEL_LONG_BREAK);
lv_label_set_text_id(label_prompt, WATCH_TEXT_ID_CALIBRATE_PROMPT_0);
lv_obj_align(label_prompt, NULL, LV_ALIGN_IN_TOP_MID, 0, 292);
- return tab;
+ lv_obj_t * imgbtn = mmi_bp_screen_common_right_button_create(cont, 0, 0, mmi_hengai_bp_calibrate_prompt_switch_event_cb);
+ lv_watch_set_free_num(imgbtn, 0);
+
+ mmi_bp_screen_common_bottom_button_create(cont, WATCH_TEXT_ID_START_CALIBRATE, mmi_hengai_bp_calibrate_start_btn_event_cb);
}
-lv_obj_t * mmi_heng_ai_bp_calibrate_tab_1(lv_obj_t * tileview, uint16_t id)
-{
- lv_obj_t * tab = mmi_heng_ai_bp_tileview_add_tile(tileview, id);
- if(NULL == tab)
- return NULL;
-
- lv_obj_t * label_title = lv_label_create(tab, NULL);
+void mmi_hengai_bp_calibrate_prompt_1(lv_obj_t * cont)
+{
+ lv_obj_t * label_title = lv_label_create(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_CALIBRATE_PROMPT);
lv_obj_align(label_title, NULL, LV_ALIGN_IN_TOP_MID, 0, 48);
lv_obj_set_click(label_title, false);
- lv_obj_t * img = lv_img_create(tab, NULL);
+ lv_obj_t * img = lv_img_create(cont, NULL);
lv_img_set_src(img, ICON_HENGAI_BP_PROMPT_1);
lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_MID, 0, 104);
- lv_obj_t * label_prompt = lv_label_create(tab, NULL);
+ lv_obj_t * label_prompt = lv_label_create(cont, NULL);
lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font28);
lv_label_set_align(label_prompt, LV_LABEL_ALIGN_CENTER);
lv_label_set_long_mode(label_prompt, LV_LABEL_LONG_BREAK);
lv_label_set_text_id(label_prompt, WATCH_TEXT_ID_CALIBRATE_PROMPT_1);
lv_obj_align(label_prompt, NULL, LV_ALIGN_IN_TOP_MID, 0, 292);
- return tab;
+ lv_obj_t * imgbtn = NULL;
+ imgbtn = mmi_bp_screen_common_left_button_create(cont, 0, 0, mmi_hengai_bp_calibrate_prompt_switch_event_cb);
+ lv_watch_set_free_num(imgbtn, 1);
+
+ imgbtn = mmi_bp_screen_common_right_button_create(cont, 0, 0, mmi_hengai_bp_calibrate_prompt_switch_event_cb);
+ lv_watch_set_free_num(imgbtn, 2);
+
+ mmi_bp_screen_common_bottom_button_create(cont, WATCH_TEXT_ID_START_CALIBRATE, mmi_hengai_bp_calibrate_start_btn_event_cb);
}
-lv_obj_t * mmi_heng_ai_bp_calibrate_tab_2(lv_obj_t * tileview, uint16_t id)
-{
- lv_obj_t * tab = mmi_heng_ai_bp_tileview_add_tile(tileview, id);
- if(NULL == tab)
- return NULL;
-
- lv_obj_t * label_title = lv_label_create(tab, NULL);
+void mmi_hengai_bp_calibrate_prompt_2(lv_obj_t * cont)
+{
+ lv_obj_t * label_title = lv_label_create(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_CALIBRATE_PROMPT);
lv_obj_align(label_title, NULL, LV_ALIGN_IN_TOP_MID, 0, 48);
lv_obj_set_click(label_title, false);
- lv_obj_t * label_prompt = lv_label_create(tab, NULL);
+ lv_obj_t * label_prompt = lv_label_create(cont, NULL);
lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font28);
lv_label_set_align(label_prompt, LV_LABEL_ALIGN_CENTER);
lv_label_set_long_mode(label_prompt, LV_LABEL_LONG_BREAK);
lv_label_set_text_id(label_prompt, WATCH_TEXT_ID_CALIBRATE_PROMPT_2);
lv_obj_align(label_prompt, NULL, LV_ALIGN_IN_TOP_MID, 0, 104);
- lv_obj_t * imgbtn = lv_imgbtn_create(tab, NULL);
- lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_RELEASED, ICON_HENGAI_BP_BOTTOM_BTN_BG);
- lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_PRESSED, ICON_HENGAI_BP_BOTTOM_BTN_BG);
- lv_obj_align(imgbtn, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, 0);
- lv_obj_set_event_cb(imgbtn, mmi_heng_ai_bp_calibrate_start_btn_event_cb);
-
- lv_obj_t * btn_label = lv_label_create(imgbtn, NULL);
- lv_obj_add_style(btn_label, LV_LABEL_PART_MAIN, &lv_watch_font32);
- lv_label_set_align(btn_label, LV_LABEL_ALIGN_CENTER);
- lv_label_set_text_id(btn_label, WATCH_TEXT_ID_START_CALIBRATE);
- lv_obj_align(btn_label, NULL, LV_ALIGN_CENTER, 0, 0);
-
- return tab;
-}
-
-void mmi_heng_ai_bp_calibrate_screen_tileview_led(lv_obj_t * tileview)
-{
- lv_heng_ai_bp_tileview_ext_t * ext = lv_obj_get_ext_attr(tileview);
- if(NULL == ext)
- return NULL;
-
- if(NULL == ext->led_cont)
- {
- ext->led_cont = lv_cont_create(tileview, NULL);
- lv_obj_set_base_dir(ext->led_cont, LV_BIDI_DIR_LTR);
- lv_cont_set_fit(ext->led_cont, LV_FIT_TIGHT);
- lv_cont_set_layout(ext->led_cont, LV_LAYOUT_ROW_MID);
- lv_obj_add_style(ext->led_cont, LV_CONT_PART_MAIN, &lv_watch_style_transp);
- lv_obj_set_click(ext->led_cont, false);
- }
-
- uint8_t i = 0;
- for(i = 0; i < MMI_HENGAI_BP_TAB_COUNT; i++)
- {
- if(NULL == ext->led[i])
- {
- ext->led[i] = lv_led_create(ext->led_cont, NULL);
- }
-
- lv_led_off(ext->led[i]);
- lv_obj_set_size(ext->led[i], 6, 6);
- }
-
- lv_coord_t x = -1, y = -1;
- lv_tileview_get_tile_act(tileview, &x, &y);
- lv_led_on(ext->led[x]);
- lv_obj_set_size(ext->led[x], 10, 10);
- lv_obj_set_pos(ext->led_cont, LV_HOR_RES * x + (LV_HOR_RES - lv_obj_get_width(ext->led_cont)) / 2, 100);
-}
-
-void mmi_heng_ai_bp_calibrate_screen_tileview_event_cb(lv_obj_t * tileview, lv_event_t e)
-{
- if(LV_EVENT_VALUE_CHANGED != e)
- return;
-
- mmi_heng_ai_bp_calibrate_screen_tileview_led(tileview);
+ lv_obj_t * imgbtn = mmi_bp_screen_common_left_button_create(cont, 0, 0, mmi_hengai_bp_calibrate_prompt_switch_event_cb);
+ lv_watch_set_free_num(imgbtn, 3);
+
+ mmi_bp_screen_common_bottom_button_create(cont, WATCH_TEXT_ID_START_CALIBRATE, mmi_hengai_bp_calibrate_start_btn_event_cb);
}
lv_obj_t * mmi_heng_ai_bp_calibrate_screen_create(lv_obj_t * activity_obj)
LV_ASSERT_MEM(watch_obj);
if(NULL == watch_obj)
return NULL;
- lv_watch_obj_set_anim_mode(watch_obj, LV_WATCH_ANIM_NO);
+ lv_watch_obj_set_anim_mode(watch_obj, LV_WATCH_ANIM_HOR_RIGHT_HIDE);
lv_heng_ai_bp_calibrate_ext_t * watch_ext = lv_obj_allocate_ext_attr(watch_obj, sizeof(lv_heng_ai_bp_calibrate_ext_t));
- if(NULL == ext)
+ if(NULL == watch_ext)
return NULL;
- watch_ext->tileview = NULL;
watch_ext->cont = NULL;
+ watch_ext->cont_prompt_0 = NULL;
+ watch_ext->cont_prompt_1 = NULL;
+ watch_ext->cont_prompt_2 = NULL;
watch_ext->gif_info = NULL;
watch_ext->measure_timer_id = NULL;
watch_ext->result_timer_id = NULL;
- lv_obj_t * tileview = lv_tileview_create(watch_obj, NULL);
- if(NULL == tileview)
- return NULL;
- lv_heng_ai_bp_tileview_ext_t * ext = lv_obj_allocate_ext_attr(tileview, sizeof(lv_heng_ai_bp_tileview_ext_t));
- if(NULL == ext)
- return NULL;
+ lv_obj_t * cont = NULL;
+ cont = lv_cont_create(watch_obj, 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);
+ watch_ext->cont = cont;
- watch_ext->tileview = tileview;
- ext->tab_0 = NULL;
- ext->tab_1 = NULL;
- ext->tab_2 = NULL;
- ext->led_cont= NULL;
- ext->led[0] = NULL;
- ext->led[1] = NULL;
- ext->led[2] = NULL;
+ cont = lv_cont_create(watch_obj, NULL);
+ lv_obj_set_size(cont, LV_HOR_RES, LV_VER_RES);
+ lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
+ lv_obj_set_click(cont, false);
+ watch_ext->cont_prompt_0 = cont;
+ mmi_hengai_bp_calibrate_prompt_0(cont);
- lv_tileview_set_valid_positions(tileview, s_hengai_bp_valid_pos, MMI_HENGAI_BP_TAB_COUNT);
- lv_tileview_set_edge_flash(tileview, true);
- lv_tileview_set_anim_time(tileview, 60);
- lv_page_set_scrollbar_mode(tileview, LV_SCROLLBAR_MODE_OFF);
- lv_obj_add_style(tileview, LV_TILEVIEW_PART_EDGE_FLASH, &lv_watch_cont_opa1);
- ext->tileview = tileview;
-
- ext->tab_0 = mmi_heng_ai_bp_calibrate_tab_0(tileview, 0);
- LV_ASSERT_MEM(ext->tab_0);
- if(NULL == ext->tab_0)
- return NULL;
-
- ext->tab_1 = mmi_heng_ai_bp_calibrate_tab_1(tileview, 1);
- LV_ASSERT_MEM(ext->tab_1);
- if(NULL == ext->tab_1)
- return NULL;
-
- ext->tab_2 = mmi_heng_ai_bp_calibrate_tab_2(tileview, 2);
- LV_ASSERT_MEM(ext->tab_2);
- if(NULL == ext->tab_2)
- return NULL;
+ cont = lv_cont_create(watch_obj, NULL);
+ lv_obj_set_size(cont, LV_HOR_RES, LV_VER_RES);
+ lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
+ lv_obj_set_click(cont, false);
+ watch_ext->cont_prompt_1 = cont;
+ mmi_hengai_bp_calibrate_prompt_1(cont);
- lv_tileview_set_tile_act(tileview, 0, 0, LV_ANIM_OFF);
- lv_watch_obj_add_element(tileview);
- lv_watch_obj_add_element(lv_page_get_scrl(tileview));
- lv_obj_set_event_cb(tileview, mmi_heng_ai_bp_calibrate_screen_tileview_event_cb);
+ cont = lv_cont_create(watch_obj, NULL);
+ lv_obj_set_size(cont, LV_HOR_RES, LV_VER_RES);
+ lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
+ lv_obj_set_click(cont, false);
+ watch_ext->cont_prompt_2 = cont;
+ mmi_hengai_bp_calibrate_prompt_2(cont);
- mmi_heng_ai_bp_calibrate_screen_tileview_led(tileview);
+ lv_obj_set_hidden(watch_ext->cont, true);
+ lv_obj_set_hidden(watch_ext->cont_prompt_0, false);
+ lv_obj_set_hidden(watch_ext->cont_prompt_1, true);
+ lv_obj_set_hidden(watch_ext->cont_prompt_2, true);
//
watch_set_suspend_enable(false, ACT_ID_HENG_AI_BP_CALIBRATE, 0);
}
+//
void mmi_heng_ai_bp_attempt_mode_btn_event_cb(lv_obj_t * obj, lv_event_t e)
{
if(LV_EVENT_CLICKED != e)
lv_obj_t * btn_label = lv_label_create(imgbtn, NULL);
lv_obj_add_style(btn_label, LV_LABEL_PART_MAIN, &lv_watch_font32);
lv_label_set_align(btn_label, LV_LABEL_ALIGN_CENTER);
- lv_label_set_text_id(btn_label, WATCH_TEXT_ID_START_MEASURE);
+ lv_label_set_text_id(btn_label, WATCH_TEXT_ID_MEASURE_PROMPT);
lv_obj_align(btn_label, NULL, LV_ALIGN_CENTER, 0, 0);
return tab;
void mmi_heng_ai_bp_tileview_led(lv_obj_t * tileview)
{
- lv_heng_ai_bp_obj_ext_t * ext = mmi_heng_ai_bp_ext_get();
+#if 0
+ lv_heng_ai_bp_ext_t * ext = mmi_heng_ai_bp_ext_get();
if(NULL == ext)
return NULL;
lv_obj_set_pos(ext->led_cont, LV_HOR_RES * x + (LV_HOR_RES - lv_obj_get_width(ext->led_cont)) / 2,
LV_VER_RES - lv_obj_get_width(ext->led_cont) - 10);
+#endif
}
void mmi_heng_ai_bp_tileview_event_cb(lv_obj_t * tileview, lv_event_t e)
if(LV_EVENT_VALUE_CHANGED != e)
return;
- mmi_heng_ai_bp_tileview_led(tileview);
+ //mmi_heng_ai_bp_tileview_led(tileview);
}
-lv_obj_t * mmi_heng_ai_blood_pressure_screen_create(lv_obj_t * activity_obj)
+lv_obj_t * mmi_heng_ai_bp_screen_create(lv_obj_t * activity_obj)
{
if(NULL == activity_obj)
{
lv_watch_activity_ext_t activity_ext = {0};
activity_ext.actId = ACT_ID_HENG_AI_BP;
- activity_ext.create = mmi_heng_ai_blood_pressure_screen_create;
- activity_ext.prepare_destory = mmi_heng_ai_blood_pressure_screen_prepare_destory;
+ activity_ext.create = mmi_heng_ai_bp_screen_create;
+ activity_ext.prepare_destory = mmi_heng_ai_bp_screen_prepare_destory;
activity_obj = lv_watch_creat_activity_obj(&activity_ext);
LV_ASSERT_MEM(activity_obj);
if(NULL == watch_obj)
return NULL;
+#if 0
if(false == watch_modem_sim_present_check_req())
{
lv_watch_obj_set_anim_mode(watch_obj, LV_WATCH_ANIM_HOR_RIGHT_HIDE);
lv_obj_set_click(label_1, false);
}
else
+#endif
{
lv_watch_obj_set_anim_mode(watch_obj, LV_WATCH_ANIM_NO);
- lv_heng_ai_bp_obj_ext_t * ext = lv_obj_allocate_ext_attr(watch_obj, sizeof(lv_heng_ai_bp_obj_ext_t));
+ lv_heng_ai_bp_ext_t * ext = lv_obj_allocate_ext_attr(watch_obj, sizeof(lv_heng_ai_bp_ext_t));
if(NULL == ext)
return NULL;
if(NULL == ext->tab_attempt_mode)
return NULL;
- if(1 == s_hengai_bp_calibrated)
+ if(1 == mmi_hengai_bp_is_calibrated())
lv_tileview_set_tile_act(tileview, 1, 0, LV_ANIM_OFF);
else
lv_tileview_set_tile_act(tileview, 0, 0, LV_ANIM_OFF);
lv_watch_obj_add_element(tileview);
lv_watch_obj_add_element(lv_page_get_scrl(tileview));
- lv_obj_set_event_cb(tileview, mmi_heng_ai_bp_tileview_event_cb);
+ //lv_obj_set_event_cb(tileview, mmi_heng_ai_bp_tileview_event_cb);
- mmi_heng_ai_bp_tileview_led(tileview);
+ //mmi_heng_ai_bp_tileview_led(tileview);
}
return watch_obj;
}
-/*
-{
- lv_obj_t * img = lv_img_create(cont, NULL);
- lv_img_set_src(img, ICON_HEART_RATE_MEASURE_FAIL);
- lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_MID, 0, HEART_MEASURE_IMAGE_Y);
- lv_obj_set_hidden(img, true);
- ext->img = img;
-
- lv_obj_t * label_info = lv_label_create(cont, NULL);
- //lv_obj_set_size(label_info, LV_HOR_RES, 30);
- lv_obj_add_style(label_info, LV_LABEL_PART_MAIN, &lv_watch_font20);
- lv_label_set_text_id(label_info, WATCH_TEXT_ID_MEASURING);
- //lv_label_set_align(label_info, LV_LABEL_ALIGN_CENTER);
- lv_obj_align(label_info, cont, LV_ALIGN_IN_TOP_MID, 0, HEART_LABEL_INFO_Y);
- lv_obj_set_click(label_info, false);
- ext->label_info = label_info;
-
- lv_obj_t * label_value = lv_label_create(cont, NULL);
- //lv_obj_set_size(label_value, LV_HOR_RES, 40);
- lv_obj_add_style(label_value, LV_LABEL_PART_MAIN, &lv_watch_font40);
- lv_label_set_text(label_value, ext->heart_rate);
- //lv_label_set_align(label_value, LV_LABEL_ALIGN_CENTER);
- lv_obj_align(label_value, cont, LV_ALIGN_IN_TOP_MID, 0, HEART_LABEL_VALUE_Y);
- lv_obj_set_click(label_value, false);
- ext->label_value = label_value;
- if(false == mmi_health_measure_wear_state_get())
- {
- ext->measure_state = STATE_HEART_RATE_MEASURE_FAIL;
- }
- else
- {
- mmi_health_measure_ui_measure_start(MMI_HEALTH_MEASURE_HEART);
+void mmi_heng_ai_blood_pressure_create_event_cb(lv_obj_t * btn, lv_event_t e)
+{
+ if(LV_EVENT_CLICKED == e)
+ {
+ lv_obj_t * obj = mmi_heng_ai_bp_screen_create(NULL);
+ LV_ASSERT_MEM(obj);
+ }
+}
- lv_obj_t * gif_cont = lv_cont_create(cont, NULL);
- lv_obj_set_size(gif_cont, LV_HOR_RES, 100);
- lv_obj_set_style_local_bg_color(gif_cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
- lv_obj_align(gif_cont, cont, LV_ALIGN_IN_TOP_MID, 0, HEART_MEASURE_IMAGE_Y);
- ext->gif_cont = gif_cont;
- ext->gif_info = gif_open(gif_cont, ANIM_HEART_RATE_MEASURING, 0);
- if(!ext->gif_info)
- {
- HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: gif open fail\n", __FUNCTION__, __LINE__);
- }
-
- ext->cycle_timer_id = Hal_Timer_Start(HEALTH_HEART_MEASURE_CYCLE, health_heart_rate_measure_cycle_timeout, NULL, TRUE);
+
+
+
+static void * __s_debug_timer_id = NULL;
+//TIMER_ID measure_timer_id;
+
+void __debug_timer_start(void);
+
+void __debug_timer_cb(void * param)
+{
+ char temp_buff[128] = {0};
- ext->measure_state = STATE_HEART_RATE_MEASURING;
- watch_set_suspend_enable(false, ACT_ID_HENG_AI_BP, 0);
- }
+ //»ñÈ¡48×Ö½ÚaslccÂëµÄÊ®Áù½øÖÆÑªÑ¹Êý¾Ýµ½blood_buf£¬×¢Òâ:blood_buf³¤¶ÈÒª´óÓÚµÈÓÚ48*2×Ö½Ú
+ //void fr8012haq_blood_data_get(char *blood_buf)
+ fr8012haq_blood_data_get(temp_buff);
- health_heart_rate_display_update();
+ printf("[@CHENG_DEBUG][%s][%d]: %s\n", __FUNCTION__, __LINE__, temp_buff);
+ printf("[@CHENG_DEBUG][%d]: %s\n", __LINE__, temp_buff + 31);
+ printf("[@CHENG_DEBUG][%d]: %s\n", __LINE__, temp_buff + 63);
- return watch_obj;
+ __debug_timer_start();
}
-*/
-void mmi_heng_ai_blood_pressure_create_event_cb(lv_obj_t * btn, lv_event_t e)
+void __debug_timer_start(void)
{
- (void)btn;
- if(LV_EVENT_CLICKED == e)
+ if(NULL == __s_debug_timer_id)
+ uos_timer_create(&__s_debug_timer_id);
+ else
+ uos_timer_stop(__s_debug_timer_id);
+
+ uos_timer_start(__s_debug_timer_id, MS_TO_TICKS(1000), 0, __debug_timer_cb, NULL);
+}
+
+void __debug_stop(void)
+{
+ mmi_hsensor_close();
+
+ if(NULL != __s_debug_timer_id)
{
- mmi_hengai_http_tcp_connect_msg(NULL);
-
- lv_obj_t * obj = mmi_heng_ai_blood_pressure_screen_create(NULL);
- LV_ASSERT_MEM(obj);
- }
+ uos_timer_stop(__s_debug_timer_id);
+ uos_timer_delete(__s_debug_timer_id);
+ __s_debug_timer_id = NULL;
+ }
+}
+
+void __debug_start(void)
+{
+ mmi_hsensor_bp_open();
+
+ __debug_timer_start();
}
#endif
#include "lv_watch.h"
-#ifdef __MMI_CUSTOM_HENG_AI__
+#ifdef __MMI_CUSTOM_HENG_AI_BLOOD_PRESSURE__
-#define MMI_HENGAI_HTTP_R_TASK_PRIORITY 221
-#define MMI_HENGAI_HTTP_S_TASK_PRIORITY 221
-#define MMI_HENGAI_HTTP_R_TASK_STACK_SIZE (8 * 1024)
-#define MMI_HENGAI_HTTP_S_TASK_STACK_SIZE (4 * 1024)
-
-static TASK_HANDLE * s_hengai_http_r_task_id = NULL;
-static TASK_HANDLE * s_hengai_http_s_task_id = NULL;
+#include "hal/dm/cJSON.h"
+#include "hal/dm/libhttpclient.h"
-static mmi_hengai_http_tcp_info_t s_hengai_http_tcp_info = {0};
+static struct http_client * s_hengai_http_client = NULL;
+static struct http_client_list * s_hengai_http_client_list_header = NULL;
+static uint8_t s_hengai_http_post_try_count = 0;
+static char * s_hengai_http_revceive_buf = NULL;
-void mmi_hengai_http_r_task_msg_send(MMI_HENGAI_HTTP_TCP_MSG_ID_E msg_id, void * param)
-{
- printf("[@CHENG_DEBUG][%s][%d]: msg_id=%d\n",__FUNCTION__,__LINE__, msg_id);
-
- if(NULL != s_hengai_http_r_task_id)
- {
- if((64 - 1) < Hal_Get_Message_Count(s_hengai_http_r_task_id))
- {
- printf("[@CHENG_DEBUG][%s][%d]: msg queue full\n",__FUNCTION__,__LINE__);
- return;
- }
-
- printf("[@CHENG_DEBUG][%s][%d]: \n",__FUNCTION__,__LINE__);
-
- mmi_hengai_http_task_msg_t * msg = Hal_Mem_Alloc(sizeof(mmi_hengai_http_task_msg_t));
- msg->cmd_type = msg_id;
- msg->cmd_param = param;
-
- Hal_Send_Message((TASK_ID)s_hengai_http_r_task_id, (void *)msg);
- }
-}
+static char * response_data = NULL;
+static int response_len = 0;
-void mmi_hengai_http_tcp_connect_msg(void * param)
+/*
+data: the data is received http context data
+len: the length of http context data
+num: the http response header "Content-Length" value
+cbdata: user private data
+*/
+static void response_cb(char * data, int len, int num, void *cbdata)
{
- mmi_hengai_http_r_task_msg_send(MMI_HENGAI_HTTP_TCP_MSG_CONNECT, param);
-}
+ char * temp;
-void mmi_hengai_http_tcp_reconnect_msg(void * param)
-{
- mmi_hengai_http_r_task_msg_send(MMI_HENGAI_HTTP_TCP_MSG_RECONNECT, param);
-}
+ printf("[@CHENG_DEBUG][%s][%d]: data_len=%d\n", __FUNCTION__, __LINE__, len);
-void mmi_hengai_http_tcp_disconnect_msg(void * param)
-{
- mmi_hengai_http_r_task_msg_send(MMI_HENGAI_HTTP_TCP_MSG_DISCONNECT, param);
-}
+ temp = (void*)malloc(response_len + len);
+ if (!temp) {
+ printf("Malloc failed...\n");
+ return;
+ }
+ memset(temp, 0, response_len + len);
+ if (response_data) {
+ memcpy(temp, response_data, response_len);
+ free(response_data);
+ }
+ memcpy(&temp[response_len], data, len);
+ response_data = temp;
+ response_len += len;
-void mmi_hengai_http_tcp_read_msg(void * param)
-{
- mmi_hengai_http_r_task_msg_send(MMI_HENGAI_HTTP_TCP_MSG_READ, param);
+ printf("[@CHENG_DEBUG][%s][%d]: response_len=%d\n", __FUNCTION__, __LINE__, response_len);
}
-static void mmi_hengai_http_socket_callback(int sfd, int event, unsigned int len)
+void mmi_hengai_http_post_resource_free(void)
{
- printf("[@CHENG_DEBUG][%s][%d]: sfd=%d, event=0x%x, len=%d\n",__FUNCTION__, __LINE__, sfd, event, len);
-
- switch (event)
+ if(NULL != s_hengai_http_client_list_header)
{
- case NETCONN_EVT_CONNECTED:
- printf("[@CHENG_DEBUG][%s][%d]: socket connected\n",__FUNCTION__,__LINE__);
- break;
-
- case NETCONN_EVT_CLOSE_NORMAL:
- printf("[@CHENG_DEBUG][%s][%d]: socket close normal\n",__FUNCTION__,__LINE__);
- break;
-
- case NETCONN_EVT_RCVPLUS:
- printf("[@CHENG_DEBUG][%s][%d]: socket rcv plus\n",__FUNCTION__,__LINE__);
- ValSetDataTransFlag(1);
- if(len > 0)
- {
- mmi_hengai_http_socket_fd_t * data_info = (mmi_hengai_http_socket_fd_t *)Hal_Mem_Alloc(sizeof(mmi_hengai_http_socket_fd_t));
- data_info->socket_fd = sfd;
- data_info->len = len;
- mmi_hengai_http_tcp_read_msg(data_info);
- }
- break;
-
- case NETCONN_EVT_RCVMINUS:
- printf("dt rcv minus event\n");
- break;
-
- case NETCONN_EVT_SENDPLUS:
- ValSetDataTransFlag(1);
- printf("[@CHENG_DEBUG][%s][%d]: socket send plus\n",__FUNCTION__,__LINE__);
- break;
-
- case NETCONN_EVT_SENDACKED:
- printf("[@CHENG_DEBUG][%s][%d]: socket send ack\n",__FUNCTION__,__LINE__);
- break;
-
- case NETCONN_EVT_ERROR_RST:
- case NETCONN_EVT_ERROR_ABRT:
- case NETCONN_EVT_CLOSE_WAIT:
- ValSetDataTransFlag(1);
- printf("dt socket error or close event = %02x\n",event);
- //printf("LH reconnect\n");
- //if(Hal_Get_Message_Count((TASK_ID)modem_tcp_task_id) < UOS_TCP_TASK_MSG_QSIZE)
- //{
- // send_task_msg_tcp_reconnect(NULL);
- //}
- break;
-
- default:
- printf("dt other event\n");
- break;
+ http_client_list_destroy(s_hengai_http_client_list_header);
+ s_hengai_http_client_list_header = NULL;
}
-}
-
-void mmi_hengai_http_tcp_connect(void * param)
-{
- int res = -1;
- if(FALSE == watch_modem_sim_present_check_req())
+
+ if(NULL != s_hengai_http_client)
{
- printf("[@CHENG_DEBUG][%s][%d]: \n",__FUNCTION__,__LINE__);
- goto go_reconnect;
+ http_client_shutdown(s_hengai_http_client);
+ s_hengai_http_client = NULL;
}
-
- if(s_hengai_http_tcp_info.first_connect_flag == false)
- {
- s_hengai_http_tcp_info.first_connect_flag = true;
- printf("[@CHENG_DEBUG][%s][%d]: \n",__FUNCTION__,__LINE__);
- }
- if(s_hengai_http_tcp_info.connect_flag == true)
- {
- printf("[@CHENG_DEBUG][%s][%d]: \n",__FUNCTION__,__LINE__);
- return;
- }
-
- if(s_hengai_http_tcp_info.connecting_flag)
- {
- printf("[@CHENG_DEBUG][%s][%d]: \n",__FUNCTION__,__LINE__);
- return;
- }
- else
- {
- s_hengai_http_tcp_info.connecting_flag = true;
- }
-
- res = ValNetworkSocketInit_with_callback(NULL, MMI_HENGAI_HTTP_IP_ADDRESS, MMI_HENGAI_HTTP_IP_PORT, (socket_callback)mmi_hengai_http_socket_callback);
- printf("[@CHENG_DEBUG][%s][%d]: socket init connect res = %d\n",__FUNCTION__,__LINE__, res);
-
-go_reconnect :
- if(res < 0)
- {
- int relink_time = 0;
- int randnum = 0;
- unsigned int time = 0;
-
- Hal_Rtc_Gettime_Count(&time);
- srand(time);
- randnum = rand() % 50 + 10;
- relink_time = randnum * 1000 / 5;
-
- uos_timer_stop(s_hengai_http_tcp_info.relink_timer);
- uos_timer_start(s_hengai_http_tcp_info.relink_timer, relink_time,
- 0, (void (*)(uint32_t))mmi_hengai_http_tcp_reconnect_msg, NULL);
- printf("reconnect time = %d\n",(relink_time / 1000 * 5));
- }
- else
- {
- s_hengai_http_tcp_info.sock_fd = res;
- mmi_hengai_http_tcp_connected(param);
- }
-}
-
-void mmi_hengai_http_tcp_connected(void *param)
-{
- printf("[@CHENG_DEBUG][%s][%d]: \n",__FUNCTION__,__LINE__);
+ if (response_data)
+ free(response_data);
- s_hengai_http_tcp_info.connect_flag = true;
- s_hengai_http_tcp_info.connecting_flag = false;
+ response_data = NULL;
+ response_len = 0;
}
-void mmi_hengai_http_tcp_disconnect(void *param)
+int mmi_hengai_http_post_json_data(char * url, char * post_data, char * token)
{
- if(s_hengai_http_tcp_info.relink_timer != NULL)
+ int response_code= 0;
+ int ret = 0;
+ struct http_client_list * header = NULL;
+ if (s_hengai_http_client != NULL)
+ return -2;
+
+ s_hengai_http_client = http_client_init();
+ http_client_setopt(s_hengai_http_client, HTTPCLIENT_OPT_URL, url); /*set URL:support http/https and ip4/ip6*/
+ http_client_setopt(s_hengai_http_client, HTTPCLIENT_OPT_HTTP1_0, 0); /*"0" is HTTP 1.1, "1" is HTTP 1.0*/
+ http_client_setopt(s_hengai_http_client, HTTPCLIENT_OPT_RESPONSECB, response_cb); /*response callback*/
+ //http_client_setopt(s_hengai_http_client, HTTPCLIENT_OPT_RESPONSECB_DATA, private_data); /*set user private data,*/
+ http_client_setopt(s_hengai_http_client, HTTPCLIENT_OPT_METHOD, HTTPCLIENT_REQUEST_POST); /*set method,support GET/POST/PUT*/
+ http_client_setopt(s_hengai_http_client, HTTPCLIENT_OPT_POSTDATA, post_data); /*post data is http context*/
+ http_client_setopt(s_hengai_http_client, HTTPCLIENT_OPT_POSTLENGTH, strlen(post_data)); /*http context length*/
+
+ if(NULL != token)
{
- uos_timer_stop(s_hengai_http_tcp_info.relink_timer);
- //s_hengai_http_tcp_info.relink_timer = NULL;
+ char temp_str[64] = {0};
+ sprintf(temp_str, "token: %s\r\n", token);
+ s_hengai_http_client_list_header = http_client_list_append(s_hengai_http_client_list_header, temp_str);
}
+ // "dc5aed59e2fce3060cd1118b41b19552"
+ s_hengai_http_client_list_header = http_client_list_append(s_hengai_http_client_list_header, "Content-Type: application/json\r\n");
+ s_hengai_http_client_list_header = http_client_list_append(s_hengai_http_client_list_header, "Accept: */*\r\n");
+ http_client_setopt(s_hengai_http_client, HTTPCLIENT_OPT_HTTPHEADER, s_hengai_http_client_list_header);
- s_hengai_http_tcp_info.reconnect_count = 5;
- s_hengai_http_tcp_info.connect_flag = false;
- s_hengai_http_tcp_info.first_connect_flag = false;
- s_hengai_http_tcp_info.connecting_flag = false;
-
- printf("[@CHENG_DEBUG][%s][%d]: sock_fd=%d\n",__FUNCTION__,__LINE__, s_hengai_http_tcp_info.sock_fd);
- if(s_hengai_http_tcp_info.sock_fd > 0)
+ http_client_getinfo(s_hengai_http_client, HTTPCLIENT_GETINFO_TCP_STATE, &response_code);
+ if(response_code != HTTP_TCP_ESTABLISHED)
{
- int ret = ValSocketClose(s_hengai_http_tcp_info.sock_fd);
- s_hengai_http_tcp_info.sock_fd = -1;
- }
-}
-
-void mmi_hengai_http_tcp_reconnect(void *param)
-{
- if(false == watch_modem_sim_present_check_req())
- {
- return;
+ printf("http tcp not connecting\n");
+ ret = -1;
+ goto EXIT;
}
-
- mmi_hengai_http_tcp_disconnect(NULL);
-
- long reconnect_time = (5 * 1000) / 5;
- s_hengai_http_tcp_info.reconnect_count--;
- if(s_hengai_http_tcp_info.reconnect_count < 0)
- {
- s_hengai_http_tcp_info.reconnect_count = 5;
- }
- else
- {
- reconnect_time = 10 * 1000 / 5;
- }
- uos_timer_stop(s_hengai_http_tcp_info.relink_timer);
- uos_timer_start(s_hengai_http_tcp_info.relink_timer, reconnect_time , 0, (void (*)(uint32_t))mmi_hengai_http_tcp_connect_msg, NULL);
-}
-
-void mmi_hengai_http_tcp_read_data(void *param)
-{
- mmi_hengai_http_socket_fd_t * data_info = (mmi_hengai_http_socket_fd_t *)param;
- if((NULL == data_info) || (data_info->socket_fd < 0))
+ response_code = http_client_perform(s_hengai_http_client); /*execute http send and recv*/
+ if(response_code != HTTP_CLIENT_OK)
{
- printf("[@CHENG_DEBUG][%s][%d]: \n",__FUNCTION__,__LINE__);
- return;
+ printf("http perform have some wrong=%d\n", response_code);
+ ret = -3;
+ goto EXIT;
}
-
- int recv_ret = -1;
- int recv_len = 0;
- char * recv_buf = (char *)Hal_Mem_Alloc(HENGAI_HTTP_RECEIVE_BUFF_LEN);
- if(NULL == recv_buf)
+
+ http_client_getinfo(s_hengai_http_client, HTTPCLIENT_GETINFO_RESPONSE_CODE, &response_code);
+ if (response_code != 200 && response_code != 204)
{
- printf("[@CHENG_DEBUG][%s][%d]: recv_buf alloc fail\n",__FUNCTION__,__LINE__);
- return;
- }
- Hal_Mem_Set(recv_buf , 0x00, HENGAI_HTTP_RECEIVE_BUFF_LEN);
- recv_ret = ValRecvEx(data_info->socket_fd, HENGAI_HTTP_SOCKET_REV_TIMEOUT, recv_buf, HENGAI_HTTP_RECEIVE_BUFF_LEN, &recv_len);
- printf("[@CHENG_DEBUG][%s][%d]: ret=%d,len=%d,buf=0x%x\n", __FUNCTION__, __LINE__, recv_ret, recv_len, recv_buf);
- //printf("[@CHENG_DEBUG][%d]: str=%s\n", __LINE__, recv_buf);
- if(0 <= recv_ret)
+ printf("response is not 'HTTP OK'=%d\n", response_code);
+ }
+
+ if(NULL != s_hengai_http_revceive_buf)
{
- mmi_hengai_http_data_receive(recv_buf, recv_len);
+ lv_mem_free(s_hengai_http_revceive_buf);
+ s_hengai_http_revceive_buf = NULL;
}
+ s_hengai_http_revceive_buf = lv_mem_alloc(response_len + 1);
+ _lv_memset_00(s_hengai_http_revceive_buf, response_len + 1);
+ _lv_memcpy(s_hengai_http_revceive_buf, response_data, response_len);
+ printf("[@CHENG_DEBUG][%s][%d]: data_len=%d\n", __FUNCTION__, __LINE__, response_len);
- if(NULL != recv_buf)
- {
- printf("[@CHENG_DEBUG][%s][%d]: recv_buf free\n",__FUNCTION__,__LINE__);
- Hal_Mem_Free(recv_buf);
- recv_buf = NULL;
- }
+EXIT:
+ mmi_hengai_http_post_resource_free();
+
+ return ret;
}
-static void mm_hengai_http_r_task_entry(void * para)
+int mmi_hengai_http_post_data(char * url, char * post_data, char * token)
{
- while(s_hengai_http_r_task_id == NULL)
- {
- uos_sleep(10);
- }
-
- while(1)
+ int ret_value = 0;
+
+ s_hengai_http_post_try_count = 0;
+
+ while(1)
{
- // receive message
- mmi_hengai_http_task_msg_t * msg = (mmi_hengai_http_task_msg_t *)Hal_Receive_Message((TASK_ID)s_hengai_http_r_task_id, TRUE);
- MMI_HENGAI_HTTP_TCP_MSG_ID_E msg_id = msg->cmd_type;
- void * msg_param = msg->cmd_param;
+ s_hengai_http_post_try_count++;
- printf("[@CHENG_DEBUG][%s][%d]: msg_id=%d\n",__FUNCTION__,__LINE__, msg_id);
- switch(msg_id)
+ int ret = mmi_hengai_http_post_json_data(url, post_data, token);
+ printf("[@CHENG_DEBUG][%s][%d]: ret=%d\n", __FUNCTION__, __LINE__, ret);
+ if(0 == ret)
{
- case MMI_HENGAI_HTTP_TCP_MSG_CONNECT:
- mmi_hengai_http_tcp_connect(msg_param);
- break;
-
- case MMI_HENGAI_HTTP_TCP_MSG_CONNECTED:
- mmi_hengai_http_tcp_connected(msg_param);
- break;
-
- case MMI_HENGAI_HTTP_TCP_MSG_DISCONNECT:
- mmi_hengai_http_tcp_disconnect(msg_param);
- break;
-
- case MMI_HENGAI_HTTP_TCP_MSG_RECONNECT:
- mmi_hengai_http_tcp_reconnect(msg_param);
- break;
-
- case MMI_HENGAI_HTTP_TCP_MSG_READ:
- mmi_hengai_http_tcp_read_data(msg_param);
+ printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ ret_value = 0;
+ break;
+ }
+ else
+ {
+ if(HENGAI_HTTP_POST_TRY_COUNT_MAX <= s_hengai_http_post_try_count)
+ {
+ printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ mmi_hengai_http_post_resource_free();
+ ret_value = -1;
break;
+ }
- default:
- break;
+ uos_sleep(10);
}
-
- Hal_Mem_Free(msg->cmd_param);
- Hal_Mem_Free(msg);
- }
-}
+ }
-static void mm_hengai_http_r_task_init(void)
-{
- s_hengai_http_r_task_id = uos_create_task(mm_hengai_http_r_task_entry,
- NULL,
- 64,
- MMI_HENGAI_HTTP_R_TASK_STACK_SIZE,
- MMI_HENGAI_HTTP_R_TASK_PRIORITY,
- "mm_hengai_http_r_task");
-
- printf("[@CHENG_DEBUG][%s][%d]: task_id=0x%x\n",__FUNCTION__,__LINE__, s_hengai_http_r_task_id);
+ return ret_value;
}
-// send task
-void mm_hengai_http_s_task_msg_send(MMI_AI_TALK_ACTION_CMD_E action_cmd)
+// measure data
+void mmi_hengai_bp_measure_raw_data_send(void)
{
- if(NULL != s_hengai_http_s_task_id)
+ char imei[16 + 1] = {0};
+ app_adp_get_imei_req(imei);
+
+ char * begin_time_str = mmi_hengai_bp_measure_action_time_string_get(1);
+ char * end_time_str = mmi_hengai_bp_measure_action_time_string_get(0);
+ char * token = "dc5aed59e2fce3060cd1118b41b19552";
+ //int test_number_array[] = {1012744,864594,698914,532908,402542,317532,235462,168856,142664,109818,42654};
+
+ cJSON * json_send = cJSON_CreateObject();
+ cJSON_AddItemToObject(json_send, "app_key", cJSON_CreateString(HENGAI_HTTP_POST_APP_KEY));
+ 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_CreateIntArray(mmi_hengai_bp_raw_data_ptr_get(), mmi_hengai_bp_raw_data_len_get()));//cJSON_CreateString("HENGAI"));
+ cJSON_AddItemToObject(json_send, "sample_rate", cJSON_CreateNumber(MMI_HENGAI_BP_RAW_DATA_SAMPLE_RATE));
+ char * post_data = cJSON_Print(json_send);
+ cJSON_Delete(json_send);
+ json_send = NULL;
+
+ char url[256] = {0};
+ char * url_suffix = "/health/bp/measurement";
+ sprintf(url, "%s%s", HENGAI_HTTP_POST_URL_COMMON_PREFIX, url_suffix);
+ int ret = mmi_hengai_http_post_data(url, post_data, token);
+ if(0 == ret)
{
- mmi_hengai_http_task_msg_t * msg = Hal_Mem_Alloc(sizeof(mmi_hengai_http_task_msg_t));
- msg->cmd_type = action_cmd;
- msg->cmd_param = NULL;
+ 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);
- Hal_Send_Message((TASK_ID)s_hengai_http_s_task_id, (void *)msg);
- }
- else
+ cJSON * json_recv = cJSON_Parse(s_hengai_http_revceive_buf);
+ if(NULL != json_recv)
+ {
+ if(cJSON_GetIntValue(cJSON_GetObjectItem(json_recv, "status")))
+ {
+ // true
+ printf("[@CHENG_DEBUG][%s][%d]: true\n", __FUNCTION__, __LINE__);
+
+ cJSON * json_data = cJSON_GetObjectItem(json_recv, "data");
+ uint16_t bp_value_high = cJSON_GetIntValue(cJSON_GetObjectItem(json_data, "sbp"));
+ uint16_t bp_value_low = cJSON_GetIntValue(cJSON_GetObjectItem(json_data, "dbp"));
+ char * description = cJSON_GetStringValue(cJSON_GetObjectItem(json_data, "description"));
+
+ // update
+ mmi_hengai_bp_measure_update_result(true, bp_value_high, bp_value_low, description);
+ }
+ else
+ {
+ // false
+ printf("[@CHENG_DEBUG][%s][%d]: fail\n", __FUNCTION__, __LINE__);
+ // update
+ mmi_hengai_bp_measure_update_result(false, 0, 0, NULL);
+ }
+ }
+ else
+ {
+ printf("[@CHENG_DEBUG][%s][%d]: not json file\n", __FUNCTION__, __LINE__);
+ }
+
+ if(NULL != json_recv)
+ {
+ printf("[@CHENG_DEBUG][%s][%d]: free json root\n", __FUNCTION__, __LINE__);
+ cJSON_Delete(json_recv);
+ json_recv = NULL;
+ }
+ }
+
+ if(NULL != s_hengai_http_revceive_buf)
{
- printf("[@CHENG_DEBUG][%s][%d]: \n",__FUNCTION__, __LINE__);
- mm_hengai_http_send_space_free(action_cmd);
+ lv_mem_free(s_hengai_http_revceive_buf);
+ s_hengai_http_revceive_buf = NULL;
}
}
-static void mm_hengai_http_s_task_handle(void *param)
+// calibrate mode
+void mmi_hengai_bp_calibrate_model_send(void)
{
- MMI_AI_TALK_ACTION_CMD_E action_cmd = ((mmi_hengai_http_task_msg_t *)param)->cmd_type;
+ char * token = "dc5aed59e2fce3060cd1118b41b19552";
+ char imei[16 + 1] = {0};
+ app_adp_get_imei_req(imei);
- if((false == watch_modem_sim_present_check_req())
- || (MMI_MODEM_SIGNAL_BAR_0 == watch_modem_get_signal_bar_req())
- )
+ cJSON * json_send = cJSON_CreateObject();
+ cJSON_AddItemToObject(json_send, "app_key", cJSON_CreateString(HENGAI_HTTP_POST_APP_KEY));
+ cJSON_AddItemToObject(json_send, "mac", cJSON_CreateString(imei));
+ char * post_data = cJSON_Print(json_send);
+ cJSON_Delete(json_send);
+ json_send = NULL;
+
+ char url[256] = {0};
+ char * url_suffix = "/health/bp/model";
+ sprintf(url, "%s%s", HENGAI_HTTP_POST_URL_COMMON_PREFIX, url_suffix);
+ int ret = mmi_hengai_http_post_data(url, post_data, token);
+ if(0 == ret)
{
- printf("[@CHENG_DEBUG][%s][%d]: \n",__FUNCTION__,__LINE__);
- mm_hengai_http_send_space_free(action_cmd);
- return;
+ 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);
+
+ cJSON * json_recv = cJSON_Parse(s_hengai_http_revceive_buf);
+ if(NULL != json_recv)
+ {
+ printf("[@CHENG_DEBUG][%s][%d]: json file\n", __FUNCTION__, __LINE__);
+
+ bool status_value = cJSON_GetIntValue(cJSON_GetObjectItem(json_recv, "status"));
+ mmi_hengai_bp_calibrate_update_result(status_value);
+ }
+ else
+ {
+ printf("[@CHENG_DEBUG][%s][%d]: not json file\n", __FUNCTION__, __LINE__);
+ }
+
+ if(NULL != json_recv)
+ {
+ printf("[@CHENG_DEBUG][%s][%d]: free json root\n", __FUNCTION__, __LINE__);
+ cJSON_Delete(json_recv);
+ json_recv = NULL;
+ }
}
- unsigned char * send_buff = (unsigned char *)mm_hengai_http_send_space_ptr_get(action_cmd);
- int send_size = mm_hengai_http_send_space_size_get(action_cmd);
- printf("[@CHENG_DEBUG][%s][%d]: len=%d\n", __FUNCTION__, __LINE__, send_size);
- printf("[@CHENG_DEBUG][%d]: str=%s\n", __LINE__, send_buff);
+ if(NULL != s_hengai_http_revceive_buf)
+ {
+ lv_mem_free(s_hengai_http_revceive_buf);
+ s_hengai_http_revceive_buf = NULL;
+ }
+}
+
+void mmi_hengai_bp_calibrate_raw_data_send(uint8_t calibrate_times, uint16_t bp_value_high, uint16_t bp_value_low)
+{
+ char * token = "dc5aed59e2fce3060cd1118b41b19552";
+ char imei[16 + 1] = {0};
+ app_adp_get_imei_req(imei);
+
+ char * begin_time_str = mmi_hengai_bp_measure_action_time_string_get(1);
+ char * end_time_str = mmi_hengai_bp_measure_action_time_string_get(0);
- if((NULL != send_buff) && (0 < send_size))
+ cJSON * json_send = cJSON_CreateObject();
+ cJSON_AddItemToObject(json_send, "app_key", cJSON_CreateString(HENGAI_HTTP_POST_APP_KEY));
+ 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, "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));
+ char * post_data = cJSON_Print(json_send);
+ cJSON_Delete(json_send);
+ json_send = NULL;
+
+ char url[256] = {0};
+ char * url_suffix = "/health/bp/calibration";
+ sprintf(url, "%s%s", HENGAI_HTTP_POST_URL_COMMON_PREFIX, url_suffix);
+ int ret = mmi_hengai_http_post_data(url, post_data, token);
+ if(0 == ret)
{
- int sockfd = s_hengai_http_tcp_info.sock_fd;
+ 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);
- if(sockfd > 0)
+ cJSON * json_recv = cJSON_Parse(s_hengai_http_revceive_buf);
+ if(NULL != json_recv)
{
- int ret = -1;
- ret = ValSend(sockfd, HENGAI_HTTP_SOCKET_REV_TIMEOUT, send_buff, send_size);
- printf("[@CHENG_DEBUG][%s][%d]: sock_fd=%d,ret=%d\n", __FUNCTION__, __LINE__, sockfd, ret);
- if(ret < 0)
+ printf("[@CHENG_DEBUG][%s][%d]: json file\n", __FUNCTION__, __LINE__);
+
+ if(cJSON_GetIntValue(cJSON_GetObjectItem(json_recv, "status")))
+ {
+ // true
+ if(2 <= calibrate_times)
+ {
+ mmi_hengai_bp_calibrate_model_send();
+ }
+ }
+ else
{
- printf("[@CHENG_DEBUG][%s][%d]: ValSend fail\n", __FUNCTION__, __LINE__);
+ // false
+ printf("[@CHENG_DEBUG][%s][%d]: fail\n", __FUNCTION__, __LINE__);
}
}
else
{
- printf("[@CHENG_DEBUG][%s][%d]: sock_fd=%d\n", __FUNCTION__, __LINE__, sockfd);
- mmi_hengai_http_tcp_reconnect_msg(NULL);
+ printf("[@CHENG_DEBUG][%s][%d]: not json file\n", __FUNCTION__, __LINE__);
+ }
+
+ if(NULL != json_recv)
+ {
+ printf("[@CHENG_DEBUG][%s][%d]: free json root\n", __FUNCTION__, __LINE__);
+ cJSON_Delete(json_recv);
+ json_recv = NULL;
}
}
-
- mm_hengai_http_send_space_free(action_cmd);
-}
-
-static void mm_hengai_http_s_task_entry(void *param)
-{
- while(NULL == s_hengai_http_s_task_id)
- {
- uos_sleep(10);
- }
-
- while(1)
- {
- mmi_hengai_http_task_msg_t * msg = (mmi_hengai_http_task_msg_t *)Hal_Receive_Message((TASK_ID)s_hengai_http_s_task_id, TRUE);
- if(!msg)
- continue;
- mm_hengai_http_s_task_handle((void *)msg);
- Hal_Mem_Free(msg);
- }
+ if(NULL != s_hengai_http_revceive_buf)
+ {
+ lv_mem_free(s_hengai_http_revceive_buf);
+ s_hengai_http_revceive_buf = NULL;
+ }
}
-static void mm_hengai_http_s_task_init(void)
-{
- s_hengai_http_s_task_id = uos_create_task(mm_hengai_http_s_task_entry,
- NULL,
- 64,
- MMI_HENGAI_HTTP_S_TASK_STACK_SIZE,
- MMI_HENGAI_HTTP_S_TASK_PRIORITY,
- "mm_hengai_http_s_task");
-
- printf("[@CHENG_DEBUG][%s][%d]: task_id=0x%x\n",__FUNCTION__,__LINE__, s_hengai_http_s_task_id);
-}
-void mmi_hengai_http_tcp_info_init(void)
+#if 0
+void mmi_hengai_bp_activation_feedback(void)
{
- s_hengai_http_tcp_info.sock_fd = -1;
- s_hengai_http_tcp_info.connect_flag = false;
- s_hengai_http_tcp_info.connecting_flag = false;
- s_hengai_http_tcp_info.first_connect_flag = false;
- s_hengai_http_tcp_info.reconnect_count = 5;
+ char * post_data = NULL;
+ cJSON * json_send = NULL;
+ char imei[16 + 1] = {0};
+ app_adp_get_imei_req(imei);
- if(NULL != s_hengai_http_tcp_info.relink_timer)
+ json_send = cJSON_CreateObject();
+ cJSON_AddItemToObject(json_send, "app_key", cJSON_CreateString(HENGAI_HTTP_POST_APP_KEY));
+ cJSON_AddItemToObject(json_send, "firm", cJSON_CreateString("HENGAI"));
+ cJSON_AddItemToObject(json_send, "mac", cJSON_CreateString(imei));
+ post_data = cJSON_Print(json_send);
+ cJSON_Delete(json_send);
+ json_send = NULL;
+
+ char url[256] = {0};
+ char * url_suffix = "/sinklib/activation/feedback";
+ sprintf(url, "%s%s", HENGAI_HTTP_POST_URL_COMMON_PREFIX, url_suffix);
+ int ret = mmi_hengai_http_post_data(url, post_data);
+ if(0 == ret)
{
- uos_timer_stop(s_hengai_http_tcp_info.relink_timer);
- uos_timer_delete(s_hengai_http_tcp_info.relink_timer);
- s_hengai_http_tcp_info.relink_timer = NULL;
+ cJSON * json_recv = NULL;
+
+ 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
+ mmi_hengai_bp_activated_finish();
+ }
+ else
+ {
+ // false
+ }
+ }
+ else
+ {
+ printf("[@CHENG_DEBUG][%s][%d]: not json file\n", __FUNCTION__, __LINE__);
+ }
+
+ if(NULL != json_recv)
+ {
+ printf("[@CHENG_DEBUG][%s][%d]: free json root\n", __FUNCTION__, __LINE__);
+ cJSON_Delete(json_recv);
+ json_recv = NULL;
+ }
}
- uos_timer_create(&s_hengai_http_tcp_info.relink_timer);
-}
-void mm_hengai_http_task_init(void)
-{
- if(false == watch_modem_sim_present_check_req()
- //|| (MMI_MODEM_SIGNAL_BAR_0 == watch_modem_get_signal_bar_req())
- )
+ if(NULL != s_hengai_http_revceive_buf)
{
- return;
+ lv_mem_free(s_hengai_http_revceive_buf);
+ s_hengai_http_revceive_buf = NULL;
}
-
- mmi_hengai_http_tcp_info_init();
- mm_hengai_http_r_task_init();
- mm_hengai_http_s_task_init();
}
-
-
-#include "hal/dm/cJSON.h"
-
-void mmi_hengai_http_data_receive(char * recv_buf, int recv_len)
+void mmi_hengai_bp_activation_check_action(void)
{
- cJSON * json_root = NULL;
-
- json_root = cJSON_Parse(recv_buf);
- if(NULL != json_root)
+ printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+ if(0 == mmi_hengai_bp_is_activated())
{
- printf("[@CHENG_DEBUG][%s][%d]: json file\n", __FUNCTION__, __LINE__);
+ char * post_data = NULL;
+ cJSON * json_send = NULL;
+ char * req_code = mmi_hengai_bp_req_code_get();
+ char imei[16 + 1] = {0};
+ app_adp_get_imei_req(imei);
+ json_send = cJSON_CreateObject();
+ cJSON_AddItemToObject(json_send, "app_key", cJSON_CreateString(HENGAI_HTTP_POST_APP_KEY));
+ cJSON_AddItemToObject(json_send, "name", cJSON_CreateString("Z5_HA_K18"));
+ cJSON_AddItemToObject(json_send, "firm", cJSON_CreateString("HENGAI"));
+ cJSON_AddItemToObject(json_send, "mac", cJSON_CreateString(imei));
+ cJSON_AddItemToObject(json_send, "model", cJSON_CreateString("RH303"));
+ cJSON_AddItemToObject(json_send, "sensor", cJSON_CreateString("VP60"));
+ cJSON_AddItemToObject(json_send, "sinklib_version", cJSON_CreateString("v0.3.0.072522"));
+ cJSON_AddItemToObject(json_send, "request_code", cJSON_CreateString(req_code));
+ post_data = cJSON_Print(json_send);
+ cJSON_Delete(json_send);
+ json_send = NULL;
+
+ char url[256] = {0};
+ char * url_suffix = "/sinklib/activation";
+ sprintf(url, "%s%s", HENGAI_HTTP_POST_URL_COMMON_PREFIX, url_suffix);
+ int ret = mmi_hengai_http_post_data(url, post_data);
+ if(0 == ret)
+ {
+ cJSON * json_recv = NULL;
+
+ json_recv = cJSON_Parse(s_hengai_http_revceive_buf);
+ if(NULL != json_recv)
+ {
+ printf("[@CHENG_DEBUG][%s][%d]: json file\n", __FUNCTION__, __LINE__);
+
+ // true
+ if(cJSON_GetIntValue(cJSON_GetObjectItem(json_recv, "status")))
+ {
+ cJSON * json_data = cJSON_GetObjectItem(json_recv, "data");
+ char * act_code = cJSON_GetStringValue(cJSON_GetObjectItem(json_data, "activation_code"));
+
+ mmi_hengai_bp_act_code_set(act_code);
+
+ // »ñµÃÁ˼¤»îÂ룬·¢Ë͸øÏ³Á¿â£¬²¢µÃµ½ÕýÈ··µ»ØºóÇëÇó
+ // if()
+ {
+ mmi_hengai_bp_activation_feedback();
+ }
+ }
+ else // false
+ {
+
+ }
+ }
+ else
+ {
+ printf("[@CHENG_DEBUG][%s][%d]: not json file\n", __FUNCTION__, __LINE__);
+ }
+
+ if(NULL != json_recv)
+ {
+ printf("[@CHENG_DEBUG][%s][%d]: free json root\n", __FUNCTION__, __LINE__);
+ cJSON_Delete(json_recv);
+ json_recv = NULL;
+ }
+ }
+ if(NULL != s_hengai_http_revceive_buf)
+ {
+ lv_mem_free(s_hengai_http_revceive_buf);
+ s_hengai_http_revceive_buf = NULL;
+ }
}
- else
- {
- printf("[@CHENG_DEBUG][%s][%d]: not json file\n", __FUNCTION__, __LINE__);
- }
+}
+#endif
- if(NULL != json_root)
+
+void mmi_hengai_algorithm_interface_login_action(void)
+{
+ printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+ //if(0 == mmi_hengai_bp_is_activated())
{
- printf("[@CHENG_DEBUG][%s][%d]: free json root\n", __FUNCTION__, __LINE__);
- cJSON_Delete(json_root);
- json_root = NULL;
+ cJSON * json_send = json_send = cJSON_CreateObject();
+ cJSON_AddItemToObject(json_send, "app_key", cJSON_CreateString(HENGAI_HTTP_POST_APP_KEY));
+ cJSON_AddItemToObject(json_send, "account_type", cJSON_CreateNumber(0));
+ cJSON_AddItemToObject(json_send, "account", cJSON_CreateString("18912345678"));
+ cJSON_AddItemToObject(json_send, "name", cJSON_CreateString("18912345678"));
+ cJSON_AddItemToObject(json_send, "password", cJSON_CreateString("123456"));
+ cJSON_AddItemToObject(json_send, "gender", cJSON_CreateNumber(3));
+ cJSON_AddItemToObject(json_send, "birthday", cJSON_CreateString("2000-10-01"));
+ cJSON_AddItemToObject(json_send, "height", cJSON_CreateNumber(180));
+ cJSON_AddItemToObject(json_send, "weight", cJSON_CreateNumber(80));
+ char * post_data = cJSON_Print(json_send);
+ cJSON_Delete(json_send);
+ json_send = NULL;
+
+ char url[256] = {0};
+ char * url_suffix = "/entrance/user/login";
+ sprintf(url, "%s%s", HENGAI_HTTP_POST_URL_COMMON_PREFIX, url_suffix);
+ int ret = mmi_hengai_http_post_data(url, post_data, NULL);
+ if(0 == ret)
+ {
+ cJSON * json_recv = cJSON_Parse(s_hengai_http_revceive_buf);
+ if(NULL != json_recv)
+ {
+ if(cJSON_GetIntValue(cJSON_GetObjectItem(json_recv, "status")))
+ {
+ printf("[@CHENG_DEBUG][%s][%d]: true\n", __FUNCTION__, __LINE__);
+
+ cJSON * json_data = cJSON_GetObjectItem(json_recv, "data");
+ char * token = cJSON_GetStringValue(cJSON_GetObjectItem(json_data, "token"));
+ // save token
+
+ }
+ else
+ {
+ printf("[@CHENG_DEBUG][%s][%d]: false\n", __FUNCTION__, __LINE__);
+ }
+ }
+ else
+ {
+ printf("[@CHENG_DEBUG][%s][%d]: not json file\n", __FUNCTION__, __LINE__);
+ }
+
+ if(NULL != json_recv)
+ {
+ printf("[@CHENG_DEBUG][%s][%d]: free json root\n", __FUNCTION__, __LINE__);
+ cJSON_Delete(json_recv);
+ json_recv = NULL;
+ }
+ }
+
+ if(NULL != s_hengai_http_revceive_buf)
+ {
+ lv_mem_free(s_hengai_http_revceive_buf);
+ s_hengai_http_revceive_buf = NULL;
+ }
}
}
+
#endif