优化运动数据输入算法,优化燃脂时间计算 2644/1 2644/head 2645/target/1
authorpenglei <1624952103@qq.com>
Thu, 30 Oct 2025 08:13:13 +0000 (16:13 +0800)
committerpenglei <1624952103@qq.com>
Thu, 30 Oct 2025 08:13:13 +0000 (16:13 +0800)
code/sdk/zhihui/drivers/cywee/dml/cywee_dml.c
code/sdk/zhihui/drivers/cywee/dml/cywee_hal.h
code/sdk/zhihui/drivers/cywee/service/cywee_service.c
code/sdk/zhihui/drivers/cywee/service/cywee_service.h

index 6a009f0..25a08c4 100644 (file)
@@ -34,6 +34,8 @@
 #include "ppg_service.h"
 #endif
 
+#include "cywee_service.h"
+
 #define AP_ENABLE_DML_SDO_LISTEN
 #define GSENSON_MSG_COUNT   64
 #define SLEEP_STATUS_LENGTH 50
@@ -71,6 +73,8 @@ static int history_fat_=0; //一小时前燃脂数据
 static uint32_t last_fat_burn_timestamp = 0;  // 上次燃脂状态更新的时间戳
 static int last_mhr_zone = -1;                // 上次的心率区间状态
 
+static uint8_t is_free_trainning_mode = 0;
+
 /**
  * @brief 更新燃脂时间
  * @param current_mhr_zone 当前心率区间 (2表示燃脂区间)
@@ -233,6 +237,13 @@ static void cywee_hrs_update(void)
 }
 
 static void cywee_service_check_timer_callback(void)
+{
+    // cywee_hrs_update();
+    // cywee_gnss_update();
+    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_DATA_UPDATE, NULL);
+}
+
+void cywee_service_data_update(void)
 {
     cywee_hrs_update();
     cywee_gnss_update();
@@ -1224,6 +1235,11 @@ void cywee_activity_mode_change(int mode)
     else
         cywee_sport_timer_stop_check();
     
+    if(mode == SPORT_ACTIVE_MODE_FREE_TRAINING)
+        is_free_trainning_mode = 1;
+    else
+        is_free_trainning_mode = 0;
+
 
     switch (mode)
     {
@@ -1627,8 +1643,11 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
                 c_act_ext_result_t.MHR_zone = (int)sensorEVT->fData[13];
                 c_act_ext_result_t.distance_motion = (int)sensorEVT->fData[14];
 
+                // CWM_OS_dbgPrintf("MHR_zone:%d\n",c_act_ext_result_t.MHR_zone);
+
                 // 燃脂时间计算:当MHR_zone = 2时表示燃脂状态
-                update_fat_burn_time(c_act_ext_result_t.MHR_zone);
+                if(!is_free_trainning_mode)
+                    update_fat_burn_time(c_act_ext_result_t.MHR_zone);
 
                 // cywee_func(CYWEE_MSG_TYPE_ACTIVITY_EXTRA_INFO_UPDATE,&c_act_ext_result_t,sizeof(act_ext_result_t));
                 //CustomEventPublish(TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE, &c_act_ext_result_t, sizeof(act_ext_result_t));
@@ -1645,6 +1664,8 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
                 c_act_result_t.duration = (int)sensorEVT->fData[5];
                 c_act_result_t.MHR_zone = (int)sensorEVT->fData[6];
 
+                // CWM_OS_dbgPrintf("MHR_zone:%d\n",c_act_result_t.MHR_zone);
+
                 // 燃脂时间计算:当MHR_zone = 2时表示燃脂状态
                 update_fat_burn_time(c_act_result_t.MHR_zone);
 
index 6bb4ba6..fdca7a7 100644 (file)
@@ -208,6 +208,8 @@ void cywee_get_sleep_time_data(uint32_t *fall_sleep_time,uint32_t *wake_up_time,
 
 void cywee_set_factory_log_switch(uint8_t cmd);
 
+void cywee_service_data_update(void);
+
 #ifdef __cplusplus
 #if __cplusplus
 }
index afa9532..94736da 100644 (file)
@@ -408,6 +408,11 @@ static void cywee_service_check_task(void const *arg)
             case CYWEE_SERVICE_CMD_CHECK_ACC:
                 cywee_check_acc();
             break;
+
+            case CYWEE_SERVICE_CMD_DATA_UPDATE:
+                cywee_service_data_update();
+            break;
+            
             default:
                 PRINT("unkonw cmd \r\n");
                 break;
index 6632772..4415fc1 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: penglei 1624952103@qq.com
  * @Date: 2024-03-26 20:29:58
  * @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2025-07-30 09:44:07
+ * @LastEditTime: 2025-10-30 11:10:43
  * @FilePath: /FD230/code/sdk/drivers/peripheral/cywee/Inc/cywee_service.h
  * @Description: 
  * 
@@ -97,6 +97,8 @@ extern "C" {
 
 #define CYWEE_SERVICE_CMD_CHECK_ACC 0x36
 
+#define CYWEE_SERVICE_CMD_DATA_UPDATE 0X37
+
 errcode_t uapi_cywee_service_init(void);
 void uapi_cywee_service_deinit(void);