#include #include #include #include #include #include #include #include #include /* #include */ #include "/home/ao2/Proj/linux/linux-2.6/include/linux/hidraw.h" void dump_hex_string(unsigned char *buf, unsigned int len) { unsigned int i; for (i = 0; i < len; i++) printf("%02x%c", buf[i], i < len - 1 ? ' ' : 0); } void dump_feature_report(int fd, uint8_t report_number, unsigned int len) { unsigned char *buf; int ret; buf = calloc(len, sizeof(*buf)); buf[0] = report_number; ret = ioctl(fd, HIDIOCGFEATURE(len), buf); if (ret < 0) { fprintf(stderr, "report: 0x%02x ret: %d\n", report_number, ret); /* XXX: if I put exit(1) here the bug is masked */ return; } dump_hex_string(buf, len); printf("\r"); fflush(stdout); free(buf); } int main(int argc, char *argv[]) { int fd = -1; if (argc != 2) { fprintf(stderr, "usage: %s \n", argv[0]); exit(1); } fd = open(argv[1], O_RDWR); if (fd < 0) { perror("hidraw open"); exit(1); } while (1) dump_feature_report(fd, 0x01, 45); printf("\n"); close(fd); exit(0); }