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
);
55 signal(SIGTERM
, release_usb_device
);
57 ret
= usb_get_driver_np(devh
, 0, buf
, sizeof(buf
));
58 ret
= usb_claim_interface(devh
, 0);
60 printf("claim failed with error %d\n", ret
);
64 ret
= usb_set_altinterface(devh
, 0);
67 ret
= usb_get_descriptor(devh
, 0x0000001, 0x0000000, buf
, 0x0000012);
69 ret
= usb_get_descriptor(devh
, 0x0000002, 0x0000000, buf
, 0x0000009);
71 ret
= usb_get_descriptor(devh
, 0x0000002, 0x0000000, buf
, 0x0000027);
73 ret
= usb_release_interface(devh
, 0);
74 if (ret
!= 0) printf("failed to release interface before set_configuration: %d\n", ret
);
75 ret
= usb_set_configuration(devh
, 0x0000001);
76 ret
= usb_claim_interface(devh
, 0);
77 if (ret
!= 0) printf("claim after set_configuration failed with error %d\n", ret
);
78 ret
= usb_set_altinterface(devh
, 0);