优化精简运动模式与睡眠模式消息发送
authorpenglei <1624952103@qq.com>
Thu, 27 Jun 2024 07:25:07 +0000 (15:25 +0800)
committerpenglei <1624952103@qq.com>
Thu, 27 Jun 2024 07:25:07 +0000 (15:25 +0800)
code/sdk/application/wearable/service/broadcast/include/broadcast_feature.h
code/sdk/application/wearable/service/broadcast/src/broadcast_implement.c
code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp
code/sdk/drivers/peripheral/cywee/Inc/cywee_hal.h
code/sdk/drivers/peripheral/cywee/service/cywee_service.c
code/sdk/drivers/peripheral/cywee/src/main_dml.c
code/sdk/drivers/peripheral/utils/custom_utils.c

index 7f0757d..69c5564 100644 (file)
@@ -49,7 +49,9 @@ typedef enum {
     TOPIC_EVENT_HFP_WATCH_TO_PHONE,
 #ifdef CYWEE_SPORT
     TOPIC_EVENT_ACTIVITY_UPDATE,
+    TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE,
     TOPIC_EVENT_INACTIVITY_UPDATE,
+    TOPIC_EVENT_INACTIVITY_ACCUMULATE_TIME_UPDATE,
     TOPIC_EVENT_BLE_TRAINING,
     TOPIC_EVENT_BLE_TRANSMIT,
 #endif
index c8194eb..c6190ac 100644 (file)
@@ -30,7 +30,9 @@ static const TopicToCore topicToCoreArray[] = {
     {TOPIC_EVENT_HEARTRATE_UPDATA, A_CORE_MASK, 1},
 #ifdef CYWEE_SPORT    
     {TOPIC_EVENT_ACTIVITY_UPDATE, A_CORE_MASK, 1},
+    {TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE, A_CORE_MASK, 1},
     {TOPIC_EVENT_INACTIVITY_UPDATE, A_CORE_MASK, 1},
+    {TOPIC_EVENT_INACTIVITY_ACCUMULATE_TIME_UPDATE, A_CORE_MASK, 1},
     {TOPIC_EVENT_BLE_TRAINING,A_CORE_MASK,1},
     {TOPIC_EVENT_BLE_TRANSMIT,A_CORE_MASK,1},
     
index 14e37f6..22a1d28 100644 (file)
@@ -63,8 +63,10 @@ const PriorityMapper PRI_MAPPER[] = {
     {TOPIC_EVENT_ON_TIME,PRIORITY_TWO},
     {TOPIC_EVENT_NEXTDAY_UPDATE, PRIORITY_TWO},
     {TOPIC_EVENT_ACTIVITY_UPDATE,PRIORITY_TWO},
+    {TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE,PRIORITY_TWO},
     {TOPIC_EVENT_STEPDATA_UPDATE,PRIORITY_TWO},
     {TOPIC_EVENT_INACTIVITY_UPDATE,PRIORITY_TWO},
+    {TOPIC_EVENT_INACTIVITY_ACCUMULATE_TIME_UPDATE,PRIORITY_TWO},
     {TOPIC_EVENT_BLE_TRAINING,PRIORITY_TWO},
     {TOPIC_EVENT_BLE_TRANSMIT,PRIORITY_TWO},
 #ifdef SUPPORT_CHARGER_PLUG_DETECTION_NOTIFICATION
@@ -139,7 +141,9 @@ void MsgCenterSubscribe()
     MsgCenterSubscribeTopic(TOPIC_EVENT_HFP_WATCH_TO_PHONE);
 #ifdef CYWEE_SPORT
     MsgCenterSubscribeTopic(TOPIC_EVENT_ACTIVITY_UPDATE);
+    MsgCenterSubscribeTopic(TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE);
     MsgCenterSubscribeTopic(TOPIC_EVENT_INACTIVITY_UPDATE);
+    MsgCenterSubscribeTopic(TOPIC_EVENT_INACTIVITY_ACCUMULATE_TIME_UPDATE);
     MsgCenterSubscribeTopic(TOPIC_EVENT_BLE_TRAINING);
     MsgCenterSubscribeTopic(TOPIC_EVENT_BLE_TRANSMIT);
     
@@ -960,12 +964,16 @@ void MsgCenterNotifyActivityProc(const Topic topic, Request* req)
     if(c_activity_result_t->distance!=0)
     set_distance_data(c_activity_result_t->distance);
 
-    if(c_activity_result_t->MHR>=2)
+    if(c_activity_result_t->MHR_zone>=2)
     set_fat_time_data();
 
+}
 
-
+void MsgCenterNotifyActivityExtraInfoProc(const Topic topic, Request* req)
+{
+    unused(topic);
 }
+
 void MsgCenterNotifyInactivityProc(const Topic topic, Request *req)
 {
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "MsgCenterNotifyInactivityProc !");
@@ -988,9 +996,9 @@ void MsgCenterNotifyInactivityProc(const Topic topic, Request *req)
         return;
     }
       
-    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "cywee_Inactivity_Info->sedentary_status = %d, stand_freq = %d", cywee_Inactivity_Info->sedentary_status, cywee_Inactivity_Info->stand_freq);
+    WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "cywee_Inactivity_Info->sedentary_status = %d, stand_freq = %d", cywee_Inactivity_Info->status, cywee_Inactivity_Info->stand_freq);
     WEARABLE_LOGI(WEARABLE_LOG_MODULE_APP, "cywee_Inactivity_Info->output_number = %d", cywee_Inactivity_Info->output_number);
