--- /dev/null
+
+
+
+#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
+
{
#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},
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};
#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)
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);
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) */
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);
#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