| /* USER CODE BEGIN Header */ | |
| /** | |
| ****************************************************************************** | |
| * @file : usb_device.c | |
| * @version : v1.0_Cube | |
| * @brief : This file implements the USB Device | |
| ****************************************************************************** | |
| * @attention | |
| * | |
| * <h2><center>© Copyright (c) 2020 STMicroelectronics. | |
| * All rights reserved.</center></h2> | |
| * | |
| * This software component is licensed by ST under Ultimate Liberty license | |
| * SLA0044, the "License"; You may not use this file except in compliance with | |
| * the License. You may obtain a copy of the License at: | |
| * www.st.com/SLA0044 | |
| * | |
| ****************************************************************************** | |
| */ | |
| /* USER CODE END Header */ | |
| /* Includes ------------------------------------------------------------------*/ | |
| #include "usb_device.h" | |
| #include "usbd_core.h" | |
| #include "usbd_desc.h" | |
| #include "usbd_cdc.h" | |
| #include "usbd_cdc_if.h" | |
| #include "usbd_msc.h" | |
| #include "usbd_storage_if.h" | |
| #include "USBManager.h" | |
| /* USER CODE BEGIN Includes */ | |
| /* USER CODE END Includes */ | |
| /* USER CODE BEGIN PV */ | |
| /* Private variables ---------------------------------------------------------*/ | |
| USBManager g_usbManager; | |
| /* USER CODE END PV */ | |
| /* USER CODE BEGIN PFP */ | |
| /* Private function prototypes -----------------------------------------------*/ | |
| /* USER CODE END PFP */ | |
| /* USB Device Core handle declaration. */ | |
| USBD_HandleTypeDef hUsbDeviceHS; | |
| /* | |
| * -- Insert your variables declaration here -- | |
| */ | |
| /* USER CODE BEGIN 0 */ | |
| /* USER CODE END 0 */ | |
| /* | |
| * -- Insert your external function declaration here -- | |
| */ | |
| /* USER CODE BEGIN 1 */ | |
| /* USER CODE END 1 */ | |
| /** | |
| * Init USB device Library, add supported class and start the library | |
| * @retval None | |
| */ | |
| void MX_USB_DEVICE_Init(void) | |
| { | |
| /* USER CODE BEGIN USB_DEVICE_Init_PreTreatment */ | |
| /* USER CODE END USB_DEVICE_Init_PreTreatment */ | |
| /* Init Device Library, add supported class and start the library. */ | |
| if (USBD_Init(&hUsbDeviceHS, &HS_Desc, DEVICE_HS) != USBD_OK) | |
| { | |
| Error_Handler(); | |
| } | |
| USB_SetCurrentMode(USB_OTG_HS, USB_DRD_MODE); // switch to dual role | |
| if(g_usbManager.GetType() == USBManager::usbtMSC) | |
| { | |
| if (USBD_RegisterClass(&hUsbDeviceHS, &USBD_MSC) != USBD_OK) | |
| { | |
| Error_Handler(); | |
| } | |
| if (USBD_MSC_RegisterStorage(&hUsbDeviceHS, &USBD_Storage_Interface_fops_HS) != USBD_OK) | |
| { | |
| Error_Handler(); | |
| } | |
| } | |
| else | |
| { | |
| if (USBD_RegisterClass(&hUsbDeviceHS, &USBD_CDC) != USBD_OK) | |
| { | |
| Error_Handler(); | |
| } | |
| if (USBD_CDC_RegisterInterface(&hUsbDeviceHS, &USBD_Interface_fops_HS) != USBD_OK) | |
| { | |
| Error_Handler(); | |
| } | |
| } | |
| if (USBD_Start(&hUsbDeviceHS) != USBD_OK) | |
| { | |
| Error_Handler(); | |
| } | |
| /* USER CODE BEGIN USB_DEVICE_Init_PostTreatment */ | |
| HAL_PWREx_EnableUSBVoltageDetector(); | |
| /* USER CODE END USB_DEVICE_Init_PostTreatment */ | |
| } | |
| void MX_USB_DEVICE_Deinit(void) | |
| { | |
| /* USER CODE BEGIN USB_DEVICE_Init_PreTreatment */ | |
| /* USER CODE END USB_DEVICE_Init_PreTreatment */ | |
| if (USBD_Stop(&hUsbDeviceHS) != USBD_OK) | |
| { | |
| Error_Handler(); | |
| } | |
| /* Init Device Library, add supported class and start the library. */ | |
| if (USBD_DeInit(&hUsbDeviceHS) != USBD_OK) | |
| { | |
| Error_Handler(); | |
| } | |
| /* USER CODE BEGIN USB_DEVICE_Init_PostTreatment */ | |
| // HAL_PWREx_EnableUSBVoltageDetector(); | |
| /* USER CODE END USB_DEVICE_Init_PostTreatment */ | |
| } | |
| /** | |
| * @} | |
| */ | |
| /** | |
| * @} | |
| */ | |
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ |