From: CCC <2393524978@qq.com> Date: Wed, 12 Jul 2023 02:33:00 +0000 (+0800) Subject: gengxin X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=b4ace97b428ca0762af23f1506dfeb4ec516dc34;p=mirrors%2FASR3603_Z5.git gengxin --- diff --git a/2.sdk/new_clean.sh b/2.sdk/new_clean.sh index 843e26d2..a86267cf 100644 --- a/2.sdk/new_clean.sh +++ b/2.sdk/new_clean.sh @@ -7,6 +7,15 @@ elif [ ! -e "project/$1" ] ; then else echo $1 + build_time=$(date "+%Y%m%d_%H%M%S") + echo $build_time + + typeset -u t_str + t_str=$1 + echo "#define MMI_BUILD_PROJECT \"$t_str\"" > sdk/build_info.h + echo >> sdk/build_info.h + echo "#define MMI_BUILD_TIME \"$build_time\"" >> sdk/build_info.h + cp project/$1/make_option.mk sdk/ cd sdk diff --git a/2.sdk/project/Z5_K6/make_option.mk b/2.sdk/project/Z5_K6/make_option.mk index b3bd810c..0995065d 100644 --- a/2.sdk/project/Z5_K6/make_option.mk +++ b/2.sdk/project/Z5_K6/make_option.mk @@ -1,7 +1,7 @@ # # PS_MODE = { LTEONLY, LTEGSM, LWG } # c use LTEGSM; s use LWG # -PS_MODE := LWG +PS_MODE := LTEGSM # diff --git a/2.sdk/sdk/gui/lv_watch/app_adaptor/app_adaptor.c b/2.sdk/sdk/gui/lv_watch/app_adaptor/app_adaptor.c index c03b5bdd..3614fabc 100644 --- a/2.sdk/sdk/gui/lv_watch/app_adaptor/app_adaptor.c +++ b/2.sdk/sdk/gui/lv_watch/app_adaptor/app_adaptor.c @@ -121,18 +121,41 @@ void app_adaptor_get_weather_req(app_adaptor_weather_t * weather) #endif } + +#ifdef __MMI_ZHSX_SUPPORT__ +#include "../../../build_info.h" +#endif + char * app_adaptor_get_model_id(void) { +#ifdef __MMI_ZHSX_SUPPORT__ + static char s_project[32] = {0}; + + snprintf(s_project, 31, "%s", MMI_BUILD_PROJECT); + + return s_project; + +#else static char model[] = "ASR01"; return model; +#endif } char * app_adaptor_get_version(void) { +#ifdef __MMI_ZHSX_SUPPORT__ + static char s_version[32] = {0}; + + snprintf(s_version, 31, "%s", MMI_BUILD_TIME); + + return s_version; + +#else static char version[40] = {}; snprintf(version, 40, "%s\n%s", __DATE__, __TIME__); return version; +#endif } char* test_get_version(void) { 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 869091a3..aeecf8e5 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 @@ -124,9 +124,9 @@ static void mmi_video_call_jrtc_on_state(lv_task_t * task) s_video_call_jrtc.closed_timer_id = Hal_Timer_Start(100, mmi_video_call_jrtc_timeout_cb, NULL, 0); } - if(MMI_VOIP_CALL_STATE_NULL != mmi_video_call_params_state_get()) + if(MMI_VIDEO_CALL_STATE_NONE != mmi_video_call_params_state_get()) { - watch_voip_call_response_no_carrier(0, 1); + mmi_vc_ring_off_no_carrier(1); } break; @@ -143,9 +143,9 @@ static void mmi_video_call_jrtc_on_state(lv_task_t * task) break; case JRTC_TALKING: - if(MMI_VOIP_CALL_STATE_ACTIVE != mmi_video_call_params_state_get()) + if(MMI_VIDEO_CALL_STATE_CALLING != mmi_video_call_params_state_get()) { - watch_voip_call_response_connect(0); + mmi_vc_call_action_connect(); } /* Get image */ @@ -206,6 +206,9 @@ 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); + + mmi_vc_call_operate_send_to_server(2); + if (NULL == s_video_call_jrtc.jrtc_ptr) ret = mmi_video_call_jrtc_open(pContactUri, calltype); @@ -216,6 +219,8 @@ 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); + mmi_vc_call_operate_send_to_server(0); + if (NULL != s_video_call_jrtc.jrtc_ptr) { video_call_jrtc_error_e err = (TRUE == bye) ? JRTC_EBYE : JRTC_EAUDIOCALL; @@ -225,7 +230,7 @@ void mmi_video_call_hangup_req(BOOL bye) } else { - watch_voip_call_response_no_carrier(0, 0); + mmi_vc_ring_off_no_carrier(0); } } @@ -234,6 +239,9 @@ 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()); @@ -244,6 +252,8 @@ 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); + mmi_vc_call_operate_send_to_server(0); + if (NULL != s_video_call_jrtc.jrtc_ptr) { video_call_jrtc_error_e err = (TRUE == bye) ? JRTC_EBYE : JRTC_EAUDIOCALL; @@ -253,7 +263,7 @@ void mmi_video_call_reject_req(BOOL bye) } else { - watch_voip_call_response_no_carrier(0, 0); + mmi_vc_ring_off_no_carrier(0); } } 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 9ddf7375..9b48c695 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 @@ -23,11 +23,7 @@ lv_color_t g_cbuf[canvas_width * canvas_heigh + 8] __attribute__((aligned(8))); /********************** * STATIC PROTOTYPES **********************/ -static lv_obj_t * voip_phone_cont_create(lv_obj_t * par, lv_align_t cont_layout, lv_style_t * style, lv_coord_t width); static lv_obj_t * voip_ring_off_content_create(lv_obj_t * par); -static void mmi_video_call_phone_dialing(lv_obj_t * content); -static void mmi_video_call_phone_ring(lv_obj_t * content); -static void mmi_video_call_phone_connected(lv_obj_t * content); static void voip_phone_left_slide_callback(lv_obj_t * obj); static void voip_phone_right_slide_callback(lv_obj_t * obj); static void voip_phone_down_slide_callback(lv_obj_t * obj); @@ -36,9 +32,6 @@ static void voip_ring_animation(lv_obj_t * par); static void voip_connected_animation(lv_obj_t * obj); static void voip_volume_btn_action(lv_obj_t * obj, lv_event_t e); static void voip_slider_action(lv_obj_t * slider, lv_event_t e); -static void voip_ring_hook_action(lv_obj_t * btn, lv_event_t e); -static void voip_phone_ring_off_timeout_cb(void * para); -static void voip_phone_callreq_timeout_cb(void * para); 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); @@ -50,18 +43,12 @@ 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); static void canvas_button_hidden_event_cb(lv_obj_t * obj, lv_event_t e); -static void video_call_add_element(lv_obj_t * element); static void voip_signal_check_start(void * ext); static void voip_signal_check_stop(void); static bool is_rat_gsm(void); static void voip_rat_check_start(void); static void voip_rat_check_stop(void); -#if VOIP_PHONE_TEST -static void voip_phone_connected_cb(void * para); -static void watch_voip_call_response_originating(int32_t index); -#endif - void voip_audio_ctrl_callback(AUDIO_CTRL_PRIORITY priority) { @@ -300,190 +287,6 @@ static lv_obj_t * voip_append_obj(lv_obj_t * page) return(voip_append_obj); } -static lv_obj_t * mmi_video_call_phone_create(lv_obj_t * activity_obj, voip_phone_ui_e phone_ui_id) -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - - if(VOIP_PHONE_UI_CONNECTED == phone_ui_id) { - /* set speaker volume to nv when leaving activiry's slider */ - voip_set_volume_when_slider_act(); - } - - /* cleanup phone first */ - voip_phone_cleanup(); - - 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); - } - } - - lv_obj_t * obj = lv_watch_obj_create(activity_obj); - LV_ASSERT_MEM(obj); - 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) { - return(NULL); - } - - ext->phone_status_label = NULL; - ext->phone_animation_obj = NULL; - ext->phone_ui_t = phone_ui_id; - ext->local_remote_switch_flag = VOIP_REMOTE_SWITCH_NULL; -#if ENABLE_VIDEO_SCALE == 0 - ext->voiph263fmt = VOIP_H263_FMT_QCIF; -#else - ext->voiph263fmt = VOIP_H263_FMT_OTHER; -#endif - - hal_rtc_t rtc_curr; // current rtc time - Hal_Rtc_Gettime(&rtc_curr); - ext->connect_start_time = time_to_seconds(&rtc_curr); - ext->connect_time = NULL; - ext->ring_value_button = NULL; - ext->view_switch_button = NULL; - ext->ring_off_button = NULL; - ext->canvas_button_hidden_flag = NOT_HIDDEN; - - /* content */ - lv_obj_t * content = lv_cont_create(obj, NULL); - lv_obj_set_size(content, lv_obj_get_width(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_set_click(content, false); - lv_obj_align(content, obj, LV_ALIGN_CENTER, 0, 0); - - if(ext->phone_ui_t == VOIP_PHONE_UI_DIALING) { - mmi_video_call_phone_dialing(content); - voip_dialing_animation(ext->phone_status_label); - } else if(ext->phone_ui_t == VOIP_PHONE_UI_INCOMING) { - mmi_video_call_phone_ring(content); - voip_ring_animation(ext->phone_status_label); - } else if(ext->phone_ui_t == PHONE_UI_CONNECTED) { - mmi_video_call_phone_connected(content); - voip_connected_animation(ext->phone_status_label); - } - - return(obj); -} - -lv_res_t mmi_video_call_phone_ring_off_create() -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); - LV_ASSERT_MEM(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; - } - - if(ext->phone_ui_t == VOIP_PHONE_UI_INCOMING || ext->phone_ui_t == VOIP_PHONE_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()); - } - - if(ext->phone_animation_obj) { - lv_obj_del(ext->phone_animation_obj); - ext->phone_animation_obj = NULL; - } - - /* set speaker volume to nv when leaving activiry's slider */ - voip_set_volume_when_slider_act(); - - /* 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_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); - - voip_signal_check_stop(); - voip_rat_check_stop(); - - return(LV_RES_OK); -} - -void mmi_video_call_phone_ring_off_action(lv_obj_t * btn, lv_event_t e) -{ - if(LV_EVENT_CLICKED != e) { - return; - } - - printf("%s: %d, state=%d\n", __FUNCTION__, __LINE__, s_video_call_params.state); - - 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) { - s_video_call_params.ring_off_timer_id = Hal_Timer_Start(VOIP_RING_OFF_TIMER_LEN, voip_phone_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) { - case MMI_VOIP_CALL_STATE_NULL: - case MMI_VOIP_CALL_STATE_INVALID: - // do noting - break; - - case MMI_VOIP_CALL_STATE_ACTIVE: - mmi_video_call_hangup_req(TRUE); - break; - - case MMI_VOIP_CALL_STATE_INCOMING: - Hal_Tone_Play_End(); - mmi_video_call_reject_req(TRUE); - break; - - default: - mmi_video_call_hangup_req(TRUE); - break; - } /* switch */ - - voip_signal_check_stop(); - voip_rat_check_stop(); - -#if VOIP_PHONE_TEST - watch_voip_call_response_no_carrier(s_video_call_params.index, 0); -#endif -} - lv_voip_phone_obj_ext_t * voip_phone_get_ext(void) { lv_voip_phone_obj_ext_t * ext = NULL; @@ -524,39 +327,11 @@ static lv_obj_t * voip_phone_get_obj(void) return(watch_obj); } -#if VOIP_PHONE_TEST - -static void voip_phone_connected_cb(void * para) -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - watch_voip_call_response_connect(s_video_call_params.index); -} -#endif - static void voip_phone_left_slide_callback(lv_obj_t * obj) { printf("%s %d\n", __FUNCTION__, __LINE__); -#if VOIP_PHONE_TEST - if((MMI_VOIP_CALL_STATE_INCOMING == s_video_call_params.state)) { // MT call - int32_t index = 1; - - watch_voip_call_response_originating(index); - watch_voip_call_response_alerting(index); - - Hal_Timer_Start(60, voip_phone_connected_cb, NULL, 0); - } - - else if(MMI_VOIP_CALL_STATE_DIALING == s_video_call_params.state) { // MO call - int32_t index = 1; - - watch_voip_call_response_originating(index); - watch_voip_call_response_alerting(index); - - Hal_Timer_Start(60, voip_phone_connected_cb, NULL, 0); - } else -#endif - if((MMI_VOIP_CALL_STATE_ACTIVE == s_video_call_params.state) - && (MODEM_VIDEO_CALL_TYPE_VIDEO == s_video_call_params.voip_call_type)) { + if((MMI_VIDEO_CALL_STATE_CALLING == s_video_call_params.state) + && (MODEM_VIDEO_CALL_TYPE_VIDEO == s_video_call_params.call_type)) { voip_local_remote_switch_action(NULL, LV_EVENT_CLICKED); } } @@ -564,7 +339,7 @@ static void voip_phone_left_slide_callback(lv_obj_t * obj) static void voip_phone_right_slide_callback(lv_obj_t * obj) { printf("%s %d\n", __FUNCTION__, __LINE__); - mmi_video_call_phone_ring_off_action(NULL, LV_EVENT_CLICKED); + mmi_vc_ring_off_action(NULL, LV_EVENT_CLICKED); } static void voip_phone_down_slide_callback(lv_obj_t * obj) @@ -573,24 +348,6 @@ static void voip_phone_down_slide_callback(lv_obj_t * obj) voip_volume_btn_action(NULL, LV_EVENT_CLICKED); } -static lv_obj_t * voip_phone_cont_create(lv_obj_t * par, lv_align_t cont_layout, lv_style_t * style, lv_coord_t width) -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - - lv_obj_t * content = lv_cont_create(par, NULL); - - if(width > 0) { - lv_cont_set_fit2(content, LV_FIT_NONE, LV_FIT_TIGHT); - lv_obj_set_width(content, width); - } else { - lv_cont_set_fit2(content, LV_FIT_TIGHT, LV_FIT_TIGHT); - } - lv_obj_add_style(content, LV_OBJ_PART_MAIN, style); - lv_cont_set_layout(content, cont_layout); - lv_obj_set_click(content, false); - return(content); -} - static void voip_slider_action(lv_obj_t * slider, lv_event_t e) { if(e == LV_EVENT_VALUE_CHANGED) @@ -653,7 +410,7 @@ static lv_obj_t * voip_ring_off_content_create(lv_obj_t * par) lv_obj_add_style(content, LV_OBJ_PART_MAIN, &lv_watch_cont_opa1); lv_obj_set_size(content, 204, 44); - if(ext->phone_ui_t == VOIP_PHONE_UI_INCOMING || ext->phone_ui_t == VOIP_PHONE_UI_DIALING) { + if(ext->phone_ui_t == MMI_VC_UI_INCOMING || ext->phone_ui_t == MMI_VC_UI_DIALING) { lv_obj_align(content, obj, LV_ALIGN_IN_TOP_MID, 0, 10); } else { lv_obj_align(content, obj, LV_ALIGN_CENTER, 0, -12); @@ -682,35 +439,10 @@ static lv_obj_t * voip_ring_off_content_create(lv_obj_t * par) lv_obj_set_click(label, false); return(obj); -} /* voip_ring_off_content_create */ - -static void voip_phone_ring_off_timeout_cb(void * para) -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - s_video_call_params.ring_off_timer_id = NULL; - s_video_call_params.ring_off_timeout = true; - watch_voip_call_response_no_carrier(s_video_call_params.index, 0); } -static void voip_ring_hook_action(lv_obj_t * btn, lv_event_t e) -{ - if(LV_EVENT_CLICKED != e) { - return; - } - - printf("%s %d\n", __FUNCTION__, __LINE__); - - if(btn) { - lv_obj_set_click(btn, false); - } - Hal_Tone_Play_End(); - int8_t ret = mmi_video_call_answer_req(); - if(ret < 0) { - watch_voip_call_response_no_carrier(s_video_call_params.index, 0); - } -} static void voip_phone_cleanup(void) { @@ -851,364 +583,23 @@ static void voip_anim_fp_connected(lv_anim_t * anim) } } -static void mmi_video_call_phone_dialing(lv_obj_t * content) -{ - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); +static void voip_phone_prepare_destory(lv_obj_t * activity_obj) +{ + printf("%s %d\n", __FUNCTION__, __LINE__); - LV_ASSERT_MEM(ext); - if(ext == NULL) { - return; - } + lv_watch_png_cache_all_free(); - // label dialing - lv_obj_t * 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_DAILING); - lv_obj_set_click(label, false); - lv_obj_align(label, content, LV_ALIGN_IN_TOP_MID, 0, 10); - ext->phone_status_label = label; + // stop playing tone + Hal_Tone_Play_End(); - // 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); + // ring off + mmi_vc_ring_off_action(NULL, LV_EVENT_CLICKED); - // 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, 20); - lv_obj_set_click(label, false); - - #if 0 - // btn volume - lv_obj_t * btn; - btn = lv_imgbtn_create(cont, NULL); - lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_PHONE_RING_VOLUME); - lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_PHONE_RING_VOLUME); - lv_obj_set_event_cb(btn, voip_volume_btn_action); - lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_LEFT, 0, 0); - #endif - - // 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_video_call_phone_ring_off_action); - lv_obj_align(btn, content, LV_ALIGN_IN_BOTTOM_MID, 0, -30); -} - -static void mmi_video_call_phone_ring(lv_obj_t * content) -{ - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); - - lv_voip_phone_obj_ext_t * ext = voip_phone_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_RINGING); - lv_obj_set_click(label, false); - 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_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; - 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_video_call_phone_ring_off_action); - lv_obj_align(btn, content, LV_ALIGN_IN_BOTTOM_LEFT, 20, -30); - - // btn ring hook - 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, voip_ring_hook_action); - lv_obj_align(btn, content, LV_ALIGN_IN_BOTTOM_RIGHT, -20, -30); -} - -static void mmi_video_call_phone_connected(lv_obj_t * content) -{ - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); - - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); - - LV_ASSERT_MEM(ext); - if(ext == NULL) { - return; - } - - if(s_video_call_params.voip_call_type == MODEM_VIDEO_CALL_TYPE_VOICE) - { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); - - hal_rtc_t rtc_curr; // current rtc time - Hal_Rtc_Gettime(&rtc_curr); - ext->connect_start_time = time_to_seconds(&rtc_curr); - - ext->local_remote_switch_flag = VOIP_REMOTE_SWITCH_NULL; - - //lv_obj_add_style(content, LV_OBJ_PART_MAIN, &lv_watch_style_transp); - lv_obj_t * img = lv_img_create(content, NULL); - lv_img_set_src(img, ICON_VIDEO_CALL_CONTACT_PHOTO); - lv_obj_align(img, content, LV_ALIGN_IN_TOP_MID, 0, 10); - lv_obj_set_click(img, false); - - // name - lv_obj_t * 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); - - //duration - lv_obj_t * time_label = lv_label_create(content, NULL); - lv_obj_add_style(time_label, LV_OBJ_PART_MAIN, &lv_watch_font20); - lv_label_set_align(time_label, LV_LABEL_ALIGN_CENTER); - lv_label_set_text(time_label, "00:00"); - lv_obj_set_click(time_label, false); - lv_obj_set_base_dir(time_label, LV_BIDI_DIR_LTR); - lv_obj_align(time_label, label, LV_ALIGN_OUT_BOTTOM_MID, 0, 10); - ext->phone_status_label = time_label; - - //btn volume - lv_obj_t * btn; - btn = lv_imgbtn_create(content, NULL); - lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_PHONE_RING_VOLUME); - lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_PHONE_RING_VOLUME); - lv_obj_set_event_cb(btn, voip_volume_btn_action); - lv_obj_align(btn, content, LV_ALIGN_IN_BOTTOM_LEFT, 20, -50); - - //btn ring off - btn = lv_imgbtn_create(content, NULL); - lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_PHONE_RING_OFF); - lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_PHONE_RING_OFF); - lv_obj_set_event_cb(btn, mmi_video_call_phone_ring_off_action); - lv_obj_align(btn, content, LV_ALIGN_IN_BOTTOM_RIGHT, -20, -50); - } - else - { - lv_obj_t * canvas; - lv_obj_t * label; - lv_obj_t * btn; - - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%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)) - { - hal_rtc_t rtc_curr; // current rtc time - Hal_Rtc_Gettime(&rtc_curr); - ext->connect_start_time = time_to_seconds(&rtc_curr); - - lv_obj_t * cont = voip_phone_cont_create(content, LV_LAYOUT_OFF, &lv_watch_style_transp, -1); - lv_obj_set_width(cont, lv_obj_get_width(content)); - lv_obj_add_style(content, LV_OBJ_PART_MAIN, &lv_watch_style_transp); - - /*Create the canvas object*/ - canvas = lv_canvas_create(cont, NULL); - lv_obj_set_click(canvas, true); - lv_obj_set_event_cb(canvas, canvas_button_hidden_event_cb); - video_call_add_element(canvas); - ext->canvas = canvas; - - lv_obj_align(canvas, cont, LV_ALIGN_IN_TOP_MID, 0, 0); - /*Assign the buffer to the canvas*/ - lv_img_set_src(canvas, ICON_VIDEO_CALL); - voip_signal_check_start(ext); - - // duration - label = lv_label_create(canvas, 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(label, "0:0"); - lv_obj_set_click(label, false); - lv_obj_set_base_dir(label, LV_BIDI_DIR_LTR); - if(LV_BIDI_DIR_RTL == lv_obj_get_base_dir(content)) { - lv_obj_align(label, NULL, LV_ALIGN_IN_TOP_RIGHT, -lv_obj_get_width(label), 0); - } - ext->phone_status_label = label; - - // signal weak notification - label = lv_label_create(canvas, NULL); - lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font30); - lv_label_set_text_id(label, WATCH_TEXT_ID_SIGNAL_WEAK); - lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); - lv_obj_align(label, canvas, LV_ALIGN_CENTER, 0, -10); - lv_obj_set_click(label, false); - lv_obj_set_hidden(label, true); - ext->signal_weak_label = label; - - cont = voip_phone_cont_create(content, LV_LAYOUT_OFF, &lv_watch_style_transp, lv_obj_get_width(content) - 40); - // btn volume - btn = lv_imgbtn_create(cont, NULL); - lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_PHONE_RING_VOLUME); - lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_PHONE_RING_VOLUME); - lv_obj_set_event_cb(btn, voip_volume_btn_action); - lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_LEFT, 0, 0); - - // btn switch video - btn = lv_imgbtn_create(cont, 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, cont, LV_ALIGN_IN_BOTTOM_MID, 0, 0); - - // btn ring off - btn = lv_imgbtn_create(cont, NULL); - lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_PHONE_RING_OFF); - lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_PHONE_RING_OFF); - lv_obj_set_event_cb(btn, mmi_video_call_phone_ring_off_action); - lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_RIGHT, 0, 0); - } - else if((ext->voiph263fmt == VOIP_H263_FMT_CIF) - || (ext->voiph263fmt == VOIP_H263_FMT_4CIF) - || (ext->voiph263fmt == VOIP_H263_FMT_16CIF) - || (ext->voiph263fmt == VOIP_H263_FMT_OTHER)) - { - /*Create the canvas object*/ - canvas = lv_canvas_create(content, NULL); - lv_obj_set_click(canvas, true); - lv_obj_set_event_cb(canvas, canvas_button_hidden_event_cb); - video_call_add_element(canvas); - ext->canvas = canvas; - - /*Assign the buffer to the canvas*/ - lv_img_set_src(canvas, ICON_VIDEO_CALL); - voip_signal_check_start(ext); - - // duration - label = lv_label_create(canvas, 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(label, "0:0"); - lv_obj_set_click(label, false); - lv_obj_set_base_dir(label, LV_BIDI_DIR_LTR); - if(LV_BIDI_DIR_RTL == lv_obj_get_base_dir(content)) { - lv_obj_align(label, NULL, LV_ALIGN_IN_TOP_RIGHT, -lv_obj_get_width(label), 0); - } - ext->phone_status_label = label; - ext->connect_time = label; - - // signal weak notification - label = lv_label_create(canvas, NULL); - lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font30); - lv_label_set_text_id(label, WATCH_TEXT_ID_SIGNAL_WEAK); - lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); - lv_obj_align(label, canvas, LV_ALIGN_CENTER, 0, -10); - lv_obj_set_click(label, false); - lv_obj_set_hidden(label, true); - ext->signal_weak_label = label; - - // btn volume - btn = lv_imgbtn_create(canvas, NULL); - lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_PHONE_RING_VOLUME); - lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_PHONE_RING_VOLUME); - lv_obj_set_event_cb(btn, voip_volume_btn_action); - lv_obj_align(btn, canvas, LV_ALIGN_IN_BOTTOM_LEFT, 0, -20); - lv_obj_add_style(btn, LV_OBJ_PART_MAIN, &lv_watch_style_transp); - ext->ring_value_button = btn; - - // btn switch video - 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; - - // btn ring off - btn = lv_imgbtn_create(canvas, NULL); - lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_PHONE_RING_OFF); - lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_PHONE_RING_OFF); - lv_obj_set_event_cb(btn, mmi_video_call_phone_ring_off_action); - lv_obj_align(btn, canvas, LV_ALIGN_IN_BOTTOM_RIGHT, 0, -20); - lv_obj_add_style(btn, LV_OBJ_PART_MAIN, &lv_watch_style_transp); - ext->ring_off_button = btn; - - 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->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); - } - } -} - -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_video_call_phone_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 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 @@ -1218,7 +609,7 @@ static void voip_phone_prepare_destory(lv_obj_t * activity_obj) } Hal_Mem_Set(&s_video_call_params, 0, sizeof(MMI_VIDEO_CALL_PARAMS_T)); - s_video_call_params.state = MMI_VOIP_CALL_STATE_NULL; + 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) @@ -1250,126 +641,44 @@ static void voip_get_time_elaps(uint32_t last_time, char * str, int8_t size) } } -#if VOIP_PHONE_TEST != 0 - -static void watch_voip_call_response_originating(int32_t index) +void mmi_vc_ring_off_no_carrier(uint8_t isNoCarrier) { - printf("%s %d\n", __FUNCTION__, __LINE__); - - if(MMI_VOIP_CALL_STATE_DIALING == s_video_call_params.state) { + if((false == s_video_call_params.ring_off_timeout) + && (1 == isNoCarrier) + && (MMI_VIDEO_CALL_STATE_NONE == s_video_call_params.state)) + { + VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); return; } - printf("%s: %d\n", __func__, index); - s_video_call_params.index = index; - - // state: NULL -> DIALLING - s_video_call_params.state = MMI_VOIP_CALL_STATE_DIALING; -} -#endif - -void watch_voip_call_response_alerting(int32_t index) -{ - printf("%s %d index is %d\n", __FUNCTION__, __LINE__, index); - if(MMI_VOIP_CALL_STATE_ALERTING == s_video_call_params.state) { - return; - } - - uint8_t volume; - - // state: DIALLING -> ALERTING - s_video_call_params.state = MMI_VOIP_CALL_STATE_ALERTING; - - // set speaker volume - UI_NV_Read_Req(NV_SECTION_UI_PHONE, VOIP_PHONE_NV_VOLUME_OFFSET, 1, &volume); - if(!Hal_Set_BT_Audio_Path((HAL_SPEAKER_GAIN)volume)) - Hal_Call_Speaker(HAL_CALL_SPK_ON, (HAL_SPEAKER_GAIN)volume); -} - -void watch_voip_call_response_ring(int32_t index) -{ - printf("%s: %d\n", __func__, index); - Hal_NFFS_File_Play_Repeat(AUDIO_INCOMING_CALL, query_current_volume()); - - s_video_call_params.state = MMI_VOIP_CALL_STATE_ALERTING; -} - -void watch_voip_call_response_connect(int32_t index) -{ - printf("%s %d index is %d\n", __FUNCTION__, __LINE__, index); - if(MMI_VOIP_CALL_STATE_ACTIVE == s_video_call_params.state) { - return; - } - - s_video_call_params.state = MMI_VOIP_CALL_STATE_ACTIVE; - - // 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 playing tone - Hal_Tone_Play_End(); - - Hal_Set_Voice_Call_Status(VOICE_CALL_START); - - // create connected UI - mmi_video_call_phone_create(NULL, VOIP_PHONE_UI_CONNECTED); -} - -void watch_voip_call_response_disconnect(int32_t index) -{ - // not used - (void)index; - printf("%s: %d\n", __func__, index); - Hal_Tone_Play_End(); - - // create ring off UI - if(voip_phone_get_activity_obj()) { - mmi_video_call_phone_ring_off_create(); - // remove donw slider handle - lv_watch_obj_set_down_slide_cb(voip_phone_get_obj(), NULL); - } - Hal_Mem_Set(&s_video_call_params, 0, sizeof(MMI_VIDEO_CALL_PARAMS_T)); - s_video_call_params.state = MMI_VOIP_CALL_STATE_NULL; -} - -void watch_voip_call_response_no_carrier(int32_t index, uint8_t isNoCarrier) -{ - printf("%s: %d\n", __func__, __LINE__); - - if((false == s_video_call_params.ring_off_timeout) - && (1 == isNoCarrier) - && (MMI_VOIP_CALL_STATE_NULL == s_video_call_params.state)) { - printf("%s: ignore no carrier in state NULL\n", __func__); - return; - } - - printf("%s: %d\n", __func__, index); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%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) { + 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) { + 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; } // create ring off UI lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_VOIPPHONE); - if(activity_obj) { + if(activity_obj) + { mmi_video_call_phone_ring_off_create(); } - if(MMI_MODEM_CALL_STATE_NULL != phone_get_call_state()) { + if(MMI_MODEM_CALL_STATE_NULL != phone_get_call_state()) + { printf("%s tele call is on going, keep para of audio\n", __FUNCTION__); Hal_Set_Voice_Call_Status(VOICE_CALL_END); Hal_Disconnect_BT_Audio_Path(); @@ -1378,119 +687,7 @@ void watch_voip_call_response_no_carrier(int32_t index, uint8_t isNoCarrier) watch_wakeup_time_reset(); Hal_Mem_Set(&s_video_call_params, 0, sizeof(MMI_VIDEO_CALL_PARAMS_T)); - s_video_call_params.state = MMI_VOIP_CALL_STATE_NULL; -} /* watch_voip_call_response_no_carrier */ - -void watch_voip_call_response_state_change(MMI_Modem_Call_Response_State_Change_t * state) -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - - for(uint8_t i = 0; i < state->count; i++) { - Hal_Mem_Free(state->calls[i].number); - Hal_Mem_Free(state->calls[i].name); - } - Hal_Mem_Free(state->calls); - Hal_Mem_Free(state); -} - -void watch_voip_call_response_bottom_error(void) -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - voip_phone_cleanup(); - Hal_Mem_Set(&s_video_call_params, 0, sizeof(MMI_VIDEO_CALL_PARAMS_T)); -} - -void watch_voip_call_response_bottom_need_redail(void) -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - //voip_call_dial_req(s_video_call_params.voip_call_type, s_video_call_params.number); -} - -void watch_voip_incomingcall_response(char * number, int32_t calltype) -{ - uint8_t volume; - voip_phonebook_contact_t * contact_info = NULL; - - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %s,%d\n", __FUNCTION__, __LINE__, number, calltype); - - if((MMI_MODEM_CALL_STATE_NULL != phone_get_call_state()) || is_rat_gsm()) { - printf("tele call is on going %d or in gsm mode, reject voip call\n", phone_get_call_state()); - mmi_video_call_reject_req(TRUE); - return; - } - - Hal_Mem_Set(&s_video_call_params, 0, sizeof(MMI_VIDEO_CALL_PARAMS_T)); - s_video_call_params.voip_call_type = (MODEM_VIDEO_CALL_TYPE)calltype; - s_video_call_params.is_mt = true; - s_video_call_params.state = MMI_VOIP_CALL_STATE_INCOMING; - strncpy(s_video_call_params.number, number, NV_CONTACTS_MAX_NUMBER_LEN); - - //Hal_Mem_Free(number); - - if(1) - { - if(AUDIO_CTRL_PRIORITY_2 == Hal_Audio_Manage_Start_Req(AUDIO_CTRL_PRIORITY_2,voip_audio_ctrl_callback)) - { - watch_set_lcd_status(true); - // set speaker volume - - UI_NV_Read_Req(NV_SECTION_UI_PHONE, VOIP_PHONE_NV_VOLUME_OFFSET, 1, &volume); - if(!Hal_Set_BT_Audio_Path((HAL_SPEAKER_GAIN)volume)) - Hal_Call_Speaker(HAL_CALL_SPK_ON, (HAL_SPEAKER_GAIN)volume); - - // play tone - Hal_NFFS_File_Play_Repeat(AUDIO_INCOMING_CALL, query_current_volume()); - - // start rat checking - voip_rat_check_start(); - - // create ring UI - mmi_video_call_phone_create(NULL, VOIP_PHONE_UI_INCOMING); - } - else - { // AUDIO_CTRL_PRIORITY_1 - printf("%s: phone call has been run, auto reject\n", __func__); - // auto reject - mmi_video_call_reject_req(FALSE); - 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 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_VOIP_CALL_STATE_NULL; - voip_set_volume_when_slider_act(); - voip_phone_cleanup(); - lv_watch_png_cache_all_free(); - Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_2); - } - } else { - printf("%s: not a contact, auto reject\n", __func__); - // auto reject - mmi_video_call_reject_req(TRUE); - -#if VOIP_PHONE_TEST - watch_voip_call_response_no_carrier(s_video_call_params.index, 0); -#endif - } -} /* watch_voip_incomingcall_response */ - -void watch_ui_voip_message_handle(void * msg) -{ -} - -void watch_voip_autotest_handle(void * testmsg) -{ + s_video_call_params.state = MMI_VIDEO_CALL_STATE_NONE; } static bool mmi_video_call_check_mo_permission(void) @@ -1583,186 +780,834 @@ static void video_call_add_element(lv_obj_t * element) lv_obj_add_protect(element, LV_PROTECT_PRESS_LOST | LV_PROTECT_CLICK_FOCUS); } -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(); - if(!ext) { - return; - } - if(ext->canvas_button_hidden_flag == NOT_HIDDEN) { - ext->canvas_button_hidden_flag = HIDDEN; - } else { - ext->canvas_button_hidden_flag = NOT_HIDDEN; +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(); + if(!ext) { + return; + } + if(ext->canvas_button_hidden_flag == NOT_HIDDEN) { + ext->canvas_button_hidden_flag = HIDDEN; + } else { + ext->canvas_button_hidden_flag = NOT_HIDDEN; + } + + 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->ring_off_button, ext->canvas_button_hidden_flag); + } +} + +static void voip_set_volume_when_slider_act(void) +{ + printf("%s\n", __FUNCTION__); + if(lv_watch_get_activity_obj(ACT_ID_SLIDER)) { + if(MMI_VIDEO_CALL_STATE_NONE != s_video_call_params.state) { + uint8_t volume = voip_get_call_volume(); + printf("set nv, speaker volume is %d.\n", volume); + UI_NV_Write_Req(NV_SECTION_UI_PHONE, 0, 1, &volume); + } + } +} + +#if VIDEO_SIGNAL_CHECK +static void signal_check(lv_task_t *task) +{ + lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); + if(!ext) return; + + if((false == is_rat_gsm()) && + (watch_modem_get_signal_bar_req() < MMI_MODEM_SIGNAL_BAR_3)) { + lv_obj_set_hidden(ext->signal_weak_label, false); + } else { + lv_obj_set_hidden(ext->signal_weak_label, true); + } +} +#endif + +static void voip_signal_check_start(void * ext) +{ +#if VIDEO_SIGNAL_CHECK + if(NULL == signal_check_task) + signal_check_task = lv_task_create(signal_check, VIDEO_SIGNAL_CHECK_PERIOD, LV_TASK_PRIO_HIGH, NULL); +#endif +} + +static void voip_signal_check_stop(void) +{ +#if VIDEO_SIGNAL_CHECK + if(signal_check_task) { + lv_task_del(signal_check_task); + signal_check_task = NULL; + } +#endif +} + +static bool is_rat_gsm(void) +{ + MMI_MODEM_PLMN_RAT rat; + + watch_modem_get_operator_req(&rat); + if(MMI_MODEM_PLMN_RAT_GSM == rat) + return true; + else + return false; +} + +static void rat_check(lv_task_t *task) +{ + if(is_rat_gsm()) { + mmi_vc_ring_off_action(NULL, LV_EVENT_CLICKED); + } +} + +static void voip_rat_check_start(void) +{ + if(NULL == rat_check_task) + rat_check_task = lv_task_create(rat_check, VIDEO_RAT_CHECK_PERIOD, LV_TASK_PRIO_HIGH, NULL); +} + +static void voip_rat_check_stop(void) +{ + if(rat_check_task) { + lv_task_del(rat_check_task); + rat_check_task = NULL; + } +} + +void voip_fps_check(int8_t fps) +{ + lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); + if(NULL != ext) { + if((VIDEO_CALL_FPS_CHECK_LIMIT >= fps) && (0 != fps)) { + printf("%s %d\n", __FUNCTION__, fps); + if(lv_obj_get_hidden(ext->signal_weak_label) == false) return; + lv_obj_set_hidden(ext->signal_weak_label, false); + } else { + if(lv_obj_get_hidden(ext->signal_weak_label) == true) return; + lv_obj_set_hidden(ext->signal_weak_label, true); + } + } +} + + + +#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; + +char * mmi_video_call_params_number_get(void) +{ + return (s_video_call_params.number); +} + +MMI_VIDEO_CALL_STATE_E mmi_video_call_params_state_get(void) +{ + return (s_video_call_params.state); +} + +MODEM_VIDEO_CALL_TYPE mmi_video_call_params_type_get(void) +{ + return (s_video_call_params.call_type); +} + + + +void mmi_video_call_contact_nv_write(void) +{ + uint32_t nv_data_length = sizeof(nv_watch_vc_contact_t); + + if(nv_data_length != UI_NV_Write_Req(NV_SECTION_UI_VC_CONTACT, 0, nv_data_length, (uint8_t *)&s_vc_contact)) + { + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: nv write fail\n", __FUNCTION__, __LINE__); + } +} + +void mmi_video_call_contact_nv_read(void) +{ + uint32_t nv_data_length = sizeof(nv_watch_vc_contact_t); + + if(nv_data_length != UI_NV_Read_Req(NV_SECTION_UI_VC_CONTACT, 0, nv_data_length, (uint8_t *)&s_vc_contact)) + { + VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: nv read fail\n", __FUNCTION__, __LINE__); + } +} + +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__); + return; + } + + _lv_memcpy(&s_vc_contact, contact_list, sizeof(nv_watch_vc_contact_t)); + mmi_video_call_contact_nv_write(); + + + //phonebook_update_ui(contact_list, count, 0, 0); + +} + +// state: 0-hang up or reject; 1-accepte; 2-dial +void mmi_vc_call_operate_send_to_server(uint_8 flag) +{ + if(0 == flag) + mmi_protocol_fzd_action_VC_CALL_RESPONSE(s_video_call_params.number, 0); + else if(1 == flag) + mmi_protocol_fzd_action_VC_CALL_RESPONSE(s_video_call_params.number, 1); + else if(2 == 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) +{ + if(LV_EVENT_CLICKED != e) + { + return; + } + + VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); + + if(btn) { + lv_obj_set_click(btn, false); + } + + Hal_Tone_Play_End(); + + int8_t ret = mmi_video_call_answer_req(); + if(ret < 0) { + mmi_vc_ring_off_no_carrier(0); + } +} + + +lv_res_t mmi_video_call_phone_ring_off_create() +{ + VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); + + lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); + LV_ASSERT_MEM(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; + } + + 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()); + } + + if(ext->phone_animation_obj) { + lv_obj_del(ext->phone_animation_obj); + ext->phone_animation_obj = NULL; + } + + /* set speaker volume to nv when leaving activiry's slider */ + voip_set_volume_when_slider_act(); + + /* 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_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); + + voip_signal_check_stop(); + voip_rat_check_stop(); + + return(LV_RES_OK); +} + +static void mmi_vc_ring_off_timeout_cb(void * para) +{ + VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); + + s_video_call_params.ring_off_timer_id = NULL; + s_video_call_params.ring_off_timeout = true; + mmi_vc_ring_off_no_carrier(0); +} + +void mmi_vc_ring_off_action(lv_obj_t * btn, lv_event_t e) +{ + if(LV_EVENT_CLICKED != e) + { + return; + } + + VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %d\n", __FUNCTION__, __LINE__, s_video_call_params.state); + + 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) { + 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) + { + case MMI_VIDEO_CALL_STATE_NONE: + case MMI_VIDEO_CALL_STATE_INVALID: + // do noting + break; + + case MMI_VIDEO_CALL_STATE_CALLING: + mmi_video_call_hangup_req(TRUE); + break; + + case MMI_VIDEO_CALL_STATE_INCOMING: + Hal_Tone_Play_End(); + mmi_video_call_reject_req(TRUE); + break; + + default: + mmi_video_call_hangup_req(TRUE); + break; + } + + voip_signal_check_stop(); + voip_rat_check_stop(); +} + +static void mmi_vc_ui_dialing(lv_obj_t * content) +{ + VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); + + lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); + if(ext == NULL) { + return; + } + + // label dialing + lv_obj_t * 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_DAILING); + 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, 20); + lv_obj_set_click(label, false); + + #if 0 + // btn volume + lv_obj_t * btn; + btn = lv_imgbtn_create(cont, NULL); + lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_PHONE_RING_VOLUME); + lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_PHONE_RING_VOLUME); + lv_obj_set_event_cb(btn, voip_volume_btn_action); + lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_LEFT, 0, 0); + #endif + + // 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_incoming(lv_obj_t * content) +{ + VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); + + lv_voip_phone_obj_ext_t * ext = voip_phone_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_RINGING); + lv_obj_set_click(label, false); + 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_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; + 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_LEFT, MMI_VC_INCOMING_RING_OFF_BTN_X_OFFSET, MMI_VC_RING_OFF_BTN_Y_OFFSET); + + // btn ring hook + 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_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_connected(lv_obj_t * content) +{ + VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); + + lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); + if(ext == NULL) + { + return; + } + + lv_obj_t * label; + lv_obj_t * btn; + hal_rtc_t rtc_curr = {0}; // current rtc time + Hal_Rtc_Gettime(&rtc_curr); + + if(s_video_call_params.call_type == MODEM_VIDEO_CALL_TYPE_VOICE) + { + VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); + + ext->connect_start_time = time_to_seconds(&rtc_curr); + + ext->local_remote_switch_flag = VOIP_REMOTE_SWITCH_NULL; + + //lv_obj_add_style(content, LV_OBJ_PART_MAIN, &lv_watch_style_transp); + lv_obj_t * img = lv_img_create(content, NULL); + lv_img_set_src(img, ICON_VIDEO_CALL_CONTACT_PHOTO); + lv_obj_align(img, content, LV_ALIGN_IN_TOP_MID, 0, 30); + 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); + + //duration + lv_obj_t * time_label = lv_label_create(content, NULL); + lv_obj_add_style(time_label, LV_OBJ_PART_MAIN, &lv_watch_font20); + lv_label_set_align(time_label, LV_LABEL_ALIGN_CENTER); + lv_label_set_text(time_label, "00:00"); + lv_obj_set_click(time_label, false); + lv_obj_set_base_dir(time_label, LV_BIDI_DIR_LTR); + lv_obj_align(time_label, label, LV_ALIGN_OUT_BOTTOM_MID, 0, 10); + ext->phone_status_label = time_label; + + //btn volume + btn = lv_imgbtn_create(content, NULL); + lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_VIDEO_CALL_VOLUME_BTN); + lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_VIDEO_CALL_VOLUME_BTN); + lv_obj_set_event_cb(btn, voip_volume_btn_action); + lv_obj_align(btn, content, LV_ALIGN_IN_BOTTOM_LEFT, MMI_VC_CALLING_VOLUME_BTN_X_OFFSET, MMI_VC_RING_OFF_BTN_Y_OFFSET); //20, -50); + + //btn ring off + 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_RIGHT, MMI_VC_CALLING_RING_OFF_BTN_X_OFFSET, MMI_VC_RING_OFF_BTN_Y_OFFSET); //-20, -50); + } + else + { + lv_obj_t * canvas; + + VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%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)) + { + ext->connect_start_time = time_to_seconds(&rtc_curr); + + /*Create the canvas object*/ + canvas = lv_canvas_create(content, NULL); + lv_obj_set_click(canvas, true); + lv_obj_set_event_cb(canvas, canvas_button_hidden_event_cb); + video_call_add_element(canvas); + ext->canvas = canvas; + + lv_obj_align(canvas, content, LV_ALIGN_IN_TOP_MID, 0, 0); + /*Assign the buffer to the canvas*/ + lv_img_set_src(canvas, ICON_BACKGROUND); + voip_signal_check_start(ext); + + // duration + label = lv_label_create(canvas, 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(label, "0:0"); + lv_obj_set_click(label, false); + lv_obj_set_base_dir(label, LV_BIDI_DIR_LTR); + lv_obj_align(label, NULL, LV_ALIGN_IN_TOP_MID, 0, 0); + ext->phone_status_label = label; + + // signal weak notification + label = lv_label_create(canvas, NULL); + lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font26); + lv_label_set_text_id(label, WATCH_TEXT_ID_SIGNAL_WEAK); + lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); + lv_obj_align(label, canvas, LV_ALIGN_CENTER, 0, -10); + lv_obj_set_click(label, false); + lv_obj_set_hidden(label, true); + ext->signal_weak_label = label; + + // btn volume + btn = lv_imgbtn_create(canvas, NULL); + lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_VIDEO_CALL_VOLUME_BTN); + lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_VIDEO_CALL_VOLUME_BTN); + lv_obj_set_event_cb(btn, voip_volume_btn_action); + lv_obj_align(btn, canvas, LV_ALIGN_IN_BOTTOM_LEFT, MMI_VC_CALLING_VOLUME_BTN_X_OFFSET, MMI_VC_RING_OFF_BTN_Y_OFFSET); + + // btn switch video + //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, 0); + + // btn ring off + btn = lv_imgbtn_create(canvas, 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, canvas, LV_ALIGN_IN_BOTTOM_RIGHT, MMI_VC_CALLING_RING_OFF_BTN_X_OFFSET, MMI_VC_RING_OFF_BTN_Y_OFFSET); + } + else if((ext->voiph263fmt == VOIP_H263_FMT_CIF) + || (ext->voiph263fmt == VOIP_H263_FMT_4CIF) + || (ext->voiph263fmt == VOIP_H263_FMT_16CIF) + || (ext->voiph263fmt == VOIP_H263_FMT_OTHER)) + { + /*Create the canvas object*/ + canvas = lv_canvas_create(content, NULL); + lv_obj_set_click(canvas, true); + lv_obj_set_event_cb(canvas, canvas_button_hidden_event_cb); + video_call_add_element(canvas); + ext->canvas = canvas; + + /*Assign the buffer to the canvas*/ + lv_img_set_src(canvas, ICON_BACKGROUND); + voip_signal_check_start(ext); + + // duration + label = lv_label_create(canvas, 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(label, "0:0"); + lv_obj_set_click(label, false); + lv_obj_set_base_dir(label, LV_BIDI_DIR_LTR); + lv_obj_align(label, NULL, LV_ALIGN_IN_TOP_MID, 0, 0); + ext->phone_status_label = label; + ext->connect_time = label; + + // signal weak notification + label = lv_label_create(canvas, NULL); + lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font26); + lv_label_set_text_id(label, WATCH_TEXT_ID_SIGNAL_WEAK); + lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); + lv_obj_align(label, canvas, LV_ALIGN_CENTER, 0, -10); + lv_obj_set_click(label, false); + lv_obj_set_hidden(label, true); + ext->signal_weak_label = label; + + // btn volume + btn = lv_imgbtn_create(canvas, NULL); + lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_VIDEO_CALL_VOLUME_BTN); + lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_VIDEO_CALL_VOLUME_BTN); + lv_obj_set_event_cb(btn, voip_volume_btn_action); + lv_obj_align(btn, canvas, LV_ALIGN_IN_BOTTOM_LEFT, MMI_VC_CALLING_VOLUME_BTN_X_OFFSET, MMI_VC_RING_OFF_BTN_Y_OFFSET); + lv_obj_add_style(btn, LV_OBJ_PART_MAIN, &lv_watch_style_transp); + ext->ring_value_button = btn; + + // btn switch video + //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; + + // btn ring off + btn = lv_imgbtn_create(canvas, 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, canvas, LV_ALIGN_IN_BOTTOM_RIGHT, MMI_VC_CALLING_RING_OFF_BTN_X_OFFSET, MMI_VC_RING_OFF_BTN_Y_OFFSET); + lv_obj_add_style(btn, LV_OBJ_PART_MAIN, &lv_watch_style_transp); + ext->ring_off_button = btn; + + 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->ring_off_button, ext->canvas_button_hidden_flag); } - 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->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); + } } } -static void voip_set_volume_when_slider_act(void) +static lv_obj_t * mmi_vc_ui_create(lv_obj_t * activity_obj, MMI_VIDEO_CALL_UI_E video_call_ui) { - printf("%s\n", __FUNCTION__); - if(lv_watch_get_activity_obj(ACT_ID_SLIDER)) { - if(MMI_VOIP_CALL_STATE_NULL != s_video_call_params.state) { - uint8_t volume = voip_get_call_volume(); - printf("set nv, speaker volume is %d.\n", volume); - UI_NV_Write_Req(NV_SECTION_UI_PHONE, 0, 1, &volume); - } + printf("%s %d\n", __FUNCTION__, __LINE__); + + if(MMI_VC_UI_CONNECTED == video_call_ui) + { + /* set speaker volume to nv when leaving activiry's slider */ + voip_set_volume_when_slider_act(); } -} -#if VIDEO_SIGNAL_CHECK -static void signal_check(lv_task_t *task) -{ - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); - if(!ext) return; + /* cleanup phone first */ + voip_phone_cleanup(); - if((false == is_rat_gsm()) && - (watch_modem_get_signal_bar_req() < MMI_MODEM_SIGNAL_BAR_3)) { - lv_obj_set_hidden(ext->signal_weak_label, false); - } else { - lv_obj_set_hidden(ext->signal_weak_label, true); + 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); + } } -} -#endif -static void voip_signal_check_start(void * ext) -{ -#if VIDEO_SIGNAL_CHECK - if(NULL == signal_check_task) - signal_check_task = lv_task_create(signal_check, VIDEO_SIGNAL_CHECK_PERIOD, LV_TASK_PRIO_HIGH, NULL); -#endif -} + lv_obj_t * obj = lv_watch_obj_create(activity_obj); + LV_ASSERT_MEM(obj); + 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); -static void voip_signal_check_stop(void) -{ -#if VIDEO_SIGNAL_CHECK - if(signal_check_task) { - lv_task_del(signal_check_task); - signal_check_task = NULL; + 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) { + return(NULL); } + + ext->phone_status_label = NULL; + ext->phone_animation_obj = NULL; + ext->phone_ui_t = video_call_ui; + ext->local_remote_switch_flag = VOIP_REMOTE_SWITCH_NULL; +#if ENABLE_VIDEO_SCALE == 0 + ext->voiph263fmt = VOIP_H263_FMT_QCIF; +#else + ext->voiph263fmt = VOIP_H263_FMT_OTHER; #endif -} -static bool is_rat_gsm(void) -{ - MMI_MODEM_PLMN_RAT rat; + hal_rtc_t rtc_curr; // current rtc time + Hal_Rtc_Gettime(&rtc_curr); + ext->connect_start_time = time_to_seconds(&rtc_curr); + ext->connect_time = NULL; + ext->ring_value_button = NULL; + ext->view_switch_button = NULL; + ext->ring_off_button = NULL; + ext->canvas_button_hidden_flag = NOT_HIDDEN; - watch_modem_get_operator_req(&rat); - if(MMI_MODEM_PLMN_RAT_GSM == rat) - return true; - else - return false; -} + /* content */ + 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_set_click(content, false); + lv_obj_align(content, obj, LV_ALIGN_CENTER, 0, 0); -static void rat_check(lv_task_t *task) -{ - if(is_rat_gsm()) { - mmi_video_call_phone_ring_off_action(NULL, LV_EVENT_CLICKED); + 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) + { + 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); } -} -static void voip_rat_check_start(void) -{ - if(NULL == rat_check_task) - rat_check_task = lv_task_create(rat_check, VIDEO_RAT_CHECK_PERIOD, LV_TASK_PRIO_HIGH, NULL); + return obj; } -static void voip_rat_check_stop(void) +void mmi_vc_call_action_incoming(char * number, MODEM_VIDEO_CALL_TYPE type) { - if(rat_check_task) { - lv_task_del(rat_check_task); - rat_check_task = NULL; - } -} + VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %s,%d\n", __FUNCTION__, __LINE__, number, type); -void voip_fps_check(int8_t fps) -{ - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); - if(NULL != ext) { - if((VIDEO_CALL_FPS_CHECK_LIMIT >= fps) && (0 != fps)) { - printf("%s %d\n", __FUNCTION__, fps); - if(lv_obj_get_hidden(ext->signal_weak_label) == false) return; - lv_obj_set_hidden(ext->signal_weak_label, false); - } else { - if(lv_obj_get_hidden(ext->signal_weak_label) == true) return; - lv_obj_set_hidden(ext->signal_weak_label, true); - } + if(true == mmi_active_screen_is_prohibit_interrupted() || true == is_rat_gsm()) + { + VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %s,%d\n", __FUNCTION__, __LINE__); + + mmi_video_call_reject_req(TRUE); + return; } -} - + if(AUDIO_CTRL_PRIORITY_2 == Hal_Audio_Manage_Start_Req(AUDIO_CTRL_PRIORITY_2, voip_audio_ctrl_callback)) + { + 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); -#ifdef __VIDEO_CALL_TEST__ -#define MMI_VC_ROOM_ID "jrtc001" // "104799" -#endif + HAL_SPEAKER_GAIN volume = query_current_volume(); + + if(!Hal_Set_BT_Audio_Path(volume)) + { + Hal_Call_Speaker(HAL_CALL_SPK_ON, volume); + } + Hal_NFFS_File_Play_Repeat(AUDIO_INCOMING_CALL, volume); -static nv_watch_vc_contact_t s_vc_contact = {0}; -static TIMER_ID fail_timer_id = NULL; + voip_rat_check_start(); + mmi_vc_ui_create(NULL, MMI_VC_UI_INCOMING); + } + else + { + // AUDIO_CTRL_PRIORITY_1 + VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %s,%d\n", __FUNCTION__, __LINE__); + + // auto reject + mmi_video_call_reject_req(FALSE); + voip_signal_check_stop(); + voip_rat_check_stop(); -char * mmi_video_call_params_number_get(void) -{ - return (s_video_call_params.number); -} + // 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_VOIP_CALL_STATE_E mmi_video_call_params_state_get(void) -{ - return (s_video_call_params.state); -} + // 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; + } -MODEM_VIDEO_CALL_TYPE mmi_video_call_params_type_get(void) -{ - return (s_video_call_params.voip_call_type); + Hal_Mem_Set(&s_video_call_params, 0, sizeof(MMI_VIDEO_CALL_PARAMS_T)); + voip_set_volume_when_slider_act(); + voip_phone_cleanup(); + lv_watch_png_cache_all_free(); + Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_2); + } } - -void mmi_video_call_contact_nv_write(void) -{ - uint32_t nv_data_length = sizeof(nv_watch_vc_contact_t); - - if(nv_data_length != UI_NV_Write_Req(NV_SECTION_UI_VC_CONTACT, 0, nv_data_length, (uint8_t *)&s_vc_contact)) - { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: nv write fail\n", __FUNCTION__, __LINE__); - } -} - -void mmi_video_call_contact_nv_read(void) +void mmi_vc_call_action_connect(void) { - uint32_t nv_data_length = sizeof(nv_watch_vc_contact_t); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); - if(nv_data_length != UI_NV_Read_Req(NV_SECTION_UI_VC_CONTACT, 0, nv_data_length, (uint8_t *)&s_vc_contact)) - { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: nv read fail\n", __FUNCTION__, __LINE__); - } -} - -void mmi_video_call_contact_set(nv_watch_vc_contact_t * contact_list) -{ - if(NULL == contact_list) + if(MMI_VIDEO_CALL_STATE_CALLING == s_video_call_params.state) { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); return; } + s_video_call_params.state = MMI_VIDEO_CALL_STATE_CALLING; - _lv_memcpy(&s_vc_contact, contact_list, sizeof(nv_watch_vc_contact_t)); - mmi_video_call_contact_nv_write(); + // 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 playing tone + Hal_Tone_Play_End(); - //phonebook_update_ui(contact_list, count, 0, 0); + Hal_Set_Voice_Call_Status(VOICE_CALL_START); + // create connected UI + mmi_vc_ui_create(NULL, MMI_VC_UI_CONNECTED); } - - - -static void mmi_video_call_req_timeout_cb(void * para) +static void mmi_vc_call_dialing_timeout_cb(void * para) { VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); @@ -1770,12 +1615,12 @@ static void mmi_video_call_req_timeout_cb(void * para) mmi_video_call_hangup_req(TRUE); } -void mmi_video_call_req(char * number, MODEM_VIDEO_CALL_TYPE voip_call_type) +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, voip_call_type); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %s,%d\n", __FUNCTION__, __LINE__, number, type); // check call state - if(MMI_VOIP_CALL_STATE_NULL != s_video_call_params.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); return; @@ -1797,26 +1642,26 @@ void mmi_video_call_req(char * number, MODEM_VIDEO_CALL_TYPE voip_call_type) // set call parameters Hal_Mem_Set(&s_video_call_params, 0, sizeof(MMI_VIDEO_CALL_PARAMS_T)); - s_video_call_params.is_mt = false; - s_video_call_params.state = MMI_VOIP_CALL_STATE_DIALING; - s_video_call_params.voip_call_type = voip_call_type; + s_video_call_params.is_mt = false; + s_video_call_params.state = MMI_VIDEO_CALL_STATE_DIALING; + s_video_call_params.call_type = type; strcpy(s_video_call_params.number, number); - - int8_t ret = mmi_video_call_dial_req(voip_call_type, s_video_call_params.number); + + int8_t ret = mmi_video_call_dial_req(type, s_video_call_params.number); if(NULL == s_video_call_params.callreq_timer_id) { UINT32 timeout = (ret >= 0) ? VOIP_CALLREQ_TIME_OUT : 1*1000; - s_video_call_params.callreq_timer_id = Hal_Timer_Start(timeout, mmi_video_call_req_timeout_cb, NULL, 0); + s_video_call_params.callreq_timer_id = Hal_Timer_Start(timeout, mmi_vc_call_dialing_timeout_cb, NULL, 0); } // create dialing UI voip_rat_check_start(); - mmi_video_call_phone_create(NULL, VOIP_PHONE_UI_DIALING); + mmi_vc_ui_create(NULL, MMI_VC_UI_DIALING); Hal_Audio_Manage_Start_Req(AUDIO_CTRL_PRIORITY_2, voip_audio_ctrl_callback); Hal_Set_Voice_Call_Status(VOICE_CALL_START); } -static void mmi_video_call_main_prepare_destory(lv_obj_t * activity_obj) +static void mmi_vc_main_prepare_destory(lv_obj_t * activity_obj) { VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); @@ -1831,7 +1676,7 @@ static void mmi_video_call_main_prepare_destory(lv_obj_t * activity_obj) void mmi_video_call_fail_timeout_cb(void *para) { - mmi_video_call_main_prepare_destory(NULL); + mmi_vc_main_prepare_destory(NULL); } static void mmi_video_call_fail(lv_obj_t * obj) @@ -1855,19 +1700,19 @@ static void mmi_video_call_fail(lv_obj_t * obj) TIMER_ID timer_id = Hal_Timer_Start(2*1000, mmi_video_call_fail_timeout_cb, NULL, FALSE); } -static void mmi_video_call_voice_btn_action(lv_obj_t * btn, lv_event_t e) +static void mmi_vc_voice_btn_action(lv_obj_t * btn, lv_event_t e) { if(LV_EVENT_CLICKED != e) { return; } - if(mmi_video_call_check_mo_permission()) + if(true == mmi_video_call_check_mo_permission()) { #ifdef __VIDEO_CALL_TEST__ - mmi_video_call_req(MMI_VC_ROOM_ID, MODEM_VIDEO_CALL_TYPE_VOICE); + mmi_vc_call_action_dialing(MMI_VC_ROOM_ID, MODEM_VIDEO_CALL_TYPE_VOICE); #else - mmi_video_call_req(, MODEM_VIDEO_CALL_TYPE_VOICE); + mmi_vc_call_action_dialing(s_vc_contact.number[0], MODEM_VIDEO_CALL_TYPE_VOICE); #endif } else @@ -1876,19 +1721,19 @@ static void mmi_video_call_voice_btn_action(lv_obj_t * btn, lv_event_t e) } } -static void mmi_video_call_video_btn_action(lv_obj_t * btn, lv_event_t e) +static void mmi_vc_video_btn_action(lv_obj_t * btn, lv_event_t e) { if(LV_EVENT_CLICKED != e) { return; } - if(mmi_video_call_check_mo_permission()) + if(true == mmi_video_call_check_mo_permission()) { #ifdef __VIDEO_CALL_TEST__ - mmi_video_call_req(MMI_VC_ROOM_ID, MODEM_VIDEO_CALL_TYPE_VIDEO); + mmi_vc_call_action_dialing(MMI_VC_ROOM_ID, MODEM_VIDEO_CALL_TYPE_VIDEO); #else - mmi_video_call_req(, MODEM_VIDEO_CALL_TYPE_VIDEO); + mmi_vc_call_action_dialing(s_vc_contact.number[0], MODEM_VIDEO_CALL_TYPE_VIDEO); #endif } else @@ -1897,15 +1742,15 @@ static void mmi_video_call_video_btn_action(lv_obj_t * btn, lv_event_t e) } } -static lv_obj_t * mmi_video_call_main_create(lv_obj_t * activity_obj) +static lv_obj_t * mmi_vc_main_create(lv_obj_t * activity_obj) { if(activity_obj == NULL) { lv_watch_activity_ext_t activity_ext = {0}; activity_ext.actId = ACT_ID_VOIP_PHONEBOOK; - activity_ext.create = mmi_video_call_main_create; - activity_ext.prepare_destory = mmi_video_call_main_prepare_destory; + activity_ext.create = mmi_vc_main_create; + activity_ext.prepare_destory = mmi_vc_main_prepare_destory; activity_obj = lv_watch_creat_activity_obj(&activity_ext); if(NULL == activity_obj) return NULL; @@ -1933,6 +1778,20 @@ static lv_obj_t * mmi_video_call_main_create(lv_obj_t * activity_obj) { VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%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)); @@ -1944,15 +1803,16 @@ static lv_obj_t * mmi_video_call_main_create(lv_obj_t * activity_obj) 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_video_call_voice_btn_action); + lv_obj_set_event_cb(voicebtn, mmi_vc_voice_btn_action); 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_video_call_video_btn_action); + lv_obj_set_event_cb(videobtn, mmi_vc_video_btn_action); //lv_watch_set_free_num(activity_obj, 1); + #endif } return(obj); @@ -1963,7 +1823,7 @@ void video_call_create_event_cb(lv_obj_t * btn, lv_event_t e) if(LV_EVENT_CLICKED == e) { lv_watch_png_cache_all_free(); - mmi_video_call_main_create(NULL); + mmi_vc_main_create(NULL); } else if(LV_EVENT_LONG_PRESSED == e) { @@ -1986,9 +1846,9 @@ uint8_t voip_get_call_volume(void) bool watch_voip_suspend_check(void) { #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__ - if((s_video_call_params.voip_call_type == MODEM_VIDEO_CALL_TYPE_VIDEO) - || (MMI_VOIP_CALL_STATE_INCOMING == s_video_call_params.state) - || (MMI_VOIP_CALL_STATE_DIALING == s_video_call_params.state) + 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) ) { return false; @@ -2023,16 +1883,16 @@ void voip_activity_destroy_req(void) switch(s_video_call_params.state) { - case MMI_VOIP_CALL_STATE_NULL: - case MMI_VOIP_CALL_STATE_INVALID: + case MMI_VIDEO_CALL_STATE_NONE: + case MMI_VIDEO_CALL_STATE_INVALID: // do noting break; - case MMI_VOIP_CALL_STATE_ACTIVE: + case MMI_VIDEO_CALL_STATE_CALLING: mmi_video_call_hangup_req(FALSE); break; - case MMI_VOIP_CALL_STATE_INCOMING: + case MMI_VIDEO_CALL_STATE_INCOMING: Hal_Tone_Play_End(); mmi_video_call_reject_req(FALSE); break; @@ -2058,7 +1918,7 @@ void voip_activity_destroy_req(void) } Hal_Mem_Set(&s_video_call_params, 0, sizeof(MMI_VIDEO_CALL_PARAMS_T)); - s_video_call_params.state = MMI_VOIP_CALL_STATE_NULL; + s_video_call_params.state = MMI_VIDEO_CALL_STATE_NONE; 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 0ec167fe..cf5c4233 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 @@ -39,19 +39,15 @@ uint8_t voip_get_call_volume(void); #define VIDEO_CALL_DEBUG_PRINTF(fmt, ...) #endif -#define __VIDEO_CALL_TEST__ +//#define __VIDEO_CALL_TEST__ + #define ENABLE_VIDEO_SCALE 1 -#define VOIP_PHONE_TEST 0 -#define VOIP_PHONEBOOK_TEST 0 -#define VOIP_JUPHOON_TEST 0 // 1 + #define VOIP_PHONE_RING_OFF_ANIMATION_TIME 0 #define VOIP_PHONE_RING_OFF_CONTINUE_TIME 1500 /*ms*/ -#define VOIP_PHONE_NV_VOLUME_OFFSET 0 -#define VOIP_PHONE_NV_EMERGENCY_NUM_OFFSET 1 -#define VOIP_PHONEBOOK_CONTACTS_MAX_NAME_LEN NV_CONTACTS_MAX_NAME_LEN -#define VOIP_PHONEBOOK_CONTACTS_MAX_NUMBER_LEN NV_CONTACTS_MAX_NUMBER_LEN + #define LV_COLOR_HEX3(c) LV_COLOR_MAKE((uint8_t) (((c >> 4) & 0xF0) | ((c >> 8) & 0xF)), \ (uint8_t) ((uint32_t)(c & 0xF0) | ((c & 0xF0) >> 4)), \ (uint8_t) ((uint32_t)(c & 0xF) | ((c & 0xF) << 4))) @@ -77,28 +73,31 @@ uint8_t voip_get_call_volume(void); #define VOIP_CALLREQ_TIME_OUT 60*1000 +#if USE_LV_WATCH_UI_240_320 +#define MMI_VC_RING_OFF_BTN_Y_OFFSET (-30) +#define MMI_VC_INCOMING_RING_OFF_BTN_X_OFFSET (20) +#define MMI_VC_INCOMING_HOOK_BTN_X_OFFSET (-20) + +#define MMI_VC_CALLING_RING_OFF_BTN_X_OFFSET (-20) +#define MMI_VC_CALLING_VOLUME_BTN_X_OFFSET (20) + +#elif USE_LV_WATCH_UI_240_280 +#define MMI_VC_RING_OFF_BTN_Y_OFFSET (-15) +#define MMI_VC_INCOMING_RING_OFF_BTN_X_OFFSET (20) +#define MMI_VC_INCOMING_HOOK_BTN_X_OFFSET (-20) + +#define MMI_VC_CALLING_RING_OFF_BTN_X_OFFSET (-20) +#define MMI_VC_CALLING_VOLUME_BTN_X_OFFSET (20) + +#else + + +#endif + /********************** * TYPEDEFS **********************/ -typedef enum { - VOIP_PHONE_UI_INCOMING = 0, - VOIP_PHONE_UI_DIALING, - VOIP_PHONE_UI_CONNECTED, -} voip_phone_ui_e; - -typedef enum -{ - MMI_VOIP_CALL_STATE_NULL = 0, - MMI_VOIP_CALL_STATE_ACTIVE = 1, - MMI_VOIP_CALL_STATE_HOLDING = 2, - MMI_VOIP_CALL_STATE_DIALING = 3, /* MO call only */ - MMI_VOIP_CALL_STATE_ALERTING = 4, /* MO call only */ - MMI_VOIP_CALL_STATE_INCOMING = 5, /* MT call only */ - MMI_VOIP_CALL_STATE_WAITING = 6, /* MT call only */ - MMI_VOIP_CALL_STATE_INVALID = 0xFF -} MMI_VOIP_CALL_STATE_E; - enum voipregisterstate { VOIP_REGISTER_OK = 0, @@ -128,6 +127,9 @@ 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]; @@ -151,21 +153,37 @@ typedef struct { lv_coord_t move_width; } lv_voip_phonebook_obj_ext_t; +typedef enum +{ + MMI_VC_UI_INCOMING = 0, + MMI_VC_UI_DIALING, + MMI_VC_UI_CONNECTED, +} MMI_VIDEO_CALL_UI_E; + +typedef enum +{ + MMI_VIDEO_CALL_STATE_NONE, + MMI_VIDEO_CALL_STATE_CALLING, + MMI_VIDEO_CALL_STATE_INCOMING, + MMI_VIDEO_CALL_STATE_DIALING, + MMI_VIDEO_CALL_STATE_INVALID, +}MMI_VIDEO_CALL_STATE_E; + + #define VOIP_RING_OFF_TIMER_LEN 1000 typedef struct { - MMI_VOIP_CALL_STATE_E state; - int32_t index; /* Connection Index for use with, eg, AT+CHLD */ + MMI_VIDEO_CALL_STATE_E state; + //int32_t index; /* Connection Index for use with, eg, AT+CHLD */ bool is_mt; /* true if MT call */ bool ring_off; /* true if ring off by user */ bool ring_off_timeout; /* true if ring off timeout */ - bool buffer_alarm; TIMER_ID ring_off_timer_id; /* ring off timer */ - char number[NV_CONTACTS_MAX_NUMBER_LEN]; /* phone number */ - char name[NV_CONTACTS_MAX_NAME_LEN]; /* contact name */ + char number[NV_WATCH_VC_CONTACT_NUMBER_LEN]; /* phone number */ + char name[NV_WATCH_VC_CONTACT_NAME_LEN]; /* contact name */ //const void * img_src; //const void * img_src_small; - MODEM_VIDEO_CALL_TYPE voip_call_type; + MODEM_VIDEO_CALL_TYPE call_type; TIMER_ID callreq_timer_id; /* callreq timer */ uint8_t speaker_volume; /* speaker volume during call procedure */ } MMI_VIDEO_CALL_PARAMS_T; @@ -176,7 +194,7 @@ typedef struct { lv_obj_t * phone_status_label; lv_obj_t * phone_animation_obj; uint32_t connect_start_time; - voip_phone_ui_e phone_ui_t; + MMI_VIDEO_CALL_UI_E phone_ui_t; enum local_remote_switch_e local_remote_switch_flag; enum voip_h263_fmt voiph263fmt; lv_obj_t * connect_time; @@ -192,22 +210,23 @@ typedef struct { * GLOBAL PROTOTYPES **********************/ lv_voip_phone_obj_ext_t * voip_phone_get_ext(void); -void * mmi_video_call_phone_get_video_buffer(void); -void watch_voip_call_response_connect(int32_t index); -void watch_voip_call_response_no_carrier(int32_t index, uint8_t isNoCarrier); -void watch_voip_call_response_alerting(int32_t index); -void watch_voip_incomingcall_response(char * number, int32_t calltype); -void watch_voip_call_response_bottom_error(void); -void watch_voip_call_response_bottom_need_redail(void); + bool check_voipcall_enter_pm_ind(void); void watch_voip_message_handle_init(void); -void watch_ui_voip_message_handle(void * voipmsg); -void watch_voip_autotest_handle(void * testmsg); + 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); void mmi_video_call_contact_nv_read(void); -void mmi_video_call_contact_set(nv_watch_vc_contact_t * contact_list); +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); + int8_t mmi_video_call_dial_req(MODEM_VIDEO_CALL_TYPE calltype, char * pContactUri); void mmi_video_call_hangup_req(BOOL bye); diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/phone/phone.c b/2.sdk/sdk/gui/lv_watch/lv_apps/phone/phone.c index 311a19c9..1b96c9a1 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/phone/phone.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/phone/phone.c @@ -59,6 +59,24 @@ extern phone_call_params_t call_params; * GLOBAL FUNCTIONS ***********************/ #ifdef __MMI_ZHSX_SUPPORT__ + +#if USE_LV_WATCH_UI_240_320 +#define MMI_PHONE_CALL_BTN_Y_OFFSET (-50) +#define MMI_PHONE_CALL_LEFT_BTN_X_OFFSET (20) +#define MMI_PHONE_CALL_RIGHT_BTN_X_OFFSET (-20) + +#elif USE_LV_WATCH_UI_240_280 +#define MMI_PHONE_CALL_BTN_Y_OFFSET (-50 + 15) +#define MMI_PHONE_CALL_LEFT_BTN_X_OFFSET (20) +#define MMI_PHONE_CALL_RIGHT_BTN_X_OFFSET (-20) + +#else +#define MMI_PHONE_CALL_BTN_Y_OFFSET (-50) +#define MMI_PHONE_CALL_LEFT_BTN_X_OFFSET (20) +#define MMI_PHONE_CALL_RIGHT_BTN_X_OFFSET (-20) + +#endif + static void phone_dialing(lv_obj_t * content) { printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); @@ -108,14 +126,14 @@ static void phone_dialing(lv_obj_t * content) lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_PHONE_RING_VOLUME); lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_PHONE_RING_VOLUME); lv_obj_set_event_cb(btn, volume_btn_action); - lv_obj_align(btn, content, LV_ALIGN_IN_BOTTOM_LEFT, 20, -50); + lv_obj_align(btn, content, LV_ALIGN_IN_BOTTOM_LEFT, MMI_PHONE_CALL_LEFT_BTN_X_OFFSET, MMI_PHONE_CALL_BTN_Y_OFFSET); //btn ring off btn = lv_imgbtn_create(content, NULL); lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_PHONE_RING_OFF); lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_PHONE_RING_OFF); lv_obj_set_event_cb(btn, ring_off_action); - lv_obj_align(btn, content, LV_ALIGN_IN_BOTTOM_RIGHT, -20, -50); + lv_obj_align(btn, content, LV_ALIGN_IN_BOTTOM_RIGHT, MMI_PHONE_CALL_RIGHT_BTN_X_OFFSET, MMI_PHONE_CALL_BTN_Y_OFFSET); } static void phone_ring(lv_obj_t * content) @@ -170,14 +188,14 @@ static void phone_ring(lv_obj_t * content) lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_PHONE_RING_OFF); lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_PHONE_RING_OFF); lv_obj_set_event_cb(btn, ring_off_action); - lv_obj_align(btn, content, LV_ALIGN_IN_BOTTOM_LEFT, 20, -50); + lv_obj_align(btn, content, LV_ALIGN_IN_BOTTOM_LEFT, MMI_PHONE_CALL_LEFT_BTN_X_OFFSET, MMI_PHONE_CALL_BTN_Y_OFFSET); //btn ring hook btn = lv_imgbtn_create(content, NULL); lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_PHONE_HOOK); lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_PHONE_HOOK); lv_obj_set_event_cb(btn, ring_hook_action); - lv_obj_align(btn, content, LV_ALIGN_IN_BOTTOM_RIGHT, -20, -50); + lv_obj_align(btn, content, LV_ALIGN_IN_BOTTOM_RIGHT, MMI_PHONE_CALL_RIGHT_BTN_X_OFFSET, MMI_PHONE_CALL_BTN_Y_OFFSET); } static void phone_connected(lv_obj_t * content) @@ -231,14 +249,14 @@ static void phone_connected(lv_obj_t * content) lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_PHONE_RING_VOLUME); lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_PHONE_RING_VOLUME); lv_obj_set_event_cb(btn, volume_btn_action); - lv_obj_align(btn, content, LV_ALIGN_IN_BOTTOM_LEFT, 20, -50); + lv_obj_align(btn, content, LV_ALIGN_IN_BOTTOM_LEFT, MMI_PHONE_CALL_LEFT_BTN_X_OFFSET, MMI_PHONE_CALL_BTN_Y_OFFSET); //btn ring off btn = lv_imgbtn_create(content, NULL); lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_PHONE_RING_OFF); lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_PHONE_RING_OFF); lv_obj_set_event_cb(btn, ring_off_action); - lv_obj_align(btn, content, LV_ALIGN_IN_BOTTOM_RIGHT, -20, -50); + lv_obj_align(btn, content, LV_ALIGN_IN_BOTTOM_RIGHT, MMI_PHONE_CALL_RIGHT_BTN_X_OFFSET, MMI_PHONE_CALL_BTN_Y_OFFSET); hal_rtc_t rtc_curr; // current rtc time Hal_Rtc_Gettime(&rtc_curr); diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_about.c b/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_about.c index 18146f0a..fbe230bc 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_about.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_about.c @@ -58,6 +58,77 @@ void setting_about_create_btn_action(lv_obj_t * btn, lv_event_t event) **********************/ static lv_obj_t * setting_about_create(lv_obj_t * activity_obj) { +#ifdef __MMI_ZHSX_SUPPORT__ + char info_str[96 + 1] = {0}; + + if(NULL == activity_obj) { + lv_watch_activity_ext_t activity_ext; + memset(&activity_ext, 0, sizeof(lv_watch_activity_ext_t)); + activity_ext.actId = ACT_ID_SETTING_ABOUT; + activity_ext.create = setting_about_create; + activity_ext.prepare_destory = setting_about_prepare_destory; + activity_obj = lv_watch_creat_activity_obj(&activity_ext); + LV_ASSERT_MEM(activity_obj); + if(NULL == activity_obj) { + return NULL; + } + } + + lv_obj_t * obj = lv_watch_obj_create(activity_obj); + LV_ASSERT_MEM(obj); + if(NULL == obj) { + return NULL; + } + + 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_add_style(content, LV_CONT_PART_MAIN, &lv_watch_style_transp); + lv_obj_align(content, NULL, LV_ALIGN_IN_TOP_LEFT, 0, 0); + lv_obj_set_click(content, true); + lv_setting_about_ext_t * about_ext = lv_obj_allocate_ext_attr(content, sizeof(lv_setting_about_ext_t)); + about_ext->click_count = 0; + + lv_obj_t * title_label = lv_label_create(content, NULL); + lv_obj_add_style(title_label, LV_LABEL_PART_MAIN, &lv_watch_font20_gray); + lv_label_set_align(title_label, LV_LABEL_ALIGN_CENTER); + lv_obj_set_click(title_label, false); + lv_label_set_text_id(title_label, WATCH_TEXT_ID_ABOUT_WATCH); + lv_obj_align(title_label, content, LV_ALIGN_IN_TOP_MID, 0, 10); + + lv_obj_t * info_label = lv_label_create(content, NULL); + lv_obj_add_style(info_label, LV_LABEL_PART_MAIN, &lv_watch_font26); // &lv_watch_font20); + lv_label_set_long_mode(info_label, LV_LABEL_LONG_BREAK); + lv_obj_set_width(info_label, LV_HOR_RES - 20); + lv_label_set_align(info_label, LV_LABEL_ALIGN_CENTER); + snprintf(info_str, 96, "%s:%s\n%s:%s", (char *)lv_lang_get_text(WATCH_TEXT_ID_MODE), app_adaptor_get_model_id(), + (char *)lv_lang_get_text(WATCH_TEXT_ID_VERSION_NUM), app_adaptor_get_version()); + lv_label_set_text(info_label, info_str); + lv_obj_align(info_label, content, LV_ALIGN_IN_TOP_MID, 0, 80); + lv_obj_set_click(info_label, false); + +#if USE_LV_WATCH_ALIPAY != 0 + lv_obj_t * labelId2 = lv_label_create(content, NULL); + lv_obj_add_style(labelId2,LV_OBJ_PART_MAIN, &lv_watch_font26); // &lv_watch_font20); + lv_obj_set_click(labelId2, false); + lv_obj_align(labelId2, content, LV_ALIGN_OUT_BOTTOM_MID, -10, -40); + + uint8_t id2_st = 0; + upay_id2_init(); + upay_id2_check_status(&id2_st); + if( id2_st == 0) { + lv_label_set_text(labelId2, "ID2:No"); + } else { + lv_label_set_text(labelId2, "ID2:Yes"); + } +#endif + + lv_obj_set_event_cb(content, setting_about_click_event_cb); + lv_watch_obj_add_element(content); + + return obj; + +#else + char model_str[20] = {}; char version_str[40] = {}; @@ -134,6 +205,7 @@ static lv_obj_t * setting_about_create(lv_obj_t * activity_obj) lv_watch_obj_add_element(content); return obj; +#endif } static void setting_about_prepare_destory(lv_obj_t * activity_obj) diff --git a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.c b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.c index de3f300e..4a92e208 100644 --- a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.c +++ b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.c @@ -229,7 +229,7 @@ static void mmi_protocol_watch_heartbeat_timer_cb(uint32_t para) { PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: cur=%d, stamp=%d\n", __FUNCTION__, __LINE__, cur_time_stamp, s_watch_heartbeat_action_time_stamp); - mmi_protocol_action_link(); + mmi_protocol_fzd_action_HEARTBEAT(); s_watch_heartbeat_action_time_stamp = cur_time_stamp; } @@ -243,7 +243,7 @@ void mmi_protocol_watch_heartbeat_action(void) { PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - mmi_protocol_action_link(); + mmi_protocol_fzd_action_HEARTBEAT(); Hal_Rtc_Gettime_Count(&s_watch_heartbeat_action_time_stamp); @@ -252,10 +252,12 @@ void mmi_protocol_watch_heartbeat_action(void) } } -bool mmi_protocol_action_link(void) +#ifdef __MMI_ZHSX_SUPPORT_FZD_SERVER_WULIAN__ +bool mmi_protocol_watch_link_action(void) { - return mmi_protocol_fzd_action_link(); + return mmi_protocol_fzd_action_LINK(); } +#endif bool mmi_protocol_check_state_before_send_action(void) { diff --git a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.h b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.h index 26876fb8..d043e1b7 100644 --- a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.h +++ b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.h @@ -62,7 +62,9 @@ void mmi_protocol_watch_timed_mission_action(void); void mmi_protocol_watch_heartbeat_stop(void); void mmi_protocol_watch_heartbeat_action(void); -bool mmi_protocol_action_link(void); +#ifdef __MMI_ZHSX_SUPPORT_FZD_SERVER_WULIAN__ +bool mmi_protocol_watch_link_action(void); +#endif bool mmi_protocol_action_send_temperature(float temp_value); 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 b895a8a4..81364b01 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 @@ -38,7 +38,7 @@ int mmi_protocol_fzd_convert_md5_data_get(MMI_PROTOCOL_FZD_ACTION_ENUM action, i unsigned char action_str[MMI_PROTOCOL_FZD_ACTION_STR_LEN_MAX + 1] = {0}; int action_str_len = 0; - strcpy(action_str, mmi_protocol_fzd_action_string_get(action)); + strncpy(action_str, mmi_protocol_fzd_action_string_get(action), MMI_PROTOCOL_FZD_ACTION_STR_LEN_MAX); action_str_len = strlen(action_str); //device name @@ -179,7 +179,7 @@ static bool mmi_protocol_fzd_send_content_construct(MMI_PROTOCOL_FZD_ACTION_ENUM { unsigned char * send_space_ptr = NULL; int send_space_size = 0, curr_offset = 0; - unsigned char convert_md5_str[48] = {0}; // XX*IMEI*LEN*ACTION + unsigned char convert_md5_str[96] = {0}; // XX*IMEI*LEN*ACTION int convert_md5_str_len = 0; unsigned char md5_data_str[MMI_PROTOCOL_FZD_MD5_DATA_LEN + 1] = {0}; @@ -481,7 +481,10 @@ static unsigned char * mmi_protocol_fzd_action_string_get(MMI_PROTOCOL_FZD_ACTIO { {MMI_FZD_ACTION_NONE, "NONE"}, //MMI_FZD_ACTION_NONE - {MMI_FZD_ACTION_LINK, "KA"}, //MMI_FZD_ACTION_LINK + #ifdef __MMI_ZHSX_SUPPORT_FZD_SERVER_WULIAN__ + {MMI_FZD_ACTION_LINK, "LK"}, + #endif + {MMI_FZD_ACTION_HEARTBEAT, "KA"}, {MMI_FZD_ACTION_BIND, "PING"}, // {MMI_FZD_ACTION_GET_TIME, "LGZONE"}, // {MMI_FZD_ACTION_SEND_LOCATION, "UD"}, // @@ -518,13 +521,14 @@ static unsigned char * mmi_protocol_fzd_action_string_get(MMI_PROTOCOL_FZD_ACTIO {MMI_FZD_ACTION_UNBIND, "DLT"}, #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__ - {MMI_FZD_WATCH_GET_VC_CONFIG, "juhoo_config"}, + {MMI_FZD_WATCH_GET_VC_CONFIG, "jup_hoo_config"}, {MMI_FZD_WATCH_GET_VC_CONTACT, "video_contact"}, + {MMI_FZD_WATCH_VC_CALL_REQUEST, "jup_hoo_call"}, {MMI_FZD_SERVER_VC_CALL_RESPONSE, "jup_hoo_reply"}, - - + {MMI_FZD_SERVER_VC_CALL_REQUEST, "jup_hoo_request"}, + {MMI_FZD_WATCH_VC_CALL_RESPONSE, "jup_hoo_response"}, #endif @@ -572,8 +576,14 @@ static bool mmi_protocol_fzd_content_parse(unsigned char * content_ptr, unsigned switch(action) { + #ifdef __MMI_ZHSX_SUPPORT_FZD_SERVER_WULIAN__ case MMI_FZD_ACTION_LINK: - mmi_protocol_fzd_parse_ACTION_LINK(next_buff, next_buff_len); + mmi_protocol_fzd_parse_LINK(next_buff, next_buff_len); + break; + #endif + + case MMI_FZD_ACTION_HEARTBEAT: + mmi_protocol_fzd_parse_HEARTBEAT(next_buff, next_buff_len); break; case MMI_FZD_ACTION_BIND: @@ -699,6 +709,12 @@ static bool mmi_protocol_fzd_content_parse(unsigned char * content_ptr, unsigned mmi_protocol_fzd_parse_SERVER_VC_CALL_RESPONSE(next_buff, next_buff_len); break; + case MMI_FZD_SERVER_VC_CALL_REQUEST: + mmi_protocol_fzd_parse_SERVER_VC_CALL_REQUEST(next_buff, next_buff_len); + break; + + case MMI_FZD_WATCH_VC_CALL_RESPONSE: + break; #endif @@ -710,10 +726,24 @@ static bool mmi_protocol_fzd_content_parse(unsigned char * content_ptr, unsigned } -bool mmi_protocol_fzd_action_link(void) +#ifdef __MMI_ZHSX_SUPPORT_FZD_SERVER_WULIAN__ +bool mmi_protocol_fzd_action_LINK(void) +{ + return mmi_protocol_fzd_send_without_data(MMI_FZD_ACTION_LINK); +} + +bool mmi_protocol_fzd_parse_LINK(unsigned char * next_buff, unsigned int next_buff_len) +{ + mmi_protocol_watch_heartbeat_action(); + + return true; +} +#endif + +bool mmi_protocol_fzd_action_HEARTBEAT(void) { bool result = false; - MMI_PROTOCOL_FZD_ACTION_ENUM action = MMI_FZD_ACTION_LINK; + MMI_PROTOCOL_FZD_ACTION_ENUM action = MMI_FZD_ACTION_HEARTBEAT; unsigned char * content_buff = NULL; unsigned int content_lenth = 0; hal_rtc_t cur_time = {0}; @@ -740,7 +770,7 @@ bool mmi_protocol_fzd_action_link(void) return result; } -bool mmi_protocol_fzd_parse_ACTION_LINK(unsigned char * next_buff, unsigned int next_buff_len) +bool mmi_protocol_fzd_parse_HEARTBEAT(unsigned char * next_buff, unsigned int next_buff_len) { if(true != mmi_protocol_watch_bind_state_get()) { @@ -785,7 +815,9 @@ bool mmi_protocol_fzd_parse_ACTION_BIND(unsigned char * next_buff, unsigned int if(1 == value) { mmi_protocol_watch_bind_state_set(true); + #if 0 mmi_protocol_watch_timed_mission_action(); + #endif //video call mmi_protocol_fzd_action_get_vc_config(); @@ -2042,12 +2074,12 @@ bool mmi_protocol_fzd_parse_WATCH_GET_VC_CONTACT(unsigned char * next_buff, unsi } t_vc_contact.total = i; - mmi_video_call_contact_set(&t_vc_contact); + mmi_vc_contact_set(&t_vc_contact); return result; } -bool mmi_protocol_fzd_action_send_vc_call(char * number, uint8_t call_type) +bool mmi_protocol_fzd_action_VC_CALL_REQUEST(char * number, uint8_t call_type) { bool result = false; MMI_PROTOCOL_FZD_ACTION_ENUM action = MMI_FZD_WATCH_VC_CALL_REQUEST; @@ -2056,7 +2088,7 @@ bool mmi_protocol_fzd_action_send_vc_call(char * number, uint8_t call_type) sprintf(content_buff, ",%s,%d", number, call_type); content_lenth = strlen(content_buff); - + result = mmi_protocol_fzd_send_with_data(action, content_buff, content_lenth); return result; @@ -2107,22 +2139,66 @@ bool mmi_protocol_fzd_parse_SERVER_VC_CALL_RESPONSE(unsigned char * next_buff, u result = true; mmi_protocol_fzd_send_without_data(action); - char * t_tokens = NULL; - char * t_appkey = NULL; - char * t_key = NULL; + uint8_t t_value = 0; - 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_value = atoi(next_buff); + if(0 == t_value) + { + // the other party is reject + + + } + else + { + // connect + mmi_vc_call_action_connect(); + } - mmi_video_call_jrtc_config_init_01(t_appkey, t_key, t_tokens); + return result; +} - //get contact - mmi_protocol_fzd_action_get_vc_contact(); +bool mmi_protocol_fzd_parse_SERVER_VC_CALL_REQUEST(unsigned char * next_buff, unsigned int next_buff_len) +{ + bool result = false; + MMI_PROTOCOL_FZD_ACTION_ENUM action = MMI_FZD_SERVER_VC_CALL_REQUEST; + + if(NULL == next_buff || 0 == next_buff_len) + { + PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + return false; + } + + result = true; + mmi_protocol_fzd_send_without_data(action); + + char * t_ptr = NULL; + char t_number[NV_WATCH_VC_CONTACT_NUMBER_LEN] = {0}; + uint8_t t_calltype = 0; + + t_ptr = km_strtok_r(NULL, ",", &next_buff); + strncpy(t_number, t_ptr, NV_WATCH_VC_CONTACT_NUMBER_LEN - 1); + t_calltype = atoi(next_buff); + + mmi_vc_call_action_incoming(t_number, t_calltype); return result; } +// state: 1£ºaccept; 0£ºreject +bool mmi_protocol_fzd_action_VC_CALL_RESPONSE(char * number, uint8_t state) +{ + bool result = false; + MMI_PROTOCOL_FZD_ACTION_ENUM action = MMI_FZD_WATCH_VC_CALL_RESPONSE; + unsigned char content_buff[NV_WATCH_VC_CONTACT_NUMBER_LEN + 8] = {0}; + unsigned int content_lenth = 0; + + sprintf(content_buff, ",%s,%d", number, state); + content_lenth = strlen(content_buff); + + result = mmi_protocol_fzd_send_with_data(action, content_buff, content_lenth); + + return result; +} #endif diff --git a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.h b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.h index 64b99593..d9e30558 100644 --- a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.h +++ b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.h @@ -26,19 +26,27 @@ FORMAT: [MD5_DATADEVICE_NAME*DEVICE_ID*CONTENT_LENGTH*CONTENT_KEY,CONTENT_VALUE] ****************************************/ +#ifdef __MMI_ZHSX_SUPPORT_FZD_SERVER_WULIAN__ +#define MMI_PROTOCOL_FZD_MD5_KEY_STR "3JyCjsw4ryXKzjzudayY" +#else #define MMI_PROTOCOL_FZD_MD5_KEY_STR "bZld0ALsZTt15tKEZhOlLPgbsO75BLTP" // "FDF9532BB5914C0F9D0999CAF99DEBB9" // "XMQcHi0lGIdru6xzW7lygBwBT8N0c09P" -#define MMI_PROTOCOL_FZD_MD5_KEY_LEN (32) +#endif +#define MMI_PROTOCOL_FZD_MD5_KEY_LEN (strlen(MMI_PROTOCOL_FZD_MD5_KEY_STR)) // (32) #define MMI_PROTOCOL_FZD_MD5_DATA_LEN (32) #define MMI_PROTOCOL_FZD_HEAD_BRACKET "[" #define MMI_PROTOCOL_FZD_BRACKET_LEN (strlen(MMI_PROTOCOL_FZD_HEAD_BRACKET)) +#ifdef __MMI_ZHSX_SUPPORT_FZD_SERVER_WULIAN__ +#define MMI_PROTOCOL_FZD_DEVICE_NAME "qAELPTKmFanR4RHe" +#else #define MMI_PROTOCOL_FZD_DEVICE_NAME "SZKW" // "ZHSX" +#endif #define MMI_PROTOCOL_FZD_DEVICE_NAME_LEN (strlen(MMI_PROTOCOL_FZD_DEVICE_NAME)) #define MMI_PROTOCOL_FZD_SEPARATOR "*" #define MMI_PROTOCOL_FZD_SEPARATOR_LEN (strlen(MMI_PROTOCOL_FZD_SEPARATOR)) #define MMI_PROTOCOL_FZD_TAIL_BRACKET "]" -#define MMI_PROTOCOL_FZD_DEVICE_ID_LEN (15) +#define MMI_PROTOCOL_FZD_DEVICE_ID_LEN (15) // imei #define MMI_PROTOCOL_FZD_CONTENT_LEN_LEN (4) // send fixed:[MD5_DATADEVICE_NAME*DEVICE_ID*CONTENT_LENGTH*] @@ -49,7 +57,7 @@ FORMAT: [MD5_DATADEVICE_NAME*DEVICE_ID*CONTENT_LENGTH*CONTENT_KEY,CONTENT_VALUE] + MMI_PROTOCOL_FZD_SEPARATOR_LEN * 3 + MMI_PROTOCOL_FZD_DEVICE_ID_LEN + MMI_PROTOCOL_FZD_CONTENT_LEN_LEN) -#define MMI_PROTOCOL_FZD_ACTION_STR_LEN_MAX (15) // "LK" +#define MMI_PROTOCOL_FZD_ACTION_STR_LEN_MAX (31) // "LK" #define FZD_MAX(a, b) (((a) > (b)) ? (a) : (b)) @@ -84,7 +92,10 @@ typedef enum { MMI_FZD_ACTION_NONE, //0 nothing - MMI_FZD_ACTION_LINK, // tcp heartbeat +#ifdef __MMI_ZHSX_SUPPORT_FZD_SERVER_WULIAN__ + MMI_FZD_ACTION_LINK, +#endif + MMI_FZD_ACTION_HEARTBEAT, // tcp heartbeat MMI_FZD_ACTION_BIND, // MMI_FZD_ACTION_GET_TIME, MMI_FZD_ACTION_SEND_LOCATION, @@ -127,7 +138,8 @@ typedef enum MMI_FZD_WATCH_VC_CALL_REQUEST, MMI_FZD_SERVER_VC_CALL_RESPONSE, - + MMI_FZD_SERVER_VC_CALL_REQUEST, + MMI_FZD_WATCH_VC_CALL_RESPONSE, #endif @@ -167,9 +179,15 @@ void mmi_protocol_fzd_send_space_deinit(MMI_PROTOCOL_FZD_ACTION_ENUM action); bool mmi_protocol_fzd_send_cmd_check(MMI_PROTOCOL_FZD_ACTION_ENUM action); -bool mmi_protocol_fzd_action_link(void); +#ifdef __MMI_ZHSX_SUPPORT_FZD_SERVER_WULIAN__ +bool mmi_protocol_fzd_action_LINK(void); + +bool mmi_protocol_fzd_parse_LINK(unsigned char * next_buff, unsigned int next_buff_len); +#endif + +bool mmi_protocol_fzd_action_HEARTBEAT(void); -bool mmi_protocol_fzd_parse_ACTION_LINK(unsigned char * next_buff, unsigned int next_buff_len); +bool mmi_protocol_fzd_parse_HEARTBEAT(unsigned char * next_buff, unsigned int next_buff_len); bool mmi_protocol_fzd_action_bind(void); 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 b19c132a..751708b8 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 @@ -110,7 +110,7 @@ void mmi_watch_search_screen_destroy(void) Hal_Vibrator_Play_End(); lv_watch_png_cache_all_free(); - lv_obj_del_async(lv_watch_get_activity_obj(ACT_ID_WATCH_SEARCHING)); + //lv_obj_del_async(lv_watch_get_activity_obj(ACT_ID_WATCH_SEARCHING)); watch_set_suspend_enable(true, ACT_ID_WATCH_SEARCHING, 0); } @@ -133,6 +133,11 @@ lv_obj_t * mmi_watch_server_search_screen_create(lv_obj_t * activity_obj) { return NULL; } + + if(NULL != lv_watch_get_activity_obj(ACT_ID_WATCH_SEARCHING)) + { + return NULL; + } lv_watch_png_cache_all_free(); if(NULL == activity_obj) @@ -155,7 +160,7 @@ lv_obj_t * mmi_watch_server_search_screen_create(lv_obj_t * activity_obj) lv_obj_t * cont = lv_cont_create(obj, NULL); lv_obj_set_size(cont, lv_obj_get_width(obj), lv_obj_get_height(obj)); lv_obj_align(cont, obj, LV_ALIGN_CENTER, 0, 0); - lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, lv_color_make(0, 0, 0)); + lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, lv_color_make(0, 0, 0)); // LV_COLOR_BLACK lv_obj_set_click(cont, true); lv_obj_set_event_cb(cont, mmi_watch_search_screen_event_cb); //lv_obj_add_protect(cont, LV_PROTECT_PRESS_LOST); diff --git a/2.sdk/sdk/gui/lv_watch/modem/mmi_modem_tcp/mmi_modem_tcp_msg_handler_impl.c b/2.sdk/sdk/gui/lv_watch/modem/mmi_modem_tcp/mmi_modem_tcp_msg_handler_impl.c index 48fa9dc0..419a6a2a 100644 --- a/2.sdk/sdk/gui/lv_watch/modem/mmi_modem_tcp/mmi_modem_tcp_msg_handler_impl.c +++ b/2.sdk/sdk/gui/lv_watch/modem/mmi_modem_tcp/mmi_modem_tcp_msg_handler_impl.c @@ -31,7 +31,11 @@ void cmdmsg_handler_login_impl(void *param) #ifdef __MMI_ZHSX_SUPPORT__ printf("[@CHENG_DEBUG][%s][%d]: \n",__FUNCTION__,__LINE__); + #ifdef __MMI_ZHSX_SUPPORT_FZD_SERVER_WULIAN__ + mmi_protocol_watch_link_action(); + #else mmi_protocol_watch_heartbeat_action(); + #endif #else diff --git a/2.sdk/sdk/gui/lvgl/src/lv_core/lv_indev.c b/2.sdk/sdk/gui/lvgl/src/lv_core/lv_indev.c index f60e644c..20e0b8e1 100644 --- a/2.sdk/sdk/gui/lvgl/src/lv_core/lv_indev.c +++ b/2.sdk/sdk/gui/lvgl/src/lv_core/lv_indev.c @@ -440,7 +440,7 @@ static void indev_pointer_proc(lv_indev_t * i, lv_indev_data_t * data) */ static void indev_keypad_proc(lv_indev_t * i, lv_indev_data_t * data) { - printf("[@CHENG_DEBUG][%s][%d]: key=%d\n", __FUNCTION__, __LINE__, data->key); + //printf("[@CHENG_DEBUG][%s][%d]: key=%d\n", __FUNCTION__, __LINE__, data->key); #if LV_USE_GROUP if(data->state == LV_INDEV_STATE_PR && i->proc.wait_until_release) return;