#ifdef __MMI_CUSTOM_BEI_KE_RUI_SHENG__
#define AI_TALK_AUDIO_FORMAT_TYPE (7) // 3-amr
-#define AI_TALK_AUDIO_FORMAT_STR (".wav") // ".amr"
+//#define AI_TALK_AUDIO_FORMAT_STR (".wav") // ".amr"
static lv_signal_cb_t ancient_scrl_signal;
-static uint8_t s_ai_talk_init_flag = 0;
-static nv_watch_wechat_msg_info_t * s_ai_talk_info = NULL;
-static nv_watch_wechat_msg_item_info_t s_ai_talk_item_info = {0};
+//static uint8_t s_ai_talk_init_flag = 0;
+//static mmi_ai_talk_msg_info_t * s_ai_talk_info = NULL;
+static mmi_ai_talk_msg_item_info_t s_ai_talk_item_info = {0};
static uint8_t s_ai_talk_play_anim_count = 0;
-static char s_ai_talk_selected_item_index = -1;
+//static char s_ai_talk_selected_item_index = -1;
static bool s_item_receive_playing = false;
static uint32_t s_ai_talk_recording_sent_size = 0;
+static uint8_t s_ai_talk_sending_screen_counter = 0;
+static bool mmi_ai_talk_is_waiting_for_result(void);
+static void mmi_ai_talk_sending_screen_task_stop(void);
-void mmi_ai_talk_info_init(void)
-{
- if(NULL == s_ai_talk_info)
- {
- uint32_t nv_data_length = sizeof(nv_watch_wechat_msg_info_t);
- s_ai_talk_info = (nv_watch_wechat_msg_info_t *)lv_mem_alloc(nv_data_length);
- if(NULL == s_ai_talk_info)
- {
- printf("[@CHENG_DEBUG][%s][%d]: memory alloc fail\n", __FUNCTION__, __LINE__);
- return;
- }
- _lv_memset_00(s_ai_talk_info, nv_data_length);
- }
- else
+static void mmi_ai_talk_receive_item_info_clean(void)
+{
+ if(NULL != s_ai_talk_item_info.msg_data_ptr)
{
- //mmi_ai_talk_info_all_item_delete();
+ printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ lv_mem_free(s_ai_talk_item_info.msg_data_ptr);
+ s_ai_talk_item_info.msg_data_ptr = NULL;
+ s_ai_talk_item_info.msg_data_size = 0;
}
}
uint8_t mmi_ai_talk_info_count_get(void)
{
- uint8_t msg_count = s_ai_talk_info->msg_count;
+ uint8_t msg_count = 0;
+
+#if 1
+ if(NULL != s_ai_talk_item_info.msg_data_ptr)
+ {
+ msg_count = 1;
+ }
+#else
+ msg_count = s_ai_talk_info->msg_count;
+#endif
return msg_count;
}
uint8_t mmi_ai_talk_info_index_item_msg_from_get(uint8_t msg_index)
{
// 0-slef; 1-other
- uint8_t msg_from = s_ai_talk_info->msg_item[msg_index].msg_from;
+ uint8_t msg_from = 0;
+
+ //msg_from = s_ai_talk_info->msg_item[msg_index].msg_from;
return msg_from;
}
-void mmi_ai_talk_info_index_item_get(uint8_t msg_index, nv_watch_wechat_msg_item_info_t ** msg_item)
+void mmi_ai_talk_info_index_item_get(uint8_t msg_index, mmi_ai_talk_msg_item_info_t ** msg_item)
{
- *msg_item = &(s_ai_talk_info->msg_item[msg_index]);
+ //*msg_item = &(s_ai_talk_info->msg_item[msg_index]);
}
void mmi_ai_talk_info_index_item_delete(uint8_t msg_index)
{
+#if 0
if(msg_index >= s_ai_talk_info->msg_count)
return;
uint8_t i = 0;
- uint32_t msg_item_info_size = sizeof(nv_watch_wechat_msg_item_info_t);
+ uint32_t msg_item_info_size = sizeof(mmi_ai_talk_msg_item_info_t);
lv_fs_remove(s_ai_talk_info->msg_item[msg_index].msg_data_full_file_name);
_lv_memset_00(&(s_ai_talk_info->msg_item[msg_index]), msg_item_info_size);
}
}
s_ai_talk_info->msg_count--;
+#endif
}
void mmi_ai_talk_info_all_item_delete(void)
{
+#if 0
uint8_t i = 0;
- uint32_t msg_item_info_size = sizeof(nv_watch_wechat_msg_item_info_t);
+ uint32_t msg_item_info_size = sizeof(mmi_ai_talk_msg_item_info_t);
for(i = 0; i < s_ai_talk_info->msg_count; i++)
{
_lv_memset_00(&(s_ai_talk_info->msg_item[i]), msg_item_info_size);
}
s_ai_talk_info->msg_count = 0;
+#endif
}
-void mmi_ai_talk_info_new_item_add(nv_watch_wechat_msg_item_info_t * msg_item)
+void mmi_ai_talk_info_new_item_add(mmi_ai_talk_msg_item_info_t * msg_item)
{
- uint32_t msg_item_info_size = sizeof(nv_watch_wechat_msg_item_info_t);
+#if 0
+ uint32_t msg_item_info_size = sizeof(mmi_ai_talk_msg_item_info_t);
printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
- if(NV_WATCH_WECHAT_NUM_MAX <= s_ai_talk_info->msg_count)
+ if(MMI_AI_TALK_MSG_NUM_MAX <= s_ai_talk_info->msg_count)
{
lv_fs_remove(s_ai_talk_info->msg_item[0].msg_data_full_file_name);
//_lv_memset_00(&(s_ai_talk_info->msg_item[0]), msg_item_info_size);
uint8_t i = 0;
- for(i = 0; i < NV_WATCH_WECHAT_NUM_MAX - 1; i++)
+ for(i = 0; i < MMI_AI_TALK_MSG_NUM_MAX - 1; i++)
{
_lv_memcpy(&(s_ai_talk_info->msg_item[i]), &(s_ai_talk_info->msg_item[i + 1]), msg_item_info_size);
}
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)
{
printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ // close tcp
+ mmi_ai_talk_tcp_disconnect_msg(NULL);
+
lv_watch_png_cache_all_free();
lv_ai_talk_ext_t * ext = mmi_ai_talk_actId_ext_get(ACT_ID_AI_TALK);
return ;
printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
- if(NULL != ext->delete_timer_id)
- {
- Hal_Timer_Stop(ext->delete_timer_id);
- ext->delete_timer_id = NULL;
- }
+ //if(NULL != ext->delete_timer_id)
+ //{
+ // Hal_Timer_Stop(ext->delete_timer_id);
+ // ext->delete_timer_id = NULL;
+ //}
- mmi_ai_talk_voice_item_playing_stop(ext);
+ //mmi_ai_talk_voice_item_playing_stop(ext);
mmi_ai_talk_list_msg_item_style_reset(ext);
+ // free buffer
+ mmi_ai_talk_receive_item_info_clean();
+
//
- Hal_NFFS_File_Play_End();
+ //Hal_NFFS_File_Play_End();
Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_5);
- Hal_Vibrator_Play_End();
+ //Hal_Vibrator_Play_End();
s_item_receive_playing = false;
-
- mmi_ai_talk_tcp_disconnect_msg(NULL);
printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
}
{
bool result = false;
+#if 0
lv_ai_talk_ext_t * ext = mmi_ai_talk_actId_ext_get(ACT_ID_AI_TALK);
if(NULL != ext && NULL != ext->list)
{
result = true;
}
}
+#endif
return result;
}
//Hal_Vibrator_Play_Onetime(NULL, 1000);
}
+ mmi_ai_talk_sending_screen_exit();
+
if(lv_watch_get_activity_obj(ACT_ID_AI_TALK))
{
mmi_ai_talk_main_screen_refresh();
return false;
}
- nv_watch_wechat_msg_item_info_t mmi_ai_talk_item_info = {0};
+#if 1
+
+ if(false == mmi_ai_talk_is_waiting_for_result())
+ {
+ printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ return false;
+ }
+ mmi_ai_talk_sending_screen_task_stop();
+ mmi_ai_talk_receive_item_info_clean();
+
+ uint32_t file_size = 0;
+ char * file_buf = NULL;
+
+ file_size = data_buff_len;
+ file_buf = lv_mem_alloc(file_size + 1);
+ if(NULL == file_buf)
+ {
+ printf("[@CHENG_DEBUG][%s][%d]: alloc memory fail\n", __FUNCTION__, __LINE__);
+ return false;
+ }
+ _lv_memset_00(file_buf, file_size + 1);
+ _lv_memcpy(file_buf, data_buff, file_size);
+ s_ai_talk_item_info.msg_data_ptr = file_buf;
+ s_ai_talk_item_info.msg_data_size = file_size;
+ s_ai_talk_item_info.msg_type = type;
+
+ printf("[@CHENG_DEBUG][%s][%d]: msg_data_size=%d,msg_data_ptr=0x%x\n", __FUNCTION__, __LINE__, s_ai_talk_item_info.msg_data_size, s_ai_talk_item_info.msg_data_ptr);
+
+ // ui
+ mmi_watch_wake_up();
+ mmi_ui_msg_action_ai_talk_incoming();
+
+ return true;
+
+#else
+
+ mmi_ai_talk_msg_item_info_t mmi_ai_talk_item_info = {0};
hal_rtc_t cur_time = {0};
char * t_file_ext[WECHAT_MSG_TYPE_MAX] = {AI_TALK_AUDIO_FORMAT_STR, "txt", "png", "png"}; // match nv_wechat_msg_type_e
s_ai_talk_item_info.unread_flag = 1;
s_ai_talk_item_info.msg_type = type; // WECHAT_MSG_TYPE_VOICE;
s_ai_talk_item_info.msg_data_size = data_buff_len;
- sprintf(s_ai_talk_item_info.msg_data_full_file_name, "C:/wechat_r%04d%02d%02d_%02d%02d%02d.%s", /*WECHAT_MSG_DATA_FILE_PATH, */
+ sprintf(s_ai_talk_item_info.msg_data_full_file_name, "C:/aitalk_r%04d%02d%02d_%02d%02d%02d.%s", /*WECHAT_MSG_DATA_FILE_PATH, */
s_ai_talk_item_info.msg_time.tm_year,
s_ai_talk_item_info.msg_time.tm_mon,
s_ai_talk_item_info.msg_time.tm_mday,
return false;
}
-// lv_ai_talk_ext_t * ext = mmi_ai_talk_actId_ext_get(ACT_ID_AI_TALK);
-// if(NULL != ext)
-// {
-// mmi_ai_talk_voice_item_playing_stop(ext);
-// }
+ lv_ai_talk_ext_t * ext = mmi_ai_talk_actId_ext_get(ACT_ID_AI_TALK);
+ if(NULL != ext)
+ {
+ mmi_ai_talk_voice_item_playing_stop(ext);
+ }
mmi_ai_talk_info_new_item_add(&s_ai_talk_item_info);
}
return true;
+#endif
}
bool mmi_ai_talk_send_to_server(void)
}
lv_mem_free(file_buf);
- _lv_memset_00(&s_ai_talk_item_info, sizeof(nv_watch_wechat_msg_item_info_t));
+ _lv_memset_00(&s_ai_talk_item_info, sizeof(mmi_ai_talk_msg_item_info_t));
#endif
return result;
}
-void mmi_ai_talk_item_delete_success_timer_cb(void *para)
-{
- //lv_ai_talk_ext_t * ext = (lv_ai_talk_ext_t *)para;
-
- mmi_ai_talk_main_screen_refresh();
-}
-
-void mmi_ai_talk_item_delete_ok_btn_event_cb(lv_obj_t * obj, lv_event_t e)
-{
- if(LV_EVENT_CLICKED == e)
- {
- lv_ai_talk_ext_t * ext = (lv_ai_talk_ext_t *)mmi_ai_talk_actId_ext_get(ACT_ID_AI_TALK);
- if(NULL != ext && NULL != ext->delete_bg)
- {
- uint32_t value = lv_watch_get_free_num(obj);
- if(0 == value)
- mmi_ai_talk_info_index_item_delete(s_ai_talk_selected_item_index);
- else if(1 == value)
- mmi_ai_talk_info_all_item_delete();
-
- lv_obj_clean(ext->delete_bg);
-
- lv_obj_t * label_prompt = lv_label_create(ext->delete_bg, NULL);
- lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font26_black);
- lv_label_set_text_id(label_prompt, WATCH_TEXT_ID_DEL_SUCCESS);
- lv_obj_align(label_prompt, ext->delete_bg, LV_ALIGN_CENTER, 0, -10);
-
- //ext->delete_timer_id = Hal_Timer_Start(1500, mmi_ai_talk_item_delete_success_timer_cb, ext, false);
- ext->delete_timer_id = Hal_Timer_Start(1500, mmi_ai_talk_item_delete_success_timer_cb, NULL, false);
- }
- }
-}
-
-void mmi_ai_talk_item_delete_cancel_btn_event_cb(lv_obj_t * obj, lv_event_t e)
-{
- if(LV_EVENT_CLICKED == e)
- {
- lv_ai_talk_ext_t * ext = (lv_ai_talk_ext_t *)mmi_ai_talk_actId_ext_get(ACT_ID_AI_TALK);
- if(NULL != ext && NULL != ext->delete_bg)
- {
- lv_obj_del(ext->delete_bg);
- ext->delete_bg = NULL;
- }
- }
-}
-
-void mmi_ai_talk_item_delete_select_btn_event_cb(lv_obj_t * obj, lv_event_t e)
-{
- if(LV_EVENT_CLICKED != e)
- {
- return;
- }
-
- lv_ai_talk_ext_t * ext = (lv_ai_talk_ext_t *)mmi_ai_talk_actId_ext_get(ACT_ID_AI_TALK);
- if(NULL != ext)
- {
- uint32_t value = lv_watch_get_free_num(obj);
-
- lv_obj_set_hidden(ext->delete_current, true);
- lv_obj_set_hidden(ext->delete_all, true);
- lv_obj_set_hidden(ext->delete_back, true);
-
- lv_obj_set_hidden(ext->delete_label_prompt, false);
- lv_obj_set_hidden(ext->delete_btn_cancel, false);
- lv_obj_set_hidden(ext->delete_btn_ok, false);
- lv_watch_set_free_num(ext->delete_btn_ok, value);
- }
-}
-
-void mmi_ai_talk_list_msg_item_delete_create(void)
+void mmi_ai_talk_sending_screen_prepare_destory(lv_obj_t * activity_obj)
{
- lv_ai_talk_ext_t * ext = (lv_ai_talk_ext_t *)mmi_ai_talk_actId_ext_get(ACT_ID_AI_TALK);
- if(NULL != ext && NULL != ext->cont)
- {
- ext->delete_bg = lv_cont_create(ext->cont, NULL);
- lv_obj_set_size(ext->delete_bg, LV_HOR_RES, LV_VER_RES);
- lv_obj_set_style_local_bg_color(ext->delete_bg, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, lv_color_make(0xB6, 0xF7, 0xFF));
-
- // current
- lv_obj_t * btn_delete_current = lv_cont_create(ext->delete_bg, NULL);
- lv_obj_set_size(btn_delete_current, LV_HOR_RES - 40, 56);
- lv_obj_set_style_local_bg_color(btn_delete_current, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xB9, 0x86, 0xFF));
- lv_obj_set_style_local_radius(btn_delete_current, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, 10);
- lv_obj_set_click(btn_delete_current, true);
- lv_obj_set_event_cb(btn_delete_current, mmi_ai_talk_item_delete_select_btn_event_cb);
- lv_obj_align(btn_delete_current, NULL, LV_ALIGN_IN_TOP_MID, 0, 40);
- lv_watch_set_free_num(btn_delete_current, 0);
- ext->delete_current = btn_delete_current;
-
- lv_obj_t * label_delete_current = lv_label_create(btn_delete_current, NULL);
- lv_obj_add_style(label_delete_current, LV_LABEL_PART_MAIN, &lv_watch_font26);
- lv_label_set_text_id(label_delete_current, WATCH_TEXT_ID_DELETE_CURRENT_ITEM);
- lv_label_set_align(label_delete_current, LV_LABEL_ALIGN_CENTER);
- lv_obj_align(label_delete_current, btn_delete_current, LV_ALIGN_CENTER, 0, 0);
-
- // all
- lv_obj_t * btn_delete_all = lv_cont_create(ext->delete_bg, btn_delete_current);
- lv_obj_set_style_local_bg_color(btn_delete_all, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xFF, 0x6F, 0x91));
- lv_obj_align(btn_delete_all, btn_delete_current, LV_ALIGN_OUT_BOTTOM_MID, 0, 20);
- lv_watch_set_free_num(btn_delete_all, 1);
- ext->delete_all = btn_delete_all;
-
- lv_obj_t * label_delete_all = lv_label_create(btn_delete_all, NULL);
- lv_obj_add_style(label_delete_all, LV_LABEL_PART_MAIN, &lv_watch_font26);
- lv_label_set_text_id(label_delete_all, WATCH_TEXT_ID_DELETE_ALL_ITEM);
- lv_label_set_align(label_delete_all, LV_LABEL_ALIGN_CENTER);
- lv_obj_align(label_delete_all, btn_delete_all, LV_ALIGN_CENTER, 0, 0);
-
- // back
- lv_obj_t * btn_delete_back = lv_cont_create(ext->delete_bg, btn_delete_current);
- lv_obj_set_style_local_bg_color(btn_delete_back, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0x47, 0xA6, 0xFF));
- lv_obj_set_event_cb(btn_delete_back, mmi_ai_talk_item_delete_cancel_btn_event_cb);
- lv_obj_align(btn_delete_back, btn_delete_all, LV_ALIGN_OUT_BOTTOM_MID, 0, 20);
- ext->delete_back = btn_delete_back;
-
- lv_obj_t * label_delete_back = lv_label_create(btn_delete_back, NULL);
- lv_obj_add_style(label_delete_back, LV_LABEL_PART_MAIN, &lv_watch_font26);
- lv_label_set_text_id(label_delete_back, WATCH_TEXT_ID_CANCEL);
- lv_label_set_align(label_delete_back, LV_LABEL_ALIGN_CENTER);
- lv_obj_align(label_delete_back, btn_delete_back, LV_ALIGN_CENTER, 0, 0);
-
-
- lv_obj_t * label_prompt = lv_label_create(ext->delete_bg, NULL);
- lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font26_black);
- lv_label_set_text_id(label_prompt, WATCH_TEXT_ID_DEL_Q);
- lv_obj_align(label_prompt, ext->delete_bg, LV_ALIGN_CENTER, 0, -30);
- ext->delete_label_prompt = label_prompt;
-
- lv_obj_t * btn_cancel = lv_btn_create(ext->delete_bg, NULL);
- lv_obj_set_size(btn_cancel, 100, 56);
- lv_obj_set_style_local_bg_color(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, lv_color_make(0x47, 0xA6, 0xFF));
- lv_obj_set_style_local_radius(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 30);
- lv_obj_set_style_local_bg_color(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_PRESSED, lv_color_make(0x47, 0xA6, 0xFF));
- lv_obj_set_style_local_radius(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_PRESSED, 30);
- lv_obj_align(btn_cancel, NULL, LV_ALIGN_IN_BOTTOM_LEFT, 10, -20);
- lv_obj_set_event_cb(btn_cancel, mmi_ai_talk_item_delete_cancel_btn_event_cb);
- ext->delete_btn_cancel = btn_cancel;
-
- lv_obj_t * label_cancel = lv_label_create(btn_cancel, NULL);
- lv_obj_add_style(label_cancel, LV_LABEL_PART_MAIN, &lv_watch_font26);
- lv_label_set_text_id(label_cancel, WATCH_TEXT_ID_CANCEL);
-
- lv_obj_t * btn_ok = lv_btn_create(ext->delete_bg, btn_cancel);
- lv_obj_set_style_local_bg_color(btn_ok, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, lv_color_make(0xFF, 0x6F, 0x91));
- lv_obj_set_style_local_bg_color(btn_ok, LV_BTN_PART_MAIN, LV_STATE_PRESSED, lv_color_make(0xFF, 0x6F, 0x91));
- lv_obj_align(btn_ok, NULL, LV_ALIGN_IN_BOTTOM_RIGHT, -10, -20);
- lv_obj_set_event_cb(btn_ok, mmi_ai_talk_item_delete_ok_btn_event_cb);
- ext->delete_btn_ok = btn_ok;
+ printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
- lv_obj_t * label_ok = lv_label_create(btn_ok, label_cancel);
- lv_label_set_text_id(label_ok, WATCH_TEXT_ID_OK);
+ lv_watch_png_cache_all_free();
- // display
- lv_obj_set_hidden(label_prompt, true);
- lv_obj_set_hidden(btn_cancel, true);
- lv_obj_set_hidden(btn_ok, true);
- }
-}
+ mmi_ai_talk_sending_screen_task_stop();
-void mmi_ai_talk_sending_anim_cb(lv_anim_t * a)
-{
- lv_obj_t * img = a->var;
-
- switch(s_ai_talk_play_anim_count % 3)
- {
- case 0:
- lv_img_set_src(img, ICON_WECHAT_SENDING_PROMPT1);
- break;
-
- case 1:
- lv_img_set_src(img, ICON_WECHAT_SENDING_PROMPT2);
- break;
-
- case 2:
- lv_img_set_src(img, ICON_WECHAT_SENDING_PROMPT3);
- break;
-
- default:
- break;
- }
- s_ai_talk_play_anim_count++;
+ watch_set_suspend_enable(true, ACT_ID_AI_TALK_SENDING, 0);
+ watch_wakeup_time_reset();
}
-void mmi_ai_talk_sending_result_screen_timeout(void *para)
+void mmi_ai_talk_sending_screen_exit(void)
{
- printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
-
mmi_ai_talk_sending_screen_prepare_destory(NULL);
//delete sending screen
printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
lv_obj_del(obj);
}
+}
+
+void mmi_ai_talk_sending_fail_screen_exit(void)
+{
+ mmi_ai_talk_sending_screen_exit();
//return main list screen
mmi_ai_talk_main_screen_refresh();
}
-void mmi_ai_talk_sending_screen_timeout(void *para)
-{
- lv_ai_talk_sending_ext_t * sending_ext = (lv_ai_talk_sending_ext_t *)para;
- printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
-
- if(NULL != sending_ext->sending_timer_id)
- {
- Hal_Timer_Stop(sending_ext->sending_timer_id);
- sending_ext->sending_timer_id = NULL;
- }
+#define TIMEOUT_SEND_END_CHAR_COUNT (3) // 500ms *3
+#define TIMEOUT_WAIT_FOR_RESULT_COUNT (19) // 500ms *3 + 500ms * 16
+#define TIMEOUT_GET_RESULT_FAIL_COUNT (22) // 500ms *3 + 500ms * 16 + 500ms * 3
- if(NULL != sending_ext->sending_anim.var)
+static bool mmi_ai_talk_is_waiting_for_result(void)
+{
+ bool result = false;
+
+ printf("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, s_ai_talk_sending_screen_counter);
+ if(TIMEOUT_SEND_END_CHAR_COUNT < s_ai_talk_sending_screen_counter
+ && TIMEOUT_WAIT_FOR_RESULT_COUNT > s_ai_talk_sending_screen_counter
+ )
{
- lv_obj_t * img_bkg = lv_obj_get_parent(sending_ext->sending_anim.var);
- lv_img_set_src(img_bkg, ((true == sending_ext->send_result) ? ICON_WECHAT_SENDING_SUCC : ICON_WECHAT_SENDING_FAILED));
-
- lv_anim_del(sending_ext->sending_anim.var, NULL);
- lv_obj_del(sending_ext->sending_anim.var);
- sending_ext->sending_anim.var = NULL;
+ result = true;
}
- sending_ext->result_timer_id = Hal_Timer_Start(1500, mmi_ai_talk_sending_result_screen_timeout, sending_ext, FALSE);
+ return result;
}
-void mmi_ai_talk_sending_screen_prepare_destory(lv_obj_t * activity_obj)
+static void mmi_ai_talk_sending_screen_task_stop(void)
{
printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
-
- mmi_ai_talk_audio_data_send_end_char();
-
- lv_watch_png_cache_all_free();
-
+
lv_ai_talk_sending_ext_t * sending_ext = (lv_ai_talk_sending_ext_t *)mmi_ai_talk_actId_ext_get(ACT_ID_AI_TALK_SENDING);
if(NULL != sending_ext)
{
- if(NULL != sending_ext->sending_timer_id)
- {
- Hal_Timer_Stop(sending_ext->sending_timer_id);
- sending_ext->sending_timer_id = NULL;
- }
- if(NULL != sending_ext->result_timer_id)
+ if(NULL != sending_ext->sending_screen_task_id)
{
- Hal_Timer_Stop(sending_ext->result_timer_id);
- sending_ext->result_timer_id = NULL;
+ lv_task_del(sending_ext->sending_screen_task_id);
+ sending_ext->sending_screen_task_id = NULL;
}
}
+ s_ai_talk_sending_screen_counter = 0;
+}
+
+void mmi_ai_talk_sending_screen_task_cb(lv_task_t * task)
+{
+ s_ai_talk_sending_screen_counter++;
+ printf("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, s_ai_talk_sending_screen_counter);
+
+ switch(s_ai_talk_sending_screen_counter)
+ {
+ case TIMEOUT_SEND_END_CHAR_COUNT:
+ mmi_ai_talk_audio_data_send_end_char();
+ break;
+
+ case TIMEOUT_WAIT_FOR_RESULT_COUNT:
+ lv_ai_talk_sending_ext_t * sending_ext = (lv_ai_talk_sending_ext_t *)(task->user_data);
+
+ lv_obj_set_hidden(sending_ext->label_sending, true);
+ lv_obj_set_hidden(sending_ext->label_result, false);
+ break;
+
+ case TIMEOUT_GET_RESULT_FAIL_COUNT:
+ mmi_ai_talk_sending_fail_screen_exit();
+ break;
+
+ default:
+ break;
+ }
}
lv_obj_t * mmi_ai_talk_sending_screen_create(lv_obj_t * activity_obj)
return NULL;
mmi_ai_talk_list_set_slide_enable(&sending_ext->old_ext, false); /*prevent to slide out while recording*/
- _lv_memset_00(&(sending_ext->sending_anim), sizeof(lv_anim_t));
- sending_ext->send_result = mmi_ai_talk_send_to_server();
- sending_ext->sending_timer_id = Hal_Timer_Start(1000 * 3, mmi_ai_talk_sending_screen_timeout, sending_ext, FALSE);
- sending_ext->result_timer_id = NULL;
-
- lv_obj_t * img_bkg = lv_img_create(obj, NULL);
- lv_img_set_src(img_bkg, ICON_WECHAT_SENDING_BG);
- lv_obj_align(img_bkg, obj, LV_ALIGN_CENTER, 0, 0);
-
- lv_obj_t * img_sending = lv_img_create(img_bkg, NULL);
- lv_img_set_src(img_sending, ICON_WECHAT_SENDING_PROMPT3);
-#if USE_LV_WATCH_UI_240_320
- lv_obj_align(img_sending, img_bkg, LV_ALIGN_IN_BOTTOM_MID, 0, -20);
-#elif USE_LV_WATCH_UI_240_280
- lv_obj_align(img_sending, img_bkg, LV_ALIGN_IN_BOTTOM_MID, 0, -40);
-#else
- lv_obj_align(img_sending, img_bkg, LV_ALIGN_IN_BOTTOM_MID, 0, -20);
-#endif
- lv_anim_t * a = &(sending_ext->sending_anim);
- lv_anim_init(a);
- lv_anim_set_var(a, img_sending);
- //lv_anim_set_exec_cb(a, (lv_anim_exec_xcb_t)wechat_msg_sending_anim_exec_cb);
- lv_anim_set_start_cb(a, (lv_anim_ready_cb_t)mmi_ai_talk_sending_anim_cb);
- lv_anim_set_repeat_count(a, LV_ANIM_REPEAT_INFINITE);
- lv_anim_set_repeat_delay(a, 500);
- lv_anim_start(a);
- s_ai_talk_play_anim_count = 0;
+ mmi_ai_talk_send_to_server();
+ s_ai_talk_sending_screen_counter = 0;
+ sending_ext->sending_screen_task_id = lv_task_create(mmi_ai_talk_sending_screen_task_cb, 500, LV_TASK_PRIO_HIGH, sending_ext);
+
+ lv_obj_t * cont = lv_cont_create(obj, NULL);
+ lv_obj_set_size(cont, lv_obj_get_width(obj), lv_obj_get_height(obj));
+ lv_obj_align(cont, obj, LV_ALIGN_CENTER, 0, 0);
+ lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, lv_color_make(194, 252, 252));
+
+ sending_ext->label_sending = lv_label_create(cont, NULL);
+ lv_obj_add_style(sending_ext->label_sending, LV_LABEL_PART_MAIN, &lv_watch_font26_black);
+ lv_label_set_text_id(sending_ext->label_sending, WATCH_TEXT_ID_GETTING_RESULT);
+ lv_obj_align(sending_ext->label_sending, NULL, LV_ALIGN_CENTER, 0, -10);
+
+ sending_ext->label_result = lv_label_create(cont, sending_ext->label_sending);
+ lv_label_set_text_id(sending_ext->label_result, WATCH_TEXT_ID_GET_RESULT_FAIL);
+ lv_obj_align(sending_ext->label_result, NULL, LV_ALIGN_CENTER, 0, -10);
+
+ lv_obj_set_hidden(sending_ext->label_sending, false);
+ lv_obj_set_hidden(sending_ext->label_result, true);
+
+ watch_set_suspend_enable(false, ACT_ID_AI_TALK_SENDING, 0);
return obj;
}
//lv_obj_set_click(cont, true);
//lv_obj_set_event_cb(cont, mmi_ai_talk_recording_release_event_cb);
//lv_obj_add_protect(cont, LV_PROTECT_PRESS_LOST);
-
- //lv_obj_t * label_warning = lv_label_create(cont, NULL);
- //lv_obj_set_style_local_text_font(label_warning, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_THEME_WATCH_NIGHT_FONT_SMALL);
- //lv_obj_set_style_local_text_color(label_warning, LV_LABEL_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_RED);
- //lv_obj_add_style(label_warning, LV_LABEL_PART_MAIN, &lv_watch_font26_black);
- //lv_label_set_long_mode(label_warning, LV_LABEL_LONG_BREAK);
- //lv_obj_set_width(label_warning, lv_obj_get_width(obj) * 2 / 3);
- //lv_label_set_text_id(label_warning, WATCH_TEXT_ID_SLIDE_UP_WARNING);
- //lv_label_set_align(label_warning, LV_LABEL_ALIGN_CENTER);
- //lv_obj_align(label_warning, cont, LV_ALIGN_IN_TOP_MID, 0, 50);
lv_obj_t * label_time = lv_label_create(cont, NULL);
lv_obj_add_style(label_time, LV_LABEL_PART_MAIN, &lv_watch_font26_black);
if(AUDIO_CTRL_PRIORITY_5 == Hal_Audio_Manage_Start_Req(AUDIO_CTRL_PRIORITY_5, mmi_ai_talk_recording_audio_ctrl_callback))
{
- //Hal_Record_Buffer_Start_Req(ext->record_buffer,
- // MMI_AI_TALK_DATA_RECORD_SIZE_MAX,
- // MMI_AI_TALK_DATA_RECORD_DURATION_MAX * 1000,
- // mmi_ai_talk_recording_cb);
-
s_ai_talk_recording_sent_size = 0;
+
Hal_Record_Buffer_With_Format_Req(ext->record_buffer,
MMI_AI_TALK_DATA_RECORD_SIZE_MAX,
MMI_AI_TALK_DATA_RECORD_DURATION_MAX * 1000,
{
printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+#if 0
if(NULL == list_page_ext || NULL == list_page_ext->voice_playing_anim.var)
{
printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
lv_anim_del(list_page_ext->voice_playing_anim.var, NULL);
lv_img_set_src(list_page_ext->voice_playing_anim.var, ((0 == msg_from) ? ICON_WECHAT_MY_VOICE_ITEM_PLAYING3 : ICON_WECHAT_OTHER_VOICE_ITEM_PLAYING3));
list_page_ext->voice_playing_anim.var = NULL;
+#endif
}
void mmi_ai_talk_voice_item_playing_stop(lv_ai_talk_ext_t * ext)
{
printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
- return;
-/*
+#if 0
if(NULL == ext || NULL == ext->list)
{
printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
Hal_File_Play_End();
Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_5);
mmi_ai_talk_voice_item_reset_play_state(list_page_ext);
-*/
+#endif
}
void mmi_ai_talk_list_msg_item_style_reset(lv_ai_talk_ext_t * ext)
lv_style_reset(&(list_page_ext->style_cont_self));
lv_style_reset(&(list_page_ext->style_cont_other));
- lv_style_reset(&(list_page_ext->style_label_time));
- //lv_style_reset(&(list_page_ext->style_text));
+ //lv_style_reset(&(list_page_ext->style_label_time));
lv_style_reset(&(list_page_ext->style_label_len_self));
lv_style_reset(&(list_page_ext->style_label_len_other));
}
{
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,
}
}
}
+#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);
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())
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);
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_start(a);
s_ai_talk_play_anim_count = 1;
- nv_watch_wechat_msg_item_info_t * msg_item = NULL;
+ mmi_ai_talk_msg_item_info_t * msg_item = NULL;
mmi_ai_talk_info_index_item_get(s_ai_talk_selected_item_index, &msg_item);
msg_item->unread_flag = 0;
if(NULL != unread_img)
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;
{
list_page_ext->pressing = false;
- nv_watch_wechat_msg_item_info_t * msg_item = NULL;
+ mmi_ai_talk_msg_item_info_t * msg_item = NULL;
mmi_ai_talk_info_index_item_get(s_ai_talk_selected_item_index, &msg_item);
if(0 != msg_item->msg_data_size)
}
}
}
+#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;
{
list_page_ext->pressing = false;
}
+#endif
}
//display time & content
-lv_obj_t * mmi_ai_talk_list_msg_item_add(lv_obj_t * list_page, nv_watch_wechat_msg_item_info_t * msg_item, char * time_str, uint8_t i)
+lv_obj_t * mmi_ai_talk_list_msg_item_add(lv_obj_t * list_page, mmi_ai_talk_msg_item_info_t * msg_item, char * time_str, uint8_t i)
{
printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
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);
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);
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_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;
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_text(label_text, file_buf);
lv_obj_align(label_text, obj, LV_ALIGN_IN_LEFT_MID, 10, 0);
+ #if 1
+ lv_obj_set_click(obj, false);
+ #else
lv_obj_set_click(obj, true);
lv_obj_set_event_cb(obj, mmi_ai_talk_list_text_item_event_cb);
+ #endif
lv_obj_set_adv_hittest(obj, false);
lv_page_focus(list_page, obj, 0);
lv_page_glue_obj(obj, true);
lv_watch_obj_add_element(obj);
- lv_mem_free(file_buf);
+ //lv_mem_free(file_buf);
break;
case WECHAT_MSG_TYPE_EXPRESSION:
lv_watch_obj_add_element(list_page);
lv_watch_obj_add_element(scrl);
- lv_style_init(&(list_page_ext->style_label_time));
- lv_style_copy(&(list_page_ext->style_label_time), &lv_watch_font20);
- lv_style_set_text_color(&(list_page_ext->style_label_time), LV_STATE_DEFAULT, lv_color_make(20, 187, 242));
-
- //lv_style_init(&(list_page_ext->style_text));
- //lv_style_copy(&(list_page_ext->style_text), &lv_style_pretty);
- //lv_style_set_bg_color(&(list_page_ext->style_text), LV_STATE_DEFAULT, lv_color_make(0xFF, 0xE1, 0xE1));
- //lv_style_set_border_width(&(list_page_ext->style_text), LV_STATE_DEFAULT, 0);
- //lv_style_set_shadow_width(&(list_page_ext->style_text), LV_STATE_DEFAULT, 0);
+ //lv_style_init(&(list_page_ext->style_label_time));
+ //lv_style_copy(&(list_page_ext->style_label_time), &lv_watch_font20);
+ //lv_style_set_text_color(&(list_page_ext->style_label_time), LV_STATE_DEFAULT, lv_color_make(20, 187, 242));
lv_style_init(&(list_page_ext->style_label_len_other));
lv_style_copy(&(list_page_ext->style_label_len_other), &lv_watch_font26);
lv_style_set_pad_left(&(list_page_ext->style_cont_other), LV_STATE_DEFAULT, 5);
lv_style_set_pad_right(&(list_page_ext->style_cont_other), LV_STATE_DEFAULT, 5);
- _lv_memset_00(&(list_page_ext->voice_playing_anim), sizeof(lv_anim_t));
- list_page_ext->voice_playing_msg_from = 0;
+ //_lv_memset_00(&(list_page_ext->voice_playing_anim), sizeof(lv_anim_t));
+ //list_page_ext->voice_playing_msg_from = 0;
list_page_ext->pressing = false;
ext->list = list_page;
+ #if 1
+ mmi_ai_talk_msg_item_info_t * msg_item = &s_ai_talk_item_info;
+ mmi_ai_talk_list_msg_item_add(list_page, msg_item, NULL, 0);
+ #else
+
uint8_t i = 0;
uint8_t msg_count = mmi_ai_talk_info_count_get();
hal_rtc_t cur_time = {0}, last_msg_item_time = {0}, msg_time = {0};
printf("[@CHENG_DEBUG][%s][%d]: i=%d, msg_count=%d\n", __FUNCTION__, __LINE__, i, msg_count);
char time_str[32] = {0};
- nv_watch_wechat_msg_item_info_t * msg_item = NULL;
+ mmi_ai_talk_msg_item_info_t * msg_item = NULL;
mmi_ai_talk_info_index_item_get(i, &msg_item);
_lv_memcpy(&msg_time, &(msg_item->msg_time), sizeof(hal_rtc_t));
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))
{
printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+#if 1
+ mmi_ai_talk_list_set_slide_enable(&ext->old_ext, true);
+ mmi_ai_talk_list_msg_item_style_reset(ext);
+ if(NULL != ext->list)
+ {
+ lv_obj_del(ext->list);
+ ext->list = NULL;
+ }
+
+ printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+ uint8_t msg_count = mmi_ai_talk_info_count_get();
+ if(0 == msg_count)
+ {
+ printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+ lv_obj_set_hidden(ext->label_no_msg, false);
+ }
+ else
+ {
+ printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+ lv_obj_set_hidden(ext->label_no_msg, true);
+ mmi_ai_talk_list_create(ext->cont, ext);
+ }
+
+#else
+
mmi_ai_talk_list_set_slide_enable(&ext->old_ext, true);
mmi_ai_talk_voice_item_playing_stop(ext);
mmi_ai_talk_list_create(ext->cont, ext);
}
+#endif
}
lv_obj_t * mmi_ai_talk_create(lv_obj_t * activity_obj)
ext->cont = NULL;
ext->list = NULL;
- ext->delete_timer_id = NULL;
- ext->delete_bg = NULL;
+ //ext->delete_timer_id = NULL;
+ //ext->delete_bg = NULL;
ext->record_buffer = NULL;
ext->record_size = 0;
mmi_ai_talk_tcp_connect_msg(NULL);
//
- mmi_ai_talk_info_init();
+ mmi_ai_talk_receive_item_info_clean();
lv_watch_png_cache_all_free();
lv_obj_t * obj = mmi_ai_talk_create(NULL);