gengxin
author@hu <1224667075@qq.com>
Fri, 2 Feb 2024 03:53:27 +0000 (11:53 +0800)
committer1 <1>
Fri, 2 Feb 2024 10:04:18 +0000 (18:04 +0800)
Signed-off-by: 1 <1>
13 files changed:
2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.c
2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.h
2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.c
2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.h
2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/bei_ke_rui_sheng.c
2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/bei_ke_rui_sheng.h
2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/bei_ke_rui_sheng_data.c
2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/bei_ke_rui_sheng_socket.c
2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c
2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.h
2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd_content.c
2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.c
2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.h

index 4d90969..ed3c002 100644 (file)
@@ -27,6 +27,11 @@ void mmi_ui_msg_action_watch_power_off(void)
        mmi_ui_msg_action_no_para_msg(MMI_MSG_WATCH_POWER_OFF);
 }
 
+void mmi_ui_msg_action_watch_reboot(void)
+{
+       mmi_ui_msg_action_no_para_msg(MMI_MSG_WATCH_REBOOT);
+}
+
 void mmi_ui_msg_action_watch_searching(void)
 {
        mmi_ui_msg_action_no_para_msg(MMI_MSG_WATCH_SEARCHING);
index 6ead1fd..f53cac6 100644 (file)
@@ -56,6 +56,7 @@ void mmi_watch_lv_ui_message_action(uint16_t msgid, void * msg);
 
 void mmi_ui_msg_action_watch_factory(void);
 void mmi_ui_msg_action_watch_power_off(void);
+void mmi_ui_msg_action_watch_reboot(void);
 void mmi_ui_msg_action_watch_searching(void);
 #ifdef __MMI_WECHAT_SUPPORT__
 void mmi_ui_msg_action_wechat_incoming(void);
index 947ea7d..94fb44a 100644 (file)
@@ -367,14 +367,16 @@ void watch_ui_message_handle(uint16_t msgid, void * msg)
        #endif
 
                case MMI_MSG_WATCH_FACTORY:
-                       //printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
                        mmi_ui_msg_update_watch_factory();
                        break;
                        
                case MMI_MSG_WATCH_POWER_OFF:
-                       //printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
                        mmi_ui_msg_update_watch_power_off();
                        break;
+
+               case MMI_MSG_WATCH_REBOOT:
+                       mmi_ui_msg_update_watch_reboot();
+                       break;
                        
                case MMI_MSG_WATCH_SEARCHING:
                        //printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
index 0958d45..61b3e3d 100644 (file)
@@ -102,6 +102,7 @@ enum
 #endif
        MMI_MSG_WATCH_FACTORY,
        MMI_MSG_WATCH_POWER_OFF,
+       MMI_MSG_WATCH_REBOOT,
        MMI_MSG_WATCH_SEARCHING,
 #ifdef __MMI_WECHAT_SUPPORT__
        MMI_MSG_WECHAT_INCOMING,
index dd3985a..3fb1b59 100644 (file)
@@ -22,6 +22,7 @@ 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);
 
+uint8_t debug_type_ai_talk = 0;
 
 static void mmi_ai_talk_receive_item_info_clean(void)
 {
@@ -262,13 +263,13 @@ bool mmi_ai_talk_model_answer_result_display(char * data_buff, int data_buff_len
                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)
        {
@@ -352,6 +353,154 @@ static void mmi_ai_talk_tts_info_result_play_over_cb(void * para)
        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;
@@ -392,44 +541,17 @@ bool mmi_ai_talk_tts_info_result_display(char * data_buff, int data_buff_len)
                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__
@@ -437,6 +559,7 @@ bool mmi_ai_talk_tts_info_result_display(char * data_buff, int data_buff_len)
 #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,
@@ -520,27 +643,29 @@ void mmi_ai_talk_sending_screen_exit(void)
 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;
 }
@@ -558,7 +683,8 @@ static void mmi_ai_talk_sending_screen_task_stop(void)
                        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)
@@ -572,15 +698,29 @@ 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:
@@ -620,16 +760,23 @@ lv_obj_t * mmi_ai_talk_sending_screen_create(lv_obj_t * activity_obj)
     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);
@@ -868,13 +1015,13 @@ lv_obj_t * mmi_ai_talk_recording_screen_create(lv_obj_t * activity_obj)
     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);
@@ -889,6 +1036,13 @@ lv_obj_t * mmi_ai_talk_recording_screen_create(lv_obj_t * activity_obj)
     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);
@@ -948,6 +1102,8 @@ void mmi_ai_talk_record_button_event_cb(lv_obj_t * obj, lv_event_t e)
                // 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);
     } 
@@ -1079,28 +1235,47 @@ lv_obj_t * mmi_ai_talk_list_msg_item_add(lv_obj_t * list_page, mmi_ai_talk_msg_i
        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);
