运动心率增加打印以及有效过滤 35/1 35/head 36/target/1
authorCaisking <3449750381@qq.com>
Wed, 17 Apr 2024 10:20:26 +0000 (18:20 +0800)
committerCaisking <3449750381@qq.com>
Wed, 17 Apr 2024 10:20:26 +0000 (18:20 +0800)
code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp
code/sdk/drivers/peripheral/cywee/service/cywee_service.c

index b7bfcd0..78a8467 100644 (file)
@@ -388,9 +388,12 @@ namespace OHOS
         // 通用数据
         sportdata->calories = cyweeInfo->calories;
         sportdata->heart = cyweeInfo->hrs;
-        sportdata->avgheart = CalculateAverageHeartRate(cyweeInfo->hrs); // 处理平均心率
+        if (sportdata->heart > 50)
+        {
+            sportdata->avgheart = CalculateAverageHeartRate(cyweeInfo->hrs); // 处理平均心率
+        }
         // sportdata->duration = cyweeInfo->duration;
-        PRINT("normal sportdata->calories[%d],sportdata->duration[%d] \r\n", sportdata->calories, sportdata->duration);
+        PRINT("normal sportdata->calories[%d],sportdata->duration[%d],sportdata->heart[%d] \r\n", sportdata->calories, sportdata->duration, sportdata->heart);
         switch (type)
         {
         case ExerciseClass::OUTDOOR:
@@ -427,8 +430,8 @@ namespace OHOS
         ExerciseState currentState = GetSportState(); // 获取当前运动状态
         if (currentState == ExerciseState::Start)
         {
+            sportdata->Reset();//重置结构体
             sportdata->starttime = time;
-
             char *start_date = (char *)malloc(9 * sizeof(char)); // 分配内存给start_date
             if (uapi_get_YYMMDD_Time(start_date, '/') != ERRCODE_SUCC)
             {
index 6eac715..32eb71c 100644 (file)
 
 #include "ppg_service.h"
 
-
-typedef struct 
+typedef struct
 {
     uint8_t cmd;
     uint8_t data[2];
 } cywee_cmd_t;
 /***
  * 其他cmd在Header里定义,对外开放
-*/
+ */
 
 #define CYWEE_CHECK_MS 20
 
@@ -56,7 +55,7 @@ static bool g_bat_timer_is_running = false;
 static unsigned long g_cywee_queue;
 
 static bool cywee_service_running_stat = false;
-static void cywee_service_check_timer_callback(void* data);
+static void cywee_service_check_timer_callback(void *data);
 
 void cywee_msg_callback(uint8_t msg_type, uint8_t *msg_data, int32_t msg_datalen)
 {
@@ -64,151 +63,155 @@ void cywee_msg_callback(uint8_t msg_type, uint8_t *msg_data, int32_t msg_datalen
     cywee_activity_result_t c_activity_result_t;
     cywee_inactivity_result_t c_inactivity_result_t;
 
-    if(msg_type == CYWEE_MSG_TYPE_ACTIVITY_UPDATE)
+    if (msg_type == CYWEE_MSG_TYPE_ACTIVITY_UPDATE)
     {
         memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
         switch (c_activity_result_t.activity_mode)
         {
-            case SPORT_ACTIVE_MODE_NORMAL:
-                PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d], BMR calories[%d], is_pause[%d],len[%d]\n",
-                c_activity_result_t.activity_mode,c_activity_result_t.steps,c_activity_result_t.distance,c_activity_result_t.calories,c_activity_result_t.step_frequency,
-                c_activity_result_t.step_length,c_activity_result_t.pace,c_activity_result_t.BMR_calories,c_activity_result_t.is_pause,sizeof(cywee_activity_result_t));
-                CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-                break;
-            case SPORT_ACTIVE_MODE_TREADMILL:
-                PRINT("CYWEE_MSG_TYPE_TREADMILL_UPDATE\r\n");
-                memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
-                PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d], BMR calories[%d], is_pause[%d],len[%d]\n",
-                c_activity_result_t.activity_mode,c_activity_result_t.steps,c_activity_result_t.distance,c_activity_result_t.calories,c_activity_result_t.step_frequency,
-                c_activity_result_t.step_length,c_activity_result_t.pace,c_activity_result_t.BMR_calories,c_activity_result_t.is_pause,sizeof(cywee_activity_result_t));
-                CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-                break;
-            case SPORT_ACTIVE_MODE_OUTDOOR_RUNNING:
-                memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
-                PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d], BMR calories[%d], is_pause[%d],len[%d]\n",
-                c_activity_result_t.activity_mode,c_activity_result_t.steps,c_activity_result_t.distance,c_activity_result_t.calories,c_activity_result_t.step_frequency,
-                c_activity_result_t.step_length,c_activity_result_t.pace,c_activity_result_t.BMR_calories,c_activity_result_t.is_pause,sizeof(cywee_activity_result_t));
-                CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-                break;
-            case SPORT_ACTIVE_MODE_INDOOR_RUNNING:
-                PRINT("CYWEE_MSG_TYPE_INDOOR_RUNNING_UPDATE\r\n");
-                memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
-                PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d], BMR calories[%d], is_pause[%d],len[%d]\n",
-                c_activity_result_t.activity_mode,c_activity_result_t.steps,c_activity_result_t.distance,c_activity_result_t.calories,c_activity_result_t.step_frequency,
-                c_activity_result_t.step_length,c_activity_result_t.pace,c_activity_result_t.BMR_calories,c_activity_result_t.is_pause,sizeof(cywee_activity_result_t));
-                CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-                break;
-            case SPORT_ACTIVE_MODE_FITNESS_PEDOMETERR:
-                PRINT("CYWEE_MSG_TYPE_FITNESS_PEDOMETERR_UPDATE\r\n");
-                memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
-                PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d], BMR calories[%d], is_pause[%d],len[%d]\n",
-                c_activity_result_t.activity_mode,c_activity_result_t.steps,c_activity_result_t.distance,c_activity_result_t.calories,c_activity_result_t.step_frequency,
-                c_activity_result_t.step_length,c_activity_result_t.pace,c_activity_result_t.BMR_calories,c_activity_result_t.is_pause,sizeof(cywee_activity_result_t));
-                CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-                break;
-            case SPORT_ACTIVE_MODE_FREE_TRAINING:
-                PRINT("CYWEE_MSG_TYPE_FREE_TRAINING_UPDATE\r\n");
-                memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
-                PRINT("activit_mode[%d], calories[%d], duration[%d], MHR_zone[%d],len[%d]\n",
-                c_activity_result_t.activity_mode,c_activity_result_t.calories,c_activity_result_t.duration,c_activity_result_t.MHR_zone,sizeof(cywee_activity_result_t));
-                CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-                break;
-
-            //长时间动作侦测
-            case SPORT_ACTIVE_MODE_AR_ALERT:
-                PRINT("CYWEE_MSG_TYPE_AR_ALERT_UPDATE\r\n");
-                memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
-                PRINT("activit_mode[%d], ar alert type[%d], len[%d]\n",
-                c_activity_result_t.activity_mode,c_activity_result_t.ar_alert_type,sizeof(cywee_activity_result_t));
-                CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-                break;
-
-            //额外信息
-            case SPORT_ACTIVE_MODE_EXTRA_INFO:
-                PRINT("CYWEE_MSG_TYPE_EXTRA_INFO_UPDATE\r\n");
-                memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
-                PRINT("average step frequency[%d], average step length[%d], average pace[%d], max step frequency[%d], max pace[%d], len[%d]\n",
-                c_activity_result_t.avg_step_freq,c_activity_result_t.avg_step_len,c_activity_result_t.avg_pace,c_activity_result_t.max_step_freq,c_activity_result_t.max_pace,sizeof(cywee_activity_result_t));
-                CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-                break;
-            default:
-                break;
+        case SPORT_ACTIVE_MODE_NORMAL:
+            PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d], BMR calories[%d], is_pause[%d], hrs[%d], len[%d]\n",
+                  c_activity_result_t.activity_mode, c_activity_result_t.steps, c_activity_result_t.distance, c_activity_result_t.calories, c_activity_result_t.step_frequency,
+                  c_activity_result_t.step_length, c_activity_result_t.pace, c_activity_result_t.BMR_calories, c_activity_result_t.is_pause, c_activity_result_t.hrs, sizeof(cywee_activity_result_t));
+            CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+            break;
+        case SPORT_ACTIVE_MODE_TREADMILL:
+            PRINT("CYWEE_MSG_TYPE_TREADMILL_UPDATE\r\n");
+            memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
+            PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d], BMR calories[%d], is_pause[%d],len[%d]\n",
+                  c_activity_result_t.activity_mode, c_activity_result_t.steps, c_activity_result_t.distance, c_activity_result_t.calories, c_activity_result_t.step_frequency,
+                  c_activity_result_t.step_length, c_activity_result_t.pace, c_activity_result_t.BMR_calories, c_activity_result_t.is_pause, sizeof(cywee_activity_result_t));
+            CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+            break;
+        case SPORT_ACTIVE_MODE_OUTDOOR_RUNNING:
+            memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
+            PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d], BMR calories[%d], is_pause[%d], hrs[%d], len[%d]\n",
+                  c_activity_result_t.activity_mode, c_activity_result_t.steps, c_activity_result_t.distance, c_activity_result_t.calories, c_activity_result_t.step_frequency,
+                  c_activity_result_t.step_length, c_activity_result_t.pace, c_activity_result_t.BMR_calories, c_activity_result_t.is_pause,c_activity_result_t.hrs, sizeof(cywee_activity_result_t));
+            CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+            break;
+        case SPORT_ACTIVE_MODE_INDOOR_RUNNING:
+            PRINT("CYWEE_MSG_TYPE_INDOOR_RUNNING_UPDATE\r\n");
+            memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
+            PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d], BMR calories[%d], is_pause[%d],len[%d]\n",
+                  c_activity_result_t.activity_mode, c_activity_result_t.steps, c_activity_result_t.distance, c_activity_result_t.calories, c_activity_result_t.step_frequency,
+                  c_activity_result_t.step_length, c_activity_result_t.pace, c_activity_result_t.BMR_calories, c_activity_result_t.is_pause, sizeof(cywee_activity_result_t));
+            CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+            break;
+        case SPORT_ACTIVE_MODE_FITNESS_PEDOMETERR:
+            PRINT("CYWEE_MSG_TYPE_FITNESS_PEDOMETERR_UPDATE\r\n");
+            memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
+            PRINT("activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d], BMR calories[%d], is_pause[%d],len[%d]\n",
+                  c_activity_result_t.activity_mode, c_activity_result_t.steps, c_activity_result_t.distance, c_activity_result_t.calories, c_activity_result_t.step_frequency,
+                  c_activity_result_t.step_length, c_activity_result_t.pace, c_activity_result_t.BMR_calories, c_activity_result_t.is_pause, sizeof(cywee_activity_result_t));
+            CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+            break;
+        case SPORT_ACTIVE_MODE_FREE_TRAINING:
+            PRINT("CYWEE_MSG_TYPE_FREE_TRAINING_UPDATE\r\n");
+            memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
+            PRINT("activit_mode[%d], calories[%d], duration[%d], MHR_zone[%d],len[%d]\n",
+                  c_activity_result_t.activity_mode, c_activity_result_t.calories, c_activity_result_t.duration, c_activity_result_t.MHR_zone, sizeof(cywee_activity_result_t));
+            CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+            break;
+
+        // 长时间动作侦测
+        case SPORT_ACTIVE_MODE_AR_ALERT:
+            PRINT("CYWEE_MSG_TYPE_AR_ALERT_UPDATE\r\n");
+            memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
+            PRINT("activit_mode[%d], ar alert type[%d], len[%d]\n",
+                  c_activity_result_t.activity_mode, c_activity_result_t.ar_alert_type, sizeof(cywee_activity_result_t));
+            CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+            break;
+
+        // 额外信息
+        case SPORT_ACTIVE_MODE_EXTRA_INFO:
+            PRINT("CYWEE_MSG_TYPE_EXTRA_INFO_UPDATE\r\n");
+            memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
+            PRINT("average step frequency[%d], average step length[%d], average pace[%d], max step frequency[%d], max pace[%d], len[%d]\n",
+                  c_activity_result_t.avg_step_freq, c_activity_result_t.avg_step_len, c_activity_result_t.avg_pace, c_activity_result_t.max_step_freq, c_activity_result_t.max_pace, sizeof(cywee_activity_result_t));
+            CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+            break;
+        default:
+            break;
         }
