From: CCC <2393524978@qq.com> Date: Fri, 3 Nov 2023 01:53:01 +0000 (+0800) Subject: beike X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=9197afecfc45952fc450677d03fbb7968cf49ae3;p=mirrors%2FASR3603_Z5.git beike --- diff --git a/2.sdk/sdk/gui/lv_watch/framework/language/lang_ch.c b/2.sdk/sdk/gui/lv_watch/framework/language/lang_ch.c index 78800367..4f5f6567 100644 --- a/2.sdk/sdk/gui/lv_watch/framework/language/lang_ch.c +++ b/2.sdk/sdk/gui/lv_watch/framework/language/lang_ch.c @@ -886,6 +886,8 @@ const void * lang_text_ch[] = { "AI语音", // WATCH_TEXT_ID_AI_TALK, "请按住说话", // WATCH_TEXT_ID_PRESS_TO_TALK, "正在录音", // WATCH_TEXT_ID_AUDIO_RECORDING, + "正在获取结果", // WATCH_TEXT_ID_GETTING_RESULT, + "获取失败", // WATCH_TEXT_ID_GET_RESULT_FAIL, //CHENG_MODIFY diff --git a/2.sdk/sdk/gui/lv_watch/framework/language/lang_en.c b/2.sdk/sdk/gui/lv_watch/framework/language/lang_en.c index 8f9c60d5..92b0e7b7 100644 --- a/2.sdk/sdk/gui/lv_watch/framework/language/lang_en.c +++ b/2.sdk/sdk/gui/lv_watch/framework/language/lang_en.c @@ -886,6 +886,8 @@ const void * lang_text_en[] = { "AI talk", // WATCH_TEXT_ID_AI_TALK, "Press to talk", // WATCH_TEXT_ID_PRESS_TO_TALK, "Recording", // WATCH_TEXT_ID_AUDIO_RECORDING, + "Getting result", // WATCH_TEXT_ID_GETTING_RESULT, + "Get failed", // WATCH_TEXT_ID_GET_RESULT_FAIL, //CHENG_MODIFY diff --git a/2.sdk/sdk/gui/lv_watch/include/ui_textid.h b/2.sdk/sdk/gui/lv_watch/include/ui_textid.h index 6cea8b1e..53062848 100644 --- a/2.sdk/sdk/gui/lv_watch/include/ui_textid.h +++ b/2.sdk/sdk/gui/lv_watch/include/ui_textid.h @@ -893,6 +893,8 @@ enum WATCH_TEXT_ID_AI_TALK, /* "AI语音" "AI talk" */ WATCH_TEXT_ID_PRESS_TO_TALK, /* "请按住说话" "Press to talk" */ WATCH_TEXT_ID_AUDIO_RECORDING, /* "正在录音" "Recording"*/ + WATCH_TEXT_ID_GETTING_RESULT, /* "正在获取结果" "Getting result"*/ + WATCH_TEXT_ID_GET_RESULT_FAIL, /* "获取失败" "Get failed"*/ //CHENG_MODIFY diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/bei_ke_rui_sheng.c b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/bei_ke_rui_sheng.c index c93635d5..6f917826 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/bei_ke_rui_sheng.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/bei_ke_rui_sheng.c @@ -6,42 +6,46 @@ #ifdef __MMI_CUSTOM_BEI_KE_RUI_SHENG__ #define AI_TALK_AUDIO_FORMAT_TYPE (7) // 3-amr -#define AI_TALK_AUDIO_FORMAT_STR (".wav") // ".amr" +//#define AI_TALK_AUDIO_FORMAT_STR (".wav") // ".amr" static lv_signal_cb_t ancient_scrl_signal; -static uint8_t s_ai_talk_init_flag = 0; -static nv_watch_wechat_msg_info_t * s_ai_talk_info = NULL; -static nv_watch_wechat_msg_item_info_t s_ai_talk_item_info = {0}; +//static uint8_t s_ai_talk_init_flag = 0; +//static mmi_ai_talk_msg_info_t * s_ai_talk_info = NULL; +static mmi_ai_talk_msg_item_info_t s_ai_talk_item_info = {0}; static uint8_t s_ai_talk_play_anim_count = 0; -static char s_ai_talk_selected_item_index = -1; +//static char s_ai_talk_selected_item_index = -1; static bool s_item_receive_playing = false; static uint32_t s_ai_talk_recording_sent_size = 0; +static uint8_t s_ai_talk_sending_screen_counter = 0; +static bool mmi_ai_talk_is_waiting_for_result(void); +static void mmi_ai_talk_sending_screen_task_stop(void); -void mmi_ai_talk_info_init(void) -{ - if(NULL == s_ai_talk_info) - { - uint32_t nv_data_length = sizeof(nv_watch_wechat_msg_info_t); - s_ai_talk_info = (nv_watch_wechat_msg_info_t *)lv_mem_alloc(nv_data_length); - if(NULL == s_ai_talk_info) - { - printf("[@CHENG_DEBUG][%s][%d]: memory alloc fail\n", __FUNCTION__, __LINE__); - return; - } - _lv_memset_00(s_ai_talk_info, nv_data_length); - } - else +static void mmi_ai_talk_receive_item_info_clean(void) +{ + if(NULL != s_ai_talk_item_info.msg_data_ptr) { - //mmi_ai_talk_info_all_item_delete(); + printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + lv_mem_free(s_ai_talk_item_info.msg_data_ptr); + s_ai_talk_item_info.msg_data_ptr = NULL; + s_ai_talk_item_info.msg_data_size = 0; } } uint8_t mmi_ai_talk_info_count_get(void) { - uint8_t msg_count = s_ai_talk_info->msg_count; + uint8_t msg_count = 0; + +#if 1 + if(NULL != s_ai_talk_item_info.msg_data_ptr) + { + msg_count = 1; + } +#else + msg_count = s_ai_talk_info->msg_count; +#endif return msg_count; } @@ -49,23 +53,26 @@ uint8_t mmi_ai_talk_info_count_get(void) uint8_t mmi_ai_talk_info_index_item_msg_from_get(uint8_t msg_index) { // 0-slef; 1-other - uint8_t msg_from = s_ai_talk_info->msg_item[msg_index].msg_from; + uint8_t msg_from = 0; + + //msg_from = s_ai_talk_info->msg_item[msg_index].msg_from; return msg_from; } -void mmi_ai_talk_info_index_item_get(uint8_t msg_index, nv_watch_wechat_msg_item_info_t ** msg_item) +void mmi_ai_talk_info_index_item_get(uint8_t msg_index, mmi_ai_talk_msg_item_info_t ** msg_item) { - *msg_item = &(s_ai_talk_info->msg_item[msg_index]); + //*msg_item = &(s_ai_talk_info->msg_item[msg_index]); } void mmi_ai_talk_info_index_item_delete(uint8_t msg_index) { +#if 0 if(msg_index >= s_ai_talk_info->msg_count) return; uint8_t i = 0; - uint32_t msg_item_info_size = sizeof(nv_watch_wechat_msg_item_info_t); + uint32_t msg_item_info_size = sizeof(mmi_ai_talk_msg_item_info_t); lv_fs_remove(s_ai_talk_info->msg_item[msg_index].msg_data_full_file_name); _lv_memset_00(&(s_ai_talk_info->msg_item[msg_index]), msg_item_info_size); @@ -78,12 +85,14 @@ void mmi_ai_talk_info_index_item_delete(uint8_t msg_index) } } s_ai_talk_info->msg_count--; +#endif } void mmi_ai_talk_info_all_item_delete(void) { +#if 0 uint8_t i = 0; - uint32_t msg_item_info_size = sizeof(nv_watch_wechat_msg_item_info_t); + uint32_t msg_item_info_size = sizeof(mmi_ai_talk_msg_item_info_t); for(i = 0; i < s_ai_talk_info->msg_count; i++) { @@ -91,21 +100,23 @@ void mmi_ai_talk_info_all_item_delete(void) _lv_memset_00(&(s_ai_talk_info->msg_item[i]), msg_item_info_size); } s_ai_talk_info->msg_count = 0; +#endif } -void mmi_ai_talk_info_new_item_add(nv_watch_wechat_msg_item_info_t * msg_item) +void mmi_ai_talk_info_new_item_add(mmi_ai_talk_msg_item_info_t * msg_item) { - uint32_t msg_item_info_size = sizeof(nv_watch_wechat_msg_item_info_t); +#if 0 + uint32_t msg_item_info_size = sizeof(mmi_ai_talk_msg_item_info_t); printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - if(NV_WATCH_WECHAT_NUM_MAX <= s_ai_talk_info->msg_count) + if(MMI_AI_TALK_MSG_NUM_MAX <= s_ai_talk_info->msg_count) { lv_fs_remove(s_ai_talk_info->msg_item[0].msg_data_full_file_name); //_lv_memset_00(&(s_ai_talk_info->msg_item[0]), msg_item_info_size); uint8_t i = 0; - for(i = 0; i < NV_WATCH_WECHAT_NUM_MAX - 1; i++) + for(i = 0; i < MMI_AI_TALK_MSG_NUM_MAX - 1; i++) { _lv_memcpy(&(s_ai_talk_info->msg_item[i]), &(s_ai_talk_info->msg_item[i + 1]), msg_item_info_size); } @@ -116,6 +127,7 @@ void mmi_ai_talk_info_new_item_add(nv_watch_wechat_msg_item_info_t * msg_item) s_ai_talk_info->msg_count++; _lv_memcpy(&(s_ai_talk_info->msg_item[s_ai_talk_info->msg_count - 1]), msg_item, msg_item_info_size); +#endif } void * mmi_ai_talk_actId_ext_get(lv_watch_Activity_Id_t actId) @@ -152,6 +164,9 @@ void mmi_ai_talk_prepare_destory(lv_obj_t * activity_obj) { printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + // close tcp + mmi_ai_talk_tcp_disconnect_msg(NULL); + lv_watch_png_cache_all_free(); lv_ai_talk_ext_t * ext = mmi_ai_talk_actId_ext_get(ACT_ID_AI_TALK); @@ -159,22 +174,23 @@ void mmi_ai_talk_prepare_destory(lv_obj_t * activity_obj) return ; printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - if(NULL != ext->delete_timer_id) - { - Hal_Timer_Stop(ext->delete_timer_id); - ext->delete_timer_id = NULL; - } + //if(NULL != ext->delete_timer_id) + //{ + // Hal_Timer_Stop(ext->delete_timer_id); + // ext->delete_timer_id = NULL; + //} - mmi_ai_talk_voice_item_playing_stop(ext); + //mmi_ai_talk_voice_item_playing_stop(ext); mmi_ai_talk_list_msg_item_style_reset(ext); + // free buffer + mmi_ai_talk_receive_item_info_clean(); + // - Hal_NFFS_File_Play_End(); + //Hal_NFFS_File_Play_End(); Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_5); - Hal_Vibrator_Play_End(); + //Hal_Vibrator_Play_End(); s_item_receive_playing = false; - - mmi_ai_talk_tcp_disconnect_msg(NULL); printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); } @@ -195,6 +211,7 @@ bool mmi_ai_talk_voice_is_playing(void) { bool result = false; +#if 0 lv_ai_talk_ext_t * ext = mmi_ai_talk_actId_ext_get(ACT_ID_AI_TALK); if(NULL != ext && NULL != ext->list) { @@ -204,6 +221,7 @@ bool mmi_ai_talk_voice_is_playing(void) result = true; } } +#endif return result; } @@ -298,6 +316,8 @@ void mmi_ai_talk_receive_update_ui(void) //Hal_Vibrator_Play_Onetime(NULL, 1000); } + mmi_ai_talk_sending_screen_exit(); + if(lv_watch_get_activity_obj(ACT_ID_AI_TALK)) { mmi_ai_talk_main_screen_refresh(); @@ -322,7 +342,43 @@ bool mmi_ai_talk_receive_from_server(char * data_buff, int data_buff_len, nv_wec return false; } - nv_watch_wechat_msg_item_info_t mmi_ai_talk_item_info = {0}; +#if 1 + + if(false == mmi_ai_talk_is_waiting_for_result()) + { + printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + return false; + } + mmi_ai_talk_sending_screen_task_stop(); + mmi_ai_talk_receive_item_info_clean(); + + uint32_t file_size = 0; + char * file_buf = NULL; + + file_size = data_buff_len; + file_buf = lv_mem_alloc(file_size + 1); + if(NULL == file_buf) + { + printf("[@CHENG_DEBUG][%s][%d]: alloc memory fail\n", __FUNCTION__, __LINE__); + return false; + } + _lv_memset_00(file_buf, file_size + 1); + _lv_memcpy(file_buf, data_buff, file_size); + s_ai_talk_item_info.msg_data_ptr = file_buf; + s_ai_talk_item_info.msg_data_size = file_size; + s_ai_talk_item_info.msg_type = type; + + printf("[@CHENG_DEBUG][%s][%d]: msg_data_size=%d,msg_data_ptr=0x%x\n", __FUNCTION__, __LINE__, s_ai_talk_item_info.msg_data_size, s_ai_talk_item_info.msg_data_ptr); + + // ui + mmi_watch_wake_up(); + mmi_ui_msg_action_ai_talk_incoming(); + + return true; + +#else + + mmi_ai_talk_msg_item_info_t mmi_ai_talk_item_info = {0}; hal_rtc_t cur_time = {0}; char * t_file_ext[WECHAT_MSG_TYPE_MAX] = {AI_TALK_AUDIO_FORMAT_STR, "txt", "png", "png"}; // match nv_wechat_msg_type_e @@ -333,7 +389,7 @@ bool mmi_ai_talk_receive_from_server(char * data_buff, int data_buff_len, nv_wec s_ai_talk_item_info.unread_flag = 1; s_ai_talk_item_info.msg_type = type; // WECHAT_MSG_TYPE_VOICE; s_ai_talk_item_info.msg_data_size = data_buff_len; - sprintf(s_ai_talk_item_info.msg_data_full_file_name, "C:/wechat_r%04d%02d%02d_%02d%02d%02d.%s", /*WECHAT_MSG_DATA_FILE_PATH, */ + sprintf(s_ai_talk_item_info.msg_data_full_file_name, "C:/aitalk_r%04d%02d%02d_%02d%02d%02d.%s", /*WECHAT_MSG_DATA_FILE_PATH, */ s_ai_talk_item_info.msg_time.tm_year, s_ai_talk_item_info.msg_time.tm_mon, s_ai_talk_item_info.msg_time.tm_mday, @@ -348,11 +404,11 @@ bool mmi_ai_talk_receive_from_server(char * data_buff, int data_buff_len, nv_wec return false; } -// lv_ai_talk_ext_t * ext = mmi_ai_talk_actId_ext_get(ACT_ID_AI_TALK); -// if(NULL != ext) -// { -// mmi_ai_talk_voice_item_playing_stop(ext); -// } + lv_ai_talk_ext_t * ext = mmi_ai_talk_actId_ext_get(ACT_ID_AI_TALK); + if(NULL != ext) + { + mmi_ai_talk_voice_item_playing_stop(ext); + } mmi_ai_talk_info_new_item_add(&s_ai_talk_item_info); @@ -374,6 +430,7 @@ bool mmi_ai_talk_receive_from_server(char * data_buff, int data_buff_len, nv_wec } return true; +#endif } bool mmi_ai_talk_send_to_server(void) @@ -492,199 +549,26 @@ bool mmi_ai_talk_send_to_server(void) } lv_mem_free(file_buf); - _lv_memset_00(&s_ai_talk_item_info, sizeof(nv_watch_wechat_msg_item_info_t)); + _lv_memset_00(&s_ai_talk_item_info, sizeof(mmi_ai_talk_msg_item_info_t)); #endif return result; } -void mmi_ai_talk_item_delete_success_timer_cb(void *para) -{ - //lv_ai_talk_ext_t * ext = (lv_ai_talk_ext_t *)para; - - mmi_ai_talk_main_screen_refresh(); -} - -void mmi_ai_talk_item_delete_ok_btn_event_cb(lv_obj_t * obj, lv_event_t e) -{ - if(LV_EVENT_CLICKED == e) - { - lv_ai_talk_ext_t * ext = (lv_ai_talk_ext_t *)mmi_ai_talk_actId_ext_get(ACT_ID_AI_TALK); - if(NULL != ext && NULL != ext->delete_bg) - { - uint32_t value = lv_watch_get_free_num(obj); - if(0 == value) - mmi_ai_talk_info_index_item_delete(s_ai_talk_selected_item_index); - else if(1 == value) - mmi_ai_talk_info_all_item_delete(); - - lv_obj_clean(ext->delete_bg); - - lv_obj_t * label_prompt = lv_label_create(ext->delete_bg, NULL); - lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font26_black); - lv_label_set_text_id(label_prompt, WATCH_TEXT_ID_DEL_SUCCESS); - lv_obj_align(label_prompt, ext->delete_bg, LV_ALIGN_CENTER, 0, -10); - - //ext->delete_timer_id = Hal_Timer_Start(1500, mmi_ai_talk_item_delete_success_timer_cb, ext, false); - ext->delete_timer_id = Hal_Timer_Start(1500, mmi_ai_talk_item_delete_success_timer_cb, NULL, false); - } - } -} - -void mmi_ai_talk_item_delete_cancel_btn_event_cb(lv_obj_t * obj, lv_event_t e) -{ - if(LV_EVENT_CLICKED == e) - { - lv_ai_talk_ext_t * ext = (lv_ai_talk_ext_t *)mmi_ai_talk_actId_ext_get(ACT_ID_AI_TALK); - if(NULL != ext && NULL != ext->delete_bg) - { - lv_obj_del(ext->delete_bg); - ext->delete_bg = NULL; - } - } -} - -void mmi_ai_talk_item_delete_select_btn_event_cb(lv_obj_t * obj, lv_event_t e) -{ - if(LV_EVENT_CLICKED != e) - { - return; - } - - lv_ai_talk_ext_t * ext = (lv_ai_talk_ext_t *)mmi_ai_talk_actId_ext_get(ACT_ID_AI_TALK); - if(NULL != ext) - { - uint32_t value = lv_watch_get_free_num(obj); - - lv_obj_set_hidden(ext->delete_current, true); - lv_obj_set_hidden(ext->delete_all, true); - lv_obj_set_hidden(ext->delete_back, true); - - lv_obj_set_hidden(ext->delete_label_prompt, false); - lv_obj_set_hidden(ext->delete_btn_cancel, false); - lv_obj_set_hidden(ext->delete_btn_ok, false); - lv_watch_set_free_num(ext->delete_btn_ok, value); - } -} - -void mmi_ai_talk_list_msg_item_delete_create(void) +void mmi_ai_talk_sending_screen_prepare_destory(lv_obj_t * activity_obj) { - lv_ai_talk_ext_t * ext = (lv_ai_talk_ext_t *)mmi_ai_talk_actId_ext_get(ACT_ID_AI_TALK); - if(NULL != ext && NULL != ext->cont) - { - ext->delete_bg = lv_cont_create(ext->cont, NULL); - lv_obj_set_size(ext->delete_bg, LV_HOR_RES, LV_VER_RES); - lv_obj_set_style_local_bg_color(ext->delete_bg, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, lv_color_make(0xB6, 0xF7, 0xFF)); - - // current - lv_obj_t * btn_delete_current = lv_cont_create(ext->delete_bg, NULL); - lv_obj_set_size(btn_delete_current, LV_HOR_RES - 40, 56); - lv_obj_set_style_local_bg_color(btn_delete_current, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xB9, 0x86, 0xFF)); - lv_obj_set_style_local_radius(btn_delete_current, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, 10); - lv_obj_set_click(btn_delete_current, true); - lv_obj_set_event_cb(btn_delete_current, mmi_ai_talk_item_delete_select_btn_event_cb); - lv_obj_align(btn_delete_current, NULL, LV_ALIGN_IN_TOP_MID, 0, 40); - lv_watch_set_free_num(btn_delete_current, 0); - ext->delete_current = btn_delete_current; - - lv_obj_t * label_delete_current = lv_label_create(btn_delete_current, NULL); - lv_obj_add_style(label_delete_current, LV_LABEL_PART_MAIN, &lv_watch_font26); - lv_label_set_text_id(label_delete_current, WATCH_TEXT_ID_DELETE_CURRENT_ITEM); - lv_label_set_align(label_delete_current, LV_LABEL_ALIGN_CENTER); - lv_obj_align(label_delete_current, btn_delete_current, LV_ALIGN_CENTER, 0, 0); - - // all - lv_obj_t * btn_delete_all = lv_cont_create(ext->delete_bg, btn_delete_current); - lv_obj_set_style_local_bg_color(btn_delete_all, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xFF, 0x6F, 0x91)); - lv_obj_align(btn_delete_all, btn_delete_current, LV_ALIGN_OUT_BOTTOM_MID, 0, 20); - lv_watch_set_free_num(btn_delete_all, 1); - ext->delete_all = btn_delete_all; - - lv_obj_t * label_delete_all = lv_label_create(btn_delete_all, NULL); - lv_obj_add_style(label_delete_all, LV_LABEL_PART_MAIN, &lv_watch_font26); - lv_label_set_text_id(label_delete_all, WATCH_TEXT_ID_DELETE_ALL_ITEM); - lv_label_set_align(label_delete_all, LV_LABEL_ALIGN_CENTER); - lv_obj_align(label_delete_all, btn_delete_all, LV_ALIGN_CENTER, 0, 0); - - // back - lv_obj_t * btn_delete_back = lv_cont_create(ext->delete_bg, btn_delete_current); - lv_obj_set_style_local_bg_color(btn_delete_back, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0x47, 0xA6, 0xFF)); - lv_obj_set_event_cb(btn_delete_back, mmi_ai_talk_item_delete_cancel_btn_event_cb); - lv_obj_align(btn_delete_back, btn_delete_all, LV_ALIGN_OUT_BOTTOM_MID, 0, 20); - ext->delete_back = btn_delete_back; - - lv_obj_t * label_delete_back = lv_label_create(btn_delete_back, NULL); - lv_obj_add_style(label_delete_back, LV_LABEL_PART_MAIN, &lv_watch_font26); - lv_label_set_text_id(label_delete_back, WATCH_TEXT_ID_CANCEL); - lv_label_set_align(label_delete_back, LV_LABEL_ALIGN_CENTER); - lv_obj_align(label_delete_back, btn_delete_back, LV_ALIGN_CENTER, 0, 0); - - - lv_obj_t * label_prompt = lv_label_create(ext->delete_bg, NULL); - lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font26_black); - lv_label_set_text_id(label_prompt, WATCH_TEXT_ID_DEL_Q); - lv_obj_align(label_prompt, ext->delete_bg, LV_ALIGN_CENTER, 0, -30); - ext->delete_label_prompt = label_prompt; - - lv_obj_t * btn_cancel = lv_btn_create(ext->delete_bg, NULL); - lv_obj_set_size(btn_cancel, 100, 56); - lv_obj_set_style_local_bg_color(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, lv_color_make(0x47, 0xA6, 0xFF)); - lv_obj_set_style_local_radius(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 30); - lv_obj_set_style_local_bg_color(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_PRESSED, lv_color_make(0x47, 0xA6, 0xFF)); - lv_obj_set_style_local_radius(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_PRESSED, 30); - lv_obj_align(btn_cancel, NULL, LV_ALIGN_IN_BOTTOM_LEFT, 10, -20); - lv_obj_set_event_cb(btn_cancel, mmi_ai_talk_item_delete_cancel_btn_event_cb); - ext->delete_btn_cancel = btn_cancel; - - lv_obj_t * label_cancel = lv_label_create(btn_cancel, NULL); - lv_obj_add_style(label_cancel, LV_LABEL_PART_MAIN, &lv_watch_font26); - lv_label_set_text_id(label_cancel, WATCH_TEXT_ID_CANCEL); - - lv_obj_t * btn_ok = lv_btn_create(ext->delete_bg, btn_cancel); - lv_obj_set_style_local_bg_color(btn_ok, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, lv_color_make(0xFF, 0x6F, 0x91)); - lv_obj_set_style_local_bg_color(btn_ok, LV_BTN_PART_MAIN, LV_STATE_PRESSED, lv_color_make(0xFF, 0x6F, 0x91)); - lv_obj_align(btn_ok, NULL, LV_ALIGN_IN_BOTTOM_RIGHT, -10, -20); - lv_obj_set_event_cb(btn_ok, mmi_ai_talk_item_delete_ok_btn_event_cb); - ext->delete_btn_ok = btn_ok; + printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - lv_obj_t * label_ok = lv_label_create(btn_ok, label_cancel); - lv_label_set_text_id(label_ok, WATCH_TEXT_ID_OK); + lv_watch_png_cache_all_free(); - // display - lv_obj_set_hidden(label_prompt, true); - lv_obj_set_hidden(btn_cancel, true); - lv_obj_set_hidden(btn_ok, true); - } -} + mmi_ai_talk_sending_screen_task_stop(); -void mmi_ai_talk_sending_anim_cb(lv_anim_t * a) -{ - lv_obj_t * img = a->var; - - switch(s_ai_talk_play_anim_count % 3) - { - case 0: - lv_img_set_src(img, ICON_WECHAT_SENDING_PROMPT1); - break; - - case 1: - lv_img_set_src(img, ICON_WECHAT_SENDING_PROMPT2); - break; - - case 2: - lv_img_set_src(img, ICON_WECHAT_SENDING_PROMPT3); - break; - - default: - break; - } - s_ai_talk_play_anim_count++; + watch_set_suspend_enable(true, ACT_ID_AI_TALK_SENDING, 0); + watch_wakeup_time_reset(); } -void mmi_ai_talk_sending_result_screen_timeout(void *para) +void mmi_ai_talk_sending_screen_exit(void) { - printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - mmi_ai_talk_sending_screen_prepare_destory(NULL); //delete sending screen @@ -695,58 +579,77 @@ void mmi_ai_talk_sending_result_screen_timeout(void *para) printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); lv_obj_del(obj); } +} + +void mmi_ai_talk_sending_fail_screen_exit(void) +{ + mmi_ai_talk_sending_screen_exit(); //return main list screen mmi_ai_talk_main_screen_refresh(); } -void mmi_ai_talk_sending_screen_timeout(void *para) -{ - lv_ai_talk_sending_ext_t * sending_ext = (lv_ai_talk_sending_ext_t *)para; - printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - - if(NULL != sending_ext->sending_timer_id) - { - Hal_Timer_Stop(sending_ext->sending_timer_id); - sending_ext->sending_timer_id = NULL; - } +#define TIMEOUT_SEND_END_CHAR_COUNT (3) // 500ms *3 +#define TIMEOUT_WAIT_FOR_RESULT_COUNT (19) // 500ms *3 + 500ms * 16 +#define TIMEOUT_GET_RESULT_FAIL_COUNT (22) // 500ms *3 + 500ms * 16 + 500ms * 3 - if(NULL != sending_ext->sending_anim.var) +static bool mmi_ai_talk_is_waiting_for_result(void) +{ + bool result = false; + + printf("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, s_ai_talk_sending_screen_counter); + if(TIMEOUT_SEND_END_CHAR_COUNT < s_ai_talk_sending_screen_counter + && TIMEOUT_WAIT_FOR_RESULT_COUNT > s_ai_talk_sending_screen_counter + ) { - lv_obj_t * img_bkg = lv_obj_get_parent(sending_ext->sending_anim.var); - lv_img_set_src(img_bkg, ((true == sending_ext->send_result) ? ICON_WECHAT_SENDING_SUCC : ICON_WECHAT_SENDING_FAILED)); - - lv_anim_del(sending_ext->sending_anim.var, NULL); - lv_obj_del(sending_ext->sending_anim.var); - sending_ext->sending_anim.var = NULL; + result = true; } - sending_ext->result_timer_id = Hal_Timer_Start(1500, mmi_ai_talk_sending_result_screen_timeout, sending_ext, FALSE); + return result; } -void mmi_ai_talk_sending_screen_prepare_destory(lv_obj_t * activity_obj) +static void mmi_ai_talk_sending_screen_task_stop(void) { printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - - mmi_ai_talk_audio_data_send_end_char(); - - lv_watch_png_cache_all_free(); - + lv_ai_talk_sending_ext_t * sending_ext = (lv_ai_talk_sending_ext_t *)mmi_ai_talk_actId_ext_get(ACT_ID_AI_TALK_SENDING); if(NULL != sending_ext) { - if(NULL != sending_ext->sending_timer_id) - { - Hal_Timer_Stop(sending_ext->sending_timer_id); - sending_ext->sending_timer_id = NULL; - } - if(NULL != sending_ext->result_timer_id) + if(NULL != sending_ext->sending_screen_task_id) { - Hal_Timer_Stop(sending_ext->result_timer_id); - sending_ext->result_timer_id = NULL; + lv_task_del(sending_ext->sending_screen_task_id); + sending_ext->sending_screen_task_id = NULL; } } + s_ai_talk_sending_screen_counter = 0; +} + +void mmi_ai_talk_sending_screen_task_cb(lv_task_t * task) +{ + s_ai_talk_sending_screen_counter++; + printf("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, s_ai_talk_sending_screen_counter); + + switch(s_ai_talk_sending_screen_counter) + { + case TIMEOUT_SEND_END_CHAR_COUNT: + mmi_ai_talk_audio_data_send_end_char(); + break; + + case TIMEOUT_WAIT_FOR_RESULT_COUNT: + lv_ai_talk_sending_ext_t * sending_ext = (lv_ai_talk_sending_ext_t *)(task->user_data); + + lv_obj_set_hidden(sending_ext->label_sending, true); + lv_obj_set_hidden(sending_ext->label_result, false); + break; + + case TIMEOUT_GET_RESULT_FAIL_COUNT: + mmi_ai_talk_sending_fail_screen_exit(); + break; + + default: + break; + } } lv_obj_t * mmi_ai_talk_sending_screen_create(lv_obj_t * activity_obj) @@ -773,34 +676,29 @@ lv_obj_t * mmi_ai_talk_sending_screen_create(lv_obj_t * activity_obj) return NULL; mmi_ai_talk_list_set_slide_enable(&sending_ext->old_ext, false); /*prevent to slide out while recording*/ - _lv_memset_00(&(sending_ext->sending_anim), sizeof(lv_anim_t)); - sending_ext->send_result = mmi_ai_talk_send_to_server(); - sending_ext->sending_timer_id = Hal_Timer_Start(1000 * 3, mmi_ai_talk_sending_screen_timeout, sending_ext, FALSE); - sending_ext->result_timer_id = NULL; - - lv_obj_t * img_bkg = lv_img_create(obj, NULL); - lv_img_set_src(img_bkg, ICON_WECHAT_SENDING_BG); - lv_obj_align(img_bkg, obj, LV_ALIGN_CENTER, 0, 0); - - lv_obj_t * img_sending = lv_img_create(img_bkg, NULL); - lv_img_set_src(img_sending, ICON_WECHAT_SENDING_PROMPT3); -#if USE_LV_WATCH_UI_240_320 - lv_obj_align(img_sending, img_bkg, LV_ALIGN_IN_BOTTOM_MID, 0, -20); -#elif USE_LV_WATCH_UI_240_280 - lv_obj_align(img_sending, img_bkg, LV_ALIGN_IN_BOTTOM_MID, 0, -40); -#else - lv_obj_align(img_sending, img_bkg, LV_ALIGN_IN_BOTTOM_MID, 0, -20); -#endif - lv_anim_t * a = &(sending_ext->sending_anim); - lv_anim_init(a); - lv_anim_set_var(a, img_sending); - //lv_anim_set_exec_cb(a, (lv_anim_exec_xcb_t)wechat_msg_sending_anim_exec_cb); - lv_anim_set_start_cb(a, (lv_anim_ready_cb_t)mmi_ai_talk_sending_anim_cb); - lv_anim_set_repeat_count(a, LV_ANIM_REPEAT_INFINITE); - lv_anim_set_repeat_delay(a, 500); - lv_anim_start(a); - s_ai_talk_play_anim_count = 0; + mmi_ai_talk_send_to_server(); + s_ai_talk_sending_screen_counter = 0; + sending_ext->sending_screen_task_id = lv_task_create(mmi_ai_talk_sending_screen_task_cb, 500, LV_TASK_PRIO_HIGH, sending_ext); + + lv_obj_t * cont = lv_cont_create(obj, NULL); + lv_obj_set_size(cont, lv_obj_get_width(obj), lv_obj_get_height(obj)); + lv_obj_align(cont, obj, LV_ALIGN_CENTER, 0, 0); + lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, lv_color_make(194, 252, 252)); + + sending_ext->label_sending = lv_label_create(cont, NULL); + lv_obj_add_style(sending_ext->label_sending, LV_LABEL_PART_MAIN, &lv_watch_font26_black); + lv_label_set_text_id(sending_ext->label_sending, WATCH_TEXT_ID_GETTING_RESULT); + lv_obj_align(sending_ext->label_sending, NULL, LV_ALIGN_CENTER, 0, -10); + + sending_ext->label_result = lv_label_create(cont, sending_ext->label_sending); + lv_label_set_text_id(sending_ext->label_result, WATCH_TEXT_ID_GET_RESULT_FAIL); + lv_obj_align(sending_ext->label_result, NULL, LV_ALIGN_CENTER, 0, -10); + + lv_obj_set_hidden(sending_ext->label_sending, false); + lv_obj_set_hidden(sending_ext->label_result, true); + + watch_set_suspend_enable(false, ACT_ID_AI_TALK_SENDING, 0); return obj; } @@ -1038,16 +936,6 @@ lv_obj_t * mmi_ai_talk_recording_screen_create(lv_obj_t * activity_obj) //lv_obj_set_click(cont, true); //lv_obj_set_event_cb(cont, mmi_ai_talk_recording_release_event_cb); //lv_obj_add_protect(cont, LV_PROTECT_PRESS_LOST); - - //lv_obj_t * label_warning = lv_label_create(cont, NULL); - //lv_obj_set_style_local_text_font(label_warning, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_THEME_WATCH_NIGHT_FONT_SMALL); - //lv_obj_set_style_local_text_color(label_warning, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_RED); - //lv_obj_add_style(label_warning, LV_LABEL_PART_MAIN, &lv_watch_font26_black); - //lv_label_set_long_mode(label_warning, LV_LABEL_LONG_BREAK); - //lv_obj_set_width(label_warning, lv_obj_get_width(obj) * 2 / 3); - //lv_label_set_text_id(label_warning, WATCH_TEXT_ID_SLIDE_UP_WARNING); - //lv_label_set_align(label_warning, LV_LABEL_ALIGN_CENTER); - //lv_obj_align(label_warning, cont, LV_ALIGN_IN_TOP_MID, 0, 50); lv_obj_t * label_time = lv_label_create(cont, NULL); lv_obj_add_style(label_time, LV_LABEL_PART_MAIN, &lv_watch_font26_black); @@ -1090,12 +978,8 @@ lv_obj_t * mmi_ai_talk_recording_screen_create(lv_obj_t * activity_obj) if(AUDIO_CTRL_PRIORITY_5 == Hal_Audio_Manage_Start_Req(AUDIO_CTRL_PRIORITY_5, mmi_ai_talk_recording_audio_ctrl_callback)) { - //Hal_Record_Buffer_Start_Req(ext->record_buffer, - // MMI_AI_TALK_DATA_RECORD_SIZE_MAX, - // MMI_AI_TALK_DATA_RECORD_DURATION_MAX * 1000, - // mmi_ai_talk_recording_cb); - s_ai_talk_recording_sent_size = 0; + Hal_Record_Buffer_With_Format_Req(ext->record_buffer, MMI_AI_TALK_DATA_RECORD_SIZE_MAX, MMI_AI_TALK_DATA_RECORD_DURATION_MAX * 1000, @@ -1192,6 +1076,7 @@ void mmi_ai_talk_voice_item_reset_play_state(lv_ai_talk_list_ext_t * list_page_e { 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__); @@ -1203,14 +1088,14 @@ void mmi_ai_talk_voice_item_reset_play_state(lv_ai_talk_list_ext_t * list_page_e 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_ai_talk_voice_item_playing_stop(lv_ai_talk_ext_t * ext) { printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - return; -/* +#if 0 if(NULL == ext || NULL == ext->list) { printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); @@ -1227,7 +1112,7 @@ void mmi_ai_talk_voice_item_playing_stop(lv_ai_talk_ext_t * ext) Hal_File_Play_End(); Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_5); mmi_ai_talk_voice_item_reset_play_state(list_page_ext); -*/ +#endif } void mmi_ai_talk_list_msg_item_style_reset(lv_ai_talk_ext_t * ext) @@ -1241,8 +1126,7 @@ void mmi_ai_talk_list_msg_item_style_reset(lv_ai_talk_ext_t * ext) 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_text)); + //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)); } @@ -1251,6 +1135,7 @@ void mmi_ai_talk_list_msg_item_time(char * time_str, hal_rtc_t * cur_time, hal_r { printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); +#if 0 if(0 == last_msg_time->tm_year) { sprintf(time_str, "%d/%d/%d %02d:%02d", msg_time->tm_year, msg_time->tm_mon, msg_time->tm_mday, @@ -1342,10 +1227,12 @@ void mmi_ai_talk_list_msg_item_time(char * time_str, hal_rtc_t * cur_time, hal_r } } } +#endif } void mmi_ai_talk_list_voice_item_playing_anim_cb(lv_anim_t * a) { +#if 0 lv_obj_t * play_img = (lv_obj_t *)a->var; uint8_t msg_from = mmi_ai_talk_info_index_item_msg_from_get(s_ai_talk_selected_item_index); @@ -1369,12 +1256,14 @@ void mmi_ai_talk_list_voice_item_playing_anim_cb(lv_anim_t * a) break; } s_ai_talk_play_anim_count++; +#endif } void mmi_ai_talk_list_voice_item_playing_audio_ctrl_callback(AUDIO_CTRL_PRIORITY priority) { printf("[@CHENG_DEBUG][%s][%d]: priority=%d\n", __FUNCTION__, __LINE__, priority); +#if 0 if(AUDIO_CTRL_PRIORITY_5 == priority) { if(false == watch_is_ready()) @@ -1391,12 +1280,14 @@ void mmi_ai_talk_list_voice_item_playing_audio_ctrl_callback(AUDIO_CTRL_PRIORITY mmi_ai_talk_voice_item_playing_stop(ext); } } +#endif } void mmi_ai_talk_list_voice_item_play_over_cb(void * para) { printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); +#if 0 Hal_File_Play_End(); Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_5); @@ -1407,12 +1298,14 @@ void mmi_ai_talk_list_voice_item_play_over_cb(void * para) return; } mmi_ai_talk_voice_item_reset_play_state(list_page_ext); +#endif } void mmi_ai_talk_list_voice_item_play_action(lv_ai_talk_list_ext_t * list_page_ext, lv_obj_t * play_img, lv_obj_t * unread_img) { printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); +#if 0 //display ui lv_anim_t * a = &(list_page_ext->voice_playing_anim); @@ -1424,7 +1317,7 @@ void mmi_ai_talk_list_voice_item_play_action(lv_ai_talk_list_ext_t * list_page_e lv_anim_start(a); s_ai_talk_play_anim_count = 1; - nv_watch_wechat_msg_item_info_t * msg_item = NULL; + mmi_ai_talk_msg_item_info_t * msg_item = NULL; mmi_ai_talk_info_index_item_get(s_ai_talk_selected_item_index, &msg_item); msg_item->unread_flag = 0; if(NULL != unread_img) @@ -1440,10 +1333,12 @@ void mmi_ai_talk_list_voice_item_play_action(lv_ai_talk_list_ext_t * list_page_e printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); Hal_File_Play_Onetime(msg_item->msg_data_full_file_name, query_current_volume(), mmi_ai_talk_list_voice_item_play_over_cb, list_page_ext, 0); } +#endif } void mmi_ai_talk_list_voice_item_event_cb(lv_obj_t * cont, lv_event_t e) { +#if 0 lv_ai_talk_list_item_ext_t * list_item_ext = (lv_ai_talk_list_item_ext_t *)lv_obj_get_ext_attr(cont); if(NULL == list_item_ext) return; @@ -1472,7 +1367,7 @@ void mmi_ai_talk_list_voice_item_event_cb(lv_obj_t * cont, lv_event_t e) { list_page_ext->pressing = false; - nv_watch_wechat_msg_item_info_t * msg_item = NULL; + mmi_ai_talk_msg_item_info_t * msg_item = NULL; mmi_ai_talk_info_index_item_get(s_ai_talk_selected_item_index, &msg_item); if(0 != msg_item->msg_data_size) @@ -1495,10 +1390,12 @@ void mmi_ai_talk_list_voice_item_event_cb(lv_obj_t * cont, lv_event_t e) } } } +#endif } void mmi_ai_talk_list_text_item_event_cb(lv_obj_t * cont, lv_event_t e) { +#if 0 lv_ai_talk_list_item_ext_t * list_item_ext = (lv_ai_talk_list_item_ext_t *)lv_obj_get_ext_attr(cont); if(NULL == list_item_ext) return; @@ -1527,10 +1424,11 @@ void mmi_ai_talk_list_text_item_event_cb(lv_obj_t * cont, lv_event_t e) { list_page_ext->pressing = false; } +#endif } //display time & content -lv_obj_t * mmi_ai_talk_list_msg_item_add(lv_obj_t * list_page, nv_watch_wechat_msg_item_info_t * msg_item, char * time_str, uint8_t i) +lv_obj_t * mmi_ai_talk_list_msg_item_add(lv_obj_t * list_page, mmi_ai_talk_msg_item_info_t * msg_item, char * time_str, uint8_t i) { printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); @@ -1541,6 +1439,9 @@ lv_obj_t * mmi_ai_talk_list_msg_item_add(lv_obj_t * list_page, nv_watch_wechat_m lv_obj_t * last_obj = lv_obj_get_child(scrl, NULL); lv_coord_t obj_y = 0; + #if 1 + obj_y = lv_obj_get_style_pad_inner(scrl, LV_STATE_DEFAULT); + #else if(NULL != last_obj) { obj_y = lv_obj_get_y(last_obj) + lv_obj_get_height(last_obj) + lv_obj_get_style_pad_inner(scrl, LV_STATE_DEFAULT); @@ -1565,10 +1466,14 @@ lv_obj_t * mmi_ai_talk_list_msg_item_add(lv_obj_t * list_page, nv_watch_wechat_m printf("[@CHENG_DEBUG][%s][%d]: msg_type=%d,file=%s,size=%d,obj_y=%d\n", __FUNCTION__, __LINE__, msg_item->msg_type, msg_item->msg_data_full_file_name, msg_item->msg_data_size, obj_y); + #endif + printf("[@CHENG_DEBUG][%s][%d]: msg_type=%d,obj_y=%d,size=%d,buf=0x%x\n", __FUNCTION__, __LINE__, + msg_item->msg_type, obj_y, msg_item->msg_data_size, msg_item->msg_data_ptr); switch(msg_item->msg_type) { case WECHAT_MSG_TYPE_VOICE: + #if 0 lv_obj_t * unread_img = lv_img_create(list_page, NULL); //obj = lv_img_create(list_page, NULL); obj = lv_cont_create(list_page, NULL); @@ -1652,13 +1557,16 @@ lv_obj_t * mmi_ai_talk_list_msg_item_add(lv_obj_t * list_page, nv_watch_wechat_m lv_page_focus(list_page, obj, 0); lv_page_glue_obj(obj, true); lv_watch_obj_add_element(obj); + #endif break; case WECHAT_MSG_TYPE_TEXT: obj = lv_cont_create(list_page, NULL); + #if 0 list_item_ext = lv_obj_allocate_ext_attr(obj, sizeof(lv_ai_talk_list_item_ext_t)); list_item_ext->item_index = i; list_item_ext->unread_img = NULL; + #endif #if 1 lv_obj_set_size(obj, LV_HOR_RES - 30, 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); @@ -1673,6 +1581,11 @@ lv_obj_t * mmi_ai_talk_list_msg_item_add(lv_obj_t * list_page, nv_watch_wechat_m lv_obj_align(obj, scrl, LV_ALIGN_IN_TOP_LEFT, 10, obj_y); #endif + #if 1 + uint32_t file_size = msg_item->msg_data_size; + char * file_buf = msg_item->msg_data_ptr; + + #else lv_fs_file_t file_p; lv_fs_res_t res; uint32_t file_size = 0, bytes_read = 0; @@ -1698,6 +1611,7 @@ lv_obj_t * mmi_ai_talk_list_msg_item_add(lv_obj_t * list_page, nv_watch_wechat_m break; } printf("[@CHENG_DEBUG][%s][%d]: %d,%d,%s\n", __FUNCTION__, __LINE__, file_size, bytes_read, file_buf); + #endif 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)); @@ -1707,14 +1621,18 @@ lv_obj_t * mmi_ai_talk_list_msg_item_add(lv_obj_t * list_page, nv_watch_wechat_m lv_label_set_text(label_text, file_buf); lv_obj_align(label_text, obj, LV_ALIGN_IN_LEFT_MID, 10, 0); + #if 1 + lv_obj_set_click(obj, false); + #else lv_obj_set_click(obj, true); lv_obj_set_event_cb(obj, mmi_ai_talk_list_text_item_event_cb); + #endif 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); - lv_mem_free(file_buf); + //lv_mem_free(file_buf); break; case WECHAT_MSG_TYPE_EXPRESSION: @@ -1791,15 +1709,9 @@ void mmi_ai_talk_list_create(lv_obj_t * obj, lv_ai_talk_ext_t * ext) 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_text)); - //lv_style_copy(&(list_page_ext->style_text), &lv_style_pretty); - //lv_style_set_bg_color(&(list_page_ext->style_text), LV_STATE_DEFAULT, lv_color_make(0xFF, 0xE1, 0xE1)); - //lv_style_set_border_width(&(list_page_ext->style_text), LV_STATE_DEFAULT, 0); - //lv_style_set_shadow_width(&(list_page_ext->style_text), LV_STATE_DEFAULT, 0); + //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_font26); @@ -1825,11 +1737,16 @@ void mmi_ai_talk_list_create(lv_obj_t * obj, lv_ai_talk_ext_t * ext) 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; + //_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; ext->list = list_page; + #if 1 + mmi_ai_talk_msg_item_info_t * msg_item = &s_ai_talk_item_info; + mmi_ai_talk_list_msg_item_add(list_page, msg_item, NULL, 0); + #else + uint8_t i = 0; uint8_t msg_count = mmi_ai_talk_info_count_get(); hal_rtc_t cur_time = {0}, last_msg_item_time = {0}, msg_time = {0}; @@ -1840,7 +1757,7 @@ void mmi_ai_talk_list_create(lv_obj_t * obj, lv_ai_talk_ext_t * ext) printf("[@CHENG_DEBUG][%s][%d]: i=%d, msg_count=%d\n", __FUNCTION__, __LINE__, i, msg_count); char time_str[32] = {0}; - nv_watch_wechat_msg_item_info_t * msg_item = NULL; + mmi_ai_talk_msg_item_info_t * msg_item = NULL; mmi_ai_talk_info_index_item_get(i, &msg_item); _lv_memcpy(&msg_time, &(msg_item->msg_time), sizeof(hal_rtc_t)); @@ -1849,6 +1766,7 @@ void mmi_ai_talk_list_create(lv_obj_t * obj, lv_ai_talk_ext_t * ext) mmi_ai_talk_list_msg_item_add(list_page, msg_item, time_str, i); } + #endif 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)) { @@ -1866,6 +1784,34 @@ void mmi_ai_talk_main_screen_refresh(void) printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); +#if 1 + mmi_ai_talk_list_set_slide_enable(&ext->old_ext, true); + mmi_ai_talk_list_msg_item_style_reset(ext); + if(NULL != ext->list) + { + lv_obj_del(ext->list); + ext->list = NULL; + } + + printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + uint8_t msg_count = mmi_ai_talk_info_count_get(); + if(0 == msg_count) + { + printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + lv_obj_set_hidden(ext->label_no_msg, false); + } + else + { + printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + lv_obj_set_hidden(ext->label_no_msg, true); + mmi_ai_talk_list_create(ext->cont, ext); + } + +#else + mmi_ai_talk_list_set_slide_enable(&ext->old_ext, true); mmi_ai_talk_voice_item_playing_stop(ext); @@ -1909,6 +1855,7 @@ void mmi_ai_talk_main_screen_refresh(void) mmi_ai_talk_list_create(ext->cont, ext); } +#endif } lv_obj_t * mmi_ai_talk_create(lv_obj_t * activity_obj) @@ -1937,8 +1884,8 @@ lv_obj_t * mmi_ai_talk_create(lv_obj_t * activity_obj) ext->cont = NULL; ext->list = NULL; - ext->delete_timer_id = NULL; - ext->delete_bg = NULL; + //ext->delete_timer_id = NULL; + //ext->delete_bg = NULL; ext->record_buffer = NULL; ext->record_size = 0; @@ -2023,7 +1970,7 @@ void mmi_ai_talk_create_event_cb(lv_obj_t * btn, lv_event_t e) mmi_ai_talk_tcp_connect_msg(NULL); // - mmi_ai_talk_info_init(); + mmi_ai_talk_receive_item_info_clean(); lv_watch_png_cache_all_free(); lv_obj_t * obj = mmi_ai_talk_create(NULL); diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/bei_ke_rui_sheng.h b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/bei_ke_rui_sheng.h index dfd24070..7022e716 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/bei_ke_rui_sheng.h +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/bei_ke_rui_sheng.h @@ -29,13 +29,34 @@ extern "C" { #define MMI_AI_TALK_CHAT_TIME_INTERVAL (3 * 60) /*display the time of current chat msg if more than 3 mins from the previous chat msgs*/ +//#define MMI_AI_TALK_MSG_NUM_MAX (1) +//#define MMI_AI_TALK_DATA_FILE_NAME_MAX (64) // (LV_FS_MAX_PATH_LENGTH / 2) + +typedef struct +{ + //uint8_t msg_index; + //uint8_t msg_from; // 0-slef; 1-other + //uint8_t unread_flag; // 0-read; 1-unread + //hal_rtc_t msg_time; + nv_wechat_msg_type_e msg_type; + uint32_t msg_data_size; + void * msg_data_ptr; + //char msg_data_full_file_name[MMI_AI_TALK_DATA_FILE_NAME_MAX]; +} mmi_ai_talk_msg_item_info_t; + +//typedef struct +//{ +// uint8_t msg_count; +// mmi_ai_talk_msg_item_info_t msg_item[MMI_AI_TALK_MSG_NUM_MAX]; +//} mmi_ai_talk_msg_info_t; + typedef struct { lv_watch_obj_ext_t old_ext; - lv_anim_t sending_anim; - TIMER_ID sending_timer_id, result_timer_id; - bool send_result; + lv_obj_t * label_sending; + lv_obj_t * label_result; + lv_task_t * sending_screen_task_id; } lv_ai_talk_sending_ext_t; typedef struct @@ -53,12 +74,12 @@ typedef struct typedef struct { lv_page_ext_t old_ext; - lv_anim_t voice_playing_anim; - uint8_t voice_playing_msg_from; // 0-slef; 1-other + //lv_anim_t voice_playing_anim; + //uint8_t voice_playing_msg_from; // 0-slef; 1-other bool pressing; lv_style_t style_cont_self; lv_style_t style_cont_other; - lv_style_t style_label_time; + //lv_style_t style_label_time; lv_style_t style_label_len_other; lv_style_t style_label_len_self; } lv_ai_talk_list_ext_t; @@ -72,14 +93,14 @@ typedef struct //lv_obj_t * img_emo; lv_obj_t * img_record; // record button - lv_obj_t * delete_bg; // delete msg - lv_obj_t * delete_current; - lv_obj_t * delete_all; - lv_obj_t * delete_back; - lv_obj_t * delete_label_prompt; - lv_obj_t * delete_btn_cancel; - lv_obj_t * delete_btn_ok; - TIMER_ID delete_timer_id; + //lv_obj_t * delete_bg; // delete msg + //lv_obj_t * delete_current; + //lv_obj_t * delete_all; + //lv_obj_t * delete_back; + //lv_obj_t * delete_label_prompt; + //lv_obj_t * delete_btn_cancel; + //lv_obj_t * delete_btn_ok; + //TIMER_ID delete_timer_id; MCI_EVNET_T event; uint8_t * record_buffer; @@ -87,7 +108,6 @@ typedef struct }lv_ai_talk_ext_t; - void mmi_ai_talk_create_event_cb(lv_obj_t * btn, lv_event_t e); #endif diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/bei_ke_rui_sheng_data.c b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/bei_ke_rui_sheng_data.c index 5bf96b7c..5619b81e 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/bei_ke_rui_sheng_data.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/bei_ke_rui_sheng_data.c @@ -206,14 +206,18 @@ bool mmi_receive_info_write_to_file(char * path, char * info_buf, uint32_t info_ } +#define KEY_IS_FINAL ("is_final") +#define KEY_RESULTS ("results") +#define KEY_TYPE ("type") +#define VALUE_REAL_ASR ("real_asr") + +#define VALUE_MODEL_ANSWER ("model_answer") +#define KEY_ANSWER ("answer") + bool mmi_ai_talk_data_receive(unsigned char * next_buff, unsigned int next_buff_len) { bool result = false; cJSON * json_root = NULL; - int is_final = 0; - char * type_str = NULL; - char * result_str = NULL; - uint16_t result_str_len = 0; if(NULL == next_buff || 0 == next_buff_len) { @@ -222,8 +226,9 @@ bool mmi_ai_talk_data_receive(unsigned char * next_buff, unsigned int next_buff_ } - // write to file -// mmi_receive_info_write_to_file(BEI_KE_RECEIVE_FILE, next_buff, next_buff_len); + // write to file for debug + //mmi_receive_info_write_to_file(BEI_KE_RECEIVE_FILE, next_buff, next_buff_len); + lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_AI_TALK); if(NULL == activity_obj) @@ -242,33 +247,70 @@ bool mmi_ai_talk_data_receive(unsigned char * next_buff, unsigned int next_buff_ //Hal_Mem_Free(next_buff); //next_buff = NULL; - is_final = cJSON_GetIntValue(cJSON_GetObjectItem(json_root, "is_final")); + +#if 0 +// {"is_final":1,"results":"ÀëÀëÔ­ÉϲÝ","status":"ok","timestamp":{"end":2200,"start":730},"type":"real_asr"} + int is_final = 0; + char * type_real_asr = NULL; + char * str_results = NULL; + uint16_t str_results_len = 0; + + is_final = cJSON_GetIntValue(cJSON_GetObjectItem(json_root, KEY_IS_FINAL)); if(1 != is_final) { printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); goto exit_free_res; } - type_str = cJSON_GetStringValue(cJSON_GetObjectItem(json_root, "type")); - if(NULL == type_str) + type_real_asr = cJSON_GetStringValue(cJSON_GetObjectItem(json_root, KEY_TYPE)); + if(NULL == type_real_asr) { - printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + printf("[@CHENG_DEBUG][%s][%d]: get type fail\n", __FUNCTION__, __LINE__); goto exit_free_res; } - if(0 != strncmp(type_str, "real_asr", strlen("real_asr"))) + if(0 != strncmp(type_real_asr, VALUE_REAL_ASR, strlen(VALUE_REAL_ASR))) { printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); goto exit_free_res; } - result_str = cJSON_GetStringValue(cJSON_GetObjectItem(json_root, "results")); - if(NULL == result_str) + str_results = cJSON_GetStringValue(cJSON_GetObjectItem(json_root, KEY_RESULTS)); + if(NULL == str_results) { printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); goto exit_free_res; } - result_str_len = strlen(result_str); - result = mmi_ai_talk_receive_from_server(result_str, result_str_len, WECHAT_MSG_TYPE_TEXT); + str_results_len = strlen(str_results); + result = mmi_ai_talk_receive_from_server(str_results, str_results_len, WECHAT_MSG_TYPE_TEXT); +#endif + + +// {"type":"model_answer","status":"ok","answer_id":"1698890526941t","answer":"ÀëÀëÔ­Éϲݣ¬Ò»ËêÒ»¿ÝÈÙ¡£\nÒ°»ðÉÕ²»¾¡£¬´º·ç´µÓÖÉú¡£\nÔ¶·¼ÇֹŵÀ£¬Çç´ä½Ó»Ä³Ç¡£\nÓÖËÍÍõËïÈ¥£¬ÝÂÝÂÂú±ðÇé¡£","question":"ÀëÀëÔ­ÉϲÝ"} + char * type_model_answer = NULL; + char * str_answer = NULL; + uint16_t str_answer_len = 0; + + type_model_answer = cJSON_GetStringValue(cJSON_GetObjectItem(json_root, KEY_TYPE)); + if(NULL == type_model_answer) + { + printf("[@CHENG_DEBUG][%s][%d]: get type fail\n", __FUNCTION__, __LINE__); + goto exit_free_res; + } + if(0 != strncmp(type_model_answer, VALUE_MODEL_ANSWER, strlen(VALUE_MODEL_ANSWER))) + { + printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + goto exit_free_res; + } + + str_answer = cJSON_GetStringValue(cJSON_GetObjectItem(json_root, KEY_ANSWER)); + if(NULL == str_answer) + { + printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + goto exit_free_res; + } + str_answer_len = strlen(str_answer); + result = mmi_ai_talk_receive_from_server(str_answer, str_answer_len, WECHAT_MSG_TYPE_TEXT); + exit_free_res: //if(NULL != next_buff) diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/bei_ke_rui_sheng_socket.c b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/bei_ke_rui_sheng_socket.c index e51555d4..0d9e1063 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/bei_ke_rui_sheng_socket.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/bei_ke_rui_sheng_socket.c @@ -14,7 +14,7 @@ TASK_HANDLE * s_ai_talk_tcp_task_id = NULL; TASK_HANDLE * s_ai_talk_send_task_id = NULL; -#define AI_TALK_RECEIVE_BUFF_LEN (6 * 1024) // (26 * 1024) +#define AI_TALK_RECEIVE_BUFF_LEN (10 * 1024) // (26 * 1024) static mmi_ai_talk_tcp_info_t s_ai_talk_tcp_info = {0};