TTS_VOICE __MMI_TEXT_TTS_PROMPT_SUPPORT__
author@CHENG <2393524978@qq.com>
Sat, 17 Aug 2024 08:20:34 +0000 (16:20 +0800)
committer@CHENG <2393524978@qq.com>
Sat, 17 Aug 2024 08:20:34 +0000 (16:20 +0800)
16 files changed:
2.sdk/project/Z5_DS_Z12XG_DTM_FZD/gui/lv_watch/resource/png/text_tts_prompt/ICON_TEXT_TTS_PROMPT.png [new file with mode: 0644]
2.sdk/project/Z5_DS_Z12XG_DTM_FZD/gui/lv_watch/resource/png/text_tts_prompt/ICON_TEXT_TTS_PROMPT_BUTTON.png [new file with mode: 0644]
2.sdk/project/Z5_DS_Z12XG_DTM_FZD/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h
2.sdk/sdk/gui/lv_watch/framework/language/lang_ch.c
2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.c
2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.h
2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.c
2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.h
2.sdk/sdk/gui/lv_watch/include/ui_activity_id.h
2.sdk/sdk/gui/lv_watch/include/ui_textid.h
2.sdk/sdk/gui/lv_watch/lv_watch_res.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

diff --git a/2.sdk/project/Z5_DS_Z12XG_DTM_FZD/gui/lv_watch/resource/png/text_tts_prompt/ICON_TEXT_TTS_PROMPT.png b/2.sdk/project/Z5_DS_Z12XG_DTM_FZD/gui/lv_watch/resource/png/text_tts_prompt/ICON_TEXT_TTS_PROMPT.png
new file mode 100644 (file)
index 0000000..1be54c5
Binary files /dev/null and b/2.sdk/project/Z5_DS_Z12XG_DTM_FZD/gui/lv_watch/resource/png/text_tts_prompt/ICON_TEXT_TTS_PROMPT.png differ
diff --git a/2.sdk/project/Z5_DS_Z12XG_DTM_FZD/gui/lv_watch/resource/png/text_tts_prompt/ICON_TEXT_TTS_PROMPT_BUTTON.png b/2.sdk/project/Z5_DS_Z12XG_DTM_FZD/gui/lv_watch/resource/png/text_tts_prompt/ICON_TEXT_TTS_PROMPT_BUTTON.png
new file mode 100644 (file)
index 0000000..5076a94
Binary files /dev/null and b/2.sdk/project/Z5_DS_Z12XG_DTM_FZD/gui/lv_watch/resource/png/text_tts_prompt/ICON_TEXT_TTS_PROMPT_BUTTON.png differ
index fb5d12f..c697351 100644 (file)
@@ -308,7 +308,7 @@ const void * lang_text_ch[] = {
     "保存",
     "分享",
     "内存不足",
-    "知道啦",
+    "知道了",
     "保存失败",
     "文件错误",
     "操作错误",
index 6d9fc99..29604ad 100644 (file)
@@ -217,6 +217,12 @@ void mmi_ui_msg_action_hengai_bp_measure_result(bool state, uint16_t bp_value_hi
 }
 #endif
 
+#ifdef __MMI_TEXT_TTS_PROMPT_SUPPORT__
+void mmi_ui_msg_action_text_tts_prompt(void)
+{
+       mmi_ui_msg_action_no_para_msg(MMI_MSG_TEXT_TTS_PROMPT);
+}
+#endif
 
 
 
index 9be588d..77de5a5 100644 (file)
@@ -91,6 +91,9 @@ void mmi_ui_msg_action_ai_talk_incoming(void);
 void mmi_ui_msg_action_hengai_bp_calibrate_result(bool state);
 void mmi_ui_msg_action_hengai_bp_measure_result(bool state, uint16_t bp_value_high, uint16_t bp_value_low);
 #endif
+#ifdef __MMI_TEXT_TTS_PROMPT_SUPPORT__
+void mmi_ui_msg_action_text_tts_prompt(void);
+#endif
 
 void mmi_ui_falldown(void);
 
index 0e209a6..401a95c 100644 (file)
@@ -476,6 +476,11 @@ void watch_ui_message_handle(uint16_t msgid, void * msg)
                        mmi_ui_msg_update_hengai_bp_measure_result(state, bp_value_high, bp_value_low);
                        break;
        #endif
+       #ifdef __MMI_TEXT_TTS_PROMPT_SUPPORT__
+               case MMI_MSG_TEXT_TTS_PROMPT:
+                       mmi_ui_msg_update_text_tts_prompt();
+                       break;
+       #endif
 
 
                        
index 97cb86e..ecfa045 100644 (file)
@@ -142,6 +142,9 @@ enum
        MMI_MSG_HENGAI_BP_CALIBRATE_RESULT,
        MMI_MSG_HENGAI_BP_MEASURE_RESULT,
 #endif
+#ifdef __MMI_TEXT_TTS_PROMPT_SUPPORT__
+       MMI_MSG_TEXT_TTS_PROMPT,
+#endif
        
        
 #endif
index f81745b..e3e1309 100644 (file)
@@ -239,6 +239,9 @@ enum
 #endif
 #ifdef __MMI_CHIP_TEMPERATURE_MONITOR_SUPPORT__
        ACT_ID_CHIP_TEMP_HIGH,
+#endif
+#ifdef __MMI_TEXT_TTS_PROMPT_SUPPORT__
+       ACT_ID_TEXT_TTS_PROMPT,
 #endif
     ACT_ID_WATCH_FALLDWON,
     ACT_ID_WATCH_CONFIRM,
index 78d9ed7..bae3370 100644 (file)
@@ -307,7 +307,7 @@ enum
     WATCH_TEXT_ID_SAVE,                             /* "保存"                           "Save"*/
     WATCH_TEXT_ID_SHARE,                            /* "分享"                           "Share"*/
     WATCH_TEXT_ID_OUT_OF_MEM,                       /* "内存不足"                        "Out of Memory"*/
-    WATCH_TEXT_ID_GOT_IT,                           /* "知道啦"                          "OK" */
+    WATCH_TEXT_ID_GOT_IT,                           /* "知道了"                          "OK" */
     WATCH_TEXT_ID_SAVE_FAILED,                      /* "保存失败"                        "Save Failed"*/
     WATCH_TEXT_ID_FILE_ERROR,                       /* "文件错误"                        "File Error"*/
     WATCH_TEXT_ID_OPERATION_ERROR,                  /* "操作错误"                        "Operation Error"*/
index 8f2ac39..dab743b 100644 (file)
@@ -1072,6 +1072,10 @@ LV_IMG_DECLARE(img_poweron_logo);
 #define BlOOD_PRESSURE_COFIREM_PNG_1                                   "R:/png/setting_blood_pressure/IMAGE_BP_CALIBRATION_BUTTON_NORMAL.png"
 #define BlOOD_PRESSURE_COFIREM_PNG_2                                   "R:/png/setting_blood_pressure/IMAGE_BP_CALIBRATION_BUTTON_PROCESS.png"
 #endif
+#ifdef __MMI_TEXT_TTS_PROMPT_SUPPORT__
+#define ICON_TEXT_TTS_PROMPT                                    "R:/png/text_tts_prompt/ICON_TEXT_TTS_PROMPT.png"
+#define ICON_TEXT_TTS_PROMPT_BUTTON                                     "R:/png/text_tts_prompt/ICON_TEXT_TTS_PROMPT_BUTTON.png"
+#endif
 
 #endif
 
index 9405cfb..bb366d1 100644 (file)
@@ -4157,6 +4157,49 @@ bool mmi_protocol_fzd_action_send_iccid(void)
        return result;
 }
 
+#ifdef __MMI_TEXT_TTS_PROMPT_SUPPORT__
+bool mmi_protocol_fzd_parse_SERVER_TEXT_TTS_PROMPT(unsigned char * next_buff, unsigned int next_buff_len)
+{
+       bool result = false;
+       MMI_PROTOCOL_FZD_ACTION_ENUM action = MMI_FZD_SERVER_TEXT_TTS_PROMPT;
+
+       if(NULL == next_buff || 0 == next_buff_len)
+       {
+               PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+               return false;
+       }
+
+       result = mmi_protocol_fzd_send_without_data(action);
+
+       unsigned char * temp_ptr = NULL;
+       unsigned int next_buff_len_new = 0;
+
+       temp_ptr = km_strtok_r(NULL, ",", &next_buff);
+       PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %s,%s\n", __FUNCTION__, __LINE__, temp_ptr, next_buff);
+       if (NULL != temp_ptr)
+       {
+               unsigned char t_buff[MMI_TEXT_TTS_PROMPT_TEXT_SRC_LEN] = {0};
+               uint8_t t_len = 0;
+               
+               mmi_unicode_hex_str_to_utf8_str(temp_ptr, strlen(temp_ptr), t_buff, &t_len);
+               mmi_text_tts_prompt_text_set(t_buff, t_len);
+       }
+       else
+       {
+               PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+               return false;
+       }
+       
+       next_buff_len_new = mmi_protocol_fzd_voice_data_decrypt(next_buff, next_buff_len);
+       mmi_text_tts_prompt_tts_set(next_buff, next_buff_len_new);
+
+       mmi_text_tts_prompt_action();
+
+       return result;
+}
+#endif
+
+
 
 #endif
 
