gengxin
author@CHENG <2393524978@qq.com>
Fri, 28 Jun 2024 08:51:16 +0000 (16:51 +0800)
committer@CHENG <2393524978@qq.com>
Fri, 28 Jun 2024 08:51:16 +0000 (16:51 +0800)
2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/mmi_aigc_data.c
2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/mmi_aigc_ui.c
2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/mmi_aigc_ui.h
2.sdk/sdk/product/craneg_modem/pcac/wsclient/libwebsockets/src/mmi_aigc_chat_websocket.c
2.sdk/sdk/product/craneg_modem/pcac/wsclient/libwebsockets/src/mmi_aigc_trans_websocket.c
2.sdk/sdk/product/craneg_modem/pcac/wsclient/libwebsockets/src/mmi_aigc_tts_websocket.c

index 38bb08a..fda2149 100644 (file)
@@ -5,9 +5,9 @@
 
 #ifdef __MMI_CUSTOM_AIGC_SUPPORT__
 
-static void mmi_aigc_recv_trans_text_data_process(void * data_ptr, uint32_t data_len);
-static void mmi_aigc_recv_chat_text_data_process(void * data_ptr, uint32_t data_len);
-static void mmi_aigc_recv_tts_audio_data_process(void * data_ptr, uint32_t data_len);
+//static void mmi_aigc_recv_trans_text_data_process(void * data_ptr, uint32_t data_len);
+//static void mmi_aigc_recv_chat_text_data_process(void * data_ptr, uint32_t data_len);
+//static void mmi_aigc_recv_tts_audio_data_process(void * data_ptr, uint32_t data_len);
 
 static void mmi_aigc_send_trans_start_data_process(void * data_ptr, uint32_t data_len);
 static void mmi_aigc_send_trans_audio_data_process(void * data_ptr, uint32_t data_len);
@@ -19,6 +19,7 @@ static void mmi_aigc_send_tts_text_data_process(void * data_ptr, uint32_t data_l
 
 
 
+#if 0
 // recv task
 static TASK_HANDLE * s_aigc_data_recv_task_id = NULL;
 
@@ -129,6 +130,7 @@ static void mmi_aigc_data_recv_task_delete(void)
                s_aigc_data_recv_task_id = NULL;
        }
 }
+#endif
 
 // send task
 static TASK_HANDLE * s_aigc_data_send_task_id = NULL;
@@ -259,13 +261,13 @@ static void mmi_aigc_data_send_task_delete(void)
 
 void mmi_aigc_data_task_create(void)
 {
-       mmi_aigc_data_recv_task_create();
+       //mmi_aigc_data_recv_task_create();
        mmi_aigc_data_send_task_create();
 }
 
 void mmi_aigc_data_task_delete(void)
 {
-       mmi_aigc_data_recv_task_delete();
+       //mmi_aigc_data_recv_task_delete();
        mmi_aigc_data_send_task_delete();
 }
 
@@ -297,7 +299,7 @@ static void mmi_aigc_send_trans_start_data_process(void * data_ptr, uint32_t dat
        int ret = mmi_aigc_trans_websocket_send_text_data(send_ptr, send_len);
        if(0 > ret)
        {
-               AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: send fail\n", __FUNCTION__, __LINE__);
+               AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: error=%d,send fail\n", __FUNCTION__, __LINE__, ret);
        }
 }
 
@@ -308,7 +310,7 @@ static void mmi_aigc_send_trans_audio_data_process(void * data_ptr, uint32_t dat
        int ret = mmi_aigc_trans_websocket_send_binary_data(data_ptr, data_len);
        if(0 > ret)
        {
-               AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: send fail\n", __FUNCTION__, __LINE__);
+               AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: error=%d,send fail\n", __FUNCTION__, __LINE__, ret);
        }
 }
 
@@ -323,11 +325,12 @@ static void mmi_aigc_send_trans_stop_data_process(void * data_ptr, uint32_t data
        int ret = mmi_aigc_trans_websocket_send_text_data(send_ptr, send_len);
        if(0 > ret)
        {
-               AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: send fail\n", __FUNCTION__, __LINE__);
+               AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: error=%d,send fail\n", __FUNCTION__, __LINE__, ret);
        }
 #endif
 }
 
