“精简运动模式消息发送函数以及topic数量”
authorpenglei <1624952103@qq.com>
Sat, 13 Apr 2024 02:51:18 +0000 (10:51 +0800)
committerpenglei <1624952103@qq.com>
Sat, 13 Apr 2024 02:51:18 +0000 (10:51 +0800)
code/sdk/application/wearable/fd230app/nativeui/traing/src/TraingModel.cpp
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/ppg/hx3695/hx3695.c
code/sdk/drivers/peripheral/ppg/hx3695/hx3695_check_touch.c
code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hal.c
code/sdk/drivers/peripheral/ppg/service/ppg_service.cpp

index 8890dc4..6ef7469 100644 (file)
@@ -88,7 +88,7 @@ extern "C"
         PRINT("request %d\r\n", request->msgId);
         switch (request->msgId)
         {
-        case TOPIC_EVENT_TREADMILL_UPDATE:
+        case TOPIC_EVENT_ACTIVITY_UPDATE:
             cyweeInfo = new cywee_activity_result_t(); // 在case块内分配内存
             rets = memcpy_s(cyweeInfo, sizeof(cywee_activity_result_t), (cywee_activity_result_t *)request->data, request->len);
             if (rets != EOK)
@@ -100,7 +100,7 @@ extern "C"
             }
             TraingModel::GetInstance()->AnalysisData(cyweeInfo);
             break;
-        case TOPIC_EVENT_OUTDOOR_RUNNING_UPDATE:
+        case TOPIC_EVENT_INACTIVITY_UPDATE:
             cyweeInfo = new cywee_activity_result_t(); // 在case块内分配内存
             rets = memcpy_s(cyweeInfo, sizeof(cywee_activity_result_t), (cywee_activity_result_t *)request->data, request->len);
             if (rets != EOK)
@@ -112,42 +112,6 @@ extern "C"
             }
             TraingModel::GetInstance()->AnalysisData(cyweeInfo);
             break;
-        case TOPIC_EVENT_INDOOR_RUNNING_UPDATE:
-            cyweeInfo = new cywee_activity_result_t(); // 在case块内分配内存
-            rets = memcpy_s(cyweeInfo, sizeof(cywee_activity_result_t), (cywee_activity_result_t *)request->data, request->len);
-            if (rets != EOK)
-            {
-                delete cyweeInfo; // 处理内存分配失败的情况
-                cyweeInfo = NULL;
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "memcpy_s cywee_activity_result_t fail! ret = %d", rets);
-                return;
-            }
-            TraingModel::GetInstance()->AnalysisData(cyweeInfo);
-            break;
-        case TOPIC_EVENT_FITNESS_PEDOMETERR_UPDATE:
-            cyweeInfo = new cywee_activity_result_t(); // 在case块内分配内存
-            rets = memcpy_s(cyweeInfo, sizeof(cywee_activity_result_t), (cywee_activity_result_t *)request->data, request->len);
-            if (rets != EOK)
-            {
-                delete cyweeInfo; // 处理内存分配失败的情况
-                cyweeInfo = NULL;
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "memcpy_s cywee_activity_result_t fail! ret = %d", rets);
-                return;
-            }
-            TraingModel::GetInstance()->AnalysisData(cyweeInfo);
-            break;
-        case TOPIC_EVENT_FREE_TRAINING_UPDATE:
-            cyweeInfo = new cywee_activity_result_t(); // 在case块内分配内存
-            rets = memcpy_s(cyweeInfo, sizeof(cywee_activity_result_t), (cywee_activity_result_t *)request->data, request->len);
-            if (rets != EOK)
-            {
-                delete cyweeInfo; // 处理内存分配失败的情况
-                cyweeInfo = NULL;
-                WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "memcpy_s cywee_result_t fail! ret = %d", rets);
-                return;
-            }
-            TraingModel::GetInstance()->AnalysisData(cyweeInfo);
-            break;
         default:
             // 处理未知msgId的情况
             break;
@@ -192,11 +156,7 @@ namespace OHOS
     {
         WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "TraingModel::~TraingModel()");
         // 取消订阅
