#include <vector>
#include <queue>
#include <numeric>
+#include "custom_runtime.h"
#include "traingrecord/include/TraingRecordModel.h"
#define MAX_FILE_PATH_LENGTH 128
{
// 不同的运动类型解析不同的数据
// 通用数据
-
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;
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)
{
// 增加标志位互斥保障"开始"和"结束"的唯一性操作
if (currentState == ExerciseState::Start && !Startstate)
{
+ // 设置训练 runtime 为 1 训练中
+ uapi_dev_runtime_set_train_status(1);
+
ResetSharedTrainingData(); // 重置共享训练数据
printf("SetTimestamp::time:%u \r\n", time);
}
else if (currentState == ExerciseState::End && !Endstate)
{
+ // 设置训练 runtime 为 0 训练结束
+ uapi_dev_runtime_set_train_status(0);
+
sportdata->endtime = time;
SetEndTime();