+#if 0
 static void mmi_aigc_trans_text_data_recv_msg(void * param, uint32_t param_size)
 {
        mmi_aigc_data_recv_task_msg_send(MMI_AIGC_MSG_TRANS_TEXT_RECV, param, param_size);
@@ -373,7 +376,7 @@ static void mmi_aigc_recv_trans_text_data_process(void * data_ptr, uint32_t data
                                if(true == mmi_aigc_trans_result_text_store(value_result_str, value_result_len, false))
                                {
                                        // refresh ui
-                                       mmi_ui_msg_update_aigc_recv_trans_text_middle();                                        
+                                       mmi_aigc_trans_text_middle_screen_update();                                     
                                }
                        }
                }               
@@ -390,7 +393,7 @@ static void mmi_aigc_recv_trans_text_data_process(void * data_ptr, uint32_t data
                                if(true == mmi_aigc_trans_result_text_store(value_result_str, value_result_len, true))
                                {
                                        // refresh ui
-                                       mmi_ui_msg_action_aigc_recv_trans_text_stop();                                  
+                                       mmi_aigc_trans_text_stop_screen_update();                                       
                                }
                        }
                }
@@ -420,6 +423,88 @@ void mmi_aigc_trans_websocket_recv_data_handler(char * data_ptr, int data_len, i
        
        mmi_aigc_trans_text_data_recv_msg(data_ptr, data_len);
 }
+#else
+
+void mmi_aigc_trans_websocket_recv_data_handler(char * data_ptr, int data_len, int payload_len, int payload_offset)
+{
+       AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: size=%d\n", __FUNCTION__, __LINE__, data_len);
+       //cplog_printf("[@CHENG_DEBUG][%s][%d]: size=%d\n", __FUNCTION__, __LINE__, data_len);
+       
+       if(NULL == data_ptr)
+       {
+               AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: no data\n", __FUNCTION__, __LINE__);
+               return;
+       }
+
+#ifdef MMI_AIGC_DEBUG_TO_FILE
+       mmi_debug_info_write_to_file(AIGC_RECV_TRANS_FILE, data_ptr, data_len);
+#endif
+
+       cJSON * json_root = cJSON_Parse(data_ptr);
+       if(NULL != json_root)
+       {
+               cplog_printf("[@CHENG_DEBUG][%s][%d]: json root\n", __FUNCTION__, __LINE__);
+
+               // "event"
+               char * value_event_str = cJSON_GetStringValue(cJSON_GetObjectItem(json_root, "event"));
+               if(0 == strncmp(value_event_str, "TranscriptionStarted", strlen("TranscriptionStarted")))
+               {
+                       // start
+                       AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: transcription start\n", __FUNCTION__, __LINE__);
+                       
+               }
+               else if(0 == strncmp(value_event_str, "Changed", strlen("Changed")))
+               {
+                       // changed
+                       AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: changed\n", __FUNCTION__, __LINE__);
+                       cJSON * json_result = cJSON_GetObjectItem(json_root, "result");
+                       if(NULL != json_result)
+                       {
+                               char * value_result_str = cJSON_GetStringValue(cJSON_GetObjectItem(json_result, "result"));
+                               uint32_t value_result_len = strlen(value_result_str);
+                               
+                               if(true == mmi_aigc_trans_result_text_store(value_result_str, value_result_len, false))
+                               {
+                                       // refresh ui
+                                       mmi_aigc_trans_text_middle_screen_update();                                     
+                               }
+                       }
+               }               
+               else if(0 == strncmp(value_event_str, "SentenceEnd", strlen("SentenceEnd")))
+               {
+                       // end
+                       AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: transcription end\n", __FUNCTION__, __LINE__);
+                       cJSON * json_result = cJSON_GetObjectItem(json_root, "result");
+                       if(NULL != json_result)
+                       {
+                               char * value_result_str = cJSON_GetStringValue(cJSON_GetObjectItem(json_result, "result"));
+                               uint32_t value_result_len = strlen(value_result_str);
+                               
+                               if(true == mmi_aigc_trans_result_text_store(value_result_str, value_result_len, true))
+                               {
+                                       // refresh ui
+                                       mmi_aigc_trans_text_stop_screen_update();                                       
+                               }
+                       }
+               }
+               else if(0 == strncmp(value_event_str, "TranscriptionCompleted", strlen("TranscriptionCompleted")))
+               {
+                       // stop
+                       AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: transcription stop\n", __FUNCTION__, __LINE__);
+
+               }
+       }
+
+EXIT_AND_FREE:
+       if(NULL != json_root)
+       {
+               AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: free json root\n", __FUNCTION__, __LINE__);
+               //cplog_printf("[@CHENG_DEBUG][%s][%d]: free json root\n", __FUNCTION__, __LINE__);
+               cJSON_Delete(json_root);
+               json_root = NULL;
+       }
+}
+#endif
 
 
 
