From: @CHENG <2393524978@qq.com> Date: Tue, 25 Feb 2025 06:52:33 +0000 (+0800) Subject: Z5_HA_K18_NFC X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=46442d71f43f215dacf09c8251ab8a1905bff246;p=mirrors%2FASR3603_Z5.git Z5_HA_K18_NFC --- diff --git a/2.sdk/sdk/gui/lv_watch/framework/language/lang_ch.c b/2.sdk/sdk/gui/lv_watch/framework/language/lang_ch.c index b5cb3667..d2a5c821 100644 --- a/2.sdk/sdk/gui/lv_watch/framework/language/lang_ch.c +++ b/2.sdk/sdk/gui/lv_watch/framework/language/lang_ch.c @@ -1004,6 +1004,8 @@ const void * lang_text_ch[] = { "浅睡", // WATCH_TEXT_ID_LIGHT_SLEEP, "快速眼动", // WATCH_TEXT_ID_REM_SLEEP, "幸福值", // WATCH_TEXT_ID_HAPPINESS_VALUE, + "幸福值开始测试", // WATCH_TEXT_ID_HAPPINESS_START, + "幸福值结束测试", // WATCH_TEXT_ID_HAPPINESS_STOP, "体验时间", // WATCH_TEXT_ID_EXPERIENCE_TIME, "终止", // WATCH_TEXT_ID_EXPERIENCE_STOP, "确定终止体验?", // WATCH_TEXT_ID_EXPERIENCE_STOP_Q, diff --git a/2.sdk/sdk/gui/lv_watch/framework/language/lang_en.c b/2.sdk/sdk/gui/lv_watch/framework/language/lang_en.c index 8b735de0..ef8df9b4 100644 --- a/2.sdk/sdk/gui/lv_watch/framework/language/lang_en.c +++ b/2.sdk/sdk/gui/lv_watch/framework/language/lang_en.c @@ -1005,6 +1005,8 @@ const void * lang_text_en[] = { "Light sleep", // WATCH_TEXT_ID_LIGHT_SLEEP, "REM", // WATCH_TEXT_ID_REM_SLEEP, "Happiness", // WATCH_TEXT_ID_HAPPINESS_VALUE, + "Happiness start", // WATCH_TEXT_ID_HAPPINESS_START, + "Happiness stop", // WATCH_TEXT_ID_HAPPINESS_STOP, "Time", // WATCH_TEXT_ID_EXPERIENCE_TIME, "Stop", // WATCH_TEXT_ID_EXPERIENCE_STOP, "Stop the experience?", // WATCH_TEXT_ID_EXPERIENCE_STOP_Q, 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 90fed253..274ca1d2 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 @@ -119,6 +119,13 @@ void mmi_ui_msg_action_charging_prompt(uint32_t chg_status) || (true == mmi_is_ACT_ID_WATCH_SEARCHING()) ) return; + +#ifdef MMI_PROJECT_Z5_HA_K18_NFC + if(true == mmi_k18_nfc_experience_screen_active()) + { + return; + } +#endif mmi_msg_charging_prompt_t * msg_info = (mmi_msg_charging_prompt_t *)Hal_Mem_Alloc(sizeof(mmi_msg_charging_prompt_t)); diff --git a/2.sdk/sdk/gui/lv_watch/include/ui_textid.h b/2.sdk/sdk/gui/lv_watch/include/ui_textid.h index eb7b5d9c..2dcbb0a2 100644 --- a/2.sdk/sdk/gui/lv_watch/include/ui_textid.h +++ b/2.sdk/sdk/gui/lv_watch/include/ui_textid.h @@ -1012,6 +1012,8 @@ enum WATCH_TEXT_ID_LIGHT_SLEEP, /* "浅睡" "Light sleep" */ WATCH_TEXT_ID_REM_SLEEP, /* "快速眼动" "REM" */ WATCH_TEXT_ID_HAPPINESS_VALUE, /* "幸福值" "Happiness" */ + WATCH_TEXT_ID_HAPPINESS_START, /* "幸福值开始测试" "Happiness start" */ + WATCH_TEXT_ID_HAPPINESS_STOP, /* "幸福值结束测试" "Happiness stop" */ WATCH_TEXT_ID_EXPERIENCE_TIME, /* "体验时间" "Time" */ WATCH_TEXT_ID_EXPERIENCE_STOP, /* "终止" "Stop" */ WATCH_TEXT_ID_EXPERIENCE_STOP_Q, /* "确定终止体验?" "Stop the experience?" */ diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/dial/dial.h b/2.sdk/sdk/gui/lv_watch/lv_apps/dial/dial.h index 752080d3..4334a317 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/dial/dial.h +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/dial/dial.h @@ -73,6 +73,7 @@ enum { ELEMENT_TYPE_BLOOD_OXYGEN, //14 ELEMENT_TYPE_USER, //15 ELEMENT_TYPE_SIGNAL, //16 + ELEMENT_TYPE_TEMPERATURE, //17 ELEMENT_TYPE_BG_SWITCH, //15 /*except when updating all elements, always at the last*/ ELEMENT_TYPE_MAX @@ -175,6 +176,8 @@ enum { IMG_TYPE_SIGNAL = ELEMENT_TYPE_SIGNAL *10, + IMG_TYPE_TEMPERATURE = ELEMENT_TYPE_TEMPERATURE * 10, //170 + IMG_TYPE_BG = ELEMENT_TYPE_BG_SWITCH * 10, //150 }; typedef uint8_t watch_img_type_t; @@ -209,6 +212,8 @@ enum { LABEL_TYPE_BLOOD_OXYGEN, //26 LABEL_TYPE_SIGNAL, //27 LABEL_TYPE_SIGNAL_REGISTER_STATE, // 28 + LABEL_TYPE_TEMPERATURE, // 29 + LABEL_TYPE_USER_CUSTOM, // 30 }; diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/dial/dial_element.c b/2.sdk/sdk/gui/lv_watch/lv_apps/dial/dial_element.c index 8b432da8..e99fc535 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/dial/dial_element.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/dial/dial_element.c @@ -467,6 +467,7 @@ static bool dial_is_unchangeable_img(watch_img_type_t type) type == IMG_TYPE_BLOOD_OXYGEN || IMG_TYPE_USER_PNG == type || IMG_TYPE_HEART_RATE_IMAGE == type + || IMG_TYPE_TEMPERATURE == type ) return true; else @@ -480,7 +481,9 @@ static bool dial_is_unchangeable_label(watch_label_type_t type) type == LABEL_TYPE_CALORIE_KCAL || type == LABEL_TYPE_STEP_STEPS || type == LABEL_TYPE_DISTANCE_KM || - type == LABEL_TYPE_HEART_RATE_BPM) + type == LABEL_TYPE_HEART_RATE_BPM + || LABEL_TYPE_USER_CUSTOM == type + ) return true; else return false; @@ -523,7 +526,7 @@ static void dial_update_canvas_label(watch_element_base_t * base) app_adaptor_get_pedometer_info_req(&record); } if(ELEMENT_TYPE_HEART_RATE == base->element_type || ELEMENT_TYPE_SLEEP_QUALITY == base->element_type || ELEMENT_TYPE_BLOOD_OXYGEN == base->element_type - || ELEMENT_TYPE_PRESSURE == base->element_type) { + || ELEMENT_TYPE_PRESSURE == base->element_type || ELEMENT_TYPE_TEMPERATURE == base->element_type) { //app_adaptor_get_health_info_req(&health); mmi_health_info_get(&health_info); } @@ -641,6 +644,25 @@ static void dial_update_canvas_label(watch_element_base_t * base) else sprintf(infotxt, "--"); dial_create_canvas_text(infotxt, label_dsc->label_font, label_dsc->text_color, pos.x + label_dsc->text_pos.x, pos.y + label_dsc->text_pos.y); + break; + case LABEL_TYPE_TEMPERATURE: + if(health_info.body_value) + { + uint8_t value1 = 0, value2 = 0; + + value1 = (uint8_t)health_info.body_value; + value2 = (uint8_t)((health_info.body_value - value1) * 10); + + char * uincode_str = "2103"; // \u2103 + char utf8_str[8] = {0}; + uint8_t output_len = 0; + + mmi_unicode_hex_str_to_utf8_str(uincode_str, strlen(uincode_str), utf8_str, &output_len); + sprintf(infotxt, "%d.%d %s", value1, value2, utf8_str); + } + else + sprintf(infotxt, "--"); + dial_create_canvas_text(infotxt, label_dsc->label_font, label_dsc->text_color, pos.x + label_dsc->text_pos.x, pos.y + label_dsc->text_pos.y); break; case LABEL_TYPE_SLEEP_QUALITY: //snprintf(infotxt, len, "%d", health.sleep); @@ -734,7 +756,7 @@ static void dial_update_canvas_img(watch_element_base_t * base) app_adaptor_get_pedometer_info_req(&record); } if(ELEMENT_TYPE_HEART_RATE == base->element_type || ELEMENT_TYPE_SLEEP_QUALITY == base->element_type || ELEMENT_TYPE_BLOOD_OXYGEN == base->element_type - || ELEMENT_TYPE_PRESSURE == base->element_type) { + || ELEMENT_TYPE_PRESSURE == base->element_type || ELEMENT_TYPE_TEMPERATURE == base->element_type) { //app_adaptor_get_health_info_req(&health); //mmi_health_info_get(&health_info); } diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/primary_menu/primary_menu.c b/2.sdk/sdk/gui/lv_watch/lv_apps/primary_menu/primary_menu.c index f457eceb..0bda9872 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/primary_menu/primary_menu.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/primary_menu/primary_menu.c @@ -239,6 +239,39 @@ static lv_obj_t * mmi_main_menu_style_four_grid_display(lv_obj_t * tab, int8_t b #endif #ifdef __MMI_MAIN_MENU_ONE_PAGE_STYLE__ +#ifdef MMI_PROJECT_Z5_HA_K18_NFC +static lv_obj_t * mmi_main_menu_style_one_page_display(lv_obj_t * tab, void * btn_src, watchLangTxtId_t txtId, lv_event_cb_t event_cb) +{ + lv_obj_t * cont = lv_obj_get_child(tab, NULL); + LV_ASSERT_MEM(cont); + if(cont == NULL) + return NULL; + + lv_obj_t * img_bg = lv_img_create(cont, NULL); + lv_img_set_src(img_bg, ICON_K18_NFC_EXPERIENCE_BG); + lv_obj_align(img_bg, NULL, LV_ALIGN_CENTER, 0, 0); + //lv_tileview_add_element(lv_obj_get_parent(tab), btn); + + lv_obj_t * btn = lv_imgbtn_create(cont, NULL); + lv_imgbtn_set_src(btn, LV_BTN_STATE_RELEASED, btn_src); + lv_imgbtn_set_src(btn, LV_BTN_STATE_PRESSED, btn_src); + lv_btn_set_checkable(btn, false); + lv_obj_set_event_cb(btn, event_cb); + lv_tileview_add_element(lv_obj_get_parent(tab), btn); + lv_obj_align(btn, cont, LV_ALIGN_CENTER, 0, -20); + + lv_obj_t * label = lv_label_create(cont, NULL); + lv_obj_add_style(label, LV_LABEL_PART_MAIN, &lv_watch_font40); + lv_label_set_long_mode(label, LV_LABEL_LONG_SROLL_CIRC); + lv_obj_set_size(label, LV_HOR_RES / 2, 60); + lv_label_set_align(label, LV_LABEL_ALIGN_CENTER); + lv_label_set_text_id(label, txtId); + lv_obj_set_click(label, false); + lv_obj_align(label, cont, LV_ALIGN_IN_BOTTOM_MID, 0, -70); + + return btn; +} +#else static lv_obj_t * mmi_main_menu_style_one_page_display(lv_obj_t * tab, void * btn_src, watchLangTxtId_t txtId, lv_event_cb_t event_cb) { lv_obj_t * cont = lv_obj_get_child(tab, NULL); @@ -268,6 +301,7 @@ static lv_obj_t * mmi_main_menu_style_one_page_display(lv_obj_t * tab, void * bt return btn; } #endif +#endif #ifdef __MMI_MAIN_MENU_LIST_STYLE__ static lv_obj_t * mmi_main_menu_style_list_display(lv_obj_t * tab) 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 8ff41d11..f03332b2 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 @@ -92,7 +92,8 @@ static mmi_page_main_menu_info_t s_main_menu_one_page[] = #ifdef __MMI_HEALTH_MEASURE_TEMPERATURE_SUPPORT__ {{ ICON_TEMPERATURE_ONE_PAGE, WATCH_TEXT_ID_TEMPERATURE, health_temperature_create_event_cb}, NULL}, #endif - {{ ICON_SETTING_ONE_PAGE, WATCH_TEXT_ID_SETTINGS, setting_create_event_cb}, NULL}, + + //{{ ICON_SETTING_ONE_PAGE, WATCH_TEXT_ID_SETTINGS, mmi_k18_nfc_experience_create_event_cb}, NULL}, }; #else diff --git a/2.sdk/sdk/gui/lv_watch/lv_theme_watch_night.c b/2.sdk/sdk/gui/lv_watch/lv_theme_watch_night.c index ad054757..28c27f9e 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_theme_watch_night.c +++ b/2.sdk/sdk/gui/lv_watch/lv_theme_watch_night.c @@ -256,6 +256,10 @@ lv_style_t lv_watch_font60; lv_style_t lv_watch_font60_black; #endif +#ifdef MMI_FONT60_RED_SUPPORT +lv_style_t lv_watch_font60_red; +#endif + #ifdef USE_FONT_TTF lv_font_t lv_font_ttf_20; lv_font_t lv_font_ttf_30; @@ -1166,6 +1170,12 @@ static void lv_theme_watch_set_private_style(void) lv_style_set_text_font(&lv_watch_font60_black, LV_STATE_DEFAULT, &lv_font_ttf_60); #endif +#ifdef MMI_FONT60_RED_SUPPORT + style_init_reset(&lv_watch_font60_red); + lv_style_set_text_color(&lv_watch_font60_red, LV_STATE_DEFAULT, LV_COLOR_RED); + lv_style_set_text_font(&lv_watch_font60_red, LV_STATE_DEFAULT, &lv_font_ttf_60); +#endif + /*lv_watch_style_transp*/ style_init_reset(&lv_watch_style_transp); lv_style_copy(&lv_watch_style_transp, &lv_style_transp); diff --git a/2.sdk/sdk/gui/lv_watch/lv_theme_watch_night.h b/2.sdk/sdk/gui/lv_watch/lv_theme_watch_night.h index fb8a9599..098bb965 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_theme_watch_night.h +++ b/2.sdk/sdk/gui/lv_watch/lv_theme_watch_night.h @@ -161,6 +161,11 @@ extern lv_style_t lv_watch_font60; extern lv_style_t lv_watch_font60_black; #endif +#ifdef MMI_FONT60_RED_SUPPORT +extern lv_style_t lv_watch_font60_red; +#endif + + extern lv_style_t lv_watch_image; extern lv_style_t lv_watch_image_opa1; extern lv_style_t lv_watch_black_tight; 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 39dbb6ce..f168f5a4 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 @@ -3978,12 +3978,97 @@ bool mmi_protocol_fzd_parse_ACTION_TCP_HTTP(unsigned char * next_buff, unsigned mmi_hengai_health_data_parse(next_buff, strlen(next_buff)); #else - #ifdef MMI_PROJECT_Z5_HA_K18_NFC - mmi_k18_nfc_experience_cmd_trigger(next_buff, strlen(next_buff)); #endif + } + + return result; +} - #endif +bool mmi_protocol_fzd_parse_SERVER_COMMON_MSG_DOWN(unsigned char * next_buff, unsigned int next_buff_len) +{ + bool result = false; + MMI_PROTOCOL_FZD_ACTION_ENUM action = MMI_FZD_SERVER_COMMON_MSG_DOWN; + + 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); + + int decode_len = next_buff_len; + char * decode_str = NULL; + uint32_t output_len = 0; + + decode_str = lv_mem_alloc(decode_len); + if(NULL == decode_str) + { + PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: memory alloc fail\n", __FUNCTION__, __LINE__); + return false; + } + _lv_memset_00(decode_str, decode_len); + + int ret_value = mbedtls_base64_decode(decode_str, decode_len, &output_len, next_buff, next_buff_len); + if(0 != ret_value) + { + PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: base64 decode failed\n", __FUNCTION__, __LINE__); + lv_mem_free(decode_str); + return false; + } + PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + +#ifdef MMI_PROJECT_Z5_HA_K18_NFC + mmi_k18_nfc_experience_trigger(decode_str, output_len); +#endif + + lv_mem_free(decode_str); + + return result; +} + +bool mmi_protocol_fzd_action_common_msg_up(char * data_ptr, uint32_t data_len) +{ + bool result = false; + MMI_PROTOCOL_FZD_ACTION_ENUM action = MMI_FZD_ACTION_COMMON_MSG_UP; + unsigned char * content_buff = NULL; + unsigned int content_lenth = 0; + int encode_len = 0; + char * encode_str = NULL; + int output_len = 0; + + // base64 encode + encode_len = data_len * 3 / 2; + encode_str = lv_mem_alloc(encode_len); + if(NULL == encode_str) + { + PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: memory alloc failed\n", __FUNCTION__, __LINE__); + return false; } + _lv_memset_00(encode_str, encode_len); + if(0 != mbedtls_base64_encode(encode_str, encode_len, &output_len, data_ptr, data_len)) + { + PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: base64 encode failed\n", __FUNCTION__, __LINE__); + lv_mem_free(encode_str); + return false; + } + + content_buff = (unsigned char *)lv_mem_alloc(output_len + 2); + if(NULL == content_buff) + { + PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__); + lv_mem_free(encode_str); + return false; + } + _lv_memset_00(content_buff, output_len + 2); + sprintf(content_buff, ","); + _lv_memcpy(content_buff + 1, encode_str, output_len); + lv_mem_free(encode_str); + content_lenth = strlen(content_buff); + + result = mmi_protocol_fzd_send_with_data(action, content_buff, content_lenth); + lv_mem_free(content_buff); return result; } 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 8d3676d2..57c8621f 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 @@ -206,6 +206,8 @@ typedef enum MMI_FZD_ACTION_HENGAI_TCMS_DATA, #endif MMI_FZD_ACTION_TCP_HTTP, + MMI_FZD_SERVER_COMMON_MSG_DOWN, + MMI_FZD_ACTION_COMMON_MSG_UP, MMI_FZD_ACTION_SEND_ICCID, MMI_FZD_ACTION_SLEEP_DATA, MMI_FZD_SERVER_PPG_TEST, @@ -378,6 +380,9 @@ bool mmi_protocol_fzd_action_hengai_tcms_data(char * data_ptr, uint32_t data_len bool mmi_protocol_fzd_action_tcp_http(char * data_ptr, uint32_t data_len); bool mmi_protocol_fzd_parse_ACTION_TCP_HTTP(unsigned char * next_buff, unsigned int next_buff_len); +bool mmi_protocol_fzd_parse_SERVER_COMMON_MSG_DOWN(unsigned char * next_buff, unsigned int next_buff_len); +bool mmi_protocol_fzd_action_common_msg_up(char * data_ptr, uint32_t data_len); + bool mmi_protocol_fzd_action_send_iccid(void); bool mmi_protocol_fzd_action_sleep_data(char * data_ptr, uint32_t data_len); bool mmi_protocol_fzd_parse_SERVER_PPG_TEST(unsigned char * next_buff, unsigned int next_buff_len); 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 42103b37..37cfd629 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 @@ -140,6 +140,8 @@ static unsigned char * mmi_protocol_fzd_action_string_get(MMI_PROTOCOL_FZD_ACTIO {MMI_FZD_ACTION_HENGAI_TCMS_DATA, "CNDOCD"}, #endif {MMI_FZD_ACTION_TCP_HTTP, "TCP_HTTP"}, + {MMI_FZD_SERVER_COMMON_MSG_DOWN, "GEN_MSG_DOWN"}, + {MMI_FZD_ACTION_COMMON_MSG_UP, "GEN_MSG_UP"}, {MMI_FZD_ACTION_SEND_ICCID, "ICCID"}, {MMI_FZD_ACTION_SLEEP_DATA, "SLEEP_DATA"}, {MMI_FZD_SERVER_PPG_TEST, "PPG"}, @@ -482,6 +484,12 @@ static bool mmi_protocol_fzd_content_parse(unsigned char * content_ptr, unsigned mmi_protocol_fzd_parse_ACTION_TCP_HTTP(next_buff, next_buff_len); break; + case MMI_FZD_SERVER_COMMON_MSG_DOWN: + mmi_protocol_fzd_parse_SERVER_COMMON_MSG_DOWN(next_buff, next_buff_len); + break; + case MMI_FZD_ACTION_COMMON_MSG_UP: + break; + case MMI_FZD_ACTION_SEND_ICCID: case MMI_FZD_ACTION_SLEEP_DATA: case MMI_FZD_ACTION_PPG_DATA: