基本结构如下:
1.分配usb_driver
2.设置
3.注册(usb_register())
/* 1. 分配/设置usb_driver */
static struct usb_driver myusb_driver = {
.name = "usbmouse_as_key_",
.probe = myusb_probe,
.disconnect = myusub_disconnect,
.id_table = myusb_id_table,
};
static int myusb_init(void)
{
/* 2.usb 注册 */
usb_register(&myusb_driver);
return 0;
}
static struct usb_device_id myusb_id_table[] = {
{ USB_INTERFACE_INFO(USB_INTERFACE_CLASS_HID, 0,0) },
//{USB_DEVICE(0x1234,0x5678)},
{ } /* Terminating entry */
};
注册完以后,当usb总线中出现id_table支持的设备时,执行probe函数。
关于id_table:
USB_INTERFACE_INFO(bInterfaceClass,bInterfaceSubClass,bInterfaceProtocol)//匹配接口描述符
USB_DEVICE(idVendor,idProduct)//匹配设备描述符中的VID,PID
........
要根据驱动程序所支持的设备选择。
<