@@ -1145,19 +1320,33 @@ void mmi_ai_talk_list_create(lv_obj_t * obj, lv_ai_talk_ext_t * ext)
        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);
@@ -1174,12 +1363,12 @@ void mmi_ai_talk_list_create(lv_obj_t * obj, lv_ai_talk_ext_t * ext)
        //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));
@@ -1190,16 +1379,16 @@ void mmi_ai_talk_list_create(lv_obj_t * obj, lv_ai_talk_ext_t * ext)
        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;
@@ -1233,11 +1422,28 @@ void mmi_ai_talk_main_screen_refresh(void)
        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
        {
@@ -1329,7 +1535,7 @@ lv_obj_t * mmi_ai_talk_create(lv_obj_t * activity_obj)
        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;
 
index 7d544da..2497399 100644 (file)
@@ -59,6 +59,7 @@ typedef struct
        lv_obj_t * label_sending;
        lv_obj_t * label_result;
        lv_task_t * sending_screen_task_id;
+       lv_obj_t * gif_obj;
 } lv_ai_talk_sending_ext_t;
 
 typedef struct
index 5f7c68c..0af9bfa 100644 (file)
@@ -92,9 +92,9 @@ bool mm_ai_talk_login_action(void)
        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"}
@@ -245,14 +245,15 @@ bool mmi_ai_talk_receive_info_write_to_file(char * path, char * info_buf, uint32
 #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;
@@ -279,6 +280,10 @@ void mmi_ai_talk_data_receive_resource_clean(void)
        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);
@@ -291,6 +296,7 @@ bool mmi_ai_talk_not_type_tts_info_data_processing(unsigned char * next_buff, un
                {
                        // {"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)))
@@ -311,7 +317,38 @@ bool mmi_ai_talk_not_type_tts_info_data_processing(unsigned char * next_buff, un
                                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;
                }
@@ -322,6 +359,7 @@ bool mmi_ai_talk_not_type_tts_info_data_processing(unsigned char * next_buff, un
                return false;
        }
 
+
        return true;
 }
 
@@ -358,7 +396,7 @@ bool mmi_ai_talk_type_tts_info_data_store(unsigned char * next_buff, unsigned in
 
        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 = '{';
@@ -372,10 +410,16 @@ bool mmi_ai_talk_type_tts_info_data_parse(cJSON * json_type_tts)
                
        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;
                }
                
@@ -396,6 +440,7 @@ bool mmi_ai_talk_type_tts_info_data_parse(cJSON * json_type_tts)
                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);
@@ -409,7 +454,10 @@ bool mmi_ai_talk_type_tts_info_data_parse(cJSON * json_type_tts)
                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;
                }
                
@@ -417,11 +465,14 @@ bool mmi_ai_talk_type_tts_info_data_parse(cJSON * json_type_tts)
                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__);
 
@@ -429,6 +480,7 @@ bool mmi_ai_talk_type_tts_info_data_parse(cJSON * json_type_tts)
                        // 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);
        
@@ -436,17 +488,18 @@ bool mmi_ai_talk_type_tts_info_data_parse(cJSON * json_type_tts)
                }
                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);
@@ -459,40 +512,88 @@ bool mmi_ai_talk_type_tts_info_data_parse(cJSON * json_type_tts)
                                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;
        }
@@ -503,9 +604,26 @@ bool mmi_ai_talk_type_tts_info_data_processing(unsigned char * next_buff, unsign
                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;
 }
@@ -541,6 +659,11 @@ bool mmi_ai_talk_data_receive(unsigned char * next_buff, unsigned int next_buff_
        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;
+               // }
+               
        }
 
 
@@ -564,7 +687,7 @@ exit_free_res:
                cJSON_Delete(json_root);
                json_root = NULL;
        }
-       
+//exit_no_free_res:
        return result;
 }
 
index 753f8ce..d7759ea 100644 (file)
@@ -244,7 +244,7 @@ void mmi_ai_talk_tcp_read_data(void *param)
        }
 
        int recv_ret = -1;
