#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);
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;i<cnt;i++)
{
- CWM_OS_dbgPrintf("get_gsonsen_xyz_fail\n");
- return;
+ if(osal_mutex_trylock(&mutex_gsenson_queue)==0)
+ {
+ CWM_OS_dbgPrintf("get_gsonsen_xyz_fail\n");
+ return;
+ }
+ CWM_OS_dbgPrintf("x : %d , y : %d , z : %d\n", gxyz_t_queue[left_falg].x, gxyz_t_queue[left_falg].y, gxyz_t_queue[left_falg].z);
+ if(num_falg==0)
+ {
+ break;
+ }
+ left_falg++;
+ left_falg=left_falg%16;
+ num_falg--;
+ osal_mutex_unlock(&mutex_gsenson_queue);
}
- t->x=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;
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__);