/******************** (C) COPYRIGHT 2009 STMicroelectronics ******************** * File Name : usb_bot.h * Author : MCD Application Team * Version : V3.0.1 * Date : 04/27/2009 * Description : BOT State Machine management ******************************************************************************** * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE * CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. *******************************************************************************/ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef __USB_BOT_H #define __USB_BOT_H /* Includes ------------------------------------------------------------------*/ /* Exported types ------------------------------------------------------------*/ /* Bulk-only Command Block Wrapper */ typedef struct _Bulk_Only_CBW { uint32_t dSignature; uint32_t dTag; uint32_t dDataLength; uint8_t bmFlags; uint8_t bLUN; uint8_t bCBLength; uint8_t CB[16]; } Bulk_Only_CBW; /* Bulk-only Command Status Wrapper */ typedef struct _Bulk_Only_CSW { uint32_t dSignature; uint32_t dTag; uint32_t dDataResidue; uint8_t bStatus; } Bulk_Only_CSW; /* Exported constants --------------------------------------------------------*/ /*****************************************************************************/ /*********************** Bulk-Only Transfer State machine ********************/ /*****************************************************************************/ #define BOT_IDLE 0 /* Idle state */ #define BOT_DATA_OUT 1 /* Data Out state */ #define BOT_DATA_IN 2 /* Data In state */ #define BOT_DATA_IN_LAST 3 /* Last Data In Last */ #define BOT_CSW_Send 4 /* Command Status Wrapper */ #define BOT_ERROR 5 /* error state */ #define BOT_CBW_SIGNATURE 0x43425355 #define BOT_CSW_SIGNATURE 0x53425355 #define BOT_CBW_PACKET_LENGTH 31 #define CSW_DATA_LENGTH 0x000D /* CSW Status Definitions */ #define CSW_CMD_PASSED 0x00 #define CSW_CMD_FAILED 0x01 #define CSW_PHASE_ERROR 0x02 #define SEND_CSW_DISABLE 0 #define SEND_CSW_ENABLE 1 #define DIR_IN 0 #define DIR_OUT 1 #define BOTH_DIR 2 /* Exported macro ------------------------------------------------------------*/ /* Exported functions ------------------------------------------------------- */ extern void MSD_Mass_Storage_In (void); extern void MSD_Mass_Storage_Out (void); extern void MSD_CBW_Decode(void); extern void MSD_Transfer_Data_Request(uint8_t* Data_Pointer, uint16_t Data_Len); extern void MSD_Set_CSW (uint8_t CSW_Status, uint8_t Send_Permission); extern void MSD_Bot_Abort(uint8_t Direction); /* Exported variables ------------------------------------------------------- */ extern uint8_t MSD_Bot_State; extern uint8_t MSD_Bulk_Data_Buff[MSD_BULK_MAX_PACKET_SIZE]; /* data buffer*/ extern uint16_t MSD_Data_Len; extern Bulk_Only_CBW MSD_CBW; extern Bulk_Only_CSW MSD_CSW; #endif /* __USB_BOT_H */ /******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/