gengxin
authorCCC <2393524978@qq.com>
Wed, 16 Aug 2023 06:58:53 +0000 (14:58 +0800)
committerCCC <2393524978@qq.com>
Wed, 16 Aug 2023 06:58:53 +0000 (14:58 +0800)
2.sdk/sdk/gui/lv_watch/lv_apps/primary_menu/primary_menu.c
2.sdk/sdk/gui/lv_watch/lv_apps/sms_msg/sms_msg.c
2.sdk/sdk/gui/lv_watch/lv_apps/sos/sos.c
2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.c
2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.h

index 3e524b8..a6b10c1 100644 (file)
 /*********************
  *      DEFINES
  *********************/
+#ifdef __MMI_ZHSX_SUPPORT_PAGE_MAIN_MENU__
+#define PRIMARY_MENU_APP_NUM_PRE_TAB (1)
+#else
 #define PRIMARY_MENU_APP_NUM_PRE_TAB (4)
+#endif
+
 /**********************
  *      TYPEDEFS
  **********************/
index cf76062..8d999e0 100644 (file)
@@ -279,17 +279,14 @@ static void sms_msg_write_nvm_for_test(void)
 #endif //SMS_MSG_TEST\r
 \r
 \r
+#ifdef __MMI_ZHSX_SUPPORT__\r
 void sms_msg_app_new_sms_info_ind(app_adp_new_sms_info_ind_t *sms_info)\r
 {\r
        if(sms_info == NULL)\r
                return;\r
-       printf("yzmin --> %s, time = %s\n", __FUNCTION__,sms_info->time);\r
-       printf("yzmin ----> data_len = %d, data = %s\n",sms_info->data_len,sms_info->data);\r
-\r
-       //for(uint8_t i = 0; i < strlen(sms_info->data); i++)\r
-       //{\r
-       //      printf("[@CHENG_DEBUG][%s][%d]: %d,%d\n", __FUNCTION__, __LINE__, i, sms_info->data[i]);\r
-       //}\r
+       \r
+       printf("[@CHENG_DEBUG][%s][%d]: number=%s\n", __FUNCTION__, __LINE__, sms_info->number);\r
+       printf("[@CHENG_DEBUG][%d]: time=%s,data_len=%d\n", __LINE__, sms_info->time, sms_info->data_len);\r
 \r
 #ifdef __MMI_ZHSX_SUPPORT_SMS__\r
        if(true == mmi_protocol_sms_content_parse(sms_info->data, sms_info->number))\r
@@ -298,6 +295,103 @@ void sms_msg_app_new_sms_info_ind(app_adp_new_sms_info_ind_t *sms_info)
                return;\r
        }\r
 #endif\r
+       \r
+       nv_watch_phonebook_t * nv_contact_list = phonebook_read_nvm();\r
+    if(NULL == nv_contact_list) \r
+               return;\r
+\r
+       //read nvm\r
+       nv_watch_sms_msg_t * nvm_sms_list = sms_msg_read_nvm();\r
+       if(nvm_sms_list)\r
+       {\r
+               for(uint8_t i = 0; i < NV_WATCH_MAX_SMS_MSG_NUM; i++) {\r
+                       if('\0' == nvm_sms_list->info[i].number[0]) {\r
+                               break;\r
+                       }\r
+                       printf("befor yzmin--> number = %s\n",nvm_sms_list->info[i].number);\r
+               }\r
+               \r
+               for(uint8_t k = NV_WATCH_MAX_SMS_MSG_NUM - 1; k > 0; k-- ) {\r
+                       nvm_sms_list->info[k] = nvm_sms_list->info[k-1];                        \r
+               }\r
+               //add new msg\r
+               uint32_t sms_length = sizeof(sms_msg_t);\r
+               sms_msg_t sms = {0};\r
+               for(uint8_t i = 0; i < NV_WATCH_MAX_CONTACT_NUM; i++) {\r
+                       if('\0' == nv_contact_list->info[i].number[0])\r
+                               break;\r
+                       if(memcmp(sms_info->number,nv_contact_list->info[i].number,sms_info->number_len) == 0)\r
+                       {\r
+                               memcpy(&sms.name, nv_contact_list->info[i].name, strlen(nv_contact_list->info[i].name));\r
+                       }\r
+               }\r
+               sms.isnew = true;\r
+               smsmsg_copy_info(&sms, sms_info);\r
+               memcpy(&nvm_sms_list->info[0], &sms, sms_length);\r
+\r
+               //save nvm\r
+               sms_msg_write_nvm(nvm_sms_list);\r
+               lv_mem_free(nvm_sms_list);\r
+\r
+       #ifdef __MMI_ZHSX_SUPPORT_DO_NOT_DISTURB__\r
+               if(false == mmi_watch_is_in_do_not_disturb_time())\r
+               {\r
+                       Hal_NFFS_File_Play_Onetime(AUDIO_SETTING_AUDIO_MSG, query_current_volume(), NULL, 0);\r
+                       Hal_Vibrator_Play_Onetime(NULL, 1000);\r
+                       if(0 == Hal_Pm_Get_State())\r
+                       {\r
+                               printf("sms_msg_list_update -----> onkey_wakeup\n");\r
+                               extern void onkey_wakeup(void) __attribute__((weak));\r
+                               if (onkey_wakeup != NULL)\r
+                               {\r
+                                       onkey_wakeup();\r
+                               }\r
+                       }\r
+                       else\r
+                       {\r
+                               printf("sms_msg_list_update -----> watch_set_lcd_status\n");\r
+                               watch_set_lcd_status(true);\r
+                               watch_wakeup_time_reset();\r
+                       }\r
+\r
+                       //notify ui \r
+                       app_adaptor_recv_sms_notsify_update_ui();\r
+               }\r
+       #endif\r
+       }\r
+\r
+#if SMS_MSG_TEST != 0\r
+       nv_watch_sms_msg_t * list = sms_msg_read_nvm();\r
+       if(list){\r
+               for(uint8_t i = 0; i < NV_WATCH_MAX_SMS_MSG_NUM; i++) {\r
+                       if('\0' == list->info[i].number[0]) {\r
+                               break;\r
+                       }\r
+                       printf("%s   yzmin --> name = %s\n",__FUNCTION__,list->info[i].number);\r
+               }\r
+       }\r
+#endif \r
+}\r
+#else\r
+void sms_msg_app_new_sms_info_ind(app_adp_new_sms_info_ind_t *sms_info)\r
+{\r
+       if(sms_info == NULL)\r
+               return;\r
+       printf("yzmin --> %s, time = %s\n", __FUNCTION__,sms_info->time);\r
+       printf("yzmin ----> data_len = %d, data = %s\n",sms_info->data_len,sms_info->data);\r
+\r
+       //for(uint8_t i = 0; i < strlen(sms_info->data); i++)\r
+       //{\r
+       //      printf("[@CHENG_DEBUG][%s][%d]: %d,%d\n", __FUNCTION__, __LINE__, i, sms_info->data[i]);\r
+       //}\r
+\r
+//#ifdef __MMI_ZHSX_SUPPORT_SMS__\r
+//     if(true == mmi_protocol_sms_content_parse(sms_info->data, sms_info->number))\r
+//     {\r
+//             printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);\r
+//             return;\r
+//     }\r
+//#endif\r
 \r
     Hal_NFFS_File_Play_Onetime(AUDIO_SETTING_AUDIO_MSG, query_current_volume(), NULL, 0);\r
     Hal_Vibrator_Play_Onetime(NULL, 1000);\r
@@ -370,6 +464,7 @@ void sms_msg_app_new_sms_info_ind(app_adp_new_sms_info_ind_t *sms_info)
 #endif \r
 \r
 }\r