@@ -449,7 +534,7 @@ static void mmi_aigc_send_chat_text_data_process(void * data_ptr, uint32_t data_
        int ret = mmi_aigc_chat_websocket_send_text_data(send_buff_ptr, temp_len);
        if(0 > ret)
        {
-               AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: send fail\n", __FUNCTION__, __LINE__);
+               AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: error=%d,send fail\n", __FUNCTION__, __LINE__, ret);
        }
 
        if(NULL != send_buff_ptr)
@@ -459,6 +544,7 @@ static void mmi_aigc_send_chat_text_data_process(void * data_ptr, uint32_t data_
        }
 }
 
+#if 0
 static void mmi_aigc_chat_text_data_recv_msg(void * param, uint32_t param_size)
 {
        mmi_aigc_data_recv_task_msg_send(MMI_AIGC_MSG_CHAT_TEXT_RECV, param, param_size);
@@ -502,7 +588,7 @@ static void mmi_aigc_recv_chat_text_data_process(void * data_ptr, uint32_t data_
                        if(true == mmi_aigc_chat_result_text_store(value_content_str, value_content_len))
                        {
                                // send msg to refresh ui
-
+                               //mmi_aigc_chat_text_middle_screen_update();
                        }
                }
                else if(0 == strncmp(value_type_str, "end", strlen("end")))
@@ -511,7 +597,7 @@ static void mmi_aigc_recv_chat_text_data_process(void * data_ptr, uint32_t data_
                        AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: chat stop\n", __FUNCTION__, __LINE__);
 
                        // send msg to refresh ui
-                       mmi_ui_msg_action_aigc_recv_chat_text_stop();
+                       mmi_aigc_chat_text_stop_screen_update();
                }
        }
 
@@ -532,6 +618,70 @@ void mmi_aigc_chat_websocket_recv_data_handler(char * data_ptr, int data_len, in
        
        mmi_aigc_chat_text_data_recv_msg(data_ptr, data_len);   
 }
+#else
+
+void mmi_aigc_chat_websocket_recv_data_handler(char * data_ptr, int data_len, int payload_len, int payload_offset)
+{
+       AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: size=%d\n", __FUNCTION__, __LINE__, data_len);
+       //cplog_printf("[@CHENG_DEBUG][%s][%d]: size=%d\n", __FUNCTION__, __LINE__, data_len);
+       
+       if(NULL == data_ptr)
+       {
+               AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: no data\n", __FUNCTION__, __LINE__);
+               return;
+       }
+
+#ifdef MMI_AIGC_DEBUG_TO_FILE
+       mmi_debug_info_write_to_file(AIGC_RECV_CHAT_FILE, data_ptr, data_len);
+#endif
+
+       cJSON * json_root = cJSON_Parse(data_ptr);
+       if(NULL != json_root)
+       {
+               cplog_printf("[@CHENG_DEBUG][%s][%d]: json root\n", __FUNCTION__, __LINE__);
+
+               // "type"
+               char * value_type_str = cJSON_GetStringValue(cJSON_GetObjectItem(json_root, "type"));
+               if(0 == strncmp(value_type_str, "start", strlen("start")))
+               {
+                       // start
+                       AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: chat start\n", __FUNCTION__, __LINE__);
+                       
+               }
+               else if(0 == strncmp(value_type_str, "middle", strlen("middle")))
+               {
+                       // middle
+                       AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: chat middle\n", __FUNCTION__, __LINE__);
+
+                       char * value_content_str = cJSON_GetStringValue(cJSON_GetObjectItem(json_root, "content"));
+                       uint32_t value_content_len = strlen(value_content_str);
+                       
+                       if(true == mmi_aigc_chat_result_text_store(value_content_str, value_content_len))
+                       {
+                               // send msg to refresh ui
+                               //mmi_aigc_chat_text_middle_screen_update();
+                       }
+               }
+               else if(0 == strncmp(value_type_str, "end", strlen("end")))
+               {
+                       // stop
+                       AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: chat stop\n", __FUNCTION__, __LINE__);
+
+                       // send msg to refresh ui
+                       mmi_aigc_chat_text_stop_screen_update();
+               }
+       }
+
+EXIT_AND_FREE:
+       if(NULL != json_root)
+       {
+               AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: free json root\n", __FUNCTION__, __LINE__);
+               //cplog_printf("[@CHENG_DEBUG][%s][%d]: free json root\n", __FUNCTION__, __LINE__);
+               cJSON_Delete(json_root);
+               json_root = NULL;
+       }
+}
+#endif
 
 
 
