增加runtime训练状态管理
authorCaisking <3449750381@qq.com>
Fri, 26 Jul 2024 09:33:07 +0000 (17:33 +0800)
committerCaisking <3449750381@qq.com>
Fri, 26 Jul 2024 09:33:07 +0000 (17:33 +0800)
code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp

index d93cb4b..12d8780 100644 (file)
@@ -43,6 +43,7 @@
 #include <vector>
 #include <queue>
 #include <numeric>
+#include "custom_runtime.h"
 #include "traingrecord/include/TraingRecordModel.h"
 
 #define MAX_FILE_PATH_LENGTH 128
@@ -404,15 +405,14 @@ namespace OHOS
     {
         // 不同的运动类型解析不同的数据
         // 通用数据
-
         sportdata->steps = cyweeInfo->steps;
-        sportdata->distance = cyweeInfo->distance;
+        sportdata->distance = cyweeInfo->distance; // 只赋值一次
         sportdata->calories = cyweeInfo->calories;
         sportdata->cdc = cyweeInfo->step_frequency;
         sportdata->std = cyweeInfo->step_length;
         sportdata->pc = cyweeInfo->pace;
-        sportdata->distance = cyweeInfo->distance;
-        /*最慢配速*/
+
+        // 更新最慢配速
         if (sportdata->spc < sportdata->pc)
         {
             sportdata->spc = sportdata->pc;
@@ -420,42 +420,25 @@ namespace OHOS
 
         sportdata->heart = cyweeInfo->hrs;
         SetIntensity(sportdata->heart); // 设置训练强度
-        if (cyweeInfo->hrs > 50)
+
+        // 计算平均心率
+        if (sportdata->heart > 50)
         {
-            // sportdata->heart = CalculateFilteredHeartRate(cyweeInfo->hrs);   // 处理显示心率
-            // sportdata->avgheart = CalculateAverageHeartRate(cyweeInfo->hrs); // 处理正常的平均心率
             sportdata->avgheart = Averageheartrate(sportdata->heart);
         }
 
-        // 达到最高心率进行心率提醒弹窗
-        if (sportdata->heart >= ConfigModel::GetInstance()->get_configData_int(ConfigModel::CONFIGMODEL_ITEM_TRAINING_HEART_MAX))
+        // 心率提醒
+        int maxHeartRate = ConfigModel::GetInstance()->get_configData_int(ConfigModel::CONFIGMODEL_ITEM_TRAINING_HEART_MAX);
+        if (sportdata->heart >= maxHeartRate)
         {
             uapi_set_screen_on_api();                             // 亮屏检测
             custom_VibratorFunc(VibratorType::VIBRATOR_TYPE_TWO); // 震动提醒
             TraingCardView::GetInstance()->SetPopupViewStatus(HeartPopup, true);
         }
-#if 0
-        // sportdata->duration = cyweeInfo->duration;
-        WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "normal sportdata->calories[%d],sportdata->heart[%d] \r\n", sportdata->calories, sportdata->heart);
-        switch (type)
-        {
-        case ExerciseClass::OUTDOOR:
-        case ExerciseClass::INDOOR:
-            sportdata->distance = cyweeInfo->distance;
-            sportdata->steps = cyweeInfo->steps;
-            WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "indoor sportdata->distance[%d],sportdata->steps[%d] \r\n", sportdata->distance, sportdata->steps);
-            break;
-        case ExerciseClass::FREE_TRAINING:
-            break;
-        default:
-            break;
-        }
-#endif
-        /* -------------------------------------------------------------------------- */
-        // 首先需要判断有没有设置训练目标,并且保障弹窗只出现一次
-        if (sportdata->tag && (!Gettagstuats))
+
+        // 训练目标检查
+        if (sportdata->tag && !Gettagstuats)
         {
-            // 根据设置的训练目标类型去对应相对的数据
             int currentdata = GetSportTagData();
             if (currentdata >= sportdata->tag)
             {
@@ -591,6 +574,9 @@ namespace OHOS
         // 增加标志位互斥保障"开始"和"结束"的唯一性操作
         if (currentState == ExerciseState::Start && !Startstate)
         {
+            // 设置训练 runtime 为 1 训练中
+            uapi_dev_runtime_set_train_status(1);
+
             ResetSharedTrainingData(); // 重置共享训练数据
 
             printf("SetTimestamp::time:%u  \r\n", time);
@@ -616,6 +602,9 @@ namespace OHOS
         }
         else if (currentState == ExerciseState::End && !Endstate)
         {
+            // 设置训练 runtime 为 0 训练结束
+            uapi_dev_runtime_set_train_status(0);
+
             sportdata->endtime = time;
 
             SetEndTime();