k18 micro checkup measure once
author@CHENG <2393524978@qq.com>
Thu, 9 Jan 2025 11:58:42 +0000 (19:58 +0800)
committer@CHENG <2393524978@qq.com>
Thu, 9 Jan 2025 11:58:42 +0000 (19:58 +0800)
2.sdk/sdk/gui/lv_drivers/indev/FR8012HAQ/fr8012haq.c
2.sdk/sdk/gui/lv_watch/lv_apps/custom_function/heng_ai_blood_pressure.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

index 6ff46fa..58a184b 100644 (file)
@@ -1267,7 +1267,7 @@ int  *fr8012haq_blood_data_get(int *len)
 // 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)
+    if(s_FR8012HAQ_blood_data_len <= reset_len)
         s_FR8012HAQ_blood_data_len = 0;
     else
         s_FR8012HAQ_blood_data_len -= reset_len;
index 71d59c9..6b51298 100644 (file)
@@ -2772,12 +2772,12 @@ 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) // 3s
-//#define MICRO_PPG_DATA_SINGLE_SEND_COUNT (MMI_HENGAI_BP_RAW_DATA_SAMPLE_RATE * MICRO_CHECKUP_COUNT_INTERVAL)
+#define MICRO_CHECKUP_COUNT_INTERVAL (MMI_HENGAI_BP_RAW_DATA_LEN / MMI_HENGAI_BP_RAW_DATA_SAMPLE_RATE)
 #define MICRO_PPG_DATA_BUFFER_LEN (MMI_HENGAI_BP_RAW_DATA_LEN * sizeof(int)) // ((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 unsigned int s_hengai_micro_checkup_count = 0;
 
 static void mmi_hengai_micro_health_checkup_data_send(void)
 {
@@ -2839,12 +2839,12 @@ static void mmi_hengai_micro_health_checkup_data_get(void)
        if(NULL != temp_ptr)
        {
                _lv_memcpy(s_hengai_ppg_data_ptr, temp_ptr, MICRO_PPG_DATA_BUFFER_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)
        {
@@ -2852,7 +2852,6 @@ void mmi_hengai_micro_health_checkup_process(void)
                mmi_hengai_micro_health_checkup_data_get();
                mmi_hengai_micro_health_checkup_data_send();
        }
-*/
 }
 
 void mmi_hengai_micro_health_checkup_stop(void)
@@ -2868,6 +2867,7 @@ void mmi_hengai_micro_health_checkup_stop(void)
                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)
@@ -2880,10 +2880,21 @@ void mmi_hengai_micro_health_checkup_start(void)
                s_hengai_ppg_data_ptr = NULL;
        }
        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_server_stop_micro_checkup();
+       }
+       else
+       {
+               mmi_health_measure_server_start_micro_checkup();
+       }
+
+#if 0
        if(0 == state_value)
        {
                //mmi_health_measure_interrupt();
@@ -2894,6 +2905,7 @@ void mmi_hengai_micro_health_checkup_set(uint8_t state_value)
                //mmi_health_measure_server_set_action(MMI_HEALTH_MEASURE_MICRO_CHECKUP, 1);
                mmi_health_measure_server_set_action(MMI_HEALTH_MEASURE_MICRO_CHECKUP, 3600);
        }
+#endif
 }
 #endif
 
index 2560970..0e3ac62 100644 (file)
@@ -528,6 +528,36 @@ bool mmi_health_measure_micro_checkup_timed_action(bool direct_trigger, uint32_t
 
        return false;
 }
+
+void mmi_health_measure_server_stop_micro_checkup(void)
+{
+       if(MMI_HEALTH_MEASURE_STATE_APP != s_health_measure_run_data.measure_state)
+       {
+               HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: not app measure\n", __FUNCTION__, __LINE__);
+               return;
+       }
+
+       if(MMI_HEALTH_MEASURE_MICRO_CHECKUP != s_health_measure_run_data.measure_type)
+       {
+               HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: not measure micro checkup\n", __FUNCTION__, __LINE__);
+               return;
+       }
+
+       mmi_health_measure_process_finish();
+}
+
+void mmi_health_measure_server_start_micro_checkup(void)
+{
+       if((MMI_HEALTH_MEASURE_STATE_APP == s_health_measure_run_data.measure_state)
+               && (MMI_HEALTH_MEASURE_MICRO_CHECKUP == s_health_measure_run_data.measure_type)
+               )
+       {
+               HEALTH_MEASURE_DEBUG_PRINTF("[@CHENG_DEBUG][%s][%d]: measure micro checkup running\n", __FUNCTION__, __LINE__);
+               return;
+       }
+
+       mmi_health_measure_server_set_action(MMI_HEALTH_MEASURE_MICRO_CHECKUP, 1);
+}
 #endif
 
 bool mmi_health_measure_timed_mission_action(uint32_t cur_time_stamp)
@@ -1007,7 +1037,7 @@ static void mmi_health_measure_start(MMI_HEALTH_MEASURE_TYPE_E measure_type, uin
 
                #if defined(__MMI_CUSTOM_HENGAI_MICRO_HEALTH_CHECKUP__)
                        case MMI_HEALTH_MEASURE_MICRO_CHECKUP:
-                               s_measure_time_total = 40 / MMI_HEALTH_MEASURE_CYCLE_DURATION; // 0xffff;
+                               s_measure_time_total = 0xffff; // 40 / MMI_HEALTH_MEASURE_CYCLE_DURATION; // 
                                mmi_hsensor_blood_open();
                                mmi_hengai_micro_health_checkup_start();
                                break;
index 078f46a..e576786 100644 (file)
@@ -126,6 +126,10 @@ void mmi_health_measure_timed_list_clear(void);
 bool mmi_health_measure_timed_mission_action(uint32_t cur_time_stamp);
 bool mmi_health_measure_first_mission_action(uint32_t cur_time_stamp);
 
+#if defined(__MMI_CUSTOM_HENGAI_MICRO_HEALTH_CHECKUP__)
+void mmi_health_measure_server_stop_micro_checkup(void);
+void mmi_health_measure_server_start_micro_checkup(void);
+#endif
 
 
 typedef enum