@@ -565,7 +715,7 @@ static void mmi_aigc_send_tts_start_data_process(void * data_ptr, uint32_t data_
        int ret = mmi_aigc_tts_websocket_send_text_data(send_ptr, send_len);
        if(0 > ret)
        {
-               AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: send fail\n", __FUNCTION__, __LINE__);
+               AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: error=%d,send fail\n", __FUNCTION__, __LINE__, ret);
        }
 }
 
@@ -581,7 +731,7 @@ static void mmi_aigc_send_tts_stop_data_process(void * data_ptr, uint32_t data_l
        int ret = mmi_aigc_tts_websocket_send_text_data(send_ptr, send_len);
        if(0 > ret)
        {
-               AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: send fail\n", __FUNCTION__, __LINE__);
+               AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: error=%d,send fail\n", __FUNCTION__, __LINE__, ret);
        }
 }
 
@@ -615,7 +765,7 @@ static void mmi_aigc_send_tts_text_data_process(void * data_ptr, uint32_t data_l
        int ret = mmi_aigc_tts_websocket_send_text_data(send_buff_ptr, temp_len);
        if(0 > ret)
        {
-               AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: send fail\n", __FUNCTION__, __LINE__);
+               AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: error=%d,send fail\n", __FUNCTION__, __LINE__, ret);
        }
 
        if(NULL != send_buff_ptr)
@@ -671,6 +821,7 @@ static void mmi_aigc_send_tts_text_data_process(void * data_ptr, uint32_t data_l
 
 #endif
 
+#if 0
 static void mmi_aigc_tts_audio_data_recv_msg(void * param, uint32_t param_size)
 {
        mmi_aigc_data_recv_task_msg_send(MMI_AIGC_MSG_TTS_AUDIO_RECV, param, param_size);
@@ -705,11 +856,7 @@ static void mmi_aigc_recv_tts_audio_data_process(void * data_ptr, uint32_t data_
                                // end
                                AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: EndSynthesis\n", __FUNCTION__, __LINE__);
                                
-                               mmi_aigc_tts_audio_ll_new_tail_node();
-                               mmi_aigc_send_tts_text_action_pre();
-                               
-                               // send msg to refresh ui
-                               mmi_aigc_tts_audio_play();
+                               mmi_aigc_tts_end_synthesis_action();
                        }
                }
        }
@@ -740,6 +887,61 @@ void mmi_aigc_tts_websocket_recv_data_handler(char * data_ptr, int data_len, int
        
        mmi_aigc_tts_audio_data_recv_msg(data_ptr, data_len);   
 }
+#else
+
+void mmi_aigc_tts_websocket_recv_data_handler(char * data_ptr, int data_len, int payload_len, int payload_offset)
+{
+       AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: size=%d\n", __FUNCTION__, __LINE__, data_len);
+       //cplog_printf("[@CHENG_DEBUG][%s][%d]: size=%d\n", __FUNCTION__, __LINE__, data_len);
+       
+       if(NULL == data_ptr)
+       {
+               AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: no data\n", __FUNCTION__, __LINE__);
+               return;
+       }
+
+#ifdef MMI_AIGC_DEBUG_TO_FILE
+       mmi_debug_info_write_to_file(AIGC_RECV_TTS_FILE, data_ptr, data_len);
+#endif
+
+       cJSON * json_root = cJSON_Parse(data_ptr);
+       if(NULL != json_root)
+       {
+               AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: tts json\n", __FUNCTION__, __LINE__);
+
+               cJSON * json_header = cJSON_GetObjectItem(json_root, "header");
+               if(NULL != json_header)
+               {
+                       char * value_event_str = cJSON_GetStringValue(cJSON_GetObjectItem(json_header, "event"));
+                       if(0 == strncmp(value_event_str, "EndSynthesis", strlen("EndSynthesis")))
+                       {
+                               // end
+                               AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: EndSynthesis\n", __FUNCTION__, __LINE__);
+                               
+                               mmi_aigc_tts_end_synthesis_action();
+                       }
+               }
+       }
+       else
+       {
+               // tts data
+               AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: tts data\n", __FUNCTION__, __LINE__);
+
+               if(true == mmi_aigc_tts_audio_store(data_ptr, data_len))
+               {
+               
+               }
+       }
+
+       if(NULL != json_root)
+       {
+               AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: free json root\n", __FUNCTION__, __LINE__);
+               //cplog_printf("[@CHENG_DEBUG][%s][%d]: free json root\n", __FUNCTION__, __LINE__);
+               cJSON_Delete(json_root);
+               json_root = NULL;
+       }
+}
+#endif
 
 #endif
 
index ee5aef9..178d7fb 100644 (file)
@@ -205,6 +205,88 @@ bool mmi_aigc_trans_result_text_store(char * data_buff, uint32_t data_len, bool
        return true;
 }
 
+static void mmi_aigc_trans_text_middle_screen_task_cb(lv_task_t * task)
+{
+       AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: ui_state=%d\n", __FUNCTION__, __LINE__, s_aigc_ui_state);
+       
+       if(MMI_AIGC_UI_STATE_LISTENING == s_aigc_ui_state || MMI_AIGC_UI_STATE_LISTENING_MIDDLE == s_aigc_ui_state)
+       {               
+               lv_aigc_ext_t * ext = mmi_aigc_actId_ext_get(ACT_ID_AIGC_MAIN);
+               if(NULL == ext)
+                       return;
+               
+               mmi_aigc_list_set_slide_enable(&ext->old_ext, true);
+
+               if(0 != mmi_aigc_msg_count_get())
+               {
+                       AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+                       mmi_aigc_listening_middle_screen_display();
+               }
+       }
+}
+
+void mmi_aigc_trans_text_middle_screen_update(void)
+{
+       lv_task_t * task_p = lv_task_create(mmi_aigc_trans_text_middle_screen_task_cb, 10, LV_TASK_PRIO_HIGH, NULL);
+       lv_task_once(task_p);
+}
+
+static void mmi_aigc_trans_text_screen_close_task_cb(lv_task_t * task)
+{
+       AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+       
+       mmi_aigc_thinking_screen_display();
+
+       mmi_aigc_chat_text_download_requst();
+}
+
+static void mmi_aigc_trans_text_stop_screen_task_cb(void)
+{
+       AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: ui_state=%d\n", __FUNCTION__, __LINE__, s_aigc_ui_state);
+
+       // wb
+       mmi_aigc_trans_websocket_close();
+       mmi_aigc_chat_websocket_open();
+
+       if(MMI_AIGC_UI_STATE_LISTENING == s_aigc_ui_state || MMI_AIGC_UI_STATE_LISTENING_MIDDLE == s_aigc_ui_state)
+       {
+               // record
+               mmi_aigc_listening_stop(true);
+               
+               lv_aigc_ext_t * ext = mmi_aigc_actId_ext_get(ACT_ID_AIGC_MAIN);
+               if(NULL == ext)
+                       return;
+               
+               mmi_aigc_list_set_slide_enable(&ext->old_ext, true);
+
+               if(0 == mmi_aigc_msg_count_get())
+               {
+                       AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+                       mmi_aigc_default_screen_display();
+               }
+               else
+               {
+                       AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+                       mmi_aigc_listening_middle_screen_display();
+
+                       lv_task_t * task_p = lv_task_create(mmi_aigc_trans_text_screen_close_task_cb, 1000, LV_TASK_PRIO_HIGH, NULL);
+                       lv_task_once(task_p);
+               }
+       }
+}
+
+void mmi_aigc_trans_text_stop_screen_update(void)
+{
+       AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+       lv_task_t * task_p = lv_task_create(mmi_aigc_trans_text_stop_screen_task_cb, 10, LV_TASK_PRIO_HIGH, NULL);
+       lv_task_once(task_p);   
+}
+
+
 char * mmi_aigc_chat_result_text_get(uint32_t * data_len)
 {
        mmi_aigc_msg_item_info_t * t_aigc_item_info = &(s_aigc_info_p->msg_item[1]);
@@ -263,6 +345,71 @@ bool mmi_aigc_chat_result_text_store(char * data_buff, uint32_t data_len)
        return true;
 }
 
+void mmi_aigc_chat_text_middle_task_cb(lv_task_t * task)
+{
+       if(MMI_AIGC_UI_STATE_THINKING == s_aigc_ui_state)
+       {
+               AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+               
+               lv_aigc_ext_t * ext = mmi_aigc_actId_ext_get(ACT_ID_AIGC_MAIN);
+               if(NULL == ext)
+                       return;
+               
+               if(NULL != ext->thinking_task_p)
+               {
+                       lv_task_del(ext->thinking_task_p);
+                       ext->thinking_task_p = NULL;
+               }
+
+               mmi_aigc_list_screen_display();
+       }
+       else if(MMI_AIGC_UI_STATE_LIST == s_aigc_ui_state)
+       {
+               AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+               lv_aigc_ext_t * ext = mmi_aigc_actId_ext_get(ACT_ID_AIGC_MAIN);
+               if(NULL == ext)
+                       return;
+
+               mmi_aigc_msg_item_info_t * msg_item = &(s_aigc_info_p->msg_item[1]);
+               char * file_buf = msg_item->text_data_ptr;
+
+               lv_label_set_text(ext->list_other_label, file_buf);
+       }
+}
+
+void mmi_aigc_chat_text_middle_screen_update(void)
+{
+       AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+               
+       lv_task_t * task_p = lv_task_create(mmi_aigc_chat_text_middle_task_cb, 10, LV_TASK_PRIO_HIGH, NULL);
+       lv_task_once(task_p);
+}
+
+static void mmi_aigc_chat_text_stop_screen_task_cb(void)
+{
+       AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: ui_state=%d\n", __FUNCTION__, __LINE__, s_aigc_ui_state);
+
+       // wb
+       mmi_aigc_chat_websocket_close();
+       mmi_aigc_tts_websocket_open();
+
+       if((MMI_AIGC_UI_STATE_THINKING == s_aigc_ui_state) || (MMI_AIGC_UI_STATE_LIST == s_aigc_ui_state))
+       {
+               mmi_aigc_main_screen_refresh();
+
+               mmi_aigc_tts_audio_download_requst();
+       }
+}
+
+void mmi_aigc_chat_text_stop_screen_update(void)
+{
+       AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+       lv_task_t * task_p = lv_task_create(mmi_aigc_chat_text_stop_screen_task_cb, 10, LV_TASK_PRIO_HIGH, NULL);
+       lv_task_once(task_p);
+}
+
 void mmi_aigc_chat_text_download_requst(void)
 {
        uint32_t data_len = 0;
@@ -274,6 +421,7 @@ void mmi_aigc_chat_text_download_requst(void)
        }
 }
 
