static bool mmi_hengai_sleep_data_send(void)
{
- PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
-
char * temp_buff = NULL;
uint32_t buff_size = sizeof(sleep_data_t);
char * temp_ptr = NULL;
uint32_t temp_count = 0;
uint8_t i = 0;
- temp_buff = lv_mem_alloc(buff_size+ 32 + 1);
+ temp_buff = lv_mem_alloc(buff_size + 1);
if(NULL == temp_buff)
{
printf("[@CHENG_DEBUG][%s][%d]: memory alloc failed\n", __FUNCTION__, __LINE__);
return;
}
- _lv_memset_00(temp_buff, buff_size + 32 + 1);
+ _lv_memset_00(temp_buff, buff_size + 1);
temp_count = 0;
temp_ptr = temp_buff + temp_count;
-
- sprintf(temp_ptr, ",HENGAI_SLEEP_DATA,");
- temp_count = strlen(temp_ptr);
-
- temp_ptr += temp_count;
sprintf(temp_ptr, "%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d",
s_hengai_sdata.total_sleep_time,
s_hengai_sdata.begin_sleep_time.year,
temp_count = strlen(temp_ptr);
}
- //mmi_protocol_fzd_action_hengai_sleep_data(temp_buff, strlen(temp_buff));
- mmi_protocol_fzd_action_tcp_http(temp_buff, strlen(temp_buff));
+ mmi_protocol_fzd_action_hengai_sleep_data(temp_buff, strlen(temp_buff));
if(NULL != temp_buff)
{
if(1 == result)
{
mmi_hengai_sleep_data_send();
+ mmi_hengai_sleep_data_set(&s_hengai_sdata);
}
_lv_memset_00(s_hengai_sleep_gsensor_data, sizeof(s_hengai_sleep_gsensor_data));
mmi_hengai_health_sleep_activated_flag_set(1);
}
}
+
+
+#if 10 // ui
+static uint8_t s_hengai_sleep_data_init = 0;
+static nv_watch_hengai_sleep_data_t s_hengai_sleep_data = {0};
+
+void mmi_hengai_sleep_data_nv_write(void)
+{
+ uint32_t nv_data_length = sizeof(nv_watch_hengai_sleep_data_t);
+
+ if(nv_data_length != UI_NV_Write_Req(NV_SECTION_UI_HENGAI_SLEEP_DATA, 0, nv_data_length, (uint8_t *)&s_hengai_sleep_data))
+ {
+ SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: nv write fail\n", __FUNCTION__, __LINE__);
+ }
+}
+
+void mmi_hengai_sleep_data_nv_read(void)
+{
+ uint32_t nv_data_length = sizeof(nv_watch_hengai_sleep_data_t);
+
+ if(nv_data_length != UI_NV_Read_Req(NV_SECTION_UI_HENGAI_SLEEP_DATA, 0, nv_data_length, (uint8_t *)&s_hengai_sleep_data))
+ {
+ SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: nv read fail\n", __FUNCTION__, __LINE__);
+ _lv_memset_00(&s_hengai_sleep_data, sizeof(nv_watch_hengai_sleep_data_t));
+ }
+}
+
+void mmi_hengai_sleep_data_set(nv_watch_hengai_sleep_data_t * data)
+{
+ if(NULL != data)
+ {
+ _lv_memcpy(&s_hengai_sleep_data, data, sizeof(nv_watch_hengai_sleep_data_t));
+ mmi_hengai_sleep_data_nv_write();
+ }
+}
+
+
+static const lv_point_t s_sleep_valid_pos[] = {{0, 0}, {0, 1}};
+
+lv_obj_t * mmi_sleep_tileview_add_tile(lv_obj_t * tileview, uint16_t id)
+{
+ lv_tileview_ext_t * ext = lv_obj_get_ext_attr(tileview);
+ lv_obj_t * cont = lv_cont_create(tileview, NULL);
+ lv_obj_add_style(cont, LV_CONT_PART_MAIN, &lv_style_transp_tight);
+ lv_obj_set_size(cont, LV_HOR_RES, LV_VER_RES);
+ lv_obj_set_y(cont, LV_HOR_RES * ext->valid_pos[id].y);
+ lv_tileview_add_element(tileview, cont);
+ lv_obj_set_click(cont, false);
+ return cont;
+}
+
+lv_obj_t * mmi_sleep_detail_create(lv_obj_t * tileview, uint16_t id)
+{
+ lv_obj_t * tab = mmi_sleep_tileview_add_tile(tileview, id);
+ LV_ASSERT_MEM(tab);
+ if(tab == NULL)
+ return NULL;
+
+ lv_obj_t * cont = lv_cont_create(tab, NULL);
+ lv_obj_set_size(cont, lv_obj_get_width(tab), lv_obj_get_height(tab));
+ lv_obj_align(cont, NULL, LV_ALIGN_CENTER, 0, 0);
+ lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
+ lv_watch_obj_add_element(cont);
+ lv_tileview_add_element(tileview, cont);
+
+ // sleep period
+ lv_obj_t * label_sleep_period = lv_label_create(cont, NULL);
+ lv_obj_add_style(label_sleep_period, LV_LABEL_PART_MAIN, &lv_watch_font40);
+ lv_label_set_text_id(label_sleep_period, WATCH_TEXT_ID_SLEEP_PERIOD);
+ lv_label_set_long_mode(label_sleep_period, LV_LABEL_LONG_SROLL);
+ lv_obj_set_width(label_sleep_period, LV_HOR_RES / 2);
+ lv_label_set_align(label_sleep_period, LV_LABEL_ALIGN_CENTER);
+ lv_obj_align(label_sleep_period, NULL, LV_ALIGN_IN_TOP_MID, 0, 40);
+
+ char temp_buf[64 + 1] = {0};
+ nv_watch_sleep_time_t sleep_setting_data = {0};
+ mmi_watch_sleep_time_data_get(&sleep_setting_data);
+ snprintf(temp_buf, 64, "%02d:%02d-%02d:%02d",
+ sleep_setting_data.begin_hour,
+ sleep_setting_data.begin_min,
+ sleep_setting_data.end_hour,
+ sleep_setting_data.end_min);
+
+ lv_obj_t * label_sleep_period_value = lv_label_create(cont, NULL);
+ lv_obj_add_style(label_sleep_period_value, LV_LABEL_PART_MAIN, &lv_watch_font40);
+ lv_label_set_text(label_sleep_period_value, temp_buf);
+ lv_label_set_long_mode(label_sleep_period_value, LV_LABEL_LONG_SROLL);
+ lv_obj_set_width(label_sleep_period_value, LV_HOR_RES / 2);
+ lv_label_set_align(label_sleep_period_value, LV_LABEL_ALIGN_CENTER);
+ lv_obj_align(label_sleep_period_value, label_sleep_period, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
+
+ // fall asleep time
+ lv_obj_t * label_fall_asleep = lv_label_create(cont, NULL);
+ lv_obj_add_style(label_fall_asleep, LV_LABEL_PART_MAIN, &lv_watch_font40);
+ lv_label_set_text_id(label_fall_asleep, WATCH_TEXT_ID_FALL_ASLEEP_TIME);
+ lv_label_set_long_mode(label_fall_asleep, LV_LABEL_LONG_SROLL);
+ lv_obj_set_width(label_fall_asleep, LV_HOR_RES / 2);
+ lv_label_set_align(label_fall_asleep, LV_LABEL_ALIGN_CENTER);
+ lv_obj_align(label_fall_asleep, NULL, LV_ALIGN_IN_LEFT_MID, 20, -10);
+
+ if(0 == s_hengai_sleep_data.total_sleep_time
+ && 0 == s_hengai_sleep_data.begin_sleep_time.hour
+ && 0 == s_hengai_sleep_data.begin_sleep_time.minute
+ )
+ {
+ snprintf(temp_buf, 64, "--");
+ }
+ else
+ {
+ snprintf(temp_buf, 64, "%02d:%02d",
+ s_hengai_sleep_data.begin_sleep_time.hour,
+ s_hengai_sleep_data.begin_sleep_time.minute);
+ }
+
+ lv_obj_t * label_fall_asleep_value = lv_label_create(cont, NULL);
+ lv_obj_add_style(label_fall_asleep_value, LV_LABEL_PART_MAIN, &lv_watch_font40);
+ lv_label_set_text(label_fall_asleep_value, temp_buf);
+ lv_label_set_long_mode(label_fall_asleep_value, LV_LABEL_LONG_SROLL);
+ lv_obj_set_width(label_fall_asleep_value, LV_HOR_RES / 2);
+ lv_label_set_align(label_fall_asleep_value, LV_LABEL_ALIGN_CENTER);
+ lv_obj_align(label_fall_asleep_value, label_fall_asleep, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
+
+ // wake up time
+ lv_obj_t * label_wake_up = lv_label_create(cont, NULL);
+ lv_obj_add_style(label_wake_up, LV_LABEL_PART_MAIN, &lv_watch_font40);
+ lv_label_set_text_id(label_wake_up, WATCH_TEXT_ID_WAKE_UP_TIME);
+ lv_label_set_long_mode(label_wake_up, LV_LABEL_LONG_SROLL);
+ lv_obj_set_width(label_wake_up, LV_HOR_RES / 2);
+ lv_label_set_align(label_wake_up, LV_LABEL_ALIGN_CENTER);
+ lv_obj_align(label_wake_up, NULL, LV_ALIGN_IN_RIGHT_MID, -20, -10);
+
+ if(0 == s_hengai_sleep_data.total_sleep_time
+ && 0 == s_hengai_sleep_data.end_sleep_time.hour
+ && 0 == s_hengai_sleep_data.end_sleep_time.minute
+ )
+ {
+ snprintf(temp_buf, 64, "--");
+ }
+ else
+ {
+ snprintf(temp_buf, 64, "%02d:%02d",
+ s_hengai_sleep_data.end_sleep_time.hour,
+ s_hengai_sleep_data.end_sleep_time.minute);
+ }
+
+ lv_obj_t * label_wake_up_value = lv_label_create(cont, NULL);
+ lv_obj_add_style(label_wake_up_value, LV_LABEL_PART_MAIN, &lv_watch_font40);
+ lv_label_set_text(label_wake_up_value, temp_buf);
+ lv_label_set_long_mode(label_wake_up_value, LV_LABEL_LONG_SROLL);
+ lv_obj_set_width(label_wake_up_value, LV_HOR_RES / 2);
+ lv_label_set_align(label_wake_up_value, LV_LABEL_ALIGN_CENTER);
+ lv_obj_align(label_wake_up_value, label_wake_up, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
+
+ // APP
+ lv_obj_t * label_app = lv_label_create(cont, NULL);
+ lv_obj_add_style(label_app, LV_LABEL_PART_MAIN, &lv_watch_font26_gray);
+ lv_label_set_text_id(label_app, WATCH_TEXT_ID_DETAIL_INFO_IN_APP);
+ lv_label_set_long_mode(label_app, LV_LABEL_LONG_BREAK);
+ lv_obj_set_width(label_app, LV_HOR_RES * 3 / 5);
+ lv_label_set_align(label_app, LV_LABEL_ALIGN_CENTER);
+ lv_obj_align(label_app, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -30);
+
+ return tab;
+}
+
+static lv_obj_t * mmi_sleep_info_create(lv_obj_t * tileview, uint16_t id)
+{
+ lv_obj_t * tab = mmi_sleep_tileview_add_tile(tileview, id);
+ LV_ASSERT_MEM(tab);
+ if(tab == NULL)
+ return NULL;
+
+ lv_obj_t * cont = lv_cont_create(tab, NULL);
+ lv_obj_set_size(cont, lv_obj_get_width(tab), lv_obj_get_height(tab));
+ lv_obj_align(cont, NULL, LV_ALIGN_CENTER, 0, 0);
+ lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
+ lv_watch_obj_add_element(cont);
+ lv_tileview_add_element(tileview, cont);
+
+ lv_obj_t * label_title = lv_label_create(cont, NULL);
+ lv_obj_add_style(label_title, LV_LABEL_PART_MAIN, &lv_watch_font40);
+ lv_label_set_text_id(label_title, WATCH_TEXT_ID_LATEST_SLEEP_INFO);
+ lv_label_set_long_mode(label_title, LV_LABEL_LONG_SROLL);
+ lv_obj_set_width(label_title, LV_HOR_RES / 2);
+ lv_label_set_align(label_title, LV_LABEL_ALIGN_CENTER);
+ lv_obj_align(label_title, NULL, LV_ALIGN_IN_TOP_MID, 0, 40);
+
+ // img
+ lv_obj_t * img = lv_img_create(cont, NULL);
+ lv_img_set_src(img, ICON_SLEEP_PROMPT);
+ //lv_img_set_zoom(img,LV_IMG_ZOOM_NONE * lv_obj_get_width(tab) / 240);
+ lv_obj_add_style(img, LV_IMG_PART_MAIN, &lv_watch_image);
+ lv_obj_align(img, label_title, LV_ALIGN_OUT_BOTTOM_MID, 0, 40);
+
+ // info
+ char temp_buf[128 + 1] = {0};
+ if(0 == s_hengai_sleep_data.total_sleep_time)
+ {
+ snprintf(temp_buf, 128, "%s", lv_lang_get_text(WATCH_TEXT_ID_NO_DATA_NOW));
+ }
+ else
+ {
+ snprintf(temp_buf, 128, "%02d%s %02d%s",
+ s_hengai_sleep_data.total_sleep_time / 60,
+ lv_lang_get_text(WATCH_TEXT_ID_ACT_HOUR),
+ s_hengai_sleep_data.total_sleep_time % 60,
+ lv_lang_get_text(WATCH_TEXT_ID_ACT_MIN));
+ }
+
+ lv_obj_t * label_info = lv_label_create(cont, NULL);
+ lv_obj_add_style(label_info, LV_LABEL_PART_MAIN, &lv_watch_font40); // &lv_watch_font60);
+ lv_label_set_text(label_info, temp_buf);
+ lv_label_set_long_mode(label_info, LV_LABEL_LONG_SROLL);
+ lv_obj_set_width(label_info, LV_HOR_RES * 2 / 3);
+ lv_label_set_align(label_info, LV_LABEL_ALIGN_CENTER);
+ //lv_obj_align(label_info, NULL, LV_ALIGN_CENTER, 0, -30);
+ lv_obj_align(label_info, img, LV_ALIGN_OUT_BOTTOM_MID, 0, 50);
+
+ // update time
+ if(0 != s_hengai_sleep_data.total_sleep_time
+ && 0 != s_hengai_sleep_data.end_sleep_time.hour
+ && 0 != s_hengai_sleep_data.end_sleep_time.minute
+ )
+ {
+ lv_obj_t * label_prompt = lv_label_create(cont, NULL);
+ lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font26);
+ lv_label_set_text_id(label_prompt, WATCH_TEXT_ID_SLEEP_INFO_UPDATE_TIME);
+ lv_label_set_long_mode(label_prompt, LV_LABEL_LONG_SROLL);
+ lv_obj_set_width(label_prompt, LV_HOR_RES / 2);
+ lv_label_set_align(label_prompt, LV_LABEL_ALIGN_CENTER);
+ lv_obj_align(label_prompt, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -70);
+
+ snprintf(temp_buf, 128, "%04d.%02d.%02d %02d:%02d",
+ s_hengai_sleep_data.end_sleep_time.year,
+ s_hengai_sleep_data.end_sleep_time.month,
+ s_hengai_sleep_data.end_sleep_time.day,
+ s_hengai_sleep_data.end_sleep_time.hour,
+ s_hengai_sleep_data.end_sleep_time.minute);
+
+ lv_obj_t * label_info = lv_label_create(cont, NULL);
+ lv_obj_add_style(label_info, LV_LABEL_PART_MAIN, &lv_watch_font26);
+ lv_label_set_text(label_info, temp_buf);
+ lv_label_set_long_mode(label_info, LV_LABEL_LONG_SROLL);
+ lv_obj_set_width(label_info, LV_HOR_RES * 2 / 3);
+ lv_label_set_align(label_info, LV_LABEL_ALIGN_CENTER);
+ lv_obj_align(label_info, label_prompt, LV_ALIGN_OUT_BOTTOM_MID, 0, 8);
+ }
+
+ //
+ lv_obj_t * label_up = lv_label_create(cont, NULL);
+ lv_label_set_text(label_up, LV_SYMBOL_UP);
+ lv_obj_align(label_up, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -5);
+
+ return tab;
+}
+
+void mmi_sleep_display_create(lv_obj_t * obj)
+{
+ lv_obj_t * tileview = lv_tileview_create(obj, NULL);
+ //lv_sleep_drop_pull_obj_ext_t * ext_drop = lv_obj_allocate_ext_attr(tileview, sizeof(lv_sleep_drop_pull_obj_ext_t));
+ //(void)ext_drop;
+ LV_ASSERT_MEM(tileview);
+ lv_tileview_set_valid_positions(tileview, s_sleep_valid_pos, sizeof(s_sleep_valid_pos) / sizeof(s_sleep_valid_pos[0]));
+ 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);
+
+ lv_obj_t * tab;
+ tab = mmi_sleep_info_create(tileview, 0);
+ LV_ASSERT_MEM(tab);
+ if(tab == NULL)
+ return NULL;
+
+ tab = mmi_sleep_detail_create(tileview, 1);
+ LV_ASSERT_MEM(tab);
+ if(tab == NULL)
+ return NULL;
+
+ lv_tileview_set_tile_act(tileview, 0, 0, false);
+ lv_watch_obj_add_element(tileview);
+ lv_watch_obj_add_element(lv_page_get_scrl(tileview));
+}
+
+void mmi_sleep_no_setting_create(lv_obj_t * obj)
+{
+ lv_obj_t * cont = lv_cont_create(obj, NULL);
+ lv_obj_set_size(cont, lv_obj_get_width(obj), lv_obj_get_height(obj));
+ lv_obj_align(cont, NULL, LV_ALIGN_CENTER, 0, 0);
+ lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
+ lv_watch_obj_add_element(cont);
+
+ lv_obj_t * label_prompt = lv_label_create(cont, NULL);
+#ifdef USE_LV_WATCH_UI_466_466
+ lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font40);
+#else
+ lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font26_black);
+#endif
+ lv_label_set_text_id(label_prompt, WATCH_TEXT_ID_SLEEP_SET_PROMPT);
+ lv_label_set_long_mode(label_prompt, LV_LABEL_LONG_BREAK);
+ lv_obj_set_width(label_prompt, LV_HOR_RES * 4 / 5);
+ lv_label_set_align(label_prompt, LV_LABEL_ALIGN_CENTER);
+ lv_obj_align(label_prompt, cont, LV_ALIGN_CENTER, 0, -10);
+
+ //lv_obj_set_hidden(label_no, true);
+}
+
+void mmi_sleep_prepare_destory(lv_obj_t * activity_obj)
+{
+ printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+ lv_watch_png_cache_all_free();
+
+ //lv_hengai_sleep_ext_t * ext = wechat_actId_ext_get(ACT_ID_WECHAT_MAIN);
+ //if(NULL == ext)
+ return ;
+}
+
+lv_obj_t * mmi_sleep_create(lv_obj_t * activity_obj)
+{
+ printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+ if(activity_obj == NULL)
+ {
+ lv_watch_activity_ext_t activity_ext;
+
+ _lv_memset_00(&activity_ext, sizeof(lv_watch_activity_ext_t));
+ activity_ext.actId = ACT_ID_SLEEP;
+ activity_ext.create = (lv_watch_activity_create_f_t)mmi_sleep_create;
+ activity_ext.prepare_destory = mmi_sleep_prepare_destory;
+ activity_obj = lv_watch_creat_activity_obj(&activity_ext);
+ LV_ASSERT_MEM(activity_obj);
+ }
+
+ lv_obj_t * obj = lv_watch_obj_create(activity_obj);
+ if(NULL == obj)
+ return NULL;
+ /*Allocate the tab type specific extended data*/
+ //lv_hengai_sleep_ext_t * ext = lv_obj_allocate_ext_attr(obj, sizeof(lv_hengai_sleep_ext_t));
+ //if(NULL == ext)
+ // return NULL;
+
+ if(false == mmi_watch_sleep_switch_is_on())
+ {
+ mmi_sleep_no_setting_create(obj);
+ }
+ else
+ {
+ mmi_sleep_display_create(obj);
+ }
+
+ return obj;
+}
+
+void mmi_sleep_create_event_cb(lv_obj_t * btn, lv_event_t e)
+{
+ if(LV_EVENT_CLICKED == e)
+ {
+ if(0 == s_hengai_sleep_data_init)
+ {
+ mmi_hengai_sleep_data_nv_read();
+ s_hengai_sleep_data_init = 1;
+ }
+
+ #if 0 // for debug
+ s_hengai_sleep_data.total_sleep_time = 631;
+
+ s_hengai_sleep_data.begin_sleep_time.year = 2024,
+ s_hengai_sleep_data.begin_sleep_time.month = 10,
+ s_hengai_sleep_data.begin_sleep_time.day = 12,
+ s_hengai_sleep_data.begin_sleep_time.hour = 22,
+ s_hengai_sleep_data.begin_sleep_time.minute = 36;
+
+ s_hengai_sleep_data.end_sleep_time.year = 2024,
+ s_hengai_sleep_data.end_sleep_time.month = 10,
+ s_hengai_sleep_data.end_sleep_time.day = 13,
+ s_hengai_sleep_data.end_sleep_time.hour = 8,
+ s_hengai_sleep_data.end_sleep_time.minute = 12;
+ #endif
+
+ lv_watch_png_cache_all_free();
+ lv_obj_t * obj = mmi_sleep_create(NULL);
+ LV_ASSERT_MEM(obj);
+ }
+}
+#endif
+
#endif