增加校准成功与失败逻辑
authorxue <2144439972@qq.com>
Tue, 8 Jul 2025 09:17:12 +0000 (17:17 +0800)
committerxue <2144439972@qq.com>
Tue, 8 Jul 2025 09:17:12 +0000 (17:17 +0800)
code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/BPMainPresenter.cpp
code/sdk/application/wearable/fd230app/nativeui/bloodpressure/src/BPModel.cpp

index 07bbc91..b807cc2 100644 (file)
@@ -126,8 +126,7 @@ namespace OHOS
         std::string viewId = view.GetViewId();
 
         std::map<std::string, std::pair<int16_t, int16_t>> viewIdMap = {
-            {MINDCHECKBUTTON, {BPCALIBRATIONMINDVIEW, BPVALUEVIEW}},              // 提醒界面到血压值界面
-            {ERRORCHECKBUTTON, {BPCALIBRATIONERRORVIEW, BPUNDERCALIBRATIONVIEW}}, // 失败界面到校准界面
+            {MINDCHECKBUTTON, {BPCALIBRATIONMINDVIEW, BPVALUEVIEW}}, // 提醒界面到血压值界面
 
         };
         auto it = viewIdMap.find(viewId);
@@ -151,6 +150,19 @@ namespace OHOS
             BPModel::GetInstance()->BP_Control(BPState::BP_CALIBRATING_SECONDTIME);
             BPMainView::GetInstance()->ChangeView(BPLASTCALIBRATIONTIME, BPSECUNDERCALIBRATIONVIEW);
         }
+        else if (strcmp(view.GetViewId(), ERRORCHECKBUTTON) == 0) // 失败界面到校准界面
+        {
+            if (BPModel:::GetInstance()->GetCalibrationFlag() == 1) // 第一次校准失败
+            {
+                BPModel::GetInstance()->BP_Control(BPState::BP_CALIBRATING_FIRSTTIME);
+                BPMainView::GetInstance()->ChangeView(BPCALIBRATIONERRORVIEW, BPUNDERCALIBRATIONVIEW);
+            }
+            else if (BPModel:::GetInstance()->GetCalibrationFlag() == 3) // 第二次校准失败
+            {
+                BPModel::GetInstance()->BP_Control(BPState::BP_CALIBRATING_SECONDTIME);
+                BPMainView::GetInstance()->ChangeView(BPCALIBRATIONERRORVIEW, BPSECUNDERCALIBRATIONVIEW);
+            }
+        }
         else if (strcmp(view.GetViewId(), VALUECHECKBUTTON) == 0) // 血压值界面到结果分析界面
         {
             BPModel::GetInstance()->BP_Control(BPState::BP_CALIBRATING_ANGLYSIS);
@@ -163,13 +175,13 @@ namespace OHOS
                 BPMainView::GetInstance()->ChangeView(BPCALIBRATIONPASSVIEW, BPLASTCALIBRATIONTIME);
                 passflag = 1;
             }
