hengai k18 sleep lib && sleep menu ui && sleep time setting add default value &&...
author@CHENG <2393524978@qq.com>
Sat, 12 Oct 2024 10:06:00 +0000 (18:06 +0800)
committer@CHENG <2393524978@qq.com>
Sat, 12 Oct 2024 10:06:00 +0000 (18:06 +0800)
23 files changed:
2.sdk/project/Z5_HA_K18/gui/lv_watch/mmi_default_CUSTOM.h
2.sdk/project/Z5_HA_K18/gui/lv_watch/resource/png/primary_function/list/ICON_SLEEP.png [new file with mode: 0644]
2.sdk/project/Z5_HA_K18/gui/lv_watch/resource/png/sleep/ICON_SLEEP_PROMPT.png [new file with mode: 0644]
2.sdk/sdk/gui/lv_watch/framework/language/lang_ch.c
2.sdk/sdk/gui/lv_watch/framework/language/lang_en.c
2.sdk/sdk/gui/lv_watch/framework/nvm/ui_nvm.h
2.sdk/sdk/gui/lv_watch/framework/nvm/ui_nvm_api.c
2.sdk/sdk/gui/lv_watch/include/ui_nvm_interface.h
2.sdk/sdk/gui/lv_watch/include/ui_textid.h
2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_http_protocol.c
2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_http_protocol.h
2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_sleep_k18.c
2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_sleep_k18.h
2.sdk/sdk/gui/lv_watch/lv_apps/primary_menu/primary_menu_data.c
2.sdk/sdk/gui/lv_watch/lv_watch_res.h
2.sdk/sdk/gui/lv_watch/mmi_default.h
2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c
2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.h
2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd_content.c
2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.c
2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.h
2.sdk/sdk/gui/lv_watch/modem/mmi_modem_tcp/mmi_modem_tcp_manage.c
2.sdk/sdk/gui/lv_watch/modem/mmi_modem_tcp/mmi_modem_tcp_msg_handler_impl.c

index e93c950..b1cfe08 100644 (file)
 #define MMI_CUSTOMER_CHIP_TEMP_HIGH_THRESHOLD          (70)
 #define MMI_CUSTOMER_CHIP_TEMP_LOW_THRESHOLD           (60)
 
+// sleep setting
+#define MMI_CUSTOMER_SLEEP_SETTING_TIME_SWITCH         (MMI_WATCH_SWITCH_ON) // 0-close; 1-open
+#define MMI_CUSTOMER_SLEEP_SETTING_TIME_BHOUR          (20) // 0-23
+#define MMI_CUSTOMER_SLEEP_SETTING_TIME_BMIN           (0) // 0-59
+#define MMI_CUSTOMER_SLEEP_SETTING_TIME_EHOUR          (9) // 0-23
+#define MMI_CUSTOMER_SLEEP_SETTING_TIME_EMIN           (0) // 0-59
+
 
 #endif
 
