// sportdata->cdc = cyweeInfo->step_frequency;
// sportdata->std = cyweeInfo->step_length;
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " pace %d", sportdata->pc);
-
- sportdata->pc = cyweeInfo->pace;
-
- // 更新最慢配速
- if (sportdata->spc < sportdata->pc && sportdata->pc != 0) {
- sportdata->spc = sportdata->pc;
- }
-
- WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "spc %d", sportdata->spc);
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, " pace %d", sportdata->pc);
+
+ // 通过距离和时间自己计算配速,而不是使用CYWEE提供的配速
+ // 配速单位:秒/公里
+ // 计算公式:配速 = 时间(秒) * 1000 / 距离(米)
+ int calculatedPace = 0;
+ if (sportdata->distance > 0 && sportdata->duration > 0) {
+ // 距离单位是米,需要转换为公里:距离(公里) = 距离(米) / 1000
+ // 配速(秒/公里) = 时间(秒) / 距离(公里) = 时间(秒) * 1000 / 距离(米)
+ calculatedPace = (sportdata->duration * 1000) / sportdata->distance;
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
+ "CalculatePace: distance=%d米, duration=%d秒, calculatedPace=%d秒/公里",
+ sportdata->distance, sportdata->duration, calculatedPace);
+ } else {
+ // 如果距离或时间为0,使用CYWEE提供的配速作为后备
+ calculatedPace = cyweeInfo->pace;
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
+ "CalculatePace: 距离或时间为0,使用CYWEE配速=%d", calculatedPace);
+ }
+
+ sportdata->pc = calculatedPace;
+
+ // 更新最慢配速
+ if (sportdata->spc < sportdata->pc && sportdata->pc != 0) {
+ sportdata->spc = sportdata->pc;
+ }
+
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "spc %d", sportdata->spc);
#if 0
return;
}
- WEARABLE_LOGD(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);
- //平均配速
- if (cyweeInfo->avg_pace != 0) {
- sportdata->apc = cyweeInfo->avg_pace;
- }
- //最快配速
- if (cyweeInfo->max_pace != 0) {
- sportdata->fpc = cyweeInfo->max_pace;
- }
+ WEARABLE_LOGD(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);
+
+ // 通过距离和时间自己计算平均配速和最快配速
+ // 平均配速 = 总时间(秒) * 1000 / 总距离(米)
+ if (sportdata->distance > 0 && sportdata->duration > 0) {
+ int calculatedAvgPace = (sportdata->duration * 1000) / sportdata->distance;
+ sportdata->apc = calculatedAvgPace;
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
+ "CalculateAvgPace: distance=%d米, duration=%d秒, avgPace=%d秒/公里",
+ sportdata->distance, sportdata->duration, calculatedAvgPace);
+ } else if (cyweeInfo->avg_pace != 0) {
+ // 如果距离或时间为0,使用CYWEE提供的平均配速作为后备
+ sportdata->apc = cyweeInfo->avg_pace;
+ }
+
+ // 最快配速:配速越小表示速度越快,所以最快配速应该是最小的配速值
+ // 如果当前配速不为0且小于之前的最快配速(或最快配速为0),则更新最快配速
+ if (sportdata->pc > 0) {
+ if (sportdata->fpc == 0 || sportdata->pc < sportdata->fpc) {
+ sportdata->fpc = sportdata->pc;
+ WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,
+ "UpdateFastestPace: fpc=%d秒/公里", sportdata->fpc);
+ }
+ } else if (cyweeInfo->max_pace != 0) {
+ // 如果当前配速为0,使用CYWEE提供的最快配速作为后备
+ sportdata->fpc = cyweeInfo->max_pace;
+ }
//平均步频
if (cyweeInfo->avg_step_freq != 0) {
sportdata->cdc = cyweeInfo->avg_step_freq;