示例#1
0
int main()
{
	int ret, file, cmd;
	char *msg = malloc(MSG_SIZE);

	file = open("/dev/pen0", 0);
	if (file < 0) {
		printf("error in open file\n");
		exit(-1);
	}
	printf("Enter command:\n1. LED OFF\n2. LED ON\n3. Read USB Interrup\ninput: ");
	scanf("%d", &cmd);

	if (cmd == 1) {
		ret = usbdev_ioctl(file, 0, USB_LOW, msg);
	}
	else if (cmd == 2) {
		ret = usbdev_ioctl(file, 0, USB_HIGH, msg);
	}
	else if (cmd == 3) {
		ret = usbdev_ioctl(file, 0, USB_READ, msg);
		printf("Data read: \"%s\"\n", msg);
	}
	else
		printf("Wrong command\n");
		
	if (!ret)
		printf("Successfull\n");
	else
		printf("Error: ret %d\n", ret);

}
示例#2
0
文件: testusb.c 项目: Nan619/ltp-ddt
static int do_test(struct testdev *dev)
{
	int ret = 0;
	int fd, i;
	int status;

	if (dev->test > TEST_CASES) {
		fprintf(stderr, "unsupported test case %d\n", dev->test);
		return -1;
	}


	if ((fd = open(dev->name, O_RDWR)) < 0) {
		perror("can't open dev file r/w");
		return -1;
	}

restart:
	for (i = 0; i < TEST_CASES; i++) {
		if (dev->test != -1 && dev->test != i)
			continue;
		dev->param.test_num = i;

		status = usbdev_ioctl (fd, dev->ifnum,
				USBTEST_REQUEST, &dev->param);
		if (status < 0 && errno == EOPNOTSUPP)
			continue;

		/* NOTE: each thread emits complete lines; no fragments! */
		if (status < 0) {
			char	buf [80];
			int	err = errno;

			if (strerror_r (errno, buf, sizeof buf)) {
				snprintf (buf, sizeof buf, "error %d", err);
				errno = err;
			}
			printf ("%s test %d --> %d (%s)\n",
				dev->name, i, errno, buf);
			ret = errno;
			goto exit;
		} else
			printf ("%s test %d, %4d.%.06d secs\n", dev->name, i,
				(int) dev->param.duration.tv_sec,
				(int) dev->param.duration.tv_usec);

		fflush (stdout);
	}
	if (dev->forever)
		goto restart;

exit:
	close(fd);
	return ret;
}
示例#3
0
文件: testusb.c 项目: Nan619/ltp-ddt
static void *handle_testdev (void *arg)
{
	struct testdev		*dev = arg;
	int			fd, i;
	int			status;

	if ((fd = open (dev->name, O_RDWR)) < 0) {
		perror ("can't open dev file r/w");
		return 0;
	}

restart:
	for (i = 0; i < TEST_CASES; i++) {
		if (dev->test != -1 && dev->test != i)
			continue;
		dev->param.test_num = i;

		status = usbdev_ioctl (fd, dev->ifnum,
				USBTEST_REQUEST, &dev->param);
		if (status < 0 && errno == EOPNOTSUPP)
			continue;

		/* FIXME need a "syslog it" option for background testing */

		/* NOTE: each thread emits complete lines; no fragments! */
		if (status < 0) {
			char	buf [80];
			int	err = errno;

			if (strerror_r (errno, buf, sizeof buf)) {
				snprintf (buf, sizeof buf, "error %d", err);
				errno = err;
			}
			printf ("%s test %d --> %d (%s)\n",
				dev->name, i, errno, buf);
		} else
			printf ("%s test %d, %4d.%.06d secs\n", dev->name, i,
				(int) dev->param.duration.tv_sec,
				(int) dev->param.duration.tv_usec);

		fflush (stdout);
	}
	if (dev->forever)
		goto restart;

	close (fd);
	return arg;
}