diff --git a/2.sdk/project/Z5_HA_K18/gui/lv_watch/resource/png/primary_function/list/ICON_SLEEP.png b/2.sdk/project/Z5_HA_K18/gui/lv_watch/resource/png/primary_function/list/ICON_SLEEP.png
new file mode 100644 (file)
index 0000000..519359f
Binary files /dev/null and b/2.sdk/project/Z5_HA_K18/gui/lv_watch/resource/png/primary_function/list/ICON_SLEEP.png differ
diff --git a/2.sdk/project/Z5_HA_K18/gui/lv_watch/resource/png/sleep/ICON_SLEEP_PROMPT.png b/2.sdk/project/Z5_HA_K18/gui/lv_watch/resource/png/sleep/ICON_SLEEP_PROMPT.png
new file mode 100644 (file)
index 0000000..178e5b4
Binary files /dev/null and b/2.sdk/project/Z5_HA_K18/gui/lv_watch/resource/png/sleep/ICON_SLEEP_PROMPT.png differ
index b66aead..3da3f2f 100644 (file)
@@ -986,6 +986,15 @@ const void * lang_text_ch[] = {
     "继续对话", // WATCH_TEXT_ID_AIGC_CONTINUE,
     "设备温度过高\n请暂缓使用", // WATCH_TEXT_ID_CHIP_HIGH_TEMPERATURE,
     "Voice chat", // WATCH_TEXT_ID_VOICECHAT,
+    "请在APP上开启睡眠设置", // WATCH_TEXT_ID_SLEEP_SET_PROMPT,
+    "睡眠时段", // WATCH_TEXT_ID_SLEEP_PERIOD,
+    "入睡时间", // WATCH_TEXT_ID_FALL_ASLEEP_TIME,
+    "醒来时间", // WATCH_TEXT_ID_WAKE_UP_TIME,
+    "最新数据", // WATCH_TEXT_ID_LATEST_SLEEP_INFO,
+    "数据更新于", // WATCH_TEXT_ID_SLEEP_INFO_UPDATE_TIME,
+    "暂无数据", // WATCH_TEXT_ID_NO_DATA_NOW,
+    "更多详细信息请前往手机APP查看", // WATCH_TEXT_ID_DETAIL_INFO_IN_APP,
+
     //CHENG_MODIFY
     "确认是否跌倒?", // WATCH_TEXT_ID_falldown,
     "确认是否删除",
index bc4b99f..3b7e0ac 100644 (file)
@@ -987,6 +987,15 @@ const void * lang_text_en[] = {
     "Continue", // WATCH_TEXT_ID_AIGC_CONTINUE,
     "Temperature too high\nPlease suspended use", // WATCH_TEXT_ID_CHIP_HIGH_TEMPERATURE,
     "Voice chat", // WATCH_TEXT_ID_VOICECHAT,
+    "Please enable sleep settings in APP", // WATCH_TEXT_ID_SLEEP_SET_PROMPT,
+    "Sleep period", // WATCH_TEXT_ID_SLEEP_PERIOD,
+    "Sleep time", // WATCH_TEXT_ID_FALL_ASLEEP_TIME,
+    "Wake up time", // WATCH_TEXT_ID_WAKE_UP_TIME,
+    "Latest data", // WATCH_TEXT_ID_LATEST_SLEEP_INFO,
+    "Update on", // WATCH_TEXT_ID_SLEEP_INFO_UPDATE_TIME,
+    "No data", // WATCH_TEXT_ID_NO_DATA_NOW,
+    "For more details, please view in the APP", // WATCH_TEXT_ID_DETAIL_INFO_IN_APP,
+
     //CHENG_MODIFY
     "Confirm a fall",
     "Confirm deletion",
index 283b1be..6690772 100644 (file)
@@ -97,6 +97,9 @@ extern "C" {
 #ifdef __MMI_CUSTOM_HENGAI_TCMS__
 #define NV_SECTION_UI_HENGAI_TCMS_SWITCH_LEN   (sizeof(nv_watch_switch_t))
 #endif
+#ifdef __MMI_CUSTOM_HENGAI_SLEEP_K18__
+#define NV_SECTION_UI_HENGAI_SLEEP_DATA_LEN        (sizeof(nv_watch_hengai_sleep_data_t))
+#endif
 
 
 #endif
@@ -241,6 +244,9 @@ typedef lv_fs_dir_t  ui_dir_t;
 #ifdef __MMI_CUSTOM_HENGAI_TCMS__
 #define NV_SECTION_UI_HENGAI_TCMS_SWITCH_FILE  "ui_hengai_tcms_switch.nv"
 #endif
+#ifdef __MMI_CUSTOM_HENGAI_SLEEP_K18__
+#define NV_SECTION_UI_HENGAI_SLEEP_DATA_FILE   "ui_hengai_sleep_data.nv"
+#endif
 
 
 #endif
index d1fe313..acd1447 100644 (file)
@@ -160,7 +160,11 @@ uint32_t UI_NV_Get_Section_Len(NV_UI_SECTION_ID SectionId)
                case NV_SECTION_UI_HENGAI_TCMS_SWITCH:
                        return (NV_SECTION_LEN(NV_SECTION_UI_HENGAI_TCMS_SWITCH));
        #endif
-                               
+       #ifdef __MMI_CUSTOM_HENGAI_SLEEP_K18__
+               case NV_SECTION_UI_HENGAI_SLEEP_DATA:
+                       return (NV_SECTION_LEN(NV_SECTION_UI_HENGAI_SLEEP_DATA));
+       #endif
+
                        
        #endif
 
@@ -321,6 +325,10 @@ char * UI_NV_Get_Section_path(NV_UI_SECTION_ID SectionId)
                case NV_SECTION_UI_HENGAI_TCMS_SWITCH:
                        return (NV_SECTION_FILE_PATH(NV_SECTION_UI_HENGAI_TCMS_SWITCH));
        #endif
+       #ifdef __MMI_CUSTOM_HENGAI_SLEEP_K18__
+               case NV_SECTION_UI_HENGAI_SLEEP_DATA:
+                       return (NV_SECTION_FILE_PATH(NV_SECTION_UI_HENGAI_SLEEP_DATA));
+       #endif
 
                        
        #endif
@@ -415,6 +423,9 @@ uint8_t UI_NV_Reset_Default(NV_UI_SECTION_ID SectionId)
 #ifdef __MMI_CUSTOM_HENGAI_HEALTH__
        nv_watch_hengai_health_data_t * hengai_health;
 #endif
+#ifdef __MMI_CUSTOM_HENGAI_SLEEP_K18__
+       nv_watch_hengai_sleep_data_t * hengai_sleep_data;
+#endif
 
 #endif
 
@@ -630,6 +641,7 @@ uint8_t UI_NV_Reset_Default(NV_UI_SECTION_ID SectionId)
                case NV_SECTION_UI_SLEEP_TIME_DATA:
                        sleep_time_data = lv_mem_alloc(SectionLen);
                        memset(sleep_time_data, 0x0, SectionLen);
+                       mmi_watch_sleep_time_nv_default(sleep_time_data);
                        TempData = (char *)sleep_time_data;
                        break;
        #endif
@@ -758,6 +770,13 @@ uint8_t UI_NV_Reset_Default(NV_UI_SECTION_ID SectionId)
                        TempData = (char *)mmi_switch_data;
                        break;
        #endif
+       #ifdef __MMI_CUSTOM_HENGAI_SLEEP_K18__
+               case NV_SECTION_UI_HENGAI_SLEEP_DATA:
+                       hengai_sleep_data = lv_mem_alloc(SectionLen);
+                       memset(hengai_sleep_data, 0x0, SectionLen);
+                       TempData = (char *)hengai_sleep_data;
+                       break;
+       #endif
                        
                        
        #endif
index 195afb4..6e5884c 100644 (file)
@@ -481,6 +481,41 @@ typedef struct
 #endif
 
 
+#ifdef __MMI_CUSTOM_HENGAI_SLEEP_K18__
+#define NV_MAX_SLEEP_STATE 50
+
+typedef enum
+{
+       NV_LS_STATE = 11,                               // light sleep
+       NV_DS_STATE = 12,                               // deep sleep
+       NV_REM_STATE = 2,                               // rapid eye movement
+} NV_SLEEP_STATE_E;
+
+typedef struct
+{
+       uint16_t year;
+       uint8_t month;
+       uint8_t day;
+       uint8_t hour;
+       uint8_t minute;
+} nv_sleep_time_t;
+
+typedef struct
+{
+       uint32_t duration;                      // the duration of corresponding state
+       NV_SLEEP_STATE_E state;         // state
+} nv_sleep_detail_data_t;
+
+typedef struct
+{
+       uint32_t total_sleep_time;                      // minutes
+       nv_sleep_time_t begin_sleep_time;               // sleep_time_t
+       nv_sleep_time_t end_sleep_time;
+       uint16_t state_count;                           // number of some sleep state
+       nv_sleep_detail_data_t data[NV_MAX_SLEEP_STATE];
+} __packed nv_watch_hengai_sleep_data_t;
+#endif
+
 #endif
 
 
@@ -723,6 +758,9 @@ enum
 #ifdef __MMI_CUSTOM_HENGAI_TCMS__
        NV_SECTION_UI_HENGAI_TCMS_SWITCH,                       // nv_watch_switch_t
 #endif
+#ifdef __MMI_CUSTOM_HENGAI_SLEEP_K18__
+       NV_SECTION_UI_HENGAI_SLEEP_DATA,                // nv_watch_hengai_sleep_data_t
+#endif
 
 
 #endif
index c86b23a..e35b0ca 100644 (file)
@@ -994,6 +994,15 @@ enum
     WATCH_TEXT_ID_AIGC_CONTINUE,                        /* "继续对话"                 "Continue" */
     WATCH_TEXT_ID_CHIP_HIGH_TEMPERATURE,                /* "设备温度过高\n请暂缓使用"        "Temperature too high\nPlease suspended use" */
     WATCH_TEXT_ID_VOICECHAT,                            /* "Voice chat"                 "Voice chat" */
+    WATCH_TEXT_ID_SLEEP_SET_PROMPT,                     /* "请在APP上开启睡眠设置"               "Please enable sleep settings in APP"*/
+    WATCH_TEXT_ID_SLEEP_PERIOD,                            /* "睡眠时段"                 "Sleep period" */
+    WATCH_TEXT_ID_FALL_ASLEEP_TIME,                            /* "入睡时间"                 "Sleep time" */
+    WATCH_TEXT_ID_WAKE_UP_TIME,                            /* "醒来时间"                 "Wake up time" */
+    WATCH_TEXT_ID_LATEST_SLEEP_INFO,                    /* "最新数据"                 "Latest data" */
+    WATCH_TEXT_ID_SLEEP_INFO_UPDATE_TIME,               /* "数据更新于"                 "Update on" */
+    WATCH_TEXT_ID_NO_DATA_NOW,                          /* "暂无数据"                 "No data" */
+    WATCH_TEXT_ID_DETAIL_INFO_IN_APP,                   /* "更多详细信息请前往手机APP查看"      "For more details, please view in the APP" */
+
     //CHENG_MODIFY
     WATCH_TEXT_ID_FALLDWON,                            /*确认是否跌倒*/
     WATCH_TEXT_ID_CONFIRM_DELETE,                        /*确认是否删除*/
index 2e1dac0..4de4ebf 100644 (file)
@@ -1199,9 +1199,6 @@ void mmi_hengai_tcp_health_lib_activation_check_action(void)
        {
                HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
                UART_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
-       #ifdef __MMI_CUSTOM_HENGAI_SLEEP_K18__
-               mmi_hengai_health_sleep_activation_check();
-       #endif
        }
 }
 
@@ -1332,6 +1329,10 @@ void mmi_hengai_tcp_algorithm_login_action(void)
        }
        uos_timer_stop(s_delay_timer_id);
        uos_timer_start(s_delay_timer_id, MS_TO_TICKS(1000*10), 0, mmi_hengai_tcp_algorithm_login_cb, NULL);
+
+#ifdef __MMI_CUSTOM_HENGAI_SLEEP_K18__
+       mmi_hengai_health_sleep_activation_check();
+#endif
 }
 
 bool mmi_hengai_health_data_parse(unsigned char * next_buff, unsigned int next_buff_len)
