#ifdef __cplusplus
extern "C" {
#endif
-static void Notify(void *args, const Topic topic, Request *request);
+static void Training_Notify(void *args, const Topic topic, Request *request);
using namespace OHOS;
Subscriber TraingSubscirber = {
.identity = NULL,
.args = NULL,
- .Notify = Notify,
+ .Notify = Training_Notify,
};
void TraingSubscribeTopic(Topic topic) {
broadcastApi->Release((IUnknown *)broadcastApi);
}
int flag = 0;
-static void Notify(void *args, const Topic topic, Request *request) {
+static void Training_Notify(void *args, const Topic topic, Request *request) {
UNUSED(args);
UNUSED(topic);
if (request == NULL) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "request is NULL");
return;
}
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "request %d\r\n", request->msgId);
- if (request->msgId == TOPIC_EVENT_ACTIVITY_UPDATE) {
-#if BLETEST
- if (!flag) {
- training_ble *traingbleInfo = new training_ble();
- traingbleInfo->sportType = 1;
- traingbleInfo->controlmd = 0;
- TraingCardPresenter::GetInstance()->send_sport_cmd(traingbleInfo);
- delete traingbleInfo;
- flag = 1;
+ //蓝牙开启运动
+ if (request->msgId == TOPIC_EVENT_BLE_TRAINING) {
+ training_ble *traingbleInfo = new training_ble();
+ int rets = memcpy_s(traingbleInfo, sizeof(training_ble),
+ (training_ble *)request->data, request->len);
+ if (rets != EOK) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+ "memcpy_s cywee_activity_result_t fail ret = %d", rets);
+ return;
}
-#endif
+ TraingCardPresenter::GetInstance()->send_sport_cmd(traingbleInfo);
+ delete traingbleInfo;
+ }
+ //增加训练runtime控制
+ if (uapi_dev_runtime_get_train_status() == 0) {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
+ "uapi_dev_runtime_get_train_status %d",
+ uapi_dev_runtime_get_train_status());
+ return;
+ }
+ //训练基本信息更新
+ if (request->msgId == TOPIC_EVENT_ACTIVITY_UPDATE) {
cywee_activity_result_t *cyweeInfo = new cywee_activity_result_t();
int rets = memcpy_s(cyweeInfo, sizeof(cywee_activity_result_t),
(cywee_activity_result_t *)request->data, request->len);
TraingModel::GetInstance()->AnalysisData(cyweeInfo);
delete cyweeInfo; // 释放内存
}
+ //训练额外信息
if (request->msgId == TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE) {
cywee_activity_result_extre_info_t *cyweeInfo_ext =
new cywee_activity_result_extre_info_t();
TraingModel::GetInstance()->AnalysisExtraData(cyweeInfo_ext);
delete cyweeInfo_ext; // 释放内存
}
+ //训练心率
if (request->msgId == TOPIC_EVENT_HEARTRATE_UPDATA) {
uint8_t heart = *((u_int8_t *)(request->data)); // 进行类型转换
TraingModel::GetInstance()->AnalysisHeartData(heart);
}
- if (request->msgId == TOPIC_EVENT_BLE_TRAINING) {
- training_ble *traingbleInfo = new training_ble();
- int rets = memcpy_s(traingbleInfo, sizeof(training_ble),
- (training_ble *)request->data, request->len);
- if (rets != EOK) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,
- "memcpy_s cywee_activity_result_t fail ret = %d", rets);
- return;
- }
- TraingCardPresenter::GetInstance()->send_sport_cmd(traingbleInfo);
- delete traingbleInfo;
- }
}
#ifdef __cplusplus
}
(!uapi_sleep_mode_flag_get())) {
ui_api_vibrate_once_func();
}
- TraingCardView::GetInstance()->SetPopupViewStatus(HeartPopup, true);
+ if (TraingCardView::GetInstance()) {
+ TraingCardView::GetInstance()->SetPopupViewStatus(HeartPopup, true);
+ }
}
// 训练目标检查
if (true != OHOS::ConfigModel::GetInstance()->GetDnotdisturb()) {
ui_api_vibrate_once_func();
}
- TraingCardView::GetInstance()->SetPopupViewStatus(GetTagPopup, true);
- if (TraingCardView::GetInstance()->GetAnimator()) {
- TraingCardView::GetInstance()->GetAnimator()->Start();
+ if (TraingCardView::GetInstance()) {
+ TraingCardView::GetInstance()->SetPopupViewStatus(GetTagPopup, true);
+ if (TraingCardView::GetInstance()->GetAnimator()) {
+ TraingCardView::GetInstance()->GetAnimator()->Start();
+ }
}
Gettagstuats = true;
}
// 设置训练 runtime 为 1 训练中
uapi_dev_runtime_set_train_status(1);
- //更新用户数据
- SetUserSportdata();
+ // 更新用户数据
+ // SetUserSportdata();
ResetSharedTrainingData(); // 重置共享训练数据
*/
// 确保最大心率为正值
if (user_Intensity <= 0) {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "maxHeartRate %d is error", user_Intensity);
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "maxHeartRate %d is error",
+ user_Intensity);
return;
}
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CheckDataJson is ok");
return true;
}
-#if 1
+
bool TraingModel::SaveDataToJson(SportData *data) {
FILE *fp;
char *jsonStr = NULL;
return true;
}
-#endif
-#if 0
- bool TraingModel::SaveDataToJson(SportData *data)
- {
- if (data == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Data is null");
- return false;
- }
- printf_data(data);
-
- cJSON *root = cJSON_CreateObject(); // 创建一个新的 JSON 对象
-
- // 创建或更新数据节点
- cJSON *dataArray = cJSON_AddArrayToObject(root, "data");
- cJSON *sportData = cJSON_CreateObject();
- cJSON_AddNumberToObject(sportData, "sportTypeId", static_cast<int>(data->sportType));
- cJSON_AddNumberToObject(sportData, "sportId", static_cast<int>(data->sportId));
- cJSON_AddStringToObject(sportData, "startDate", data->start_date.c_str());
- cJSON_AddStringToObject(sportData, "startTime", data->start_time.c_str());
- cJSON_AddStringToObject(sportData, "endTime", data->end_time.c_str());
- cJSON_AddNumberToObject(sportData, "goalDegree", data->goaldegree);
- cJSON_AddNumberToObject(sportData, "duration", data->duration);
- cJSON_AddNumberToObject(sportData, "distance", data->distance);
- cJSON_AddNumberToObject(sportData, "avgHeartRate", data->avgheart);
- cJSON_AddNumberToObject(sportData, "steps", data->steps);
- cJSON_AddNumberToObject(sportData, "intensity", data->intensity);
- cJSON_AddNumberToObject(sportData, "calories", data->calories);
-
- cJSON_AddItemToArray(dataArray, sportData);
-
- // 限制存储数量并删除多余数据
- while (cJSON_GetArraySize(dataArray) > MAX_DATA_COUNT)
- {
- cJSON_DeleteItemFromArray(dataArray, 0);
- }
-
- // 将更新后的 JSON 数据写入文件
- char *jsonStrNew = cJSON_Print(root);
- if (jsonStrNew == nullptr)
- {
- WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Failed to serialize JSON data");
- cJSON_Delete(root);
- return false;
- }
-
- printf("jsonStrNew:%s\r\n", jsonStrNew);
-
- FILE *fp = fopen(TRAINING_RECORD_FILE, "w");
- if (fp == nullptr)
- {
- perror("fopen");
- cJSON_Delete(root);
- cJSON_free(jsonStrNew);
- return false;
- }
-
- fwrite(jsonStrNew, strlen(jsonStrNew), 1, fp);
- fclose(fp);
-
- // 释放资源
- cJSON_Delete(root);
- cJSON_free(jsonStrNew);
-
- WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "SaveDataToJson succeeded");
- return true;
- }
-#endif
/* 加载训练数据函数 */
bool TraingModel::LoadDataFormJson(std::vector<SportData> &sportDataVector) {
std::ifstream file(TRAINING_RECORD_FILE);
else
isValid = false;
+ if (cJSON *caloriesItem = cJSON_GetObjectItem(item, "calories");
+ caloriesItem && cJSON_IsNumber(caloriesItem))
+ sportData.calories = caloriesItem->valueint;
+ else
+ isValid = false;
+
// 只有在所有字段都有效的情况下才添加 sportData 到向量中
if (isValid) {
sportDataVector.push_back(sportData);