-        TraingUnsubscribeTopic(TOPIC_EVENT_TREADMILL_UPDATE);
-        TraingUnsubscribeTopic(TOPIC_EVENT_OUTDOOR_RUNNING_UPDATE);
-        TraingUnsubscribeTopic(TOPIC_EVENT_INDOOR_RUNNING_UPDATE);
-        TraingUnsubscribeTopic(TOPIC_EVENT_FITNESS_PEDOMETERR_UPDATE);
-        TraingUnsubscribeTopic(TOPIC_EVENT_FREE_TRAINING_UPDATE);
+        TraingUnsubscribeTopic(TOPIC_EVENT_ACTIVITY_UPDATE);
     }
     TraingModel *TraingModel::GetInstance(void)
     {
@@ -207,11 +167,7 @@ namespace OHOS
     void TraingModel ::Init()
     {
         // 进行消息订阅
-        TraingSubscribeTopic(TOPIC_EVENT_TREADMILL_UPDATE);
-        TraingSubscribeTopic(TOPIC_EVENT_OUTDOOR_RUNNING_UPDATE);
-        TraingSubscribeTopic(TOPIC_EVENT_INDOOR_RUNNING_UPDATE);
-        TraingSubscribeTopic(TOPIC_EVENT_FITNESS_PEDOMETERR_UPDATE);
-        TraingSubscribeTopic(TOPIC_EVENT_FREE_TRAINING_UPDATE);
+        TraingSubscribeTopic(TOPIC_EVENT_ACTIVITY_UPDATE);
     }
 
     /* -------------------------------------------------------------------------- */
index 127c21f..141ccf7 100755 (executable)
@@ -46,15 +46,9 @@ typedef enum {
     TOPIC_EVENT_HFP_PHONE_TO_WATCH,
     TOPIC_EVENT_HFP_WATCH_TO_PHONE,
 #ifdef CYWEE_SPORT
-    TOPIC_EVENT_NORMAL_UPDATE,
-    TOPIC_EVENT_TREADMILL_UPDATE,
-    TOPIC_EVENT_OUTDOOR_RUNNING_UPDATE,
-    TOPIC_EVENT_INDOOR_RUNNING_UPDATE,
-    TOPIC_EVENT_FITNESS_PEDOMETERR_UPDATE,
-    TOPIC_EVENT_FREE_TRAINING_UPDATE,
+    TOPIC_EVENT_ACTIVITY_UPDATE,
+    TOPIC_EVENT_INACTIVITY_UPDATE,
 #endif
-    TOPIC_EVENT_AR_ALERT_UPDATE,
-    TOPIC_EVENT_EXTRA_INFO_UPDATE,
 #ifdef SUPPORT_CHARGER_PLUG_DETECTION_NOTIFICATION
     TOPIC_EVENT_CHARGE_PLUG,
     TOPIC_EVENT_CHARGE_UNPLUG,
index 2dc6498..eec2193 100755 (executable)
@@ -26,14 +26,8 @@ static const TopicToCore topicToCoreArray[] = {
     {TOPIC_EVENT_STEPDATA_UPDATE, A_CORE_MASK, 1},
     {TOPIC_EVENT_SHUTDOWN, A_CORE_MASK, 1},
     {TOPIC_EVENT_HEARTRATE_UPDATA, A_CORE_MASK, 1},
-    {TOPIC_EVENT_NORMAL_UPDATE, A_CORE_MASK, 1},
-    {TOPIC_EVENT_TREADMILL_UPDATE, A_CORE_MASK, 1},
-    {TOPIC_EVENT_OUTDOOR_RUNNING_UPDATE, A_CORE_MASK, 1},
-    {TOPIC_EVENT_INDOOR_RUNNING_UPDATE, A_CORE_MASK, 1},
-    {TOPIC_EVENT_FITNESS_PEDOMETERR_UPDATE, A_CORE_MASK, 1},
-    {TOPIC_EVENT_FREE_TRAINING_UPDATE, A_CORE_MASK, 1},
-    {TOPIC_EVENT_AR_ALERT_UPDATE, A_CORE_MASK, 1},
-    {TOPIC_EVENT_EXTRA_INFO_UPDATE, A_CORE_MASK, 1},
+    {TOPIC_EVENT_ACTIVITY_UPDATE, A_CORE_MASK, 1},
+    {TOPIC_EVENT_INACTIVITY_UPDATE, A_CORE_MASK, 1},
 #ifdef SUPPORT_SPO2_NOTIFICATION
     {TOPIC_EVENT_SPO2_UPDATE, A_CORE_MASK, 1},
     {TOPIC_EVENT_START_HRS_MONITORING, A_CORE_MASK, 1},
index 53c69a2..a3ce3fd 100755 (executable)
@@ -51,14 +51,8 @@ extern "C" {
 const PriorityMapper g_pri_mapper[] = {
     {TOPIC_EVENT_ALARM_RING, PRIORITY_TWO},
     {TOPIC_EVENT_NEXTDAY_UPDATE, PRIORITY_TWO},
-    {TOPIC_EVENT_NORMAL_UPDATE,PRIORITY_TWO},
-    {TOPIC_EVENT_TREADMILL_UPDATE,PRIORITY_TWO},
-    {TOPIC_EVENT_OUTDOOR_RUNNING_UPDATE,PRIORITY_TWO},
-    {TOPIC_EVENT_INDOOR_RUNNING_UPDATE,PRIORITY_TWO},
-    {TOPIC_EVENT_FITNESS_PEDOMETERR_UPDATE,PRIORITY_TWO},
-    {TOPIC_EVENT_FREE_TRAINING_UPDATE,PRIORITY_TWO},
-    {TOPIC_EVENT_AR_ALERT_UPDATE,PRIORITY_TWO},
-    {TOPIC_EVENT_EXTRA_INFO_UPDATE,PRIORITY_TWO},
+    {TOPIC_EVENT_ACTIVITY_UPDATE,PRIORITY_TWO},
+    {TOPIC_EVENT_INACTIVITY_UPDATE,PRIORITY_TWO},
 #ifdef SUPPORT_CHARGER_PLUG_DETECTION_NOTIFICATION
     {TOPIC_EVENT_CHARGE_PLUG, PRIORITY_TWO},
     {TOPIC_EVENT_CHARGE_UNPLUG, PRIORITY_TWO},
@@ -126,14 +120,8 @@ void MsgCenterSubscribe()
     MsgCenterSubscribeTopic(TOPIC_EVENT_HFP_FINISHED);
     MsgCenterSubscribeTopic(TOPIC_EVENT_HFP_PHONE_TO_WATCH);
     MsgCenterSubscribeTopic(TOPIC_EVENT_HFP_WATCH_TO_PHONE);
-    MsgCenterSubscribeTopic(TOPIC_EVENT_NORMAL_UPDATE);
-    MsgCenterSubscribeTopic(TOPIC_EVENT_TREADMILL_UPDATE);
-    MsgCenterSubscribeTopic(TOPIC_EVENT_OUTDOOR_RUNNING_UPDATE);
-    MsgCenterSubscribeTopic(TOPIC_EVENT_INDOOR_RUNNING_UPDATE);
-    MsgCenterSubscribeTopic(TOPIC_EVENT_FITNESS_PEDOMETERR_UPDATE);
-    MsgCenterSubscribeTopic(TOPIC_EVENT_FREE_TRAINING_UPDATE);
-    MsgCenterSubscribeTopic(TOPIC_EVENT_AR_ALERT_UPDATE);
-    MsgCenterSubscribeTopic(TOPIC_EVENT_EXTRA_INFO_UPDATE);
+    MsgCenterSubscribeTopic(TOPIC_EVENT_ACTIVITY_UPDATE);
+    MsgCenterSubscribeTopic(TOPIC_EVENT_INACTIVITY_UPDATE);
 #ifdef SUPPORT_CHARGER_PLUG_DETECTION_NOTIFICATION
     MsgCenterSubscribeTopic(TOPIC_EVENT_CHARGE_PLUG);
     MsgCenterSubscribeTopic(TOPIC_EVENT_CHARGE_UNPLUG);
@@ -820,6 +808,16 @@ void MsgCenterNotifyCanCelFindWatchProc(const Topic topic, Request* req)
     }
     FindWatchViewEventListener::GetInstance().SetFindWatchNotifyFlag(false);
 }
+void MsgCenterNotifyActivityProc(const Topic topic, Request* req)
+{
+    unused(topic);
+    unused(req);
+}
+void MsgCenterNotifyInactivityProc(const Topic topic, Request* req)
+{
+    unused(topic);
+    unused(req);
+}
 /* 订阅事件通知逻辑可定制 */
 static msg_center_notify_table_t g_msg_center_notify_table[] = {
     {TOPIC_EVENT_ALARM_RING,         MsgCenterNotifyAlarmProc},
@@ -832,14 +830,8 @@ static msg_center_notify_table_t g_msg_center_notify_table[] = {
     {TOPIC_EVENT_HFP_PHONE_TO_WATCH, MsgCenterNotifyHfpWatchProc},
     {TOPIC_EVENT_FIND_WATCH,MsgCenterNotifyFindWatchProc},
     {TOPIC_EVENT_CANCEL_FIND_WATCH,MsgCenterNotifyCanCelFindWatchProc},
-    {TOPIC_EVENT_NORMAL_UPDATE,       MsgCenterNotifyNormalProc},
-    {TOPIC_EVENT_TREADMILL_UPDATE,       MsgCenterNotifyTreadmillProc},
-    {TOPIC_EVENT_OUTDOOR_RUNNING_UPDATE,       MsgCenterNotifyOutdoorRunningProc},
-    {TOPIC_EVENT_INDOOR_RUNNING_UPDATE,       MsgCenterNotifyIndoorRunningProc},
-    {TOPIC_EVENT_FITNESS_PEDOMETERR_UPDATE,       MsgCenterNotifyFitnessPedometerProc},
-    {TOPIC_EVENT_FREE_TRAINING_UPDATE,       MsgCenterNotifyFreeTrainingProc},
-    {TOPIC_EVENT_AR_ALERT_UPDATE,       MsgCenterNotifyArAlertProc},
-    {TOPIC_EVENT_EXTRA_INFO_UPDATE,       MsgCenterNotifyExtraInfoProc},
+    {TOPIC_EVENT_ACTIVITY_UPDATE,       MsgCenterNotifyActivityProc},
+    {TOPIC_EVENT_INACTIVITY_UPDATE,       MsgCenterNotifyInactivityProc},
 #ifdef SUPPORT_CHARGER_PLUG_DETECTION_NOTIFICATION
     {TOPIC_EVENT_CHARGE_PLUG,        MsgCenterNotifyChargePlugProc},
     {TOPIC_EVENT_CHARGE_UNPLUG,      MsgCenterNotifyChargeUnPlugProc},
index 8ed5e9e..3caaf82 100644 (file)
@@ -41,7 +41,9 @@ extern void CWM_OS_restoreData(uint8_t* data, uint32_t len);
 #define   SPORT_ACTIVE_MODE_INDOOR_RUNNING      1006                // 室內跑步    indoor running  1006
 #define   SPORT_ACTIVE_MODE_FITNESS_PEDOMETERR 1008                // 防誤觸計步  fitness_pedometer       1008
 #define   SPORT_ACTIVE_MODE_FREE_TRAINING      5001                // 自由運動     FreeTraining    5001
-#define   SPORT_ACTIVE_MODE_AR_ALERT           1001                // 長時間動作偵測    AR alert        1001
+//#define   SPORT_ACTIVE_MODE_AR_ALERT           1001                // 長時間動作偵測  AR alert        1001
+#define   SPORT_ACTIVE_MODE_AR_ALERT           102                // 長時間動作偵測     AR alert        1001
+#define   SPORT_ACTIVE_MODE_EXTRA_INFO         100               // 额外信息       AR alert        1001
 
 #define   INACTIVITY_MODE_NOTHING            0               // 无作用
 #define   INACTIVITY_MODE_SEDENTARY          1               // 久坐和有效站立
@@ -49,6 +51,11 @@ extern void CWM_OS_restoreData(uint8_t* data, uint32_t len);
 #define   INACTIVITY_MODE_SEDENTARY_AND_NAP  3               // 久坐、有效站立和小睡
 #define   INACTIVITY_MODE_NAP                4               // 小睡
 
+#define   INACTIVITY_MODE_SEDENTARY_OUTPUT          20               // 久坐和有效站立
+#define   INACTIVITY_MODE_SLEEPING_OUTPUT             21               // 睡眠
+#define   INACTIVITY_MODE_SLEEPING_ACCUMULATE_TIME_OUTPUT    31               // 久坐、有效站立和小睡
+#define   INACTIVITY_MODE_NAP_OUTPUT                  22               // 小睡
+#define   INACTIVITY_MODE_NAP_ACCUMULATE_TIME_OUTPUT    32
 
 #pragma pack(1)
 
@@ -438,10 +445,10 @@ typedef struct
 typedef struct 
 {
     int activity_mode;
-    int calories;
-    int duration;
     int steps;
     int distance;
+    int calories;
+    int duration;
     int step_frequency;
     int step_length;
     int pace;
@@ -454,6 +461,7 @@ typedef struct
     int max_pace;
     int ar_alert_type;
     int MHR_zone;
+    int hrs;
 }cywee_activity_result_t;
 
 typedef struct 
@@ -479,19 +487,10 @@ typedef struct
 
 #pragma pack()
 typedef enum{
-    CYWEE_MSG_TYPE_NORMAL_UPDATE,
-    CYWEE_MSG_TYPE_TREADMILL_UPDATE,
-    CYWEE_MSG_TYPE_OUTDOOR_RUNNING_UPDATE,
-    CYWEE_MSG_TYPE_INDOOR_RUNNING_UPDATE,
-    CYWEE_MSG_TYPE_FITNESS_PEDOMETERR_UPDATE,
-    CYWEE_MSG_TYPE_FREE_TRAINING_UPDATE,
-    CYWEE_MSG_TYPE_AR_ALERT_UPDATE,
-    CYWEE_MSG_TYPE_EXTRA_INFO_UPDATE,
-    CYWEE_MSG_TYPE_SEDENTARY_UPDATE,
-    CYWEE_MSG_TYPE_SLEEPING_UPDATE,
-    CYWEE_MSG_TYPE_SLEEPING_ACCUMULATE_TIME_UPDATE,
-    CYWEE_MSG_TYPE_NAP_UPDATE,
-    CYWEE_MSG_TYPE_NAP_ACCUMULATE_TIME_UPDATE
+    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_t;
 
 
index d0c4b0e..9f4abd4 100644 (file)
@@ -62,144 +62,133 @@ 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;
-    switch(msg_type)
+
+    if(msg_type == CYWEE_MSG_TYPE_ACTIVITY_UPDATE)
     {
-        //一般模式
-        case CYWEE_MSG_TYPE_NORMAL_UPDATE:
-            PRINT("CYWEE_MSG_TYPE_NORMAL_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_NORMAL_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-            break;
-
-        //跑步机模式
-        case CYWEE_MSG_TYPE_TREADMILL_UPDATE:
-            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_TREADMILL_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-            break;
-
-        //户外跑步模式
-        case CYWEE_MSG_TYPE_OUTDOOR_RUNNING_UPDATE:
-            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], 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_OUTDOOR_RUNNING_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-            break;
-
-        //室内跑步模式
-        case CYWEE_MSG_TYPE_INDOOR_RUNNING_UPDATE:
-            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_INDOOR_RUNNING_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-            break;
-
-        //防误触计步模式
-        case CYWEE_MSG_TYPE_FITNESS_PEDOMETERR_UPDATE:
-            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_FITNESS_PEDOMETERR_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-            break;
-
-        //自由运动模式
-        case CYWEE_MSG_TYPE_FREE_TRAINING_UPDATE:
-            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_FREE_TRAINING_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-            break;
-
-        //长时间动作侦测模式
-        case CYWEE_MSG_TYPE_AR_ALERT_UPDATE:
-            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_AR_ALERT_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-            break;
-
-        //额外信息
-        case CYWEE_MSG_TYPE_EXTRA_INFO_UPDATE:
-            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_EXTRA_INFO_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-            break;
-
-        //久坐
-        case CYWEE_MSG_TYPE_SEDENTARY_UPDATE:
-            PRINT("CYWEE_MSG_TYPE_SEDENTARY_UPDATE\r\n");
-            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_EXTRA_INFO_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-            break;
-
-        //睡眠
-        case CYWEE_MSG_TYPE_SLEEPING_UPDATE:
-            PRINT("CYWEE_MSG_TYPE_SLEEPING_UPDATE\r\n");
-            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_EXTRA_INFO_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-            break;
-
-        //睡眠累计
-        case CYWEE_MSG_TYPE_SLEEPING_ACCUMULATE_TIME_UPDATE:
-            PRINT("CYWEE_MSG_TYPE_SLEEPING_ACCUMULATE_TIME_UPDATE\r\n");
-            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_EXTRA_INFO_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-            break;
-
-        //小睡
-        case CYWEE_MSG_TYPE_NAP_UPDATE:
-            PRINT("CYWEE_MSG_TYPE_NAP_UPDATE\r\n");
+        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;
+        }
+    }else if(msg_type == CYWEE_MSG_TYPE_INACTIVITY_UPDATE){
             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_EXTRA_INFO_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-            break;
+            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 CYWEE_MSG_TYPE_NAP_ACCUMULATE_TIME_UPDATE:
-            PRINT("CYWEE_MSG_TYPE_NAP_ACCUMULATE_TIME_UPDATE\r\n");
-            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_EXTRA_INFO_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-            break;
-
-        default:
-
+                //小睡累计
+                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");
-            break;
-    }
 }
 
 
index 70bfb78..3134adc 100644 (file)
@@ -47,6 +47,21 @@ static osTimerId_t g_cywee_oncharging_timer;
 
 CustomSensorData csd;
 
+static uint8_t hrs = 0;
+static uint8_t wearstatus = 0;
+
+void set_user_info(int age,int gender,double weight,int height,int wearing_method)
+{
+    memset(&scl, 0, sizeof(scl));
+    scl.iData[0] = 1;
+    scl.iData[1] = age;
+    scl.iData[2] = weight;
+    scl.iData[3] = (int)weight;
+    scl.iData[4] = weight;
+    scl.iData[5] = wearing_method;
+    CWM_SettingControl(SCL_USER_INFO, &scl);
+}
+
 void time_sync(void)
 {
     time_t rawtime;
@@ -59,8 +74,8 @@ void time_sync(void)
 
     memset(&scl, 0, sizeof(scl));
     scl.iData[0] = 1;
-    scl.iData[1] = timeinfo->tm_year;
-    scl.iData[2] = timeinfo->tm_mon;
+    scl.iData[1] = timeinfo->tm_year + 1900;
+    scl.iData[2] = timeinfo->tm_mon + 1;
     scl.iData[3] = timeinfo->tm_mday;
     scl.iData[4] = timeinfo->tm_hour;
     scl.iData[5] = timeinfo->tm_min;
@@ -70,7 +85,6 @@ void time_sync(void)
 
 void cywee_hrs_check_timer_callback(void)
 {
-    uint8_t hrs,wearstatus;
     get_hrs_wearstatus(&hrs,&wearstatus);
     CWM_OS_dbgPrintf("hrs : %d,wearstatus : %d \r\n",hrs,wearstatus);
     memset(&csd, 0, sizeof(CUSTOM_HEARTRATE));
@@ -194,6 +208,14 @@ void cyw_inactivity_mode_change(int mode)
 
         //久坐和有效站立
         case INACTIVITY_MODE_SEDENTARY:
+            PRINT("INACTIVITY_MODE_SEDENTARY\r\n");
+            //training_mode_init();
+            //配置久坐相关参数
+            memset(&scl, 0, sizeof(scl));
+            scl.iData[0] = 1;
+            scl.iData[2] = 1;
+            scl.iData[3] = 1;
+            CWM_SettingControl(SCL_SEDENTARY, &scl);
             memset(&scl, 0, sizeof(scl));
             scl.iData[0] = 1;
             scl.iData[1] = 1;
@@ -210,6 +232,17 @@ void cyw_inactivity_mode_change(int mode)
 
         //久坐、有效站立和小睡
         case INACTIVITY_MODE_SEDENTARY_AND_NAP:
+             /*
+            SCL_REQ_SLEEPING_DATA
+            int[0] = 1
+            int[1] = terminate_sleep
+            (0: 立刻輸出狀態,但不中止此段睡眠偵測, 
+            1: 立刻輸出狀態,並中止此段睡眠偵測)
+            */
+            memset(&scl, 0, sizeof(scl));
+            scl.iData[0] = 1;
+            scl.iData[1] = 1;
+            CWM_SettingControl(SCL_REQ_SLEEPING_DATA, &scl);
             memset(&scl, 0, sizeof(scl));
             scl.iData[0] = 1;
             scl.iData[1] = 3;
@@ -438,7 +471,7 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
                 c_inactivity_result_t.inactivity_mode = (int)sensorEVT->fData[15];
                 c_inactivity_result_t.sedentary_status = (int)sensorEVT->fData[2];
                 c_inactivity_result_t.stand_freq = (int)sensorEVT->fData[3];
-                cywee_func(CYWEE_MSG_TYPE_SEDENTARY_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t));
+                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",
@@ -455,7 +488,7 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
                 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_SLEEPING_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t));
+                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",
@@ -472,7 +505,7 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
                 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_SLEEPING_ACCUMULATE_TIME_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t));
+                cywee_func(CYWEE_MSG_TYPE_INACTIVITY_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_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",
@@ -489,7 +522,7 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
                 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_NAP_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t));
