From dff4f7010ccb2bb5295551f85912b9af18578551 Mon Sep 17 00:00:00 2001 From: penglei <1624952103@qq.com> Date: Mon, 3 Jun 2024 15:24:35 +0800 Subject: [PATCH] =?utf8?q?=E6=B7=BB=E5=8A=A0=E8=AE=BE=E7=BD=AE=E4=B9=85?= =?utf8?q?=E5=9D=90=E6=8F=90=E9=86=92=E9=97=B4=E9=9A=94=E5=8A=9F=E8=83=BD?= =?utf8?q?=EF=BC=8C=E4=BC=98=E5=8C=96=E5=8A=A8=E6=80=81=E5=BF=83=E7=8E=87?= =?utf8?q?=E8=8E=B7=E5=8F=96=E6=96=B9=E6=B3=95=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../drivers/peripheral/cywee/Inc/cywee_hal.h | 4 +- .../peripheral/cywee/Inc/cywee_service.h | 6 ++ .../peripheral/cywee/service/cywee_service.c | 12 ++++ .../drivers/peripheral/cywee/src/main_dml.c | 65 ++++++++++--------- .../peripheral/ppg/service/ppg_service.cpp | 4 +- 5 files changed, 58 insertions(+), 33 deletions(-) diff --git a/code/sdk/drivers/peripheral/cywee/Inc/cywee_hal.h b/code/sdk/drivers/peripheral/cywee/Inc/cywee_hal.h index 5d7c2a0d7..ab3599704 100644 --- a/code/sdk/drivers/peripheral/cywee/Inc/cywee_hal.h +++ b/code/sdk/drivers/peripheral/cywee/Inc/cywee_hal.h @@ -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() diff --git a/code/sdk/drivers/peripheral/cywee/Inc/cywee_service.h b/code/sdk/drivers/peripheral/cywee/Inc/cywee_service.h index dcb5dc93e..583084a51 100644 --- a/code/sdk/drivers/peripheral/cywee/Inc/cywee_service.h +++ b/code/sdk/drivers/peripheral/cywee/Inc/cywee_service.h @@ -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); diff --git a/code/sdk/drivers/peripheral/cywee/service/cywee_service.c b/code/sdk/drivers/peripheral/cywee/service/cywee_service.c index 4059dab40..a337eab43 100644 --- a/code/sdk/drivers/peripheral/cywee/service/cywee_service.c +++ b/code/sdk/drivers/peripheral/cywee/service/cywee_service.c @@ -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; diff --git a/code/sdk/drivers/peripheral/cywee/src/main_dml.c b/code/sdk/drivers/peripheral/cywee/src/main_dml.c index a03e7f53b..317d8fe88 100644 --- a/code/sdk/drivers/peripheral/cywee/src/main_dml.c +++ b/code/sdk/drivers/peripheral/cywee/src/main_dml.c @@ -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", diff --git a/code/sdk/drivers/peripheral/ppg/service/ppg_service.cpp b/code/sdk/drivers/peripheral/ppg/service/ppg_service.cpp index a6d51705c..fdbeae3ed 100644 --- a/code/sdk/drivers/peripheral/ppg/service/ppg_service.cpp +++ b/code/sdk/drivers/peripheral/ppg/service/ppg_service.cpp @@ -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){ -- 2.17.1