9 struct usb_dev_handle
*devh
;
11 void release_usb_device(int dummy
) {
13 ret
= usb_release_interface(devh
, 0);
15 printf("failed to release interface: %d\n", ret
);
18 printf("failed to close interface: %d\n", ret
);
22 struct usb_device
*find_device(int vendor
, int product
) {
25 for (bus
= usb_get_busses(); bus
; bus
= bus
->next
) {
26 struct usb_device
*dev
;
28 for (dev
= bus
->devices
; dev
; dev
= dev
->next
) {
29 if (dev
->descriptor
.idVendor
== vendor
30 && dev
->descriptor
.idProduct
== product
)
38 int vendor
, product
, ret
;
39 struct usb_device
*dev
;
46 // vendor and product code for Sony alpha 700
49 dev
= find_device(vendor
, product
);
51 fprintf(stderr
, "No camera found!\n");
58 signal(SIGTERM
, release_usb_device
);
60 ret
= usb_get_driver_np(devh
, 0, buf
, sizeof(buf
));
61 ret
= usb_claim_interface(devh
, 0);
63 printf("claim failed with error %d\n", ret
);
67 ret
= usb_set_altinterface(devh
, 0);
70 ret
= usb_get_descriptor(devh
, 0x0000001, 0x0000000, buf
, 0x0000012);
72 ret
= usb_get_descriptor(devh
, 0x0000002, 0x0000000, buf
, 0x0000009);
74 ret
= usb_get_descriptor(devh
, 0x0000002, 0x0000000, buf
, 0x0000027);
76 ret
= usb_release_interface(devh
, 0);
77 if (ret
!= 0) printf("failed to release interface before set_configuration: %d\n", ret
);
78 ret
= usb_set_configuration(devh
, 0x0000001);
79 ret
= usb_claim_interface(devh
, 0);
80 if (ret
!= 0) printf("claim after set_configuration failed with error %d\n", ret
);
81 ret
= usb_set_altinterface(devh
, 0);