PressSensor::PressSensor() : SensorBase(NULL, PRESS_DATA_NAME), mPendingMask(0), mInputReader(4) { memset(&mPendingEvent[0], 0, sensors *sizeof(sensors_event_t)); memset(mClassPath, '\0', sizeof(mClassPath)); mEnabled[press] = 0; mDelay[press] = 0; mPendingEvent[press].version = sizeof(sensors_event_t); mPendingEvent[press].sensor = ID_P; mPendingEvent[press].type = SENSOR_TYPE_PRESSURE; mPendingEvent[press].magnetic.status = SENSOR_STATUS_ACCURACY_HIGH; mPendingEvent[press].version = sizeof(sensors_event_t); mEnabled[temperature] = 0; mDelay[temperature] = 0; mPendingEvent[temperature].sensor = ID_T; mPendingEvent[temperature].type = SENSOR_TYPE_TEMPERATURE; mPendingEvent[temperature].orientation.status = SENSOR_STATUS_ACCURACY_HIGH; mPendingEvent[temperature].version = sizeof(sensors_event_t); if(sensor_get_class_path(mClassPath)) { ALOGE("Can`t find the press sensor!"); } }
GSensor::GSensor() : SensorBase(NULL, SENSOR_NAME), mEnabled(0) { m_gspos = acc_aml_get_install_dir(); if(0> sensor_get_class_path(class_path) ){ ALOGE("failed to sensor_get_class_path!!"); return ; } ALOGD("dgt GSensor:m_gspos=%d,class_path is %s \n", m_gspos, class_path); }
AccSensor::AccSensor() : SensorBase(NULL, ACC_DATA_NAME), mEnabled(0), mDelay(0), mInputReader(32), mHasPendingEvent(false), mSensorCoordinate() { memset(&mPendingEvent, 0, sizeof(mPendingEvent)); memset(mClassPath, '\0', sizeof(mClassPath)); mPendingEvent.version = sizeof(sensors_event_t); mPendingEvent.sensor = ID_A; mPendingEvent.type = SENSOR_TYPE_ACCELEROMETER; memset(mPendingEvent.data, 0, sizeof(mPendingEvent.data)); if(sensor_get_class_path(mClassPath)) { ALOGE("Can`t find the Acc sensor!"); } ALOGD("freescale sensor hal"); }
static int sensor_init(struct sensors_poll_context_t *dev) { int ret = -1; strcpy(class_path,"\0"); strcpy(sensor_name,"\0"); if(sensor_get_class_path() < 0) { ALOGD("sensor get class path error \n"); return 0; } if(!(ret = gsensor_cfg())){ ALOGD("gsensor config error!\n"); return 0; } dev->fd = 0; dev->fd = open_input_device(); if(dev->fd <0) { ALOGD("%s:open device error!",__func__); return 0; } return 1; }
int main(int argc, char *argv[]) { char dev_path[64]; int fd; int x=0; int y=0; int z=0; struct input_event event; char buf[64]; char class_path[256]; int ret; INIT_CMD_PIPE(); if(sensor_get_class_path(class_path,argv[4]) < 0) { db_error("can't get the sensor class path\n"); goto err; } ret=sprintf(buf,"%d",1); if(0!=set_sysfs_input_attr(class_path,"enable",buf,ret)){ db_warn("can't set sensor enable!!! (%s)\n", strerror(errno)); } fd=open_input_device(argv[4]); if (fd== -1) { db_error("can't open %s(%s)\n",argv[4], strerror(errno)); goto err; } /* strncpy(dev_path, "/dev/input/event2", 64); fd= open(dev_path, O_RDONLY); if (fd== -1) { db_error("can't open %s(%s)\n", dev_path, strerror(errno)); goto err; } */ while(1){ ret = read(fd, &event, sizeof(event)); if(ret==-1){ db_error("can't read %s(%s)\n", dev_path, strerror(errno)); goto err; } if (event.type == EV_ABS) { switch (event.code) { case ABS_X: x =event.value; //db_msg("senser data is: x=%d\n",x); break; case ABS_Y: y =event.value; // db_msg("senser date is: y=%d\n",y); break; case ABS_Z: z =event.value; // db_msg("senser date is:z=%d\n",z); break; } sprintf(buf,"(%d,%d,%d)",x,y,z); //db_msg("senser data is:x=%d,y=%d,z=%d\n",x,y,z); SEND_CMD_PIPE_OK_EX(buf); } sleep(1); } close(fd); err: SEND_CMD_PIPE_FAIL(); EXIT_CMD_PIPE(); return 0; }