From e6aadd8f8d2ff37183095385b56cc5b287925154 Mon Sep 17 00:00:00 2001 From: Caisking Date: Mon, 21 Jul 2025 14:02:56 +0800 Subject: [PATCH] =?utf8?q?=E6=A0=A1=E9=AA=8C=E8=BF=90=E5=8A=A8=E6=95=B0?= =?utf8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../nativeui/traing/include/TraingModel.h | 15 +++--- .../nativeui/traing/src/TraingModel.cpp | 51 +++++++++++-------- 2 files changed, 36 insertions(+), 30 deletions(-) diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/traing/include/TraingModel.h b/code/sdk/application/wearable/fd230/nativeapp/nativeui/traing/include/TraingModel.h index db9ddb5cd..e0a35bc87 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/traing/include/TraingModel.h +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/traing/include/TraingModel.h @@ -11,8 +11,10 @@ #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 #include @@ -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 &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(); /*获取训练数据*/ diff --git a/code/sdk/application/wearable/fd230/nativeapp/nativeui/traing/src/TraingModel.cpp b/code/sdk/application/wearable/fd230/nativeapp/nativeui/traing/src/TraingModel.cpp index 8fc620c52..0e025c297 100644 --- a/code/sdk/application/wearable/fd230/nativeapp/nativeui/traing/src/TraingModel.cpp +++ b/code/sdk/application/wearable/fd230/nativeapp/nativeui/traing/src/TraingModel.cpp @@ -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 &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; -- 2.17.1