Z5_HA_K18_NFC ui & feather
author@CHENG <2393524978@qq.com>
Thu, 20 Feb 2025 02:07:53 +0000 (10:07 +0800)
committer@CHENG <2393524978@qq.com>
Thu, 20 Feb 2025 02:07:53 +0000 (10:07 +0800)
19 files changed:
2.sdk/project/Z5_HA_K18_NFC/gui/lv_watch/resource/png/dial_style1/bg.png
2.sdk/project/Z5_HA_K18_NFC/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h
2.sdk/sdk/gui/lv_drivers/indev/sos_key.c
2.sdk/sdk/gui/lv_watch/framework/language/lang_ch.c
2.sdk/sdk/gui/lv_watch/framework/language/lang_en.c
2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.c
2.sdk/sdk/gui/lv_watch/framework/message/mmi_msg_zhsx.h
2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.c
2.sdk/sdk/gui/lv_watch/framework/message/watch_msg_handle.h
2.sdk/sdk/gui/lv_watch/include/ui_activity_id.h
2.sdk/sdk/gui/lv_watch/include/ui_textid.h
2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/custom_function.c
2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/custom_function.h
2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/k18_nfc_experience_ui.c [new file with mode: 0644]
2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/k18_nfc_experience_ui.h [new file with mode: 0644]
2.sdk/sdk/gui/lv_watch/lv_apps/factory_mode/factory_mode_test.c
2.sdk/sdk/gui/lv_watch/lv_watch_res.h
2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c
2.sdk/sdk/product/craneg_modem/lv_gui_main.c

index f79c4ab..afa5f7d 100644 (file)
Binary files a/2.sdk/project/Z5_HA_K18_NFC/gui/lv_watch/resource/png/dial_style1/bg.png and b/2.sdk/project/Z5_HA_K18_NFC/gui/lv_watch/resource/png/dial_style1/bg.png differ
index 34bf687..2da4f5e 100644 (file)
 
 #define __MMI_ZHSX_SUPPORT_CHECK_SIM_UNBIND__
 
-#define __MMI_TOOL_MENU_SUPPORT__
+//#define __MMI_TOOL_MENU_SUPPORT__
 
-#if 0 != USE_LV_WATCH_WEATHER
-#define __MMI_WEATHER_MENU_SUPPORT__
-#define __MMI_WEATHER_MENU_NOT_DISPLAY_TEMPERATURE_RANGE__
-#endif
+//#if 0 != USE_LV_WATCH_WEATHER
+//#define __MMI_WEATHER_MENU_SUPPORT__
+//#define __MMI_WEATHER_MENU_NOT_DISPLAY_TEMPERATURE_RANGE__
+//#endif
 
 #define __MMI_PEDOMETER_STEP_AND_GOAL_STYLE__
 
 //#define __MMI_SLEEP_FUNCTION_SUPPORT__
 //#define __MMI_CUSTOM_HENGAI_SLEEP__
 
-#define __MMI_CUSTOM_HENGAI_HEALTH__
-#define __MMI_CUSTOM_HENGAI_HEALTH_UPLOAD_USE_TCP__
+//#define __MMI_CUSTOM_HENGAI_HEALTH__
+//#define __MMI_CUSTOM_HENGAI_HEALTH_UPLOAD_USE_TCP__
 
 //#define __MMI_CUSTOM_HENGAI_TCMS__
 
