添加设置久坐提醒间隔功能,优化动态心率获取方法。 216/1 216/head
authorpenglei <1624952103@qq.com>
Mon, 3 Jun 2024 07:24:35 +0000 (15:24 +0800)
committerpenglei <1624952103@qq.com>
Mon, 3 Jun 2024 07:24:35 +0000 (15:24 +0800)
code/sdk/drivers/peripheral/cywee/Inc/cywee_hal.h
code/sdk/drivers/peripheral/cywee/Inc/cywee_service.h
code/sdk/drivers/peripheral/cywee/service/cywee_service.c
code/sdk/drivers/peripheral/cywee/src/main_dml.c
code/sdk/drivers/peripheral/ppg/service/ppg_service.cpp

index 5d7c2a0..ab35997 100644 (file)
@@ -503,11 +503,13 @@ void cywee_get_sleep_data(void);
 void cywee_reset_daily_data(void);
 void cywee_inactivity_mode_change(int mode);
 void cywee_activity_mode_change(int mode);
+void cywee_time_sync(void);
 void cywee_hand_updown_switch(int cmd);
 void cywee_ar_alert_switch(int cmd);
-void cywee_save_data(void);
 void step_history_save(void);
 void cywee_get_chipinfo(char *databuf,uint8_t len);
+void cywee_get_acc_switch(uint8_t cmd);
+void cywee_set_sedentary_interval(int time);
 extern uint8_t hrs_mode_state;
 
 #pragma pack()
index dcb5dc9..583084a 100644 (file)
@@ -78,6 +78,12 @@ extern "C" {
 
 #define CYWEE_SERVICE_CMD_SAVE_DATA 0x2C
 
+#define CYWEE_SERVICE_CMD_START_GET_ACC 0x2D
+
+#define CYWEE_SERVICE_CMD_STOP_GET_ACC 0x2E
+
+#define CYWEE_SERVICE_CMD_SET_SEDENTARY_INTERVAL 0x2F
+
 errcode_t uapi_cywee_service_init(void);
 void uapi_cywee_service_deinit(void);
 
index 4059dab..a337eab 100644 (file)
@@ -380,6 +380,18 @@ static void cywee_service_check_task(void const *arg)
                 cywee_save_data();
             break;
 
+            case CYWEE_SERVICE_CMD_START_GET_ACC:
+                cywee_get_acc_switch(1);
+            break;
+
+            case CYWEE_SERVICE_CMD_STOP_GET_ACC:
+                cywee_get_acc_switch(0);
+            break;
+
+            case CYWEE_SERVICE_CMD_SET_SEDENTARY_INTERVAL:
+                cywee_set_sedentary_interval(mail.data[0]);
+            break;
+
             default:
                 PRINT("unkonw cmd \r\n");
                 break;
index a03e7f5..317d8fe 100644 (file)
@@ -48,9 +48,25 @@ int history_step_=0;//存一个小时前的步数数据,每次保存步数时
 
 static char chipInfo[64] = {0};
 
+static int get_acc_swtich = 0;
+
+static int sedentary_interval = 1;
+
+static int sedentary_interval_count = 0;
+
 int cm__hs1__init(void);
 int cm__hs1__deinit(void);
 
+void cywee_set_sedentary_interval(int time)
+{
+    sedentary_interval = time;
+}
+
+void cywee_get_acc_switch(uint8_t cmd)
+{
+    get_acc_swtich = cmd;
+}
+
 void cywee_get_chipinfo(char *databuf,uint8_t len)
 {
     memcpy_s(databuf,len,chipInfo,strlen(chipInfo));
@@ -82,7 +98,6 @@ void cywee_hand_updown_switch(int cmd)
         CWM_Sensor_Disable(IDX_ALGO_WATCH_HANDUP);
 }
 
-
 void cywee_reset_daily_data(void)
 {
     memset(&scl, 0, sizeof(scl));
@@ -348,7 +363,8 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
     switch (sensorEVT->sensorType) {
         case IDX_ACCEL:
 
-        #if 1  
+        if(get_acc_swtich)
+        {
             // CWM_OS_dbgPrintf("acc: x=%.3f, y=%.3f, z=%.3f\n",
             //                                            sensorEVT->fData[0],
             //                                            sensorEVT->fData[1],
@@ -378,8 +394,7 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
                 //CWM_OS_dbgPrintf("write: x=%d, y=%d, z=%d\n", gxyz_t_queue[right_falg].x ,gxyz_t_queue[right_falg].y ,gxyz_t_queue[right_falg].z);
             
             }
-
-        #endif
+        }  
             break;
 
         case IDX_GYRO:
@@ -438,40 +453,14 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
             {
                 CWM_OS_dbgPrintf("CUSTOM_OFFBODY_DETECT !!! \r\n");
                 if((int)sensorEVT->fData[2] == 1)
-                {
-                    memset(&csd, 0, sizeof(CUSTOM_OFFBODY_DETECT));
-                    csd.sensorType = CUSTOM_OFFBODY_DETECT;
-                    csd.fData[0] = 1;
-                    CWM_CustomSensorInput(&csd);
                     send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_WEAR_MODE_TEST); 
-                }
                 else
-                {
-                    memset(&csd, 0, sizeof(CUSTOM_OFFBODY_DETECT));
-                    csd.sensorType = CUSTOM_OFFBODY_DETECT;
-                    csd.fData[0] = 0;
-                    CWM_CustomSensorInput(&csd);
                     send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_STOP_WEAR_MODE_TEST); 
-                }
 
             }
             if((int)sensorEVT->fData[1] == CUSTOM_ON_CHARGING)
             {
                 CWM_OS_dbgPrintf("CUSTOM_ON_CHARGING !!! \r\n");
-                if((int)sensorEVT->fData[2] == 1)
-                {
-                    memset(&csd, 0, sizeof(CUSTOM_ON_CHARGING));
-                    csd.sensorType = CUSTOM_ON_CHARGING;
-                    csd.fData[0] = 0;
-                    CWM_CustomSensorInput(&csd);
-                }  
-                else
-                {
-                    memset(&csd, 0, sizeof(CUSTOM_ON_CHARGING));
-                    csd.sensorType = CUSTOM_ON_CHARGING;
-                    csd.fData[0] = 1;
-                    CWM_CustomSensorInput(&csd);
-                }
             }
             if((int)sensorEVT->fData[1] == CUSTOM_HEARTRATE)
             {
@@ -507,7 +496,21 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) {
                 c_inactivity_result_t.output_number = (int)sensorEVT->fData[0];
                 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_INACTIVITY_UPDATE,&c_inactivity_result_t,sizeof(cywee_inactivity_result_t));
