#include <stdlib.h>
-static lv_signal_cb_t ancestor_signal;
+//static lv_signal_cb_t ancestor_signal;
#if VIDEO_SIGNAL_CHECK
static lv_task_t * signal_check_task = NULL;
#endif
static void voip_phone_obj_hide_anim_end(lv_anim_t * anim);
static void voip_anim_fp_dialing_ring(lv_obj_t * obj, int32_t x);
static void voip_anim_fp_connected(lv_anim_t * anim);
-static void voip_phone_prepare_destory(lv_obj_t * activity_obj);
-static lv_obj_t * voip_phone_get_activity_obj(void);
-static lv_obj_t * voip_phone_get_obj(void);
static void voip_get_time_elaps(uint32_t last_time, char * str, int8_t size);
static void voip_set_volume_when_slider_act(void);
static void voip_local_remote_switch_action(lv_obj_t * btn, lv_event_t e);
}
}
-static lv_voip_phonebook_obj_ext_t * voip_phonebook_get_ext(void)
-{
- // printf("%s %d\n", __FUNCTION__, __LINE__);
- lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_VOIP_PHONEBOOK);
-
- if(activity_obj == NULL) {
- return(NULL);
- }
-
- lv_obj_t * watch_obj;
- lv_watch_get_child_obj(activity_obj, lv_watch_obj_signal, &watch_obj);
- if(watch_obj == NULL) {
- return(NULL);
- }
-
- if(watch_obj) {
- lv_voip_phonebook_obj_ext_t * ext = lv_obj_get_ext_attr(watch_obj);
- return(ext);
- }
- return(NULL);
-}
-
-static int voip_aligned_width(int val, lv_coord_t move_width)
-{
- printf("%s %d\n", __FUNCTION__, __LINE__);
-
- bool negative = (val < 0) ? true : false;
- if(val < 0) {
- val = -val;
- }
- int i = (val + move_width - 1) / move_width - 1;
- int new_val = i * move_width;
-
- new_val = (val - new_val > move_width / 2) ? (new_val + move_width) : new_val;
- new_val = negative ? -new_val : new_val;
- return(new_val);
-}
-
-static lv_res_t voip_page_scrl_signal_handler(lv_obj_t * page_scrl, lv_signal_t sign, void * param)
-{
- // printf("%s %d\n", __FUNCTION__, __LINE__);
- lv_voip_phonebook_obj_ext_t * ext = voip_phonebook_get_ext();
-
- LV_ASSERT_MEM(ext);
- if(ext == NULL) {
- return(LV_RES_INV);
- }
-
- if((sign == LV_SIGNAL_DRAG_END) || (sign == LV_SIGNAL_RELEASED)) {
- lv_coord_t new_x = lv_obj_get_x(page_scrl);
- lv_coord_t aligned_new_x = voip_aligned_width(new_x, ext->move_width);
- lv_obj_set_x(page_scrl, aligned_new_x);
-
- lv_bidi_dir_t dir = lv_obj_get_base_dir(page_scrl);
-
- /* update image id */
- ext->cur_img_id = (aligned_new_x < 0) ? -aligned_new_x / ext->move_width : aligned_new_x / ext->move_width;
- voip_phonebook_t * contact;
- if(LV_BIDI_DIR_RTL == dir) {
- contact = _lv_ll_get_tail(&ext->contact_list);
- } else {
- contact = _lv_ll_get_head(&ext->contact_list);
- }
- uint8_t i = 0;
- while(NULL != contact) {
- if(ext->cur_img_id == i) {
- ext->cur_contact = contact;
- break;
- }
- i++;
- if(LV_BIDI_DIR_RTL == dir) {
- contact = _lv_ll_get_prev(&ext->contact_list, contact);
- } else {
- contact = _lv_ll_get_next(&ext->contact_list, contact);
- }
- }
- if(NULL == contact) {
- printf("error, contact not found in voip_page_scrl_signal_handler\n");
- return(LV_RES_INV);
- }
- lv_label_set_text(ext->label_phone_contact, contact->name);
- if(0 < strlen(contact->number)) {
- uint32_t pos = LV_LABEL_POS_LAST;
- if(LV_BIDI_DIR_RTL == dir) {
- pos = 0;
- }
- if(0 < strlen(contact->name)) {
- lv_label_ins_text(ext->label_phone_contact, pos, " ");
- }
- lv_label_ins_text(ext->label_phone_contact, pos, contact->number);
- }
- }
-
- return(LV_RES_OK);
-} /* voip_page_scrl_signal_handler */
-
-static lv_res_t voip_phonebook_page_scrl_signal(lv_obj_t * page_scrl, lv_signal_t sign, void * param)
-{
- // printf("%s %d\n", __FUNCTION__, __LINE__);
- lv_res_t res;
-
- /* Include the ancient signal function */
- res = ancestor_signal(page_scrl, sign, param);
- if(res != LV_RES_OK) {
- return(res);
- }
-
- if(sign == LV_SIGNAL_CLEANUP) {
- /*when cleanup, can not invoke lv_indev_get_act */
- return(LV_RES_OK);
- }
-
- res = voip_page_scrl_signal_handler(page_scrl, sign, param);
- if(res != LV_RES_OK) {
- return(res);
- }
-
- return(LV_RES_OK);
-}
-
-static lv_res_t voip_phonebook_element_signal_func(lv_obj_t * element, lv_signal_t sign, void * param)
-{
- // printf("%s %d\n", __FUNCTION__, __LINE__);
-
- lv_res_t res;
-
- /* if not click signs, invoke ancient handler and return */
- if(sign != LV_SIGNAL_PRESSING && sign != LV_SIGNAL_PRESSED && sign != LV_SIGNAL_RELEASED && sign != LV_SIGNAL_PRESS_LOST) {
- /* Include the ancient signal function */
- lv_signal_cb_t sign_func = (lv_signal_cb_t)(lv_obj_get_user_data(element).user_data);
- res = sign_func(element, sign, param);
- if(res != LV_RES_OK) {
- return(res);
- }
- return(LV_RES_OK);
- }
-
- lv_obj_t * obj = lv_obj_get_parent(element);
- while(obj) {
- if(lv_obj_get_signal_cb(obj) != lv_watch_obj_signal) {
- obj = lv_obj_get_parent(obj);
- } else {
- break;
- }
- }
- if(obj == NULL) {
- return(LV_RES_INV);
- }
-
- res = lv_watch_obj_signal(obj, sign, param);
- if(res != LV_RES_OK) {
- return(res);
- }
-
- lv_voip_phonebook_obj_ext_t * ext = lv_obj_get_ext_attr(obj);
- if(ext == NULL) {
- return(LV_RES_INV);
- }
- if(ext->page_scrl == NULL) {
- return(LV_RES_INV);
- }
- res = voip_page_scrl_signal_handler(ext->page_scrl, sign, param);
- if(res != LV_RES_OK) {
- return(res);
- }
-
- /* Include the ancient signal function */
- lv_signal_cb_t sign_func = (lv_signal_cb_t)(lv_obj_get_user_data(element).user_data);
- res = sign_func(element, sign, param);
- if(res != LV_RES_OK) {
- return(res);
- }
-
- return(LV_RES_OK);
-} /* voip_phonebook_element_signal_func */
-
-static void voip_phonebook_add_element(lv_obj_t * element)
-{
- // printf("%s %d\n", __FUNCTION__, __LINE__);
- lv_watch_set_free_ptr(element, lv_obj_get_signal_cb(element));
- lv_obj_set_signal_cb(element, voip_phonebook_element_signal_func);
- lv_obj_add_protect(element, LV_PROTECT_PRESS_LOST | LV_PROTECT_CLICK_FOCUS);
-}
-
-static lv_obj_t * voipcall_number_add(lv_obj_t * page, const void * img_src)
-{
- // printf("%s %d\n", __FUNCTION__, __LINE__);
-
- lv_obj_t * img = NULL;
-
- lv_obj_t * content = lv_cont_create(page, NULL);
-
- lv_obj_add_style(content, LV_OBJ_PART_MAIN, &lv_watch_style_transp);
- lv_obj_set_size(content, 120, lv_obj_get_height(page));
- lv_cont_set_layout(content, LV_LAYOUT_OFF);
- LV_ASSERT_MEM(content);
- if(content == NULL) {
- return(NULL);
- }
- /*must set click enable for these content, If not, no pressed/pressing signals out*/
- lv_obj_set_click(content, true);
- voip_phonebook_add_element(content);
- /*hor drag in page, must set glue*/
- lv_page_glue_obj(content, true);
-
- img = lv_img_create(content, NULL);
- lv_img_set_src(img, img_src);
- lv_obj_align(img, content, LV_ALIGN_IN_TOP_MID, 0, 20);
-
- return(content);
-}
-
-static lv_obj_t * voip_append_obj(lv_obj_t * page)
-{
- // printf("%s %d\n", __FUNCTION__, __LINE__);
-
- lv_voip_phonebook_obj_ext_t * ext = voip_phonebook_get_ext();
- lv_obj_t * voip_append_obj = lv_obj_create(page, NULL);
-
- lv_obj_set_size(voip_append_obj, ext->append_width, lv_obj_get_height(page));
- lv_obj_add_style(voip_append_obj, LV_OBJ_PART_MAIN, &lv_style_transp_tight);
- voip_phonebook_add_element(voip_append_obj);
- return(voip_append_obj);
-}
-
-lv_voip_phone_obj_ext_t * voip_phone_get_ext(void)
-{
- lv_voip_phone_obj_ext_t * ext = NULL;
- lv_obj_t * watch_obj = voip_phone_get_obj();
-
- if(watch_obj) {
- ext = lv_obj_get_ext_attr(watch_obj);
- }
-
- return(ext);
-}
-
void * mmi_video_call_phone_get_video_buffer()
{
return g_cbuf;
/**********************
* STATIC FUNCTIONS
**********************/
-static lv_obj_t * voip_phone_get_activity_obj(void)
+static lv_obj_t * mmi_vc_call_get_activity_obj(void)
{
lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_VOIPPHONE);
return(activity_obj);
}
-static lv_obj_t * voip_phone_get_obj(void)
+static lv_obj_t * mmi_vc_call_get_obj(void)
{
lv_obj_t * watch_obj = NULL;
- lv_obj_t * activity_obj = voip_phone_get_activity_obj();
+ lv_obj_t * activity_obj = mmi_vc_call_get_activity_obj();
- if(activity_obj) {
+ if(activity_obj)
+ {
lv_watch_get_child_obj(activity_obj, lv_watch_obj_signal, &watch_obj);
}
return(watch_obj);
}
+lv_vc_call_obj_ext_t * mmi_vc_call_get_ext(void)
+{
+ lv_vc_call_obj_ext_t * ext = NULL;
+ lv_obj_t * watch_obj = mmi_vc_call_get_obj();
+
+ if(watch_obj)
+ {
+ ext = lv_obj_get_ext_attr(watch_obj);
+ }
+
+ return(ext);
+}
+
static void voip_phone_left_slide_callback(lv_obj_t * obj)
{
printf("%s %d\n", __FUNCTION__, __LINE__);
par = lv_scr_act();
}
- lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext();
+ lv_vc_call_obj_ext_t * ext = mmi_vc_call_get_ext();
LV_ASSERT_MEM(ext);
if(ext == NULL) {
return(NULL);
lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font20);
lv_label_set_align(label, LV_LABEL_ALIGN_CENTER);
- if(is_rat_gsm()) {
+ if(is_rat_gsm())
+ {
lv_label_set_text_id(label, WATCH_TEXT_ID_NETWORK_WRONG);
- } else {
- if(ext->phone_ui_t == PHONE_UI_CONNECTED) {
+ }
+ else
+ {
+ if(ext->phone_ui_t == MMI_VC_UI_CONNECTED)
+ {
char tmp[20] = "";
char str[30] = "";
voip_get_time_elaps(ext->connect_start_time, tmp, 20);
snprintf(str, 30, "%s(%s)", (char *)lv_lang_get_text(WATCH_TEXT_ID_RING_OFF), tmp);
lv_label_set_text(label, str);
- } else {
+ }
+ else
+ {
lv_label_set_text_id(label, WATCH_TEXT_ID_RING_OFF);
}
}
lv_obj_del(slider_activit_obj);
}
- lv_obj_t * activity_obj = voip_phone_get_activity_obj();
+ lv_obj_t * activity_obj = mmi_vc_call_get_activity_obj();
if(activity_obj) {
lv_obj_del(activity_obj);
}
}
+static void voip_anim_fp_connecting_ring(lv_obj_t * obj, int32_t x)
+{
+ if(obj != NULL) {
+ lv_obj_set_x(obj, x);
+ }
+}
+
+static void voip_connecting_animation(lv_obj_t * par)
+{
+ lv_vc_call_obj_ext_t * ext = mmi_vc_call_get_ext();
+
+ LV_ASSERT_MEM(ext);
+ if(ext == NULL) {
+ return;
+ }
+
+ lv_obj_t * img = lv_img_create(mmi_vc_call_get_obj(), NULL);
+ lv_img_set_src(img, LV_SYMBOL_LOOP);
+ lv_obj_add_style(img, LV_OBJ_PART_MAIN, &lv_watch_image);
+ lv_obj_set_style_local_text_font(img, LV_IMG_PART_MAIN, LV_STATE_DEFAULT, LV_THEME_WATCH_NIGHT_SYMBOL_NORMAL);
+ lv_obj_set_y(img, lv_obj_get_y(par) + lv_obj_get_y(lv_obj_get_parent(par)));
+ ext->phone_animation_obj = img;
+
+ /*Create an animation to move the button continuously left to right*/
+ lv_anim_t a;
+ lv_anim_path_t path;
+ lv_anim_value_t start = lv_obj_get_x(par) + lv_obj_get_width(par) + 6;
+ lv_anim_value_t end = start + 30;
+
+ lv_anim_path_init(&path);
+ lv_anim_path_set_cb(&path, lv_anim_path_linear);
+
+ lv_anim_init(&a);
+ lv_anim_set_var(&a, img);
+ lv_anim_set_exec_cb(&a, (lv_anim_exec_xcb_t)voip_anim_fp_connecting_ring);
+ lv_anim_set_path(&a, &path);
+ lv_anim_set_values(&a, start, end);
+ lv_anim_set_time(&a, 400);
+ lv_anim_set_playback_time(&a, 400);
+ lv_anim_set_playback_delay(&a, 0);
+ lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE);
+ lv_anim_set_repeat_delay(&a, 500);
+
+ lv_anim_start(&a);
+}
+
static void voip_anim_fp_dialing_ring(lv_obj_t * obj, int32_t x)
{
if(obj != NULL) {
static void voip_dialing_animation(lv_obj_t * par)
{
- lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext();
+ lv_vc_call_obj_ext_t * ext = mmi_vc_call_get_ext();
LV_ASSERT_MEM(ext);
if(ext == NULL) {
return;
}
- lv_obj_t * img = lv_img_create(voip_phone_get_obj(), NULL);
+ lv_obj_t * img = lv_img_create(mmi_vc_call_get_obj(), NULL);
lv_img_set_src(img, LV_SYMBOL_RIGHT);
lv_obj_add_style(img, LV_OBJ_PART_MAIN, &lv_watch_image);
lv_obj_set_style_local_text_font(img, LV_IMG_PART_MAIN, LV_STATE_DEFAULT, LV_THEME_WATCH_NIGHT_SYMBOL_NORMAL);
static void voip_ring_animation(lv_obj_t * par)
{
- lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext();
+ lv_vc_call_obj_ext_t * ext = mmi_vc_call_get_ext();
LV_ASSERT_MEM(ext);
if(ext == NULL) {
return;
}
- lv_obj_t * img = lv_img_create(voip_phone_get_obj(), NULL);
+ lv_obj_t * img = lv_img_create(mmi_vc_call_get_obj(), NULL);
lv_img_set_src(img, LV_SYMBOL_LEFT);
lv_obj_add_style(img, LV_OBJ_PART_MAIN, &lv_watch_image);
lv_obj_set_style_local_text_font(img, LV_IMG_PART_MAIN, LV_STATE_DEFAULT, LV_THEME_WATCH_NIGHT_SYMBOL_NORMAL);
static void voip_anim_fp_connected(lv_anim_t * anim)
{
lv_obj_t * obj = (lv_obj_t *)anim->var;
- lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext();
+ lv_vc_call_obj_ext_t * ext = mmi_vc_call_get_ext();
LV_ASSERT_MEM(ext);
if(ext == NULL) {
}
}
-
-static void voip_phone_prepare_destory(lv_obj_t * activity_obj)
-{
- printf("%s %d\n", __FUNCTION__, __LINE__);
-
- lv_watch_png_cache_all_free();
-
- // stop playing tone
- Hal_Tone_Play_End();
-
- // ring off
- mmi_vc_ring_off_action(NULL, LV_EVENT_CLICKED);
-
- // stop ring off timer
- if(NULL != s_video_call_params.ring_off_timer_id) {
- Hal_Timer_Stop(s_video_call_params.ring_off_timer_id);
- s_video_call_params.ring_off_timer_id = NULL;
- }
-
- // stop callreq timer
- if(NULL != s_video_call_params.callreq_timer_id) {
- Hal_Timer_Stop(s_video_call_params.callreq_timer_id);
- s_video_call_params.callreq_timer_id = NULL;
- }
-
- Hal_Mem_Set(&s_video_call_params, 0, sizeof(MMI_VIDEO_CALL_PARAMS_T));
- s_video_call_params.state = MMI_VIDEO_CALL_STATE_NONE;
-}
-
static void voip_get_time_elaps(uint32_t last_time, char * str, int8_t size)
{
hal_rtc_t rtc_curr; // current rtc time
&& (1 == isNoCarrier)
&& (MMI_VIDEO_CALL_STATE_NONE == s_video_call_params.state))
{
- VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
return;
}
- VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
// stop playing tone
Hal_Tone_Play_End();
- // stop ring off timer
- if(NULL != s_video_call_params.ring_off_timer_id)
- {
- Hal_Timer_Stop(s_video_call_params.ring_off_timer_id);
- s_video_call_params.ring_off_timer_id = NULL;
- }
-
- // stop callreq timer
- if(NULL != s_video_call_params.callreq_timer_id)
- {
- Hal_Timer_Stop(s_video_call_params.callreq_timer_id);
- s_video_call_params.callreq_timer_id = NULL;
- }
+ // stop timer
+ mmi_vc_ring_off_timer_stop();
+ mmi_vc_dialing_timer_stop();
+ mmi_vc_connecting_timer_stop();
// create ring off UI
lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_VOIPPHONE);
Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_2);
watch_wakeup_time_reset();
- Hal_Mem_Set(&s_video_call_params, 0, sizeof(MMI_VIDEO_CALL_PARAMS_T));
- s_video_call_params.state = MMI_VIDEO_CALL_STATE_NONE;
+ Hal_Mem_Set(&s_video_call_params, 0x0, sizeof(MMI_VIDEO_CALL_PARAMS_T));
}
-static bool mmi_video_call_check_mo_permission(void)
+static bool mmi_vc_check_mo_permission(void)
{
if((!watch_modem_sim_present_check_req())
|| (MMI_MODEM_SIGNAL_BAR_0 == watch_modem_get_signal_bar_req())
if(!activity_obj) {
return;
}
- lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext();
+ lv_vc_call_obj_ext_t * ext = mmi_vc_call_get_ext();
if(!ext) {
return;
}
if(LV_EVENT_CLICKED == e)
{
printf("%s %d\n", __FUNCTION__, __LINE__);
- lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext();
+ lv_vc_call_obj_ext_t * ext = mmi_vc_call_get_ext();
if(!ext) {
return;
}
lv_obj_set_hidden(ext->connect_time, ext->canvas_button_hidden_flag);
lv_obj_set_hidden(ext->ring_value_button, ext->canvas_button_hidden_flag);
- lv_obj_set_hidden(ext->view_switch_button, ext->canvas_button_hidden_flag);
+ lv_obj_set_hidden(ext->view_switch_button, true); // lv_obj_set_hidden(ext->view_switch_button, ext->canvas_button_hidden_flag);
lv_obj_set_hidden(ext->ring_off_button, ext->canvas_button_hidden_flag);
}
}
#if VIDEO_SIGNAL_CHECK
static void signal_check(lv_task_t *task)
{
- lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext();
+ lv_vc_call_obj_ext_t * ext = mmi_vc_call_get_ext();
if(!ext) return;
if((false == is_rat_gsm()) &&
void voip_fps_check(int8_t fps)
{
- lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext();
+ lv_vc_call_obj_ext_t * ext = mmi_vc_call_get_ext();
if(NULL != ext) {
if((VIDEO_CALL_FPS_CHECK_LIMIT >= fps) && (0 != fps)) {
printf("%s %d\n", __FUNCTION__, fps);
-#ifdef __VIDEO_CALL_TEST__
-#define MMI_VC_ROOM_ID "jrtc001" // "104799"
-#endif
static nv_watch_vc_contact_t s_vc_contact = {0};
static TIMER_ID fail_timer_id = NULL;
+static MMI_VIDEO_CALL_UI_E s_vc_call_ui = MMI_VC_UI_INVALID;
char * mmi_video_call_params_number_get(void)
{
{
if(NULL == contact_list)
{
- VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
return;
}
mmi_protocol_fzd_action_VC_CALL_REQUEST(s_video_call_params.number, s_video_call_params.call_type);
}
-static void mmi_vc_incoming_hook_action(lv_obj_t * btn, lv_event_t e)
+void mmi_vc_ring_off_timer_stop(void)
+{
+ if(NULL != s_video_call_params.ring_off_timer_id)
+ {
+ Hal_Timer_Stop(s_video_call_params.ring_off_timer_id);
+ s_video_call_params.ring_off_timer_id = NULL;
+ }
+}
+
+void mmi_vc_dialing_timer_stop(void)
+{
+ if(NULL != s_video_call_params.dialing_timer_id)
+ {
+ Hal_Timer_Stop(s_video_call_params.dialing_timer_id);
+ s_video_call_params.dialing_timer_id = NULL;
+ }
+}
+
+void mmi_vc_connecting_timer_stop(void)
+{
+ if(NULL != s_video_call_params.connecting_timer_id)
+ {
+ Hal_Timer_Stop(s_video_call_params.connecting_timer_id);
+ s_video_call_params.connecting_timer_id = NULL;
+ }
+}
+
+static void mmi_vc_ui_prepare_destory(lv_obj_t * activity_obj)
+{
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+ lv_watch_png_cache_all_free();
+
+ // stop playing tone
+ Hal_Tone_Play_End();
+
+ // ring off
+ mmi_vc_ring_off_action(NULL, LV_EVENT_CLICKED);
+
+ // stop ring off timer
+ mmi_vc_ring_off_timer_stop();
+
+ // stop callreq timer
+ mmi_vc_dialing_timer_stop();
+
+ //stop
+ mmi_vc_connecting_timer_stop();
+
+ Hal_Mem_Set(&s_video_call_params, 0x0, sizeof(MMI_VIDEO_CALL_PARAMS_T));
+ s_video_call_params.state = MMI_VIDEO_CALL_STATE_NONE;
+}
+
+static void mmi_vc_hook_action(lv_obj_t * btn, lv_event_t e)
{
if(LV_EVENT_CLICKED != e)
{
return;
}
- VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
- if(btn) {
- lv_obj_set_click(btn, false);
- }
+ //if(btn) {
+ // lv_obj_set_click(btn, false);
+ //}
Hal_Tone_Play_End();
+
+ mmi_vc_call_action_connecting();
int8_t ret = mmi_video_call_answer_req();
- if(ret < 0) {
+ if(ret < 0)
+ {
mmi_vc_ring_off_no_carrier(0);
}
}
lv_res_t mmi_video_call_phone_ring_off_create()
{
- VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
- lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext();
- LV_ASSERT_MEM(ext);
- if(ext == NULL) {
+ lv_vc_call_obj_ext_t * ext = mmi_vc_call_get_ext();
+ if(ext == NULL)
+ {
return(LV_RES_INV);
}
// stop callreq timer
- if(NULL != s_video_call_params.callreq_timer_id) {
- Hal_Timer_Stop(s_video_call_params.callreq_timer_id);
- s_video_call_params.callreq_timer_id = NULL;
- }
+ mmi_vc_dialing_timer_stop();
- if(ext->phone_ui_t == MMI_VC_UI_INCOMING || ext->phone_ui_t == MMI_VC_UI_DIALING) {
+ if(ext->phone_ui_t == MMI_VC_UI_INCOMING || ext->phone_ui_t == MMI_VC_UI_DIALING)
+ {
if(ext->phone_status_label) {
lv_label_set_text(ext->phone_status_label, "");
}
- voip_ring_off_content_create(voip_phone_get_obj());
- } else if(ext->phone_ui_t == PHONE_UI_CONNECTED) {
- voip_ring_off_content_create(voip_phone_get_obj());
+ voip_ring_off_content_create(mmi_vc_call_get_obj());
+ }
+ else if(ext->phone_ui_t == MMI_VC_UI_CONNECTED)
+ {
+ voip_ring_off_content_create(mmi_vc_call_get_obj());
}
if(ext->phone_animation_obj) {
/* phone cleanup when anim end*/
lv_anim_t a;
lv_anim_init(&a);
- lv_anim_set_var(&a, voip_phone_get_obj());
+ lv_anim_set_var(&a, mmi_vc_call_get_obj());
lv_anim_set_ready_cb(&a, (lv_anim_ready_cb_t)voip_phone_obj_hide_anim_end);
lv_anim_set_time(&a, VOIP_PHONE_RING_OFF_CONTINUE_TIME);
lv_anim_start(&a);
static void mmi_vc_ring_off_timeout_cb(void * para)
{
- VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
s_video_call_params.ring_off_timer_id = NULL;
s_video_call_params.ring_off_timeout = true;
return;
}
- VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %d\n", __FUNCTION__, __LINE__, s_video_call_params.state);
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, s_video_call_params.state);
+ mmi_vc_dialing_timer_stop();
+ mmi_vc_connecting_timer_stop();
+
if(false == s_video_call_params.ring_off)
{
s_video_call_params.ring_off = true;
- if(NULL == s_video_call_params.ring_off_timer_id) {
+ if(NULL == s_video_call_params.ring_off_timer_id)
+ {
s_video_call_params.ring_off_timer_id = Hal_Timer_Start(VOIP_RING_OFF_TIMER_LEN, mmi_vc_ring_off_timeout_cb, NULL, 0);
}
- // stop callreq timer
- if(NULL != s_video_call_params.callreq_timer_id) {
- Hal_Timer_Stop(s_video_call_params.callreq_timer_id);
- s_video_call_params.callreq_timer_id = NULL;
- }
}
switch(s_video_call_params.state)
static void mmi_vc_ui_dialing(lv_obj_t * content)
{
- VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
- lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext();
+ lv_vc_call_obj_ext_t * ext = mmi_vc_call_get_ext();
if(ext == NULL) {
return;
}
static void mmi_vc_ui_incoming(lv_obj_t * content)
{
- VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
- lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext();
+ lv_vc_call_obj_ext_t * ext = mmi_vc_call_get_ext();
LV_ASSERT_MEM(ext);
if(ext == NULL) {
lv_label_set_align(label, LV_LABEL_ALIGN_CENTER);
lv_label_set_text_id(label, WATCH_TEXT_ID_RINGING);
lv_obj_set_click(label, false);
+ lv_obj_align(label, content, LV_ALIGN_IN_TOP_MID, 0, 10);
ext->phone_status_label = label;
// img
lv_obj_t * img = lv_img_create(content, NULL);
lv_img_set_src(img, ICON_VIDEO_CALL_CONTACT_PHOTO);
- lv_obj_align(img, label, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
+ lv_obj_align(img, label, LV_ALIGN_OUT_BOTTOM_MID, 0, 20);
lv_obj_set_click(img, false);
// name
btn = lv_imgbtn_create(content, NULL);
lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_VIDEO_CALL_ANSWER_BTN);
lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_VIDEO_CALL_ANSWER_BTN);
- lv_obj_set_event_cb(btn, mmi_vc_incoming_hook_action);
+ lv_obj_set_event_cb(btn, mmi_vc_hook_action);
lv_obj_align(btn, content, LV_ALIGN_IN_BOTTOM_RIGHT, MMI_VC_INCOMING_HOOK_BTN_X_OFFSET, MMI_VC_RING_OFF_BTN_Y_OFFSET);
}
+static void mmi_vc_ui_connecting(lv_obj_t * content)
+{
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+ lv_vc_call_obj_ext_t * ext = mmi_vc_call_get_ext();
+
+ LV_ASSERT_MEM(ext);
+ if(ext == NULL) {
+ return;
+ }
+ lv_obj_t * label;
+
+ // label ringing
+ label = lv_label_create(content, NULL);
+ lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font20);
+ lv_label_set_align(label, LV_LABEL_ALIGN_CENTER);
+ lv_label_set_text_id(label, WATCH_TEXT_ID_CONNECTING);
+ lv_obj_set_click(label, false);
+ lv_obj_align(label, content, LV_ALIGN_IN_TOP_MID, 0, 10);
+ ext->phone_status_label = label;
+
+ // img
+ lv_obj_t * img = lv_img_create(content, NULL);
+ lv_img_set_src(img, ICON_VIDEO_CALL_CONTACT_PHOTO);
+ lv_obj_align(img, label, LV_ALIGN_OUT_BOTTOM_MID, 0, 20);
+ lv_obj_set_click(img, false);
+
+ // name
+ label = lv_label_create(content, NULL);
+ lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font26);
+ lv_label_set_align(label, LV_LABEL_ALIGN_CENTER);
+ lv_label_set_long_mode(label, LV_LABEL_LONG_SROLL);
+ lv_obj_set_width(label, lv_obj_get_width(content) - 20);
+ if(strlen(s_video_call_params.name) > 0)
+ {
+ lv_label_set_text(label, s_video_call_params.name);
+ }
+ else
+ {
+ lv_label_set_text(label, s_video_call_params.number);
+ }
+ lv_obj_align(label, img, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
+ lv_obj_set_click(label, false);
+
+ // btn ring off
+ lv_obj_t * btn = lv_imgbtn_create(content, NULL);
+ lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_VIDEO_CALL_HANGUP_BTN);
+ lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_VIDEO_CALL_HANGUP_BTN);
+ lv_obj_set_event_cb(btn, mmi_vc_ring_off_action);
+ lv_obj_align(btn, content, LV_ALIGN_IN_BOTTOM_MID, 0, MMI_VC_RING_OFF_BTN_Y_OFFSET);
+}
+
static void mmi_vc_ui_connected(lv_obj_t * content)
{
- VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
- lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext();
+ lv_vc_call_obj_ext_t * ext = mmi_vc_call_get_ext();
if(ext == NULL)
{
return;
if(s_video_call_params.call_type == MODEM_VIDEO_CALL_TYPE_VOICE)
{
- VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
ext->connect_start_time = time_to_seconds(&rtc_curr);
{
lv_obj_t * canvas;
- VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: format=%d\n", __FUNCTION__, __LINE__, ext->voiph263fmt);
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: format=%d\n", __FUNCTION__, __LINE__, ext->voiph263fmt);
ext->local_remote_switch_flag = VOIP_REMOTE_SWITCH_REMOTE;
if((ext->voiph263fmt == VOIP_H263_FMT_SQCIF) || (ext->voiph263fmt == VOIP_H263_FMT_QCIF))
ext->ring_value_button = btn;
// btn switch video
- //btn = lv_imgbtn_create(canvas, NULL);
+ btn = lv_imgbtn_create(canvas, NULL);
//lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_SETTING_VOLTE);
//lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_SETTING_VOLTE);
//lv_obj_set_event_cb(btn, voip_local_remote_switch_action);
//lv_obj_align(btn, canvas, LV_ALIGN_IN_BOTTOM_MID, 0, -20);
//lv_obj_add_style(btn, LV_OBJ_PART_MAIN, &lv_watch_style_transp);
- //ext->view_switch_button = btn;
+ ext->view_switch_button = btn;
// btn ring off
btn = lv_imgbtn_create(canvas, NULL);
lv_obj_set_hidden(ext->connect_time, ext->canvas_button_hidden_flag);
lv_obj_set_hidden(ext->ring_value_button, ext->canvas_button_hidden_flag);
- lv_obj_set_hidden(ext->view_switch_button, ext->canvas_button_hidden_flag);
+ lv_obj_set_hidden(ext->view_switch_button, true); // lv_obj_set_hidden(ext->view_switch_button, ext->canvas_button_hidden_flag);
lv_obj_set_hidden(ext->ring_off_button, ext->canvas_button_hidden_flag);
}
- if(voip_phone_get_obj()) {
- lv_watch_obj_set_down_slide_cb(voip_phone_get_obj(), voip_phone_down_slide_callback);
+ if(mmi_vc_call_get_obj()) {
+ lv_watch_obj_set_down_slide_cb(mmi_vc_call_get_obj(), voip_phone_down_slide_callback);
}
}
}
-static lv_obj_t * mmi_vc_ui_create(lv_obj_t * activity_obj, MMI_VIDEO_CALL_UI_E video_call_ui)
+static lv_obj_t * mmi_vc_ui_create(lv_obj_t * activity_obj)
{
printf("%s %d\n", __FUNCTION__, __LINE__);
- if(MMI_VC_UI_CONNECTED == video_call_ui)
+ if(MMI_VC_UI_CONNECTED == s_vc_call_ui)
{
/* set speaker volume to nv when leaving activiry's slider */
voip_set_volume_when_slider_act();
/* cleanup phone first */
voip_phone_cleanup();
+ lv_watch_png_cache_all_free();
+
if(activity_obj == NULL)
{
lv_watch_activity_ext_t activity_ext = {0};
activity_ext.actId = ACT_ID_VOIPPHONE;
- activity_ext.create = NULL;
- activity_ext.prepare_destory = voip_phone_prepare_destory;
- activity_obj = lv_watch_creat_activity_obj(&activity_ext);
- LV_ASSERT_MEM(activity_obj);
- if(activity_obj == NULL) {
- return(NULL);
+ activity_ext.create = NULL; // mmi_vc_ui_create;
+ activity_ext.prepare_destory = mmi_vc_ui_prepare_destory;
+ activity_obj = lv_watch_creat_activity_obj(&activity_ext);
+ if(NULL == activity_obj)
+ {
+ return NULL;
}
}
lv_obj_t * obj = lv_watch_obj_create(activity_obj);
- LV_ASSERT_MEM(obj);
- if(obj == NULL) {
+ if(obj == NULL)
+ {
return(NULL);
}
lv_watch_obj_set_anim_mode(obj, LV_WATCH_LEFT_OR_RIGHT_SLIDE_CALLBACK);
lv_watch_obj_set_left_slide_cb(obj, voip_phone_left_slide_callback);
lv_watch_obj_set_right_slide_cb(obj, voip_phone_right_slide_callback);
- lv_voip_phone_obj_ext_t * ext = lv_obj_allocate_ext_attr(obj, sizeof(lv_voip_phone_obj_ext_t));
- LV_ASSERT_MEM(ext);
- if(ext == NULL) {
+ lv_vc_call_obj_ext_t * ext = lv_obj_allocate_ext_attr(obj, sizeof(lv_vc_call_obj_ext_t));
+ if(ext == NULL)
+ {
return(NULL);
}
ext->phone_status_label = NULL;
ext->phone_animation_obj = NULL;
- ext->phone_ui_t = video_call_ui;
+ ext->phone_ui_t = s_vc_call_ui;
ext->local_remote_switch_flag = VOIP_REMOTE_SWITCH_NULL;
#if ENABLE_VIDEO_SCALE == 0
ext->voiph263fmt = VOIP_H263_FMT_QCIF;
lv_obj_t * content = lv_cont_create(obj, NULL);
lv_obj_set_size(content, lv_obj_get_width(obj), lv_obj_get_height(obj)); // lv_obj_get_height(obj) - 20);
//lv_cont_set_layout(content, LV_LAYOUT_COLUMN_MID);
- LV_ASSERT_MEM(content);
- if(content == NULL) {
- return(NULL);
- }
- lv_obj_add_style(content, LV_OBJ_PART_MAIN, &lv_watch_style_transp);
- /* must click false */
+ //lv_obj_add_style(content, LV_OBJ_PART_MAIN, &lv_watch_style_transp);
+ lv_obj_set_style_local_bg_color(content, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
+ //lv_watch_obj_add_element(cont);
lv_obj_set_click(content, false);
lv_obj_align(content, obj, LV_ALIGN_CENTER, 0, 0);
- if(ext->phone_ui_t == MMI_VC_UI_DIALING)
- {
- mmi_vc_ui_dialing(content);
- voip_dialing_animation(ext->phone_status_label);
- }
- else if(ext->phone_ui_t == MMI_VC_UI_INCOMING)
+ switch(ext->phone_ui_t)
{
- mmi_vc_ui_incoming(content);
- voip_ring_animation(ext->phone_status_label);
- }
- else if(ext->phone_ui_t == PHONE_UI_CONNECTED)
- {
- mmi_vc_ui_connected(content);
- voip_connected_animation(ext->phone_status_label);
- }
+ case MMI_VC_UI_INCOMING:
+ mmi_vc_ui_incoming(content);
+ voip_ring_animation(ext->phone_status_label);
+ break;
+
+ case MMI_VC_UI_DIALING:
+ mmi_vc_ui_dialing(content);
+ voip_dialing_animation(ext->phone_status_label);
+ break;
+
+ case MMI_VC_UI_CONNECTING:
+ mmi_vc_ui_connecting(content);
+ voip_connecting_animation(ext->phone_status_label);
+ break;
+
+ case MMI_VC_UI_CONNECTED:
+ mmi_vc_ui_connected(content);
+ voip_connected_animation(ext->phone_status_label);
+ break;
+
+ default:
+ break;
+ }
return obj;
}
void mmi_vc_call_action_incoming(char * number, MODEM_VIDEO_CALL_TYPE type)
{
- VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %s,%d\n", __FUNCTION__, __LINE__, number, type);
-
if(true == mmi_active_screen_is_prohibit_interrupted() || true == is_rat_gsm())
{
- VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %s,%d\n", __FUNCTION__, __LINE__);
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %s,%d\n", __FUNCTION__, __LINE__);
mmi_video_call_reject_req(TRUE);
return;
if(AUDIO_CTRL_PRIORITY_2 == Hal_Audio_Manage_Start_Req(AUDIO_CTRL_PRIORITY_2, voip_audio_ctrl_callback))
{
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %s,%d\n", __FUNCTION__, __LINE__);
+
Hal_Mem_Set(&s_video_call_params, 0, sizeof(MMI_VIDEO_CALL_PARAMS_T));
s_video_call_params.call_type = type;
s_video_call_params.is_mt = true;
s_video_call_params.state = MMI_VIDEO_CALL_STATE_INCOMING;
strncpy(s_video_call_params.number, number, NV_WATCH_VC_CONTACT_NUMBER_LEN - 1);
- watch_set_lcd_status(true);
+ //watch_set_lcd_status(true);
HAL_SPEAKER_GAIN volume = query_current_volume();
Hal_NFFS_File_Play_Repeat(AUDIO_INCOMING_CALL, volume);
voip_rat_check_start();
- mmi_vc_ui_create(NULL, MMI_VC_UI_INCOMING);
+
+ s_vc_call_ui = MMI_VC_UI_INCOMING;
+ mmi_vc_ui_create(NULL);
+
+ watch_set_lcd_status(true);
}
else
{
// AUDIO_CTRL_PRIORITY_1
- VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %s,%d\n", __FUNCTION__, __LINE__);
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %s,%d\n", __FUNCTION__, __LINE__);
// auto reject
mmi_video_call_reject_req(FALSE);
voip_rat_check_stop();
// stop ring off timer
- if(NULL != s_video_call_params.ring_off_timer_id)
- {
- Hal_Timer_Stop(s_video_call_params.ring_off_timer_id);
- s_video_call_params.ring_off_timer_id = NULL;
- }
+ mmi_vc_ring_off_timer_stop();
// stop callreq timer
- if(NULL != s_video_call_params.callreq_timer_id)
- {
- Hal_Timer_Stop(s_video_call_params.callreq_timer_id);
- s_video_call_params.callreq_timer_id = NULL;
- }
+ mmi_vc_dialing_timer_stop();
- Hal_Mem_Set(&s_video_call_params, 0, sizeof(MMI_VIDEO_CALL_PARAMS_T));
+ Hal_Mem_Set(&s_video_call_params, 0x0, sizeof(MMI_VIDEO_CALL_PARAMS_T));
voip_set_volume_when_slider_act();
voip_phone_cleanup();
lv_watch_png_cache_all_free();
}
}
+static void mmi_vc_call_connecting_timeout_cb(void * para)
+{
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+ mmi_vc_connecting_timer_stop();
+ mmi_video_call_hangup_req(TRUE);
+ //mmi_vc_ring_off_action(NULL, LV_EVENT_CLICKED);
+}
-void mmi_vc_call_action_connect(void)
+void mmi_vc_call_action_connecting(void)
{
- VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ if(MMI_VIDEO_CALL_STATE_CALLING == s_video_call_params.state
+ || MMI_VIDEO_CALL_STATE_CONNECTING == s_video_call_params.state
+ )
+ {
+ return;
+ }
+
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ s_video_call_params.state = MMI_VIDEO_CALL_STATE_CONNECTING;
+
+ // stop timer
+ mmi_vc_dialing_timer_stop();
+ mmi_vc_connecting_timer_stop();
+
+ // stop playing tone
+ Hal_Tone_Play_End();
+
+ //Hal_Set_Voice_Call_Status(VOICE_CALL_START);
+
+ if(NULL == s_video_call_params.connecting_timer_id)
+ {
+ s_video_call_params.connecting_timer_id = Hal_Timer_Start(MMI_VC_CONNECTING_TIMEOUT, mmi_vc_call_connecting_timeout_cb, NULL, 0);
+ }
+
+ s_vc_call_ui = MMI_VC_UI_CONNECTING;
+ mmi_vc_ui_create(NULL);
+}
+
+void mmi_vc_call_action_connected(void)
+{
if(MMI_VIDEO_CALL_STATE_CALLING == s_video_call_params.state)
{
return;
}
+
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
s_video_call_params.state = MMI_VIDEO_CALL_STATE_CALLING;
- // stop callreq timer
- if(NULL != s_video_call_params.callreq_timer_id)
- {
- Hal_Timer_Stop(s_video_call_params.callreq_timer_id);
- s_video_call_params.callreq_timer_id = NULL;
- }
+ // stop timer
+ mmi_vc_dialing_timer_stop();
+ mmi_vc_connecting_timer_stop();
// stop playing tone
Hal_Tone_Play_End();
Hal_Set_Voice_Call_Status(VOICE_CALL_START);
- // create connected UI
- mmi_vc_ui_create(NULL, MMI_VC_UI_CONNECTED);
+ s_vc_call_ui = MMI_VC_UI_CONNECTED;
+ mmi_vc_ui_create(NULL);
}
static void mmi_vc_call_dialing_timeout_cb(void * para)
{
- VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
- s_video_call_params.callreq_timer_id = NULL;
+ mmi_vc_dialing_timer_stop();
mmi_video_call_hangup_req(TRUE);
}
void mmi_vc_call_action_dialing(char * number, MODEM_VIDEO_CALL_TYPE type)
{
- VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %s,%d\n", __FUNCTION__, __LINE__, number, type);
-
// check call state
if(MMI_VIDEO_CALL_STATE_NONE != s_video_call_params.state)
{
- VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: %d\n", __FUNCTION__, __LINE__, s_video_call_params.state);
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, s_video_call_params.state);
return;
}
- // stop ring off timer
- if(NULL != call_params.ring_off_timer_id)
- {
- Hal_Timer_Stop(call_params.ring_off_timer_id);
- call_params.ring_off_timer_id = NULL;
- }
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %s,%d\n", __FUNCTION__, __LINE__, number, type);
- // stop callreq timer
- if(NULL != s_video_call_params.callreq_timer_id)
- {
- Hal_Timer_Stop(s_video_call_params.callreq_timer_id);
- s_video_call_params.callreq_timer_id = NULL;
- }
+ // stop timer
+ mmi_vc_ring_off_timer_stop();
+ mmi_vc_dialing_timer_stop();
// set call parameters
Hal_Mem_Set(&s_video_call_params, 0, sizeof(MMI_VIDEO_CALL_PARAMS_T));
strcpy(s_video_call_params.number, number);
int8_t ret = mmi_video_call_dial_req(type, s_video_call_params.number);
- if(NULL == s_video_call_params.callreq_timer_id)
+ if(NULL == s_video_call_params.dialing_timer_id)
{
- UINT32 timeout = (ret >= 0) ? VOIP_CALLREQ_TIME_OUT : 1*1000;
+ UINT32 timeout = (ret >= 0) ? MMI_VC_DIALING_TIMEOUT : 1*1000;
- s_video_call_params.callreq_timer_id = Hal_Timer_Start(timeout, mmi_vc_call_dialing_timeout_cb, NULL, 0);
+ s_video_call_params.dialing_timer_id = Hal_Timer_Start(timeout, mmi_vc_call_dialing_timeout_cb, NULL, 0);
}
- // create dialing UI
+
voip_rat_check_start();
- mmi_vc_ui_create(NULL, MMI_VC_UI_DIALING);
+
+ s_vc_call_ui = MMI_VC_UI_DIALING;
+ mmi_vc_ui_create(NULL);
+
Hal_Audio_Manage_Start_Req(AUDIO_CTRL_PRIORITY_2, voip_audio_ctrl_callback);
Hal_Set_Voice_Call_Status(VOICE_CALL_START);
}
static void mmi_vc_main_prepare_destory(lv_obj_t * activity_obj)
{
- VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
lv_watch_png_cache_all_free();
}
}
-void mmi_video_call_fail_timeout_cb(void *para)
+void mmi_vc_call_fail_timeout_cb(void *para)
{
mmi_vc_main_prepare_destory(NULL);
}
-static void mmi_video_call_fail(lv_obj_t * obj)
+static void mmi_vc_call_action_no_permission(void)
{
- VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ lv_obj_t * obj = lv_watch_get_activity_obj(ACT_ID_VOIP_PHONEBOOK);
+
lv_obj_t * cont = lv_cont_create(obj, NULL);
lv_cont_set_fit(cont, LV_FIT_NONE);
lv_obj_set_size(cont, lv_obj_get_width(obj), lv_obj_get_height(obj));
lv_obj_set_click(cont, false);
lv_obj_t * label = lv_label_create(cont, NULL);
- lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font26); // &lv_watch_font20);
+ lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font26);
lv_label_set_align(label, LV_LABEL_ALIGN_CENTER);
lv_obj_set_click(label, false);
lv_label_set_text_id(label, WATCH_TEXT_ID_NO_SIM_OR_NETWORK); // WATCH_TEXT_ID_NO_CONTACTS_OR_NETWORK);
lv_obj_align(label, cont, LV_ALIGN_CENTER, 0, 0);
- TIMER_ID timer_id = Hal_Timer_Start(2*1000, mmi_video_call_fail_timeout_cb, NULL, FALSE);
+ fail_timer_id = Hal_Timer_Start(2*1000, mmi_vc_call_fail_timeout_cb, NULL, FALSE);
}
static void mmi_vc_voice_btn_action(lv_obj_t * btn, lv_event_t e)
return;
}
- if(true == mmi_video_call_check_mo_permission())
+ if(true == mmi_vc_check_mo_permission())
{
- #ifdef __VIDEO_CALL_TEST__
- mmi_vc_call_action_dialing(MMI_VC_ROOM_ID, MODEM_VIDEO_CALL_TYPE_VOICE);
- #else
- mmi_vc_call_action_dialing(s_vc_contact.number[0], MODEM_VIDEO_CALL_TYPE_VOICE);
- #endif
+ uint8_t index = lv_watch_get_free_num(btn);
+
+ mmi_vc_call_action_dialing(s_vc_contact.number[index], MODEM_VIDEO_CALL_TYPE_VOICE);
}
else
{
- mmi_video_call_fail(lv_watch_get_activity_obj(ACT_ID_VOIP_PHONEBOOK));
+ mmi_vc_call_action_no_permission();
}
}
return;
}
- if(true == mmi_video_call_check_mo_permission())
+ if(true == mmi_vc_check_mo_permission())
{
- #ifdef __VIDEO_CALL_TEST__
- mmi_vc_call_action_dialing(MMI_VC_ROOM_ID, MODEM_VIDEO_CALL_TYPE_VIDEO);
- #else
- mmi_vc_call_action_dialing(s_vc_contact.number[0], MODEM_VIDEO_CALL_TYPE_VIDEO);
- #endif
+ uint8_t index = lv_watch_get_free_num(btn);
+
+ mmi_vc_call_action_dialing(s_vc_contact.number[index], MODEM_VIDEO_CALL_TYPE_VIDEO);
}
else
{
- mmi_video_call_fail(lv_watch_get_activity_obj(ACT_ID_VOIP_PHONEBOOK));
+ mmi_vc_call_action_no_permission();
}
}
+static void mmi_vc_dial_btn_screen(lv_obj_t * btn, lv_event_t e)
+{
+ if(LV_EVENT_CLICKED != e)
+ {
+ return;
+ }
+
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+ lv_obj_t * obj = lv_watch_get_activity_obj(ACT_ID_VOIP_PHONEBOOK);
+ uint8_t index = lv_watch_get_free_num(btn);
+
+ lv_obj_t * cont = lv_cont_create(obj, NULL);
+ lv_cont_set_fit(cont, LV_FIT_NONE);
+ lv_obj_set_size(cont, LV_HOR_RES, LV_VER_RES); // lv_obj_get_width(obj), lv_obj_get_height(obj));
+ lv_obj_set_style_local_bg_color(cont, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
+ lv_cont_set_layout(cont, LV_LAYOUT_OFF);
+ lv_obj_set_click(cont, false);
+
+ lv_obj_t * voicebtn = lv_imgbtn_create(cont, NULL);
+ lv_imgbtn_set_src(voicebtn, LV_BTN_STATE_RELEASED, ICON_VIDEO_CALL_VOICE_BTN);
+ lv_imgbtn_set_src(voicebtn, LV_BTN_STATE_PRESSED, ICON_VIDEO_CALL_VOICE_BTN);
+ lv_obj_align(voicebtn, cont, LV_ALIGN_IN_TOP_MID, 0, 10);
+ lv_obj_set_event_cb(voicebtn, mmi_vc_voice_btn_action);
+ lv_watch_set_free_num(voicebtn, index);
+
+ lv_obj_t * videobtn = lv_imgbtn_create(cont, NULL);
+ lv_imgbtn_set_src(videobtn, LV_BTN_STATE_RELEASED, ICON_VIDEO_CALL_VIDEO_BTN);
+ lv_imgbtn_set_src(videobtn, LV_BTN_STATE_PRESSED, ICON_VIDEO_CALL_VIDEO_BTN);
+ lv_obj_align(videobtn, cont, LV_ALIGN_IN_BOTTOM_MID, 0, -10);
+ lv_obj_set_event_cb(videobtn, mmi_vc_video_btn_action);
+ lv_watch_set_free_num(videobtn, index);
+}
+
+static lv_obj_t * mmi_vc_contact_list_create(lv_obj_t * obj)
+{
+ /*Allocate the object type specific extended data*/
+ lv_vc_contact_list_obj_ext_t * ext = lv_obj_allocate_ext_attr(obj, sizeof(lv_vc_contact_list_obj_ext_t));
+ /*ext realloc based on watch_obj_ext, do not memeset it*/
+ if(NULL == ext)
+ {
+ return NULL;
+ }
+
+ ext->title = NULL;
+ ext->list = NULL;
+
+ /* content */
+ lv_obj_t * content = lv_cont_create(obj, NULL);
+ lv_cont_set_fit(content, LV_FIT_NONE);
+ lv_obj_set_size(content, lv_obj_get_width(obj), lv_obj_get_height(obj));
+ lv_obj_add_style(content,LV_OBJ_PART_MAIN, &lv_watch_style_transp);
+ lv_obj_set_style_local_bg_color(content, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
+ lv_cont_set_layout(content, LV_LAYOUT_OFF); // lv_cont_set_layout(content, LV_LAYOUT_COLUMN_MID);
+ lv_obj_set_click(content, false);
+ lv_obj_align(content, obj, LV_ALIGN_CENTER, 0, 0);
+
+ lv_obj_t * label = lv_label_create(content, NULL);
+ lv_obj_set_size(label, LV_HOR_RES, 40); // 30);
+ lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font20_gray);
+ lv_label_set_align(label, LV_LABEL_ALIGN_CENTER);
+ lv_label_set_text_id(label, WATCH_TEXT_ID_VIDEOCALL);
+ lv_obj_align(label, NULL, LV_ALIGN_IN_TOP_MID, 0, 5);
+ lv_obj_set_click(label, false);
+ ext->title = label;
+
+ lv_obj_t * list = lv_list_create(content, NULL);
+ if(list == NULL)
+ {
+ return NULL;
+ }
+ lv_watch_obj_add_element(list);
+ lv_watch_obj_add_element(lv_page_get_scrl(list));
+ lv_obj_add_style(list, LV_LIST_PART_BG, &lv_watch_style_transp);
+ //lv_obj_add_style(list, LV_LIST_PART_SCROLLABLE, &lv_watch_style_transp);
+ //lv_obj_set_style_local_pad_top(list, LV_LIST_PART_SCROLLABLE, LV_STATE_DEFAULT, 4);
+ //lv_obj_set_style_local_pad_bottom(list, LV_LIST_PART_SCROLLABLE, LV_STATE_DEFAULT, 4);
+ lv_list_set_scrollbar_mode(list, LV_SCROLLBAR_MODE_OFF);
+ lv_page_set_scrollbar_mode(list, LV_SCROLLBAR_MODE_OFF);
+ lv_obj_set_width(list, lv_obj_get_width(content));
+ lv_coord_t height = lv_obj_get_height(content) - lv_obj_get_height(label);
+ lv_obj_set_height(list, height);
+ lv_obj_align(list, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, 0);
+ lv_obj_set_click(list, false);
+ ext->list = list;
+
+ int8_t i = 0;
+ lv_obj_t * btn;
+
+ for(i = 0; i < s_vc_contact.total; i++)
+ {
+ char t_str[NV_WATCH_VC_CONTACT_NUMBER_LEN] = {0};
+
+ if(0 < strlen(s_vc_contact.name[i]))
+ strcpy(t_str, s_vc_contact.name[i]);
+ else
+ strcpy(t_str, s_vc_contact.number[i]);
+
+ #if 0
+ btn = lv_list_add_btn(list, NULL, t_str);
+ lv_page_glue_obj(btn, true);
+ //lv_obj_add_protect(btn, LV_PROTECT_PRESS_LOST);
+ lv_obj_set_event_cb(btn, mmi_vc_dial_btn_screen);
+ lv_watch_obj_add_element(btn);
+
+ lv_obj_set_style_local_bg_color(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
+ lv_obj_set_style_local_pad_top(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 6);
+ lv_obj_set_style_local_pad_bottom(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 6);
+ lv_obj_set_style_local_pad_left(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 15);
+ lv_obj_set_style_local_pad_right(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 15);
+ lv_obj_set_style_local_pad_inner(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 10);
+
+ //lv_obj_set_size(btn, lv_obj_get_width(list), 80); //56);
+
+ //label = lv_obj_get_child(btn, NULL);
+ //label = lv_list_get_btn_label(btn);
+ //lv_label_set_long_mode(label, LV_LABEL_LONG_EXPAND);
+ //lv_label_set_text(label, t_str);
+ //lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font26);
+ //lv_obj_align(label, btn, LV_ALIGN_IN_LEFT_MID, 0, 0);
+ #else
+
+ btn = lv_list_add_btn(list, NULL, NULL);
+ //lv_page_glue_obj(btn, true);
+ //lv_obj_add_protect(btn, LV_PROTECT_PRESS_LOST);
+ lv_obj_set_event_cb(btn, mmi_vc_dial_btn_screen);
+ lv_watch_obj_add_element(btn);
+
+ lv_obj_set_style_local_bg_color(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
+ lv_obj_set_style_local_pad_top(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 5);
+ lv_obj_set_style_local_pad_bottom(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 5);
+ lv_obj_set_style_local_pad_left(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 15);
+ lv_obj_set_style_local_pad_right(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 15);
+ lv_obj_set_style_local_pad_inner(btn, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 10);
+
+ //label = lv_obj_get_child(btn, NULL);
+ //label = lv_list_get_btn_label(btn);
+ label = lv_label_create(btn, NULL);
+ //lv_label_set_long_mode(label, LV_LABEL_LONG_SROLL); // LV_LABEL_LONG_SROLL_CIRC
+ lv_obj_set_width(label, lv_obj_get_width(btn));
+ lv_label_set_text(label, t_str);
+ lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font26);
+ lv_label_set_align(label, LV_LABEL_ALIGN_LEFT);
+ lv_obj_set_click(label, false);
+ //lv_obj_align(label, btn, LV_ALIGN_IN_LEFT_MID, 0, 0);
+ #endif
+
+ lv_watch_set_free_num(btn, i);
+ }
+
+ return obj;
+}
+
static lv_obj_t * mmi_vc_main_create(lv_obj_t * activity_obj)
{
if(activity_obj == NULL)
if(NULL == obj)
return NULL;
- if(false == mmi_video_call_check_mo_permission())
+ if(false == mmi_vc_check_mo_permission())
{
- VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
lv_obj_t * label = lv_label_create(obj, NULL);
-
- lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font26); // &lv_watch_font20);
+ lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font26);
lv_label_set_align(label, LV_LABEL_ALIGN_CENTER);
lv_obj_set_click(label, false);
lv_label_set_text_id(label, WATCH_TEXT_ID_NO_SIM_OR_NETWORK); // WATCH_TEXT_ID_NO_CONTACTS_OR_NETWORK);
lv_obj_align(label, obj, LV_ALIGN_CENTER, 0, 0);
-
- //lv_watch_set_free_num(activity_obj, 0);
}
- else
+ else if(0 == s_vc_contact.total)
{
- VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
-
- #if 0
- lv_obj_t * obj = lv_watch_list_create(NULL);
- if(obj == NULL)
- return NULL;
-
- lv_watch_list_set_name_txt(obj, WATCH_TEXT_ID_SETTINGS);
-
- for(int8_t i = 0; i < (sizeof(settingList) / sizeof(settingList[0])); i++)
- {
- lv_watch_list_add(obj, (void *)settingList[i].img_src, settingList[i].txtId, settingList[i].event_cb);
- }
-
- #else
- lv_obj_t * cont = lv_cont_create(obj, NULL);
- lv_cont_set_fit(cont, LV_FIT_NONE);
- lv_obj_set_size(cont, lv_obj_get_width(obj), lv_obj_get_height(obj));
- lv_obj_set_style_local_bg_color(cont, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
- lv_cont_set_layout(cont, LV_LAYOUT_OFF);
- lv_obj_set_click(cont, false);
-
- lv_obj_t * voicebtn = lv_imgbtn_create(cont, NULL);
- lv_imgbtn_set_src(voicebtn, LV_BTN_STATE_RELEASED, ICON_VIDEO_CALL_VOICE_BTN);
- lv_imgbtn_set_src(voicebtn, LV_BTN_STATE_PRESSED, ICON_VIDEO_CALL_VOICE_BTN);
- lv_obj_align(voicebtn, cont, LV_ALIGN_IN_TOP_MID, 0, 10);
- lv_obj_set_event_cb(voicebtn, mmi_vc_voice_btn_action);
+ lv_obj_t * label = lv_label_create(obj, NULL);
+ lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font26);
+ lv_label_set_align(label, LV_LABEL_ALIGN_CENTER);
+ lv_obj_set_click(label, false);
+ lv_label_set_text_id(label, WATCH_TEXT_ID_NO_CONTACTS);
+ lv_obj_align(label, obj, LV_ALIGN_CENTER, 0, 0);
+ }
+ else
+ {
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
- lv_obj_t * videobtn = lv_imgbtn_create(cont, NULL);
- lv_imgbtn_set_src(videobtn, LV_BTN_STATE_RELEASED, ICON_VIDEO_CALL_VIDEO_BTN);
- lv_imgbtn_set_src(videobtn, LV_BTN_STATE_PRESSED, ICON_VIDEO_CALL_VIDEO_BTN);
- lv_obj_align(videobtn, cont, LV_ALIGN_IN_BOTTOM_MID, 0, -10);
- lv_obj_set_event_cb(videobtn, mmi_vc_video_btn_action);
-
- //lv_watch_set_free_num(activity_obj, 1);
- #endif
+ mmi_vc_contact_list_create(obj);
}
return(obj);
void video_call_create_event_cb(lv_obj_t * btn, lv_event_t e)
{
+#ifdef __VIDEO_CALL_TEST__
+ nv_watch_vc_contact_t t_test_contact =
+ {
+ 3,
+ {"test001", "test002", "test003"},
+ {"jrtc001", "jrtc002", "jrtc003"}
+ };
+
+ _lv_memcpy(&s_vc_contact, &t_test_contact, sizeof(nv_watch_vc_contact_t));
+#endif
+
if(LV_EVENT_CLICKED == e)
{
lv_watch_png_cache_all_free();
if((s_video_call_params.call_type == MODEM_VIDEO_CALL_TYPE_VIDEO)
|| (MMI_VIDEO_CALL_STATE_INCOMING == s_video_call_params.state)
|| (MMI_VIDEO_CALL_STATE_DIALING == s_video_call_params.state)
+ || (MMI_VIDEO_CALL_STATE_CONNECTING == s_video_call_params.state)
)
{
return false;
bool voip_connect_check_req(void)
{
#ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__
- if(voip_phone_get_activity_obj())
+ if(mmi_vc_call_get_activity_obj())
{
return true;
}
void voip_activity_destroy_req(void)
{
#ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__
- VIDEO_CALL_DEBUG_PRINTF("[@CHENG][%s][%d]: \n", __FUNCTION__, __LINE__);
+ VIDEO_CALL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
- lv_obj_t * activity_obj = voip_phone_get_activity_obj();
+ lv_obj_t * activity_obj = mmi_vc_call_get_activity_obj();
if(NULL == activity_obj)
{
return;
voip_signal_check_stop();
voip_rat_check_stop();
- // stop ring off timer
- if(NULL != s_video_call_params.ring_off_timer_id) {
- Hal_Timer_Stop(s_video_call_params.ring_off_timer_id);
- s_video_call_params.ring_off_timer_id = NULL;
- }
+ // stop timer
+ mmi_vc_ring_off_timer_stop();
+ mmi_vc_dialing_timer_stop();
+ mmi_vc_connecting_timer_stop();
- // stop callreq timer
- if(NULL != s_video_call_params.callreq_timer_id) {
- Hal_Timer_Stop(s_video_call_params.callreq_timer_id);
- s_video_call_params.callreq_timer_id = NULL;
- }
-
- Hal_Mem_Set(&s_video_call_params, 0, sizeof(MMI_VIDEO_CALL_PARAMS_T));
- s_video_call_params.state = MMI_VIDEO_CALL_STATE_NONE;
+ Hal_Mem_Set(&s_video_call_params, 0x0, sizeof(MMI_VIDEO_CALL_PARAMS_T));
voip_set_volume_when_slider_act();
voip_phone_cleanup();
lv_watch_png_cache_all_free();