From: penglei <1624952103@qq.com> Date: Mon, 22 Apr 2024 13:06:24 +0000 (+0800) Subject: 添加cywee中断模式读取数据(暂时不可用) X-Git-Tag: release_V1.2.70_20241020_135402~1131^2~6 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=refs%2Fchanges%2F68%2F1;p=mirrors%2FFD230.git 添加cywee中断模式读取数据(暂时不可用) --- diff --git a/code/sdk/drivers/boards/brandy_evb/board_config/board_evb.h b/code/sdk/drivers/boards/brandy_evb/board_config/board_evb.h index 14902396b..cf64342f1 100755 --- a/code/sdk/drivers/boards/brandy_evb/board_config/board_evb.h +++ b/code/sdk/drivers/boards/brandy_evb/board_config/board_evb.h @@ -10,6 +10,7 @@ #include "pinctrl_porting.h" #include "gpio_porting.h" #include "platform_types.h" +#include "cywee_service.h" #ifdef SUPPORT_CAT1_SERVICE #include "cat1_ctl.h" #endif @@ -156,7 +157,7 @@ const hal_pio_config_t g_pio_function_config[PIN_MAX_NUMBER] = { { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L9 dsp uart TP35 { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L10 dsp uart TP36 #endif - { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L11 G_INT1 + { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L11 G_INT1 { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L12 i2c data HX3507_SDIO { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L13 i2c CLK HX3507_SCLK @@ -167,7 +168,7 @@ const hal_pio_config_t g_pio_function_config[PIN_MAX_NUMBER] = { { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L17 HX3507_INT not use { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_DISABLE }, // S_AGPIO_L18 VDDEN //暂时无用,采用VDDIO 默认开启 EXt V3.0 EXt V1.8 - { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_ENBALE }, // S_AGPIO_L19 G_INT2 + { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_DOWN, HAL_PIO_IE_ENBALE }, // S_AGPIO_L19 G_INT2 //暂时不用 { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L20 0.2C_CHRG { HAL_PIO_FUNC_GPIO, HAL_PIO_DRIVE_MAX, HAL_PIO_PULL_MAX, HAL_PIO_IE_DISABLE }, // S_AGPIO_L21 NTC_VDD_ON 给低打开 NTC上拉电源 @@ -285,15 +286,15 @@ const hal_gpio_config_t g_gpio_function_config[PIN_MAX_NUMBER] = { /**G sensor G_INT1 S_AGPIO_L11 G_INT2 S_AGPIO_L19*/ - { S_AGPIO_L11, HAL_GPIO_DIRECTION_INPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL }, - { S_AGPIO_L19, HAL_GPIO_DIRECTION_INPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL }, + //{ S_AGPIO_L11, HAL_GPIO_DIRECTION_INPUT, HAL_GPIO_LEVEL_LOW, GPIO_INTERRUPT_RISING_EDGE, cywee_int1_callback }, + { S_AGPIO_L19, HAL_GPIO_DIRECTION_INPUT, HAL_GPIO_LEVEL_LOW, GPIO_INTERRUPT_RISING_EDGE, cywee_int1_callback }, + // { S_AGPIO_L19, HAL_GPIO_DIRECTION_INPUT, HAL_GPIO_LEVEL_LOW, 0, NULL }, /**S_AGPIO_R1 GPO alipay默认resetpin*/ { S_AGPIO_R1, HAL_GPIO_DIRECTION_OUTPUT, HAL_GPIO_LEVEL_HIGH, 0, NULL }, #ifdef SUPPORT_CAT1_SERVICE /**cat1 ring input key*/ { S_AGPIO_L31, HAL_GPIO_DIRECTION_INPUT, HAL_GPIO_LEVEL_LOW, GPIO_INTERRUPT_DEDGE, cat1_ring_isr_callback}, #endif - }; /** * @} diff --git a/code/sdk/drivers/peripheral/cywee/Inc/cywee_service.h b/code/sdk/drivers/peripheral/cywee/Inc/cywee_service.h index d8cb51184..4704837bb 100644 --- a/code/sdk/drivers/peripheral/cywee/Inc/cywee_service.h +++ b/code/sdk/drivers/peripheral/cywee/Inc/cywee_service.h @@ -2,7 +2,7 @@ * @Author: penglei 1624952103@qq.com * @Date: 2024-03-26 20:29:58 * @LastEditors: penglei 1624952103@qq.com - * @LastEditTime: 2024-04-19 18:00:31 + * @LastEditTime: 2024-04-22 21:02:15 * @FilePath: /FD230/code/sdk/drivers/peripheral/cywee/Inc/cywee_service.h * @Description: * @@ -26,6 +26,7 @@ extern "C" { #include "stdint.h" #include "errcode.h" +#include "platform_core.h" // #define CYWEE_SERVICE_CMD_TYPE_DO_PPG_40TIMER_CALLBACK 0x0A // #define PPG_SERVICE_CMD_TYPE_DO_PPG_320TIMER_CALLBACK 0x10 @@ -73,7 +74,7 @@ void uapi_cywee_service_deinit(void); * 测试指令 参数cmd 选项: ACC_SERVICE_CMD_START_CHECK,ACC_SERVICE_CMD_STOP_CHECK */ void do_cywee_service_check_msg(int cmd, int data[2]); - +void cywee_int1_callback(pin_t pin, uintptr_t param); #ifdef __cplusplus } diff --git a/code/sdk/drivers/peripheral/cywee/service/cywee_service.c b/code/sdk/drivers/peripheral/cywee/service/cywee_service.c index e7c4ce3f4..f2c3affff 100644 --- a/code/sdk/drivers/peripheral/cywee/service/cywee_service.c +++ b/code/sdk/drivers/peripheral/cywee/service/cywee_service.c @@ -36,6 +36,7 @@ #include "broadcast_feature.h" #include "ppg_service.h" +#include "platform_core.h" typedef struct { @@ -46,7 +47,7 @@ typedef struct * 其他cmd在Header里定义,对外开放 */ -#define CYWEE_CHECK_MS 40 +#define CYWEE_CHECK_MS 60000 osTimerId_t g_cywee_service_timer = NULL; static bool g_batter_service_initialled = false; @@ -279,9 +280,9 @@ static void cywee_service_check_task(void const *arg) } else if (mail.cmd == CYWEE_SERVICE_CMD_START_CHECK) { - cywee_service_running_stat = true; + //cywee_service_running_stat = true; cywee_main_dml(); - cywee_service_timer_start_check(CYWEE_CHECK_MS); + //cywee_service_timer_start_check(CYWEE_CHECK_MS); } else if (mail.cmd == CYWEE_SERVICE_CMD_STOP_CHECK) { @@ -398,6 +399,13 @@ errcode_t uapi_cywee_service_init(void) return ERRCODE_SUCC; } +void cywee_int1_callback(pin_t pin, uintptr_t param) +{ + PRINT("cywee_int1_callback %d 0x%X\n",pin,param); + do_cywee_service_check_msg(CYWEE_SERVICE_CMD_TIMER_CHECK, NULL); +} + + // void cywee_service_service_resume(void) // { // PRINT("cywee_service_service resume!\r\n"); diff --git a/code/sdk/drivers/peripheral/cywee/src/main_dml.c b/code/sdk/drivers/peripheral/cywee/src/main_dml.c index 80ac1e8ea..8795eb6ce 100644 --- a/code/sdk/drivers/peripheral/cywee/src/main_dml.c +++ b/code/sdk/drivers/peripheral/cywee/src/main_dml.c @@ -41,6 +41,10 @@ static uint8_t hrs = 0; uint8_t hrs_mode_state = 0; +static float s_data[25][3] = {0}; + +static int i = 0; + void hand_updown_switch(int cmd) { if(cmd == 1) @@ -129,8 +133,6 @@ void cywee_wearstatus_update(int wearstatus) CWM_CustomSensorInput(&csd); } - - //0:resume , 1:pause void activity_mode_setstatus(int cmd) { @@ -305,30 +307,40 @@ void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) { case IDX_ACCEL: #if 1 - - if(num_falg==8) - { - left_falg++; - right_falg++; - right_falg=right_falg%8; - left_falg=left_falg%8; - gxyz_t_queue[right_falg].x= sensorEVT->fData[0]; - gxyz_t_queue[right_falg].y= sensorEVT->fData[1]; - gxyz_t_queue[right_falg].z= sensorEVT->fData[2]; - } - else - { - //left_falg++; - right_falg++; - right_falg=right_falg%8; - //left_falg=left_falg%16; - num_falg++; - gxyz_t_queue[right_falg].x= sensorEVT->fData[0]; - gxyz_t_queue[right_falg].y= sensorEVT->fData[1]; - gxyz_t_queue[right_falg].z= sensorEVT->fData[2]; - //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); + CWM_OS_dbgPrintf("acc: x=%.3f, y=%.3f, z=%.3f\n", + sensorEVT->fData[0], + sensorEVT->fData[1], + sensorEVT->fData[2] + ); + s_data[i][0] = sensorEVT->fData[0]; + s_data[i][1] = sensorEVT->fData[1]; + s_data[i][2] = sensorEVT->fData[2]; + i++; + if(i == 24) + i = 0; + // if(num_falg==8) + // { + // left_falg++; + // right_falg++; + // right_falg=right_falg%8; + // left_falg=left_falg%8; + // gxyz_t_queue[right_falg].x= sensorEVT->fData[0]; + // gxyz_t_queue[right_falg].y= sensorEVT->fData[1]; + // gxyz_t_queue[right_falg].z= sensorEVT->fData[2]; + // } + // else + // { + // //left_falg++; + // right_falg++; + // right_falg=right_falg%8; + // //left_falg=left_falg%16; + // num_falg++; + // gxyz_t_queue[right_falg].x= sensorEVT->fData[0]; + // gxyz_t_queue[right_falg].y= sensorEVT->fData[1]; + // gxyz_t_queue[right_falg].z= sensorEVT->fData[2]; + // //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; @@ -705,6 +717,7 @@ int cywee_main_dml(void) //get chip information + char chipInfo[64]; memset(&scl, 0, sizeof(scl)); @@ -755,12 +768,18 @@ int cywee_main_dml(void) #else scl.iData[3] = 2; scl.iData[4] = 2; //1 anytime 2 fifo - scl.iData[6] = 5; //fifocount 先設定5 + scl.iData[6] = 25; //fifocount 先設定5 [1~25] scl.iData[8] = 25; // for st sensor(52Hz) + + //scl.iData[11] = 1; // G_INT_1 + scl.iData[12] = 1; // G_INT_1 #endif CWM_SettingControl(SCL_DML_DRV_AG_CONFIG, &scl); //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__); + CWM_CustomSensorInput_Fifo_Init(25); + + //设定搜寻哪种型号的传感器,以及要搜寻的属性 memset(&scl, 0, sizeof(scl)); scl.iData[0] = 1; @@ -848,21 +867,21 @@ int cywee_main_dml(void) // //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__); CWM_Sensor_Enable(IDX_ALGO_ACTIVITY_OUTPUT); - CWM_Sensor_Enable(IDX_ALGO_INACTIVITY_OUTPUT); - CWM_Sensor_Enable(IDX_ALGO_SEDENTARY); - CWM_Sensor_Enable(IDX_ALGO_SLEEP); + //CWM_Sensor_Enable(IDX_ALGO_INACTIVITY_OUTPUT); + //CWM_Sensor_Enable(IDX_ALGO_SEDENTARY); + //CWM_Sensor_Enable(IDX_ALGO_SLEEP); CWM_Sensor_Enable(IDX_ACCEL); //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__); // CWM_Sensor_Enable(IDX_GYRO); - CWM_Sensor_Enable(IDX_ALGO_NO_MOTION); + //CWM_Sensor_Enable(IDX_ALGO_NO_MOTION); //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__); // CWM_Sensor_Enable(IDX_ALGO_ANY_MOTIOIN); - CWM_Sensor_Enable(IDX_ALGO_ABSOLUTE_STATIC); + //CWM_Sensor_Enable(IDX_ALGO_ABSOLUTE_STATIC); //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__); cyw_activity_mode_change(SPORT_ACTIVE_MODE_NORMAL); - cyw_inactivity_mode_change(INACTIVITY_MODE_SEDENTARY); + //cyw_inactivity_mode_change(INACTIVITY_MODE_SEDENTARY); send_ppg_cmd_msg(PPG_SERVICE_CMD_TYPE_DO_WEAR_MODE_TEST); // cyw_activity_mode_change(cmd); @@ -882,5 +901,24 @@ int cywee_main_dml(void) void cywee_int_handler(void) { - CWM_Dml_process(); + uint64_t ts_ns =CWM_OS_GetTimeNs(); + + int ret = CWM_CustomSensorInput_Fifo_Start(CUSTOM_ACC, ts_ns , 40*1e6); + CWM_OS_dbgPrintf("cywee_int_handler ts_seconds %d , CWM_CustomSensorInput_Fifo_Start ret 0x%X \r\n",ts_ns,ret); + if (ret == 0 ) + { + for (int i = 0; i < 25; i ++) + { + memset(&csd, 0, sizeof(CustomSensorData)); + csd.sensorType = CUSTOM_ACC; + csd.fData[0] = s_data[i][0]; + csd.fData[1] = s_data[i][1]; + csd.fData[2] = s_data[i][2]; + CWM_CustomSensorInput(&csd); + } + + } + CWM_CustomSensorInput_Fifo_End(CUSTOM_ACC); + + ret = CWM_Dml_process(); } diff --git a/code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hal.c b/code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hal.c index e55579dd5..79acd5f63 100644 --- a/code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hal.c +++ b/code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hal.c @@ -2,7 +2,7 @@ * @Author: penglei 1624952103@qq.com * @Date: 2024-03-13 15:08:38 * @LastEditors: penglei 1624952103@qq.com - * @LastEditTime: 2024-04-22 10:37:39 + * @LastEditTime: 2024-04-22 21:03:16 * @FilePath: /FD230/code/sdk/drivers/peripheral/ppg/hx3695/hx3695_hal.c * @Description: * @@ -86,11 +86,11 @@ void ppg_send_cmd_to_driver(char* mode, uint8_t enable) hx3695_spo2_disable(); #endif } -// else{ -// #ifdef HRS_ALG_LIB -// hx3695_hrs_disable(); -// #endif -// } + else{ +#ifdef HRS_ALG_LIB + hx3695_hrs_disable(); +#endif + } uapi_pm_control(PM_APP_WAKE_NONEED); tyhx_poweroff(); } diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.c b/code/sdk/drivers/peripheral/utils/custom_utils.c index 7290d6733..0e5085f41 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.c +++ b/code/sdk/drivers/peripheral/utils/custom_utils.c @@ -1169,20 +1169,20 @@ uint32_t secondsSinceEpoch(int year,int month,int day,int hour,int min,int sec) return seconds; } -void get_rtc(uint32_t *msc) +void get_rtc(uint32_t *seconds) { time_t rawtime; struct tm* timeinfo; time(&rawtime); timeinfo = localtime(&rawtime); - *msc = secondsSinceEpoch(timeinfo->tm_year + 1900, + *seconds = secondsSinceEpoch(timeinfo->tm_year + 1900, timeinfo->tm_mon + 1, timeinfo->tm_mday, timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec); - PRINT("msc : %d \r\n",*msc); + PRINT("msc : %d \r\n",*seconds); } //#include "lis2doc_reg.h" diff --git a/code/sdk/drivers/peripheral/utils/custom_utils.h b/code/sdk/drivers/peripheral/utils/custom_utils.h index 48a041da7..fb0c5ca5b 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils.h +++ b/code/sdk/drivers/peripheral/utils/custom_utils.h @@ -110,7 +110,7 @@ void battery_getvolpower(uint8_t *power); void flash_getid(uint32_t *id); void flash_erase(void); -void get_rtc(uint32_t *msc); +void get_rtc(uint32_t *seconds); //进入recovery int enter_recovery(void);