+                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",
@@ -506,7 +539,7 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
                 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_NAP_ACCUMULATE_TIME_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t));
+                cywee_func(CYWEE_MSG_TYPE_INACTIVITY_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t));
             }  
             break;
         case IDX_ALGO_ACTIVITY_OUTPUT:
@@ -521,12 +554,14 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
                                 (int)sensorEVT->fData[5]);
 
                 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];
-                cywee_func(CYWEE_MSG_TYPE_EXTRA_INFO_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
+                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] == 5001)
             {
@@ -540,7 +575,8 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
                 c_activity_result_t.calories = (int)sensorEVT->fData[1];
                 c_activity_result_t.duration = (int)sensorEVT->fData[5];
                 c_activity_result_t.MHR_zone = (int)sensorEVT->fData[6];
-                cywee_func(CYWEE_MSG_TYPE_FREE_TRAINING_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
+                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)
             {
@@ -549,7 +585,7 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
                 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.ar_alert_type = (int)sensorEVT->fData[1];
-                cywee_func(CYWEE_MSG_TYPE_AR_ALERT_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
+                cywee_func(CYWEE_MSG_TYPE_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
                 
             }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",
@@ -573,36 +609,13 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
                 c_activity_result_t.pace = (int)sensorEVT->fData[7];
                 c_activity_result_t.BMR_calories = (int)sensorEVT->fData[8];
                 c_activity_result_t.is_pause = (int)sensorEVT->fData[14];
-
-                switch ((int)sensorEVT->fData[0])
-                {
-                    case SPORT_ACTIVE_MODE_NORMAL:
-                        cywee_func(CYWEE_MSG_TYPE_NORMAL_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-                        break;
-
-                    case SPORT_ACTIVE_MODE_TREADMILL:
-                        cywee_func(CYWEE_MSG_TYPE_TREADMILL_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-                        break;
-
-                    case SPORT_ACTIVE_MODE_OUTDOOR_RUNNING:
-                        cywee_func(CYWEE_MSG_TYPE_OUTDOOR_RUNNING_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-                        break;
-
-                    case SPORT_ACTIVE_MODE_INDOOR_RUNNING:
-                        cywee_func(CYWEE_MSG_TYPE_INDOOR_RUNNING_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-                        break;
-
-                    case SPORT_ACTIVE_MODE_FITNESS_PEDOMETERR:
-                        cywee_func(CYWEE_MSG_TYPE_FITNESS_PEDOMETERR_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
-                        break;
-                    
-                    default:
-                        break;
-                }
+                c_activity_result_t.hrs = hrs;
+                cywee_func(CYWEE_MSG_TYPE_ACTIVITY_UPDATE,&c_activity_result_t,sizeof(cywee_activity_result_t));
 
                 CustomEventPublish(TOPIC_EVENT_STEPDATA_UPDATE,&stepcount,sizeof(int)); 
             }
             break;
+
         case IDX_ALGO_ANY_MOTION:
             CWM_OS_dbgPrintf("IDX_ALGO_ANY_MOTION\n");
 
index 819e1c1..2a48240 100644 (file)
@@ -427,11 +427,12 @@ uint16_t hx3695_read_fifo_data(int32_t *buf, uint8_t phase_num, uint8_t sig)
                        hx3695_brust_read_reg(0x22, databuf, 3);        \r
                        read_fifo_first_flg = 0;\r
                }       \r
-               hx3695_brust_read_reg(0x22, fifo_data_buf, fifo_read_bytes);    \r
-//                                                     for(ii=0; ii<fifo_read_bytes; ii++)\r
-//                                                     {\r
-//                                                             SEGGER_RTT_printf(0,"%d/%d, %d\r\n", ii+1,fifo_read_bytes,fifo_data_buf[ii]);                           \r
-//                                                     }\r
+               hx3695_brust_read_reg(0x22, fifo_data_buf, fifo_read_bytes);\r
+    PRINT("hx3695_brust_read_reg !!! \r\n");           \r
+                                                       for(ii=0; ii<fifo_read_bytes; ii++)\r
+                                                       {\r
+                                                               PRINT("%d/%d, %d\r\n", ii+1,fifo_read_bytes,fifo_data_buf[ii]);                         \r
+                                                       }\r
                for(ii=0; ii<fifo_read_length; ii++)\r
                {\r
                        if(sig==0)\r
@@ -3464,12 +3465,12 @@ void hx3695_wear_ppg_Int_handle(void)
        \r
 //     PRINT("===> touch_cnt: %d, notouch_cnt: %d, wear status: %d,   \r\n", touch_cnt, notouch_cnt, hx3695_wear_status);\r
 \r
-//     PRINT("hx3695_wear_ppg_Int_handle  wearstatus = %d\r\n", hrsresult.wearstatus);\r
-       \r
-//    for(int i=0;i<*count;i++)\r
-//    {\r
-//        DEBUG_PRINTF("%d,%d,%d,%d,%d,%d\r\n",1+i,*count,ir_buf[i],ppg_s_data.s_buf[i*2],ppg_s_data.s_buf[i*2+1],hx3695_wear_status);\r
-//    }\r
+       PRINT("hx3695_wear_ppg_Int_handle  wearstatus = %d\r\n", hrsresult.wearstatus);\r
+       PRINT("count : %d \r\n",*count);\r
+   for(int i=0;i<*count;i++)\r
+   {\r
+       PRINT("%d,%d,%d,%d,%d,%d\r\n",1+i,*count,ir_buf[i],ppg_s_data.s_buf[i*2],ppg_s_data.s_buf[i*2+1],hx3695_wear_status);\r
+   }\r
 }\r
 #endif\r
 \r
index ea1817a..c4b2e4d 100644 (file)
@@ -148,6 +148,7 @@ uint8_t hx3695_check_touch_read(ppg_sensor_data_t *s_dat)
 //    if (size && size <= 256)\r
 //    {\r
         fifo_out_size = hx3695_read_fifo_data(s_buf,hrs_phase_num,2);\r
+        PRINT("fifo_out_size : %d\r\n",fifo_out_size);\r
         s_dat->count = fifo_out_size;\r
         for (i=0; i<fifo_out_size; i++)\r
         {   \r
@@ -176,6 +177,7 @@ hx3695_wear_msg_code_t hx3695_check_touch_send_data(int32_t *ir_data, uint8_t co
 \r
 hx3695_wear_msg_code_t check_touch_alg(int32_t ir_data)\r
 {\r
+    PRINT("ir_data : %d \r\n",ir_data);\r
     if(ir_data>check_mode_wear_thre)\r
     {\r
         notouch_cnt = 0;\r
index 749efac..944aa79 100644 (file)
@@ -2,7 +2,7 @@
  * @Author: penglei 1624952103@qq.com
  * @Date: 2024-03-13 15:08:38
  * @LastEditors: penglei 1624952103@qq.com
- * @LastEditTime: 2024-03-29 10:51:50
+ * @LastEditTime: 2024-04-12 20:23:58
  * @FilePath: /FD230/code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hal.c
  * @Description: 
  * 
@@ -56,6 +56,8 @@ void ppg_send_cmd_to_driver(char* mode, uint8_t enable)
         md = FT_GRAY_CARD_MODE;
     } else if (strcmp(mode, "ledoff") == 0) {
         md = FT_LED_OFF_MODE;
+    } else if (strcmp(mode, "wear") == 0) {
+        md = WEAR_MODE;
     } 
 
    
index bd72fc9..1e3acd4 100644 (file)
@@ -305,14 +305,12 @@ static void ppg_service_check_task(void  *arg)
             cmd = "leaklight";
             enable = 1;
         }else if (mail == PPG_SERVICE_CMD_TYPE_DO_GRAYCARD_TEST){
-            cmd = "graycard";
+            cmd = "wear";
             enable = 1;
         }else if (mail == PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST){
-           
             cmd = "hrs";
             enable = 0;
         }else if (mail == PPG_SERVICE_CMD_TYPE_STOP_SPO2_TEST){
-   
             cmd = "spo2";
             enable = 0;
         }