From: @CHENG <2393524978@qq.com> Date: Thu, 3 Apr 2025 10:35:25 +0000 (+0800) Subject: Z5_HA_K18 新需求修改 __MMI_Z5_HA_K18_REMIND__ X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=f82a7fa14336351f13bd2b9884bfaa858f7034e5;p=mirrors%2FASR3603_Z5.git Z5_HA_K18 新需求修改 __MMI_Z5_HA_K18_REMIND__ --- diff --git a/2.sdk/project/Z5_HA_K18/gui/lv_watch/resource/audio/AUDIO_REMIND_CLOCK_IN.mp3 b/2.sdk/project/Z5_HA_K18/gui/lv_watch/resource/audio/AUDIO_REMIND_CLOCK_IN.mp3 new file mode 100644 index 00000000..eb1b9565 Binary files /dev/null and b/2.sdk/project/Z5_HA_K18/gui/lv_watch/resource/audio/AUDIO_REMIND_CLOCK_IN.mp3 differ diff --git a/2.sdk/project/Z5_HA_K18/gui/lv_watch/resource/audio/AUDIO_REMIND_WAKE_UP.mp3 b/2.sdk/project/Z5_HA_K18/gui/lv_watch/resource/audio/AUDIO_REMIND_WAKE_UP.mp3 new file mode 100644 index 00000000..94d2c4d7 Binary files /dev/null and b/2.sdk/project/Z5_HA_K18/gui/lv_watch/resource/audio/AUDIO_REMIND_WAKE_UP.mp3 differ diff --git a/2.sdk/project/Z5_HA_K18/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h b/2.sdk/project/Z5_HA_K18/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h index c4a4f044..6b25ff86 100644 --- a/2.sdk/project/Z5_HA_K18/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h +++ b/2.sdk/project/Z5_HA_K18/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h @@ -221,6 +221,9 @@ #define __MMI_CUSTOM_HENGAI_MICRO_HEALTH_CHECKUP__ +#define __MMI_Z5_HA_K18_REMIND__ +#define __MMI_REMIND_WAKE_UP_SUPPORT__ + #endif diff --git a/2.sdk/sdk/gui/lv_watch/framework/language/lang_ch.c b/2.sdk/sdk/gui/lv_watch/framework/language/lang_ch.c index f12aadd6..cc69c9d4 100644 --- a/2.sdk/sdk/gui/lv_watch/framework/language/lang_ch.c +++ b/2.sdk/sdk/gui/lv_watch/framework/language/lang_ch.c @@ -903,6 +903,7 @@ const void * lang_text_ch[] = { "该回家了", // WATCH_TEXT_ID_HOME_PROMPT, "该吃药了", // WATCH_TEXT_ID_MEDICINE_PROMPT, "该喝水了", // WATCH_TEXT_ID_DRINK_PROMPT, + "该打卡了", // WATCH_TEXT_ID_CLOCK_IN_PROMPT, "上传照片?", // WATCH_TEXT_ID_UPLOAD_PHOTO_Q, "发送", // WATCH_TEXT_ID_COMMON_SEND, "发送中", // WATCH_TEXT_ID_COMMON_SENDING, diff --git a/2.sdk/sdk/gui/lv_watch/framework/language/lang_en.c b/2.sdk/sdk/gui/lv_watch/framework/language/lang_en.c index 35bc04bc..1ce6b6ff 100644 --- a/2.sdk/sdk/gui/lv_watch/framework/language/lang_en.c +++ b/2.sdk/sdk/gui/lv_watch/framework/language/lang_en.c @@ -904,6 +904,7 @@ const void * lang_text_en[] = { "time to go home", // WATCH_TEXT_ID_HOME_PROMPT, "time to take medicine", // WATCH_TEXT_ID_MEDICINE_PROMPT, "time to drink", // WATCH_TEXT_ID_DRINK_PROMPT, + "time to clock in", // WATCH_TEXT_ID_CLOCK_IN_PROMPT, "Upload photo?", // WATCH_TEXT_ID_UPLOAD_PHOTO_Q, "Send", // WATCH_TEXT_ID_COMMON_SEND, "Sending", // WATCH_TEXT_ID_COMMON_SENDING, diff --git a/2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.c b/2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.c index 274ca1d2..de570482 100644 --- a/2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.c +++ b/2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.c @@ -227,6 +227,27 @@ void mmi_ui_msg_action_k18_nfc_experience(void) } #endif +#ifdef __MMI_Z5_HA_K18_REMIND__ +void mmi_ui_msg_action_k18_wake_now(void) +{ + mmi_ui_msg_action_no_para_msg(MMI_MSG_K18_WAKE_NOW); +} + +void mmi_ui_msg_action_k18_wake_timing(void) +{ + mmi_ui_msg_action_no_para_msg(MMI_MSG_K18_WAKE_TIMING); +} + +void mmi_ui_msg_action_k18_clock_in(void) +{ + mmi_ui_msg_action_no_para_msg(MMI_MSG_K18_CLOCK_IN); +} + +void mmi_ui_msg_action_k18_warning(void) +{ + mmi_ui_msg_action_no_para_msg(MMI_MSG_K18_WARNING); +} +#endif diff --git a/2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.h b/2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.h index 2550a55f..96a6d880 100644 --- a/2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.h +++ b/2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.h @@ -91,6 +91,12 @@ void mmi_ui_msg_action_hengai_bp_measure_result(bool state, uint16_t bp_value_hi #ifdef MMI_PROJECT_Z5_HA_K18_NFC void mmi_ui_msg_action_k18_nfc_experience(void); #endif +#ifdef __MMI_Z5_HA_K18_REMIND__ +void mmi_ui_msg_action_k18_wake_now(void); +void mmi_ui_msg_action_k18_wake_timing(void); +void mmi_ui_msg_action_k18_clock_in(void); +void mmi_ui_msg_action_k18_warning(void); +#endif void mmi_ui_falldown(void); diff --git a/2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.c b/2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.c index 44739f3b..b2fb1f54 100644 --- a/2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.c +++ b/2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.c @@ -473,6 +473,24 @@ void watch_ui_message_handle(uint16_t msgid, void * msg) break; #endif + #ifdef __MMI_Z5_HA_K18_REMIND__ + case MMI_MSG_K18_WAKE_NOW: + mmi_ui_msg_update_k18_wake_now(); + break; + + case MMI_MSG_K18_WAKE_TIMING: + mmi_ui_msg_update_k18_wake_timing(); + break; + + case MMI_MSG_K18_CLOCK_IN: + mmi_ui_msg_update_k18_clock_in(); + break; + + case MMI_MSG_K18_WARNING: + mmi_ui_msg_update_k18_warning(); + break; + #endif + #endif diff --git a/2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.h b/2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.h index b0d61681..5bdde89a 100644 --- a/2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.h +++ b/2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.h @@ -140,7 +140,12 @@ enum #ifdef MMI_PROJECT_Z5_HA_K18_NFC MMI_MSG_K18_NFC_EXPERIENCE, #endif - +#ifdef __MMI_Z5_HA_K18_REMIND__ + MMI_MSG_K18_WAKE_NOW, + MMI_MSG_K18_WAKE_TIMING, + MMI_MSG_K18_CLOCK_IN, + MMI_MSG_K18_WARNING, +#endif #endif diff --git a/2.sdk/sdk/gui/lv_watch/framework/nvm/ui_nvm.h b/2.sdk/sdk/gui/lv_watch/framework/nvm/ui_nvm.h index 6690772b..b9be263c 100644 --- a/2.sdk/sdk/gui/lv_watch/framework/nvm/ui_nvm.h +++ b/2.sdk/sdk/gui/lv_watch/framework/nvm/ui_nvm.h @@ -100,6 +100,9 @@ extern "C" { #ifdef __MMI_CUSTOM_HENGAI_SLEEP_K18__ #define NV_SECTION_UI_HENGAI_SLEEP_DATA_LEN (sizeof(nv_watch_hengai_sleep_data_t)) #endif +#ifdef __MMI_Z5_HA_K18_REMIND__ +#define NV_SECTION_UI_K18_WAKE_TIMING_LEN (sizeof(nv_watch_k18_wake_timing_t)) +#endif #endif @@ -247,6 +250,9 @@ typedef lv_fs_dir_t ui_dir_t; #ifdef __MMI_CUSTOM_HENGAI_SLEEP_K18__ #define NV_SECTION_UI_HENGAI_SLEEP_DATA_FILE "ui_hengai_sleep_data.nv" #endif +#ifdef __MMI_Z5_HA_K18_REMIND__ +#define NV_SECTION_UI_K18_WAKE_TIMING_FILE "ui_k18_wake_timing.nv" +#endif #endif diff --git a/2.sdk/sdk/gui/lv_watch/framework/nvm/ui_nvm_api.c b/2.sdk/sdk/gui/lv_watch/framework/nvm/ui_nvm_api.c index acd1447c..7aed6ca5 100644 --- a/2.sdk/sdk/gui/lv_watch/framework/nvm/ui_nvm_api.c +++ b/2.sdk/sdk/gui/lv_watch/framework/nvm/ui_nvm_api.c @@ -164,6 +164,10 @@ uint32_t UI_NV_Get_Section_Len(NV_UI_SECTION_ID SectionId) case NV_SECTION_UI_HENGAI_SLEEP_DATA: return (NV_SECTION_LEN(NV_SECTION_UI_HENGAI_SLEEP_DATA)); #endif + #ifdef __MMI_Z5_HA_K18_REMIND__ + case NV_SECTION_UI_K18_WAKE_TIMING: + return (NV_SECTION_LEN(NV_SECTION_UI_K18_WAKE_TIMING)); + #endif #endif @@ -329,6 +333,10 @@ char * UI_NV_Get_Section_path(NV_UI_SECTION_ID SectionId) case NV_SECTION_UI_HENGAI_SLEEP_DATA: return (NV_SECTION_FILE_PATH(NV_SECTION_UI_HENGAI_SLEEP_DATA)); #endif + #ifdef __MMI_Z5_HA_K18_REMIND__ + case NV_SECTION_UI_K18_WAKE_TIMING: + return (NV_SECTION_FILE_PATH(NV_SECTION_UI_K18_WAKE_TIMING)); + #endif #endif @@ -426,6 +434,9 @@ uint8_t UI_NV_Reset_Default(NV_UI_SECTION_ID SectionId) #ifdef __MMI_CUSTOM_HENGAI_SLEEP_K18__ nv_watch_hengai_sleep_data_t * hengai_sleep_data; #endif +#ifdef __MMI_Z5_HA_K18_REMIND__ + nv_watch_k18_wake_timing_t * k18_wake_timing_data; +#endif #endif @@ -777,6 +788,13 @@ uint8_t UI_NV_Reset_Default(NV_UI_SECTION_ID SectionId) TempData = (char *)hengai_sleep_data; break; #endif + #ifdef __MMI_Z5_HA_K18_REMIND__ + case NV_SECTION_UI_K18_WAKE_TIMING: + k18_wake_timing_data = lv_mem_alloc(SectionLen); + memset(k18_wake_timing_data, 0x0, SectionLen); + TempData = (char *)k18_wake_timing_data; + break; + #endif #endif diff --git a/2.sdk/sdk/gui/lv_watch/include/ui_activity_id.h b/2.sdk/sdk/gui/lv_watch/include/ui_activity_id.h index 984fcb78..0babf05e 100644 --- a/2.sdk/sdk/gui/lv_watch/include/ui_activity_id.h +++ b/2.sdk/sdk/gui/lv_watch/include/ui_activity_id.h @@ -251,6 +251,9 @@ enum #endif #ifdef MMI_PROJECT_Z5_HA_K18_NFC ACT_ID_K18_NFC_EXPERIENCE, +#endif +#ifdef __MMI_Z5_HA_K18_REMIND__ + ACT_ID_K18_WARNING, #endif ACT_ID_WATCH_FALLDWON, diff --git a/2.sdk/sdk/gui/lv_watch/include/ui_nvm_interface.h b/2.sdk/sdk/gui/lv_watch/include/ui_nvm_interface.h index d3cfd1f8..ef438b03 100644 --- a/2.sdk/sdk/gui/lv_watch/include/ui_nvm_interface.h +++ b/2.sdk/sdk/gui/lv_watch/include/ui_nvm_interface.h @@ -453,6 +453,15 @@ typedef struct } __packed nv_watch_remind_drink_t; #endif +#ifdef __MMI_Z5_HA_K18_REMIND__ +typedef struct +{ + unsigned char prompt_type; // 0-ring;1-vibrate + unsigned int interval; // second +} __packed nv_watch_k18_wake_timing_t; +#endif + + typedef struct { @@ -779,6 +788,9 @@ enum #ifdef __MMI_CUSTOM_HENGAI_SLEEP_K18__ NV_SECTION_UI_HENGAI_SLEEP_DATA, // nv_watch_hengai_sleep_data_t #endif +#ifdef __MMI_Z5_HA_K18_REMIND__ + NV_SECTION_UI_K18_WAKE_TIMING, // nv_watch_k18_wake_timing_t +#endif #endif diff --git a/2.sdk/sdk/gui/lv_watch/include/ui_textid.h b/2.sdk/sdk/gui/lv_watch/include/ui_textid.h index 67a306b9..f0060194 100644 --- a/2.sdk/sdk/gui/lv_watch/include/ui_textid.h +++ b/2.sdk/sdk/gui/lv_watch/include/ui_textid.h @@ -910,6 +910,7 @@ enum WATCH_TEXT_ID_HOME_PROMPT, /* "该回家了" "time to go home" */ WATCH_TEXT_ID_MEDICINE_PROMPT, /* "该吃药了" "time to take medicine" */ WATCH_TEXT_ID_DRINK_PROMPT, /* "该喝水了" "time to drink" */ + WATCH_TEXT_ID_CLOCK_IN_PROMPT, /* "该打卡了" "time to clock in" */ WATCH_TEXT_ID_UPLOAD_PHOTO_Q, /* "上传照片?" "Upload photo?" */ WATCH_TEXT_ID_COMMON_SEND, /* "发送" "Send" */ WATCH_TEXT_ID_COMMON_SENDING, /* "发送中" "Sending" */ diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/custom_function.c b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/custom_function.c index ed8a9821..3f11767a 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/custom_function.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/custom_function.c @@ -41,6 +41,9 @@ #ifdef MMI_PROJECT_Z5_HA_K18_NFC #include "k18_nfc_experience_ui.c" #endif +#ifdef __MMI_Z5_HA_K18_REMIND__ +#include "k18_remind.c" +#endif diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/custom_function.h b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/custom_function.h index ac8e77dd..2ae252d6 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/custom_function.h +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/custom_function.h @@ -53,6 +53,9 @@ extern "C" { #ifdef MMI_PROJECT_Z5_HA_K18_NFC #include "k18_nfc_experience_ui.h" #endif +#ifdef __MMI_Z5_HA_K18_REMIND__ +#include "k18_remind.h" +#endif diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/k18_remind.c b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/k18_remind.c new file mode 100644 index 00000000..506a0995 --- /dev/null +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/k18_remind.c @@ -0,0 +1,607 @@ + + + +#include "lv_watch.h" + +#ifdef __MMI_Z5_HA_K18_REMIND__ + + +static void * s_clock_in_timer = NULL; + +static bool mmi_k18_wake_permit_check(void) +{ + if(true == mmi_active_screen_is_prohibit_interrupted() + #ifdef __MMI_ZHSX_SUPPORT_DO_NOT_DISTURB__ + || true == mmi_watch_is_in_do_not_disturb_time() + #endif + ) + { + K18_REMIND_LOG("[@CHENG_DEBUG][%s][%d]: not permit\n", __FUNCTION__, __LINE__); + return false; + } +#ifdef __MMI_WECHAT_SUPPORT__ + if(true == wechat_screen_is_prohibit_interrupted()) + { + K18_REMIND_LOG("[@CHENG_DEBUG][%s][%d]: not permit\n", __FUNCTION__, __LINE__); + return false; + } +#endif + + if(true == mmi_remind_screen_is_active()) + { + K18_REMIND_LOG("[@CHENG_DEBUG][%s][%d]: not permit\n", __FUNCTION__, __LINE__); + return false; + } + + return true; +} + +/* +{ +"code":"32003" // É豸´ò¿¨»Ø¸´ +"deviceID":"IMEI" // ÊÖ±íÉ豸ID +} +*/ +void mmi_k18_clock_in_close(void) +{ + int ret = 0; + char * data_ptr = NULL; + int data_len = 128; + int temp_len = 0; + + data_ptr = lv_mem_alloc(data_len); + if(NULL == data_ptr) + { + K18_REMIND_LOG("[@CHENG_DEBUG][%s][%d]: memory alloc failed\n", __FUNCTION__, __LINE__); + ret = -1; + goto EXIT_FUNC; + } + _lv_memset_00(data_ptr, data_len); + + temp_len = 0; + temp_len += sprintf(data_ptr + temp_len, "{\"code\":\"32003\","); + + char imei[16 + 1] = {0}; + app_adp_get_imei_req(imei); + temp_len += sprintf(data_ptr + temp_len, "\"deviceID\":\"%s\"}", imei); + + mmi_protocol_fzd_action_common_msg_up(data_ptr, temp_len); + +EXIT_FUNC: + if(NULL != data_ptr) + { + lv_mem_free(data_ptr); + data_ptr = NULL; + } + + return ret; +} + +void mmi_ui_msg_update_k18_clock_in(void) +{ + mmi_remind_clock_in_screen_active(); +} + +static void mmi_k18_wake_clock_in_timer_callback(uint32_t param) +{ + if(false == mmi_k18_wake_permit_check()) + { + K18_REMIND_LOG("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + return ; + } + + // ui + mmi_watch_wake_up(); + mmi_ui_msg_action_k18_clock_in(); +} + +static void mmi_k18_wake_clock_in_timer_start(unsigned int ms_interval) +{ + if(NULL != s_clock_in_timer) + { + uos_timer_stop(s_clock_in_timer); + } + else + { + uos_timer_create(&s_clock_in_timer); + } + uos_timer_start(s_clock_in_timer, + MS_TO_TICKS(ms_interval), + 0, + mmi_k18_wake_clock_in_timer_callback, + NULL); +} + +/* +{ +"code":"32001" // ʵʱ»½Ðѻظ´ +"deviceID":"IMEI" // ÊÖ±íÉ豸ID +} +*/ +static int mmi_k18_wake_reply_server(void) +{ + int ret = 0; + char * data_ptr = NULL; + int data_len = 128; + int temp_len = 0; + + data_ptr = lv_mem_alloc(data_len); + if(NULL == data_ptr) + { + K18_REMIND_LOG("[@CHENG_DEBUG][%s][%d]: memory alloc failed\n", __FUNCTION__, __LINE__); + ret = -1; + goto EXIT_FUNC; + } + _lv_memset_00(data_ptr, data_len); + + temp_len = 0; + temp_len += sprintf(data_ptr + temp_len, "{\"code\":\"32001\","); + + char imei[16 + 1] = {0}; + app_adp_get_imei_req(imei); + temp_len += sprintf(data_ptr + temp_len, "\"deviceID\":\"%s\"}", imei); + + mmi_protocol_fzd_action_common_msg_up(data_ptr, temp_len); + +EXIT_FUNC: + if(NULL != data_ptr) + { + lv_mem_free(data_ptr); + data_ptr = NULL; + } + + return ret; +} + + +static int s_wake_now_type = 0; +static int s_wake_now_interval = 0; +int mmi_k18_wake_now_info_type_get(void) +{ + return s_wake_now_type; +} + +int mmi_k18_wake_now_info_interval_get(void) +{ + return s_wake_now_interval; +} + +/* +{ +"code":"31001" // ʵʱ»½ÐÑ +"type":0, // 0-ÏìÁåÌáʾ£»1-Õð¶¯Ìáʾ +"duration":600, // ¾­¹ý¸Ãʱ¼äºó£¬ÌáÐÑ´ò¿¨£¬µ¥Î» Ãë +} +*/ +void mmi_k18_wake_now_info_set(cJSON * root_json) +{ + K18_REMIND_LOG("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + if(false == mmi_k18_wake_permit_check()) + { + K18_REMIND_LOG("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + return ; + } + + // data + s_wake_now_type = cJSON_GetIntValue(cJSON_GetObjectItem(root_json, "type")); // 0-ring;1-vibrate + s_wake_now_interval = cJSON_GetIntValue(cJSON_GetObjectItem(root_json, "duration")); // second + + // ui + mmi_watch_wake_up(); + mmi_ui_msg_action_k18_wake_now(); +} + +void mmi_k18_wake_now_close(unsigned char is_active) +{ + if(is_active) + { + mmi_k18_wake_reply_server(); + } + + // timer to create clock in screen + unsigned int ms_interval = mmi_k18_wake_now_info_interval_get() * 1000; + mmi_k18_wake_clock_in_timer_start(ms_interval); +} + +void mmi_ui_msg_update_k18_wake_now(void) +{ + mmi_remind_wake_now_screen_active(); +} + + +static nv_watch_k18_wake_timing_t s_k18_wake_timing_info = {0}; +int mmi_k18_wake_timing_info_type_get(void) +{ + return s_k18_wake_timing_info.prompt_type; +} + +int mmi_k18_wake_timing_info_interval_get(void) +{ + return s_k18_wake_timing_info.interval; +} + +static void mmi_k18_wake_timing_type_interval_nv_write(void) +{ + uint32_t nv_data_length = sizeof(nv_watch_k18_wake_timing_t); + + if(nv_data_length != UI_NV_Write_Req(NV_SECTION_UI_K18_WAKE_TIMING, 0, nv_data_length, (uint8_t *)&s_k18_wake_timing_info)) + { + K18_REMIND_LOG("[@CHENG_DEBUG][%s][%d]: nv write fail\n", __FUNCTION__, __LINE__); + } +} + +void mmi_k18_wake_timing_type_interval_nv_read(void) +{ + uint32_t nv_data_length = sizeof(nv_watch_k18_wake_timing_t); + + if(nv_data_length != UI_NV_Read_Req(NV_SECTION_UI_K18_WAKE_TIMING, 0, nv_data_length, (uint8_t *)&s_k18_wake_timing_info)) + { + K18_REMIND_LOG("[@CHENG_DEBUG][%s][%d]: nv read fail\n", __FUNCTION__, __LINE__); + } +} + +static void mmi_k18_wake_timing_info_detail(nv_watch_remind_item_t *data, char * alarm_str, unsigned char index) +{ + char * temp_ptr = NULL; + + temp_ptr = km_strtok_r(NULL, ":", &alarm_str); + data->remind_info[index].hour = atoi(temp_ptr); + + temp_ptr = km_strtok_r(NULL, "-", &alarm_str); + data->remind_info[index].min = atoi(temp_ptr); + + temp_ptr = km_strtok_r(NULL, "-", &alarm_str); + data->remind_info[index].is_valid = atoi(temp_ptr); + + temp_ptr = km_strtok_r(NULL, "-", &alarm_str); + if(1 == atoi(temp_ptr)) + { + data->remind_info[index].repeat_bitmap = 0; + } + else if(2 == atoi(temp_ptr)) + { + data->remind_info[index].repeat_bitmap = 0xff; + } + else + { + data->remind_info[index].repeat_bitmap = 0x80; + if(NULL != alarm_str) + { + uint8_t j = 0; + for(j = 0; j < 7; j++) + { + data->remind_info[index].repeat_bitmap |= ((('0' == *(alarm_str + j)) ? 0 : 1) << j); + } + } + } +} + +/* +{ +"code":"31002" // »½ÐÑ +"type":0, // 0-ÏìÁåÌáʾ£»1-Õð¶¯Ìáʾ +"duration":600, // ¾­¹ý¸Ãʱ¼äºó£¬ÌáÐÑ´ò¿¨£¬µ¥Î» Ãë +"alarm1":"08:10-1-1", +"alarm2":"08:10-1-2", +"alarm2":"08:10-1-3-0111110" +} +08:10-1-1£ºÄÖÖÓʱ¼ä 8:10£¬´ò¿ª£¬ÏìÁåÒ»´Î +08:10-1-2£ºÄÖÖÓʱ¼ä 8:10£¬´ò¿ª£¬Ã¿ÌìÏìÁå +08:10-1-3-0111110£ºÄÖÖÓʱ¼ä 8:10£¬´ò¿ª£¬×Ô¶¨ÒåÖÜÒ»ÖÁÖÜÎå´ò¿ª +×î×ó±ßÊÇÖÜÈÕ£¬×îÓÒ±ßÊÇÖÜÁù£¬¼´ 0111110 µÄ˳ÐòÊÇ£ºÖÜÈÕ£¬ÖÜÒ»£¬Öܶþ£¬ÖÜÈý£¬ÖÜËÄ£¬ÖÜÎ壬ÖÜ +Áù£¨1 Ϊ´ò¿ª£¬0 Ϊ¹Ø±Õ£©£¬ÆäÖÐÖÜÒ»ÖÁÖÜÎå´ò¿ªÄÖÖÓ +*/ +void mmi_k18_wake_timing_info_set(cJSON * root_json) +{ + K18_REMIND_LOG("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + s_k18_wake_timing_info.prompt_type = cJSON_GetIntValue(cJSON_GetObjectItem(root_json, "type")); // 0-ring;1-vibrate + s_k18_wake_timing_info.interval = cJSON_GetIntValue(cJSON_GetObjectItem(root_json, "duration")); // second + mmi_k18_wake_timing_type_interval_nv_write(); + + nv_watch_remind_item_t data = {0}; + unsigned char i = 0; + + char * alarm1_str = cJSON_GetStringValue(cJSON_GetObjectItem(root_json, "alarm1")); + if(NULL != alarm1_str) + { + mmi_k18_wake_timing_info_detail(&data, alarm1_str, i); + i++; + } + + char * alarm2_str = cJSON_GetStringValue(cJSON_GetObjectItem(root_json, "alarm2")); + if(NULL != alarm2_str) + { + mmi_k18_wake_timing_info_detail(&data, alarm2_str, i); + i++; + } + + char * alarm3_str = cJSON_GetStringValue(cJSON_GetObjectItem(root_json, "alarm3")); + if(NULL != alarm3_str) + { + mmi_k18_wake_timing_info_detail(&data, alarm3_str, i); + i++; + } + + mmi_remind_wake_up_data_set(&data); +} + +void mmi_k18_wake_timing_close(unsigned char is_active) +{ + if(is_active) + { + mmi_k18_wake_reply_server(); + } + + // timer to create clock in screen + unsigned int ms_interval = mmi_k18_wake_timing_info_interval_get() * 1000; + mmi_k18_wake_clock_in_timer_start(ms_interval); +} + +void mmi_ui_msg_update_k18_wake_timing(void) +{ + mmi_remind_wake_up_screen_active(); +} + + +static mmi_k18_warning_info_s s_k18_warning_info = {0}; +static bool s_is_ACT_ID_K18_WARNING = false; +static lv_remind_obj_ext_t * mmi_k18_warning_screen_ext_get(void) +{ + lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_K18_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) + { + void * ext = lv_obj_get_ext_attr(watch_obj); + return ext; + } + + return NULL; +} + +static void mmi_k18_warning_screen_prepare_destory(lv_obj_t * activity_obj) +{ + lv_watch_png_cache_all_free(); + + Hal_Vibrator_Play_End(); + + Hal_Tone_Play_End(); + Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_REMIND); + + printf("[@CHENG_DEBUG][%s][%d]: 0x%x\n", __FUNCTION__, __LINE__, s_k18_warning_info.prompt_str); + if(NULL != s_k18_warning_info.prompt_str) + { + lv_mem_free(s_k18_warning_info.prompt_str); + s_k18_warning_info.prompt_str = NULL; + } + + lv_k18_warning_obj_ext_t * ext = mmi_k18_warning_screen_ext_get(); + if(ext) + { + if(NULL != ext->timer_id) + { + Hal_Timer_Stop(ext->timer_id); + ext->timer_id = NULL; + } + } + + s_is_ACT_ID_K18_WARNING = false; + watch_set_suspend_enable(true, ACT_ID_K18_WARNING, 0); +} + +void mmi_k18_warning_screen_clean(void) +{ + lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_K18_WARNING); + if(NULL != activity_obj) + { + printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + mmi_k18_warning_screen_prepare_destory(NULL); + lv_obj_del(activity_obj); + } +} + +void mmi_k18_warning_btn_event_cb(lv_obj_t * obj, lv_event_t e) +{ + if(LV_EVENT_CLICKED == e) + { + mmi_k18_warning_screen_clean(); + } +} + +static void mmi_k18_warning_screen_timeout(void * para) +{ + mmi_k18_warning_screen_clean(); +} + +static lv_obj_t * mmi_k18_warning_screen_create(lv_obj_t * activity_obj) +{ + printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + if(NULL == activity_obj) + { + lv_watch_activity_ext_t activity_ext = {0}; + + activity_ext.actId = ACT_ID_K18_WARNING; + activity_ext.create = mmi_k18_warning_screen_create; + activity_ext.prepare_destory = mmi_k18_warning_screen_prepare_destory; + activity_obj = lv_watch_creat_activity_obj(&activity_ext); + if(NULL == activity_obj) + return NULL; + } + + /* watch obj */ + lv_obj_t * obj = lv_watch_obj_create(activity_obj); + lv_watch_obj_set_anim_mode(obj, LV_WATCH_ANIM_HOR_RIGHT_HIDE); + lv_k18_warning_obj_ext_t * ext = (lv_k18_warning_obj_ext_t *)lv_obj_allocate_ext_attr(obj, sizeof(lv_k18_warning_obj_ext_t)); + + lv_obj_t * cont = lv_cont_create(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_style_local_bg_color(cont, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); + lv_obj_set_click(cont, false); + + hal_rtc_t cur_time; + char time_str[8] = {0}; + + Hal_Rtc_Gettime(&cur_time); + sprintf(time_str, "%02d:%02d", cur_time.tm_hour, cur_time.tm_min); + +#ifdef USE_LV_WATCH_UI_466_466 + lv_obj_t * label_time = lv_label_create(cont, NULL); + lv_obj_add_style(label_time, LV_LABEL_PART_MAIN, &lv_watch_font40); + lv_label_set_text(label_time, time_str); + lv_label_set_align(label_time, LV_LABEL_ALIGN_CENTER); + lv_obj_align(label_time, NULL, LV_ALIGN_IN_TOP_MID, 0, LV_VER_RES / 5); + + lv_obj_t * label_prompt = lv_label_create(cont, NULL); + lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font40); + lv_label_set_align(label_prompt, LV_LABEL_ALIGN_CENTER); + lv_label_set_long_mode(label_prompt, LV_LABEL_LONG_BREAK); + lv_obj_set_width(label_prompt, lv_obj_get_width(obj) - 20); + lv_label_set_text(label_prompt, s_k18_warning_info.prompt_str); + lv_obj_align(label_prompt, NULL, LV_ALIGN_CENTER, 0, -10); +#else + lv_obj_t * label_time = lv_label_create(cont, NULL); + lv_obj_add_style(label_time, LV_LABEL_PART_MAIN, &lv_watch_font26); + lv_label_set_text(label_time, time_str); + lv_label_set_align(label_time, LV_LABEL_ALIGN_CENTER); + lv_obj_align(label_time, NULL, LV_ALIGN_IN_TOP_MID, 0, 50); + + 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_align(label_prompt, LV_LABEL_ALIGN_CENTER); + lv_label_set_long_mode(label_prompt, LV_LABEL_LONG_BREAK); + lv_obj_set_width(label_prompt, lv_obj_get_width(obj) - 20); + lv_label_set_text(label_prompt, s_k18_warning_info.prompt_str); + lv_obj_align(label_prompt, label_time, LV_ALIGN_OUT_BOTTOM_MID, 0, 10); +#endif + + lv_obj_t * btn = lv_btn_create(cont, NULL); +#ifdef USE_LV_WATCH_UI_466_466 + lv_obj_set_size(btn, 140, 70); +#else + lv_obj_set_size(btn, 100, 56); +#endif + lv_obj_set_style_local_bg_color(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, lv_color_make(0x47, 0xA6, 0xFF)); + lv_obj_set_style_local_radius(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 30); + lv_obj_set_style_local_bg_color(btn, LV_BTN_PART_MAIN, LV_STATE_PRESSED, lv_color_make(0x47, 0xA6, 0xFF)); + lv_obj_set_style_local_radius(btn, LV_BTN_PART_MAIN, LV_STATE_PRESSED, 30); +#ifdef USE_LV_WATCH_UI_466_466 + lv_obj_align(btn, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -60); +#else + lv_obj_align(btn, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -20); +#endif + lv_obj_set_event_cb(btn, mmi_k18_warning_btn_event_cb); + + lv_obj_t * label = lv_label_create(btn, NULL); +#ifdef USE_LV_WATCH_UI_466_466 + lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font40); +#else + lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font26); +#endif + lv_label_set_text_id(label, WATCH_TEXT_ID_OK); + + ext->timer_id = Hal_Timer_Start(1000 * 30, mmi_k18_warning_screen_timeout, NULL, false); + + s_is_ACT_ID_K18_WARNING = true; + watch_set_suspend_enable(false, ACT_ID_K18_WARNING, 0); + + return obj; +} + +void mmi_k18_warning_audio_ctrl_callback(AUDIO_CTRL_PRIORITY priority) +{ + printf("[@CHENG_DEBUG][%s][%d]: priority=%d\n", __FUNCTION__, __LINE__, priority); + + if(AUDIO_CTRL_PRIORITY_REMIND == priority) + { + // + } + else if(AUDIO_CTRL_PRIORITY_REMIND > priority) + { + mmi_k18_warning_screen_clean(); + } +} + +void mmi_ui_msg_update_k18_warning(void) +{ + printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + if(AUDIO_CTRL_PRIORITY_REMIND == Hal_Audio_Manage_Start_Req(AUDIO_CTRL_PRIORITY_REMIND, mmi_k18_warning_audio_ctrl_callback)) + { + if(MMI_K18_WARNING_TYPE_SLEEP == s_k18_warning_info.type) + { + uint8_t volume = 0; + #ifdef __MMI_USER_PROFILE_SUPPORT__ + volume = mmi_user_profile_current_mode_remind_volume_get(); + #else + volume = query_current_volume(); + #endif + Hal_NFFS_File_Play_Repeat(AUDIO_REMIND_SLEEP, volume); + } + else + { + if(true == mmi_watch_vibrate_is_permitted()) + Hal_Vibrator_Play_Repeat(); + } + + mmi_k18_warning_screen_create(NULL); + } +} + +/* +{ +"code":"31004" // É豸Ԥ¾¯ÍÆËÍ +"type":1, // ÀàÐÍ£¬ÐÄÂÊ£¨1£©£¬ÑªÑõ£¨2£©£¬ÌåΣ¨4£©£¬Ë¯Ãߣ¨8£© +"status":1, // ״̬£¬0(Õý³£), 1(Æ«µÍ), 2(Æ«¸ß), 3(½ÏµÍ), 4(½Ï¸ß)£¬5(¹ýµÍ)£¬6(¹ý¸ß)£¬Ô¤Áô×Ö¶Î +"description": "ÌáÐÑÎÄ×Ö£¬Ê¹Óà unicode ±àÂëµÄ×Ö·û´®±íʾ" +} +*/ +void mmi_k18_warning_info_set(cJSON * root_json) +{ + if(false == mmi_k18_wake_permit_check()) + { + K18_REMIND_LOG("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + return ; + } + if(true == s_is_ACT_ID_K18_WARNING) + { + K18_REMIND_LOG("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + return ; + } + + // data + s_k18_warning_info.type = cJSON_GetIntValue(cJSON_GetObjectItem(root_json, "type")); + s_k18_warning_info.state = cJSON_GetIntValue(cJSON_GetObjectItem(root_json, "status")); + char * unicode_description = cJSON_GetStringValue(cJSON_GetObjectItem(root_json, "description")); + unsigned int unicode_length = strlen(unicode_description); + unsigned int memory_size = unicode_length / 4 * 3 + 1; + unsigned int output_len = 0; + + if(NULL != s_k18_warning_info.prompt_str) + { + lv_mem_free(s_k18_warning_info.prompt_str); + s_k18_warning_info.prompt_str = NULL; + } + s_k18_warning_info.prompt_str = lv_mem_alloc(memory_size); + if(NULL == s_k18_warning_info.prompt_str) + { + K18_REMIND_LOG("[@CHENG_DEBUG][%s][%d]: memory alloc error\n", __FUNCTION__, __LINE__); + return ; + } + _lv_memset_00(s_k18_warning_info.prompt_str, memory_size); + mmi_unicode_hex_str_to_utf8_str(unicode_description, unicode_length, s_k18_warning_info.prompt_str, &output_len); + + //printf("[@CHENG_DEBUG][%s][%d]: unicode_length=%d,memory_size=%d,output_len=%d\n", __FUNCTION__, __LINE__, unicode_length, memory_size, output_len); + + // ui + mmi_watch_wake_up(); + mmi_ui_msg_action_k18_warning(); +} + +#endif + diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/k18_remind.h b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/k18_remind.h new file mode 100644 index 00000000..87d5386a --- /dev/null +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/k18_remind.h @@ -0,0 +1,105 @@ + + + +#ifndef __K18_REMIND_H__ +#define __K18_REMIND_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef LV_CONF_INCLUDE_SIMPLE +#include "lvgl.h" +#include "lv_ex_conf.h" +#else +#include "../../../lvgl/lvgl.h" +#include "../../../lv_ex_conf.h" +#endif + +#ifdef __MMI_Z5_HA_K18_REMIND__ + +#include "hal/dm/cJSON.h" + + +#define __K18_REMIND_DEBUG__ +#ifdef __K18_REMIND_DEBUG__ +#define K18_REMIND_LOG(fmt, ...) printf("[K18_REMIND]"fmt, ##__VA_ARGS__) +#else +#define K18_REMIND_LOG(fmt, ...) +#endif + + +void mmi_k18_clock_in_close(void); +void mmi_ui_msg_update_k18_clock_in(void); + +int mmi_k18_wake_now_info_type_get(void); +void mmi_k18_wake_now_info_set(cJSON * root_json); +void mmi_k18_wake_now_close(unsigned char is_active); +void mmi_ui_msg_update_k18_wake_now(void); + +int mmi_k18_wake_timing_info_type_get(void); +void mmi_k18_wake_timing_type_interval_nv_read(void); +void mmi_k18_wake_timing_info_set(cJSON * root_json); +void mmi_k18_wake_timing_close(unsigned char is_active); +void mmi_ui_msg_update_k18_wake_timing(void); + + + +typedef enum +{ + MMI_K18_WARNING_TYPE_NONE, + + MMI_K18_WARNING_TYPE_HEART_RATE = 1, + MMI_K18_WARNING_TYPE_SPO2 = 2, + MMI_K18_WARNING_TYPE_3, + MMI_K18_WARNING_TYPE_TEMPERATURE = 4, + MMI_K18_WARNING_TYPE_5, + MMI_K18_WARNING_TYPE_6, + MMI_K18_WARNING_TYPE_7, + MMI_K18_WARNING_TYPE_SLEEP = 8, + + MMI_K18_WARNING_TYPE_MAX +} MMI_K18_WARNING_TYPE_E; + +typedef enum +{ + MMI_K18_WARNING_STATE_NONE, + + MMI_K18_WARNING_STATE_NORMAL = MMI_K18_WARNING_STATE_NONE, + MMI_K18_WARNING_STATE_LOW, + MMI_K18_WARNING_STATE_HIGH, + MMI_K18_WARNING_STATE_LOWER, + MMI_K18_WARNING_STATE_HIGHER, + MMI_K18_WARNING_STATE_LOWEST, + MMI_K18_WARNING_STATE_HIGHEST, + + MMI_K18_WARNING_STATE_MAX +} MMI_K18_WARNING_STATE_E; + +typedef struct +{ + MMI_K18_WARNING_TYPE_E type; + MMI_K18_WARNING_STATE_E state; + void * prompt_str; +} mmi_k18_warning_info_s; + +typedef struct +{ + lv_watch_obj_ext_t lv_watch_obj; + /*New data for this type */ + TIMER_ID timer_id; +} lv_k18_warning_obj_ext_t; + + +void mmi_ui_msg_update_k18_warning(void); +void mmi_k18_warning_info_set(cJSON * root_json); + + +#endif + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif + diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_measure.c b/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_measure.c index 0e3ac62c..ddcadf64 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_measure.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_measure.c @@ -944,7 +944,17 @@ static void mmi_health_measure_process_timer_handle(uint32_t para) break; case MMI_HEALTH_MEASURE_BLOOD: + #ifdef USE_HEART_RATE_MEASURE_TO_CHECK_WEAR_STATUS + if(MMI_HR_MEASURE_CHECK_COUNT == s_measure_time_count) + { + mmi_hsensor_close(); + + mmi_hengai_bp_back_measure_action(); + mmi_hsensor_blood_open(); + } + #else mmi_health_measure_task_msg_send(MMI_HEALTH_MEASURE_MSG_BLOOD_PROCESS, NULL); + #endif break; case MMI_HEALTH_MEASURE_SPO2: @@ -1023,11 +1033,17 @@ static void mmi_health_measure_start(MMI_HEALTH_MEASURE_TYPE_E measure_type, uin break; case MMI_HEALTH_MEASURE_BLOOD: + #ifdef USE_HEART_RATE_MEASURE_TO_CHECK_WEAR_STATUS + s_measure_time_total = (MMI_BP_MEASURE_TOTAL_COUNT * 1000) / MMI_HEALTH_MEASURE_CYCLE_DURATION; + mmi_hsensor_heart_open(); + + #else s_measure_time_total = MMI_HEALTH_MEASURE_BLOOD_DURATION / MMI_HEALTH_MEASURE_CYCLE_DURATION; mmi_hsensor_blood_open(); #ifdef __MMI_CUSTOM_HENGAI_HEALTH__ mmi_hengai_bp_back_measure_action(); #endif + #endif break; case MMI_HEALTH_MEASURE_SPO2: diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_remind/mmi_remind.c b/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_remind/mmi_remind.c index d5951d59..82e67787 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_remind/mmi_remind.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_remind/mmi_remind.c @@ -13,6 +13,10 @@ static mmi_remind_screen_info_t s_remind_info[] = { #ifdef __MMI_REMIND_WAKE_UP_SUPPORT__ { MMI_REMIND_TYPE_WAKE_UP, WATCH_TEXT_ID_WAKE_UP_PROMPT, AUDIO_REMIND_WAKE_UP, NULL}, + { MMI_REMIND_TYPE_WAKE_NOW, WATCH_TEXT_ID_WAKE_UP_PROMPT, AUDIO_REMIND_WAKE_UP, NULL}, +#endif +#ifdef __MMI_Z5_HA_K18_REMIND__ + { MMI_REMIND_TYPE_CLOCK_IN, WATCH_TEXT_ID_CLOCK_IN_PROMPT, AUDIO_REMIND_CLOCK_IN, NULL}, #endif #ifdef __MMI_REMIND_SLEEP_SUPPORT__ { MMI_REMIND_TYPE_SLEEP, WATCH_TEXT_ID_SLEEP_PROMPT, AUDIO_REMIND_SLEEP, NULL}, @@ -123,8 +127,24 @@ void mmi_remind_wake_up_screen_active(void) s_remind_type = MMI_REMIND_TYPE_WAKE_UP; mmi_remind_screen_active(); } + +void mmi_remind_wake_now_screen_active(void) +{ + s_remind_type = MMI_REMIND_TYPE_WAKE_NOW; + mmi_remind_screen_active(); +} #endif + +#ifdef __MMI_Z5_HA_K18_REMIND__ +void mmi_remind_clock_in_screen_active(void) +{ + s_remind_type = MMI_REMIND_TYPE_CLOCK_IN; + mmi_remind_screen_active(); +} +#endif + + #ifdef __MMI_REMIND_SLEEP_SUPPORT__ static nv_watch_remind_item_t s_remind_sleep_data = {0}; @@ -667,12 +687,37 @@ void mmi_remind_btn_event_cb(lv_obj_t * obj, lv_event_t e) #ifdef __MMI_CUSTOM_HENG_AI__ mmi_heng_ai_camera_open(); #endif + + #ifdef __MMI_Z5_HA_K18_REMIND__ + if(MMI_REMIND_TYPE_WAKE_NOW == s_remind_type) // real time + { + mmi_k18_wake_now_close(1); + } + else if(MMI_REMIND_TYPE_WAKE_UP == s_remind_type) // timing + { + mmi_k18_wake_timing_close(1); + } + else if(MMI_REMIND_TYPE_CLOCK_IN == s_remind_type) // punch + { + mmi_k18_clock_in_close(); + } + #endif } } static void mmi_remind_screen_timeout(void * para) { mmi_remind_screen_clean(); +#ifdef __MMI_Z5_HA_K18_REMIND__ + if(MMI_REMIND_TYPE_WAKE_NOW == s_remind_type) // real time + { + mmi_k18_wake_now_close(0); + } + else if(MMI_REMIND_TYPE_WAKE_UP == s_remind_type) // timing + { + mmi_k18_wake_timing_close(0); + } +#endif } static lv_obj_t * mmi_remind_screen_create(lv_obj_t * activity_obj) @@ -719,6 +764,17 @@ static lv_obj_t * mmi_remind_screen_create(lv_obj_t * activity_obj) Hal_Rtc_Gettime(&cur_time); sprintf(time_str, "%02d:%02d", cur_time.tm_hour, cur_time.tm_min); + #ifdef USE_LV_WATCH_UI_466_466 + lv_obj_t * label_time = lv_label_create(cont, NULL); + lv_obj_add_style(label_time, LV_LABEL_PART_MAIN, &lv_watch_font40); + lv_label_set_text(label_time, time_str); + lv_label_set_align(label_time, LV_LABEL_ALIGN_CENTER); + lv_obj_align(label_time, NULL, LV_ALIGN_IN_TOP_MID, 0, LV_VER_RES / 5); + + lv_obj_t * label_prompt = lv_label_create(cont, label_time); + lv_label_set_text_id(label_prompt, s_remind_info[s_remind_index].remind_txt_id); + lv_obj_align(label_prompt, NULL, LV_ALIGN_CENTER, 0, -10); + #else lv_obj_t * label_time = lv_label_create(cont, NULL); lv_obj_add_style(label_time, LV_LABEL_PART_MAIN, &lv_watch_font26); lv_label_set_text(label_time, time_str); @@ -728,23 +784,36 @@ static lv_obj_t * mmi_remind_screen_create(lv_obj_t * activity_obj) lv_obj_t * label_prompt = lv_label_create(cont, label_time); lv_label_set_text_id(label_prompt, s_remind_info[s_remind_index].remind_txt_id); lv_obj_align(label_prompt, label_time, LV_ALIGN_OUT_BOTTOM_MID, 0, 10); + #endif } lv_obj_t * btn = lv_btn_create(cont, NULL); +#ifdef USE_LV_WATCH_UI_466_466 + lv_obj_set_size(btn, 140, 70); +#else lv_obj_set_size(btn, 100, 56); +#endif lv_obj_set_style_local_bg_color(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, lv_color_make(0x47, 0xA6, 0xFF)); lv_obj_set_style_local_radius(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 30); lv_obj_set_style_local_bg_color(btn, LV_BTN_PART_MAIN, LV_STATE_PRESSED, lv_color_make(0x47, 0xA6, 0xFF)); lv_obj_set_style_local_radius(btn, LV_BTN_PART_MAIN, LV_STATE_PRESSED, 30); #ifdef USE_LV_WATCH_UI_CIRCLE + #ifdef USE_LV_WATCH_UI_466_466 + lv_obj_align(btn, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -60); + #else lv_obj_align(btn, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -15); + #endif #else lv_obj_align(btn, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -20); #endif lv_obj_set_event_cb(btn, mmi_remind_btn_event_cb); lv_obj_t * label = lv_label_create(btn, NULL); +#ifdef USE_LV_WATCH_UI_466_466 + lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font40); +#else lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font26); +#endif lv_label_set_text_id(label, WATCH_TEXT_ID_OK); /* start timer (30 s) */ @@ -782,7 +851,44 @@ void mmi_ui_msg_update_remind(void) volume = query_current_volume(); #endif - #ifdef __MMI_CUSTOM_HENG_AI__ + #ifdef __MMI_Z5_HA_K18_REMIND__ + if(MMI_REMIND_TYPE_WAKE_UP == s_remind_type) // timing + { + if(0 == mmi_k18_wake_timing_info_type_get()) + { + Hal_NFFS_File_Play_Repeat(ring_path, volume); + } + else + { + if(true == mmi_watch_vibrate_is_permitted()) + { + Hal_Vibrator_Play_Repeat(); + } + } + } + else if(MMI_REMIND_TYPE_WAKE_NOW == s_remind_type) // real time + { + if(0 == mmi_k18_wake_now_info_type_get()) + { + Hal_NFFS_File_Play_Repeat(ring_path, volume); + } + else + { + if(true == mmi_watch_vibrate_is_permitted()) + { + Hal_Vibrator_Play_Repeat(); + } + } + } + else + { + Hal_NFFS_File_Play_Repeat(ring_path, volume); + if(true == mmi_watch_vibrate_is_permitted()) + { + Hal_Vibrator_Play_Repeat(); + } + } + #elif defined(__MMI_CUSTOM_HENG_AI__) if(0 == mmi_heng_ai_wake_ring_type_get()) { Hal_NFFS_File_Play_Repeat(ring_path, volume); @@ -918,7 +1024,9 @@ void mmi_remind_data_init(void) #ifdef __MMI_REMIND_CUSTOM_MEDICINE_SUPPORT__ mmi_remind_custom_medicine_nv_read(); #endif - +#ifdef __MMI_Z5_HA_K18_REMIND__ + mmi_k18_wake_timing_type_interval_nv_read(); +#endif } #endif diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_remind/mmi_remind.h b/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_remind/mmi_remind.h index dd21b828..a403b773 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_remind/mmi_remind.h +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_remind/mmi_remind.h @@ -28,7 +28,9 @@ extern "C" { typedef enum { - MMI_REMIND_TYPE_WAKE_UP, + MMI_REMIND_TYPE_WAKE_UP, // timing + MMI_REMIND_TYPE_WAKE_NOW, // real time + MMI_REMIND_TYPE_CLOCK_IN, // punch MMI_REMIND_TYPE_SLEEP, MMI_REMIND_TYPE_REST_BEGIN, MMI_REMIND_TYPE_REST_END, @@ -61,6 +63,7 @@ typedef struct #ifdef __MMI_REMIND_WAKE_UP_SUPPORT__ void mmi_remind_wake_up_data_set(nv_watch_remind_item_t * data); void mmi_remind_wake_up_screen_active(void); +void mmi_remind_wake_now_screen_active(void); #endif #ifdef __MMI_REMIND_SLEEP_SUPPORT__ void mmi_remind_sleep_data_set(nv_watch_remind_item_t * data); diff --git a/2.sdk/sdk/gui/lv_watch/lv_watch_res.h b/2.sdk/sdk/gui/lv_watch/lv_watch_res.h index 8fcef338..ecb33b56 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_watch_res.h +++ b/2.sdk/sdk/gui/lv_watch/lv_watch_res.h @@ -48,7 +48,7 @@ extern "C" { #ifdef __MMI_REMIND_WAKE_UP_SUPPORT__ #define AUDIO_REMIND_WAKE_UP "R:/audio/AUDIO_REMIND_WAKE_UP.mp3" #endif -#if defined(__MMI_REMIND_SLEEP_SUPPORT__) || defined(__MMI_CUSTOM_HENGAI_SLEEP__) +#if defined(__MMI_REMIND_SLEEP_SUPPORT__) || defined(__MMI_CUSTOM_HENGAI_SLEEP__) || defined(__MMI_Z5_HA_K18_REMIND__) #define AUDIO_REMIND_SLEEP "R:/audio/AUDIO_REMIND_SLEEP.mp3" #endif #ifdef __MMI_REMIND_REST_SUPPORT__ @@ -64,6 +64,9 @@ extern "C" { #ifdef __MMI_REMIND_DRINK_SUPPORT__ #define AUDIO_REMIND_DRINK "R:/audio/AUDIO_REMIND_DRINK.mp3" #endif +#ifdef __MMI_Z5_HA_K18_REMIND__ +#define AUDIO_REMIND_CLOCK_IN "R:/audio/AUDIO_REMIND_CLOCK_IN.mp3" +#endif #ifdef __MMI_SEDENTARY_REMIND_SUPPORT__ #define AUDIO_REMIND_SEDENTARY "R:/audio/AUDIO_REMIND_SEDENTARY.mp3" diff --git a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.c b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.c index 1a78ac60..9129b57e 100644 --- a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.c +++ b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.c @@ -613,7 +613,7 @@ static void mmi_protocol_location_move_state_check_cb(uint32_t param) int16_t chip_x = 0, chip_y = 0, chip_z = 0; xMotion_Chip_Read_XYZ(&chip_x, &chip_y, &chip_z); - PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %d,%d,%d/%d,%d,%d\n", __FUNCTION__, __LINE__, + //PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %d,%d,%d/%d,%d,%d\n", __FUNCTION__, __LINE__, chip_x, chip_y, chip_z, s_gsensor_chip_x, s_gsensor_chip_y, s_gsensor_chip_z); if((100 < abs(s_gsensor_chip_x - chip_x)) || (100 < abs(s_gsensor_chip_y - chip_y)) || (100 < abs(s_gsensor_chip_z - chip_z))) { diff --git a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c index bd9ffd0d..ff236a6b 100644 --- a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c +++ b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c @@ -9,6 +9,7 @@ //#include "mbedtls/md5.h" #include "../../../../product/craneg_modem/pcac/mbedtls/include/mbedtls/md5.h" #endif +#include "hal/dm/cJSON.h" // action key string & action case parse #include "mmi_protocol_fzd_content.c" @@ -4063,6 +4064,49 @@ bool mmi_protocol_fzd_parse_SERVER_COMMON_MSG_DOWN(unsigned char * next_buff, un #ifdef MMI_PROJECT_Z5_HA_K18_NFC mmi_k18_nfc_experience_trigger(decode_str, output_len); +#else + cJSON * json_recv = cJSON_Parse(decode_str); + if(NULL != json_recv) + { + char * cmd_code = cJSON_GetStringValue(cJSON_GetObjectItem(json_recv, "code")); + if(0 == strcmp("31000", cmd_code)) + { + + } + else if(0 == strcmp("31001", cmd_code)) + { + #ifdef __MMI_Z5_HA_K18_REMIND__ + mmi_k18_wake_now_info_set(json_recv); + #endif + } + else if(0 == strcmp("31002", cmd_code)) + { + #ifdef __MMI_Z5_HA_K18_REMIND__ + mmi_k18_wake_timing_info_set(json_recv); + #endif + } + else if(0 == strcmp("31003", cmd_code)) + { + + } + else if(0 == strcmp("31004", cmd_code)) + { + #ifdef __MMI_Z5_HA_K18_REMIND__ + mmi_k18_warning_info_set(json_recv); + #endif + } + else + { + PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: code=%s\n", __FUNCTION__, __LINE__, cmd_code); + } + } + else + { + PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: not json file\n", __FUNCTION__, __LINE__); + } + + cJSON_Delete(json_recv); + json_recv = NULL; #endif lv_mem_free(decode_str);