uint32_t cir;
// 最高海拔高度
uint32_t alt;
- //平均配速
+ // 平均配速
uint32_t apc;
- //最快配速
+ // 最快配速
uint32_t fpc;
- //最慢配速
+ // 最慢配速
uint32_t spc;
- //步幅
+ // 步幅
uint32_t std;
- //步频
+ // 步频
uint32_t cdc;
};
Trainingdata *read_Trainingdata_data(char *timedata, uint16_t offset);
int heart; // 运动心率
int avgheart; // 训练平均心率
int tag; // 训练目标
- int pc; //训练配速
+ int pc; // 训练配速
std::string start_date; // 训练开始日期
std::string start_time; // 训练开始时间
std::string end_time; // 训练结束时间
/*保存训练记录到json文件*/
bool CheckDataJson();
bool SaveDataToJson(SportData *data);
- SportData *LoadDateFeomJson();
+ std::vector<SportData> LoadDataFormJson();
private:
TraingModel(const TraingModel &) = delete;
#include <limits.h>
#include <list>
#include "samgr_lite.h"
+#include <vector>
#define MAX_FILE_PATH_LENGTH 128
#define TRAINING_DATA_DIRECTORY "user/userdata/sport/"
#define HIGH_INTENSITY_LOWER_THRESHOLD 70
#define HIGH_INTENSITY_UPPER_THRESHOLD 79
+extern "C" errcode_t uapi_get_timestampe_ms(uint32_t *tm);
extern "C" void custom_VibratorFunc(OHOS::VibratorType vibratorType);
#ifdef __cplusplus
if (state != ExerciseState::General)
{
/*运动开始并且是app发起的运动*/
- if (Openingway == true && state != ExerciseState::End)
+ if (Openingway == true)
{
sendtraningstatedata(static_cast<uint8_t>(state), sportdata->duration);
}
else
{
-#if 0
/*手表发起并且是结束状态*/
if (state == ExerciseState::End)
{
sendtraningstateend();
}
-#endif
}
}
sportState_ = state;
Startstate = false;
Endstate = true;
- /*保存数据之后再发送结束消息*/
- if (Openingway == true)
- {
- sendtraningstatedata(static_cast<uint8_t>(ExerciseState::End), sportdata->duration);
- }
- else
- {
- sendtraningstateend();
- }
-
printf("结束运动\r\n");
}
}
}
/*json读取测试*/
#if READTEST
- SportData *sportDataArray = LoadDateFeomJson();
+ SportData *sportDataArray = LoadDataFormJson();
if (sportDataArray != nullptr)
{
int dataCount = 0;
return true;
}
/* 加载训练数据函数 */
- SportData *TraingModel::LoadDateFeomJson()
+ std::vector<SportData> TraingModel::LoadDataFormJson()
{
std::ifstream file(TRAINING_RECORD_FILE);
if (!file.is_open())
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to open file");
- return nullptr;
+ return std::vector<SportData>();
}
std::string jsonData((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());
cJSON *root = cJSON_Parse(jsonData.c_str());
cJSON *dataArray = cJSON_GetObjectItem(root, "data");
- int dataCount = cJSON_GetArraySize(dataArray); // 获取数组大小
- SportData *sportDataArray = new SportData[dataCount];
+ int dataCount = cJSON_GetArraySize(dataArray);
+ std::vector<SportData> sportDataVector;
for (int i = 0; i < dataCount; i++)
{
sportData.steps = cJSON_GetObjectItem(item, "steps")->valueint;
sportData.intensity = cJSON_GetObjectItem(item, "intensity")->valueint;
- sportDataArray[i] = sportData;
+ sportDataVector.push_back(sportData);
}
cJSON_Delete(root);
- return sportDataArray;
+ return sportDataVector;
}
}
\ No newline at end of file
+/***
+ * @Date: 2024-05-20 19:40:41
+ * @LastEditors: Caisking 3449750381@qq.com
+ * @LastEditTime: 2024-06-07 18:46:11
+ * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traingrecord/include/TraingRecordModel.h
+ */
#ifndef TraingRecord_MODEL_H
#define TraingRecord_MODEL_H
static TraingRecordModel &GetInstance(void);
void InitTraingRecordListItem();
const TraingRecordItem *GetTraingRecordlistItems() const;
- uint8_t GetTraingRecordListNum() const;
- //设置标志位
+ uint8_t GetTraingRecordListNum();
+ // 设置标志位
bool GetJsonStatus();
private:
TraingRecordModel &operator=(const TraingRecordModel &);
virtual ~TraingRecordModel();
static const uint16_t TraingRecordListMaxNum = 10;
+ uint8_t ArrayNum;
TraingRecordItem TraingRecords[TraingRecordListMaxNum] = {0, nullptr, nullptr, nullptr};
// std::map<int, AppViewId> TraingRecordIdToViewId;
bool jsonStatus{false}; // json文件存在标志位
/***
- * @Author: Caisking 3449750381@qq.com
- * @Date: 2024-03-26 18:34:15
+ * @Date: 2024-05-20 19:40:41
* @LastEditors: Caisking 3449750381@qq.com
- * @LastEditTime: 2024-03-26 18:36:25
- * @FilePath: /sdk/application/wearable/fd230app/nativeui/traing/training_list_Record/src/TraingRecordModel.cpp
- * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
+ * @LastEditTime: 2024-06-07 17:41:18
+ * @FilePath: /XTS_FD230/FD230/code/sdk/application/wearable/fd230app/nativeui/traingrecord/src/TraingRecordModel.cpp
*/
#include "traingrecord/include/TraingRecordModel.h"
#include "components/ui_label_ext.h"
#include "language/font/ui_resource_string.h"
#include "traing/include/TraingModel.h"
+#include <vector>
namespace OHOS
{
return instance;
}
- //设置标志位
+ // 设置标志位
bool TraingRecordModel::GetJsonStatus()
{
jsonStatus = TraingModel::GetInstance()->CheckDataJson();
void TraingRecordModel::InitTraingRecordListItem()
{
// 1.读取json数据
- SportData *sportDataArray = TraingModel::GetInstance()->LoadDateFeomJson();
- if (sportDataArray != nullptr)
+ std::vector<SportData> sportDataVector = TraingModel::GetInstance()->LoadDataFormJson();
+ if (!sportDataVector.empty())
{
- int dataCount = 0;
- for (int i = 0; i < TraingRecordListMaxNum; i++) // 最多只有10条数据
+ ArrayNum = sportDataVector.size();
+ for (int i = 0; i < ArrayNum && i < TraingRecordListMaxNum; i++) // 最多只有10条数据
{
- SportData sportData = sportDataArray[i];
+ SportData sportData = sportDataVector[i];
// 2.获取训练类
std::string imageicon = TraingModel::GetInstance()->GetSportIcon(sportData.sportType);
// 3.获取日期
// 4.获取时间
TraingRecords[i] = {i, imageicon.c_str(), sportData.start_date, sportData.start_time};
-#if 0
+#if 1
// 使用 printf 输出每条训练记录的信息 [测试]
printf("Training Record %d:\n", i + 1);
printf("Sport Type: %s\n", imageicon.c_str());
{
return TraingRecords;
}
- uint8_t TraingRecordModel::GetTraingRecordListNum() const
+ uint8_t TraingRecordModel::GetTraingRecordListNum()
{
- return TraingRecordListMaxNum;
+ return ArrayNum;
}
}
\ No newline at end of file