gengxin
author@CHENG <2393524978@qq.com>
Thu, 1 Feb 2024 06:27:25 +0000 (14:27 +0800)
committer@CHENG <2393524978@qq.com>
Thu, 1 Feb 2024 06:27:25 +0000 (14:27 +0800)
2.sdk/project/Z5_HA_K18/gui/lv_watch/mmi_default_CUSTOM.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_http_protocol.c
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_api.c

index 7df4716..3dd91c1 100644 (file)
@@ -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
 
index 53e001d..ce15f5a 100644 (file)
@@ -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)
index 8b2ce74..c686bd5 100644 (file)
@@ -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));
index 05976f3..df0d77a 100644 (file)
@@ -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
 
index bad090d..791ec0d 100644 (file)
@@ -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
index 84de60e..4f79856 100644 (file)
@@ -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);