+
 static void mmi_utf8_complete_character_judge(char * data_ptr, uint32_t data_len, uint32_t * output_len)
 {
        uint32_t i = 0;
@@ -465,12 +613,7 @@ void mmi_aigc_send_tts_text_action(char * data_ptr, uint32_t data_len)
 void mmi_aigc_send_tts_text_action_pre(void)
 {
        uint32_t node_total = mmi_aigc_tts_audio_ll_node_num();
-       
        AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: node_total=%d\n", __FUNCTION__, __LINE__, node_total);
-       //if(5 < node_total)
-       //{
-       //      return;
-       //}
        
        uint32_t data_len = 0;
        char * data_ptr = mmi_aigc_chat_result_text_get(&data_len);
@@ -706,92 +849,15 @@ bool mmi_aigc_tts_audio_play(void)
        return true;
 }
 
-static void mmi_aigc_trans_text_middle_screen_task_cb(lv_task_t * task)
+void mmi_aigc_tts_end_synthesis_action(void)
 {
-       AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: ui_state=%d\n", __FUNCTION__, __LINE__, s_aigc_ui_state);
-       
-       if(MMI_AIGC_UI_STATE_LISTENING == s_aigc_ui_state || MMI_AIGC_UI_STATE_LISTENING_MIDDLE == s_aigc_ui_state)
-       {               
-               lv_aigc_ext_t * ext = mmi_aigc_actId_ext_get(ACT_ID_AIGC_MAIN);
-               if(NULL == ext)
-                       return;
-               
-               mmi_aigc_list_set_slide_enable(&ext->old_ext, true);
-
-               if(0 != mmi_aigc_msg_count_get())
-               {
-                       AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
-
-                       mmi_aigc_listening_middle_screen_display();
-               }
-       }
-}
-
-void mmi_ui_msg_update_aigc_recv_trans_text_middle(void)
-{
-       lv_task_t * task_p = lv_task_create(mmi_aigc_trans_text_middle_screen_task_cb, 50, LV_TASK_PRIO_HIGH, NULL);
-       lv_task_once(task_p);
-}
-
-static void mmi_aigc_trans_text_screen_task_cb(lv_task_t * task)
-{
-       AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
-       
-       mmi_aigc_thinking_screen_display();
-
-       mmi_aigc_chat_text_download_requst();
-}
-
-void mmi_ui_msg_update_aigc_recv_trans_text_stop(void)
-{
-       AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: ui_state=%d\n", __FUNCTION__, __LINE__, s_aigc_ui_state);
-
-       // wb
-       mmi_aigc_trans_websocket_close();
-       mmi_aigc_chat_websocket_open();
+       mmi_aigc_tts_audio_ll_new_tail_node();
+       mmi_aigc_send_tts_text_action_pre();
        
-       if(MMI_AIGC_UI_STATE_LISTENING == s_aigc_ui_state || MMI_AIGC_UI_STATE_LISTENING_MIDDLE == s_aigc_ui_state)
-       {               
-               mmi_aigc_listening_stop(true);
-
-               lv_aigc_ext_t * ext = mmi_aigc_actId_ext_get(ACT_ID_AIGC_MAIN);
-               if(NULL == ext)
-                       return;
-               
-               mmi_aigc_list_set_slide_enable(&ext->old_ext, true);
-
-               if(0 == mmi_aigc_msg_count_get())
-               {
-                       AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
-
-                       mmi_aigc_default_screen_display();
-               }
-               else
-               {
-                       AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
-                       
-                       mmi_aigc_listening_middle_screen_display();
-
-                       lv_task_t * task_p = lv_task_create(mmi_aigc_trans_text_screen_task_cb, 1000, LV_TASK_PRIO_HIGH, NULL);
-                       lv_task_once(task_p);
-               }
-       }
+       // 
+       mmi_aigc_tts_audio_play();
 }
 
-void mmi_ui_msg_update_aigc_recv_chat_text_stop(void)
-{
-       AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
-
-       mmi_aigc_chat_websocket_close();
-       mmi_aigc_tts_websocket_open();
-       
-       if(MMI_AIGC_UI_STATE_THINKING == s_aigc_ui_state)
-       {
-               mmi_aigc_main_screen_refresh();
-
-               mmi_aigc_tts_audio_download_requst();
-       }
-}
 
 void mmi_aigc_list_screen_prompt_clean_task_cb(lv_task_t * task)
 {
@@ -1605,6 +1671,12 @@ lv_obj_t * mmi_aigc_list_msg_item_add(lv_obj_t * list_page, mmi_aigc_msg_item_in
                lv_obj_set_width(label_text, lv_obj_get_width(obj) - 20);
                lv_label_set_text(label_text, file_buf);
                lv_obj_align(label_text, obj, LV_ALIGN_IN_LEFT_MID, 10, 0);
+               ext->list_other_label = label_text;
+
+               //if(lv_obj_get_width(list_page) <= (lv_obj_get_y(obj) + lv_obj_get_height(obj)))
+               //{
+               //      lv_obj_align(obj, scrl, LV_ALIGN_IN_BOTTOM_LEFT, 10, -10);              
+               //}
        }
 
        //lv_obj_set_click(obj, true);
@@ -1654,6 +1726,7 @@ lv_obj_t * mmi_aigc_list_create(lv_obj_t * obj)
        //lv_obj_set_size(list_page, lv_obj_get_width(obj) - 20, lv_obj_get_height(obj) - 20 - 80);
        lv_obj_set_size(list_page, lv_obj_get_width(obj), lv_obj_get_height(obj) - 20 - 80);
        lv_page_set_scrollbar_mode(list_page, LV_SCROLLBAR_MODE_OFF);
+       //lv_list_set_scrollbar_mode(list_page, LV_SCROLLBAR_MODE_AUTO);
        lv_obj_set_style_local_bg_opa(list_page, LV_PAGE_PART_BG, LV_STATE_DEFAULT, LV_OPA_0);
        lv_obj_set_style_local_border_opa(list_page, LV_PAGE_PART_BG, LV_STATE_DEFAULT, LV_OPA_0);
        lv_obj_set_style_local_outline_width(list_page, LV_PAGE_PART_BG, LV_STATE_DEFAULT, 0);
@@ -1683,10 +1756,10 @@ lv_obj_t * mmi_aigc_list_create(lv_obj_t * obj)
                mmi_aigc_list_msg_item_add(list_page, msg_item, NULL, i);
        }       
 
-       if((lv_obj_get_height(list_page) - lv_obj_get_style_pad_top(list_page, LV_LIST_PART_BG) * 2) > lv_obj_get_height(scrl))
-       {
-               lv_cont_set_layout(scrl, LV_LAYOUT_OFF);
-       }
+       //if((lv_obj_get_height(list_page) - lv_obj_get_style_pad_top(list_page, LV_LIST_PART_BG) * 2) > lv_obj_get_height(scrl))
+       //{
+       //      lv_cont_set_layout(scrl, LV_LAYOUT_OFF);
+       //}
 
        return list_page;
 }