index 612cd7b..c2db9b6 100644 (file)
@@ -314,6 +314,13 @@ void sos_key_param_set(uint8_t param)//0:sos key task -normall, 1:sos key task -
 
 void sos_key_ui_handle(void)
 {
+#ifdef MMI_PROJECT_Z5_HA_K18_NFC
+       if(true == mmi_k18_nfc_experience_screen_active())
+       {
+               return;
+       }
+#endif
+
 #ifdef __MMI_KEY_BACK_RUN_PHONEBOOK_WHEN_IN_DIAL__
        if(lv_watch_is_activity_one_level())
        {
index 8e8f1b6..b5cb366 100644 (file)
@@ -1003,6 +1003,10 @@ const void * lang_text_ch[] = {
     "深睡", // WATCH_TEXT_ID_DEEP_SLEEP,
     "浅睡", // WATCH_TEXT_ID_LIGHT_SLEEP,
     "快速眼动", // WATCH_TEXT_ID_REM_SLEEP,
+    "幸福值", // WATCH_TEXT_ID_HAPPINESS_VALUE,
+    "体验时间", // WATCH_TEXT_ID_EXPERIENCE_TIME,
+    "终止", // WATCH_TEXT_ID_EXPERIENCE_STOP,
+    "确定终止体验?", // WATCH_TEXT_ID_EXPERIENCE_STOP_Q,
 
     //CHENG_MODIFY
     "确认是否跌倒?", // WATCH_TEXT_ID_falldown,
index 81ab246..8b735de 100644 (file)
@@ -1004,6 +1004,10 @@ const void * lang_text_en[] = {
     "Deep sleep", // WATCH_TEXT_ID_DEEP_SLEEP,
     "Light sleep", // WATCH_TEXT_ID_LIGHT_SLEEP,
     "REM", // WATCH_TEXT_ID_REM_SLEEP,
+    "Happiness", // WATCH_TEXT_ID_HAPPINESS_VALUE,
+    "Time", // WATCH_TEXT_ID_EXPERIENCE_TIME,
+    "Stop", // WATCH_TEXT_ID_EXPERIENCE_STOP,
+    "Stop the experience?", // WATCH_TEXT_ID_EXPERIENCE_STOP_Q,
 
     //CHENG_MODIFY
     "Confirm a fall",
index d7870b7..90fed25 100644 (file)
@@ -213,85 +213,16 @@ void mmi_ui_msg_action_hengai_bp_measure_result(bool state, uint16_t bp_value_hi
 }
 #endif
 
-
-
-
-
-#if 0
-
-#define MODEM_ADP_TASK_PRIORITY 199
-MODEM_VIDEO_CALL_REG_STAT g_ModemVcRegStat = MODEM_VIDEO_CALL_REG_FAIL;
-
-
-VOID MMI_ModemAdp_Video_Call_Init_Req(VOID)
+#ifdef MMI_PROJECT_Z5_HA_K18_NFC
+void mmi_ui_msg_action_k18_nfc_experience(void)
 {
-    uos_create_task(MMI_ModemAdp_Video_Call_Main, NULL, 64, 4 * 1000, MODEM_ADP_TASK_PRIORITY, "modem_adpator_video_call");
+       mmi_ui_msg_action_no_para_msg(MMI_MSG_K18_NFC_EXPERIENCE);
 }
+#endif
+
 
-static VOID MMI_ModemAdp_Video_Call_Main(VOID * para)
-{
-    (void)para;
-    voipmsg_t voipmsg;
 
-    while(gui_task_id == NULL) {
-        printf("gui_task_id is NULL");
-        uos_sleep(10);
-    }
 
-    // get msg
-    while(1) {
-        // receive message
-        if(voipMsgQueReceive(&voipmsg)) {
-            printf("voip Q is not ready, sleep for 500ms\n");
-            uos_sleep(100);
-            continue;
-        }
-
-        switch(voipmsg.msgid) {
-            case VOIP_UA_EVENT_CALL_INCOMING:
-                printf("%s voipmsg id is VOIP_UA_EVENT_CALL_INCOMING\n", __FUNCTION__);
-                if((voipmsg.callname_present) && (voipmsg.uri_present)) {
-                    MMI_Modem_Video_Call_Response_Incoming_t * Response;
-
-                    Response = (MMI_Modem_Video_Call_Response_Incoming_t *)Hal_Mem_Alloc(
-                                   sizeof(MMI_Modem_Video_Call_Response_Incoming_t));
-
-                    strcpy(Response->callname, voipmsg.callname);
-                    strcpy(Response->uri, voipmsg.uri);
-
-                    if(VOIP_VOICE_CALL == voipmsg.calltype) {
-                        Response->calltype = MODEM_VIDEO_CALL_TYPE_VOICE;
-                    } else {
-                        Response->calltype = MODEM_VIDEO_CALL_TYPE_VIDEO;
-                    }
-
-                    MMI_Modem_Video_Call_Response_Incoming(Response);
-                } else {
-                    printf("%s, invalid MT params", __FUNCTION__);
-                    bsapi_call_action(BARESIPAPI_REJ, BARESIPVIDMODE_INV);
-                }
-                break;
-            case VOIP_UA_EVENT_CALL_RINGING:
-                printf("%s voipmsg id is VOIP_UA_EVENT_CALL_RINGING\n", __FUNCTION__);
-                //play tone
-                MMI_Modem_Video_Call_Common_Response(MMI_MODEM_VIDEO_CALL_RESPONSE_RING);
-                break;
-            case VOIP_UA_EVENT_CALL_CLOSED:
-                printf("%s voipmsg id is VOIP_UA_EVENT_CALL_CLOSED\n", __FUNCTION__);
-                if(0 == Hal_Pm_Get_State()) {
-                    Hal_Pm_WakeUp();
-                }
-
-                MMI_Modem_Video_Call_Common_Response(MMI_MODEM_VIDEO_CALL_RESPONSE_DISCONNECT);
-                break;
-
-            default:
-                printf("%s voipmsg id is %d\n", __FUNCTION__, voipmsg.msgid);
-                break;
-        }
-    }
-}
-#endif
 
 
 void mmi_watch_lv_ui_message_action(uint16_t msgid, void * msg)
index 5d54659..2550a55 100644 (file)
@@ -88,6 +88,9 @@ void mmi_ui_msg_action_ai_talk_incoming(void);
 void mmi_ui_msg_action_hengai_bp_calibrate_result(bool state);
 void mmi_ui_msg_action_hengai_bp_measure_result(bool state, uint16_t bp_value_high, uint16_t bp_value_low);
 #endif
+#ifdef MMI_PROJECT_Z5_HA_K18_NFC
+void mmi_ui_msg_action_k18_nfc_experience(void);
+#endif
 
 void mmi_ui_falldown(void);
 
index 820001f..44739f3 100644 (file)
@@ -467,6 +467,11 @@ void watch_ui_message_handle(uint16_t msgid, void * msg)
                        break;
        #endif
 
+       #ifdef MMI_PROJECT_Z5_HA_K18_NFC
+               case MMI_MSG_K18_NFC_EXPERIENCE:
+                       mmi_ui_msg_update_k18_nfc_experience();
+                       break;
+       #endif
 
                        
        #endif
index c7cc904..b0d6168 100644 (file)
@@ -137,6 +137,9 @@ enum
        MMI_MSG_HENGAI_BP_CALIBRATE_RESULT,
        MMI_MSG_HENGAI_BP_MEASURE_RESULT,
 #endif
+#ifdef MMI_PROJECT_Z5_HA_K18_NFC
+       MMI_MSG_K18_NFC_EXPERIENCE,
+#endif
        
        
 #endif
index bac5866..984fcb7 100644 (file)
@@ -248,6 +248,9 @@ enum
 #endif
 #ifdef __MMI_CHIP_TEMPERATURE_MONITOR_SUPPORT__
        ACT_ID_CHIP_TEMP_HIGH,
+#endif
+#ifdef MMI_PROJECT_Z5_HA_K18_NFC
+       ACT_ID_K18_NFC_EXPERIENCE,
 #endif
     ACT_ID_WATCH_FALLDWON,
 
index b9be0ba..eb7b5d9 100644 (file)
@@ -1011,6 +1011,10 @@ enum
     WATCH_TEXT_ID_DEEP_SLEEP,                           /* "深睡"                     "Deep sleep" */
     WATCH_TEXT_ID_LIGHT_SLEEP,                          /* "浅睡"                     "Light sleep" */
     WATCH_TEXT_ID_REM_SLEEP,                            /* "快速眼动"                     "REM" */
+    WATCH_TEXT_ID_HAPPINESS_VALUE,                      /* "幸福值"                     "Happiness" */
+    WATCH_TEXT_ID_EXPERIENCE_TIME,                      /* "体验时间"                     "Time" */
+    WATCH_TEXT_ID_EXPERIENCE_STOP,                      /* "终止"                     "Stop" */
+    WATCH_TEXT_ID_EXPERIENCE_STOP_Q,                    /* "确定终止体验?"                     "Stop the experience?" */
 
     //CHENG_MODIFY
     WATCH_TEXT_ID_FALLDWON,                            /*确认是否跌倒*/
index 679459e..ed8a982 100644 (file)
@@ -38,6 +38,9 @@
 #include "bei_ke_rui_sheng_data.c"
 #include "bei_ke_rui_sheng_socket.c"
 #endif
+#ifdef MMI_PROJECT_Z5_HA_K18_NFC
+#include "k18_nfc_experience_ui.c"
+#endif
 
 
 
index 47032ff..ac8e77d 100644 (file)
@@ -50,6 +50,9 @@ extern "C" {
 #include "bei_ke_rui_sheng_data.h"
 #include "bei_ke_rui_sheng_socket.h"
 #endif
+#ifdef MMI_PROJECT_Z5_HA_K18_NFC
+#include "k18_nfc_experience_ui.h"
+#endif
 
 
 
diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/k18_nfc_experience_ui.c b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/k18_nfc_experience_ui.c
new file mode 100644 (file)
index 0000000..db44e49
--- /dev/null
@@ -0,0 +1,527 @@
+
+
+
+#include "lv_watch.h"
+
+#ifdef MMI_PROJECT_Z5_HA_K18_NFC
+
+#define TIMER_TIME_STR_LEN_MAX (16)
+
+static unsigned char *s_experience_title_str = "8DD16B65673A"; // NULL;
+static unsigned int s_experience_time_total = 60 * 3; // 0; // s
+static unsigned int s_experience_time_remain = 0; // s
+static unsigned int s_experience_value = 168; // 0;
+static bool s_screen_is_active = false;
+
+
+bool mmi_k18_nfc_experience_screen_active(void)
+{
+       return s_screen_is_active;
+}
+
+void * mmi_k18_nfc_experience_ext_get(void)
+{
+       lv_watch_Activity_Id_t actId = ACT_ID_K18_NFC_EXPERIENCE;
+       lv_obj_t * activity_obj = lv_watch_get_activity_obj(actId);
+       if(NULL == activity_obj) 
+               return NULL;
+       
+       lv_obj_t * watch_obj = NULL;
+       lv_watch_get_child_obj(activity_obj, lv_watch_obj_signal, &watch_obj);
+       if(NULL != watch_obj) 
+       {
+               void * ext = lv_obj_get_ext_attr(watch_obj);
+               return ext;
+       }
+
+       return NULL;
+}
+
+void mmi_k18_nfc_experience_prepare_destory(lv_obj_t * activity_obj)
+{
+       K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+       watch_set_suspend_enable(true, ACT_ID_K18_NFC_EXPERIENCE, 0);
+       watch_wakeup_time_reset();
+       
+    lv_watch_png_cache_all_free();
+
+       lv_ntc_experience_ext_t * ext = mmi_k18_nfc_experience_ext_get();
+       if(NULL == ext) 
+               return ;
+
+       if(NULL != ext->label_time_remaining)
+       {
+               lv_anim_del(ext->label_time_remaining, NULL);
+       }
+
+       s_screen_is_active = false;
+}
+
+void mmi_k18_nfc_experience_screen_clean(void)
+{
+       mmi_k18_nfc_experience_prepare_destory(NULL);
+
+       lv_obj_t * obj = lv_watch_get_activity_obj(ACT_ID_K18_NFC_EXPERIENCE);
+       if(NULL != obj)
+       {
+               K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+               lv_obj_del(obj);
+       }
+}
+
+static void mmi_k18_nfc_experience_timer_time_remain_str(unsigned int time_second, char *str, uint8_t size)
+{
+    if(NULL == str)
+               return;
+    memset(str, 0x0, size);
+
+    uint8_t sec  = (time_second) % 60;         /*[0,59]*/
+    uint8_t min  = (time_second / 60) % 60;    /*[0,59]*/
+    uint8_t hour = (time_second / 3600) % 100; /*[0,99]*/
+
+    snprintf(str, size, "%.2d:%.2d:%.2d", hour, min, sec);
+}
+
+
+void mmi_k18_nfc_experience_stop_ok_btn_event_cb(lv_obj_t * obj, lv_event_t e)
+{
+       if(LV_EVENT_CLICKED != e)
+               return;
+
+       mmi_k18_nfc_experience_screen_clean();
+       lv_watch_go_home();
+}
+
+void mmi_k18_nfc_experience_stop_cancel_btn_event_cb(lv_obj_t * obj, lv_event_t e)
+{
+    if(LV_EVENT_CLICKED != e) 
+               return;
+
+       lv_ntc_experience_ext_t * ext = mmi_k18_nfc_experience_ext_get();
+       if(NULL == ext) 
+               return;
+
+       if(NULL != ext->img)
+               lv_obj_set_hidden(ext->img, false);
+
+       if(NULL != ext->cont_stop)
+               lv_obj_set_hidden(ext->cont_stop, true);
+}
+
+void mmi_k18_nfc_experience_stop_btn_event_cb(lv_obj_t * obj, lv_event_t e)
+{
+    if(LV_EVENT_CLICKED != e) 
+               return;
+
+       lv_ntc_experience_ext_t * ext = mmi_k18_nfc_experience_ext_get();
+       if(NULL == ext) 
+               return;
+
+       if(NULL != ext->img)
+       {
+               lv_obj_set_hidden(ext->img, true);
+       }
+       if(NULL != ext->cont_stop)
+       {
+               lv_obj_set_hidden(ext->cont_stop, false);
+       }
+       else
+       {
+               lv_obj_t * cont_stop = lv_cont_create(ext->cont, NULL);
+               lv_obj_set_size(cont_stop, LV_HOR_RES, LV_VER_RES);
+               lv_obj_set_style_local_bg_color(cont_stop, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
+               ext->cont_stop = cont_stop;
+
+               lv_obj_t * label_prompt = lv_label_create(cont_stop, NULL);
+               lv_obj_add_style(label_prompt, LV_LABEL_PART_MAIN, &lv_watch_font40);
+               lv_label_set_text_id(label_prompt, WATCH_TEXT_ID_EXPERIENCE_STOP_Q);
+               lv_obj_align(label_prompt, NULL, LV_ALIGN_CENTER, 0, -40);
+
+               lv_obj_t * btn_cancel = lv_btn_create(cont_stop, NULL);
+               lv_obj_set_size(btn_cancel, 140, 70);
+               lv_obj_set_style_local_bg_color(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, lv_color_make(0x47, 0xA6, 0xFF));
+               lv_obj_set_style_local_radius(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 30);
+               lv_obj_set_style_local_bg_color(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_PRESSED, lv_color_make(0x47, 0xA6, 0xFF));
+               lv_obj_set_style_local_radius(btn_cancel, LV_BTN_PART_MAIN, LV_STATE_PRESSED, 30);
+               lv_obj_align(btn_cancel, NULL, LV_ALIGN_IN_BOTTOM_LEFT, 70, -60);
+               lv_obj_set_event_cb(btn_cancel, mmi_k18_nfc_experience_stop_cancel_btn_event_cb);
+
+               lv_obj_t * label_cancel = lv_label_create(btn_cancel, NULL);
+               lv_obj_add_style(label_cancel, LV_LABEL_PART_MAIN, &lv_watch_font40);
+               lv_label_set_text_id(label_cancel, WATCH_TEXT_ID_CANCEL);
+
+               lv_obj_t * btn_ok = lv_btn_create(cont_stop, btn_cancel);
+               lv_obj_set_style_local_bg_color(btn_ok, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, lv_color_make(0xFF, 0x6F, 0x91));
+               lv_obj_set_style_local_bg_color(btn_ok, LV_BTN_PART_MAIN, LV_STATE_PRESSED, lv_color_make(0xFF, 0x6F, 0x91));
+               lv_obj_align(btn_ok, NULL, LV_ALIGN_IN_BOTTOM_RIGHT, -70, -60);
+               lv_obj_set_event_cb(btn_ok, mmi_k18_nfc_experience_stop_ok_btn_event_cb);
+               
+               lv_obj_t * label_ok = lv_label_create(btn_ok, label_cancel);
+               lv_label_set_text_id(label_ok, WATCH_TEXT_ID_OK);
+       }
+}
+
+
+void mmi_k18_nfc_experience_finish_task_cb(lv_task_t * task)
+{
+       K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+       mmi_k18_nfc_experience_screen_clean();
+       lv_watch_go_home();
+}
+
+void mmi_k18_nfc_experience_finish_screen(lv_obj_t * par)
+{
+       K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+       lv_obj_t * img = par;
+
+       // title
+       lv_obj_t * label_title = lv_label_create(img, NULL);
+       lv_obj_add_style(label_title, LV_LABEL_PART_MAIN, &lv_watch_font36);
+       lv_label_set_align(label_title, LV_LABEL_ALIGN_CENTER);
+       lv_label_set_long_mode(label_title, LV_LABEL_LONG_BREAK);
+       lv_obj_set_width(label_title, 400);
+       lv_label_set_text(label_title, s_experience_title_str);
+       lv_obj_align(label_title, label_title, LV_ALIGN_IN_TOP_MID, 0, 85);
+
+       lv_obj_t * img_title = lv_label_create(img, NULL);
+       lv_img_set_src(img_title, ICON_NFC_EXPERIENCE_TITLE);
+       lv_obj_set_click(img_title, false);
+       lv_obj_align(img_title, NULL, LV_ALIGN_OUT_BOTTOM_MID, 0, 2);
+
+       // timer text
+       lv_obj_t * label_timer = lv_label_create(img, NULL);
+       lv_obj_add_style(label_timer, LV_LABEL_PART_MAIN, &lv_watch_font36);
+       lv_label_set_align(label_timer, LV_LABEL_ALIGN_CENTER);
+       lv_label_set_long_mode(label_timer, LV_LABEL_LONG_BREAK);
+       lv_obj_set_width(label_timer, 400);
+       lv_label_set_text_id(label_timer, WATCH_TEXT_ID_EXPERIENCE_TIME);
+       lv_obj_align(label_timer, NULL, LV_ALIGN_CENTER, 0, -40);
+
+       //time remaining
+       char time_remain_str[TIMER_TIME_STR_LEN_MAX] = {0};
+       mmi_k18_nfc_experience_timer_time_remain_str(s_experience_time_total, time_remain_str, TIMER_TIME_STR_LEN_MAX);
+
+       lv_obj_t * label_time_remaining = lv_label_create(img, NULL);
+       lv_obj_add_style(label_time_remaining, LV_LABEL_PART_MAIN, &lv_watch_font60);
+       lv_label_set_align(label_time_remaining, LV_LABEL_ALIGN_CENTER);
+       lv_label_set_text(label_time_remaining, time_remain_str);
+       lv_obj_align(label_time_remaining, label_timer, LV_ALIGN_OUT_BOTTOM_MID, 0, 5);
+       //lv_obj_set_base_dir(label_time_remaining, LV_BIDI_DIR_LTR);
+
+       // info
+       lv_obj_t * img_value = lv_img_create(img, NULL);
+       lv_img_set_src(img_value, ICON_NFC_EXPERIENCE_HEART_B);
+       lv_obj_set_click(img_value, false);
+       lv_obj_align(img_value, NULL, LV_ALIGN_IN_TOP_MID, 0, 315);
+
+       lv_obj_t * label_value = lv_label_create(img_value, NULL);
+       lv_obj_add_style(label_value, LV_LABEL_PART_MAIN, &lv_watch_font20);
+       char temp_value[4] = {0};
+       snprintf(temp_value, 4, "%d", s_experience_value);
+       lv_label_set_text(label_value, temp_value);
+       lv_obj_align(label_value, NULL, LV_ALIGN_CENTER, 0, 0);
+
+       lv_obj_t * label_unit = lv_label_create(img, NULL);
+       lv_obj_add_style(label_unit, LV_LABEL_PART_MAIN, &lv_watch_font20);
+       snprintf(temp_value, 4, "bpm");
+       lv_label_set_text(label_unit, temp_value);
+       lv_obj_align(label_unit, img_value, LV_ALIGN_OUT_RIGHT_BOTTOM, 0, -5);
+       
+       lv_obj_t * label_info = lv_label_create(img, NULL);
+       lv_obj_add_style(label_info, LV_LABEL_PART_MAIN, &lv_watch_font36);
+       lv_label_set_text_id(label_info, WATCH_TEXT_ID_HAPPINESS_VALUE);
+       lv_obj_align(label_info, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -45);
+
+       //lv_task_t * task_p = lv_task_create(mmi_k18_nfc_experience_finish_task_cb, 1000 * 3, LV_TASK_PRIO_HIGH, NULL);
+       lv_task_t * task_p = lv_task_create(mmi_k18_nfc_experience_finish_task_cb, 1000 * 120, LV_TASK_PRIO_HIGH, NULL);
+       lv_task_once(task_p);
+}
+
+void mmi_k18_nfc_experience_timeout_task_cb(lv_task_t * task)
+{
+       K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+       lv_ntc_experience_ext_t * ext = mmi_k18_nfc_experience_ext_get();
+       if(NULL == ext) 
+               return ;
+
+       if(NULL != ext->label_time_remaining)
+       {
+               lv_anim_del(ext->label_time_remaining, NULL);
+       }
+       if(NULL != ext->img)
+       {
+               lv_obj_clean(ext->img);
+       }
+       mmi_k18_nfc_experience_finish_screen(ext->img);
+}
+
+static void mmi_k18_nfc_experience_anim_cb(lv_anim_t * anim)
+{
+       if(0 != s_experience_time_remain)
+       {
+               s_experience_time_remain--;
+       
+               char time_remain_str[TIMER_TIME_STR_LEN_MAX] = {0};
+               mmi_k18_nfc_experience_timer_time_remain_str(s_experience_time_remain, time_remain_str, TIMER_TIME_STR_LEN_MAX);
+
+           if(anim->var) 
+               {
+               lv_label_set_text(anim->var, time_remain_str);
+               //lv_obj_align(anim->var, NULL, LV_ALIGN_CENTER, 0, 0);
+           }
+       }
+       else
+       {
+               lv_task_t * task_p = lv_task_create(mmi_k18_nfc_experience_timeout_task_cb, 1000, LV_TASK_PRIO_HIGH, NULL);
+               lv_task_once(task_p);
+       }
+}
+
+static void mmi_k18_nfc_experience_label_time_anim(lv_obj_t * obj)
+{
+    lv_anim_t a;
+    lv_anim_path_t path;
+
+    lv_anim_path_init(&path);
+    lv_anim_path_set_cb(&path, lv_anim_path_step);
+
+    lv_anim_init(&a);
+    lv_anim_set_var(&a, obj);
+    lv_anim_set_start_cb(&a, (lv_anim_ready_cb_t)mmi_k18_nfc_experience_anim_cb);
+    lv_anim_set_path(&a, &path);
+    lv_anim_set_time(&a, 1);
+    lv_anim_set_playback_time(&a, 0);
+    lv_anim_set_playback_delay(&a, 0);
+    lv_anim_set_repeat_count(&a, LV_ANIM_REPEAT_INFINITE);
+    lv_anim_set_repeat_delay(&a, 1000);
+
+    lv_anim_start(&a);
+}
+
+lv_obj_t * mmi_k18_nfc_experience_create(lv_obj_t * activity_obj)
+{
+       K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+
+    if(activity_obj == NULL) 
+       {
+        lv_watch_activity_ext_t activity_ext;
+               
+               _lv_memset_00(&activity_ext, sizeof(lv_watch_activity_ext_t));
+        activity_ext.actId = ACT_ID_K18_NFC_EXPERIENCE;
+        activity_ext.create = (lv_watch_activity_create_f_t)mmi_k18_nfc_experience_create; //NULL;
+        activity_ext.prepare_destory = mmi_k18_nfc_experience_prepare_destory;
+        activity_obj = lv_watch_creat_activity_obj(&activity_ext);
+        LV_ASSERT_MEM(activity_obj);
+    }
+
+    lv_obj_t * obj = lv_watch_obj_create(activity_obj);
+       if(NULL == obj)
+               return NULL;
+    /*Allocate the tab type specific extended data*/
+       lv_ntc_experience_ext_t * ext = (lv_ntc_experience_ext_t *)lv_obj_allocate_ext_attr(obj, sizeof(lv_ntc_experience_ext_t));
+       if(NULL == ext)
+               return NULL;
+
+       ext->slide_enable = 0; /*disable to slide to the right*/
+       ext->cont = NULL;
+       ext->img = NULL;
+       ext->label_time_remaining = NULL;
+       ext->cont_stop = NULL;
+
+       lv_obj_t * cont = lv_cont_create(obj, NULL);
+       lv_obj_set_size(cont, lv_obj_get_width(obj), lv_obj_get_height(obj));
+       lv_obj_align(cont, NULL, LV_ALIGN_CENTER, 0, 0);
+       lv_obj_set_style_local_bg_color(cont, LV_CONT_PART_MAIN, LV_STATE_DEFAULT, LV_COLOR_BLACK);
+       lv_watch_obj_add_element(cont);
+       ext->cont = cont;
+       
+       lv_obj_t * img = lv_img_create(cont, NULL);
+       lv_img_set_src(img, ICON_K18_NFC_EXPERIENCE_BG);
+       lv_obj_set_click(img, false);
+       lv_obj_align(img, NULL, LV_ALIGN_CENTER, 0, 0);
+       ext->img = img;
+
+       // title
+       lv_obj_t * label_title = lv_label_create(img, NULL);
+       lv_obj_add_style(label_title, LV_LABEL_PART_MAIN, &lv_watch_font36);
+       lv_label_set_align(label_title, LV_LABEL_ALIGN_CENTER);
+       lv_label_set_long_mode(label_title, LV_LABEL_LONG_BREAK);
+       lv_obj_set_width(label_title, 400);
+       lv_label_set_text(label_title, s_experience_title_str);
+       lv_obj_align(label_title, NULL, LV_ALIGN_IN_TOP_MID, 0, 85);
+
+       lv_obj_t * img_title = lv_label_create(img, NULL);
+       lv_img_set_src(img_title, ICON_NFC_EXPERIENCE_TITLE);
+       lv_obj_set_click(img_title, false);
+       lv_obj_align(img_title, label_title, LV_ALIGN_OUT_BOTTOM_MID, 0, 2);
+
+       //time remaining
+       lv_obj_t * label_time_remaining = lv_label_create(img, NULL);
+       lv_obj_add_style(label_time_remaining, LV_LABEL_PART_MAIN, &lv_watch_font60);
+       lv_label_set_align(label_time_remaining, LV_LABEL_ALIGN_CENTER);
+       char time_remain_str[TIMER_TIME_STR_LEN_MAX] = {0};
+       mmi_k18_nfc_experience_timer_time_remain_str(s_experience_time_remain, time_remain_str, TIMER_TIME_STR_LEN_MAX);
+       lv_label_set_text(label_time_remaining, time_remain_str);
+       lv_obj_align(label_time_remaining, NULL, LV_ALIGN_CENTER, 0, -25);
+       //lv_obj_set_base_dir(label_time_remaining, LV_BIDI_DIR_LTR);
+       ext->label_time_remaining = label_time_remaining;
+
+       // timer text
+       lv_obj_t * label_timer = lv_label_create(img, NULL);
+       lv_obj_add_style(label_timer, LV_LABEL_PART_MAIN, &lv_watch_font20);
+       lv_label_set_align(label_timer, LV_LABEL_ALIGN_CENTER);
+       lv_label_set_long_mode(label_timer, LV_LABEL_LONG_BREAK);
+       lv_obj_set_width(label_timer, 30);
+       lv_label_set_text_id(label_timer, WATCH_TEXT_ID_TIMER);
+       lv_obj_align(label_timer, label_time_remaining, LV_ALIGN_OUT_LEFT_MID, -15, 0);
+
+       // info
+       lv_obj_t * img_prompt = lv_img_create(img, NULL);
+       lv_img_set_src(img_prompt, ICON_NFC_EXPERIENCE_PROMPT);
+       lv_obj_set_click(img_prompt, false);
+       lv_obj_align(img_prompt, label_time_remaining, LV_ALIGN_OUT_BOTTOM_MID, 0, 15);
+
+       lv_obj_t * img_info = lv_img_create(img, NULL);
+       lv_img_set_src(img_info, ICON_NFC_EXPERIENCE_HEART_S);
+       lv_obj_set_click(img_info, false);
+       lv_obj_align(img_info, NULL, LV_ALIGN_IN_TOP_LEFT, 145, 330);
+       
+       lv_obj_t * label_info = lv_label_create(img, NULL);
+       lv_obj_add_style(label_info, LV_LABEL_PART_MAIN, &lv_watch_font36);
+       lv_label_set_text_id(label_info, WATCH_TEXT_ID_HAPPINESS_VALUE);
+       lv_obj_align(label_info, img_info, LV_ALIGN_OUT_RIGHT_MID, 15, 0);
+
+       //stop btn
+    lv_obj_t * btn_stop = lv_btn_create(img, NULL);
+       lv_obj_set_size(btn_stop, 140, 70);
+    lv_obj_set_style_local_bg_color(btn_stop, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, lv_color_make(0xFF, 0x6F, 0x91));
+       lv_obj_set_style_local_radius(btn_stop, LV_BTN_PART_MAIN, LV_STATE_DEFAULT, 30);
+    lv_obj_set_style_local_bg_color(btn_stop, LV_BTN_PART_MAIN, LV_STATE_PRESSED, lv_color_make(0xFF, 0x6F, 0x91));
+       lv_obj_set_style_local_radius(btn_stop, LV_BTN_PART_MAIN, LV_STATE_PRESSED, 30);
+       lv_obj_align(btn_stop, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, -20);
+    lv_obj_set_event_cb(btn_stop, mmi_k18_nfc_experience_stop_btn_event_cb);
+       
+    lv_obj_t * label_stop = lv_label_create(btn_stop, NULL);
+       lv_obj_add_style(label_stop, LV_LABEL_PART_MAIN, &lv_watch_font36);
+    lv_label_set_text_id(label_stop, WATCH_TEXT_ID_EXPERIENCE_STOP);
+
+
+       //create label anim to update time remaining.
+       mmi_k18_nfc_experience_label_time_anim(ext->label_time_remaining);
+
+       watch_set_suspend_enable(false, ACT_ID_K18_NFC_EXPERIENCE, 0);
+
+       s_screen_is_active = true;
+       
+       return obj;
+}
+
+void mmi_k18_nfc_experience_create_event_cb(lv_obj_t * btn, lv_event_t e)
+{
+       if(NULL == s_experience_title_str)
+       {
+               return;
+       }
+       if(0 == s_experience_time_total)
+       {
+               return;
+       }
+       //s_experience_time_remain = s_experience_time_total;
+       s_experience_time_remain = s_experience_time_total + 1;
+
+    if(LV_EVENT_CLICKED == e) 
+       {
+        lv_watch_png_cache_all_free();
+        lv_obj_t * obj = mmi_k18_nfc_experience_create(NULL);
+        LV_ASSERT_MEM(obj);
+    }
+}
+
+void mmi_ui_msg_update_k18_nfc_experience(void)
+{
+       lv_watch_go_home();
+       mmi_k18_nfc_experience_create_event_cb(NULL, LV_EVENT_CLICKED);
+}
+
+bool mmi_k18_nfc_experience_cmd_trigger(unsigned char * next_buff, unsigned int next_buff_len)
+{
+#if 0
+       if(NULL == next_buff || 0 == next_buff_len)
+       {
+               K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+               return false;
+       }
+       //K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, next_buff_len);
+       //K18_NFC_LOG("[@CHENG_DEBUG]: %s\n", next_buff);
+
+       uint32_t output_len = 0;
+       char * t_decode_str = lv_mem_alloc(next_buff_len);
+       if(NULL == t_decode_str)
+       {
+               K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: memory alloc fail\n", __FUNCTION__, __LINE__);
+               return false;
+       }
+       _lv_memset_00(t_decode_str, next_buff_len);     
+
+       int ret_value = mbedtls_base64_decode(t_decode_str, next_buff_len, &output_len, next_buff, next_buff_len);
+       K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, ret_value);
+       if(0 != ret_value)
+       {
+               K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+               lv_mem_free(t_decode_str);
+               return false;
+       }
+       //K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: %d\n", __FUNCTION__, __LINE__, strlen(t_decode_str));
+       K18_NFC_LOG("[@CHENG_DEBUG][%d]: %s\n", __LINE__, t_decode_str);
+       
+       cJSON * json_recv = cJSON_Parse(t_decode_str);
+       if(NULL != json_recv)
+       {
+               if(cJSON_IsTrue(cJSON_GetObjectItem(json_recv, "status")))
+               {
+                       K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: true\n", __FUNCTION__, __LINE__);
+                       
+                       cJSON * json_data = cJSON_GetObjectItem(json_recv, "data");
+                       uint16_t bp_value_high = cJSON_GetIntValue(cJSON_GetObjectItem(json_data, "sbp"));
+                       uint16_t bp_value_low = cJSON_GetIntValue(cJSON_GetObjectItem(json_data, "dbp"));
+                       //char * description = cJSON_GetStringValue(cJSON_GetObjectItem(json_data, "description"));
+
+                       s_experience_title_str;
+                       s_experience_time_total;
+
+                       mmi_ui_msg_action_k18_nfc_experience();
+               }
+               else
+               {
+                       K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: false\n", __FUNCTION__, __LINE__);
+               }
+
+       }
+       else
+       {
+               K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: not json file\n", __FUNCTION__, __LINE__);
+       }
+       
+       if(NULL != json_recv)
+       {
+               K18_NFC_LOG("[@CHENG_DEBUG][%s][%d]: free json root\n", __FUNCTION__, __LINE__);
+               cJSON_Delete(json_recv);
+               json_recv = NULL;
+       }       
+       if(NULL != t_decode_str)
+       {
+               lv_mem_free(t_decode_str);
+               t_decode_str = NULL;
+       }
+#endif
+
+       return true;
+}
+
+
+#endif
+
diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/k18_nfc_experience_ui.h b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/k18_nfc_experience_ui.h
new file mode 100644 (file)
index 0000000..f997651
--- /dev/null
@@ -0,0 +1,62 @@
+
+
+
+#ifndef __K18_NFC_EXPERIENCE_UI_H__
+#define __K18_NFC_EXPERIENCE_UI_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef LV_CONF_INCLUDE_SIMPLE
+#include "lvgl.h"
+#include "lv_watch_conf.h"
+#else
+#include "../../../lvgl/lvgl.h"
+#include "../../../lv_watch_conf.h"
+#endif
+
+#ifdef MMI_PROJECT_Z5_HA_K18_NFC
+
+
+#define __MMI_AIGC_DEBUG__
+#ifdef __MMI_AIGC_DEBUG__
+#define K18_NFC_LOG(fmt, ...)  printf("[AIGC]"fmt, ##__VA_ARGS__)
+//#define K18_NFC_LOG(fmt, ...)        CPUartLogPrintf("[AIGC]"fmt, ##__VA_ARGS__)
+//#define K18_NFC_LOG(fmt, ...)        cplog_printf("[AIGC]"fmt, ##__VA_ARGS__)
+#else
+#define K18_NFC_LOG(fmt, ...)
+#endif
+
+
+typedef struct
+{
+       lv_watch_obj_ext_t old_ext;
+
+       lv_obj_t * cont;
+       lv_obj_t * img;
+    lv_obj_t * label_time_remaining;
+    //lv_obj_t * btn_stop;
+       lv_obj_t * cont_stop;
+       TIMER_ID cycle_timer_id;
+}lv_ntc_experience_ext_t;
+
+
+
+bool mmi_k18_nfc_experience_screen_active(void);
+
+void mmi_k18_nfc_experience_create_event_cb(lv_obj_t * btn, lv_event_t e);
+
+void mmi_ui_msg_update_k18_nfc_experience(void);
+
+bool mmi_k18_nfc_experience_cmd_trigger(unsigned char * next_buff, unsigned int next_buff_len);
+
+
+#endif 
+
+#ifdef __cplusplus
+} /* extern "C" */
+#endif
+
+#endif
+
index 4b4c28b..b336765 100644 (file)
@@ -2379,7 +2379,8 @@ void mmi_factorymode_bt_ota_mode_create_btn_cb(lv_obj_t * btn,lv_event_t e)
 #define PULSE_WAVE_ABS(x) (((x) < 0) ? (-(x)) : (x))
 #define PULSE_WAVE_TOTAL_COUNT (56)
 #define PULSE_WAVE_DATA_SECOND_NUM (2)
-#define PULSE_WAVE_POINT_NUM_MAX (MMI_HENGAI_BP_RAW_DATA_SAMPLE_RATE * PULSE_WAVE_DATA_SECOND_NUM)
+#define PULSE_WAVE_DATA_SAMPLE_RATE    (81)
+#define PULSE_WAVE_POINT_NUM_MAX (PULSE_WAVE_DATA_SAMPLE_RATE * PULSE_WAVE_DATA_SECOND_NUM)
 #define PULSE_WAVE_LINE_CONT_W (340)
 #define PULSE_WAVE_LINE_CONT_H (360) // (400)
 
index fb8003f..8fcef33 100644 (file)
@@ -1095,6 +1095,16 @@ LV_IMG_DECLARE(img_poweron_logo);
 #define ANIM_VOICECHAT_THINKING           "R:/png/voice_chat/ANIM_VOICECHAT_THINKING.gif"
 #endif
 
+
+#ifdef MMI_PROJECT_Z5_HA_K18_NFC
+#define ICON_K18_NFC_EXPERIENCE_BG           "R:/png/custom_function/ICON_K18_NFC_EXPERIENCE_BG.png"
+#define ICON_NFC_EXPERIENCE_TITLE           "R:/png/custom_function/ICON_NFC_EXPERIENCE_TITLE.png"
+#define ICON_NFC_EXPERIENCE_PROMPT           "R:/png/custom_function/ICON_NFC_EXPERIENCE_PROMPT.png"
+#define ICON_NFC_EXPERIENCE_HEART_S           "R:/png/custom_function/ICON_NFC_EXPERIENCE_HEART_S.png"
+#define ICON_NFC_EXPERIENCE_HEART_B           "R:/png/custom_function/ICON_NFC_EXPERIENCE_HEART_B.png"
+#endif
+
+
 #endif
 
 
index 9433c22..39dbb6c 100644 (file)
@@ -1788,8 +1788,8 @@ bool mmi_protocol_fzd_action_send_get_weather(MMI_WATCH_LOCATION_DATA_T * locati
        return result;
 }
 
-//[XX*YYYY*009F*WT,Äê-ÔÂ-ÈÕ,ʱ:·Ö:Ãë,ÌìÆøÃèÊö,ÌìÆø±àºÅ,µ±Ç°Î¶È,×îµÍÎÂ,×î¸ßÎÂ,³ÇÊÐÃû]
-//ÌìÆøÃèÊöÓàGB2312 ±àÂ룬³ÇÊÐÃûʹÓàUnicode ±àÂë  ÌìÆø±àºÅ£º0¡ª¡ªÇç 1¡ª¡ªÒõ 2¡ª¡ªÓê 3¡ª¡ªѩ
+//[XX*YYYY*009F*WT,��-��-��,ʱ:��:��,��������,�������,��ǰ�¶�,�����,�����,������]
+//���������� GB2312 ���룬������ʹ�� Unicode ����  ������ţ�0������ 1������ 2������ 3����ѩ
 //[XX*YYYY*009F*WT,16-09-24,11:00:00,b6e0d4c6,2,-5,-12,22,316df15733]
 //[SZKW*860132060004801*0035*WT,23-10-11,16:09:11,b6e0d4c6,1,27,-1,40,6DF157335E02]
 bool mmi_protocol_fzd_parse_ACTION_GET_WEATHER(unsigned char * next_buff, unsigned int next_buff_len)
@@ -2273,7 +2273,7 @@ bool mmi_protocol_fzd_action_VC_CALL_REQUEST(char * number, uint8_t call_type)
        return result;
 }
        
-// 1£º¶Ô·½ÔÚÏߣ¬µÈ´ý½ÓÌý£»0£º¶Ô·½²»ÔÚÏß
+// 1���Է����ߣ��ȴ�������0���Է�������
 bool mmi_protocol_fzd_parse_WATCH_VC_CALL_REQUEST(unsigned char * next_buff, unsigned int next_buff_len)
 {
        bool result = false;
@@ -2607,7 +2607,7 @@ bool mmi_protocol_fzd_action_SERVER_VC_CALL_REQUEST(int8_t state)
        return result;
 }
 
-// [XT*YYYYYYYYYYYYYYY*LEN*CALLING,ºô½ÐÕßid,»áÒéid(ûÓÐÔòÁô¿Õ£¬µ«Î»Öñ£Áô£©,ÒôƵ»¹ÊÇÊÓÆµ£¨0ΪÒôƵ£¬1ΪÊÓÆµ£©£¬ÉùÍøToken]
+// [XT*YYYYYYYYYYYYYYY*LEN*CALLING,������id,����id(û�������գ���λ�ñ�����,��Ƶ������Ƶ��0Ϊ��Ƶ��1Ϊ��Ƶ��������Token]
 bool mmi_protocol_fzd_parse_SERVER_VC_CALL_REQUEST(unsigned char * next_buff, unsigned int next_buff_len)
 {
        bool result = false;
@@ -2652,7 +2652,7 @@ bool mmi_protocol_fzd_parse_SERVER_VC_CALL_REQUEST(unsigned char * next_buff, un
        return result;
 }
 
-// [XT*YYYYYYYYYYYYYYY*LEN*RCALLING,ºô½ÐÕßid,»áÒéid(ûÓÐÔòÁô¿Õ£¬µ«Î»Öñ£Áô£©,ÒôƵ»¹ÊÇÊÓÆµ£¨0ΪÒôƵ£¬1ΪÊÓÆµ£©]
+// [XT*YYYYYYYYYYYYYYY*LEN*RCALLING,������id,����id(û�������գ���λ�ñ�����,��Ƶ������Ƶ��0Ϊ��Ƶ��1Ϊ��Ƶ��]
 bool mmi_protocol_fzd_action_VC_CALL_RESPONSE(char * number, char * ticket, MODEM_VIDEO_CALL_TYPE type)
 {
        bool result = false;
@@ -2762,7 +2762,7 @@ bool mmi_protocol_fzd_action_VC_CALL_REQUEST(char * number, uint8_t call_type)
        return result;
 }
        
-// [XT*YYYYYYYYYYYYYYY*LEN*AGTALK,ÒôÊÓÆµ×´Ì¬,»áÒéid,appKey,ÃØԿ,token,uid]
+// [XT*YYYYYYYYYYYYYYY*LEN*AGTALK,����Ƶ״̬,����id,appKey,��Կ,token,uid]
 // ״̬ 0-continue; other-stop
 bool mmi_protocol_fzd_parse_WATCH_VC_CALL_REQUEST(unsigned char * next_buff, unsigned int next_buff_len)
 {
@@ -2845,7 +2845,7 @@ bool mmi_protocol_fzd_action_SERVER_VC_CALL_REQUEST(int8_t state)
        return result;
 }
 
-// [XT*YYYYYYYYYYYYYYY*LEN*CALLING,ºô½ÐÕßÕ˺Å,ͨ»°ÀàÐÍ,»áÒéid,appKey,ÃØԿ,token,uid]
+// [XT*YYYYYYYYYYYYYYY*LEN*CALLING,�������˺�,ͨ������,����id,appKey,��Կ,token,uid]
 bool mmi_protocol_fzd_parse_SERVER_VC_CALL_REQUEST(unsigned char * next_buff, unsigned int next_buff_len)
 {
        bool result = false;
@@ -2899,7 +2899,7 @@ bool mmi_protocol_fzd_parse_SERVER_VC_CALL_REQUEST(unsigned char * next_buff, un
        return result;
 }
 
-// [XT*YYYYYYYYYYYYYYY*LEN*RCALLING,ºô½ÐÕßÕ˺Å,ͨ»°ÀàÐÍ,»áÒéid]
+// [XT*YYYYYYYYYYYYYYY*LEN*RCALLING,�������˺�,ͨ������,����id]
 bool mmi_protocol_fzd_action_VC_CALL_RESPONSE(char * number, char * ticket, MODEM_VIDEO_CALL_TYPE type)
 {
        bool result = false;
@@ -3651,12 +3651,12 @@ bool mmi_protocol_fzd_action_hengai_activation(char * req_code)
        unsigned char * content_buff = NULL;
        unsigned int content_lenth = 256;
 
-       char * name = "Z5_HA_K7"; // É豸Ãû³Æ
-       char * model = "Z5_HA_K7"; // É豸ÐͺÅ
-       char * firm = "zh"; // É豸³§ÉÌ
-       char * sensor = "whale"; // ´«¸ÐÆ÷ÐͺÅ
-       uint16_t fs = 50; // ²ÉÑùÂÊ
-       char * sinklib_version = "v0.3.2.101122"; // Ï³Á¿â°æ±¾ºÅ
+       char * name = "Z5_HA_K7"; // �豸����
+       char * model = "Z5_HA_K7"; // �豸�ͺ�
+       char * firm = "zh"; // �豸����
+       char * sensor = "whale"; // �������ͺ�
+       uint16_t fs = 50; // ������
+       char * sinklib_version = "v0.3.2.101122"; // �³���汾��
 
        content_buff = (unsigned char *)lv_mem_alloc(content_lenth);
        if(NULL == content_buff)
@@ -3978,6 +3978,10 @@ 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
+
        #endif
        }
        
index b1c2528..099b214 100644 (file)
@@ -1011,6 +1011,13 @@ static void keypad_watch_cb(struct keypad_param *arg)
        
     if(arg->data.key == LV_KEY_END) 
        {
+       #ifdef MMI_PROJECT_Z5_HA_K18_NFC
+               if(true == mmi_k18_nfc_experience_screen_active())
+               {
+                       return;
+               }
+       #endif
+
         lv_obj_t * facau_obj = lv_watch_get_activity_obj(ACT_ID_FACTORY_MODE_AUTOTEST);
         lv_obj_t * emht_obj = lv_watch_get_activity_obj(ACT_ID_ENGINEER_MODE_ITEM_HWT);
         if(NULL != facau_obj) {