50 if (g_hid_dev[i].udev ==
NULL)
52 memset((
char *)&g_hid_dev[i], 0,
sizeof(
HID_DEV_T));
62 memset((
char *)hid_dev, 0,
sizeof(
HID_DEV_T));
74 if (g_hid_dev[i].udev == urb->
dev)
76 if ((g_hid_dev[i].urbin == urb) || (g_hid_dev[i].urbout == urb))
89 if (&g_hid_dev[i] == hdev)
104 HID_DBGMSG(
"usbhid_probe - dev=0x%x\n", (
int)dev);
106 ifnum = ifd->bInterfaceNumber;
108 HID_DBGMSG(
"HID probe called for ifnum %d\n", ifnum);
111 for (i = 0; i < dev->ep_list_cnt; i++)
113 if ((dev->ep_list[i].ifnum == ifnum) &&
114 ((dev->ep_list[i].bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT))
116 ep_info = &dev->ep_list[i];
117 HID_DBGMSG(
"Interrupt Endpoint 0x%x found.\n", ep_info->bEndpointAddress);
122 HID_DBGMSG(
"couldn't find an input interrupt endpoint\n");
126 hid = alloc_hid_device();
130 HID_DBGMSG(
"New HID device 0x%x.\n", (
int)hid);
141 if (g_hdev_list ==
NULL)
154static void hid_disconnect(
USB_DEV_T *dev)
159 HID_DBGMSG(
"HID device disconnected!\n");
163 if (g_hid_dev[i].udev == dev)
165 hid_dev = &g_hid_dev[i];
181 if (hid_dev == g_hdev_list)
182 g_hdev_list = g_hdev_list->
next;
185 for (p = g_hdev_list; p !=
NULL; p = p->
next)
187 if (p->
next == hid_dev)
194 free_hid_device(hid_dev);
200#define USB_INTERFACE_CLASS_HID 3
202static USB_DEV_ID_T hid_id_table[] =
204 USB_DEVICE_ID_MATCH_INT_CLASS,
206 USB_INTERFACE_CLASS_HID,
211static USB_DRIVER_T hid_driver =
223EP_INFO_T *hid_get_ep_info(
USB_DEV_T *dev,
int ifnum, uint16_t dir)
227 for (i = 0; i < dev->ep_list_cnt; i++)
229 if ((dev->ep_list[i].ifnum == ifnum) &&
230 ((dev->ep_list[i].bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT))
232 if ((dev->ep_list[i].bEndpointAddress & USB_ENDPOINT_DIR_MASK) == dir)
235 return &dev->ep_list[i];
251 memset((
char *)&g_hid_dev[0], 0,
sizeof(g_hid_dev));
int32_t USBH_RegisterDriver(USB_DRIVER_T *new_driver)
Register a device driver to USB Host Core driver.
int32_t USBH_UnlinkUrb(URB_T *urb)
Cancel an URB which has been submit to USB core.
void USBH_FreeUrb(URB_T *)
Free the URB allocated from USBH_AllocUrb()
#define CONFIG_HID_MAX_DEV
void USBH_HidInit(void)
Init USB Host HID driver.
HID_DEV_T * USBH_HidGetDeviceList(void)
Get a list of currently connected USB Hid devices.
USB Host core driver header file.
HIDDEN_SYMBOLS struct usb_device USB_DEV_T