index 8aef31a..36ecd44 100644 (file)
@@ -25,6 +25,11 @@ extern "C" {
 #define HENGAI_HEALTH_DEBUG_PRINTF(fmt, ...)
 #endif
 
+#if 10
+#define UART_DEBUG_PRINTF(fmt, ...)    cplog_printf(fmt, ##__VA_ARGS__)
+#else
+#define UART_DEBUG_PRINTF(fmt, ...)
+#endif
 
 
 // #include "../../../../product/craneg_modem/cust/fit/inc/sdknet.h"
@@ -65,7 +70,8 @@ typedef enum
 void mmi_hengai_tcp_bp_back_measure_raw_data_send(void);
 void mmi_hengai_tcp_bp_measure_raw_data_send(void);
 void mmi_hengai_tcp_bp_calibrate_raw_data_send(uint8_t calibrate_times, uint16_t bp_value_high, uint16_t bp_value_low);
-void mmi_hengai_tcp_algorithm_interface_login_action(void);
+//void mmi_hengai_tcp_algorithm_interface_login_action(void);
+void mmi_hengai_tcp_algorithm_login_action(void);
 bool mmi_hengai_health_data_parse(unsigned char * next_buff, unsigned int next_buff_len);
 
 #else
@@ -89,7 +95,7 @@ void mmi_hengai_health_data_nv_read(void);
 uint8_t mmi_hengai_health_lib_activated_flag_get(void);
 
 char * mmi_hengai_health_lib_req_code_get(void);
-
+char * mmi_hengai_health_lib_act_code_get(void);
 void mmi_hengai_health_lib_act_code_set(char * act_code);
 
 char * mmi_hengai_health_token_get(void);
@@ -101,6 +107,10 @@ void mmi_hengai_bp_calibrated_flag_set(uint8_t flag);
 void mmi_hengai_bp_calibrated_time_get(hal_rtc_t * time_ptr);
 
 
+#ifdef __MMI_CUSTOM_HENGAI_SLEEP_K18__
+void mmi_hengai_health_sleep_activated_flag_set(uint8_t flag);
+uint8_t mmi_hengai_health_sleep_activated_flag_get(void);
+#endif
 
 #endif
 
index 9415a5b..5dbffe5 100644 (file)
@@ -22,29 +22,22 @@ static void mmi_hengai_gsensor_data_get(uint32_t para);
 
 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,
@@ -70,8 +63,7 @@ static bool mmi_hengai_sleep_data_send(void)
                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)
        {
@@ -99,6 +91,7 @@ static void mmi_hengai_sleep_data_get(void)
        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));
