int GSensor:: enable(int handle, int enabled) { char buffer[20]; int bytes = sprintf(buffer, "%d\n", enabled); return set_sysfs_input_attr(class_path,"enable",buffer,bytes); }
int GSensor:: setDelay(int handle, int64_t ns) { char buffer[20]; int ms=ns/1000000; int bytes = sprintf(buffer, "%d\n", ms); return set_sysfs_input_attr(class_path,"delay",buffer,bytes); }
int GyroSensor::setDelay(int32_t handle, int64_t delay_ns) { char buf[80]; int bytes = sprintf(buf, "%lld", delay_ns/1000 / 1000); int err = set_sysfs_input_attr(gyrSensorInfo.classPath,"pollrate_us",buf,bytes); return err; }
int AccelSensor::writeEnable(int isEnable) { char buf[2]; int err = -1 ; if(gsensorInfo.classPath[0] == ICHAR) return -1; int bytes = sprintf(buf, "%d", isEnable); if(!strcmp(ACC_DATA_NAME, "lsm303d_acc")) { err = set_sysfs_input_attr(gsensorInfo.classPath,"enable_device",buf,bytes); }else { err = set_sysfs_input_attr(gsensorInfo.classPath,"enable",buf,bytes); } return err; }
static int poll__activate(struct sensors_poll_device_t *device, int handle, int enabled) { sensors_poll_context_t *dev = (sensors_poll_context_t *)device; char buffer[20]; int bytes = sprintf(buffer, "%d\n", enabled); set_sysfs_input_attr(dev->class_path,"enable",buffer,bytes); return 0; }
static int poll__setDelay(struct sensors_poll_device_t *device, int handle, int64_t ns) { sensors_poll_context_t *dev = (sensors_poll_context_t *)device; char buffer[20]; int ms=ns/1000000; int bytes = sprintf(buffer, "%d\n", ms); set_sysfs_input_attr(dev->class_path,"delay",buffer,bytes); return 0; }
int AccelSensor::writeDelay(int64_t ns) { if(gsensorInfo.classPath[0] == ICHAR) return -1; if (ns > 10240000000LL) { ns = 10240000000LL; /* maximum delay in nano second. */ } if (ns < 312500LL) { ns = 312500LL; /* minimum delay in nano second. */ } char buf[80]; int bytes = sprintf(buf, "%lld", ns/1000 / 1000); if(!strcmp(ACC_DATA_NAME, "lsm303d_acc")) { int err = set_sysfs_input_attr(gsensorInfo.classPath,"pollrate_us",buf,bytes); } else { int err = set_sysfs_input_attr(gsensorInfo.classPath,"delay",buf,bytes); } return 0; }
int GyroSensor::setEnable(int32_t handle, int en) { char buf[2]; int err = -1 ; if(gyrSensorInfo.classPath[0] == '\0') return -1; int bytes = sprintf(buf, "%d", en); if (en != mEnabled) { err = set_sysfs_input_attr(gyrSensorInfo.classPath,"enable_device",buf,bytes); mEnabled = en; } return 0; }
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; }