static bool mmi_ai_talk_is_waiting_for_result(void);
static void mmi_ai_talk_sending_screen_task_stop(void);
+uint8_t debug_type_ai_talk = 0;
static void mmi_ai_talk_receive_item_info_clean(void)
{
return false;
}
- if(false == mmi_ai_talk_is_waiting_for_result())
- {
- printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
- return false;
- }
+ // 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_sending_screen_task_stop();
if(NULL != s_ai_talk_item_info.msg_data_ptr)
{
s_ai_talk_item_info.msg_voice_data_size = 0;
}
+#define blockAlign_16 1
+int simplest_pcm16le_to_wave(void *pcm_str,int pcm_str_size)
+{
+ int i=0;
+ int x=0;
+ char buf_str[64]={0};
+ while (1)
+ {
+ i++;
+
+ char temp_str[16]={0};
+ if(i==14)
+ {
+ break;
+ }
+ switch (i)
+ {
+ case 1:
+ sprintf(buf_str,"%s","RIFF"); //4
+ x=4;
+ break;
+ case 2:
+ for(int i=0;i<4;i++)
+ {
+ char temp= (pcm_str_size+32)>>(8*i) & 0xff;
+ buf_str[x] = temp;
+ x++;
+ // sprintf(buf_str,"%s%c",buf_str,temp); //8
+ }
+
+ break;
+ case 3:
+ sprintf(temp_str,"%s","WAVE"); //12
+ _lv_memcpy(buf_str+x,temp_str,4);
+ x+=4;
+ break;
+ case 4:
+ sprintf(temp_str,"%s","fmt "); //16
+ _lv_memcpy(buf_str+x,temp_str,4);
+ x+=4;
+ break;
+ case 5:
+ sprintf(temp_str,"%c%c%c%c",0x10,0,0,0); // 20
+ _lv_memcpy(buf_str+x,temp_str,4);
+ x+=4;
+
+ break;
+ case 6:
+ sprintf(temp_str,"%c%c",1,0);//22
+ _lv_memcpy(buf_str+x,temp_str,2);
+ x+=2;
+ break;
+ case 7:
+ sprintf(temp_str,"%c%c",1,0);//24
+ _lv_memcpy(buf_str+x,temp_str,2);
+ x+=2;
+ break;
+ case 8:
+ sprintf(temp_str,"%c%c%c%c",0x40,0x1f,0x00,0x00);//28
+ _lv_memcpy(buf_str+x,temp_str,4);
+ x+=4;
+ break;
+ case 9:
+ #if blockAlign_16
+ sprintf(temp_str,"%c%c%c%c",0x80,0x3e,0x00,0x00);//每秒字节数32 3200
+ #else
+ sprintf(temp_str,"%c%c%c%c",0x40,0x1f,0x00,0x00);//28 16000
+ #endif
+
+ _lv_memcpy(buf_str+x,temp_str,4);
+ x+=4;
+ break;
+ case 10:
+ #if blockAlign_16
+ sprintf(temp_str,"%c%c",0x02,0x00);//每个采样比特数36
+ #else
+ sprintf(temp_str,"%c%c",0x01,0x00);//每个采样字节数32
+ #endif
+ _lv_memcpy(buf_str+x,temp_str,2);
+ x+=2;
+ break;
+ case 11:
+ #if blockAlign_16
+ sprintf(temp_str,"%c%c",0x10,0x00);//每个采样比特数36
+ #else
+ sprintf(temp_str,"%c%c",0x08,0x00);//每个采样比特数36
+ #endif
+ _lv_memcpy(buf_str+x,temp_str,2);
+ x+=2;
+ break;
+ case 12:
+ sprintf(temp_str,"%s","data");//40
+ _lv_memcpy(buf_str+x,temp_str,4);
+ x+=4;
+ break;
+ case 13:
+ for(int i=0;i<4;i++)
+ {
+ char temp= (pcm_str_size)>>(8*i) & 0xff;
+ buf_str[x] = temp;
+ x++;
+ }
+ break;
+ }
+ }
+
+ void * new_str=lv_mem_alloc(pcm_str_size +44+ + 1);
+ _lv_memset_00(new_str, pcm_str_size +44+ 1);
+ _lv_memcpy(new_str, buf_str, 44);
+ _lv_memcpy(new_str+44, s_ai_talk_item_info.msg_voice_data_ptr, pcm_str_size);
+
+ s_ai_talk_item_info.msg_voice_data_ptr = lv_mem_realloc(s_ai_talk_item_info.msg_voice_data_ptr, pcm_str_size+44+1);
+ _lv_memcpy(s_ai_talk_item_info.msg_voice_data_ptr,new_str,pcm_str_size + 44);
+ lv_mem_free(new_str);
+
+ #if 0
+ char * info_buf = "";
+ sprintf(info_buf,"测试次数 ");
+ uint32_t info_size = strlen(info_buf);
+ {
+ 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_17_06.txt", 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;
+ }
+ printf("[@CHENG_DEBUG][%s][%d]:\n", __FUNCTION__, __LINE__);
+ 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
+ return 0;
+}
+
+
bool mmi_ai_talk_tts_info_result_display(char * data_buff, int data_buff_len)
{
uint32_t output_len = 0;
return false;
}
_lv_memset_00(s_ai_talk_item_info.msg_voice_data_ptr, data_buff_len);
-
+ //mbedtls_base64_encode mbedtls_base64_decode
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;
-
+ simplest_pcm16le_to_wave(s_ai_talk_item_info.msg_voice_data_ptr,output_len);
+ s_ai_talk_item_info.msg_voice_data_size+=44;
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
uint8_t volume = 0;
#ifdef __MMI_USER_PROFILE_SUPPORT__
#else
volume = query_current_volume();
#endif
+ //Hal_NFFS_File_Play_Onetime("C:ai_take.wav",volume,mmi_ai_talk_tts_info_result_play_over_cb,NULL);
Hal_Tone_Play_Onetime((uint32_t *)s_ai_talk_item_info.msg_voice_data_ptr,
s_ai_talk_item_info.msg_voice_data_size,
volume,
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();
}
#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
-
+#define TIMEOUT_WAIT_FOR_RESULT_COUNT (16) // 500ms *3 + 500ms * 16
+#define TIMEOUT_GET_RESULT_FAIL_COUNT (21) // 500ms *3 + 500ms * 16 + 500ms * 3
+//static hal_rtc_t send_time;
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
+ if(1 < s_ai_talk_sending_screen_counter
&& TIMEOUT_WAIT_FOR_RESULT_COUNT > s_ai_talk_sending_screen_counter
)
{
result = true;
}
+ // hal_rtc_t cur_time = {0};
+ // Hal_Rtc_Gettime(&cur_time);
+ // if(send_time.)
return result;
}
sending_ext->sending_screen_task_id = NULL;
}
}
- s_ai_talk_sending_screen_counter = 0;
+
+ s_ai_talk_sending_screen_counter = -1;
}
void mmi_ai_talk_sending_screen_task_cb(lv_task_t * task)
mmi_ai_talk_audio_data_send_end_char();
break;
- case TIMEOUT_WAIT_FOR_RESULT_COUNT:
+ case 5:
lv_ai_talk_sending_ext_t * sending_ext = (lv_ai_talk_sending_ext_t *)(task->user_data);
+ lv_obj_set_hidden(sending_ext->gif_obj, false);
+ // lv_obj_t * img = lv_img_create(sending_ext, NULL);
+ // LV_ASSERT_MEM(img);
+ // lv_img_set_src(img, ICON_UPAY_BINDING);
+ // lv_obj_set_size(img, LV_HOR_RES, LV_VER_RES);
+ // lv_obj_align(img, sending_ext, LV_ALIGN_CENTER, 0, 0);
+
- lv_obj_set_hidden(sending_ext->label_sending, true);
- lv_obj_set_hidden(sending_ext->label_result, false);
+
+
+ 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:
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));
-
+ lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, lv_color_make(0x00, 0x00, 0x00));
+
+ lv_obj_t * img1 = lv_cont_create(obj, NULL);
+ gif_info_t * upay_binding_gif=gif_open(img1, ANIM_UPAY_BINDING, 0);
+ lv_obj_set_size(img1, 80, 80);
+ lv_obj_align(img1, NULL , LV_ALIGN_CENTER, 0, -20);
+ sending_ext->gif_obj=img1;
+ //lv_obj_set_hidden(sending_ext->gif_obj, true);
+
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_obj_add_style(sending_ext->label_sending, LV_LABEL_PART_MAIN, &lv_watch_font26);
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);
+ lv_obj_align(sending_ext->label_sending, NULL, LV_ALIGN_CENTER, 0, 45);
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_align(sending_ext->label_result, NULL, LV_ALIGN_CENTER, 0, 30);
lv_obj_set_hidden(sending_ext->label_sending, false);
lv_obj_set_hidden(sending_ext->label_result, true);
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));
+ lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, lv_color_make(0x00, 0x00, 0x00));
//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_time = lv_label_create(cont, NULL);
- lv_obj_add_style(label_time, LV_LABEL_PART_MAIN, &lv_watch_font26_black);
+ lv_obj_add_style(label_time, LV_LABEL_PART_MAIN, &lv_watch_font26);
const char * rel_snd = lv_lang_get_text(WATCH_TEXT_ID_AUDIO_RECORDING); // WATCH_TEXT_ID_RELEASE_SENDING);
uint8_t len = strlen(rel_snd) + 4;
char * text = (char *)lv_mem_alloc(len);
lv_img_set_src(img_release_snd, ICON_WECHAT_RECORD_BUTTON_PRESSED);
lv_obj_align(img_release_snd, cont, LV_ALIGN_IN_BOTTOM_MID, 0, -8);
+ lv_obj_t * img1 = lv_cont_create(obj, NULL);
+ gif_info_t * upay_binding_gif=gif_open(img1, ICON_AI_TALK_GIF, 0);
+ lv_obj_set_size(img1, 180, 40);
+ lv_obj_align(img1, NULL , LV_ALIGN_CENTER, 0, 10);
+
+
+
lv_anim_t a;
lv_anim_init(&a);
lv_anim_set_var(&a, label_time);
// free resource
mmi_ai_talk_data_receive_resource_clean();
+ mmi_ai_talk_receive_item_info_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);
}
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_coord_t obj_y = 0;
-
- obj_y = lv_obj_get_style_pad_inner(scrl, LV_STATE_DEFAULT);
- 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_y = lv_obj_get_style_pad_top(scrl, LV_STATE_DEFAULT);
+ printf("[@CHENG_DEBUG][%s][%d]: obj_y=%d,size=%d,debug_type_ai_talk%d\n", __FUNCTION__, __LINE__,
+ obj_y, msg_item->msg_data_size,debug_type_ai_talk);
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_obj_set_size(obj, LV_HOR_RES - 30-20, 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);
+ lv_obj_align(obj, scrl, LV_ALIGN_IN_TOP_MID, 0, obj_y+200);
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_align(label_text, LV_LABEL_ALIGN_LEFT);
lv_label_set_long_mode(label_text, LV_LABEL_LONG_BREAK);
lv_obj_set_width(label_text, lv_obj_get_width(obj) - 20);
+ if(file_buf==NULL)
+ {
+
+ file_buf="抱歉,网络异常 ";
+
+ }
+ // else if(debug_type_ai_talk<10 && debug_type_ai_talk>0)
+ // {
+ // file_buf[strlen(file_buf)]=debug_type_ai_talk;
+ // //strcat(file_buf,",语音未返回");
+
+ //}
+ debug_type_ai_talk=0;
+ //sprintf(file_buf,"%s,%d",file_buf,debug_type_ai_talk);
lv_label_set_text(label_text, file_buf);
- lv_obj_align(label_text, obj, LV_ALIGN_IN_LEFT_MID, 10, 0);
+ lv_obj_align(label_text, obj, LV_ALIGN_IN_LEFT_MID, 10, 10);
+
+
+ // free resource
+ //mmi_ai_talk_data_receive_resource_clean();
lv_obj_set_click(obj, false);
lv_obj_set_adv_hittest(obj, false);
if(NULL == ext)
return;
- lv_obj_set_size(list_page, lv_obj_get_width(obj), lv_obj_get_height(obj) - 5 - lv_obj_get_height(ext->img_record) - 8);
+ lv_obj_set_size(list_page, lv_obj_get_width(obj)-20, lv_obj_get_height(obj) - 5 - lv_obj_get_height(ext->img_record) - 58);
lv_page_set_scrollbar_mode(list_page, LV_SCROLLBAR_MODE_OFF);
lv_obj_set_style_local_bg_opa(list_page, LV_PAGE_PART_BG, LV_STATE_DEFAULT, LV_OPA_0);
lv_obj_set_style_local_border_opa(list_page, LV_PAGE_PART_BG, LV_STATE_DEFAULT, LV_OPA_0);
lv_obj_set_style_local_outline_width(list_page, LV_PAGE_PART_BG, LV_STATE_DEFAULT, 0);
- //lv_obj_set_style_local_pad_bottom(list_page, LV_PAGE_PART_SCROLLABLE, LV_STATE_DEFAULT, 4);
- //lv_obj_set_style_local_pad_top(list_page, LV_PAGE_PART_SCROLLABLE, LV_STATE_DEFAULT, 2);
- //lv_obj_set_style_local_pad_inner(list_page, LV_PAGE_PART_SCROLLABLE, LV_STATE_DEFAULT, 8);
- //lv_obj_set_style_local_bg_color(list_page, LV_PAGE_PART_SCROLLBAR, LV_STATE_DEFAULT, lv_color_make(16, 112, 194));
- //lv_obj_set_style_local_pad_inner(list_page, LV_PAGE_PART_SCROLLBAR, LV_STATE_DEFAULT, LV_DPI / 20);
- //lv_obj_set_style_local_pad_left(list_page, LV_PAGE_PART_SCROLLBAR, LV_STATE_DEFAULT, 0);
- //lv_obj_set_style_local_pad_right(list_page, LV_PAGE_PART_SCROLLBAR, LV_STATE_DEFAULT, 0);
- //lv_obj_set_style_local_radius(list_page, LV_PAGE_PART_SCROLLBAR, LV_STATE_DEFAULT, 0);
+ lv_obj_align(list_page, obj, LV_ALIGN_IN_TOP_MID, 0, 30);
+
+
+ // bool Signal_x=false;
+ // if(watch_modem_get_signal_bar_req()>3)
+ // {
+ // Signal_x=true;
+ // }
+ // lv_obj_t * signal = lv_btn_create(obj, obj);
+ // lv_obj_set_size(signal, 20, 20);
+ // if(Signal_x)
+ // {
+ // lv_obj_set_style_local_bg_color(signal, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0x47, 0xA6, 0xFF));
+ // }
+ // else
+ // {
+ // lv_obj_set_style_local_bg_color(signal, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xFF, 0x6F, 0x91));
+ // }
+
+ // lv_obj_set_style_local_radius(signal, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 30);
+ // lv_obj_align(signal, NULL, LV_ALIGN_IN_TOP_MID, -50, 20);
+
lv_page_set_scrl_layout(list_page, LV_LAYOUT_OFF);
lv_page_set_scrollable_fit2(list_page, LV_FIT_NONE, LV_FIT_TIGHT);
//lv_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);
- lv_style_set_text_color(&(list_page_ext->style_label_len_other), LV_STATE_DEFAULT, lv_color_make(202, 134, 255));
+ lv_style_copy(&(list_page_ext->style_label_len_other), &lv_watch_font20);
+ lv_style_set_text_color(&(list_page_ext->style_label_len_other), LV_STATE_DEFAULT, lv_color_make(0xff, 0xff, 0xff));
lv_style_init(&(list_page_ext->style_label_len_self));
- lv_style_copy(&(list_page_ext->style_label_len_self), &lv_watch_font26);
- lv_style_set_text_color(&(list_page_ext->style_label_len_self), LV_STATE_DEFAULT, lv_color_make(108, 189, 5));
+ lv_style_copy(&(list_page_ext->style_label_len_self), &lv_watch_font20);
+ lv_style_set_text_color(&(list_page_ext->style_label_len_self), LV_STATE_DEFAULT, lv_color_make(0xff, 0xff, 0xff));
lv_style_init(&(list_page_ext->style_cont_self));
lv_style_set_bg_color(&(list_page_ext->style_cont_self), LV_STATE_DEFAULT, LV_COLOR_MAKE(175, 242, 89));
lv_style_set_pad_right(&(list_page_ext->style_cont_self), LV_STATE_DEFAULT, 5); // 8
lv_style_init(&(list_page_ext->style_cont_other));
- lv_style_set_bg_color(&(list_page_ext->style_cont_other), LV_STATE_DEFAULT, LV_COLOR_MAKE(0xE2, 0xBD, 0xFF));
+ lv_style_set_bg_color(&(list_page_ext->style_cont_other), LV_STATE_DEFAULT, LV_COLOR_MAKE(0x00, 0x00, 0x00));
lv_style_set_radius(&(list_page_ext->style_cont_other), LV_STATE_DEFAULT, 15);
- lv_style_set_pad_top(&(list_page_ext->style_cont_other), LV_STATE_DEFAULT, 10);
+ lv_style_set_pad_top(&(list_page_ext->style_cont_other), LV_STATE_DEFAULT, 30);
lv_style_set_pad_bottom(&(list_page_ext->style_cont_other), LV_STATE_DEFAULT, 10);
lv_style_set_pad_left(&(list_page_ext->style_cont_other), LV_STATE_DEFAULT, 5);
lv_style_set_pad_right(&(list_page_ext->style_cont_other), LV_STATE_DEFAULT, 5);
//_lv_memset_00(&(list_page_ext->voice_playing_anim), sizeof(lv_anim_t));
//list_page_ext->voice_playing_msg_from = 0;
- list_page_ext->pressing = false;
+ list_page_ext->pressing = false;
ext->list = list_page;
mmi_ai_talk_msg_item_info_t * msg_item = &s_ai_talk_item_info;
printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
uint8_t msg_count = mmi_ai_talk_info_count_get();
+ //mmi_ai_talk_list_create(ext->cont, ext);
if(0 == msg_count)
{
printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
-
- lv_obj_set_hidden(ext->label_no_msg, false);
+ char *data_buff="抱歉没听清,或者网络异常 ";
+ 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(38 + 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(s_ai_talk_item_info.msg_data_ptr, 38 + 1);
+ _lv_memcpy(s_ai_talk_item_info.msg_data_ptr, data_buff, 38);
+ s_ai_talk_item_info.msg_data_size = 38;
+
+ mmi_ai_talk_list_create(ext->cont, ext);
+
}
else
{
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));
+ lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, lv_color_make(0x00, 0x00, 0x00));
lv_watch_obj_add_element(cont);
ext->cont = cont;
sprintf(signature_in, "%s&&%d", secret_id, cur_timestamp);
-// re_hmac_sha1(api_key, strlen(api_key),
-// signature_in, strlen(signature_in),
-// signature_out, sizeof(signature_out));
+ // re_hmac_sha1(api_key, strlen(api_key),
+ // signature_in, strlen(signature_in),
+ // signature_out, sizeof(signature_out));
// {"secret_id":"Q4NPLBLyidvRc4TAUByUhcVfRFM1kQBi","signature":"77ee9dd69a6a9e5f3c9f28f5754cf7ea03d2fd00","timestamp":"1698046396"}
#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;
+bool s_ai_talk_type_tts_info_recv_begin = false;
+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_audio_size = 0;
}
+
+
+
+static int ui_falg_x=0;
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);
{
// {"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)))
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);
+ // printf("[@CHENG_DEBUG][%s][%d]: model_answer_222%d,,,,%d\n", __FUNCTION__, __LINE__,answer_result_str_len,ui_falg_x++);
+ mmi_ai_talk_model_answer_result_display(value_type_answer_result_str, answer_result_str_len);
+
+ // #if 1
+ // char * info_buf = "";
+ // sprintf(info_buf,"测试次数 %d",falg_x);
+ // uint32_t info_size = strlen(info_buf);
+ // {
+ // 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_17_06.txt", 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;
+ // }
+ // printf("[@CHENG_DEBUG][%s][%d]:\n", __FUNCTION__, __LINE__);
+ // 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
s_ai_talk_type_tts_info_recv_begin = true;
}
return false;
}
+
return true;
}
return true;
}
-
+extern uint8_t debug_type_ai_talk;
bool mmi_ai_talk_type_tts_info_data_parse(cJSON * json_type_tts)
{
char t_left_brace = '{';
t_head_ptr = s_ai_talk_type_tts_info_ptr;
while(1)
- {
+ {
+ if(t_left_brace!=s_ai_talk_type_tts_info_ptr[0])
+ {
+ printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ }
+
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__);
+ debug_type_ai_talk=1;
return false;
}
if(NULL == s_ai_talk_type_tts_info_json_ptr)
{
printf("[@CHENG_DEBUG][%s][%d]: memory alloc fail\n", __FUNCTION__, __LINE__);
+ debug_type_ai_talk=2;
return false;
}
_lv_memset_00(s_ai_talk_type_tts_info_json_ptr, t_offset + 1);
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__);
+ printf("[@CHENG_DEBUG][%s][%d]: json parse fail\n", __FUNCTION__, __LINE__);
+ debug_type_ai_talk=3;
+ s_ai_talk_type_tts_info_recv_end=false;
+ mmi_ai_talk_tts_info_result_display(s_ai_talk_type_tts_info_audio_ptr, s_ai_talk_type_tts_info_audio_size);
return false;
}
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__);
+ debug_type_ai_talk=4;
return false;
}
+
+
int value_type_tts_index = cJSON_GetIntValue(cJSON_GetObjectItem(json_type_tts, KEY_TYPE_TTS_INDEX));
- if(0 > value_type_tts_index)
+ if(value_type_tts_index==-1)
{
printf("[@CHENG_DEBUG][%s][%d]: tts info end flag\n", __FUNCTION__, __LINE__);
// 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);
}
else
{
- printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ printf("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__,value_type_tts_index);
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);
-
+ debug_type_ai_talk=12;
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__);
+ debug_type_ai_talk=5;
return false;
}
_lv_memset_00(s_ai_talk_type_tts_info_audio_ptr, 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__);
+ debug_type_ai_talk=6;
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;
}
+ #if ai_test
+ s_ai_talk_type_tts_info_recv_end=false;
+ //mmi_ai_talk_tts_info_result_display(s_ai_talk_type_tts_info_audio_ptr, s_ai_talk_type_tts_info_audio_size);
+ break;
+ #endif
+
+
+
}
}
return true;
}
-
-bool mmi_ai_talk_type_tts_info_data_processing(unsigned char * next_buff, unsigned int next_buff_len, cJSON * json_type_tts)
+#define ai_test 0
+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";
+ // search end flag
+ char * t_end_str = "\"index\":-1\,\"type\"\:\"tts_info\"\}";
+ //char * t_end_str = "\"type\"\:\"tts_info";
+ if(next_buff[0]!='{')
+ {
+ printf("[@CHENG_DEBUG][%s][%d]: \n",__FUNCTION__,__LINE__);
+ }else
+ {
+ printf("[@CHENG_DEBUG][%s][%d]: \n",__FUNCTION__,__LINE__);
+ }
+
if(NULL != strstr(next_buff, t_end_str))
{
printf("[@CHENG_DEBUG][%s][%d]: \n",__FUNCTION__,__LINE__);
+ // #if 1
+ // char * info_buf = s_ai_talk_type_tts_info_ptr;
+ // uint32_t info_size = s_ai_talk_type_tts_info_size;
+ // {
+ // lv_fs_file_t file_p;
+ // lv_fs_res_t res;
+ // uint32_t bytes_write = 0;
+
+ // res = lv_fs_open(&file_p,"debug_mmi_ai_talk_type_tts.txt", 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;
+ // }
+ // printf("[@CHENG_DEBUG][%s][%d]:\n", __FUNCTION__, __LINE__);
+ // 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
+
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__);
return false;
}
if(false == mmi_ai_talk_type_tts_info_data_parse(json_type_tts))
{
printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ //return false;
+ }
+ #if ai_test
+ if(s_ai_talk_type_tts_info_recv_end==false)
+ {
+ if(NULL != s_ai_talk_type_tts_info_ptr)
+ {
+ 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;
+
+ }
+ else
+ {
return false;
}
+ #endif
}
+
return true;
}
else
{
result = mmi_ai_talk_type_tts_info_data_processing(next_buff, next_buff_len, json_type_tts);
+ // if(result==true)
+ // {
+ // goto exit_no_free_res;
+ // }
+
}
cJSON_Delete(json_root);
json_root = NULL;
}
-
+//exit_no_free_res:
return result;
}