From: CCC <2393524978@qq.com> Date: Tue, 25 Apr 2023 08:22:44 +0000 (+0800) Subject: 修改 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=9638aed8a5f712369ef7c5cefc1d6179b2ceccab;p=mirrors%2FASR3603_Z5.git 修改 --- diff --git a/2.sdk/gui/lv_watch/CMakeLists.txt b/2.sdk/gui/lv_watch/CMakeLists.txt index 8144f97d..ebc31b3d 100644 --- a/2.sdk/gui/lv_watch/CMakeLists.txt +++ b/2.sdk/gui/lv_watch/CMakeLists.txt @@ -198,8 +198,10 @@ set(lv_watch_sources #CHENG_MODIFY mmi_protocol/mmi_protocol_api.c mmi_protocol/mmi_protocol_fzd.c + mmi_protocol/mmi_protocol_sms.c mmi_location/mmi_location.c mmi_sundry/mmi_sundry.c + mmi_sundry/mmi_common.c #wechat lv_apps/wechat/wechat_ui.c #primary menu data diff --git a/2.sdk/gui/lv_watch/framework/nvm/ui_nvm_api.c b/2.sdk/gui/lv_watch/framework/nvm/ui_nvm_api.c index 18feeac8..d9888453 100644 --- a/2.sdk/gui/lv_watch/framework/nvm/ui_nvm_api.c +++ b/2.sdk/gui/lv_watch/framework/nvm/ui_nvm_api.c @@ -71,11 +71,10 @@ uint32_t UI_NV_Get_Section_Len(NV_UI_SECTION_ID SectionId) case NV_SECTION_UI_GPS_AIDPOS: return(NV_SECTION_LEN(NV_SECTION_UI_GPS_AIDPOS)); - //#if __MMI_ZHSX_SUPPORT__ - //#if USE_LV_WATCH_WECHAT != 0 + //#ifdef __MMI_ZHSX_SUPPORT__ case NV_SECTION_UI_WEHAT_MSG: return(NV_SECTION_LEN(NV_SECTION_UI_WEHAT_MSG)); - //#endif + case NV_SECTION_UI_HEALTH_MEASURE: return(NV_SECTION_LEN(NV_SECTION_UI_HEALTH_MEASURE)); case NV_SECTION_UI_PROTOCOL_DATA: @@ -150,11 +149,10 @@ char * UI_NV_Get_Section_path(NV_UI_SECTION_ID SectionId) case NV_SECTION_UI_GPS_AIDPOS: return(NV_SECTION_FILE_PATH(NV_SECTION_UI_GPS_AIDPOS)); - //#if __MMI_ZHSX_SUPPORT__ - //#if USE_LV_WATCH_WECHAT != 0 + //#ifdef __MMI_ZHSX_SUPPORT__ case NV_SECTION_UI_WEHAT_MSG: return(NV_SECTION_FILE_PATH(NV_SECTION_UI_WEHAT_MSG)); - //#endif + case NV_SECTION_UI_HEALTH_MEASURE: return(NV_SECTION_FILE_PATH(NV_SECTION_UI_HEALTH_MEASURE)); case NV_SECTION_UI_PROTOCOL_DATA: @@ -196,10 +194,8 @@ uint8_t UI_NV_Reset_Default(NV_UI_SECTION_ID SectionId) nv_watch_agnss_t * agnss; nv_watch_sms_msg_t * smsmsg; nv_watch_gps_aidpos_t * gps_aidpos; -//#if __MMI_ZHSX_SUPPORT__ -//#if USE_LV_WATCH_WECHAT != 0 +//#ifdef __MMI_ZHSX_SUPPORT__ nv_watch_wechat_msg_info_t * wechat_msg; -//#endif nv_watch_health_measure_timed_t * health_measure; nv_watch_protocol_data_t * protocol_data; //#endif @@ -352,24 +348,25 @@ uint8_t UI_NV_Reset_Default(NV_UI_SECTION_ID SectionId) memset(gps_aidpos, 0, SectionLen); TempData = (char *)gps_aidpos; break; - //#if __MMI_ZHSX_SUPPORT__ - //#if USE_LV_WATCH_WECHAT != 0 + + //#ifdef __MMI_ZHSX_SUPPORT__ case NV_SECTION_UI_WEHAT_MSG: wechat_msg = lv_mem_alloc(SectionLen); memset(wechat_msg, 0, SectionLen); TempData = (char *)wechat_msg; break; - //#endif case NV_SECTION_UI_HEALTH_MEASURE: health_measure = lv_mem_alloc(SectionLen); memset(health_measure, 0, SectionLen); + mmi_health_measure_timed_info_nv_default(health_measure); TempData = (char *)health_measure; break; case NV_SECTION_UI_PROTOCOL_DATA: protocol_data = lv_mem_alloc(SectionLen); memset(protocol_data, 0, SectionLen); + mmi_watch_protocol_data_nv_default(protocol_data); TempData = (char *)protocol_data; break; //#endif diff --git a/2.sdk/gui/lv_watch/include/ui_nvm_interface.h b/2.sdk/gui/lv_watch/include/ui_nvm_interface.h index 01f50103..19bf8d20 100644 --- a/2.sdk/gui/lv_watch/include/ui_nvm_interface.h +++ b/2.sdk/gui/lv_watch/include/ui_nvm_interface.h @@ -142,8 +142,8 @@ typedef struct *default 0*/ } __packed nv_watch_voice_msg_t; -//#if __MMI_ZHSX_SUPPORT__ -//#if USE_LV_WATCH_WECHAT != 0 + +//#ifdef __MMI_ZHSX_SUPPORT__ #define NV_WATCH_WECHAT_NUM_MAX (20) #define NV_WATCH_WECHAT_DATA_FILE_NAME_MAX (LV_FS_MAX_PATH_LENGTH / 2) @@ -173,25 +173,28 @@ typedef struct uint8_t msg_count; nv_watch_wechat_msg_item_info_t msg_item[NV_WATCH_WECHAT_NUM_MAX]; } __packed nv_watch_wechat_msg_info_t; -//#endif typedef struct { uint8_t heart_timed_flag; // 0-close; 1-open uint32_t heart_timed_interval; // unit-second - uint8_t temperature_timed_flag; - uint32_t temperature_timed_interval; - uint8_t blood_timed_flag; - uint32_t blood_timed_interval; - uint8_t spo2_timed_flag; - uint32_t spo2_timed_interval; + uint8_t temperature_timed_flag; // 0-close; 1-open + uint32_t temperature_timed_interval; // unit-second + uint8_t blood_timed_flag; // 0-close; 1-open + uint32_t blood_timed_interval; // unit-second + uint8_t spo2_timed_flag; // 0-close; 1-open + uint32_t spo2_timed_interval; // unit-second } __packed nv_watch_health_measure_timed_t; +#define NV_WATCH_HOST_NAME_LEN_MAX (128) + typedef struct { - uint32_t heartbeat_action_interval; // second - uint32_t location_upload_interval; // second - uint32_t weather_update_interval; // second + char watch_host_name[NV_WATCH_HOST_NAME_LEN_MAX]; + int watch_host_port; + uint32_t heartbeat_action_interval; // unit-second + uint32_t location_upload_interval; // unit-second + uint32_t weather_update_interval; // unit-second } __packed nv_watch_protocol_data_t; diff --git a/2.sdk/gui/lv_watch/lv_apps/call_log/call_log.c b/2.sdk/gui/lv_watch/lv_apps/call_log/call_log.c index c3396c0e..ca923847 100644 --- a/2.sdk/gui/lv_watch/lv_apps/call_log/call_log.c +++ b/2.sdk/gui/lv_watch/lv_apps/call_log/call_log.c @@ -10,6 +10,392 @@ #if USE_LV_WATCH_CALL_LOG != 0 +#ifdef __MMI_ZHSX_SUPPORT__ + +const void * status[] = { + (void *)ICON_CALL_LOG_OUTGOING_CALL, + (void *)ICON_CALL_LOG_INCOMING_CALL, + (void *)ICON_CALL_LOG_MISSED_CALL, + (void *)ICON_CALL_LOG_INCOMING_CALL, +}; + +static nv_watch_call_log_t * call_log_read_nvm(void) +{ + uint32_t length = sizeof(nv_watch_call_log_t); + nv_watch_call_log_t * data = (nv_watch_call_log_t *)lv_mem_alloc(length); + memset(data, 0, length); + if(length != UI_NV_Read_Req(NV_SECTION_UI_CALL_LOG, 0, length, (uint8_t *)data)) { + printf("%s: Occur error when reading call log information from NVM\n", __FUNCTION__); + lv_mem_free(data); + return NULL; + } + return data; +} + +static void call_log_write_nvm(nv_watch_call_log_t * data) +{ + if(NULL == data) return; + + uint32_t length = sizeof(nv_watch_call_log_t); + if(length != UI_NV_Write_Req(NV_SECTION_UI_CALL_LOG, 0, length, (uint8_t *)data)) { + printf("%s: Occur error when writing call log information to NVM\n", __FUNCTION__); + return; + } + lv_mem_free(data); +} + +static uint8_t call_log_get_log_num(nv_watch_call_log_t * data) +{ + uint8_t i = 0; + for(i = 0; i < NV_WATCH_MAX_CALL_LOG_NUM; i++) { + if('\0' == data->info[i].number[0]) { + break; + } + } + return i; +} + +static lv_call_log_obj_ext_t * call_log_get_ext(void) +{ + lv_call_log_obj_ext_t * ext = NULL; + lv_obj_t * watch_obj = NULL; + + lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_CALL_LOG); + if(activity_obj) { + lv_watch_get_child_obj(activity_obj, lv_watch_obj_signal, &watch_obj); + } + if(watch_obj) { + ext = lv_obj_get_ext_attr(watch_obj); + } + return ext; +} + +void call_log_update_call_log_info(call_status_t call_status, char * number, hal_rtc_t *time) +{ + // read from nvm first + nv_watch_call_log_t * nvm_call_log_list = call_log_read_nvm(); + // move call log list + memmove(&nvm_call_log_list->info[1], &nvm_call_log_list->info[0], (NV_WATCH_MAX_CALL_LOG_NUM - 1) * sizeof(nv_watch_call_log_info_t)); + // update call log info + memset(&nvm_call_log_list->info[0], 0, sizeof(nv_watch_call_log_info_t)); + nvm_call_log_list->info[0].call_status = call_status; + nvm_call_log_list->info[0].month = time->tm_mon; + nvm_call_log_list->info[0].day = time->tm_mday; + nvm_call_log_list->info[0].hour = time->tm_hour; + nvm_call_log_list->info[0].min = time->tm_min; + memcpy(nvm_call_log_list->info[0].number, number, strlen(number)); + // write to nvm after updating + call_log_write_nvm(nvm_call_log_list); +} + +static void call_log_update_call_log_ll(uint8_t call_log_num, nv_watch_call_log_t * call_log_list) +{ + lv_call_log_obj_ext_t * ext = call_log_get_ext(); + LV_ASSERT_MEM(ext); + + uint8_t i = 0; + call_log_number_info_t * node = NULL; + nv_watch_call_log_info_t * info = NULL; + + for(i = 0; i < call_log_num; i++) { + info = &call_log_list->info[i]; + node = (call_log_number_info_t *)_lv_ll_ins_tail(ext->phone_number_list); + node->index = i; + node->phone_number = (char *)lv_mem_alloc(NV_CONTACTS_MAX_NUMBER_LEN); + memset(node->phone_number, 0, NV_CONTACTS_MAX_NUMBER_LEN); + memcpy(node->phone_number, info->number, NV_CONTACTS_MAX_NUMBER_LEN); + } +} + +static lv_obj_t * call_log_no_log_info_create(lv_obj_t * obj) +{ + lv_obj_t * label = lv_label_create(obj, NULL); + lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font30); //&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_CALL_LOG_INFO); + lv_obj_align(label, obj, LV_ALIGN_CENTER, 0, 0); + + return label; +} + +static lv_obj_t * call_log_list_create(lv_obj_t * obj) +{ + lv_obj_t * title = lv_label_create(obj, NULL); + lv_obj_add_style(title, LV_LABEL_PART_MAIN, &lv_watch_font20_gray); + lv_label_set_align(title, LV_LABEL_ALIGN_CENTER); + lv_obj_set_click(title, false); + lv_label_set_text_id(title, WATCH_TEXT_ID_CALL_LOG); + lv_obj_align(title, obj, LV_ALIGN_IN_TOP_MID, 0, 10); + + lv_obj_t * list = lv_list_create(obj, NULL); + lv_page_set_edge_flash(list, true); + lv_obj_add_style(list, LV_LIST_PART_EDGE_FLASH, &lv_watch_cont_opa1); + lv_obj_add_style(list, LV_LIST_PART_BG, &lv_watch_style_transp); + lv_obj_set_size(list, LV_HOR_RES, LV_VER_RES - lv_obj_get_height(title)); // - LV_VER_RES / 10); + lv_obj_align(list, title, LV_ALIGN_OUT_BOTTOM_MID, 0, 0); + lv_watch_obj_add_element(list); + + return list; +} + +static void call_log_log_btn_event_cb(lv_obj_t * btn, lv_event_t e) +{ + if(LV_EVENT_CLICKED != e) + return; + + lv_call_log_obj_ext_t * ext = call_log_get_ext(); + LV_ASSERT_MEM(ext); + + uint8_t index = lv_obj_get_user_data(btn).user_num; + + call_log_number_info_t * node = NULL; + node = _lv_ll_get_head(ext->phone_number_list); + while(node) + { + if(index == node->index) { + printf("%s: mo start\n", __FUNCTION__); + uint8_t length = strlen(node->phone_number); + char * number_mo = (char *)Hal_Mem_Alloc(length + 1); + memset(number_mo, 0, length + 1); + memcpy(number_mo, node->phone_number, length); + phone_voice_call_req(number_mo); + break; + } else { + node = _lv_ll_get_next(ext->phone_number_list, node); + } + } +} + +static void call_log_content_create(lv_obj_t * list, uint8_t call_log_num, nv_watch_call_log_t * call_log_list) +{ + uint8_t i = 0; + char time_str[10]; + phonebook_contact_t * contact_info = NULL; + char * tmp_num = NULL; + nv_watch_call_log_info_t * info = NULL; + lv_obj_t * btn[call_log_num]; + lv_obj_t * label_number; + lv_obj_t * img_status; + lv_obj_t * label_time; + hal_rtc_t curr_time; + memset(&curr_time, 0, sizeof(hal_rtc_t)); + Hal_Rtc_Gettime(&curr_time); + + for(i = 0; i < call_log_num; i++) + { + btn[i] = lv_list_add_btn(list, NULL, NULL); + lv_btn_set_layout(btn[i], LV_LAYOUT_ROW_MID); + //lv_obj_set_event_cb(btn[i], call_log_log_btn_event_cb); + //lv_watch_set_free_num(btn[i], i); + + info = &call_log_list->info[i]; + tmp_num = (char *)lv_mem_alloc(NV_CONTACTS_MAX_NUMBER_LEN); + memset(tmp_num, 0, NV_CONTACTS_MAX_NUMBER_LEN); + memcpy(tmp_num, info->number, NV_CONTACTS_MAX_NUMBER_LEN); + contact_info = phonebook_get_contact_info(tmp_num); + tmp_num = NULL; + + lv_obj_t * cont = lv_cont_create(btn[i], NULL); + lv_cont_set_layout(cont, LV_LAYOUT_OFF); + lv_obj_set_width(cont, lv_obj_get_width(btn[i])); + lv_obj_set_height(cont, 70); //lv_obj_get_height(btn[i])); + lv_obj_add_style(cont, LV_CONT_PART_MAIN, &lv_style_transp); + lv_page_glue_obj(cont, true); + lv_watch_obj_add_element(cont); + lv_obj_set_click(cont, true); + lv_obj_set_event_cb(cont, call_log_log_btn_event_cb); + lv_watch_set_free_num(cont, i); + + label_number = lv_label_create(cont, NULL); + lv_obj_add_style(label_number, LV_OBJ_PART_MAIN, &lv_watch_font24); + lv_label_set_text(label_number, info->number); + lv_label_set_long_mode(label_number, LV_LABEL_LONG_DOT); + lv_obj_set_width(label_number, lv_obj_get_width(btn[i]) - 20); + if(contact_info) + { + if(contact_info->contact_name) + lv_label_set_text(label_number, contact_info->contact_name); + lv_mem_free(contact_info); + contact_info = NULL; + } + + lv_obj_t * cont_status_time = lv_cont_create(cont, NULL); + lv_cont_set_layout(cont_status_time, LV_LAYOUT_ROW_MID); + lv_cont_set_fit2(cont_status_time, LV_FIT_TIGHT, LV_FIT_TIGHT); + lv_obj_add_style(cont_status_time, LV_CONT_PART_MAIN, &lv_style_transp); + lv_page_glue_obj(cont_status_time, true); + lv_watch_obj_add_element(cont_status_time); + + if(LV_BIDI_DIR_RTL == lv_obj_get_base_dir(btn[i])) { + lv_obj_align(label_number, cont, LV_ALIGN_IN_TOP_RIGHT, -10, 5); + lv_obj_align(cont_status_time, cont, LV_ALIGN_IN_BOTTOM_RIGHT, -20, -5); + } else { + lv_obj_align(label_number, cont, LV_ALIGN_IN_TOP_LEFT, 10, 5); + lv_obj_align(cont_status_time, cont, LV_ALIGN_IN_BOTTOM_LEFT, 20, -5); + } + + img_status = lv_img_create(cont_status_time, NULL); + lv_img_set_src(img_status, status[info->call_status]); + + if((curr_time.tm_mon == info->month) && (curr_time.tm_mday == info->day)) { + snprintf(time_str, 10, "%02d:%02d", info->hour, info->min); + } else { + snprintf(time_str, 10, "%02d/%02d", info->month, info->day); + } + label_time = lv_label_create(cont_status_time, NULL); + lv_label_set_text(label_time, time_str); + lv_obj_set_base_dir(label_time, LV_BIDI_DIR_LTR); + + lv_watch_obj_add_element(btn[i]); + } +} + +static void call_log_ll_init(void) +{ + lv_call_log_obj_ext_t * ext = call_log_get_ext(); + LV_ASSERT_MEM(ext); + + if(NULL == ext->phone_number_list) { + ext->phone_number_list = (lv_ll_t *)lv_mem_alloc(sizeof(lv_ll_t)); + memset(ext->phone_number_list, 0, sizeof(lv_ll_t)); + _lv_ll_init(ext->phone_number_list, sizeof(call_log_number_info_t)); + } +} + +static void call_log_ll_destroy(void) +{ + lv_call_log_obj_ext_t * ext = call_log_get_ext(); + LV_ASSERT_MEM(ext); + call_log_number_info_t * node = NULL; + call_log_number_info_t * next_node = NULL; + + if(ext->phone_number_list) { + node = (call_log_number_info_t *)_lv_ll_get_head(ext->phone_number_list); + while(node) { + //next node + next_node = (call_log_number_info_t *)_lv_ll_get_next(ext->phone_number_list, node); + if(node->phone_number) { + lv_mem_free(node->phone_number); + node->phone_number = NULL; + } + _lv_ll_remove(ext->phone_number_list, node); + lv_mem_free(node); + node = next_node; + } + lv_mem_free(ext->phone_number_list); + ext->phone_number_list = NULL; + } +} + +static void call_log_prepare_destory(lv_obj_t * activity_obj) +{ + lv_watch_png_cache_all_free(); + call_log_ll_destroy(); +} + +void call_log_ui_update(void) +{ + lv_obj_t * activity_obj = lv_watch_get_activity_obj(ACT_ID_CALL_LOG); + + if(activity_obj) { + lv_obj_t * obj = lv_obj_get_child_back(lv_obj_get_child_back(activity_obj, NULL), NULL); + nv_watch_call_log_t * nvm_call_log_list = call_log_read_nvm(); + if(NULL == nvm_call_log_list) + return; + + uint8_t call_log_num = call_log_get_log_num(nvm_call_log_list); + lv_call_log_obj_ext_t * ext = call_log_get_ext(); + LV_ASSERT_MEM(ext); + call_log_ll_destroy(); + call_log_ll_init(); + call_log_update_call_log_ll(call_log_num, nvm_call_log_list); + if(ext->list) + { + lv_list_clean(ext->list); + } + else + { + if(ext->label_tip) { + lv_obj_del(ext->label_tip); + ext->label_tip = NULL; + } + ext->list = call_log_list_create(obj); + } + call_log_content_create(ext->list, call_log_num, nvm_call_log_list); + if(nvm_call_log_list) { + lv_mem_free(nvm_call_log_list); + nvm_call_log_list = NULL; + } + } +} + +lv_obj_t * call_log_create(lv_obj_t * activity_obj) +{ + nv_watch_call_log_t * nvm_call_log_list = call_log_read_nvm(); + if(NULL == nvm_call_log_list) return NULL; + uint8_t call_log_num = call_log_get_log_num(nvm_call_log_list); + + if(NULL == activity_obj) { + lv_watch_activity_ext_t activity_ext; + memset(&activity_ext, 0, sizeof(lv_watch_activity_ext_t)); + activity_ext.actId = ACT_ID_CALL_LOG; + activity_ext.create = call_log_create; + activity_ext.prepare_destory = call_log_prepare_destory; + activity_obj = lv_watch_creat_activity_obj(&activity_ext); + LV_ASSERT_MEM(activity_obj); + if(NULL == activity_obj) return NULL; + } + + lv_obj_t * obj = lv_watch_obj_create(activity_obj); + LV_ASSERT_MEM(obj); + if(NULL == obj) + return NULL; + + lv_call_log_obj_ext_t * ext = lv_obj_allocate_ext_attr(obj, sizeof(lv_call_log_obj_ext_t)); + LV_ASSERT_MEM(ext); + if(NULL == ext) + return NULL; + + ext->list = NULL; + ext->label_tip = NULL; + ext->phone_number_list = NULL; + + if(0 == call_log_num) + { + ext->label_tip = call_log_no_log_info_create(obj); + } + else + { + ext->list = call_log_list_create(obj); + call_log_content_create(ext->list, call_log_num, nvm_call_log_list); + call_log_ll_init(); + call_log_update_call_log_ll(call_log_num, nvm_call_log_list); + } + + if(nvm_call_log_list) + { + lv_mem_free(nvm_call_log_list); + nvm_call_log_list = NULL; + } + + return obj; +} + +void call_log_create_event_cb(lv_obj_t * btn, lv_event_t e) +{ + (void)btn; + if(LV_EVENT_CLICKED == e) + { + lv_watch_png_cache_all_free(); + lv_obj_t * obj = call_log_create(NULL); + LV_ASSERT_MEM(obj); + if(NULL == obj) return; + } +} + +#else + /********************* * DEFINES *********************/ @@ -455,4 +841,5 @@ static void call_log_update_call_log_ll(uint8_t call_log_num, nv_watch_call_log_ } } +#endif #endif /*USE_LV_WATCH_CALL_LOG*/ diff --git a/2.sdk/gui/lv_watch/lv_apps/health_measure/health_measure.c b/2.sdk/gui/lv_watch/lv_apps/health_measure/health_measure.c index b33ded90..698c89da 100644 --- a/2.sdk/gui/lv_watch/lv_apps/health_measure/health_measure.c +++ b/2.sdk/gui/lv_watch/lv_apps/health_measure/health_measure.c @@ -1,9 +1,10 @@ -#include "lv_watch.h" +#ifdef __MMI_ZHSX_SUPPORT__ -#include +//#include +#include "health_measure.h" static nv_watch_health_measure_timed_t s_health_measure_timed_data = {0}; @@ -208,7 +209,7 @@ void mmi_health_measure_timed_info_nv_write(void) } } -void mmi_health_measure_timed_info_init(void) +void mmi_health_measure_timed_info_nv_read(void) { uint32_t nv_data_length = sizeof(nv_watch_health_measure_timed_t); @@ -221,6 +222,20 @@ void mmi_health_measure_timed_info_init(void) _lv_ll_init(&s_health_measure_timed_ll, sizeof(MMI_HEALTH_MEASURE_TYPE_E)); } +void mmi_health_measure_timed_info_nv_default(nv_watch_health_measure_timed_t * data) +{ + HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + data->heart_timed_flag = MMI_HEALTH_HEART_TIMED_FLAG; + data->heart_timed_interval = MMI_HEALTH_HEART_TIMED_INTERVAL; + data->temperature_timed_flag = MMI_HEALTH_TEMPERATURE_TIMED_FLAG; + data->temperature_timed_interval = MMI_HEALTH_TEMPERATURE_TIMED_INTERVAL; + data->blood_timed_flag = MMI_HEALTH_BLOOD_TIMED_FLAG; + data->blood_timed_interval = MMI_HEALTH_BLOOD_TIMED_INTERVAL; + data->spo2_timed_flag = MMI_HEALTH_SPO2_TIMED_FLAG; + data->spo2_timed_interval = MMI_HEALTH_SPO2_TIMED_INTERVAL; +} + void mmi_health_measure_timed_list_node_remove(MMI_HEALTH_MEASURE_TYPE_E measure_type) { @@ -627,7 +642,7 @@ static void mmi_health_measure_process_timer_handle(uint32_t para) break; } - uos_timer_start(s_health_measure_process_timer_id, MMI_HEALTH_MEASURE_CYCLE_DURATION, 0, mmi_health_measure_process_timer_handle, NULL); + uos_timer_start(s_health_measure_process_timer_id, MS_TO_TICKS(MMI_HEALTH_MEASURE_CYCLE_DURATION), 0, mmi_health_measure_process_timer_handle, NULL); } } @@ -700,7 +715,7 @@ void mmi_health_measure_start(MMI_HEALTH_MEASURE_TYPE_E measure_type, uint32_t t s_measure_time_count = 0; uos_timer_create(&s_health_measure_process_timer_id); - uos_timer_start(s_health_measure_process_timer_id, MMI_HEALTH_MEASURE_CYCLE_DURATION, 0, mmi_health_measure_process_timer_handle, NULL); + uos_timer_start(s_health_measure_process_timer_id, MS_TO_TICKS(MMI_HEALTH_MEASURE_CYCLE_DURATION), 0, mmi_health_measure_process_timer_handle, NULL); } void mmi_health_measure_timed_measure_start(MMI_HEALTH_MEASURE_TYPE_E measure_type) @@ -763,5 +778,5 @@ void mmi_health_measure_ui_measure_start(MMI_HEALTH_MEASURE_TYPE_E measure_type) mmi_health_measure_start(measure_type, 0); } - +#endif diff --git a/2.sdk/gui/lv_watch/lv_apps/health_measure/health_measure.h b/2.sdk/gui/lv_watch/lv_apps/health_measure/health_measure.h index fe5ddc15..805c823b 100644 --- a/2.sdk/gui/lv_watch/lv_apps/health_measure/health_measure.h +++ b/2.sdk/gui/lv_watch/lv_apps/health_measure/health_measure.h @@ -1,6 +1,8 @@ +#ifdef __MMI_ZHSX_SUPPORT__ + #ifndef __HEALTH_MEASURE_H__ #define __HEALTH_MEASURE_H__ @@ -31,11 +33,6 @@ extern "C" { //#define __HEALTH_MEASURE_FAKE_DATA__ -#define MMI_HEALTH_MEASURE_HEART_DURATION (44 * 1000) // ms -#define MMI_HEALTH_MEASURE_TEMPERATURE_DURATION (24 * 1000) // ms -#define MMI_HEALTH_MEASURE_BLOOD_DURATION (34 * 1000) // ms -#define MMI_HEALTH_MEASURE_SPO2_DURATION (34 * 1000) // ms - #define MMI_HEALTH_MEASURE_CYCLE_DURATION (1 * 1000) // ms @@ -88,7 +85,8 @@ void mmi_health_measure_timed_measure_start(MMI_HEALTH_MEASURE_TYPE_E measure_ty void mmi_health_measure_app_measure_start(MMI_HEALTH_MEASURE_TYPE_E measure_type); void mmi_health_measure_ui_measure_start(MMI_HEALTH_MEASURE_TYPE_E measure_type); -void mmi_health_measure_timed_info_init(void); +void mmi_health_measure_timed_info_nv_read(void); +void mmi_health_measure_timed_info_nv_default(nv_watch_health_measure_timed_t * data); bool mmi_health_measure_heart_timed_action(bool direct_trigger, uint32_t cur_time_stamp); bool mmi_health_measure_temperature_timed_action(bool direct_trigger, uint32_t cur_time_stamp); bool mmi_health_measure_blood_timed_action(bool direct_trigger, uint32_t cur_time_stamp); @@ -101,3 +99,5 @@ bool mmi_health_measure_spo2_timed_action(bool direct_trigger, uint32_t cur_time #endif +#endif + diff --git a/2.sdk/gui/lv_watch/lv_apps/phone/phone.c b/2.sdk/gui/lv_watch/lv_apps/phone/phone.c index a62a658a..5dcd708a 100644 --- a/2.sdk/gui/lv_watch/lv_apps/phone/phone.c +++ b/2.sdk/gui/lv_watch/lv_apps/phone/phone.c @@ -27,6 +27,7 @@ static void phone_ring(lv_obj_t * content); static void phone_connected(lv_obj_t * content); static void phone_left_slide_callback(lv_obj_t * obj); static void phone_right_slide_callback(lv_obj_t * obj); +void ring_off_action(lv_obj_t * btn, lv_event_t e); static void dialing_animation(lv_obj_t * par); static void ring_animation(lv_obj_t * par); static void connected_animation(lv_obj_t * obj); @@ -57,6 +58,507 @@ extern phone_call_params_t call_params; /********************** * GLOBAL FUNCTIONS ***********************/ +#ifdef __MMI_ZHSX_SUPPORT__ +static void phone_dialing(lv_obj_t * content) +{ + printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + lv_phone_obj_ext_t * ext = phone_get_ext(); + LV_ASSERT_MEM(ext); + if(ext == NULL) + return; + + lv_bidi_dir_t bidi_dir = lv_obj_get_base_dir(content); + + //label dialing + lv_obj_t * label = lv_label_create(content, NULL); + lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font20); + lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); + lv_label_set_text_id(label, WATCH_TEXT_ID_DAILING); + lv_obj_set_click(label, false); + lv_obj_align(label, content, LV_ALIGN_IN_TOP_MID, 0, 0); + ext->phone_status_label = label; + + //img + lv_obj_t * img = lv_img_create(content, NULL); + lv_img_set_src(img, ICON_CALL_OUTGOING); + lv_obj_align(img, label, LV_ALIGN_OUT_BOTTOM_MID, 0, 10); + + //name or number + label = lv_label_create(content, NULL); + lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font24); + lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); + lv_label_set_long_mode(label, LV_LABEL_LONG_SROLL); + lv_obj_set_width(label, lv_obj_get_width(content) - 10); + char txt[NV_CONTACTS_MAX_NAME_LEN] = {0}; + if(LV_BIDI_DIR_RTL == bidi_dir) + lv_obj_set_base_dir(label, LV_BIDI_DIR_LTR); + + if(strlen(call_params.name) > 0) + strcpy(txt, call_params.name); + else + strcpy(txt, call_params.number); + + lv_label_set_text(label, txt); + lv_obj_align(label, img, LV_ALIGN_OUT_BOTTOM_MID, 0, 10); + + //btn volume + lv_obj_t * btn; + btn = lv_imgbtn_create(content, NULL); + lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_PHONE_RING_VOLUME); + lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_PHONE_RING_VOLUME); + lv_obj_set_event_cb(btn, volume_btn_action); + lv_obj_align(btn, content, LV_ALIGN_IN_BOTTOM_LEFT, 20, -50); + + //btn ring off + btn = lv_imgbtn_create(content, NULL); + lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_PHONE_RING_OFF); + lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_PHONE_RING_OFF); + lv_obj_set_event_cb(btn, ring_off_action); + lv_obj_align(btn, content, LV_ALIGN_IN_BOTTOM_RIGHT, -20, -50); +} + +static void phone_ring(lv_obj_t * content) +{ + printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + lv_watch_indev_reset(); + + lv_phone_obj_ext_t * ext = phone_get_ext(); + LV_ASSERT_MEM(ext); + if(ext == NULL) return; + lv_obj_t * label; + + lv_bidi_dir_t bidi_dir = lv_obj_get_base_dir(content); + + //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); + lv_obj_align(label, content, LV_ALIGN_IN_TOP_MID, 0, 0); + ext->phone_status_label = label; + + //img + lv_obj_t * img = lv_img_create(content, NULL); + lv_img_set_src(img, ICON_CALL_INCOMING); + lv_obj_align(img, label, LV_ALIGN_OUT_BOTTOM_MID, 0, 10); + + //name or number + label = lv_label_create(content, NULL); + lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font24); + lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); + lv_label_set_long_mode(label, LV_LABEL_LONG_SROLL); + lv_obj_set_width(label, lv_obj_get_width(content) - 10); + char txt[NV_CONTACTS_MAX_NAME_LEN] = {0}; + if(LV_BIDI_DIR_RTL == bidi_dir) + lv_obj_set_base_dir(label, LV_BIDI_DIR_LTR); + + if(strlen(call_params.name) > 0) + strcpy(txt, call_params.name); + else + strcpy(txt, call_params.number); + + lv_label_set_text(label, txt); + lv_obj_align(label, img, LV_ALIGN_OUT_BOTTOM_MID, 0, 10); + ext->num_label = label; + + //btn ring off + lv_obj_t * btn; + btn = lv_imgbtn_create(content, NULL); + lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_PHONE_RING_OFF); + lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_PHONE_RING_OFF); + lv_obj_set_event_cb(btn, ring_off_action); + lv_obj_align(btn, content, LV_ALIGN_IN_BOTTOM_LEFT, 20, -50); + + //btn ring hook + btn = lv_imgbtn_create(content, NULL); + lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_PHONE_HOOK); + lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_PHONE_HOOK); + lv_obj_set_event_cb(btn, ring_hook_action); + lv_obj_align(btn, content, LV_ALIGN_IN_BOTTOM_RIGHT, -20, -50); +} + +static void phone_connected(lv_obj_t * content) +{ + printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + lv_phone_obj_ext_t * ext = phone_get_ext(); + LV_ASSERT_MEM(ext); + if(ext == NULL) + return; + + lv_bidi_dir_t bidi_dir = lv_obj_get_base_dir(content); + + //img + lv_obj_t * img = lv_img_create(content, NULL); + lv_img_set_src(img, ICON_CALL_CALLING); + lv_obj_align(img, content, LV_ALIGN_IN_TOP_MID, 0, 10); + + //name or number + lv_obj_t * label = lv_label_create(content, NULL); + lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font24); + lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); + lv_label_set_long_mode(label, LV_LABEL_LONG_SROLL); + lv_obj_set_width(label, lv_obj_get_width(content) - 10); + char txt[NV_CONTACTS_MAX_NAME_LEN] = {0}; + if(LV_BIDI_DIR_RTL == bidi_dir) + lv_obj_set_base_dir(label, LV_BIDI_DIR_LTR); + + if(strlen(call_params.name) > 0) + strcpy(txt, call_params.name); + else + strcpy(txt, call_params.number); + + lv_label_set_text(label, txt); + lv_obj_align(label, img, LV_ALIGN_OUT_BOTTOM_MID, 0, 10); + ext->num_label = label; + + //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, "00:00"); + lv_obj_set_click(label, false); + lv_obj_set_base_dir(label, LV_BIDI_DIR_LTR); + lv_obj_align(label, ext->num_label, LV_ALIGN_OUT_BOTTOM_MID, 0, 10); + ext->phone_status_label = label; + + //btn volume + lv_obj_t * btn; + btn = lv_imgbtn_create(content, NULL); + lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_PHONE_RING_VOLUME); + lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_PHONE_RING_VOLUME); + lv_obj_set_event_cb(btn, volume_btn_action); + lv_obj_align(btn, content, LV_ALIGN_IN_BOTTOM_LEFT, 20, -50); + + //btn ring off + btn = lv_imgbtn_create(content, NULL); + lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, ICON_PHONE_RING_OFF); + lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, ICON_PHONE_RING_OFF); + lv_obj_set_event_cb(btn, ring_off_action); + lv_obj_align(btn, content, LV_ALIGN_IN_BOTTOM_RIGHT, -20, -50); + + hal_rtc_t rtc_curr; // current rtc time + Hal_Rtc_Gettime(&rtc_curr); + ext->connect_start_time = time_to_seconds(&rtc_curr); + printf("%s: connect_start_time=%u, rtc_curr = %d/%d/%d, %d:%d:%d\n", __FUNCTION__, + ext->connect_start_time, + rtc_curr.tm_year, + rtc_curr.tm_mon, + rtc_curr.tm_mday, + rtc_curr.tm_hour, + rtc_curr.tm_min, + rtc_curr.tm_sec); +} + +lv_obj_t * phone_create(lv_obj_t * activity_obj, phone_ui_t phone_ui_id) +{ + printf("[@CHENG_DEBUG][%s][%d]: phone_ui_id=%d\n", __FUNCTION__, __LINE__, phone_ui_id); + + if(PHONE_UI_CONNECTED == phone_ui_id) { + /* set speaker volume to nv when leaving activiry's slider */ + set_volume_when_slider_act(); + } + /* cleanup phone first */ + phone_cleanup(); + + if(NULL == activity_obj) + { + lv_watch_activity_ext_t activity_ext; + memset(&activity_ext, 0, sizeof(lv_watch_activity_ext_t)); + activity_ext.actId = ACT_ID_PHONE; + activity_ext.create = NULL; + activity_ext.prepare_destory = 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, phone_left_slide_callback); + lv_watch_obj_set_right_slide_cb(obj, phone_right_slide_callback); + + lv_phone_obj_ext_t * ext = lv_obj_allocate_ext_attr(obj, sizeof(lv_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_id = phone_ui_id; + ext->connect_start_time = 0; + + /* 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, 20); + + if(ext->phone_ui_id == PHONE_UI_DIALING) { + phone_dialing(content); + dialing_animation(ext->phone_status_label); + } else if(ext->phone_ui_id == PHONE_UI_RING) { + phone_ring(content); + ring_animation(ext->phone_status_label); + } else if(ext->phone_ui_id == PHONE_UI_CONNECTED) { + phone_connected(content); + connected_animation(ext->phone_status_label); + } + + return obj; +} + +#else + +static void phone_dialing(lv_obj_t * content) +{ + printf("%s\n", __FUNCTION__); + + lv_phone_obj_ext_t * ext = phone_get_ext(); + LV_ASSERT_MEM(ext); + if(ext == NULL) return; + + lv_bidi_dir_t bidi_dir = lv_obj_get_base_dir(content); + + //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(call_params.img_src_small) { + lv_img_set_src(img, call_params.img_src_small); + } + + //name and number + 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_long_mode(label, LV_LABEL_LONG_SROLL); + lv_obj_set_width(label, lv_obj_get_width(content) - 10); + char txt[NV_CONTACTS_MAX_NAME_LEN + NV_CONTACTS_MAX_NUMBER_LEN] = {}; + if(LV_BIDI_DIR_RTL == bidi_dir) { + lv_obj_set_base_dir(label, LV_BIDI_DIR_LTR); + strcat(txt, call_params.number); + if(strlen(call_params.name) > 0) { + strcat(txt, " "); + strcat(txt, call_params.name); + } + } else { + if(strlen(call_params.name) > 0) { + strcat(txt, call_params.name); + strcat(txt, " "); + } + strcat(txt, call_params.number); + } + lv_label_set_text(label, txt); + + lv_obj_t * cont = 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, volume_btn_action); + if(LV_BIDI_DIR_RTL == bidi_dir) { + lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_RIGHT, 0, 0); + } else { + 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, ring_off_action); + if(LV_BIDI_DIR_RTL == bidi_dir) { + lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_LEFT, 0, 0); + } else { + lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_RIGHT, 0, 0); + } +} + +static void phone_ring(lv_obj_t * content) +{ + printf("%s\n", __FUNCTION__); + + lv_watch_indev_reset(); + + lv_phone_obj_ext_t * ext = phone_get_ext(); + LV_ASSERT_MEM(ext); + if(ext == NULL) return; + lv_obj_t * label; + + lv_bidi_dir_t bidi_dir = lv_obj_get_base_dir(content); + + //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(call_params.img_src_small) { + lv_img_set_src(img, call_params.img_src_small); + } + + //name and number + 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_long_mode(label, LV_LABEL_LONG_SROLL); + lv_obj_set_width(label, lv_obj_get_width(content) - 10); + char txt[NV_CONTACTS_MAX_NAME_LEN + NV_CONTACTS_MAX_NUMBER_LEN] = {}; + if(LV_BIDI_DIR_RTL == bidi_dir) { + lv_obj_set_base_dir(label, LV_BIDI_DIR_LTR); + strcat(txt, call_params.number); + if(strlen(call_params.name) > 0) { + strcat(txt, " "); + strcat(txt, call_params.name); + } + } else { + if(strlen(call_params.name) > 0) { + strcat(txt, call_params.name); + strcat(txt, " "); + } + strcat(txt, call_params.number); + } + lv_label_set_text(label, txt); + ext->num_label = label; + + lv_obj_t * cont = phone_cont_create(content, LV_LAYOUT_OFF, &lv_watch_style_transp, lv_obj_get_width(content) - 40); + ext->btn_cont = cont; + + //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, ring_off_action); + if(LV_BIDI_DIR_RTL == bidi_dir) { + lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_RIGHT, 0, 0); + } else { + 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, ring_hook_action); + if(LV_BIDI_DIR_RTL == bidi_dir) { + lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_LEFT, 0, 0); + } else { + lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_RIGHT, 0, 0); + } +} + +static void phone_connected(lv_obj_t * content) +{ + lv_phone_obj_ext_t * ext = phone_get_ext(); + LV_ASSERT_MEM(ext); + if(ext == NULL) return; + + lv_bidi_dir_t bidi_dir = lv_obj_get_base_dir(content); + + //img small + lv_obj_t * img = lv_img_create(content, NULL); + if(call_params.img_src_small) { + lv_img_set_src(img, call_params.img_src_small); + } + + //name and number + 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_long_mode(label, LV_LABEL_LONG_SROLL); + lv_obj_set_width(label, lv_obj_get_width(content) - 10); + char txt[NV_CONTACTS_MAX_NAME_LEN + NV_CONTACTS_MAX_NUMBER_LEN] = {}; + if(LV_BIDI_DIR_RTL == bidi_dir) { + lv_obj_set_base_dir(label, LV_BIDI_DIR_LTR); + strcat(txt, call_params.number); + if(strlen(call_params.name) > 0) { + strcat(txt, " "); + strcat(txt, call_params.name); + } + } else { + if(strlen(call_params.name) > 0) { + strcat(txt, call_params.name); + strcat(txt, " "); + } + strcat(txt, call_params.number); + } + lv_label_set_text(label, txt); + + //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; + + lv_obj_t * cont = 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, volume_btn_action); + if(LV_BIDI_DIR_RTL == bidi_dir) { + lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_RIGHT, 0, 0); + } else { + 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, ring_off_action); + if(LV_BIDI_DIR_RTL == bidi_dir) { + lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_LEFT, 0, 0); + } else { + lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_RIGHT, 0, 0); + } + + hal_rtc_t rtc_curr; // current rtc time + Hal_Rtc_Gettime(&rtc_curr); + ext->connect_start_time = time_to_seconds(&rtc_curr); + printf("%s: connect_start_time=%u, rtc_curr = %d/%d/%d, %d:%d:%d\n", __FUNCTION__, + ext->connect_start_time, + rtc_curr.tm_year, + rtc_curr.tm_mon, + rtc_curr.tm_mday, + rtc_curr.tm_hour, + rtc_curr.tm_min, + rtc_curr.tm_sec); +} + lv_obj_t * phone_create(lv_obj_t * activity_obj, phone_ui_t phone_ui_id) { printf("%s: phone_ui_id=%d\n", __FUNCTION__, phone_ui_id); @@ -118,6 +620,7 @@ lv_obj_t * phone_create(lv_obj_t * activity_obj, phone_ui_t phone_ui_id) return obj; } +#endif lv_res_t phone_ring_off_create() { @@ -422,6 +925,30 @@ static void phone_ring_off_timeout_cb(void * para) watch_modem_call_response_no_carrier(call_params.index, 0); } +#ifdef __MMI_ZHSX_SUPPORT__ +void ring_hook_action(lv_obj_t * btn, lv_event_t e) +{ + (void)btn; + + if(LV_EVENT_CLICKED != e) + return; + + lv_phone_obj_ext_t * ext = phone_get_ext(); + if(ext->num_label) + { + lv_label_set_text_id(ext->num_label, WATCH_TEXT_ID_CONNECTING); + } + + printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + Hal_Tone_Play_End(); + + //set voice call status + Hal_Set_Voice_Call_Status(VOICE_CALL_START); + + watch_modem_call_request_answer(); +} +#else void ring_hook_action(lv_obj_t * btn, lv_event_t e) { (void)btn; @@ -455,6 +982,7 @@ void ring_hook_action(lv_obj_t * btn, lv_event_t e) Hal_Timer_Start(60, phone_connected_cb, NULL, 0); #endif } +#endif static void phone_cleanup(void) { @@ -597,253 +1125,15 @@ static void anim_fp_connected(lv_anim_t * anim) char str[20] = ""; get_time_elaps(ext->connect_start_time, str, 20); - if(anim->var) lv_label_set_text(anim->var, str); -} - -static void phone_dialing(lv_obj_t * content) -{ - printf("%s\n", __FUNCTION__); - - lv_phone_obj_ext_t * ext = phone_get_ext(); - LV_ASSERT_MEM(ext); - if(ext == NULL) return; - - lv_bidi_dir_t bidi_dir = lv_obj_get_base_dir(content); - - //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(call_params.img_src_small) { - lv_img_set_src(img, call_params.img_src_small); - } - - //name and number - 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_long_mode(label, LV_LABEL_LONG_SROLL); - lv_obj_set_width(label, lv_obj_get_width(content) - 10); - char txt[NV_CONTACTS_MAX_NAME_LEN + NV_CONTACTS_MAX_NUMBER_LEN] = {}; -#if 1 - if(LV_BIDI_DIR_RTL == bidi_dir) - lv_obj_set_base_dir(label, LV_BIDI_DIR_LTR); - - if(strlen(call_params.name) > 0) - strcpy(txt, call_params.name); - else - strcpy(txt, call_params.number); - +#ifdef __MMI_ZHSX_SUPPORT__ + if(anim->var) + { + lv_label_set_text(anim->var, str); + lv_obj_align(anim->var, ext->num_label, LV_ALIGN_OUT_BOTTOM_MID, 0, 10); + } #else - if(LV_BIDI_DIR_RTL == bidi_dir) { - lv_obj_set_base_dir(label, LV_BIDI_DIR_LTR); - strcat(txt, call_params.number); - if(strlen(call_params.name) > 0) { - strcat(txt, " "); - strcat(txt, call_params.name); - } - } else { - if(strlen(call_params.name) > 0) { - strcat(txt, call_params.name); - strcat(txt, " "); - } - strcat(txt, call_params.number); - } + if(anim->var) lv_label_set_text(anim->var, str); #endif - lv_label_set_text(label, txt); - - lv_obj_t * cont = 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, volume_btn_action); - if(LV_BIDI_DIR_RTL == bidi_dir) { - lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_RIGHT, 0, 0); - } else { - 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, ring_off_action); - if(LV_BIDI_DIR_RTL == bidi_dir) { - lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_LEFT, 0, 0); - } else { - lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_RIGHT, 0, 0); - } -} - -static void phone_ring(lv_obj_t * content) -{ - printf("%s\n", __FUNCTION__); - - lv_watch_indev_reset(); - - lv_phone_obj_ext_t * ext = phone_get_ext(); - LV_ASSERT_MEM(ext); - if(ext == NULL) return; - lv_obj_t * label; - - lv_bidi_dir_t bidi_dir = lv_obj_get_base_dir(content); - - //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(call_params.img_src_small) { - lv_img_set_src(img, call_params.img_src_small); - } - - //name and number - 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_long_mode(label, LV_LABEL_LONG_SROLL); - lv_obj_set_width(label, lv_obj_get_width(content) - 10); - char txt[NV_CONTACTS_MAX_NAME_LEN + NV_CONTACTS_MAX_NUMBER_LEN] = {}; - if(LV_BIDI_DIR_RTL == bidi_dir) { - lv_obj_set_base_dir(label, LV_BIDI_DIR_LTR); - strcat(txt, call_params.number); - if(strlen(call_params.name) > 0) { - strcat(txt, " "); - strcat(txt, call_params.name); - } - } else { - if(strlen(call_params.name) > 0) { - strcat(txt, call_params.name); - strcat(txt, " "); - } - strcat(txt, call_params.number); - } - lv_label_set_text(label, txt); - ext->num_label = label; - - lv_obj_t * cont = phone_cont_create(content, LV_LAYOUT_OFF, &lv_watch_style_transp, lv_obj_get_width(content) - 40); - ext->btn_cont = cont; - - //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, ring_off_action); - if(LV_BIDI_DIR_RTL == bidi_dir) { - lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_RIGHT, 0, 0); - } else { - 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, ring_hook_action); - if(LV_BIDI_DIR_RTL == bidi_dir) { - lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_LEFT, 0, 0); - } else { - lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_RIGHT, 0, 0); - } -} - -static void phone_connected(lv_obj_t * content) -{ - lv_phone_obj_ext_t * ext = phone_get_ext(); - LV_ASSERT_MEM(ext); - if(ext == NULL) return; - - lv_bidi_dir_t bidi_dir = lv_obj_get_base_dir(content); - - //img small - lv_obj_t * img = lv_img_create(content, NULL); - if(call_params.img_src_small) { - lv_img_set_src(img, call_params.img_src_small); - } - - //name and number - 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_long_mode(label, LV_LABEL_LONG_SROLL); - lv_obj_set_width(label, lv_obj_get_width(content) - 10); - char txt[NV_CONTACTS_MAX_NAME_LEN + NV_CONTACTS_MAX_NUMBER_LEN] = {}; - if(LV_BIDI_DIR_RTL == bidi_dir) { - lv_obj_set_base_dir(label, LV_BIDI_DIR_LTR); - strcat(txt, call_params.number); - if(strlen(call_params.name) > 0) { - strcat(txt, " "); - strcat(txt, call_params.name); - } - } else { - if(strlen(call_params.name) > 0) { - strcat(txt, call_params.name); - strcat(txt, " "); - } - strcat(txt, call_params.number); - } - lv_label_set_text(label, txt); - - //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; - - lv_obj_t * cont = 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, volume_btn_action); - if(LV_BIDI_DIR_RTL == bidi_dir) { - lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_RIGHT, 0, 0); - } else { - 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, ring_off_action); - if(LV_BIDI_DIR_RTL == bidi_dir) { - lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_LEFT, 0, 0); - } else { - lv_obj_align(btn, cont, LV_ALIGN_IN_BOTTOM_RIGHT, 0, 0); - } - - hal_rtc_t rtc_curr; // current rtc time - Hal_Rtc_Gettime(&rtc_curr); - ext->connect_start_time = time_to_seconds(&rtc_curr); - printf("%s: connect_start_time=%u, rtc_curr = %d/%d/%d, %d:%d:%d\n", __FUNCTION__, - ext->connect_start_time, - rtc_curr.tm_year, - rtc_curr.tm_mon, - rtc_curr.tm_mday, - rtc_curr.tm_hour, - rtc_curr.tm_min, - rtc_curr.tm_sec); } static void phone_prepare_destory(lv_obj_t * activity_obj) @@ -883,6 +1173,14 @@ static void get_time_elaps(uint32_t last_time, char * str, int8_t size) uint32_t hours = minutes / 60; minutes = minutes % 60; +#ifdef __MMI_ZHSX_SUPPORT__ + if(hours == 0) + snprintf(str, size, "%02d:%02d", minutes, seconds); + else + snprintf(str, size, "%02d:%02d:%02d", hours, minutes, seconds); + +#else + if(hours == 0) { if(lv_lang_act() == LANG_CH) { snprintf(str, size, "%d%s:%d%s", minutes, (char *)lv_lang_get_text(WATCH_TEXT_ID_MINUTES), seconds, (char *)lv_lang_get_text(WATCH_TEXT_ID_SECONDS)); @@ -896,6 +1194,7 @@ static void get_time_elaps(uint32_t last_time, char * str, int8_t size) snprintf(str, size, "%.2d:%.2d:%.2d", hours, minutes, seconds); } } +#endif } static void call_prompt_prepare_destory(lv_obj_t * activity_obj) diff --git a/2.sdk/gui/lv_watch/lv_apps/qrcode/qrcode.c b/2.sdk/gui/lv_watch/lv_apps/qrcode/qrcode.c index 95f50421..74eeb94b 100644 --- a/2.sdk/gui/lv_watch/lv_apps/qrcode/qrcode.c +++ b/2.sdk/gui/lv_watch/lv_apps/qrcode/qrcode.c @@ -15,8 +15,13 @@ /********************* * DEFINES *********************/ +#ifdef __MMI_ZHSX_SUPPORT__ +#define QRCODE_BG_WIDTH (190) +#define QRCODE_WIDTH (188) +#else #define QRCODE_BG_WIDTH 136 #define QRCODE_WIDTH 126 /*21*n*/ +#endif /********************** * TYPEDEFS @@ -103,7 +108,6 @@ static lv_obj_t * qrcode_create_content(lv_obj_t * par) lv_obj_align(content, par, LV_ALIGN_CENTER, 0, -20); #ifdef __MMI_ZHSX_SUPPORT__ - char imei[16] = {0}; app_adp_get_imei_req(imei); @@ -111,7 +115,7 @@ static lv_obj_t * qrcode_create_content(lv_obj_t * par) lv_obj_align(qrcode, content, LV_ALIGN_CENTER, 0, 0); lv_obj_t * label = lv_label_create(par, NULL); - lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font20); + lv_obj_add_style(label, LV_OBJ_PART_MAIN, &lv_watch_font24); lv_label_set_text(label, imei); lv_obj_set_click(label, false); lv_obj_align(label, content, LV_ALIGN_OUT_BOTTOM_MID, 0, 6); diff --git a/2.sdk/gui/lv_watch/lv_apps/setting/setting.c b/2.sdk/gui/lv_watch/lv_apps/setting/setting.c index 4436da6c..c98190b8 100644 --- a/2.sdk/gui/lv_watch/lv_apps/setting/setting.c +++ b/2.sdk/gui/lv_watch/lv_apps/setting/setting.c @@ -47,6 +47,10 @@ const struct { { ICON_SETTING_BRIGHTNESS, WATCH_TEXT_ID_BRIGHTNESS_ADJUST, setting_brightness_create_btn_action }, { ICON_SETTING_DATETIME, WATCH_TEXT_ID_DATE_AND_TIME, setting_date_time_create_btn_action}, //{ ICON_SETTING_LANGUAGE, WATCH_TEXT_ID_LANGUAGE_SWITCH, language_create_btn_action }, +#if USE_LV_WATCH_QRCODE != 0 + //{ ICON_SETTING_QRCODE, WATCH_TEXT_ID_CREATE_QRCODE, qrcode_create_event_cb }, + { ICON_SETTING_QRCODE, WATCH_TEXT_ID_DEVICE_QRCODE, qrcode_create_event_cb }, +#endif #if USE_LV_WATCH_VOLTE_SWTICH != 0 { ICON_SETTING_VOLTE, WATCH_TEXT_ID_VOLTE, volte_switch_create_btn_action }, #endif @@ -66,10 +70,6 @@ const struct { { ICON_SETTING_UPGRADE, WATCH_TEXT_ID_SYSTEM_UPGRADE, btn_event_cb }, #endif { ICON_SETTING_ABOUT, WATCH_TEXT_ID_ABOUT_WATCH, setting_about_create_btn_action }, -#if USE_LV_WATCH_QRCODE != 0 - //{ ICON_SETTING_QRCODE, WATCH_TEXT_ID_CREATE_QRCODE, qrcode_create_event_cb }, - { ICON_SETTING_QRCODE, WATCH_TEXT_ID_DEVICE_QRCODE, qrcode_create_event_cb }, -#endif //{ &icon_setting_time_zone, WATCH_TEXT_ID_TIME_ZONE, btn_action }, //{ &icon_setting_add_friends, WATCH_TEXT_ID_ADD_FRIEND_ADJUST, btn_action }, //{ &icon_setting_ring_music, WATCH_TEXT_ID_RINGTONE_SWITCH, btn_action }, diff --git a/2.sdk/gui/lv_watch/lv_watch.h b/2.sdk/gui/lv_watch/lv_watch.h index 975d1ad7..06197736 100644 --- a/2.sdk/gui/lv_watch/lv_watch.h +++ b/2.sdk/gui/lv_watch/lv_watch.h @@ -167,9 +167,12 @@ extern "C" { #ifdef __MMI_ZHSX_SUPPORT__ +#include "mmi_customer_default.h" +#include "mmi_sundry/mmi_common.h" #include "mmi_location/mmi_location.h" #include "mmi_protocol/mmi_protocol_api.h" #include "mmi_protocol/mmi_protocol_fzd.h" +#include "mmi_protocol/mmi_protocol_sms.h" #include "mmi_sundry/mmi_sundry.h" #ifdef __MMI_WECHAT_SUPPORT__ #include "lv_apps/wechat/wechat.h" diff --git a/2.sdk/gui/lv_watch/lv_watch_res.h b/2.sdk/gui/lv_watch/lv_watch_res.h index 0bc9ab28..e7d61e0d 100644 --- a/2.sdk/gui/lv_watch/lv_watch_res.h +++ b/2.sdk/gui/lv_watch/lv_watch_res.h @@ -659,7 +659,6 @@ LV_IMG_DECLARE(img_poweron_logo); #define ICON_COMMON_BG_WHITE "R:/png/common/ICON_COMMON_BG_WHITE.png" #define ICON_COMMON_SUCCESS "R:/png/common/ICON_COMMON_SUCCESS.png" - // wechat #ifdef __MMI_WECHAT_SUPPORT__ #define ICON_WECHAT_NO_NETWORK "R:/png/wechat/ICON_WECHAT_NO_NETWORK.png" @@ -714,13 +713,14 @@ LV_IMG_DECLARE(img_poweron_logo); #define AUDIO_WATCH_SEARCH "R:/audio/audio_watch_search.mp3" -//#define ICON_CALL_OUTGOING "R:/png/call/icon_heart_rate_measure_done.png" -//#define ICON_CALL_INCOMING "R:/png/call/icon_heart_rate_measure_fail.png" -//#define ICON_CALL_CONNECTING "R:/png/call/icon_heart_rate_measure_fail.png" +#define ICON_CALL_OUTGOING "R:/png/call/ICON_CALL_OUTGOING.png" +#define ICON_CALL_INCOMING "R:/png/call/ICON_CALL_INCOMING.png" +#define ICON_CALL_CALLING "R:/png/call/ICON_CALL_CALLING.png" #endif + //font #ifdef USE_FONT_TTF /* YH2312F.ttf include 60 special symbols from FontAwesome5-Solid+Brands+Regular_simple.ttf, see lv_symbol_def.h */ diff --git a/2.sdk/gui/lv_watch/mmi_location/mmi_location.c b/2.sdk/gui/lv_watch/mmi_location/mmi_location.c index 83b0fbc3..afa10b1b 100644 --- a/2.sdk/gui/lv_watch/mmi_location/mmi_location.c +++ b/2.sdk/gui/lv_watch/mmi_location/mmi_location.c @@ -124,6 +124,46 @@ void mmi_watch_location_mission_list_data_send(void) } } +void mmi_watch_location_gps_data_get(void) +{ + double gpsLon = 0, gpsLat = 0; + gpsNmeaDataT gpsNmeaData = {0}; + + LOCATION_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + ReadNmeaData(&gpsNmeaData); + if('A' == gpsNmeaData.NmeaRmcData.Status) + { + LOCATION_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + + hal_gps_aidpos_save(gpsNmeaData.NmeaRmcData.Latitude, gpsNmeaData.NmeaRmcData.NSIndicator, + gpsNmeaData.NmeaRmcData.Longitude, gpsNmeaData.NmeaRmcData.WEIndicator, + gpsNmeaData.NmeaGgaData.Altitude); + + gps2wgs84(gpsNmeaData.NmeaRmcData.Latitude, gpsNmeaData.NmeaRmcData.Longitude, &gpsLat, &gpsLon); + + s_watch_location_data.gps_data.state = 'A'; + s_watch_location_data.gps_data.latitude = gpsLat; + s_watch_location_data.gps_data.ns = gpsNmeaData.NmeaRmcData.NSIndicator; + s_watch_location_data.gps_data.longitude = gpsLon; + s_watch_location_data.gps_data.ew = gpsNmeaData.NmeaRmcData.WEIndicator; + s_watch_location_data.gps_data.speed = gpsNmeaData.NmeaRmcData.SpeedOverGround; + s_watch_location_data.gps_data.degree = gpsNmeaData.NmeaRmcData.CourseOverGround; + s_watch_location_data.gps_data.altitude = gpsNmeaData.NmeaGgaData.Altitude; + s_watch_location_data.gps_data.satellite_num = gpsNmeaData.NmeaGgaData.SatellitesUsed; + + s_watch_location_gps_state = MMI_WATCH_LOCATION_STATE_SUCCESS; + } + /* + else if(pBuf.NmeaGgaData.status == 1) + { + hal_gps_aidpos_save(pBuf.NmeaGgaData.latitude, pBuf.NmeaGgaData.NSIndicator, + pBuf.NmeaGgaData.longitude, pBuf.NmeaGgaData.WEIndicator, + pBuf.NmeaGgaData.Altitude); + gps2wgs84(pBuf.NmeaGgaData.latitude, pBuf.NmeaGgaData.longitude, &gpsLat, &gpsLon); + } + */ +} void mmi_watch_location_gps_finsh_cb(void *param) { @@ -230,30 +270,6 @@ void mmi_watch_location_wifi_stop(void) wifi_scan_destroy(); } -static uint8_t HexStr2Int(char *str_hex, uint8_t str_hex_len) -{ - uint8_t int_value = 0; - uint8_t i = 0, t_value = 0; - char t_char = 0; - - if(NULL == str_hex || 0 == str_hex_len) - return 0; - - for(i = 0; i < str_hex_len; i++) - { - t_char = str_hex[i]; - if('a' <= t_char && 'z' >= t_char) - { - t_char = t_char - 'a' + 'A'; - } - - t_value = ('A' <= t_char) ? (t_char - 'A' + 10) : (t_char - '0'); - int_value = int_value * 16 + t_value; - } - - return int_value; -} - void mmi_watch_location_wifi_scan_cb(WIFI_SCAN_ID_DEF msgid, WifiInfoT *wifi_info) { //if(WIFI_SCAN_MSG_COMPLETE == msgid) @@ -273,7 +289,7 @@ void mmi_watch_location_wifi_scan_cb(WIFI_SCAN_ID_DEF msgid, WifiInfoT *wifi_inf uint8_t j = 0; for(j = 0; j < APP_ADP_WIFI_MAC_LEN; j++) { - s_watch_location_data.wifi_data.item[i].mac[j] = HexStr2Int(wifi_info->WifiHotspot[i].MacAddr[j * 2], 2); + s_watch_location_data.wifi_data.item[i].mac[j] = mmi_hex_string_to_number(wifi_info->WifiHotspot[i].MacAddr[j * 2], 2); } } } @@ -314,6 +330,8 @@ void mmi_watch_location_mission_stop(void) static void mmi_watch_location_mission_timer_cb(uint32_t para) { LOCATION_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: total=%d,count=%d\n", __FUNCTION__, __LINE__, MMI_WATCH_LOCATION_CHECK_TIMES_COUNT_MAX, s_watch_location_times_check_count); + + //mmi_watch_location_gps_data_get(); s_watch_location_times_check_count++; if(MMI_WATCH_LOCATION_CHECK_TIMES_COUNT_MAX <= s_watch_location_times_check_count) @@ -338,7 +356,7 @@ static void mmi_watch_location_mission_timer_cb(uint32_t para) { LOCATION_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - uos_timer_start(s_watch_location_timer_id, MMI_WATCH_LOCATION_PROCESS_DURATION, 0, mmi_watch_location_mission_timer_cb, NULL); + uos_timer_start(s_watch_location_timer_id, MS_TO_TICKS(MMI_WATCH_LOCATION_PROCESS_DURATION), 0, mmi_watch_location_mission_timer_cb, NULL); } } } @@ -356,7 +374,7 @@ void mmi_watch_location_mission_start(void) s_watch_location_times_check_count = 0; uos_timer_create(&s_watch_location_timer_id); - uos_timer_start(s_watch_location_timer_id, MMI_WATCH_LOCATION_PROCESS_DURATION, 0, mmi_watch_location_mission_timer_cb, NULL); + uos_timer_start(s_watch_location_timer_id, MS_TO_TICKS(MMI_WATCH_LOCATION_PROCESS_DURATION), 0, mmi_watch_location_mission_timer_cb, NULL); mmi_watch_location_gps_start(); mmi_watch_location_cell_start(); diff --git a/2.sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.c b/2.sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.c index dbde8905..8bc52af6 100644 --- a/2.sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.c +++ b/2.sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.c @@ -85,11 +85,44 @@ void mmi_watch_protocol_data_nv_default(nv_watch_protocol_data_t * data) { PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: nv default\n", __FUNCTION__, __LINE__); + data->watch_host_name = MMI_PROTOCOL_IP_ADDRESS_DEFAULT; + data->watch_host_port = MMI_PROTOCOL_IP_PORT_DEFAULT; data->heartbeat_action_interval = MMI_PROTOCOL_HEARTBEAT_ACTION_INTERVAL; data->location_upload_interval = MMI_PROTOCOL_LOCATION_UPLOAD_INTERVAL; data->weather_update_interval = MMI_PROTOCOL_WEATHER_UPDATE_INTERVAL; } +char * mmi_watch_host_name_get(void) +{ + return (s_watch_protocol_data.watch_host_name); +} + +void mmi_watch_host_name_set(char * ip_address) +{ + if(NULL == ip_address) + return; + if(NV_WATCH_HOST_NAME_LEN_MAX <= strlen(ip_address)) + return; + + _lv_memset_00(s_watch_protocol_data.watch_host_name, NV_WATCH_HOST_NAME_LEN_MAX); + strcpy(s_watch_protocol_data.watch_host_name, ip_address); + mmi_watch_protocol_data_nv_write(); +} + +int mmi_watch_host_port_get(void) +{ + return (s_watch_protocol_data.watch_host_port); +} + +void mmi_watch_host_port_set(int ip_port) +{ + if(0 <= ip_port) + return; + + s_watch_protocol_data.watch_host_port = ip_port; + mmi_watch_protocol_data_nv_write(); +} + uint32_t mmi_protocol_watch_heartbeat_action_interval_get(void) { return (s_watch_protocol_data.heartbeat_action_interval); @@ -149,7 +182,7 @@ static void mmi_protocol_watch_timed_mission_timer_cb(uint32_t para) mmi_health_measure_blood_timed_action(false, cur_time_stamp); mmi_health_measure_spo2_timed_action(false, cur_time_stamp); - uos_timer_start(s_watch_timed_mission_timer_id, 1000 * 20, 0, mmi_protocol_watch_timed_mission_timer_cb, NULL); + uos_timer_start(s_watch_timed_mission_timer_id, MS_TO_TICKS(1000 * 20), 0, mmi_protocol_watch_timed_mission_timer_cb, NULL); } void mmi_protocol_watch_timed_mission_action(void) @@ -167,14 +200,14 @@ void mmi_protocol_watch_timed_mission_action(void) mmi_protocol_action_get_weather(); s_watch_timed_weather_time_stamp = cur_time_stamp; - mmi_health_measure_timed_info_init(); + mmi_health_measure_timed_info_nv_read(); mmi_health_measure_heart_timed_action(true, cur_time_stamp); mmi_health_measure_temperature_timed_action(true, cur_time_stamp); mmi_health_measure_blood_timed_action(true, cur_time_stamp); mmi_health_measure_spo2_timed_action(true, cur_time_stamp); uos_timer_create(&s_watch_timed_mission_timer_id); - uos_timer_start(s_watch_timed_mission_timer_id, 1000 * 20, 0, mmi_protocol_watch_timed_mission_timer_cb, NULL); + uos_timer_start(s_watch_timed_mission_timer_id, MS_TO_TICKS(1000 * 20), 0, mmi_protocol_watch_timed_mission_timer_cb, NULL); } } @@ -201,7 +234,7 @@ static void mmi_protocol_watch_heartbeat_timer_cb(uint32_t para) s_watch_heartbeat_action_time_stamp = cur_time_stamp; } - uos_timer_start(s_watch_heartbeat_action_timer_id, 1000 * 20, 0, mmi_protocol_watch_heartbeat_timer_cb, NULL); + uos_timer_start(s_watch_heartbeat_action_timer_id, MS_TO_TICKS(1000 * 20), 0, mmi_protocol_watch_heartbeat_timer_cb, NULL); } void mmi_protocol_watch_heartbeat_action(void) @@ -210,14 +243,12 @@ void mmi_protocol_watch_heartbeat_action(void) { PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); - mmi_watch_protocol_data_nv_read(); - mmi_protocol_action_link(); Hal_Rtc_Gettime_Count(&s_watch_heartbeat_action_time_stamp); uos_timer_create(&s_watch_heartbeat_action_timer_id); - uos_timer_start(s_watch_heartbeat_action_timer_id, 1000 * 20, 0, mmi_protocol_watch_heartbeat_timer_cb, NULL); + uos_timer_start(s_watch_heartbeat_action_timer_id, MS_TO_TICKS(1000 * 20), 0, mmi_protocol_watch_heartbeat_timer_cb, NULL); } } diff --git a/2.sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.h b/2.sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.h index c4b1c146..ac0f4a6a 100644 --- a/2.sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.h +++ b/2.sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.h @@ -12,7 +12,7 @@ extern "C" #endif //__cplusplus -//#define __MMI_PROTOCOL_DEBUG__ +#define __MMI_PROTOCOL_DEBUG__ #ifdef __MMI_PROTOCOL_DEBUG__ #define PROTOCOL_DEBUG_PRINTF(fmt, ...) printf("[PROTOCOL]"fmt, ##__VA_ARGS__) #else @@ -20,18 +20,6 @@ extern "C" #endif -//Server address and port -//#define HOST_NAME "api.xcloudtech.com" -//#define HOST_PORT (9000) - - -#define MMI_PROTOCOL_HEARTBEAT_ACTION_INTERVAL (60 * 5) // s - -#define MMI_PROTOCOL_LOCATION_UPLOAD_INTERVAL (60 * 20) // s - -#define MMI_PROTOCOL_WEATHER_UPDATE_INTERVAL (60 * 60 * 6) // s - - bool mmi_watch_tcp_connect_state_get(void); @@ -49,8 +37,18 @@ void mmi_protocol_send_space_free(int cmd); bool mmi_protocol_send_cmd_check(int cmd); +void mmi_watch_protocol_data_nv_read(void); + void mmi_watch_protocol_data_nv_default(nv_watch_protocol_data_t * data); +char * mmi_watch_host_name_get(void); + +void mmi_watch_host_name_set(char * ip_address); + +int mmi_watch_host_port_get(void); + +void mmi_watch_host_port_set(int ip_port); + void mmi_protocol_watch_timed_mission_action(void); void mmi_protocol_watch_heartbeat_stop(void); diff --git a/2.sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c b/2.sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c index d45ef9a8..804740f2 100644 --- a/2.sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c +++ b/2.sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c @@ -22,72 +22,6 @@ static unsigned char * mmi_protocol_fzd_action_string_get(MMI_PROTOCOL_FZD_ACTIO static bool mmi_protocol_fzd_content_parse(unsigned char * content_ptr, unsigned int content_length); -static signed char mmi_char_to_upper(signed char c) -{ - if ( c >= 'a' && c <= 'z' ) - { - c = c - 'a' + 'A'; - } - - return c; -} - -static void mmi_float_to_str(double float_num, uint8_t int_num, char * data_str) -{ - uint8_t i = 0; - uint32_t high_part = 0; - double low_part = 0.0; - char high_part_str[16] = {0}, low_part_str[16] = {0}; - - high_part = (int)float_num; - sprintf(high_part_str, "%d", high_part); - - low_part = float_num - high_part; - for(i = 0; i < int_num; i++) - { - uint32_t temp_high = 0; - - low_part = low_part * 10; - temp_high = (int)low_part; - low_part -= temp_high; - low_part_str[i] = '0' + temp_high; - } - low_part_str[i] = '\0'; - - sprintf(data_str, "%s.%s", high_part_str, low_part_str); -} - -void km_str_toupper(signed char *str, signed int len) -{ - signed int i = 0; - - for(i=0;i= 'A')?upper - 'A' + 10:upper - '0'; - number = number*16 + temp_num; - } - - return number; -} - char *km_strtok_r(char *s, const char *delim, char **last) { /*----------------------------------------------------------------*/ @@ -561,7 +495,7 @@ bool mmi_protocol_fzd_receive_data_parse(void) } //length - content_len = km_str_hex_string_to_number(content_len_ptr, MMI_PROTOCOL_FZD_CONTENT_LEN_LEN); + content_len = mmi_hex_string_to_number(content_len_ptr, MMI_PROTOCOL_FZD_CONTENT_LEN_LEN); PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: content_len=%d, recv_len=%d\n", __FUNCTION__, __LINE__, content_len, recv_len); if(MMI_PROTOCOL_FZD_RECEIVE_FIXED_CONTENT_LEN + content_len > recv_len) { @@ -631,51 +565,55 @@ static bool mmi_protocol_fzd_respond_without_data(MMI_PROTOCOL_FZD_ACTION_ENUM a static unsigned char * mmi_protocol_fzd_action_string_get(MMI_PROTOCOL_FZD_ACTION_ENUM action) { - unsigned char* action_string[MMI_FZD_ACTION_MAX] = - { - "NONE", //MMI_FZD_ACTION_NONE - - "KA", //MMI_FZD_ACTION_LINK - "PING", //MMI_FZD_ACTION_BIND - "LGZONE", //MMI_FZD_ACTION_GET_TIME - "UD", //MMI_FZD_ACTION_SEND_LOCATION - "CRUD", //MMI_FZD_ACTION_SEND_CUR_LOCATION - "CR", //MMI_FZD_SERVER_GET_CUR_LOCATION - "UPLOAD", //MMI_FZD_SERVER_SET_UD_INTERVAL - "AL", //MMI_FZD_ACTION_ALERT - "FACTORY", //MMI_FZD_SERVER_SET_FACTORY - "POWEROFF", //MMI_FZD_SERVER_SET_POWEROFF - - "FIND", //MMI_FZD_SERVER_FIND_WATCH - "VERNO", //MMI_FZD_SERVER_GET_VERSION - "PHL", //MMI_FZD_SERVER_SET_PHONEBOOK - "CALL", //MMI_FZD_SERVER_SET_CALL - "REMIND", //MMI_FZD_SERVER_SET_REMIND - - "hrtstart", //MMI_FZD_SERVER_SET_HEART_INTERVAL - "heart", //MMI_FZD_ACTION_SEND_HEART - "wdstart", //MMI_FZD_SERVER_SET_TEMPERATURE_INTERVAL - "temp", //MMI_FZD_ACTION_SEND_TEMPERATURE - "bldstart", //MMI_FZD_SERVER_SET_BLOOD_INTERVAL - "blood", //MMI_FZD_ACTION_SEND_BLOOD - "oxstart", //MMI_FZD_SERVER_SET_SPO2_INTERVAL - "oxygen", //MMI_FZD_ACTION_SEND_SPO2 - - #ifdef __MMI_WECHAT_SUPPORT__ - "TK", //MMI_FZD_ACTION_TALK - #endif + struct + { + MMI_PROTOCOL_FZD_ACTION_ENUM action; + unsigned char* action_string; + }action_struct[MMI_FZD_ACTION_MAX] = + { + {MMI_FZD_ACTION_NONE, "NONE"}, //MMI_FZD_ACTION_NONE + + {MMI_FZD_ACTION_LINK, "KA"}, //MMI_FZD_ACTION_LINK + {MMI_FZD_ACTION_BIND, "PING"}, // + {MMI_FZD_ACTION_GET_TIME, "LGZONE"}, // + {MMI_FZD_ACTION_SEND_LOCATION, "UD"}, // + {MMI_FZD_ACTION_SEND_CUR_LOCATION, "CRUD"}, // + {MMI_FZD_SERVER_GET_CUR_LOCATION, "CR"}, // + {MMI_FZD_SERVER_SET_UD_INTERVAL, "UPLOAD"}, // + {MMI_FZD_ACTION_ALERT, "AL"}, // + {MMI_FZD_SERVER_SET_FACTORY, "FACTORY"}, // + {MMI_FZD_SERVER_SET_POWEROFF, "POWEROFF"}, // + + {MMI_FZD_SERVER_FIND_WATCH, "FIND"}, // + {MMI_FZD_SERVER_GET_VERSION, "VERNO"}, // + {MMI_FZD_SERVER_SET_PHONEBOOK, "PHL"}, // + {MMI_FZD_SERVER_SET_CALL, "CALL"}, // + {MMI_FZD_SERVER_SET_REMIND, "REMIND"}, // + + {MMI_FZD_SERVER_SET_HEART_INTERVAL, "hrtstart"}, // + {MMI_FZD_ACTION_SEND_HEART, "heart"}, // + {MMI_FZD_SERVER_SET_TEMPERATURE_INTERVAL, "wdstart"}, // + {MMI_FZD_ACTION_SEND_TEMPERATURE, "temp"}, // + {MMI_FZD_SERVER_SET_BLOOD_INTERVAL, "bldstart"}, // + {MMI_FZD_ACTION_SEND_BLOOD, "blood"}, // + {MMI_FZD_SERVER_SET_SPO2_INTERVAL, "oxstart"}, // + {MMI_FZD_ACTION_SEND_SPO2, "oxygen"}, // + + #ifdef __MMI_WECHAT_SUPPORT__ + {MMI_FZD_ACTION_TALK, "TK"}, // + #endif - "WT", //MMI_FZD_ACTION_GET_WEATHER - "SOS", //MMI_FZD_SERVER_SET_SOS_NUMBER - "CENTER", //MMI_FZD_SERVER_SET_CENTER_NUMBER + {MMI_FZD_ACTION_GET_WEATHER, "WT"}, // + {MMI_FZD_SERVER_SET_SOS_NUMBER, "SOS"}, // + {MMI_FZD_SERVER_SET_CENTER_NUMBER, "CENTER"}, // - - /*******add before this line*******/ - "", // MMI_FZD_ACTION_MAX - }; + + /*******add before this line*******/ + {MMI_FZD_ACTION_MAX, ""}, // MMI_FZD_ACTION_MAX + }; - return action_string[action]; + return action_struct[action].action_string; } static bool mmi_protocol_fzd_content_parse(unsigned char * content_ptr, unsigned int content_length) @@ -894,7 +832,7 @@ bool mmi_protocol_fzd_parse_ACTION_BIND(unsigned char * next_buff, unsigned int if(0 == value) { mmi_protocol_watch_bind_state_set(false); - uos_sleep(50); + uos_sleep(10); mmi_watch_reset(); } } @@ -999,7 +937,7 @@ bool mmi_protocol_fzd_parse_SERVER_SET_FACTORY(unsigned char * next_buff, unsign result = true; mmi_protocol_fzd_respond_without_data(action); - uos_sleep(30); + uos_sleep(10); mmi_watch_reset(); return result; @@ -1012,7 +950,7 @@ bool mmi_protocol_fzd_parse_SERVER_SET_POWEROFF(unsigned char * next_buff, unsig result = true; mmi_protocol_fzd_respond_without_data(action); - uos_sleep(30); + uos_sleep(10); app_adaptor_wake_up_short_time(); mmi_watch_power_off(); @@ -1095,7 +1033,7 @@ bool mmi_protocol_fzd_parse_SERVER_SET_PHONEBOOK(unsigned char * next_buff, unsi for(j = 0; j*4 < strlen(temp_ptr); j++) { - server_set_contact[i].contact_name[j] = km_str_hex_string_to_number(temp_ptr + j*4, 4); + server_set_contact[i].contact_name[j] = mmi_hex_string_to_number(temp_ptr + j*4, 4); } } else @@ -1128,7 +1066,7 @@ bool mmi_protocol_fzd_parse_SERVER_SET_CALL(unsigned char * next_buff, unsigned result = true; mmi_protocol_fzd_respond_without_data(action); - uos_sleep(30); + uos_sleep(10); char * number = (char *)lv_mem_alloc(next_buff_len + 1); if(NULL == number) @@ -1159,37 +1097,46 @@ bool mmi_protocol_fzd_parse_SERVER_SET_REMIND(unsigned char * next_buff, unsigne mmi_protocol_fzd_respond_without_data(action); app_adaptor_alarm_t server_set_alarm[NV_ALARM_MAX_ALARM_NUM] = {0}; - char * temp_ptr1 = NULL, temp_ptr2 = NULL; + char * group_str = NULL; + char * group_last = NULL; + char * temp_ptr = NULL; + char * last = NULL; uint8_t i = 0; - temp_ptr1 = km_strtok_r(NULL, ",", &next_buff); - while(NULL != temp_ptr1) + //PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: next_buff=%s\n", __FUNCTION__, __LINE__, next_buff); + group_str = km_strtok_r(next_buff, ",", &group_last); + //PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: temp_ptr1=%s,next_buff=%s\n", __FUNCTION__, __LINE__, group_str, next_buff); + while(NULL != group_str) { server_set_alarm[i].valid = 1; - temp_ptr2 = km_strtok_r(NULL, ":", &temp_ptr1); - server_set_alarm[i].hour = atoi(temp_ptr2); + temp_ptr = km_strtok_r(group_str, ":", &last); + server_set_alarm[i].hour = atoi(temp_ptr); + //PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: temp_ptr=%s,temp_ptr1=%s\n", __FUNCTION__, __LINE__, temp_ptr, last); - temp_ptr2 = km_strtok_r(NULL, "-", &temp_ptr1); - server_set_alarm[i].min = atoi(temp_ptr2); + temp_ptr = km_strtok_r(NULL, "-", &last); + server_set_alarm[i].min = atoi(temp_ptr); + //PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: temp_ptr=%s,temp_ptr1=%s\n", __FUNCTION__, __LINE__, temp_ptr, last); - temp_ptr2 = km_strtok_r(NULL, "-", &temp_ptr1); - server_set_alarm[i].on_off = atoi(temp_ptr2); + temp_ptr = km_strtok_r(NULL, "-", &last); + server_set_alarm[i].on_off = atoi(temp_ptr); + //PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: temp_ptr=%s,temp_ptr1=%s\n", __FUNCTION__, __LINE__, temp_ptr, last); - temp_ptr2 = km_strtok_r(NULL, "-", &temp_ptr1); - if(1 == atoi(temp_ptr2)) + temp_ptr = km_strtok_r(NULL, "-", &last); + //PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: temp_ptr=%s,temp_ptr1=%s\n", __FUNCTION__, __LINE__, temp_ptr, last); + if(1 == atoi(temp_ptr)) { server_set_alarm[i].repeat_bitmap = 0; } else { server_set_alarm[i].repeat_bitmap = 0xff; - if(NULL != temp_ptr1) + if(NULL != last) { uint8_t j = 0; for(j = 0; j < 7; j++) { - server_set_alarm[i].repeat_bitmap &= ((('0' == *(temp_ptr1 + j)) ? 0 : 1) << j); + server_set_alarm[i].repeat_bitmap &= ((('0' == *(last + j)) ? 0 : 1) << j); } } } @@ -1200,7 +1147,7 @@ bool mmi_protocol_fzd_parse_SERVER_SET_REMIND(unsigned char * next_buff, unsigne break; } - temp_ptr1 = km_strtok_r(NULL, ",", &next_buff); + group_str = km_strtok_r(NULL, ",", &group_last); } alarm_set_alarm_by_ui(&server_set_alarm, i); @@ -1839,7 +1786,7 @@ bool mmi_protocol_fzd_parse_ACTION_GET_WEATHER(unsigned char * next_buff, unsign //city for(i = 0; i*4 < strlen(next_buff); i++) { - city_name[i] = km_str_hex_string_to_number(next_buff + i*4, 4); + city_name[i] = mmi_hex_string_to_number(next_buff + i*4, 4); } weather_info.city = city_name; diff --git a/2.sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.h b/2.sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.h index d82caaa2..71cb598b 100644 --- a/2.sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.h +++ b/2.sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.h @@ -131,9 +131,6 @@ typedef enum //strtok char *km_strtok_r(char *s, const char *delim, char **last); -//convert hex string to number -signed int km_str_hex_string_to_number(signed char* hex_str, unsigned char hex_str_len); - void mmi_protocol_fzd_receive_data_process(char * recv_str, int recv_len); void * mmi_protocol_fzd_send_space_ptr_get(MMI_PROTOCOL_FZD_ACTION_ENUM action); diff --git a/2.sdk/gui/lv_watch/mmi_sundry/mmi_common.h b/2.sdk/gui/lv_watch/mmi_sundry/mmi_common.h new file mode 100644 index 00000000..f62ab943 --- /dev/null +++ b/2.sdk/gui/lv_watch/mmi_sundry/mmi_common.h @@ -0,0 +1,37 @@ + + + +#ifdef __MMI_ZHSX_SUPPORT__ + +#ifndef __MMI_COMMON_H__ +#define __MMI_COMMON_H__ + +#ifdef __cplusplus +extern "C" +{ +#endif //__cplusplus + + +//#include "lv_watch.h" + + +void mmi_float_to_str(double float_num, uint8_t int_num, char * data_str); + +signed char mmi_char_to_upper(signed char c); + +void mmi_str_to_upper(signed char *str, signed int len); + +signed int mmi_hex_string_to_number(signed char* hex_str, unsigned char hex_str_len); + + + + +#ifdef __cplusplus +} /* extern "C" */ +#endif //__cplusplus + +#endif + +#endif + + diff --git a/2.sdk/gui/lv_watch/mmi_sundry/mmi_sundry.c b/2.sdk/gui/lv_watch/mmi_sundry/mmi_sundry.c index 9c2ab7be..50803f35 100644 --- a/2.sdk/gui/lv_watch/mmi_sundry/mmi_sundry.c +++ b/2.sdk/gui/lv_watch/mmi_sundry/mmi_sundry.c @@ -1,10 +1,11 @@ -#include "lv_watch.h" - #ifdef __MMI_ZHSX_SUPPORT__ +#include "mmi_sundry.h" + + static TIMER_ID s_watch_search_timer_id = NULL; diff --git a/2.sdk/gui/lv_watch/modem/mmi_modem_tcp/mmi_modem_tcp_manage.c b/2.sdk/gui/lv_watch/modem/mmi_modem_tcp/mmi_modem_tcp_manage.c index fddc2349..4ea21a8f 100644 --- a/2.sdk/gui/lv_watch/modem/mmi_modem_tcp/mmi_modem_tcp_manage.c +++ b/2.sdk/gui/lv_watch/modem/mmi_modem_tcp/mmi_modem_tcp_manage.c @@ -155,7 +155,11 @@ void mmi_modem_tcp_connect(void *param) tcp_manage_instance.connecting_flag = true; } +#ifdef __MMI_ZHSX_SUPPORT__ + res = ValNetworkSocketInit_with_callback(NULL, mmi_watch_host_name_get, mmi_watch_host_port_get, (socket_callback)manage_socket_callback); +#else res = ValNetworkSocketInit_with_callback(NULL, HOST_NAME, HOST_PORT, (socket_callback)manage_socket_callback); +#endif printf("socket init connect res = %d\n",res); go_reconnect : if(res < 0) diff --git a/2.sdk/gui/lv_watch/modem/mmi_modem_tcp/mmi_modem_tcp_msg_handler_impl.c b/2.sdk/gui/lv_watch/modem/mmi_modem_tcp/mmi_modem_tcp_msg_handler_impl.c index 02b20b27..040240b6 100644 --- a/2.sdk/gui/lv_watch/modem/mmi_modem_tcp/mmi_modem_tcp_msg_handler_impl.c +++ b/2.sdk/gui/lv_watch/modem/mmi_modem_tcp/mmi_modem_tcp_msg_handler_impl.c @@ -29,6 +29,8 @@ void cmdmsg_handler_login_impl(void *param) printf("fun = %s, line = %d\n",__FUNCTION__,__LINE__); #ifdef __MMI_ZHSX_SUPPORT__ + printf("[@CHENG_DEBUG][%s][%d]: \n",__FUNCTION__,__LINE__); + mmi_protocol_watch_heartbeat_action(); #else @@ -42,6 +44,8 @@ void cmdmsg_handler_disconnect_impl(void *param) printf("fun = %s, line = %d\n",__FUNCTION__,__LINE__); #ifdef __MMI_ZHSX_SUPPORT__ + printf("[@CHENG_DEBUG][%s][%d]: \n",__FUNCTION__,__LINE__); + mmi_protocol_watch_bind_state_set(false); mmi_protocol_watch_heartbeat_stop(); @@ -84,27 +88,33 @@ void send_tcp_cmdmsg_handler_impl(void *param) #ifdef __MMI_ZHSX_SUPPORT__ - send_cmdmsg_t *cmdmsg = (send_cmdmsg_t *)param; - if(NULL == cmdmsg->cmd_param || 0 == cmdmsg->cmd_type) + int cmd_type = ((send_cmdmsg_t * )param)->cmd_type; + + if(false == mmi_protocol_send_cmd_check(cmd_type)) { - printf("fun = %s, line = %d\n",__FUNCTION__,__LINE__); + printf("[@CHENG_DEBUG][%s][%d]: \n",__FUNCTION__,__LINE__); + mmi_protocol_send_space_free(cmd_type); return; } if(!watch_modem_sim_present_check_req()) { - printf("fun = %s, line = %d\n",__FUNCTION__,__LINE__); + printf("[@CHENG_DEBUG][%s][%d]: \n",__FUNCTION__,__LINE__); + mmi_protocol_send_space_free(cmd_type); return; } - char *send_cmdmsg_buff = Hal_Mem_Alloc(SEND_BUFF_MAX_LEN); - if(NULL != send_cmdmsg_buff) - { - memset(send_cmdmsg_buff, 0x00, SEND_BUFF_MAX_LEN); - memcpy(send_cmdmsg_buff, cmdmsg->cmd_param, cmdmsg->cmd_type); - mmi_modem_tcp_send(send_cmdmsg_buff, strlen(send_cmdmsg_buff)); - Hal_Mem_Free(send_cmdmsg_buff); - } + unsigned char * send_cmdmsg_buff = (unsigned char *)mmi_protocol_send_space_ptr_get(cmd_type); + int send_cmdmsg_size = mmi_protocol_send_space_size_get(cmd_type); + + printf("[@CHENG_DEBUG][%s][%d]: action=%d,len=%d\n", __FUNCTION__, __LINE__, cmd_type, send_cmdmsg_size); + printf("[@CHENG_DEBUG][%d]: str=%s\n", __LINE__, send_cmdmsg_buff); + printf("[@CHENG_DEBUG][%d]: str=%s\n", __LINE__, send_cmdmsg_buff + 33); + printf("[@CHENG_DEBUG][%d]: str=%s\n", __LINE__, send_cmdmsg_buff + 59); + + mmi_modem_tcp_send(send_cmdmsg_buff, send_cmdmsg_size); + + mmi_protocol_send_space_free(cmd_type); #else @@ -172,13 +182,14 @@ void read_tcp_cmdmsg_handler_impl(void *msg) char *recv_str = (char *)Hal_Mem_Alloc(PKG_LEN); if(NULL == recv_str) { - printf("fun = %s, line = %d\n",__FUNCTION__,__LINE__); + printf("[@CHENG_DEBUG][%s][%d]: \n",__FUNCTION__,__LINE__); return; } memset(recv_str , 0x00, PKG_LEN); recv_ret = mmi_modem_tcp_read(recv_str, PKG_LEN, &recv_len); - printf("[@CHENG_DEBUG][%s][%d]: ret=%d,len=%d,ptr=0x%x,str=%s\n", __FUNCTION__, __LINE__, recv_ret, recv_len, recv_str, recv_str); + printf("[@CHENG_DEBUG][%s][%d]: ret=%d,len=%d,ptr=0x%x\n", __FUNCTION__, __LINE__, recv_ret, recv_len, recv_str); + printf("[@CHENG_DEBUG][%d]: str=%s\n", __LINE__, recv_str); if(0 <= recv_ret) { diff --git a/2.sdk/gui/lv_watch/modem/mmi_modem_tcp/mmi_modem_tcp_net.c b/2.sdk/gui/lv_watch/modem/mmi_modem_tcp/mmi_modem_tcp_net.c index aa6ab60b..cb82f59b 100644 --- a/2.sdk/gui/lv_watch/modem/mmi_modem_tcp/mmi_modem_tcp_net.c +++ b/2.sdk/gui/lv_watch/modem/mmi_modem_tcp/mmi_modem_tcp_net.c @@ -22,14 +22,15 @@ void tcp_connect_cb(int t) */ void mmi_modem_tcp_task_init(void) { - mmi_modem_tcp_task_interface_init(); - #ifdef __MMI_ZHSX_SUPPORT__ + mmi_watch_protocol_data_nv_read(); + mmi_modem_tcp_task_interface_init(); printf("[@CHENG_DEBUG][%s][%d]: \n",__FUNCTION__,__LINE__); - launcher_tcp_connect(NULL); #else + + mmi_modem_tcp_task_interface_init(); launcher_tcp_connect(tcp_connect_cb); //while(1) // { diff --git a/2.sdk/gui/lv_watch/resource/audio/audio_wechat_receive.mid b/2.sdk/gui/lv_watch/resource/audio/audio_wechat_receive.mid new file mode 100644 index 00000000..e68d119f Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/audio/audio_wechat_receive.mid differ diff --git a/2.sdk/gui/lv_watch/resource/audio/audio_wechat_receive.mp3 b/2.sdk/gui/lv_watch/resource/audio/audio_wechat_receive.mp3 new file mode 100644 index 00000000..2d51bb85 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/audio/audio_wechat_receive.mp3 differ diff --git a/2.sdk/gui/lv_watch/resource/png/call/ICON_CALL_CALLING.png b/2.sdk/gui/lv_watch/resource/png/call/ICON_CALL_CALLING.png new file mode 100644 index 00000000..2fbf579c Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/call/ICON_CALL_CALLING.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/call/ICON_CALL_INCOMING.png b/2.sdk/gui/lv_watch/resource/png/call/ICON_CALL_INCOMING.png new file mode 100644 index 00000000..670638f9 Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/call/ICON_CALL_INCOMING.png differ diff --git a/2.sdk/gui/lv_watch/resource/png/call/ICON_CALL_OUTGOING.png b/2.sdk/gui/lv_watch/resource/png/call/ICON_CALL_OUTGOING.png new file mode 100644 index 00000000..bcfedb2c Binary files /dev/null and b/2.sdk/gui/lv_watch/resource/png/call/ICON_CALL_OUTGOING.png differ diff --git "a/2.sdk/gui/lv_watch/resource/png/call/\345\216\273\347\224\265.png" "b/2.sdk/gui/lv_watch/resource/png/call/\345\216\273\347\224\265.png" new file mode 100644 index 00000000..aaf220c7 Binary files /dev/null and "b/2.sdk/gui/lv_watch/resource/png/call/\345\216\273\347\224\265.png" differ diff --git "a/2.sdk/gui/lv_watch/resource/png/call/\346\216\245\345\220\254.png" "b/2.sdk/gui/lv_watch/resource/png/call/\346\216\245\345\220\254.png" new file mode 100644 index 00000000..2cf79d72 Binary files /dev/null and "b/2.sdk/gui/lv_watch/resource/png/call/\346\216\245\345\220\254.png" differ diff --git "a/2.sdk/gui/lv_watch/resource/png/call/\346\235\245\347\224\265.png" "b/2.sdk/gui/lv_watch/resource/png/call/\346\235\245\347\224\265.png" new file mode 100644 index 00000000..24c429d3 Binary files /dev/null and "b/2.sdk/gui/lv_watch/resource/png/call/\346\235\245\347\224\265.png" differ diff --git a/2.sdk/product/craneg_modem/config/watch/lv_watch_conf.h b/2.sdk/product/craneg_modem/config/watch/lv_watch_conf.h index 38dd8d85..d77d3eaf 100644 --- a/2.sdk/product/craneg_modem/config/watch/lv_watch_conf.h +++ b/2.sdk/product/craneg_modem/config/watch/lv_watch_conf.h @@ -172,6 +172,8 @@ #define __MMI_ZHSX_SUPPORT_FZD__ +#define __MMI_ZHSX_SUPPORT_SMS__ + #if 1 //def MMI_WECHAT_SUPPORT #define __MMI_WECHAT_SUPPORT__