Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
}