优化心率计算,添加UI运动识别与底层对接 587/4
authorpenglei <1624952103@qq.com>
Fri, 26 Jul 2024 02:07:25 +0000 (10:07 +0800)
committerpenglei <1624952103@qq.com>
Fri, 26 Jul 2024 02:07:25 +0000 (10:07 +0800)
code/sdk/application/wearable/fd230app/nativeui/motionrecognition/src/MotionRecognitionPresenter.cpp
code/sdk/drivers/peripheral/ppg/hx3695/hx3695.c

index de578f7..4205998 100644 (file)
@@ -1,9 +1,9 @@
 /*
  * @Author: luozheng 1732036298@qq.com
  * @Date: 2024-03-28 14:17:43
- * @LastEditors: luozheng 1732036298@qq.com
- * @LastEditTime: 2024-07-24 18:16:48
- * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/language/src/MotionRecognitionPresenter.cpp
+ * @LastEditors: penglei 1624952103@qq.com
+ * @LastEditTime: 2024-07-26 10:02:53
+ * @FilePath: /FD230/code/sdk/application/wearable/fd230app/nativeui/motionrecognition/src/MotionRecognitionPresenter.cpp
  */
 #include "AppViewIDs.h"
 #include "NativeAbility.h"
@@ -13,6 +13,7 @@
 #include <custom_utils.h>
 #include "ConfigModel.h"
 #include <UiConfig.h>