-    if(cywee_Inactivity_Info->sedentary_status==9)
+    if(cywee_Inactivity_Info->status==9)
     {
         set_stand_falg();
     }
@@ -999,7 +1007,7 @@ void MsgCenterNotifyInactivityProc(const Topic topic, Request *req)
     switch (cywee_Inactivity_Info->output_number)
     {
         case INACTIVITY_MODE_SEDENTARY_OUTPUT:
-            if(cywee_Inactivity_Info->sedentary_status == 1)
+            if(cywee_Inactivity_Info->status == 1)
             {
                 //NotificationManager::GetInstance()->ShowNotify(showSedentaryReminderNotify, (uint16_t)topic, true);
                 //根据久坐间隔时间和是否在设置的提醒时间段内判断是否弹出久坐视图
@@ -1017,6 +1025,12 @@ void MsgCenterNotifyInactivityProc(const Topic topic, Request *req)
     free(cywee_Inactivity_Info);
     cywee_Inactivity_Info = NULL;
 }
+
+void MsgCenterNotifyInactivityAccumulateTimeProc(const Topic topic, Request* req)
+{
+    unused(topic);
+}
+
 //APP运动相关
 void MsgCenterNotifybleAPPtraining(const Topic topic, Request* req)
 {
@@ -1081,7 +1095,9 @@ static MsgCenterNotifyTable g_msgCenterNotifyTable[] = {
     {TOPIC_EVENT_HFP_PHONE_TO_WATCH, MsgCenterNotifyHfpWatchProc},
  #ifdef CYWEE_SPORT   
     {TOPIC_EVENT_ACTIVITY_UPDATE,       MsgCenterNotifyActivityProc},
+    {TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE,       MsgCenterNotifyActivityExtraInfoProc},
     {TOPIC_EVENT_INACTIVITY_UPDATE,       MsgCenterNotifyInactivityProc},
+    {TOPIC_EVENT_INACTIVITY_ACCUMULATE_TIME_UPDATE,       MsgCenterNotifyInactivityAccumulateTimeProc},
     {TOPIC_EVENT_BLE_TRAINING,       MsgCenterNotifybleAPPtraining},
     {TOPIC_EVENT_BLE_TRANSMIT,       MsgCenterNotifybleTransmit},
     
index 870ceaf..f9d8d53 100644 (file)
@@ -450,50 +450,59 @@ typedef struct
 #pragma pack(1)
 typedef struct 
 {
-    int activity_mode;
-    int steps;
-    int distance;
-    int calories;
-    int step_frequency;
-    int step_length;
-    int pace;
-    int avg_step_freq;
-    int avg_step_len;
-    int avg_pace;
-    int max_step_freq;
-    int max_pace;
-    int hrs;
-    int duration;
-    int MHR;
+    int activity_mode;//模式
+    int steps;//步数
+    int distance;//距离
+    int calories;//卡路里
+    int step_frequency;//步频
+    int step_length;//步幅
+    int pace;//配速
+    int BMR_calories;//基础卡路里
+    int hrs;//心率
+    int duration;//持续时间
+    int MHR_zone;//心率区间
 }cywee_activity_result_t;
 
+typedef struct 
+{
+    int avg_step_freq;//平均步频
+    int avg_step_len;//平均步长
+    int avg_pace;//平均配速
+    int max_step_freq;//最大步频
+    int max_pace;//最大配速
+    int activity_zone;//活动程度区间 0低度 1中度 2高度
+    int ativity_zone_moderate_duration;//中度活动时间
+    int ativity_zone_high_duration;//高度活动时间
+    int MHR_zone;//心率区间
+    int distance_motion;//体感距离
+}cywee_activity_result_extre_info_t;
+
 typedef struct 
 {
     int output_number;
-    int sedentary_status;
-    int sleep_status;
-    int nap_status;
-    int stand_freq;
+    int status;//状态
+    int stand_freq;//站立次数
     int month;
     int day;
     int hour;
     int minute;
-    int total_sleep_time;
-    int total_nap_time;
-    int total_mild_sleep_time;
-    int total_deep_sleep_time;
-    int total_wake_time;
-    int total_rem_sleep_time;
 }cywee_inactivity_result_t;
 
-
+typedef struct 
+{
+    int total_time;//总共睡眠时间
+    int total_mild_sleep_time;//总共浅睡时间
+    int total_deep_sleep_time;//总共深睡时间
+    int total_wake_time;//总共清醒时间
+    int total_rem_sleep_time;//动眼
+}cywee_inactivity_accumulate_time_t;
 
 #pragma pack()
 typedef enum{
     CYWEE_MSG_TYPE_ACTIVITY_UPDATE,
     CYWEE_MSG_TYPE_ACTIVITY_EXTRA_INFO_UPDATE,
     CYWEE_MSG_TYPE_INACTIVITY_UPDATE,
-    CYWEE_MSG_TYPE_INACTIVITY_EXTRA_INFO_UPDATE,
+    CYWEE_MSG_TYPE_INACTIVITY_ACCUMULATE_TIME_UPDATE,
 } cywee_msg_type_t;
 
 extern void get_gsonsen_xyz(gsenson_t *t);
index 824b2b4..0c117f8 100644 (file)
@@ -62,124 +62,123 @@ void cywee_msg_callback(uint8_t msg_type, uint8_t *msg_data, int32_t msg_datalen
     PRINT("cywee_msg_callback\r\n");
     cywee_activity_result_t c_activity_result_t;
     cywee_inactivity_result_t c_inactivity_result_t;
+    cywee_activity_result_extre_info_t c_activity_result_extre_info_t;
+    cywee_inactivity_accumulate_time_t c_inactivity_accumulate_time_t;
 
     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],hrs[%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.hrs);
-            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],hrs[%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.hrs);
-            CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
-            break;
-        case SPORT_ACTIVE_MODE_OUTDOOR_RUNNING:
-            PRINT("CYWEE_MSG_TYPE_OUTDOOR_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],hrs[%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.hrs);
-            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],hrs[%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.hrs);
-            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],hrs[%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.hrs);
-            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],hrs[%d]\n",
-                  c_activity_result_t.activity_mode, c_activity_result_t.calories, c_activity_result_t.hrs);
-            CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
-            break;
+            case SPORT_ACTIVE_MODE_NORMAL:
+                PRINT("normal mode activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d],hrs[%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.hrs);
+                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],hrs[%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.hrs);
+                CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+                break;
+            case SPORT_ACTIVE_MODE_OUTDOOR_RUNNING:
+                PRINT("CYWEE_MSG_TYPE_OUTDOOR_RUNNING_UPDATE\r\n");
+                memcpy(&c_activity_result_t, msg_data, sizeof(cywee_activity_result_t));
+                PRINT("outdoor running activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d],hrs[%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.hrs);
+                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("indoor running activit_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d],hrs[%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.hrs);
+                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],hrs[%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.hrs);
+                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]\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);
-            CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
-            break;
-        default:
-            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("free training activit_mode[%d], calories[%d],MHR_zone[%d],hrs[%d]\n",
+                    c_activity_result_t.activity_mode, c_activity_result_t.calories, c_activity_result_t.MHR_zone,c_activity_result_t.hrs);
+                CustomEventPublish(TOPIC_EVENT_ACTIVITY_UPDATE, &c_activity_result_t, sizeof(cywee_activity_result_t));
+                break;
+            default:
+                break;
         }
