From: CCC <2393524978@qq.com> Date: Sat, 8 Jul 2023 06:22:05 +0000 (+0800) Subject: __MMI_ZHSX_SUPPORT_VIDEO_CALL__ X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=5fef27452311cf2b6ed31194cf39be9c46b91112;p=mirrors%2FASR3603_Z5.git __MMI_ZHSX_SUPPORT_VIDEO_CALL__ --- diff --git a/2.sdk/sdk/gui/lv_watch/framework/nvm/ui_nvm.h b/2.sdk/sdk/gui/lv_watch/framework/nvm/ui_nvm.h index 458757d0..c323d29b 100644 --- a/2.sdk/sdk/gui/lv_watch/framework/nvm/ui_nvm.h +++ b/2.sdk/sdk/gui/lv_watch/framework/nvm/ui_nvm.h @@ -40,6 +40,7 @@ extern "C" { #define NV_SECTION_UI_PROTOCOL_DATA_LEN (sizeof(nv_watch_protocol_data_t)) #define NV_SECTION_UI_HEALTH_INFO_LEN (sizeof(nv_watch_health_info_t)) #define NV_SECTION_UI_SOS_NUMBER_LEN (sizeof(nv_watch_sos_number_t)) +#define NV_SECTION_UI_VC_CONTACT_LEN (sizeof(nv_watch_vc_contact_t)) //#endif #define NV_SECTION_LEN(sectionid) (sectionid ## _LEN) @@ -125,6 +126,7 @@ typedef lv_fs_dir_t ui_dir_t; #define NV_SECTION_UI_PROTOCOL_DATA_FILE "ui_protocol_data.nv" #define NV_SECTION_UI_HEALTH_INFO_FILE "ui_health_info.nv" #define NV_SECTION_UI_SOS_NUMBER_FILE "ui_sos_number.nv" +#define NV_SECTION_UI_VC_CONTACT_FILE "ui_vc_contact.nv" //#endif #define NV_SECTION_FILE_PATH(sectionid) (sectionid ## _FILE) diff --git a/2.sdk/sdk/gui/lv_watch/framework/nvm/ui_nvm_api.c b/2.sdk/sdk/gui/lv_watch/framework/nvm/ui_nvm_api.c index f2233576..fac92ed9 100644 --- a/2.sdk/sdk/gui/lv_watch/framework/nvm/ui_nvm_api.c +++ b/2.sdk/sdk/gui/lv_watch/framework/nvm/ui_nvm_api.c @@ -83,6 +83,9 @@ uint32_t UI_NV_Get_Section_Len(NV_UI_SECTION_ID SectionId) return (NV_SECTION_LEN(NV_SECTION_UI_HEALTH_INFO)); case NV_SECTION_UI_SOS_NUMBER: return (NV_SECTION_LEN(NV_SECTION_UI_SOS_NUMBER)); + case NV_SECTION_UI_VC_CONTACT: + return (NV_SECTION_LEN(NV_SECTION_UI_VC_CONTACT)); + //#endif default: @@ -165,6 +168,9 @@ char * UI_NV_Get_Section_path(NV_UI_SECTION_ID SectionId) return (NV_SECTION_FILE_PATH(NV_SECTION_UI_HEALTH_INFO)); case NV_SECTION_UI_SOS_NUMBER: return (NV_SECTION_FILE_PATH(NV_SECTION_UI_SOS_NUMBER)); + case NV_SECTION_UI_VC_CONTACT: + return (NV_SECTION_FILE_PATH(NV_SECTION_UI_VC_CONTACT)); + //#endif default: @@ -208,6 +214,7 @@ uint8_t UI_NV_Reset_Default(NV_UI_SECTION_ID SectionId) nv_watch_protocol_data_t * protocol_data; nv_watch_health_info_t * health_info; nv_watch_sos_number_t * sos_number; + nv_watch_vc_contact_t * vc_contact; //#endif switch(SectionId) { @@ -391,6 +398,13 @@ uint8_t UI_NV_Reset_Default(NV_UI_SECTION_ID SectionId) memset(sos_number, 0x0, SectionLen); TempData = (char *)sos_number; break; + + case NV_SECTION_UI_VC_CONTACT: + vc_contact = lv_mem_alloc(SectionLen); + memset(vc_contact, 0x0, SectionLen); + TempData = (char *)vc_contact; + break; + //#endif default: TempData = NULL; diff --git a/2.sdk/sdk/gui/lv_watch/include/ui_nvm_interface.h b/2.sdk/sdk/gui/lv_watch/include/ui_nvm_interface.h index da1af354..f497e303 100644 --- a/2.sdk/sdk/gui/lv_watch/include/ui_nvm_interface.h +++ b/2.sdk/sdk/gui/lv_watch/include/ui_nvm_interface.h @@ -213,6 +213,18 @@ typedef struct char number[NV_WATCH_SOS_NUMBER_MAX][NV_CONTACTS_MAX_NUMBER_LEN]; } __packed nv_watch_sos_number_t; +#define NV_WATCH_VC_CONTACT_TOTAL (10) +#define NV_WATCH_VC_CONTACT_NAME_LEN (10+1) +#define NV_WATCH_VC_CONTACT_NUMBER_LEN (20+1) + +typedef struct +{ + uint8_t total; + char name[NV_WATCH_VC_CONTACT_TOTAL][NV_WATCH_VC_CONTACT_NAME_LEN]; // ::string + char number[NV_WATCH_VC_CONTACT_TOTAL][NV_WATCH_VC_CONTACT_NUMBER_LEN]; // ::string +} __packed nv_watch_vc_contact_t; + + //#endif typedef struct @@ -396,6 +408,7 @@ enum NV_SECTION_UI_PROTOCOL_DATA, // nv_watch_protocol_data_t NV_SECTION_UI_HEALTH_INFO, // nv_watch_health_info_t NV_SECTION_UI_SOS_NUMBER, // nv_watch_sos_number_t + NV_SECTION_UI_VC_CONTACT, // nv_watch_vc_contact_t //#endif NV_SECTION_UI_MAX_NUM 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 af03d8b3..869091a3 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 @@ -11,7 +11,7 @@ typedef enum jrtc_state video_call_jrtc_state_e; typedef enum jrtc_error video_call_jrtc_error_e; -typedef struct jrtc_image_t video_call_jrtc_image_t; +typedef struct jrtc_image_t video_call_jrtc_image_t; typedef struct { @@ -21,11 +21,10 @@ typedef struct void* jrtc_ptr; TIMER_ID closed_timer_id; uint8_t closing; -} video_call_jrtc_t; +} MMI_VIDEO_CALL_JRTC_T; -extern MMI_VIDEO_CALL_PARAMS_T voipcall_params; -static video_call_jrtc_t voip_jrtc; +static MMI_VIDEO_CALL_JRTC_T s_video_call_jrtc; static uint8_t voip_jrtc_get_image(void * preview_buf); @@ -33,8 +32,9 @@ static uint8_t voip_jrtc_get_image(void * preview_buf); extern UINT32 OsaGetTicks(void *pForFutureUse); -void mmi_video_call_jrtc_config_init(void) +void mmi_video_call_jrtc_config_init_00(void) { +#ifdef __VIDEO_CALL_TEST__ char appkey[24+1] = "dc1db81c19d1da4f5fb4a197"; char key[16+1] = "K75A1vS562671d38"; char uid[64+1] = {0}; @@ -47,20 +47,46 @@ void mmi_video_call_jrtc_config_init(void) VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); jrtc_config(appkey, uid, key, tokens); + Hal_Mem_Set(&s_video_call_jrtc, 0x0, sizeof(MMI_VIDEO_CALL_JRTC_T)); +#endif +} + +void mmi_video_call_jrtc_config_init_01(char * t_appkey, char * t_key, char * t_tokens) +{ + char appkey[24+1] = {0}; + char key[16+1] = {0}; + char uid[64+1] = {0}; + char tokens[128+1] = {0}; + + char imei[16] = {0}; + app_adp_get_imei_req(imei); + strncpy(uid, imei, 16); + + memcpy(appkey, t_appkey, 24); + memcpy(key, t_key, 16); + memcpy(tokens, t_tokens, 128); + + VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %s\n", __FUNCTION__, __LINE__, appkey); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %s\n", __FUNCTION__, __LINE__, uid); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %s\n", __FUNCTION__, __LINE__, key); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %s\n", __FUNCTION__, __LINE__, tokens); + + jrtc_config(appkey, uid, key, tokens); + Hal_Mem_Set(&s_video_call_jrtc, 0x0, sizeof(MMI_VIDEO_CALL_JRTC_T)); } static void mmi_video_call_jrtc_clean_up(void) { VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); - if(NULL != voip_jrtc.state_task) + if(NULL != s_video_call_jrtc.state_task) { VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); - lv_task_del(voip_jrtc.state_task); + lv_task_del(s_video_call_jrtc.state_task); } - Hal_Mem_Set(&voip_jrtc, 0, sizeof(video_call_jrtc_t)); + Hal_Mem_Set(&s_video_call_jrtc, 0x0, sizeof(MMI_VIDEO_CALL_JRTC_T)); } static void mmi_video_call_jrtc_timeout_cb(void * para) @@ -73,7 +99,7 @@ static void mmi_video_call_jrtc_timeout_cb(void * para) static void mmi_video_call_jrtc_on_state(lv_task_t * task) { static int8_t oldstate = -1; - video_call_jrtc_state_e state = jrtc_state(voip_jrtc.jrtc_ptr); + video_call_jrtc_state_e state = jrtc_state(s_video_call_jrtc.jrtc_ptr); if(state != oldstate) { @@ -83,22 +109,22 @@ static void mmi_video_call_jrtc_on_state(lv_task_t * task) switch(state) { case JRTC_CLOSED: - if((NULL != voip_jrtc.jrtc_ptr) && (NULL == voip_jrtc.closed_timer_id)) + if((NULL != s_video_call_jrtc.jrtc_ptr) && (NULL == s_video_call_jrtc.closed_timer_id)) { - video_call_jrtc_error_e err = jrtc_error(voip_jrtc.jrtc_ptr); + video_call_jrtc_error_e err = jrtc_error(s_video_call_jrtc.jrtc_ptr); VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: error=%d\n", __FUNCTION__, __LINE__, err); - if(!voip_jrtc.closing) + if(!s_video_call_jrtc.closing) { - jrtc_close(voip_jrtc.jrtc_ptr, JRTC_ENIL); - voip_jrtc.closing = 1; + jrtc_close(s_video_call_jrtc.jrtc_ptr, JRTC_ENIL); + s_video_call_jrtc.closing = 1; } - voip_jrtc.closed_timer_id = Hal_Timer_Start(100, mmi_video_call_jrtc_timeout_cb, NULL, 0); + 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 != voipcall_params.state) + if(MMI_VOIP_CALL_STATE_NULL != mmi_video_call_params_state_get()) { watch_voip_call_response_no_carrier(0, 1); } @@ -117,15 +143,15 @@ static void mmi_video_call_jrtc_on_state(lv_task_t * task) break; case JRTC_TALKING: - if(MMI_VOIP_CALL_STATE_ACTIVE != voipcall_params.state) + if(MMI_VOIP_CALL_STATE_ACTIVE != mmi_video_call_params_state_get()) { watch_voip_call_response_connect(0); } /* Get image */ - if (MODEM_VIDEO_CALL_TYPE_VIDEO == voipcall_params.voip_call_type) + if (MODEM_VIDEO_CALL_TYPE_VIDEO == mmi_video_call_params_type_get()) { - void *buf = voip_phone_get_video_buffer(); + void *buf = mmi_video_call_phone_get_video_buffer(); if(voip_jrtc_get_image(buf)) { lv_canvas_set_buffer(voip_phone_get_ext()->canvas, buf, canvas_width, canvas_heigh, LV_IMG_CF_TRUE_COLOR); @@ -145,33 +171,33 @@ static int8_t mmi_video_call_jrtc_open(const char* roomid, MODEM_VIDEO_CALL_TYPE { VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %s,%d\n", __FUNCTION__, __LINE__, roomid, calltype); - Hal_Mem_Set(&voip_jrtc, 0, sizeof(video_call_jrtc_t)); + Hal_Mem_Set(&s_video_call_jrtc, 0, sizeof(MMI_VIDEO_CALL_JRTC_T)); if (MODEM_VIDEO_CALL_TYPE_VIDEO == calltype) { - voip_jrtc.rxframe.width = voip_jrtc.txframe.width = 176; - voip_jrtc.rxframe.height = voip_jrtc.txframe.height = 144; - voip_jrtc.rxframe.fps = voip_jrtc.txframe.fps = 8; // 10; - voip_jrtc.rxframe.kbps = voip_jrtc.txframe.kbps = 120; // 240; + s_video_call_jrtc.rxframe.width = s_video_call_jrtc.txframe.width = 176; + s_video_call_jrtc.rxframe.height = s_video_call_jrtc.txframe.height = 144; + s_video_call_jrtc.rxframe.fps = s_video_call_jrtc.txframe.fps = 8; // 10; + s_video_call_jrtc.rxframe.kbps = s_video_call_jrtc.txframe.kbps = 120; // 240; mci_videocall_camera_set_sensor(1); // 0:rear camera; 1:front camera - voip_jrtc.jrtc_ptr= jrtc_open(roomid, 0, &voip_jrtc.rxframe, &voip_jrtc.txframe); + s_video_call_jrtc.jrtc_ptr= jrtc_open(roomid, 0, &s_video_call_jrtc.rxframe, &s_video_call_jrtc.txframe); } else { - voip_jrtc.jrtc_ptr= jrtc_open(roomid, 0, NULL, NULL); + s_video_call_jrtc.jrtc_ptr= jrtc_open(roomid, 0, NULL, NULL); } - if (!voip_jrtc.jrtc_ptr) + if (!s_video_call_jrtc.jrtc_ptr) { VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); mmi_video_call_jrtc_clean_up(); return -1; } - jrtc_activate(voip_jrtc.jrtc_ptr, JRTC_AUDIO|JRTC_CAMERA); + jrtc_activate(s_video_call_jrtc.jrtc_ptr, JRTC_AUDIO|JRTC_CAMERA); - voip_jrtc.state_task = lv_task_create(mmi_video_call_jrtc_on_state, VIDEO_RENDER_PERIOD, LV_TASK_PRIO_HIGH, NULL); + s_video_call_jrtc.state_task = lv_task_create(mmi_video_call_jrtc_on_state, VIDEO_RENDER_PERIOD, LV_TASK_PRIO_HIGH, NULL); return 0; } @@ -180,7 +206,7 @@ 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); - if (NULL == voip_jrtc.jrtc_ptr) + if (NULL == s_video_call_jrtc.jrtc_ptr) ret = mmi_video_call_jrtc_open(pContactUri, calltype); return ret; @@ -188,14 +214,14 @@ int8_t mmi_video_call_dial_req(MODEM_VIDEO_CALL_TYPE calltype, char * pContactUr void mmi_video_call_hangup_req(BOOL bye) { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %p,%d\n", __FUNCTION__, __LINE__, voip_jrtc.jrtc_ptr, bye); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %p,%d\n", __FUNCTION__, __LINE__, s_video_call_jrtc.jrtc_ptr, bye); - if (NULL != voip_jrtc.jrtc_ptr) + if (NULL != s_video_call_jrtc.jrtc_ptr) { video_call_jrtc_error_e err = (TRUE == bye) ? JRTC_EBYE : JRTC_EAUDIOCALL; - jrtc_close(voip_jrtc.jrtc_ptr, err); - voip_jrtc.closing = 1; + jrtc_close(s_video_call_jrtc.jrtc_ptr, err); + s_video_call_jrtc.closing = 1; } else { @@ -207,23 +233,23 @@ int8_t mmi_video_call_answer_req(void) { int8_t ret = -1; - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %p\n", __FUNCTION__, __LINE__, voip_jrtc.jrtc_ptr); - if (NULL == voip_jrtc.jrtc_ptr) - ret = mmi_video_call_jrtc_open(voipcall_params.number, voipcall_params.voip_call_type); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %p\n", __FUNCTION__, __LINE__, s_video_call_jrtc.jrtc_ptr); + 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()); return ret; } void mmi_video_call_reject_req(BOOL bye) { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %p,%d\n", __FUNCTION__, __LINE__, voip_jrtc.jrtc_ptr, bye); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %p,%d\n", __FUNCTION__, __LINE__, s_video_call_jrtc.jrtc_ptr, bye); - if (NULL != voip_jrtc.jrtc_ptr) + if (NULL != s_video_call_jrtc.jrtc_ptr) { video_call_jrtc_error_e err = (TRUE == bye) ? JRTC_EBYE : JRTC_EAUDIOCALL; - jrtc_close(voip_jrtc.jrtc_ptr, err); - voip_jrtc.closing = 1; + jrtc_close(s_video_call_jrtc.jrtc_ptr, err); + s_video_call_jrtc.closing = 1; } else { @@ -244,9 +270,9 @@ static uint8_t voip_jrtc_get_image(void * preview_buf) video_call_jrtc_image_t * frame = NULL; if(ext->local_remote_switch_flag == VOIP_REMOTE_SWITCH_REMOTE) - frame = &voip_jrtc.rxframe; + frame = &s_video_call_jrtc.rxframe; else - frame = &voip_jrtc.txframe; + frame = &s_video_call_jrtc.txframe; if (frame->put != frame->get) { #if (ENABLE_VIDEO_SCALE == 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 0bdb2727..9ddf7375 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 @@ -17,10 +17,7 @@ static lv_task_t * signal_check_task = NULL; #endif static lv_task_t * rat_check_task = NULL; -/********************** -* Global Variable -**********************/ -MMI_VIDEO_CALL_PARAMS_T voipcall_params; +static MMI_VIDEO_CALL_PARAMS_T s_video_call_params; lv_color_t g_cbuf[canvas_width * canvas_heigh + 8] __attribute__((aligned(8))); /********************** @@ -50,9 +47,6 @@ static void voip_phone_prepare_destory(lv_obj_t * activity_obj); static lv_obj_t * voip_phone_get_activity_obj(void); static lv_obj_t * voip_phone_get_obj(void); static void voip_get_time_elaps(uint32_t last_time, char * str, int8_t size); -static lv_obj_t * voip_phone_create(lv_obj_t * activity_obj, voip_phone_ui_e phone_ui_id); -static lv_res_t voip_phone_ring_off_create(void); -static void voip_ring_off_action(lv_obj_t * btn, lv_event_t e); 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); @@ -306,7 +300,7 @@ static lv_obj_t * voip_append_obj(lv_obj_t * page) return(voip_append_obj); } -static lv_obj_t * voip_phone_create(lv_obj_t * activity_obj, voip_phone_ui_e phone_ui_id) +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__); @@ -393,7 +387,7 @@ static lv_obj_t * voip_phone_create(lv_obj_t * activity_obj, voip_phone_ui_e pho return(obj); } -lv_res_t voip_phone_ring_off_create() +lv_res_t mmi_video_call_phone_ring_off_create() { printf("%s %d\n", __FUNCTION__, __LINE__); @@ -404,9 +398,9 @@ lv_res_t voip_phone_ring_off_create() } // stop callreq timer - if(NULL != voipcall_params.callreq_timer_id) { - Hal_Timer_Stop(voipcall_params.callreq_timer_id); - voipcall_params.callreq_timer_id = NULL; + 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) { @@ -439,30 +433,30 @@ lv_res_t voip_phone_ring_off_create() voip_rat_check_stop(); return(LV_RES_OK); -} /* voip_phone_ring_off_create */ +} -void voip_ring_off_action(lv_obj_t * btn, lv_event_t e) +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__, voipcall_params.state); + printf("%s: %d, state=%d\n", __FUNCTION__, __LINE__, s_video_call_params.state); - if(false == voipcall_params.ring_off) { - voipcall_params.ring_off = true; + if(false == s_video_call_params.ring_off) { + s_video_call_params.ring_off = true; - if(NULL == voipcall_params.ring_off_timer_id) { - voipcall_params.ring_off_timer_id = Hal_Timer_Start(VOIP_RING_OFF_TIMER_LEN, voip_phone_ring_off_timeout_cb, NULL, 0); + 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 != voipcall_params.callreq_timer_id) { - Hal_Timer_Stop(voipcall_params.callreq_timer_id); - voipcall_params.callreq_timer_id = NULL; + 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(voipcall_params.state) { + switch(s_video_call_params.state) { case MMI_VOIP_CALL_STATE_NULL: case MMI_VOIP_CALL_STATE_INVALID: // do noting @@ -486,9 +480,9 @@ void voip_ring_off_action(lv_obj_t * btn, lv_event_t e) voip_rat_check_stop(); #if VOIP_PHONE_TEST - watch_voip_call_response_no_carrier(voipcall_params.index, 0); + watch_voip_call_response_no_carrier(s_video_call_params.index, 0); #endif -} /* voip_ring_off_action */ +} lv_voip_phone_obj_ext_t * voip_phone_get_ext(void) { @@ -502,7 +496,7 @@ lv_voip_phone_obj_ext_t * voip_phone_get_ext(void) return(ext); } -void * voip_phone_get_video_buffer() +void * mmi_video_call_phone_get_video_buffer() { return g_cbuf; } @@ -535,7 +529,7 @@ static lv_obj_t * voip_phone_get_obj(void) static void voip_phone_connected_cb(void * para) { printf("%s %d\n", __FUNCTION__, __LINE__); - watch_voip_call_response_connect(voipcall_params.index); + watch_voip_call_response_connect(s_video_call_params.index); } #endif @@ -543,7 +537,7 @@ 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 == voipcall_params.state)) { // MT call + if((MMI_VOIP_CALL_STATE_INCOMING == s_video_call_params.state)) { // MT call int32_t index = 1; watch_voip_call_response_originating(index); @@ -552,7 +546,7 @@ static void voip_phone_left_slide_callback(lv_obj_t * obj) Hal_Timer_Start(60, voip_phone_connected_cb, NULL, 0); } - else if(MMI_VOIP_CALL_STATE_DIALING == voipcall_params.state) { // MO call + else if(MMI_VOIP_CALL_STATE_DIALING == s_video_call_params.state) { // MO call int32_t index = 1; watch_voip_call_response_originating(index); @@ -561,8 +555,8 @@ static void voip_phone_left_slide_callback(lv_obj_t * obj) Hal_Timer_Start(60, voip_phone_connected_cb, NULL, 0); } else #endif - if((MMI_VOIP_CALL_STATE_ACTIVE == voipcall_params.state) - && (MODEM_VIDEO_CALL_TYPE_VIDEO == voipcall_params.voip_call_type)) { + if((MMI_VOIP_CALL_STATE_ACTIVE == s_video_call_params.state) + && (MODEM_VIDEO_CALL_TYPE_VIDEO == s_video_call_params.voip_call_type)) { voip_local_remote_switch_action(NULL, LV_EVENT_CLICKED); } } @@ -570,7 +564,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__); - voip_ring_off_action(NULL, LV_EVENT_CLICKED); + mmi_video_call_phone_ring_off_action(NULL, LV_EVENT_CLICKED); } static void voip_phone_down_slide_callback(lv_obj_t * obj) @@ -608,7 +602,7 @@ static void voip_slider_action(lv_obj_t * slider, lv_event_t e) // set speaker volume if(!Hal_Set_BT_Audio_Path((HAL_SPEAKER_GAIN)v)) Hal_Call_Speaker(HAL_CALL_SPK_ON, (HAL_SPEAKER_GAIN)v); - voipcall_params.speaker_volume = v; + s_video_call_params.speaker_volume = v; } } @@ -693,9 +687,9 @@ static lv_obj_t * voip_ring_off_content_create(lv_obj_t * par) static void voip_phone_ring_off_timeout_cb(void * para) { printf("%s %d\n", __FUNCTION__, __LINE__); - voipcall_params.ring_off_timer_id = NULL; - voipcall_params.ring_off_timeout = true; - watch_voip_call_response_no_carrier(voipcall_params.index, 0); + 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) @@ -714,7 +708,7 @@ static void voip_ring_hook_action(lv_obj_t * btn, lv_event_t e) int8_t ret = mmi_video_call_answer_req(); if(ret < 0) { - watch_voip_call_response_no_carrier(voipcall_params.index, 0); + watch_voip_call_response_no_carrier(s_video_call_params.index, 0); } } @@ -889,13 +883,13 @@ static void mmi_video_call_phone_dialing(lv_obj_t * content) 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(voipcall_params.name) > 0) + if(strlen(s_video_call_params.name) > 0) { - lv_label_set_text(label, voipcall_params.name); + lv_label_set_text(label, s_video_call_params.name); } else { - lv_label_set_text(label, voipcall_params.number); + 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); @@ -914,7 +908,7 @@ static void mmi_video_call_phone_dialing(lv_obj_t * content) 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, voip_ring_off_action); + 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); } @@ -950,13 +944,13 @@ static void mmi_video_call_phone_ring(lv_obj_t * content) 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(voipcall_params.name) > 0) + if(strlen(s_video_call_params.name) > 0) { - lv_label_set_text(label, voipcall_params.name); + lv_label_set_text(label, s_video_call_params.name); } else { - lv_label_set_text(label, voipcall_params.number); + 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); @@ -966,7 +960,7 @@ static void mmi_video_call_phone_ring(lv_obj_t * content) 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, voip_ring_off_action); + 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 @@ -988,7 +982,7 @@ static void mmi_video_call_phone_connected(lv_obj_t * content) return; } - if(voipcall_params.voip_call_type == MODEM_VIDEO_CALL_TYPE_VOICE) + if(s_video_call_params.voip_call_type == MODEM_VIDEO_CALL_TYPE_VOICE) { VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); @@ -1010,13 +1004,13 @@ static void mmi_video_call_phone_connected(lv_obj_t * content) 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(voipcall_params.name) > 0) + if(strlen(s_video_call_params.name) > 0) { - lv_label_set_text(label, voipcall_params.name); + lv_label_set_text(label, s_video_call_params.name); } else { - lv_label_set_text(label, voipcall_params.number); + 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); @@ -1043,7 +1037,7 @@ static void mmi_video_call_phone_connected(lv_obj_t * content) 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, voip_ring_off_action); + 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 @@ -1118,7 +1112,7 @@ static void mmi_video_call_phone_connected(lv_obj_t * content) 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, voip_ring_off_action); + 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) @@ -1182,7 +1176,7 @@ static void mmi_video_call_phone_connected(lv_obj_t * content) 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, voip_ring_off_action); + 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; @@ -1209,22 +1203,22 @@ static void voip_phone_prepare_destory(lv_obj_t * activity_obj) Hal_Tone_Play_End(); // ring off - voip_ring_off_action(NULL, LV_EVENT_CLICKED); + mmi_video_call_phone_ring_off_action(NULL, LV_EVENT_CLICKED); // stop ring off timer - if(NULL != voipcall_params.ring_off_timer_id) { - Hal_Timer_Stop(voipcall_params.ring_off_timer_id); - voipcall_params.ring_off_timer_id = NULL; + 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 != voipcall_params.callreq_timer_id) { - Hal_Timer_Stop(voipcall_params.callreq_timer_id); - voipcall_params.callreq_timer_id = NULL; + 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(&voipcall_params, 0, sizeof(MMI_VIDEO_CALL_PARAMS_T)); - voipcall_params.state = MMI_VOIP_CALL_STATE_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; } static void voip_get_time_elaps(uint32_t last_time, char * str, int8_t size) @@ -1262,29 +1256,29 @@ static void watch_voip_call_response_originating(int32_t index) { printf("%s %d\n", __FUNCTION__, __LINE__); - if(MMI_VOIP_CALL_STATE_DIALING == voipcall_params.state) { + if(MMI_VOIP_CALL_STATE_DIALING == s_video_call_params.state) { return; } printf("%s: %d\n", __func__, index); - voipcall_params.index = index; + s_video_call_params.index = index; // state: NULL -> DIALLING - voipcall_params.state = MMI_VOIP_CALL_STATE_DIALING; + 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 == voipcall_params.state) { + if(MMI_VOIP_CALL_STATE_ALERTING == s_video_call_params.state) { return; } uint8_t volume; // state: DIALLING -> ALERTING - voipcall_params.state = MMI_VOIP_CALL_STATE_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); @@ -1297,22 +1291,22 @@ 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()); - voipcall_params.state = MMI_VOIP_CALL_STATE_ALERTING; + 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 == voipcall_params.state) { + if(MMI_VOIP_CALL_STATE_ACTIVE == s_video_call_params.state) { return; } - voipcall_params.state = MMI_VOIP_CALL_STATE_ACTIVE; + s_video_call_params.state = MMI_VOIP_CALL_STATE_ACTIVE; // stop callreq timer - if(NULL != voipcall_params.callreq_timer_id) { - Hal_Timer_Stop(voipcall_params.callreq_timer_id); - voipcall_params.callreq_timer_id = NULL; + 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 @@ -1321,7 +1315,7 @@ void watch_voip_call_response_connect(int32_t index) Hal_Set_Voice_Call_Status(VOICE_CALL_START); // create connected UI - voip_phone_create(NULL, VOIP_PHONE_UI_CONNECTED); + mmi_video_call_phone_create(NULL, VOIP_PHONE_UI_CONNECTED); } void watch_voip_call_response_disconnect(int32_t index) @@ -1333,21 +1327,21 @@ void watch_voip_call_response_disconnect(int32_t index) // create ring off UI if(voip_phone_get_activity_obj()) { - voip_phone_ring_off_create(); + 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(&voipcall_params, 0, sizeof(MMI_VIDEO_CALL_PARAMS_T)); - voipcall_params.state = MMI_VOIP_CALL_STATE_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 == voipcall_params.ring_off_timeout) + if((false == s_video_call_params.ring_off_timeout) && (1 == isNoCarrier) - && (MMI_VOIP_CALL_STATE_NULL == voipcall_params.state)) { + && (MMI_VOIP_CALL_STATE_NULL == s_video_call_params.state)) { printf("%s: ignore no carrier in state NULL\n", __func__); return; } @@ -1358,21 +1352,21 @@ void watch_voip_call_response_no_carrier(int32_t index, uint8_t isNoCarrier) Hal_Tone_Play_End(); // stop ring off timer - if(NULL != voipcall_params.ring_off_timer_id) { - Hal_Timer_Stop(voipcall_params.ring_off_timer_id); - voipcall_params.ring_off_timer_id = NULL; + 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 != voipcall_params.callreq_timer_id) { - Hal_Timer_Stop(voipcall_params.callreq_timer_id); - voipcall_params.callreq_timer_id = NULL; + 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) { - voip_phone_ring_off_create(); + mmi_video_call_phone_ring_off_create(); } if(MMI_MODEM_CALL_STATE_NULL != phone_get_call_state()) { @@ -1383,8 +1377,8 @@ void watch_voip_call_response_no_carrier(int32_t index, uint8_t isNoCarrier) Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_2); watch_wakeup_time_reset(); - Hal_Mem_Set(&voipcall_params, 0, sizeof(MMI_VIDEO_CALL_PARAMS_T)); - voipcall_params.state = MMI_VOIP_CALL_STATE_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; } /* watch_voip_call_response_no_carrier */ void watch_voip_call_response_state_change(MMI_Modem_Call_Response_State_Change_t * state) @@ -1403,13 +1397,13 @@ void watch_voip_call_response_bottom_error(void) { printf("%s %d\n", __FUNCTION__, __LINE__); voip_phone_cleanup(); - Hal_Mem_Set(&voipcall_params, 0, sizeof(MMI_VIDEO_CALL_PARAMS_T)); + 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(voipcall_params.voip_call_type, voipcall_params.number); + //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) @@ -1425,11 +1419,11 @@ void watch_voip_incomingcall_response(char * number, int32_t calltype) return; } - Hal_Mem_Set(&voipcall_params, 0, sizeof(MMI_VIDEO_CALL_PARAMS_T)); - voipcall_params.voip_call_type = (MODEM_VIDEO_CALL_TYPE)calltype; - voipcall_params.is_mt = true; - voipcall_params.state = MMI_VOIP_CALL_STATE_INCOMING; - strncpy(voipcall_params.number, number, NV_CONTACTS_MAX_NUMBER_LEN); + 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); @@ -1451,7 +1445,7 @@ void watch_voip_incomingcall_response(char * number, int32_t calltype) voip_rat_check_start(); // create ring UI - voip_phone_create(NULL, VOIP_PHONE_UI_INCOMING); + mmi_video_call_phone_create(NULL, VOIP_PHONE_UI_INCOMING); } else { // AUDIO_CTRL_PRIORITY_1 @@ -1462,19 +1456,19 @@ void watch_voip_incomingcall_response(char * number, int32_t calltype) voip_rat_check_stop(); // stop ring off timer - if(NULL != voipcall_params.ring_off_timer_id) { - Hal_Timer_Stop(voipcall_params.ring_off_timer_id); - voipcall_params.ring_off_timer_id = NULL; + 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 != voipcall_params.callreq_timer_id) { - Hal_Timer_Stop(voipcall_params.callreq_timer_id); - voipcall_params.callreq_timer_id = NULL; + 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(&voipcall_params, 0, sizeof(MMI_VIDEO_CALL_PARAMS_T)); - voipcall_params.state = MMI_VOIP_CALL_STATE_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(); @@ -1486,7 +1480,7 @@ void watch_voip_incomingcall_response(char * number, int32_t calltype) mmi_video_call_reject_req(TRUE); #if VOIP_PHONE_TEST - watch_voip_call_response_no_carrier(voipcall_params.index, 0); + watch_voip_call_response_no_carrier(s_video_call_params.index, 0); #endif } } /* watch_voip_incomingcall_response */ @@ -1615,7 +1609,7 @@ static void voip_set_volume_when_slider_act(void) { printf("%s\n", __FUNCTION__); if(lv_watch_get_activity_obj(ACT_ID_SLIDER)) { - if(MMI_VOIP_CALL_STATE_NULL != voipcall_params.state) { + 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); @@ -1670,7 +1664,7 @@ static bool is_rat_gsm(void) static void rat_check(lv_task_t *task) { if(is_rat_gsm()) { - voip_ring_off_action(NULL, LV_EVENT_CLICKED); + mmi_video_call_phone_ring_off_action(NULL, LV_EVENT_CLICKED); } } @@ -1705,16 +1699,74 @@ void voip_fps_check(int8_t fps) -#define VOIP_ROOM_ID "jrtc012" // "104799" +#ifdef __VIDEO_CALL_TEST__ +#define MMI_VC_ROOM_ID "jrtc001" // "104799" +#endif -static uint8_t s_video_call_init_flag = 0; +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_VOIP_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.voip_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_video_call_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); + +} + + + + static void mmi_video_call_req_timeout_cb(void * para) { VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__); - voipcall_params.callreq_timer_id = NULL; + s_video_call_params.callreq_timer_id = NULL; mmi_video_call_hangup_req(TRUE); } @@ -1723,9 +1775,9 @@ void mmi_video_call_req(char * number, MODEM_VIDEO_CALL_TYPE voip_call_type) VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %s,%d\n", __FUNCTION__, __LINE__, number, voip_call_type); // check call state - if(MMI_VOIP_CALL_STATE_NULL != voipcall_params.state) + if(MMI_VOIP_CALL_STATE_NULL != s_video_call_params.state) { - VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %d\n", __FUNCTION__, __LINE__, voipcall_params.state); + VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %d\n", __FUNCTION__, __LINE__, s_video_call_params.state); return; } @@ -1737,29 +1789,29 @@ void mmi_video_call_req(char * number, MODEM_VIDEO_CALL_TYPE voip_call_type) } // stop callreq timer - if(NULL != voipcall_params.callreq_timer_id) + if(NULL != s_video_call_params.callreq_timer_id) { - Hal_Timer_Stop(voipcall_params.callreq_timer_id); - voipcall_params.callreq_timer_id = NULL; + Hal_Timer_Stop(s_video_call_params.callreq_timer_id); + s_video_call_params.callreq_timer_id = NULL; } // set call parameters - Hal_Mem_Set(&voipcall_params, 0, sizeof(MMI_VIDEO_CALL_PARAMS_T)); - voipcall_params.is_mt = false; - voipcall_params.state = MMI_VOIP_CALL_STATE_DIALING; - voipcall_params.voip_call_type = voip_call_type; - strcpy(voipcall_params.number, number); - - int8_t ret = mmi_video_call_dial_req(voip_call_type, voipcall_params.number); - if(NULL == voipcall_params.callreq_timer_id) + 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; + strcpy(s_video_call_params.number, number); + + int8_t ret = mmi_video_call_dial_req(voip_call_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; - voipcall_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_video_call_req_timeout_cb, NULL, 0); } // create dialing UI voip_rat_check_start(); - voip_phone_create(NULL, VOIP_PHONE_UI_DIALING); + mmi_video_call_phone_create(NULL, VOIP_PHONE_UI_DIALING); Hal_Audio_Manage_Start_Req(AUDIO_CTRL_PRIORITY_2, voip_audio_ctrl_callback); Hal_Set_Voice_Call_Status(VOICE_CALL_START); } @@ -1812,7 +1864,11 @@ static void mmi_video_call_voice_btn_action(lv_obj_t * btn, lv_event_t e) if(mmi_video_call_check_mo_permission()) { - mmi_video_call_req(VOIP_ROOM_ID, MODEM_VIDEO_CALL_TYPE_VOICE); + #ifdef __VIDEO_CALL_TEST__ + mmi_video_call_req(MMI_VC_ROOM_ID, MODEM_VIDEO_CALL_TYPE_VOICE); + #else + mmi_video_call_req(, MODEM_VIDEO_CALL_TYPE_VOICE); + #endif } else { @@ -1820,7 +1876,7 @@ static void mmi_video_call_voice_btn_action(lv_obj_t * btn, lv_event_t e) } } -static void mmi_video_call_voideo_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) { if(LV_EVENT_CLICKED != e) { @@ -1829,7 +1885,11 @@ static void mmi_video_call_voideo_btn_action(lv_obj_t * btn, lv_event_t e) if(mmi_video_call_check_mo_permission()) { - mmi_video_call_req(VOIP_ROOM_ID, MODEM_VIDEO_CALL_TYPE_VIDEO); + #ifdef __VIDEO_CALL_TEST__ + mmi_video_call_req(MMI_VC_ROOM_ID, MODEM_VIDEO_CALL_TYPE_VIDEO); + #else + mmi_video_call_req(, MODEM_VIDEO_CALL_TYPE_VIDEO); + #endif } else { @@ -1890,7 +1950,7 @@ static lv_obj_t * mmi_video_call_main_create(lv_obj_t * activity_obj) 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_voideo_btn_action); + lv_obj_set_event_cb(videobtn, mmi_video_call_video_btn_action); //lv_watch_set_free_num(activity_obj, 1); } @@ -1901,13 +1961,7 @@ static lv_obj_t * mmi_video_call_main_create(lv_obj_t * activity_obj) void video_call_create_event_cb(lv_obj_t * btn, lv_event_t e) { if(LV_EVENT_CLICKED == e) - { - if(0 == s_video_call_init_flag) - { - s_video_call_init_flag = 1; - mmi_video_call_jrtc_config_init(); - } - + { lv_watch_png_cache_all_free(); mmi_video_call_main_create(NULL); } @@ -1923,7 +1977,7 @@ void video_call_create_event_cb(lv_obj_t * btn, lv_event_t e) uint8_t voip_get_call_volume(void) { #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__ - return(voipcall_params.speaker_volume); + return(s_video_call_params.speaker_volume); #endif return 0; @@ -1932,9 +1986,9 @@ uint8_t voip_get_call_volume(void) bool watch_voip_suspend_check(void) { #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__ - if((voipcall_params.voip_call_type == MODEM_VIDEO_CALL_TYPE_VIDEO) - || (MMI_VOIP_CALL_STATE_INCOMING == voipcall_params.state) - || (MMI_VOIP_CALL_STATE_DIALING == voipcall_params.state) + 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) ) { return false; @@ -1967,7 +2021,7 @@ void voip_activity_destroy_req(void) return; } - switch(voipcall_params.state) + switch(s_video_call_params.state) { case MMI_VOIP_CALL_STATE_NULL: case MMI_VOIP_CALL_STATE_INVALID: @@ -1992,19 +2046,19 @@ void voip_activity_destroy_req(void) voip_rat_check_stop(); // stop ring off timer - if(NULL != voipcall_params.ring_off_timer_id) { - Hal_Timer_Stop(voipcall_params.ring_off_timer_id); - voipcall_params.ring_off_timer_id = NULL; + 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 != voipcall_params.callreq_timer_id) { - Hal_Timer_Stop(voipcall_params.callreq_timer_id); - voipcall_params.callreq_timer_id = NULL; + 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(&voipcall_params, 0, sizeof(MMI_VIDEO_CALL_PARAMS_T)); - voipcall_params.state = MMI_VOIP_CALL_STATE_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(); 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 aab1107b..0ec167fe 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,6 +39,8 @@ uint8_t voip_get_call_volume(void); #define VIDEO_CALL_DEBUG_PRINTF(fmt, ...) #endif +#define __VIDEO_CALL_TEST__ + #define ENABLE_VIDEO_SCALE 1 #define VOIP_PHONE_TEST 0 @@ -190,7 +192,7 @@ typedef struct { * GLOBAL PROTOTYPES **********************/ lv_voip_phone_obj_ext_t * voip_phone_get_ext(void); -void * voip_phone_get_video_buffer(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); @@ -202,7 +204,11 @@ 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(void); +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); + int8_t mmi_video_call_dial_req(MODEM_VIDEO_CALL_TYPE calltype, char * pContactUri); void mmi_video_call_hangup_req(BOOL bye); int8_t mmi_video_call_answer_req(void); diff --git a/2.sdk/sdk/gui/lv_watch/lv_watch.c b/2.sdk/sdk/gui/lv_watch/lv_watch.c index 82cf08b1..71aa057f 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_watch.c +++ b/2.sdk/sdk/gui/lv_watch/lv_watch.c @@ -181,6 +181,8 @@ void watch_power_on_req(void) mmi_sos_number_nv_read(); #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__ mmi_video_call_jrtc_config_init_00(); + mmi_video_call_contact_nv_read(); + #endif #endif 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 113fd60a..b895a8a4 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 @@ -517,6 +517,16 @@ static unsigned char * mmi_protocol_fzd_action_string_get(MMI_PROTOCOL_FZD_ACTIO {MMI_FZD_SERVER_SET_CENTER_NUMBER, "CENTER"}, // {MMI_FZD_ACTION_UNBIND, "DLT"}, + #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__ + {MMI_FZD_WATCH_GET_VC_CONFIG, "juhoo_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"}, + + + + #endif + /*******add before this line*******/ {MMI_FZD_ACTION_MAX, ""}, // MMI_FZD_ACTION_MAX @@ -672,6 +682,25 @@ static bool mmi_protocol_fzd_content_parse(unsigned char * content_ptr, unsigned case MMI_FZD_ACTION_UNBIND: break; + #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__ + case MMI_FZD_WATCH_GET_VC_CONFIG: + mmi_protocol_fzd_parse_WATCH_GET_VC_CONFIG(next_buff, next_buff_len); + break; + + case MMI_FZD_WATCH_GET_VC_CONTACT: + mmi_protocol_fzd_parse_WATCH_GET_VC_CONTACT(next_buff, next_buff_len); + break; + + case MMI_FZD_WATCH_VC_CALL_REQUEST: + mmi_protocol_fzd_parse_WATCH_VC_CALL_REQUEST(next_buff, next_buff_len); + break; + + case MMI_FZD_SERVER_VC_CALL_RESPONSE: + mmi_protocol_fzd_parse_SERVER_VC_CALL_RESPONSE(next_buff, next_buff_len); + break; + + #endif + default: break; @@ -757,6 +786,10 @@ bool mmi_protocol_fzd_parse_ACTION_BIND(unsigned char * next_buff, unsigned int { mmi_protocol_watch_bind_state_set(true); mmi_protocol_watch_timed_mission_action(); + + //video call + mmi_protocol_fzd_action_get_vc_config(); + } } @@ -1917,6 +1950,181 @@ bool mmi_protocol_fzd_action_unbind(void) } +#ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__ +bool mmi_protocol_fzd_action_get_vc_config(void) +{ + return mmi_protocol_fzd_send_without_data(MMI_FZD_WATCH_GET_VC_CONFIG); +} + +bool mmi_protocol_fzd_action_get_vc_contact(void) +{ + return mmi_protocol_fzd_send_without_data(MMI_FZD_WATCH_GET_VC_CONTACT); +} + +bool mmi_protocol_fzd_parse_WATCH_GET_VC_CONFIG(unsigned char * next_buff, unsigned int next_buff_len) +{ + bool result = false; + //MMI_PROTOCOL_FZD_ACTION_ENUM action = MMI_FZD_WATCH_GET_VC_CONFIG; + + 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_tokens = NULL; + char * t_appkey = NULL; + char * t_key = NULL; + + t_tokens = km_strtok_r(NULL, ",", &next_buff); + t_appkey = km_strtok_r(NULL, ",", &next_buff); + t_key = km_strtok_r(NULL, ",", &next_buff); + + mmi_video_call_jrtc_config_init_01(t_appkey, t_key, t_tokens); + + //get contact + mmi_protocol_fzd_action_get_vc_contact(); + + return result; +} + +bool mmi_protocol_fzd_parse_WATCH_GET_VC_CONTACT(unsigned char * next_buff, unsigned int next_buff_len) +{ + bool result = false; + //MMI_PROTOCOL_FZD_ACTION_ENUM action = MMI_FZD_WATCH_GET_VC_CONTACT; + + 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); + + nv_watch_vc_contact_t t_vc_contact = {0}; + char * temp_ptr = NULL; + uint8_t i = 0; + uint8_t t_len_1 = 0, t_len_2 = 0; + + while (NULL != next_buff) + { + temp_ptr = km_strtok_r(NULL, ",", &next_buff); + if (NULL != temp_ptr) + { + t_len_1 = FZD_MIN(strlen(temp_ptr), NV_WATCH_VC_CONTACT_NUMBER_LEN - 1); + strncpy(t_vc_contact.number[i], temp_ptr, t_len_1); + } + else + { + break; + } + + temp_ptr = km_strtok_r(NULL, ",", &next_buff); + if (NULL != temp_ptr) + { + t_len_1 = FZD_MIN(strlen(temp_ptr), (NV_WATCH_VC_CONTACT_NAME_LEN - 1) * 4); + mmi_unicode_hex_str_to_utf8_str(temp_ptr, t_len_1, t_vc_contact.name[i], &t_len_2); + } + else + { + break; + } + + i++; + if(NV_WATCH_VC_CONTACT_TOTAL <= i) + { + break; + } + } + + t_vc_contact.total = i; + mmi_video_call_contact_set(&t_vc_contact); + + return result; +} + +bool mmi_protocol_fzd_action_send_vc_call(char * number, uint8_t call_type) +{ + bool result = false; + MMI_PROTOCOL_FZD_ACTION_ENUM action = MMI_FZD_WATCH_VC_CALL_REQUEST; + unsigned char content_buff[NV_WATCH_VC_CONTACT_NUMBER_LEN + 8] = {0}; + unsigned int content_lenth = 0; + + 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; +} + +// 1£º¶Ô·½ÔÚÏߣ¬µÈ´ý½ÓÌý£»0£º¶Ô·½²»ÔÚÏß +bool mmi_protocol_fzd_parse_WATCH_VC_CALL_REQUEST(unsigned char * next_buff, unsigned int next_buff_len) +{ + bool result = false; + + if(NULL == next_buff || 0 == next_buff_len) + { + PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + return false; + } + + result = true; + + uint8_t t_value = 0; + + t_value = atoi(next_buff); + if(0 == t_value) + { + // the other party is not online + + + } + else + { + // wait, do nothing + } + + return result; +} + +// 1£º¶Ô·½½ÓÊÜ£»0£º¶Ô·½¾Ü¾ø +bool mmi_protocol_fzd_parse_SERVER_VC_CALL_RESPONSE(unsigned char * next_buff, unsigned int next_buff_len) +{ + bool result = false; + MMI_PROTOCOL_FZD_ACTION_ENUM action = MMI_FZD_SERVER_VC_CALL_RESPONSE; + + 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_tokens = NULL; + char * t_appkey = NULL; + char * t_key = NULL; + + t_tokens = km_strtok_r(NULL, ",", &next_buff); + t_appkey = km_strtok_r(NULL, ",", &next_buff); + t_key = km_strtok_r(NULL, ",", &next_buff); + + mmi_video_call_jrtc_config_init_01(t_appkey, t_key, t_tokens); + + //get contact + mmi_protocol_fzd_action_get_vc_contact(); + + 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 3d15f780..64b99593 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 @@ -121,6 +121,14 @@ typedef enum MMI_FZD_SERVER_SET_CENTER_NUMBER, MMI_FZD_ACTION_UNBIND, +#ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__ + MMI_FZD_WATCH_GET_VC_CONFIG, + MMI_FZD_WATCH_GET_VC_CONTACT, + MMI_FZD_WATCH_VC_CALL_REQUEST, + MMI_FZD_SERVER_VC_CALL_RESPONSE, + + +#endif /*******add before this line*******/