ref: a10d303e7c2d5f961c6b7ad5421cef5daf307fea
dir: /demos/stm32f429_disco/stm/usb_user/usbh_usr.c/
/** ****************************************************************************** * @file usbh_usr.c * @author MCD Application Team * @version V1.0.1 * @date 11-November-2013 * @brief USB Host User Functions ****************************************************************************** * @attention * * <h2><center>© COPYRIGHT 2013 STMicroelectronics</center></h2> * * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License"); * You may not use this file except in compliance with the License. * You may obtain a copy of the License at: * * http://www.st.com/software_license_agreement_liberty_v2 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * ****************************************************************************** */ /* Includes ------------------------------------------------------------------*/ #include "usbh_usr.h" #include "usbh_msc_core.h" #include "usbh_msc_scsi.h" #include "usbh_msc_bot.h" /* Private typedef -----------------------------------------------------------*/ /* Private define ------------------------------------------------------------*/ /* Private macro -------------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ extern USB_OTG_CORE_HANDLE USB_OTG_Core; extern USBH_HOST USB_Host; /* Points to the DEVICE_PROP structure of current device */ /* The purpose of this register is to speed up the execution */ USBH_Usr_cb_TypeDef USBH_USR_cb = { USBH_USR_Init, USBH_USR_DeInit, USBH_USR_DeviceAttached, USBH_USR_ResetDevice, USBH_USR_DeviceDisconnected, USBH_USR_OverCurrentDetected, USBH_USR_DeviceSpeedDetected, USBH_USR_Device_DescAvailable, USBH_USR_DeviceAddressAssigned, USBH_USR_Configuration_DescAvailable, USBH_USR_Manufacturer_String, USBH_USR_Product_String, USBH_USR_SerialNum_String, USBH_USR_EnumerationDone, USBH_USR_UserInput, USBH_USR_MSC_Application, USBH_USR_DeviceNotSupported, USBH_USR_UnrecoveredError }; uint32_t __IO USB_Host_Application_Ready; /*--------------- LCD Messages ---------------*/ const uint8_t MSG_HOST_INIT[] = "[USB] Host Library Initialized"; const uint8_t MSG_DEV_ATTACHED[] = "[USB] Device Attached "; const uint8_t MSG_DEV_DISCONNECTED[] = "[USB] Device Disconnected"; const uint8_t MSG_DEV_ENUMERATED[] = "[USB] Enumeration completed "; const uint8_t MSG_DEV_HIGHSPEED[] = "[USB] High speed device detected"; const uint8_t MSG_DEV_FULLSPEED[] = "[USB] Full speed device detected"; const uint8_t MSG_DEV_LOWSPEED[] = "[USB] Low speed device detected"; const uint8_t MSG_DEV_ERROR[] = "[USB] Device fault "; const uint8_t MSG_MSC_CLASS[] = "[USB] Mass storage device connected"; const uint8_t MSG_HID_CLASS[] = "[USB] HID device connected"; const uint8_t MSG_DISK_SIZE[] = "[USB] Size of the disk in MBytes: "; const uint8_t MSG_LUN[] = "[USB] LUN Available in the device:"; const uint8_t MSG_ROOT_CONT[] = "[USB] Exploring disk flash ..."; const uint8_t MSG_WR_PROTECT[] = "[USB] The disk is write protected"; const uint8_t MSG_UNREC_ERROR[] = "[USB] UNRECOVERED ERROR STATE"; /* Private function prototypes -----------------------------------------------*/ /* Private functions ---------------------------------------------------------*/ /** * @brief Add the host lib initialization message to the console * @param None * @retval None */ void USBH_USR_Init(void) { USB_Host_Application_Ready = 0; } /** * @brief Add the device attachement message to the console * @param None * @retval None */ void USBH_USR_DeviceAttached(void) { } /** * @brief Add the unrecovered error message to the console * @param None * @retval None */ void USBH_USR_UnrecoveredError (void) { } /** * @brief Add the device disconnection message to the console and free * USB associated resources * @param None * @retval None */ void USBH_USR_DeviceDisconnected (void) { USB_Host_Application_Ready = 0; // f_mount(0, NULL); } /** * @brief callback of the device reset event * @param None * @retval None */ void USBH_USR_ResetDevice(void) { } /** * @brief Add the device speed message to the console * @param Device speed * @retval None */ void USBH_USR_DeviceSpeedDetected(uint8_t DeviceSpeed) { } /** * @brief Add the USB device vendor and MFC Ids to the console * @param device descriptor * @retval None */ void USBH_USR_Device_DescAvailable(void *DeviceDesc) { } /** * @brief Device addressed event callbacak * @param None * @retval None */ void USBH_USR_DeviceAddressAssigned(void) { } /** * @brief Add the device class description to the console * @param Configuration descriptor * @retval None */ void USBH_USR_Configuration_DescAvailable(USBH_CfgDesc_TypeDef * cfgDesc, USBH_InterfaceDesc_TypeDef *itfDesc, USBH_EpDesc_TypeDef *epDesc) { } /** * @brief Add the MFC String to the console * @param Manufacturer String * @retval None */ void USBH_USR_Manufacturer_String(void *ManufacturerString) { } /** * @brief Add the Product String to the console * @param Product String * @retval None */ void USBH_USR_Product_String(void *ProductString) { } /** * @brief Add the Srial Number String to the console * @param SerialNum_String * @retval None */ void USBH_USR_SerialNum_String(void *SerialNumString) { } /** * @brief Enumeration complete event callback * @param None * @retval None */ void USBH_USR_EnumerationDone(void) { } /** * @brief Device is not supported callback * @param None * @retval None */ void USBH_USR_DeviceNotSupported(void) { } /** * @brief User Action for application state entry callback * @param None * @retval USBH_USR_Status : User response for key button */ USBH_USR_Status USBH_USR_UserInput(void) { return USBH_USR_RESP_OK; } /** * @brief Over Current Detected on VBUS * @param None * @retval Staus */ void USBH_USR_OverCurrentDetected (void) { } /** * @brief Mass storage application main handler * @param None * @retval Staus */ int USBH_USR_MSC_Application(void) { if(USB_Host_Application_Ready == 0) { uint64_t cap = (uint64_t)USBH_MSC_Param.MSCapacity * USBH_MSC_Param.MSPageLength; printf ("USR_MSC size: %d MB\n", (int)(cap / (1024 * 1024))); USB_Host_Application_Ready = 1; } return(0); } /** * @brief De-init User state and associated variables * @param None * @retval None */ void USBH_USR_DeInit(void) { USB_Host_Application_Ready = 0; } /** * @brief Handle Modules Background processes in the main task * @param None * @retval None */ void USBH_USR_BackgroundProcess (void) { if((USB_Host_Application_Ready == 0) || (HCD_IsDeviceConnected(&USB_OTG_Core) == 0)) { USBH_Process(&USB_OTG_Core, &USB_Host); } } /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/