-    }
+    } 
+    else if (msg_type == CYWEE_MSG_TYPE_ACTIVITY_EXTRA_INFO_UPDATE)
+    {
+        PRINT("CYWEE_MSG_TYPE_ACTIVITY_EXTRA_INFO_UPDATE\r\n");
+        memcpy(&c_activity_result_extre_info_t, msg_data, sizeof(cywee_activity_result_extre_info_t));
+        PRINT("avg_step_freq[%d],avg_step_len[%d],avg_pace[%d],max_step_freq[%d],max_pace[%d],activity_zone[%d],ativity_zone_moderate_duration[%d],ativity_zone_high_duration[%d],MHR_zone[%d],distance_motion[%d]\n",
+            c_activity_result_extre_info_t.avg_step_freq, c_activity_result_extre_info_t.avg_step_len,
+            c_activity_result_extre_info_t.avg_pace,c_activity_result_extre_info_t.max_step_freq,
+            c_activity_result_extre_info_t.max_pace,c_activity_result_extre_info_t.activity_zone,
+            c_activity_result_extre_info_t.ativity_zone_moderate_duration,
+            c_activity_result_extre_info_t.ativity_zone_high_duration,
+            c_activity_result_extre_info_t.MHR_zone,
+            c_activity_result_extre_info_t.distance_motion);
+        CustomEventPublish(TOPIC_EVENT_ACTIVITY_EXTRA_INFO_UPDATE, &c_activity_result_extre_info_t, sizeof(cywee_activity_result_extre_info_t));
+
+    } 
     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.output_number)
         {
-        // 久坐
-        case INACTIVITY_MODE_SEDENTARY_OUTPUT:
-            memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
-            PRINT("sedentary status[%d], stand freq[%d]\n",
-                  c_inactivity_result_t.sedentary_status,c_inactivity_result_t.stand_freq);
-            CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t));
-            break;
+            // 久坐
+            case INACTIVITY_MODE_SEDENTARY_OUTPUT:
+                memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
+                PRINT("sedentary status[%d], stand freq[%d], day[%d], hour[%d], min[%d]\n",
+                    c_inactivity_result_t.status,c_inactivity_result_t.stand_freq,c_inactivity_result_t.day,c_inactivity_result_t.hour,c_inactivity_result_t.minute);
+                CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t));
+                break;
 
