From: CCC <2393524978@qq.com> Date: Fri, 1 Dec 2023 08:34:35 +0000 (+0800) Subject: temp X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=58519fa30559508f4dde8429b4735adb2870b9b2;p=mirrors%2FASR3603_Z5.git temp --- 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 6f917826..ced170de 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 @@ -32,6 +32,14 @@ static void mmi_ai_talk_receive_item_info_clean(void) s_ai_talk_item_info.msg_data_ptr = NULL; s_ai_talk_item_info.msg_data_size = 0; } + + if(NULL != s_ai_talk_item_info.msg_voice_data_ptr) + { + printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + lv_mem_free(s_ai_talk_item_info.msg_voice_data_ptr); + s_ai_talk_item_info.msg_voice_data_ptr = NULL; + s_ai_talk_item_info.msg_voice_data_size = 0; + } } uint8_t mmi_ai_talk_info_count_get(void) @@ -50,86 +58,6 @@ uint8_t mmi_ai_talk_info_count_get(void) return msg_count; } -uint8_t mmi_ai_talk_info_index_item_msg_from_get(uint8_t msg_index) -{ - // 0-slef; 1-other - 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, mmi_ai_talk_msg_item_info_t ** msg_item) -{ - //*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(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); - - if(msg_index < s_ai_talk_info->msg_count - 1) - { - for(i = msg_index; i < s_ai_talk_info->msg_count; i++) - { - _lv_memcpy(&(s_ai_talk_info->msg_item[i]), &(s_ai_talk_info->msg_item[i + 1]), msg_item_info_size); - } - } - 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(mmi_ai_talk_msg_item_info_t); - - for(i = 0; i < s_ai_talk_info->msg_count; i++) - { - lv_fs_remove(s_ai_talk_info->msg_item[i].msg_data_full_file_name); - _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(mmi_ai_talk_msg_item_info_t * msg_item) -{ -#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(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 < 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); - } - s_ai_talk_info->msg_count--; - } - - printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - - 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) { lv_obj_t * activity_obj = lv_watch_get_activity_obj(actId); @@ -166,6 +94,9 @@ void mmi_ai_talk_prepare_destory(lv_obj_t * activity_obj) // close tcp mmi_ai_talk_tcp_disconnect_msg(NULL); + + // free resource + mmi_ai_talk_data_receive_resource_clean(); lv_watch_png_cache_all_free(); @@ -174,13 +105,7 @@ 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; - //} - //mmi_ai_talk_voice_item_playing_stop(ext); mmi_ai_talk_list_msg_item_style_reset(ext); // free buffer @@ -329,108 +254,192 @@ void mmi_ai_talk_receive_update_ui(void) } } -bool mmi_ai_talk_receive_from_server(char * data_buff, int data_buff_len, nv_wechat_msg_type_e type) +bool mmi_ai_talk_model_answer_result_display(char * data_buff, int data_buff_len) { if(NULL == data_buff || 0 == data_buff_len) { printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); return false; } - if(WECHAT_MSG_TYPE_MAX <= type) - { - printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - return false; - } - -#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; + //mmi_ai_talk_sending_screen_task_stop(); - file_size = data_buff_len; - file_buf = lv_mem_alloc(file_size + 1); - if(NULL == file_buf) + if(NULL != s_ai_talk_item_info.msg_data_ptr) + { + 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_ptr = lv_mem_alloc(data_buff_len + 1); + if(NULL == s_ai_talk_item_info.msg_data_ptr) { 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; + _lv_memset_00(s_ai_talk_item_info.msg_data_ptr, data_buff_len + 1); + _lv_memcpy(s_ai_talk_item_info.msg_data_ptr, data_buff, data_buff_len); + s_ai_talk_item_info.msg_data_size = data_buff_len; 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}; +#define BEI_KE_DEBUG_FILE "C:/bei_ke_debug.txt" +bool mmi_ai_talk_debug_info_write_to_file(char * path, char * info_buf, uint32_t info_size) +{ + lv_fs_file_t file_p; + lv_fs_res_t res; + uint32_t bytes_write = 0; + + res = lv_fs_open(&file_p, path, LV_FS_MODE_WR | LV_FS_MODE_APPEND); + if(LV_FS_RES_OK != res) + { + printf("[@CHENG_DEBUG][%s][%d]: errno=%d\n", __FUNCTION__, __LINE__, res); + lv_fs_close(&file_p); + return false; + } + 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 + char str_time[24] = {0}; Hal_Rtc_Gettime(&cur_time); - _lv_memcpy(&(s_ai_talk_item_info.msg_time), &cur_time, sizeof(hal_rtc_t)); + sprintf(str_time, "\n[%04d%02d%02d_%02d%02d%02d]", + cur_time.tm_year, + cur_time.tm_mon, + cur_time.tm_mday, + cur_time.tm_hour, + cur_time.tm_min, + cur_time.tm_sec); + + //lv_fs_seek + res = lv_fs_write(&file_p, str_time, strlen(str_time), &bytes_write); + if(LV_FS_RES_OK != res) + { + printf("[@CHENG_DEBUG][%s][%d]: errno=%d\n", __FUNCTION__, __LINE__, res); + lv_fs_close(&file_p); + return false; + } - s_ai_talk_item_info.msg_from = 1; - 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:/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, - s_ai_talk_item_info.msg_time.tm_hour, - s_ai_talk_item_info.msg_time.tm_min, - s_ai_talk_item_info.msg_time.tm_sec, - t_file_ext[type]); + res = lv_fs_write(&file_p, info_buf, info_size, &bytes_write); + lv_fs_close(&file_p); + if(LV_FS_RES_OK != res) + { + printf("[@CHENG_DEBUG][%s][%d]: errno=%d\n", __FUNCTION__, __LINE__, res); + return false; + } + printf("[@CHENG_DEBUG][%s][%d]: file_size=%d,write_size=%d\n", __FUNCTION__, __LINE__, info_size, bytes_write); + + return true; +} + + +static void mmi_ai_talk_tts_info_result_play_over_cb(void * para) +{ + printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + if(NULL != s_ai_talk_item_info.msg_voice_data_ptr) + { + lv_mem_free(s_ai_talk_item_info.msg_voice_data_ptr); + s_ai_talk_item_info.msg_voice_data_ptr = NULL; + } + s_ai_talk_item_info.msg_voice_data_size = 0; +} + +bool mmi_ai_talk_tts_info_result_display(char * data_buff, int data_buff_len) +{ + uint32_t output_len = 0; - if(false == mmi_ai_talk_item_info_write_to_file(s_ai_talk_item_info.msg_data_full_file_name, data_buff, data_buff_len)) + 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); + + if(NULL == data_buff || 0 == data_buff_len) { printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); return false; } - lv_ai_talk_ext_t * ext = mmi_ai_talk_actId_ext_get(ACT_ID_AI_TALK); - if(NULL != ext) + if(false == mmi_ai_talk_is_waiting_for_result()) { - mmi_ai_talk_voice_item_playing_stop(ext); + printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + return false; } - - mmi_ai_talk_info_new_item_add(&s_ai_talk_item_info); + + mmi_ai_talk_sending_screen_task_stop(); // ui - if(false == mmi_active_screen_is_prohibit_interrupted() - && false == mmi_health_measure_state_is_ui_measure() -// && false == mmi_ai_talk_voice_is_playing() - && false == mmi_ai_talk_voice_is_recording() - && false == mmi_ai_talk_item_is_sending() - #ifdef __MMI_ZHSX_SUPPORT_DO_NOT_DISTURB__ - && false == mmi_watch_is_in_do_not_disturb_time() - #endif - ) + mmi_watch_wake_up(); + mmi_ui_msg_action_ai_talk_incoming(); + + + if(NULL != s_ai_talk_item_info.msg_voice_data_ptr) { - printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - - mmi_watch_wake_up(); - mmi_ui_msg_action_ai_talk_incoming(); + lv_mem_free(s_ai_talk_item_info.msg_voice_data_ptr); + s_ai_talk_item_info.msg_voice_data_ptr = NULL; } + s_ai_talk_item_info.msg_voice_data_ptr = lv_mem_alloc(data_buff_len); + if(NULL == s_ai_talk_item_info.msg_voice_data_ptr) + { + printf("[@CHENG_DEBUG][%s][%d]: memory alloc fail\n", __FUNCTION__, __LINE__); + return false; + } + _lv_memset_00(s_ai_talk_item_info.msg_voice_data_ptr, data_buff_len); + + if(0 != mbedtls_base64_decode(s_ai_talk_item_info.msg_voice_data_ptr, data_buff_len, &output_len, data_buff, data_buff_len)) + { + printf("[@CHENG_DEBUG][%s][%d]: base64 decode error\n", __FUNCTION__, __LINE__); + return false; + } + s_ai_talk_item_info.msg_voice_data_size = output_len; - return true; + printf("[@CHENG_DEBUG][%s][%d]: len1=%d,len2=%d\n", __FUNCTION__, __LINE__, data_buff_len, output_len); + //mmi_ai_talk_debug_info_write_to_file(BEI_KE_DEBUG_FILE, s_ai_talk_item_info.msg_voice_data_ptr, s_ai_talk_item_info.msg_voice_data_size); +#if 1 + char * info_buf = s_ai_talk_item_info.msg_voice_data_ptr; + uint32_t info_size = s_ai_talk_item_info.msg_voice_data_size; + { + lv_fs_file_t file_p; + lv_fs_res_t res; + uint32_t bytes_write = 0; + + res = lv_fs_open(&file_p, "C:/bei_ke_debug.wav", LV_FS_MODE_WR | LV_FS_MODE_APPEND); + if(LV_FS_RES_OK != res) + { + printf("[@CHENG_DEBUG][%s][%d]: errno=%d\n", __FUNCTION__, __LINE__, res); + lv_fs_close(&file_p); + return false; + } + + res = lv_fs_write(&file_p, info_buf, info_size, &bytes_write); + lv_fs_close(&file_p); + if(LV_FS_RES_OK != res) + { + printf("[@CHENG_DEBUG][%s][%d]: errno=%d\n", __FUNCTION__, __LINE__, res); + return false; + } + printf("[@CHENG_DEBUG][%s][%d]: file_size=%d,write_size=%d\n", __FUNCTION__, __LINE__, info_size, bytes_write); + + return true; + } #endif + + + Hal_Tone_Play_Onetime((uint32_t *)s_ai_talk_item_info.msg_voice_data_ptr, + s_ai_talk_item_info.msg_voice_data_size, + query_current_volume(), + mmi_ai_talk_tts_info_result_play_over_cb, + NULL); + + + return true; } bool mmi_ai_talk_send_to_server(void) @@ -444,8 +453,6 @@ bool mmi_ai_talk_send_to_server(void) return false; } -#if 20 - printf("[@CHENG_DEBUG][%s][%d]: size=%d, buf=0x%x\n", __FUNCTION__, __LINE__, ext->record_size, ext->record_buffer); uint32_t file_size = ext->record_size - s_ai_talk_recording_sent_size; @@ -476,82 +483,6 @@ bool mmi_ai_talk_send_to_server(void) lv_mem_free(file_buf); s_ai_talk_recording_sent_size = 0; -#else - -#if 10 - printf("[@CHENG_DEBUG][%s][%d]: size=%d, buf=0x%x\n", __FUNCTION__, __LINE__, ext->record_size, ext->record_buffer); - - uint32_t file_size = ext->record_size; - char * file_buf = lv_mem_alloc(file_size + 1); - if(NULL == file_buf || MMI_AI_TALK_DATA_WAV_HEAD_SIZE >= file_size) - { - printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - - lv_mem_free(ext->record_buffer); - ext->record_buffer = NULL; - ext->record_size = 0; - return false; - } - _lv_memset_00(file_buf, file_size + 1); - _lv_memcpy(file_buf, ext->record_buffer, file_size); - - lv_mem_free(ext->record_buffer); - ext->record_buffer = NULL; - -#else - - lv_mem_free(ext->record_buffer); - ext->record_buffer = NULL; - - - lv_fs_file_t file_p; - lv_fs_res_t res; - uint32_t file_size = 0, bytes_read = 0; - char * file_buf = NULL; - - res = lv_fs_open(&file_p, "C:/111.pcm", LV_FS_MODE_RD); - if(LV_FS_RES_OK != res) - { - printf("[@CHENG_DEBUG][%s][%d]: errno=%d\n", __FUNCTION__, __LINE__, res); - lv_fs_close(&file_p); - return false; - } - - lv_fs_size(&file_p, &file_size); - file_buf = (char *)lv_mem_alloc(file_size + 1); - _lv_memset_00(file_buf, file_size + 1); - res = lv_fs_read(&file_p, file_buf, file_size, &bytes_read); - lv_fs_close(&file_p); - if(LV_FS_RES_OK != res) - { - printf("[@CHENG_DEBUG][%s][%d]: errno=%d\n", __FUNCTION__, __LINE__, res); - lv_mem_free(file_buf); - return false; - } - printf("[@CHENG_DEBUG][%s][%d]: %d,%d,%s\n", __FUNCTION__, __LINE__, file_size, bytes_read, file_buf); - -#endif - - - - if(true == mmi_ai_talk_item_info_write_to_file(s_ai_talk_item_info.msg_data_full_file_name, file_buf, file_size)) - { - if(true == mmi_ai_talk_audio_data_send(file_buf, file_size)) - { - s_ai_talk_item_info.msg_data_size = file_size; - mmi_ai_talk_info_new_item_add(&s_ai_talk_item_info); - result = true; - } - else - { - lv_fs_remove(s_ai_talk_item_info.msg_data_full_file_name); - } - } - - lv_mem_free(file_buf); - _lv_memset_00(&s_ai_talk_item_info, sizeof(mmi_ai_talk_msg_item_info_t)); -#endif - return result; } @@ -1009,6 +940,9 @@ void mmi_ai_talk_record_button_event_cb(lv_obj_t * obj, lv_event_t e) return; } + // free resource + mmi_ai_talk_data_receive_resource_clean(); + mmi_ai_talk_list_set_slide_enable(&ext->old_ext, false); /*prevent to slide out while recording*/ mmi_ai_talk_recording_screen_create(NULL); } @@ -1131,522 +1065,43 @@ void mmi_ai_talk_list_msg_item_style_reset(lv_ai_talk_ext_t * ext) lv_style_reset(&(list_page_ext->style_label_len_other)); } -void mmi_ai_talk_list_msg_item_time(char * time_str, hal_rtc_t * cur_time, hal_rtc_t * msg_time, hal_rtc_t * last_msg_time) -{ - 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, - msg_time->tm_hour, msg_time->tm_min); - - return; - } - - uint32_t msg_sec = time_to_seconds(msg_time); - uint32_t last_msg_sec = time_to_seconds(last_msg_time); - if(msg_sec < last_msg_sec) - { - sprintf(time_str, "%d/%d/%d %02d:%02d", msg_time->tm_year, msg_time->tm_mon, - msg_time->tm_mday, msg_time->tm_hour, msg_time->tm_min); - } - else if(msg_sec > (last_msg_sec + MMI_AI_TALK_CHAT_TIME_INTERVAL)) - { - uint32_t cur_sec = time_to_seconds(cur_time); - if((msg_sec > cur_sec) || (msg_time->tm_year < cur_time->tm_year)) - { - sprintf(time_str, "%d/%d/%d %02d:%02d", msg_time->tm_year, msg_time->tm_mon, - msg_time->tm_mday, msg_time->tm_hour, msg_time->tm_min); - } - else - { - uint32_t today_sec = cur_sec - cur_time->tm_hour * 3600 - cur_time->tm_min * 60 - cur_time->tm_sec; - - if(msg_sec >= today_sec) - { - /*today*/ - sprintf(time_str, "%02d:%02d", msg_time->tm_hour, msg_time->tm_min); - } - else if(msg_sec >= (today_sec - 24 * 3600)) - { - /*yesterday*/ - const char * yesterday = lv_lang_get_text(WATCH_TEXT_ID_YESTERDAY); - - sprintf(time_str, "%s %02d:%02d", yesterday, msg_time->tm_hour, msg_time->tm_min); - } - else - { - uint8_t wday; - if(0 == cur_time->tm_wday) - { - /*today is Sunday*/ - wday = 6; - } - else - { - wday = cur_time->tm_wday - 1; - } - /*the start of a week is monday, the end is sunday*/ - if(msg_sec >= (today_sec - wday * 24 * 3600)) { - /*current week before yesterday*/ - const char * wday_str; - switch(rtc_calc_weekday(msg_time)) - { - case 1: - /*Monday*/ - wday_str = lv_lang_get_text(WATCH_TEXT_ID_MONDAY); - break; - case 2: - /*Tuesday*/ - wday_str = lv_lang_get_text(WATCH_TEXT_ID_TUESDAY); - break; - case 3: - /*Wednesday*/ - wday_str = lv_lang_get_text(WATCH_TEXT_ID_WEDNESDAY); - break; - case 4: - /*Thursday*/ - wday_str = lv_lang_get_text(WATCH_TEXT_ID_THURSDAY); - break; - case 5: - /*Friday*/ - wday_str = lv_lang_get_text(WATCH_TEXT_ID_FRIDAY); - break; - default: - printf("%s: week error\n", __FUNCTION__); - break; - } - - sprintf(time_str, "%s %02d:%02d", wday_str, msg_time->tm_hour, msg_time->tm_min); - } - else - { - sprintf(time_str, "%d/%d %02d:%02d", msg_time->tm_mon, msg_time->tm_mday, msg_time->tm_hour, msg_time->tm_min); - } - } - } - } -#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); - - printf("[@CHENG_DEBUG][%s][%d]: msg_from=%d\n", __FUNCTION__, __LINE__, msg_from); - - switch(s_ai_talk_play_anim_count % 3) - { - case 0: - lv_img_set_src(play_img, ((0 == msg_from) ? ICON_WECHAT_MY_VOICE_ITEM_PLAYING1 : ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING1)); - break; - - case 1: - lv_img_set_src(play_img, ((0 == msg_from) ? ICON_WECHAT_MY_VOICE_ITEM_PLAYING2 : ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING2)); - break; - - case 2: - lv_img_set_src(play_img, ((0 == msg_from) ? ICON_WECHAT_MY_VOICE_ITEM_PLAYING3 : ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING3)); - break; - - default: - 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()) - { - printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - return; - } - } - else if(AUDIO_CTRL_PRIORITY_5 > priority) - { - 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); - } - } -#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); - - lv_ai_talk_list_ext_t * list_page_ext = (lv_ai_talk_list_ext_t *)para; - if(NULL == list_page_ext || NULL == list_page_ext->voice_playing_anim.var) - { - printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - 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); - - lv_anim_init(a); - lv_anim_set_var(a, play_img); - lv_anim_set_start_cb(a, (lv_anim_ready_cb_t)mmi_ai_talk_list_voice_item_playing_anim_cb); - lv_anim_set_repeat_count(a, LV_ANIM_REPEAT_INFINITE); - lv_anim_set_time(a, 400); - lv_anim_start(a); - s_ai_talk_play_anim_count = 1; - - 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) - { - lv_obj_del(unread_img); - unread_img = NULL; - } - list_page_ext->voice_playing_msg_from = msg_item->msg_from; - - //play voice - if(AUDIO_CTRL_PRIORITY_5 == Hal_Audio_Manage_Start_Req(AUDIO_CTRL_PRIORITY_5, mmi_ai_talk_list_voice_item_playing_audio_ctrl_callback)) - { - 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; - - s_ai_talk_selected_item_index = list_item_ext->item_index; - - lv_obj_t * scrl = lv_obj_get_parent(cont); - lv_obj_t * list_page = lv_obj_get_parent(scrl); - //lv_obj_t * scrl = lv_page_get_scrl(list_page); - - lv_ai_talk_list_ext_t * list_page_ext = (lv_ai_talk_list_ext_t *)lv_obj_get_ext_attr(list_page); - if(NULL == list_page_ext) - return; - - if(LV_EVENT_PRESSED == e) - { - list_page_ext->pressing = true; - } - else if((LV_EVENT_LONG_PRESSED == e) && (true == list_page_ext->pressing)) // delete msg item - { - list_page_ext->pressing = false; - - mmi_ai_talk_list_msg_item_delete_create(); - } - else if((LV_EVENT_CLICKED == e) && (true == list_page_ext->pressing)) // playing voice msg - { - list_page_ext->pressing = false; - - 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) - { - if(NULL != list_page_ext->voice_playing_anim.var) // exist voice playing - { - printf("[@CHENG_DEBUG][%s][%d]: index=%d\n", __FUNCTION__, __LINE__, list_item_ext->item_index); - - //stop item voice - Hal_File_Play_End(); - Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_5); - mmi_ai_talk_voice_item_reset_play_state(list_page_ext); - } - else if(NULL != msg_item->msg_data_full_file_name) - { - printf("[@CHENG_DEBUG][%s][%d]: index=%d\n", __FUNCTION__, __LINE__, list_item_ext->item_index); - - lv_obj_t * play_img = lv_obj_get_child_back(cont, NULL); - mmi_ai_talk_list_voice_item_play_action(list_page_ext, play_img, ((1 == msg_item->unread_flag) ? list_item_ext->unread_img : NULL)); - } - } - } -#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; - - s_ai_talk_selected_item_index = list_item_ext->item_index; - - lv_obj_t * scrl = lv_obj_get_parent(cont); - lv_obj_t * list_page = lv_obj_get_parent(scrl); - //lv_obj_t * scrl = lv_page_get_scrl(list_page); - - lv_ai_talk_list_ext_t * list_page_ext = (lv_ai_talk_list_ext_t *)lv_obj_get_ext_attr(list_page); - if(NULL == list_page_ext) - return; - - if(LV_EVENT_PRESSED == e) - { - list_page_ext->pressing = true; - } - else if((LV_EVENT_LONG_PRESSED == e) && (true == list_page_ext->pressing)) // delete msg item - { - list_page_ext->pressing = false; - - mmi_ai_talk_list_msg_item_delete_create(); - } - else if((LV_EVENT_CLICKED == e) && (true == list_page_ext->pressing)) // display text msg - { - list_page_ext->pressing = false; - } -#endif -} - //display time & content 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__); lv_obj_t * obj = NULL; - lv_ai_talk_list_item_ext_t * list_item_ext = NULL; lv_ai_talk_list_ext_t * list_page_ext = lv_obj_get_ext_attr(list_page); 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; - #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); - } - else - { - obj_y = lv_obj_get_style_pad_top(scrl, LV_STATE_DEFAULT); - } - - if(0 != strlen(time_str)) - { - obj = lv_label_create(list_page, NULL); - - //lv_obj_set_base_dir(obj, LV_BIDI_DIR_LTR); - lv_label_set_text(obj, time_str); - lv_obj_add_style(obj, LV_LABEL_PART_MAIN, &list_page_ext->style_label_time); - lv_obj_align(obj, scrl, LV_ALIGN_IN_TOP_MID, 0, obj_y); - - last_obj = 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); - } - - 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); - 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; - lv_obj_set_size(obj, LV_HOR_RES * 2 / 3, 50); - lv_cont_set_fit4(obj, LV_FIT_NONE, LV_FIT_NONE, LV_FIT_NONE, LV_FIT_TIGHT); - - lv_obj_t * play_img = lv_img_create(obj, NULL); - lv_obj_t * len_label = lv_label_create(obj, NULL); - uint32_t duration = 0; - - if(LV_FS_RES_OK != Hal_File_Get_AudioDurationTime((const char *)msg_item->msg_data_full_file_name, &duration)) - { - printf("[@CHENG_DEBUG][%s][%d]: read file error. %s\n", __FUNCTION__, __LINE__, msg_item->msg_data_full_file_name); - } - else - { - duration = (duration + 999) / 1000; - } - - if(0 == duration) - { - /*invalid voice*/ - lv_img_set_src(play_img, ICON_WECHAT_VOICE_ITEM_DAMAGE); - lv_label_set_text(len_label, ""); - } - else - { - char len_str[8] = {0}; - - if(MMI_AI_TALK_DATA_RECORD_DURATION_MAX < duration) - duration = MMI_AI_TALK_DATA_RECORD_DURATION_MAX; - - sprintf(len_str, "%d\"", duration); - lv_label_set_text(len_label, len_str); - } - - if(0 == msg_item->msg_from) // msg from slef - { - lv_obj_add_style(len_label, LV_LABEL_PART_MAIN, &list_page_ext->style_label_len_self); - //lv_img_set_src(obj, ICON_WECHAT_MY_VOICE_ITEM_BG); - lv_obj_add_style(obj, LV_CONT_PART_MAIN, &(list_page_ext->style_cont_self)); - lv_obj_align(obj, scrl, LV_ALIGN_IN_TOP_RIGHT, -10, obj_y); - if(0 < duration) - { - lv_img_set_src(play_img, ICON_WECHAT_MY_VOICE_ITEM_PLAYING3); - } - lv_obj_align(play_img, obj, LV_ALIGN_IN_LEFT_MID, 15, 0); - lv_obj_align(len_label, play_img, LV_ALIGN_OUT_RIGHT_MID, 10, 0); - lv_obj_del(unread_img); - } - else // msg from other - { - lv_obj_add_style(len_label, LV_LABEL_PART_MAIN, &list_page_ext->style_label_len_other); - //lv_img_set_src(obj, ICON_WECHAT_OTHER_VOICE_ITEM_BG); - lv_obj_add_style(obj, LV_CONT_PART_MAIN, &(list_page_ext->style_cont_other)); - lv_obj_align(obj, scrl, LV_ALIGN_IN_TOP_LEFT, 10, obj_y); - if(0 < duration) - { - lv_img_set_src(play_img, ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING3); - } - lv_obj_align(play_img, obj, LV_ALIGN_IN_RIGHT_MID, -15, 0); - lv_obj_align(len_label, play_img, LV_ALIGN_OUT_LEFT_MID, -10, 0); - if(1 == msg_item->unread_flag) - { - lv_img_set_src(unread_img, ICON_WECHAT_UNREAD_FLAG); - lv_obj_align(unread_img, obj, LV_ALIGN_OUT_RIGHT_MID, 5, 0); - list_item_ext->unread_img = unread_img; - } - else - { - lv_obj_del(unread_img); - } - } - - lv_obj_set_click(obj, true); - lv_obj_set_event_cb(obj, mmi_ai_talk_list_voice_item_event_cb); - 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); - #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); - //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_align(obj, scrl, LV_ALIGN_IN_TOP_MID, 0, obj_y); - #else - 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_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; - char * file_buf = NULL; - - res = lv_fs_open(&file_p, msg_item->msg_data_full_file_name, LV_FS_MODE_RD); - if(LV_FS_RES_OK != res) - { - printf("[@CHENG_DEBUG][%s][%d]: errno=%d\n", __FUNCTION__, __LINE__, res); - lv_fs_close(&file_p); - break; - } - - lv_fs_size(&file_p, &file_size); - file_buf = (char *)lv_mem_alloc(file_size + 1); - _lv_memset_00(file_buf, file_size + 1); - res = lv_fs_read(&file_p, file_buf, file_size, &bytes_read); - lv_fs_close(&file_p); - if(LV_FS_RES_OK != res) - { - printf("[@CHENG_DEBUG][%s][%d]: errno=%d\n", __FUNCTION__, __LINE__, res); - lv_mem_free(file_buf); - 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)); - 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, 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); - break; - - case WECHAT_MSG_TYPE_EXPRESSION: - case WECHAT_MSG_TYPE_IMAGE: - #if 0 - obj = lv_img_create(list, NULL); - - lv_watch_obj_add_element(obj); - #endif - break; - - default: - break; - } + printf("[@CHENG_DEBUG][%s][%d]: obj_y=%d,size=%d,buf=0x%x\n", __FUNCTION__, __LINE__, + obj_y, msg_item->msg_data_size, msg_item->msg_data_ptr); + + obj = lv_cont_create(list_page, NULL); + 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); + //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_align(obj, scrl, LV_ALIGN_IN_TOP_MID, 0, obj_y); + + uint32_t file_size = msg_item->msg_data_size; + char * file_buf = msg_item->msg_data_ptr; + + 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_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, obj, LV_ALIGN_IN_LEFT_MID, 10, 0); + + lv_obj_set_click(obj, false); + 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); return obj; } @@ -1742,31 +1197,8 @@ void mmi_ai_talk_list_create(lv_obj_t * obj, lv_ai_talk_ext_t * ext) 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}; - - Hal_Rtc_Gettime(&cur_time); - for(i = 0; i < msg_count; i++) - { - printf("[@CHENG_DEBUG][%s][%d]: i=%d, msg_count=%d\n", __FUNCTION__, __LINE__, i, msg_count); - - char time_str[32] = {0}; - 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)); - mmi_ai_talk_list_msg_item_time(time_str, &cur_time, &msg_time, &last_msg_item_time); - _lv_memcpy(&last_msg_item_time, &(msg_item->msg_time), sizeof(hal_rtc_t)); - - 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)) { @@ -1909,21 +1341,6 @@ lv_obj_t * mmi_ai_talk_create(lv_obj_t * activity_obj) return obj; } -/* - else if(true != mmi_watch_tcp_connect_state_get() - || true != mmi_protocol_watch_bind_state_get() - ) - { - // not bind - lv_obj_t * label = lv_label_create(cont, NULL); - lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font26_black); - lv_label_set_text_id(label, WATCH_TEXT_ID_DEVICE_NOT_BIND); - lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); - lv_obj_align(label, cont, LV_ALIGN_CENTER, 0, -10); - - return obj; - } -*/ //create no msg label ext->label_no_msg = lv_label_create(cont, 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 7022e716..7d544da8 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 @@ -23,7 +23,7 @@ extern "C" { //#define MMI_AI_TALK_DATA_RECORD_DURATION_MAX (15) // seconds //#define MMI_AI_TALK_DATA_RECORD_SIZE_MAX (MMI_AI_TALK_DATA_RECORD_DURATION_MAX * HAL_AMR_BUFSIZE_PER_SECOND + MMI_AI_TALK_DATA_AMR_HEAD_SIZE) #define MMI_AI_TALK_DATA_WAV_HEAD_SIZE (44) -#define MMI_AI_TALK_DATA_RECORD_DURATION_MAX (10) // seconds +#define MMI_AI_TALK_DATA_RECORD_DURATION_MAX (8) // seconds #define MMI_AI_TALK_DATA_RECORD_SIZE_MAX (MMI_AI_TALK_DATA_RECORD_DURATION_MAX * 16000 + MMI_AI_TALK_DATA_WAV_HEAD_SIZE) #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*/ @@ -38,9 +38,11 @@ typedef struct //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; + //nv_wechat_msg_type_e msg_type; uint32_t msg_data_size; void * msg_data_ptr; + uint32_t msg_voice_data_size; + void * msg_voice_data_ptr; //char msg_data_full_file_name[MMI_AI_TALK_DATA_FILE_NAME_MAX]; } mmi_ai_talk_msg_item_info_t; 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 5619b81e..5f7c68c2 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 @@ -9,6 +9,10 @@ #include "hal/dm/cJSON.h" +// for debug +// #define MMI_AI_TALK_DEBUG_TO_FILE + + static void * s_ai_talk_send_space_ptr[MMI_AI_TALK_ACTION_MAX] = {NULL}; static uint32_t s_ai_talk_send_space_size[MMI_AI_TALK_ACTION_MAX] = {0}; @@ -65,8 +69,8 @@ static bool mm_ai_talk_send_action(MMI_AI_TALK_ACTION_CMD_E action_cmd, unsigned } -// signatureÉú³ÉÂß¼­£º¶Ôsecret_idºÍtimestampÒÔ¡°&&¡±½øÐÐÆ´½Ó³É×Ö·û´®£¬ÔÚÒÔhmacsha1Ϊ¼ÓÃÜ·½·¨£¬ -// ÒÔapi_keyΪhmacsha1µÄkey¶ÔÉÏÃæÆ´½Ó¶ø³ÉµÄ×Ö·û´®½øÐмÓÃܼ´¿ÉµÃ¡£ +// signature�����߼�����secret_id��timestamp�ԡ�&&������ƴ�ӳ��ַ���������hmacsha1Ϊ���ܷ����� +// ��api_keyΪhmacsha1��key������ƴ�Ӷ��ɵ��ַ������м��ܼ��ɵá� bool mm_ai_talk_login_action(void) { return false; @@ -156,9 +160,14 @@ void mmi_ai_talk_audio_data_send_end_char(void) +#ifdef MMI_AI_TALK_DEBUG_TO_FILE #define BEI_KE_RECEIVE_FILE "C:/bei_ke.txt" #define BEI_KE_RECEIVE_TEXT_FILE "C:/bei_ke_result.txt" -bool mmi_receive_info_write_to_file(char * path, char * info_buf, uint32_t info_size) +#define BEI_KE_RECEIVE_TTS_INFO_FILE "C:/bei_ke_tts_info.txt" +#define BEI_KE_RECEIVE_TTS_AUDIO_JSON_FILE "C:/bei_ke_tts_audio_json.txt" +#define BEI_KE_RECEIVE_TTS_AUDIO_TEMP_FILE "C:/bei_ke_tts_audio_temp.txt" +#define BEI_KE_RECEIVE_TTS_AUDIO_TOTAL_FILE "C:/bei_ke_tts_audio_total.txt" +bool mmi_ai_talk_receive_info_write_to_file(char * path, char * info_buf, uint32_t info_size) { lv_fs_file_t file_p; lv_fs_res_t res; @@ -204,125 +213,354 @@ bool mmi_receive_info_write_to_file(char * path, char * info_buf, uint32_t info_ return true; } +#endif + +/* +[20231103_093424]{"status":"ok","msg":"The connection was successful","meeting_id":"1ee79e91-e621-6781-86f5-4be19df63f36","type":"start"} +[20231103_093429]{"is_final":0,"results":"����","status":"ok","timestamp":{"end":1450,"start":730},"type":"real_asr"} +[20231103_093429]{"is_final":1,"results":"��������","status":"ok","timestamp":{"end":1900,"start":730},"type":"real_asr"} +[20231103_093430]{"is_final":0,"results":"��������","status":"ok","timestamp":{"end":1900,"start":730},"type":"real_asr"} +[20231103_093435]{"type":"model_answer","status":"ok","answer_id":"1698975269631t", +"answer":"��Ǹ�����޷��ش�������⡣���޷���֪��ǰ�����������","question":"��������"} +*/ -#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") +#define VALUE_TYPE_START ("start") +#define VALUE_TYPE_TEXT ("real_asr") +#define VALUE_TYPE_ANSWER ("model_answer") +#define VALUE_TYPE_TTS ("tts_info") -bool mmi_ai_talk_data_receive(unsigned char * next_buff, unsigned int next_buff_len) -{ - bool result = false; - cJSON * json_root = NULL; - if(NULL == next_buff || 0 == next_buff_len) - { - printf("[@CHENG_DEBUG][%s][%d]: no data\n", __FUNCTION__, __LINE__); - goto exit_free_res; - } +#define KEY_TYPE_START_RESULT ("status") +#define VALUE_TYPE_START_RESULT ("ok") +#define KEY_TYPE_TEXT_RESULT ("is_final") +#define VALUE_TYPE_TEXT_RESULT (1) + +#define KEY_TYPE_ANSWER_RESULT ("answer") + +#define KEY_TYPE_TTS_RESULT ("audio") +#define KEY_TYPE_TTS_INDEX ("index") + + +static bool s_ai_talk_type_tts_info_recv_begin = false; +static bool s_ai_talk_type_tts_info_recv_end = false; +static char * s_ai_talk_type_tts_info_ptr = NULL; +static uint32_t s_ai_talk_type_tts_info_size = 0; +static char * s_ai_talk_type_tts_info_json_ptr = NULL; +static char * s_ai_talk_type_tts_info_audio_ptr = NULL; +static uint32_t s_ai_talk_type_tts_info_audio_size = 0; + +void mmi_ai_talk_data_receive_resource_clean(void) +{ + s_ai_talk_type_tts_info_recv_begin = false; + s_ai_talk_type_tts_info_recv_end = false; - // 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) + if(NULL != s_ai_talk_type_tts_info_ptr) { - printf("[@CHENG_DEBUG][%s][%d]: not in ai talk\n", __FUNCTION__, __LINE__); - goto exit_free_res; + lv_mem_free(s_ai_talk_type_tts_info_ptr); + s_ai_talk_type_tts_info_ptr = NULL; } + s_ai_talk_type_tts_info_size = 0; - - json_root = cJSON_Parse(next_buff); - if(NULL == json_root) + if(NULL != s_ai_talk_type_tts_info_json_ptr) { - printf("[@CHENG_DEBUG][%s][%d]: json parse error\n", __FUNCTION__, __LINE__); - goto exit_free_res; - } - //Hal_Mem_Free(next_buff); - //next_buff = NULL; + lv_mem_free(s_ai_talk_type_tts_info_json_ptr); + s_ai_talk_type_tts_info_json_ptr = NULL; + } + if(NULL != s_ai_talk_type_tts_info_audio_ptr) + { + lv_mem_free(s_ai_talk_type_tts_info_audio_ptr); + s_ai_talk_type_tts_info_audio_ptr = NULL; + } + s_ai_talk_type_tts_info_audio_size = 0; +} -#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) +bool mmi_ai_talk_not_type_tts_info_data_processing(unsigned char * next_buff, unsigned int next_buff_len, cJSON * json_root) +{ + json_root = cJSON_Parse(next_buff); + if(NULL != json_root) { - printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - goto exit_free_res; + printf("[@CHENG_DEBUG][%s][%d]: json file\n", __FUNCTION__, __LINE__); + + char * value_type_str = cJSON_GetStringValue(cJSON_GetObjectItem(json_root, KEY_TYPE)); + if(0 == strncmp(value_type_str, VALUE_TYPE_START, strlen(VALUE_TYPE_START))) + { + // {"status":"ok","msg":"The connection was successful","meeting_id":"1ee79e91-e621-6781-86f5-4be19df63f36","type":"start"} + printf("[@CHENG_DEBUG][%s][%d]: connect message\n", __FUNCTION__, __LINE__); + return false; + } + else if(0 == strncmp(value_type_str, VALUE_TYPE_TEXT, strlen(VALUE_TYPE_TEXT))) + { + // {"is_final":0,"results":"����ԭ�ϲ�","status":"ok","timestamp":{"end":2200,"start":730},"type":"real_asr"} + // {"is_final":1,"results":"����ԭ�ϲ�","status":"ok","timestamp":{"end":2200,"start":730},"type":"real_asr"} + printf("[@CHENG_DEBUG][%s][%d]: convert text\n", __FUNCTION__, __LINE__); + return false; + } + else if(0 == strncmp(value_type_str, VALUE_TYPE_ANSWER, strlen(VALUE_TYPE_ANSWER))) + { + // {"type":"model_answer","status":"ok","answer_id":"1698890526941t","answer":"����ԭ�ϲݣ�һ��һ���١�\nҰ���ղ��������紵������\nԶ���ֹŵ������ӻijǡ�\n��������ȥ�����������顣","question":"����ԭ�ϲ�"} + printf("[@CHENG_DEBUG][%s][%d]: model_answer\n", __FUNCTION__, __LINE__); + char * value_type_answer_result_str = cJSON_GetStringValue(cJSON_GetObjectItem(json_root, KEY_TYPE_ANSWER_RESULT)); + if(NULL == value_type_answer_result_str) + { + printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + return false; + } + uint32_t answer_result_str_len = strlen(value_type_answer_result_str); + mmi_ai_talk_model_answer_result_display(value_type_answer_result_str, answer_result_str_len); + + s_ai_talk_type_tts_info_recv_begin = true; + } } + else + { + printf("[@CHENG_DEBUG][%s][%d]: not json file\n", __FUNCTION__, __LINE__); + return false; + } + + return true; +} - type_real_asr = cJSON_GetStringValue(cJSON_GetObjectItem(json_root, KEY_TYPE)); - if(NULL == type_real_asr) +bool mmi_ai_talk_type_tts_info_data_store(unsigned char * next_buff, unsigned int next_buff_len) +{ + if(NULL == s_ai_talk_type_tts_info_ptr) { - printf("[@CHENG_DEBUG][%s][%d]: get type fail\n", __FUNCTION__, __LINE__); - goto exit_free_res; + printf("[@CHENG_DEBUG][%s][%d]: \n",__FUNCTION__,__LINE__); + + s_ai_talk_type_tts_info_ptr = lv_mem_alloc(next_buff_len + 1); + if(NULL == s_ai_talk_type_tts_info_ptr) + { + printf("[@CHENG_DEBUG][%s][%d]: memory alloc fail\n", __FUNCTION__, __LINE__); + return false; + } + _lv_memset_00(s_ai_talk_type_tts_info_ptr, next_buff_len + 1); + _lv_memcpy(s_ai_talk_type_tts_info_ptr, next_buff, next_buff_len); + s_ai_talk_type_tts_info_size = next_buff_len; } - if(0 != strncmp(type_real_asr, VALUE_REAL_ASR, strlen(VALUE_REAL_ASR))) + else { - printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - goto exit_free_res; + printf("[@CHENG_DEBUG][%s][%d]: \n",__FUNCTION__,__LINE__); + + s_ai_talk_type_tts_info_ptr = lv_mem_realloc(s_ai_talk_type_tts_info_ptr, s_ai_talk_type_tts_info_size + next_buff_len + 1); + if(NULL == s_ai_talk_type_tts_info_ptr) + { + printf("[@CHENG_DEBUG][%s][%d]: memory realloc fail\n", __FUNCTION__, __LINE__); + return false; + } + _lv_memset_00(s_ai_talk_type_tts_info_ptr + s_ai_talk_type_tts_info_size, next_buff_len + 1); + _lv_memcpy(s_ai_talk_type_tts_info_ptr + s_ai_talk_type_tts_info_size, next_buff, next_buff_len); + s_ai_talk_type_tts_info_size += next_buff_len; } + + return true; +} + +bool mmi_ai_talk_type_tts_info_data_parse(cJSON * json_type_tts) +{ + char t_left_brace = '{'; + char t_right_brace = '}'; + char * t_start_ptr = NULL; + char * t_end_ptr = NULL; + uint32_t t_offset = 0; + char * t_head_ptr = NULL; + + printf("[@CHENG_DEBUG][%s][%d]: total_size=%d\n", __FUNCTION__, __LINE__, s_ai_talk_type_tts_info_size); + + t_head_ptr = s_ai_talk_type_tts_info_ptr; + while(1) + { + if(s_ai_talk_type_tts_info_size <= (t_head_ptr - s_ai_talk_type_tts_info_ptr)) + { + printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + return false; + } + + t_start_ptr = strchr(t_head_ptr, t_left_brace); + t_end_ptr = strchr(t_head_ptr, t_right_brace); + t_offset = t_end_ptr - t_start_ptr + 1; + t_head_ptr += t_offset; + + printf("[@CHENG_DEBUG][%s][%d]: head=0x%x,start=0x%x,end=0x%x,offset=%d\n", + __FUNCTION__, __LINE__, t_head_ptr, t_start_ptr, t_end_ptr, t_offset); + + if(NULL != s_ai_talk_type_tts_info_json_ptr) + { + lv_mem_free(s_ai_talk_type_tts_info_json_ptr); + s_ai_talk_type_tts_info_json_ptr = NULL; + } + s_ai_talk_type_tts_info_json_ptr = lv_mem_alloc(t_offset + 1); + if(NULL == s_ai_talk_type_tts_info_json_ptr) + { + printf("[@CHENG_DEBUG][%s][%d]: memory alloc fail\n", __FUNCTION__, __LINE__); + return false; + } + _lv_memset_00(s_ai_talk_type_tts_info_json_ptr, t_offset + 1); + _lv_memcpy(s_ai_talk_type_tts_info_json_ptr, t_start_ptr, t_offset); + + if(NULL != json_type_tts) + { + cJSON_Delete(json_type_tts); + json_type_tts = NULL; + } + json_type_tts = cJSON_Parse(s_ai_talk_type_tts_info_json_ptr); + if(NULL == json_type_tts) + { + printf("[@CHENG_DEBUG][%s][%d]: json parse fail\n", __FUNCTION__, __LINE__); + return false; + } - str_results = cJSON_GetStringValue(cJSON_GetObjectItem(json_root, KEY_RESULTS)); - if(NULL == str_results) + char * value_type_str = cJSON_GetStringValue(cJSON_GetObjectItem(json_type_tts, KEY_TYPE)); + if(0 != strncmp(value_type_str, VALUE_TYPE_TTS, strlen(VALUE_TYPE_TTS))) + { + printf("[@CHENG_DEBUG][%s][%d]: not tts info json\n", __FUNCTION__, __LINE__); + return false; + } + + int value_type_tts_index = cJSON_GetIntValue(cJSON_GetObjectItem(json_type_tts, KEY_TYPE_TTS_INDEX)); + if(0 > value_type_tts_index) + { + printf("[@CHENG_DEBUG][%s][%d]: tts info end flag\n", __FUNCTION__, __LINE__); + + #ifdef MMI_AI_TALK_DEBUG_TO_FILE + // write to file for debug + mmi_ai_talk_receive_info_write_to_file(BEI_KE_RECEIVE_TTS_AUDIO_TOTAL_FILE, s_ai_talk_type_tts_info_audio_ptr, s_ai_talk_type_tts_info_audio_size); + #endif + + mmi_ai_talk_tts_info_result_display(s_ai_talk_type_tts_info_audio_ptr, s_ai_talk_type_tts_info_audio_size); + + break; + } + else + { + printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + char * value_type_tts_result_str = cJSON_GetStringValue(cJSON_GetObjectItem(json_type_tts, KEY_TYPE_TTS_RESULT)); + uint32_t value_type_tts_result_len = strlen(value_type_tts_result_str); + + if(NULL == s_ai_talk_type_tts_info_audio_ptr) + { + s_ai_talk_type_tts_info_audio_ptr = lv_mem_alloc(value_type_tts_result_len + 1); + if(NULL == s_ai_talk_type_tts_info_audio_ptr) + { + printf("[@CHENG_DEBUG][%s][%d]: memory alloc fail\n", __FUNCTION__, __LINE__); + return false; + } + _lv_memset_00(s_ai_talk_type_tts_info_audio_ptr, value_type_tts_result_len + 1); + _lv_memcpy(s_ai_talk_type_tts_info_audio_ptr, value_type_tts_result_str, value_type_tts_result_len); + s_ai_talk_type_tts_info_audio_size = value_type_tts_result_len; + } + else + { + s_ai_talk_type_tts_info_audio_ptr = lv_mem_realloc(s_ai_talk_type_tts_info_audio_ptr, s_ai_talk_type_tts_info_audio_size + value_type_tts_result_len + 1); + if(NULL == s_ai_talk_type_tts_info_audio_ptr) + { + printf("[@CHENG_DEBUG][%s][%d]: memory realloc fail\n", __FUNCTION__, __LINE__); + return false; + } + _lv_memset_00(s_ai_talk_type_tts_info_audio_ptr + s_ai_talk_type_tts_info_audio_size, value_type_tts_result_len + 1); + _lv_memcpy(s_ai_talk_type_tts_info_audio_ptr + s_ai_talk_type_tts_info_audio_size, value_type_tts_result_str, value_type_tts_result_len); + s_ai_talk_type_tts_info_audio_size += value_type_tts_result_len; + } + } + } + + return true; +} + +bool mmi_ai_talk_type_tts_info_data_processing(unsigned char * next_buff, unsigned int next_buff_len, cJSON * json_type_tts) +{ + // {"answer_id":"1699511956918t","audio":"8f////D/5f8DA9QChwHe + // 7/1YfAQA7/1fAQ/D/5f8DAYADR/9q/+j/AfAQgDR/9/fAQD/5f8DAq/+j/Ag + // 6afA5QfAQ5/4U/C5CQQ=","index":0,"type":"tts_info"} + // {"answer_id":"1699511956918t","audio":"FgD7/1YADR/9q/+j/AgAlAA==","index":2,"type":"tts_info"} + // {"answer_id":"1699511956918t","audio":"","index":-1,"type":"tts_info"} + + printf("[@CHENG_DEBUG][%s][%d]: receive_size=%d\n", __FUNCTION__, __LINE__, next_buff_len); + + // search end flag + char * t_end_str = "\"index\":-1"; + if(NULL != strstr(next_buff, t_end_str)) + { + printf("[@CHENG_DEBUG][%s][%d]: \n",__FUNCTION__,__LINE__); + + s_ai_talk_type_tts_info_recv_end = true; + } + + // store type tts data + if(false == mmi_ai_talk_type_tts_info_data_store(next_buff, next_buff_len)) { printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - goto exit_free_res; + return false; } - str_results_len = strlen(str_results); - result = mmi_ai_talk_receive_from_server(str_results, str_results_len, WECHAT_MSG_TYPE_TEXT); -#endif + // parse type tts data + if(true == s_ai_talk_type_tts_info_recv_end) + { + if(false == mmi_ai_talk_type_tts_info_data_parse(json_type_tts)) + { + printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + return false; + } + } + + return true; +} -// {"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; +bool mmi_ai_talk_data_receive(unsigned char * next_buff, unsigned int next_buff_len) +{ + bool result = false; + cJSON * json_root = NULL; + cJSON * json_type_tts = NULL; - type_model_answer = cJSON_GetStringValue(cJSON_GetObjectItem(json_root, KEY_TYPE)); - if(NULL == type_model_answer) + if(NULL == next_buff || 0 == next_buff_len) { - printf("[@CHENG_DEBUG][%s][%d]: get type fail\n", __FUNCTION__, __LINE__); + printf("[@CHENG_DEBUG][%s][%d]: no data\n", __FUNCTION__, __LINE__); goto exit_free_res; } - if(0 != strncmp(type_model_answer, VALUE_MODEL_ANSWER, strlen(VALUE_MODEL_ANSWER))) + +#ifdef MMI_AI_TALK_DEBUG_TO_FILE + // write to file for debug + mmi_ai_talk_receive_info_write_to_file(BEI_KE_RECEIVE_FILE, next_buff, next_buff_len); +#endif + + lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_AI_TALK); + if(NULL == activity_obj) { - printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + printf("[@CHENG_DEBUG][%s][%d]: not in ai talk\n", __FUNCTION__, __LINE__); goto exit_free_res; } - str_answer = cJSON_GetStringValue(cJSON_GetObjectItem(json_root, KEY_ANSWER)); - if(NULL == str_answer) + if(false == s_ai_talk_type_tts_info_recv_begin) { - printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - goto exit_free_res; + result = mmi_ai_talk_not_type_tts_info_data_processing(next_buff, next_buff_len, json_root); + } + else + { + result = mmi_ai_talk_type_tts_info_data_processing(next_buff, next_buff_len, json_type_tts); } - 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) - //{ - // printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - // Hal_Mem_Free(next_buff); - // next_buff = NULL; - //} + if(NULL != s_ai_talk_type_tts_info_json_ptr) + { + lv_mem_free(s_ai_talk_type_tts_info_json_ptr); + s_ai_talk_type_tts_info_json_ptr = NULL; + } + + if(NULL != json_type_tts) + { + printf("[@CHENG_DEBUG][%s][%d]: free json type tts\n", __FUNCTION__, __LINE__); + cJSON_Delete(json_type_tts); + json_type_tts = NULL; + } if(NULL != json_root) { - printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + printf("[@CHENG_DEBUG][%s][%d]: free json root\n", __FUNCTION__, __LINE__); cJSON_Delete(json_root); json_root = NULL; } diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/bei_ke_rui_sheng_data.h b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/bei_ke_rui_sheng_data.h index c7757e96..ee5f3c7c 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/bei_ke_rui_sheng_data.h +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/bei_ke_rui_sheng_data.h @@ -31,6 +31,20 @@ typedef enum }MMI_AI_TALK_ACTION_CMD_E; +typedef enum +{ + MMI_AI_TALK_RECEIVE_TYPE_NONE, + + MMI_AI_TALK_RECEIVE_TYPE_START, + MMI_AI_TALK_RECEIVE_TYPE_TEXT, + MMI_AI_TALK_RECEIVE_TYPE_ANSWER, + MMI_AI_TALK_RECEIVE_TYPE_TTS, + + MMI_AI_TALK_RECEIVE_TYPE_MAX +}MMI_AI_TALK_RECEIVE_TYPE_E; + + + void mm_ai_talk_send_space_free(MMI_AI_TALK_ACTION_CMD_E action_cmd); void * mm_ai_talk_send_space_ptr_get(MMI_AI_TALK_ACTION_CMD_E action_cmd); uint32_t mm_ai_talk_send_space_size_get(MMI_AI_TALK_ACTION_CMD_E action_cmd); 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 0d9e1063..753f8ced 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 (10 * 1024) // (26 * 1024) +#define AI_TALK_RECEIVE_BUFF_LEN (16 * 1024) static mmi_ai_talk_tcp_info_t s_ai_talk_tcp_info = {0};