libusb开发包中的接口使用问题
最近小弟在准备在linux下用libusb开发包写一个用户空间的mass storage驱动程序。在网上也找了许多例子,但是用起来都有问题,一时也找不到解决办法,在此请教各位大侠,望不吝指教:
进行bulk传输时,调用接口usb_bulk_write 总是出现问题,返回错误码有时是-2,有时是-16,这些错误码不知道代表什么意思。代码如下:
int main()
{
struct usb_bus *busses, *bus;
device_handle *handle = NULL;
int c, i, a;
usb_init();
usb_find_busses();
usb_find_devices();
busses = usb_get_busses();
for (bus = busses; bus; bus = bus->next) {
struct usb_device *dev;
for (dev = bus->devices; dev; dev = dev->next) {
/* 找到我想要操作的设备 */
if ( dev->idVendor == 0x0204 && dev->idProduct == 0x6025 ){
/*这里我发送的是一个包含INQURY命令的cbw数据包,事实上,可以使用usb_bulk_write接口发送任何的数据至设备*/
c = usb_bulk_write(handle, 0x01, cbw, sizeof(cbw), 1000);
if ( c < 0 ) {
/* 向设备发送数据失败 */
printf("bulk write error. errorcode(%d)\n", c);
return 1;
}
}
}
}
return 0;
}
请问:
1.在调用usb_bulk_write接口之前所做的准备工作就这些吗?是不是需要其他的初始化动作,比如调用usb_set_configuration重新配置设备,等等?
2.我调用usb_bulk_write接口的方法是否正确?
3.现在的情况是,按照这种方式,我试了好几个接口,usb_set_configuration,usb_set_altinterface ,usb_resetep,usb_claim_interface接口都不好用,总是报错。我想应该是我在调用这些接口之前少做了些动作,但是具体原因不太清楚。
多谢各位大侠多多指教,小弟感激不尽啊。