void USB_Disable(uint8_t corenum, uint8_t mode)
{
	USB_IsInitialized = false;
	if (mode == USB_MODE_Device) {
		#if defined(USB_CAN_BE_DEVICE)
		HAL_USBConnect(corenum, 0);
		HAL_USBDeInit(corenum, mode);
		#endif
	}
	if (mode == USB_MODE_Host) {
		#if defined(USB_CAN_BE_HOST)

		#if defined(USB_MULTI_PORTS)
		uint8_t i;
		for (i = 0; i < MAX_USB_CORE; i++) {
			HcdDeInitDriver(i);
			HAL_USBDeInit(i, mode);
		}
		#else
		HcdDeInitDriver(corenum);
		HAL_USBDeInit(corenum, mode);
		#endif

		#endif
	}
}
static void USB_Init_Host(uint8_t corenum)
{
	// uint8_t i;

	// for(i=0;i<PIPE_TOTAL_PIPES;i++) PipeInfo[i].PipeHandle=0;

	pipeselected[corenum] = PIPE_CONTROLPIPE;

	USB_HostState[corenum]   = HOST_STATE_Unattached;
	USB_Host_ControlPipeSize[corenum] = PIPE_CONTROLPIPE_DEFAULT_SIZE;

	if (HcdInitDriver(corenum) == HCD_STATUS_OK) {
		USB_IsInitialized = true;
		HAL_EnableUSBInterrupt(corenum);
	}
	else {
		USB_IsInitialized = false;
		HcdDeInitDriver(corenum);
	}

}
static void USB_Init_Host(void)
{
	//uint8_t i;

	//for(i=0;i<PIPE_TOTAL_PIPES;i++) PipeInfo[i].PipeHandle=0;

	pipeselected = PIPE_CONTROLPIPE;

	USB_Memory_Init(USBRAM_BUFFER_SIZE); /* TODO currently Memory Management for Host only */

	if(HcdInitDriver(USBPortNum)==HCD_STATUS_OK)
	{
		USB_IsInitialized = true;
		HAL_EnableUSBInterrupt();
	}
	else
	{
		USB_IsInitialized = false;
		HcdDeInitDriver(USBPortNum);
	}

	USB_HostState       = HOST_STATE_Unattached;
	USB_Host_ControlPipeSize = PIPE_CONTROLPIPE_DEFAULT_SIZE;
}