校验运动数据 1988/1 1988/head
authorCaisking <Casiking@zhihuishixun.com>
Mon, 21 Jul 2025 06:02:56 +0000 (14:02 +0800)
committerCaisking <Casiking@zhihuishixun.com>
Mon, 21 Jul 2025 06:02:56 +0000 (14:02 +0800)
code/sdk/application/wearable/fd230/nativeapp/nativeui/traing/include/TraingModel.h
code/sdk/application/wearable/fd230/nativeapp/nativeui/traing/src/TraingModel.cpp

index db9ddb5..e0a35bc 100644 (file)
 #include "traing/Training_UiConfig.h"
 #include "ui_resource_string.h"
 
-// #include "cywee_hal.h"
-// #include "cywee_service.h"
+#ifdef SUPPORT_CYWEE_SERVICE
+#include "cywee_service.h"
+#include "cywee_hal.h"
+#endif
 
 #include <cmath>
 #include <iostream>
@@ -98,7 +100,6 @@ int write_Trainingdata_data(Trainingdata data);
 void ble_training_init(void);
 #endif
 
-
 #ifdef __cplusplus
 }
 #endif
@@ -131,8 +132,6 @@ namespace OHOS {
 
 #define MAXSPORTID 176
 
-
-
 // 运动状态
 enum class ExerciseState {
   End = 0,
@@ -267,11 +266,11 @@ public:
   LoadDataFormJson(std::vector<SportData> &sportDataVector); /*加载json文件*/
   void RecordSportData();                                    /*保存数据*/
 
-  // 训练数据相关配置
-  #ifdef CYWEE_ACTIVITY_ENABLE
+// 训练数据相关配置
+#ifdef SUPPORT_CYWEE_SERVICE
   void AnalysisData(act_result_t *cyweeInfo); /*解析传输过来的数据*/
   void AnalysisExtraData(act_ext_result_t *cyweeInfo); /*解析运动额外数据*/
-  #endif
+#endif
 
   void AnalysisHeartData(uint8_t hrs);              /*解析运动心率数据*/
   SportData *GetSportdata();                        /*获取训练数据*/
index 8fc620c..0e025c2 100644 (file)
@@ -37,6 +37,7 @@
 #endif
 
 #ifdef SUPPORT_CYWEE_SERVICE
+#include "cywee_hal.h"
 #include "cywee_service.h"
 #endif
 
@@ -133,7 +134,7 @@ void TraingUnsubscribeTopic(Topic topic) {
 }
 int flag = 0;
 static void Training_Notify(void *args, const Topic topic, Request *request) {
-#ifdef CYWEE_ACTIVITY_ENABLE
+#ifdef SUPPORT_CYWEE_SERVICE
   UNUSED(args);
   UNUSED(topic);
   if (request == NULL) {
@@ -150,10 +151,9 @@ static void Training_Notify(void *args, const Topic topic, Request *request) {
                     "memcpy_s act_result_t fail  ret = %d", rets);
       return;
     }
-    // GraphicService::GetInstance()->PostGraphicEvent(
-    // std::bind(&TraingCardPresenter::send_sport_cmd,
-    //           TraingCardPresenter::GetInstance(), traingbleInfo));
+#ifdef BLE_SERVER_ENABLE
     TraingCardPresenter::GetInstance()->send_sport_cmd(traingbleInfo);
+#endif
     delete traingbleInfo;
   }
   //增加训练runtime控制
@@ -507,10 +507,19 @@ double CalculateAverageHeartRate(const std::vector<int> &heartRates) {
 
   return sum / sortedHeartRates.size(); // 返回平均值
 }
-#ifdef CYWEE_ACTIVITY_ENABLE
+#ifdef SUPPORT_CYWEE_SERVICE
 /*分析数据*/
 void TraingModel::AnalysisData(act_result_t *cyweeInfo) {
+  if (cyweeInfo == NULL)
+    return;
+
   // 不同的运动类型解析不同的数据
+  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+                "AnalysisData:[steps %d, distance %d,calories %d, pace %d, "
+                "step_frequency %d, step_length %d]",
+                cyweeInfo->steps, cyweeInfo->distance, cyweeInfo->calories,
+                cyweeInfo->pace, cyweeInfo->step_frequency,
+                cyweeInfo->step_length);
   // 通用数据
   sportdata->steps = cyweeInfo->steps;
   sportdata->distance = cyweeInfo->distance;
@@ -570,10 +579,15 @@ void TraingModel::AnalysisData(act_result_t *cyweeInfo) {
 #endif
 
 /*分析activity extra info数据*/
-#ifdef CYWEE_ACTIVITY_ENABLE
+#ifdef SUPPORT_CYWEE_SERVICE
 void TraingModel::AnalysisExtraData(act_ext_result_t *cyweeInfo) {
 
-  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "[apc:%d fpc:%d cdc:%d std:%d]",
+  //判断是否为特殊训练
+  if (isspecialsport_ == false) {
+    return;
+  }
+
+  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "[apc:%d fpc:%d cdc:%d std:%d]",
                 cyweeInfo->avg_pace, cyweeInfo->max_pace,
                 cyweeInfo->avg_step_freq, cyweeInfo->avg_step_len);
   //平均配速
@@ -1500,16 +1514,13 @@ bool TraingModel::AddHeartRateData(uint32_t timestamp, uint8_t heartRate) {
   // 检查重复时间戳
   for (const auto &entry : heartRateTable) {
     if (entry.timestamp == timestamp) {
-      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
-                    "时间戳重复无法添加数据 AddHeartRateData is error!");
+      WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"时间戳重复无法添加数据 AddHeartRateData is error!");
       return false; // 返回重复
     }
   }
 
   if (heartRateTable.size() >= MAX_ENTRIES) {
-    WEARABLE_LOGE(
-        WEARABLE_LOG_MODULE_APP,
-        "达到最大心率数据条目限制 无法添加新的数据 AddHeartRateData is error!");
+    WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"达到最大心率数据条目限制 无法添加新的数据 AddHeartRateData is error!");
     return false; // 返回条目满了
   }
 
@@ -1764,8 +1775,6 @@ std::string TraingModel::DisplayMotionDuration() {
   if (g_motionTimes > 0) {
     sportdata->duration = g_motionTimes; // 设置训练时长
 
-    // 每分钟进行配速和心率数据存储
-    StoreDataIfMinutePassed();
   }
 
   return motionDuration; // 返回格式化的运动时长
@@ -1796,7 +1805,7 @@ void TraingModel::StoreDataIfMinutePassed() {
     }
   }
 
-  WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "duration:[%d] g_motionTimes[%d]\r\n",
+  WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "duration:[%d] g_motionTimes[%d]\r\n",
                 sportdata->duration, g_motionTimes);
 }
 
