From: @CHENG <2393524978@qq.com> Date: Thu, 1 Feb 2024 06:27:25 +0000 (+0800) Subject: gengxin X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=2dd8b8bf7d802130b55cfcecf55bb029bd6916b0;p=mirrors%2FASR3603_Z5.git gengxin --- diff --git a/2.sdk/project/Z5_HA_K18/gui/lv_watch/mmi_default_CUSTOM.h b/2.sdk/project/Z5_HA_K18/gui/lv_watch/mmi_default_CUSTOM.h index 7df47167..3dd91c12 100644 --- a/2.sdk/project/Z5_HA_K18/gui/lv_watch/mmi_default_CUSTOM.h +++ b/2.sdk/project/Z5_HA_K18/gui/lv_watch/mmi_default_CUSTOM.h @@ -40,7 +40,7 @@ //health measure timed #define MMI_CUSTOMER_HEART_TIMED_FLAG true -#define MMI_CUSTOMER_HEART_TIMED_INTERVAL (5 * 60) // unit:s +#define MMI_CUSTOMER_HEART_TIMED_INTERVAL (10 * 60) // unit:s #define MMI_CUSTOMER_TEMPERATURE_TIMED_FLAG true 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 53e001de..ce15f5a2 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 @@ -53,12 +53,12 @@ void mmi_hengai_bp_raw_data_fill(void) s_hengai_bp_raw_data_ptr = NULL; } - int temp_len = MMI_HENGAI_BP_RAW_DATA_LEN * sizeof(int); - s_hengai_bp_raw_data_ptr = (int *)lv_mem_alloc(temp_len); - _lv_memset_00(s_hengai_bp_raw_data_ptr, temp_len); - _lv_memcpy(s_hengai_bp_raw_data_ptr, fr8012haq_blood_data_get(&s_hengai_bp_raw_data_len), temp_len); + int buff_len = MMI_HENGAI_BP_RAW_DATA_LEN * sizeof(int); + s_hengai_bp_raw_data_ptr = (int *)lv_mem_alloc(buff_len); + _lv_memset_00(s_hengai_bp_raw_data_ptr, buff_len); + _lv_memcpy(s_hengai_bp_raw_data_ptr, fr8012haq_blood_data_get(&s_hengai_bp_raw_data_len), buff_len); - HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: raw_data_len=%d, temp_len=%d\n", __FUNCTION__, __LINE__, s_hengai_bp_raw_data_len, temp_len); + HENGAI_HEALTH_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: raw_data_num=%d, buff_len=%d\n", __FUNCTION__, __LINE__, s_hengai_bp_raw_data_len, buff_len); } int * mmi_hengai_bp_raw_data_ptr_get(void) diff --git a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_http_protocol.c b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_http_protocol.c index 8b2ce74c..c686bd5e 100644 --- a/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_http_protocol.c +++ b/2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_http_protocol.c @@ -812,12 +812,15 @@ void mmi_hengai_algorithm_interface_login_action(void) char * token = mmi_hengai_health_token_get(); if(0 == strlen(token)) { + char imei[16 + 1] = {0}; + app_adp_get_imei_req(imei); + cJSON * json_send = json_send = cJSON_CreateObject(); cJSON_AddItemToObject(json_send, "app_key", cJSON_CreateString(HENGAI_HTTP_POST_APP_KEY)); - cJSON_AddItemToObject(json_send, "account_type", cJSON_CreateNumber(0)); - cJSON_AddItemToObject(json_send, "account", cJSON_CreateString("18912345670")); - cJSON_AddItemToObject(json_send, "name", cJSON_CreateString("18912345670")); - cJSON_AddItemToObject(json_send, "password", cJSON_CreateString("123456")); + cJSON_AddItemToObject(json_send, "account_type", cJSON_CreateNumber(3)); + cJSON_AddItemToObject(json_send, "account", cJSON_CreateString(imei)); + cJSON_AddItemToObject(json_send, "name", cJSON_CreateString(imei)); + cJSON_AddItemToObject(json_send, "password", cJSON_CreateString(imei)); cJSON_AddItemToObject(json_send, "gender", cJSON_CreateNumber(3)); cJSON_AddItemToObject(json_send, "birthday", cJSON_CreateString("2000-10-01")); cJSON_AddItemToObject(json_send, "height", cJSON_CreateNumber(180)); 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 05976f3c..df0d77a5 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 @@ -258,6 +258,7 @@ void mmi_health_measure_timed_info_nv_read(void) if(nv_data_length != UI_NV_Read_Req(NV_SECTION_UI_HEALTH_MEASURE, 0, nv_data_length, (uint8_t *)&s_health_measure_timed_data)) { HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: nv read fail\n", __FUNCTION__, __LINE__); + _lv_memset_00(&s_health_measure_timed_data, nv_data_length); } //_lv_ll_clear(&s_health_measure_timed_ll); @@ -554,9 +555,9 @@ bool mmi_health_measure_spo2_data_ui_get(uint16_t * spo2_value) return true; } -void mmi_health_measure_send_heart(void) +void mmi_health_measure_send_heart(void * param) { - uint16_t heart_value = s_health_measure_run_data.heart_value; + uint16_t heart_value = ((mmi_health_measure_msg_param_t *)param)->heart_value; if(0 == heart_value) { @@ -572,9 +573,9 @@ void mmi_health_measure_send_heart(void) mmi_health_info_set(&health_info); } -void mmi_health_measure_send_temperature(void) +void mmi_health_measure_send_temperature(void * param) { - float body_value = s_health_measure_run_data.body_value; + float body_value = ((mmi_health_measure_msg_param_t *)param)->body_value; if(0.0 == body_value) { @@ -590,10 +591,10 @@ void mmi_health_measure_send_temperature(void) mmi_health_info_set(&health_info); } -void mmi_health_measure_send_blood(void) +void mmi_health_measure_send_blood(void * param) { - uint16_t blood_high_value = s_health_measure_run_data.blood_high_value; - uint16_t blood_low_value = s_health_measure_run_data.blood_low_value; + 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) { @@ -610,9 +611,9 @@ void mmi_health_measure_send_blood(void) mmi_health_info_set(&health_info); } -void mmi_health_measure_send_spo2(void) +void mmi_health_measure_send_spo2(void * param) { - uint16_t spo2_value = s_health_measure_run_data.spo2_value; + uint16_t spo2_value = ((mmi_health_measure_msg_param_t *)param)->spo2_value; if(0 == spo2_value) { @@ -649,6 +650,8 @@ void mmi_health_measure_process_finish(void) mmi_health_measure_process_timer_stop(); mmi_health_measure_timed_list_node_remove(s_health_measure_run_data.measure_type); + mmi_health_measure_msg_param_t * param = NULL; + switch(s_health_measure_run_data.measure_type) { case MMI_HEALTH_MEASURE_HEART: @@ -656,7 +659,15 @@ void mmi_health_measure_process_finish(void) #ifdef __MMI_CUSTOM_HENGAI_TCMS__ mmi_hengai_tcms_action(); #endif - mmi_health_measure_send_heart(); + + param = Hal_Mem_Alloc(sizeof(mmi_health_measure_msg_param_t)); + if(NULL != param) + { + Hal_Mem_Set(param, 0x0, sizeof(mmi_health_measure_msg_param_t)); + param->heart_value = s_health_measure_run_data.heart_value; + + mmi_health_measure_task_msg_send(MMI_HEALTH_MEASURE_MSG_HEART_FINISHED, param); + } break; case MMI_HEALTH_MEASURE_TEMPERATURE: @@ -664,19 +675,37 @@ void mmi_health_measure_process_finish(void) #ifdef __MMI_CUSTOM_HENGAI_TCMS__ mmi_hengai_tcms_action(); #endif - mmi_health_measure_send_temperature(); + + param = Hal_Mem_Alloc(sizeof(mmi_health_measure_msg_param_t)); + if(NULL != param) + { + Hal_Mem_Set(param, 0x0, sizeof(mmi_health_measure_msg_param_t)); + param->body_value = s_health_measure_run_data.body_value; + + mmi_health_measure_task_msg_send(MMI_HEALTH_MEASURE_MSG_TEMPERATURE_FINISHED, param); + } break; case MMI_HEALTH_MEASURE_BLOOD: + + #ifdef __MMI_CUSTOM_HENGAI_HEALTH__ + mmi_health_measure_task_msg_send(MMI_HEALTH_MEASURE_MSG_BLOOD_FINISHED, NULL); + #else mmi_hsensor_close(); #ifdef __MMI_CUSTOM_HENGAI_TCMS__ mmi_hengai_tcms_action(); #endif - #ifdef __MMI_CUSTOM_HENGAI_HEALTH__ - mmi_hengai_bp_back_measure_finish(); - #else - mmi_health_measure_send_blood(); - #endif + + param = Hal_Mem_Alloc(sizeof(mmi_health_measure_msg_param_t)); + if(NULL != param) + { + Hal_Mem_Set(param, 0x0, sizeof(mmi_health_measure_msg_param_t)); + param->blood_high_value = s_health_measure_run_data.blood_high_value; + param->blood_low_value = s_health_measure_run_data.blood_low_value; + + mmi_health_measure_task_msg_send(MMI_HEALTH_MEASURE_MSG_BLOOD_FINISHED, param); + } + #endif break; case MMI_HEALTH_MEASURE_SPO2: @@ -684,7 +713,15 @@ void mmi_health_measure_process_finish(void) #ifdef __MMI_CUSTOM_HENGAI_TCMS__ mmi_hengai_tcms_action(); #endif - mmi_health_measure_send_spo2(); + + param = Hal_Mem_Alloc(sizeof(mmi_health_measure_msg_param_t)); + if(NULL != param) + { + Hal_Mem_Set(param, 0x0, sizeof(mmi_health_measure_msg_param_t)); + param->spo2_value = s_health_measure_run_data.spo2_value; + + mmi_health_measure_task_msg_send(MMI_HEALTH_MEASURE_MSG_SPO2_FINISHED, param); + } break; default: @@ -915,5 +952,113 @@ void mmi_health_measure_factory_mode_clean(void) mmi_health_measure_interrupt(); } } + + + +#define MMI_HEALTH_MEASURE_TASK_PRIORITY 221 +#define MMI_HEALTH_MEASURE_TASK_STACK_SIZE (8 * 1024) +#define MMI_HEALTH_MEASURE_MSG_QUEUE_SIZE (16) + +TASK_HANDLE * s_health_measure_task_id = NULL; + + +void mmi_health_measure_task_msg_send(MMI_HEALTH_MEASURE_MSG_ID_E msg_id, void * param) +{ + if(NULL == s_health_measure_task_id) + { + HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: task not exist\n",__FUNCTION__,__LINE__); + if(NULL != param) + Hal_Mem_Free(param); + + return; + } + + if((MMI_HEALTH_MEASURE_MSG_QUEUE_SIZE - 1) < Hal_Get_Message_Count(s_health_measure_task_id)) + { + HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: msg queue full\n",__FUNCTION__,__LINE__); + if(NULL != param) + Hal_Mem_Free(param); + + return; + } + + HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: msg_id=%d\n",__FUNCTION__,__LINE__, msg_id); + mmi_health_measure_task_msg_t * msg = Hal_Mem_Alloc(sizeof(mmi_health_measure_task_msg_t)); + msg->msg_id = msg_id; + msg->msg_param = param; + + Hal_Send_Message((TASK_ID)s_health_measure_task_id, (void *)msg); +} + +static void mmi_health_measure_task_handle(void * param) +{ + mmi_health_measure_task_msg_t * msg = (mmi_health_measure_task_msg_t *)param; + MMI_HEALTH_MEASURE_MSG_ID_E msg_id = msg->msg_id; + void * msg_param = msg->msg_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_FINISHED: + mmi_health_measure_send_heart(msg_param); + break; + + case MMI_HEALTH_MEASURE_MSG_TEMPERATURE_FINISHED: + mmi_health_measure_send_temperature(msg_param); + break; + + case MMI_HEALTH_MEASURE_MSG_BLOOD_FINISHED: + #ifdef __MMI_CUSTOM_HENGAI_HEALTH__ + mmi_hengai_bp_back_measure_finish(); + mmi_hsensor_close(); + #ifdef __MMI_CUSTOM_HENGAI_TCMS__ + mmi_hengai_tcms_action(); + #endif + + #else + mmi_health_measure_send_blood(msg_param); + #endif + break; + + case MMI_HEALTH_MEASURE_MSG_SPO2_FINISHED: + mmi_health_measure_send_spo2(msg_param); + break; + + default: + break; + } +} + +static void mmi_health_measure_task_entry(void * para) +{ + while(NULL == s_health_measure_task_id) + { + uos_sleep(10); + } + + while(1) + { + mmi_health_measure_task_msg_t * msg = (mmi_health_measure_task_msg_t *)Hal_Receive_Message((TASK_ID)s_health_measure_task_id, TRUE); + + mmi_health_measure_task_handle(msg); + + Hal_Mem_Free(msg->msg_param); + Hal_Mem_Free(msg); + } +} + +void mmi_health_measure_task_init(void) +{ + s_health_measure_task_id = uos_create_task(mmi_health_measure_task_entry, + NULL, + MMI_HEALTH_MEASURE_MSG_QUEUE_SIZE, + MMI_HEALTH_MEASURE_TASK_STACK_SIZE, + MMI_HEALTH_MEASURE_TASK_PRIORITY, + "mmi_health_measure_task"); + + HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: task_id=0x%x\n",__FUNCTION__,__LINE__, s_health_measure_task_id); +} + + #endif 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 bad090d6..791ec0df 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 @@ -108,6 +108,40 @@ bool mmi_health_measure_blood_timed_action(bool direct_trigger, uint32_t cur_tim bool mmi_health_measure_spo2_timed_action(bool direct_trigger, uint32_t cur_time_stamp); + +typedef enum +{ + MMI_HEALTH_MEASURE_MSG_ID_START, + + MMI_HEALTH_MEASURE_MSG_HEART_FINISHED, + MMI_HEALTH_MEASURE_MSG_TEMPERATURE_FINISHED, + MMI_HEALTH_MEASURE_MSG_BLOOD_FINISHED, + MMI_HEALTH_MEASURE_MSG_SPO2_FINISHED, + + MMI_HEALTH_MEASURE_MSG_ID_END +}MMI_HEALTH_MEASURE_MSG_ID_E; + +typedef struct +{ + uint16_t msg_id; + void * msg_param; +}mmi_health_measure_task_msg_t; + +typedef struct +{ + uint16_t heart_value; + uint16_t blood_high_value; + uint16_t blood_low_value; + uint16_t spo2_value; + float wrist_value; + float body_value; +}mmi_health_measure_msg_param_t; + + +void mmi_health_measure_task_msg_send(MMI_HEALTH_MEASURE_MSG_ID_E msg_id, void * param); +void mmi_health_measure_task_init(void); + + #endif #ifdef __cplusplus diff --git a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.c b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.c index 84de60e5..4f798567 100644 --- a/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.c +++ b/2.sdk/sdk/gui/lv_watch/mmi_protocol/mmi_protocol_api.c @@ -255,6 +255,7 @@ void mmi_protocol_watch_timed_mission_action(void) s_watch_timed_weather_time_stamp = cur_time_stamp; #ifdef __MMI_ZHSX_SUPPORT_HEALTH_SENSOR__ + mmi_health_measure_task_init(); mmi_health_measure_timed_info_nv_read(); mmi_health_measure_heart_timed_action(true, cur_time_stamp); mmi_health_measure_temperature_timed_action(true, cur_time_stamp);