index b40eeaf..7069ca0 100644 (file)
@@ -209,6 +209,9 @@ MMI_FZD_ACTION_HENGAI_SLEEP_DATA_TEST,
 #endif
 #ifdef MMI_PROJECT_C55_DS_D11G_DT_HZCH
        MMI_FZD_ACTION_SEND_TELECOM_INFO,
+#endif
+#ifdef __MMI_TEXT_TTS_PROMPT_SUPPORT__
+       MMI_FZD_SERVER_TEXT_TTS_PROMPT,
 #endif
        MMI_FZD_ACTION_SEND_ICCID,
        MMI_FZD_SERVER_SET_BOOTOFF,
@@ -382,6 +385,9 @@ bool mmi_protocol_fzd_action_send_telecom_info(void);
 bool mmi_protocol_fzd_action_send_telecom_info_pre(void);
 #endif
 bool mmi_protocol_fzd_action_send_iccid(void);
+#ifdef __MMI_TEXT_TTS_PROMPT_SUPPORT__
+bool mmi_protocol_fzd_parse_SERVER_TEXT_TTS_PROMPT(unsigned char * next_buff, unsigned int next_buff_len);
+#endif
 
 
 #endif
index 7da36b1..cc20f1c 100644 (file)
@@ -142,6 +142,9 @@ static unsigned char * mmi_protocol_fzd_action_string_get(MMI_PROTOCOL_FZD_ACTIO
                #endif
                #ifdef MMI_PROJECT_C55_DS_D11G_DT_HZCH
                        {MMI_FZD_ACTION_SEND_TELECOM_INFO, "TELECOM_INFO"},
+               #endif
+               #ifdef __MMI_TEXT_TTS_PROMPT_SUPPORT__
+                       {MMI_FZD_SERVER_TEXT_TTS_PROMPT, "TTS_VOICE"},
                #endif
                        {MMI_FZD_ACTION_SEND_ICCID, "ICCID"},
                        {MMI_FZD_SERVER_SET_BOOTOFF, "BOOTOFF"},
@@ -493,6 +496,12 @@ static bool mmi_protocol_fzd_content_parse(unsigned char * content_ptr, unsigned
                        break;
        #endif
 
+       #ifdef __MMI_TEXT_TTS_PROMPT_SUPPORT__
+               case MMI_FZD_SERVER_TEXT_TTS_PROMPT:
+                       mmi_protocol_fzd_parse_SERVER_TEXT_TTS_PROMPT(next_buff, next_buff_len);
+                       break;
+       #endif
+
                case MMI_FZD_ACTION_SEND_ICCID:
                        break;
 
index 4acaf28..df4defd 100644 (file)
@@ -2044,6 +2044,282 @@ void mmi_watch_chip_temperature_check(void)
 #endif
 
 
+#ifdef __MMI_TEXT_TTS_PROMPT_SUPPORT__
+
+static mmi_text_tts_prompt_data_t s_text_tts_prompt_data = {0};
+
+void mmi_text_tts_prompt_text_set(char * text_data, uint32_t text_len)
+{
+       if(NULL != s_text_tts_prompt_data.text_data)
+       {
+               lv_mem_free(s_text_tts_prompt_data.text_data);
+               s_text_tts_prompt_data.text_data = NULL;
+       }
+
+       s_text_tts_prompt_data.text_data = (char *)lv_mem_alloc(MMI_TEXT_TTS_PROMPT_TEXT_SRC_LEN);
+       if(NULL == s_text_tts_prompt_data.text_data)
+       {
+               SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: memory alloc fail\n", __FUNCTION__, __LINE__);
+               return;
+       }
+       _lv_memset_00(s_text_tts_prompt_data.text_data, (MMI_TEXT_TTS_PROMPT_TEXT_SRC_LEN));
+
+       s_text_tts_prompt_data.text_len = ((text_len > (MMI_TEXT_TTS_PROMPT_TEXT_SRC_LEN - 1)) ? (MMI_TEXT_TTS_PROMPT_TEXT_SRC_LEN - 1) : text_len);
+       _lv_memcpy(s_text_tts_prompt_data.text_data, text_data, s_text_tts_prompt_data.text_len);
+}
+
+static char * mmi_text_tts_prompt_text_data_get(void)
+{
+       return s_text_tts_prompt_data.text_data;
+}
+
+void mmi_text_tts_prompt_tts_set(char * tts_data, uint32_t tts_len)
+{
+       if(NULL != s_text_tts_prompt_data.tts_data)
+       {
+               lv_mem_free(s_text_tts_prompt_data.tts_data);
+               s_text_tts_prompt_data.tts_data = NULL;
+       }
+
+       s_text_tts_prompt_data.tts_data = (char *)lv_mem_alloc(tts_len + 1);
+       if(NULL == s_text_tts_prompt_data.tts_data)
+       {
+               SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: memory alloc fail\n", __FUNCTION__, __LINE__);
+               return;
+       }
+       _lv_memset_00(s_text_tts_prompt_data.tts_data, (tts_len + 1));
+       
+       s_text_tts_prompt_data.tts_len = tts_len;
+       _lv_memcpy(s_text_tts_prompt_data.tts_data, tts_data, s_text_tts_prompt_data.tts_len);
+}
+
+static char * mmi_text_tts_prompt_tts_data_get(void)
+{
+       return s_text_tts_prompt_data.tts_data;
+}
+
+static uint32_t mmi_text_tts_prompt_tts_len_get(void)
+{
+       return s_text_tts_prompt_data.tts_len;
+}
+
+void mmi_text_tts_prompt_data_free(void)
+{
+       if(NULL != s_text_tts_prompt_data.text_data)
+       {
+               lv_mem_free(s_text_tts_prompt_data.text_data);
+               s_text_tts_prompt_data.text_data = NULL;
+       }
+
+       if(NULL != s_text_tts_prompt_data.tts_data)
+       {
+               lv_mem_free(s_text_tts_prompt_data.tts_data);
+               s_text_tts_prompt_data.tts_data = NULL;
+       }
+
+       _lv_memset_00(&s_text_tts_prompt_data, sizeof(mmi_text_tts_prompt_data_t));
+}
+
+
+static bool s_is_TEXT_TTS_PROMPT = false;
+
+bool mmi_is_TEXT_TTS_PROMPT(void)
+{
+       return s_is_TEXT_TTS_PROMPT;
+}
+
+static lv_remind_obj_ext_t * mmi_text_tts_prompt_screen_ext_get(void)
+{
+       lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_TEXT_TTS_PROMPT);
+       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_text_tts_prompt_screen_prepare_destory(lv_obj_t * activity_obj)
+{
+       SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+    lv_watch_png_cache_all_free();
+
+       Hal_Vibrator_Play_End();
+
+    Hal_Tone_Play_End();
+    Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_3);
+
+       lv_text_tts_prompt_obj_ext_t * ext = mmi_text_tts_prompt_screen_ext_get();
+    if(ext)
+       {
+        if(NULL != ext->timer_id)
+               {
+            Hal_Timer_Stop(ext->timer_id);
+                       ext->timer_id = NULL;
+        }
+    }
+
+    watch_set_suspend_enable(true, ACT_ID_TEXT_TTS_PROMPT, 0);
+
+       s_is_TEXT_TTS_PROMPT = false;
+}
+
+void mmi_text_tts_prompt_screen_clean(void)
+{
+       mmi_text_tts_prompt_screen_prepare_destory(NULL);
+       
+    lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_TEXT_TTS_PROMPT);
+    if(NULL != activity_obj)
+       {
+               SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+        lv_obj_del(activity_obj);
+    }
+}
+
+static void mmi_text_tts_prompt_btn_event_cb(lv_obj_t * obj, lv_event_t e)
+{
+       if(LV_EVENT_CLICKED == e)
+       {
+               mmi_text_tts_prompt_screen_clean();
+               mmi_text_tts_prompt_data_free();
+       }
+}
+
+static void mmi_text_tts_prompt_screen_timeout(void * para)
+{
+       mmi_text_tts_prompt_screen_clean();
+       mmi_text_tts_prompt_data_free();
+}
+
+static lv_obj_t * mmi_text_tts_prompt_screen_create(lv_obj_t * activity_obj)
+{
+       SUNDRY_DEBUG_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_TEXT_TTS_PROMPT;
+               activity_ext.create = mmi_text_tts_prompt_screen_create;
+               activity_ext.prepare_destory = mmi_text_tts_prompt_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_NO); // LV_WATCH_ANIM_HOR_RIGHT_HIDE);
+       lv_text_tts_prompt_obj_ext_t * ext = (lv_text_tts_prompt_obj_ext_t *)lv_obj_allocate_ext_attr(obj, sizeof(lv_text_tts_prompt_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);
+
+       
+       // image
+       lv_obj_t * img_prompt = lv_img_create(cont, NULL);
+       lv_img_set_src(img_prompt, ICON_TEXT_TTS_PROMPT);
+       lv_obj_align(img_prompt, NULL, LV_ALIGN_IN_TOP_MID, 0, 4);
+       
+       // text
+       lv_obj_t * label_prompt = lv_label_create(cont, NULL);
+       lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font18);
+       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) - 24);
+       lv_label_set_text(label_prompt, mmi_text_tts_prompt_text_data_get());
+       lv_obj_align(label_prompt, NULL, LV_ALIGN_CENTER, 0, -5);
+
+       // button
+    lv_obj_t * imgbtn = lv_imgbtn_create(cont, NULL);
+    lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_RELEASED, ICON_TEXT_TTS_PROMPT_BUTTON);
+    lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_PRESSED, ICON_TEXT_TTS_PROMPT_BUTTON);
+       lv_obj_align(imgbtn, NULL, LV_ALIGN_IN_TOP_MID, 0, 173);
+    lv_obj_set_event_cb(imgbtn, mmi_text_tts_prompt_btn_event_cb);     
+       
+       lv_obj_t * label_btn = lv_label_create(imgbtn, NULL);
+       lv_obj_add_style(label_btn, LV_LABEL_PART_MAIN, &lv_watch_font20);
+       lv_label_set_text_id(label_btn, WATCH_TEXT_ID_GOT_IT);
+       lv_obj_align(label_btn, NULL, LV_ALIGN_CENTER, 0, 0);
+       
+       /* start timer (1 min) */
+       ext->timer_id = Hal_Timer_Start(MMI_TEXT_TTS_PROMPT_TIMEOUT, mmi_text_tts_prompt_screen_timeout, NULL, false);
+
+       watch_set_suspend_enable(false, ACT_ID_TEXT_TTS_PROMPT, 0);
+
+       s_is_TEXT_TTS_PROMPT = true;
+
+       return obj;
+}
+
+static void mmi_text_tts_prompt_audio_ctrl_callback(AUDIO_CTRL_PRIORITY priority)
+{
+       printf("[@CHENG_DEBUG][%s][%d]: priority=%d\n", __FUNCTION__, __LINE__, priority);
+
+    if(AUDIO_CTRL_PRIORITY_3 == priority)
+    {
+               //
+    }
+    else if(AUDIO_CTRL_PRIORITY_3 > priority)
+    {
+        mmi_text_tts_prompt_screen_clean();
+    }
+}
+
+void mmi_ui_msg_update_text_tts_prompt(void)
+{
+       SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+       
+       if(mmi_is_TEXT_TTS_PROMPT())
+       {
+        mmi_text_tts_prompt_screen_clean();
+               uos_sleep(20);
+       }
+               
+    if(AUDIO_CTRL_PRIORITY_3 == Hal_Audio_Manage_Start_Req(AUDIO_CTRL_PRIORITY_3, mmi_text_tts_prompt_audio_ctrl_callback))
+    {
+               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_Tone_Play_Repeat(mmi_text_tts_prompt_tts_data_get(), mmi_text_tts_prompt_tts_len_get(), volume);
+
+               if(true == mmi_watch_vibrate_is_permitted())
+                       Hal_Vibrator_Play_Repeat();
+               
+               mmi_text_tts_prompt_screen_create(NULL);
+    }
+}
+
+void mmi_text_tts_prompt_action(void)
+{
+       SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+       
+       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 ;
+       }
+
+       // ui
+       mmi_watch_wake_up();
+       mmi_ui_msg_action_text_tts_prompt();
+}
+#endif
+
 
 #endif
 
