#include "usb_device.h"
#include "usbd_core.h"
#include "usbd_desc.h"
#include "usbd_vendor.h"
#include "usbd_usbtmc.h"


/* USB Device Core handle declaration. */
static USBD_HandleTypeDef hUsbDeviceFS;

/**
  * Init USB device Library, add supported class and start the library
  * @retval None
  */
void USB_Device_Init( eUSBDeviceInterface_t ifaceId )
{
  // Init Device Library, add supported class and start the library
  // Only one interface can be registered at the same time!
  switch( ifaceId )
  {
      default:
      case eUSBIfaceVendor:
        USBD_Init(&hUsbDeviceFS, &USBD_COMMON_Desc, DEVICE_FS);
        USBD_RegisterClass(&hUsbDeviceFS, &USBD_VENDOR);
        USBD_COMMON_RegisterInterface(&hUsbDeviceFS, &USBD_Interface_Vendor_UsbInterface);
        USBD_Start(&hUsbDeviceFS);
      break;

      #if CONFIG_USB_USBTMC_ENABLE
      case eUSBIfaceTMC:
        USBD_Init(&hUsbDeviceFS, &USBD_COMMON_Desc, DEVICE_FS);
        USBD_RegisterClass(&hUsbDeviceFS, &USBD_USBTMC);
        USBD_COMMON_RegisterInterface(&hUsbDeviceFS, &USBD_Interface_Usbtmc_UsbInterface);
        USBD_Start(&hUsbDeviceFS);
      break;
      #endif
  }
}

void USB_Device_DeInit()
{
   USBD_Stop( &hUsbDeviceFS );

   USBD_DeInit( &hUsbDeviceFS );
}