projects
/
libam7xxx.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
README.asciidoc: mention the TEC PP700 projector as supported
[libam7xxx.git]
/
src
/
am7xxx.c
diff --git
a/src/am7xxx.c
b/src/am7xxx.c
index
e809c55
..
1f75c60
100644
(file)
--- a/
src/am7xxx.c
+++ b/
src/am7xxx.c
@@
-68,33
+68,52
@@
struct am7xxx_usb_device_descriptor {
const char *name;
uint16_t vendor_id;
uint16_t product_id;
const char *name;
uint16_t vendor_id;
uint16_t product_id;
+ uint8_t configuration; /* The bConfigurationValue of the device */
+ uint8_t interface_number; /* The bInterfaceNumber of the device */
};
};
-static struct am7xxx_usb_device_descriptor supported_devices[] = {
+static
const
struct am7xxx_usb_device_descriptor supported_devices[] = {
{
.name = "Acer C110",
.vendor_id = 0x1de1,
.product_id = 0xc101,
{
.name = "Acer C110",
.vendor_id = 0x1de1,
.product_id = 0xc101,
+ .configuration = 2,
+ .interface_number = 0,
},
{
.name = "Acer C112",
.vendor_id = 0x1de1,
.product_id = 0x5501,
},
{
.name = "Acer C112",
.vendor_id = 0x1de1,
.product_id = 0x5501,
+ .configuration = 2,
+ .interface_number = 0,
},
{
.name ="Aiptek PocketCinema T25",
.vendor_id = 0x08ca,
.product_id = 0x2144,
},
{
.name ="Aiptek PocketCinema T25",
.vendor_id = 0x08ca,
.product_id = 0x2144,
+ .configuration = 2,
+ .interface_number = 0,
},
{
.name = "Philips/Sagemcom PicoPix 1020",
.vendor_id = 0x21e7,
.product_id = 0x000e,
},
{
.name = "Philips/Sagemcom PicoPix 1020",
.vendor_id = 0x21e7,
.product_id = 0x000e,
+ .configuration = 2,
+ .interface_number = 0,
},
{
.name = "Philips/Sagemcom PicoPix 2055",
.vendor_id = 0x21e7,
.product_id = 0x0016,
},
{
.name = "Philips/Sagemcom PicoPix 2055",
.vendor_id = 0x21e7,
.product_id = 0x0016,
+ .configuration = 2,
+ .interface_number = 0,
+ },
+ {
+ .name = "Philips/Sagemcom PicoPix 2330",
+ .vendor_id = 0x21e7,
+ .product_id = 0x0019,
+ .configuration = 1,
+ .interface_number = 0,
},
};
},
};
@@
-606,17
+625,21
@@
static int scan_devices(am7xxx_context *ctx, scan_op op,
* close it again before bailing out.
*/
* close it again before bailing out.
*/
- ret = libusb_set_configuration((*dev)->usb_device, 2);
+ ret = libusb_set_configuration((*dev)->usb_device,
+ (*dev)->desc->configuration);
if (ret < 0) {
debug(ctx, "libusb_set_configuration failed\n");
if (ret < 0) {
debug(ctx, "libusb_set_configuration failed\n");
- debug(ctx, "Cannot set configuration 2\n");
+ debug(ctx, "Cannot set configuration %hhu\n",
+ (*dev)->desc->configuration);
goto out_libusb_close;
}
goto out_libusb_close;
}
- ret = libusb_claim_interface((*dev)->usb_device, 0);
+ ret = libusb_claim_interface((*dev)->usb_device,
+ (*dev)->desc->interface_number);
if (ret < 0) {
debug(ctx, "libusb_claim_interface failed\n");
if (ret < 0) {
debug(ctx, "libusb_claim_interface failed\n");
- debug(ctx, "Cannot claim interface 0\n");
+ debug(ctx, "Cannot claim interface %hhu\n",
+ (*dev)->desc->interface_number);
out_libusb_close:
libusb_close((*dev)->usb_device);
(*dev)->usb_device = NULL;
out_libusb_close:
libusb_close((*dev)->usb_device);
(*dev)->usb_device = NULL;
@@
-665,7
+688,7
@@
AM7XXX_PUBLIC int am7xxx_init(am7xxx_context **ctx)
if (ret < 0)
goto out_free_context;
if (ret < 0)
goto out_free_context;
- libusb_set_debug((*ctx)->usb_context,
3
);
+ libusb_set_debug((*ctx)->usb_context,
LIBUSB_LOG_LEVEL_INFO
);
ret = scan_devices(*ctx, SCAN_OP_BUILD_DEVLIST , 0, NULL);
if (ret < 0) {
ret = scan_devices(*ctx, SCAN_OP_BUILD_DEVLIST , 0, NULL);
if (ret < 0) {
@@
-758,7
+781,7
@@
AM7XXX_PUBLIC int am7xxx_close_device(am7xxx_device *dev)
return -EINVAL;
}
if (dev->usb_device) {
return -EINVAL;
}
if (dev->usb_device) {
- libusb_release_interface(dev->usb_device,
0
);
+ libusb_release_interface(dev->usb_device,
dev->desc->interface_number
);
libusb_close(dev->usb_device);
dev->usb_device = NULL;
}
libusb_close(dev->usb_device);
dev->usb_device = NULL;
}