/** ****************************************************************************** * @file usbd_msc.h * @author MCD Application Team * @brief Header for the usbd_msc.c file ****************************************************************************** * @attention * *

© Copyright (c) 2015 STMicroelectronics. * All rights reserved.

* * 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 * ****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __USBD_MSC_H #define __USBD_MSC_H #ifdef __cplusplus extern "C" { #endif /* Includes ------------------------------------------------------------------*/ #include "usbd_msc_bot.h" #include "usbd_msc_scsi.h" #include "usbd_ioreq.h" /** @addtogroup USBD_MSC_BOT * @{ */ /** @defgroup USBD_MSC * @brief This file is the Header file for usbd_msc.c * @{ */ /** @defgroup USBD_BOT_Exported_Defines * @{ */ #define MSC_BOT_STR_DESC "STM32 MSC DEVICE" /* MSC Class Config */ #ifndef MSC_MEDIA_PACKET #define MSC_MEDIA_PACKET 512U #endif /* MSC_MEDIA_PACKET */ #define MSC_MAX_FS_PACKET 0x40U #define MSC_MAX_HS_PACKET 0x200U #define BOT_GET_MAX_LUN 0xFE #define BOT_RESET 0xFF #define USB_MSC_CONFIG_DESC_SIZ 32 /** * @} */ /** @defgroup USB_CORE_Exported_Types * @{ */ typedef struct _USBD_STORAGE { int8_t (*Init)(uint8_t lun); int8_t (*GetCapacity)(uint8_t lun, uint32_t *block_num, uint16_t *block_size); int8_t (*IsReady)(uint8_t lun); int8_t (*IsWriteProtected)(uint8_t lun); int8_t (*Read)(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len); int8_t (*Write)(uint8_t lun, uint8_t *buf, uint32_t blk_addr, uint16_t blk_len); int8_t (*GetMaxLun)(void); int8_t *pInquiry; } USBD_StorageTypeDef; typedef struct { uint32_t max_lun; uint32_t interface; uint8_t bot_state; uint8_t bot_status; uint32_t bot_data_length; uint8_t bot_data[MSC_MEDIA_PACKET]; USBD_MSC_BOT_CBWTypeDef cbw; USBD_MSC_BOT_CSWTypeDef csw; USBD_SCSI_SenseTypeDef scsi_sense[SENSE_LIST_DEEPTH]; uint8_t scsi_sense_head; uint8_t scsi_sense_tail; uint8_t scsi_medium_state; uint16_t scsi_blk_size; uint32_t scsi_blk_nbr; uint32_t scsi_blk_addr; uint32_t scsi_blk_len; } USBD_MSC_BOT_HandleTypeDef; /* Structure for MSC process */ extern USBD_ClassTypeDef USBD_MSC; extern uint8_t MSC_IN_EP; extern uint8_t MSC_OUT_EP; extern uint8_t MSC_ITF_NBR; extern uint8_t MSC_BOT_STR_DESC_IDX; uint8_t USBD_MSC_RegisterStorage(USBD_HandleTypeDef *pdev, USBD_StorageTypeDef *fops); void USBD_Update_MSC_DESC(uint8_t *desc, uint8_t itf_no, uint8_t in_ep, uint8_t out_ep, uint8_t str_idx); /** * @} */ /** * @} */ #ifdef __cplusplus } #endif #endif /* __USBD_MSC_H */ /** * @} */ /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/