@@ -1825,10 +1834,8 @@ void TraingTimerCallback(void) {
     pauseStartTimestamp = sportdata->starttime;
   }
 
-  uint32_t currentTimestamp =
-      OHOS::TraingModel::GetInstance()->get_current_time(); // 获取当前时间戳
-  g_motionTimes = (currentTimestamp - pauseStartTimestamp) +
-                  totalPausedDuration; // 更新运动时间
+  uint32_t currentTimestamp =OHOS::TraingModel::GetInstance()->get_current_time(); // 获取当前时间戳
+  g_motionTimes = (currentTimestamp - pauseStartTimestamp) + totalPausedDuration; // 更新运动时间
   sportdata->duration = g_motionTimes; // 更新持续时间
 
   WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
@@ -2374,17 +2381,17 @@ static void sport_data_callbackProc(int data) {
     return;
   }
   WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "sport_data_callbackProc");
-#ifdef CYWEE_ACTIVITY_ENABLE
+#ifdef SUPPORT_CYWEE_SERVICE
   act_result_t cyweeInfo;
   cywee_get_act_data(&cyweeInfo);
-  TraingModel::GetInstance()->AnalysisData(cyweeInfo);
+  TraingModel::GetInstance()->AnalysisData(&cyweeInfo);
   // 更新其他目标完成度
   TraingModel::GetInstance()->CheckSportTag();
 
   act_ext_result_t cyweeInfo_ext;
 
   cywee_get_act_ext_data(&cyweeInfo_ext);
-  TraingModel::GetInstance()->AnalysisExtraData(cyweeInfo_ext);
+  TraingModel::GetInstance()->AnalysisExtraData(&cyweeInfo_ext);
 #endif
   //训练心率
   uint8_t hrs = 0;