From 27765df445dab60f365e37377ce3c4b7966c93b1 Mon Sep 17 00:00:00 2001 From: Caisking <3449750381@qq.com> Date: Thu, 3 Oct 2024 17:01:40 +0800 Subject: [PATCH] =?utf8?q?=E8=AE=AD=E7=BB=83=EF=BC=9A=E5=A2=9E=E5=8A=A0?= =?utf8?q?=E4=BD=BF=E7=94=A8=E6=96=87=E4=BB=B6=E8=AF=BB=E5=86=99=E9=98=9F?= =?utf8?q?=E5=88=97=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../include/SafeModeManagerModelC.h | 2 ++ .../nativeui/traing/src/TraingModel.cpp | 20 ++++++++++++++++--- .../utils/custom_fileoperate_service.c | 8 +++++++- .../drivers/peripheral/utils/custom_utils.h | 6 +++++- 4 files changed, 31 insertions(+), 5 deletions(-) diff --git a/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/include/SafeModeManagerModelC.h b/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/include/SafeModeManagerModelC.h index 3f05a59eb..a66915ea7 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/include/SafeModeManagerModelC.h +++ b/code/sdk/application/wearable/fd230app/nativeui/safemodemanager/include/SafeModeManagerModelC.h @@ -8,6 +8,8 @@ extern "C" { //进行修复开始 void repari_file_start(void); +//进行运动存储 +void store_sport_data(void); #ifdef __cplusplus } diff --git a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp index 1a6fb97e3..eff80f78f 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp @@ -8,6 +8,7 @@ #include "traing/include/TraingModel.h" #include "cmsis_os.h" #include "custom_utils.h" +#include "safemodemanager/include/SafeModeManagerModelC.h" #include "thread_adapter.h" #include "traing/training_card/include/TraingCardPresenter.h" #include "uicomponents/UIComponents.h" @@ -175,6 +176,11 @@ static void Notify(void *args, const Topic topic, Request *request) { } #endif +void store_sport_data() { + printf("运动数据存储!\r\n"); + OHOS::TraingModel::GetInstance()->RecordSportData(); + return; +} namespace OHOS { #if TIMER // 声明定时器变量 @@ -624,7 +630,9 @@ void TraingModel::SetTimestamp() { Openstate = false; // 关闭运动标志位 // 记录运动数据 - RecordSportData(); + // RecordSportData(); + do_custom_fileoperate_service_check_msg( + CUSTOM_FILEOPERATE_MSG_TYPE_SPORTDATA_SAVE, nullptr, 0); Startstate = false; Endstate = true; @@ -1205,7 +1213,7 @@ bool TraingModel::SaveHeartTable() { } heartRateFile.close(); - + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Heart Rate Table Saved."); return true; // 返回成功 } @@ -1219,10 +1227,13 @@ bool TraingModel::SavePaceTable() { return false; } + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "paceCount = %d", paceCount); + std::string filePath = TRAINING_PACE_FILE + std::to_string(sportdata->starttime) + ".bin"; WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SavePaceTable filePath: %s", filePath.c_str()); + std::ofstream paceFile(filePath, std::ios::binary); if (!paceFile) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "无法打开文件: %s", @@ -1230,7 +1241,10 @@ bool TraingModel::SavePaceTable() { return false; // 返回失败 } + // 写入 paceCount paceFile.write(reinterpret_cast(&paceCount), sizeof(paceCount)); + + // 写入配速数据 if (!paceFile.write(reinterpret_cast(paceTable.data()), paceCount * sizeof(PaceEntry))) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "写入配速数据失败。"); @@ -1238,7 +1252,7 @@ bool TraingModel::SavePaceTable() { } paceFile.close(); - + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "SavePaceTable Success."); return true; // 返回成功 } // 返回心率表路径 diff --git a/code/sdk/drivers/peripheral/utils/custom_fileoperate_service.c b/code/sdk/drivers/peripheral/utils/custom_fileoperate_service.c index 1449dee47..f4dcf822b 100644 --- a/code/sdk/drivers/peripheral/utils/custom_fileoperate_service.c +++ b/code/sdk/drivers/peripheral/utils/custom_fileoperate_service.c @@ -107,8 +107,14 @@ static void custom_fileoperate_service_check_task(void const *arg) switch (mail.cmd) { case CUSTOM_FILEOPERATE_MSG_TYPE_SPORTDATA_SAVE: + store_sport_data(); + break; + case CUSTOM_FILEOPERATE_MSG_TYPE_HEARTRATE_SAVE: + break; + case CUSTOM_FILEOPERATE_MSG_TYPE_BLOODXYGEN_SAVE: + break; + case CUSTOM_FILEOPERATE_MSG_TYPE_MESSAGEDATA_SAVE: break; - default: PRINT("Unknown CUSTOM_FILE_OPERATE_MSG cmd 0x%02X \r\n", mail.cmd); break; diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.h b/code/sdk/drivers/peripheral/utils/custom_utils.h index e0efd533e..5bfabe8d6 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.h +++ b/code/sdk/drivers/peripheral/utils/custom_utils.h @@ -233,7 +233,11 @@ errcode_t uapi_custom_cmd_service_init(void); errcode_t do_custom_cmd_service_check_msg(int cmd, void *params, int paramlen); /***custom file operate cmd service*/ -#define CUSTOM_FILEOPERATE_MSG_TYPE_SPORTDATA_SAVE 0x01 +#define CUSTOM_FILEOPERATE_MSG_TYPE_SPORTDATA_SAVE 0x01 //运动数据 +#define CUSTOM_FILEOPERATE_MSG_TYPE_HEARTRATE_SAVE 0x02 //心率数据 +#define CUSTOM_FILEOPERATE_MSG_TYPE_BLOODXYGEN_SAVE 0x03//血氧数据 +#define CUSTOM_FILEOPERATE_MSG_TYPE_MESSAGEDATA_SAVE 0x04//消息数据 + errcode_t uapi_custom_fileoperate_service_init(void); errcode_t do_custom_fileoperate_service_check_msg(int cmd, void *params, int paramlen); -- 2.17.1