index d85b9ff..cd84d77 100644 (file)
@@ -114,6 +114,7 @@ typedef struct
        lv_obj_t * cont_list;
        lv_obj_t * list; // chat list
        lv_obj_t * list_signal_weak_label;
+       lv_obj_t * list_other_label;
 
     lv_style_t style_cont_self;
     lv_style_t style_cont_other;
@@ -145,9 +146,6 @@ typedef enum
 }MMI_AIGC_UI_STATE_E;
 
 
-void mmi_ui_msg_update_aigc_recv_trans_text_stop(void);
-void mmi_ui_msg_update_aigc_recv_chat_text_stop(void);
-
 
 char * mmi_aigc_trans_result_text_get(uint32_t * data_len);
 bool mmi_aigc_trans_result_text_store(char * data_buff, uint32_t data_len, bool is_end);
index 49bddd1..7a34ff9 100644 (file)
@@ -7,8 +7,8 @@
 #include "mmi_aigc_chat_websocket_client.h"
 #include "mmi_aigc_websocket.h"
 
-#define MMI_AIGC_CHAT_WEBSOCKET_URI "ws://121.40.67.151:9099/chat/ws"
-//#define MMI_AIGC_CHAT_WEBSOCKET_URI "ws://118.145.158.207:80/chat/ws"
+//#define MMI_AIGC_CHAT_WEBSOCKET_URI "ws://121.40.67.151:9099/chat/ws"
+#define MMI_AIGC_CHAT_WEBSOCKET_URI "ws://118.145.158.207:80/chat/ws"
 
 static sim_esp_websocket_client_handle_t s_aigc_chat_ws_client_p = NULL;
 
