From: @CHENG <2393524978@qq.com> Date: Fri, 28 Jun 2024 08:51:16 +0000 (+0800) Subject: gengxin X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=575069cb2d907090d07d627e300bc9a553d65ea3;p=mirrors%2FASR3603_Z5.git gengxin --- diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/mmi_aigc_data.c b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/mmi_aigc_data.c index 38bb08ad..fda21493 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/mmi_aigc_data.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/mmi_aigc_data.c @@ -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 diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/mmi_aigc_ui.c b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/mmi_aigc_ui.c index ee5aef9a..178d7fb1 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/mmi_aigc_ui.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/mmi_aigc_ui.c @@ -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; } diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/mmi_aigc_ui.h b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/mmi_aigc_ui.h index d85b9ff1..cd84d779 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/mmi_aigc_ui.h +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/mmi_aigc_ui.h @@ -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); diff --git a/2.sdk/sdk/product/craneg_modem/pcac/wsclient/libwebsockets/src/mmi_aigc_chat_websocket.c b/2.sdk/sdk/product/craneg_modem/pcac/wsclient/libwebsockets/src/mmi_aigc_chat_websocket.c index 49bddd1b..7a34ff9c 100644 --- a/2.sdk/sdk/product/craneg_modem/pcac/wsclient/libwebsockets/src/mmi_aigc_chat_websocket.c +++ b/2.sdk/sdk/product/craneg_modem/pcac/wsclient/libwebsockets/src/mmi_aigc_chat_websocket.c @@ -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; diff --git a/2.sdk/sdk/product/craneg_modem/pcac/wsclient/libwebsockets/src/mmi_aigc_trans_websocket.c b/2.sdk/sdk/product/craneg_modem/pcac/wsclient/libwebsockets/src/mmi_aigc_trans_websocket.c index db0a4eb9..d4af685a 100644 --- a/2.sdk/sdk/product/craneg_modem/pcac/wsclient/libwebsockets/src/mmi_aigc_trans_websocket.c +++ b/2.sdk/sdk/product/craneg_modem/pcac/wsclient/libwebsockets/src/mmi_aigc_trans_websocket.c @@ -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; diff --git a/2.sdk/sdk/product/craneg_modem/pcac/wsclient/libwebsockets/src/mmi_aigc_tts_websocket.c b/2.sdk/sdk/product/craneg_modem/pcac/wsclient/libwebsockets/src/mmi_aigc_tts_websocket.c index 1b2476dc..907b04c9 100644 --- a/2.sdk/sdk/product/craneg_modem/pcac/wsclient/libwebsockets/src/mmi_aigc_tts_websocket.c +++ b/2.sdk/sdk/product/craneg_modem/pcac/wsclient/libwebsockets/src/mmi_aigc_tts_websocket.c @@ -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;