-            else //全部校准成功
+            else // 全部校准成功
             {
                 if (ConfigModel::GetInstance()->GetisFirstTimeStart() == true)
                 {
                     ConfigModel::GetInstance()->SetisFirstTimeStart(false);
                     NativeAbility::GetInstance().SetDefaultSliceId(VIEW_MAIN);
-                    NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN);//如果是第一次绑定进到主界面
+                    NativeAbility::GetInstance().ChangeSlice(VIEW_MAIN); // 如果是第一次绑定进到主界面
                 }
                 else
                 {
index 47c939d..9ffb254 100644 (file)
@@ -443,6 +443,10 @@ namespace OHOS
   // 校准分析状态处理
   void BPModel::BPControlCalibratingAnalysis()
   {
+    BP_StartTimer();
+    ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 后期 周期被动状态 需要做区别
+    if (Time != BP_ANLYSISI_TIME_MAX)
+      Time = BP_ANLYSISI_TIME_MAX; // 重置时间
   }
   // 压力测量状态处理
   void BPModel::BPControlStressMeasure()
@@ -462,6 +466,10 @@ namespace OHOS
   // 压力分析状态处理
   void BPModel::BPControlStressAnalysis()
   {
+    BP_StartTimer();
+    ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 后期 周期被动状态 需要做区别
+    if (Time != BP_ANLYSISI_TIME_MAX)
+      Time = BP_ANLYSISI_TIME_MAX; // 重置时间
   }
   // 疲劳度测量状态处理
   void BPModel::BPControlFatigueMeasure()
@@ -481,6 +489,10 @@ namespace OHOS
   // 疲劳度分析状态处理
   void BPModel::BPControlFatigueAnalysis()
   {
+    BP_StartTimer();
+    ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 后期 周期被动状态 需要做区别
+    if (Time != BP_ANLYSISI_TIME_MAX)
+      Time = BP_ANLYSISI_TIME_MAX; // 重置时间
   }
   // ECG测量状态处理
   void BPModel::BPControlECGMeasure()
@@ -500,6 +512,10 @@ namespace OHOS
   // ECG分析状态处理
   void BPModel::BPControlECGAnalysis()
   {
+    BP_StartTimer();
+    ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 后期 周期被动状态 需要做区别
+    if (Time != BP_ANLYSISI_TIME_MAX)
+      Time = BP_ANLYSISI_TIME_MAX; // 重置时间
   }
   // ECG提醒状态处理
   void BPModel::BPControlECGRemind()
@@ -514,11 +530,9 @@ namespace OHOS
   {
     BP_StartTimer();
     ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 后期 周期被动状态 需要做区别
-
     if (Time != BP_CHECK_TIME_MAX)
       Time = BP_CHECK_TIME_MAX; // 重置时间
   }
-
   // 情绪测量结束状态处理
   void BPModel::BPControlEMOMeasureEnd()
   {
@@ -527,6 +541,10 @@ namespace OHOS
   // 情绪分析状态处理
   void BPModel::BPControlEMOAnalysis()
   {
+    BP_StartTimer();
+    ScreenAlwaysOnCtr(OPEN_SCREEN_ALWAYS_ON); // 后期 周期被动状态 需要做区别
+    if (Time != BP_ANLYSISI_TIME_MAX)
+      Time = BP_ANLYSISI_TIME_MAX; // 重置时间
   }
   /////////////////////////////////////////////////////////
   // 机器校准收缩压与舒张压的数值
@@ -688,24 +706,44 @@ namespace OHOS
                                    : BPSECUNDERCALIBRATIONVIEW,
                                BPCALIBRATIONMINDVIEW);
       }
-      LastCalibrationTime = BPModel::GetCurrentTimeStr(); // 获取校准完成时的时间
       BP_STOP();
       BP_SetState(BPState::BP_IDLE);
       CalibrationFlag++;
       return;
     }
-    // 处理血压分析状态
+    // 处理校准分析状态
     if (current_state == BPState::BP_CALIBRATING_ANGLYSIS)
     {
       if (bpMainView)
       {
-        bpMainView->ChangeView(BPRESULTANALYSISVIEW, BPCALIBRATIONPASSVIEW);
+        if (1) // 校准结果判断,后期调用接口
+        {
+          bpMainView->ChangeView(BPRESULTANALYSISVIEW, BPCALIBRATIONPASSVIEW);
+          int configValue = static_cast<int>(GetCurrentTime());
+          if (CalibrationFlag == 1) // 第一次校准成功
+          {
+            CalibrationFlag++;
+#if defined(BOARD_W9)
+           ConfigModel::GetInstance()->set_configData_Int(ConfigModel::CONFIGMODEL_ITEM_BP_CALIBRATION_FIRST_TIME, configValue);
+#endif
+          }
+
+          else //第二次校准成功,校准完成
+          {
+#if defined(BOARD_W9)
+           ConfigModel::GetInstance()->set_configData_Int(ConfigModel::CONFIGMODEL_ITEM_BP_CALIBRATION_SECOND_TIME, configValue);
+#endif
+            CalibrationFlag = 0;
+          }
+        }
+
+        else
+        {
+          bpMainView->ChangeView(BPRESULTANALYSISVIEW, BPCALIBRATIONERRORVIEW);//失败只跳转界面,不做任何处理
+        }
       }
       BP_SetState(BPState::BP_IDLE);
-      if (CalibrationFlag == 1)
-        CalibrationFlag++;
-      else
-        CalibrationFlag = 0;
+
       return;
     }
     // 处理血压检测状态