@@ -207,6 +200,393 @@ void mmi_hengai_health_sleep_lib_active(void)
                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
 
 
index 1d8d3fa..f396619 100644 (file)
@@ -25,6 +25,25 @@ void mmi_hengai_get_sleep_data_stop(void);
 void mmi_hengai_health_sleep_lib_active(void);
 
 
+#if 1
+typedef struct
+{
+       lv_watch_obj_ext_t old_ext;
+       
+       lv_obj_t * cont_no_setting;
+
+       //lv_obj_t * delete_label_prompt;
+       //lv_obj_t * delete_btn_cancel;
+       //lv_obj_t * delete_btn_ok;
+       //TIMER_ID delete_timer_id;
+
+}lv_hengai_sleep_ext_t;
+
+
+void mmi_sleep_create_event_cb(lv_obj_t * btn, lv_event_t e);
+
+#endif
+
 #endif
 
 #ifdef __cplusplus
index 1db16c0..058357c 100644 (file)
@@ -164,6 +164,10 @@ static watch_app_info_t s_main_menu_list[] =
 #ifdef __MMI_HEALTH_MEASURE_TEMPERATURE_SUPPORT__
        { ICON_TEMPERATURE_LIST, WATCH_TEXT_ID_TEMPERATURE, health_temperature_create_event_cb},
 #endif