+#endif\r
 \r
 static void char2time(struct tm *time_tm, char* str, uint16_t length)\r
 {\r
index f93cae4..9a872fe 100644 (file)
@@ -12,6 +12,8 @@
 
 #ifdef __MMI_ZHSX_SUPPORT__
 
+#define MMI_SOS_LOOP_MAX       (3)
+
 static uint8_t s_sos_state = SOS_OFF;
 static nv_watch_sos_number_t s_sos_number = {0};
 static uint8_t s_sos_dial_index = 0;
@@ -90,9 +92,9 @@ static void sos_do_dailing_next(void)
        bool is_continue = false;
 
        s_sos_dial_index++;
-       while(s_sos_dial_index < NV_WATCH_SOS_NUMBER_MAX)
+       while(s_sos_dial_index < NV_WATCH_SOS_NUMBER_MAX * MMI_SOS_LOOP_MAX)
        {
-               if(0 != strlen(s_sos_number.number[s_sos_dial_index]))
+               if(0 != strlen(s_sos_number.number[s_sos_dial_index % NV_WATCH_SOS_NUMBER_MAX]))
                {
                        is_continue = true;
                        break;
@@ -106,7 +108,7 @@ static void sos_do_dailing_next(void)
                char * number = (char *)lv_mem_alloc(NV_CONTACTS_MAX_NUMBER_LEN);
                if(NULL != number)
                {
-                       _lv_memcpy(number, s_sos_number.number[s_sos_dial_index], NV_CONTACTS_MAX_NUMBER_LEN);
+                       _lv_memcpy(number, s_sos_number.number[s_sos_dial_index % NV_WATCH_SOS_NUMBER_MAX], NV_CONTACTS_MAX_NUMBER_LEN);
                phone_voice_call_req(number);
        }
        }
index 1030ff8..ca7f142 100644 (file)
@@ -240,7 +240,11 @@ void mmi_watch_searching_aciton(void)
 {
        SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
        
-    if(true == mmi_active_screen_is_prohibit_interrupted())
+    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
+               )
        {
                return ;
        }
@@ -311,7 +315,11 @@ void mmi_center_number_dialing_action(void)
 {
        SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
        
-       if(true == mmi_active_screen_is_prohibit_interrupted())
+       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
+               )
        {
                return ;
        }
@@ -544,7 +552,7 @@ static void mmi_watch_charging_prompt_cb(void *para)
        mmi_watch_charging_prompt_screen_prepare_destory(NULL);
 }
 
-static lv_obj_t * mmi_watch_charging_prompt_screen(lv_obj_t * activity_obj, uint32_t chg_status)
+static lv_obj_t * mmi_watch_charging_prompt_screen_create(lv_obj_t * activity_obj, uint32_t chg_status)
 {
        if(activity_obj == NULL) 
        {
@@ -568,9 +576,16 @@ static lv_obj_t * mmi_watch_charging_prompt_screen(lv_obj_t * activity_obj, uint
        
     lv_watch_obj_set_anim_mode(obj, LV_WATCH_ANIM_HOR_RIGHT_HIDE);
 
+#if 0
+       lv_obj_t * mbox = lv_msgbox_create(obj, NULL);
+       lv_msgbox_set_text(mbox, (char *)lv_lang_get_text((HAL_CHG_CONNECTED == (HAL_CHG_STATUS)chg_status) ? WATCH_TEXT_ID_CHARGE_CONNECTED : WATCH_TEXT_ID_CHARGE_REMOVED));
+       lv_obj_align(mbox, obj, LV_ALIGN_CENTER, 0, 0);
+       lv_msgbox_set_anim_time(mbox, 0);
+       lv_msgbox_start_auto_close(mbox, 2000);
+#else
        lv_obj_t * cont = lv_cont_create(obj, NULL);
        lv_obj_set_size(cont, 180, 180); // (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_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
        //lv_obj_set_style_local_radius(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 30);
        lv_obj_align(cont, NULL, LV_ALIGN_CENTER, 0, 0);
        lv_obj_set_click(cont, false);
@@ -588,24 +603,199 @@ static lv_obj_t * mmi_watch_charging_prompt_screen(lv_obj_t * activity_obj, uint
        lv_obj_align(label, img, LV_ALIGN_OUT_BOTTOM_MID, 0, 20);
 
        mmi_watch_charging_prompt_timer_stop();
-       s_watch_charge_prompt_timer = Hal_Timer_Start(2 * 1000, mmi_watch_charging_prompt_cb, NULL, false);
+       s_watch_charge_prompt_timer = Hal_Timer_Start(1500, mmi_watch_charging_prompt_cb, NULL, false);
+#endif
 
        return obj;
 }
 
 void mmi_ui_msg_update_charging_prompt(uint32_t chg_status)
 {
-#if 0
        SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, chg_status);
        
        if(HAL_CHG_CONNECTED == (HAL_CHG_STATUS)chg_status || HAL_CHG_DISCONNECTED == (HAL_CHG_STATUS)chg_status)
        {
-               mmi_watch_charging_prompt_screen(NULL, chg_status);
+               mmi_watch_charging_prompt_screen_prepare_destory(NULL);
+               mmi_watch_charging_prompt_screen_create(NULL, chg_status);
        }
-#endif
 }
 
 
+#ifdef __MMI_ZHSX_SUPPORT_DO_NOT_DISTURB__
+
+static nv_watch_do_not_disturb_t s_do_not_disturb_data = {0};
+
+void mmi_watch_do_not_disturb_nv_write(void)
+{
+       uint32_t nv_data_length = sizeof(nv_watch_do_not_disturb_t);
+       
+       if(nv_data_length != UI_NV_Write_Req(NV_SECTION_UI_DO_NOT_DISTURB, 0, nv_data_length, (uint8_t *)&s_do_not_disturb_data))
+       {
+               SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: nv write fail\n", __FUNCTION__, __LINE__);
+       }
+}
+
+void mmi_watch_do_not_disturb_nv_read(void)
+{
+       uint32_t nv_data_length = sizeof(nv_watch_do_not_disturb_t);
+       
+       if(nv_data_length != UI_NV_Read_Req(NV_SECTION_UI_DO_NOT_DISTURB, 0, nv_data_length, (uint8_t *)&s_do_not_disturb_data))
+       {
+               SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: nv read fail\n", __FUNCTION__, __LINE__);
+               _lv_memset_00(&s_do_not_disturb_data, sizeof(nv_watch_do_not_disturb_t));
+       }
+}
+
+void mmi_watch_do_not_disturb_data_set(nv_watch_do_not_disturb_t * data)
+{
+       if(NULL != data)
+       {
+               _lv_memset_00(&s_do_not_disturb_data, sizeof(nv_watch_do_not_disturb_t));
+               _lv_memcpy(&s_do_not_disturb_data, data, sizeof(nv_watch_do_not_disturb_t));
+               mmi_watch_do_not_disturb_nv_write();
+       }
+}
+
+bool mmi_watch_is_in_do_not_disturb_time(void)
+{
+       hal_rtc_t cur_time = {0};
+       uint16_t t_cur_mins = 0;
+       uint8_t i = 0;
+
+       Hal_Rtc_Gettime(&cur_time);
+       t_cur_mins = cur_time.tm_hour * 60 + cur_time.tm_min;
+       
+       for(i = 0; i < NV_WATCH_DO_NOT_DISTURB_ITEM_MAX; i++)
+       {
+               if(s_do_not_disturb_data.item_info[i].on_off)
+               {
+                       if((0x01 << (cur_time.tm_wday)) & s_do_not_disturb_data.item_info[i].week_bitmap)
+                       {
+                               uint16_t t_begin_mins = s_do_not_disturb_data.item_info[i].begin_hour * 60 + s_do_not_disturb_data.item_info[i].begin_min;
+                               uint16_t t_end_mins = s_do_not_disturb_data.item_info[i].end_hour * 60 + s_do_not_disturb_data.item_info[i].end_min;
+
+                               if(t_cur_mins >= t_begin_mins && t_cur_mins <= t_end_mins)
+                               {
+                                       SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+                                       return true;
+                               }
+                       }
+               }
+       }
+
+       return false;
+}
+
+static void mmi_watch_do_not_disturb_screen_prepare_destory(lv_obj_t * activity_obj)
+{
+    lv_watch_png_cache_all_free();
+    //lv_obj_t * act_obj = lv_watch_get_activity_obj(ACT_ID_DO_NOT_DISTURB);
+    //if(act_obj)
+       //{
+    //    lv_obj_del(act_obj);
+    //}
+}
+
+static lv_obj_t * mmi_watch_do_not_disturb_screen_create(lv_obj_t * activity_obj)
+{
+       if(NULL == activity_obj) 
+       {
+               lv_watch_activity_ext_t activity_ext;
+               memset(&activity_ext, 0, sizeof(lv_watch_activity_ext_t));
+               activity_ext.actId = ACT_ID_DO_NOT_DISTURB;
+               activity_ext.create = NULL;
+               activity_ext.prepare_destory = mmi_watch_do_not_disturb_screen_prepare_destory;
+               activity_obj = lv_watch_creat_activity_obj(&activity_ext);
+               LV_ASSERT_MEM(activity_obj);
+               if(activity_obj == NULL) 
+               {
+                       return(NULL);
+               }
+       }
+
+       lv_obj_t * obj = lv_watch_obj_create(activity_obj);
+       LV_ASSERT_MEM(obj);
+       if(obj == NULL) 
+               return NULL;
+       
+    lv_watch_obj_set_anim_mode(obj, LV_WATCH_ANIM_NO);
+
+       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_radius(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, 30);
+       lv_obj_align(cont, NULL, LV_ALIGN_CENTER, 0, 0);
+       lv_obj_set_click(cont, false);
+       //lv_watch_obj_add_element(cont);
+
+       hal_rtc_t cur_time = {0};
+       char t_time_str[16] = {0};
+
+       lv_obj_t * label_time = lv_label_create(cont, NULL);
+       Hal_Rtc_Gettime(&cur_time);
+       sprintf(t_time_str, "%02d:%02d", cur_time.tm_hour, cur_time.tm_min);
+       lv_label_set_text(label_time, t_time_str);
+       lv_obj_add_style(label_time, LV_LABEL_PART_MAIN, &lv_watch_font40);
+       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_label_set_text_id(label_prompt, WATCH_TEXT_ID_FORBIDDEN_PERIOD);
+       lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font26);
+       lv_label_set_align(label_prompt, LV_LABEL_ALIGN_CENTER);
+       lv_obj_align(label_prompt, label_time, LV_ALIGN_OUT_BOTTOM_MID, 0, 20);
+
+       uint8_t i = 0;
+       uint8_t t_height = lv_obj_get_height(label_prompt);
+       
+       for(i = 0; i < NV_WATCH_DO_NOT_DISTURB_ITEM_MAX; i++)
+       {
+               if(s_do_not_disturb_data.item_info[i].on_off)
+               {
+                       lv_obj_t * label = lv_label_create(cont, NULL);
+                       memset(t_time_str, 0x0, sizeof(t_time_str));
+                       sprintf(t_time_str, "%02d:%02d--%02d:%02d", 
+                                               s_do_not_disturb_data.item_info[i].begin_hour,
+                                               s_do_not_disturb_data.item_info[i].begin_min,
+                                               s_do_not_disturb_data.item_info[i].end_hour,
+                                               s_do_not_disturb_data.item_info[i].end_min);
+                       lv_label_set_text(label, t_time_str);
+                       lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font26);
+                       lv_label_set_align(label, LV_LABEL_ALIGN_CENTER);
+                       lv_obj_align(label, label_prompt, LV_ALIGN_OUT_BOTTOM_MID, 0, 10 + (t_height + 10) * i);
+               }
+       }
+
+       return obj;
+}
+
+void mmi_ui_msg_update_do_not_disturb(uint8_t flag)
+{
+       if(flag)
+               mmi_watch_do_not_disturb_screen_create(NULL);
+       else
+               mmi_watch_do_not_disturb_screen_prepare_destory(NULL);
+}
+
+void mmi_watch_do_not_disturb_screen_check(void)
+{
+       lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_DO_NOT_DISTURB);
+       if(true == mmi_watch_is_in_do_not_disturb_time())
+       {
+               if(NULL == activity_obj)
+               {
+                       mmi_ui_msg_action_do_not_disturb(1);
+               }
+       }
+       else
+       {
+               if(NULL != activity_obj)
+               {
+                       mmi_ui_msg_action_do_not_disturb(0);
+               }
+       }
+}
+#endif
 
 
 
index 64cee93..5e1ac35 100644 (file)
@@ -66,6 +66,13 @@ void mmi_watch_no_sim_power_off_check_mission(void);
 
 void mmi_ui_msg_update_charging_prompt(uint32_t chg_status);
 
+#ifdef __MMI_ZHSX_SUPPORT_DO_NOT_DISTURB__
+void mmi_watch_do_not_disturb_nv_read(void);
+void mmi_watch_do_not_disturb_data_set(nv_watch_do_not_disturb_t * data);
+bool mmi_watch_is_in_do_not_disturb_time(void);
+void mmi_ui_msg_update_do_not_disturb(uint8_t flag);
+void mmi_watch_do_not_disturb_screen_check(void);
+#endif
 
 
 #ifdef __cplusplus