From: CCC <2393524978@qq.com> Date: Tue, 18 Jul 2023 01:45:04 +0000 (+0800) Subject: gengxin X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=9850ce834a40cc46fc0afe41e2c8882657fbd96d;p=mirrors%2FASR3603_Z5.git gengxin --- diff --git a/2.sdk/project/Z5_K7/gui/lv_watch/mmi_default_CUSTOM.h b/2.sdk/project/Z5_K7/gui/lv_watch/mmi_default_CUSTOM.h index b7fe7785..5fc7d27d 100644 --- a/2.sdk/project/Z5_K7/gui/lv_watch/mmi_default_CUSTOM.h +++ b/2.sdk/project/Z5_K7/gui/lv_watch/mmi_default_CUSTOM.h @@ -6,12 +6,12 @@ //server ip -#define MMI_CUSTOMER_IP_ADDRESS "8.134.110.49" // "api.xcloudtech.com" +#define MMI_CUSTOMER_IP_ADDRESS "api.xcloudtech.com" // "8.134.110.49" // "api.xcloudtech.com" -#define MMI_CUSTOMER_IP_PORT (30346) // (9000) +#define MMI_CUSTOMER_IP_PORT (9000) // (30346) // (9000) -#define MMI_CUSTOMER_HEARTBEAT_ACTION_INTERVAL (60 * 5) // unit:s +#define MMI_CUSTOMER_HEARTBEAT_ACTION_INTERVAL (60 * 5) // (60 * 5) // unit:s #define MMI_CUSTOMER_LOCATION_UPLOAD_INTERVAL (60 * 20) // unit:s diff --git a/2.sdk/project/Z5_K7/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h b/2.sdk/project/Z5_K7/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h index 61c8439c..4837a820 100644 --- a/2.sdk/project/Z5_K7/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h +++ b/2.sdk/project/Z5_K7/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h @@ -151,7 +151,7 @@ #define __MMI_ZHSX_SUPPORT_FZD__ -#define __MMI_ZHSX_SUPPORT_FZD_SERVER_WULIAN__ // dachui +//#define __MMI_ZHSX_SUPPORT_FZD_SERVER_WULIAN__ // dachui #define __MMI_ZHSX_SUPPORT_SMS__ diff --git a/2.sdk/sdk/gui/lv_watch/include/ui_nvm_interface.h b/2.sdk/sdk/gui/lv_watch/include/ui_nvm_interface.h index f497e303..a8a4e8f1 100644 --- a/2.sdk/sdk/gui/lv_watch/include/ui_nvm_interface.h +++ b/2.sdk/sdk/gui/lv_watch/include/ui_nvm_interface.h @@ -213,8 +213,8 @@ typedef struct char number[NV_WATCH_SOS_NUMBER_MAX][NV_CONTACTS_MAX_NUMBER_LEN]; } __packed nv_watch_sos_number_t; -#define NV_WATCH_VC_CONTACT_TOTAL (10) -#define NV_WATCH_VC_CONTACT_NAME_LEN (10+1) +#define NV_WATCH_VC_CONTACT_TOTAL (50) +#define NV_WATCH_VC_CONTACT_NAME_LEN (16+1) #define NV_WATCH_VC_CONTACT_NUMBER_LEN (20+1) typedef struct diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_jrtc_client.c b/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_jrtc_client.c index aeecf8e5..972574c6 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_jrtc_client.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_jrtc_client.c @@ -44,7 +44,7 @@ void mmi_video_call_jrtc_config_init_00(void) app_adp_get_imei_req(imei); strncpy(uid, imei, 16); - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); jrtc_config(appkey, uid, key, tokens); Hal_Mem_Set(&s_video_call_jrtc, 0x0, sizeof(MMI_VIDEO_CALL_JRTC_T)); @@ -53,6 +53,7 @@ void mmi_video_call_jrtc_config_init_00(void) void mmi_video_call_jrtc_config_init_01(char * t_appkey, char * t_key, char * t_tokens) { +#ifndef __VIDEO_CALL_TEST__ char appkey[24+1] = {0}; char key[16+1] = {0}; char uid[64+1] = {0}; @@ -62,26 +63,32 @@ void mmi_video_call_jrtc_config_init_01(char * t_appkey, char * t_key, char * t_ app_adp_get_imei_req(imei); strncpy(uid, imei, 16); + //VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %s\n", __FUNCTION__, __LINE__, t_tokens); + //VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %s\n", __FUNCTION__, __LINE__, t_tokens+32); + //VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %s\n", __FUNCTION__, __LINE__, t_tokens+64); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %d,%d,%d\n", __FUNCTION__, __LINE__, strlen(t_appkey), strlen(t_key), strlen(t_tokens)); + memcpy(appkey, t_appkey, 24); memcpy(key, t_key, 16); memcpy(tokens, t_tokens, 128); - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %s\n", __FUNCTION__, __LINE__, appkey); - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %s\n", __FUNCTION__, __LINE__, uid); - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %s\n", __FUNCTION__, __LINE__, key); - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %s\n", __FUNCTION__, __LINE__, tokens); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %d,%s\n", __FUNCTION__, __LINE__, strlen(appkey), appkey); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %d,%s\n", __FUNCTION__, __LINE__, strlen(uid), uid); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %d,%s\n", __FUNCTION__, __LINE__, strlen(key), key); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %d,%s\n", __FUNCTION__, __LINE__, strlen(tokens), tokens); jrtc_config(appkey, uid, key, tokens); Hal_Mem_Set(&s_video_call_jrtc, 0x0, sizeof(MMI_VIDEO_CALL_JRTC_T)); +#endif } static void mmi_video_call_jrtc_clean_up(void) { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); if(NULL != s_video_call_jrtc.state_task) { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); lv_task_del(s_video_call_jrtc.state_task); } @@ -91,7 +98,7 @@ static void mmi_video_call_jrtc_clean_up(void) static void mmi_video_call_jrtc_timeout_cb(void * para) { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); mmi_video_call_jrtc_clean_up(); } @@ -103,7 +110,7 @@ static void mmi_video_call_jrtc_on_state(lv_task_t * task) if(state != oldstate) { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: oldstate=%d,state=%d\n", __FUNCTION__, __LINE__, oldstate, state); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: oldstate=%d,state=%d\n", __FUNCTION__, __LINE__, oldstate, state); } switch(state) @@ -113,7 +120,7 @@ static void mmi_video_call_jrtc_on_state(lv_task_t * task) { video_call_jrtc_error_e err = jrtc_error(s_video_call_jrtc.jrtc_ptr); - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: error=%d\n", __FUNCTION__, __LINE__, err); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: error=%d\n", __FUNCTION__, __LINE__, err); if(!s_video_call_jrtc.closing) { @@ -143,10 +150,7 @@ static void mmi_video_call_jrtc_on_state(lv_task_t * task) break; case JRTC_TALKING: - if(MMI_VIDEO_CALL_STATE_CALLING != mmi_video_call_params_state_get()) - { - mmi_vc_call_action_connect(); - } + mmi_vc_call_action_connected(); /* Get image */ if (MODEM_VIDEO_CALL_TYPE_VIDEO == mmi_video_call_params_type_get()) @@ -154,7 +158,7 @@ static void mmi_video_call_jrtc_on_state(lv_task_t * task) void *buf = mmi_video_call_phone_get_video_buffer(); if(voip_jrtc_get_image(buf)) { - lv_canvas_set_buffer(voip_phone_get_ext()->canvas, buf, canvas_width, canvas_heigh, LV_IMG_CF_TRUE_COLOR); + lv_canvas_set_buffer(mmi_vc_call_get_ext()->canvas, buf, canvas_width, canvas_heigh, LV_IMG_CF_TRUE_COLOR); } } break; @@ -169,8 +173,14 @@ static void mmi_video_call_jrtc_on_state(lv_task_t * task) static int8_t mmi_video_call_jrtc_open(const char* roomid, MODEM_VIDEO_CALL_TYPE calltype) { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %s,%d\n", __FUNCTION__, __LINE__, roomid, calltype); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %s,%d\n", __FUNCTION__, __LINE__, roomid, calltype); +#ifdef __VIDEO_CALL_TEST__ + char * ticket = NULL; +#else + char ticket[64+8] = "ab2671af32b7278ca5e7ad9e26b488aff6640569eaa5b8e1f690d8ac298f6e61"; +#endif + Hal_Mem_Set(&s_video_call_jrtc, 0, sizeof(MMI_VIDEO_CALL_JRTC_T)); if (MODEM_VIDEO_CALL_TYPE_VIDEO == calltype) @@ -182,16 +192,16 @@ static int8_t mmi_video_call_jrtc_open(const char* roomid, MODEM_VIDEO_CALL_TYPE mci_videocall_camera_set_sensor(1); // 0:rear camera; 1:front camera - s_video_call_jrtc.jrtc_ptr= jrtc_open(roomid, 0, &s_video_call_jrtc.rxframe, &s_video_call_jrtc.txframe); + s_video_call_jrtc.jrtc_ptr= jrtc_open(roomid, ticket, &s_video_call_jrtc.rxframe, &s_video_call_jrtc.txframe); } else { - s_video_call_jrtc.jrtc_ptr= jrtc_open(roomid, 0, NULL, NULL); + s_video_call_jrtc.jrtc_ptr= jrtc_open(roomid, ticket, NULL, NULL); } if (!s_video_call_jrtc.jrtc_ptr) { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); mmi_video_call_jrtc_clean_up(); return -1; } @@ -205,19 +215,22 @@ int8_t mmi_video_call_dial_req(MODEM_VIDEO_CALL_TYPE calltype, char * pContactUr { int8_t ret = -1; - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %s,%d\n", __FUNCTION__, __LINE__, pContactUri, calltype); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %s,%d\n", __FUNCTION__, __LINE__, pContactUri, calltype); mmi_vc_call_operate_send_to_server(2); if (NULL == s_video_call_jrtc.jrtc_ptr) + { ret = mmi_video_call_jrtc_open(pContactUri, calltype); + } + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %p, %d\n", __FUNCTION__, __LINE__, s_video_call_jrtc.jrtc_ptr, ret); return ret; } void mmi_video_call_hangup_req(BOOL bye) { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %p,%d\n", __FUNCTION__, __LINE__, s_video_call_jrtc.jrtc_ptr, bye); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, bye); mmi_vc_call_operate_send_to_server(0); @@ -225,6 +238,8 @@ void mmi_video_call_hangup_req(BOOL bye) { video_call_jrtc_error_e err = (TRUE == bye) ? JRTC_EBYE : JRTC_EAUDIOCALL; + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %p,%d\n", __FUNCTION__, __LINE__, s_video_call_jrtc.jrtc_ptr, err); + jrtc_close(s_video_call_jrtc.jrtc_ptr, err); s_video_call_jrtc.closing = 1; } @@ -238,19 +253,20 @@ int8_t mmi_video_call_answer_req(void) { int8_t ret = -1; - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %p\n", __FUNCTION__, __LINE__, s_video_call_jrtc.jrtc_ptr); - mmi_vc_call_operate_send_to_server(1); if (NULL == s_video_call_jrtc.jrtc_ptr) + { ret = mmi_video_call_jrtc_open(mmi_video_call_params_number_get(), mmi_video_call_params_type_get()); - + } + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %p, %d\n", __FUNCTION__, __LINE__, s_video_call_jrtc.jrtc_ptr, ret); + return ret; } void mmi_video_call_reject_req(BOOL bye) { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %p,%d\n", __FUNCTION__, __LINE__, s_video_call_jrtc.jrtc_ptr, bye); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, bye); mmi_vc_call_operate_send_to_server(0); @@ -258,6 +274,8 @@ void mmi_video_call_reject_req(BOOL bye) { video_call_jrtc_error_e err = (TRUE == bye) ? JRTC_EBYE : JRTC_EAUDIOCALL; + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %p,%d\n", __FUNCTION__, __LINE__, s_video_call_jrtc.jrtc_ptr, err); + jrtc_close(s_video_call_jrtc.jrtc_ptr, err); s_video_call_jrtc.closing = 1; } @@ -275,7 +293,7 @@ void mmi_video_call_reject_req(BOOL bye) static uint8_t voip_jrtc_get_image(void * preview_buf) { uint8_t ret = 0; - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); + lv_vc_call_obj_ext_t * ext = mmi_vc_call_get_ext(); LV_ASSERT_MEM(ext); video_call_jrtc_image_t * frame = NULL; diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call.c b/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call.c index 9b48c695..985489b9 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call.c @@ -11,7 +11,7 @@ #include -static lv_signal_cb_t ancestor_signal; +//static lv_signal_cb_t ancestor_signal; #if VIDEO_SIGNAL_CHECK static lv_task_t * signal_check_task = NULL; #endif @@ -36,9 +36,6 @@ static void voip_phone_cleanup(void); static void voip_phone_obj_hide_anim_end(lv_anim_t * anim); static void voip_anim_fp_dialing_ring(lv_obj_t * obj, int32_t x); static void voip_anim_fp_connected(lv_anim_t * anim); -static void voip_phone_prepare_destory(lv_obj_t * activity_obj); -static lv_obj_t * voip_phone_get_activity_obj(void); -static lv_obj_t * voip_phone_get_obj(void); static void voip_get_time_elaps(uint32_t last_time, char * str, int8_t size); static void voip_set_volume_when_slider_act(void); static void voip_local_remote_switch_action(lv_obj_t * btn, lv_event_t e); @@ -62,243 +59,6 @@ void voip_audio_ctrl_callback(AUDIO_CTRL_PRIORITY priority) } } -static lv_voip_phonebook_obj_ext_t * voip_phonebook_get_ext(void) -{ - // printf("%s %d\n", __FUNCTION__, __LINE__); - lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_VOIP_PHONEBOOK); - - if(activity_obj == NULL) { - return(NULL); - } - - lv_obj_t * watch_obj; - lv_watch_get_child_obj(activity_obj, lv_watch_obj_signal, &watch_obj); - if(watch_obj == NULL) { - return(NULL); - } - - if(watch_obj) { - lv_voip_phonebook_obj_ext_t * ext = lv_obj_get_ext_attr(watch_obj); - return(ext); - } - return(NULL); -} - -static int voip_aligned_width(int val, lv_coord_t move_width) -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - - bool negative = (val < 0) ? true : false; - if(val < 0) { - val = -val; - } - int i = (val + move_width - 1) / move_width - 1; - int new_val = i * move_width; - - new_val = (val - new_val > move_width / 2) ? (new_val + move_width) : new_val; - new_val = negative ? -new_val : new_val; - return(new_val); -} - -static lv_res_t voip_page_scrl_signal_handler(lv_obj_t * page_scrl, lv_signal_t sign, void * param) -{ - // printf("%s %d\n", __FUNCTION__, __LINE__); - lv_voip_phonebook_obj_ext_t * ext = voip_phonebook_get_ext(); - - LV_ASSERT_MEM(ext); - if(ext == NULL) { - return(LV_RES_INV); - } - - if((sign == LV_SIGNAL_DRAG_END) || (sign == LV_SIGNAL_RELEASED)) { - lv_coord_t new_x = lv_obj_get_x(page_scrl); - lv_coord_t aligned_new_x = voip_aligned_width(new_x, ext->move_width); - lv_obj_set_x(page_scrl, aligned_new_x); - - lv_bidi_dir_t dir = lv_obj_get_base_dir(page_scrl); - - /* update image id */ - ext->cur_img_id = (aligned_new_x < 0) ? -aligned_new_x / ext->move_width : aligned_new_x / ext->move_width; - voip_phonebook_t * contact; - if(LV_BIDI_DIR_RTL == dir) { - contact = _lv_ll_get_tail(&ext->contact_list); - } else { - contact = _lv_ll_get_head(&ext->contact_list); - } - uint8_t i = 0; - while(NULL != contact) { - if(ext->cur_img_id == i) { - ext->cur_contact = contact; - break; - } - i++; - if(LV_BIDI_DIR_RTL == dir) { - contact = _lv_ll_get_prev(&ext->contact_list, contact); - } else { - contact = _lv_ll_get_next(&ext->contact_list, contact); - } - } - if(NULL == contact) { - printf("error, contact not found in voip_page_scrl_signal_handler\n"); - return(LV_RES_INV); - } - lv_label_set_text(ext->label_phone_contact, contact->name); - if(0 < strlen(contact->number)) { - uint32_t pos = LV_LABEL_POS_LAST; - if(LV_BIDI_DIR_RTL == dir) { - pos = 0; - } - if(0 < strlen(contact->name)) { - lv_label_ins_text(ext->label_phone_contact, pos, " "); - } - lv_label_ins_text(ext->label_phone_contact, pos, contact->number); - } - } - - return(LV_RES_OK); -} /* voip_page_scrl_signal_handler */ - -static lv_res_t voip_phonebook_page_scrl_signal(lv_obj_t * page_scrl, lv_signal_t sign, void * param) -{ - // printf("%s %d\n", __FUNCTION__, __LINE__); - lv_res_t res; - - /* Include the ancient signal function */ - res = ancestor_signal(page_scrl, sign, param); - if(res != LV_RES_OK) { - return(res); - } - - if(sign == LV_SIGNAL_CLEANUP) { - /*when cleanup, can not invoke lv_indev_get_act */ - return(LV_RES_OK); - } - - res = voip_page_scrl_signal_handler(page_scrl, sign, param); - if(res != LV_RES_OK) { - return(res); - } - - return(LV_RES_OK); -} - -static lv_res_t voip_phonebook_element_signal_func(lv_obj_t * element, lv_signal_t sign, void * param) -{ - // printf("%s %d\n", __FUNCTION__, __LINE__); - - lv_res_t res; - - /* if not click signs, invoke ancient handler and return */ - if(sign != LV_SIGNAL_PRESSING && sign != LV_SIGNAL_PRESSED && sign != LV_SIGNAL_RELEASED && sign != LV_SIGNAL_PRESS_LOST) { - /* Include the ancient signal function */ - lv_signal_cb_t sign_func = (lv_signal_cb_t)(lv_obj_get_user_data(element).user_data); - res = sign_func(element, sign, param); - if(res != LV_RES_OK) { - return(res); - } - return(LV_RES_OK); - } - - lv_obj_t * obj = lv_obj_get_parent(element); - while(obj) { - if(lv_obj_get_signal_cb(obj) != lv_watch_obj_signal) { - obj = lv_obj_get_parent(obj); - } else { - break; - } - } - if(obj == NULL) { - return(LV_RES_INV); - } - - res = lv_watch_obj_signal(obj, sign, param); - if(res != LV_RES_OK) { - return(res); - } - - lv_voip_phonebook_obj_ext_t * ext = lv_obj_get_ext_attr(obj); - if(ext == NULL) { - return(LV_RES_INV); - } - if(ext->page_scrl == NULL) { - return(LV_RES_INV); - } - res = voip_page_scrl_signal_handler(ext->page_scrl, sign, param); - if(res != LV_RES_OK) { - return(res); - } - - /* Include the ancient signal function */ - lv_signal_cb_t sign_func = (lv_signal_cb_t)(lv_obj_get_user_data(element).user_data); - res = sign_func(element, sign, param); - if(res != LV_RES_OK) { - return(res); - } - - return(LV_RES_OK); -} /* voip_phonebook_element_signal_func */ - -static void voip_phonebook_add_element(lv_obj_t * element) -{ - // printf("%s %d\n", __FUNCTION__, __LINE__); - lv_watch_set_free_ptr(element, lv_obj_get_signal_cb(element)); - lv_obj_set_signal_cb(element, voip_phonebook_element_signal_func); - lv_obj_add_protect(element, LV_PROTECT_PRESS_LOST | LV_PROTECT_CLICK_FOCUS); -} - -static lv_obj_t * voipcall_number_add(lv_obj_t * page, const void * img_src) -{ - // printf("%s %d\n", __FUNCTION__, __LINE__); - - lv_obj_t * img = NULL; - - lv_obj_t * content = lv_cont_create(page, NULL); - - lv_obj_add_style(content, LV_OBJ_PART_MAIN, &lv_watch_style_transp); - lv_obj_set_size(content, 120, lv_obj_get_height(page)); - lv_cont_set_layout(content, LV_LAYOUT_OFF); - LV_ASSERT_MEM(content); - if(content == NULL) { - return(NULL); - } - /*must set click enable for these content, If not, no pressed/pressing signals out*/ - lv_obj_set_click(content, true); - voip_phonebook_add_element(content); - /*hor drag in page, must set glue*/ - lv_page_glue_obj(content, true); - - img = lv_img_create(content, NULL); - lv_img_set_src(img, img_src); - lv_obj_align(img, content, LV_ALIGN_IN_TOP_MID, 0, 20); - - return(content); -} - -static lv_obj_t * voip_append_obj(lv_obj_t * page) -{ - // printf("%s %d\n", __FUNCTION__, __LINE__); - - lv_voip_phonebook_obj_ext_t * ext = voip_phonebook_get_ext(); - lv_obj_t * voip_append_obj = lv_obj_create(page, NULL); - - lv_obj_set_size(voip_append_obj, ext->append_width, lv_obj_get_height(page)); - lv_obj_add_style(voip_append_obj, LV_OBJ_PART_MAIN, &lv_style_transp_tight); - voip_phonebook_add_element(voip_append_obj); - return(voip_append_obj); -} - -lv_voip_phone_obj_ext_t * voip_phone_get_ext(void) -{ - lv_voip_phone_obj_ext_t * ext = NULL; - lv_obj_t * watch_obj = voip_phone_get_obj(); - - if(watch_obj) { - ext = lv_obj_get_ext_attr(watch_obj); - } - - return(ext); -} - void * mmi_video_call_phone_get_video_buffer() { return g_cbuf; @@ -307,26 +67,40 @@ void * mmi_video_call_phone_get_video_buffer() /********************** * STATIC FUNCTIONS **********************/ -static lv_obj_t * voip_phone_get_activity_obj(void) +static lv_obj_t * mmi_vc_call_get_activity_obj(void) { lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_VOIPPHONE); return(activity_obj); } -static lv_obj_t * voip_phone_get_obj(void) +static lv_obj_t * mmi_vc_call_get_obj(void) { lv_obj_t * watch_obj = NULL; - lv_obj_t * activity_obj = voip_phone_get_activity_obj(); + lv_obj_t * activity_obj = mmi_vc_call_get_activity_obj(); - if(activity_obj) { + if(activity_obj) + { lv_watch_get_child_obj(activity_obj, lv_watch_obj_signal, &watch_obj); } return(watch_obj); } +lv_vc_call_obj_ext_t * mmi_vc_call_get_ext(void) +{ + lv_vc_call_obj_ext_t * ext = NULL; + lv_obj_t * watch_obj = mmi_vc_call_get_obj(); + + if(watch_obj) + { + ext = lv_obj_get_ext_attr(watch_obj); + } + + return(ext); +} + static void voip_phone_left_slide_callback(lv_obj_t * obj) { printf("%s %d\n", __FUNCTION__, __LINE__); @@ -388,7 +162,7 @@ static lv_obj_t * voip_ring_off_content_create(lv_obj_t * par) par = lv_scr_act(); } - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); + lv_vc_call_obj_ext_t * ext = mmi_vc_call_get_ext(); LV_ASSERT_MEM(ext); if(ext == NULL) { return(NULL); @@ -422,16 +196,22 @@ static lv_obj_t * voip_ring_off_content_create(lv_obj_t * par) lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font20); lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); - if(is_rat_gsm()) { + if(is_rat_gsm()) + { lv_label_set_text_id(label, WATCH_TEXT_ID_NETWORK_WRONG); - } else { - if(ext->phone_ui_t == PHONE_UI_CONNECTED) { + } + else + { + if(ext->phone_ui_t == MMI_VC_UI_CONNECTED) + { char tmp[20] = ""; char str[30] = ""; voip_get_time_elaps(ext->connect_start_time, tmp, 20); snprintf(str, 30, "%s(%s)", (char *)lv_lang_get_text(WATCH_TEXT_ID_RING_OFF), tmp); lv_label_set_text(label, str); - } else { + } + else + { lv_label_set_text_id(label, WATCH_TEXT_ID_RING_OFF); } } @@ -454,12 +234,58 @@ static void voip_phone_cleanup(void) lv_obj_del(slider_activit_obj); } - lv_obj_t * activity_obj = voip_phone_get_activity_obj(); + lv_obj_t * activity_obj = mmi_vc_call_get_activity_obj(); if(activity_obj) { lv_obj_del(activity_obj); } } +static void voip_anim_fp_connecting_ring(lv_obj_t * obj, int32_t x) +{ + if(obj != NULL) { + lv_obj_set_x(obj, x); + } +} + +static void voip_connecting_animation(lv_obj_t * par) +{ + lv_vc_call_obj_ext_t * ext = mmi_vc_call_get_ext(); + + LV_ASSERT_MEM(ext); + if(ext == NULL) { + return; + } + + lv_obj_t * img = lv_img_create(mmi_vc_call_get_obj(), NULL); + lv_img_set_src(img, LV_SYMBOL_LOOP); + lv_obj_add_style(img, LV_OBJ_PART_MAIN, &lv_watch_image); + lv_obj_set_style_local_text_font(img, LV_IMG_PART_MAIN, LV_STATE_DEFAULT, LV_THEME_WATCH_NIGHT_SYMBOL_NORMAL); + lv_obj_set_y(img, lv_obj_get_y(par) + lv_obj_get_y(lv_obj_get_parent(par))); + ext->phone_animation_obj = img; + + /*Create an animation to move the button continuously left to right*/ + lv_anim_t a; + lv_anim_path_t path; + lv_anim_value_t start = lv_obj_get_x(par) + lv_obj_get_width(par) + 6; + lv_anim_value_t end = start + 30; + + lv_anim_path_init(&path); + lv_anim_path_set_cb(&path, lv_anim_path_linear); + + lv_anim_init(&a); + lv_anim_set_var(&a, img); + lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t)voip_anim_fp_connecting_ring); + lv_anim_set_path(&a, &path); + lv_anim_set_values(&a, start, end); + lv_anim_set_time(&a, 400); + lv_anim_set_playback_time(&a, 400); + lv_anim_set_playback_delay(&a, 0); + lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE); + lv_anim_set_repeat_delay(&a, 500); + + lv_anim_start(&a); +} + static void voip_anim_fp_dialing_ring(lv_obj_t * obj, int32_t x) { if(obj != NULL) { @@ -469,14 +295,14 @@ static void voip_anim_fp_dialing_ring(lv_obj_t * obj, int32_t x) static void voip_dialing_animation(lv_obj_t * par) { - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); + lv_vc_call_obj_ext_t * ext = mmi_vc_call_get_ext(); LV_ASSERT_MEM(ext); if(ext == NULL) { return; } - lv_obj_t * img = lv_img_create(voip_phone_get_obj(), NULL); + lv_obj_t * img = lv_img_create(mmi_vc_call_get_obj(), NULL); lv_img_set_src(img, LV_SYMBOL_RIGHT); lv_obj_add_style(img, LV_OBJ_PART_MAIN, &lv_watch_image); lv_obj_set_style_local_text_font(img, LV_IMG_PART_MAIN, LV_STATE_DEFAULT, LV_THEME_WATCH_NIGHT_SYMBOL_NORMAL); @@ -508,14 +334,14 @@ static void voip_dialing_animation(lv_obj_t * par) static void voip_ring_animation(lv_obj_t * par) { - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); + lv_vc_call_obj_ext_t * ext = mmi_vc_call_get_ext(); LV_ASSERT_MEM(ext); if(ext == NULL) { return; } - lv_obj_t * img = lv_img_create(voip_phone_get_obj(), NULL); + lv_obj_t * img = lv_img_create(mmi_vc_call_get_obj(), NULL); lv_img_set_src(img, LV_SYMBOL_LEFT); lv_obj_add_style(img, LV_OBJ_PART_MAIN, &lv_watch_image); lv_obj_set_style_local_text_font(img, LV_IMG_PART_MAIN, LV_STATE_DEFAULT, LV_THEME_WATCH_NIGHT_SYMBOL_NORMAL); @@ -569,7 +395,7 @@ static void voip_connected_animation(lv_obj_t * obj) static void voip_anim_fp_connected(lv_anim_t * anim) { lv_obj_t * obj = (lv_obj_t *)anim->var; - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); + lv_vc_call_obj_ext_t * ext = mmi_vc_call_get_ext(); LV_ASSERT_MEM(ext); if(ext == NULL) { @@ -583,35 +409,6 @@ static void voip_anim_fp_connected(lv_anim_t * anim) } } - -static void voip_phone_prepare_destory(lv_obj_t * activity_obj) -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - - lv_watch_png_cache_all_free(); - - // stop playing tone - Hal_Tone_Play_End(); - - // ring off - mmi_vc_ring_off_action(NULL, LV_EVENT_CLICKED); - - // stop ring off timer - if(NULL != s_video_call_params.ring_off_timer_id) { - Hal_Timer_Stop(s_video_call_params.ring_off_timer_id); - s_video_call_params.ring_off_timer_id = NULL; - } - - // stop callreq timer - if(NULL != s_video_call_params.callreq_timer_id) { - Hal_Timer_Stop(s_video_call_params.callreq_timer_id); - s_video_call_params.callreq_timer_id = NULL; - } - - Hal_Mem_Set(&s_video_call_params, 0, sizeof(MMI_VIDEO_CALL_PARAMS_T)); - s_video_call_params.state = MMI_VIDEO_CALL_STATE_NONE; -} - static void voip_get_time_elaps(uint32_t last_time, char * str, int8_t size) { hal_rtc_t rtc_curr; // current rtc time @@ -647,28 +444,19 @@ void mmi_vc_ring_off_no_carrier(uint8_t isNoCarrier) && (1 == isNoCarrier) && (MMI_VIDEO_CALL_STATE_NONE == s_video_call_params.state)) { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); return; } - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); // stop playing tone Hal_Tone_Play_End(); - // stop ring off timer - if(NULL != s_video_call_params.ring_off_timer_id) - { - Hal_Timer_Stop(s_video_call_params.ring_off_timer_id); - s_video_call_params.ring_off_timer_id = NULL; - } - - // stop callreq timer - if(NULL != s_video_call_params.callreq_timer_id) - { - Hal_Timer_Stop(s_video_call_params.callreq_timer_id); - s_video_call_params.callreq_timer_id = NULL; - } + // stop timer + mmi_vc_ring_off_timer_stop(); + mmi_vc_dialing_timer_stop(); + mmi_vc_connecting_timer_stop(); // create ring off UI lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_VOIPPHONE); @@ -686,11 +474,10 @@ void mmi_vc_ring_off_no_carrier(uint8_t isNoCarrier) Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_2); watch_wakeup_time_reset(); - Hal_Mem_Set(&s_video_call_params, 0, sizeof(MMI_VIDEO_CALL_PARAMS_T)); - s_video_call_params.state = MMI_VIDEO_CALL_STATE_NONE; + Hal_Mem_Set(&s_video_call_params, 0x0, sizeof(MMI_VIDEO_CALL_PARAMS_T)); } -static bool mmi_video_call_check_mo_permission(void) +static bool mmi_vc_check_mo_permission(void) { if((!watch_modem_sim_present_check_req()) || (MMI_MODEM_SIGNAL_BAR_0 == watch_modem_get_signal_bar_req()) @@ -715,7 +502,7 @@ static void voip_local_remote_switch_action(lv_obj_t * btn, lv_event_t e) if(!activity_obj) { return; } - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); + lv_vc_call_obj_ext_t * ext = mmi_vc_call_get_ext(); if(!ext) { return; } @@ -785,7 +572,7 @@ static void canvas_button_hidden_event_cb(lv_obj_t * obj, lv_event_t e) if(LV_EVENT_CLICKED == e) { printf("%s %d\n", __FUNCTION__, __LINE__); - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); + lv_vc_call_obj_ext_t * ext = mmi_vc_call_get_ext(); if(!ext) { return; } @@ -797,7 +584,7 @@ static void canvas_button_hidden_event_cb(lv_obj_t * obj, lv_event_t e) lv_obj_set_hidden(ext->connect_time, ext->canvas_button_hidden_flag); lv_obj_set_hidden(ext->ring_value_button, ext->canvas_button_hidden_flag); - lv_obj_set_hidden(ext->view_switch_button, ext->canvas_button_hidden_flag); + lv_obj_set_hidden(ext->view_switch_button, true); // lv_obj_set_hidden(ext->view_switch_button, ext->canvas_button_hidden_flag); lv_obj_set_hidden(ext->ring_off_button, ext->canvas_button_hidden_flag); } } @@ -817,7 +604,7 @@ static void voip_set_volume_when_slider_act(void) #if VIDEO_SIGNAL_CHECK static void signal_check(lv_task_t *task) { - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); + lv_vc_call_obj_ext_t * ext = mmi_vc_call_get_ext(); if(!ext) return; if((false == is_rat_gsm()) && @@ -881,7 +668,7 @@ static void voip_rat_check_stop(void) void voip_fps_check(int8_t fps) { - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); + lv_vc_call_obj_ext_t * ext = mmi_vc_call_get_ext(); if(NULL != ext) { if((VIDEO_CALL_FPS_CHECK_LIMIT >= fps) && (0 != fps)) { printf("%s %d\n", __FUNCTION__, fps); @@ -896,12 +683,10 @@ void voip_fps_check(int8_t fps) -#ifdef __VIDEO_CALL_TEST__ -#define MMI_VC_ROOM_ID "jrtc001" // "104799" -#endif static nv_watch_vc_contact_t s_vc_contact = {0}; static TIMER_ID fail_timer_id = NULL; +static MMI_VIDEO_CALL_UI_E s_vc_call_ui = MMI_VC_UI_INVALID; char * mmi_video_call_params_number_get(void) { @@ -944,7 +729,7 @@ void mmi_vc_contact_set(nv_watch_vc_contact_t * contact_list) { if(NULL == contact_list) { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); return; } @@ -967,23 +752,78 @@ void mmi_vc_call_operate_send_to_server(uint_8 flag) mmi_protocol_fzd_action_VC_CALL_REQUEST(s_video_call_params.number, s_video_call_params.call_type); } -static void mmi_vc_incoming_hook_action(lv_obj_t * btn, lv_event_t e) +void mmi_vc_ring_off_timer_stop(void) +{ + if(NULL != s_video_call_params.ring_off_timer_id) + { + Hal_Timer_Stop(s_video_call_params.ring_off_timer_id); + s_video_call_params.ring_off_timer_id = NULL; + } +} + +void mmi_vc_dialing_timer_stop(void) +{ + if(NULL != s_video_call_params.dialing_timer_id) + { + Hal_Timer_Stop(s_video_call_params.dialing_timer_id); + s_video_call_params.dialing_timer_id = NULL; + } +} + +void mmi_vc_connecting_timer_stop(void) +{ + if(NULL != s_video_call_params.connecting_timer_id) + { + Hal_Timer_Stop(s_video_call_params.connecting_timer_id); + s_video_call_params.connecting_timer_id = NULL; + } +} + +static void mmi_vc_ui_prepare_destory(lv_obj_t * activity_obj) +{ + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + lv_watch_png_cache_all_free(); + + // stop playing tone + Hal_Tone_Play_End(); + + // ring off + mmi_vc_ring_off_action(NULL, LV_EVENT_CLICKED); + + // stop ring off timer + mmi_vc_ring_off_timer_stop(); + + // stop callreq timer + mmi_vc_dialing_timer_stop(); + + //stop + mmi_vc_connecting_timer_stop(); + + Hal_Mem_Set(&s_video_call_params, 0x0, sizeof(MMI_VIDEO_CALL_PARAMS_T)); + s_video_call_params.state = MMI_VIDEO_CALL_STATE_NONE; +} + +static void mmi_vc_hook_action(lv_obj_t * btn, lv_event_t e) { if(LV_EVENT_CLICKED != e) { return; } - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - if(btn) { - lv_obj_set_click(btn, false); - } + //if(btn) { + // lv_obj_set_click(btn, false); + //} Hal_Tone_Play_End(); + + mmi_vc_call_action_connecting(); int8_t ret = mmi_video_call_answer_req(); - if(ret < 0) { + if(ret < 0) + { mmi_vc_ring_off_no_carrier(0); } } @@ -991,28 +831,28 @@ static void mmi_vc_incoming_hook_action(lv_obj_t * btn, lv_event_t e) lv_res_t mmi_video_call_phone_ring_off_create() { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); - LV_ASSERT_MEM(ext); - if(ext == NULL) { + lv_vc_call_obj_ext_t * ext = mmi_vc_call_get_ext(); + if(ext == NULL) + { return(LV_RES_INV); } // stop callreq timer - if(NULL != s_video_call_params.callreq_timer_id) { - Hal_Timer_Stop(s_video_call_params.callreq_timer_id); - s_video_call_params.callreq_timer_id = NULL; - } + mmi_vc_dialing_timer_stop(); - if(ext->phone_ui_t == MMI_VC_UI_INCOMING || ext->phone_ui_t == MMI_VC_UI_DIALING) { + if(ext->phone_ui_t == MMI_VC_UI_INCOMING || ext->phone_ui_t == MMI_VC_UI_DIALING) + { if(ext->phone_status_label) { lv_label_set_text(ext->phone_status_label, ""); } - voip_ring_off_content_create(voip_phone_get_obj()); - } else if(ext->phone_ui_t == PHONE_UI_CONNECTED) { - voip_ring_off_content_create(voip_phone_get_obj()); + voip_ring_off_content_create(mmi_vc_call_get_obj()); + } + else if(ext->phone_ui_t == MMI_VC_UI_CONNECTED) + { + voip_ring_off_content_create(mmi_vc_call_get_obj()); } if(ext->phone_animation_obj) { @@ -1026,7 +866,7 @@ lv_res_t mmi_video_call_phone_ring_off_create() /* phone cleanup when anim end*/ lv_anim_t a; lv_anim_init(&a); - lv_anim_set_var(&a, voip_phone_get_obj()); + lv_anim_set_var(&a, mmi_vc_call_get_obj()); lv_anim_set_ready_cb(&a, (lv_anim_ready_cb_t)voip_phone_obj_hide_anim_end); lv_anim_set_time(&a, VOIP_PHONE_RING_OFF_CONTINUE_TIME); lv_anim_start(&a); @@ -1039,7 +879,7 @@ lv_res_t mmi_video_call_phone_ring_off_create() static void mmi_vc_ring_off_timeout_cb(void * para) { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); s_video_call_params.ring_off_timer_id = NULL; s_video_call_params.ring_off_timeout = true; @@ -1053,20 +893,19 @@ void mmi_vc_ring_off_action(lv_obj_t * btn, lv_event_t e) return; } - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %d\n", __FUNCTION__, __LINE__, s_video_call_params.state); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, s_video_call_params.state); + mmi_vc_dialing_timer_stop(); + mmi_vc_connecting_timer_stop(); + if(false == s_video_call_params.ring_off) { s_video_call_params.ring_off = true; - if(NULL == s_video_call_params.ring_off_timer_id) { + if(NULL == s_video_call_params.ring_off_timer_id) + { s_video_call_params.ring_off_timer_id = Hal_Timer_Start(VOIP_RING_OFF_TIMER_LEN, mmi_vc_ring_off_timeout_cb, NULL, 0); } - // stop callreq timer - if(NULL != s_video_call_params.callreq_timer_id) { - Hal_Timer_Stop(s_video_call_params.callreq_timer_id); - s_video_call_params.callreq_timer_id = NULL; - } } switch(s_video_call_params.state) @@ -1096,9 +935,9 @@ void mmi_vc_ring_off_action(lv_obj_t * btn, lv_event_t e) static void mmi_vc_ui_dialing(lv_obj_t * content) { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); + lv_vc_call_obj_ext_t * ext = mmi_vc_call_get_ext(); if(ext == NULL) { return; } @@ -1155,9 +994,9 @@ static void mmi_vc_ui_dialing(lv_obj_t * content) static void mmi_vc_ui_incoming(lv_obj_t * content) { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); + lv_vc_call_obj_ext_t * ext = mmi_vc_call_get_ext(); LV_ASSERT_MEM(ext); if(ext == NULL) { @@ -1171,12 +1010,13 @@ static void mmi_vc_ui_incoming(lv_obj_t * content) lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); lv_label_set_text_id(label, WATCH_TEXT_ID_RINGING); lv_obj_set_click(label, false); + lv_obj_align(label, content, LV_ALIGN_IN_TOP_MID, 0, 10); ext->phone_status_label = label; // img lv_obj_t * img = lv_img_create(content, NULL); lv_img_set_src(img, ICON_VIDEO_CALL_CONTACT_PHOTO); - lv_obj_align(img, label, LV_ALIGN_OUT_BOTTOM_MID, 0, 10); + lv_obj_align(img, label, LV_ALIGN_OUT_BOTTOM_MID, 0, 20); lv_obj_set_click(img, false); // name @@ -1208,15 +1048,67 @@ static void mmi_vc_ui_incoming(lv_obj_t * content) btn = lv_imgbtn_create(content, NULL); lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_VIDEO_CALL_ANSWER_BTN); lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_VIDEO_CALL_ANSWER_BTN); - lv_obj_set_event_cb(btn, mmi_vc_incoming_hook_action); + lv_obj_set_event_cb(btn, mmi_vc_hook_action); lv_obj_align(btn, content, LV_ALIGN_IN_BOTTOM_RIGHT, MMI_VC_INCOMING_HOOK_BTN_X_OFFSET, MMI_VC_RING_OFF_BTN_Y_OFFSET); } +static void mmi_vc_ui_connecting(lv_obj_t * content) +{ + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + lv_vc_call_obj_ext_t * ext = mmi_vc_call_get_ext(); + + LV_ASSERT_MEM(ext); + if(ext == NULL) { + return; + } + lv_obj_t * label; + + // label ringing + label = lv_label_create(content, NULL); + lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font20); + lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); + lv_label_set_text_id(label, WATCH_TEXT_ID_CONNECTING); + lv_obj_set_click(label, false); + lv_obj_align(label, content, LV_ALIGN_IN_TOP_MID, 0, 10); + ext->phone_status_label = label; + + // img + lv_obj_t * img = lv_img_create(content, NULL); + lv_img_set_src(img, ICON_VIDEO_CALL_CONTACT_PHOTO); + lv_obj_align(img, label, LV_ALIGN_OUT_BOTTOM_MID, 0, 20); + lv_obj_set_click(img, false); + + // name + label = lv_label_create(content, NULL); + lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font26); + lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); + lv_label_set_long_mode(label, LV_LABEL_LONG_SROLL); + lv_obj_set_width(label, lv_obj_get_width(content) - 20); + if(strlen(s_video_call_params.name) > 0) + { + lv_label_set_text(label, s_video_call_params.name); + } + else + { + lv_label_set_text(label, s_video_call_params.number); + } + lv_obj_align(label, img, LV_ALIGN_OUT_BOTTOM_MID, 0, 10); + lv_obj_set_click(label, false); + + // btn ring off + lv_obj_t * btn = lv_imgbtn_create(content, NULL); + lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_VIDEO_CALL_HANGUP_BTN); + lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_VIDEO_CALL_HANGUP_BTN); + lv_obj_set_event_cb(btn, mmi_vc_ring_off_action); + lv_obj_align(btn, content, LV_ALIGN_IN_BOTTOM_MID, 0, MMI_VC_RING_OFF_BTN_Y_OFFSET); +} + static void mmi_vc_ui_connected(lv_obj_t * content) { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); + lv_vc_call_obj_ext_t * ext = mmi_vc_call_get_ext(); if(ext == NULL) { return; @@ -1229,7 +1121,7 @@ static void mmi_vc_ui_connected(lv_obj_t * content) if(s_video_call_params.call_type == MODEM_VIDEO_CALL_TYPE_VOICE) { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); ext->connect_start_time = time_to_seconds(&rtc_curr); @@ -1286,7 +1178,7 @@ static void mmi_vc_ui_connected(lv_obj_t * content) { lv_obj_t * canvas; - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: format=%d\n", __FUNCTION__, __LINE__, ext->voiph263fmt); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: format=%d\n", __FUNCTION__, __LINE__, ext->voiph263fmt); ext->local_remote_switch_flag = VOIP_REMOTE_SWITCH_REMOTE; if((ext->voiph263fmt == VOIP_H263_FMT_SQCIF) || (ext->voiph263fmt == VOIP_H263_FMT_QCIF)) @@ -1393,13 +1285,13 @@ static void mmi_vc_ui_connected(lv_obj_t * content) ext->ring_value_button = btn; // btn switch video - //btn = lv_imgbtn_create(canvas, NULL); + btn = lv_imgbtn_create(canvas, NULL); //lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_SETTING_VOLTE); //lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_SETTING_VOLTE); //lv_obj_set_event_cb(btn, voip_local_remote_switch_action); //lv_obj_align(btn, canvas, LV_ALIGN_IN_BOTTOM_MID, 0, -20); //lv_obj_add_style(btn, LV_OBJ_PART_MAIN, &lv_watch_style_transp); - //ext->view_switch_button = btn; + ext->view_switch_button = btn; // btn ring off btn = lv_imgbtn_create(canvas, NULL); @@ -1412,21 +1304,21 @@ static void mmi_vc_ui_connected(lv_obj_t * content) lv_obj_set_hidden(ext->connect_time, ext->canvas_button_hidden_flag); lv_obj_set_hidden(ext->ring_value_button, ext->canvas_button_hidden_flag); - lv_obj_set_hidden(ext->view_switch_button, ext->canvas_button_hidden_flag); + lv_obj_set_hidden(ext->view_switch_button, true); // lv_obj_set_hidden(ext->view_switch_button, ext->canvas_button_hidden_flag); lv_obj_set_hidden(ext->ring_off_button, ext->canvas_button_hidden_flag); } - if(voip_phone_get_obj()) { - lv_watch_obj_set_down_slide_cb(voip_phone_get_obj(), voip_phone_down_slide_callback); + if(mmi_vc_call_get_obj()) { + lv_watch_obj_set_down_slide_cb(mmi_vc_call_get_obj(), voip_phone_down_slide_callback); } } } -static lv_obj_t * mmi_vc_ui_create(lv_obj_t * activity_obj, MMI_VIDEO_CALL_UI_E video_call_ui) +static lv_obj_t * mmi_vc_ui_create(lv_obj_t * activity_obj) { printf("%s %d\n", __FUNCTION__, __LINE__); - if(MMI_VC_UI_CONNECTED == video_call_ui) + if(MMI_VC_UI_CONNECTED == s_vc_call_ui) { /* set speaker volume to nv when leaving activiry's slider */ voip_set_volume_when_slider_act(); @@ -1435,38 +1327,40 @@ static lv_obj_t * mmi_vc_ui_create(lv_obj_t * activity_obj, MMI_VIDEO_CALL_UI_E /* cleanup phone first */ voip_phone_cleanup(); + lv_watch_png_cache_all_free(); + if(activity_obj == NULL) { lv_watch_activity_ext_t activity_ext = {0}; activity_ext.actId = ACT_ID_VOIPPHONE; - activity_ext.create = NULL; - activity_ext.prepare_destory = voip_phone_prepare_destory; - activity_obj = lv_watch_creat_activity_obj(&activity_ext); - LV_ASSERT_MEM(activity_obj); - if(activity_obj == NULL) { - return(NULL); + activity_ext.create = NULL; // mmi_vc_ui_create; + activity_ext.prepare_destory = mmi_vc_ui_prepare_destory; + activity_obj = lv_watch_creat_activity_obj(&activity_ext); + if(NULL == activity_obj) + { + return NULL; } } lv_obj_t * obj = lv_watch_obj_create(activity_obj); - LV_ASSERT_MEM(obj); - if(obj == NULL) { + if(obj == NULL) + { return(NULL); } lv_watch_obj_set_anim_mode(obj, LV_WATCH_LEFT_OR_RIGHT_SLIDE_CALLBACK); lv_watch_obj_set_left_slide_cb(obj, voip_phone_left_slide_callback); lv_watch_obj_set_right_slide_cb(obj, voip_phone_right_slide_callback); - lv_voip_phone_obj_ext_t * ext = lv_obj_allocate_ext_attr(obj, sizeof(lv_voip_phone_obj_ext_t)); - LV_ASSERT_MEM(ext); - if(ext == NULL) { + lv_vc_call_obj_ext_t * ext = lv_obj_allocate_ext_attr(obj, sizeof(lv_vc_call_obj_ext_t)); + if(ext == NULL) + { return(NULL); } ext->phone_status_label = NULL; ext->phone_animation_obj = NULL; - ext->phone_ui_t = video_call_ui; + ext->phone_ui_t = s_vc_call_ui; ext->local_remote_switch_flag = VOIP_REMOTE_SWITCH_NULL; #if ENABLE_VIDEO_SCALE == 0 ext->voiph263fmt = VOIP_H263_FMT_QCIF; @@ -1487,41 +1381,46 @@ static lv_obj_t * mmi_vc_ui_create(lv_obj_t * activity_obj, MMI_VIDEO_CALL_UI_E lv_obj_t * content = lv_cont_create(obj, NULL); lv_obj_set_size(content, lv_obj_get_width(obj), lv_obj_get_height(obj)); // lv_obj_get_height(obj) - 20); //lv_cont_set_layout(content, LV_LAYOUT_COLUMN_MID); - LV_ASSERT_MEM(content); - if(content == NULL) { - return(NULL); - } - lv_obj_add_style(content, LV_OBJ_PART_MAIN, &lv_watch_style_transp); - /* must click false */ + //lv_obj_add_style(content, LV_OBJ_PART_MAIN, &lv_watch_style_transp); + lv_obj_set_style_local_bg_color(content, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); + //lv_watch_obj_add_element(cont); lv_obj_set_click(content, false); lv_obj_align(content, obj, LV_ALIGN_CENTER, 0, 0); - if(ext->phone_ui_t == MMI_VC_UI_DIALING) - { - mmi_vc_ui_dialing(content); - voip_dialing_animation(ext->phone_status_label); - } - else if(ext->phone_ui_t == MMI_VC_UI_INCOMING) + switch(ext->phone_ui_t) { - mmi_vc_ui_incoming(content); - voip_ring_animation(ext->phone_status_label); - } - else if(ext->phone_ui_t == PHONE_UI_CONNECTED) - { - mmi_vc_ui_connected(content); - voip_connected_animation(ext->phone_status_label); - } + case MMI_VC_UI_INCOMING: + mmi_vc_ui_incoming(content); + voip_ring_animation(ext->phone_status_label); + break; + + case MMI_VC_UI_DIALING: + mmi_vc_ui_dialing(content); + voip_dialing_animation(ext->phone_status_label); + break; + + case MMI_VC_UI_CONNECTING: + mmi_vc_ui_connecting(content); + voip_connecting_animation(ext->phone_status_label); + break; + + case MMI_VC_UI_CONNECTED: + mmi_vc_ui_connected(content); + voip_connected_animation(ext->phone_status_label); + break; + + default: + break; + } return obj; } void mmi_vc_call_action_incoming(char * number, MODEM_VIDEO_CALL_TYPE type) { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %s,%d\n", __FUNCTION__, __LINE__, number, type); - if(true == mmi_active_screen_is_prohibit_interrupted() || true == is_rat_gsm()) { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %s,%d\n", __FUNCTION__, __LINE__); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %s,%d\n", __FUNCTION__, __LINE__); mmi_video_call_reject_req(TRUE); return; @@ -1529,13 +1428,15 @@ void mmi_vc_call_action_incoming(char * number, MODEM_VIDEO_CALL_TYPE type) if(AUDIO_CTRL_PRIORITY_2 == Hal_Audio_Manage_Start_Req(AUDIO_CTRL_PRIORITY_2, voip_audio_ctrl_callback)) { + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %s,%d\n", __FUNCTION__, __LINE__); + Hal_Mem_Set(&s_video_call_params, 0, sizeof(MMI_VIDEO_CALL_PARAMS_T)); s_video_call_params.call_type = type; s_video_call_params.is_mt = true; s_video_call_params.state = MMI_VIDEO_CALL_STATE_INCOMING; strncpy(s_video_call_params.number, number, NV_WATCH_VC_CONTACT_NUMBER_LEN - 1); - watch_set_lcd_status(true); + //watch_set_lcd_status(true); HAL_SPEAKER_GAIN volume = query_current_volume(); @@ -1546,12 +1447,16 @@ void mmi_vc_call_action_incoming(char * number, MODEM_VIDEO_CALL_TYPE type) Hal_NFFS_File_Play_Repeat(AUDIO_INCOMING_CALL, volume); voip_rat_check_start(); - mmi_vc_ui_create(NULL, MMI_VC_UI_INCOMING); + + s_vc_call_ui = MMI_VC_UI_INCOMING; + mmi_vc_ui_create(NULL); + + watch_set_lcd_status(true); } else { // AUDIO_CTRL_PRIORITY_1 - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %s,%d\n", __FUNCTION__, __LINE__); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %s,%d\n", __FUNCTION__, __LINE__); // auto reject mmi_video_call_reject_req(FALSE); @@ -1559,20 +1464,12 @@ void mmi_vc_call_action_incoming(char * number, MODEM_VIDEO_CALL_TYPE type) voip_rat_check_stop(); // stop ring off timer - if(NULL != s_video_call_params.ring_off_timer_id) - { - Hal_Timer_Stop(s_video_call_params.ring_off_timer_id); - s_video_call_params.ring_off_timer_id = NULL; - } + mmi_vc_ring_off_timer_stop(); // stop callreq timer - if(NULL != s_video_call_params.callreq_timer_id) - { - Hal_Timer_Stop(s_video_call_params.callreq_timer_id); - s_video_call_params.callreq_timer_id = NULL; - } + mmi_vc_dialing_timer_stop(); - Hal_Mem_Set(&s_video_call_params, 0, sizeof(MMI_VIDEO_CALL_PARAMS_T)); + Hal_Mem_Set(&s_video_call_params, 0x0, sizeof(MMI_VIDEO_CALL_PARAMS_T)); voip_set_volume_when_slider_act(); voip_phone_cleanup(); lv_watch_png_cache_all_free(); @@ -1580,65 +1477,92 @@ void mmi_vc_call_action_incoming(char * number, MODEM_VIDEO_CALL_TYPE type) } } +static void mmi_vc_call_connecting_timeout_cb(void * para) +{ + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + mmi_vc_connecting_timer_stop(); + mmi_video_call_hangup_req(TRUE); + //mmi_vc_ring_off_action(NULL, LV_EVENT_CLICKED); +} -void mmi_vc_call_action_connect(void) +void mmi_vc_call_action_connecting(void) { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); + if(MMI_VIDEO_CALL_STATE_CALLING == s_video_call_params.state + || MMI_VIDEO_CALL_STATE_CONNECTING == s_video_call_params.state + ) + { + return; + } + + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + s_video_call_params.state = MMI_VIDEO_CALL_STATE_CONNECTING; + + // stop timer + mmi_vc_dialing_timer_stop(); + mmi_vc_connecting_timer_stop(); + + // stop playing tone + Hal_Tone_Play_End(); + + //Hal_Set_Voice_Call_Status(VOICE_CALL_START); + + if(NULL == s_video_call_params.connecting_timer_id) + { + s_video_call_params.connecting_timer_id = Hal_Timer_Start(MMI_VC_CONNECTING_TIMEOUT, mmi_vc_call_connecting_timeout_cb, NULL, 0); + } + + s_vc_call_ui = MMI_VC_UI_CONNECTING; + mmi_vc_ui_create(NULL); +} + +void mmi_vc_call_action_connected(void) +{ if(MMI_VIDEO_CALL_STATE_CALLING == s_video_call_params.state) { return; } + + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + s_video_call_params.state = MMI_VIDEO_CALL_STATE_CALLING; - // stop callreq timer - if(NULL != s_video_call_params.callreq_timer_id) - { - Hal_Timer_Stop(s_video_call_params.callreq_timer_id); - s_video_call_params.callreq_timer_id = NULL; - } + // stop timer + mmi_vc_dialing_timer_stop(); + mmi_vc_connecting_timer_stop(); // stop playing tone Hal_Tone_Play_End(); Hal_Set_Voice_Call_Status(VOICE_CALL_START); - // create connected UI - mmi_vc_ui_create(NULL, MMI_VC_UI_CONNECTED); + s_vc_call_ui = MMI_VC_UI_CONNECTED; + mmi_vc_ui_create(NULL); } static void mmi_vc_call_dialing_timeout_cb(void * para) { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - s_video_call_params.callreq_timer_id = NULL; + mmi_vc_dialing_timer_stop(); mmi_video_call_hangup_req(TRUE); } void mmi_vc_call_action_dialing(char * number, MODEM_VIDEO_CALL_TYPE type) { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %s,%d\n", __FUNCTION__, __LINE__, number, type); - // check call state if(MMI_VIDEO_CALL_STATE_NONE != s_video_call_params.state) { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %d\n", __FUNCTION__, __LINE__, s_video_call_params.state); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, s_video_call_params.state); return; } - // stop ring off timer - if(NULL != call_params.ring_off_timer_id) - { - Hal_Timer_Stop(call_params.ring_off_timer_id); - call_params.ring_off_timer_id = NULL; - } + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %s,%d\n", __FUNCTION__, __LINE__, number, type); - // stop callreq timer - if(NULL != s_video_call_params.callreq_timer_id) - { - Hal_Timer_Stop(s_video_call_params.callreq_timer_id); - s_video_call_params.callreq_timer_id = NULL; - } + // stop timer + mmi_vc_ring_off_timer_stop(); + mmi_vc_dialing_timer_stop(); // set call parameters Hal_Mem_Set(&s_video_call_params, 0, sizeof(MMI_VIDEO_CALL_PARAMS_T)); @@ -1648,22 +1572,25 @@ void mmi_vc_call_action_dialing(char * number, MODEM_VIDEO_CALL_TYPE type) strcpy(s_video_call_params.number, number); int8_t ret = mmi_video_call_dial_req(type, s_video_call_params.number); - if(NULL == s_video_call_params.callreq_timer_id) + if(NULL == s_video_call_params.dialing_timer_id) { - UINT32 timeout = (ret >= 0) ? VOIP_CALLREQ_TIME_OUT : 1*1000; + UINT32 timeout = (ret >= 0) ? MMI_VC_DIALING_TIMEOUT : 1*1000; - s_video_call_params.callreq_timer_id = Hal_Timer_Start(timeout, mmi_vc_call_dialing_timeout_cb, NULL, 0); + s_video_call_params.dialing_timer_id = Hal_Timer_Start(timeout, mmi_vc_call_dialing_timeout_cb, NULL, 0); } - // create dialing UI + voip_rat_check_start(); - mmi_vc_ui_create(NULL, MMI_VC_UI_DIALING); + + s_vc_call_ui = MMI_VC_UI_DIALING; + mmi_vc_ui_create(NULL); + Hal_Audio_Manage_Start_Req(AUDIO_CTRL_PRIORITY_2, voip_audio_ctrl_callback); Hal_Set_Voice_Call_Status(VOICE_CALL_START); } static void mmi_vc_main_prepare_destory(lv_obj_t * activity_obj) { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); lv_watch_png_cache_all_free(); @@ -1674,15 +1601,17 @@ static void mmi_vc_main_prepare_destory(lv_obj_t * activity_obj) } } -void mmi_video_call_fail_timeout_cb(void *para) +void mmi_vc_call_fail_timeout_cb(void *para) { mmi_vc_main_prepare_destory(NULL); } -static void mmi_video_call_fail(lv_obj_t * obj) +static void mmi_vc_call_action_no_permission(void) { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + lv_obj_t * obj = lv_watch_get_activity_obj(ACT_ID_VOIP_PHONEBOOK); + lv_obj_t * cont = lv_cont_create(obj, NULL); lv_cont_set_fit(cont, LV_FIT_NONE); lv_obj_set_size(cont, lv_obj_get_width(obj), lv_obj_get_height(obj)); @@ -1691,13 +1620,13 @@ static void mmi_video_call_fail(lv_obj_t * obj) lv_obj_set_click(cont, false); lv_obj_t * label = lv_label_create(cont, NULL); - lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font26); // &lv_watch_font20); + lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font26); lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); lv_obj_set_click(label, false); lv_label_set_text_id(label, WATCH_TEXT_ID_NO_SIM_OR_NETWORK); // WATCH_TEXT_ID_NO_CONTACTS_OR_NETWORK); lv_obj_align(label, cont, LV_ALIGN_CENTER, 0, 0); - TIMER_ID timer_id = Hal_Timer_Start(2*1000, mmi_video_call_fail_timeout_cb, NULL, FALSE); + fail_timer_id = Hal_Timer_Start(2*1000, mmi_vc_call_fail_timeout_cb, NULL, FALSE); } static void mmi_vc_voice_btn_action(lv_obj_t * btn, lv_event_t e) @@ -1707,17 +1636,15 @@ static void mmi_vc_voice_btn_action(lv_obj_t * btn, lv_event_t e) return; } - if(true == mmi_video_call_check_mo_permission()) + if(true == mmi_vc_check_mo_permission()) { - #ifdef __VIDEO_CALL_TEST__ - mmi_vc_call_action_dialing(MMI_VC_ROOM_ID, MODEM_VIDEO_CALL_TYPE_VOICE); - #else - mmi_vc_call_action_dialing(s_vc_contact.number[0], MODEM_VIDEO_CALL_TYPE_VOICE); - #endif + uint8_t index = lv_watch_get_free_num(btn); + + mmi_vc_call_action_dialing(s_vc_contact.number[index], MODEM_VIDEO_CALL_TYPE_VOICE); } else { - mmi_video_call_fail(lv_watch_get_activity_obj(ACT_ID_VOIP_PHONEBOOK)); + mmi_vc_call_action_no_permission(); } } @@ -1728,20 +1655,171 @@ static void mmi_vc_video_btn_action(lv_obj_t * btn, lv_event_t e) return; } - if(true == mmi_video_call_check_mo_permission()) + if(true == mmi_vc_check_mo_permission()) { - #ifdef __VIDEO_CALL_TEST__ - mmi_vc_call_action_dialing(MMI_VC_ROOM_ID, MODEM_VIDEO_CALL_TYPE_VIDEO); - #else - mmi_vc_call_action_dialing(s_vc_contact.number[0], MODEM_VIDEO_CALL_TYPE_VIDEO); - #endif + uint8_t index = lv_watch_get_free_num(btn); + + mmi_vc_call_action_dialing(s_vc_contact.number[index], MODEM_VIDEO_CALL_TYPE_VIDEO); } else { - mmi_video_call_fail(lv_watch_get_activity_obj(ACT_ID_VOIP_PHONEBOOK)); + mmi_vc_call_action_no_permission(); } } +static void mmi_vc_dial_btn_screen(lv_obj_t * btn, lv_event_t e) +{ + if(LV_EVENT_CLICKED != e) + { + return; + } + + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + lv_obj_t * obj = lv_watch_get_activity_obj(ACT_ID_VOIP_PHONEBOOK); + uint8_t index = lv_watch_get_free_num(btn); + + lv_obj_t * cont = lv_cont_create(obj, NULL); + lv_cont_set_fit(cont, LV_FIT_NONE); + lv_obj_set_size(cont, LV_HOR_RES, LV_VER_RES); // lv_obj_get_width(obj), lv_obj_get_height(obj)); + lv_obj_set_style_local_bg_color(cont, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); + lv_cont_set_layout(cont, LV_LAYOUT_OFF); + lv_obj_set_click(cont, false); + + lv_obj_t * voicebtn = lv_imgbtn_create(cont, NULL); + lv_imgbtn_set_src(voicebtn, LV_BTN_STATE_RELEASED, ICON_VIDEO_CALL_VOICE_BTN); + lv_imgbtn_set_src(voicebtn, LV_BTN_STATE_PRESSED, ICON_VIDEO_CALL_VOICE_BTN); + lv_obj_align(voicebtn, cont, LV_ALIGN_IN_TOP_MID, 0, 10); + lv_obj_set_event_cb(voicebtn, mmi_vc_voice_btn_action); + lv_watch_set_free_num(voicebtn, index); + + lv_obj_t * videobtn = lv_imgbtn_create(cont, NULL); + lv_imgbtn_set_src(videobtn, LV_BTN_STATE_RELEASED, ICON_VIDEO_CALL_VIDEO_BTN); + lv_imgbtn_set_src(videobtn, LV_BTN_STATE_PRESSED, ICON_VIDEO_CALL_VIDEO_BTN); + lv_obj_align(videobtn, cont, LV_ALIGN_IN_BOTTOM_MID, 0, -10); + lv_obj_set_event_cb(videobtn, mmi_vc_video_btn_action); + lv_watch_set_free_num(videobtn, index); +} + +static lv_obj_t * mmi_vc_contact_list_create(lv_obj_t * obj) +{ + /*Allocate the object type specific extended data*/ + lv_vc_contact_list_obj_ext_t * ext = lv_obj_allocate_ext_attr(obj, sizeof(lv_vc_contact_list_obj_ext_t)); + /*ext realloc based on watch_obj_ext, do not memeset it*/ + if(NULL == ext) + { + return NULL; + } + + ext->title = NULL; + ext->list = NULL; + + /* content */ + lv_obj_t * content = lv_cont_create(obj, NULL); + lv_cont_set_fit(content, LV_FIT_NONE); + lv_obj_set_size(content, lv_obj_get_width(obj), lv_obj_get_height(obj)); + lv_obj_add_style(content,LV_OBJ_PART_MAIN, &lv_watch_style_transp); + lv_obj_set_style_local_bg_color(content, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); + lv_cont_set_layout(content, LV_LAYOUT_OFF); // lv_cont_set_layout(content, LV_LAYOUT_COLUMN_MID); + lv_obj_set_click(content, false); + lv_obj_align(content, obj, LV_ALIGN_CENTER, 0, 0); + + lv_obj_t * label = lv_label_create(content, NULL); + lv_obj_set_size(label, LV_HOR_RES, 40); // 30); + lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font20_gray); + lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); + lv_label_set_text_id(label, WATCH_TEXT_ID_VIDEOCALL); + lv_obj_align(label, NULL, LV_ALIGN_IN_TOP_MID, 0, 5); + lv_obj_set_click(label, false); + ext->title = label; + + lv_obj_t * list = lv_list_create(content, NULL); + if(list == NULL) + { + return NULL; + } + lv_watch_obj_add_element(list); + lv_watch_obj_add_element(lv_page_get_scrl(list)); + lv_obj_add_style(list, LV_LIST_PART_BG, &lv_watch_style_transp); + //lv_obj_add_style(list, LV_LIST_PART_SCROLLABLE, &lv_watch_style_transp); + //lv_obj_set_style_local_pad_top(list, LV_LIST_PART_SCROLLABLE, LV_STATE_DEFAULT, 4); + //lv_obj_set_style_local_pad_bottom(list, LV_LIST_PART_SCROLLABLE, LV_STATE_DEFAULT, 4); + lv_list_set_scrollbar_mode(list, LV_SCROLLBAR_MODE_OFF); + lv_page_set_scrollbar_mode(list, LV_SCROLLBAR_MODE_OFF); + lv_obj_set_width(list, lv_obj_get_width(content)); + lv_coord_t height = lv_obj_get_height(content) - lv_obj_get_height(label); + lv_obj_set_height(list, height); + lv_obj_align(list, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, 0); + lv_obj_set_click(list, false); + ext->list = list; + + int8_t i = 0; + lv_obj_t * btn; + + for(i = 0; i < s_vc_contact.total; i++) + { + char t_str[NV_WATCH_VC_CONTACT_NUMBER_LEN] = {0}; + + if(0 < strlen(s_vc_contact.name[i])) + strcpy(t_str, s_vc_contact.name[i]); + else + strcpy(t_str, s_vc_contact.number[i]); + + #if 0 + btn = lv_list_add_btn(list, NULL, t_str); + lv_page_glue_obj(btn, true); + //lv_obj_add_protect(btn, LV_PROTECT_PRESS_LOST); + lv_obj_set_event_cb(btn, mmi_vc_dial_btn_screen); + lv_watch_obj_add_element(btn); + + lv_obj_set_style_local_bg_color(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); + lv_obj_set_style_local_pad_top(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 6); + lv_obj_set_style_local_pad_bottom(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 6); + lv_obj_set_style_local_pad_left(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 15); + lv_obj_set_style_local_pad_right(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 15); + lv_obj_set_style_local_pad_inner(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 10); + + //lv_obj_set_size(btn, lv_obj_get_width(list), 80); //56); + + //label = lv_obj_get_child(btn, NULL); + //label = lv_list_get_btn_label(btn); + //lv_label_set_long_mode(label, LV_LABEL_LONG_EXPAND); + //lv_label_set_text(label, t_str); + //lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font26); + //lv_obj_align(label, btn, LV_ALIGN_IN_LEFT_MID, 0, 0); + #else + + btn = lv_list_add_btn(list, NULL, NULL); + //lv_page_glue_obj(btn, true); + //lv_obj_add_protect(btn, LV_PROTECT_PRESS_LOST); + lv_obj_set_event_cb(btn, mmi_vc_dial_btn_screen); + lv_watch_obj_add_element(btn); + + lv_obj_set_style_local_bg_color(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); + lv_obj_set_style_local_pad_top(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 5); + lv_obj_set_style_local_pad_bottom(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 5); + lv_obj_set_style_local_pad_left(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 15); + lv_obj_set_style_local_pad_right(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 15); + lv_obj_set_style_local_pad_inner(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 10); + + //label = lv_obj_get_child(btn, NULL); + //label = lv_list_get_btn_label(btn); + label = lv_label_create(btn, NULL); + //lv_label_set_long_mode(label, LV_LABEL_LONG_SROLL); // LV_LABEL_LONG_SROLL_CIRC + lv_obj_set_width(label, lv_obj_get_width(btn)); + lv_label_set_text(label, t_str); + lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font26); + lv_label_set_align(label, LV_LABEL_ALIGN_LEFT); + lv_obj_set_click(label, false); + //lv_obj_align(label, btn, LV_ALIGN_IN_LEFT_MID, 0, 0); + #endif + + lv_watch_set_free_num(btn, i); + } + + return obj; +} + static lv_obj_t * mmi_vc_main_create(lv_obj_t * activity_obj) { if(activity_obj == NULL) @@ -1760,59 +1838,33 @@ static lv_obj_t * mmi_vc_main_create(lv_obj_t * activity_obj) if(NULL == obj) return NULL; - if(false == mmi_video_call_check_mo_permission()) + if(false == mmi_vc_check_mo_permission()) { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); lv_obj_t * label = lv_label_create(obj, NULL); - - lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font26); // &lv_watch_font20); + lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font26); lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); lv_obj_set_click(label, false); lv_label_set_text_id(label, WATCH_TEXT_ID_NO_SIM_OR_NETWORK); // WATCH_TEXT_ID_NO_CONTACTS_OR_NETWORK); lv_obj_align(label, obj, LV_ALIGN_CENTER, 0, 0); - - //lv_watch_set_free_num(activity_obj, 0); } - else + else if(0 == s_vc_contact.total) { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - - #if 0 - lv_obj_t * obj = lv_watch_list_create(NULL); - if(obj == NULL) - return NULL; - - lv_watch_list_set_name_txt(obj, WATCH_TEXT_ID_SETTINGS); - - for(int8_t i = 0; i < (sizeof(settingList) / sizeof(settingList[0])); i++) - { - lv_watch_list_add(obj, (void *)settingList[i].img_src, settingList[i].txtId, settingList[i].event_cb); - } - - #else - lv_obj_t * cont = lv_cont_create(obj, NULL); - lv_cont_set_fit(cont, LV_FIT_NONE); - lv_obj_set_size(cont, lv_obj_get_width(obj), lv_obj_get_height(obj)); - lv_obj_set_style_local_bg_color(cont, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); - lv_cont_set_layout(cont, LV_LAYOUT_OFF); - lv_obj_set_click(cont, false); - - lv_obj_t * voicebtn = lv_imgbtn_create(cont, NULL); - lv_imgbtn_set_src(voicebtn, LV_BTN_STATE_RELEASED, ICON_VIDEO_CALL_VOICE_BTN); - lv_imgbtn_set_src(voicebtn, LV_BTN_STATE_PRESSED, ICON_VIDEO_CALL_VOICE_BTN); - lv_obj_align(voicebtn, cont, LV_ALIGN_IN_TOP_MID, 0, 10); - lv_obj_set_event_cb(voicebtn, mmi_vc_voice_btn_action); + lv_obj_t * label = lv_label_create(obj, NULL); + lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font26); + lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); + lv_obj_set_click(label, false); + lv_label_set_text_id(label, WATCH_TEXT_ID_NO_CONTACTS); + lv_obj_align(label, obj, LV_ALIGN_CENTER, 0, 0); + } + else + { + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - lv_obj_t * videobtn = lv_imgbtn_create(cont, NULL); - lv_imgbtn_set_src(videobtn, LV_BTN_STATE_RELEASED, ICON_VIDEO_CALL_VIDEO_BTN); - lv_imgbtn_set_src(videobtn, LV_BTN_STATE_PRESSED, ICON_VIDEO_CALL_VIDEO_BTN); - lv_obj_align(videobtn, cont, LV_ALIGN_IN_BOTTOM_MID, 0, -10); - lv_obj_set_event_cb(videobtn, mmi_vc_video_btn_action); - - //lv_watch_set_free_num(activity_obj, 1); - #endif + mmi_vc_contact_list_create(obj); } return(obj); @@ -1820,6 +1872,17 @@ static lv_obj_t * mmi_vc_main_create(lv_obj_t * activity_obj) void video_call_create_event_cb(lv_obj_t * btn, lv_event_t e) { +#ifdef __VIDEO_CALL_TEST__ + nv_watch_vc_contact_t t_test_contact = + { + 3, + {"test001", "test002", "test003"}, + {"jrtc001", "jrtc002", "jrtc003"} + }; + + _lv_memcpy(&s_vc_contact, &t_test_contact, sizeof(nv_watch_vc_contact_t)); +#endif + if(LV_EVENT_CLICKED == e) { lv_watch_png_cache_all_free(); @@ -1849,6 +1912,7 @@ bool watch_voip_suspend_check(void) if((s_video_call_params.call_type == MODEM_VIDEO_CALL_TYPE_VIDEO) || (MMI_VIDEO_CALL_STATE_INCOMING == s_video_call_params.state) || (MMI_VIDEO_CALL_STATE_DIALING == s_video_call_params.state) + || (MMI_VIDEO_CALL_STATE_CONNECTING == s_video_call_params.state) ) { return false; @@ -1861,7 +1925,7 @@ bool watch_voip_suspend_check(void) bool voip_connect_check_req(void) { #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__ - if(voip_phone_get_activity_obj()) + if(mmi_vc_call_get_activity_obj()) { return true; } @@ -1873,9 +1937,9 @@ bool voip_connect_check_req(void) void voip_activity_destroy_req(void) { #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__ - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - lv_obj_t * activity_obj = voip_phone_get_activity_obj(); + lv_obj_t * activity_obj = mmi_vc_call_get_activity_obj(); if(NULL == activity_obj) { return; @@ -1905,20 +1969,12 @@ void voip_activity_destroy_req(void) voip_signal_check_stop(); voip_rat_check_stop(); - // stop ring off timer - if(NULL != s_video_call_params.ring_off_timer_id) { - Hal_Timer_Stop(s_video_call_params.ring_off_timer_id); - s_video_call_params.ring_off_timer_id = NULL; - } + // stop timer + mmi_vc_ring_off_timer_stop(); + mmi_vc_dialing_timer_stop(); + mmi_vc_connecting_timer_stop(); - // stop callreq timer - if(NULL != s_video_call_params.callreq_timer_id) { - Hal_Timer_Stop(s_video_call_params.callreq_timer_id); - s_video_call_params.callreq_timer_id = NULL; - } - - Hal_Mem_Set(&s_video_call_params, 0, sizeof(MMI_VIDEO_CALL_PARAMS_T)); - s_video_call_params.state = MMI_VIDEO_CALL_STATE_NONE; + Hal_Mem_Set(&s_video_call_params, 0x0, sizeof(MMI_VIDEO_CALL_PARAMS_T)); voip_set_volume_when_slider_act(); voip_phone_cleanup(); lv_watch_png_cache_all_free(); diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call.h b/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call.h index cf5c4233..18f4be2a 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call.h +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/mmi_video_call.h @@ -71,7 +71,8 @@ uint8_t voip_get_call_volume(void); #define VIDEO_RAT_CHECK_PERIOD 200 #define VIDEO_CALL_FPS_CHECK_LIMIT 5 -#define VOIP_CALLREQ_TIME_OUT 60*1000 +#define MMI_VC_DIALING_TIMEOUT (60*1000) +#define MMI_VC_CONNECTING_TIMEOUT (30*1000) #if USE_LV_WATCH_UI_240_320 #define MMI_VC_RING_OFF_BTN_Y_OFFSET (-30) @@ -98,13 +99,6 @@ uint8_t voip_get_call_volume(void); * TYPEDEFS **********************/ -enum voipregisterstate -{ - VOIP_REGISTER_OK = 0, - VOIP_UNREGISTERING, - VOIP_REGISTER_FAIL -}; - /** H.263 picture size format */ enum voip_h263_fmt { VOIP_H263_FMT_SQCIF = 1, /**< 128 x 96 */ @@ -127,37 +121,21 @@ enum enum_canvas_button_hidden_flag HIDDEN }; -#define VOIP_PHONEBOOK_CONTACTS_MAX_NAME_LEN NV_CONTACTS_MAX_NAME_LEN -#define VOIP_PHONEBOOK_CONTACTS_MAX_NUMBER_LEN NV_CONTACTS_MAX_NUMBER_LEN - -typedef struct { - char contact_name[VOIP_PHONEBOOK_CONTACTS_MAX_NAME_LEN]; - char contact_number[VOIP_PHONEBOOK_CONTACTS_MAX_NUMBER_LEN]; - const void * img_src; - const void * img_src_small; - uint8_t contact_type; /*0:administrator, 1:standby administrator, 2: others*/ -} voip_phonebook_contact_t; - -typedef nv_watch_phonebook_info_t voip_phonebook_t; typedef struct { lv_watch_obj_ext_t lv_watch_obj; /*New data for this type */ - uint8_t body_padding_inner; - uint8_t append_width; - uint8_t cur_img_id; - voip_phonebook_t * cur_contact; - lv_ll_t contact_list; - lv_obj_t * label_phone_contact; - lv_obj_t * page_scrl; - lv_coord_t move_width; -} lv_voip_phonebook_obj_ext_t; + lv_obj_t * title; + lv_obj_t * list; +} lv_vc_contact_list_obj_ext_t; typedef enum { MMI_VC_UI_INCOMING = 0, MMI_VC_UI_DIALING, + MMI_VC_UI_CONNECTING, MMI_VC_UI_CONNECTED, + MMI_VC_UI_INVALID, } MMI_VIDEO_CALL_UI_E; typedef enum @@ -166,6 +144,7 @@ typedef enum MMI_VIDEO_CALL_STATE_CALLING, MMI_VIDEO_CALL_STATE_INCOMING, MMI_VIDEO_CALL_STATE_DIALING, + MMI_VIDEO_CALL_STATE_CONNECTING, MMI_VIDEO_CALL_STATE_INVALID, }MMI_VIDEO_CALL_STATE_E; @@ -184,8 +163,9 @@ typedef struct { //const void * img_src; //const void * img_src_small; MODEM_VIDEO_CALL_TYPE call_type; - TIMER_ID callreq_timer_id; /* callreq timer */ - uint8_t speaker_volume; /* speaker volume during call procedure */ + TIMER_ID dialing_timer_id; + TIMER_ID connecting_timer_id; + uint8_t speaker_volume; /* speaker volume during call procedure */ } MMI_VIDEO_CALL_PARAMS_T; typedef struct { @@ -204,12 +184,13 @@ typedef struct { enum enum_canvas_button_hidden_flag canvas_button_hidden_flag; lv_obj_t * signal_weak_label; lv_obj_t * canvas; -} lv_voip_phone_obj_ext_t; +}lv_vc_call_obj_ext_t; + /********************** * GLOBAL PROTOTYPES **********************/ -lv_voip_phone_obj_ext_t * voip_phone_get_ext(void); +lv_vc_call_obj_ext_t * mmi_vc_call_get_ext(void); bool check_voipcall_enter_pm_ind(void); void watch_voip_message_handle_init(void); @@ -222,10 +203,10 @@ void mmi_vc_contact_set(nv_watch_vc_contact_t * contact_list); void * mmi_video_call_phone_get_video_buffer(void); void mmi_vc_ring_off_no_carrier(uint8_t isNoCarrier); - -void mmi_vc_call_action_incoming(char * number, MODEM_VIDEO_CALL_TYPE type); -void mmi_vc_call_action_connect(void); void mmi_vc_call_action_dialing(char * number, MODEM_VIDEO_CALL_TYPE type); +void mmi_vc_call_action_incoming(char * number, MODEM_VIDEO_CALL_TYPE type); +void mmi_vc_call_action_connecting(void); +void mmi_vc_call_action_connected(void); int8_t mmi_video_call_dial_req(MODEM_VIDEO_CALL_TYPE calltype, char * pContactUri); diff --git a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c index 81364b01..4ac615a5 100644 --- a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c +++ b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c @@ -932,8 +932,15 @@ bool mmi_protocol_fzd_parse_SERVER_SET_POWEROFF(unsigned char * next_buff, unsig result = true; mmi_protocol_fzd_send_without_data(action); +#if 1 uos_sleep(10); mmi_watch_power_off(); +#else // debug vc + char t_number[NV_WATCH_VC_CONTACT_NUMBER_LEN] = "1234567890"; + uint8_t t_calltype = 0; + + mmi_vc_call_action_incoming(t_number, t_calltype); +#endif return result; } @@ -2013,7 +2020,7 @@ bool mmi_protocol_fzd_parse_WATCH_GET_VC_CONFIG(unsigned char * next_buff, unsig t_tokens = km_strtok_r(NULL, ",", &next_buff); t_appkey = km_strtok_r(NULL, ",", &next_buff); - t_key = km_strtok_r(NULL, ",", &next_buff); + t_key = next_buff; mmi_video_call_jrtc_config_init_01(t_appkey, t_key, t_tokens); @@ -2060,9 +2067,13 @@ bool mmi_protocol_fzd_parse_WATCH_GET_VC_CONTACT(unsigned char * next_buff, unsi { t_len_1 = FZD_MIN(strlen(temp_ptr), (NV_WATCH_VC_CONTACT_NAME_LEN - 1) * 4); mmi_unicode_hex_str_to_utf8_str(temp_ptr, t_len_1, t_vc_contact.name[i], &t_len_2); + + //PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %d,%d\n", __FUNCTION__, __LINE__, t_len_1, t_len_2); + //PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %s\n", __FUNCTION__, __LINE__, temp_ptr); } else { + //PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); break; } @@ -2113,8 +2124,7 @@ bool mmi_protocol_fzd_parse_WATCH_VC_CALL_REQUEST(unsigned char * next_buff, uns if(0 == t_value) { // the other party is not online - - + mmi_vc_ring_off_action(NULL, LV_EVENT_CLICKED); } else { @@ -2124,7 +2134,7 @@ bool mmi_protocol_fzd_parse_WATCH_VC_CALL_REQUEST(unsigned char * next_buff, uns return result; } -// 1£º¶Ô·½½ÓÊÜ£»0£º¶Ô·½¾Ü¾ø +// state: 1-other accept; 0-other reject bool mmi_protocol_fzd_parse_SERVER_VC_CALL_RESPONSE(unsigned char * next_buff, unsigned int next_buff_len) { bool result = false; @@ -2145,13 +2155,11 @@ bool mmi_protocol_fzd_parse_SERVER_VC_CALL_RESPONSE(unsigned char * next_buff, u if(0 == t_value) { // the other party is reject - - + mmi_vc_ring_off_action(NULL, LV_EVENT_CLICKED); } else { - // connect - mmi_vc_call_action_connect(); + // wait, do nothing } return result; @@ -2184,7 +2192,7 @@ bool mmi_protocol_fzd_parse_SERVER_VC_CALL_REQUEST(unsigned char * next_buff, un return result; } -// state: 1£ºaccept; 0£ºreject +// state: 1-watch accept; 0-watch reject bool mmi_protocol_fzd_action_VC_CALL_RESPONSE(char * number, uint8_t state) { bool result = false; diff --git a/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.c b/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.c index 751708b8..a7ce3650 100644 --- a/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.c +++ b/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.c @@ -111,8 +111,14 @@ void mmi_watch_search_screen_destroy(void) lv_watch_png_cache_all_free(); //lv_obj_del_async(lv_watch_get_activity_obj(ACT_ID_WATCH_SEARCHING)); + lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_WATCH_SEARCHING); + if(activity_obj) + { + lv_obj_del(activity_obj); + } watch_set_suspend_enable(true, ACT_ID_WATCH_SEARCHING, 0); + //watch_wakeup_time_reset(); } void mmi_watch_search_screen_event_cb(lv_obj_t * obj, lv_event_t e) diff --git a/2.sdk/sdk/gui/lv_watch/modem/modem_adp.c b/2.sdk/sdk/gui/lv_watch/modem/modem_adp.c index d7ecc80b..ca184912 100644 --- a/2.sdk/sdk/gui/lv_watch/modem/modem_adp.c +++ b/2.sdk/sdk/gui/lv_watch/modem/modem_adp.c @@ -135,7 +135,8 @@ void watch_modem_power_off_req(void) void watch_modem_get_imei_req(char * imei) { //static char tmp_imei[16] = "867387060319199"; - //memcpy(imei, tmp_imei, 16); + //static char tmp_imei[16] = "860132060004801"; // juphoon video call + //memcpy(imei, tmp_imei, 16); MMI_Modem_Query_Imei_Req(modem_sim_id, imei); }