From: @CHENG <2393524978@qq.com> Date: Wed, 24 Apr 2024 03:10:58 +0000 (+0800) Subject: gengxin X-Git-Url: http://git.snicker.com.cn/sitemap.xml?a=commitdiff_plain;h=fb257c39bb72bb9537f523c7ca082eda1a5616d2;p=mirrors%2FASR3603_Z5_DS.git gengxin --- diff --git a/2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.c b/2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.c index 4d90969b..ed3c0028 100644 --- a/2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.c +++ b/2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.c @@ -27,6 +27,11 @@ void mmi_ui_msg_action_watch_power_off(void) mmi_ui_msg_action_no_para_msg(MMI_MSG_WATCH_POWER_OFF); } +void mmi_ui_msg_action_watch_reboot(void) +{ + mmi_ui_msg_action_no_para_msg(MMI_MSG_WATCH_REBOOT); +} + void mmi_ui_msg_action_watch_searching(void) { mmi_ui_msg_action_no_para_msg(MMI_MSG_WATCH_SEARCHING); diff --git a/2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.h b/2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.h index 6ead1fd5..f53cac6d 100644 --- a/2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.h +++ b/2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.h @@ -56,6 +56,7 @@ void mmi_watch_lv_ui_message_action(uint16_t msgid, void * msg); void mmi_ui_msg_action_watch_factory(void); void mmi_ui_msg_action_watch_power_off(void); +void mmi_ui_msg_action_watch_reboot(void); void mmi_ui_msg_action_watch_searching(void); #ifdef __MMI_WECHAT_SUPPORT__ void mmi_ui_msg_action_wechat_incoming(void); diff --git a/2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.c b/2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.c index 56203c16..1840b4ce 100644 --- a/2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.c +++ b/2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.c @@ -367,14 +367,16 @@ void watch_ui_message_handle(uint16_t msgid, void * msg) #endif case MMI_MSG_WATCH_FACTORY: - //printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); mmi_ui_msg_update_watch_factory(); break; case MMI_MSG_WATCH_POWER_OFF: - //printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); mmi_ui_msg_update_watch_power_off(); break; + + case MMI_MSG_WATCH_REBOOT: + mmi_ui_msg_update_watch_reboot(); + break; case MMI_MSG_WATCH_SEARCHING: //printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); diff --git a/2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.h b/2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.h index ce85c2ad..1e0e9a58 100644 --- a/2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.h +++ b/2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.h @@ -102,6 +102,7 @@ enum #endif MMI_MSG_WATCH_FACTORY, MMI_MSG_WATCH_POWER_OFF, + MMI_MSG_WATCH_REBOOT, MMI_MSG_WATCH_SEARCHING, #ifdef __MMI_WECHAT_SUPPORT__ MMI_MSG_WECHAT_INCOMING, @@ -554,6 +555,12 @@ typedef struct UI_Inter_Msg_Header_t header; } mmi_msg_no_para_t; +typedef struct +{ + UI_Inter_Msg_Header_t header; + uint32_t flag; +} mmi_msg_flag_para_t; + #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__ typedef struct { 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 4fc55252..1f1f15b1 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 @@ -231,6 +231,9 @@ typedef struct typedef struct { char number[NV_WATCH_SOS_NUMBER_MAX][NV_CONTACTS_MAX_NUMBER_LEN]; +#ifdef __MMI_SOS_NUMBER_NAME_SUPPORT__ + char name[NV_WATCH_SOS_NUMBER_MAX][NV_CONTACTS_MAX_NAME_LEN]; +#endif } __packed nv_watch_sos_number_t; @@ -302,6 +305,7 @@ typedef struct //uint8_t media_volume; //uint8_t power_on_off_volume; uint8_t white_list_switch; + uint8_t timing_location_switch; uint8_t dial_pad_switch; uint8_t low_battery_switch; uint8_t fall_down_switch; diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/alarm/alarm_set.c b/2.sdk/sdk/gui/lv_watch/lv_apps/alarm/alarm_set.c index bc1c3404..cbe443b7 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/alarm/alarm_set.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/alarm/alarm_set.c @@ -80,12 +80,9 @@ void alarm_create_event_cb(lv_obj_t * btn, lv_event_t e) if(LV_EVENT_CLICKED == e) { - alarm_list_create(NULL); //mmi_ui_falldown(); - //mmi_protocol_action_take_on(); - } } diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/dial/dial.c b/2.sdk/sdk/gui/lv_watch/lv_apps/dial/dial.c index 4b2b5768..c826b5ac 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/dial/dial.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/dial/dial.c @@ -98,7 +98,8 @@ static void dial_update_display(lv_obj_t * clock_cont) #else dial_clean_canvas(false); uint8_t i = 0; - for(i = ELEMENT_TYPE_BLOOD_OXYGEN; i > ELEMENT_TYPE_INVILID; i--) { + //for(i = ELEMENT_TYPE_BLOOD_OXYGEN; i > ELEMENT_TYPE_INVILID; i--) { + for(i = ELEMENT_TYPE_MAX - 2; i > ELEMENT_TYPE_INVILID; i--) { dial_update_element(watch_dial, i); } diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode.h b/2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode.h index a05d37d0..08848e42 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode.h +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode.h @@ -254,6 +254,7 @@ void camera_preview_test_stop(void); #ifdef __MMI_ZHSX_SUPPORT__ +bool mmi_watch_is_in_factory_mode(void); void mmi_watch_reset(lv_obj_t * activity_obj); #endif diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode_main.c b/2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode_main.c index f8500864..656fb5ce 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode_main.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode_main.c @@ -110,6 +110,11 @@ const struct { //#endif }; + +#ifdef __MMI_ZHSX_SUPPORT__ +static bool s_is_in_factory_mode = false; +#endif + /********************** * MACROS **********************/ @@ -201,6 +206,10 @@ lv_obj_t * factorymode_main_create(lv_obj_t * activity_obj) lv_obj_set_click(list, true); +#ifdef __MMI_ZHSX_SUPPORT__ + s_is_in_factory_mode = true; +#endif + return obj; } @@ -354,8 +363,20 @@ static void factorymode_main_prepare_destory(lv_obj_t * activity_obj) lv_watch_png_cache_all_free(); watch_set_suspend_enable(true, ACT_ID_FACTORY_MODE_MAIN, 0); watch_set_suspend_enable(true, ACT_ID_FACTORY_MODE_TEST, 0); + +#ifdef __MMI_ZHSX_SUPPORT__ + s_is_in_factory_mode = false; +#endif } +#ifdef __MMI_ZHSX_SUPPORT__ +bool mmi_watch_is_in_factory_mode(void) +{ + printf("[@CHENG_DEBUG][%s][%d]:%d\n", __FUNCTION__, __LINE__, (s_is_in_factory_mode ? 1 : 0)); + return s_is_in_factory_mode; +} +#endif + static void factorymode_autotest_create_btn_event_cb(lv_obj_t * btn, lv_event_t e) { if(LV_EVENT_CLICKED == e) diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/launcher/launcher.c b/2.sdk/sdk/gui/lv_watch/lv_apps/launcher/launcher.c index f17cf4f7..bf90e417 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/launcher/launcher.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/launcher/launcher.c @@ -847,8 +847,10 @@ static lv_obj_t * sport_create(lv_obj_t * activity_obj) { static lv_point_t pu_valid_pos[] = { #if USE_LV_WATCH_BODYINFO != 0 +#ifndef __MMI_PEDOMETER_STEP_AND_GOAL_STYLE__ {0, 0}, #endif +#endif #if USE_LV_WATCH_PEDOMETER != 0 {1, 0}, #endif @@ -890,11 +892,13 @@ static lv_obj_t * sport_create(lv_obj_t * activity_obj) //lv_obj_t * tab; #if USE_LV_WATCH_BODYINFO != 0 +#ifndef __MMI_PEDOMETER_STEP_AND_GOAL_STYLE__ bodyinfo_create(tileview, 0); //tab = bodyinfo_create(tileview, 0); //LV_ASSERT_MEM(tab); //if(tab == NULL) return NULL; #endif +#endif #if USE_LV_WATCH_PEDOMETER != 0 pedometer_create(tileview, 1); diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/lowbattery/lowbattery.c b/2.sdk/sdk/gui/lv_watch/lv_apps/lowbattery/lowbattery.c index 3afaef59..7cc12603 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/lowbattery/lowbattery.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/lowbattery/lowbattery.c @@ -52,6 +52,108 @@ lv_res_t lowbattery_create_btn_action(lv_obj_t * btn) return LV_RES_OK; } +#ifdef __MMI_ZHSX_SUPPORT__ + +#define MMI_LOW_BATTERY_SCREEN_DESTROY (0) +#define MMI_LOW_BATTERY_SCREEN_CREATE (1) +#define MMI_LOW_BATTERY_SCREEN_UPDATE (2) +#define MMI_LOW_BATTERY_POWER_OFF (3) + +static bool s_low_battery_upload_flag = true; + +void mmi_low_battery_screen_clean(void) +{ + s_low_battery_upload_flag = true; + lowbattery_destory(); +} + +void mmi_ui_msg_update_low_battery_screen(uint32_t flag) +{ + if(MMI_LOW_BATTERY_SCREEN_CREATE == flag) // create + { + lowbattery_create_btn_action(NULL); + #if USE_LV_WATCH_AUDIO_PLAYER != 0 + audio_player_lowbattery_process(); + #endif + voip_activity_destroy_req(); + } + else if(MMI_LOW_BATTERY_SCREEN_UPDATE == flag) // update time + { + lv_lowbattery_ext_t * ext = lv_obj_get_ext_attr(lv_watch_get_activity_obj(ACT_ID_LOWBATTERY)); + hal_rtc_t tm; + Hal_Rtc_Gettime(&tm);// get time + char * rtctime = lv_mem_alloc(6); + memset(rtctime, 0, 6); + snprintf(rtctime, 6, "%02d:%02d", tm.tm_hour, tm.tm_min); + lv_label_set_text(ext->timelabel, rtctime); //refresh the label + lv_mem_free(rtctime); + } + else if(MMI_LOW_BATTERY_POWER_OFF == flag) // power off + { + shutdown_confirm_btn_action(NULL, LV_EVENT_CLICKED); + } + else // destroy + { + lowbattery_destory(); + } +} + +void mmi_low_battery_check_mission(void) +{ + if(HAL_CHG_CONNECTED == Hal_Charger_Get_Status()) + { + s_low_battery_upload_flag = true; + + if(NULL != lv_watch_get_activity_obj(ACT_ID_LOWBATTERY)) + { + printf("[@CHENG_DEBUG]: power charging start and exit low battery mode\n"); + mmi_ui_msg_action_low_battery(MMI_LOW_BATTERY_SCREEN_DESTROY); + } + } + else + { + if(Hal_Battery_Get_Status() < ENTER_LOWBATTERY_MODE_LEVEL) + { + if(true == s_low_battery_upload_flag) + { + mmi_protocol_action_low_battery(); + s_low_battery_upload_flag = false; + } + + if((NULL == lv_watch_get_activity_obj(ACT_ID_LOWBATTERY)) + && (NULL == lv_watch_get_activity_obj(ACT_ID_PHONE)) + ) + { + printf("enter low battery mode\n"); + mmi_ui_msg_action_low_battery(MMI_LOW_BATTERY_SCREEN_CREATE); + } + else + { + // update time + if(NULL == lv_watch_get_activity_obj(ACT_ID_PHONE)) + { + mmi_ui_msg_action_low_battery(MMI_LOW_BATTERY_SCREEN_UPDATE); + } + if(Hal_Battery_Get_Status() == AUTO_POWER_OFF_LEVEL) + { + printf("power off in low battery mode\n"); + mmi_ui_msg_action_low_battery(MMI_LOW_BATTERY_POWER_OFF); + } + } + } + else + { + s_low_battery_upload_flag = true; + + if(NULL != lv_watch_get_activity_obj(ACT_ID_LOWBATTERY)) + { + printf("[@CHENG_DEBUG][%s][%d]: exit low battery mode\n", __FUNCTION__, __LINE__); + mmi_ui_msg_action_low_battery(MMI_LOW_BATTERY_SCREEN_DESTROY); + } + } + } +} +#else void lowbattery_task(lv_task_t * task) { if(HAL_CHG_CONNECTED == Hal_Charger_Get_Status()) { @@ -108,6 +210,7 @@ void lowbattery_task(lv_task_t * task) } } } +#endif /********************** * STATIC FUNCTIONS @@ -125,6 +228,71 @@ static lv_obj_t * lowbattery_create(lv_obj_t * activity_obj) if(activity_obj == NULL) return NULL; } +#ifdef __MMI_ZHSX_SUPPORT__ + + lv_obj_t * obj = lv_cont_create(activity_obj, NULL); + LV_ASSERT_MEM(obj); + if(obj == NULL) return NULL; + lv_obj_add_style(obj, LV_OBJ_PART_MAIN, &lv_watch_style_transp); + lv_obj_set_style_local_bg_color(obj,LV_OBJ_PART_MAIN,LV_STATE_DEFAULT,LV_COLOR_BLACK); + lv_obj_set_style_local_bg_opa(obj,LV_OBJ_PART_MAIN,LV_STATE_DEFAULT,LV_OPA_COVER); + lv_obj_set_size(obj, LV_HOR_RES, LV_VER_RES); + lv_obj_set_drag(obj, false); + + lv_obj_t * content = lv_cont_create(obj, NULL); + if(content == NULL) return NULL; + lv_obj_add_style(content, LV_OBJ_PART_MAIN, &lv_watch_style_transp); + lv_cont_set_fit2(content, LV_FIT_NONE, LV_FIT_TIGHT); + lv_obj_set_width(content, LV_HOR_RES); + lv_obj_set_drag(content, false); + lv_cont_set_layout(content, LV_LAYOUT_COLUMN_MID); + + lv_obj_t * label = lv_label_create(content, NULL); + lv_obj_set_base_dir(label, LV_BIDI_DIR_LTR); +#ifdef USE_LV_WATCH_UI_466_466 + lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font26_gray); +#else + lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font20_gray); +#endif + hal_rtc_t tm; + Hal_Rtc_Gettime(&tm); // get time + char * rtctime = lv_mem_alloc(6); + memset(rtctime, 0, 6); + snprintf(rtctime, 6, "%02d:%02d", tm.tm_hour, tm.tm_min); + lv_label_set_text(label, rtctime); + lv_mem_free(rtctime); + lv_lowbattery_ext_t * ext = + lv_obj_allocate_ext_attr(activity_obj, sizeof(lv_lowbattery_ext_t)); + LV_ASSERT_MEM(ext); + if(ext == NULL) return NULL; + ext->timelabel = label;// store the label obj + + lv_obj_t * img = lv_img_create(content, NULL); + lv_img_set_src(img, ICON_LOWBATTERY_CHARGE); + //lv_obj_set_size(img, 52, 83); + + label = lv_label_create(content, NULL); + lv_obj_set_base_dir(label, LV_BIDI_DIR_LTR); +#ifdef USE_LV_WATCH_UI_466_466 + lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font26_gray); +#else + lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font20_gray); +#endif + lv_label_set_long_mode(label, LV_LABEL_LONG_BREAK); + lv_obj_set_size(label, LV_HOR_RES * 3 / 4/*200*/, 45); + lv_label_set_text_id(label, WATCH_TEXT_ID_LOWBATTERY); + lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); + + lv_obj_t * btn; + btn = lv_imgbtn_create(content, NULL); + lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_LOWBATTERY_DIAL); + lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_LOWBATTERY_DIAL); + lv_obj_set_event_cb(btn, phonebook_create_btn_event_cb); + + lv_obj_align(content, NULL, LV_ALIGN_CENTER, 0, 0); + +#else + lv_obj_t * content = lv_cont_create(activity_obj, NULL); LV_ASSERT_MEM(content); if(content == NULL) return NULL; @@ -169,6 +337,8 @@ static lv_obj_t * lowbattery_create(lv_obj_t * activity_obj) lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_LOWBATTERY_DIAL); lv_obj_set_event_cb(btn, phonebook_create_btn_event_cb); +#endif + return activity_obj; } diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/lowbattery/lowbattery.h b/2.sdk/sdk/gui/lv_watch/lv_apps/lowbattery/lowbattery.h index 47c290e0..6ac4a601 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/lowbattery/lowbattery.h +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/lowbattery/lowbattery.h @@ -42,7 +42,12 @@ typedef struct * GLOBAL PROTOTYPES **********************/ lv_res_t lowbattery_create_btn_action(lv_obj_t * btn); +#ifdef __MMI_ZHSX_SUPPORT__ +void mmi_ui_msg_update_low_battery_screen(uint32_t flag); +void mmi_low_battery_check_mission(void); +#else void lowbattery_task(lv_task_t * task); +#endif /********************** * MACROS diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/jrtc_client.c b/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/jrtc_client.c deleted file mode 100644 index bb204fa0..00000000 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/jrtc_client.c +++ /dev/null @@ -1,332 +0,0 @@ -/** - * @file jrtc_client.c - * - */ - -/********************* - * INCLUDES - *********************/ -#include "lv_watch.h" - -#if USE_LV_WATCH_VIDEOCALL != 0 -#include -/********************* -* DEFINES -*********************/ -#define VIDEO_CALL_CFG_FILE "C:/video_call_cfg" - -/********************** -* TYPEDEFS -**********************/ -typedef enum jrtc_state voip_jrtc_state_t; -typedef enum jrtc_error voip_jrtc_error_t; -typedef struct jrtc_image_t voip_jrtc_image_t; - -typedef struct { - void /*lv_task_t*/ *state_task; - voip_jrtc_image_t txframe; - voip_jrtc_image_t rxframe; - void* jrtc_ptr; - TIMER_ID closed_timer_id; - uint8_t closing; -} voip_jrtc_t; - -typedef struct { - uint8_t valid; - char appkey[40]; - char key[40]; - char uid[40]; - char roomid[40]; - char srvURL[40]; -} voip_jrtc_cfg_t; - -/********************** -* STATIC VARIABLES -**********************/ -extern voip_phone_call_params_t voipcall_params; -static voip_jrtc_t voip_jrtc; -static voip_jrtc_cfg_t voip_cfg; - -/********************** -* STATIC PROTOTYPES -**********************/ -static void voip_jrtc_config(void); -static int8_t voip_jrtc_open(const char* roomid, MODEM_VIDEO_CALL_TYPE calltype); -static uint8_t voip_jrtc_get_image(void * preview_buf); -static void voip_jrtc_on_state(lv_task_t * task); -static void voip_jrtc_cleanup(void); -static void voip_jrtc_timeout_cb(void * para); - -/********************** - * FUNCTIONS DECLARATION - ***********************/ -extern UINT32 OsaGetTicks(void *pForFutureUse); - -/********************** - * GLOBAL FUNCTIONS - ***********************/ -void voip_call_init(void) -{ - Hal_Mem_Set(&voip_jrtc, 0, sizeof(voip_jrtc_t)); - - voip_jrtc_config(); -} - -int8_t voip_call_dial_req(MODEM_VIDEO_CALL_TYPE calltype, char * pContactUri) -{ - printf("%s: calltype=%d, number=%s\n", __FUNCTION__, calltype, pContactUri); - int8_t ret = -1; - -#if VOIP_JUPHOON_TEST - voip_jrtc_config(); - - if (NULL == voip_jrtc.jrtc_ptr) { - ret = voip_jrtc_open(voip_cfg.roomid, calltype); - } - -#else - if (NULL == voip_jrtc.jrtc_ptr) { - ret = voip_jrtc_open(pContactUri, calltype); - } -#endif - - Hal_Mem_Free(pContactUri); - return ret; -} - -void voip_call_hangup_req(BOOL bye) -{ - printf("%s: jrtc_ptr=%p, bye=%d\n", __FUNCTION__, voip_jrtc.jrtc_ptr, bye); - - if (NULL != voip_jrtc.jrtc_ptr) { - voip_jrtc_error_t err; - if(TRUE == bye) { - err = JRTC_EBYE; - } else { - err = JRTC_EAUDIOCALL; - } - - jrtc_close(voip_jrtc.jrtc_ptr, err); - voip_jrtc.closing = 1; - } else { - watch_voip_call_response_no_carrier(0, 0); - } -} - -int8_t voip_call_answer_req(void) -{ - printf("%s: jrtc_ptr=%p\n", __FUNCTION__, voip_jrtc.jrtc_ptr); - int8_t ret = -1; - - if (NULL == voip_jrtc.jrtc_ptr) { - ret = voip_jrtc_open(voipcall_params.number, voipcall_params.voip_call_type); - } - return ret; -} - -void voip_call_reject_req(BOOL bye) -{ - printf("%s: jrtc_ptr=%p, bye=%d\n", __FUNCTION__, voip_jrtc.jrtc_ptr, bye); - - if (NULL != voip_jrtc.jrtc_ptr) { - voip_jrtc_error_t err; - if(TRUE == bye) { - err = JRTC_EBYE; - } else { - err = JRTC_EAUDIOCALL; - } - - jrtc_close(voip_jrtc.jrtc_ptr, err); - voip_jrtc.closing = 1; - } else { - watch_voip_call_response_no_carrier(0, 0); - } -} - -/********************** -* STATIC FUNCTIONS -**********************/ -static void voip_jrtc_config(void) -{ - lv_fs_file_t file; - uint32_t size; - char *buf = NULL; - - printf("%s: voip_cfg.valid=%d\n", __FUNCTION__, voip_cfg.valid); - - if(1 == voip_cfg.valid) { - return; - } - - Hal_Mem_Set(&voip_cfg, 0, sizeof(voip_jrtc_cfg_t)); - - uint8_t res = lv_fs_open(&file, VIDEO_CALL_CFG_FILE, LV_FS_MODE_RD); - if(LV_FS_RES_OK == res) { - lv_fs_size(&file, &size); - buf = lv_mem_alloc(size + 1); - memset(buf, 0, size + 1); - lv_fs_read(&file, buf, size, NULL); - //printf("%s: %s\n", __FUNCTION__, buf); - - sscanf(buf, "appkey=%s key=%s uid=%s roomid=%s srvURL=%s", - voip_cfg.appkey, - voip_cfg.key, - voip_cfg.uid, - voip_cfg.roomid, - voip_cfg.srvURL); - - voip_cfg.valid = 1; - - lv_mem_free(buf); - lv_fs_close(&file); - } else { - printf("%s: lv_fs_open fail, res=%d\n", __FUNCTION__, res); - - strncpy(voip_cfg.appkey, "1234567890abcd1234567890", 40); - strncpy(voip_cfg.key, "abc123def4567890", 40); - strncpy(voip_cfg.uid, "user1", 40); - strncpy(voip_cfg.roomid, "user2", 40); - strncpy(voip_cfg.srvURL, "http:example.com:1234;1.1.1.1:1234", 40); - } - - jrtc_config(voip_cfg.appkey, voip_cfg.uid, voip_cfg.srvURL, voip_cfg.key); -} - -static int8_t voip_jrtc_open(const char* roomid, MODEM_VIDEO_CALL_TYPE calltype) -{ - printf("%s: roomid=%s, calltype=%d\n", __FUNCTION__, roomid, calltype); - Hal_Mem_Set(&voip_jrtc, 0, sizeof(voip_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 = 10; - voip_jrtc.rxframe.kbps = voip_jrtc.txframe.kbps = 240; - - voip_jrtc.jrtc_ptr= jrtc_open(roomid, 0, &voip_jrtc.rxframe, &voip_jrtc.txframe); - } else { - voip_jrtc.jrtc_ptr= jrtc_open(roomid, 0, NULL, NULL); - } - - if (!voip_jrtc.jrtc_ptr) { - printf("%s: jrtc_open fail\n", __FUNCTION__); - voip_jrtc_cleanup(); - return -1; - } - jrtc_activate(voip_jrtc.jrtc_ptr, JRTC_AUDIO|JRTC_CAMERA); - - voip_jrtc.state_task = lv_task_create(voip_jrtc_on_state, VIDEO_RENDER_PERIOD, LV_TASK_PRIO_HIGH, NULL); - return 0; -} - -static uint8_t voip_jrtc_get_image(void * preview_buf) -{ - uint8_t ret = 0; - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); - LV_ASSERT_MEM(ext); - - voip_jrtc_image_t *frame = NULL; - if(ext->local_remote_switch_flag == VOIP_REMOTE_SWITCH_REMOTE) { - frame = &voip_jrtc.rxframe; - } else { - frame = &voip_jrtc.txframe; - } - - if (frame->put != frame->get) { -#if (ENABLE_VIDEO_SCALE == 0) - yuv420_2_rgb565(frame->width, frame->height, frame->data, preview_buf, frame->format); -#else - Hal_Yuv420_Render(frame->width, frame->height, canvas_width, canvas_heigh, frame->data, preview_buf, frame->format); -#endif - - frame->get = frame->put; - ret = 1; - voip_fps_check(frame->fps); - } - - return ret; -} - -static void voip_jrtc_on_state(lv_task_t * task) -{ - voip_jrtc_error_t err; - static int8_t oldstate = -1; - voip_jrtc_state_t state = jrtc_state(voip_jrtc.jrtc_ptr); - - if(state != oldstate) { - printf("%s: state=%d\n", __FUNCTION__, state); - } - - switch(state) { - case JRTC_CLOSED: - if((NULL != voip_jrtc.jrtc_ptr) && (NULL == voip_jrtc.closed_timer_id)) { - err = jrtc_error(voip_jrtc.jrtc_ptr); - printf("%s: err=%d\n", __FUNCTION__, err); - - if(!voip_jrtc.closing) { - jrtc_close(voip_jrtc.jrtc_ptr, JRTC_ENIL); - voip_jrtc.closing = 1; - } - - printf("%s: start jrtc_closed_timer\n", __FUNCTION__); - voip_jrtc.closed_timer_id= Hal_Timer_Start(100, voip_jrtc_timeout_cb, NULL, 0); - } - - if(MMI_VOIP_CALL_STATE_NULL != voipcall_params.state) { - watch_voip_call_response_no_carrier(0, 1); - } - break; - - case JRTC_LEAVING: - break; - - case JRTC_OPENED: - break; - - case JRTC_JOINING: - break; - - case JRTC_JOINED: - break; - - case JRTC_TALKING: - if(MMI_VOIP_CALL_STATE_ACTIVE != voipcall_params.state) { - watch_voip_call_response_connect(0); - } - - /* Get image */ - if (MODEM_VIDEO_CALL_TYPE_VIDEO == voipcall_params.voip_call_type) { - void *buf = voip_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); - } - } - break; - - default: - break; - } - - oldstate = state; -} - -static void voip_jrtc_cleanup(void) -{ - printf("%s\n", __FUNCTION__); - - if(NULL != voip_jrtc.state_task) { - printf("%s: delete state_task\n", __FUNCTION__); - lv_task_del(voip_jrtc.state_task); - } - - Hal_Mem_Set(&voip_jrtc, 0, sizeof(voip_jrtc_t)); -} - -static void voip_jrtc_timeout_cb(void * para) -{ - printf("%s\n", __FUNCTION__); - - voip_jrtc_cleanup(); -} - -#endif // #if USE_LV_WATCH_VIDEOCALL != 0 diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/video_call.c b/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/video_call.c deleted file mode 100644 index 33bd51c7..00000000 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/video_call.c +++ /dev/null @@ -1,2530 +0,0 @@ -/** - * @file videocall.c - * - */ - -/********************* -* INCLUDES -*********************/ -#include "lv_watch.h" - -#if USE_LV_WATCH_VIDEOCALL != 0 -#include "video_call.h" -#include -#include -/********************* -* DEFINES -*********************/ - -/********************** -* TYPEDEFS -**********************/ - -/********************** -* STATIC VARIABLES -**********************/ -static lv_signal_cb_t ancestor_signal; -#if VIDEO_SIGNAL_CHECK -static lv_task_t * signal_check_task = NULL; -#endif -static lv_task_t * rat_check_task = NULL; - -/********************** -* Global Variable -**********************/ -voip_phone_call_params_t voipcall_params; -lv_color_t g_cbuf[canvas_width * canvas_heigh + 8] __attribute__((aligned(8))); - -/********************** -* STATIC PROTOTYPES -**********************/ -static lv_obj_t * voip_phonebook_create(lv_obj_t * activity_obj); -static lv_obj_t * voip_phone_cont_create(lv_obj_t * par, lv_align_t cont_layout, lv_style_t * style, lv_coord_t width); -static lv_obj_t * voip_ring_off_content_create(lv_obj_t * par); -static void voip_phone_dialing(lv_obj_t * content); -static void voip_phone_ring(lv_obj_t * content); -static void voip_phone_connected(lv_obj_t * content); -static void voip_phone_left_slide_callback(lv_obj_t * obj); -static void voip_phone_right_slide_callback(lv_obj_t * obj); -static void voip_phone_down_slide_callback(lv_obj_t * obj); -static void voip_dialing_animation(lv_obj_t * par); -static void voip_ring_animation(lv_obj_t * par); -static void voip_connected_animation(lv_obj_t * obj); -static void voip_volume_btn_action(lv_obj_t * obj, lv_event_t e); -static void voip_slider_action(lv_obj_t * slider, lv_event_t e); -static void voip_ring_hook_action(lv_obj_t * btn, lv_event_t e); -static void voip_phone_ring_off_timeout_cb(void * para); -static void voip_phone_callreq_timeout_cb(void * para); -static void voip_phone_cleanup(void); -static void voip_phone_obj_hide_anim_end(lv_anim_t * anim); -static void voip_anim_fp_dialing_ring(lv_obj_t * obj, int32_t x); -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 voip_phonebook_contact_t * voip_phonebook_get_contact_info(char * number); -static char * voip_phonebook_get_phone_number(uint8_t id); /*[0, NV_WATCH_MAX_CONTACT_NUM - 1]*/ -static void voip_phone_voice_call_req(char * number, MODEM_VIDEO_CALL_TYPE voip_call_type); -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 bool voip_check_mo_permission(void); -static void voip_set_volume_when_slider_act(void); -static lv_res_t voip_call_fail_ind(lv_obj_t * obj); -static void voip_call_fail_message_cleanup(lv_anim_t * anim); -static void voip_local_remote_switch_action(lv_obj_t * btn, lv_event_t e); -static void canvas_button_hidden_event_cb(lv_obj_t * obj, lv_event_t e); -static void video_call_add_element(lv_obj_t * element); -static void voip_signal_check_start(void * ext); -static void voip_signal_check_stop(void); -static bool is_rat_gsm(void); -static void voip_rat_check_start(void); -static void voip_rat_check_stop(void); -void voip_audio_ctrl_callback(AUDIO_CTRL_PRIORITY priority); - -#if VOIP_PHONE_TEST -static void voip_phone_connected_cb(void * para); -static void watch_voip_call_response_originating(int32_t index); -#endif - -#if VOIP_PHONEBOOK_TEST != 0 -static void voip_phonebook_write_nvm_for_test(void); -static void voip_phonebook_clear_nvm_for_test(void); -#endif - -/********************** - * FUNCTIONS DECLARATION - ***********************/ - -/********************** - * GLOBAL FUNCTIONS - ***********************/ -void videocallmain_create(lv_obj_t * btn, lv_event_t e) -{ - if(LV_EVENT_CLICKED == e) { - lv_watch_png_cache_all_free(); - voip_phonebook_create(NULL); - } -} - -static nv_watch_phonebook_t * voip_phonebook_read_nvm(void) -{ - // printf("%s %d\n", __FUNCTION__, __LINE__); - uint32_t length = sizeof(nv_watch_phonebook_t); - - nv_watch_phonebook_t * nvm = (nv_watch_phonebook_t *)lv_mem_alloc(length); - - if(length != UI_NV_Read_Req(NV_SECTION_UI_PHONEBOOK, 0, length, (uint8_t *)nvm)) { - printf("read nvm error in voip_phonebook_read_nvm\n"); - lv_mem_free(nvm); - return(NULL); - } - return(nvm); -} - -static void voip_phonebook_get_img_src(uint8_t portrait_id, const void ** img_src, const void ** img_src_small) -{ - // printf("%s %d\n", __FUNCTION__, __LINE__); - switch(portrait_id) { - case WATCH_PORTRAIT_ID_FATHER: - if(img_src) { - *img_src = ICON_FATHER; - } - if(img_src_small) { - *img_src_small = ICON_FATHER_SMALL; - } - break; - - case WATCH_PORTRAIT_ID_MOTHER: - if(img_src) { - *img_src = ICON_MOTHER; - } - if(img_src_small) { - *img_src_small = ICON_MOTHER_SMALL; - } - break; - - case WATCH_PORTRAIT_ID_PATERNAL_GRADFATHER: - if(img_src) { - *img_src = ICON_PATERNAL_GRADFATHER; - } - if(img_src_small) { - *img_src_small = ICON_PATERNAL_GRADFATHER_SMALL; - } - break; - - case WATCH_PORTRAIT_ID_PATERNAL_GRADMOTHER: - if(img_src) { - *img_src = ICON_PATERNAL_GRADMOTHER; - } - if(img_src_small) { - *img_src_small = ICON_PATERNAL_GRADMOTHER_SMALL; - } - break; - - case WATCH_PORTRAIT_ID_MATERNAL_GRADFATHER: - if(img_src) { - *img_src = ICON_MATERNAL_GRADFATHER; - } - if(img_src_small) { - *img_src_small = ICON_MATERNAL_GRADFATHER_SMALL; - } - break; - - case WATCH_PORTRAIT_ID_MATERNAL_GRADMOTHER: - if(img_src) { - *img_src = ICON_MATERNAL_GRADMOTHER; - } - if(img_src_small) { - *img_src_small = ICON_MATERNAL_GRADMOTHER_SMALL; - } - break; - - case WATCH_PORTRAIT_ID_UNCLE: - if(img_src) { - *img_src = ICON_UNCLE; - } - if(img_src_small) { - *img_src_small = ICON_UNCLE_SMALL; - } - break; - - case WATCH_PORTRAIT_ID_AUNT: - if(img_src) { - *img_src = ICON_AUNT; - } - if(img_src_small) { - *img_src_small = ICON_AUNT_SMALL; - } - break; - - case WATCH_PORTRAIT_ID_BROTHER: - case WATCH_PORTRAIT_ID_BOY: - if(img_src) { - *img_src = ICON_BOY; - } - if(img_src_small) { - *img_src_small = ICON_BOY_SMALL; - } - break; - - case WATCH_PORTRAIT_ID_SISTER: - case WATCH_PORTRAIT_ID_GIRL: - if(img_src) { - *img_src = ICON_GIRL; - } - if(img_src_small) { - *img_src_small = ICON_GIRL_SMALL; - } - break; - - case WATCH_PORTRAIT_ID_FAMILY: - case WATCH_PORTRAIT_ID_OTHERS: - if(img_src) { - *img_src = ICON_FAMILY; - } - if(img_src_small) { - *img_src_small = ICON_FAMILY_SMALL; - } - break; - - default: - printf("warning! no icon corresponding to portrait_id %d", portrait_id); - break; - } /* switch */ -} /* voip_phonebook_get_img_src */ - -voip_phonebook_contact_t * voip_phonebook_get_contact_info(char * number) -{ - printf("%s: number %s\n", __FUNCTION__, number); - if(NULL == number) { - printf("error, number is NULL in voip_phonebook_get_contact_info\n"); - return(NULL); - } - - nv_watch_phonebook_t * nv_contact_list = voip_phonebook_read_nvm(); - voip_phonebook_contact_t * contact = NULL; - - for(uint8_t i = 0; i < NV_WATCH_MAX_CONTACT_NUM; i++) { - if('\0' == nv_contact_list->info[i].number[0]) { - break; - } - - if(0 == strncmp(number, nv_contact_list->info[i].number, strlen(number))) { - contact = (voip_phonebook_contact_t *)lv_mem_alloc(sizeof(voip_phonebook_contact_t)); - memcpy(contact->contact_name, nv_contact_list->info[i].name, VOIP_PHONEBOOK_CONTACTS_MAX_NAME_LEN); - memcpy(contact->contact_number, number, strlen(number) + 1); - contact->contact_type = nv_contact_list->info[i].contact_type; - voip_phonebook_get_img_src(nv_contact_list->info[i].portrait_id, &contact->img_src, &contact->img_src_small); - printf("%s: find contact %s %s\n", __FUNCTION__, contact->contact_name, contact->contact_number); - break; - } - } - - lv_mem_free(number); - lv_mem_free(nv_contact_list); - - return(contact); -} - -char * voip_phonebook_get_phone_number(uint8_t id) -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - if((NV_WATCH_MAX_CONTACT_NUM - 1) < id) { - return(NULL); - } - - uint32_t length = sizeof(nv_watch_phonebook_info_t); - nv_watch_phonebook_info_t * info = (nv_watch_phonebook_info_t *)lv_mem_alloc(length); - uint32_t offset = id * length; - if(length != UI_NV_Read_Req(NV_SECTION_UI_PHONEBOOK, offset, length, (uint8_t *)info)) { - printf("read nvm error in voip_phonebook_get_phone_number\n"); - lv_mem_free(info); - return(NULL); - } - - uint8_t name_length = strlen(info->number); - char * number = NULL; - if(0 != name_length) { - number = (char *)lv_mem_alloc(name_length + 1); - memcpy(number, info->number, (name_length + 1)); - printf("%s: number %s in voipphonebook %d\n", __FUNCTION__, number, id); - } - lv_mem_free(info); - - return(number); -} - -/********************** -* STATIC FUNCTIONS -**********************/ -void voip_audio_ctrl_callback(AUDIO_CTRL_PRIORITY priority) -{ - printf("%s,priority is %d\n", __FUNCTION__,priority); - if(AUDIO_CTRL_PRIORITY_2 > priority) - { - lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_VOIPPHONE); - if(activity_obj == NULL) return; - voip_activity_destroy_req(); - Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_2); - } -} - -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 void voip_phonebook_prepare_destory(lv_obj_t * activity_obj) -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - lv_watch_png_cache_all_free(); - - if(1 == lv_obj_get_user_data(activity_obj).user_num) { - lv_voip_phonebook_obj_ext_t * ext = voip_phonebook_get_ext(); - if(ext == NULL) { - return; - } - _lv_ll_clear(&ext->contact_list); - } - -#if VOIP_PHONEBOOK_TEST != 0 - voip_phonebook_clear_nvm_for_test(); -#endif -} - -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); -} - -static lv_obj_t * voip_phonebook_add(lv_obj_t * page) -{ - // printf("%s %d\n", __FUNCTION__, __LINE__); - - lv_voip_phonebook_obj_ext_t * ext = voip_phonebook_get_ext(); - voip_phonebook_t * contact = _lv_ll_get_head(&ext->contact_list); - const void * img_src; - - voip_phonebook_get_img_src(contact->portrait_id, &img_src, NULL); - - lv_img_header_t img_header; - lv_img_decoder_get_info(img_src, &img_header); - ext->append_width = (lv_obj_get_width(page) - img_header.w - 2 * ext->body_padding_inner) / 2; - voip_append_obj(page); - - while(NULL != contact) { - voip_phonebook_get_img_src(contact->portrait_id, &img_src, NULL); - voipcall_number_add(page, (void *)img_src); - contact = _lv_ll_get_next(&ext->contact_list, contact); - } - - voip_append_obj(page); - - return(page); -} - -static void voip_phonebook_voicecall_btn_action(lv_obj_t * btn, lv_event_t e) -{ - if(LV_EVENT_CLICKED != e) { - return; - } - - printf("%s %d\n", __FUNCTION__, __LINE__); - lv_voip_phonebook_obj_ext_t * ext = voip_phonebook_get_ext(); - uint8_t length = strlen(ext->cur_contact->number) + 1; - char * number = (char *)lv_mem_alloc(length); - - memcpy(number, ext->cur_contact->number, length); - - if(voip_check_mo_permission()) { - voip_phone_voice_call_req(number, MODEM_VIDEO_CALL_TYPE_VOICE); - } else { - voip_call_fail_ind(lv_watch_get_activity_obj(ACT_ID_VOIP_PHONEBOOK)); - } -} - -static void voip_phonebook_voideocall_btn_action(lv_obj_t * btn, lv_event_t e) -{ - if(LV_EVENT_CLICKED != e) { - return; - } - - printf("%s %d\n", __FUNCTION__, __LINE__); - - lv_voip_phonebook_obj_ext_t * ext = voip_phonebook_get_ext(); - uint8_t length = strlen(ext->cur_contact->number) + 1; - char * number = (char *)lv_mem_alloc(length); - memcpy(number, ext->cur_contact->number, length); - - if(voip_check_mo_permission()) { - voip_phone_voice_call_req(number, MODEM_VIDEO_CALL_TYPE_VIDEO); - } else { - voip_call_fail_ind(lv_watch_get_activity_obj(ACT_ID_VOIP_PHONEBOOK)); - } -} - -static void voip_phonebook_add_btn(lv_obj_t * obj, char * phone_name, char * phone_number, lv_event_cb_t voiceaction, lv_event_cb_t videoaction) -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - - lv_obj_t * content = lv_cont_create(obj, NULL); - LV_ASSERT_MEM(content); - if(content == NULL) { - return; - } - printf("voip_phonebook_add_btn width: %d, height: %d\n", lv_obj_get_width(content), lv_obj_get_height(content)); - lv_obj_add_style(content, LV_OBJ_PART_MAIN, &lv_watch_style_transp); - lv_cont_set_fit2(content, LV_FIT_TIGHT, LV_FIT_TIGHT); - lv_cont_set_layout(content, LV_LAYOUT_ROW_BOTTOM); - lv_obj_set_click(content, false); - lv_obj_align(content, obj, LV_ALIGN_CENTER, 0, 40); - - lv_obj_t * voicebtn; - voicebtn = lv_imgbtn_create(content, NULL); - lv_imgbtn_set_src(voicebtn, LV_BTN_STATE_RELEASED, ICON_CALL_PNG); - lv_imgbtn_set_src(voicebtn, LV_BTN_STATE_PRESSED, ICON_CALL_PNG); - lv_obj_align(voicebtn, content, LV_ALIGN_IN_BOTTOM_LEFT, 0, 0); - lv_obj_set_event_cb(voicebtn, voiceaction); - voip_phonebook_add_element(voicebtn); - - lv_obj_t * videobtn; - videobtn = lv_imgbtn_create(content, voicebtn); - lv_obj_align(videobtn, content, LV_ALIGN_IN_BOTTOM_RIGHT, 0, 0); - lv_obj_set_event_cb(videobtn, videoaction); - voip_phonebook_add_element(videobtn); - - lv_voip_phonebook_obj_ext_t * ext = voip_phonebook_get_ext();; - lv_obj_t * label = lv_label_create(obj, NULL); - lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font20); - lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); - lv_label_set_long_mode(label, LV_LABEL_LONG_SROLL_CIRC); - lv_obj_set_width(label, lv_obj_get_width(obj) - 20); - lv_label_set_text(label, phone_name); - if(0 < strlen(phone_number)) { - uint32_t pos = LV_LABEL_POS_LAST; - if(LV_BIDI_DIR_RTL == lv_obj_get_base_dir(label)) { - lv_obj_set_base_dir(label, LV_BIDI_DIR_LTR); - pos = 0; - } - if(0 < strlen(phone_name)) { - lv_label_ins_text(label, pos, " "); - } - lv_label_ins_text(label, pos, phone_number); - } - lv_obj_align(label, obj, LV_ALIGN_IN_BOTTOM_MID, 0, -20); - ext->label_phone_contact = label; -} /* voip_phonebook_add_btn */ - -static void phonebook_no_contacts_or_network_create(lv_obj_t * obj) -{ - printf("%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_font20); - 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_OR_NETWORK); - lv_obj_align(label, obj, LV_ALIGN_CENTER, 0, 0); -} - -static void voip_phonebook_add_contact(lv_obj_t * obj) -{ - // printf("%s %d\n", __FUNCTION__, __LINE__); - - lv_voip_phonebook_obj_ext_t * ext = lv_obj_get_ext_attr(obj); - - lv_obj_t * page = lv_page_create(obj, NULL); - LV_ASSERT_MEM(page); - if(page == NULL) { - return; - } - lv_obj_set_size(page, lv_obj_get_width(obj), lv_obj_get_height(obj)); - lv_page_set_scrollbar_mode(page, LV_SCROLLBAR_MODE_OFF); - - lv_obj_add_style(page, LV_PAGE_PART_BG, &lv_style_transp_tight); - lv_obj_add_style(page, LV_PAGE_PART_SCROLLABLE, &lv_style_transp_tight); - lv_obj_add_style(page, LV_PAGE_PART_SCROLLBAR, &lv_style_transp_tight); - lv_page_set_scrollable_fit(page, LV_FIT_TIGHT); - - ext->page_scrl = lv_page_get_scrl(page); - ancestor_signal = lv_obj_get_signal_cb(ext->page_scrl); - lv_obj_set_signal_cb(ext->page_scrl, voip_phonebook_page_scrl_signal); - /*the lv_page disable use acceleration, so sinal LV_SIGNAL_DRAG_END is same as LV_SIGNAL_RELEASED */ - lv_obj_set_drag_throw(ext->page_scrl, false); - - lv_page_set_scrl_layout(page, LV_LAYOUT_ROW_MID); - voip_phonebook_add(page); - voip_phonebook_add_element(ext->page_scrl); - if(LV_BIDI_DIR_RTL == lv_obj_get_base_dir(ext->page_scrl)) { - uint8_t child_num = 0; - lv_obj_t * child = lv_obj_get_child_back(ext->page_scrl, NULL); - while(child) { - child_num++; - child = lv_obj_get_child_back(ext->page_scrl, child); - } - if(1 < child_num) { - ext->cur_img_id = child_num - 1; - } - } - lv_obj_set_x(ext->page_scrl, ((-1) * ext->move_width * ext->cur_img_id)); - - voip_phonebook_add_btn(obj, ext->cur_contact->name, ext->cur_contact->number, voip_phonebook_voicecall_btn_action, voip_phonebook_voideocall_btn_action); -} - -static void voip_phonebook_contacts_create(lv_obj_t * obj, lv_ll_t * contact_list) -{ - // printf("%s %d\n", __FUNCTION__, __LINE__); - - /*when pressing, y is not updated. When press lost */ - lv_watch_obj_set_anim_mode(obj, LV_WATCH_ANIM_VER_UP_HIDE); - lv_watch_obj_ext_t * watch_obj_ext = lv_obj_allocate_ext_attr(obj, sizeof(lv_watch_obj_ext_t)); - if(watch_obj_ext == NULL) { - return; - } - - /*Allocate the object type specific extended data*/ - lv_voip_phonebook_obj_ext_t * ext = lv_obj_allocate_ext_attr(obj, sizeof(lv_voip_phonebook_obj_ext_t)); - /*ext realloc based on watch_obj_ext, do not memeset it*/ - LV_ASSERT_MEM(ext); - if(ext == NULL) { - return; - } - ext->contact_list.n_size = contact_list->n_size; - ext->contact_list.head = contact_list->head; - ext->contact_list.tail = contact_list->tail; - ext->body_padding_inner = 1; - ext->append_width = 50; - ext->cur_img_id = 0; - ext->cur_contact = _lv_ll_get_head(&ext->contact_list); - ext->label_phone_contact = NULL; - ext->move_width = ext->body_padding_inner + ext->append_width + (lv_obj_get_width(obj) / 2 - ext->append_width); // 130; - - voip_phonebook_add_contact(obj); -} - -#if VOIP_PHONEBOOK_TEST != 0 - -static void voip_phonebook_write_nvm(nv_watch_phonebook_t * nvm) -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - if(NULL == nvm) { - return; - } - - uint32_t length = sizeof(nv_watch_phonebook_t); - if(length != UI_NV_Write_Req(NV_SECTION_UI_PHONEBOOK, 0, length, (uint8_t *)nvm)) { - printf("write contacts to nvm error in voip_phonebook_write_nvm\n"); - return; - } -} - -static void voip_phonebook_write_nvm_for_test(void) -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - - /*clear nvm*/ - uint32_t length = sizeof(nv_watch_phonebook_t); - - nv_watch_phonebook_t * nvm_clear = (nv_watch_phonebook_t *)lv_mem_alloc(length); - memset(nvm_clear, 0, length); - voip_phonebook_write_nvm(nvm_clear); - lv_mem_free(nvm_clear); - - nv_watch_phonebook_t nvm_list = { { - {"test1", "JU234", 0, WATCH_PORTRAIT_ID_MOTHER}, - {"test2", "JU456", 1, WATCH_PORTRAIT_ID_FATHER}, - {"test3", "JU678", 1, WATCH_PORTRAIT_ID_GIRL}, - //{"test4", "xu2", 1, WATCH_PORTRAIT_ID_BOY}, - } - }; - length = sizeof(nvm_list); - if(length != UI_NV_Write_Req(NV_SECTION_UI_PHONEBOOK, 0, length, (uint8_t *)(&nvm_list))) { - printf("write nvm error in voip_phonebook_write_nvm_for_test\n"); - } -} - -static void voip_phonebook_clear_nvm_for_test(void) -{ - printf("%s\n", __FUNCTION__); - - uint32_t len = sizeof(nv_watch_phonebook_t); - nv_watch_phonebook_t * nvm_pb = (nv_watch_phonebook_t *)lv_mem_alloc(len); - memset(nvm_pb, 0, len); - len = UI_NV_Write_Req(NV_SECTION_UI_PHONEBOOK, 0, len, (uint8_t *)nvm_pb); - lv_mem_free(nvm_pb); -} -#endif - -static lv_obj_t * voip_phonebook_create(lv_obj_t * activity_obj) -{ - // printf("%s %d\n", __FUNCTION__, __LINE__); -#if VOIP_PHONEBOOK_TEST != 0 - voip_phonebook_write_nvm_for_test(); -#endif - nv_watch_phonebook_t * nvm_contact_list = voip_phonebook_read_nvm(); - - if(activity_obj == NULL) { - lv_watch_activity_ext_t activity_ext; - memset(&activity_ext, 0, sizeof(lv_watch_activity_ext_t)); - activity_ext.actId = ACT_ID_VOIP_PHONEBOOK; - activity_ext.create = voip_phonebook_create; - activity_ext.prepare_destory = voip_phonebook_prepare_destory; - activity_obj = lv_watch_creat_activity_obj(&activity_ext); - LV_ASSERT_MEM(activity_obj); - if(activity_obj == NULL) { - return(NULL); - } - } - - lv_obj_t * obj = lv_watch_obj_create(activity_obj); - LV_ASSERT_MEM(obj); - if(obj == NULL) { - return(NULL); - } - - if('\0' == nvm_contact_list->info[0].number[0]) { - /*no contacts or network*/ - phonebook_no_contacts_or_network_create(obj); - lv_watch_set_free_num(activity_obj, 0); - } else { - lv_ll_t contact_list; - _lv_ll_init(&contact_list, sizeof(voip_phonebook_t)); - voip_phonebook_t * contact; - uint32_t contact_length = sizeof(nv_watch_phonebook_info_t); - for(uint8_t i = 0; i < NV_WATCH_MAX_CONTACT_NUM; i++) { - if('\0' == nvm_contact_list->info[i].number[0]) { - break; - } - contact = _lv_ll_ins_tail(&contact_list); - memcpy(contact, &nvm_contact_list->info[i], contact_length); - } - voip_phonebook_contacts_create(obj, &contact_list); - lv_watch_set_free_num(activity_obj, 1); - } -#if VOIP_PHONEBOOK_TEST != 0 - /* not free because in heap*/ -#else - lv_mem_free(nvm_contact_list); -#endif - return(obj); -} /* voip_phonebook_create */ - -static lv_obj_t * voip_phone_create(lv_obj_t * activity_obj, voip_phone_ui_e phone_ui_id) -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - - if(VOIP_PHONE_UI_CONNECTED == phone_ui_id) { - /* set speaker volume to nv when leaving activiry's slider */ - voip_set_volume_when_slider_act(); - } - - /* cleanup phone first */ - voip_phone_cleanup(); - - if(activity_obj == NULL) { - lv_watch_activity_ext_t activity_ext; - memset(&activity_ext, 0, sizeof(lv_watch_activity_ext_t)); - activity_ext.actId = ACT_ID_VOIPPHONE; - activity_ext.create = NULL; - activity_ext.prepare_destory = voip_phone_prepare_destory; - activity_obj = lv_watch_creat_activity_obj(&activity_ext); - LV_ASSERT_MEM(activity_obj); - if(activity_obj == NULL) { - return(NULL); - } - } - - lv_obj_t * obj = lv_watch_obj_create(activity_obj); - LV_ASSERT_MEM(obj); - if(obj == NULL) { - return(NULL); - } - lv_watch_obj_set_anim_mode(obj, LV_WATCH_LEFT_OR_RIGHT_SLIDE_CALLBACK); - lv_watch_obj_set_left_slide_cb(obj, voip_phone_left_slide_callback); - lv_watch_obj_set_right_slide_cb(obj, voip_phone_right_slide_callback); - - lv_voip_phone_obj_ext_t * ext = lv_obj_allocate_ext_attr(obj, sizeof(lv_voip_phone_obj_ext_t)); - LV_ASSERT_MEM(ext); - if(ext == NULL) { - return(NULL); - } - - ext->phone_status_label = NULL; - ext->phone_animation_obj = NULL; - ext->phone_ui_t = phone_ui_id; - ext->local_remote_switch_flag = VOIP_REMOTE_SWITCH_NULL; -#if ENABLE_VIDEO_SCALE == 0 - ext->voiph263fmt = VOIP_H263_FMT_QCIF; -#else - ext->voiph263fmt = VOIP_H263_FMT_OTHER; -#endif - - hal_rtc_t rtc_curr; // current rtc time - Hal_Rtc_Gettime(&rtc_curr); - ext->connect_start_time = time_to_seconds(&rtc_curr); - ext->connect_time = NULL; - ext->ring_value_button = NULL; - ext->view_switch_button = NULL; - ext->ring_off_button = NULL; - ext->canvas_button_hidden_flag = NOT_HIDDEN; - - /* content */ - lv_obj_t * content = lv_cont_create(obj, NULL); - lv_obj_set_size(content, lv_obj_get_width(obj), lv_obj_get_height(obj) - 20); - lv_cont_set_layout(content, LV_LAYOUT_COLUMN_MID); - LV_ASSERT_MEM(content); - if(content == NULL) { - return(NULL); - } - lv_obj_add_style(content, LV_OBJ_PART_MAIN, &lv_watch_style_transp); - /* must click false */ - lv_obj_set_click(content, false); - lv_obj_align(content, obj, LV_ALIGN_CENTER, 0, 0); - - if(ext->phone_ui_t == VOIP_PHONE_UI_DIALING) { - voip_phone_dialing(content); - voip_dialing_animation(ext->phone_status_label); - } else if(ext->phone_ui_t == VOIP_PHONE_UI_INCOMING) { - voip_phone_ring(content); - voip_ring_animation(ext->phone_status_label); - } else if(ext->phone_ui_t == PHONE_UI_CONNECTED) { - voip_phone_connected(content); - voip_connected_animation(ext->phone_status_label); - } - - return(obj); -} /* voip_phone_create */ - -lv_res_t voip_phone_ring_off_create() -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); - LV_ASSERT_MEM(ext); - if(ext == NULL) { - return(LV_RES_INV); - } - - // stop callreq timer - if(NULL != voipcall_params.callreq_timer_id) { - Hal_Timer_Stop(voipcall_params.callreq_timer_id); - voipcall_params.callreq_timer_id = NULL; - } - - if(ext->phone_ui_t == VOIP_PHONE_UI_INCOMING || ext->phone_ui_t == VOIP_PHONE_UI_DIALING) { - if(ext->phone_status_label) { - lv_label_set_text(ext->phone_status_label, ""); - } - - voip_ring_off_content_create(voip_phone_get_obj()); - } else if(ext->phone_ui_t == PHONE_UI_CONNECTED) { - voip_ring_off_content_create(voip_phone_get_obj()); - } - - if(ext->phone_animation_obj) { - lv_obj_del(ext->phone_animation_obj); - ext->phone_animation_obj = NULL; - } - - /* set speaker volume to nv when leaving activiry's slider */ - voip_set_volume_when_slider_act(); - - /* phone cleanup when anim end*/ - lv_anim_t a; - lv_anim_init(&a); - lv_anim_set_var(&a, voip_phone_get_obj()); - lv_anim_set_ready_cb(&a, (lv_anim_ready_cb_t)voip_phone_obj_hide_anim_end); - lv_anim_set_time(&a, VOIP_PHONE_RING_OFF_CONTINUE_TIME); - lv_anim_start(&a); - - voip_signal_check_stop(); - voip_rat_check_stop(); - - return(LV_RES_OK); -} /* voip_phone_ring_off_create */ - -void voip_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); - - if(false == voipcall_params.ring_off) { - voipcall_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); - } - // stop callreq timer - if(NULL != voipcall_params.callreq_timer_id) { - Hal_Timer_Stop(voipcall_params.callreq_timer_id); - voipcall_params.callreq_timer_id = NULL; - } - } - - switch(voipcall_params.state) { - case MMI_VOIP_CALL_STATE_NULL: - case MMI_VOIP_CALL_STATE_INVALID: - // do noting - break; - - case MMI_VOIP_CALL_STATE_ACTIVE: - voip_call_hangup_req(TRUE); - break; - - case MMI_VOIP_CALL_STATE_INCOMING: - Hal_Tone_Play_End(); - voip_call_reject_req(TRUE); - break; - - default: - voip_call_hangup_req(TRUE); - break; - } /* switch */ - - voip_signal_check_stop(); - voip_rat_check_stop(); - -#if VOIP_PHONE_TEST - watch_voip_call_response_no_carrier(voipcall_params.index, 0); -#endif -} /* voip_ring_off_action */ - -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 * voip_phone_get_video_buffer() -{ - return g_cbuf; -} - -/********************** -* STATIC FUNCTIONS -**********************/ -static lv_obj_t * voip_phone_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) -{ - lv_obj_t * watch_obj = NULL; - - lv_obj_t * activity_obj = voip_phone_get_activity_obj(); - - if(activity_obj) { - lv_watch_get_child_obj(activity_obj, lv_watch_obj_signal, &watch_obj); - } - - return(watch_obj); -} - -#if VOIP_PHONE_TEST - -static void voip_phone_connected_cb(void * para) -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - watch_voip_call_response_connect(voipcall_params.index); -} -#endif - -static void voip_phone_left_slide_callback(lv_obj_t * obj) -{ - printf("%s %d\n", __FUNCTION__, __LINE__); -#if VOIP_PHONE_TEST - if((MMI_VOIP_CALL_STATE_INCOMING == voipcall_params.state)) { // MT call - int32_t index = 1; - - watch_voip_call_response_originating(index); - watch_voip_call_response_alerting(index); - - Hal_Timer_Start(60, voip_phone_connected_cb, NULL, 0); - } - - else if(MMI_VOIP_CALL_STATE_DIALING == voipcall_params.state) { // MO call - int32_t index = 1; - - watch_voip_call_response_originating(index); - watch_voip_call_response_alerting(index); - - Hal_Timer_Start(60, voip_phone_connected_cb, NULL, 0); - } else -#endif - if((MMI_VOIP_CALL_STATE_ACTIVE == voipcall_params.state) - && (MODEM_VIDEO_CALL_TYPE_VIDEO == voipcall_params.voip_call_type)) { - voip_local_remote_switch_action(NULL, LV_EVENT_CLICKED); - } -} - -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); -} - -static void voip_phone_down_slide_callback(lv_obj_t * obj) -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - voip_volume_btn_action(NULL, LV_EVENT_CLICKED); -} - -static lv_obj_t * voip_phone_cont_create(lv_obj_t * par, lv_align_t cont_layout, lv_style_t * style, lv_coord_t width) -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - - lv_obj_t * content = lv_cont_create(par, NULL); - - if(width > 0) { - lv_cont_set_fit2(content, LV_FIT_NONE, LV_FIT_TIGHT); - lv_obj_set_width(content, width); - } else { - lv_cont_set_fit2(content, LV_FIT_TIGHT, LV_FIT_TIGHT); - } - lv_obj_add_style(content, LV_OBJ_PART_MAIN, style); - lv_cont_set_layout(content, cont_layout); - lv_obj_set_click(content, false); - return(content); -} - -static void voip_slider_action(lv_obj_t * slider, lv_event_t e) -{ - if(e == LV_EVENT_VALUE_CHANGED) - { - printf("%s %d\n", __FUNCTION__, __LINE__); - - uint8_t v = lv_slider_get_value(slider); - - // 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; - } -} - -static void voip_volume_btn_action(lv_obj_t * obj, lv_event_t e) -{ - if(LV_EVENT_CLICKED != e) { - return; - } - - printf("%s %d\n", __FUNCTION__, __LINE__); - slider_create(NULL, SETTING_VOIP_SPEAKER, 40, voip_slider_action); -} - -static void voip_phone_obj_hide_anim_end(lv_anim_t * anim) -{ - (void)anim; - printf("%s %d\n", __FUNCTION__, __LINE__); - - voip_phone_cleanup(); -} - -static lv_obj_t * voip_ring_off_content_create(lv_obj_t * par) -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - if(par == NULL) { - par = lv_scr_act(); - } - - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); - LV_ASSERT_MEM(ext); - if(ext == NULL) { - return(NULL); - } - - lv_obj_t * obj = lv_obj_create(par, NULL); - LV_ASSERT_MEM(obj); - if(obj == NULL) { - return(NULL); - } - lv_obj_set_size(obj, lv_obj_get_width(par), lv_obj_get_height(par)); - lv_obj_add_style(obj, LV_OBJ_PART_MAIN, &lv_style_transp_tight); - - lv_obj_t * content = lv_cont_create(obj, NULL); - LV_ASSERT_MEM(content); - if(content == NULL) { - return(NULL); - } - - lv_obj_add_style(content, LV_OBJ_PART_MAIN, &lv_watch_cont_opa1); - lv_obj_set_size(content, 204, 44); - if(ext->phone_ui_t == VOIP_PHONE_UI_INCOMING || ext->phone_ui_t == VOIP_PHONE_UI_DIALING) { - lv_obj_align(content, obj, LV_ALIGN_IN_TOP_MID, 0, 10); - } else { - lv_obj_align(content, obj, LV_ALIGN_CENTER, 0, -12); - } - lv_cont_set_layout(content, LV_LAYOUT_CENTER); - lv_obj_set_click(content, false); - - lv_obj_t * label = lv_label_create(content, NULL); - lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font20); - lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); - - if(is_rat_gsm()) { - lv_label_set_text_id(label, WATCH_TEXT_ID_NETWORK_WRONG); - } else { - if(ext->phone_ui_t == PHONE_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 { - lv_label_set_text_id(label, WATCH_TEXT_ID_RING_OFF); - } - } - - lv_obj_set_click(label, false); - - return(obj); -} /* voip_ring_off_content_create */ - -static void voip_phone_ring_off_timeout_cb(void * para) -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - voipcall_params.ring_off_timer_id = NULL; - voipcall_params.ring_off_timeout = true; - watch_voip_call_response_no_carrier(voipcall_params.index, 0); -} - -static void voip_phone_callreq_timeout_cb(void * para) -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - - voipcall_params.callreq_timer_id = NULL; - voip_call_hangup_req(TRUE); -} - -static void voip_ring_hook_action(lv_obj_t * btn, lv_event_t e) -{ - if(LV_EVENT_CLICKED != e) { - return; - } - - printf("%s %d\n", __FUNCTION__, __LINE__); - - if(btn) { - lv_obj_set_click(btn, false); - } - - Hal_Tone_Play_End(); - - int8_t ret = voip_call_answer_req(); - if(ret < 0) { - watch_voip_call_response_no_carrier(voipcall_params.index, 0); - } -} - -static void voip_phone_cleanup(void) -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - - lv_obj_t * slider_activit_obj = lv_watch_get_activity_obj(ACT_ID_SLIDER); - - if(slider_activit_obj) { - lv_obj_del(slider_activit_obj); - } - - lv_obj_t * activity_obj = voip_phone_get_activity_obj(); - if(activity_obj) { - lv_obj_del(activity_obj); - } -} - -static void voip_anim_fp_dialing_ring(lv_obj_t * obj, int32_t x) -{ - if(obj != NULL) { - lv_obj_set_x(obj, x); - } -} - -static void voip_dialing_animation(lv_obj_t * par) -{ - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); - - LV_ASSERT_MEM(ext); - if(ext == NULL) { - return; - } - - lv_obj_t * img = lv_img_create(voip_phone_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); - 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_dialing_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_ring_animation(lv_obj_t * par) -{ - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); - - LV_ASSERT_MEM(ext); - if(ext == NULL) { - return; - } - - lv_obj_t * img = lv_img_create(voip_phone_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); - 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) - 20; - 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_dialing_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_connected_animation(lv_obj_t * obj) -{ - lv_anim_t a; - lv_anim_path_t path; - - lv_anim_path_init(&path); - lv_anim_path_set_cb(&path, lv_anim_path_step); - - lv_anim_init(&a); - lv_anim_set_var(&a, obj); - lv_anim_set_start_cb(&a, (lv_anim_ready_cb_t)voip_anim_fp_connected); - lv_anim_set_path(&a, &path); - lv_anim_set_time(&a, 1); - lv_anim_set_playback_time(&a, 0); - lv_anim_set_playback_delay(&a, 0); - lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE); - lv_anim_set_repeat_delay(&a, 1000); - - lv_anim_start(&a); -} - -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_ASSERT_MEM(ext); - if(ext == NULL) { - return; - } - - char str[20] = ""; - voip_get_time_elaps(ext->connect_start_time, str, 20); - if(obj) { - lv_label_set_text(obj, str); - } -} - -static void voip_phone_dialing(lv_obj_t * content) -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); - - LV_ASSERT_MEM(ext); - if(ext == NULL) { - return; - } - - lv_obj_t * cont; - - // label dialing - lv_obj_t * label = lv_label_create(content, NULL); - lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font20); - lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); - lv_label_set_text_id(label, WATCH_TEXT_ID_DAILING); - lv_obj_set_click(label, false); - ext->phone_status_label = label; - - // img small - lv_obj_t * img = lv_img_create(content, NULL); - if(voipcall_params.img_src_small) { - lv_img_set_src(img, voipcall_params.img_src_small); - } - - cont = voip_phone_cont_create(content, LV_LAYOUT_ROW_MID, &lv_watch_style_transp, -1); - - // name - label = lv_label_create(cont, NULL); - lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font20); - lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); - if(strlen(voipcall_params.name) > 0) { - lv_label_set_text(label, voipcall_params.name); - } else { - lv_label_set_text(label, ""); - } - lv_obj_set_click(label, false); - - // number - label = lv_label_create(cont, NULL); - lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font20); - lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); - lv_label_set_text(label, voipcall_params.number); - lv_obj_set_click(label, false); - - cont = voip_phone_cont_create(content, LV_LAYOUT_OFF, &lv_watch_style_transp, lv_obj_get_width(content) - 40); - - // btn volume - lv_obj_t * btn; - btn = lv_imgbtn_create(cont, NULL); - lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_PHONE_RING_VOLUME); - lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_PHONE_RING_VOLUME); - lv_obj_set_event_cb(btn, voip_volume_btn_action); - lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_LEFT, 0, 0); - - // btn ring off - btn = lv_imgbtn_create(cont, NULL); - lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_PHONE_RING_OFF); - lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_PHONE_RING_OFF); - lv_obj_set_event_cb(btn, voip_ring_off_action); - lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_RIGHT, 0, 0); -} /* voip_phone_dialing */ - -static void voip_phone_ring(lv_obj_t * content) -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); - - LV_ASSERT_MEM(ext); - if(ext == NULL) { - return; - } - lv_obj_t * label; - - // label ringing - label = lv_label_create(content, NULL); - lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font20); - lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); - lv_label_set_text_id(label, WATCH_TEXT_ID_RINGING); - lv_obj_set_click(label, false); - ext->phone_status_label = label; - - // img small - lv_obj_t * img = lv_img_create(content, NULL); - if(voipcall_params.img_src_small) { - lv_img_set_src(img, voipcall_params.img_src_small); - } - - lv_obj_t * cont = voip_phone_cont_create(content, LV_LAYOUT_ROW_MID, &lv_watch_style_transp, -1); - - // name - label = lv_label_create(cont, NULL); - lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font20); - lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); - if(strlen(voipcall_params.name) > 0) { - lv_label_set_text(label, voipcall_params.name); - } else { - lv_label_set_text(label, ""); - } - lv_obj_set_click(label, false); - - // number - label = lv_label_create(cont, NULL); - lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font20); - lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); - lv_label_set_text(label, voipcall_params.number); - - lv_obj_set_click(label, false); - - cont = voip_phone_cont_create(content, LV_LAYOUT_OFF, &lv_watch_style_transp, lv_obj_get_width(content) - 40); - - // btn ring off - lv_obj_t * btn; - 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_align(btn, cont, LV_ALIGN_IN_BOTTOM_LEFT, 0, 0); - - // btn ring hook - btn = lv_imgbtn_create(cont, NULL); - lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_PHONE_HOOK); - lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_PHONE_HOOK); - lv_obj_set_event_cb(btn, voip_ring_hook_action); - lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_RIGHT, 0, 0); -} /* voip_phone_ring */ - -static void voip_phone_connected(lv_obj_t * content) -{ - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); - - LV_ASSERT_MEM(ext); - if(ext == NULL) { - return; - } - - if(voipcall_params.voip_call_type == MODEM_VIDEO_CALL_TYPE_VOICE) { - printf("voice call connected %s %d\n", __FUNCTION__, __LINE__); - ext->local_remote_switch_flag = VOIP_REMOTE_SWITCH_NULL; - // img small - lv_obj_t * img = lv_img_create(content, NULL); - - printf("%s: img_src_small %p\n", __FUNCTION__, voipcall_params.img_src_small); - if(voipcall_params.img_src_small) { - lv_img_set_src(img, voipcall_params.img_src_small); - } - hal_rtc_t rtc_curr; // current rtc time - Hal_Rtc_Gettime(&rtc_curr); - ext->connect_start_time = time_to_seconds(&rtc_curr); - - lv_obj_t * cont = voip_phone_cont_create(content, LV_LAYOUT_ROW_MID, &lv_watch_style_transp, -1); - lv_obj_set_width(cont, lv_obj_get_width(content)); - lv_obj_add_style(content, LV_OBJ_PART_MAIN, &lv_watch_style_transp); - // name - lv_obj_t * label = lv_label_create(cont, NULL); - lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font20); - if(strlen(voipcall_params.name) > 0) { - lv_label_set_text(label, voipcall_params.name); - } else { - lv_label_set_text(label, ""); - } - lv_obj_set_click(label, false); - lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); - - // number - label = lv_label_create(cont, NULL); - lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font20); - lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); - lv_label_set_text(label, voipcall_params.number); - lv_obj_set_click(label, false); - - // duration - 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(label, "0:0"); - lv_obj_set_click(label, false); - lv_obj_set_base_dir(label, LV_BIDI_DIR_LTR); - ext->phone_status_label = label; - - cont = voip_phone_cont_create(content, LV_LAYOUT_OFF, &lv_watch_style_transp, lv_obj_get_width(content) - 40); - - // btn volume - lv_obj_t * btn; - btn = lv_imgbtn_create(cont, NULL); - lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_PHONE_RING_VOLUME); - lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_PHONE_RING_VOLUME); - lv_obj_set_event_cb(btn, voip_volume_btn_action); - lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_LEFT, 0, 0); - - // btn ring off - btn = lv_imgbtn_create(cont, NULL); - lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_PHONE_RING_OFF); - lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_PHONE_RING_OFF); - lv_obj_set_event_cb(btn, voip_ring_off_action); - lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_RIGHT, 0, 0); - } else { - lv_obj_t * canvas; - lv_obj_t * label; - lv_obj_t * btn; - - printf("video call connected %s %d\n", __FUNCTION__, __LINE__); - - ext->local_remote_switch_flag = VOIP_REMOTE_SWITCH_REMOTE; - if((ext->voiph263fmt == VOIP_H263_FMT_SQCIF) || (ext->voiph263fmt == VOIP_H263_FMT_QCIF)) { - hal_rtc_t rtc_curr; // current rtc time - Hal_Rtc_Gettime(&rtc_curr); - ext->connect_start_time = time_to_seconds(&rtc_curr); - - lv_obj_t * cont = voip_phone_cont_create(content, LV_LAYOUT_OFF, &lv_watch_style_transp, -1); - lv_obj_set_width(cont, lv_obj_get_width(content)); - lv_obj_add_style(content, LV_OBJ_PART_MAIN, &lv_watch_style_transp); - - /*Create the canvas object*/ - canvas = lv_canvas_create(cont, NULL); - lv_obj_set_click(canvas, true); - lv_obj_set_event_cb(canvas, canvas_button_hidden_event_cb); - video_call_add_element(canvas); - ext->canvas = canvas; - - lv_obj_align(canvas, cont, LV_ALIGN_IN_TOP_MID, 0, 0); - /*Assign the buffer to the canvas*/ - lv_img_set_src(canvas, ICON_VIDEO_CALL); - voip_signal_check_start(ext); - - // duration - label = lv_label_create(canvas, NULL); - lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font20); - lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); - lv_label_set_text(label, "0:0"); - lv_obj_set_click(label, false); - lv_obj_set_base_dir(label, LV_BIDI_DIR_LTR); - if(LV_BIDI_DIR_RTL == lv_obj_get_base_dir(content)) { - lv_obj_align(label, NULL, LV_ALIGN_IN_TOP_RIGHT, -lv_obj_get_width(label), 0); - } - ext->phone_status_label = label; - - // signal weak notification - label = lv_label_create(canvas, NULL); - lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font30); - lv_label_set_text_id(label, WATCH_TEXT_ID_SIGNAL_WEAK); - lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); - lv_obj_align(label, canvas, LV_ALIGN_CENTER, 0, -10); - lv_obj_set_click(label, false); - lv_obj_set_hidden(label, true); - ext->signal_weak_label = label; - - cont = voip_phone_cont_create(content, LV_LAYOUT_OFF, &lv_watch_style_transp, lv_obj_get_width(content) - 40); - // btn volume - btn = lv_imgbtn_create(cont, NULL); - lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_PHONE_RING_VOLUME); - lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_PHONE_RING_VOLUME); - lv_obj_set_event_cb(btn, voip_volume_btn_action); - lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_LEFT, 0, 0); - - // btn switch video - btn = lv_imgbtn_create(cont, NULL); - lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_SETTING_VOLTE); - lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_SETTING_VOLTE); - lv_obj_set_event_cb(btn, voip_local_remote_switch_action); - lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_MID, 0, 0); - - // btn ring off - btn = lv_imgbtn_create(cont, NULL); - lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_PHONE_RING_OFF); - lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_PHONE_RING_OFF); - lv_obj_set_event_cb(btn, voip_ring_off_action); - lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_RIGHT, 0, 0); - } else if((ext->voiph263fmt == VOIP_H263_FMT_CIF) - || (ext->voiph263fmt == VOIP_H263_FMT_4CIF) - || (ext->voiph263fmt == VOIP_H263_FMT_16CIF) - || (ext->voiph263fmt == VOIP_H263_FMT_OTHER)) { - /*Create the canvas object*/ - canvas = lv_canvas_create(content, NULL); - lv_obj_set_click(canvas, true); - lv_obj_set_event_cb(canvas, canvas_button_hidden_event_cb); - video_call_add_element(canvas); - ext->canvas = canvas; - - /*Assign the buffer to the canvas*/ - lv_img_set_src(canvas, ICON_VIDEO_CALL); - voip_signal_check_start(ext); - - // duration - label = lv_label_create(canvas, NULL); - lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font20); - lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); - lv_label_set_text(label, "0:0"); - lv_obj_set_click(label, false); - lv_obj_set_base_dir(label, LV_BIDI_DIR_LTR); - if(LV_BIDI_DIR_RTL == lv_obj_get_base_dir(content)) { - lv_obj_align(label, NULL, LV_ALIGN_IN_TOP_RIGHT, -lv_obj_get_width(label), 0); - } - ext->phone_status_label = label; - ext->connect_time = label; - - // signal weak notification - label = lv_label_create(canvas, NULL); - lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font30); - lv_label_set_text_id(label, WATCH_TEXT_ID_SIGNAL_WEAK); - lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); - lv_obj_align(label, canvas, LV_ALIGN_CENTER, 0, -10); - lv_obj_set_click(label, false); - lv_obj_set_hidden(label, true); - ext->signal_weak_label = label; - - // btn volume - btn = lv_imgbtn_create(canvas, NULL); - lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_PHONE_RING_VOLUME); - lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_PHONE_RING_VOLUME); - lv_obj_set_event_cb(btn, voip_volume_btn_action); - lv_obj_align(btn, canvas, LV_ALIGN_IN_BOTTOM_LEFT, 0, -20); - lv_obj_add_style(btn, LV_OBJ_PART_MAIN, &lv_watch_style_transp); - ext->ring_value_button = btn; - - // btn switch video - btn = lv_imgbtn_create(canvas, NULL); - lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_SETTING_VOLTE); - lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_SETTING_VOLTE); - lv_obj_set_event_cb(btn, voip_local_remote_switch_action); - lv_obj_align(btn, canvas, LV_ALIGN_IN_BOTTOM_MID, 0, -20); - lv_obj_add_style(btn, LV_OBJ_PART_MAIN, &lv_watch_style_transp); - ext->view_switch_button = btn; - - // btn ring off - btn = lv_imgbtn_create(canvas, NULL); - lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_PHONE_RING_OFF); - lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_PHONE_RING_OFF); - lv_obj_set_event_cb(btn, voip_ring_off_action); - lv_obj_align(btn, canvas, LV_ALIGN_IN_BOTTOM_RIGHT, 0, -20); - lv_obj_add_style(btn, LV_OBJ_PART_MAIN, &lv_watch_style_transp); - ext->ring_off_button = btn; - - lv_obj_set_hidden(ext->connect_time, ext->canvas_button_hidden_flag); - lv_obj_set_hidden(ext->ring_value_button, ext->canvas_button_hidden_flag); - lv_obj_set_hidden(ext->view_switch_button, ext->canvas_button_hidden_flag); - lv_obj_set_hidden(ext->ring_off_button, ext->canvas_button_hidden_flag); - } - - if(voip_phone_get_obj()) { - lv_watch_obj_set_down_slide_cb(voip_phone_get_obj(), voip_phone_down_slide_callback); - } - } -} /* voip_phone_connected */ - -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 - voip_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; - } - - // stop callreq timer - if(NULL != voipcall_params.callreq_timer_id) { - Hal_Timer_Stop(voipcall_params.callreq_timer_id); - voipcall_params.callreq_timer_id = NULL; - } - - Hal_Mem_Set(&voipcall_params, 0, sizeof(voip_phone_call_params_t)); - voipcall_params.state = MMI_VOIP_CALL_STATE_NULL; -} - -static void voip_get_time_elaps(uint32_t last_time, char * str, int8_t size) -{ - hal_rtc_t rtc_curr; // current rtc time - uint32_t second_curr = 0; // seconds of current time - - Hal_Rtc_Gettime(&rtc_curr); - second_curr = time_to_seconds(&rtc_curr); - - uint32_t elaps = second_curr - last_time; - uint32_t seconds = elaps % 60; - uint32_t minutes = elaps / 60; - uint32_t hours = minutes / 60; - minutes = minutes % 60; - - if(hours == 0) { - if(lv_lang_act() == LANG_CH) { - snprintf(str, size, "%.2d:%.2d", minutes, seconds); - } else { - snprintf(str, size, "%.2d:%.2d", minutes, seconds); - } - } else { - if(lv_lang_act() == LANG_CH) { - snprintf(str, size, "%.2d:%.2d:%.2d", hours, minutes, seconds); - } else { - snprintf(str, size, "%.2d:%.2d:%.2d", hours, minutes, seconds); - } - } -} - -#if VOIP_PHONE_TEST != 0 - -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) { - return; - } - - printf("%s: %d\n", __func__, index); - voipcall_params.index = index; - - // state: NULL -> DIALLING - voipcall_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) { - return; - } - - uint8_t volume; - - // state: DIALLING -> ALERTING - voipcall_params.state = MMI_VOIP_CALL_STATE_ALERTING; - - // set speaker volume - UI_NV_Read_Req(NV_SECTION_UI_PHONE, VOIP_PHONE_NV_VOLUME_OFFSET, 1, &volume); - if(!Hal_Set_BT_Audio_Path((HAL_SPEAKER_GAIN)volume)) - Hal_Call_Speaker(HAL_CALL_SPK_ON, (HAL_SPEAKER_GAIN)volume); -} - -void watch_voip_call_response_ring(int32_t index) -{ - printf("%s: %d\n", __func__, index); - Hal_NFFS_File_Play_Repeat(AUDIO_INCOMING_CALL, query_current_volume()); - - voipcall_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) { - return; - } - - voipcall_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; - } - - // stop playing tone - Hal_Tone_Play_End(); - - Hal_Set_Voice_Call_Status(VOICE_CALL_START); - - // create connected UI - voip_phone_create(NULL, VOIP_PHONE_UI_CONNECTED); -} - -void watch_voip_call_response_disconnect(int32_t index) -{ - // not used - (void)index; - printf("%s: %d\n", __func__, index); - Hal_Tone_Play_End(); - - // create ring off UI - if(voip_phone_get_activity_obj()) { - voip_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(voip_phone_call_params_t)); - voipcall_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) - && (1 == isNoCarrier) - && (MMI_VOIP_CALL_STATE_NULL == voipcall_params.state)) { - printf("%s: ignore no carrier in state NULL\n", __func__); - return; - } - - printf("%s: %d\n", __func__, index); - - // stop playing tone - 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; - } - - // stop callreq timer - if(NULL != voipcall_params.callreq_timer_id) { - Hal_Timer_Stop(voipcall_params.callreq_timer_id); - voipcall_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(); - } -#if 0 - // display alarm if it is buffered - if(voipcall_params.buffer_alarm) { - Hal_NFFS_File_Play_Repeat(AUDIO_ALARM, query_current_volume()); - alarm_create(NULL); - } else { - // indicate voice msg - voice_msg_call_end(); - } -#endif - if(MMI_MODEM_CALL_STATE_NULL != phone_get_call_state()) { - printf("%s tele call is on going, keep para of audio\n", __FUNCTION__); - Hal_Set_Voice_Call_Status(VOICE_CALL_END); - Hal_Disconnect_BT_Audio_Path(); - } - Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_2); - watch_wakeup_time_reset(); - - Hal_Mem_Set(&voipcall_params, 0, sizeof(voip_phone_call_params_t)); - voipcall_params.state = MMI_VOIP_CALL_STATE_NULL; -} /* watch_voip_call_response_no_carrier */ - -void watch_voip_call_response_state_change(MMI_Modem_Call_Response_State_Change_t * state) -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - - for(uint8_t i = 0; i < state->count; i++) { - Hal_Mem_Free(state->calls[i].number); - Hal_Mem_Free(state->calls[i].name); - } - Hal_Mem_Free(state->calls); - Hal_Mem_Free(state); -} - -void voip_phone_voice_call_req(char * number, MODEM_VIDEO_CALL_TYPE voip_call_type) -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - - char * dial_number = NULL; - - // check call state - if(MMI_VOIP_CALL_STATE_NULL != voipcall_params.state) { - printf("%s: only support one call, state=%d\n", __func__, voipcall_params.state); - Hal_Mem_Free(number); - 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; - } - - // stop callreq timer - if(NULL != voipcall_params.callreq_timer_id) { - Hal_Timer_Stop(voipcall_params.callreq_timer_id); - voipcall_params.callreq_timer_id = NULL; - } - - // set call parameters - Hal_Mem_Set(&voipcall_params, 0, sizeof(voip_phone_call_params_t)); - voipcall_params.is_mt = false; - voipcall_params.state = MMI_VOIP_CALL_STATE_DIALING; - voipcall_params.voip_call_type = voip_call_type; - - strncpy(voipcall_params.number, number, NV_CONTACTS_MAX_NUMBER_LEN); - - voip_phonebook_contact_t * contact_info = voip_phonebook_get_contact_info(number); - if(NULL != contact_info) { - Hal_Mem_Copy(voipcall_params.name, contact_info->contact_name, NV_CONTACTS_MAX_NAME_LEN); - voipcall_params.img_src = contact_info->img_src; - voipcall_params.img_src_small = contact_info->img_src_small; - - Hal_Mem_Free(contact_info); - } else { - voipcall_params.img_src = ICON_FAMILY; - voipcall_params.img_src_small = ICON_FAMILY_SMALL; - } - - // Initiate voice call - dial_number = (char *)Hal_Mem_Alloc(strlen(voipcall_params.number) + 1); - strncpy(dial_number, voipcall_params.number, strlen(voipcall_params.number) + 1); - printf("%s %d\n", __FUNCTION__, __LINE__); - int8_t ret = voip_call_dial_req(voip_call_type, dial_number); - UINT32 timeout; - if(NULL == voipcall_params.callreq_timer_id) { - if(ret >= 0) { - timeout = VOIP_CALLREQ_TIMER_LEN; - } else { - timeout = 1000; //ms - } - voipcall_params.callreq_timer_id = Hal_Timer_Start(timeout, voip_phone_callreq_timeout_cb, NULL, 0); - } - // create dialing UI - voip_rat_check_start(); - voip_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); -} /* voip_phone_voice_call_req */ - -void watch_voip_call_response_bottom_error(void) -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - voip_phone_cleanup(); - Hal_Mem_Set(&voipcall_params, 0, sizeof(voip_phone_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); -} - -int get_voipcall_params_index() -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - return(voipcall_params.index); -} - -void watch_voip_incomingcall_response(char * number, int32_t calltype) -{ - char * pNumber = NULL; - uint8_t volume; - voip_phonebook_contact_t * contact_info = NULL; - - printf("%s: number=%s, calltype %d\n", __FUNCTION__, number, calltype); - - if((MMI_MODEM_CALL_STATE_NULL != phone_get_call_state()) || is_rat_gsm()) { - printf("tele call is on going %d or in gsm mode, reject voip call\n", phone_get_call_state()); - voip_call_reject_req(TRUE); - return; - } - - Hal_Mem_Set(&voipcall_params, 0, sizeof(voip_phone_call_params_t)); - voipcall_params.voip_call_type = (MODEM_VIDEO_CALL_TYPE)calltype; -// voipcall_params.index = index; - voipcall_params.is_mt = true; - voipcall_params.state = MMI_VOIP_CALL_STATE_INCOMING; - strncpy(voipcall_params.number, number, NV_CONTACTS_MAX_NUMBER_LEN); - - pNumber = voip_phonebook_get_phone_number(0); - if(NULL == pNumber) { // no contact - contact_info = (voip_phonebook_contact_t *)Hal_Mem_Alloc(sizeof(voip_phonebook_contact_t)); - Hal_Mem_Set(contact_info, 0, sizeof(voip_phonebook_contact_t)); - contact_info->img_src = ICON_FAMILY; - contact_info->img_src_small = ICON_FAMILY_SMALL; - printf("%s: img_src_small %p\n", __FUNCTION__, contact_info->img_src_small); - contact_info->contact_type = 2; - Hal_Mem_Free(number); - } else { - Hal_Mem_Free(pNumber); - contact_info = voip_phonebook_get_contact_info(number); - } - - if(NULL != contact_info) { - Hal_Mem_Copy(voipcall_params.name, contact_info->contact_name, NV_CONTACTS_MAX_NAME_LEN); - voipcall_params.img_src = contact_info->img_src; - voipcall_params.img_src_small = contact_info->img_src_small; - Hal_Mem_Free(contact_info); - -#if 0 - // clean up alarm if any - alarm_cleanup(); - - // inform speech recog & voice msg - speech_recog_mt_call_ind(); - voice_msg_mt_call_ind(); -#endif - if(AUDIO_CTRL_PRIORITY_2 == Hal_Audio_Manage_Start_Req(AUDIO_CTRL_PRIORITY_2,voip_audio_ctrl_callback)) - { - watch_set_lcd_status(true); - // set speaker volume - - UI_NV_Read_Req(NV_SECTION_UI_PHONE, VOIP_PHONE_NV_VOLUME_OFFSET, 1, &volume); - if(!Hal_Set_BT_Audio_Path((HAL_SPEAKER_GAIN)volume)) - Hal_Call_Speaker(HAL_CALL_SPK_ON, (HAL_SPEAKER_GAIN)volume); - - // play tone - Hal_NFFS_File_Play_Repeat(AUDIO_INCOMING_CALL, query_current_volume()); - - // start rat checking - voip_rat_check_start(); - - // create ring UI - voip_phone_create(NULL, VOIP_PHONE_UI_INCOMING); - } - else - { // AUDIO_CTRL_PRIORITY_1 - printf("%s: phone call has been run, auto reject\n", __func__); - // auto reject - voip_call_reject_req(FALSE); - voip_signal_check_stop(); - 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; - } - - // stop callreq timer - if(NULL != voipcall_params.callreq_timer_id) { - Hal_Timer_Stop(voipcall_params.callreq_timer_id); - voipcall_params.callreq_timer_id = NULL; - } - - Hal_Mem_Set(&voipcall_params, 0, sizeof(voip_phone_call_params_t)); - voipcall_params.state = MMI_VOIP_CALL_STATE_NULL; - voip_set_volume_when_slider_act(); - voip_phone_cleanup(); - lv_watch_png_cache_all_free(); - Hal_Audio_Manage_End_Ind(AUDIO_CTRL_PRIORITY_2); - } - } else { - printf("%s: not a contact, auto reject\n", __func__); - // auto reject - voip_call_reject_req(TRUE); - -#if VOIP_PHONE_TEST - watch_voip_call_response_no_carrier(voipcall_params.index, 0); -#endif - } -} /* watch_voip_incomingcall_response */ - -static lv_res_t voip_call_fail_ind(lv_obj_t * obj) -{ - printf("%s %d\n", __FUNCTION__, __LINE__); - lv_obj_t * call_fail_obj = lv_obj_create(obj, NULL); - LV_ASSERT_MEM(call_fail_obj); - if(call_fail_obj == NULL) { - return(LV_RES_INV); - } - - lv_obj_set_size(call_fail_obj, lv_obj_get_width(obj), lv_obj_get_height(obj)); - lv_obj_add_style(call_fail_obj, LV_OBJ_PART_MAIN, &lv_style_transp_tight); - lv_obj_t * content = lv_cont_create(call_fail_obj, NULL); - LV_ASSERT_MEM(content); - - if(content == NULL) { - return(LV_RES_INV); - } - lv_obj_add_style(content, LV_OBJ_PART_MAIN, &lv_watch_cont_opa1); - lv_obj_set_size(content, 204, 44); - lv_obj_align(content, call_fail_obj, LV_ALIGN_CENTER, 0, 30); - lv_cont_set_layout(content, LV_LAYOUT_CENTER); - lv_obj_set_click(content, false); - - lv_obj_t * label = lv_label_create(content, NULL); - lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font20); - lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); - - if(is_rat_gsm()) - lv_label_set_text_id(label, WATCH_TEXT_ID_NETWORK_WRONG); - else - lv_label_set_text_id(label, WATCH_TEXT_ID_NO_SIM_OR_NETWORK); - lv_obj_set_click(label, false); - - lv_anim_t a; - lv_anim_init(&a); - lv_anim_set_var(&a, call_fail_obj); - lv_anim_set_ready_cb(&a, (lv_anim_ready_cb_t)voip_call_fail_message_cleanup); - lv_anim_set_time(&a, 2000); - lv_anim_start(&a); - - return(LV_RES_OK); -} - -static void voip_call_fail_message_cleanup(lv_anim_t * anim) -{ - lv_obj_del(anim->var); -} - -void watch_ui_voip_message_handle(void * msg) -{ -} - -void watch_voip_autotest_handle(void * testmsg) -{ -} - -static bool voip_check_mo_permission(void) -{ - if((!watch_modem_sim_present_check_req()) - || (MMI_MODEM_SIGNAL_BAR_0 == watch_modem_get_signal_bar_req()) -// || (MODEM_VIDEO_CALL_REG_OK != watch_modem_video_call_get_reg_stat_req()) - || (is_rat_gsm())) { - return(false); - } - return(true); -} - -static void voip_local_remote_switch_action(lv_obj_t * btn, lv_event_t e) -{ - if(LV_EVENT_CLICKED != e) { - return; - } - - printf("%s %d\n", __FUNCTION__, __LINE__); - lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_VOIPPHONE); - if(!activity_obj) { - return; - } - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); - if(!ext) { - return; - } - if(ext->local_remote_switch_flag == VOIP_REMOTE_SWITCH_NULL) { - return; - } - if(ext->local_remote_switch_flag == VOIP_REMOTE_SWITCH_REMOTE) { - ext->local_remote_switch_flag = VOIP_REMOTE_SWITCH_LOCAL; - } else { - ext->local_remote_switch_flag = VOIP_REMOTE_SWITCH_REMOTE; - } -} - -static lv_res_t video_call_element_signal_func(lv_obj_t * element, lv_signal_t sign, void * param) -{ - lv_res_t res; - - //printf("%s, sign=%d\n", __FUNCTION__, sign); - /* 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); - } - - /* 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); -} /* video_call_element_signal_func */ - -static void video_call_add_element(lv_obj_t * element) -{ - lv_watch_set_free_ptr(element, lv_obj_get_signal_cb(element)); - lv_obj_set_signal_cb(element, video_call_element_signal_func); - lv_obj_add_protect(element, LV_PROTECT_PRESS_LOST | LV_PROTECT_CLICK_FOCUS); -} - -static void canvas_button_hidden_event_cb(lv_obj_t * obj, lv_event_t e) -{ - if(LV_EVENT_CLICKED == e) { - printf("%s %d\n", __FUNCTION__, __LINE__); - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); - if(!ext) { - return; - } - if(ext->canvas_button_hidden_flag == NOT_HIDDEN) { - ext->canvas_button_hidden_flag = HIDDEN; - } else { - ext->canvas_button_hidden_flag = NOT_HIDDEN; - } - - lv_obj_set_hidden(ext->connect_time, ext->canvas_button_hidden_flag); - lv_obj_set_hidden(ext->ring_value_button, ext->canvas_button_hidden_flag); - lv_obj_set_hidden(ext->view_switch_button, ext->canvas_button_hidden_flag); - lv_obj_set_hidden(ext->ring_off_button, ext->canvas_button_hidden_flag); - } -} - -static void voip_set_volume_when_slider_act(void) -{ - printf("%s\n", __FUNCTION__); - if(lv_watch_get_activity_obj(ACT_ID_SLIDER)) { - if(MMI_VOIP_CALL_STATE_NULL != voipcall_params.state) { - uint8_t volume = voip_get_call_volume(); - printf("set nv, speaker volume is %d.\n", volume); - UI_NV_Write_Req(NV_SECTION_UI_PHONE, 0, 1, &volume); - } - } -} - -#if VIDEO_SIGNAL_CHECK -static void signal_check(lv_task_t *task) -{ - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); - if(!ext) return; - - if((false == is_rat_gsm()) && - (watch_modem_get_signal_bar_req() < MMI_MODEM_SIGNAL_BAR_3)) { - lv_obj_set_hidden(ext->signal_weak_label, false); - } else { - lv_obj_set_hidden(ext->signal_weak_label, true); - } -} -#endif - -static void voip_signal_check_start(void * ext) -{ -#if VIDEO_SIGNAL_CHECK - if(NULL == signal_check_task) - signal_check_task = lv_task_create(signal_check, VIDEO_SIGNAL_CHECK_PERIOD, LV_TASK_PRIO_HIGH, NULL); -#endif -} - -static void voip_signal_check_stop(void) -{ -#if VIDEO_SIGNAL_CHECK - if(signal_check_task) { - lv_task_del(signal_check_task); - signal_check_task = NULL; - } -#endif -} - -static bool is_rat_gsm(void) -{ - MMI_MODEM_PLMN_RAT rat; - - watch_modem_get_operator_req(&rat); - if(MMI_MODEM_PLMN_RAT_GSM == rat) - return true; - else - return false; -} - -static void rat_check(lv_task_t *task) -{ - if(is_rat_gsm()) { - voip_ring_off_action(NULL, LV_EVENT_CLICKED); - } -} - -static void voip_rat_check_start(void) -{ - if(NULL == rat_check_task) - rat_check_task = lv_task_create(rat_check, VIDEO_RAT_CHECK_PERIOD, LV_TASK_PRIO_HIGH, NULL); -} - -static void voip_rat_check_stop(void) -{ - if(rat_check_task) { - lv_task_del(rat_check_task); - rat_check_task = NULL; - } -} - -void voip_fps_check(int8_t fps) -{ - lv_voip_phone_obj_ext_t * ext = voip_phone_get_ext(); - if(NULL != ext) { - if((VIDEO_CALL_FPS_CHECK_LIMIT >= fps) && (0 != fps)) { - printf("%s %d\n", __FUNCTION__, fps); - if(lv_obj_get_hidden(ext->signal_weak_label) == false) return; - lv_obj_set_hidden(ext->signal_weak_label, false); - } else { - if(lv_obj_get_hidden(ext->signal_weak_label) == true) return; - lv_obj_set_hidden(ext->signal_weak_label, true); - } - } -} - -#endif // #if USE_LV_WATCH_VIDEOCALL != 0 - -//interface -uint8_t voip_get_call_volume(void) -{ -#if USE_LV_WATCH_VIDEOCALL != 0 - return(voipcall_params.speaker_volume); -#else - return 0; -#endif -} - -bool watch_voip_suspend_check(void) -{ -#if USE_LV_WATCH_VIDEOCALL != 0 - if(voipcall_params.voip_call_type == MODEM_VIDEO_CALL_TYPE_VIDEO) { - return(false); - } - - if((MMI_VOIP_CALL_STATE_INCOMING == voipcall_params.state) - || (MMI_VOIP_CALL_STATE_DIALING == voipcall_params.state)) { - return(false); - } -#endif - return(true); -} - -#if 0 -void voip_alarm_ind(void) -{ -#if USE_LV_WATCH_VIDEOCALL != 0 - voipcall_params.buffer_alarm = true; -#endif -} -#endif - -bool voip_connect_check_req(void) -{ -#if USE_LV_WATCH_VIDEOCALL != 0 - if(voip_phone_get_activity_obj()) { - return(true); - } -#endif - return(false); -} - -void voip_activity_destroy_req(void) -{ -#if USE_LV_WATCH_VIDEOCALL != 0 - printf("%s\n", __FUNCTION__); - - lv_obj_t * activity_obj = voip_phone_get_activity_obj(); - - if(!activity_obj) { - return; - } - - switch(voipcall_params.state) { - case MMI_VOIP_CALL_STATE_NULL: - case MMI_VOIP_CALL_STATE_INVALID: - // do noting - break; - - case MMI_VOIP_CALL_STATE_ACTIVE: - voip_call_hangup_req(FALSE); - break; - - case MMI_VOIP_CALL_STATE_INCOMING: - Hal_Tone_Play_End(); - voip_call_reject_req(FALSE); - break; - - default: - voip_call_hangup_req(FALSE); - break; - } /* switch */ - - voip_signal_check_stop(); - 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; - } - - // stop callreq timer - if(NULL != voipcall_params.callreq_timer_id) { - Hal_Timer_Stop(voipcall_params.callreq_timer_id); - voipcall_params.callreq_timer_id = NULL; - } - - Hal_Mem_Set(&voipcall_params, 0, sizeof(voip_phone_call_params_t)); - voipcall_params.state = MMI_VOIP_CALL_STATE_NULL; - voip_set_volume_when_slider_act(); - voip_phone_cleanup(); - lv_watch_png_cache_all_free(); -#endif -} /* voip_activity_destroy_req */ diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/video_call.h b/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/video_call.h deleted file mode 100644 index 0f8f96be..00000000 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/mmi_video_call/video_call.h +++ /dev/null @@ -1,217 +0,0 @@ -/** - * @file videocall.h - * - */ - -#ifndef VIDEOCALL_H -#define VIDEOCALL_H - -#ifdef __cplusplus -extern "C" { -#endif - -/********************* - * INCLUDES - *********************/ -#ifdef LV_CONF_INCLUDE_SIMPLE -#include "lvgl.h" -#include "lv_ex_conf.h" -#else -#include "../../../lvgl/lvgl.h" -#include "../../../lv_ex_conf.h" -#endif - -#if 0 -void voip_alarm_ind(void); -#endif -bool voip_connect_check_req(void); -bool watch_voip_suspend_check(void); -void voip_activity_destroy_req(void); -uint8_t voip_get_call_volume(void); - -#if USE_LV_WATCH_VIDEOCALL !=0 -/********************* - * DEFINES - *********************/ -#define ENABLE_VIDEO_SCALE 1 -#define VOIP_PHONE_TEST 0 -#define VOIP_PHONEBOOK_TEST 0 -#define VOIP_JUPHOON_TEST 1 -#define VOIP_PHONE_RING_OFF_ANIMATION_TIME 0 -#define VOIP_PHONE_RING_OFF_CONTINUE_TIME 1500 /*ms*/ -#define VOIP_PHONE_NV_VOLUME_OFFSET 0 -#define VOIP_PHONE_NV_EMERGENCY_NUM_OFFSET 1 -#define VOIP_PHONEBOOK_CONTACTS_MAX_NAME_LEN NV_CONTACTS_MAX_NAME_LEN -#define VOIP_PHONEBOOK_CONTACTS_MAX_NUMBER_LEN NV_CONTACTS_MAX_NUMBER_LEN -#define LV_COLOR_HEX3(c) LV_COLOR_MAKE((uint8_t) (((c >> 4) & 0xF0) | ((c >> 8) & 0xF)), \ - (uint8_t) ((uint32_t)(c & 0xF0) | ((c & 0xF0) >> 4)), \ - (uint8_t) ((uint32_t)(c & 0xF) | ((c & 0xF) << 4))) -#define H263_FMT_QCIF 1 -#if H263_FMT_QCIF == 1 -#define VIDEO_SOURCE_WIDTH 176 -#define VIDEO_SOURCE_HEIGHT 144 -#endif - -#if (ENABLE_VIDEO_SCALE==0) -#define canvas_width VIDEO_SOURCE_WIDTH -#define canvas_heigh VIDEO_SOURCE_HEIGHT -#else -#define canvas_width LV_HOR_RES /* 240 */ -#define canvas_heigh LV_VER_RES /* 240 */ -#endif - -#define VIDEO_RENDER_PERIOD 50 /* 1000/50=20fps */ -#define VIDEO_SIGNAL_CHECK 0 -#define VIDEO_SIGNAL_CHECK_PERIOD 1000 -#define VIDEO_RAT_CHECK_PERIOD 200 -#define VIDEO_CALL_FPS_CHECK_LIMIT 5 -/********************** - * TYPEDEFS - **********************/ - -typedef enum { - VOIP_PHONE_UI_INCOMING = 0, - VOIP_PHONE_UI_DIALING, - VOIP_PHONE_UI_CONNECTED, -} voip_phone_ui_e; - -typedef enum -{ - MMI_VOIP_CALL_STATE_NULL = 0, - MMI_VOIP_CALL_STATE_ACTIVE = 1, - MMI_VOIP_CALL_STATE_HOLDING = 2, - MMI_VOIP_CALL_STATE_DIALING = 3, /* MO call only */ - MMI_VOIP_CALL_STATE_ALERTING = 4, /* MO call only */ - MMI_VOIP_CALL_STATE_INCOMING = 5, /* MT call only */ - MMI_VOIP_CALL_STATE_WAITING = 6, /* MT call only */ - MMI_VOIP_CALL_STATE_INVALID = 0xFF -} MMI_VOIP_CALL_STATE_E; - -enum voipregisterstate -{ - VOIP_REGISTER_OK = 0, - VOIP_UNREGISTERING, - VOIP_REGISTER_FAIL -}; - -/** H.263 picture size format */ -enum voip_h263_fmt { - VOIP_H263_FMT_SQCIF = 1, /**< 128 x 96 */ - VOIP_H263_FMT_QCIF = 2, /**< 176 x 144 */ - VOIP_H263_FMT_CIF = 3, /**< 352 x 288 */ - VOIP_H263_FMT_4CIF = 4, /**< 704 x 576 */ - VOIP_H263_FMT_16CIF = 5, /**< 1408 x 1152 */ - VOIP_H263_FMT_OTHER = 7, -}; - -enum local_remote_switch_e { - VOIP_REMOTE_SWITCH_REMOTE = 0, - VOIP_REMOTE_SWITCH_LOCAL, - VOIP_REMOTE_SWITCH_NULL, -}; - -enum enum_canvas_button_hidden_flag -{ - NOT_HIDDEN, - HIDDEN -}; - -typedef struct { - char contact_name[VOIP_PHONEBOOK_CONTACTS_MAX_NAME_LEN]; - char contact_number[VOIP_PHONEBOOK_CONTACTS_MAX_NUMBER_LEN]; - const void * img_src; - const void * img_src_small; - uint8_t contact_type; /*0:administrator, 1:standby administrator, 2: others*/ -} voip_phonebook_contact_t; - -typedef nv_watch_phonebook_info_t voip_phonebook_t; - -typedef struct { - lv_watch_obj_ext_t lv_watch_obj; - /*New data for this type */ - uint8_t body_padding_inner; - uint8_t append_width; - uint8_t cur_img_id; - voip_phonebook_t * cur_contact; - lv_ll_t contact_list; - lv_obj_t * label_phone_contact; - lv_obj_t * page_scrl; - lv_coord_t move_width; -} lv_voip_phonebook_obj_ext_t; - -typedef struct { - MMI_VOIP_CALL_STATE_E state; - int32_t index; /* Connection Index for use with, eg, AT+CHLD */ - bool is_mt; /* true if MT call */ - bool ring_off; /* true if ring off by user */ - bool ring_off_timeout; /* true if ring off timeout */ - bool buffer_alarm; -#define VOIP_RING_OFF_TIMER_LEN 1000 - TIMER_ID ring_off_timer_id; /* ring off timer */ - char number[NV_CONTACTS_MAX_NUMBER_LEN]; /* phone number */ - char name[NV_CONTACTS_MAX_NAME_LEN]; /* contact name */ - const void * img_src; - const void * img_src_small; - MODEM_VIDEO_CALL_TYPE voip_call_type; -#define VOIP_CALLREQ_TIMER_LEN 60*1000 - TIMER_ID callreq_timer_id; /* callreq timer */ - uint8_t speaker_volume; /* speaker volume during call procedure */ -} voip_phone_call_params_t; - -typedef struct { - lv_watch_obj_ext_t lv_watch_obj; - /*New data for this type */ - lv_obj_t * phone_status_label; - lv_obj_t * phone_animation_obj; - uint32_t connect_start_time; - voip_phone_ui_e phone_ui_t; - enum local_remote_switch_e local_remote_switch_flag; - enum voip_h263_fmt voiph263fmt; - lv_obj_t * connect_time; - lv_obj_t * ring_value_button; - lv_obj_t * view_switch_button; - lv_obj_t * ring_off_button; - enum enum_canvas_button_hidden_flag canvas_button_hidden_flag; - lv_obj_t * signal_weak_label; - lv_obj_t * canvas; -} lv_voip_phone_obj_ext_t; - -/********************** - * GLOBAL PROTOTYPES - **********************/ -lv_voip_phone_obj_ext_t * voip_phone_get_ext(void); -void * voip_phone_get_video_buffer(void); -void watch_voip_call_response_connect(int32_t index); -int get_voipcall_params_index(void); -void watch_voip_call_response_no_carrier(int32_t index, uint8_t isNoCarrier); -void watch_voip_call_response_alerting(int32_t index); -void watch_voip_incomingcall_response(char * number, int32_t calltype); -void watch_voip_call_response_bottom_error(void); -void watch_voip_call_response_bottom_need_redail(void); -bool check_voipcall_enter_pm_ind(void); -void watch_voip_message_handle_init(void); -void watch_ui_voip_message_handle(void * voipmsg); -void watch_voip_autotest_handle(void * testmsg); - -void voip_call_init(void); -int8_t voip_call_dial_req(MODEM_VIDEO_CALL_TYPE calltype, char * pContactUri); -void voip_call_hangup_req(BOOL bye); -int8_t voip_call_answer_req(void); -void voip_call_reject_req(BOOL bye); -void voip_fps_check(int8_t fps); - -/**************************** - * Create a demo application - ****************************/ -void videocallmain_create(lv_obj_t *btn, lv_event_t e); - -/********************** - * MACROS - **********************/ -#endif //#if USE_LV_WATCH_VIDEOCALL !=0 - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif /*VIDEOCALL_H*/ diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/pedometer/bodyinfo.c b/2.sdk/sdk/gui/lv_watch/lv_apps/pedometer/bodyinfo.c index db95b056..b7a1f6e9 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/pedometer/bodyinfo.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/pedometer/bodyinfo.c @@ -30,7 +30,7 @@ static void ok_btn_event_cb(lv_obj_t * obj, lv_event_t e); static void cancel_btn_event_cb(lv_obj_t * obj, lv_event_t e); static lv_obj_t * setting_opt_create(lv_obj_t * par); static lv_obj_t * roller_create(lv_obj_t * par, uint8_t type, uint16_t sel_value); -static void bodyinfo_set(nv_watch_pedometer_setting_t * pedo_set); +//static void bodyinfo_set(nv_watch_pedometer_setting_t * pedo_set); static lv_obj_t * bodyinfo_setting_create(lv_obj_t * activity_obj); static void bodyinfo_prepare_destory(lv_obj_t * activity_obj); static void get_optstr_from_num(uint16_t num, char * stropt, uint8_t type); @@ -160,7 +160,8 @@ void bodyinfo_init(nv_watch_pedometer_setting_t * pedo_set) * STATIC FUNCTIONS **********************/ -static void bodyinfo_set(nv_watch_pedometer_setting_t * pedo_set) +//static void bodyinfo_set(nv_watch_pedometer_setting_t * pedo_set) +void bodyinfo_set(nv_watch_pedometer_setting_t * pedo_set) { //write to nv UI_NV_Write_Req(NV_SECTION_UI_PEDOMETER, NV_PEDOMETER_SETTING_OFFSET, NV_PEDOMETER_SETTING_LEN, (uint8_t *)pedo_set); diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/pedometer/pedometer.c b/2.sdk/sdk/gui/lv_watch/lv_apps/pedometer/pedometer.c index 8cde3c83..633414c9 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/pedometer/pedometer.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/pedometer/pedometer.c @@ -14,6 +14,361 @@ static uint16_t pedometer_goalsteps = 10000; +#ifdef __MMI_PEDOMETER_STEP_AND_GOAL_STYLE__ +uint16_t pedometer_get_steps(void) +{ + return asl_pedometer_steps_get(); +} + +void pedometer_set_goalsteps(uint16_t goal) +{ + pedometer_goalsteps = goal; +} + +uint16_t pedometer_get_goalsteps(void) +{ + return pedometer_goalsteps; +} + +static lv_obj_t * digital_content_create(lv_obj_t * par, int16_t level, uint8_t first_time) +{ + lv_obj_t * par_obj = NULL; + + if(first_time) + { + lv_obj_t * content = lv_watch_cont_create(par, LV_LAYOUT_ROW_MID, &lv_style_transp_fit, lv_obj_get_width(par)); + lv_cont_set_fit2(content, LV_FIT_TIGHT, LV_FIT_TIGHT); + lv_obj_align(content, par, LV_ALIGN_CENTER, 0, 0); + par_obj = content; + } + else + { + par_obj = par; + } + lv_cont_set_layout(par_obj, LV_LAYOUT_OFF); + + char str[10] = ""; + snprintf(str, sizeof(str), "%d", level); + + const void * digitalSrcList[] = { + ICON_PEDOMETER_DIGITAL_0, + ICON_PEDOMETER_DIGITAL_1, + ICON_PEDOMETER_DIGITAL_2, + ICON_PEDOMETER_DIGITAL_3, + ICON_PEDOMETER_DIGITAL_4, + ICON_PEDOMETER_DIGITAL_5, + ICON_PEDOMETER_DIGITAL_6, + ICON_PEDOMETER_DIGITAL_7, + ICON_PEDOMETER_DIGITAL_8, + ICON_PEDOMETER_DIGITAL_9, + }; + + for(int8_t i = 0; i < strlen(str); i++) { + lv_obj_t * img = lv_img_create(par_obj, NULL); + LV_ASSERT_MEM(img); + if(img == NULL) return NULL; + lv_img_set_src(img, digitalSrcList[str[i] - '0']); + lv_obj_align(img, NULL, LV_ALIGN_IN_TOP_LEFT, i * (lv_obj_get_width(img) + 5), 0); + } + + return par_obj; +} + +void pedometer_update_screen(void) +{ + lv_drop_pull_obj_ext_t * ext = NULL; + +#if USE_LV_WATCH_LAUNCHER != 0 + ext = launcher_get_pull_ext(); +#endif + if(NULL == ext) + return; + + printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + lv_obj_t * label = ext->pedometer_goal; + char str[10] = ""; + snprintf(str, sizeof(str), "%d", pedometer_get_goalsteps()); + lv_label_set_text(label, str); + + lv_obj_t * pedometer_cont = ext->pedometer_cont; + lv_obj_clean(pedometer_cont); + digital_content_create(pedometer_cont, pedometer_get_steps(), 0); +} + +void mmi_ui_msg_update_pedometer_screen(void) +{ + pedometer_update_screen(); +} + +void pedometer_update_goal(uint16_t goal) +{ + pedometer_set_goalsteps(goal); +} + +static lv_obj_t * s_step_cont_main = NULL; +static lv_obj_t * s_step_cont_goal = NULL; +static lv_obj_t * s_step_label_goal_set = NULL; +static uint32_t s_step_goal_temp_value = 0; + +static void mmi_step_goal_set_btn_event_cb(lv_obj_t * btn, lv_event_t e) +{ + if(LV_EVENT_CLICKED != e) + return; + + uint32_t index = lv_watch_get_free_num(btn); + if(1 == index) + { + if(500 < s_step_goal_temp_value) + s_step_goal_temp_value -= 500; + + char str[8] = ""; + sprintf(str, "%d", s_step_goal_temp_value); + lv_label_set_text(s_step_label_goal_set, str); + lv_label_set_align(s_step_label_goal_set, LV_LABEL_ALIGN_CENTER); + lv_obj_align(s_step_label_goal_set, NULL, LV_ALIGN_CENTER, 0, -LV_VER_RES / 8); + } + else if(2 == index) + { + if(50000 > s_step_goal_temp_value) + s_step_goal_temp_value += 500; + + char str[8] = ""; + sprintf(str, "%d", s_step_goal_temp_value); + lv_label_set_text(s_step_label_goal_set, str); + lv_label_set_align(s_step_label_goal_set, LV_LABEL_ALIGN_CENTER); + lv_obj_align(s_step_label_goal_set, NULL, LV_ALIGN_CENTER, 0, -LV_VER_RES / 8); + } + else if(4 == index) + { + #if USE_LV_WATCH_BODYINFO != 0 + nv_watch_pedometer_setting_t pedo; + memset(&pedo, 0, sizeof(nv_watch_pedometer_setting_t)); + bodyinfo_init(&pedo); + pedo.goal = s_step_goal_temp_value; + bodyinfo_set(&pedo); + #endif + pedometer_set_goalsteps(s_step_goal_temp_value); + pedometer_update_screen(); + + lv_obj_set_hidden(s_step_cont_main, false); + lv_obj_set_hidden(s_step_cont_goal, true); + } + else + { + lv_obj_set_hidden(s_step_cont_main, false); + lv_obj_set_hidden(s_step_cont_goal, true); + } +} + +lv_obj_t * mmi_step_goal_set_cont_create(lv_obj_t * tab, lv_obj_t * tileview) +{ + lv_obj_t * cont = lv_cont_create(tab, NULL); + if(NULL == cont) + return NULL; + lv_obj_set_size(cont, LV_HOR_RES, LV_VER_RES); + lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); + lv_tileview_add_element(tileview, cont); + lv_obj_set_click(cont, false); + + lv_obj_t * btn_decrease = lv_imgbtn_create(cont, NULL); + lv_imgbtn_set_src(btn_decrease, LV_BTN_STATE_RELEASED, ICON_DECREASE); + lv_imgbtn_set_src(btn_decrease, LV_BTN_STATE_PRESSED, ICON_DECREASE); + lv_obj_set_event_cb(btn_decrease, mmi_step_goal_set_btn_event_cb); +#ifdef USE_LV_WATCH_UI_466_466 + lv_obj_align(btn_decrease, NULL, LV_ALIGN_IN_LEFT_MID, LV_HOR_RES / 8, -LV_VER_RES / 8); +#else + lv_obj_align(btn_decrease, NULL, LV_ALIGN_IN_LEFT_MID, LV_HOR_RES / 12, -LV_VER_RES / 8); +#endif + lv_watch_set_free_num(btn_decrease, 1); + + lv_obj_t * btn_increase = lv_imgbtn_create(cont, NULL); + lv_imgbtn_set_src(btn_increase, LV_BTN_STATE_RELEASED, ICON_INCREASE); + lv_imgbtn_set_src(btn_increase, LV_BTN_STATE_PRESSED, ICON_INCREASE); + lv_obj_set_event_cb(btn_increase, mmi_step_goal_set_btn_event_cb); +#ifdef USE_LV_WATCH_UI_466_466 + lv_obj_align(btn_increase, NULL, LV_ALIGN_IN_RIGHT_MID, -LV_HOR_RES / 8, -LV_VER_RES / 8); +#else + lv_obj_align(btn_increase, NULL, LV_ALIGN_IN_RIGHT_MID, -LV_HOR_RES / 12, -LV_VER_RES / 8); +#endif + lv_watch_set_free_num(btn_increase, 2); + + lv_obj_t * label_goal = lv_label_create(cont, NULL); +#ifdef USE_LV_WATCH_UI_466_466 + lv_obj_add_style(label_goal, LV_LABEL_PART_MAIN, &lv_watch_font40); +#else + lv_obj_add_style(label_goal, LV_LABEL_PART_MAIN, &lv_watch_font26); +#endif + char str[8] = ""; + s_step_goal_temp_value = pedometer_get_goalsteps(); + sprintf(str, "%d", s_step_goal_temp_value); + lv_label_set_text(label_goal, str); + lv_label_set_align(label_goal, LV_LABEL_ALIGN_CENTER); + lv_obj_align(label_goal, NULL, LV_ALIGN_CENTER, 0, -LV_VER_RES / 8); + lv_obj_set_click(label_goal, false); + s_step_label_goal_set = label_goal; + + lv_obj_t * btn_cancel = lv_btn_create(cont, NULL); +#ifdef USE_LV_WATCH_UI_466_466 + lv_obj_set_size(btn_cancel, 140, 70); +#else + lv_obj_set_size(btn_cancel, 100, 56); +#endif + lv_obj_set_style_local_bg_color(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0x47, 0xA6, 0xFF)); + lv_obj_set_style_local_radius(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 30); + lv_obj_set_style_local_bg_color(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_PRESSED, LV_COLOR_MAKE(0x47, 0xA6, 0xFF)); + lv_obj_set_style_local_radius(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_PRESSED, 30); +#ifdef USE_LV_WATCH_UI_466_466 + lv_obj_align(btn_cancel, NULL, LV_ALIGN_IN_BOTTOM_LEFT, 70, -60); +#else + lv_obj_align(btn_cancel, NULL, LV_ALIGN_IN_BOTTOM_LEFT, 10, -20); +#endif + lv_obj_set_event_cb(btn_cancel, mmi_step_goal_set_btn_event_cb); + lv_watch_set_free_num(btn_cancel, 3); + lv_obj_t * label_cancel = lv_label_create(btn_cancel, NULL); + lv_label_set_text_id(label_cancel, WATCH_TEXT_ID_CANCEL); +#ifdef USE_LV_WATCH_UI_466_466 + lv_obj_add_style(label_cancel, LV_LABEL_PART_MAIN, &lv_watch_font40_black); +#else + lv_obj_add_style(label_cancel, LV_LABEL_PART_MAIN, &lv_watch_font26_black); +#endif + + lv_obj_t * btn_ok = lv_btn_create(cont, btn_cancel); + lv_obj_set_style_local_bg_color(btn_ok, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0xFF, 0x6F, 0x91)); + lv_obj_set_style_local_radius(btn_ok, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 30); + lv_obj_set_style_local_bg_color(btn_ok, LV_BTN_PART_MAIN, LV_STATE_PRESSED, LV_COLOR_MAKE(0xFF, 0x6F, 0x91)); + lv_obj_set_style_local_radius(btn_ok, LV_BTN_PART_MAIN, LV_STATE_PRESSED, 30); +#ifdef USE_LV_WATCH_UI_466_466 + lv_obj_align(btn_ok, NULL, LV_ALIGN_IN_BOTTOM_RIGHT, -70, -60); +#else + lv_obj_align(btn_ok, NULL, LV_ALIGN_IN_BOTTOM_RIGHT, -10, -20); +#endif + lv_obj_set_event_cb(btn_ok, mmi_step_goal_set_btn_event_cb); + lv_watch_set_free_num(btn_ok, 4); + lv_obj_t * label_ok = lv_label_create(btn_ok, label_cancel); + lv_label_set_text_id(label_ok, WATCH_TEXT_ID_OK); + + return cont; +} + +static void mmi_step_goal_btn_event_cb(lv_obj_t * btn, lv_event_t e) +{ + if(LV_EVENT_CLICKED == e) + { + lv_obj_set_hidden(s_step_cont_main, true); + lv_obj_set_hidden(s_step_cont_goal, false); + } +} + +lv_obj_t * pedometer_create(lv_obj_t * tileview, uint16_t id) +{ + lv_obj_t * tab; + if(id == 0xFF) { + tab = tileview; + } else { + tab = launcher_tileview_add_tile(tileview, id); + LV_ASSERT_MEM(tab); + if(tab == NULL) return NULL; + } + + lv_obj_t * cont = lv_cont_create(tab, NULL); + if(NULL == cont) + return NULL; + lv_obj_set_size(cont, LV_HOR_RES, LV_VER_RES); + lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK); + lv_tileview_add_element(tileview, cont); + lv_obj_set_click(cont, false); + + // + lv_obj_t * cont_today = lv_watch_cont_create(cont, LV_LAYOUT_COLUMN_MID, &lv_style_transp_fit, lv_obj_get_width(cont)); + lv_tileview_add_element(tileview, cont_today); + lv_obj_set_click(cont_today, false); + + lv_obj_t * label = lv_label_create(cont_today, NULL); +#ifdef USE_LV_WATCH_UI_466_466 + lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font40); +#else + lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font26); +#endif + lv_label_set_text_id(label, WATCH_TEXT_ID_TODAY_STEP); + lv_obj_set_click(label, false); + +#if USE_LV_WATCH_BODYINFO != 0 + nv_watch_pedometer_setting_t pedo; + memset(&pedo, 0, sizeof(nv_watch_pedometer_setting_t)); + bodyinfo_init(&pedo); + pedometer_set_goalsteps(pedo.goal); +#endif + + lv_obj_t * digital_content = digital_content_create(cont_today, pedometer_get_steps(), 1); + + lv_obj_align(cont_today, NULL, LV_ALIGN_IN_TOP_MID, 0, LV_VER_RES / 6); + + // + lv_obj_t * cont_goal = lv_watch_cont_create(cont, LV_LAYOUT_COLUMN_MID, &lv_style_transp_fit, lv_obj_get_width(cont)); + lv_tileview_add_element(tileview, cont_goal); + lv_obj_set_click(cont_goal, false); + + label = lv_label_create(cont_goal, NULL); +#ifdef USE_LV_WATCH_UI_466_466 + lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font40); +#else + lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font26); +#endif + lv_label_set_text_id(label, WATCH_TEXT_ID_GOAL_STEP); + lv_obj_set_click(label, false); + + lv_obj_t * btn_goal = lv_btn_create(cont_goal, NULL); +#ifdef USE_LV_WATCH_UI_466_466 + lv_obj_set_size(btn_goal, 200, 70); +#else + lv_obj_set_size(btn_goal, 150, 56); +#endif + lv_obj_set_style_local_bg_color(btn_goal, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_MAKE(0x47, 0xA6, 0xFF)); + lv_obj_set_style_local_radius(btn_goal, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 30); + lv_obj_set_style_local_bg_color(btn_goal, LV_BTN_PART_MAIN, LV_STATE_PRESSED, LV_COLOR_MAKE(0x47, 0xA6, 0xFF)); + lv_obj_set_style_local_radius(btn_goal, LV_BTN_PART_MAIN, LV_STATE_PRESSED, 30); + lv_obj_set_event_cb(btn_goal, mmi_step_goal_btn_event_cb); + + label = lv_label_create(btn_goal, NULL); +#ifdef USE_LV_WATCH_UI_466_466 + lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font40); +#else + lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font26); +#endif + char str[10] = ""; + snprintf(str, sizeof(str), "%d", pedometer_get_goalsteps()); + lv_label_set_text(label, str); + lv_obj_set_click(label, false); + + lv_obj_align(cont_goal, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -LV_VER_RES / 8); + +#if USE_LV_WATCH_LAUNCHER != 0 + lv_drop_pull_obj_ext_t * ext = launcher_get_pull_ext(); + if(NULL != ext) + { + ext->pedometer_dot = NULL; + ext->pedometer_cont = digital_content; + ext->pedometer_goal = label; + } +#endif + + s_step_cont_main = cont; + lv_obj_set_hidden(s_step_cont_main, false); + + lv_obj_t * cont_set = mmi_step_goal_set_cont_create(tab, tileview); + if(NULL != cont_set) + { + s_step_cont_goal = cont_set; + lv_obj_set_hidden(s_step_cont_goal, true); + } + + printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + return tab; +} + +#else #define PEDOMETER_DEF_ANGLE 5000 #define PEDOMETER_CIRCLE_START 340 @@ -246,6 +601,8 @@ lv_obj_t * pedometer_create(lv_obj_t * tileview, uint16_t id) return tab; } +#endif + #else #include diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/pedometer/pedometer.h b/2.sdk/sdk/gui/lv_watch/lv_apps/pedometer/pedometer.h index fb415af7..969705f6 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/pedometer/pedometer.h +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/pedometer/pedometer.h @@ -61,6 +61,7 @@ void mmi_watch_pedometer_data_nv_default(nv_watch_pedometer_t * pedometer); lv_obj_t * record_create(lv_obj_t * tileview, uint16_t id); #endif void bodyinfo_init(nv_watch_pedometer_setting_t* pedo_set); +void bodyinfo_set(nv_watch_pedometer_setting_t * pedo_set); uint16_t pedometer_get_goalsteps(void); uint16_t pedometer_get_steps(void); void pedometer_update_goal(uint16_t goal); diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/phone/phone_api.c b/2.sdk/sdk/gui/lv_watch/lv_apps/phone/phone_api.c index c2f09f28..5c2d1f7a 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/phone/phone_api.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/phone/phone_api.c @@ -556,7 +556,6 @@ void phone_voice_call_req(char * number) strncpy(call_params.number, number, NV_CONTACTS_MAX_NUMBER_LEN); -#ifndef __MMI_ZHSX_SUPPORT__ phonebook_contact_t * contact_info = phonebook_get_contact_info(number); if(NULL != contact_info) { Hal_Mem_Copy(call_params.name, contact_info->contact_name, NV_CONTACTS_MAX_NAME_LEN); @@ -564,7 +563,20 @@ void phone_voice_call_req(char * number) call_params.img_src_small = contact_info->img_src_small; Hal_Mem_Free(contact_info); - } else { + } +#ifdef __MMI_ZHSX_SUPPORT__ + else + { + #ifdef __MMI_SOS_NUMBER_NAME_SUPPORT__ + mmi_sos_get_name_by_number(number, call_params.name); + + #else + + #endif + } +#else + else + { call_params.img_src = ICON_FAMILY; call_params.img_src_small = ICON_FAMILY_SMALL; } diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/phonebook/phonebook.c b/2.sdk/sdk/gui/lv_watch/lv_apps/phonebook/phonebook.c index e68e0267..bf6eacd6 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/phonebook/phonebook.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/phonebook/phonebook.c @@ -74,11 +74,6 @@ void phonebook_init(void) void phonebook_create_btn_event_cb(lv_obj_t * btn, lv_event_t e) { -#ifdef __MMI_CUSTOM_HENGAI_HEALTH__ - - mmi_heng_ai_blood_pressure_create_event_cb(btn, e); -#else - #ifdef __MMI_ZHSX_SUPPORT_PHONEBOOK_LIST_STYLE__ #ifdef __MMI_PHONEBOOK_CALLLOG_IN_ONE_MENU__ mmi_phonebook_calllog_create_event_cb(btn, e); @@ -93,8 +88,6 @@ void phonebook_create_btn_event_cb(lv_obj_t * btn, lv_event_t e) phonebook_create(NULL); } #endif - -#endif } void app_adaptor_update_phonebook_ind(app_adaptor_contact_t * contact_list, uint8_t count) diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/primary_menu/primary_menu_data.c b/2.sdk/sdk/gui/lv_watch/lv_apps/primary_menu/primary_menu_data.c index 9d04cbe1..33165aa7 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/primary_menu/primary_menu_data.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/primary_menu/primary_menu_data.c @@ -49,12 +49,6 @@ static watch_app_info_t s_main_menu_four_grid[] = #if USE_LV_WATCH_ALIPAY != 0 { ICON_ALIPAY, WATCH_TEXT_ID_ALIPAY, upay_create_event_cb }, #endif -#ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__ - { ICON_VIDEOCALL, WATCH_TEXT_ID_VIDEOCALL, mmi_video_call_create_event_cb }, -#endif -#ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__ - { ICON_VIDEOCALL, WATCH_TEXT_ID_VIDEOCALL, mmi_video_call_create_event_cb }, -#endif #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__ { ICON_VIDEOCALL, WATCH_TEXT_ID_VIDEOCALL, mmi_video_call_create_event_cb }, #endif diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting.c b/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting.c index 43b2570b..db58717d 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting.c @@ -64,8 +64,12 @@ static mmi_watch_list_item_t settingList[] = { ICON_SETTING_APP_QRCODE, WATCH_TEXT_ID_APP_QRCODE, app_qrcode_create_event_cb }, #endif #if USE_LV_WATCH_QRCODE != 0 +#ifdef __MMI_APP_QRCODE_AND_DEVICE_QRCODE_IN_ONE_SUPPORT__ + { ICON_SETTING_QRCODE, WATCH_TEXT_ID_APP_DEVICE_QRCODE, mmi_app_and_device_qrcode_create_event_cb }, +#else { ICON_SETTING_QRCODE, WATCH_TEXT_ID_DEVICE_QRCODE, qrcode_create_event_cb }, #endif +#endif #if USE_LV_WATCH_RESTART_AND_RESET != 0 { ICON_SETTING_RESET, WATCH_TEXT_ID_RESTART_AND_RESET, restart_and_reset_create_btn_action }, #endif @@ -76,9 +80,6 @@ static mmi_watch_list_item_t settingList[] = { ICON_SETTING_ABOUT, WATCH_TEXT_ID_ABOUT_WATCH, setting_about_create_btn_action }, #endif - - - #else // __MMI_ZHSX_SUPPORT__ #if USE_LV_BLUETOOTH != 0 @@ -222,8 +223,6 @@ void setting_init(void) #ifdef __MMI_ZHSX_SUPPORT__ mmi_watch_setting_ext_data_nv_read(); #endif - - } lv_obj_t * setting_create(lv_obj_t * par) diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_ext.c b/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_ext.c index 0816b67b..936f1887 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_ext.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_ext.c @@ -10,6 +10,7 @@ static nv_watch_setting_ext_t s_watch_setting_ext_value = {0}; void mmi_watch_setting_ext_data_nv_default(nv_watch_setting_ext_t * watch_settings) { watch_settings->white_list_switch = MMI_WHITE_LIST_SWITCH_DEFAULT; + watch_settings->timing_location_switch = MMI_TIMING_LOCATION_SWITCH_DEFAULT; watch_settings->dial_pad_switch = MMI_DIAL_PAD_SWITCH_DEFAULT; watch_settings->low_battery_switch = MMI_LOW_BATTERY_SWITCH_DEFAULT; watch_settings->fall_down_switch = MMI_FALL_DOWN_SWITCH_DEFAULT; @@ -40,9 +41,7 @@ void mmi_watch_setting_ext_data_nv_read(void) { printf("[@CHENG_DEBUG][%s][%d]: nv read fail\n", __FUNCTION__, __LINE__); mmi_watch_setting_ext_data_nv_default(&s_watch_setting_ext_value); - } - } void mmi_watch_setting_ext_data_nv_write(void) @@ -71,6 +70,21 @@ void mmi_white_list_switch_set(uint8_t value) } } +// 0-close; 1-open +uint8_t mmi_timing_location_switch_get(void) +{ + return (s_watch_setting_ext_value.timing_location_switch); +} + +void mmi_timing_location_switch_set(uint8_t value) +{ + if(0 == value || 1 == value) + { + s_watch_setting_ext_value.timing_location_switch = value; + mmi_watch_setting_ext_data_nv_write(); + } +} + // 0-close; 1-open uint8_t mmi_dial_pad_switch_get(void) { diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_ext.h b/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_ext.h index 291630cc..4d6f2685 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_ext.h +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/setting/setting_ext.h @@ -25,6 +25,9 @@ void mmi_watch_setting_ext_data_nv_read(void); uint8_t mmi_white_list_switch_get(void); void mmi_white_list_switch_set(uint8_t value); +uint8_t mmi_timing_location_switch_get(void); +void mmi_timing_location_switch_set(uint8_t value); + uint8_t mmi_dial_pad_switch_get(void); void mmi_dial_pad_switch_set(uint8_t value); diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/shutdown/shutdown.c b/2.sdk/sdk/gui/lv_watch/lv_apps/shutdown/shutdown.c index 68d643fa..34438b45 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/shutdown/shutdown.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/shutdown/shutdown.c @@ -181,8 +181,10 @@ void shutdown_confirm_btn_action(lv_obj_t * btn, lv_event_t event) return; } +#ifndef __MMI_ZHSX_SUPPORT__ lv_task_del(lowbattery_task_p); lowbattery_task_p = NULL; +#endif #if USE_LV_WATCH_SIMCHECK lv_task_del(checksim_task_p); checksim_task_p = NULL; @@ -225,7 +227,9 @@ void shutdown_confirm_btn_action(lv_obj_t * btn, lv_event_t event) #else printf("shutdown without power off gif.\n"); Hal_Backlight_Off(); + #ifndef __MMI_ZHSX_SUPPORT__ lv_task_del(lowbattery_task_p); + #endif Hal_Power_Off(HAL_TYPE_POWER_OFF); #endif return; diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/sos/sos.c b/2.sdk/sdk/gui/lv_watch/lv_apps/sos/sos.c index 2b648b22..d1edebc0 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/sos/sos.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/sos/sos.c @@ -64,6 +64,24 @@ bool mmi_sos_number_is_empty(void) return true; } +#ifdef __MMI_SOS_NUMBER_NAME_SUPPORT__ +bool mmi_sos_get_name_by_number(char * number, char * name) +{ + uint8_t i = 0; + + for(i = 0; i < NV_WATCH_SOS_NUMBER_MAX; i++) + { + if(0 == strcmp(number, s_sos_number.number[i])) + { + Hal_Mem_Copy(name, s_sos_number.name[i], NV_CONTACTS_MAX_NAME_LEN); + return true; + } + } + + return false; +} +#endif + uint8_t get_sos_status(void) { return s_sos_state; diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/sos/sos.h b/2.sdk/sdk/gui/lv_watch/lv_apps/sos/sos.h index de794384..2f7434b3 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/sos/sos.h +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/sos/sos.h @@ -70,6 +70,10 @@ lv_obj_t * sos_create(lv_obj_t * activity_obj); #ifdef __MMI_ZHSX_SUPPORT__ void mmi_sos_number_nv_read(void); void mmi_sos_number_set(nv_watch_sos_number_t * sos_number); +#ifdef __MMI_SOS_NUMBER_NAME_SUPPORT__ +bool mmi_sos_get_name_by_number(char * number, char * name); +#endif + lv_res_t mmi_key_back_sos_btn_action(void); lv_obj_t * sos_confirm_create(lv_obj_t * activity_obj); void sos_create_event_cb(lv_obj_t * btn, lv_event_t e); diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/status_and_setting/status_and_setting.c b/2.sdk/sdk/gui/lv_watch/lv_apps/status_and_setting/status_and_setting.c index 0c6493e1..4f7217a8 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/status_and_setting/status_and_setting.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/status_and_setting/status_and_setting.c @@ -229,11 +229,12 @@ static void status_update(lv_anim_t * anim) lv_obj_set_click(label, false); } else { - img = lv_img_create(status_ext->network_status_cont, NULL); - LV_ASSERT_MEM(img); - if(img == NULL) return; - lv_img_set_src(img, ICON_STATUS_NO_SIM_CARD); - lv_img_set_src(status_ext->phone_signal_img, phone_signal_img[0]); + //img = lv_img_create(status_ext->network_status_cont, NULL); + //LV_ASSERT_MEM(img); + //if(img == NULL) return; + //lv_img_set_src(img, ICON_STATUS_NO_SIM_CARD); + //lv_img_set_src(status_ext->phone_signal_img, phone_signal_img[0]); + lv_img_set_src(status_ext->phone_signal_img, ICON_STATUS_NO_SIM_CARD); } // update charging status @@ -382,7 +383,7 @@ static lv_obj_t * status_content_create(lv_obj_t * par) lv_obj_set_click(battery_label, false); lv_obj_align(battery_label, NULL, LV_ALIGN_CENTER, 0, 0); } - + status_ext->charging_img = lv_img_create(content_2, NULL); LV_ASSERT_MEM(status_ext->charging_img); if(status_ext->charging_img == NULL) return NULL; diff --git a/2.sdk/sdk/gui/lv_watch/lv_watch.c b/2.sdk/sdk/gui/lv_watch/lv_watch.c index b086ae45..7b65f7f9 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_watch.c +++ b/2.sdk/sdk/gui/lv_watch/lv_watch.c @@ -23,7 +23,7 @@ * TYPEDEFS **********************/ static watch_info_t * watch_info; -lv_task_t * lowbattery_task_p; +lv_task_t * lowbattery_task_p = NULL; #if USE_LV_WATCH_SIMCHECK lv_task_t * checksim_task_p = NULL; #endif @@ -536,7 +536,9 @@ static lv_obj_t * watch_create(bool silentReset) } #endif +#ifndef __MMI_ZHSX_SUPPORT__ lowbattery_task_p = lv_task_create(lowbattery_task, 5000, LV_TASK_PRIO_MID, NULL); +#endif #if USE_LV_WATCH_SIMCHECK checksim_task_p = lv_task_create(simcheck_task, WATCH_CHECK_SIM_STATUS_PERIOD, LV_TASK_PRIO_MID, NULL); diff --git a/2.sdk/sdk/gui/lv_watch/lv_watch_common.c b/2.sdk/sdk/gui/lv_watch/lv_watch_common.c index e9e4b956..0ca7cbf6 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_watch_common.c +++ b/2.sdk/sdk/gui/lv_watch/lv_watch_common.c @@ -526,7 +526,9 @@ void lv_watch_go_home(void) if(ext->actId > ACT_ID_ONE_LEVEL_MAX) { if(ext->actId == ACT_ID_ALBUM) { + #if USE_LV_WATCH_ALBUM album_destory(false); + #endif } else if(NULL != ext->prepare_destory) { ext->prepare_destory(obj); } diff --git a/2.sdk/sdk/gui/lv_watch/mmi_location/mmi_location.c b/2.sdk/sdk/gui/lv_watch/mmi_location/mmi_location.c index bc78793c..cdd6225f 100644 --- a/2.sdk/sdk/gui/lv_watch/mmi_location/mmi_location.c +++ b/2.sdk/sdk/gui/lv_watch/mmi_location/mmi_location.c @@ -25,9 +25,15 @@ static void mmi_watch_location_mission_timer_cb(uint32_t para); void mmi_watch_location_mission_list_init(void) { s_watch_location_mission_ll_locked = 0; + _lv_ll_clear(&s_watch_location_mission_ll); _lv_ll_init(&s_watch_location_mission_ll, sizeof(MMI_WATCH_LOCATION_TYPE_E)); } +void mmi_watch_location_mission_list_clear(void) +{ + _lv_ll_clear(&s_watch_location_mission_ll); +} + /* void mmi_watch_location_mission_list_node_remove(MMI_WATCH_LOCATION_TYPE_E location_type) { diff --git a/2.sdk/sdk/gui/lv_watch/mmi_location/mmi_location.h b/2.sdk/sdk/gui/lv_watch/mmi_location/mmi_location.h index fc96c855..4a9e5266 100644 --- a/2.sdk/sdk/gui/lv_watch/mmi_location/mmi_location.h +++ b/2.sdk/sdk/gui/lv_watch/mmi_location/mmi_location.h @@ -111,6 +111,7 @@ typedef enum void mmi_watch_location_mission_list_init(void); +void mmi_watch_location_mission_list_clear(void); void mmi_watch_location_mission_timed_location_action(void); void mmi_watch_location_mission_current_location_action(void); diff --git a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.c b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.c index e8f64210..617f3228 100644 --- a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.c +++ b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.c @@ -451,6 +451,9 @@ bool mmi_protocol_action_send_location(MMI_WATCH_LOCATION_DATA_T * location_data bool mmi_protocol_action_location(void) { + if(0 == mmi_timing_location_switch_get()) + return false; + mmi_watch_location_mission_timed_location_action(); return true; } 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 cfe752da..8ee21460 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 @@ -842,7 +842,7 @@ bool mmi_protocol_fzd_parse_SERVER_SET_REBOOT(unsigned char * next_buff, unsigne result = true; mmi_protocol_fzd_send_without_data(action); - //mmi_watch_reboot_aciton(); + mmi_watch_reboot_aciton(); return result; } @@ -956,15 +956,15 @@ bool mmi_protocol_fzd_parse_SERVER_SET_CALL(unsigned char * next_buff, unsigned mmi_protocol_fzd_send_without_data(action); uos_sleep(10); - char * number = (char *)lv_mem_alloc(next_buff_len + 1); + char * number = (char *)lv_mem_alloc(NV_CONTACTS_MAX_NUMBER_LEN); if(NULL == number) { PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); return false; } - _lv_memset_00(number, next_buff_len + 1); - _lv_memcpy(number, next_buff, next_buff_len + 1); - //phone_voice_call_req(number); + _lv_memset_00(number, NV_CONTACTS_MAX_NUMBER_LEN); + _lv_memcpy(number, next_buff, ((NV_CONTACTS_MAX_NUMBER_LEN > next_buff_len) ? next_buff_len : NV_CONTACTS_MAX_NUMBER_LEN - 1)); + phone_voice_call_req(number); return result; } @@ -2004,6 +2004,55 @@ bool mmi_protocol_fzd_parse_ACTION_GET_WEATHER(unsigned char * next_buff, unsign return result; } +#ifdef __MMI_SOS_NUMBER_NAME_SUPPORT__ +bool mmi_protocol_fzd_parse_SERVER_SET_SOS_NUMBER_NAME(unsigned char * next_buff, unsigned int next_buff_len) +{ + bool result = false; + MMI_PROTOCOL_FZD_ACTION_ENUM action = MMI_FZD_SERVER_SET_SOS_NUMBER_NAME; + + 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); + + uint8_t i = 0; + unsigned char * temp_ptr = NULL; + nv_watch_sos_number_t sos_number = {0}; + + while (NULL != next_buff) + { + temp_ptr = km_strtok_r(NULL, ",", &next_buff); + PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %s,%s\n", __FUNCTION__, __LINE__, temp_ptr, next_buff); + + if (NULL != temp_ptr) + { + strncpy(sos_number.number[i], temp_ptr, FZD_MIN(strlen(temp_ptr), (WATCH_CONTACTS_MAX_NUMBER_LEN - 1))); + } + + temp_ptr = km_strtok_r(NULL, ",", &next_buff); + if (NULL != temp_ptr) + { + uint8_t t_len = 0; + + mmi_unicode_hex_str_to_utf8_str(temp_ptr, strlen(temp_ptr), sos_number.name[i], &t_len); + } + + i++; + if(NV_WATCH_SOS_NUMBER_MAX <= i) + { + break; + } + } + + mmi_sos_number_set(&sos_number); + + return result; +} +#else bool mmi_protocol_fzd_parse_SERVER_SET_SOS_NUMBER(unsigned char * next_buff, unsigned int next_buff_len) { bool result = false; @@ -2043,6 +2092,7 @@ bool mmi_protocol_fzd_parse_SERVER_SET_SOS_NUMBER(unsigned char * next_buff, uns return result; } +#endif bool mmi_protocol_fzd_parse_SERVER_SET_CENTER_NUMBER(unsigned char * next_buff, unsigned int next_buff_len) { @@ -2211,6 +2261,42 @@ bool mmi_protocol_fzd_action_unbind(void) return mmi_protocol_fzd_send_without_data(MMI_FZD_ACTION_UNBIND); } +bool mmi_protocol_fzd_action_get_app_qrcode(void) +{ +#ifdef __MMI_APP_QRCODE_FROM_SERVER_SUPPORT__ + if(0 == mmi_app_qrcode_get_flag_get()) + return mmi_protocol_fzd_send_without_data(MMI_FZD_ACTION_GET_APP_QRCODE); + else + return false; +#else + return false; +#endif +} + +bool mmi_protocol_fzd_parse_ACTION_GET_APP_QRCODE(unsigned char * next_buff, unsigned int next_buff_len) +{ + bool result = false; + MMI_PROTOCOL_FZD_ACTION_ENUM action = MMI_FZD_ACTION_GET_APP_QRCODE; + +#ifdef __MMI_APP_QRCODE_FROM_SERVER_SUPPORT__ + if(NULL == next_buff || 0 == next_buff_len) + { + PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + return false; + } + + result = true; + + unsigned int next_buff_len_new = 0; + + next_buff_len_new = mmi_protocol_fzd_voice_data_decrypt(next_buff, next_buff_len); + PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: %d, %d\n", __FUNCTION__, __LINE__, next_buff_len, next_buff_len_new); + mmi_app_qrcode_content_buffer_set(next_buff, next_buff_len_new); +#endif + + return result; +} + #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__ #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL_WULIAN__ @@ -3092,6 +3178,27 @@ bool mmi_protocol_fzd_parse_SERVER_SET_SLEEPTIME(unsigned char * next_buff, unsi } #endif +// 0-off; 1-on +bool mmi_protocol_fzd_parse_SERVER_SET_UD_SWITCH(unsigned char * next_buff, unsigned int next_buff_len) +{ + bool result = false; + MMI_PROTOCOL_FZD_ACTION_ENUM action = MMI_FZD_SERVER_SET_UD_SWITCH; + + 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); + + uint32_t value = atoi(next_buff); + mmi_timing_location_switch_set(value); + + return result; +} + bool mmi_protocol_fzd_parse_SERVER_SET_DIAL_PAD_SWITCH(unsigned char * next_buff, unsigned int next_buff_len) { bool result = false; @@ -3189,12 +3296,12 @@ bool mmi_protocol_fzd_parse_SERVER_SET_TAKE_OFF_SWITCH(unsigned char * next_buff result = true; mmi_protocol_fzd_send_without_data(action); - + uint32_t value = atoi(next_buff); mmi_take_off_switch_set(value); #ifdef __MMI_REMIND_take_off_SUPPORT__ - if(value) + if(value) { mmi_take_off_remind_init(); } 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 53c59d4d..185af1a9 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 @@ -134,11 +134,16 @@ typedef enum #endif MMI_FZD_ACTION_GET_WEATHER, +#ifdef __MMI_SOS_NUMBER_NAME_SUPPORT__ + MMI_FZD_SERVER_SET_SOS_NUMBER_NAME, +#else MMI_FZD_SERVER_SET_SOS_NUMBER, +#endif MMI_FZD_SERVER_SET_CENTER_NUMBER, MMI_FZD_SERVER_SET_MONITOR, MMI_FZD_ACTION_UNBIND, MMI_FZD_SERVER_SET_REBOOT, + MMI_FZD_ACTION_GET_APP_QRCODE, #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__ #if defined(__MMI_ZHSX_SUPPORT_VIDEO_CALL_WULIAN__) || defined(__MMI_ZHSX_SUPPORT_VIDEO_CALL_FZD__) || defined(__MMI_ZHSX_SUPPORT_VIDEO_CALL_TONGXIN__) @@ -157,6 +162,7 @@ typedef enum #ifdef __MMI_SLEEP_FUNCTION_SUPPORT__ MMI_FZD_SERVER_SET_SLEEPTIME, #endif + MMI_FZD_SERVER_SET_UD_SWITCH, MMI_FZD_SERVER_SET_DIAL_PAD_SWITCH, MMI_FZD_SERVER_SET_WHITE_LIST_SWITCH, MMI_FZD_SERVER_SET_LOW_BATTERY_SWITCH, @@ -212,6 +218,7 @@ typedef enum MMI_FZD_WARNING_TYPE_TAKE_OFF, MMI_FZD_WARNING_TYPE_TAKE_ON, MMI_FZD_WARNING_TYPE_FALL_DOWN, + MMI_FZD_WARNING_TYPE_MAX }MMI_PROTOCOL_FZD_WARNING_TYPE_ENUM; @@ -252,7 +259,6 @@ bool mmi_protocol_fzd_parse_SERVER_GET_CUR_LOCATION(unsigned char * next_buff, u bool mmi_protocol_fzd_parse_SERVER_SET_UD_INTERVAL(unsigned char * next_buff, unsigned int next_buff_len); bool mmi_protocol_fzd_parse_SERVER_SET_FACTORY(unsigned char * next_buff, unsigned int next_buff_len); - bool mmi_protocol_fzd_parse_SERVER_SET_POWEROFF(unsigned char * next_buff, unsigned int next_buff_len); bool mmi_protocol_fzd_parse_SERVER_SET_REBOOT(unsigned char * next_buff, unsigned int next_buff_len); @@ -293,7 +299,11 @@ bool mmi_protocol_fzd_action_send_cur_location(MMI_WATCH_LOCATION_DATA_T * locat bool mmi_protocol_fzd_action_send_get_weather(MMI_WATCH_LOCATION_DATA_T * location_data); bool mmi_protocol_fzd_parse_ACTION_GET_WEATHER(unsigned char * next_buff, unsigned int next_buff_len); +#ifdef __MMI_SOS_NUMBER_NAME_SUPPORT__ +bool mmi_protocol_fzd_parse_SERVER_SET_SOS_NUMBER_NAME(unsigned char * next_buff, unsigned int next_buff_len); +#else bool mmi_protocol_fzd_parse_SERVER_SET_SOS_NUMBER(unsigned char * next_buff, unsigned int next_buff_len); +#endif bool mmi_protocol_fzd_parse_SERVER_SET_CENTER_NUMBER(unsigned char * next_buff, unsigned int next_buff_len); @@ -302,6 +312,9 @@ bool mmi_protocol_fzd_action_send_warning_info(MMI_WATCH_LOCATION_DATA_T * locat bool mmi_protocol_fzd_action_unbind(void); +bool mmi_protocol_fzd_action_get_app_qrcode(void); +bool mmi_protocol_fzd_parse_ACTION_GET_APP_QRCODE(unsigned char * next_buff, unsigned int next_buff_len); + #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__ bool mmi_protocol_fzd_action_get_vc_config(void); bool mmi_protocol_fzd_action_VC_CALL_REQUEST(char * number, uint8_t call_type); @@ -310,6 +323,7 @@ bool mmi_protocol_fzd_action_VC_CALL_REQUEST(char * number, uint8_t call_type); #ifdef __MMI_ZHSX_SUPPORT_DO_NOT_DISTURB__ bool mmi_protocol_fzd_parse_SERVER_SET_NOT_DISTURB(unsigned char * next_buff, unsigned int next_buff_len); #endif +bool mmi_protocol_fzd_parse_SERVER_SET_UD_SWITCH(unsigned char * next_buff, unsigned int next_buff_len); bool mmi_protocol_fzd_parse_SERVER_SET_DIAL_PAD_SWITCH(unsigned char * next_buff, unsigned int next_buff_len); bool mmi_protocol_fzd_parse_SERVER_SET_WHITE_LIST_SWITCH(unsigned char * next_buff, unsigned int next_buff_len); bool mmi_protocol_fzd_parse_SERVER_SET_LOW_BATTERY_SWITCH(unsigned char * next_buff, unsigned int next_buff_len); @@ -348,6 +362,8 @@ bool mmi_protocol_fzd_action_hengai_sleep_data(char * file_buf, uint32_t file_si #endif + + #endif #ifdef __cplusplus diff --git a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd_content.c b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd_content.c index cb5cc2c5..39e7164b 100644 --- a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd_content.c +++ b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd_content.c @@ -56,11 +56,16 @@ static unsigned char * mmi_protocol_fzd_action_string_get(MMI_PROTOCOL_FZD_ACTIO {MMI_FZD_ACTION_SEND_PHOTO, "img"}, #endif {MMI_FZD_ACTION_GET_WEATHER, "WT"}, + #ifdef __MMI_SOS_NUMBER_NAME_SUPPORT__ + {MMI_FZD_SERVER_SET_SOS_NUMBER_NAME, "SOS2"}, + #else {MMI_FZD_SERVER_SET_SOS_NUMBER, "SOS"}, + #endif {MMI_FZD_SERVER_SET_CENTER_NUMBER, "CENTER"}, {MMI_FZD_SERVER_SET_MONITOR, "MONITOR"}, {MMI_FZD_ACTION_UNBIND, "DLT"}, {MMI_FZD_SERVER_SET_REBOOT, "REBOOT"}, + {MMI_FZD_ACTION_GET_APP_QRCODE, "CID"}, #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__ #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL_WULIAN__ @@ -88,6 +93,7 @@ static unsigned char * mmi_protocol_fzd_action_string_get(MMI_PROTOCOL_FZD_ACTIO #ifdef __MMI_SLEEP_FUNCTION_SUPPORT__ {MMI_FZD_SERVER_SET_SLEEPTIME, "SLEEPTIME"}, #endif + {MMI_FZD_SERVER_SET_UD_SWITCH, "LOC_SWITCH"}, {MMI_FZD_SERVER_SET_DIAL_PAD_SWITCH, "KEYBRD"}, {MMI_FZD_SERVER_SET_WHITE_LIST_SWITCH, "WLKEY"}, {MMI_FZD_SERVER_SET_LOW_BATTERY_SWITCH, "LOWBAT"}, @@ -260,7 +266,6 @@ static bool mmi_protocol_fzd_content_parse(unsigned char * content_ptr, unsigned break; case MMI_FZD_ACTION_SEND_BLOOD: - break; case MMI_FZD_SERVER_SET_SPO2_INTERVAL: @@ -296,9 +301,15 @@ static bool mmi_protocol_fzd_content_parse(unsigned char * content_ptr, unsigned mmi_protocol_fzd_parse_ACTION_GET_WEATHER(next_buff, next_buff_len); break; + #ifdef __MMI_SOS_NUMBER_NAME_SUPPORT__ + case MMI_FZD_SERVER_SET_SOS_NUMBER_NAME: + mmi_protocol_fzd_parse_SERVER_SET_SOS_NUMBER_NAME(next_buff, next_buff_len); + break; + #else case MMI_FZD_SERVER_SET_SOS_NUMBER: mmi_protocol_fzd_parse_SERVER_SET_SOS_NUMBER(next_buff, next_buff_len); break; + #endif case MMI_FZD_SERVER_SET_CENTER_NUMBER: mmi_protocol_fzd_parse_SERVER_SET_CENTER_NUMBER(next_buff, next_buff_len); @@ -315,6 +326,10 @@ static bool mmi_protocol_fzd_content_parse(unsigned char * content_ptr, unsigned mmi_protocol_fzd_parse_SERVER_SET_REBOOT(next_buff, next_buff_len); break; + case MMI_FZD_ACTION_GET_APP_QRCODE: + mmi_protocol_fzd_parse_ACTION_GET_APP_QRCODE(next_buff, next_buff_len); + break; + #ifdef __MMI_ZHSX_SUPPORT_VIDEO_CALL__ #if defined(__MMI_ZHSX_SUPPORT_VIDEO_CALL_WULIAN__) || defined(__MMI_ZHSX_SUPPORT_VIDEO_CALL_FZD__) || defined(__MMI_ZHSX_SUPPORT_VIDEO_CALL_TONGXIN__) case MMI_FZD_WATCH_GET_VC_CONFIG: @@ -354,6 +369,10 @@ static bool mmi_protocol_fzd_content_parse(unsigned char * content_ptr, unsigned break; #endif + case MMI_FZD_SERVER_SET_UD_SWITCH: + mmi_protocol_fzd_parse_SERVER_SET_UD_SWITCH(next_buff, next_buff_len); + break; + case MMI_FZD_SERVER_SET_DIAL_PAD_SWITCH: mmi_protocol_fzd_parse_SERVER_SET_DIAL_PAD_SWITCH(next_buff, next_buff_len); break; diff --git a/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_common.c b/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_common.c index 13d021c5..7baf3f5a 100644 --- a/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_common.c +++ b/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_common.c @@ -257,7 +257,7 @@ bool mmi_debug_info_write_to_file(char * info_buf) char str_time[24] = {0}; Hal_Rtc_Gettime(&cur_time); - sprintf(str_time, "\n[%04d%02d%02d_%02d%02d%02d]", + sprintf(str_time, "\n[%04d%02d%02d_%02d%02d%02d]:", cur_time.tm_year, cur_time.tm_mon, cur_time.tm_mday, diff --git a/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.c b/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.c index c3520392..9dea0521 100644 --- a/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.c +++ b/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.c @@ -149,6 +149,19 @@ void mmi_watch_power_off_aciton(void) mmi_ui_msg_action_watch_power_off(); } +void mmi_ui_msg_update_watch_reboot(void) +{ + mmi_watch_restart(); +} + +void mmi_watch_reboot_aciton(void) +{ + SUNDRY_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + mmi_watch_wake_up(); + mmi_ui_msg_action_watch_reboot(); +} + static TIMER_ID s_watch_search_timer_id = NULL; static TIMER_ID s_watch_falldwon_id = NULL; diff --git a/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.h b/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.h index e4877067..ca4d1af1 100644 --- a/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.h +++ b/2.sdk/sdk/gui/lv_watch/mmi_sundry/mmi_sundry.h @@ -46,6 +46,8 @@ void mmi_ui_msg_update_watch_factory(void); void mmi_watch_factory_aciton(void); void mmi_ui_msg_update_watch_power_off(void); void mmi_watch_power_off_aciton(void); +void mmi_ui_msg_update_watch_reboot(void); +void mmi_watch_reboot_aciton(void); #define MMI_WATCH_SEARCH_DURATION (1000 * 60) // ms diff --git a/2.sdk/sdk/gui/lv_watch/modem/mmi_modem_tcp/mmi_modem_tcp_msg_handler_impl.c b/2.sdk/sdk/gui/lv_watch/modem/mmi_modem_tcp/mmi_modem_tcp_msg_handler_impl.c index 5a5f3936..505eaf57 100644 --- a/2.sdk/sdk/gui/lv_watch/modem/mmi_modem_tcp/mmi_modem_tcp_msg_handler_impl.c +++ b/2.sdk/sdk/gui/lv_watch/modem/mmi_modem_tcp/mmi_modem_tcp_msg_handler_impl.c @@ -37,11 +37,7 @@ void cmdmsg_handler_login_impl(void *param) #ifdef __MMI_ZHSX_SUPPORT__ printf("[@CHENG_DEBUG][%s][%d]: \n",__FUNCTION__,__LINE__); - //#ifdef __MMI_ZHSX_SUPPORT_WULIAN_SERVER__ mmi_protocol_watch_link_action(); - //#else - //mmi_protocol_watch_heartbeat_action(); - //#endif #else