k18 __MMI_CUSTOM_HENGAI_MICRO_HEALTH_CHECKUP__
author@CHENG <2393524978@qq.com>
Wed, 23 Oct 2024 07:09:49 +0000 (15:09 +0800)
committer@CHENG <2393524978@qq.com>
Wed, 23 Oct 2024 07:09:49 +0000 (15:09 +0800)
2.sdk/project/Z5_HA_K18/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h
2.sdk/sdk/gui/lv_drivers/indev/FR8012HAQ/fr8012haq.c
2.sdk/sdk/gui/lv_drivers/indev/FR8012HAQ/fr8012haq.h
2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_blood_pressure.c
2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_blood_pressure.h
2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_measure.c
2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_measure.h
2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.c
2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd.h
2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_fzd_content.c

index f551234..f784e35 100644 (file)
@@ -1252,6 +1252,18 @@ int  *fr8012haq_blood_data_get(int *len)
     printf("fr8012haq_parse_returned_data:bp_data:%d",s_FR8012HAQ_blood_data_len);
     return s_FR8012HAQ_blood_data;
 }
+
+#if 1 // defined(__MMI_CUSTOM_HENGAI_MICRO_HEALTH_CHECKUP__)
+// for micro health checkup feather
+void mmi_hengai_micro_health_checkup_data_len_reset(int reset_len)
+{
+    if(s_FR8012HAQ_blood_data_len < reset_len)
+        s_FR8012HAQ_blood_data_len = 0;
+    else
+        s_FR8012HAQ_blood_data_len -= reset_len;
+}
+#endif
+
 //获取1分钟情绪数据,返回数据数组,已封装好string,可当参数返回给服务器,len:长度返回
 char  *fr8012haq_emo_data_get(int *len)
 { 
index f6cbda8..69b0cfa 100644 (file)
@@ -64,6 +64,10 @@ unsigned char FR8012HAQ_result_get_wear_status(void);
 void FR8012HAQ_close(void);
 void fr8012haq_measure_stop(void);
 int  *fr8012haq_blood_data_get(int *len);
+#if 1 // defined(__MMI_CUSTOM_HENGAI_MICRO_HEALTH_CHECKUP__)
+// for micro health checkup feather
+void mmi_hengai_micro_health_checkup_data_len_reset(int reset_len);
+#endif
 char*  fr8012haq_YYL_data_get(int *yyl_data_len);
 uint8_t fr8012haq_is_measure_YYL_mode(void);
 uint8_t fr8012haq_is_not_measure_mode(void);
index ad184b1..5bb9bba 100644 (file)
@@ -2311,5 +2311,129 @@ void mmi_heng_ai_blood_pressure_create_event_cb(lv_obj_t * btn, lv_event_t e)
 }
 
 
+#if defined(__MMI_CUSTOM_HENGAI_MICRO_HEALTH_CHECKUP__)
+
+#define MICRO_CHECKUP_COUNT_INTERVAL (2)//(3) // 3s
+#define MICRO_PPG_DATA_SINGLE_SEND_COUNT (MMI_HENGAI_BP_RAW_DATA_SAMPLE_RATE * MICRO_CHECKUP_COUNT_INTERVAL)
+#define MICRO_PPG_DATA_BUFFER_LEN ((MICRO_PPG_DATA_SINGLE_SEND_COUNT + 10) * sizeof(int))
+
+static int * s_hengai_ppg_data_ptr = NULL;
+static int s_hengai_ppg_data_len = 0;
+static uint8_t s_hengai_micro_checkup_count = 0;
+
+static void mmi_hengai_micro_health_checkup_data_send(void)
+{
+       uint16_t i = 0;
+       char * data_ptr = NULL;
+       uint32_t data_len = MICRO_PPG_DATA_BUFFER_LEN * 11;
+
+       if(NULL == s_hengai_ppg_data_ptr || 0 == s_hengai_ppg_data_len)
+       {
+               HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+               return;
+       }
+
+       data_ptr = lv_mem_alloc(data_len);
+       if(NULL == data_ptr)
+       {
+               HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: memory alloc failed\n", __FUNCTION__, __LINE__);
+               return;
+       }
+       _lv_memset_00(data_ptr, data_len);
+
+       data_len = sprintf(data_ptr, "%d,", s_hengai_ppg_data_len);
+       
+       for(i = 0; i < s_hengai_ppg_data_len - 1; i++)
+       {
+               data_len += sprintf(data_ptr + data_len, "%d,", s_hengai_ppg_data_ptr[i]);
+       }
+       data_len += sprintf(data_ptr + data_len, "%d", s_hengai_ppg_data_ptr[i]);
+
+       cplog_printf("[@CHENG_DEBUG][%s][%d]: s_hengai_ppg_data_len=%d,data_len=%d\n", __FUNCTION__, __LINE__, s_hengai_ppg_data_len, data_len);        
+
+       mmi_protocol_fzd_action_ppg_data(data_ptr, data_len);
+       if(NULL != data_ptr)
+       {
+               lv_mem_free(data_ptr);
+               data_ptr = NULL;
+       }
+}
+
+static void mmi_hengai_micro_health_checkup_data_get(void)
+{
+       if(NULL == s_hengai_ppg_data_ptr)
+       {
+               HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: memory empty\n", __FUNCTION__, __LINE__);
+               return;
+       }
+       _lv_memset_00(s_hengai_ppg_data_ptr, MICRO_PPG_DATA_BUFFER_LEN);
+       s_hengai_ppg_data_len = 0;
+
+       int * total_data = fr8012haq_blood_data_get(&s_hengai_ppg_data_len);
+       if(NULL != total_data && 0 != s_hengai_ppg_data_len)
+       {
+               if(MICRO_PPG_DATA_SINGLE_SEND_COUNT < s_hengai_ppg_data_len)
+                       s_hengai_ppg_data_len = MICRO_PPG_DATA_SINGLE_SEND_COUNT;
+               
+               _lv_memcpy(s_hengai_ppg_data_ptr, total_data, sizeof(int) * s_hengai_ppg_data_len);
+               mmi_hengai_micro_health_checkup_data_len_reset(s_hengai_ppg_data_len);
+       }
+}
+
+void mmi_hengai_micro_health_checkup_process(void)
+{
+       s_hengai_micro_checkup_count++;
+       if(MICRO_CHECKUP_COUNT_INTERVAL <= s_hengai_micro_checkup_count)
+       {
+               s_hengai_micro_checkup_count = 0;
+               mmi_hengai_micro_health_checkup_data_get();
+               mmi_hengai_micro_health_checkup_data_send();
+       }
+}
+
+void mmi_hengai_micro_health_checkup_stop(void)
+{
+       cplog_printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+       
+       if(NULL != s_hengai_ppg_data_ptr)
+       {
+               lv_mem_free(s_hengai_ppg_data_ptr);
+               s_hengai_ppg_data_ptr = NULL;
+       }
+
+       s_hengai_ppg_data_len = 0;
+       s_hengai_micro_checkup_count = 0;
+}
+
+void mmi_hengai_micro_health_checkup_start(void)
+{
+       cplog_printf("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+       
+       if(NULL != s_hengai_ppg_data_ptr)
+       {
+               lv_mem_free(s_hengai_ppg_data_ptr);
+               s_hengai_ppg_data_ptr = NULL;
+       }
+       s_hengai_ppg_data_ptr = (int *)lv_mem_alloc(MICRO_PPG_DATA_BUFFER_LEN);
+       if(NULL == s_hengai_ppg_data_ptr)
+       {
+               HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: memory alloc failed\n", __FUNCTION__, __LINE__);
+               return;
+       }
+       _lv_memset_00(s_hengai_ppg_data_ptr, MICRO_PPG_DATA_BUFFER_LEN);
+
+       s_hengai_ppg_data_len = 0;
+       s_hengai_micro_checkup_count = 0;
+}
+
+void mmi_hengai_micro_health_checkup_set(uint8_t state_value)
+{
+       if(0 == state_value)
+               mmi_health_measure_interrupt();
+       else
+               mmi_health_measure_server_set_action(MMI_HEALTH_MEASURE_MICRO_CHECKUP, 1);
+}
+#endif
+
 #endif
 
index 80d6831..5fd34fc 100644 (file)
@@ -105,6 +105,13 @@ void mmi_ui_msg_update_hengai_bp_calibrate_result(bool is_success);
 void mmi_heng_ai_blood_pressure_create_event_cb(lv_obj_t * btn, lv_event_t e);
 
 
+#if defined(__MMI_CUSTOM_HENGAI_MICRO_HEALTH_CHECKUP__)
+void mmi_hengai_mirco_health_checkup_start(void);
+void mmi_hengai_micro_health_checkup_stop(void);
+void mmi_hengai_micro_health_checkup_process(void);
+void mmi_hengai_micro_health_checkup_set(uint8_t state_value);
+#endif
+
 #endif
 
 #ifdef __cplusplus
index 94823f8..51fe355 100644 (file)
@@ -10,7 +10,7 @@ static nv_watch_health_measure_timed_t s_health_measure_timed_data = {0};
 static lv_ll_t s_health_measure_timed_ll = {0};
 static lv_health_measure_run_t s_health_measure_run_data = {0};
 static void * s_health_measure_process_timer_id = NULL;
-static uint8_t s_measure_time_total = 0, s_measure_time_count = 0;
+static uint16_t s_measure_time_total = 0, s_measure_time_count = 0;
 static uint32_t s_health_measure_heart_timed_time_stamp = 0;
 static uint32_t s_health_measure_temperature_timed_time_stamp = 0;
 static uint32_t s_health_measure_blood_timed_time_stamp = 0;
@@ -620,8 +620,13 @@ bool mmi_health_measure_spo2_data_ui_get(uint16_t * spo2_value)
 
 void mmi_health_measure_send_heart(void * param)
 {
+       if(NULL == param)
+       {
+               HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+               return;
+       }
+       
        uint16_t heart_value = ((mmi_health_measure_msg_param_t *)param)->heart_value;
-
        if(0 == heart_value)
        {
                HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
@@ -638,8 +643,13 @@ void mmi_health_measure_send_heart(void * param)
 
 void mmi_health_measure_send_temperature(void * param)
 {
+       if(NULL == param)
+       {
+               HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+               return;
+       }
+       
        float body_value = ((mmi_health_measure_msg_param_t *)param)->body_value;
-
        if(0.0 == body_value)
        {
                HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
@@ -656,9 +666,14 @@ void mmi_health_measure_send_temperature(void * param)
 
 void mmi_health_measure_send_blood(void * param)
 {
+       if(NULL == param)
+       {
+               HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+               return;
+       }
+       
        uint16_t blood_high_value = ((mmi_health_measure_msg_param_t *)param)->blood_high_value;
        uint16_t blood_low_value = ((mmi_health_measure_msg_param_t *)param)->blood_low_value;
-
        if(0 == blood_high_value || 0 == blood_low_value)
        {
                HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
@@ -676,8 +691,13 @@ void mmi_health_measure_send_blood(void * param)
 
 void mmi_health_measure_send_spo2(void * param)
 {
+       if(NULL == param)
+       {
+               HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+               return;
+       }
+       
        uint16_t spo2_value = ((mmi_health_measure_msg_param_t *)param)->spo2_value;
-
        if(0 == spo2_value)
        {
                HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
@@ -786,6 +806,12 @@ void mmi_health_measure_process_finish(void)
                                mmi_health_measure_task_msg_send(MMI_HEALTH_MEASURE_MSG_SPO2_FINISHED, param);
                        }
                        break;
+
+       #if defined(__MMI_CUSTOM_HENGAI_MICRO_HEALTH_CHECKUP__)
+               case MMI_HEALTH_MEASURE_MICRO_CHECKUP:
+                       mmi_health_measure_task_msg_send(MMI_HEALTH_MEASURE_MSG_MICRO_CHECKUP_FINISHED, param);
+                       break;
+       #endif
        
                default:
                        break;
@@ -817,27 +843,30 @@ static void mmi_health_measure_process_timer_handle(uint32_t para)
                switch(s_health_measure_run_data.measure_type)
                {
                        case MMI_HEALTH_MEASURE_HEART:
-                               mmi_health_measure_heart_data_process(&(s_health_measure_run_data.heart_value));
+                               mmi_health_measure_task_msg_send(MMI_HEALTH_MEASURE_MSG_HEART_PROCESS, NULL);
                                break;
 
                        case MMI_HEALTH_MEASURE_TEMPERATURE:
-                               mmi_health_measure_temperature_data_process(&(s_health_measure_run_data.body_value), &(s_health_measure_run_data.wrist_value));
+                               mmi_health_measure_task_msg_send(MMI_HEALTH_MEASURE_MSG_TEMPERATURE_PROCESS, NULL);
                                break;
 
                        case MMI_HEALTH_MEASURE_BLOOD:
-                               mmi_health_measure_blood_data_process(&(s_health_measure_run_data.blood_high_value), &(s_health_measure_run_data.blood_low_value));
+                               mmi_health_measure_task_msg_send(MMI_HEALTH_MEASURE_MSG_BLOOD_PROCESS, NULL);
                                break;
 
                        case MMI_HEALTH_MEASURE_SPO2:
-                               mmi_health_measure_spo2_data_process(&(s_health_measure_run_data.spo2_value));
+                               mmi_health_measure_task_msg_send(MMI_HEALTH_MEASURE_MSG_SPO2_PROCESS, NULL);
                                break;
 
+               #if defined(__MMI_CUSTOM_HENGAI_MICRO_HEALTH_CHECKUP__)
+                       case MMI_HEALTH_MEASURE_MICRO_CHECKUP:
+                               mmi_health_measure_task_msg_send(MMI_HEALTH_MEASURE_MSG_MICRO_CHECKUP_PROCESS, NULL);
+                               break;
+               #endif
+
                        default:
                                break;
                }
-
-               uos_timer_stop(s_health_measure_process_timer_id);
-               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);
        }
 }
 
@@ -867,6 +896,13 @@ void mmi_health_measure_interrupt(void)
                        mmi_hengai_tcms_action();
                        #endif
                        break;
+
+       #if defined(__MMI_CUSTOM_HENGAI_MICRO_HEALTH_CHECKUP__)
+               case MMI_HEALTH_MEASURE_MICRO_CHECKUP:
+                       mmi_hsensor_close();
+                       mmi_hengai_micro_health_checkup_stop();
+                       break;
+       #endif
                
                default:
                        break;
@@ -906,6 +942,14 @@ static void mmi_health_measure_start(MMI_HEALTH_MEASURE_TYPE_E measure_type, uin
                                mmi_hsensor_spo2_open();
                                break;
 
+               #if defined(__MMI_CUSTOM_HENGAI_MICRO_HEALTH_CHECKUP__)
+                       case MMI_HEALTH_MEASURE_MICRO_CHECKUP:
+                               s_measure_time_total = 0xffff;
+                               mmi_hsensor_blood_open();
+                               mmi_hengai_micro_health_checkup_start();
+                               break;
+               #endif
+
                        default:
                                break;
                }
@@ -920,7 +964,11 @@ static void mmi_health_measure_start(MMI_HEALTH_MEASURE_TYPE_E measure_type, uin
 
        mmi_health_measure_process_timer_stop();
        uos_timer_create(&s_health_measure_process_timer_id);
-       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);
+       uos_timer_start(s_health_measure_process_timer_id, 
+                                               MS_TO_TICKS(MMI_HEALTH_MEASURE_CYCLE_DURATION), 
+                                               MS_TO_TICKS(MMI_HEALTH_MEASURE_CYCLE_DURATION), 
+                                               mmi_health_measure_process_timer_handle, 
+                                               NULL);
 }
 
 bool mmi_health_measure_timed_measure_start(MMI_HEALTH_MEASURE_TYPE_E measure_type)
@@ -1072,6 +1120,22 @@ static void mmi_health_measure_task_handle(void * param)
        HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: msg_id=%d\n",__FUNCTION__,__LINE__, msg_id);
     switch(msg_id)
        {
+               case MMI_HEALTH_MEASURE_MSG_HEART_PROCESS:
+                       mmi_health_measure_heart_data_process(&(s_health_measure_run_data.heart_value));
+            break;
+                       
+               case MMI_HEALTH_MEASURE_MSG_TEMPERATURE_PROCESS:
+                       mmi_health_measure_temperature_data_process(&(s_health_measure_run_data.body_value), &(s_health_measure_run_data.wrist_value));
+            break;
+                       
+               case MMI_HEALTH_MEASURE_MSG_BLOOD_PROCESS:
+                       mmi_health_measure_blood_data_process(&(s_health_measure_run_data.blood_high_value), &(s_health_measure_run_data.blood_low_value));
+            break;
+                       
+               case MMI_HEALTH_MEASURE_MSG_SPO2_PROCESS:
+                       mmi_health_measure_spo2_data_process(&(s_health_measure_run_data.spo2_value));
+            break;
+       
         case MMI_HEALTH_MEASURE_MSG_HEART_FINISHED:
                        mmi_health_measure_send_heart(msg_param);
             break;
@@ -1097,6 +1161,17 @@ static void mmi_health_measure_task_handle(void * param)
                        mmi_health_measure_send_spo2(msg_param);
             break;
 
+       #if defined(__MMI_CUSTOM_HENGAI_MICRO_HEALTH_CHECKUP__)
+               case MMI_HEALTH_MEASURE_MSG_MICRO_CHECKUP_PROCESS:
+                       mmi_hengai_micro_health_checkup_process();
+                       break;
+
+               case MMI_HEALTH_MEASURE_MSG_MICRO_CHECKUP_FINISHED:
+                       mmi_hsensor_close();
+                       mmi_hengai_micro_health_checkup_stop();
+                       break;
+       #endif
+
                default:
                        break;
     }
index 52a633e..3f5ca71 100644 (file)
@@ -54,6 +54,9 @@ typedef enum
        MMI_HEALTH_MEASURE_TEMPERATURE,
        MMI_HEALTH_MEASURE_BLOOD,
        MMI_HEALTH_MEASURE_SPO2,
+#if defined(__MMI_CUSTOM_HENGAI_MICRO_HEALTH_CHECKUP__)
+       MMI_HEALTH_MEASURE_MICRO_CHECKUP,
+#endif
        MMI_HEALTH_MEASURE_MAX,
 }MMI_HEALTH_MEASURE_TYPE_E;
 
@@ -125,11 +128,23 @@ typedef enum
 {
        MMI_HEALTH_MEASURE_MSG_ID_START,
 
+       MMI_HEALTH_MEASURE_MSG_HEART_PROCESS,
     MMI_HEALTH_MEASURE_MSG_HEART_FINISHED,
+       
+       MMI_HEALTH_MEASURE_MSG_TEMPERATURE_PROCESS,
     MMI_HEALTH_MEASURE_MSG_TEMPERATURE_FINISHED,
+       
+       MMI_HEALTH_MEASURE_MSG_BLOOD_PROCESS,
     MMI_HEALTH_MEASURE_MSG_BLOOD_FINISHED,
+       
+       MMI_HEALTH_MEASURE_MSG_SPO2_PROCESS,
     MMI_HEALTH_MEASURE_MSG_SPO2_FINISHED,
 
+#if defined(__MMI_CUSTOM_HENGAI_MICRO_HEALTH_CHECKUP__)
+       MMI_HEALTH_MEASURE_MSG_MICRO_CHECKUP_PROCESS,
+       MMI_HEALTH_MEASURE_MSG_MICRO_CHECKUP_FINISHED,
+#endif
+
     MMI_HEALTH_MEASURE_MSG_ID_END
 }MMI_HEALTH_MEASURE_MSG_ID_E;
 
index 7046a74..7241802 100644 (file)
@@ -566,6 +566,7 @@ static void mmi_protocol_fzd_login_check_stop(void)
        {
                uos_timer_stop(s_login_timer_id);
                uos_timer_delete(s_login_timer_id);
+               s_login_timer_id = NULL;
        }
 }
 
@@ -4017,6 +4018,56 @@ bool mmi_protocol_fzd_action_sleep_data(char * data_ptr, uint32_t data_len)
        return result;
 }
 
+bool mmi_protocol_fzd_parse_SERVER_PPG_TEST(unsigned char * next_buff, unsigned int next_buff_len)
+{
+       bool result = false;
+       MMI_PROTOCOL_FZD_ACTION_ENUM action = MMI_FZD_SERVER_PPG_TEST;
+
+       if(NULL == next_buff || 0 == next_buff_len)
+       {
+               PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+               return false;
+       }
+       
+       result = true;
+       mmi_protocol_fzd_send_without_data(action);
+
+       uint8_t state_value = 0;
+       state_value = atoi(next_buff);
+       
+       PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+       
+#if defined(__MMI_CUSTOM_HENGAI_MICRO_HEALTH_CHECKUP__)
+       mmi_hengai_micro_health_checkup_set(state_value);
+#endif
+       
+       return result;
+}
+
+bool mmi_protocol_fzd_action_ppg_data(char * data_ptr, uint32_t data_len)
+{
+       bool result = false;
+       MMI_PROTOCOL_FZD_ACTION_ENUM action = MMI_FZD_ACTION_PPG_DATA;
+       unsigned char * content_buff = NULL;
+       unsigned int content_lenth = 0;
+
+       content_buff = (unsigned char *)lv_mem_alloc(data_len + 2);
+       if(NULL == content_buff)
+       {
+               PROTOCOL_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: \n", __FUNCTION__, __LINE__);
+               return false;
+       }
+       _lv_memset_00(content_buff, data_len + 2);
+       sprintf(content_buff, ",");
+       _lv_memcpy(content_buff + 1, data_ptr, data_len);
+       content_lenth = strlen(content_buff);
+       
+       result = mmi_protocol_fzd_send_with_data(action, content_buff, content_lenth);
+       lv_mem_free(content_buff);
+       
+       return result;
+}
+
 
 
 #endif
index 79fa092..8d3676d 100644 (file)
@@ -193,8 +193,6 @@ typedef enum
 #ifdef __MMI_CUSTOM_HENGAI_SLEEP__
        MMI_FZD_ACTION_HENGAI_ACTIVATION,
        MMI_FZD_ACTION_HENGAI_ACTIVATION_FEEDBACK,
-#endif
-#if defined(__MMI_CUSTOM_HENGAI_SLEEP__)
        MMI_FZD_ACTION_HENGAI_SLEEP_DATA,
 #endif
 #ifdef __hengai_sleep_test__
@@ -210,6 +208,8 @@ typedef enum
        MMI_FZD_ACTION_TCP_HTTP,
        MMI_FZD_ACTION_SEND_ICCID,
        MMI_FZD_ACTION_SLEEP_DATA,
+       MMI_FZD_SERVER_PPG_TEST,
+       MMI_FZD_ACTION_PPG_DATA,
 
        MMI_FZD_SERVER_SET_BOOTOFF,
        MMI_FZD_SEND_UP_REMIND,
@@ -368,8 +368,6 @@ bool mmi_protocol_fzd_parse_SERVER_SET_HENG_AI_WARNING(unsigned char * next_buff
 bool mmi_protocol_fzd_action_hengai_activation(char * req_code);
 bool mmi_protocol_fzd_parse_ACTION_HENGAI_ACTIVATION(unsigned char * next_buff, unsigned int next_buff_len);
 bool mmi_protocol_fzd_action_hengai_activation_feedback(void);
-#endif
-#if defined(__MMI_CUSTOM_HENGAI_SLEEP__)
 bool mmi_protocol_fzd_action_hengai_sleep_data(char * file_buf, uint32_t file_size);
 #endif
 #ifdef __MMI_CUSTOM_HENGAI_TCMS__
@@ -382,6 +380,8 @@ bool mmi_protocol_fzd_parse_ACTION_TCP_HTTP(unsigned char * next_buff, unsigned
 
 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);
+bool mmi_protocol_fzd_action_ppg_data(char * data_ptr, uint32_t data_len);
 
 #endif
 
index 852e90c..42103b3 100644 (file)
@@ -142,6 +142,8 @@ static unsigned char * mmi_protocol_fzd_action_string_get(MMI_PROTOCOL_FZD_ACTIO
                        {MMI_FZD_ACTION_TCP_HTTP, "TCP_HTTP"},
                        {MMI_FZD_ACTION_SEND_ICCID, "ICCID"},
                        {MMI_FZD_ACTION_SLEEP_DATA, "SLEEP_DATA"},
+                       {MMI_FZD_SERVER_PPG_TEST, "PPG"},
+                       {MMI_FZD_ACTION_PPG_DATA, "PPG_DATA"},
                        {MMI_FZD_SERVER_SET_BOOTOFF, "BOOTOFF"},
                        {MMI_FZD_SEND_UP_REMIND, "UP_REMIND"},
                
@@ -481,9 +483,12 @@ static bool mmi_protocol_fzd_content_parse(unsigned char * content_ptr, unsigned
                        break;
 
                case MMI_FZD_ACTION_SEND_ICCID:
+               case MMI_FZD_ACTION_SLEEP_DATA:
+               case MMI_FZD_ACTION_PPG_DATA:
                        break;
 
-               case MMI_FZD_ACTION_SLEEP_DATA:
+               case MMI_FZD_SERVER_PPG_TEST:
+                       mmi_protocol_fzd_parse_SERVER_PPG_TEST(next_buff, next_buff_len);
                        break;
                        
                case MMI_FZD_SERVER_SET_BOOTOFF: