46 if (g_hid_dev[i].udev ==
NULL)
48 memset((
char *)&g_hid_dev[i], 0,
sizeof(
HID_DEV_T));
58 memset((
char *)hid_dev, 0,
sizeof(
HID_DEV_T));
70 if (g_hid_dev[i].udev == urb->
dev)
72 if ((g_hid_dev[i].urbin == urb) || (g_hid_dev[i].urbout == urb))
85 if (&g_hid_dev[i] == hdev)
101 HID_DBGMSG(
"usbhid_probe - dev=0x%x\n", (
int)dev);
103 ifnum = ifd->bInterfaceNumber;
105 HID_DBGMSG(
"HID probe called for ifnum %d\n", ifnum);
108 for (i = 0; i < dev->ep_list_cnt; i++)
110 if ((dev->ep_list[i].ifnum == ifnum) &&
111 ((dev->ep_list[i].bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT))
113 ep_info = &dev->ep_list[i];
114 HID_DBGMSG(
"Interrupt Endpoint 0x%x found.\n", ep_info->bEndpointAddress);
119 HID_DBGMSG(
"couldn't find an input interrupt endpoint\n");
123 hid = alloc_hid_device();
127 HID_DBGMSG(
"New HID device 0x%x.\n", (
int)hid);
138 if (g_hdev_list ==
NULL)
151static void hid_disconnect(
USB_DEV_T *dev)
156 HID_DBGMSG(
"HID device disconnected!\n");
160 if (g_hid_dev[i].udev == dev)
162 hid_dev = &g_hid_dev[i];
178 if (hid_dev == g_hdev_list)
179 g_hdev_list = g_hdev_list->
next;
182 for (p = g_hdev_list; p !=
NULL; p = p->
next)
184 if (p->
next == hid_dev)
191 free_hid_device(hid_dev);
197#define USB_INTERFACE_CLASS_HID 3
199static USB_DEV_ID_T hid_id_table[] =
201 USB_DEVICE_ID_MATCH_INT_CLASS,
203 USB_INTERFACE_CLASS_HID,
208static USB_DRIVER_T hid_driver =
220EP_INFO_T *hid_get_ep_info(
USB_DEV_T *dev,
int ifnum, uint16_t dir)
224 for (i = 0; i < dev->ep_list_cnt; i++)
226 if ((dev->ep_list[i].ifnum == ifnum) &&
227 ((dev->ep_list[i].bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) == USB_ENDPOINT_XFER_INT))
229 if ((dev->ep_list[i].bEndpointAddress & USB_ENDPOINT_DIR_MASK) == dir)
232 return &dev->ep_list[i];
248 memset((
char *)&g_hid_dev[0], 0,
sizeof(g_hid_dev));
NUC472/NUC442 peripheral access layer header file. This file contains all the peripheral register's d...
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()
HIDDEN_SYMBOLS struct usb_device USB_DEV_T
#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.
#define NULL
NULL pointer.
#define TRUE
Boolean true, define to use in API parameters or return value.
#define FALSE
Boolean false, define to use in API parameters or return value.
USB Host core driver header file.