-       int recv_len = 0;
+       int recv_len = 0;               
        char * recv_buf = (char *)Hal_Mem_Alloc(AI_TALK_RECEIVE_BUFF_LEN);
        if(NULL == recv_buf)
        {
@@ -256,7 +256,7 @@ void mmi_ai_talk_tcp_read_data(void *param)
        printf("[@CHENG_DEBUG][%s][%d]: recv_ret=%d,recv_len=%d,recv_buf=0x%x\n", __FUNCTION__, __LINE__, recv_ret, recv_len, recv_buf);
        printf("[@CHENG_DEBUG][%d]: str=%s\n", __LINE__, recv_buf);
        if(0 <= recv_ret)
-       {
+       {                                        
                mmi_ai_talk_data_receive(recv_buf, recv_len);
 //             mmi_protocol_receive_data_process(recv_str, recv_len);
        }
index 3f8272e..9fd4584 100644 (file)
@@ -790,6 +790,19 @@ bool mmi_protocol_fzd_parse_SERVER_SET_POWEROFF(unsigned char * next_buff, unsig
        return result;
 }
 
+bool mmi_protocol_fzd_parse_SERVER_SET_REBOOT(unsigned char * next_buff, unsigned int next_buff_len)
+{
+       bool result = false;
+       MMI_PROTOCOL_FZD_ACTION_ENUM action = MMI_FZD_SERVER_SET_REBOOT;
+       
+       result = true;
+       mmi_protocol_fzd_send_without_data(action);
+
+       mmi_watch_reboot_aciton();
+
+       return result;
+}
+
 bool mmi_protocol_fzd_parse_SERVER_FIND_WATCH(unsigned char * next_buff, unsigned int next_buff_len)
 {
        bool result = false;
index f84e575..6559943 100644 (file)
@@ -137,6 +137,7 @@ typedef enum
        MMI_FZD_SERVER_SET_CENTER_NUMBER,
        MMI_FZD_SERVER_SET_MONITOR,     
        MMI_FZD_ACTION_UNBIND,
+       MMI_FZD_SERVER_SET_REBOOT,
 
 #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__
 #if defined(__MMI_ZHSX_SUPPORT_VIDEO_CALL_WULIAN__) || defined(__MMI_ZHSX_SUPPORT_VIDEO_CALL_FZD__) || defined(__MMI_ZHSX_SUPPORT_VIDEO_CALL_TONGXIN__)
@@ -254,8 +255,8 @@ bool mmi_protocol_fzd_parse_SERVER_GET_CUR_LOCATION(unsigned char * next_buff, u
 bool mmi_protocol_fzd_parse_SERVER_SET_UD_INTERVAL(unsigned char * next_buff, unsigned int next_buff_len);
 
 bool mmi_protocol_fzd_parse_SERVER_SET_FACTORY(unsigned char * next_buff, unsigned int next_buff_len);
-
 bool mmi_protocol_fzd_parse_SERVER_SET_POWEROFF(unsigned char * next_buff, unsigned int next_buff_len);
+bool mmi_protocol_fzd_parse_SERVER_SET_REBOOT(unsigned char * next_buff, unsigned int next_buff_len);
 
 bool mmi_protocol_fzd_parse_SERVER_FIND_WATCH(unsigned char * next_buff, unsigned int next_buff_len);
 
index 94e83e8..3636d2a 100644 (file)
@@ -60,6 +60,7 @@ static unsigned char * mmi_protocol_fzd_action_string_get(MMI_PROTOCOL_FZD_ACTIO
                        {MMI_FZD_SERVER_SET_CENTER_NUMBER, "CENTER"},
                        {MMI_FZD_SERVER_SET_MONITOR, "MONITOR"},
                        {MMI_FZD_ACTION_UNBIND, "DLT"},
+                       {MMI_FZD_SERVER_SET_REBOOT, "REBOOT"},
 
                #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__
                #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL_WULIAN__
@@ -312,6 +313,10 @@ static bool mmi_protocol_fzd_content_parse(unsigned char * content_ptr, unsigned
                case MMI_FZD_ACTION_UNBIND:
                        break;
 
+               case MMI_FZD_SERVER_SET_REBOOT:
+                       mmi_protocol_fzd_parse_SERVER_SET_REBOOT(next_buff, next_buff_len);
+                       break;
+
        #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__
        #if defined(__MMI_ZHSX_SUPPORT_VIDEO_CALL_WULIAN__) || defined(__MMI_ZHSX_SUPPORT_VIDEO_CALL_FZD__) || defined(__MMI_ZHSX_SUPPORT_VIDEO_CALL_TONGXIN__)
                case MMI_FZD_WATCH_GET_VC_CONFIG:
index 382f5e9..82936cd 100644 (file)
@@ -149,6 +149,19 @@ void mmi_watch_power_off_aciton(void)
        mmi_ui_msg_action_watch_power_off();
 }
 
+void mmi_ui_msg_update_watch_reboot(void)
+{
+       mmi_watch_restart();
+}
+
+void mmi_watch_reboot_aciton(void)
+{
+       SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+    mmi_watch_wake_up();
+       mmi_ui_msg_action_watch_reboot();
+}
+
 
 static TIMER_ID s_watch_search_timer_id = NULL;
 static TIMER_ID s_watch_falldwon_id = NULL;
index e487706..ca4d1af 100644 (file)
@@ -46,6 +46,8 @@ void mmi_ui_msg_update_watch_factory(void);
 void mmi_watch_factory_aciton(void);
 void mmi_ui_msg_update_watch_power_off(void);
 void mmi_watch_power_off_aciton(void);
+void mmi_ui_msg_update_watch_reboot(void);
+void mmi_watch_reboot_aciton(void);
 
 
 #define MMI_WATCH_SEARCH_DURATION      (1000 * 60) // ms