static uint32_t s_aigc_recording_sent_size = 0;
static uint32_t s_aigc_tts_text_sent_size = 0;
-static uint8_t s_aigc_thinking_counter = 0;
+static bool s_aigc_trans_text_end = false;
static bool s_aigc_tts_audio_playing = false;
static lv_ll_t s_aigc_tts_audio_ll = {0};
static mmi_aigc_tts_audio_ll_t * s_aigc_tts_audio_play_node = NULL;
+static bool s_aigc_trans_ws_open_flag = false;
+static bool s_aigc_chat_ws_open_flag = false;
+static bool s_aigc_tts_ws_open_flag = false;
+
#define MMI_AIGC_SEND_TTS_TEXT_MAX (150) // 50
#define MMI_AIGC_SEND_TTS_TEXT_MIN (99) // 33
+static lv_res_t mmi_aigc_list_scrl_signal(lv_obj_t * scrl, lv_signal_t sign, void * param);
+static void mmi_aigc_list_set_slide_enable(lv_watch_obj_ext_t * ext, bool enable);
static void mmi_aigc_default_screen_display(void);
static void mmi_aigc_record_button_event_cb(lv_obj_t * obj, lv_event_t e);
+
+static void mmi_aigc_trans_websocket_open(void)
+{
+ if(false == s_aigc_trans_ws_open_flag)
+ {
+ mmi_aigc_trans_websocket_app_start();
+ s_aigc_trans_ws_open_flag = true;
+ }
+}
+
+static void mmi_aigc_chat_websocket_open(void)
+{
+ if(false == s_aigc_chat_ws_open_flag)
+ {
+ mmi_aigc_chat_websocket_app_start();
+ s_aigc_chat_ws_open_flag = true;
+ }
+}
+
+static void mmi_aigc_tts_websocket_open(void)
+{
+ if(false == s_aigc_tts_ws_open_flag)
+ {
+ mmi_aigc_tts_websocket_app_start();
+ s_aigc_tts_ws_open_flag = true;
+ }
+}
+
+static void mmi_aigc_trans_websocket_close(void)
+{
+ if(true == s_aigc_trans_ws_open_flag)
+ {
+ mmi_aigc_trans_websocket_app_stop();
+ s_aigc_trans_ws_open_flag = false;
+ }
+}
+
+static void mmi_aigc_chat_websocket_close(void)
+{
+ if(true == s_aigc_chat_ws_open_flag)
+ {
+ mmi_aigc_chat_websocket_app_stop();
+ s_aigc_chat_ws_open_flag = false;
+ }
+}
+
+static void mmi_aigc_tts_websocket_close(void)
+{
+ if(true == s_aigc_tts_ws_open_flag)
+ {
+ mmi_aigc_tts_websocket_app_stop();
+ s_aigc_tts_ws_open_flag = false;
+ }
+}
+
static void mmi_aigc_msg_data_clean(void)
{
AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
return (t_aigc_item_info->text_data_ptr);
}
-bool mmi_aigc_trans_result_text_store(char * data_buff, uint32_t data_len)
+bool mmi_aigc_trans_result_text_store(char * data_buff, uint32_t data_len, bool is_end)
{
if(NULL == data_buff || 0 == data_len)
{
return false;
}
+ if(true == s_aigc_trans_text_end)
+ {
+ AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ return false;
+ }
+ s_aigc_trans_text_end = is_end;
+
mmi_aigc_msg_item_info_t * t_aigc_item_info = &(s_aigc_info_p->msg_item[0]);
+#if 1
+ char * temp_ptr = lv_mem_alloc(data_len + 1);
+ if(NULL == temp_ptr)
+ {
+ AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: alloc memory fail\n", __FUNCTION__, __LINE__);
+ return false;
+ }
+ _lv_memset_00(temp_ptr, data_len + 1);
+ _lv_memcpy(temp_ptr, data_buff, data_len);
+
+ if(NULL != t_aigc_item_info->text_data_ptr)
+ {
+ lv_mem_free(t_aigc_item_info->text_data_ptr);
+ t_aigc_item_info->text_data_ptr = NULL;
+ }
+ t_aigc_item_info->text_data_ptr = temp_ptr;
+ t_aigc_item_info->text_data_size = data_len;
+
+#else
if(NULL == t_aigc_item_info->text_data_ptr)
{
char * temp_ptr = lv_mem_alloc(data_len + 1);
t_aigc_item_info->text_data_ptr = temp_ptr;
t_aigc_item_info->text_data_size += data_len;
}
+#endif
t_aigc_item_info->msg_from = 0;
-
s_aigc_info_p->msg_count = 1;
AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: size=%d,ptr=0x%x\n", __FUNCTION__, __LINE__, t_aigc_item_info->text_data_size, t_aigc_item_info->text_data_ptr);
t_aigc_item_info->text_data_size += data_len;
}
t_aigc_item_info->msg_from = 1;
-
s_aigc_info_p->msg_count = 2;
printf("[@CHENG_DEBUG][%s][%d]: size=%d,ptr=0x%x\n", __FUNCTION__, __LINE__, t_aigc_item_info->text_data_size, t_aigc_item_info->text_data_ptr);
mmi_aigc_send_tts_text_action_pre();
}
-#if 1
void mmi_aigc_tts_audio_ll_init(void)
{
}
else if(MMI_AIGC_TTS_AUDIO_PRI > priority)
{
- Hal_NFFS_File_Play_End();
- Hal_Audio_Manage_End_Ind(MMI_AIGC_TTS_AUDIO_PRI);
- // websocket
- mmi_aigc_tts_websocket_app_stop();
+ // wb
+ mmi_aigc_tts_websocket_close();
+
// res
mmi_aigc_tts_audio_ll_clean();
+
+ Hal_NFFS_File_Play_End();
+ Hal_Audio_Manage_End_Ind(MMI_AIGC_TTS_AUDIO_PRI);
}
}
#else
volume = query_current_volume();
#endif
- volume = 1;
+ volume = HAL_AUDIO_SPK_LEVEL_MAX;
Hal_Tone_Play_Onetime((uint32_t *)node->audio_data_ptr,
node->audio_data_size,
#else
volume = query_current_volume();
#endif
- volume = 1;
+ volume = HAL_AUDIO_SPK_LEVEL_MAX;
Hal_Tone_Play_Onetime((uint32_t *)node->audio_data_ptr,
node->audio_data_size,
return true;
}
-#else
-bool mmi_aigc_tts_audio_store(char * data_buff, uint32_t data_len)
+static void mmi_aigc_trans_text_middle_screen_task_cb(lv_task_t * task)
{
- if(NULL == data_buff || 0 == data_len)
- {
- printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
- return false;
- }
-
- mmi_aigc_msg_item_info_t * t_aigc_item_info = &(s_aigc_info_p->msg_item[1]);
+ AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: ui_state=%d\n", __FUNCTION__, __LINE__, s_aigc_ui_state);
- if(NULL == t_aigc_item_info->audio_data_ptr)
- {
- char * temp_ptr = lv_mem_alloc(data_len + 1);
- if(NULL == temp_ptr)
- {
- printf("[@CHENG_DEBUG][%s][%d]: alloc memory fail\n", __FUNCTION__, __LINE__);
- return false;
- }
- _lv_memset_00(temp_ptr, data_len + 1);
- _lv_memcpy(temp_ptr, data_buff, data_len);
+ 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);
- t_aigc_item_info->audio_data_ptr = temp_ptr;
- t_aigc_item_info->audio_data_size = data_len;
- }
- else
- {
- char * temp_ptr = lv_mem_realloc(t_aigc_item_info->audio_data_ptr, t_aigc_item_info->audio_data_size + data_len + 1);
- if(NULL == temp_ptr)
+ if(0 != mmi_aigc_msg_count_get())
{
- printf("[@CHENG_DEBUG][%s][%d]: realloc memory fail\n", __FUNCTION__, __LINE__);
- return false;
- }
- _lv_memset_00(temp_ptr + t_aigc_item_info->audio_data_size, data_len + 1);
- _lv_memcpy(temp_ptr + t_aigc_item_info->audio_data_size, data_buff, data_len);
+ AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
- t_aigc_item_info->audio_data_ptr = temp_ptr;
- t_aigc_item_info->audio_data_size += data_len;
+ mmi_aigc_listening_middle_screen_display();
+ }
}
-
- printf("[@CHENG_DEBUG][%s][%d]: size=%d,ptr=0x%x\n", __FUNCTION__, __LINE__, t_aigc_item_info->audio_data_size, t_aigc_item_info->audio_data_ptr);
-
- return true;
}
-void mmi_aigc_tts_audio_ctrl_callback(AUDIO_CTRL_PRIORITY priority)
+void mmi_ui_msg_update_aigc_recv_trans_text_middle(void)
{
- AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: priority=%d\n", __FUNCTION__, __LINE__, priority);
-
- if(MMI_AIGC_TTS_AUDIO_PRI == priority)
- {
-
- }
- else if(MMI_AIGC_TTS_AUDIO_PRI > priority)
- {
- Hal_NFFS_File_Play_End();
- Hal_Audio_Manage_End_Ind(MMI_AIGC_TTS_AUDIO_PRI);
- }
+ 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_tts_audio_over_cb(void * para)
+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();
}
-bool mmi_aigc_tts_audio_play(void)
+void mmi_ui_msg_update_aigc_recv_trans_text_stop(void)
{
-/*
- uint32_t fs_total = 0;
- uint32_t fs_free = 0;
- lv_fs_free_space('C', &fs_total, &fs_free);
- printf("[@CHENG_DEBUG][%s][%d]: space total = %dB, free = %dB\n", __FUNCTION__, __LINE__, fs_total, fs_free);
-*/
+ AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: ui_state=%d\n", __FUNCTION__, __LINE__, s_aigc_ui_state);
- mmi_aigc_msg_item_info_t * t_aigc_item_info = &(s_aigc_info_p->msg_item[1]);
+ // wb
+ mmi_aigc_trans_websocket_close();
+ mmi_aigc_chat_websocket_open();
- if(MMI_AIGC_TTS_AUDIO_PRI == Hal_Audio_Manage_Start_Req(MMI_AIGC_TTS_AUDIO_PRI, mmi_aigc_tts_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
- volume = 1;
-
- Hal_Tone_Play_Onetime((uint32_t *)t_aigc_item_info->audio_data_ptr,
- t_aigc_item_info->audio_data_size,
- volume,
- mmi_aigc_tts_audio_over_cb,
- NULL);
- }
+ 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);
- return true;
-}
-#endif
+ 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);
-void mmi_ui_msg_update_aigc_recv_trans_text_stop(void)
-{
- AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ 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);
+ }
+ }
}
void mmi_ui_msg_update_aigc_recv_chat_text_stop(void)
{
AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
- mmi_aigc_main_screen_refresh();
-}
-
-void mmi_ui_msg_update_aigc_recv_tts_audio_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_actId_ext_get(lv_watch_Activity_Id_t actId)
{
lv_obj_t * activity_obj = lv_watch_get_activity_obj(actId);
return NULL;
}
+static void mmi_aigc_lv_style_reset(void)
+{
+ lv_aigc_ext_t * ext = mmi_aigc_actId_ext_get(ACT_ID_AIGC_MAIN);
+ if(NULL == ext)
+ return;
+
+ lv_style_reset(&(ext->style_cont_self));
+ lv_style_reset(&(ext->style_cont_other));
+ //lv_style_reset(&(ext->style_label_time));
+ lv_style_reset(&(ext->style_label_len_self));
+ lv_style_reset(&(ext->style_label_len_other));
+}
+
+static void mmi_aigc_lv_style_set(void)
+{
+ lv_aigc_ext_t * ext = mmi_aigc_actId_ext_get(ACT_ID_AIGC_MAIN);
+ if(NULL == ext)
+ return;
+
+ //lv_style_init(&(ext->style_label_time));
+ //lv_style_copy(&(ext->style_label_time), &lv_watch_font20);
+ //lv_style_set_text_color(&(ext->style_label_time), LV_STATE_DEFAULT, lv_color_make(20, 187, 242));
+
+ lv_style_init(&(ext->style_label_len_other));
+ lv_style_copy(&(ext->style_label_len_other), &lv_watch_font20);
+ lv_style_set_text_color(&(ext->style_label_len_other), LV_STATE_DEFAULT, LV_COLOR_WHITE);
+
+ lv_style_init(&(ext->style_label_len_self));
+ lv_style_copy(&(ext->style_label_len_self), &lv_watch_font20);
+ lv_style_set_text_color(&(ext->style_label_len_self), LV_STATE_DEFAULT, LV_COLOR_WHITE);
+
+ lv_style_init(&(ext->style_cont_self));
+ lv_style_set_bg_color(&(ext->style_cont_self), LV_STATE_DEFAULT, LV_COLOR_MAKE(79, 195, 76)); // LV_COLOR_MAKE(175, 242, 89));
+ lv_style_set_radius(&(ext->style_cont_self), LV_STATE_DEFAULT, 15); // 30
+ lv_style_set_pad_top(&(ext->style_cont_self), LV_STATE_DEFAULT, 10); // 8
+ lv_style_set_pad_bottom(&(ext->style_cont_self), LV_STATE_DEFAULT, 10); // 8
+ lv_style_set_pad_left(&(ext->style_cont_self), LV_STATE_DEFAULT, 5); // 8
+ lv_style_set_pad_right(&(ext->style_cont_self), LV_STATE_DEFAULT, 5); // 8
+
+ lv_style_init(&(ext->style_cont_other));
+ lv_style_set_bg_color(&(ext->style_cont_other), LV_STATE_DEFAULT, LV_COLOR_MAKE(25, 25, 25)); // LV_COLOR_MAKE(0xE2, 0xBD, 0xFF));
+ lv_style_set_radius(&(ext->style_cont_other), LV_STATE_DEFAULT, 15);
+ lv_style_set_pad_top(&(ext->style_cont_other), LV_STATE_DEFAULT, 10);
+ lv_style_set_pad_bottom(&(ext->style_cont_other), LV_STATE_DEFAULT, 10);
+ lv_style_set_pad_left(&(ext->style_cont_other), LV_STATE_DEFAULT, 5);
+ lv_style_set_pad_right(&(ext->style_cont_other), LV_STATE_DEFAULT, 5);
+}
+
void mmi_aigc_main_prepare_destory(lv_obj_t * activity_obj)
{
AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
// websocket
- mmi_aigc_trans_websocket_app_stop();
- mmi_aigc_chat_websocket_app_stop();
- mmi_aigc_tts_websocket_app_stop();
+ mmi_aigc_trans_websocket_close();
+ mmi_aigc_chat_websocket_close();
+ mmi_aigc_tts_websocket_close();
+
// data task
mmi_aigc_data_task_delete();
watch_set_suspend_enable(true, ACT_ID_AIGC_MAIN, 0);
mmi_aigc_msg_data_clean();
mmi_aigc_tts_audio_ll_clean();
- //
+ // audio
+ mmi_aigc_listening_stop(true);
Hal_NFFS_File_Play_End();
Hal_Audio_Manage_End_Ind(MMI_AIGC_TTS_AUDIO_PRI);
//Hal_Vibrator_Play_End();
lv_watch_png_cache_all_free();
+ mmi_aigc_lv_style_reset();
lv_aigc_ext_t * ext = mmi_aigc_actId_ext_get(ACT_ID_AIGC_MAIN);
if(NULL == ext)
return ;
- mmi_aigc_list_msg_item_style_reset(ext);
-
if(NULL != ext->record_buffer)
{
lv_mem_free(ext->record_buffer);
lv_obj_set_hidden(ext->cont_default, true);
lv_obj_set_hidden(ext->cont_listening, true);
+ lv_obj_set_hidden(ext->cont_listening_middle, true);
lv_obj_set_hidden(ext->cont_thinking, true);
lv_obj_set_hidden(ext->cont_timeout, false);
lv_obj_set_hidden(ext->cont_list, true);
{
AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ mmi_aigc_chat_websocket_close();
+
lv_aigc_ext_t * ext = (lv_aigc_ext_t *)mmi_aigc_actId_ext_get(ACT_ID_AIGC_MAIN);
if(NULL == ext)
return ;
- mmi_aigc_send_trans_stop_msg(NULL, 0);
if(NULL != ext->thinking_task_p)
{
lv_task_del(ext->thinking_task_p);
static void mmi_aigc_thinking_screen_task_cb(lv_task_t * task)
{
- s_aigc_thinking_counter++;
- AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: thinking_counter=%d\n", __FUNCTION__, __LINE__, s_aigc_thinking_counter);
+ AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
- switch(s_aigc_thinking_counter)
- {
- case 1:
- mmi_aigc_send_trans_stop_msg(NULL, 0);
- break;
-
- case 60:
- mmi_aigc_timeout_screen_display();
- break;
-
- default:
- break;
- }
+ mmi_aigc_timeout_screen_display();
}
void mmi_aigc_listening_remain_data_send(void)
{
+#if 0
lv_aigc_ext_t * ext = (lv_aigc_ext_t *)mmi_aigc_actId_ext_get(ACT_ID_AIGC_MAIN);
if(NULL == ext)
{
ext->record_size = 0;
s_aigc_recording_sent_size = 0;
+#endif
}
void mmi_aigc_thinking_screen_display(void)
s_aigc_ui_state = MMI_AIGC_UI_STATE_THINKING;
- // websocket
- mmi_aigc_tts_websocket_app_start();
+ //mmi_aigc_listening_remain_data_send();
- mmi_aigc_listening_remain_data_send();
- s_aigc_thinking_counter = 0;
if(NULL != ext->thinking_task_p)
{
lv_task_del(ext->thinking_task_p);
ext->thinking_task_p = NULL;
}
- ext->thinking_task_p = lv_task_create(mmi_aigc_thinking_screen_task_cb, 1000, LV_TASK_PRIO_HIGH, NULL);
+ ext->thinking_task_p = lv_task_create(mmi_aigc_thinking_screen_task_cb, 60 * 1000, LV_TASK_PRIO_HIGH, NULL);
+ lv_task_once(ext->thinking_task_p);
// ui
lv_obj_t * cont = ext->cont_thinking;
+ if(NULL != ext->gif_thinking)
+ {
+ gif_close(ext->gif_thinking);
+ ext->gif_thinking = NULL;
+ }
+ lv_obj_clean(cont);
//label
lv_obj_t * label_state = lv_label_create(cont, NULL);
lv_label_set_align(label_state, LV_LABEL_ALIGN_CENTER);
lv_obj_align(label_state, NULL, LV_ALIGN_IN_TOP_MID, 0, 20);
- //lv_obj_t * img = lv_img_create(cont, NULL);
- //lv_img_set_src(img, ICON_AIGC_THINKING);
- //lv_obj_set_click(img, false);
- //lv_obj_align(img, NULL, LV_ALIGN_CENTER, 0, -10);
- if(NULL == ext->gif_thinking)
+ ext->gif_thinking = gif_open(cont, ANIM_AIGC_THINKING, 0);
+ if(NULL == ext->gif_thinking)
{
- ext->gif_thinking = gif_open(cont, ANIM_AIGC_THINKING, 0);
- if(NULL == ext->gif_thinking)
- {
- AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: gif open fail\n", __FUNCTION__, __LINE__);
- }
- lv_obj_set_style_local_bg_color(ext->gif_thinking->container, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
- lv_obj_align(ext->gif_thinking->container, NULL, LV_ALIGN_CENTER, 0, -10);
+ AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: gif open fail\n", __FUNCTION__, __LINE__);
}
+ lv_obj_set_style_local_bg_color(ext->gif_thinking->container, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
+ lv_obj_align(ext->gif_thinking->container, NULL, LV_ALIGN_CENTER, 0, -10);
lv_obj_t * imgbtn = lv_imgbtn_create(cont, NULL);
lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_RELEASED, ICON_AIGC_RECORD_BUTTON_PRESSED);
lv_obj_set_hidden(ext->cont_default, true);
lv_obj_set_hidden(ext->cont_listening, true);
+ lv_obj_set_hidden(ext->cont_listening_middle, true);
lv_obj_set_hidden(ext->cont_thinking, false);
lv_obj_set_hidden(ext->cont_timeout, true);
lv_obj_set_hidden(ext->cont_list, true);
}
+void mmi_aigc_listening_middle_screen_display(void)
+{
+ AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+ lv_aigc_ext_t * ext = (lv_aigc_ext_t *)mmi_aigc_actId_ext_get(ACT_ID_AIGC_MAIN);
+ if(NULL == ext)
+ return ;
+
+ s_aigc_ui_state = MMI_AIGC_UI_STATE_LISTENING_MIDDLE;
+
+ // ui
+ lv_obj_t * cont = ext->cont_listening_middle;
+ if(NULL != ext->gif_listening)
+ {
+ gif_close(ext->gif_listening);
+ ext->gif_listening = NULL;
+ }
+ lv_obj_clean(cont);
+
+
+ lv_obj_t * list_page = lv_page_create(cont, NULL);
+ lv_obj_set_size(list_page, lv_obj_get_width(cont), lv_obj_get_height(cont) / 2);
+ lv_page_set_scrollbar_mode(list_page, LV_SCROLLBAR_MODE_OFF);
+ 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);
+ lv_obj_align(list_page, NULL, LV_ALIGN_IN_TOP_MID, 0, 20);
+
+ lv_page_set_scrl_layout(list_page, LV_LAYOUT_OFF);
+ lv_page_set_scrollable_fit2(list_page, LV_FIT_NONE, LV_FIT_TIGHT);
+
+ lv_obj_t * scrl = lv_page_get_scrollable(list_page);
+ ancient_scrl_signal = lv_obj_get_signal_cb(scrl);
+ lv_obj_set_signal_cb(scrl, mmi_aigc_list_scrl_signal);
+ lv_watch_obj_add_element(list_page);
+ lv_watch_obj_add_element(scrl);
+
+
+ mmi_aigc_msg_item_info_t * t_aigc_item_info = &(s_aigc_info_p->msg_item[0]);
+ char * file_buf = t_aigc_item_info->text_data_ptr;
+
+ lv_obj_t * obj = lv_cont_create(list_page, NULL);
+ lv_obj_set_size(obj, LV_HOR_RES - 20, 50);
+ lv_cont_set_fit4(obj, LV_FIT_NONE, LV_FIT_NONE, LV_FIT_NONE, LV_FIT_TIGHT);
+ //lv_cont_set_layout(obj, LV_LAYOUT_COLUMN_LEFT);
+ lv_obj_add_style(obj, LV_CONT_PART_MAIN, &(ext->style_cont_self));
+ lv_obj_align(obj, NULL, LV_ALIGN_IN_TOP_MID, 0, 20);
+
+ lv_obj_t * label_text = lv_label_create(obj, NULL);
+ lv_obj_add_style(label_text, LV_LABEL_PART_MAIN, &(ext->style_label_len_self));
+ lv_label_set_align(label_text, LV_LABEL_ALIGN_CENTER);
+ lv_label_set_long_mode(label_text, LV_LABEL_LONG_BREAK);
+ 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, NULL, LV_ALIGN_IN_LEFT_MID, 10, 0);
+
+ lv_obj_set_adv_hittest(obj, false);
+ lv_page_focus(list_page, obj, 0);
+ lv_page_glue_obj(obj, true);
+ lv_watch_obj_add_element(obj);
+
+
+ ext->gif_listening = gif_open(cont, ANIM_AIGC_LISTENING, 0);
+ if(NULL == ext->gif_listening)
+ {
+ AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: gif open fail\n", __FUNCTION__, __LINE__);
+ }
+ lv_obj_set_style_local_bg_color(ext->gif_listening->container, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
+ lv_obj_align(ext->gif_listening->container, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -LV_VER_RES / 4);
+
+ //label
+ //lv_obj_t * label_state = lv_label_create(cont, NULL);
+ //lv_obj_add_style(label_state, LV_LABEL_PART_MAIN, &lv_watch_font20);
+ //lv_label_set_text_id(label_state, WATCH_TEXT_ID_AIGC_LISTENING);
+ //lv_label_set_align(label_state, LV_LABEL_ALIGN_CENTER);
+ //lv_obj_align(label_state, cont, LV_ALIGN_IN_BOTTOM_MID, 0, -20);
+
+
+ lv_obj_set_hidden(ext->cont_default, true);
+ lv_obj_set_hidden(ext->cont_listening, true);
+ lv_obj_set_hidden(ext->cont_listening_middle, false);
+ lv_obj_set_hidden(ext->cont_thinking, true);
+ lv_obj_set_hidden(ext->cont_timeout, true);
+ lv_obj_set_hidden(ext->cont_list, true);
+}
+
bool mmi_aigc_listening_stop(bool is_cancel)
{
uint32_t duration_ms = 0;
uint32_t size = 0;
+ AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
Hal_Record_Buffer_Stop_Req(&size, &duration_ms);
Hal_Audio_Manage_End_Ind(MMI_AIGC_TTS_AUDIO_PRI);
s_aigc_ui_state = MMI_AIGC_UI_STATE_LISTENING;
- Hal_NFFS_File_Play_End();
- Hal_Audio_Manage_End_Ind(MMI_AIGC_TTS_AUDIO_PRI);
+ s_aigc_trans_text_end = false;
+
+ // wb
+ mmi_aigc_tts_websocket_close();
+ mmi_aigc_trans_websocket_open();
- // websocket
- mmi_aigc_tts_websocket_app_stop();
-
// res
mmi_aigc_msg_data_clean();
mmi_aigc_tts_audio_ll_clean();
mmi_aigc_send_trans_start_msg(NULL, 0);
+ //
+ Hal_NFFS_File_Play_End();
+ Hal_Audio_Manage_End_Ind(MMI_AIGC_TTS_AUDIO_PRI);
+
if(NULL != ext->record_buffer)
{
lv_mem_free(ext->record_buffer);
ext->record_buffer = (uint8_t *)lv_mem_alloc(MMI_AIGC_DATA_RECORD_SIZE_MAX);
if(NULL != ext->record_buffer)
{
+ AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
_lv_memset_00(ext->record_buffer, MMI_AIGC_DATA_RECORD_SIZE_MAX);
if(MMI_AIGC_TTS_AUDIO_PRI == Hal_Audio_Manage_Start_Req(MMI_AIGC_TTS_AUDIO_PRI, mmi_aigc_listening_audio_ctrl_callback))
{
+ AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
s_aigc_recording_sent_size = 0;
Hal_Record_Buffer_With_Format_Req(ext->record_buffer,
MMI_AIGC_DATA_RECORD_SIZE_MAX,
// ui
lv_obj_t * cont = ext->cont_listening;
+ if(NULL != ext->gif_listening)
+ {
+ gif_close(ext->gif_listening);
+ ext->gif_listening = NULL;
+ }
+ lv_obj_clean(cont);
//label
lv_obj_t * label_state = lv_label_create(cont, NULL);
lv_label_set_align(label_state, LV_LABEL_ALIGN_CENTER);
lv_obj_align(label_state, cont, LV_ALIGN_IN_TOP_MID, 0, 20);
- //lv_obj_t * img = lv_img_create(cont, NULL);
- //lv_img_set_src(img, ICON_AIGC_DEFAULT);
- //lv_obj_set_click(img, false);
- //lv_obj_align(img, NULL, LV_ALIGN_CENTER, 0, -10);
- if(NULL == ext->gif_listening)
+ ext->gif_listening = gif_open(cont, ANIM_AIGC_LISTENING, 0);
+ if(NULL == ext->gif_listening)
{
- ext->gif_listening = gif_open(cont, ANIM_AIGC_LISTENING, 0);
- if(NULL == ext->gif_listening)
- {
- AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: gif open fail\n", __FUNCTION__, __LINE__);
- }
- lv_obj_set_style_local_bg_color(ext->gif_listening->container, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
- lv_obj_align(ext->gif_listening->container, NULL, LV_ALIGN_CENTER, 0, -10);
+ AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: gif open fail\n", __FUNCTION__, __LINE__);
}
-
- lv_obj_t * imgbtn = lv_imgbtn_create(cont, NULL);
- lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_RELEASED, ICON_AIGC_RECORD_BUTTON_PRESSED);
- lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_PRESSED, ICON_AIGC_RECORD_BUTTON_PRESSED);
- lv_obj_set_event_cb(imgbtn, mmi_aigc_record_button_event_cb);
- lv_obj_add_protect(imgbtn, LV_PROTECT_PRESS_LOST);
- lv_watch_obj_add_element(imgbtn);
- lv_obj_align(imgbtn, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -20);
-
- lv_obj_t * imgbtn_label = lv_label_create(imgbtn, NULL);
- lv_obj_add_style(imgbtn_label, LV_LABEL_PART_MAIN, &lv_watch_font26);
- lv_label_set_align(imgbtn_label, LV_LABEL_ALIGN_CENTER);
- lv_label_set_text_id(imgbtn_label, WATCH_TEXT_ID_AIGC_TALK_FINISH);
- lv_obj_align(imgbtn_label, NULL, LV_ALIGN_CENTER, 0, 0);
+ lv_obj_set_style_local_bg_color(ext->gif_listening->container, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
+ lv_obj_align(ext->gif_listening->container, NULL, LV_ALIGN_CENTER, 0, 0);
+
+ //lv_obj_t * imgbtn = lv_imgbtn_create(cont, NULL);
+ //lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_RELEASED, ICON_AIGC_RECORD_BUTTON_PRESSED);
+ //lv_imgbtn_set_src(imgbtn, LV_BTN_STATE_PRESSED, ICON_AIGC_RECORD_BUTTON_PRESSED);
+ //lv_obj_set_event_cb(imgbtn, mmi_aigc_record_button_event_cb);
+ //lv_obj_add_protect(imgbtn, LV_PROTECT_PRESS_LOST);
+ //lv_watch_obj_add_element(imgbtn);
+ //lv_obj_align(imgbtn, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -20);
+
+ //lv_obj_t * imgbtn_label = lv_label_create(imgbtn, NULL);
+ //lv_obj_add_style(imgbtn_label, LV_LABEL_PART_MAIN, &lv_watch_font26);
+ //lv_label_set_align(imgbtn_label, LV_LABEL_ALIGN_CENTER);
+ //lv_label_set_text_id(imgbtn_label, WATCH_TEXT_ID_AIGC_TALK_FINISH);
+ //lv_obj_align(imgbtn_label, NULL, LV_ALIGN_CENTER, 0, 0);
lv_obj_set_hidden(ext->cont_default, true);
lv_obj_set_hidden(ext->cont_listening, false);
+ lv_obj_set_hidden(ext->cont_listening_middle, true);
lv_obj_set_hidden(ext->cont_thinking, true);
lv_obj_set_hidden(ext->cont_timeout, true);
lv_obj_set_hidden(ext->cont_list, true);
mmi_aigc_main_screen_clean();
break;
- case MMI_AIGC_UI_STATE_LISTENING:
- mmi_aigc_listening_stop(false);
- mmi_aigc_thinking_screen_display();
- break;
+ //case MMI_AIGC_UI_STATE_LISTENING:
+ //mmi_aigc_listening_stop(false);
+ //mmi_aigc_thinking_screen_display();
+ //break;
case MMI_AIGC_UI_STATE_THINKING:
mmi_aigc_thinking_screen_clean();
}
}
-void mmi_aigc_voice_item_reset_play_state(lv_aigc_list_ext_t * list_page_ext)
-{
- printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
-
-#if 0
- if(NULL == list_page_ext || NULL == list_page_ext->voice_playing_anim.var)
- {
- printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
- return;
- }
-
- uint8_t msg_from = list_page_ext->voice_playing_msg_from;
-
- lv_anim_del(list_page_ext->voice_playing_anim.var, NULL);
- lv_img_set_src(list_page_ext->voice_playing_anim.var, ((0 == msg_from) ? ICON_WECHAT_MY_VOICE_ITEM_PLAYING3 : ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING3));
- list_page_ext->voice_playing_anim.var = NULL;
-#endif
-}
-
-void mmi_aigc_list_msg_item_style_reset(lv_aigc_ext_t * ext)
-{
- if(NULL == ext || NULL == ext->list)
- return;
-
- lv_aigc_list_ext_t * list_page_ext = lv_obj_get_ext_attr(ext->list);
- if(NULL == list_page_ext)
- return;
-
- lv_style_reset(&(list_page_ext->style_cont_self));
- lv_style_reset(&(list_page_ext->style_cont_other));
- //lv_style_reset(&(list_page_ext->style_label_time));
- lv_style_reset(&(list_page_ext->style_label_len_self));
- lv_style_reset(&(list_page_ext->style_label_len_other));
-}
-
lv_obj_t * mmi_aigc_list_msg_item_add(lv_obj_t * list_page, mmi_aigc_msg_item_info_t * msg_item, char * time_str, uint8_t i)
{
AIGC_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
lv_obj_t * obj = NULL;
//lv_wechat_msg_list_item_ext_t * list_item_ext = NULL;
- lv_aigc_list_ext_t * list_page_ext = lv_obj_get_ext_attr(list_page);
+ //lv_aigc_list_ext_t * list_page_ext = lv_obj_get_ext_attr(list_page);
+ lv_aigc_ext_t * ext = mmi_aigc_actId_ext_get(ACT_ID_AIGC_MAIN);
lv_obj_t * scrl = lv_page_get_scrl(list_page);
lv_obj_t * last_obj = lv_obj_get_child(scrl, NULL);
lv_coord_t obj_y = 0;
lv_obj_set_size(obj, LV_HOR_RES * 2 / 3, 50); //lv_obj_set_size(obj, 153, 53); // same with voice item
lv_cont_set_fit4(obj, LV_FIT_NONE, LV_FIT_NONE, LV_FIT_NONE, LV_FIT_TIGHT);
//lv_cont_set_layout(obj, LV_LAYOUT_COLUMN_LEFT);
- lv_obj_add_style(obj, LV_CONT_PART_MAIN, &(list_page_ext->style_cont_self));
+ lv_obj_add_style(obj, LV_CONT_PART_MAIN, &(ext->style_cont_self));
lv_obj_align(obj, scrl, LV_ALIGN_IN_TOP_RIGHT, -10, obj_y);
lv_obj_t * label_text = lv_label_create(obj, NULL);
- lv_obj_add_style(label_text, LV_LABEL_PART_MAIN, &(list_page_ext->style_label_len_self));
+ lv_obj_add_style(label_text, LV_LABEL_PART_MAIN, &(ext->style_label_len_self));
lv_label_set_align(label_text, LV_LABEL_ALIGN_CENTER);
lv_label_set_long_mode(label_text, LV_LABEL_LONG_BREAK);
lv_obj_set_width(label_text, lv_obj_get_width(obj) - 20);
lv_obj_set_size(obj, LV_HOR_RES * 2 / 3, 50); //lv_obj_set_size(obj, 153, 53); // same with voice item
lv_cont_set_fit4(obj, LV_FIT_NONE, LV_FIT_NONE, LV_FIT_NONE, LV_FIT_TIGHT);
//lv_cont_set_layout(obj, LV_LAYOUT_COLUMN_LEFT);
- lv_obj_add_style(obj, LV_CONT_PART_MAIN, &(list_page_ext->style_cont_other));
+ lv_obj_add_style(obj, LV_CONT_PART_MAIN, &(ext->style_cont_other));
lv_obj_align(obj, scrl, LV_ALIGN_IN_TOP_LEFT, 10, obj_y);
lv_obj_t * label_text = lv_label_create(obj, NULL);
- lv_obj_add_style(label_text, LV_LABEL_PART_MAIN, &(list_page_ext->style_label_len_other));
+ lv_obj_add_style(label_text, LV_LABEL_PART_MAIN, &(ext->style_label_len_other));
lv_label_set_align(label_text, LV_LABEL_ALIGN_CENTER);
lv_label_set_long_mode(label_text, LV_LABEL_LONG_BREAK);
lv_obj_set_width(label_text, lv_obj_get_width(obj) - 20);
return obj;
}
-lv_res_t mmi_aigc_list_scrl_signal(lv_obj_t * scrl, lv_signal_t sign, void * param)
+static lv_res_t mmi_aigc_list_scrl_signal(lv_obj_t * scrl, lv_signal_t sign, void * param)
{
lv_res_t res;
lv_watch_obj_add_element(list_page);
lv_watch_obj_add_element(scrl);
- //lv_style_init(&(list_page_ext->style_label_time));
- //lv_style_copy(&(list_page_ext->style_label_time), &lv_watch_font20);
- //lv_style_set_text_color(&(list_page_ext->style_label_time), LV_STATE_DEFAULT, lv_color_make(20, 187, 242));
-
- lv_style_init(&(list_page_ext->style_label_len_other));
- lv_style_copy(&(list_page_ext->style_label_len_other), &lv_watch_font20);
- lv_style_set_text_color(&(list_page_ext->style_label_len_other), LV_STATE_DEFAULT, LV_COLOR_WHITE);
-
- lv_style_init(&(list_page_ext->style_label_len_self));
- lv_style_copy(&(list_page_ext->style_label_len_self), &lv_watch_font20);
- lv_style_set_text_color(&(list_page_ext->style_label_len_self), LV_STATE_DEFAULT, LV_COLOR_WHITE);
-
- lv_style_init(&(list_page_ext->style_cont_self));
- lv_style_set_bg_color(&(list_page_ext->style_cont_self), LV_STATE_DEFAULT, LV_COLOR_MAKE(79, 195, 76)); // LV_COLOR_MAKE(175, 242, 89));
- lv_style_set_radius(&(list_page_ext->style_cont_self), LV_STATE_DEFAULT, 15); // 30
- lv_style_set_pad_top(&(list_page_ext->style_cont_self), LV_STATE_DEFAULT, 10); // 8
- lv_style_set_pad_bottom(&(list_page_ext->style_cont_self), LV_STATE_DEFAULT, 10); // 8
- lv_style_set_pad_left(&(list_page_ext->style_cont_self), LV_STATE_DEFAULT, 5); // 8
- lv_style_set_pad_right(&(list_page_ext->style_cont_self), LV_STATE_DEFAULT, 5); // 8
-
- lv_style_init(&(list_page_ext->style_cont_other));
- lv_style_set_bg_color(&(list_page_ext->style_cont_other), LV_STATE_DEFAULT, LV_COLOR_MAKE(25, 25, 25)); // LV_COLOR_MAKE(0xE2, 0xBD, 0xFF));
- lv_style_set_radius(&(list_page_ext->style_cont_other), LV_STATE_DEFAULT, 15);
- lv_style_set_pad_top(&(list_page_ext->style_cont_other), LV_STATE_DEFAULT, 10);
- lv_style_set_pad_bottom(&(list_page_ext->style_cont_other), LV_STATE_DEFAULT, 10);
- lv_style_set_pad_left(&(list_page_ext->style_cont_other), LV_STATE_DEFAULT, 5);
- lv_style_set_pad_right(&(list_page_ext->style_cont_other), LV_STATE_DEFAULT, 5);
-
//_lv_memset_00(&(list_page_ext->voice_playing_anim), sizeof(lv_anim_t));
//list_page_ext->voice_playing_msg_from = 0;
list_page_ext->pressing = false;
lv_obj_set_hidden(ext->cont_default, true);
lv_obj_set_hidden(ext->cont_listening, true);
+ lv_obj_set_hidden(ext->cont_listening_middle, true);
lv_obj_set_hidden(ext->cont_thinking, true);
lv_obj_set_hidden(ext->cont_timeout, true);
lv_obj_set_hidden(ext->cont_list, false);
// ui
lv_obj_t * cont = ext->cont_default;
+ lv_obj_clean(cont);
lv_obj_t * label_state = lv_label_create(cont, NULL);
lv_obj_add_style(label_state, LV_LABEL_PART_MAIN, &lv_watch_font20);
lv_obj_set_hidden(ext->cont_default, false);
lv_obj_set_hidden(ext->cont_listening, true);
+ lv_obj_set_hidden(ext->cont_listening_middle, true);
lv_obj_set_hidden(ext->cont_thinking, true);
lv_obj_set_hidden(ext->cont_timeout, true);
lv_obj_set_hidden(ext->cont_list, true);
return;
mmi_aigc_list_set_slide_enable(&ext->old_ext, true);
- mmi_aigc_list_msg_item_style_reset(ext);
if(NULL != ext->thinking_task_p)
{
return obj;
}
- // websocket
- mmi_aigc_trans_websocket_app_start();
- mmi_aigc_chat_websocket_app_start();
-
// data task
mmi_aigc_data_task_create();
watch_set_suspend_enable(false, ACT_ID_AIGC_MAIN, 0);
lv_watch_obj_add_element(cont_listening);
ext->cont_listening = cont_listening;
+ // cont_listening middle
+ lv_obj_t * cont_listening_middle = lv_cont_create(obj, NULL);
+ lv_obj_set_size(cont_listening_middle, lv_obj_get_width(obj), lv_obj_get_height(obj));
+ lv_obj_align(cont_listening_middle, NULL, LV_ALIGN_CENTER, 0, 0);
+ lv_obj_set_style_local_bg_color(cont_listening_middle, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
+ lv_watch_obj_add_element(cont_listening_middle);
+ ext->cont_listening_middle = cont_listening_middle;
+
// cont_thinking
lv_obj_t * cont_thinking = lv_cont_create(obj, NULL);
lv_obj_set_size(cont_thinking, lv_obj_get_width(obj), lv_obj_get_height(obj));
lv_watch_obj_add_element(cont_list);
ext->cont_list = cont_list;
+ // style
+ mmi_aigc_lv_style_set();
+
mmi_aigc_default_screen_display();
return obj;