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; }
int main(int argc, char *argv[]) { char dev_path[64]; FILE *fp; char evt_path[32]; int fd; int version; unsigned short id[4]; char name[32]; unsigned long bit[EV_MAX][NBITS(KEY_MAX)]; int i, j, k; int abs[5]; struct input_event evt[64]; int rd; char buf[64]; char pre_key[64]; INIT_CMD_PIPE(); strncpy(dev_path, "/sys/class/input/event0/device/name", 64); for (i = 0; i < 5; i++) { dev_path[22] = '0' + i; if (access(dev_path, F_OK)) { db_error("can't access %s(%s)\n", dev_path, strerror(errno)); goto err; } fp = fopen(dev_path, "r"); if (fp == NULL) { db_error("can't open %s(%s)\n", dev_path, strerror(errno)); goto err; } if (fgets(evt_path, 32, fp) == NULL) { db_error("can't read %s(%s)\n", dev_path, strerror(errno)); goto err; } if (match_ir(evt_path) == 0) { fclose(fp); break; } fclose(fp); } if (i == 5) { db_error("NO!!! ir input found\n"); goto err; } strncpy(evt_path, "/dev/input/event0", 32); evt_path[16] = '0' + i; if ((fd = open(evt_path, O_RDONLY)) < 0) { db_error("can't open %s(%s)\n", evt_path, strerror(errno)); goto err; } if (ioctl(fd, EVIOCGVERSION, &version)) { db_error("can't get version\n"); goto err; } db_debug("Input driver version is %d.%d.%d\n", version >> 16, (version >> 8) & 0xff, version & 0xff); ioctl(fd, EVIOCGID, id); db_debug("Input device ID: bus 0x%x vendor 0x%x product 0x%x version 0x%x\n", id[ID_BUS], id[ID_VENDOR], id[ID_PRODUCT], id[ID_VERSION]); ioctl(fd, EVIOCGNAME(sizeof(name)), name); db_debug("Input device name: \"%s\"\n", name); memset(bit, 0, sizeof(bit)); ioctl(fd, EVIOCGBIT(0, sizeof(bit[0])), bit[0]); db_dump("Supported events:\n"); for (i = 0; i < EV_MAX; i++) { if (test_bit(i, bit[0])) { db_dump(" Event type %d (%s)\n", i, events[i] ? events[i] : "?"); if (!i) continue; ioctl(fd, EVIOCGBIT(i, sizeof(bit[0])), bit[i]); for (j = 0; j < KEY_MAX; j++) { if (test_bit(j, bit[i])) { db_dump(" Event code %d (%s)\n", j, names[i] ? (names[i][j] ? names[i][j] : "?") : "?"); if (i == EV_ABS) { ioctl(fd, EVIOCGABS(j), abs); for (k = 0; k < 5; k++) { if ((k < 3) || abs[k]) printf("%s %6d\n", absval[k], abs[k]); } } } } } } memset(pre_key, 0, sizeof(pre_key)); while (1) { rd = read(fd, evt, sizeof(struct input_event) * 64); if (rd < (int)sizeof(struct input_event)) { db_error("error in reading\n"); goto err; } for (i = 0; i < rd / sizeof(struct input_event); i++) { if (evt[i].type == EV_SYN) { ; } else if (evt[i].type == EV_MSC && (evt[i].code == MSC_RAW || evt[i].code == MSC_SCAN)) { db_debug("%s, %s(%d, %02x)\n", events[evt[i].type] ? events[evt[i].type] : "?", names[evt[i].type] ? (names[evt[i].type][evt[i].code] ? names[evt[i].type][evt[i].code] : "?") : "?", evt[i].code, evt[i].value); if (evt[i].value) continue; if (pre_key[0]) { snprintf(buf, sizeof(buf), "%s, %s", names[evt[i].type] ? (names[evt[i].type][evt[i].code] ? names[evt[i].type][evt[i].code] : "?") : "?", pre_key); } else { snprintf(buf, sizeof(buf), "%s", names[evt[i].type] ? (names[evt[i].type][evt[i].code] ? names[evt[i].type][evt[i].code] : "?") : "?"); } snprintf(pre_key, sizeof(pre_key), "%s", buf); SEND_CMD_PIPE_OK_EX(buf); } else { db_debug("%s, %s(%d, %02x)\n", events[evt[i].type] ? events[evt[i].type] : "?", names[evt[i].type] ? (names[evt[i].type][evt[i].code] ? names[evt[i].type][evt[i].code] : "?") : "?", evt[i].code, evt[i].value); if (evt[i].value) continue; if (pre_key[0]) { snprintf(buf, sizeof(buf), "%s, %s", names[evt[i].type] ? (names[evt[i].type][evt[i].code] ? names[evt[i].type][evt[i].code] : "?") : "?", pre_key); } else { snprintf(buf, sizeof(buf), "%s", names[evt[i].type] ? (names[evt[i].type][evt[i].code] ? names[evt[i].type][evt[i].code] : "?") : "?"); } snprintf(pre_key, sizeof(pre_key), "%s", buf); SEND_CMD_PIPE_OK_EX(buf); } } } err: SEND_CMD_PIPE_FAIL(); EXIT_CMD_PIPE(); return 0; }