#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
{ 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
{ 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上拉电源
/**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
-
};
/**
* @}
* @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:
*
#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
* 测试指令 参数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
}
#include "broadcast_feature.h"
#include "ppg_service.h"
+#include "platform_core.h"
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;
}
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)
{
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");
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)
CWM_CustomSensorInput(&csd);
}
-
-
//0:resume , 1:pause
void activity_mode_setstatus(int cmd)
{
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;
//get chip information
+
char chipInfo[64];
memset(&scl, 0, sizeof(scl));
#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;
// //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);
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();
}
* @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:
*
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();
}
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"
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);