-        // 睡眠
-        case INACTIVITY_MODE_SLEEPING_OUTPUT:
-            memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
-            PRINT("sleep status[%d], month[%d], day[%d], hour[%d], min[%d]\n",
-                  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_inactivity_result_t, sizeof(cywee_inactivity_result_t));
-            break;
+            // 睡眠
+            case INACTIVITY_MODE_SLEEPING_OUTPUT:
+                memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
+                PRINT("sleep status[%d], month[%d], day[%d], hour[%d], min[%d]\n",
+                    c_inactivity_result_t.status,c_inactivity_result_t.month, c_inactivity_result_t.day,
+                    c_inactivity_result_t.hour, c_inactivity_result_t.minute);
+                CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t));
+                break;
 
+            // 小睡
+            case INACTIVITY_MODE_NAP_OUTPUT:
+                memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
+                PRINT("nap status[%d], month[%d], day[%d], hour[%d], min[%d]\n",
+                    c_inactivity_result_t.status, c_inactivity_result_t.month,
+                    c_inactivity_result_t.day, c_inactivity_result_t.hour, c_inactivity_result_t.minute);
+                CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t));
+                break;
+        }
+    }
+    else if (msg_type == CYWEE_MSG_TYPE_INACTIVITY_ACCUMULATE_TIME_UPDATE)
+    {
         // 睡眠累计
-        case INACTIVITY_MODE_SLEEPING_ACCUMULATE_TIME_OUTPUT:
-            memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
-            PRINT("total sleep time[%d], total nap time[%d], total deep sleep time[%d], total wake time[%d], total rem sleep time[%d]\n",
-                  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);
-            CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t));
-            break;
-
-        // 小睡
-        case INACTIVITY_MODE_NAP_OUTPUT:
-            memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
-            PRINT("nap status[%d], month[%d], day[%d], hour[%d], min[%d]\n",
-                  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);
-            CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t));
-            break;
+        memcpy(&c_inactivity_accumulate_time_t, msg_data, sizeof(cywee_inactivity_accumulate_time_t));
+        PRINT("total sleep time[%d], total mild sleep time[%d], total deep sleep time[%d], total wake time[%d], total rem sleep time[%d]\n",
+            c_inactivity_accumulate_time_t.total_time, c_inactivity_accumulate_time_t.total_mild_sleep_time,
+            c_inactivity_accumulate_time_t.total_deep_sleep_time, c_inactivity_accumulate_time_t.total_wake_time, 
+            c_inactivity_accumulate_time_t.total_rem_sleep_time);
+        CustomEventPublish(TOPIC_EVENT_INACTIVITY_ACCUMULATE_TIME_UPDATE, &c_inactivity_accumulate_time_t, sizeof(cywee_inactivity_accumulate_time_t));
 
