From: @CHENG <2393524978@qq.com> Date: Wed, 23 Oct 2024 07:09:49 +0000 (+0800) Subject: k18 __MMI_CUSTOM_HENGAI_MICRO_HEALTH_CHECKUP__ X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=b9dab39230073058cd0327e632fc7d6acf5812d1;p=mirrors%2FASR3603_Z5.git k18 __MMI_CUSTOM_HENGAI_MICRO_HEALTH_CHECKUP__ --- diff --git a/2.sdk/project/Z5_HA_K18/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h b/2.sdk/project/Z5_HA_K18/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h index bc25244a..c4a4f044 100644 --- a/2.sdk/project/Z5_HA_K18/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h +++ b/2.sdk/project/Z5_HA_K18/product/craneg_modem/config/watch/lv_watch_conf_CUSTOM.h @@ -219,6 +219,7 @@ //#define __MMI_CUSTOM_HENGAI_SLEEP__ #define __MMI_CUSTOM_HENGAI_SLEEP_K18__ +#define __MMI_CUSTOM_HENGAI_MICRO_HEALTH_CHECKUP__ #endif diff --git a/2.sdk/sdk/gui/lv_drivers/indev/FR8012HAQ/fr8012haq.c b/2.sdk/sdk/gui/lv_drivers/indev/FR8012HAQ/fr8012haq.c index f5512347..f784e350 100644 --- a/2.sdk/sdk/gui/lv_drivers/indev/FR8012HAQ/fr8012haq.c +++ b/2.sdk/sdk/gui/lv_drivers/indev/FR8012HAQ/fr8012haq.c @@ -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) { diff --git a/2.sdk/sdk/gui/lv_drivers/indev/FR8012HAQ/fr8012haq.h b/2.sdk/sdk/gui/lv_drivers/indev/FR8012HAQ/fr8012haq.h index f6cbda83..69b0cfa3 100644 --- a/2.sdk/sdk/gui/lv_drivers/indev/FR8012HAQ/fr8012haq.h +++ b/2.sdk/sdk/gui/lv_drivers/indev/FR8012HAQ/fr8012haq.h @@ -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); diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_blood_pressure.c b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_blood_pressure.c index ad184b17..5bb9bba3 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_blood_pressure.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_blood_pressure.c @@ -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 diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_blood_pressure.h b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_blood_pressure.h index 80d68317..5fd34fcd 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_blood_pressure.h +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_blood_pressure.h @@ -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 diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_measure.c b/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_measure.c index 94823f87..51fe355e 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_measure.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_measure.c @@ -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; } diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_measure.h b/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_measure.h index 52a633ee..3f5ca714 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_measure.h +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/health_measure/health_measure.h @@ -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; 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 7046a749..7241802d 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 @@ -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 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 79fa0929..8d3676d2 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 @@ -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 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 852e90cc..42103b37 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 @@ -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: