Lines Matching refs:device
197 D("Created device discovery thread\n");
283 D("new device %s\n", path);
286 D("gone device %s\n", path);
347 void usb_device_close(struct usb_device *device)
349 close(device->fd);
350 free(device);
355 struct usb_device *device = calloc(1, sizeof(struct usb_device));
362 length = read(fd, device->desc, sizeof(device->desc));
367 strncpy(device->dev_name, dev_name, sizeof(device->dev_name) - 1);
368 device->fd = fd;
369 device->desc_length = length;
371 device->writeable = 1;
372 return device;
376 free(device);
380 static int usb_device_reopen_writeable(struct usb_device *device)
382 if (device->writeable)
385 int fd = open(device->dev_name, O_RDWR);
387 close(device->fd);
388 device->fd = fd;
389 device->writeable = 1;
396 int usb_device_get_fd(struct usb_device *device)
398 if (!usb_device_reopen_writeable(device))
400 return device->fd;
403 const char* usb_device_get_name(struct usb_device *device)
405 return device->dev_name;
408 int usb_device_get_unique_id(struct usb_device *device)
411 sscanf(device->dev_name, USB_FS_ID_SCANNER, &bus, &dev);
431 uint16_t usb_device_get_vendor_id(struct usb_device *device)
433 struct usb_device_descriptor* desc = (struct usb_device_descriptor*)device->desc;
437 uint16_t usb_device_get_product_id(struct usb_device *device)
439 struct usb_device_descriptor* desc = (struct usb_device_descriptor*)device->desc;
443 const struct usb_device_descriptor* usb_device_get_device_descriptor(struct usb_device *device)
445 return (struct usb_device_descriptor*)device->desc;
448 char* usb_device_get_string(struct usb_device *device, int id)
460 result = usb_device_control_transfer(device,
469 result = usb_device_control_transfer(device,
486 char* usb_device_get_manufacturer_name(struct usb_device *device)
488 struct usb_device_descriptor *desc = (struct usb_device_descriptor *)device->desc;
491 return usb_device_get_string(device, desc->iManufacturer);
496 char* usb_device_get_product_name(struct usb_device *device)
498 struct usb_device_descriptor *desc = (struct usb_device_descriptor *)device->desc;
501 return usb_device_get_string(device, desc->iProduct);
506 char* usb_device_get_serial(struct usb_device *device)
508 struct usb_device_descriptor *desc = (struct usb_device_descriptor *)device->desc;
511 return usb_device_get_string(device, desc->iSerialNumber);
516 int usb_device_is_writeable(struct usb_device *device)
518 return device->writeable;
521 void usb_descriptor_iter_init(struct usb_device *device, struct usb_descriptor_iter *iter)
523 iter->config = device->desc;
524 iter->config_end = device->desc + device->desc_length;
525 iter->curr_desc = device->desc;
538 int usb_device_claim_interface(struct usb_device *device, unsigned int interface)
540 return ioctl(device->fd, USBDEVFS_CLAIMINTERFACE, &interface);
543 int usb_device_release_interface(struct usb_device *device, unsigned int interface)
545 return ioctl(device->fd, USBDEVFS_RELEASEINTERFACE, &interface);
548 int usb_device_connect_kernel_driver(struct usb_device *device,
556 return ioctl(device->fd, USBDEVFS_IOCTL, &ctl);
559 int usb_device_control_transfer(struct usb_device *device,
571 if (!usb_device_reopen_writeable(device))
582 return ioctl(device->fd, USBDEVFS_CONTROL, &ctrl);
585 int usb_device_bulk_transfer(struct usb_device *device,
602 return ioctl(device->fd, USBDEVFS_BULK, &ctrl);