-        // 小睡累计
-        case INACTIVITY_MODE_NAP_ACCUMULATE_TIME_OUTPUT:
-            memcpy(&c_inactivity_result_t, msg_data, sizeof(cywee_inactivity_result_t));
-            PRINT("total nap time[%d], total mild time[%d], total deep sleep time[%d], total wake time[%d], total rem sleep time[%d]\n",
-                  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);
-            CustomEventPublish(TOPIC_EVENT_INACTIVITY_UPDATE, &c_inactivity_result_t, sizeof(cywee_inactivity_result_t));
-            break;
-        }
     }
+
     else
         PRINT("Unknown sensor message type");
 }
index 6af8472..b090644 100644 (file)
@@ -32,8 +32,6 @@ static int16 right_falg=-1;
 
 SettingControl_t scl;
 
-cywee_activity_result_t c_activity_result_t;
-cywee_inactivity_result_t c_inactivity_result_t;
 static uint8_t cywee_installized = 0 ;
 
 CustomSensorData csd;
@@ -480,6 +478,11 @@ void gsensor_get_n_data(uint8_t cnt,gsenson_t t[])
 //static int flag=32;
 void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
     cywee_msg_callback_t cywee_func;
+    cywee_activity_result_t c_activity_result_t;
+    cywee_inactivity_result_t c_inactivity_result_t;
+    cywee_inactivity_accumulate_time_t c_inactivity_accumulate_time_t;
+    cywee_activity_result_extre_info_t c_activity_result_extre_info_t;
+    
     switch (sensorEVT->sensorType) {
         case IDX_ACCEL:
         gxyz_t.x = sensorEVT->fData[0];
@@ -608,20 +611,18 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
             CWM_OS_dbgPrintf("IDX_ALGO_INACTIVITY_OUTPUT\n");
             if((int)sensorEVT->fData[0] == 20)
             {
-                CWM_OS_dbgPrintf("inactivity_mode_number[%d], sedentary status[%d], stand freq[%d], day[%d], hour[%d], min[%d]\n",
-                                (int)sensorEVT->fData[15],
-                                (int)sensorEVT->fData[2],
-                                (int)sensorEVT->fData[3],
-                                (int)sensorEVT->fData[8],
-                                (int)sensorEVT->fData[9],
-                                (int)sensorEVT->fData[10]);
+
                 memset(&c_inactivity_result_t,0,sizeof(cywee_inactivity_result_t));
+
                 c_inactivity_result_t.output_number = (int)sensorEVT->fData[0];
-                c_inactivity_result_t.output_number = (int)sensorEVT->fData[0];
-                c_inactivity_result_t.sedentary_status = (int)sensorEVT->fData[2];
+
+                c_inactivity_result_t.status = (int)sensorEVT->fData[2];
                 c_inactivity_result_t.stand_freq = (int)sensorEVT->fData[3];
+                c_inactivity_result_t.day = (int)sensorEVT->fData[8];
+                c_inactivity_result_t.hour = (int)sensorEVT->fData[9];
+                c_inactivity_result_t.minute = (int)sensorEVT->fData[10];
 
-                if(c_inactivity_result_t.sedentary_status == 1)
+                if(c_inactivity_result_t.status == 1)
                 {
                     sedentary_interval_count++;
                     if(sedentary_interval_count == sedentary_interval)
@@ -630,115 +631,92 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
                         cywee_func(CYWEE_MSG_TYPE_INACTIVITY_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t));
                     }
                 }