+
+                if(c_inactivity_result_t.sedentary_status == 1)
+                {
+                    sedentary_interval_count++;
+                    if(sedentary_interval_count == sedentary_interval)
+                    {
+                        sedentary_interval_count = 0;
+                        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)
+                {
+                    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",
index a6d5170..fdbeae3 100644 (file)
@@ -46,6 +46,7 @@ extern "C" {
 #include "hx3695_hal.h"
 #include "custom_utils.h"
 #include "cywee_hal.h"
+#include "cywee_service.h"
 
 static bool g_ppg_service_initialled = false;
 
@@ -308,6 +309,7 @@ static void ppg_service_check_task(void  *arg)
             wear_mode_timeout_handler(NULL);
             continue;
         }else if (mail == PPG_SERVICE_CMD_TYPE_DO_PPG_TEST){
+            do_cywee_service_check_msg(CYWEE_SERVICE_CMD_START_GET_ACC,NULL);
             cmd = "hrs";
             enable = 1;
         }else if (mail == PPG_SERVICE_CMD_TYPE_DO_HRV_TEST){
@@ -334,7 +336,7 @@ static void ppg_service_check_task(void  *arg)
             enable = 0;
             wear_mode_state = 0;
         }else if (mail == PPG_SERVICE_CMD_TYPE_STOP_PPG_TEST){
-           
+            do_cywee_service_check_msg(CYWEE_SERVICE_CMD_STOP_GET_ACC,NULL);
             cmd = "hrs";
             enable = 0;
         }else if (mail == PPG_SERVICE_CMD_TYPE_STOP_SPO2_TEST){