/* USBD_Init Initailizes the device stack and load the class driver.  */
void USBD_Init(USB_OTG_CORE_HANDLE *pdev, USB_OTG_CORE_ID_TypeDef coreID, USBD_DEVICE *pDevice, USBD_Class_cb_TypeDef *class_cb, USBD_Usr_cb_TypeDef *usr_cb)
/* USBD_Init Initailizes the device stack and load the class driver.  */
void USBD_Init(USB_OTG_CORE_HANDLE *pdev, USB_OTG_CORE_ID_TypeDef coreID, USBD_DEVICE *pDevice, USBD_Class_cb_TypeDef *class_cb, USBD_Usr_cb_TypeDef *usr_cb)
{
  USB_OTG_BSP_Init(pdev);  
  USBD_DeInit(pdev);
  pdev->dev.class_cb = class_cb;
  pdev->dev.usr_cb = usr_cb;  
  pdev->dev.usr_device = pDevice;
  DCD_Init(pdev , coreID);
  pdev->dev.usr_cb->Init();
  USB_OTG_BSP_EnableInterrupt(pdev);
}