+#ifdef __MMI_CUSTOM_HENGAI_SLEEP_K18__
+       { ICON_SLEEP_LIST, WATCH_TEXT_ID_SLEEP, mmi_sleep_create_event_cb},
+#endif
+
 #ifdef __MMI_WECHAT_SUPPORT__
        { ICON_WECHAT_LIST, WATCH_TEXT_ID_WECHAT, wechat_create_event_cb },
 #endif
index fe599f6..d70b729 100644 (file)
@@ -286,6 +286,9 @@ LV_IMG_DECLARE(img_poweron_logo);
 #ifdef __MMI_CUSTOM_HENGAI_HEALTH__
 #define ICON_BLOOD_PRESSURE_LIST         "R:/png/primary_function/list/ICON_BLOOD_PRESSURE.png"
 #endif
+#ifdef __MMI_CUSTOM_HENGAI_SLEEP_K18__
+#define ICON_SLEEP_LIST         "R:/png/primary_function/list/ICON_SLEEP.png"
+#endif
 
 #define ICON_WECHAT_LIST             "R:/png/primary_function/list/icon_wechat.png"
 #if USE_LV_WATCH_CAMERA != 0
@@ -832,6 +835,9 @@ LV_IMG_DECLARE(img_poweron_logo);
 #if USE_LV_WATCH_SLEEP!= 0
 #define ICON_SLEEP_IMAGE                               "R:/png/sleep/icon_sleep_image.png"
 #endif
