int32_t PIOS_USB_HID_Init(uint32_t * usbhid_id, const struct pios_usb_hid_cfg * cfg, uint32_t lower_id) { PIOS_Assert(usbhid_id); PIOS_Assert(cfg); struct pios_usb_hid_dev * usb_hid_dev; usb_hid_dev = (struct pios_usb_hid_dev *) PIOS_USB_HID_alloc(); if (!usb_hid_dev) goto out_fail; /* Bind the configuration to the device instance */ usb_hid_dev->cfg = cfg; usb_hid_dev->lower_id = lower_id; pios_usb_hid_id = (uint32_t) usb_hid_dev; /* Bind lower level callbacks into the USB infrastructure */ pEpInt_IN[cfg->data_tx_ep - 1] = PIOS_USB_HID_EP_IN_Callback; pEpInt_OUT[cfg->data_rx_ep - 1] = PIOS_USB_HID_EP_OUT_Callback; *usbhid_id = (uint32_t) usb_hid_dev; return 0; out_fail: return -1; }
int32_t PIOS_USB_HID_Init(uint32_t * usbhid_id, const struct pios_usb_hid_cfg * cfg, uint32_t lower_id) { PIOS_Assert(usbhid_id); PIOS_Assert(cfg); struct pios_usb_hid_dev * usb_hid_dev; usb_hid_dev = (struct pios_usb_hid_dev *) PIOS_USB_HID_alloc(); if (!usb_hid_dev) goto out_fail; /* Bind the configuration to the device instance */ usb_hid_dev->cfg = cfg; usb_hid_dev->lower_id = lower_id; /* Rx and Tx are not active yet */ usb_hid_dev->rx_active = false; usb_hid_dev->tx_active = false; /* Register class specific interface callbacks with the USBHOOK layer */ usb_hid_dev->usb_if_enabled = false; PIOS_USBHOOK_RegisterIfOps(cfg->data_if, &usb_hid_ifops, (uint32_t) usb_hid_dev); *usbhid_id = (uint32_t) usb_hid_dev; return 0; out_fail: return -1; }