index db0a4eb..d4af685 100644 (file)
@@ -7,8 +7,8 @@
 #include "sim_esp_websocket_client.h"
 #include "mmi_aigc_websocket.h"
 
-#define MMI_AIGC_TRANS_WEBSOCKET_URI "ws://121.40.67.151:9099/asr/ws"
-//#define MMI_AIGC_TRANS_WEBSOCKET_URI "ws://118.145.158.207:80/asr/ws"
+//#define MMI_AIGC_TRANS_WEBSOCKET_URI "ws://121.40.67.151:9099/asr/ws"
+#define MMI_AIGC_TRANS_WEBSOCKET_URI "ws://118.145.158.207:80/asr/ws"
 
 static sim_esp_websocket_client_handle_t s_aigc_trans_ws_client_p = NULL;
 
index 1b2476d..907b04c 100644 (file)
@@ -7,8 +7,8 @@
 #include "mmi_aigc_tts_websocket_client.h"
 #include "mmi_aigc_websocket.h"
 
-#define MMI_AIGC_TTS_WEBSOCKET_URI "ws://121.40.67.151:9099/tts/stream"
-//#define MMI_AIGC_TTS_WEBSOCKET_URI "ws://118.145.158.207:80/tts/stream"
+//#define MMI_AIGC_TTS_WEBSOCKET_URI "ws://121.40.67.151:9099/tts/stream"
+#define MMI_AIGC_TTS_WEBSOCKET_URI "ws://118.145.158.207:80/tts/stream"
 
 static sim_esp_websocket_client_handle_t s_aigc_tts_ws_client_p = NULL;