+#ifdef __MMI_CUSTOM_HENGAI_SLEEP_K18__
+#define ICON_SLEEP_PROMPT                                                      "R:/png/sleep/ICON_SLEEP_PROMPT.png"
+#endif
 
 //activity
 #if USE_LV_WATCH_ACTIVITY!= 0
index c957d8f..c430a80 100644 (file)
@@ -425,6 +425,38 @@ extern "C"
 #endif
 
 
+// sleep setting
+#ifdef MMI_CUSTOMER_SLEEP_SETTING_TIME_SWITCH
+#define MMI_SLEEP_SETTING_TIME_SWITCH_DEFAULT          MMI_CUSTOMER_SLEEP_SETTING_TIME_SWITCH
+#else
+#define MMI_SLEEP_SETTING_TIME_SWITCH_DEFAULT          (MMI_WATCH_SWITCH_OFF) // 0-close; 1-open
+#endif
+
+#ifdef MMI_CUSTOMER_SLEEP_SETTING_TIME_BHOUR
+#define MMI_SLEEP_SETTING_TIME_BHOUR_DEFAULT           MMI_CUSTOMER_SLEEP_SETTING_TIME_BHOUR
+#else
+#define MMI_SLEEP_SETTING_TIME_BHOUR_DEFAULT           (20) // 0-23
+#endif
+
+#ifdef MMI_CUSTOMER_SLEEP_SETTING_TIME_BMIN
+#define MMI_SLEEP_SETTING_TIME_BMIN_DEFAULT            MMI_CUSTOMER_SLEEP_SETTING_TIME_BMIN
+#else
+#define MMI_SLEEP_SETTING_TIME_BMIN_DEFAULT            (0) // 0-59
+#endif
+
+#ifdef MMI_CUSTOMER_SLEEP_SETTING_TIME_EHOUR
+#define MMI_SLEEP_SETTING_TIME_EHOUR_DEFAULT           MMI_CUSTOMER_SLEEP_SETTING_TIME_EHOUR
+#else
+#define MMI_SLEEP_SETTING_TIME_EHOUR_DEFAULT           (9) // 0-23
+#endif
+
+#ifdef MMI_CUSTOMER_SLEEP_SETTING_TIME_EMIN
+#define MMI_SLEEP_SETTING_TIME_EMIN_DEFAULT            MMI_CUSTOMER_SLEEP_SETTING_TIME_EMIN
+#else
+#define MMI_SLEEP_SETTING_TIME_EMIN_DEFAULT            (0) // 0-59
+#endif
+
+
 
 #endif
 