index 2d4841e..013a019 100644 (file)
@@ -127,6 +127,35 @@ void mmi_watch_chip_temperature_check(void);
 #endif
 
 
+#ifdef __MMI_TEXT_TTS_PROMPT_SUPPORT__
+#define MMI_TEXT_TTS_PROMPT_TEXT_LEN (30) // text len
+#define MMI_TEXT_TTS_PROMPT_TEXT_SRC_LEN (MMI_TEXT_TTS_PROMPT_TEXT_LEN * 4) // text len
+
+#define MMI_TEXT_TTS_PROMPT_TIMEOUT (1000 * 60) // ms
+
+typedef struct
+{
+       char * text_data;
+       uint32_t text_len;
+       char * tts_data;
+       uint32_t tts_len;
+} mmi_text_tts_prompt_data_t;
+
+typedef struct 
+{
+    lv_watch_obj_ext_t lv_watch_obj;
+    /*New data for this type */
+    TIMER_ID timer_id;
+} lv_text_tts_prompt_obj_ext_t;
+
+void mmi_text_tts_prompt_text_set(char * text_data, uint32_t text_len);
+void mmi_text_tts_prompt_tts_set(char * tts_data, uint32_t tts_len);
+
+void mmi_ui_msg_update_text_tts_prompt(void);
+void mmi_text_tts_prompt_action(void);
+#endif
+
+
 
 #endif