From: penglei <1624952103@qq.com> Date: Thu, 28 Mar 2024 03:13:12 +0000 (+0800) Subject: gsensor数据读取 X-Git-Tag: release_V1.2.70_20241020_135402~1249 X-Git-Url: http://git.snicker.com.cn/Users/apple/Desktop/static/gitweb.css?a=commitdiff_plain;h=6e0e29ba0b4777d169fd85da88501462a31a9a55;p=mirrors%2FFD230.git gsensor数据读取 --- diff --git a/code/sdk/drivers/peripheral/cywee/Inc/cywee_hal.h b/code/sdk/drivers/peripheral/cywee/Inc/cywee_hal.h index c62c3cdc1..4b63a572a 100644 --- a/code/sdk/drivers/peripheral/cywee/Inc/cywee_hal.h +++ b/code/sdk/drivers/peripheral/cywee/Inc/cywee_hal.h @@ -429,6 +429,8 @@ typedef struct extern void get_gsonsen_xyz(gsenson_t *t); +extern void gsensor_get_n_data(uint8_t cnt); + #pragma pack() @@ -450,6 +452,8 @@ extern void get_gsonsen_xyz(gsenson_t *t); int cywee_main_dml(void); void cywee_int_handler(void); + + #ifdef __cplusplus #if __cplusplus } diff --git a/code/sdk/drivers/peripheral/cywee/src/main_dml.c b/code/sdk/drivers/peripheral/cywee/src/main_dml.c index 017442ccb..d3b01a5ea 100644 --- a/code/sdk/drivers/peripheral/cywee/src/main_dml.c +++ b/code/sdk/drivers/peripheral/cywee/src/main_dml.c @@ -19,13 +19,15 @@ int16_t gsensor_z[24] = {0}; #define GSENSON_MSG_COUNT 16 osal_mutex mutex_gsenson_queue; +osal_mutex mutex_gsensor_queue_ext; static unsigned long gsenson_queue; + void uapi_GSENSON_create_queue(void) { - if (osal_msg_queue_create("battery_queue", GSENSON_MSG_COUNT, &gsenson_queue, - 0, sizeof(gsenson_t)) != ERRCODE_SUCC) { - //PRINT("[battery][service] app create mail fail\n"); + if ( (osal_msg_queue_create("gsensor_queue", GSENSON_MSG_COUNT, &gsenson_queue,0, sizeof(gsenson_t)) )!= ERRCODE_SUCC) + { + CWM_OS_dbgPrintf("gsensor_queue create fail\r\n"); } osal_mutex_init(&mutex_gsenson_queue); @@ -33,74 +35,83 @@ void uapi_GSENSON_create_queue(void) static gsenson_t gxyz_t; static uint8_t gsenson_falg=0; + +static uint16 num_falg=0; +static gsenson_t gxyz_t_queue[16]={0}; +static int16 left_falg=0; +static int16 right_falg=-1; + + void get_gsonsen_xyz(gsenson_t *t) { - if(osal_mutex_trylock(&mutex_gsenson_queue)==0) + if(osal_mutex_trylock(&mutex_gsenson_queue)==0) + { + CWM_OS_dbgPrintf("get_gsonsen_xyz_fail\n"); + return; + } + t->x = gxyz_t_queue[left_falg].x; + t->y = gxyz_t_queue[left_falg].y; + t->z = gxyz_t_queue[left_falg].z; + osal_mutex_unlock(&mutex_gsenson_queue); +} + +void gsensor_get_n_data(uint8_t cnt) +{ + for(int i=0;ix=gxyz_t.x; - t->y=gxyz_t.y; - t->z=gxyz_t.z; - CWM_OS_dbgPrintf("get_gsonsen_%d,%d,%d\n",t->x, t->y,t->z); - osal_mutex_unlock(&mutex_gsenson_queue); -} +} +//static int flag=32; void CWM_AP_SensorListen(pSensorEVT_t sensorEVT) { switch (sensorEVT->sensorType) { case IDX_ACCEL: - #if 1 - // CWM_OS_dbgPrintf("acc: x=%.3f, y=%.3f, z=%.3f\n", - // sensorEVT->fData[0], - // sensorEVT->fData[1], - // sensorEVT->fData[2] - // ); - if(osal_msg_queue_is_full(gsenson_queue)) - { - - gsenson_t t; - int ret=osal_msg_queue_read_copy(gsenson_queue, &t, sizeof(gsenson_t),OSAL_MSGQ_NO_WAIT); - if(osal_mutex_trylock(&mutex_gsenson_queue)==0) - { - CWM_OS_dbgPrintf("get_gsonsen_xxxxxxxx_fail\n"); - break; - } - gxyz_t.x=t.x; - gxyz_t.y=t.y; - gxyz_t.z=t.z; - osal_mutex_unlock(&mutex_gsenson_queue); - - if(ret!=0) - { - CWM_OS_dbgPrintf("osal_msg_queue_read_copyz_fail\n"); - } - t.x=sensorEVT->fData[0]*1024; - t.y=sensorEVT->fData[1]*1024; - t.z=sensorEVT->fData[2]*1024; - ret=osal_msg_queue_write_copy(gsenson_queue, &t, sizeof(gsenson_t),OSAL_MSGQ_NO_WAIT); - if(ret!=0) - { - CWM_OS_dbgPrintf("osal_msg_queue_write_copy_fail\n"); - } - - - } - else - { - gsenson_t t; - t.x=sensorEVT->fData[0]; - t.y=sensorEVT->fData[1]; - t.z=sensorEVT->fData[2]; - int ret= osal_msg_queue_write_copy(gsenson_queue, &t, sizeof(gsenson_t),OSAL_MSGQ_NO_WAIT); - if(ret!=0) - { - CWM_OS_dbgPrintf("osal_msg_queue_write_copy_fail\n"); - } - - } - + #if 1 + if(osal_mutex_trylock(&mutex_gsenson_queue)==0) + { + CWM_OS_dbgPrintf("get_gsonsen_xxxxxxxx_fail\n"); + break; + } + if(num_falg==16) + { + left_falg++; + right_falg++; + right_falg=right_falg%16; + left_falg=left_falg%16; + 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%16; + //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); + + } + osal_mutex_unlock(&mutex_gsenson_queue); #endif break; @@ -338,6 +349,7 @@ int cywee_main_dml(void) { CWM_SettingControl(SCL_CHIP_VENDOR_CONFIG, &scl); //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__); + uapi_GSENSON_create_queue(); CWM_LibPostInit(CWM_AP_SensorListen); //CWM_OS_dbgPrintf("[DBG] %s %d\n", __func__,__LINE__);