index cb1dd30..3117027 100644 (file)
@@ -555,13 +555,46 @@ static bool mmi_protocol_fzd_send_with_data(MMI_PROTOCOL_FZD_ACTION_ENUM action,
 
 /////////////////////////
 
+
+static void * s_login_timer_id = NULL;
+static void mmi_protocol_fzd_login_check_stop(void)
+{
+       if(NULL != s_login_timer_id)
+       {
+               uos_timer_stop(s_login_timer_id);
+               uos_timer_delete(s_login_timer_id);
+       }
+}
+
+static void mmi_protocol_fzd_login_check_cb(uint32_t para)
+{
+       send_task_msg_tcp_reconnect(NULL);
+}
+
+static void mmi_protocol_fzd_login_check_start(void)
+{
+       if(NULL == s_login_timer_id)
+       {
+               uos_timer_create(&s_login_timer_id);
+       }
+       else
+       {
+               uos_timer_stop(s_login_timer_id);
+       }
+       uos_timer_start(s_login_timer_id, MS_TO_TICKS(1000 * 5), 0, mmi_protocol_fzd_login_check_cb, NULL);
+}
+
 bool mmi_protocol_fzd_action_LINK(void)
 {
+       mmi_protocol_fzd_login_check_start();
+       
        return mmi_protocol_fzd_send_without_data(MMI_FZD_ACTION_LINK);
 }
 
 bool mmi_protocol_fzd_parse_LINK(unsigned char * next_buff, unsigned int next_buff_len)
 {
+       mmi_protocol_fzd_login_check_stop();
+
 #ifdef __MMI_CUSTOM_HENGAI_HEALTH__
 #ifdef __MMI_CUSTOM_HENGAI_HEALTH_UPLOAD_USE_TCP__
        //mmi_hengai_tcp_algorithm_interface_login_action();
@@ -3655,7 +3688,7 @@ bool mmi_protocol_fzd_action_hengai_activation_feedback(void)
 }
 #endif
 
-#if defined(__MMI_CUSTOM_HENGAI_SLEEP__) // || defined(__MMI_CUSTOM_HENGAI_SLEEP_K18__)
+#if defined(__MMI_CUSTOM_HENGAI_SLEEP__) || defined(__MMI_CUSTOM_HENGAI_SLEEP_K18__)
 bool mmi_protocol_fzd_action_hengai_sleep_data(char * file_buf, uint32_t file_size)
 {
        bool result = false;
index ab8a29d..63b6e3a 100644 (file)
@@ -194,7 +194,7 @@ typedef enum
        MMI_FZD_ACTION_HENGAI_ACTIVATION,
        MMI_FZD_ACTION_HENGAI_ACTIVATION_FEEDBACK,
 #endif
-#if defined(__MMI_CUSTOM_HENGAI_SLEEP__) // || defined(__MMI_CUSTOM_HENGAI_SLEEP_K18__)
+#if defined(__MMI_CUSTOM_HENGAI_SLEEP__) || defined(__MMI_CUSTOM_HENGAI_SLEEP_K18__)
        MMI_FZD_ACTION_HENGAI_SLEEP_DATA,
 #if 0
 MMI_FZD_ACTION_GSENSOR_DATA_UPLOAD,
@@ -368,7 +368,7 @@ bool mmi_protocol_fzd_action_hengai_activation(char * req_code);
 bool mmi_protocol_fzd_parse_ACTION_HENGAI_ACTIVATION(unsigned char * next_buff, unsigned int next_buff_len);
 bool mmi_protocol_fzd_action_hengai_activation_feedback(void);
 #endif
-#if defined(__MMI_CUSTOM_HENGAI_SLEEP__) // || defined(__MMI_CUSTOM_HENGAI_SLEEP_K18__)
+#if defined(__MMI_CUSTOM_HENGAI_SLEEP__) || defined(__MMI_CUSTOM_HENGAI_SLEEP_K18__)
 bool mmi_protocol_fzd_action_hengai_sleep_data(char * file_buf, uint32_t file_size);
 #endif
 #ifdef __MMI_CUSTOM_HENGAI_TCMS__
index 1312f4f..1fedb8f 100644 (file)
@@ -126,7 +126,7 @@ static unsigned char * mmi_protocol_fzd_action_string_get(MMI_PROTOCOL_FZD_ACTIO
                        {MMI_FZD_ACTION_HENGAI_ACTIVATION, "HENGAI_ACTIVATION"},
                        {MMI_FZD_ACTION_HENGAI_ACTIVATION_FEEDBACK, "HENGAI_ACTIVATION_FEEDBACK"},
                #endif
-               #if defined(__MMI_CUSTOM_HENGAI_SLEEP__) // || defined(__MMI_CUSTOM_HENGAI_SLEEP_K18__)
+               #if defined(__MMI_CUSTOM_HENGAI_SLEEP__) || defined(__MMI_CUSTOM_HENGAI_SLEEP_K18__)
                        {MMI_FZD_ACTION_HENGAI_SLEEP_DATA, "HENGAI_SLEEP_DATA"},
 
                        #if 0
@@ -449,7 +449,7 @@ static bool mmi_protocol_fzd_content_parse(unsigned char * content_ptr, unsigned
                case MMI_FZD_ACTION_HENGAI_ACTIVATION_FEEDBACK:
                        break;
        #endif
-       #if defined(__MMI_CUSTOM_HENGAI_SLEEP__) // || defined(__MMI_CUSTOM_HENGAI_SLEEP_K18__)
+       #if defined(__MMI_CUSTOM_HENGAI_SLEEP__) || defined(__MMI_CUSTOM_HENGAI_SLEEP_K18__)
                case MMI_FZD_ACTION_HENGAI_SLEEP_DATA:
                        break;
 
index 04ec650..3fcb74e 100644 (file)
@@ -1243,6 +1243,15 @@ void mmi_watch_do_not_disturb_task_clean(void)
 static nv_watch_sleep_time_t s_sleep_time_data = {0};
 static uint8_t s_sleep_mission_in_progress = 0;
 
+void mmi_watch_sleep_time_nv_default(nv_watch_sleep_time_t * sleep_time_data)
+{
+       sleep_time_data->on_off = MMI_SLEEP_SETTING_TIME_SWITCH_DEFAULT;
+       sleep_time_data->begin_hour = MMI_SLEEP_SETTING_TIME_BHOUR_DEFAULT;
+       sleep_time_data->begin_min = MMI_SLEEP_SETTING_TIME_BMIN_DEFAULT;
+       sleep_time_data->end_hour = MMI_SLEEP_SETTING_TIME_EHOUR_DEFAULT;
+       sleep_time_data->end_min = MMI_SLEEP_SETTING_TIME_EMIN_DEFAULT;
+}
+
 void mmi_watch_sleep_time_nv_write(void)
 {
        uint32_t nv_data_length = sizeof(nv_watch_sleep_time_t);
@@ -1273,6 +1282,22 @@ void mmi_watch_sleep_time_data_set(nv_watch_sleep_time_t * data)
        }
 }
 
+void mmi_watch_sleep_time_data_get(nv_watch_sleep_time_t * data)
+{
+       if(NULL != data)
+       {
+               _lv_memcpy(data, &s_sleep_time_data, sizeof(nv_watch_sleep_time_t));
+       }
+}
+
+bool mmi_watch_sleep_switch_is_on(void)
+{
+       if(1 == s_sleep_time_data.on_off)
+               return true;
+
+       return false;
+}
+
 bool mmi_watch_time_is_in_sleep_time(void)
 {
        hal_rtc_t cur_time = {0};
index 2d4841e..39879de 100644 (file)
@@ -97,6 +97,7 @@ void mmi_watch_do_not_disturb_task_clean(void);
 #endif
 
 #ifdef __MMI_SLEEP_FUNCTION_SUPPORT__
+void mmi_watch_sleep_time_nv_default(nv_watch_sleep_time_t * sleep_time_data);
 void mmi_watch_sleep_time_nv_read(void);
 void mmi_watch_sleep_time_data_set(nv_watch_sleep_time_t * data);
 void mmi_watch_sleep_time_mission_check(void);
index 2ee4043..fc71dca 100644 (file)
@@ -57,6 +57,7 @@ int get_rand_relink_time(void)
 void manage_socket_callback(int sfd, int event, unsigned int len)
 {
        printf("[@CHENG_DEBUG][%s][%d]: event=%d\n", __FUNCTION__, __LINE__, event);
+       cplog_printf("[@CHENG_DEBUG][%s][%d]: event=%d\n", __FUNCTION__, __LINE__, event);
        
        printf("%s, sfd = %d, event = 0x%x, data len = %d\n",__FUNCTION__, sfd, event, len);
 
index f218057..f91be3a 100644 (file)
@@ -120,6 +120,7 @@ void send_tcp_cmdmsg_handler_impl(void *param)
        //printf("[@CHENG_DEBUG][%d]: str=%s\n", __LINE__, send_cmdmsg_buff + 96);
        //printf("[@CHENG_DEBUG][%d]: str=%s\n", __LINE__, send_cmdmsg_buff + 192);
        //printf("[@CHENG_DEBUG][%d]: str=%s\n", __LINE__, send_cmdmsg_buff + 288);
+       cplog_printf("[@CHENG_DEBUG][%d]: write_str=%s\n", __LINE__, send_cmdmsg_buff);
        
        if((NULL != send_cmdmsg_buff) && (0 < send_cmdmsg_size))
        {
@@ -202,6 +203,7 @@ void read_tcp_cmdmsg_handler_impl(void *msg)
        
        printf("[@CHENG_DEBUG][%s][%d]: ret=%d,len=%d,ptr=0x%x\n", __FUNCTION__, __LINE__, recv_ret, recv_len, recv_str);
        printf("[@CHENG_DEBUG][%d]: str=%s\n", __LINE__, recv_str);
+       cplog_printf("[@CHENG_DEBUG][%d]: read_str=%s\n", __LINE__, recv_str);
 
        if(0 <= recv_ret)
        {