-    }else if(msg_type == CYWEE_MSG_TYPE_INACTIVITY_UPDATE){
+    }
+    else if (msg_type == CYWEE_MSG_TYPE_INACTIVITY_UPDATE)
+    {
+        memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
+        switch (c_inactivity_result_t.inactivity_mode)
+        {
+        // 久坐
+        case INACTIVITY_MODE_SEDENTARY_OUTPUT:
+            memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
+            PRINT("inactivity_mode_number[%d], sedentary status[%d], stand freq[%d], len[%d]\n",
+                  c_inactivity_result_t.inactivity_mode, c_inactivity_result_t.sedentary_status,
+                  c_inactivity_result_t.stand_freq, sizeof(cywee_inactivity_result_t));
+            CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+            break;
+
+        // 睡眠
+        case INACTIVITY_MODE_SLEEPING_OUTPUT:
+            memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
+            PRINT("inactivity_mode_number[%d], sleep status[%d], month[%d], day[%d], hour[%d], min[%d], len[%d]\n",
+                  c_inactivity_result_t.inactivity_mode, c_inactivity_result_t.sleep_status,
+                  c_inactivity_result_t.month, c_inactivity_result_t.day,
+                  c_inactivity_result_t.hour, c_inactivity_result_t.minute,
+                  sizeof(cywee_inactivity_result_t));
+            CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+            break;
+
+        // 睡眠累计
+        case INACTIVITY_MODE_SLEEPING_ACCUMULATE_TIME_OUTPUT:
             memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
-            switch (c_inactivity_result_t.inactivity_mode)
-            {
-                //久坐
-                case INACTIVITY_MODE_SEDENTARY_OUTPUT:
-                    memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
-                    PRINT("inactivity_mode_number[%d], sedentary status[%d], stand freq[%d], len[%d]\n",
-                    c_inactivity_result_t.inactivity_mode,c_inactivity_result_t.sedentary_status,
-                    c_inactivity_result_t.stand_freq,sizeof(cywee_inactivity_result_t));
-                    CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-                    break;
-
-                //睡眠
-                case INACTIVITY_MODE_SLEEPING_OUTPUT:
-                    memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
-                    PRINT("inactivity_mode_number[%d], sleep status[%d], month[%d], day[%d], hour[%d], min[%d], len[%d]\n",
-                    c_inactivity_result_t.inactivity_mode,c_inactivity_result_t.sleep_status,
-                    c_inactivity_result_t.month,c_inactivity_result_t.day,
-                    c_inactivity_result_t.hour,c_inactivity_result_t.minute,
-                    sizeof(cywee_inactivity_result_t));
-                    CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-                    break;
-
-                //睡眠累计
-                case INACTIVITY_MODE_SLEEPING_ACCUMULATE_TIME_OUTPUT:
-                    memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
-                    PRINT("inactivity_mode_number[%d], total sleep time[%d], total nap time[%d], total deep sleep time[%d], total wake time[%d], total rem sleep time[%d], len[%d]\n",
-                    c_inactivity_result_t.inactivity_mode,c_inactivity_result_t.total_sleep_time,c_inactivity_result_t.total_mild_sleep_time,
-                    c_inactivity_result_t.total_deep_sleep_time,c_inactivity_result_t.total_wake_time,c_inactivity_result_t.total_rem_sleep_time,
-                    c_inactivity_result_t.stand_freq,sizeof(cywee_inactivity_result_t));
-                    CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-                    break;
-
-                //小睡
-                case INACTIVITY_MODE_NAP_OUTPUT:
-                    memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
-                    PRINT("inactivity_mode_number[%d], nap status[%d], month[%d], day[%d], hour[%d], min[%d], len[%d]\n",
-                    c_inactivity_result_t.inactivity_mode,c_inactivity_result_t.nap_status,c_inactivity_result_t.month,
-                    c_inactivity_result_t.day,c_inactivity_result_t.hour,c_inactivity_result_t.minute,sizeof(cywee_inactivity_result_t));
-                    CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-                    break;
-        
-                //小睡累计
-                case INACTIVITY_MODE_NAP_ACCUMULATE_TIME_OUTPUT:
-                    memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
-                    PRINT("inactivity_mode_number[%d], total nap time[%d], total mild time[%d], total deep sleep time[%d], total wake time[%d], total rem sleep time[%d], len[%d]\n",
-                    c_inactivity_result_t.inactivity_mode,c_inactivity_result_t.total_nap_time,c_inactivity_result_t.total_mild_sleep_time,
-                    c_inactivity_result_t.total_deep_sleep_time,c_inactivity_result_t.total_wake_time,c_inactivity_result_t.total_rem_sleep_time,
-                    c_inactivity_result_t.stand_freq,sizeof(cywee_inactivity_result_t));
-                    CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-                    break;
-            }
+            PRINT("inactivity_mode_number[%d], total sleep time[%d], total nap time[%d], total deep sleep time[%d], total wake time[%d], total rem sleep time[%d], len[%d]\n",
+                  c_inactivity_result_t.inactivity_mode, c_inactivity_result_t.total_sleep_time, c_inactivity_result_t.total_mild_sleep_time,
+                  c_inactivity_result_t.total_deep_sleep_time, c_inactivity_result_t.total_wake_time, c_inactivity_result_t.total_rem_sleep_time,
+                  c_inactivity_result_t.stand_freq, sizeof(cywee_inactivity_result_t));
+            CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+            break;
+
+        // 小睡
+        case INACTIVITY_MODE_NAP_OUTPUT:
+            memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
+            PRINT("inactivity_mode_number[%d], nap status[%d], month[%d], day[%d], hour[%d], min[%d], len[%d]\n",
+                  c_inactivity_result_t.inactivity_mode, c_inactivity_result_t.nap_status, c_inactivity_result_t.month,
+                  c_inactivity_result_t.day, c_inactivity_result_t.hour, c_inactivity_result_t.minute, sizeof(cywee_inactivity_result_t));
+            CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+            break;
+
+        // 小睡累计
+        case INACTIVITY_MODE_NAP_ACCUMULATE_TIME_OUTPUT:
+            memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
+            PRINT("inactivity_mode_number[%d], total nap time[%d], total mild time[%d], total deep sleep time[%d], total wake time[%d], total rem sleep time[%d], len[%d]\n",
+                  c_inactivity_result_t.inactivity_mode, c_inactivity_result_t.total_nap_time, c_inactivity_result_t.total_mild_sleep_time,
+                  c_inactivity_result_t.total_deep_sleep_time, c_inactivity_result_t.total_wake_time, c_inactivity_result_t.total_rem_sleep_time,
+                  c_inactivity_result_t.stand_freq, sizeof(cywee_inactivity_result_t));
+            CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+            break;
         }
-        else
-            PRINT("Unknown sensor message type");
+    }
+    else
+        PRINT("Unknown sensor message type");
 }
 