+#include "cywee_service.h"
 
 namespace OHOS
 {
@@ -98,10 +99,12 @@ namespace OHOS
         {
         case UICheckBox::SELECTED:
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MotionRecognition is enable!");
+            do_cywee_service_check_msg(CYWEE_SERVICE_CMD_OPEN_AR_ALERT,NULL);
             ConfigModel::GetInstance()->SetMotionRecognition(true);
             break;
         case UICheckBox::UNSELECTED:
             WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "MotionRecognition is disable!");
+            do_cywee_service_check_msg(CYWEE_SERVICE_CMD_CLOSE_AR_ALERT,NULL);
             ConfigModel::GetInstance()->SetMotionRecognition(false);
             break;
         default:
index e6647d4..ba94083 100644 (file)
@@ -2671,12 +2671,13 @@ static uint8_t hrs_num = 0;
 static int32_t sum_hrs = 0;\r
 static int32_t hrs_data[7] = {0};\r
 static uint8_t left = 0;\r
-static uint8_t right = 0;\r
-static int32_t min_hrs = 0;\r
-static int32_t max_hrs = 0;\r
+static uint8_t right = -1;\r
 \r
 static void get_avg_hrs(int32_t hrs)\r
 {\r
+    int32_t min_hrs = 0;\r
+    int32_t max_hrs = 0;\r
+    int32_t avg_hrs = 0;\r
     if(hrs_num == 7)\r
     {\r
         sum_hrs -= hrs_data[left];\r
@@ -2685,31 +2686,47 @@ static void get_avg_hrs(int32_t hrs)
         left = left % 7;\r
         hrs_num--;\r
     }\r
-    if(hrs_num == 0)\r
-    {\r
-        min_hrs = hrs;\r
-        max_hrs = hrs;\r
-    }\r
-    else\r
-    {\r
-      if (min_hrs > hrs)\r
-          min_hrs = hrs;\r
-      if (max_hrs < hrs)\r
-          max_hrs = hrs;\r
-    }\r
+\r
     hrs_num++;\r
     right++;\r
     right = right % 7;\r
+\r
     hrs_data[right] = hrs;\r
     sum_hrs += hrs_data[right];   \r
-    if(hrs_num > 0)\r
+\r
+    if(hrs_num > 2)\r
     {\r
-        if(hrs_num > 2)\r
-            hrs = (sum_hrs - max_hrs - min_hrs) / (hrs_num - 2);\r
-        else\r
-            hrs = sum_hrs / hrs_num;\r
+        min_hrs = hrs_data[0];\r
+        max_hrs = hrs_data[0];\r
+        for (int i = 0;i < hrs_num; i++)\r
+        {\r
+            if (hrs_data[i] < min_hrs)\r
+                min_hrs = hrs_data[i];\r
+            if (hrs_data[i] > max_hrs)\r
+                max_hrs = hrs_data[i];\r
+        }\r
+        avg_hrs = (sum_hrs - max_hrs - min_hrs) / (hrs_num - 2);\r
+    }\r
+\r
+    hx3695_msg_callback_t func =  hx3695_get_send_msg_callback_func();\r
+    if(func != NULL)\r
+    {\r
+      hrsresult.lastesthrs = avg_hrs;\r
+      func(HX3695_MSG_TYPE_WEARSTAT_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
+      func(HX3695_MSG_TYPE_HRS_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
+      if(uapi_get_cywee_static_state())\r
+      {\r
+          func(HX3695_MSG_TYPE_STATIC_HRS_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
+      }\r
+    }\r
+    \r
+    if(hrs_mode_state)\r
+    {\r
+        cywee_data[0] = hrsresult.lastesthrs;\r
+        cywee_data[1] = hrsresult.wearstatus;\r
+\r
+        do_cywee_service_check_msg(CYWEE_SERVICE_CMD_HRS_WEARSTATUS_CHANGE,cywee_data);\r
     }\r
-    PRINT("sum_hrs[%d], max_hrs[%d], min_hrs[%d], avg_hrs[%d] \n",sum_hrs,max_hrs,min_hrs,hrs);  \r
 }\r
 \r
 \r
@@ -2850,19 +2867,12 @@ void hx3695_hrs_ppg_Int_handle(void)
     hrsresult.hr_living = alg_results.living_status;\r
     hrsresult.hr_living_qu = alg_results.hr_result_qual;\r
     hrsresult.hr_living_std = alg_results.hr_result_std;\r
+    hrsresult.wearstatus = hrs_wear_status;\r
     if(hrsresult.lastesthrs > 50)\r
-                   get_avg_hrs((hrsresult.lastesthrs));\r
+                   get_avg_hrs(hrsresult.lastesthrs);\r
     //PRINT("hx3695 data_cnt: %d,  hr_living: %d, hr_living_qu: %d, hr_living_std: %d, hr_result:%d \r\n",\r
                //alg_results.data_cnt,  hrsresult.hr_living, hrsresult.hr_living_qu, hrsresult.hr_living_std, hrsresult.lastesthrs);\r
 \r
-    if(hrs_mode_state)\r
-    {\r
-        cywee_data[0] = hrsresult.lastesthrs;\r
-        cywee_data[1] = hrs_wear_status;\r
-\r
-        do_cywee_service_check_msg(CYWEE_SERVICE_CMD_HRS_WEARSTATUS_CHANGE,cywee_data);\r
-    }\r
-\r
        if(hrs_wear_status == MSG_HRS_WEAR && hrsresult.hr_living == MSG_LIVING_TRUE)\r
     {\r
 //             app_hr_reset_stop_timer();\r
@@ -2934,17 +2944,7 @@ void hx3695_hrs_ppg_Int_handle(void)
     }\r
     ble_rawdata_send_handler();\r
 #endif\r
-    hx3695_msg_callback_t func =  hx3695_get_send_msg_callback_func();\r
-    if(func != NULL)\r
-    {\r
-      hrsresult.wearstatus = hrs_wear_status;\r
-      func(HX3695_MSG_TYPE_WEARSTAT_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
-      func(HX3695_MSG_TYPE_HRS_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
-      if(uapi_get_cywee_static_state())\r
-      {\r
-          func(HX3695_MSG_TYPE_STATIC_HRS_UPDATE,&hrsresult,sizeof(FT_CUSTOM_RESULTS_t));\r
-      }\r
-    }\r
+\r
 \r
 #if HANKCREAT_APK\r
     {\r