-                else if(c_inactivity_result_t.sedentary_status != 3)
+                else if(c_inactivity_result_t.status != 3)
                 {
                     sedentary_interval_count = 0;    
                     cywee_func(CYWEE_MSG_TYPE_INACTIVITY_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t)); 
                 }
 
             }else if((int)sensorEVT->fData[0] == 21){
-                CWM_OS_dbgPrintf("inactivity_mode_number[%d], sleep status[%d], month[%d], day[%d], hour[%d], min[%d]\n",
-                                (int)sensorEVT->fData[15],
-                                (int)sensorEVT->fData[2],
-                                (int)sensorEVT->fData[3],
-                                (int)sensorEVT->fData[4],
-                                (int)sensorEVT->fData[5],
-                                (int)sensorEVT->fData[6]);
+
                 memset(&c_inactivity_result_t,0,sizeof(cywee_inactivity_result_t));
+
                 c_inactivity_result_t.output_number = (int)sensorEVT->fData[0];
-                c_inactivity_result_t.sleep_status = (int)sensorEVT->fData[2];
+                c_inactivity_result_t.status = (int)sensorEVT->fData[2];
                 c_inactivity_result_t.month = (int)sensorEVT->fData[3];
                 c_inactivity_result_t.day = (int)sensorEVT->fData[4];
                 c_inactivity_result_t.hour = (int)sensorEVT->fData[5];
                 c_inactivity_result_t.minute = (int)sensorEVT->fData[6];
+
                 cywee_func(CYWEE_MSG_TYPE_INACTIVITY_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t));
 
             }else if((int)sensorEVT->fData[0] == 31){
-                CWM_OS_dbgPrintf("inactivity_mode_number[%d], total sleep time[%d], total mild time[%d], total deep sleep time[%d], total wake time[%d], total rem sleep time[%d]\n",
-                                (int)sensorEVT->fData[15],
-                                (int)sensorEVT->fData[1],
-                                (int)sensorEVT->fData[2],
-                                (int)sensorEVT->fData[3],
-                                (int)sensorEVT->fData[4],
-                                (int)sensorEVT->fData[5]);
-                memset(&c_inactivity_result_t,0,sizeof(cywee_inactivity_result_t));
-                c_inactivity_result_t.output_number = (int)sensorEVT->fData[0];
-                c_inactivity_result_t.total_sleep_time = (int)sensorEVT->fData[1];
-                c_inactivity_result_t.total_mild_sleep_time = (int)sensorEVT->fData[2];
-                c_inactivity_result_t.total_deep_sleep_time = (int)sensorEVT->fData[3];
-                c_inactivity_result_t.total_wake_time = (int)sensorEVT->fData[4];
-                c_inactivity_result_t.total_rem_sleep_time = (int)sensorEVT->fData[5];
-                cywee_func(CYWEE_MSG_TYPE_INACTIVITY_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t));
+
+                memset(&c_inactivity_accumulate_time_t,0,sizeof(cywee_inactivity_accumulate_time_t));
+
+                c_inactivity_accumulate_time_t.total_time = (int)sensorEVT->fData[1];
+                c_inactivity_accumulate_time_t.total_mild_sleep_time = (int)sensorEVT->fData[2];
+                c_inactivity_accumulate_time_t.total_deep_sleep_time = (int)sensorEVT->fData[3];
+                c_inactivity_accumulate_time_t.total_wake_time = (int)sensorEVT->fData[4];
+                c_inactivity_accumulate_time_t.total_rem_sleep_time = (int)sensorEVT->fData[5];
+
+                cywee_func(CYWEE_MSG_TYPE_INACTIVITY_ACCUMULATE_TIME_UPDATE,&c_inactivity_accumulate_time_t,sizeof(cywee_inactivity_accumulate_time_t));
 
             }else if((int)sensorEVT->fData[0] == 22){
-                CWM_OS_dbgPrintf("inactivity_mode_number[%d], nap status[%d], month[%d], day[%d], hour[%d], min[%d]\n",
-                                (int)sensorEVT->fData[15],
-                                (int)sensorEVT->fData[2],
-                                (int)sensorEVT->fData[3],
-                                (int)sensorEVT->fData[4],
-                                (int)sensorEVT->fData[5],
-                                (int)sensorEVT->fData[6]);
+
                 memset(&c_inactivity_result_t,0,sizeof(cywee_inactivity_result_t));
+
                 c_inactivity_result_t.output_number = (int)sensorEVT->fData[0];
-                c_inactivity_result_t.nap_status = (int)sensorEVT->fData[2];
+                c_inactivity_result_t.status = (int)sensorEVT->fData[2];
                 c_inactivity_result_t.month = (int)sensorEVT->fData[3];
                 c_inactivity_result_t.day = (int)sensorEVT->fData[4];
                 c_inactivity_result_t.hour = (int)sensorEVT->fData[5];
                 c_inactivity_result_t.minute = (int)sensorEVT->fData[6];
+
                 cywee_func(CYWEE_MSG_TYPE_INACTIVITY_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t));
 
             }else if((int)sensorEVT->fData[0] == 32){
-                CWM_OS_dbgPrintf("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]\n",
-                                (int)sensorEVT->fData[15],
-                                (int)sensorEVT->fData[1],
-                                (int)sensorEVT->fData[2],
-                                (int)sensorEVT->fData[3],
-                                (int)sensorEVT->fData[4],
-                                (int)sensorEVT->fData[5]);
-                memset(&c_inactivity_result_t,0,sizeof(cywee_inactivity_result_t));
-                c_inactivity_result_t.output_number = (int)sensorEVT->fData[0];
-                c_inactivity_result_t.total_nap_time = (int)sensorEVT->fData[1];
-                c_inactivity_result_t.total_mild_sleep_time = (int)sensorEVT->fData[2];
-                c_inactivity_result_t.total_deep_sleep_time = (int)sensorEVT->fData[3];
-                c_inactivity_result_t.total_wake_time = (int)sensorEVT->fData[4];
-                c_inactivity_result_t.total_rem_sleep_time = (int)sensorEVT->fData[5];
-                cywee_func(CYWEE_MSG_TYPE_INACTIVITY_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t));
+
+                memset(&c_inactivity_accumulate_time_t,0,sizeof(cywee_inactivity_accumulate_time_t));
+
+                c_inactivity_accumulate_time_t.total_time = (int)sensorEVT->fData[1];
+                c_inactivity_accumulate_time_t.total_mild_sleep_time = (int)sensorEVT->fData[2];
+                c_inactivity_accumulate_time_t.total_deep_sleep_time = (int)sensorEVT->fData[3];
+                c_inactivity_accumulate_time_t.total_wake_time = (int)sensorEVT->fData[4];
+                c_inactivity_accumulate_time_t.total_rem_sleep_time = (int)sensorEVT->fData[5];
+
+                cywee_func(CYWEE_MSG_TYPE_INACTIVITY_ACCUMULATE_TIME_UPDATE,&c_inactivity_accumulate_time_t,sizeof(cywee_inactivity_accumulate_time_t));
             }  
             break;
         case IDX_ALGO_ACTIVITY_OUTPUT:
             cywee_func = cywee_get_send_msg_callback_func();
             if((int)sensorEVT->fData[0] == 100)
             {
-                CWM_OS_dbgPrintf("average step frequency[%d], average step length[%d], average pace[%d], max step frequency[%d], max pace[%d]\n",
-                                (int)sensorEVT->fData[1],
-                                (int)sensorEVT->fData[2],
-                                (int)sensorEVT->fData[3],
-                                (int)sensorEVT->fData[4],
-                                (int)sensorEVT->fData[5]);
+                memset(&c_activity_result_extre_info_t,0,sizeof(cywee_activity_result_extre_info_t));
 
-                memset(&c_activity_result_t,0,sizeof(cywee_activity_result_t));
-                c_activity_result_t.activity_mode = (int)sensorEVT->fData[0];
-                c_activity_result_t.avg_step_freq = (int)sensorEVT->fData[1];
-                c_activity_result_t.avg_step_len = (int)sensorEVT->fData[2];
-                c_activity_result_t.avg_pace = (int)sensorEVT->fData[3];
-                c_activity_result_t.max_step_freq = (int)sensorEVT->fData[4];
-                c_activity_result_t.max_pace = (int)sensorEVT->fData[5];
-                c_activity_result_t.hrs = hrs;
-                cywee_func(CYWEE_MSG_TYPE_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
+                c_activity_result_extre_info_t.avg_step_freq = (int)sensorEVT->fData[1];
+                c_activity_result_extre_info_t.avg_step_len = (int)sensorEVT->fData[2];
+                c_activity_result_extre_info_t.avg_pace = (int)sensorEVT->fData[3];
+                c_activity_result_extre_info_t.max_step_freq = (int)sensorEVT->fData[4];
+                c_activity_result_extre_info_t.max_pace = (int)sensorEVT->fData[5];
+                c_activity_result_extre_info_t.activity_zone = (int)sensorEVT->fData[10];
+                c_activity_result_extre_info_t.ativity_zone_moderate_duration = (int)sensorEVT->fData[11];
+                c_activity_result_extre_info_t.ativity_zone_high_duration = (int)sensorEVT->fData[12];
+                c_activity_result_extre_info_t.MHR_zone = (int)sensorEVT->fData[13];
+                c_activity_result_extre_info_t.distance_motion = (int)sensorEVT->fData[14];
+
+                cywee_func(CYWEE_MSG_TYPE_ACTIVITY_EXTRA_INFO_UPDATE,&c_activity_result_extre_info_t,sizeof(cywee_activity_result_extre_info_t));
 
             }else if((int)sensorEVT->fData[0] == 5001)
             {
-                CWM_OS_dbgPrintf("Free_Training : calories[%d], duration[%d], MHR_zone[%d]\n",
-                                (int)sensorEVT->fData[1],
-                                (int)sensorEVT->fData[5],
-                                (int)sensorEVT->fData[6]);
-                
                 memset(&c_activity_result_t,0,sizeof(cywee_activity_result_t));
+
                 c_activity_result_t.activity_mode = (int)sensorEVT->fData[0];
                 c_activity_result_t.calories = (int)sensorEVT->fData[1];
                 c_activity_result_t.duration = (int)sensorEVT->fData[5];
-                c_activity_result_t.MHR = (int)sensorEVT->fData[6];
+                c_activity_result_t.MHR_zone = (int)sensorEVT->fData[6];
                 c_activity_result_t.hrs = hrs;
+
                 cywee_func(CYWEE_MSG_TYPE_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
 
             }else if((int)sensorEVT->fData[0] == 102)
@@ -748,16 +726,6 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
                 CustomEventPublish(TOPIC_EVENT_AR_ALERT_TYPE_UPDATE,&ar_alert_type,sizeof(int)); 
                 
             }else{
-                 CWM_OS_dbgPrintf("activity_mode[%d], steps[%d], distance[%d], calories[%d], step frequency[%d], step length[%d], pace[%d], BMR calories[%d], is_pause[%d]\n",
-                                (int)sensorEVT->fData[0],
-                                (int)sensorEVT->fData[1],
-                                (int)sensorEVT->fData[2],
-                                (int)sensorEVT->fData[3],
-                                (int)sensorEVT->fData[5],
-                                (int)sensorEVT->fData[6],
-                                (int)sensorEVT->fData[7],
-                                (int)sensorEVT->fData[8],
-                                (int)sensorEVT->fData[14]);
                 stepcount = (int)sensorEVT->fData[1] + history_step;
                 memset(&c_activity_result_t,0,sizeof(cywee_activity_result_t));
                 c_activity_result_t.activity_mode = (int)sensorEVT->fData[0];
index 84cdd16..362be0b 100644 (file)
@@ -1818,6 +1818,7 @@ uint32_t uapi_calendar_recover_date(void)
 {
 #if 1
     restore_time();
+    do_cywee_service_check_msg(CYWEE_SERVICE_CMD_TIME_SYNC,NULL);
     return ERRCODE_SUCC;
 #else
     calendar_t date;