-
 static void cywee_service_timer_start_check(uint32_t rtc_ms)
 {
-    
-    if (g_cywee_service_timer == NULL) return ;
-    if (g_bat_timer_is_running )  osTimerStop(g_cywee_service_timer);
-    if (cywee_service_running_stat == true) osTimerStart(g_cywee_service_timer, rtc_ms);
+
+    if (g_cywee_service_timer == NULL)
+        return;
+    if (g_bat_timer_is_running)
+        osTimerStop(g_cywee_service_timer);
+    if (cywee_service_running_stat == true)
+        osTimerStart(g_cywee_service_timer, rtc_ms);
     g_bat_timer_is_running = true;
-    
 }
 
-static void cywee_service_check_timer_callback(void * data)
+static void cywee_service_check_timer_callback(void *data)
 {
     unused(data);
     g_bat_timer_is_running = false;
-    if(cywee_service_running_stat == true){
-        do_cywee_service_check_msg(CYWEE_SERVICE_CMD_TIMER_CHECK,NULL);
+    if (cywee_service_running_stat == true)
+    {
+        do_cywee_service_check_msg(CYWEE_SERVICE_CMD_TIMER_CHECK, NULL);
         // cywee_service_timer_start_check(CYWEE_CHECK_MS);
     }
 }
@@ -216,18 +219,16 @@ void uapi_cywee_service_deinit(void)
 {
     /* Stop the time and clear the pin map */
 
-    if (g_cywee_service_timer == NULL) return ;
+    if (g_cywee_service_timer == NULL)
+        return;
 
     osTimerStop(g_cywee_service_timer);
     osTimerDelete(g_cywee_service_timer);
     g_cywee_service_timer = NULL;
     g_bat_timer_is_running = false;
-
 }
 
-
-
-void do_cywee_service_check_msg(int cmd,int data[])
+void do_cywee_service_check_msg(int cmd, int data[])
 {
     int ret;
 
@@ -236,10 +237,10 @@ void do_cywee_service_check_msg(int cmd,int data[])
     mail.data[0] = data[0];
     mail.data[1] = data[1];
     ret = osal_msg_queue_write_copy(g_cywee_queue, (void *)&mail, sizeof(cywee_cmd_t), 0);
-    if (ret != OSAL_SUCCESS) {
-        PRINT("Error cywee Check MSG 0x%02X send failed! err=0x%x! \r\n",cmd, ret);
+    if (ret != OSAL_SUCCESS)
+    {
+        PRINT("Error cywee Check MSG 0x%02X send failed! err=0x%x! \r\n", cmd, ret);
     }
-    
 }
 
 static void cywee_service_check_task(void const *arg)
@@ -249,78 +250,109 @@ static void cywee_service_check_task(void const *arg)
     cywee_cmd_t mail;
     uint32_t msgsize = (uint32_t)sizeof(cywee_cmd_t);
 
-    while (1) {
+    while (1)
+    {
         ret = osal_msg_queue_read_copy(g_cywee_queue, (void *)&mail, &msgsize,
                                        OSAL_MSGQ_WAIT_FOREVER);
-        if (ret != OSAL_SUCCESS) {
+        if (ret != OSAL_SUCCESS)
+        {
             continue;
         }
 
-        if (mail.cmd == CYWEE_SERVICE_CMD_TIMER_CHECK) {
+        if (mail.cmd == CYWEE_SERVICE_CMD_TIMER_CHECK)
+        {
             cywee_int_handler();
             // lis2doc_read_data();
-           // printf("CYWEE_SERVICE_CMD_TIMER_CHECK\r\n");
-        }else if (mail.cmd == CYWEE_SERVICE_CMD_TEST){
+            // printf("CYWEE_SERVICE_CMD_TIMER_CHECK\r\n");
+        }
+        else if (mail.cmd == CYWEE_SERVICE_CMD_TEST)
+        {
             test_api();
-        }else if (mail.cmd == CYWEE_SERVICE_CMD_START_CHECK){
+        }
+        else if (mail.cmd == CYWEE_SERVICE_CMD_START_CHECK)
+        {
             cywee_service_running_stat = true;
             cywee_main_dml(SPORT_ACTIVE_MODE_NORMAL);
             cywee_service_timer_start_check(CYWEE_CHECK_MS);
-        }else if (mail.cmd == CYWEE_SERVICE_CMD_STOP_CHECK){
+        }
+        else if (mail.cmd == CYWEE_SERVICE_CMD_STOP_CHECK)
+        {
             cywee_service_running_stat = false;
-            if (g_cywee_service_timer != NULL) osTimerStop(g_cywee_service_timer);
+            if (g_cywee_service_timer != NULL)
+                osTimerStop(g_cywee_service_timer);
         }
-        else if (mail.cmd == CYWEE_SERVICE_CMD_NORMAL_MODE){
+        else if (mail.cmd == CYWEE_SERVICE_CMD_NORMAL_MODE)
+        {
             cywee_service_running_stat = true;
             cywee_main_dml(SPORT_ACTIVE_MODE_NORMAL);
             cywee_service_timer_start_check(CYWEE_CHECK_MS);
-        }else if(mail.cmd == CYWEE_SERVICE_CMD_TREADMILL_MODE){
+        }
+        else if (mail.cmd == CYWEE_SERVICE_CMD_TREADMILL_MODE)
+        {
             cywee_service_running_stat = true;
             cywee_main_dml(SPORT_ACTIVE_MODE_TREADMILL);
             cywee_service_timer_start_check(CYWEE_CHECK_MS);
-        }else if(mail.cmd == CYWEE_SERVICE_CMD_OUTDOOR_RUNNING_MODE){
+        }
+        else if (mail.cmd == CYWEE_SERVICE_CMD_OUTDOOR_RUNNING_MODE)
+        {
             cywee_service_running_stat = true;
             cywee_main_dml(SPORT_ACTIVE_MODE_OUTDOOR_RUNNING);
             cywee_service_timer_start_check(CYWEE_CHECK_MS);
-        }else if(mail.cmd == CYWEE_SERVICE_CMD_INDOOR_RUNNING_MODE){
+        }
+        else if (mail.cmd == CYWEE_SERVICE_CMD_INDOOR_RUNNING_MODE)
+        {
             cywee_service_running_stat = true;
             cywee_main_dml(SPORT_ACTIVE_MODE_INDOOR_RUNNING);
             cywee_service_timer_start_check(CYWEE_CHECK_MS);
-        }else if(mail.cmd == CYWEE_SERVICE_CMD_FITNESS_PEDOMETER_MODE){
+        }
+        else if (mail.cmd == CYWEE_SERVICE_CMD_FITNESS_PEDOMETER_MODE)
+        {
             cywee_service_running_stat = true;
             cywee_main_dml(SPORT_ACTIVE_MODE_FITNESS_PEDOMETERR);
             cywee_service_timer_start_check(CYWEE_CHECK_MS);
-        }else if(mail.cmd == CYWEE_SERVICE_CMD_FREE_TRAINING_MODE){
+        }
+        else if (mail.cmd == CYWEE_SERVICE_CMD_FREE_TRAINING_MODE)
+        {
             cywee_service_running_stat = true;
             cywee_main_dml(SPORT_ACTIVE_MODE_FREE_TRAINING);
             cywee_service_timer_start_check(CYWEE_CHECK_MS);
-        }else if(mail.cmd == CYWEE_SERVICE_CMD_AR_ALERT_MODE){
+        }
+        else if (mail.cmd == CYWEE_SERVICE_CMD_AR_ALERT_MODE)
+        {
             cywee_service_running_stat = true;
             cywee_main_dml(SPORT_ACTIVE_MODE_AR_ALERT);
             cywee_service_timer_start_check(CYWEE_CHECK_MS);
-        }else if(mail.cmd == CYWEE_SERVICE_CMD_PAUSE){
+        }
+        else if (mail.cmd == CYWEE_SERVICE_CMD_PAUSE)
+        {
             activity_mode_setstatus(1);
-        }else if(mail.cmd == CYWEE_SERVICE_CMD_RESUME){
+        }
+        else if (mail.cmd == CYWEE_SERVICE_CMD_RESUME)
+        {
             activity_mode_setstatus(0);
-        }else if(mail.cmd == CYWEE_SERVICE_CMD_ONCHARGING_CHANGE)
+        }
+        else if (mail.cmd == CYWEE_SERVICE_CMD_ONCHARGING_CHANGE)
         {
             cywee_oncharging_update(mail.data[0]);
-        }else if(mail.cmd == CYWEE_SERVICE_CMD_WEAR_STATUS_CHANGE)
+        }
+        else if (mail.cmd == CYWEE_SERVICE_CMD_WEAR_STATUS_CHANGE)
         {
             cywee_wearstatus_update(mail.data[0]);
-        }else if(mail.cmd == CYWEE_SERVICE_CMD_HRS_WEARSTATUS_CHANGE)
+        }
+        else if (mail.cmd == CYWEE_SERVICE_CMD_HRS_WEARSTATUS_CHANGE)
         {
-            cywee_hrs_wearstatus_update(mail.data[0],mail.data[1]);
+            cywee_hrs_wearstatus_update(mail.data[0], mail.data[1]);
         }
     }
 }
 #define CYWEE_APP_BOARD_MSG_COUNT 50
 #define CYWEE_APP_BOARD_TASK_SIZE 0x1100
-#define CYWEE_BOARD_TASK_PRIO     7
+#define CYWEE_BOARD_TASK_PRIO 7
 void create_cywee_queue(void)
 {
     if (osal_msg_queue_create("cywee_service_queue", CYWEE_APP_BOARD_MSG_COUNT, &g_cywee_queue,
-                              0, sizeof(cywee_cmd_t)) != ERRCODE_SUCC) {
+                              0, sizeof(cywee_cmd_t)) != ERRCODE_SUCC)
+    {
         printf("[cywee][service] app create mail fail\n");
     }
 }
@@ -328,26 +360,26 @@ errcode_t uapi_cywee_service_init(void)
 {
 
     PRINT("uapi_cywee_service_init !\r\n");
-    app_task_definition_t taskcfg={0};
+    app_task_definition_t taskcfg = {0};
     taskcfg.create_queue_handle = create_cywee_queue;
-    taskcfg.attr.name="cywee_service";
+    taskcfg.attr.name = "cywee_service";
     taskcfg.attr.priority = osPriorityNormal;
     taskcfg.attr.stack_size = CYWEE_APP_BOARD_TASK_SIZE;
     taskcfg.func = cywee_service_check_task;
     taskcfg.use_mem = USE_DTCM_MEM;
-    
-    errcode_t ret=uapi_create_osThread_custom(&taskcfg);
-    if(ret != ERRCODE_SUCC)
+
+    errcode_t ret = uapi_create_osThread_custom(&taskcfg);
+    if (ret != ERRCODE_SUCC)
     {
-        PRINT("create cywee_service failed %d!\r\n",ret);
+        PRINT("create cywee_service failed %d!\r\n", ret);
         return ERRCODE_FAIL;
     }
 
     g_cywee_service_timer = osTimerNew((osTimerFunc_t)cywee_service_check_timer_callback, osTimerPeriodic, NULL, NULL);
-  
+
     cywee_register_msg_callback(cywee_msg_callback);
-    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_START_CHECK,NULL);
-    
+    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_START_CHECK, NULL);
+
     return ERRCODE_SUCC;
 }